From 5424b7e330ca8f7b85e682b6c723aa4823c91a10 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 6 Nov 2023 14:40:41 +0100 Subject: [PATCH 001/187] Initial commit --- .../lib/src/build_runner/link_runner.dart | 421 ++++++++++++++++++ .../pubspec_overrides.yaml | 3 + .../data/native_add_link_trivial/build.dart | 31 ++ .../data/native_add_link_trivial/ffigen.yaml | 20 + .../lib/native_add.dart | 5 + .../lib/src/native_add.dart | 7 + .../src/native_add_bindings_generated.dart | 15 + .../data/native_add_link_trivial/link.dart | 25 ++ .../data/native_add_link_trivial/pubspec.yaml | 19 + .../native_add_link_trivial/src/native_add.c | 9 + .../native_add_link_trivial/src/native_add.h | 13 + .../test/native_add_test.dart | 13 + .../lib/native_assets_cli.dart | 2 + .../lib/src/model/link_input.dart | 32 ++ .../lib/src/model/resources.dart | 78 ++++ 15 files changed, 693 insertions(+) create mode 100644 pkgs/native_assets_builder/lib/src/build_runner/link_runner.dart create mode 100644 pkgs/native_assets_builder/pubspec_overrides.yaml create mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/build.dart create mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/ffigen.yaml create mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/native_add.dart create mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add.dart create mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add_bindings_generated.dart create mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/link.dart create mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/pubspec.yaml create mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.c create mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.h create mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/test/native_add_test.dart create mode 100644 pkgs/native_assets_cli/lib/src/model/link_input.dart create mode 100644 pkgs/native_assets_cli/lib/src/model/resources.dart diff --git a/pkgs/native_assets_builder/lib/src/build_runner/link_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/link_runner.dart new file mode 100644 index 000000000..affda3520 --- /dev/null +++ b/pkgs/native_assets_builder/lib/src/build_runner/link_runner.dart @@ -0,0 +1,421 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:async'; +import 'dart:io'; + +import 'package:logging/logging.dart'; +import 'package:native_assets_cli/native_assets_cli.dart'; + +import '../package_layout/package_layout.dart'; +import '../utils/run_process.dart'; +import 'build_planner.dart'; + +typedef DependencyMetadata = Map; + +/// The programmatic API to be used by Dart launchers to invoke native linking. +/// +/// These methods are invoked by launchers such as dartdev (for `dart run`) +/// and flutter_tools (for `flutter run` and `flutter build`). +class NativeAssetsLinkRunner { + final Logger logger; + final Uri dartExecutable; + + NativeAssetsLinkRunner({ + required this.logger, + required this.dartExecutable, + }); + + /// [workingDirectory] is expected to contain `.dart_tool`. + /// + /// This method is invoked by launchers such as dartdev (for `dart run`) and + /// flutter_tools (for `flutter run` and `flutter build`). + /// + /// Completes the future with an error if the linking fails. + Future link({ + required Target target, + required Uri workingDirectory, + required BuildMode buildMode, + required Uri? resourceIdentifiers, + required bool includeParentEnvironment, + }) async { + final packageLayout = + await PackageLayout.fromRootPackageRoot(workingDirectory); + final packagesWithNativeAssets = + await packageLayout.packagesWithNativeAssets; + final planner = await NativeAssetsBuildPlanner.fromRootPackageRoot( + rootPackageRoot: packageLayout.rootPackageRoot, + packagesWithNativeAssets: packagesWithNativeAssets, + dartExecutable: Uri.file(Platform.resolvedExecutable), + logger: logger, + ); + final (plan, planSuccess) = planner.plan(); + if (!planSuccess) { + return _LinkResultImpl( + assets: [], + dependencies: [], + success: false, + ); + } + final assets = []; + final dependencies = []; + final metadata = {}; + var success = true; + for (final package in plan) { + final dependencyMetadata = _metadataForPackage( + packageGraph: planner.packageGraph, + packageName: package.name, + targetMetadata: metadata, + ); + final config = await _cliConfig( + packageRoot: packageLayout.packageRoot(package.name), + target: target, + buildMode: buildMode, + buildParentDir: packageLayout.dartToolNativeAssetsBuilder, + dependencyMetadata: dependencyMetadata, + ); + final ( + packageAssets, + packageDependencies, + packageMetadata, + packageSuccess, + ) = await _linkPackageCached( + config, + packageLayout.packageConfigUri, + workingDirectory, + resourceIdentifiers, + includeParentEnvironment, + ); + assets.addAll(packageAssets); + dependencies.addAll(packageDependencies); + success &= packageSuccess; + if (packageMetadata != null) { + metadata[config.packageName] = packageMetadata; + } + } + return _LinkResultImpl( + assets: assets, + dependencies: dependencies..sort(_uriCompare), + success: success, + ); + } + + /// [workingDirectory] is expected to contain `.dart_tool`. + /// + /// This method is invoked by launchers such as dartdev (for `dart run`) and + /// flutter_tools (for `flutter run` and `flutter build`). + /// + /// Completes the future with an error if the build fails. + Future dryRun({ + required LinkModePreference linkModePreference, + required OS targetOs, + required Uri workingDirectory, + required bool includeParentEnvironment, + }) async { + final packageLayout = + await PackageLayout.fromRootPackageRoot(workingDirectory); + final packagesWithNativeAssets = + await packageLayout.packagesWithNativeAssets; + final planner = await NativeAssetsBuildPlanner.fromRootPackageRoot( + rootPackageRoot: packageLayout.rootPackageRoot, + packagesWithNativeAssets: packagesWithNativeAssets, + dartExecutable: Uri.file(Platform.resolvedExecutable), + logger: logger, + ); + final (plan, planSuccess) = planner.plan(); + if (!planSuccess) { + return _DryRunResultImpl( + assets: [], + success: false, + ); + } + final assets = []; + var success = true; + for (final package in plan) { + final config = await _cliConfigDryRun( + packageName: package.name, + packageRoot: packageLayout.packageRoot(package.name), + targetOs: targetOs, + linkMode: linkModePreference, + buildParentDir: packageLayout.dartToolNativeAssetsBuilder, + ); + final (packageAssets, _, _, packageSuccess) = await _linkPackage( + config, + packageLayout.packageConfigUri, + workingDirectory, + null, + includeParentEnvironment, + dryRun: true, + ); + assets.addAll(packageAssets); + success &= packageSuccess; + } + return _DryRunResultImpl( + assets: assets, + success: success, + ); + } + + Future<_PackageBuildRecord> _linkPackageCached( + BuildConfig config, + Uri packageConfigUri, + Uri workingDirectory, + Uri? resourceIdentifiers, + bool includeParentEnvironment, + ) async { + final outDir = config.outDir; + if (!await Directory.fromUri(outDir).exists()) { + await Directory.fromUri(outDir).create(recursive: true); + } + + return await _linkPackage( + config, + packageConfigUri, + workingDirectory, + resourceIdentifiers, + includeParentEnvironment, + dryRun: false, + ); + } + + Future<_PackageBuildRecord> _linkPackage( + BuildConfig config, + Uri packageConfigUri, + Uri workingDirectory, + Uri? resourceIdentifiers, + bool includeParentEnvironment, { + required bool dryRun, + }) async { + final outDir = config.outDir; + final configFile = outDir.resolve('../config.yaml'); + final linkDotDart = config.packageRoot.resolve('link.dart'); + final configFileContents = config.toYamlString(); + logger.info('config.yaml contents: $configFileContents'); + await File.fromUri(configFile).writeAsString(configFileContents); + final arguments = [ + '--packages=${packageConfigUri.toFilePath()}', + '--build-output=${outDir.resolve(BuildOutput.fileName).toFilePath()}', + '--resource-identifiers=${resourceIdentifiers?.toFilePath()}', + linkDotDart.toFilePath(), + '--config=${configFile.toFilePath()}', + ]; + final result = await runProcess( + workingDirectory: workingDirectory, + executable: dartExecutable, + arguments: arguments, + logger: logger, + includeParentEnvironment: includeParentEnvironment, + ); + var success = true; + if (result.exitCode != 0) { + final printWorkingDir = workingDirectory != Directory.current.uri; + final commandString = [ + if (printWorkingDir) '(cd ${workingDirectory.toFilePath()};', + dartExecutable.toFilePath(), + ...arguments.map((a) => a.contains(' ') ? "'$a'" : a), + if (printWorkingDir) ')', + ].join(' '); + logger.severe( + ''' +Building native assets for package:${config.packageName} failed. +build.dart returned with exit code: ${result.exitCode}. +To reproduce run: +$commandString +stderr: +${result.stderr} +stdout: +${result.stdout} + ''', + ); + success = false; + } + + try { + final buildOutput = await BuildOutput.readFromFile(outDir: outDir); + final assets = buildOutput?.assets ?? []; + success &= validateAssetsPackage(assets, config.packageName); + final dependencies = buildOutput?.dependencies.dependencies ?? []; + final metadata = dryRun ? null : buildOutput?.metadata; + return (assets, dependencies, metadata, success); + } on FormatException catch (e) { + logger.severe(''' +Building native assets for package:${config.packageName} failed. +build_output.yaml contained a format error. +${e.message} + '''); + success = false; + return ([], [], Metadata({}), false); + // TODO(https://github.com/dart-lang/native/issues/109): Stop throwing + // type errors in native_assets_cli, release a new version of that package + // and then remove this. + // ignore: avoid_catching_errors + } on TypeError { + logger.severe(''' +Building native assets for package:${config.packageName} failed. +build_output.yaml contained a format error. + '''); + success = false; + return ([], [], Metadata({}), false); + } finally { + if (!success) { + final linkOutputFile = + File.fromUri(outDir.resolve(BuildOutput.fileName)); + if (await linkOutputFile.exists()) { + await linkOutputFile.delete(); + } + } + } + } + + static Future _cliConfig({ + required Uri packageRoot, + required Target target, + required BuildMode buildMode, + required Uri buildParentDir, + DependencyMetadata? dependencyMetadata, + }) async { + final buildDirName = BuildConfig.checksum( + packageRoot: packageRoot, + targetOs: target.os, + targetArchitecture: target.architecture, + buildMode: buildMode, + linkModePreference: LinkModePreference.static, + dependencyMetadata: dependencyMetadata, + ); + final outDirUri = buildParentDir.resolve('$buildDirName/out/'); + final outDir = Directory.fromUri(outDirUri); + if (!await outDir.exists()) { + // TODO(https://dartbug.com/50565): Purge old or unused folders. + await outDir.create(recursive: true); + } + return BuildConfig( + outDir: outDirUri, + packageRoot: packageRoot, + targetOs: target.os, + targetArchitecture: target.architecture, + buildMode: buildMode, + linkModePreference: LinkModePreference.static, + dependencyMetadata: dependencyMetadata, + ); + } + + static Future _cliConfigDryRun({ + required String packageName, + required Uri packageRoot, + required OS targetOs, + required LinkModePreference linkMode, + required Uri buildParentDir, + }) async { + final buildDirName = 'dry_run_${targetOs}_$linkMode'; + final outDirUri = buildParentDir.resolve('$buildDirName/out/'); + final outDir = Directory.fromUri(outDirUri); + if (!await outDir.exists()) { + await outDir.create(recursive: true); + } + return BuildConfig.dryRun( + outDir: outDirUri, + packageRoot: packageRoot, + targetOs: targetOs, + linkModePreference: linkMode, + ); + } + + DependencyMetadata? _metadataForPackage({ + required PackageGraph packageGraph, + required String packageName, + DependencyMetadata? targetMetadata, + }) { + if (targetMetadata == null) { + return null; + } + final dependencies = packageGraph.neighborsOf(packageName).toSet(); + return { + for (final entry in targetMetadata.entries) + if (dependencies.contains(entry.key)) entry.key: entry.value, + }; + } + + bool validateAssetsPackage(List assets, String packageName) { + final invalidAssetIds = assets + .map((a) => a.id) + .where((n) => !n.startsWith('package:$packageName/')) + .toSet() + .toList() + ..sort(); + final success = invalidAssetIds.isEmpty; + if (!success) { + logger.severe( + '`package:$packageName` declares the following assets which do not ' + 'start with `package:$packageName/`: ${invalidAssetIds.join(', ')}.', + ); + } + return success; + } +} + +typedef _PackageBuildRecord = ( + List, + List dependencies, + Metadata?, + bool success, +); + +/// The result from a [NativeAssetsLinkRunner.dryRun]. +abstract interface class DryRunResult { + /// The native assets for all [Target]s for the build or dry run. + List get assets; + + /// Whether all builds completed without errors. + /// + /// All error messages are streamed to [NativeAssetsLinkRunner.logger]. + bool get success; +} + +final class _DryRunResultImpl implements DryRunResult { + @override + final List assets; + + @override + final bool success; + + _DryRunResultImpl({ + required this.assets, + required this.success, + }); +} + +/// The result from a [NativeAssetsLinkRunner.link]. +abstract class LinkResult implements DryRunResult { + /// All the files used for building the native assets of all packages. + /// + /// This aggregated list can be used to determine whether the + /// [NativeAssetsLinkRunner] needs to be invoked again. The + /// [NativeAssetsLinkRunner] determines per package with native assets + /// if it needs to run the build again. + List get dependencies; +} + +final class _LinkResultImpl implements LinkResult { + @override + final List assets; + + @override + final List dependencies; + + @override + final bool success; + + _LinkResultImpl({ + required this.assets, + required this.dependencies, + required this.success, + }); +} + +extension on BuildConfig { + String get packageName => + packageRoot.pathSegments.lastWhere((e) => e.isNotEmpty); +} + +int _uriCompare(Uri u1, Uri u2) => u1.toString().compareTo(u2.toString()); diff --git a/pkgs/native_assets_builder/pubspec_overrides.yaml b/pkgs/native_assets_builder/pubspec_overrides.yaml new file mode 100644 index 000000000..f194e8aca --- /dev/null +++ b/pkgs/native_assets_builder/pubspec_overrides.yaml @@ -0,0 +1,3 @@ +dependency_overrides: + native_assets_cli: + path: ../native_assets_cli diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/build.dart b/pkgs/native_assets_builder/test/data/native_add_link_trivial/build.dart new file mode 100644 index 000000000..69bbb9ede --- /dev/null +++ b/pkgs/native_assets_builder/test/data/native_add_link_trivial/build.dart @@ -0,0 +1,31 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:logging/logging.dart'; +import 'package:native_assets_cli/native_assets_cli.dart'; +import 'package:native_toolchain_c/native_toolchain_c.dart'; + +const packageName = 'native_add'; + +void main(List args) async { + final buildConfig = await BuildConfig.fromArgs(args); + final buildOutput = BuildOutput(); + final cbuilder = CBuilder.library( + name: packageName, + assetId: 'package:$packageName/src/${packageName}_bindings_generated.dart', + sources: [ + 'src/$packageName.c', + ], + ); + await cbuilder.run( + buildConfig: buildConfig, + buildOutput: buildOutput, + logger: Logger('') + ..level = Level.ALL + ..onRecord.listen((record) { + print('${record.level.name}: ${record.time}: ${record.message}'); + }), + ); + await buildOutput.writeToFile(outDir: buildConfig.outDir); +} diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/ffigen.yaml b/pkgs/native_assets_builder/test/data/native_add_link_trivial/ffigen.yaml new file mode 100644 index 000000000..b8716bd2d --- /dev/null +++ b/pkgs/native_assets_builder/test/data/native_add_link_trivial/ffigen.yaml @@ -0,0 +1,20 @@ +# Run with `flutter pub run ffigen --config ffigen.yaml`. +name: NativeAddBindings +description: | + Bindings for `src/native_add.h`. + + Regenerate bindings with `flutter pub run ffigen --config ffigen.yaml`. +output: "lib/src/native_add_bindings_generated.dart" +headers: + entry-points: + - "src/native_add.h" + include-directives: + - "src/native_add.h" +preamble: | + // Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file + // for details. All rights reserved. Use of this source code is governed by a + // BSD-style license that can be found in the LICENSE file. +comments: + style: any + length: full +ffi-native: diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/native_add.dart b/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/native_add.dart new file mode 100644 index 000000000..9eda681ab --- /dev/null +++ b/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/native_add.dart @@ -0,0 +1,5 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +export 'src/native_add.dart'; diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add.dart b/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add.dart new file mode 100644 index 000000000..9c8a43b9e --- /dev/null +++ b/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add.dart @@ -0,0 +1,7 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'native_add_bindings_generated.dart' as bindings; + +int add(int a, int b) => bindings.add(a, b); diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add_bindings_generated.dart b/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add_bindings_generated.dart new file mode 100644 index 000000000..4d1e803aa --- /dev/null +++ b/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add_bindings_generated.dart @@ -0,0 +1,15 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// AUTO GENERATED FILE, DO NOT EDIT. +// +// Generated by `package:ffigen`. +// ignore_for_file: type=lint +import 'dart:ffi' as ffi; + +@ffi.Native(symbol: 'add') +external int add( + int a, + int b, +); diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/link.dart b/pkgs/native_assets_builder/test/data/native_add_link_trivial/link.dart new file mode 100644 index 000000000..ac391dabd --- /dev/null +++ b/pkgs/native_assets_builder/test/data/native_add_link_trivial/link.dart @@ -0,0 +1,25 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:native_assets_cli/native_assets_cli.dart'; + +void main(List args) async { + final linkInput = await LinkInput.fromArgs(args); + + final shakenAssets = MyResourceShaker().shake( + linkInput.buildOutput.assets, + linkInput.resourceIdentifiers, + ); + + final linkOutput = BuildOutput(assets: shakenAssets); + await linkOutput.writeToFile(outDir: linkInput.buildConfig.outDir); +} + +class MyResourceShaker { + List shake( + List assets, + ResourceIdentifiers resourceIdentifiers, + ) => + assets.skip(2).toList(); +} diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/pubspec.yaml b/pkgs/native_assets_builder/test/data/native_add_link_trivial/pubspec.yaml new file mode 100644 index 000000000..bfdd48d2e --- /dev/null +++ b/pkgs/native_assets_builder/test/data/native_add_link_trivial/pubspec.yaml @@ -0,0 +1,19 @@ +name: native_add +description: Sums two numbers with native code. +version: 0.1.0 + +publish_to: none + +environment: + sdk: '>=3.0.0 <4.0.0' + +dependencies: + cli_config: ^0.1.1 + logging: ^1.1.1 + native_assets_cli: ^0.2.0 + native_toolchain_c: ^0.2.0 + +dev_dependencies: + ffigen: ^8.0.2 + lints: ^2.0.0 + test: ^1.23.1 diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.c b/pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.c new file mode 100644 index 000000000..cf21076d1 --- /dev/null +++ b/pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.c @@ -0,0 +1,9 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#include "native_add.h" + +int32_t add(int32_t a, int32_t b) { + return a + b; +} diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.h b/pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.h new file mode 100644 index 000000000..5824f98a7 --- /dev/null +++ b/pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.h @@ -0,0 +1,13 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#include + +#if _WIN32 +#define MYLIB_EXPORT __declspec(dllexport) +#else +#define MYLIB_EXPORT +#endif + +MYLIB_EXPORT int32_t add(int32_t a, int32_t b); diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/test/native_add_test.dart b/pkgs/native_assets_builder/test/data/native_add_link_trivial/test/native_add_test.dart new file mode 100644 index 000000000..7531a6209 --- /dev/null +++ b/pkgs/native_assets_builder/test/data/native_add_link_trivial/test/native_add_test.dart @@ -0,0 +1,13 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:native_add/native_add.dart'; +import 'package:test/test.dart'; + +void main() { + test('native add test', () { + final result = add(4, 6); + expect(result, equals(10)); + }); +} diff --git a/pkgs/native_assets_cli/lib/native_assets_cli.dart b/pkgs/native_assets_cli/lib/native_assets_cli.dart index 8ee3d3064..150266e57 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli.dart @@ -12,7 +12,9 @@ export 'src/model/build_mode.dart'; export 'src/model/build_output.dart'; export 'src/model/dependencies.dart'; export 'src/model/ios_sdk.dart'; +export 'src/model/link_input.dart'; export 'src/model/link_mode.dart'; export 'src/model/link_mode_preference.dart'; export 'src/model/metadata.dart'; +export 'src/model/resources.dart'; export 'src/model/target.dart'; diff --git a/pkgs/native_assets_cli/lib/src/model/link_input.dart b/pkgs/native_assets_cli/lib/src/model/link_input.dart new file mode 100644 index 000000000..4760893fd --- /dev/null +++ b/pkgs/native_assets_cli/lib/src/model/link_input.dart @@ -0,0 +1,32 @@ +import 'build_config.dart'; +import 'build_output.dart'; +import 'resources.dart'; + +/// The input to the linking script. +/// +/// It consists of the [buildConfig] already passed to the build script, the +/// result of the build step [buildOutput], and the [resourceIdentifiers] +/// generated during the kernel compilation. +class LinkInput { + final BuildConfig buildConfig; + final BuildOutput buildOutput; + final ResourceIdentifiers resourceIdentifiers; + + LinkInput._({ + required this.buildConfig, + required this.buildOutput, + required this.resourceIdentifiers, + }); + + /// Generate the [LinkInput] from the input arguments to the linking script. + static Future fromArgs(List args) async { + final buildConfig = await BuildConfig.fromArgs(args); + final buildOutput = BuildOutput.fromYamlString(args); + final resourceIdentifiers = ResourceIdentifiers.fromFile(); + return LinkInput._( + buildConfig: buildConfig, + buildOutput: buildOutput, + resourceIdentifiers: resourceIdentifiers, + ); + } +} diff --git a/pkgs/native_assets_cli/lib/src/model/resources.dart b/pkgs/native_assets_cli/lib/src/model/resources.dart new file mode 100644 index 000000000..86b71c194 --- /dev/null +++ b/pkgs/native_assets_cli/lib/src/model/resources.dart @@ -0,0 +1,78 @@ +class ResourceIdentifiers { + final List identifiers; + + ResourceIdentifiers({required this.identifiers}); + + factory ResourceIdentifiers.fromFile() => + ResourceIdentifiers(identifiers: []); +} + +class Identifier { + final String name; + final String id; + final String uri; + final bool nonConstant; + final List files; + + Identifier({ + required this.name, + required this.id, + required this.uri, + required this.nonConstant, + required this.files, + }); + + Map toJson() => { + 'name': name, + 'id': id, + 'uri': uri, + 'nonConstant': nonConstant, + 'files': files.map((x) => x.toJson()).toList(), + }; + + @override + String toString() => + 'Identifier(name: $name, id: $id, uri: $uri, nonConstant: $nonConstant, files: $files)'; +} + +class ResourceFile { + final int part; + final List references; + + ResourceFile({required this.part, required this.references}); + + Map toJson() => { + 'part': part, + 'references': references.map((x) => x.toJson()).toList(), + }; + + @override + String toString() => 'ResourceFile(part: $part, references: $references)'; +} + +class ResourceReference { + final String uri; + final int line; + final int column; + final Map arguments; + + ResourceReference({ + required this.uri, + required this.line, + required this.column, + required this.arguments, + }); + + Map toJson() => { + '@': { + 'uri': uri, + 'line': line, + 'column': column, + }, + ...arguments, + }; + + @override + String toString() => + 'ResourceReference(uri: $uri, line: $line, column: $column, arguments: $arguments)'; +} From 86108c45a1f7a4d126cd8a7c91130075fe5d28db Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 24 Nov 2023 11:51:12 +0100 Subject: [PATCH 002/187] Fixes --- .../lib/src/build_runner/build_planner.dart | 36 +- .../lib/src/build_runner/build_runner.dart | 261 ++++++----- .../lib/src/build_runner/link_runner.dart | 421 ------------------ .../lib/src/package_layout/build_type.dart | 11 + .../src/package_layout/package_layout.dart | 14 +- .../test/build_runner/build_planner_test.dart | 12 +- .../build_runner_reusability_test.dart | 7 +- .../test/build_runner/helpers.dart | 8 +- .../native_assets_builder/test/data/README.md | 2 +- .../data/wrong_namespace_asset/build.dart | 1 + .../native_add_library/pubspec_overrides.yaml | 5 + .../lib/src/model/asset.dart | 20 +- .../lib/src/model/link_input.dart | 29 +- .../lib/src/model/resources.dart | 40 +- .../test/model/asset_test.dart | 17 +- .../test/model/build_output_test.dart | 4 + .../lib/src/cbuilder/cbuilder.dart | 1 + .../native_toolchain_c/pubspec_overrides.yaml | 3 + 18 files changed, 292 insertions(+), 600 deletions(-) delete mode 100644 pkgs/native_assets_builder/lib/src/build_runner/link_runner.dart create mode 100644 pkgs/native_assets_builder/lib/src/package_layout/build_type.dart create mode 100644 pkgs/native_assets_cli/example/native_add_library/pubspec_overrides.yaml create mode 100644 pkgs/native_toolchain_c/pubspec_overrides.yaml diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart index 24c533a84..e6422c587 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart @@ -9,20 +9,20 @@ import 'package:graphs/graphs.dart' as graphs; import 'package:logging/logging.dart'; import 'package:package_config/package_config.dart'; -class NativeAssetsBuildPlanner { - final PackageGraph packageGraph; +class NativeAssetsPlanner { + final DependencyGraph dependencyGraph; final List packagesWithNativeAssets; final Uri dartExecutable; final Logger logger; - NativeAssetsBuildPlanner({ - required this.packageGraph, + NativeAssetsPlanner({ + required this.dependencyGraph, required this.packagesWithNativeAssets, required this.dartExecutable, required this.logger, }); - static Future fromRootPackageRoot({ + static Future fromRootPackageRoot({ required Uri rootPackageRoot, required List packagesWithNativeAssets, required Uri dartExecutable, @@ -37,10 +37,10 @@ class NativeAssetsBuildPlanner { ], workingDirectory: rootPackageRoot.toFilePath(), ); - final packageGraph = - PackageGraph.fromPubDepsJsonString(result.stdout as String); - return NativeAssetsBuildPlanner( - packageGraph: packageGraph, + final dependencyGraph = + DependencyGraph.fromPubDepsJsonString(result.stdout as String); + return NativeAssetsPlanner( + dependencyGraph: dependencyGraph, packagesWithNativeAssets: packagesWithNativeAssets, dartExecutable: dartExecutable, logger: logger, @@ -52,7 +52,8 @@ class NativeAssetsBuildPlanner { for (final package in packagesWithNativeAssets) package.name: package }; final packagesToBuild = packageMap.keys.toSet(); - final stronglyConnectedComponents = packageGraph.computeStrongComponents(); + final stronglyConnectedComponents = + dependencyGraph.computeStrongComponents(); final result = []; var success = true; for (final stronglyConnectedComponent in stronglyConnectedComponents) { @@ -75,17 +76,20 @@ class NativeAssetsBuildPlanner { } } -class PackageGraph { +/// A graph of package dependencies, encoded as package name -> list of package +/// dependencies. +class DependencyGraph { final Map> map; - PackageGraph(this.map); + DependencyGraph(this.map); /// Construct a graph from the JSON produced by `dart pub deps --json`. - factory PackageGraph.fromPubDepsJsonString(String json) => - PackageGraph.fromPubDepsJson(jsonDecode(json) as Map); + factory DependencyGraph.fromPubDepsJsonString(String json) => + DependencyGraph.fromPubDepsJson( + jsonDecode(json) as Map); /// Construct a graph from the JSON produced by `dart pub deps --json`. - factory PackageGraph.fromPubDepsJson(Map map) { + factory DependencyGraph.fromPubDepsJson(Map map) { final result = >{}; final packages = map['packages'] as List; for (final package in packages) { @@ -96,7 +100,7 @@ class PackageGraph { .toList(); result[name] = dependencies; } - return PackageGraph(result); + return DependencyGraph(result); } Iterable neighborsOf(String vertex) => map[vertex] ?? []; diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 579855c94..e616e708b 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -9,6 +9,7 @@ import 'package:logging/logging.dart'; import 'package:native_assets_cli/native_assets_cli.dart'; import 'package:package_config/package_config.dart'; +import '../package_layout/build_type.dart'; import '../package_layout/package_layout.dart'; import '../utils/run_process.dart'; import 'build_planner.dart'; @@ -19,11 +20,11 @@ typedef DependencyMetadata = Map; /// /// These methods are invoked by launchers such as dartdev (for `dart run`) /// and flutter_tools (for `flutter run` and `flutter build`). -class NativeAssetsBuildRunner { +class NativeAssetsRunner { final Logger logger; final Uri dartExecutable; - NativeAssetsBuildRunner({ + NativeAssetsRunner({ required this.logger, required this.dartExecutable, }); @@ -44,42 +45,73 @@ class NativeAssetsBuildRunner { int? targetAndroidNdkApi, required bool includeParentEnvironment, PackageLayout? packageLayout, + }) async => + _run( + buildType: BuildType.build, + linkModePreference: linkModePreference, + target: target, + workingDirectory: workingDirectory, + buildMode: buildMode, + cCompilerConfig: cCompilerConfig, + targetIOSSdk: targetIOSSdk, + targetAndroidNdkApi: targetAndroidNdkApi, + includeParentEnvironment: includeParentEnvironment, + packageLayout: packageLayout, + ); + + Future link({ + required Target target, + required Uri workingDirectory, + required BuildMode buildMode, + CCompilerConfig? cCompilerConfig, + IOSSdk? targetIOSSdk, + int? targetAndroidNdkApi, + required bool includeParentEnvironment, + PackageLayout? packageLayout, + Uri? resourceIdentifiers, + }) async => + _run( + buildType: BuildType.link, + linkModePreference: LinkModePreference.dynamic, + target: target, + workingDirectory: workingDirectory, + buildMode: buildMode, + cCompilerConfig: cCompilerConfig, + targetIOSSdk: targetIOSSdk, + targetAndroidNdkApi: targetAndroidNdkApi, + includeParentEnvironment: includeParentEnvironment, + packageLayout: packageLayout, + resourceIdentifiers: resourceIdentifiers, + ); + + Future _run({ + required BuildType buildType, + required LinkModePreference linkModePreference, + required Target target, + required Uri workingDirectory, + required BuildMode buildMode, + CCompilerConfig? cCompilerConfig, + IOSSdk? targetIOSSdk, + int? targetAndroidNdkApi, + required bool includeParentEnvironment, + PackageLayout? packageLayout, + Uri? resourceIdentifiers, }) async { packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); - final packagesWithNativeAssets = - await packageLayout.packagesWithNativeAssets; - final List buildPlan; - final PackageGraph packageGraph; - if (packagesWithNativeAssets.length <= 1) { - buildPlan = packagesWithNativeAssets; - packageGraph = PackageGraph({ - for (final p in packagesWithNativeAssets) p.name: [], - }); - } else { - final planner = await NativeAssetsBuildPlanner.fromRootPackageRoot( - rootPackageRoot: packageLayout.rootPackageRoot, - packagesWithNativeAssets: packagesWithNativeAssets, - dartExecutable: Uri.file(Platform.resolvedExecutable), - logger: logger, - ); - final (plan, planSuccess) = planner.plan(); - if (!planSuccess) { - return _BuildResultImpl( - assets: [], - dependencies: [], - success: false, - ); - } - buildPlan = plan; - packageGraph = planner.packageGraph; + final packagesWithBuild = + await packageLayout.packagesWithNativeAssets(buildType); + final (packages, dependencyGraph, planSuccess) = + await _plannedPackages(packagesWithBuild, packageLayout); + if (!planSuccess) { + return BuildResult._(assets: [], dependencies: [], success: false); } final assets = []; final dependencies = []; final metadata = {}; var success = true; - for (final package in buildPlan) { + for (final package in packages) { final dependencyMetadata = _metadataForPackage( - packageGraph: packageGraph, + dependencyGraph: dependencyGraph, packageName: package.name, targetMetadata: metadata, ); @@ -95,25 +127,19 @@ class NativeAssetsBuildRunner { targetIOSSdk: targetIOSSdk, targetAndroidNdkApi: targetAndroidNdkApi, ); - final ( - packageAssets, - packageDependencies, - packageMetadata, - packageSuccess, - ) = await _buildPackageCached( + final (buildOutput, packageSuccess) = await _runPackageCached( + buildType, config, packageLayout.packageConfigUri, workingDirectory, includeParentEnvironment, ); - assets.addAll(packageAssets); - dependencies.addAll(packageDependencies); + assets.addAll(buildOutput.assets); + dependencies.addAll(buildOutput.dependencies.dependencies); success &= packageSuccess; - if (packageMetadata != null) { - metadata[config.packageName] = packageMetadata; - } + metadata[config.packageName] = buildOutput.metadata; } - return _BuildResultImpl( + return BuildResult._( assets: assets, dependencies: dependencies..sort(_uriCompare), success: success, @@ -126,7 +152,7 @@ class NativeAssetsBuildRunner { /// flutter_tools (for `flutter run` and `flutter build`). /// /// Completes the future with an error if the build fails. - Future dryRun({ + Future dryBuild({ required LinkModePreference linkModePreference, required OS targetOs, required Uri workingDirectory, @@ -134,30 +160,15 @@ class NativeAssetsBuildRunner { PackageLayout? packageLayout, }) async { packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); - final packagesWithNativeAssets = - await packageLayout.packagesWithNativeAssets; - final List buildPlan; - if (packagesWithNativeAssets.length <= 1) { - buildPlan = packagesWithNativeAssets; - } else { - final planner = await NativeAssetsBuildPlanner.fromRootPackageRoot( - rootPackageRoot: packageLayout.rootPackageRoot, - packagesWithNativeAssets: packagesWithNativeAssets, - dartExecutable: Uri.file(Platform.resolvedExecutable), - logger: logger, - ); - final (plan, planSuccess) = planner.plan(); - if (!planSuccess) { - return _DryRunResultImpl( - assets: [], - success: false, - ); - } - buildPlan = plan; + final packagesWithBuild = await packageLayout.packagesWithNativeBuild; + final (packages, _, planSuccess) = + await _plannedPackages(packagesWithBuild, packageLayout); + if (!planSuccess) { + return BuildResult._(assets: [], dependencies: [], success: false); } final assets = []; var success = true; - for (final package in buildPlan) { + for (final package in packages) { final config = await _cliConfigDryRun( packageName: package.name, packageRoot: packageLayout.packageRoot(package.name), @@ -165,23 +176,21 @@ class NativeAssetsBuildRunner { linkMode: linkModePreference, buildParentDir: packageLayout.dartToolNativeAssetsBuilder, ); - final (packageAssets, _, _, packageSuccess) = await _buildPackage( + final (buildOutput, packageSuccess) = await _buildPackage( + BuildType.build, config, packageLayout.packageConfigUri, workingDirectory, includeParentEnvironment, - dryRun: true, ); - assets.addAll(packageAssets); + assets.addAll(buildOutput.assets); success &= packageSuccess; } - return _DryRunResultImpl( - assets: assets, - success: success, - ); + return BuildResult._dryrun(assets: assets, success: success); } - Future<_PackageBuildRecord> _buildPackageCached( + Future<_PackageBuildRecord> _runPackageCached( + BuildType buildType, BuildConfig config, Uri packageConfigUri, Uri workingDirectory, @@ -204,31 +213,28 @@ class NativeAssetsBuildRunner { 'Last build on $lastBuilt, last input change on $lastChange.'); // All build flags go into [outDir]. Therefore we do not have to check // here whether the config is equal. - final assets = buildOutput!.assets; - final dependencies = buildOutput.dependencies.dependencies; - final metadata = buildOutput.metadata; - return (assets, dependencies, metadata, true); + return (buildOutput!, true); } return await _buildPackage( + buildType, config, packageConfigUri, workingDirectory, includeParentEnvironment, - dryRun: false, ); } Future<_PackageBuildRecord> _buildPackage( + BuildType buildType, BuildConfig config, Uri packageConfigUri, Uri workingDirectory, - bool includeParentEnvironment, { - required bool dryRun, - }) async { + bool includeParentEnvironment, + ) async { final outDir = config.outDir; final configFile = outDir.resolve('../config.yaml'); - final buildDotDart = config.packageRoot.resolve('build.dart'); + final script = config.packageRoot.resolve(buildType.scriptName); final configFileContents = config.toYamlString(); logger.info('config.yaml contents: $configFileContents'); await File.fromUri(configFile).writeAsString(configFileContents); @@ -239,7 +245,7 @@ class NativeAssetsBuildRunner { } final arguments = [ '--packages=${packageConfigUri.toFilePath()}', - buildDotDart.toFilePath(), + script.toFilePath(), '--config=${configFile.toFilePath()}', ]; final result = await runProcess( @@ -275,11 +281,9 @@ ${result.stdout} try { final buildOutput = await BuildOutput.readFromFile(outDir: outDir); - final assets = buildOutput?.assets ?? []; - success &= validateAssetsPackage(assets, config.packageName); - final dependencies = buildOutput?.dependencies.dependencies ?? []; - final metadata = dryRun ? null : buildOutput?.metadata; - return (assets, dependencies, metadata, success); + success &= + validateAssetsPackage(buildOutput?.assets ?? [], config.packageName); + return (buildOutput ?? BuildOutput(), success); } on FormatException catch (e) { logger.severe(''' Building native assets for package:${config.packageName} failed. @@ -287,7 +291,7 @@ build_output.yaml contained a format error. ${e.message} '''); success = false; - return ([], [], const Metadata({}), false); + return (BuildOutput(), false); // TODO(https://github.com/dart-lang/native/issues/109): Stop throwing // type errors in native_assets_cli, release a new version of that package // and then remove this. @@ -298,7 +302,7 @@ Building native assets for package:${config.packageName} failed. build_output.yaml contained a format error. '''); success = false; - return ([], [], const Metadata({}), false); + return (BuildOutput(), false); } finally { if (!success) { final buildOutputFile = @@ -378,14 +382,14 @@ build_output.yaml contained a format error. } DependencyMetadata? _metadataForPackage({ - required PackageGraph packageGraph, + required DependencyGraph dependencyGraph, required String packageName, DependencyMetadata? targetMetadata, }) { if (targetMetadata == null) { return null; } - final dependencies = packageGraph.neighborsOf(packageName).toSet(); + final dependencies = dependencyGraph.neighborsOf(packageName).toSet(); return { for (final entry in targetMetadata.entries) if (dependencies.contains(entry.key)) entry.key: entry.value, @@ -408,65 +412,56 @@ build_output.yaml contained a format error. } return success; } -} - -typedef _PackageBuildRecord = ( - List, - List dependencies, - Metadata?, - bool success, -); -/// The result from a [NativeAssetsBuildRunner.dryRun]. -abstract interface class DryRunResult { - /// The native assets for all [Target]s for the build or dry run. - List get assets; - - /// Whether all builds completed without errors. - /// - /// All error messages are streamed to [NativeAssetsBuildRunner.logger]. - bool get success; + Future<(List plan, DependencyGraph dependencyGraph, bool success)> + _plannedPackages( + List packagesWithNativeAssets, + PackageLayout packageLayout, + ) async { + if (packagesWithNativeAssets.length <= 1) { + final dependencyGraph = DependencyGraph({ + for (final p in packagesWithNativeAssets) p.name: [], + }); + return (packagesWithNativeAssets, dependencyGraph, true); + } else { + final planner = await NativeAssetsPlanner.fromRootPackageRoot( + rootPackageRoot: packageLayout.rootPackageRoot, + packagesWithNativeAssets: packagesWithNativeAssets, + dartExecutable: Uri.file(Platform.resolvedExecutable), + logger: logger, + ); + final (plan, planSuccess) = planner.plan(); + return (plan, planner.dependencyGraph, planSuccess); + } + } } -final class _DryRunResultImpl implements DryRunResult { - @override - final List assets; - - @override - final bool success; - - _DryRunResultImpl({ - required this.assets, - required this.success, - }); -} +typedef _PackageBuildRecord = (BuildOutput, bool success); -/// The result from a [NativeAssetsBuildRunner.build]. -abstract class BuildResult implements DryRunResult { +/// The result from a [NativeAssetsRunner._run]. +final class BuildResult { /// All the files used for building the native assets of all packages. /// /// This aggregated list can be used to determine whether the - /// [NativeAssetsBuildRunner] needs to be invoked again. The - /// [NativeAssetsBuildRunner] determines per package with native assets + /// [NativeAssetsRunner] needs to be invoked again. The + /// [NativeAssetsRunner] determines per package with native assets /// if it needs to run the build again. - List get dependencies; -} + final List dependencies; -final class _BuildResultImpl implements BuildResult { - @override final List assets; - @override - final List dependencies; - - @override final bool success; - _BuildResultImpl({ + BuildResult._({ required this.assets, required this.dependencies, required this.success, }); + + BuildResult._dryrun({ + required this.assets, + required this.success, + }) : dependencies = []; } extension on DateTime { diff --git a/pkgs/native_assets_builder/lib/src/build_runner/link_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/link_runner.dart deleted file mode 100644 index affda3520..000000000 --- a/pkgs/native_assets_builder/lib/src/build_runner/link_runner.dart +++ /dev/null @@ -1,421 +0,0 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'dart:async'; -import 'dart:io'; - -import 'package:logging/logging.dart'; -import 'package:native_assets_cli/native_assets_cli.dart'; - -import '../package_layout/package_layout.dart'; -import '../utils/run_process.dart'; -import 'build_planner.dart'; - -typedef DependencyMetadata = Map; - -/// The programmatic API to be used by Dart launchers to invoke native linking. -/// -/// These methods are invoked by launchers such as dartdev (for `dart run`) -/// and flutter_tools (for `flutter run` and `flutter build`). -class NativeAssetsLinkRunner { - final Logger logger; - final Uri dartExecutable; - - NativeAssetsLinkRunner({ - required this.logger, - required this.dartExecutable, - }); - - /// [workingDirectory] is expected to contain `.dart_tool`. - /// - /// This method is invoked by launchers such as dartdev (for `dart run`) and - /// flutter_tools (for `flutter run` and `flutter build`). - /// - /// Completes the future with an error if the linking fails. - Future link({ - required Target target, - required Uri workingDirectory, - required BuildMode buildMode, - required Uri? resourceIdentifiers, - required bool includeParentEnvironment, - }) async { - final packageLayout = - await PackageLayout.fromRootPackageRoot(workingDirectory); - final packagesWithNativeAssets = - await packageLayout.packagesWithNativeAssets; - final planner = await NativeAssetsBuildPlanner.fromRootPackageRoot( - rootPackageRoot: packageLayout.rootPackageRoot, - packagesWithNativeAssets: packagesWithNativeAssets, - dartExecutable: Uri.file(Platform.resolvedExecutable), - logger: logger, - ); - final (plan, planSuccess) = planner.plan(); - if (!planSuccess) { - return _LinkResultImpl( - assets: [], - dependencies: [], - success: false, - ); - } - final assets = []; - final dependencies = []; - final metadata = {}; - var success = true; - for (final package in plan) { - final dependencyMetadata = _metadataForPackage( - packageGraph: planner.packageGraph, - packageName: package.name, - targetMetadata: metadata, - ); - final config = await _cliConfig( - packageRoot: packageLayout.packageRoot(package.name), - target: target, - buildMode: buildMode, - buildParentDir: packageLayout.dartToolNativeAssetsBuilder, - dependencyMetadata: dependencyMetadata, - ); - final ( - packageAssets, - packageDependencies, - packageMetadata, - packageSuccess, - ) = await _linkPackageCached( - config, - packageLayout.packageConfigUri, - workingDirectory, - resourceIdentifiers, - includeParentEnvironment, - ); - assets.addAll(packageAssets); - dependencies.addAll(packageDependencies); - success &= packageSuccess; - if (packageMetadata != null) { - metadata[config.packageName] = packageMetadata; - } - } - return _LinkResultImpl( - assets: assets, - dependencies: dependencies..sort(_uriCompare), - success: success, - ); - } - - /// [workingDirectory] is expected to contain `.dart_tool`. - /// - /// This method is invoked by launchers such as dartdev (for `dart run`) and - /// flutter_tools (for `flutter run` and `flutter build`). - /// - /// Completes the future with an error if the build fails. - Future dryRun({ - required LinkModePreference linkModePreference, - required OS targetOs, - required Uri workingDirectory, - required bool includeParentEnvironment, - }) async { - final packageLayout = - await PackageLayout.fromRootPackageRoot(workingDirectory); - final packagesWithNativeAssets = - await packageLayout.packagesWithNativeAssets; - final planner = await NativeAssetsBuildPlanner.fromRootPackageRoot( - rootPackageRoot: packageLayout.rootPackageRoot, - packagesWithNativeAssets: packagesWithNativeAssets, - dartExecutable: Uri.file(Platform.resolvedExecutable), - logger: logger, - ); - final (plan, planSuccess) = planner.plan(); - if (!planSuccess) { - return _DryRunResultImpl( - assets: [], - success: false, - ); - } - final assets = []; - var success = true; - for (final package in plan) { - final config = await _cliConfigDryRun( - packageName: package.name, - packageRoot: packageLayout.packageRoot(package.name), - targetOs: targetOs, - linkMode: linkModePreference, - buildParentDir: packageLayout.dartToolNativeAssetsBuilder, - ); - final (packageAssets, _, _, packageSuccess) = await _linkPackage( - config, - packageLayout.packageConfigUri, - workingDirectory, - null, - includeParentEnvironment, - dryRun: true, - ); - assets.addAll(packageAssets); - success &= packageSuccess; - } - return _DryRunResultImpl( - assets: assets, - success: success, - ); - } - - Future<_PackageBuildRecord> _linkPackageCached( - BuildConfig config, - Uri packageConfigUri, - Uri workingDirectory, - Uri? resourceIdentifiers, - bool includeParentEnvironment, - ) async { - final outDir = config.outDir; - if (!await Directory.fromUri(outDir).exists()) { - await Directory.fromUri(outDir).create(recursive: true); - } - - return await _linkPackage( - config, - packageConfigUri, - workingDirectory, - resourceIdentifiers, - includeParentEnvironment, - dryRun: false, - ); - } - - Future<_PackageBuildRecord> _linkPackage( - BuildConfig config, - Uri packageConfigUri, - Uri workingDirectory, - Uri? resourceIdentifiers, - bool includeParentEnvironment, { - required bool dryRun, - }) async { - final outDir = config.outDir; - final configFile = outDir.resolve('../config.yaml'); - final linkDotDart = config.packageRoot.resolve('link.dart'); - final configFileContents = config.toYamlString(); - logger.info('config.yaml contents: $configFileContents'); - await File.fromUri(configFile).writeAsString(configFileContents); - final arguments = [ - '--packages=${packageConfigUri.toFilePath()}', - '--build-output=${outDir.resolve(BuildOutput.fileName).toFilePath()}', - '--resource-identifiers=${resourceIdentifiers?.toFilePath()}', - linkDotDart.toFilePath(), - '--config=${configFile.toFilePath()}', - ]; - final result = await runProcess( - workingDirectory: workingDirectory, - executable: dartExecutable, - arguments: arguments, - logger: logger, - includeParentEnvironment: includeParentEnvironment, - ); - var success = true; - if (result.exitCode != 0) { - final printWorkingDir = workingDirectory != Directory.current.uri; - final commandString = [ - if (printWorkingDir) '(cd ${workingDirectory.toFilePath()};', - dartExecutable.toFilePath(), - ...arguments.map((a) => a.contains(' ') ? "'$a'" : a), - if (printWorkingDir) ')', - ].join(' '); - logger.severe( - ''' -Building native assets for package:${config.packageName} failed. -build.dart returned with exit code: ${result.exitCode}. -To reproduce run: -$commandString -stderr: -${result.stderr} -stdout: -${result.stdout} - ''', - ); - success = false; - } - - try { - final buildOutput = await BuildOutput.readFromFile(outDir: outDir); - final assets = buildOutput?.assets ?? []; - success &= validateAssetsPackage(assets, config.packageName); - final dependencies = buildOutput?.dependencies.dependencies ?? []; - final metadata = dryRun ? null : buildOutput?.metadata; - return (assets, dependencies, metadata, success); - } on FormatException catch (e) { - logger.severe(''' -Building native assets for package:${config.packageName} failed. -build_output.yaml contained a format error. -${e.message} - '''); - success = false; - return ([], [], Metadata({}), false); - // TODO(https://github.com/dart-lang/native/issues/109): Stop throwing - // type errors in native_assets_cli, release a new version of that package - // and then remove this. - // ignore: avoid_catching_errors - } on TypeError { - logger.severe(''' -Building native assets for package:${config.packageName} failed. -build_output.yaml contained a format error. - '''); - success = false; - return ([], [], Metadata({}), false); - } finally { - if (!success) { - final linkOutputFile = - File.fromUri(outDir.resolve(BuildOutput.fileName)); - if (await linkOutputFile.exists()) { - await linkOutputFile.delete(); - } - } - } - } - - static Future _cliConfig({ - required Uri packageRoot, - required Target target, - required BuildMode buildMode, - required Uri buildParentDir, - DependencyMetadata? dependencyMetadata, - }) async { - final buildDirName = BuildConfig.checksum( - packageRoot: packageRoot, - targetOs: target.os, - targetArchitecture: target.architecture, - buildMode: buildMode, - linkModePreference: LinkModePreference.static, - dependencyMetadata: dependencyMetadata, - ); - final outDirUri = buildParentDir.resolve('$buildDirName/out/'); - final outDir = Directory.fromUri(outDirUri); - if (!await outDir.exists()) { - // TODO(https://dartbug.com/50565): Purge old or unused folders. - await outDir.create(recursive: true); - } - return BuildConfig( - outDir: outDirUri, - packageRoot: packageRoot, - targetOs: target.os, - targetArchitecture: target.architecture, - buildMode: buildMode, - linkModePreference: LinkModePreference.static, - dependencyMetadata: dependencyMetadata, - ); - } - - static Future _cliConfigDryRun({ - required String packageName, - required Uri packageRoot, - required OS targetOs, - required LinkModePreference linkMode, - required Uri buildParentDir, - }) async { - final buildDirName = 'dry_run_${targetOs}_$linkMode'; - final outDirUri = buildParentDir.resolve('$buildDirName/out/'); - final outDir = Directory.fromUri(outDirUri); - if (!await outDir.exists()) { - await outDir.create(recursive: true); - } - return BuildConfig.dryRun( - outDir: outDirUri, - packageRoot: packageRoot, - targetOs: targetOs, - linkModePreference: linkMode, - ); - } - - DependencyMetadata? _metadataForPackage({ - required PackageGraph packageGraph, - required String packageName, - DependencyMetadata? targetMetadata, - }) { - if (targetMetadata == null) { - return null; - } - final dependencies = packageGraph.neighborsOf(packageName).toSet(); - return { - for (final entry in targetMetadata.entries) - if (dependencies.contains(entry.key)) entry.key: entry.value, - }; - } - - bool validateAssetsPackage(List assets, String packageName) { - final invalidAssetIds = assets - .map((a) => a.id) - .where((n) => !n.startsWith('package:$packageName/')) - .toSet() - .toList() - ..sort(); - final success = invalidAssetIds.isEmpty; - if (!success) { - logger.severe( - '`package:$packageName` declares the following assets which do not ' - 'start with `package:$packageName/`: ${invalidAssetIds.join(', ')}.', - ); - } - return success; - } -} - -typedef _PackageBuildRecord = ( - List, - List dependencies, - Metadata?, - bool success, -); - -/// The result from a [NativeAssetsLinkRunner.dryRun]. -abstract interface class DryRunResult { - /// The native assets for all [Target]s for the build or dry run. - List get assets; - - /// Whether all builds completed without errors. - /// - /// All error messages are streamed to [NativeAssetsLinkRunner.logger]. - bool get success; -} - -final class _DryRunResultImpl implements DryRunResult { - @override - final List assets; - - @override - final bool success; - - _DryRunResultImpl({ - required this.assets, - required this.success, - }); -} - -/// The result from a [NativeAssetsLinkRunner.link]. -abstract class LinkResult implements DryRunResult { - /// All the files used for building the native assets of all packages. - /// - /// This aggregated list can be used to determine whether the - /// [NativeAssetsLinkRunner] needs to be invoked again. The - /// [NativeAssetsLinkRunner] determines per package with native assets - /// if it needs to run the build again. - List get dependencies; -} - -final class _LinkResultImpl implements LinkResult { - @override - final List assets; - - @override - final List dependencies; - - @override - final bool success; - - _LinkResultImpl({ - required this.assets, - required this.dependencies, - required this.success, - }); -} - -extension on BuildConfig { - String get packageName => - packageRoot.pathSegments.lastWhere((e) => e.isNotEmpty); -} - -int _uriCompare(Uri u1, Uri u2) => u1.toString().compareTo(u2.toString()); diff --git a/pkgs/native_assets_builder/lib/src/package_layout/build_type.dart b/pkgs/native_assets_builder/lib/src/package_layout/build_type.dart new file mode 100644 index 000000000..e4f69772f --- /dev/null +++ b/pkgs/native_assets_builder/lib/src/package_layout/build_type.dart @@ -0,0 +1,11 @@ +/// The two types of scripts which are hooked into the compilation process. +/// +/// The [build] script runs before, and the [link] script after compilation. +enum BuildType { + build('build.dart'), + link('link.dart'); + + final String scriptName; + + const BuildType(this.scriptName); +} diff --git a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart index 00b97d2ec..feaa0c5a9 100644 --- a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart +++ b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart @@ -6,6 +6,8 @@ import 'dart:io'; import 'package:package_config/package_config.dart'; +import 'build_type.dart'; + /// Directory layout for dealing with native assets. /// /// Build scripts for native assets will be run from the context of another @@ -89,16 +91,22 @@ class PackageLayout { /// a `build.dart`. /// /// `package:native` itself is excluded. - late final Future> packagesWithNativeAssets = () async { + Future> packagesWithNativeAssets(BuildType type) async { final result = []; for (final package in packageConfig.packages) { final packageRoot = package.root; if (packageRoot.scheme == 'file') { - if (await File.fromUri(packageRoot.resolve('build.dart')).exists()) { + if (await File.fromUri(packageRoot.resolve(type.scriptName)).exists()) { result.add(package); } } } return result; - }(); + } + + late final Future> packagesWithNativeBuild = + packagesWithNativeAssets(BuildType.build); + + late final Future> packagesWithNativeLink = + packagesWithNativeAssets(BuildType.link); } diff --git a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart index 48daae368..05087c287 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart @@ -32,15 +32,15 @@ void main() async { ); expect(result.exitCode, 0); - final graph = PackageGraph.fromPubDepsJsonString(result.stdout); + final graph = DependencyGraph.fromPubDepsJsonString(result.stdout); final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = - await packageLayout.packagesWithNativeAssets; + await packageLayout.packagesWithNativeBuild; - final planner = NativeAssetsBuildPlanner( - packageGraph: graph, + final planner = NativeAssetsPlanner( + dependencyGraph: graph, packagesWithNativeAssets: packagesWithNativeAssets, dartExecutable: Uri.file(Platform.resolvedExecutable), logger: logger, @@ -61,9 +61,9 @@ void main() async { final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = - await packageLayout.packagesWithNativeAssets; + await packageLayout.packagesWithNativeBuild; final nativeAssetsBuildPlanner = - await NativeAssetsBuildPlanner.fromRootPackageRoot( + await NativeAssetsPlanner.fromRootPackageRoot( rootPackageRoot: nativeAddUri, packagesWithNativeAssets: packagesWithNativeAssets, dartExecutable: Uri.file(Platform.resolvedExecutable), diff --git a/pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart b/pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart index f4313cdc7..275e3743f 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart @@ -2,6 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'package:native_assets_builder/native_assets_builder.dart'; import 'package:native_assets_builder/src/build_runner/build_runner.dart'; import 'package:native_assets_cli/native_assets_cli.dart'; import 'package:test/test.dart'; @@ -23,18 +24,18 @@ void main() async { logger: logger, ); - final buildRunner = NativeAssetsBuildRunner( + final buildRunner = NativeAssetsRunner( logger: logger, dartExecutable: dartExecutable, ); - await buildRunner.dryRun( + await buildRunner.dryBuild( targetOs: Target.current.os, linkModePreference: LinkModePreference.dynamic, workingDirectory: packageUri, includeParentEnvironment: true, ); - await buildRunner.dryRun( + await buildRunner.dryBuild( targetOs: Target.current.os, linkModePreference: LinkModePreference.dynamic, workingDirectory: packageUri, diff --git a/pkgs/native_assets_builder/test/build_runner/helpers.dart b/pkgs/native_assets_builder/test/build_runner/helpers.dart index 9609c1c55..b425e808f 100644 --- a/pkgs/native_assets_builder/test/build_runner/helpers.dart +++ b/pkgs/native_assets_builder/test/build_runner/helpers.dart @@ -46,7 +46,7 @@ Future build( logger.onRecord.listen((event) => capturedLogs.add(event.message)); } - final result = await NativeAssetsBuildRunner( + final result = await NativeAssetsRunner( logger: logger, dartExecutable: dartExecutable, ).build( @@ -69,7 +69,7 @@ Future build( return result; } -Future dryRun( +Future dryRun( Uri packageUri, Logger logger, Uri dartExecutable, { @@ -85,10 +85,10 @@ Future dryRun( logger.onRecord.listen((event) => capturedLogs.add(event.message)); } - final result = await NativeAssetsBuildRunner( + final result = await NativeAssetsRunner( logger: logger, dartExecutable: dartExecutable, - ).dryRun( + ).dryBuild( linkModePreference: linkModePreference, targetOs: Target.current.os, workingDirectory: packageUri, diff --git a/pkgs/native_assets_builder/test/data/README.md b/pkgs/native_assets_builder/test/data/README.md index 311839a71..33f86c30e 100644 --- a/pkgs/native_assets_builder/test/data/README.md +++ b/pkgs/native_assets_builder/test/data/README.md @@ -2,5 +2,5 @@ The `dart_app` depends on multiple packages with native assets. `manifest.yaml` contains a list of all the files of the test projects. This is used to copy the test projects to temporary folders when running tests, -to prevent tests accidentally using temporary files or interferring with each +to prevent tests accidentally using temporary files or interfering with each other. diff --git a/pkgs/native_assets_builder/test/data/wrong_namespace_asset/build.dart b/pkgs/native_assets_builder/test/data/wrong_namespace_asset/build.dart index 457aa902b..97feb7f4e 100644 --- a/pkgs/native_assets_builder/test/data/wrong_namespace_asset/build.dart +++ b/pkgs/native_assets_builder/test/data/wrong_namespace_asset/build.dart @@ -17,6 +17,7 @@ void main(List args) async { Target.current.os.dylibFileName('foo'), ), ), + type: AssetType.code, ), ], ); diff --git a/pkgs/native_assets_cli/example/native_add_library/pubspec_overrides.yaml b/pkgs/native_assets_cli/example/native_add_library/pubspec_overrides.yaml new file mode 100644 index 000000000..d66534656 --- /dev/null +++ b/pkgs/native_assets_cli/example/native_add_library/pubspec_overrides.yaml @@ -0,0 +1,5 @@ +dependency_overrides: + native_assets_cli: + path: ../.. + native_toolchain_c: + path: ../../../native_toolchain_c \ No newline at end of file diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index 616688f0b..23685ba77 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -194,12 +194,14 @@ class Asset { final String id; final Target target; final AssetPath path; + final AssetType type; Asset({ required this.id, required this.linkMode, required this.target, required this.path, + required this.type, }); factory Asset.fromYaml(YamlMap yamlMap) => Asset( @@ -207,6 +209,7 @@ class Asset { path: AssetPath.fromYaml(as(yamlMap[_pathKey])), target: Target.fromString(as(yamlMap[_targetKey])), linkMode: LinkMode.fromName(as(yamlMap[_linkModeKey])), + type: AssetType.fromName(as(yamlMap[_typeKey])), ); static List listFromYamlString(String yaml) { @@ -230,12 +233,14 @@ class Asset { String? id, Target? target, AssetPath? path, + AssetType? type, }) => Asset( id: id ?? this.id, linkMode: linkMode ?? this.linkMode, target: target ?? this.target, path: path ?? this.path, + type: type ?? this.type, ); @override @@ -246,17 +251,19 @@ class Asset { return other.id == id && other.linkMode == linkMode && other.target == target && - other.path == path; + other.path == path && + other.type == type; } @override - int get hashCode => Object.hash(id, linkMode, target, path); + int get hashCode => Object.hash(id, linkMode, target, path, type); Map toYaml() => { _idKey: id, _linkModeKey: linkMode.name, _pathKey: path.toYaml(), _targetKey: target.toString(), + _typeKey: type.name, }; Map> toDartConst() => { @@ -269,6 +276,7 @@ class Asset { static const _linkModeKey = 'link_mode'; static const _pathKey = 'path'; static const _targetKey = 'target'; + static const _typeKey = 'type'; Future exists() => path.exists(); @@ -276,6 +284,14 @@ class Asset { String toString() => 'Asset(${toYaml()})'; } +enum AssetType { + code, + data; + + static AssetType fromName(String name) => + AssetType.values.firstWhere((element) => element.name == name); +} + extension AssetIterable on Iterable { List toYaml() => [for (final item in this) item.toYaml()]; diff --git a/pkgs/native_assets_cli/lib/src/model/link_input.dart b/pkgs/native_assets_cli/lib/src/model/link_input.dart index 4760893fd..498a5970a 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_input.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_input.dart @@ -1,3 +1,7 @@ +import 'dart:io'; + +import 'package:cli_config/cli_config.dart'; + import 'build_config.dart'; import 'build_output.dart'; import 'resources.dart'; @@ -8,21 +12,34 @@ import 'resources.dart'; /// result of the build step [buildOutput], and the [resourceIdentifiers] /// generated during the kernel compilation. class LinkInput { - final BuildConfig buildConfig; final BuildOutput buildOutput; - final ResourceIdentifiers resourceIdentifiers; + final BuildConfig buildConfig; + final ResourceIdentifiers? resourceIdentifiers; LinkInput._({ - required this.buildConfig, required this.buildOutput, + required this.buildConfig, required this.resourceIdentifiers, }); /// Generate the [LinkInput] from the input arguments to the linking script. static Future fromArgs(List args) async { - final buildConfig = await BuildConfig.fromArgs(args); - final buildOutput = BuildOutput.fromYamlString(args); - final resourceIdentifiers = ResourceIdentifiers.fromFile(); + final config = await Config.fromArgs(args: args); + final buildOutputPath = config.string('build_output'); + final buildConfigPath = config.string('build_config'); + final resourceIdentifierPath = + config.optionalString('resource_identifiers'); + final buildConfig = BuildConfig.fromConfig(Config.fromConfigFileContents( + fileSourceUri: Uri.parse(buildConfigPath), + )); + final buildOutput = + BuildOutput.fromYamlString(File(buildOutputPath).readAsStringSync()); + + ResourceIdentifiers? resourceIdentifiers; + if (resourceIdentifierPath != null) { + resourceIdentifiers = + ResourceIdentifiers.fromFile(resourceIdentifierPath); + } return LinkInput._( buildConfig: buildConfig, buildOutput: buildOutput, diff --git a/pkgs/native_assets_cli/lib/src/model/resources.dart b/pkgs/native_assets_cli/lib/src/model/resources.dart index 86b71c194..fac795321 100644 --- a/pkgs/native_assets_cli/lib/src/model/resources.dart +++ b/pkgs/native_assets_cli/lib/src/model/resources.dart @@ -1,10 +1,16 @@ +import 'dart:convert'; + class ResourceIdentifiers { final List identifiers; ResourceIdentifiers({required this.identifiers}); - factory ResourceIdentifiers.fromFile() => - ResourceIdentifiers(identifiers: []); + factory ResourceIdentifiers.fromFile(String fileContents) => + ResourceIdentifiers( + identifiers: (jsonDecode(fileContents) as List) + .map((e) => e as Map) + .map(Identifier.fromJson) + .toList()); } class Identifier { @@ -32,7 +38,17 @@ class Identifier { @override String toString() => - 'Identifier(name: $name, id: $id, uri: $uri, nonConstant: $nonConstant, files: $files)'; + '''Identifier(name: $name, id: $id, uri: $uri, nonConstant: $nonConstant, files: $files)'''; + + factory Identifier.fromJson(Map map) => Identifier( + name: map['name'] as String, + id: map['id'] as String, + uri: map['uri'] as String, + nonConstant: map['nonConstant'] as bool, + files: List.from((map['files'] as List) + .map((e) => e as Map) + .map(ResourceFile.fromJson)), + ); } class ResourceFile { @@ -46,6 +62,13 @@ class ResourceFile { 'references': references.map((x) => x.toJson()).toList(), }; + factory ResourceFile.fromJson(Map map) => ResourceFile( + part: map['part'] as int, + references: List.from((map['files'] as List) + .map((e) => e as Map) + .map(ResourceReference.fromJson)), + ); + @override String toString() => 'ResourceFile(part: $part, references: $references)'; } @@ -74,5 +97,14 @@ class ResourceReference { @override String toString() => - 'ResourceReference(uri: $uri, line: $line, column: $column, arguments: $arguments)'; + '''ResourceReference(uri: $uri, line: $line, column: $column, arguments: $arguments)'''; + + factory ResourceReference.fromJson(Map map) => + ResourceReference( + uri: map['uri'] as String, + line: map['line'] as int, + column: map['column'] as int, + arguments: + Map.from(map['arguments'] as Map), + ); } diff --git a/pkgs/native_assets_cli/test/model/asset_test.dart b/pkgs/native_assets_cli/test/model/asset_test.dart index c9f2e9f80..e703616ee 100644 --- a/pkgs/native_assets_cli/test/model/asset_test.dart +++ b/pkgs/native_assets_cli/test/model/asset_test.dart @@ -18,42 +18,49 @@ void main() { path: AssetAbsolutePath(fooUri), target: Target.androidX64, linkMode: LinkMode.dynamic, + type: AssetType.code, ), Asset( id: 'foo2', path: AssetRelativePath(foo2Uri), target: Target.androidX64, linkMode: LinkMode.dynamic, + type: AssetType.code, ), Asset( id: 'foo3', path: AssetSystemPath(foo3Uri), target: Target.androidX64, linkMode: LinkMode.dynamic, + type: AssetType.code, ), Asset( id: 'foo4', path: AssetInExecutable(), target: Target.androidX64, linkMode: LinkMode.dynamic, + type: AssetType.code, ), Asset( id: 'foo5', path: AssetInProcess(), target: Target.androidX64, linkMode: LinkMode.dynamic, + type: AssetType.code, ), Asset( id: 'bar', path: AssetAbsolutePath(barUri), target: Target.linuxArm64, linkMode: LinkMode.static, + type: AssetType.code, ), Asset( id: 'bla', path: AssetAbsolutePath(blaUri), target: Target.windowsX64, linkMode: LinkMode.dynamic, + type: AssetType.code, ), ]; @@ -63,40 +70,47 @@ void main() { path_type: absolute uri: ${fooUri.toFilePath()} target: android_x64 + type: code - id: foo2 link_mode: dynamic path: path_type: relative uri: ${foo2Uri.toFilePath()} target: android_x64 + type: code - id: foo3 link_mode: dynamic path: path_type: system uri: ${foo3Uri.toFilePath()} target: android_x64 + type: code - id: foo4 link_mode: dynamic path: path_type: executable target: android_x64 + type: code - id: foo5 link_mode: dynamic path: path_type: process target: android_x64 + type: code - id: bar link_mode: static path: path_type: absolute uri: ${barUri.toFilePath()} target: linux_arm64 + type: code - id: bla link_mode: dynamic path: path_type: absolute uri: ${blaUri.toFilePath()} - target: windows_x64'''; + target: windows_x64 + type: code'''; final assetsDartEncoding = '''format-version: - 1 @@ -185,6 +199,7 @@ path: path_type: absolute uri: ${fooUri.toFilePath()} target: android_x64 +type: code ''' .trim()); }); diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index 0dc0bad27..8de724927 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -26,12 +26,14 @@ void main() { path: AssetAbsolutePath(Uri(path: 'path/to/libfoo.so')), target: Target.androidX64, linkMode: LinkMode.dynamic, + type: AssetType.code, ), Asset( id: 'foo2', path: AssetRelativePath(Uri(path: 'path/to/libfoo2.so')), target: Target.androidX64, linkMode: LinkMode.dynamic, + type: AssetType.code, ), ], dependencies: Dependencies([ @@ -50,12 +52,14 @@ assets: path_type: absolute uri: path/to/libfoo.so target: android_x64 + type: code - id: foo2 link_mode: dynamic path: path_type: relative uri: path/to/libfoo2.so target: android_x64 + type: code dependencies: - path/to/file.ext metadata: diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart index a0a199b0d..efd4ef46a 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart @@ -260,6 +260,7 @@ class CBuilder implements Builder { linkMode: linkMode, target: target, path: AssetAbsolutePath(libUri), + type: AssetType.code, )); } } diff --git a/pkgs/native_toolchain_c/pubspec_overrides.yaml b/pkgs/native_toolchain_c/pubspec_overrides.yaml new file mode 100644 index 000000000..e7c7bf8f4 --- /dev/null +++ b/pkgs/native_toolchain_c/pubspec_overrides.yaml @@ -0,0 +1,3 @@ +dependency_overrides: + native_assets_cli: + path: ../native_assets_cli \ No newline at end of file From 3025ce570651b7188fb1e17092f7b889f7c31e92 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 27 Nov 2023 14:44:25 +0100 Subject: [PATCH 003/187] Works now --- .../lib/src/build_runner/build_runner.dart | 41 ++++++++++------ .../lib/src/package_layout/build_type.dart | 11 ----- .../src/package_layout/package_layout.dart | 9 ++-- .../data/native_add_link_trivial/link.dart | 2 +- .../bin/native_add_app/data_asset_link.json | 3 ++ .../example/native_add_library/build.dart | 16 +++++- .../native_add_library/data_asset_build.json | 3 ++ .../native_add_library/data_asset_link.json | 3 ++ .../example/native_add_library/link.dart | 40 +++++++++++++++ .../lib/native_assets_cli.dart | 1 + .../lib/src/model/build_output.dart | 17 ++++--- .../lib/src/model/build_type.dart | 49 +++++++++++++++++++ .../lib/src/model/link_input.dart | 31 +++++++++--- pkgs/native_assets_cli/pubspec.yaml | 1 + .../test/model/build_output_test.dart | 5 +- 15 files changed, 183 insertions(+), 49 deletions(-) delete mode 100644 pkgs/native_assets_builder/lib/src/package_layout/build_type.dart create mode 100644 pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_link.json create mode 100644 pkgs/native_assets_cli/example/native_add_library/data_asset_build.json create mode 100644 pkgs/native_assets_cli/example/native_add_library/data_asset_link.json create mode 100644 pkgs/native_assets_cli/example/native_add_library/link.dart create mode 100644 pkgs/native_assets_cli/lib/src/model/build_type.dart diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index e616e708b..38cf52a94 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -9,7 +9,6 @@ import 'package:logging/logging.dart'; import 'package:native_assets_cli/native_assets_cli.dart'; import 'package:package_config/package_config.dart'; -import '../package_layout/build_type.dart'; import '../package_layout/package_layout.dart'; import '../utils/run_process.dart'; import 'build_planner.dart'; @@ -47,7 +46,7 @@ class NativeAssetsRunner { PackageLayout? packageLayout, }) async => _run( - buildType: BuildType.build, + buildType: BuildType(), linkModePreference: linkModePreference, target: target, workingDirectory: workingDirectory, @@ -71,7 +70,7 @@ class NativeAssetsRunner { Uri? resourceIdentifiers, }) async => _run( - buildType: BuildType.link, + buildType: LinkType(), linkModePreference: LinkModePreference.dynamic, target: target, workingDirectory: workingDirectory, @@ -81,11 +80,10 @@ class NativeAssetsRunner { targetAndroidNdkApi: targetAndroidNdkApi, includeParentEnvironment: includeParentEnvironment, packageLayout: packageLayout, - resourceIdentifiers: resourceIdentifiers, ); Future _run({ - required BuildType buildType, + required RunType buildType, required LinkModePreference linkModePreference, required Target target, required Uri workingDirectory, @@ -133,6 +131,7 @@ class NativeAssetsRunner { packageLayout.packageConfigUri, workingDirectory, includeParentEnvironment, + resourceIdentifiers, ); assets.addAll(buildOutput.assets); dependencies.addAll(buildOutput.dependencies.dependencies); @@ -177,11 +176,12 @@ class NativeAssetsRunner { buildParentDir: packageLayout.dartToolNativeAssetsBuilder, ); final (buildOutput, packageSuccess) = await _buildPackage( - BuildType.build, + BuildType(), config, packageLayout.packageConfigUri, workingDirectory, includeParentEnvironment, + null, ); assets.addAll(buildOutput.assets); success &= packageSuccess; @@ -190,11 +190,12 @@ class NativeAssetsRunner { } Future<_PackageBuildRecord> _runPackageCached( - BuildType buildType, + RunType buildType, BuildConfig config, Uri packageConfigUri, Uri workingDirectory, bool includeParentEnvironment, + Uri? resources, ) async { final packageName = config.packageName; final outDir = config.outDir; @@ -202,7 +203,10 @@ class NativeAssetsRunner { await Directory.fromUri(outDir).create(recursive: true); } - final buildOutput = await BuildOutput.readFromFile(outDir: outDir); + final buildOutput = await BuildOutput.readFromFile( + outDir: outDir, + buildType: buildType, + ); final lastBuilt = buildOutput?.timestamp.roundDownToSeconds() ?? DateTime.fromMillisecondsSinceEpoch(0); final dependencies = buildOutput?.dependencies; @@ -222,15 +226,17 @@ class NativeAssetsRunner { packageConfigUri, workingDirectory, includeParentEnvironment, + resources, ); } Future<_PackageBuildRecord> _buildPackage( - BuildType buildType, + RunType buildType, BuildConfig config, Uri packageConfigUri, Uri workingDirectory, bool includeParentEnvironment, + Uri? resources, ) async { final outDir = config.outDir; final configFile = outDir.resolve('../config.yaml'); @@ -238,7 +244,7 @@ class NativeAssetsRunner { final configFileContents = config.toYamlString(); logger.info('config.yaml contents: $configFileContents'); await File.fromUri(configFile).writeAsString(configFileContents); - final buildOutputFile = File.fromUri(outDir.resolve(BuildOutput.fileName)); + final buildOutputFile = File.fromUri(outDir.resolve(buildType.outputName)); if (await buildOutputFile.exists()) { // Ensure we'll never read outdated build results. await buildOutputFile.delete(); @@ -246,7 +252,11 @@ class NativeAssetsRunner { final arguments = [ '--packages=${packageConfigUri.toFilePath()}', script.toFilePath(), - '--config=${configFile.toFilePath()}', + ...buildType.args( + configFile, + outDir.resolve(BuildType().outputName), + resources, + ), ]; final result = await runProcess( workingDirectory: workingDirectory, @@ -267,7 +277,7 @@ class NativeAssetsRunner { logger.severe( ''' Building native assets for package:${config.packageName} failed. -build.dart returned with exit code: ${result.exitCode}. +${buildType.scriptName} returned with exit code: ${result.exitCode}. To reproduce run: $commandString stderr: @@ -280,7 +290,10 @@ ${result.stdout} } try { - final buildOutput = await BuildOutput.readFromFile(outDir: outDir); + final buildOutput = await BuildOutput.readFromFile( + outDir: outDir, + buildType: buildType, + ); success &= validateAssetsPackage(buildOutput?.assets ?? [], config.packageName); return (buildOutput ?? BuildOutput(), success); @@ -305,8 +318,6 @@ build_output.yaml contained a format error. return (BuildOutput(), false); } finally { if (!success) { - final buildOutputFile = - File.fromUri(outDir.resolve(BuildOutput.fileName)); if (await buildOutputFile.exists()) { await buildOutputFile.delete(); } diff --git a/pkgs/native_assets_builder/lib/src/package_layout/build_type.dart b/pkgs/native_assets_builder/lib/src/package_layout/build_type.dart deleted file mode 100644 index e4f69772f..000000000 --- a/pkgs/native_assets_builder/lib/src/package_layout/build_type.dart +++ /dev/null @@ -1,11 +0,0 @@ -/// The two types of scripts which are hooked into the compilation process. -/// -/// The [build] script runs before, and the [link] script after compilation. -enum BuildType { - build('build.dart'), - link('link.dart'); - - final String scriptName; - - const BuildType(this.scriptName); -} diff --git a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart index feaa0c5a9..ebad722ca 100644 --- a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart +++ b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart @@ -4,10 +4,9 @@ import 'dart:io'; +import 'package:native_assets_cli/native_assets_cli.dart'; import 'package:package_config/package_config.dart'; -import 'build_type.dart'; - /// Directory layout for dealing with native assets. /// /// Build scripts for native assets will be run from the context of another @@ -91,7 +90,7 @@ class PackageLayout { /// a `build.dart`. /// /// `package:native` itself is excluded. - Future> packagesWithNativeAssets(BuildType type) async { + Future> packagesWithNativeAssets(RunType type) async { final result = []; for (final package in packageConfig.packages) { final packageRoot = package.root; @@ -105,8 +104,8 @@ class PackageLayout { } late final Future> packagesWithNativeBuild = - packagesWithNativeAssets(BuildType.build); + packagesWithNativeAssets(BuildType()); late final Future> packagesWithNativeLink = - packagesWithNativeAssets(BuildType.link); + packagesWithNativeAssets(LinkType()); } diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/link.dart b/pkgs/native_assets_builder/test/data/native_add_link_trivial/link.dart index ac391dabd..cd52596d7 100644 --- a/pkgs/native_assets_builder/test/data/native_add_link_trivial/link.dart +++ b/pkgs/native_assets_builder/test/data/native_add_link_trivial/link.dart @@ -19,7 +19,7 @@ void main(List args) async { class MyResourceShaker { List shake( List assets, - ResourceIdentifiers resourceIdentifiers, + ResourceIdentifiers? resourceIdentifiers, ) => assets.skip(2).toList(); } diff --git a/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_link.json b/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_link.json new file mode 100644 index 000000000..5f3204ac3 --- /dev/null +++ b/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_link.json @@ -0,0 +1,3 @@ +{ + "freddy": "mercury" +} \ No newline at end of file diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart index ae39cdc1a..eecca552a 100644 --- a/pkgs/native_assets_cli/example/native_add_library/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -33,7 +33,21 @@ void main(List args) async { ..onRecord.listen((record) => print(record.message)), ); + buildOutput.assets.add( + Asset( + id: 'package:$packageName/ajsonfile', + linkMode: LinkMode.dynamic, + target: buildConfig.target, + path: AssetAbsolutePath(Uri.file( + '/home/mosum/projects/native/pkgs/native_assets_cli/example/native_add_library/data_asset_build.json')), + type: AssetType.data, + ), + ); + // Write the output according to the native assets protocol so that Dart or // Flutter can find the native assets produced by this script. - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile( + outDir: buildConfig.outDir, + buildType: BuildType(), + ); } diff --git a/pkgs/native_assets_cli/example/native_add_library/data_asset_build.json b/pkgs/native_assets_cli/example/native_add_library/data_asset_build.json new file mode 100644 index 000000000..31e035263 --- /dev/null +++ b/pkgs/native_assets_cli/example/native_add_library/data_asset_build.json @@ -0,0 +1,3 @@ +{ + "leroy": "jenkins" +} \ No newline at end of file diff --git a/pkgs/native_assets_cli/example/native_add_library/data_asset_link.json b/pkgs/native_assets_cli/example/native_add_library/data_asset_link.json new file mode 100644 index 000000000..5f3204ac3 --- /dev/null +++ b/pkgs/native_assets_cli/example/native_add_library/data_asset_link.json @@ -0,0 +1,3 @@ +{ + "freddy": "mercury" +} \ No newline at end of file diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart new file mode 100644 index 000000000..a2c3d436d --- /dev/null +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -0,0 +1,40 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:native_assets_cli/native_assets_cli.dart'; + +const packageName = 'native_add_library'; +void main(List args) async { + final linkInput = await LinkInput.fromArgs(args); + + final shakenAssets = MyResourceShaker().shake( + linkInput.buildOutput.assets, + linkInput.resourceIdentifiers, + ); + + shakenAssets.add( + Asset( + id: 'package:$packageName/ajsonfil2e', + linkMode: LinkMode.dynamic, + target: Target.androidArm, + path: AssetAbsolutePath(Uri.file( + '/home/mosum/projects/native/pkgs/native_assets_cli/example/native_add_library/data_asset_link.json')), + type: AssetType.data, + ), + ); + + final linkOutput = BuildOutput(assets: shakenAssets); + await linkOutput.writeToFile( + outDir: linkInput.buildConfig.outDir, + buildType: LinkType(), + ); +} + +class MyResourceShaker { + List shake( + List assets, + ResourceIdentifiers? resourceIdentifiers, + ) => + assets.where((element) => element.type != AssetType.data).toList(); +} diff --git a/pkgs/native_assets_cli/lib/native_assets_cli.dart b/pkgs/native_assets_cli/lib/native_assets_cli.dart index 150266e57..f321b6b3f 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli.dart @@ -10,6 +10,7 @@ export 'src/model/asset.dart'; export 'src/model/build_config.dart'; export 'src/model/build_mode.dart'; export 'src/model/build_output.dart'; +export 'src/model/build_type.dart'; export 'src/model/dependencies.dart'; export 'src/model/ios_sdk.dart'; export 'src/model/link_input.dart'; diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index 6f88407cc..a5862ac9a 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -13,6 +13,7 @@ import '../utils/file.dart'; import '../utils/map.dart'; import '../utils/yaml.dart'; import 'asset.dart'; +import 'build_type.dart'; import 'dependencies.dart'; import 'metadata.dart'; @@ -95,11 +96,12 @@ class BuildOutput { /// representation in the protocol. static Version version = Version(1, 0, 0); - static const fileName = 'build_output.yaml'; - /// Writes the YAML file from [outDir]/[fileName]. - static Future readFromFile({required Uri outDir}) async { - final buildOutputUri = outDir.resolve(fileName); + static Future readFromFile({ + required Uri outDir, + required RunType buildType, + }) async { + final buildOutputUri = outDir.resolve(buildType.outputName); final buildOutputFile = File.fromUri(buildOutputUri); if (!await buildOutputFile.exists()) { return null; @@ -108,8 +110,11 @@ class BuildOutput { } /// Writes the [toYamlString] to [outDir]/[fileName]. - Future writeToFile({required Uri outDir}) async { - final buildOutputUri = outDir.resolve(fileName); + Future writeToFile({ + required Uri outDir, + required RunType buildType, + }) async { + final buildOutputUri = outDir.resolve(buildType.outputName); await File.fromUri(buildOutputUri) .writeAsStringCreateDirectory(toYamlString()); } diff --git a/pkgs/native_assets_cli/lib/src/model/build_type.dart b/pkgs/native_assets_cli/lib/src/model/build_type.dart new file mode 100644 index 000000000..c7bd0c0cb --- /dev/null +++ b/pkgs/native_assets_cli/lib/src/model/build_type.dart @@ -0,0 +1,49 @@ +import 'link_input.dart'; + +/// The two types of scripts which are hooked into the compilation process. +/// +/// The [build] script runs before, and the [link] script after compilation. +// enum BuildType { +// build, +// link; + +// static RunType getType(BuildType type) => switch (type) { +// BuildType.build => const BuildType2(), +// BuildType.link => const LinkType(), +// }; +// } + +/// The two types of scripts which are hooked into the compilation process. +/// +/// The [build] script runs before, and the [link] script after compilation. +sealed class RunType { + String get scriptName; + String get outputName; + List args(Uri configFile, Uri buildOutput, Uri? resources); +} + +final class LinkType extends RunType { + @override + String get outputName => 'link_output.yaml'; + + @override + String get scriptName => 'link.dart'; + + @override + List args(Uri configFile, Uri buildOutput, Uri? resources) => + LinkInput.toArgs(buildOutput, configFile, resources); +} + +final class BuildType extends RunType { + @override + String get outputName => 'build_output.yaml'; + + @override + String get scriptName => 'build.dart'; + + @override + @override + List args(Uri configFile, Uri buildOutput, Uri? resources) => [ + '--config=${configFile.toFilePath()}', + ]; +} diff --git a/pkgs/native_assets_cli/lib/src/model/link_input.dart b/pkgs/native_assets_cli/lib/src/model/link_input.dart index 498a5970a..4410242ec 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_input.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_input.dart @@ -1,5 +1,6 @@ import 'dart:io'; +import 'package:args/args.dart'; import 'package:cli_config/cli_config.dart'; import 'build_config.dart'; @@ -24,26 +25,40 @@ class LinkInput { /// Generate the [LinkInput] from the input arguments to the linking script. static Future fromArgs(List args) async { - final config = await Config.fromArgs(args: args); - final buildOutputPath = config.string('build_output'); - final buildConfigPath = config.string('build_config'); - final resourceIdentifierPath = - config.optionalString('resource_identifiers'); - final buildConfig = BuildConfig.fromConfig(Config.fromConfigFileContents( - fileSourceUri: Uri.parse(buildConfigPath), - )); + final argParser = ArgParser() + ..addOption('build_output') + ..addOption('resource_identifiers') + ..addOption('config'); + + final results = argParser.parse(args); + final config = Config.fromConfigFileContents( + fileContents: File(results['config'] as String).readAsStringSync()); + final buildConfig = BuildConfig.fromConfig(config); + + final buildOutputPath = results['build_output'] as String; final buildOutput = BuildOutput.fromYamlString(File(buildOutputPath).readAsStringSync()); + final resourceIdentifierPath = results['resource_identifiers'] as String?; ResourceIdentifiers? resourceIdentifiers; if (resourceIdentifierPath != null) { resourceIdentifiers = ResourceIdentifiers.fromFile(resourceIdentifierPath); } + return LinkInput._( buildConfig: buildConfig, buildOutput: buildOutput, resourceIdentifiers: resourceIdentifiers, ); } + + static List toArgs( + Uri buildOutput, Uri buildConfig, Uri? resources) => + [ + '--config=${buildConfig.toFilePath()}', + '--build_output=${buildOutput.toFilePath()}', + if (resources != null) + '--resource_identifiers=${resources.toFilePath()}', + ]; } diff --git a/pkgs/native_assets_cli/pubspec.yaml b/pkgs/native_assets_cli/pubspec.yaml index 3b0a1fd92..074e1948e 100644 --- a/pkgs/native_assets_cli/pubspec.yaml +++ b/pkgs/native_assets_cli/pubspec.yaml @@ -16,6 +16,7 @@ environment: sdk: '>=3.0.0 <4.0.0' dependencies: + args: ^2.4.2 cli_config: ^0.1.1 collection: ^1.17.1 crypto: ^3.0.3 diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index 8de724927..989b9a1ac 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -88,8 +88,9 @@ version: ${BuildOutput.version}'''; test('BuildOutput.readFromFile BuildOutput.writeToFile', () async { final outDir = tempUri.resolve('out_dir/'); - await buildOutput.writeToFile(outDir: outDir); - final buildOutput2 = await BuildOutput.readFromFile(outDir: outDir); + await buildOutput.writeToFile(outDir: outDir, buildType: BuildType()); + final buildOutput2 = + await BuildOutput.readFromFile(outDir: outDir, buildType: BuildType()); expect(buildOutput2, buildOutput); }); From 4f779862f16d070f453845248a5a9338f99c3cae Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 27 Nov 2023 15:56:11 +0100 Subject: [PATCH 004/187] Start writing tests --- .../lib/src/build_runner/build_runner.dart | 4 +- .../test/build_runner/helpers.dart | 38 ++++++++++++++++ .../test/build_runner/link_test.dart | 44 +++++++++++++++++++ .../test/data/manifest.yaml | 2 + .../data/native_add_link_trivial/build.dart | 31 ------------- .../data/native_add_link_trivial/ffigen.yaml | 20 --------- .../lib/src/native_add.dart | 7 --- .../src/native_add_bindings_generated.dart | 15 ------- .../native_add_link_trivial/src/native_add.c | 9 ---- .../native_add_link_trivial/src/native_add.h | 13 ------ .../test/native_add_test.dart | 13 ------ .../test/data/simple_link/build.dart | 28 ++++++++++++ .../test/data/simple_link/data_0.json | 0 .../test/data/simple_link/data_1.json | 0 .../test/data/simple_link/data_2.json | 0 .../test/data/simple_link/data_3.json | 0 .../lib/simple_link.dart} | 2 +- .../link.dart | 5 ++- .../pubspec.yaml | 8 ++-- .../example/native_add_library/build.dart | 2 +- .../example/native_add_library/link.dart | 2 +- .../lib/src/model/build_output.dart | 8 ++-- .../test/model/build_output_test.dart | 4 +- 23 files changed, 130 insertions(+), 125 deletions(-) create mode 100644 pkgs/native_assets_builder/test/build_runner/link_test.dart delete mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/build.dart delete mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/ffigen.yaml delete mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add.dart delete mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add_bindings_generated.dart delete mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.c delete mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.h delete mode 100644 pkgs/native_assets_builder/test/data/native_add_link_trivial/test/native_add_test.dart create mode 100644 pkgs/native_assets_builder/test/data/simple_link/build.dart create mode 100644 pkgs/native_assets_builder/test/data/simple_link/data_0.json create mode 100644 pkgs/native_assets_builder/test/data/simple_link/data_1.json create mode 100644 pkgs/native_assets_builder/test/data/simple_link/data_2.json create mode 100644 pkgs/native_assets_builder/test/data/simple_link/data_3.json rename pkgs/native_assets_builder/test/data/{native_add_link_trivial/lib/native_add.dart => simple_link/lib/simple_link.dart} (87%) rename pkgs/native_assets_builder/test/data/{native_add_link_trivial => simple_link}/link.dart (87%) rename pkgs/native_assets_builder/test/data/{native_add_link_trivial => simple_link}/pubspec.yaml (66%) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 38cf52a94..696ab99d5 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -205,7 +205,7 @@ class NativeAssetsRunner { final buildOutput = await BuildOutput.readFromFile( outDir: outDir, - buildType: buildType, + type: buildType, ); final lastBuilt = buildOutput?.timestamp.roundDownToSeconds() ?? DateTime.fromMillisecondsSinceEpoch(0); @@ -292,7 +292,7 @@ ${result.stdout} try { final buildOutput = await BuildOutput.readFromFile( outDir: outDir, - buildType: buildType, + type: buildType, ); success &= validateAssetsPackage(buildOutput?.assets ?? [], config.packageName); diff --git a/pkgs/native_assets_builder/test/build_runner/helpers.dart b/pkgs/native_assets_builder/test/build_runner/helpers.dart index b425e808f..de027834c 100644 --- a/pkgs/native_assets_builder/test/build_runner/helpers.dart +++ b/pkgs/native_assets_builder/test/build_runner/helpers.dart @@ -69,6 +69,44 @@ Future build( return result; } +Future link( + Uri packageUri, + Logger logger, + Uri dartExecutable, { + LinkModePreference linkModePreference = LinkModePreference.dynamic, + CCompilerConfig? cCompilerConfig, + bool includeParentEnvironment = true, + List? capturedLogs, + PackageLayout? packageLayout, +}) async { + StreamSubscription? subscription; + if (capturedLogs != null) { + subscription = + logger.onRecord.listen((event) => capturedLogs.add(event.message)); + } + + final result = await NativeAssetsRunner( + logger: logger, + dartExecutable: dartExecutable, + ).link( + buildMode: BuildMode.release, + target: Target.current, + workingDirectory: packageUri, + cCompilerConfig: cCompilerConfig, + includeParentEnvironment: includeParentEnvironment, + packageLayout: packageLayout, + ); + if (result.success) { + await expectAssetsExist(result.assets); + } + + if (subscription != null) { + await subscription.cancel(); + } + + return result; +} + Future dryRun( Uri packageUri, Logger logger, diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart new file mode 100644 index 000000000..313ae0234 --- /dev/null +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -0,0 +1,44 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:test/test.dart'; + +import '../helpers.dart'; +import 'helpers.dart'; + +const Timeout longTimeout = Timeout(Duration(minutes: 5)); + +void main() async { + test('simple_link linking', timeout: longTimeout, () async { + await inTempDir((tempUri) async { + await copyTestProjects(targetUri: tempUri); + final packageUri = tempUri.resolve('simple_link/'); + + // First, run `pub get`, we need pub to resolve our dependencies. + await runPubGet( + workingDirectory: packageUri, + logger: logger, + ); + + // Trigger a build, should invoke build for libraries with native assets. + { + final logMessages = []; + final buildResult = await build( + packageUri, + logger, + dartExecutable, + capturedLogs: logMessages, + ); + final linkResult = await link( + packageUri, + logger, + dartExecutable, + capturedLogs: logMessages, + ); + expect(buildResult.assets.length, 4); + expect(linkResult.assets.length, 2); + } + }); + }); +} diff --git a/pkgs/native_assets_builder/test/data/manifest.yaml b/pkgs/native_assets_builder/test/data/manifest.yaml index c52f500bd..c24774a33 100644 --- a/pkgs/native_assets_builder/test/data/manifest.yaml +++ b/pkgs/native_assets_builder/test/data/manifest.yaml @@ -27,6 +27,8 @@ - package_reading_metadata/pubspec.yaml - package_with_metadata/build.dart - package_with_metadata/pubspec.yaml +- simple_link/pubspec.yaml +- simple_link/build.dart - wrong_build_output/build.dart - wrong_build_output/pubspec.yaml - wrong_build_output_2/build.dart diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/build.dart b/pkgs/native_assets_builder/test/data/native_add_link_trivial/build.dart deleted file mode 100644 index 69bbb9ede..000000000 --- a/pkgs/native_assets_builder/test/data/native_add_link_trivial/build.dart +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:logging/logging.dart'; -import 'package:native_assets_cli/native_assets_cli.dart'; -import 'package:native_toolchain_c/native_toolchain_c.dart'; - -const packageName = 'native_add'; - -void main(List args) async { - final buildConfig = await BuildConfig.fromArgs(args); - final buildOutput = BuildOutput(); - final cbuilder = CBuilder.library( - name: packageName, - assetId: 'package:$packageName/src/${packageName}_bindings_generated.dart', - sources: [ - 'src/$packageName.c', - ], - ); - await cbuilder.run( - buildConfig: buildConfig, - buildOutput: buildOutput, - logger: Logger('') - ..level = Level.ALL - ..onRecord.listen((record) { - print('${record.level.name}: ${record.time}: ${record.message}'); - }), - ); - await buildOutput.writeToFile(outDir: buildConfig.outDir); -} diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/ffigen.yaml b/pkgs/native_assets_builder/test/data/native_add_link_trivial/ffigen.yaml deleted file mode 100644 index b8716bd2d..000000000 --- a/pkgs/native_assets_builder/test/data/native_add_link_trivial/ffigen.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Run with `flutter pub run ffigen --config ffigen.yaml`. -name: NativeAddBindings -description: | - Bindings for `src/native_add.h`. - - Regenerate bindings with `flutter pub run ffigen --config ffigen.yaml`. -output: "lib/src/native_add_bindings_generated.dart" -headers: - entry-points: - - "src/native_add.h" - include-directives: - - "src/native_add.h" -preamble: | - // Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file - // for details. All rights reserved. Use of this source code is governed by a - // BSD-style license that can be found in the LICENSE file. -comments: - style: any - length: full -ffi-native: diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add.dart b/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add.dart deleted file mode 100644 index 9c8a43b9e..000000000 --- a/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add.dart +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'native_add_bindings_generated.dart' as bindings; - -int add(int a, int b) => bindings.add(a, b); diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add_bindings_generated.dart b/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add_bindings_generated.dart deleted file mode 100644 index 4d1e803aa..000000000 --- a/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/src/native_add_bindings_generated.dart +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -// AUTO GENERATED FILE, DO NOT EDIT. -// -// Generated by `package:ffigen`. -// ignore_for_file: type=lint -import 'dart:ffi' as ffi; - -@ffi.Native(symbol: 'add') -external int add( - int a, - int b, -); diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.c b/pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.c deleted file mode 100644 index cf21076d1..000000000 --- a/pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.c +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -#include "native_add.h" - -int32_t add(int32_t a, int32_t b) { - return a + b; -} diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.h b/pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.h deleted file mode 100644 index 5824f98a7..000000000 --- a/pkgs/native_assets_builder/test/data/native_add_link_trivial/src/native_add.h +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -#include - -#if _WIN32 -#define MYLIB_EXPORT __declspec(dllexport) -#else -#define MYLIB_EXPORT -#endif - -MYLIB_EXPORT int32_t add(int32_t a, int32_t b); diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/test/native_add_test.dart b/pkgs/native_assets_builder/test/data/native_add_link_trivial/test/native_add_test.dart deleted file mode 100644 index 7531a6209..000000000 --- a/pkgs/native_assets_builder/test/data/native_add_link_trivial/test/native_add_test.dart +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:native_add/native_add.dart'; -import 'package:test/test.dart'; - -void main() { - test('native add test', () { - final result = add(4, 6); - expect(result, equals(10)); - }); -} diff --git a/pkgs/native_assets_builder/test/data/simple_link/build.dart b/pkgs/native_assets_builder/test/data/simple_link/build.dart new file mode 100644 index 000000000..e03bef2f7 --- /dev/null +++ b/pkgs/native_assets_builder/test/data/simple_link/build.dart @@ -0,0 +1,28 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:io'; + +import 'package:native_assets_cli/native_assets_cli.dart'; + +const packageName = 'native_add'; + +void main(List args) async { + final buildConfig = await BuildConfig.fromArgs(args); + final buildOutput = BuildOutput( + assets: List.generate( + 4, + (index) { + final filename = 'data_$index.json'; + return Asset( + id: 'package:$packageName/$filename', + linkMode: LinkMode.dynamic, + target: buildConfig.target, + path: AssetAbsolutePath(Uri.file(File(filename).absolute.path)), + type: AssetType.data, + ); + }, + )); + await buildOutput.writeToFile(outDir: buildConfig.outDir, type: BuildType()); +} diff --git a/pkgs/native_assets_builder/test/data/simple_link/data_0.json b/pkgs/native_assets_builder/test/data/simple_link/data_0.json new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/native_assets_builder/test/data/simple_link/data_1.json b/pkgs/native_assets_builder/test/data/simple_link/data_1.json new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/native_assets_builder/test/data/simple_link/data_2.json b/pkgs/native_assets_builder/test/data/simple_link/data_2.json new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/native_assets_builder/test/data/simple_link/data_3.json b/pkgs/native_assets_builder/test/data/simple_link/data_3.json new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/native_add.dart b/pkgs/native_assets_builder/test/data/simple_link/lib/simple_link.dart similarity index 87% rename from pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/native_add.dart rename to pkgs/native_assets_builder/test/data/simple_link/lib/simple_link.dart index 9eda681ab..88e2a1bd6 100644 --- a/pkgs/native_assets_builder/test/data/native_add_link_trivial/lib/native_add.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/lib/simple_link.dart @@ -2,4 +2,4 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -export 'src/native_add.dart'; +class SimpleClass {} diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/link.dart b/pkgs/native_assets_builder/test/data/simple_link/link.dart similarity index 87% rename from pkgs/native_assets_builder/test/data/native_add_link_trivial/link.dart rename to pkgs/native_assets_builder/test/data/simple_link/link.dart index cd52596d7..fdc215409 100644 --- a/pkgs/native_assets_builder/test/data/native_add_link_trivial/link.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/link.dart @@ -13,7 +13,10 @@ void main(List args) async { ); final linkOutput = BuildOutput(assets: shakenAssets); - await linkOutput.writeToFile(outDir: linkInput.buildConfig.outDir); + await linkOutput.writeToFile( + outDir: linkInput.buildConfig.outDir, + type: LinkType(), + ); } class MyResourceShaker { diff --git a/pkgs/native_assets_builder/test/data/native_add_link_trivial/pubspec.yaml b/pkgs/native_assets_builder/test/data/simple_link/pubspec.yaml similarity index 66% rename from pkgs/native_assets_builder/test/data/native_add_link_trivial/pubspec.yaml rename to pkgs/native_assets_builder/test/data/simple_link/pubspec.yaml index bfdd48d2e..fcabb128b 100644 --- a/pkgs/native_assets_builder/test/data/native_add_link_trivial/pubspec.yaml +++ b/pkgs/native_assets_builder/test/data/simple_link/pubspec.yaml @@ -1,4 +1,4 @@ -name: native_add +name: simple_link description: Sums two numbers with native code. version: 0.1.0 @@ -10,10 +10,8 @@ environment: dependencies: cli_config: ^0.1.1 logging: ^1.1.1 - native_assets_cli: ^0.2.0 - native_toolchain_c: ^0.2.0 + native_assets_cli: ^0.3.2 dev_dependencies: - ffigen: ^8.0.2 - lints: ^2.0.0 + lints: ^3.0.0 test: ^1.23.1 diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart index eecca552a..bac02809e 100644 --- a/pkgs/native_assets_cli/example/native_add_library/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -48,6 +48,6 @@ void main(List args) async { // Flutter can find the native assets produced by this script. await buildOutput.writeToFile( outDir: buildConfig.outDir, - buildType: BuildType(), + type: BuildType(), ); } diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index a2c3d436d..3b068b3b5 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -27,7 +27,7 @@ void main(List args) async { final linkOutput = BuildOutput(assets: shakenAssets); await linkOutput.writeToFile( outDir: linkInput.buildConfig.outDir, - buildType: LinkType(), + type: LinkType(), ); } diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index a5862ac9a..8d71db4dd 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -99,9 +99,9 @@ class BuildOutput { /// Writes the YAML file from [outDir]/[fileName]. static Future readFromFile({ required Uri outDir, - required RunType buildType, + required RunType type, }) async { - final buildOutputUri = outDir.resolve(buildType.outputName); + final buildOutputUri = outDir.resolve(type.outputName); final buildOutputFile = File.fromUri(buildOutputUri); if (!await buildOutputFile.exists()) { return null; @@ -112,9 +112,9 @@ class BuildOutput { /// Writes the [toYamlString] to [outDir]/[fileName]. Future writeToFile({ required Uri outDir, - required RunType buildType, + required RunType type, }) async { - final buildOutputUri = outDir.resolve(buildType.outputName); + final buildOutputUri = outDir.resolve(type.outputName); await File.fromUri(buildOutputUri) .writeAsStringCreateDirectory(toYamlString()); } diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index 989b9a1ac..962b048e3 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -88,9 +88,9 @@ version: ${BuildOutput.version}'''; test('BuildOutput.readFromFile BuildOutput.writeToFile', () async { final outDir = tempUri.resolve('out_dir/'); - await buildOutput.writeToFile(outDir: outDir, buildType: BuildType()); + await buildOutput.writeToFile(outDir: outDir, type: BuildType()); final buildOutput2 = - await BuildOutput.readFromFile(outDir: outDir, buildType: BuildType()); + await BuildOutput.readFromFile(outDir: outDir, type: BuildType()); expect(buildOutput2, buildOutput); }); From f5aef8322878170723b0efffc89d0e1c8f214c29 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 27 Nov 2023 16:29:47 +0100 Subject: [PATCH 005/187] Fixing test --- pkgs/native_assets_builder/test/build_runner/helpers.dart | 5 +++-- pkgs/native_assets_builder/test/build_runner/link_test.dart | 1 + .../test/data/simple_link/{lib => bin}/simple_link.dart | 4 +++- pkgs/native_assets_builder/test/data/simple_link/build.dart | 3 ++- pkgs/native_assets_builder/test/data/simple_link/link.dart | 1 + 5 files changed, 10 insertions(+), 4 deletions(-) rename pkgs/native_assets_builder/test/data/simple_link/{lib => bin}/simple_link.dart (86%) diff --git a/pkgs/native_assets_builder/test/build_runner/helpers.dart b/pkgs/native_assets_builder/test/build_runner/helpers.dart index de027834c..6a3837e9e 100644 --- a/pkgs/native_assets_builder/test/build_runner/helpers.dart +++ b/pkgs/native_assets_builder/test/build_runner/helpers.dart @@ -39,6 +39,7 @@ Future build( bool includeParentEnvironment = true, List? capturedLogs, PackageLayout? packageLayout, + bool copyAssets = true, }) async { StreamSubscription? subscription; if (capturedLogs != null) { @@ -58,7 +59,7 @@ Future build( includeParentEnvironment: includeParentEnvironment, packageLayout: packageLayout, ); - if (result.success) { + if (result.success && copyAssets) { await expectAssetsExist(result.assets); } @@ -84,7 +85,6 @@ Future link( subscription = logger.onRecord.listen((event) => capturedLogs.add(event.message)); } - final result = await NativeAssetsRunner( logger: logger, dartExecutable: dartExecutable, @@ -96,6 +96,7 @@ Future link( includeParentEnvironment: includeParentEnvironment, packageLayout: packageLayout, ); + capturedLogs?.add('ASSETS: ${result.assets}'); if (result.success) { await expectAssetsExist(result.assets); } diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart index 313ae0234..84fad808e 100644 --- a/pkgs/native_assets_builder/test/build_runner/link_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -29,6 +29,7 @@ void main() async { logger, dartExecutable, capturedLogs: logMessages, + copyAssets: false, ); final linkResult = await link( packageUri, diff --git a/pkgs/native_assets_builder/test/data/simple_link/lib/simple_link.dart b/pkgs/native_assets_builder/test/data/simple_link/bin/simple_link.dart similarity index 86% rename from pkgs/native_assets_builder/test/data/simple_link/lib/simple_link.dart rename to pkgs/native_assets_builder/test/data/simple_link/bin/simple_link.dart index 88e2a1bd6..8adceb64b 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/lib/simple_link.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/bin/simple_link.dart @@ -2,4 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -class SimpleClass {} +void main() { + print('Tada!'); +} diff --git a/pkgs/native_assets_builder/test/data/simple_link/build.dart b/pkgs/native_assets_builder/test/data/simple_link/build.dart index e03bef2f7..d7e34995d 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/build.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/build.dart @@ -6,9 +6,10 @@ import 'dart:io'; import 'package:native_assets_cli/native_assets_cli.dart'; -const packageName = 'native_add'; +const packageName = 'simple_link'; void main(List args) async { + print('RUN BUILDING'); final buildConfig = await BuildConfig.fromArgs(args); final buildOutput = BuildOutput( assets: List.generate( diff --git a/pkgs/native_assets_builder/test/data/simple_link/link.dart b/pkgs/native_assets_builder/test/data/simple_link/link.dart index fdc215409..e124c449b 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/link.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/link.dart @@ -5,6 +5,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { + print('RUN LINKING'); final linkInput = await LinkInput.fromArgs(args); final shakenAssets = MyResourceShaker().shake( From ed23630df0ca1fef0a9ccf0b654c3798b8ab97db Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 29 Nov 2023 10:17:17 +0100 Subject: [PATCH 006/187] Fix merge errors --- .../lib/src/build_runner/build_planner.dart | 10 +++++----- .../test/build_runner/build_planner_test.dart | 5 +++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart index 1f2e8d232..e3b2b72cc 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart @@ -50,11 +50,11 @@ class NativeAssetsPlanner { (List packages, bool success) plan({ String? runPackageName, }) { - final PackageGraph packageGraph; + final DependencyGraph dependencyGraph; if (runPackageName != null) { - packageGraph = this.packageGraph.subGraph(runPackageName); + dependencyGraph = this.dependencyGraph.subGraph(runPackageName); } else { - packageGraph = this.packageGraph; + dependencyGraph = this.dependencyGraph; } final packageMap = { for (final package in packagesWithNativeAssets) package.name: package @@ -118,12 +118,12 @@ class DependencyGraph { List> computeStrongComponents() => graphs.stronglyConnectedComponents(vertices, neighborsOf); - PackageGraph subGraph(String rootPackageName) { + DependencyGraph subGraph(String rootPackageName) { final subgraphVertices = [ ...graphs.transitiveClosure(vertices, neighborsOf)[rootPackageName]!, rootPackageName, ]; - return PackageGraph({ + return DependencyGraph({ for (final vertex in map.keys) if (subgraphVertices.contains(vertex)) vertex: [ diff --git a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart index 11c59b260..8bcebbaab 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart @@ -6,6 +6,7 @@ import 'dart:io'; import 'package:native_assets_builder/native_assets_builder.dart'; import 'package:native_assets_builder/src/build_runner/build_planner.dart'; +import 'package:native_assets_cli/native_assets_cli.dart'; import 'package:test/test.dart'; import '../helpers.dart'; @@ -87,9 +88,9 @@ void main() async { final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = - await packageLayout.packagesWithNativeAssets; + await packageLayout.packagesWithNativeAssets(BuildType()); final nativeAssetsBuildPlanner = - await NativeAssetsBuildPlanner.fromRootPackageRoot( + await NativeAssetsPlanner.fromRootPackageRoot( rootPackageRoot: nativeAddUri, packagesWithNativeAssets: packagesWithNativeAssets, dartExecutable: Uri.file(Platform.resolvedExecutable), From 470e356ccaf007a3c7fe203ff3da423b2083974d Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 29 Nov 2023 10:59:04 +0100 Subject: [PATCH 007/187] Fix issues --- .../lib/src/model/build_output.dart | 4 ++-- .../lib/src/model/build_type.dart | 16 ++-------------- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index 8d71db4dd..5b85bcdd3 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -96,7 +96,7 @@ class BuildOutput { /// representation in the protocol. static Version version = Version(1, 0, 0); - /// Writes the YAML file from [outDir]/[fileName]. + /// Writes the YAML file from [outDir]/[type]. static Future readFromFile({ required Uri outDir, required RunType type, @@ -109,7 +109,7 @@ class BuildOutput { return BuildOutput.fromYamlString(await buildOutputFile.readAsString()); } - /// Writes the [toYamlString] to [outDir]/[fileName]. + /// Writes the [toYamlString] to [outDir]/[type]. Future writeToFile({ required Uri outDir, required RunType type, diff --git a/pkgs/native_assets_cli/lib/src/model/build_type.dart b/pkgs/native_assets_cli/lib/src/model/build_type.dart index c7bd0c0cb..3109ce243 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_type.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_type.dart @@ -2,20 +2,8 @@ import 'link_input.dart'; /// The two types of scripts which are hooked into the compilation process. /// -/// The [build] script runs before, and the [link] script after compilation. -// enum BuildType { -// build, -// link; - -// static RunType getType(BuildType type) => switch (type) { -// BuildType.build => const BuildType2(), -// BuildType.link => const LinkType(), -// }; -// } - -/// The two types of scripts which are hooked into the compilation process. -/// -/// The [build] script runs before, and the [link] script after compilation. +/// The `build.dart` script runs before, and the `link.dart` script after +/// compilation. sealed class RunType { String get scriptName; String get outputName; From ded78fffd4f8674ec090dfbf4556c86eeca7505f Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 29 Nov 2023 13:46:00 +0100 Subject: [PATCH 008/187] Fix path --- .../example/native_add_library/build.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart index bac02809e..cad341639 100644 --- a/pkgs/native_assets_cli/example/native_add_library/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -2,6 +2,8 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'dart:io'; + import 'package:logging/logging.dart'; import 'package:native_assets_cli/native_assets_cli.dart'; import 'package:native_toolchain_c/native_toolchain_c.dart'; @@ -38,8 +40,10 @@ void main(List args) async { id: 'package:$packageName/ajsonfile', linkMode: LinkMode.dynamic, target: buildConfig.target, - path: AssetAbsolutePath(Uri.file( - '/home/mosum/projects/native/pkgs/native_assets_cli/example/native_add_library/data_asset_build.json')), + path: AssetAbsolutePath(File( + 'native/pkgs/native_assets_cli/example/native_add_library/data_asset_build.json') + .absolute + .uri), type: AssetType.data, ), ); From 5ff082f161f0fbe7a1f7b85107eedcb3c934621b Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 29 Nov 2023 14:08:39 +0100 Subject: [PATCH 009/187] Fix paths --- pkgs/native_assets_cli/example/native_add_library/build.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart index cad341639..46723a6c3 100644 --- a/pkgs/native_assets_cli/example/native_add_library/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -41,7 +41,7 @@ void main(List args) async { linkMode: LinkMode.dynamic, target: buildConfig.target, path: AssetAbsolutePath(File( - 'native/pkgs/native_assets_cli/example/native_add_library/data_asset_build.json') + 'pkgs/native_assets_cli/example/native_add_library/data_asset_build.json') .absolute .uri), type: AssetType.data, From 4755b64b26fcd84187118cf0fad0359f70fead01 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 29 Nov 2023 14:27:18 +0100 Subject: [PATCH 010/187] Fix paths --- .../example/native_add_library/build.dart | 9 ++------- .../example/native_add_library/link.dart | 5 +++-- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart index 46723a6c3..017526a32 100644 --- a/pkgs/native_assets_cli/example/native_add_library/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -2,8 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'dart:io'; - import 'package:logging/logging.dart'; import 'package:native_assets_cli/native_assets_cli.dart'; import 'package:native_toolchain_c/native_toolchain_c.dart'; @@ -34,16 +32,13 @@ void main(List args) async { ..level = Level.ALL ..onRecord.listen((record) => print(record.message)), ); - buildOutput.assets.add( Asset( id: 'package:$packageName/ajsonfile', linkMode: LinkMode.dynamic, target: buildConfig.target, - path: AssetAbsolutePath(File( - 'pkgs/native_assets_cli/example/native_add_library/data_asset_build.json') - .absolute - .uri), + path: AssetAbsolutePath( + buildConfig.packageRoot.resolve('data_asset_build.json')), type: AssetType.data, ), ); diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index 3b068b3b5..c6d6ad484 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -7,6 +7,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; const packageName = 'native_add_library'; void main(List args) async { final linkInput = await LinkInput.fromArgs(args); + final buildConfig = await BuildConfig.fromArgs(args); final shakenAssets = MyResourceShaker().shake( linkInput.buildOutput.assets, @@ -18,8 +19,8 @@ void main(List args) async { id: 'package:$packageName/ajsonfil2e', linkMode: LinkMode.dynamic, target: Target.androidArm, - path: AssetAbsolutePath(Uri.file( - '/home/mosum/projects/native/pkgs/native_assets_cli/example/native_add_library/data_asset_link.json')), + path: AssetAbsolutePath( + buildConfig.packageRoot.resolve('data_asset_link.json')), type: AssetType.data, ), ); From b376ae1e29981f3b4de6f1a84869314161dbd657 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 29 Nov 2023 16:14:39 +0100 Subject: [PATCH 011/187] Rename asset --- pkgs/native_assets_cli/example/native_add_library/link.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index c6d6ad484..f3ffb4269 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -16,7 +16,7 @@ void main(List args) async { shakenAssets.add( Asset( - id: 'package:$packageName/ajsonfil2e', + id: 'package:$packageName/a_json_file', linkMode: LinkMode.dynamic, target: Target.androidArm, path: AssetAbsolutePath( From 5c205b7c0ca757eed00900d04b10aa6d836be005 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 29 Nov 2023 16:15:50 +0100 Subject: [PATCH 012/187] Format --- pkgs/native_assets_cli/example/native_add_library/link.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index f3ffb4269..c72816bf1 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -20,7 +20,8 @@ void main(List args) async { linkMode: LinkMode.dynamic, target: Target.androidArm, path: AssetAbsolutePath( - buildConfig.packageRoot.resolve('data_asset_link.json')), + buildConfig.packageRoot.resolve('data_asset_link.json'), + ), type: AssetType.data, ), ); @@ -37,5 +38,5 @@ class MyResourceShaker { List assets, ResourceIdentifiers? resourceIdentifiers, ) => - assets.where((element) => element.type != AssetType.data).toList(); + assets.where((asset) => asset.type != AssetType.data).toList(); } From 30e639fce88f32a9a815b3d4ddeea8ad6866bd96 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 29 Nov 2023 16:22:18 +0100 Subject: [PATCH 013/187] Add buildType --- .../lib/src/build_runner/build_runner.dart | 32 +++++++++---------- .../src/package_layout/package_layout.dart | 8 ++--- .../test/build_runner/build_planner_test.dart | 2 +- .../package_reading_metadata/pubspec.yaml | 1 + .../example/native_add_library/build.dart | 2 +- .../example/native_add_library/link.dart | 2 +- .../lib/src/model/asset.dart | 3 ++ .../lib/src/model/build_output.dart | 12 +++---- .../lib/src/model/build_type.dart | 12 +++++-- .../test/model/build_output_test.dart | 4 +-- 10 files changed, 44 insertions(+), 34 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 24eb285db..63ad4e2d5 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -48,7 +48,7 @@ class NativeAssetsRunner { String? runPackageName, }) async => _run( - buildType: BuildType(), + buildStep: const BuildStep(), linkModePreference: linkModePreference, target: target, workingDirectory: workingDirectory, @@ -74,7 +74,7 @@ class NativeAssetsRunner { String? runPackageName, }) async => _run( - buildType: LinkType(), + buildStep: const LinkStep(), linkModePreference: LinkModePreference.dynamic, target: target, workingDirectory: workingDirectory, @@ -88,7 +88,7 @@ class NativeAssetsRunner { ); Future _run({ - required RunType buildType, + required RunStep buildStep, required LinkModePreference linkModePreference, required Target target, required Uri workingDirectory, @@ -103,7 +103,7 @@ class NativeAssetsRunner { }) async { packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); final packagesWithBuild = - await packageLayout.packagesWithNativeAssets(buildType); + await packageLayout.packagesWithNativeAssets(buildStep); final (packages, dependencyGraph, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName); if (!planSuccess) { @@ -132,7 +132,7 @@ class NativeAssetsRunner { targetAndroidNdkApi: targetAndroidNdkApi, ); final (buildOutput, packageSuccess) = await _runPackageCached( - buildType, + buildStep, config, packageLayout.packageConfigUri, workingDirectory, @@ -187,7 +187,7 @@ class NativeAssetsRunner { buildParentDir: packageLayout.dartToolNativeAssetsBuilder, ); final (buildOutput, packageSuccess) = await _buildPackage( - BuildType(), + const BuildStep(), config, packageLayout.packageConfigUri, workingDirectory, @@ -201,7 +201,7 @@ class NativeAssetsRunner { } Future<_PackageBuildRecord> _runPackageCached( - RunType buildType, + RunStep runStep, BuildConfig config, Uri packageConfigUri, Uri workingDirectory, @@ -216,7 +216,7 @@ class NativeAssetsRunner { final buildOutput = await BuildOutput.readFromFile( outDir: outDir, - type: buildType, + step: runStep, ); final lastBuilt = buildOutput?.timestamp.roundDownToSeconds() ?? DateTime.fromMillisecondsSinceEpoch(0); @@ -232,7 +232,7 @@ class NativeAssetsRunner { } return await _buildPackage( - buildType, + runStep, config, packageConfigUri, workingDirectory, @@ -242,7 +242,7 @@ class NativeAssetsRunner { } Future<_PackageBuildRecord> _buildPackage( - RunType buildType, + RunStep runStep, BuildConfig config, Uri packageConfigUri, Uri workingDirectory, @@ -251,11 +251,11 @@ class NativeAssetsRunner { ) async { final outDir = config.outDir; final configFile = outDir.resolve('../config.yaml'); - final script = config.packageRoot.resolve(buildType.scriptName); + final script = config.packageRoot.resolve(runStep.scriptName); final configFileContents = config.toYamlString(); logger.info('config.yaml contents: $configFileContents'); await File.fromUri(configFile).writeAsString(configFileContents); - final buildOutputFile = File.fromUri(outDir.resolve(buildType.outputName)); + final buildOutputFile = File.fromUri(outDir.resolve(runStep.outputName)); if (await buildOutputFile.exists()) { // Ensure we'll never read outdated build results. await buildOutputFile.delete(); @@ -263,9 +263,9 @@ class NativeAssetsRunner { final arguments = [ '--packages=${packageConfigUri.toFilePath()}', script.toFilePath(), - ...buildType.args( + ...runStep.args( configFile, - outDir.resolve(BuildType().outputName), + outDir.resolve(const BuildStep().outputName), resources, ), ]; @@ -288,7 +288,7 @@ class NativeAssetsRunner { logger.severe( ''' Building native assets for package:${config.packageName} failed. -${buildType.scriptName} returned with exit code: ${result.exitCode}. +${runStep.scriptName} returned with exit code: ${result.exitCode}. To reproduce run: $commandString stderr: @@ -303,7 +303,7 @@ ${result.stdout} try { final buildOutput = await BuildOutput.readFromFile( outDir: outDir, - type: buildType, + step: runStep, ); success &= validateAssetsPackage(buildOutput?.assets ?? [], config.packageName); diff --git a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart index ebad722ca..0195a4646 100644 --- a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart +++ b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart @@ -90,12 +90,12 @@ class PackageLayout { /// a `build.dart`. /// /// `package:native` itself is excluded. - Future> packagesWithNativeAssets(RunType type) async { + Future> packagesWithNativeAssets(RunStep step) async { final result = []; for (final package in packageConfig.packages) { final packageRoot = package.root; if (packageRoot.scheme == 'file') { - if (await File.fromUri(packageRoot.resolve(type.scriptName)).exists()) { + if (await File.fromUri(packageRoot.resolve(step.scriptName)).exists()) { result.add(package); } } @@ -104,8 +104,8 @@ class PackageLayout { } late final Future> packagesWithNativeBuild = - packagesWithNativeAssets(BuildType()); + packagesWithNativeAssets(const BuildStep()); late final Future> packagesWithNativeLink = - packagesWithNativeAssets(LinkType()); + packagesWithNativeAssets(const LinkStep()); } diff --git a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart index 8bcebbaab..aaf0e6305 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart @@ -88,7 +88,7 @@ void main() async { final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = - await packageLayout.packagesWithNativeAssets(BuildType()); + await packageLayout.packagesWithNativeAssets(const BuildStep()); final nativeAssetsBuildPlanner = await NativeAssetsPlanner.fromRootPackageRoot( rootPackageRoot: nativeAddUri, diff --git a/pkgs/native_assets_builder/test/data/package_reading_metadata/pubspec.yaml b/pkgs/native_assets_builder/test/data/package_reading_metadata/pubspec.yaml index 8abff8922..9c9c7301e 100644 --- a/pkgs/native_assets_builder/test/data/package_reading_metadata/pubspec.yaml +++ b/pkgs/native_assets_builder/test/data/package_reading_metadata/pubspec.yaml @@ -8,6 +8,7 @@ environment: sdk: '>=3.0.0 <4.0.0' dependencies: + args: ^2.4.2 cli_config: ^0.1.1 native_assets_cli: ^0.3.2 package_with_metadata: diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart index 017526a32..588656f5b 100644 --- a/pkgs/native_assets_cli/example/native_add_library/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -47,6 +47,6 @@ void main(List args) async { // Flutter can find the native assets produced by this script. await buildOutput.writeToFile( outDir: buildConfig.outDir, - type: BuildType(), + step: const BuildStep(), ); } diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index c72816bf1..8c3402cd4 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -29,7 +29,7 @@ void main(List args) async { final linkOutput = BuildOutput(assets: shakenAssets); await linkOutput.writeToFile( outDir: linkInput.buildConfig.outDir, - type: LinkType(), + step: LinkStep(), ); } diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index 23685ba77..356aeec5c 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -6,6 +6,7 @@ import 'package:yaml/yaml.dart'; import '../utils/uri.dart'; import '../utils/yaml.dart'; +import 'build_type.dart'; import 'link_mode.dart'; import 'target.dart'; @@ -195,6 +196,7 @@ class Asset { final Target target; final AssetPath path; final AssetType type; + final RunStep copyAt; Asset({ required this.id, @@ -202,6 +204,7 @@ class Asset { required this.target, required this.path, required this.type, + this.copyAt = const BuildStep(), }); factory Asset.fromYaml(YamlMap yamlMap) => Asset( diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index 5b85bcdd3..e3d6fb4c4 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -96,12 +96,12 @@ class BuildOutput { /// representation in the protocol. static Version version = Version(1, 0, 0); - /// Writes the YAML file from [outDir]/[type]. + /// Writes the YAML file from [outDir]/[step]. static Future readFromFile({ required Uri outDir, - required RunType type, + required RunStep step, }) async { - final buildOutputUri = outDir.resolve(type.outputName); + final buildOutputUri = outDir.resolve(step.outputName); final buildOutputFile = File.fromUri(buildOutputUri); if (!await buildOutputFile.exists()) { return null; @@ -109,12 +109,12 @@ class BuildOutput { return BuildOutput.fromYamlString(await buildOutputFile.readAsString()); } - /// Writes the [toYamlString] to [outDir]/[type]. + /// Writes the [toYamlString] to [outDir]/[step]. Future writeToFile({ required Uri outDir, - required RunType type, + required RunStep step, }) async { - final buildOutputUri = outDir.resolve(type.outputName); + final buildOutputUri = outDir.resolve(step.outputName); await File.fromUri(buildOutputUri) .writeAsStringCreateDirectory(toYamlString()); } diff --git a/pkgs/native_assets_cli/lib/src/model/build_type.dart b/pkgs/native_assets_cli/lib/src/model/build_type.dart index 3109ce243..3a3ceec95 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_type.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_type.dart @@ -4,13 +4,15 @@ import 'link_input.dart'; /// /// The `build.dart` script runs before, and the `link.dart` script after /// compilation. -sealed class RunType { +sealed class RunStep { String get scriptName; String get outputName; List args(Uri configFile, Uri buildOutput, Uri? resources); + + const RunStep(); } -final class LinkType extends RunType { +final class LinkStep extends RunStep { @override String get outputName => 'link_output.yaml'; @@ -20,9 +22,11 @@ final class LinkType extends RunType { @override List args(Uri configFile, Uri buildOutput, Uri? resources) => LinkInput.toArgs(buildOutput, configFile, resources); + + const LinkStep(); } -final class BuildType extends RunType { +final class BuildStep extends RunStep { @override String get outputName => 'build_output.yaml'; @@ -34,4 +38,6 @@ final class BuildType extends RunType { List args(Uri configFile, Uri buildOutput, Uri? resources) => [ '--config=${configFile.toFilePath()}', ]; + + const BuildStep(); } diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index 962b048e3..00b34e90b 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -88,9 +88,9 @@ version: ${BuildOutput.version}'''; test('BuildOutput.readFromFile BuildOutput.writeToFile', () async { final outDir = tempUri.resolve('out_dir/'); - await buildOutput.writeToFile(outDir: outDir, type: BuildType()); + await buildOutput.writeToFile(outDir: outDir, step: const BuildStep()); final buildOutput2 = - await BuildOutput.readFromFile(outDir: outDir, type: BuildType()); + await BuildOutput.readFromFile(outDir: outDir, step: const BuildStep()); expect(buildOutput2, buildOutput); }); From cd92f2826091164fda4ace08779822267bcb6123 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 29 Nov 2023 17:21:22 +0100 Subject: [PATCH 014/187] Rename --- pkgs/native_assets_cli/lib/src/model/asset.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index 356aeec5c..68b675e46 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -196,7 +196,11 @@ class Asset { final Target target; final AssetPath path; final AssetType type; - final RunStep copyAt; + + /// The step at which the asset should be output. For example, if you want an + /// asset to be output after `build.dart`, choose [BuildStep]. If you want it + /// output after `link.dart`, choose [LinkStep]. + final RunStep step; Asset({ required this.id, @@ -204,7 +208,7 @@ class Asset { required this.target, required this.path, required this.type, - this.copyAt = const BuildStep(), + this.step = const BuildStep(), }); factory Asset.fromYaml(YamlMap yamlMap) => Asset( From 217a3408ed054b830d0d0835b714a316e15b1a52 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 30 Nov 2023 12:03:27 +0100 Subject: [PATCH 015/187] Remove asset type --- .../example/native_add_library/build.dart | 1 - .../example/native_add_library/link.dart | 3 +-- .../lib/src/model/asset.dart | 20 ++----------------- .../test/model/asset_test.dart | 7 ------- .../test/model/build_output_test.dart | 2 -- .../lib/src/cbuilder/cbuilder.dart | 1 - 6 files changed, 3 insertions(+), 31 deletions(-) diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart index 588656f5b..d8104ffe0 100644 --- a/pkgs/native_assets_cli/example/native_add_library/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -39,7 +39,6 @@ void main(List args) async { target: buildConfig.target, path: AssetAbsolutePath( buildConfig.packageRoot.resolve('data_asset_build.json')), - type: AssetType.data, ), ); diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index 8c3402cd4..0292b85c2 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -22,7 +22,6 @@ void main(List args) async { path: AssetAbsolutePath( buildConfig.packageRoot.resolve('data_asset_link.json'), ), - type: AssetType.data, ), ); @@ -38,5 +37,5 @@ class MyResourceShaker { List assets, ResourceIdentifiers? resourceIdentifiers, ) => - assets.where((asset) => asset.type != AssetType.data).toList(); + assets.where((asset) => !asset.id.endsWith('.json')).toList(); } diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index 68b675e46..0e79ea1e4 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -195,7 +195,6 @@ class Asset { final String id; final Target target; final AssetPath path; - final AssetType type; /// The step at which the asset should be output. For example, if you want an /// asset to be output after `build.dart`, choose [BuildStep]. If you want it @@ -207,7 +206,6 @@ class Asset { required this.linkMode, required this.target, required this.path, - required this.type, this.step = const BuildStep(), }); @@ -216,7 +214,6 @@ class Asset { path: AssetPath.fromYaml(as(yamlMap[_pathKey])), target: Target.fromString(as(yamlMap[_targetKey])), linkMode: LinkMode.fromName(as(yamlMap[_linkModeKey])), - type: AssetType.fromName(as(yamlMap[_typeKey])), ); static List listFromYamlString(String yaml) { @@ -240,14 +237,12 @@ class Asset { String? id, Target? target, AssetPath? path, - AssetType? type, }) => Asset( id: id ?? this.id, linkMode: linkMode ?? this.linkMode, target: target ?? this.target, path: path ?? this.path, - type: type ?? this.type, ); @override @@ -258,19 +253,17 @@ class Asset { return other.id == id && other.linkMode == linkMode && other.target == target && - other.path == path && - other.type == type; + other.path == path; } @override - int get hashCode => Object.hash(id, linkMode, target, path, type); + int get hashCode => Object.hash(id, linkMode, target, path); Map toYaml() => { _idKey: id, _linkModeKey: linkMode.name, _pathKey: path.toYaml(), _targetKey: target.toString(), - _typeKey: type.name, }; Map> toDartConst() => { @@ -283,7 +276,6 @@ class Asset { static const _linkModeKey = 'link_mode'; static const _pathKey = 'path'; static const _targetKey = 'target'; - static const _typeKey = 'type'; Future exists() => path.exists(); @@ -291,14 +283,6 @@ class Asset { String toString() => 'Asset(${toYaml()})'; } -enum AssetType { - code, - data; - - static AssetType fromName(String name) => - AssetType.values.firstWhere((element) => element.name == name); -} - extension AssetIterable on Iterable { List toYaml() => [for (final item in this) item.toYaml()]; diff --git a/pkgs/native_assets_cli/test/model/asset_test.dart b/pkgs/native_assets_cli/test/model/asset_test.dart index e703616ee..bb0513490 100644 --- a/pkgs/native_assets_cli/test/model/asset_test.dart +++ b/pkgs/native_assets_cli/test/model/asset_test.dart @@ -18,49 +18,42 @@ void main() { path: AssetAbsolutePath(fooUri), target: Target.androidX64, linkMode: LinkMode.dynamic, - type: AssetType.code, ), Asset( id: 'foo2', path: AssetRelativePath(foo2Uri), target: Target.androidX64, linkMode: LinkMode.dynamic, - type: AssetType.code, ), Asset( id: 'foo3', path: AssetSystemPath(foo3Uri), target: Target.androidX64, linkMode: LinkMode.dynamic, - type: AssetType.code, ), Asset( id: 'foo4', path: AssetInExecutable(), target: Target.androidX64, linkMode: LinkMode.dynamic, - type: AssetType.code, ), Asset( id: 'foo5', path: AssetInProcess(), target: Target.androidX64, linkMode: LinkMode.dynamic, - type: AssetType.code, ), Asset( id: 'bar', path: AssetAbsolutePath(barUri), target: Target.linuxArm64, linkMode: LinkMode.static, - type: AssetType.code, ), Asset( id: 'bla', path: AssetAbsolutePath(blaUri), target: Target.windowsX64, linkMode: LinkMode.dynamic, - type: AssetType.code, ), ]; diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index 00b34e90b..d7108734f 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -26,14 +26,12 @@ void main() { path: AssetAbsolutePath(Uri(path: 'path/to/libfoo.so')), target: Target.androidX64, linkMode: LinkMode.dynamic, - type: AssetType.code, ), Asset( id: 'foo2', path: AssetRelativePath(Uri(path: 'path/to/libfoo2.so')), target: Target.androidX64, linkMode: LinkMode.dynamic, - type: AssetType.code, ), ], dependencies: Dependencies([ diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart index efd4ef46a..a0a199b0d 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart @@ -260,7 +260,6 @@ class CBuilder implements Builder { linkMode: linkMode, target: target, path: AssetAbsolutePath(libUri), - type: AssetType.code, )); } } From d7bae1a9fc99f40221234c6eb90493ddebd2ced8 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 30 Nov 2023 12:10:27 +0100 Subject: [PATCH 016/187] Add step serialization --- pkgs/native_assets_cli/lib/src/model/asset.dart | 9 +++++++-- pkgs/native_assets_cli/lib/src/model/build_type.dart | 5 +++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index 0e79ea1e4..1f191dcc6 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -237,12 +237,14 @@ class Asset { String? id, Target? target, AssetPath? path, + RunStep? step, }) => Asset( id: id ?? this.id, linkMode: linkMode ?? this.linkMode, target: target ?? this.target, path: path ?? this.path, + step: step ?? this.step, ); @override @@ -253,17 +255,19 @@ class Asset { return other.id == id && other.linkMode == linkMode && other.target == target && - other.path == path; + other.path == path && + other.step == step; } @override - int get hashCode => Object.hash(id, linkMode, target, path); + int get hashCode => Object.hash(id, linkMode, target, path, step); Map toYaml() => { _idKey: id, _linkModeKey: linkMode.name, _pathKey: path.toYaml(), _targetKey: target.toString(), + _step: step.toYaml(), }; Map> toDartConst() => { @@ -276,6 +280,7 @@ class Asset { static const _linkModeKey = 'link_mode'; static const _pathKey = 'path'; static const _targetKey = 'target'; + static const _step = 'step'; Future exists() => path.exists(); diff --git a/pkgs/native_assets_cli/lib/src/model/build_type.dart b/pkgs/native_assets_cli/lib/src/model/build_type.dart index 3a3ceec95..f3e101a3a 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_type.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_type.dart @@ -10,6 +10,11 @@ sealed class RunStep { List args(Uri configFile, Uri buildOutput, Uri? resources); const RunStep(); + + Map toYaml() => { + 'script': scriptName, + 'output': outputName, + }; } final class LinkStep extends RunStep { From f916a2691db2d69c8650753c4934f2e8158b3a03 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 6 Dec 2023 09:34:29 +0100 Subject: [PATCH 017/187] Fix overrides --- pkgs/native_assets_builder/pubspec_overrides.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/native_assets_builder/pubspec_overrides.yaml b/pkgs/native_assets_builder/pubspec_overrides.yaml index 74bdb3f4a..0c523c6f3 100644 --- a/pkgs/native_assets_builder/pubspec_overrides.yaml +++ b/pkgs/native_assets_builder/pubspec_overrides.yaml @@ -1,2 +1,3 @@ dependency_overrides: + native_assets_cli: path: ../native_assets_cli/ From c2f8ecb33315b07a26a1e08a13c3d5126bdec18e Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 6 Dec 2023 09:41:39 +0100 Subject: [PATCH 018/187] Don't check web coverage --- .github/workflows/health.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/health.yaml b/.github/workflows/health.yaml index 21b4ddb15..2210301f8 100644 --- a/.github/workflows/health.yaml +++ b/.github/workflows/health.yaml @@ -7,7 +7,7 @@ jobs: health: uses: dart-lang/ecosystem/.github/workflows/health.yaml@main with: - coverage_web: true + coverage_web: false checks: "version,changelog,license,coverage,do-not-submit,breaking" use-flutter: true permissions: From f0668f14477dfedb8d019b7f22e23579d06bd550 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 6 Dec 2023 11:38:51 +0100 Subject: [PATCH 019/187] Merge fixes --- .../test/build_runner/build_planner_test.dart | 29 ++++++++++--------- .../test/data/cyclic_package_1/build.dart | 5 +++- .../test/data/cyclic_package_2/build.dart | 5 +++- .../test/data/native_add/build.dart | 5 +++- .../data/native_add_add_source/build.dart | 5 +++- .../test/data/native_subtract/build.dart | 5 +++- .../data/package_with_metadata/build.dart | 5 +++- .../test/data/simple_link/build.dart | 6 ++-- .../test/data/simple_link/link.dart | 2 +- .../test/data/wrong_build_output/build.dart | 2 +- .../test/data/wrong_build_output_2/build.dart | 2 +- .../test/data/wrong_build_output_3/build.dart | 2 +- .../data/wrong_namespace_asset/build.dart | 6 ++-- 13 files changed, 51 insertions(+), 28 deletions(-) diff --git a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart index e6a6eff12..267722cc5 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart @@ -87,21 +87,22 @@ void main() async { // First, run `pub get`, we need pub to resolve our dependencies. await runPubGet(workingDirectory: nativeAddUri, logger: logger); - final packageLayout = - await PackageLayout.fromRootPackageRoot(nativeAddUri); - final packagesWithNativeAssets = - await packageLayout.packagesWithNativeAssets(const BuildStep()); - final nativeAssetsBuildPlanner = - await NativeAssetsPlanner.fromRootPackageRoot( - rootPackageRoot: nativeAddUri, - packagesWithNativeAssets: packagesWithNativeAssets, - dartExecutable: Uri.file(Platform.resolvedExecutable), - logger: logger, - ); - final (buildPlan, _) = nativeAssetsBuildPlanner.plan( + final packageLayout = + await PackageLayout.fromRootPackageRoot(nativeAddUri); + final packagesWithNativeAssets = + await packageLayout.packagesWithNativeAssets(const BuildStep()); + final nativeAssetsBuildPlanner = + await NativeAssetsPlanner.fromRootPackageRoot( + rootPackageRoot: nativeAddUri, + packagesWithNativeAssets: packagesWithNativeAssets, + dartExecutable: Uri.file(Platform.resolvedExecutable), + logger: logger, + ); + final (buildPlan, _) = nativeAssetsBuildPlanner.plan( runPackageName: runPackageName, - ); - expect(buildPlan.length, 0); + ); + expect(buildPlan.length, 0); + }); }); } } diff --git a/pkgs/native_assets_builder/test/data/cyclic_package_1/build.dart b/pkgs/native_assets_builder/test/data/cyclic_package_1/build.dart index 2479e4ea2..4307c7b44 100644 --- a/pkgs/native_assets_builder/test/data/cyclic_package_1/build.dart +++ b/pkgs/native_assets_builder/test/data/cyclic_package_1/build.dart @@ -7,5 +7,8 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); final buildOutput = BuildOutput(); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile( + outDir: buildConfig.outDir, + step: const BuildStep(), + ); } diff --git a/pkgs/native_assets_builder/test/data/cyclic_package_2/build.dart b/pkgs/native_assets_builder/test/data/cyclic_package_2/build.dart index 2479e4ea2..4307c7b44 100644 --- a/pkgs/native_assets_builder/test/data/cyclic_package_2/build.dart +++ b/pkgs/native_assets_builder/test/data/cyclic_package_2/build.dart @@ -7,5 +7,8 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); final buildOutput = BuildOutput(); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile( + outDir: buildConfig.outDir, + step: const BuildStep(), + ); } diff --git a/pkgs/native_assets_builder/test/data/native_add/build.dart b/pkgs/native_assets_builder/test/data/native_add/build.dart index 69bbb9ede..b4869feb5 100644 --- a/pkgs/native_assets_builder/test/data/native_add/build.dart +++ b/pkgs/native_assets_builder/test/data/native_add/build.dart @@ -27,5 +27,8 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile( + outDir: buildConfig.outDir, + step: const BuildStep(), + ); } diff --git a/pkgs/native_assets_builder/test/data/native_add_add_source/build.dart b/pkgs/native_assets_builder/test/data/native_add_add_source/build.dart index 3fcb30e4b..bd49e7bc4 100644 --- a/pkgs/native_assets_builder/test/data/native_add_add_source/build.dart +++ b/pkgs/native_assets_builder/test/data/native_add_add_source/build.dart @@ -28,5 +28,8 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile( + outDir: buildConfig.outDir, + step: const BuildStep(), + ); } diff --git a/pkgs/native_assets_builder/test/data/native_subtract/build.dart b/pkgs/native_assets_builder/test/data/native_subtract/build.dart index 66b62ea90..6104e36fd 100644 --- a/pkgs/native_assets_builder/test/data/native_subtract/build.dart +++ b/pkgs/native_assets_builder/test/data/native_subtract/build.dart @@ -27,5 +27,8 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile( + outDir: buildConfig.outDir, + step: const BuildStep(), + ); } diff --git a/pkgs/native_assets_builder/test/data/package_with_metadata/build.dart b/pkgs/native_assets_builder/test/data/package_with_metadata/build.dart index a5e908ac7..80d168ca0 100644 --- a/pkgs/native_assets_builder/test/data/package_with_metadata/build.dart +++ b/pkgs/native_assets_builder/test/data/package_with_metadata/build.dart @@ -12,5 +12,8 @@ void main(List args) async { 'some_int': 3, }), ); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile( + outDir: buildConfig.outDir, + step: const BuildStep(), + ); } diff --git a/pkgs/native_assets_builder/test/data/simple_link/build.dart b/pkgs/native_assets_builder/test/data/simple_link/build.dart index d7e34995d..d2f5dfe2a 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/build.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/build.dart @@ -21,9 +21,11 @@ void main(List args) async { linkMode: LinkMode.dynamic, target: buildConfig.target, path: AssetAbsolutePath(Uri.file(File(filename).absolute.path)), - type: AssetType.data, ); }, )); - await buildOutput.writeToFile(outDir: buildConfig.outDir, type: BuildType()); + await buildOutput.writeToFile( + outDir: buildConfig.outDir, + step: const BuildStep(), + ); } diff --git a/pkgs/native_assets_builder/test/data/simple_link/link.dart b/pkgs/native_assets_builder/test/data/simple_link/link.dart index e124c449b..e318256fc 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/link.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/link.dart @@ -16,7 +16,7 @@ void main(List args) async { final linkOutput = BuildOutput(assets: shakenAssets); await linkOutput.writeToFile( outDir: linkInput.buildConfig.outDir, - type: LinkType(), + step: const LinkStep(), ); } diff --git a/pkgs/native_assets_builder/test/data/wrong_build_output/build.dart b/pkgs/native_assets_builder/test/data/wrong_build_output/build.dart index a34dbd0dc..72f69cea5 100644 --- a/pkgs/native_assets_builder/test/data/wrong_build_output/build.dart +++ b/pkgs/native_assets_builder/test/data/wrong_build_output/build.dart @@ -8,7 +8,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); - await File.fromUri(buildConfig.outDir.resolve(BuildOutput.fileName)) + await File.fromUri(buildConfig.outDir.resolve(BuildStep().outputName)) .writeAsString(_wrongContents); } diff --git a/pkgs/native_assets_builder/test/data/wrong_build_output_2/build.dart b/pkgs/native_assets_builder/test/data/wrong_build_output_2/build.dart index 331cd2dc2..a1161360b 100644 --- a/pkgs/native_assets_builder/test/data/wrong_build_output_2/build.dart +++ b/pkgs/native_assets_builder/test/data/wrong_build_output_2/build.dart @@ -8,7 +8,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); - await File.fromUri(buildConfig.outDir.resolve(BuildOutput.fileName)) + await File.fromUri(buildConfig.outDir.resolve(BuildStep().outputName)) .writeAsString(_wrongContents); } diff --git a/pkgs/native_assets_builder/test/data/wrong_build_output_3/build.dart b/pkgs/native_assets_builder/test/data/wrong_build_output_3/build.dart index 307dfff65..585e31252 100644 --- a/pkgs/native_assets_builder/test/data/wrong_build_output_3/build.dart +++ b/pkgs/native_assets_builder/test/data/wrong_build_output_3/build.dart @@ -8,7 +8,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); - await File.fromUri(buildConfig.outDir.resolve(BuildOutput.fileName)) + await File.fromUri(buildConfig.outDir.resolve(BuildStep().outputName)) .writeAsString(_rightContents); exit(1); } diff --git a/pkgs/native_assets_builder/test/data/wrong_namespace_asset/build.dart b/pkgs/native_assets_builder/test/data/wrong_namespace_asset/build.dart index 97feb7f4e..d2483a976 100644 --- a/pkgs/native_assets_builder/test/data/wrong_namespace_asset/build.dart +++ b/pkgs/native_assets_builder/test/data/wrong_namespace_asset/build.dart @@ -17,9 +17,11 @@ void main(List args) async { Target.current.os.dylibFileName('foo'), ), ), - type: AssetType.code, ), ], ); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile( + outDir: buildConfig.outDir, + step: const BuildStep(), + ); } From 83c6cdc2064e1ef1b7064f9480e3157e8dbc83e4 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 6 Dec 2023 11:44:57 +0100 Subject: [PATCH 020/187] Switch to const constructors --- .../test/data/wrong_build_output/build.dart | 2 +- .../test/data/wrong_build_output_2/build.dart | 2 +- .../test/data/wrong_build_output_3/build.dart | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/native_assets_builder/test/data/wrong_build_output/build.dart b/pkgs/native_assets_builder/test/data/wrong_build_output/build.dart index 72f69cea5..78deec341 100644 --- a/pkgs/native_assets_builder/test/data/wrong_build_output/build.dart +++ b/pkgs/native_assets_builder/test/data/wrong_build_output/build.dart @@ -8,7 +8,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); - await File.fromUri(buildConfig.outDir.resolve(BuildStep().outputName)) + await File.fromUri(buildConfig.outDir.resolve(const BuildStep().outputName)) .writeAsString(_wrongContents); } diff --git a/pkgs/native_assets_builder/test/data/wrong_build_output_2/build.dart b/pkgs/native_assets_builder/test/data/wrong_build_output_2/build.dart index a1161360b..5e346efc7 100644 --- a/pkgs/native_assets_builder/test/data/wrong_build_output_2/build.dart +++ b/pkgs/native_assets_builder/test/data/wrong_build_output_2/build.dart @@ -8,7 +8,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); - await File.fromUri(buildConfig.outDir.resolve(BuildStep().outputName)) + await File.fromUri(buildConfig.outDir.resolve(const BuildStep().outputName)) .writeAsString(_wrongContents); } diff --git a/pkgs/native_assets_builder/test/data/wrong_build_output_3/build.dart b/pkgs/native_assets_builder/test/data/wrong_build_output_3/build.dart index 585e31252..5fc5815e8 100644 --- a/pkgs/native_assets_builder/test/data/wrong_build_output_3/build.dart +++ b/pkgs/native_assets_builder/test/data/wrong_build_output_3/build.dart @@ -8,7 +8,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); - await File.fromUri(buildConfig.outDir.resolve(BuildStep().outputName)) + await File.fromUri(buildConfig.outDir.resolve(const BuildStep().outputName)) .writeAsString(_rightContents); exit(1); } From 6bfa254a6c837971642889fe46de335703f51b6b Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 6 Dec 2023 11:49:56 +0100 Subject: [PATCH 021/187] Don't fail fast --- .github/workflows/native.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml index 3b6f0d613..717b2d408 100644 --- a/.github/workflows/native.yaml +++ b/.github/workflows/native.yaml @@ -28,6 +28,7 @@ on: jobs: build: strategy: + fail-fast: false matrix: os: [ubuntu, macos, windows] sdk: [stable, dev] From e710239669835422dcac7e74e970a617679e9418 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 6 Dec 2023 12:00:34 +0100 Subject: [PATCH 022/187] Add override to link --- pkgs/native_assets_builder/test/data/manifest.yaml | 1 + .../test/data/simple_link/pubspec_overrides.yaml | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 pkgs/native_assets_builder/test/data/simple_link/pubspec_overrides.yaml diff --git a/pkgs/native_assets_builder/test/data/manifest.yaml b/pkgs/native_assets_builder/test/data/manifest.yaml index ca6fdc621..e5536b30f 100644 --- a/pkgs/native_assets_builder/test/data/manifest.yaml +++ b/pkgs/native_assets_builder/test/data/manifest.yaml @@ -33,6 +33,7 @@ - package_with_metadata/build.dart - package_with_metadata/pubspec.yaml - simple_link/pubspec.yaml +- simple_link/pubspec_overrides.yaml - simple_link/build.dart - package_with_metadata/pubspec_overrides.yaml - some_dev_dep/bin/some_dev_dep.dart diff --git a/pkgs/native_assets_builder/test/data/simple_link/pubspec_overrides.yaml b/pkgs/native_assets_builder/test/data/simple_link/pubspec_overrides.yaml new file mode 100644 index 000000000..c18eed080 --- /dev/null +++ b/pkgs/native_assets_builder/test/data/simple_link/pubspec_overrides.yaml @@ -0,0 +1,3 @@ +dependency_overrides: + native_assets_cli: + path: ../../../../native_assets_cli/ From a8651cce8642f5e89d2d9ad8d334cb1dd5b4f3c4 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 7 Dec 2023 14:25:47 +0100 Subject: [PATCH 023/187] Small fixes --- .../lib/src/build_runner/build_planner.dart | 46 +++++++------ .../lib/src/build_runner/build_runner.dart | 65 +++++++++---------- .../src/package_layout/package_layout.dart | 2 +- .../test/build_runner/build_planner_test.dart | 10 +-- .../build_runner_reusability_test.dart | 2 +- .../test/build_runner/helpers.dart | 6 +- .../test/data/simple_link/link.dart | 2 +- .../example/native_add_library/link.dart | 2 +- .../lib/src/model/asset.dart | 13 ++-- .../lib/src/model/build_output.dart | 4 +- .../lib/src/model/build_type.dart | 21 +++--- .../lib/src/model/link_input.dart | 12 ++-- 12 files changed, 94 insertions(+), 91 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart index be1a9d144..b31016486 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart @@ -9,20 +9,20 @@ import 'package:graphs/graphs.dart' as graphs; import 'package:logging/logging.dart'; import 'package:package_config/package_config.dart'; -class NativeAssetsPlanner { - final DependencyGraph dependencyGraph; +class NativeAssetsBuildPlanner { + final PackageGraph packageGraph; final List packagesWithNativeAssets; final Uri dartExecutable; final Logger logger; - NativeAssetsPlanner({ - required this.dependencyGraph, + NativeAssetsBuildPlanner({ + required this.packageGraph, required this.packagesWithNativeAssets, required this.dartExecutable, required this.logger, }); - static Future fromRootPackageRoot({ + static Future fromRootPackageRoot({ required Uri rootPackageRoot, required List packagesWithNativeAssets, required Uri dartExecutable, @@ -37,10 +37,10 @@ class NativeAssetsPlanner { ], workingDirectory: rootPackageRoot.toFilePath(), ); - final dependencyGraph = - DependencyGraph.fromPubDepsJsonString(result.stdout as String); - return NativeAssetsPlanner( - dependencyGraph: dependencyGraph, + final packageGraph = + PackageGraph.fromPubDepsJsonString(result.stdout as String); + return NativeAssetsBuildPlanner( + packageGraph: packageGraph, packagesWithNativeAssets: packagesWithNativeAssets, dartExecutable: dartExecutable, logger: logger, @@ -50,18 +50,17 @@ class NativeAssetsPlanner { (List packages, bool success) plan({ String? runPackageName, }) { - final DependencyGraph dependencyGraph; + final PackageGraph packageGraph; if (runPackageName != null) { - dependencyGraph = this.dependencyGraph.subGraph(runPackageName); + packageGraph = this.packageGraph.subGraph(runPackageName); } else { - dependencyGraph = this.dependencyGraph; + packageGraph = this.packageGraph; } final packageMap = { for (final package in packagesWithNativeAssets) package.name: package }; final packagesToBuild = packageMap.keys.toSet(); - final stronglyConnectedComponents = - dependencyGraph.computeStrongComponents(); + final stronglyConnectedComponents = packageGraph.computeStrongComponents(); final result = []; var success = true; for (final stronglyConnectedComponent in stronglyConnectedComponents) { @@ -86,18 +85,17 @@ class NativeAssetsPlanner { /// A graph of package dependencies, encoded as package name -> list of package /// dependencies. -class DependencyGraph { +class PackageGraph { final Map> map; - DependencyGraph(this.map); + PackageGraph(this.map); /// Construct a graph from the JSON produced by `dart pub deps --json`. - factory DependencyGraph.fromPubDepsJsonString(String json) => - DependencyGraph.fromPubDepsJson( - jsonDecode(json) as Map); + factory PackageGraph.fromPubDepsJsonString(String json) => + PackageGraph.fromPubDepsJson(jsonDecode(json) as Map); /// Construct a graph from the JSON produced by `dart pub deps --json`. - factory DependencyGraph.fromPubDepsJson(Map map) { + factory PackageGraph.fromPubDepsJson(Map map) { final result = >{}; final packages = map['packages'] as List; for (final package in packages) { @@ -108,7 +106,7 @@ class DependencyGraph { .toList(); result[name] = dependencies; } - return DependencyGraph(result); + return PackageGraph(result); } Iterable neighborsOf(String vertex) => map[vertex] ?? []; @@ -118,17 +116,17 @@ class DependencyGraph { List> computeStrongComponents() => graphs.stronglyConnectedComponents(vertices, neighborsOf); - DependencyGraph subGraph(String rootPackageName) { + PackageGraph subGraph(String rootPackageName) { if (!vertices.contains(rootPackageName)) { // Some downstream tooling requested a package that doesn't exist. // This will likely lead to an error, so avoid building native assets. - return DependencyGraph({}); + return PackageGraph({}); } final subgraphVertices = [ ...graphs.transitiveClosure(vertices, neighborsOf)[rootPackageName]!, rootPackageName, ]; - return DependencyGraph({ + return PackageGraph({ for (final vertex in map.keys) if (subgraphVertices.contains(vertex)) vertex: [ diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 63ad4e2d5..209e88986 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -19,11 +19,11 @@ typedef DependencyMetadata = Map; /// /// These methods are invoked by launchers such as dartdev (for `dart run`) /// and flutter_tools (for `flutter run` and `flutter build`). -class NativeAssetsRunner { +class NativeAssetsBuildRunner { final Logger logger; final Uri dartExecutable; - NativeAssetsRunner({ + NativeAssetsBuildRunner({ required this.logger, required this.dartExecutable, }); @@ -48,7 +48,7 @@ class NativeAssetsRunner { String? runPackageName, }) async => _run( - buildStep: const BuildStep(), + step: const BuildStep(), linkModePreference: linkModePreference, target: target, workingDirectory: workingDirectory, @@ -74,7 +74,7 @@ class NativeAssetsRunner { String? runPackageName, }) async => _run( - buildStep: const LinkStep(), + step: const LinkStep(), linkModePreference: LinkModePreference.dynamic, target: target, workingDirectory: workingDirectory, @@ -88,7 +88,7 @@ class NativeAssetsRunner { ); Future _run({ - required RunStep buildStep, + required PipelineStep step, required LinkModePreference linkModePreference, required Target target, required Uri workingDirectory, @@ -103,7 +103,7 @@ class NativeAssetsRunner { }) async { packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); final packagesWithBuild = - await packageLayout.packagesWithNativeAssets(buildStep); + await packageLayout.packagesWithNativeAssets(step); final (packages, dependencyGraph, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName); if (!planSuccess) { @@ -115,7 +115,7 @@ class NativeAssetsRunner { var success = true; for (final package in packages) { final dependencyMetadata = _metadataForPackage( - dependencyGraph: dependencyGraph, + packageGraph: dependencyGraph, packageName: package.name, targetMetadata: metadata, ); @@ -131,8 +131,8 @@ class NativeAssetsRunner { targetIOSSdk: targetIOSSdk, targetAndroidNdkApi: targetAndroidNdkApi, ); - final (buildOutput, packageSuccess) = await _runPackageCached( - buildStep, + final (buildOutput, packageSuccess) = await _buildPackageCached( + step, config, packageLayout.packageConfigUri, workingDirectory, @@ -200,8 +200,8 @@ class NativeAssetsRunner { return BuildResult._dryrun(assets: assets, success: success); } - Future<_PackageBuildRecord> _runPackageCached( - RunStep runStep, + Future<_PackageBuildRecord> _buildPackageCached( + PipelineStep step, BuildConfig config, Uri packageConfigUri, Uri workingDirectory, @@ -216,7 +216,7 @@ class NativeAssetsRunner { final buildOutput = await BuildOutput.readFromFile( outDir: outDir, - step: runStep, + step: step, ); final lastBuilt = buildOutput?.timestamp.roundDownToSeconds() ?? DateTime.fromMillisecondsSinceEpoch(0); @@ -232,7 +232,7 @@ class NativeAssetsRunner { } return await _buildPackage( - runStep, + step, config, packageConfigUri, workingDirectory, @@ -242,7 +242,7 @@ class NativeAssetsRunner { } Future<_PackageBuildRecord> _buildPackage( - RunStep runStep, + PipelineStep step, BuildConfig config, Uri packageConfigUri, Uri workingDirectory, @@ -251,11 +251,11 @@ class NativeAssetsRunner { ) async { final outDir = config.outDir; final configFile = outDir.resolve('../config.yaml'); - final script = config.packageRoot.resolve(runStep.scriptName); + final script = config.packageRoot.resolve(step.scriptName); final configFileContents = config.toYamlString(); logger.info('config.yaml contents: $configFileContents'); await File.fromUri(configFile).writeAsString(configFileContents); - final buildOutputFile = File.fromUri(outDir.resolve(runStep.outputName)); + final buildOutputFile = File.fromUri(outDir.resolve(step.outputName)); if (await buildOutputFile.exists()) { // Ensure we'll never read outdated build results. await buildOutputFile.delete(); @@ -263,7 +263,7 @@ class NativeAssetsRunner { final arguments = [ '--packages=${packageConfigUri.toFilePath()}', script.toFilePath(), - ...runStep.args( + ...step.args( configFile, outDir.resolve(const BuildStep().outputName), resources, @@ -288,7 +288,7 @@ class NativeAssetsRunner { logger.severe( ''' Building native assets for package:${config.packageName} failed. -${runStep.scriptName} returned with exit code: ${result.exitCode}. +${step.scriptName} returned with exit code: ${result.exitCode}. To reproduce run: $commandString stderr: @@ -301,12 +301,10 @@ ${result.stdout} } try { - final buildOutput = await BuildOutput.readFromFile( - outDir: outDir, - step: runStep, - ); - success &= - validateAssetsPackage(buildOutput?.assets ?? [], config.packageName); + final buildOutput = + await BuildOutput.readFromFile(outDir: outDir, step: step); + final assets = buildOutput?.assets ?? []; + success &= validateAssetsPackage(assets, config.packageName); return (buildOutput ?? BuildOutput(), success); } on FormatException catch (e) { logger.severe(''' @@ -404,14 +402,14 @@ build_output.yaml contained a format error. } DependencyMetadata? _metadataForPackage({ - required DependencyGraph dependencyGraph, + required PackageGraph packageGraph, required String packageName, DependencyMetadata? targetMetadata, }) { if (targetMetadata == null) { return null; } - final dependencies = dependencyGraph.neighborsOf(packageName).toSet(); + final dependencies = packageGraph.neighborsOf(packageName).toSet(); return { for (final entry in targetMetadata.entries) if (dependencies.contains(entry.key)) entry.key: entry.value, @@ -435,19 +433,19 @@ build_output.yaml contained a format error. return success; } - Future<(List plan, DependencyGraph dependencyGraph, bool success)> + Future<(List plan, PackageGraph dependencyGraph, bool success)> _plannedPackages( List packagesWithNativeAssets, PackageLayout packageLayout, String? runPackageName, ) async { if (packagesWithNativeAssets.length <= 1 && runPackageName != null) { - final dependencyGraph = DependencyGraph({ + final dependencyGraph = PackageGraph({ for (final p in packagesWithNativeAssets) p.name: [], }); return (packagesWithNativeAssets, dependencyGraph, true); } else { - final planner = await NativeAssetsPlanner.fromRootPackageRoot( + final planner = await NativeAssetsBuildPlanner.fromRootPackageRoot( rootPackageRoot: packageLayout.rootPackageRoot, packagesWithNativeAssets: packagesWithNativeAssets, dartExecutable: Uri.file(Platform.resolvedExecutable), @@ -456,20 +454,21 @@ build_output.yaml contained a format error. final (plan, planSuccess) = planner.plan( runPackageName: runPackageName, ); - return (plan, planner.dependencyGraph, planSuccess); + return (plan, planner.packageGraph, planSuccess); } } } typedef _PackageBuildRecord = (BuildOutput, bool success); -/// The result from a [NativeAssetsRunner._run]. +/// The result from a [NativeAssetsBuildRunner.build] or +/// [NativeAssetsBuildRunner.link]. final class BuildResult { /// All the files used for building the native assets of all packages. /// /// This aggregated list can be used to determine whether the - /// [NativeAssetsRunner] needs to be invoked again. The - /// [NativeAssetsRunner] determines per package with native assets + /// [NativeAssetsBuildRunner] needs to be invoked again. The + /// [NativeAssetsBuildRunner] determines per package with native assets /// if it needs to run the build again. final List dependencies; diff --git a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart index 0195a4646..941ba8a00 100644 --- a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart +++ b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart @@ -90,7 +90,7 @@ class PackageLayout { /// a `build.dart`. /// /// `package:native` itself is excluded. - Future> packagesWithNativeAssets(RunStep step) async { + Future> packagesWithNativeAssets(PipelineStep step) async { final result = []; for (final package in packageConfig.packages) { final packageRoot = package.root; diff --git a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart index 267722cc5..9b88569a8 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart @@ -33,15 +33,15 @@ void main() async { ); expect(result.exitCode, 0); - final graph = DependencyGraph.fromPubDepsJsonString(result.stdout); + final graph = PackageGraph.fromPubDepsJsonString(result.stdout); final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = await packageLayout.packagesWithNativeBuild; - final planner = NativeAssetsPlanner( - dependencyGraph: graph, + final planner = NativeAssetsBuildPlanner( + packageGraph: graph, packagesWithNativeAssets: packagesWithNativeAssets, dartExecutable: Uri.file(Platform.resolvedExecutable), logger: logger, @@ -65,7 +65,7 @@ void main() async { final packagesWithNativeAssets = await packageLayout.packagesWithNativeBuild; final nativeAssetsBuildPlanner = - await NativeAssetsPlanner.fromRootPackageRoot( + await NativeAssetsBuildPlanner.fromRootPackageRoot( rootPackageRoot: nativeAddUri, packagesWithNativeAssets: packagesWithNativeAssets, dartExecutable: Uri.file(Platform.resolvedExecutable), @@ -92,7 +92,7 @@ void main() async { final packagesWithNativeAssets = await packageLayout.packagesWithNativeAssets(const BuildStep()); final nativeAssetsBuildPlanner = - await NativeAssetsPlanner.fromRootPackageRoot( + await NativeAssetsBuildPlanner.fromRootPackageRoot( rootPackageRoot: nativeAddUri, packagesWithNativeAssets: packagesWithNativeAssets, dartExecutable: Uri.file(Platform.resolvedExecutable), diff --git a/pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart b/pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart index 275e3743f..b96c1268c 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart @@ -24,7 +24,7 @@ void main() async { logger: logger, ); - final buildRunner = NativeAssetsRunner( + final buildRunner = NativeAssetsBuildRunner( logger: logger, dartExecutable: dartExecutable, ); diff --git a/pkgs/native_assets_builder/test/build_runner/helpers.dart b/pkgs/native_assets_builder/test/build_runner/helpers.dart index 27e5fba62..c7bc59f05 100644 --- a/pkgs/native_assets_builder/test/build_runner/helpers.dart +++ b/pkgs/native_assets_builder/test/build_runner/helpers.dart @@ -48,7 +48,7 @@ Future build( logger.onRecord.listen((event) => capturedLogs.add(event.message)); } - final result = await NativeAssetsRunner( + final result = await NativeAssetsBuildRunner( logger: logger, dartExecutable: dartExecutable, ).build( @@ -87,7 +87,7 @@ Future link( subscription = logger.onRecord.listen((event) => capturedLogs.add(event.message)); } - final result = await NativeAssetsRunner( + final result = await NativeAssetsBuildRunner( logger: logger, dartExecutable: dartExecutable, ).link( @@ -126,7 +126,7 @@ Future dryRun( logger.onRecord.listen((event) => capturedLogs.add(event.message)); } - final result = await NativeAssetsRunner( + final result = await NativeAssetsBuildRunner( logger: logger, dartExecutable: dartExecutable, ).dryBuild( diff --git a/pkgs/native_assets_builder/test/data/simple_link/link.dart b/pkgs/native_assets_builder/test/data/simple_link/link.dart index e318256fc..2b5125200 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/link.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/link.dart @@ -6,7 +6,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { print('RUN LINKING'); - final linkInput = await LinkInput.fromArgs(args); + final linkInput = await LinkConfig.fromArgs(args); final shakenAssets = MyResourceShaker().shake( linkInput.buildOutput.assets, diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index 0292b85c2..32b7bad12 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -6,7 +6,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; const packageName = 'native_add_library'; void main(List args) async { - final linkInput = await LinkInput.fromArgs(args); + final linkInput = await LinkConfig.fromArgs(args); final buildConfig = await BuildConfig.fromArgs(args); final shakenAssets = MyResourceShaker().shake( diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index 1f191dcc6..fa5d12ebf 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -196,10 +196,13 @@ class Asset { final Target target; final AssetPath path; - /// The step at which the asset should be output. For example, if you want an - /// asset to be output after `build.dart`, choose [BuildStep]. If you want it - /// output after `link.dart`, choose [LinkStep]. - final RunStep step; + /// The step at which the asset should be written to file. + /// * [BuildStep] - The asset is written after `build.dart` has run. + /// * [LinkStep] - The asset is written after `link.dart` has run. + /// + /// In particular, an asset which is created by `build.dart` and then further + /// modified by `link.dart` should be marked as [LinkStep]. + final PipelineStep step; Asset({ required this.id, @@ -237,7 +240,7 @@ class Asset { String? id, Target? target, AssetPath? path, - RunStep? step, + PipelineStep? step, }) => Asset( id: id ?? this.id, diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index e3d6fb4c4..9f36d3904 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -99,7 +99,7 @@ class BuildOutput { /// Writes the YAML file from [outDir]/[step]. static Future readFromFile({ required Uri outDir, - required RunStep step, + required PipelineStep step, }) async { final buildOutputUri = outDir.resolve(step.outputName); final buildOutputFile = File.fromUri(buildOutputUri); @@ -112,7 +112,7 @@ class BuildOutput { /// Writes the [toYamlString] to [outDir]/[step]. Future writeToFile({ required Uri outDir, - required RunStep step, + required PipelineStep step, }) async { final buildOutputUri = outDir.resolve(step.outputName); await File.fromUri(buildOutputUri) diff --git a/pkgs/native_assets_cli/lib/src/model/build_type.dart b/pkgs/native_assets_cli/lib/src/model/build_type.dart index f3e101a3a..1f3673b68 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_type.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_type.dart @@ -4,20 +4,17 @@ import 'link_input.dart'; /// /// The `build.dart` script runs before, and the `link.dart` script after /// compilation. -sealed class RunStep { +sealed class PipelineStep { String get scriptName; String get outputName; List args(Uri configFile, Uri buildOutput, Uri? resources); - const RunStep(); + const PipelineStep(); - Map toYaml() => { - 'script': scriptName, - 'output': outputName, - }; + String toYaml(); } -final class LinkStep extends RunStep { +final class LinkStep extends PipelineStep { @override String get outputName => 'link_output.yaml'; @@ -26,12 +23,15 @@ final class LinkStep extends RunStep { @override List args(Uri configFile, Uri buildOutput, Uri? resources) => - LinkInput.toArgs(buildOutput, configFile, resources); + LinkConfig.toArgs(buildOutput, configFile, resources); const LinkStep(); + + @override + String toYaml() => 'link'; } -final class BuildStep extends RunStep { +final class BuildStep extends PipelineStep { @override String get outputName => 'build_output.yaml'; @@ -45,4 +45,7 @@ final class BuildStep extends RunStep { ]; const BuildStep(); + + @override + String toYaml() => 'build'; } diff --git a/pkgs/native_assets_cli/lib/src/model/link_input.dart b/pkgs/native_assets_cli/lib/src/model/link_input.dart index 4410242ec..9dd56f6b2 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_input.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_input.dart @@ -12,19 +12,19 @@ import 'resources.dart'; /// It consists of the [buildConfig] already passed to the build script, the /// result of the build step [buildOutput], and the [resourceIdentifiers] /// generated during the kernel compilation. -class LinkInput { - final BuildOutput buildOutput; +class LinkConfig { + final Map buildOutput; final BuildConfig buildConfig; final ResourceIdentifiers? resourceIdentifiers; - LinkInput._({ + LinkConfig._({ required this.buildOutput, required this.buildConfig, required this.resourceIdentifiers, }); - /// Generate the [LinkInput] from the input arguments to the linking script. - static Future fromArgs(List args) async { + /// Generate the [LinkConfig] from the input arguments to the linking script. + static Future fromArgs(List args) async { final argParser = ArgParser() ..addOption('build_output') ..addOption('resource_identifiers') @@ -46,7 +46,7 @@ class LinkInput { ResourceIdentifiers.fromFile(resourceIdentifierPath); } - return LinkInput._( + return LinkConfig._( buildConfig: buildConfig, buildOutput: buildOutput, resourceIdentifiers: resourceIdentifiers, From 9d6c1fb86998f417ba1bd11e6064363036635fcf Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 12 Dec 2023 11:40:31 +0100 Subject: [PATCH 024/187] Working on it --- .../lib/src/build_runner/build_runner.dart | 61 +++++---- .../src/package_layout/package_layout.dart | 4 +- .../test/build_runner/build_planner_test.dart | 2 +- .../test/data/cyclic_package_1/build.dart | 5 +- .../test/data/cyclic_package_2/build.dart | 5 +- .../test/data/native_add/build.dart | 5 +- .../data/native_add_add_source/build.dart | 5 +- .../test/data/native_subtract/build.dart | 5 +- .../data/package_with_metadata/build.dart | 5 +- .../test/data/simple_link/build.dart | 5 +- .../test/data/simple_link/link.dart | 12 +- .../test/data/wrong_build_output/build.dart | 3 +- .../test/data/wrong_build_output_2/build.dart | 3 +- .../test/data/wrong_build_output_3/build.dart | 3 +- .../data/wrong_namespace_asset/build.dart | 5 +- .../bin/native_add_app/data_asset_build.json | 3 + .../bin/native_add_app/data_asset_link.json | 3 - .../example/native_add_library/build.dart | 5 +- .../example/native_add_library/link.dart | 10 +- .../lib/native_assets_cli.dart | 2 + .../lib/src/model/asset.dart | 16 ++- .../lib/src/model/build_config.dart | 19 ++- .../lib/src/model/build_output.dart | 23 +--- .../lib/src/model/build_type.dart | 49 +------ .../lib/src/model/link_input.dart | 121 +++++++++++++----- .../lib/src/model/pipeline_config.dart | 21 +++ .../test/model/build_output_test.dart | 9 +- 27 files changed, 216 insertions(+), 193 deletions(-) create mode 100644 pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_build.json delete mode 100644 pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_link.json create mode 100644 pkgs/native_assets_cli/lib/src/model/pipeline_config.dart diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 209e88986..aacd312ac 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -48,7 +48,7 @@ class NativeAssetsBuildRunner { String? runPackageName, }) async => _run( - step: const BuildStep(), + step: PipelineStep.build, linkModePreference: linkModePreference, target: target, workingDirectory: workingDirectory, @@ -70,11 +70,12 @@ class NativeAssetsBuildRunner { int? targetAndroidNdkApi, required bool includeParentEnvironment, PackageLayout? packageLayout, + Uri? nativeAssetsDartUri, Uri? resourceIdentifiers, String? runPackageName, }) async => _run( - step: const LinkStep(), + step: PipelineStep.link, linkModePreference: LinkModePreference.dynamic, target: target, workingDirectory: workingDirectory, @@ -85,6 +86,8 @@ class NativeAssetsBuildRunner { includeParentEnvironment: includeParentEnvironment, packageLayout: packageLayout, runPackageName: runPackageName, + resourceIdentifiers: resourceIdentifiers, + nativeAssetsDartUri: nativeAssetsDartUri, ); Future _run({ @@ -98,6 +101,7 @@ class NativeAssetsBuildRunner { int? targetAndroidNdkApi, required bool includeParentEnvironment, PackageLayout? packageLayout, + Uri? nativeAssetsDartUri, Uri? resourceIdentifiers, String? runPackageName, }) async { @@ -107,30 +111,46 @@ class NativeAssetsBuildRunner { final (packages, dependencyGraph, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName); if (!planSuccess) { - return BuildResult._(assets: [], dependencies: [], success: false); + return BuildResult._( + assets: [], + dependencies: [], + success: false, + ); } final assets = []; final dependencies = []; final metadata = {}; var success = true; + final buildParentDirectory = packageLayout.dartToolNativeAssetsBuilder; for (final package in packages) { final dependencyMetadata = _metadataForPackage( packageGraph: dependencyGraph, packageName: package.name, targetMetadata: metadata, ); - final config = await _cliConfig( + final buildConfig = await _cliConfig( packageName: package.name, packageRoot: packageLayout.packageRoot(package.name), target: target, buildMode: buildMode, linkMode: linkModePreference, - buildParentDir: packageLayout.dartToolNativeAssetsBuilder, + buildParentDir: buildParentDirectory, dependencyMetadata: dependencyMetadata, cCompilerConfig: cCompilerConfig, targetIOSSdk: targetIOSSdk, targetAndroidNdkApi: targetAndroidNdkApi, ); + final PipelineConfig config; + if (step == PipelineStep.link) { + config = LinkConfigArgs( + resourceIdentifiers: resourceIdentifiers, + buildConfig: buildConfig.configFile, + builtAssets: nativeAssetsDartUri!, + ).fromArgs(); + } else { + config = buildConfig; + } + final (buildOutput, packageSuccess) = await _buildPackageCached( step, config, @@ -187,7 +207,7 @@ class NativeAssetsBuildRunner { buildParentDir: packageLayout.dartToolNativeAssetsBuilder, ); final (buildOutput, packageSuccess) = await _buildPackage( - const BuildStep(), + PipelineStep.build, config, packageLayout.packageConfigUri, workingDirectory, @@ -202,21 +222,19 @@ class NativeAssetsBuildRunner { Future<_PackageBuildRecord> _buildPackageCached( PipelineStep step, - BuildConfig config, + PipelineConfig config, Uri packageConfigUri, Uri workingDirectory, bool includeParentEnvironment, Uri? resources, ) async { - final packageName = config.packageName; final outDir = config.outDir; if (!await Directory.fromUri(outDir).exists()) { await Directory.fromUri(outDir).create(recursive: true); } final buildOutput = await BuildOutput.readFromFile( - outDir: outDir, - step: step, + outputUri: config.output, ); final lastBuilt = buildOutput?.timestamp.roundDownToSeconds() ?? DateTime.fromMillisecondsSinceEpoch(0); @@ -224,7 +242,7 @@ class NativeAssetsBuildRunner { final lastChange = await dependencies?.lastModified() ?? DateTime.now(); if (lastBuilt.isAfter(lastChange)) { - logger.info('Skipping build for $packageName in $outDir. ' + logger.info('Skipping build for ${config.packageName} in $outDir. ' 'Last build on $lastBuilt, last input change on $lastChange.'); // All build flags go into [outDir]. Therefore we do not have to check // here whether the config is equal. @@ -243,31 +261,26 @@ class NativeAssetsBuildRunner { Future<_PackageBuildRecord> _buildPackage( PipelineStep step, - BuildConfig config, + PipelineConfig config, Uri packageConfigUri, Uri workingDirectory, bool includeParentEnvironment, Uri? resources, ) async { - final outDir = config.outDir; - final configFile = outDir.resolve('../config.yaml'); - final script = config.packageRoot.resolve(step.scriptName); + final configFile = config.configFile; final configFileContents = config.toYamlString(); logger.info('config.yaml contents: $configFileContents'); await File.fromUri(configFile).writeAsString(configFileContents); - final buildOutputFile = File.fromUri(outDir.resolve(step.outputName)); + final buildOutputFile = File.fromUri(config.output); if (await buildOutputFile.exists()) { // Ensure we'll never read outdated build results. await buildOutputFile.delete(); } + final arguments = [ '--packages=${packageConfigUri.toFilePath()}', - script.toFilePath(), - ...step.args( - configFile, - outDir.resolve(const BuildStep().outputName), - resources, - ), + config.script.toFilePath(), + '--config=${configFile.toFilePath()}', ]; final result = await runProcess( workingDirectory: workingDirectory, @@ -288,7 +301,7 @@ class NativeAssetsBuildRunner { logger.severe( ''' Building native assets for package:${config.packageName} failed. -${step.scriptName} returned with exit code: ${result.exitCode}. +${config.script} returned with exit code: ${result.exitCode}. To reproduce run: $commandString stderr: @@ -302,7 +315,7 @@ ${result.stdout} try { final buildOutput = - await BuildOutput.readFromFile(outDir: outDir, step: step); + await BuildOutput.readFromFile(outputUri: config.outDir); final assets = buildOutput?.assets ?? []; success &= validateAssetsPackage(assets, config.packageName); return (buildOutput ?? BuildOutput(), success); diff --git a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart index 941ba8a00..f72cc57db 100644 --- a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart +++ b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart @@ -104,8 +104,8 @@ class PackageLayout { } late final Future> packagesWithNativeBuild = - packagesWithNativeAssets(const BuildStep()); + packagesWithNativeAssets(PipelineStep.build); late final Future> packagesWithNativeLink = - packagesWithNativeAssets(const LinkStep()); + packagesWithNativeAssets(PipelineStep.link); } diff --git a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart index 9b88569a8..2f914cd28 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart @@ -90,7 +90,7 @@ void main() async { final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = - await packageLayout.packagesWithNativeAssets(const BuildStep()); + await packageLayout.packagesWithNativeAssets(PipelineStep.build); final nativeAssetsBuildPlanner = await NativeAssetsBuildPlanner.fromRootPackageRoot( rootPackageRoot: nativeAddUri, diff --git a/pkgs/native_assets_builder/test/data/cyclic_package_1/build.dart b/pkgs/native_assets_builder/test/data/cyclic_package_1/build.dart index 4307c7b44..607d95c9b 100644 --- a/pkgs/native_assets_builder/test/data/cyclic_package_1/build.dart +++ b/pkgs/native_assets_builder/test/data/cyclic_package_1/build.dart @@ -7,8 +7,5 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); final buildOutput = BuildOutput(); - await buildOutput.writeToFile( - outDir: buildConfig.outDir, - step: const BuildStep(), - ); + await buildOutput.writeToFile(output: buildConfig.output); } diff --git a/pkgs/native_assets_builder/test/data/cyclic_package_2/build.dart b/pkgs/native_assets_builder/test/data/cyclic_package_2/build.dart index 4307c7b44..607d95c9b 100644 --- a/pkgs/native_assets_builder/test/data/cyclic_package_2/build.dart +++ b/pkgs/native_assets_builder/test/data/cyclic_package_2/build.dart @@ -7,8 +7,5 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); final buildOutput = BuildOutput(); - await buildOutput.writeToFile( - outDir: buildConfig.outDir, - step: const BuildStep(), - ); + await buildOutput.writeToFile(output: buildConfig.output); } diff --git a/pkgs/native_assets_builder/test/data/native_add/build.dart b/pkgs/native_assets_builder/test/data/native_add/build.dart index b4869feb5..d6323ba17 100644 --- a/pkgs/native_assets_builder/test/data/native_add/build.dart +++ b/pkgs/native_assets_builder/test/data/native_add/build.dart @@ -27,8 +27,5 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile( - outDir: buildConfig.outDir, - step: const BuildStep(), - ); + await buildOutput.writeToFile(output: buildConfig.output); } diff --git a/pkgs/native_assets_builder/test/data/native_add_add_source/build.dart b/pkgs/native_assets_builder/test/data/native_add_add_source/build.dart index bd49e7bc4..fdf10bede 100644 --- a/pkgs/native_assets_builder/test/data/native_add_add_source/build.dart +++ b/pkgs/native_assets_builder/test/data/native_add_add_source/build.dart @@ -28,8 +28,5 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile( - outDir: buildConfig.outDir, - step: const BuildStep(), - ); + await buildOutput.writeToFile(output: buildConfig.output); } diff --git a/pkgs/native_assets_builder/test/data/native_subtract/build.dart b/pkgs/native_assets_builder/test/data/native_subtract/build.dart index 6104e36fd..8bb50c583 100644 --- a/pkgs/native_assets_builder/test/data/native_subtract/build.dart +++ b/pkgs/native_assets_builder/test/data/native_subtract/build.dart @@ -27,8 +27,5 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile( - outDir: buildConfig.outDir, - step: const BuildStep(), - ); + await buildOutput.writeToFile(output: buildConfig.output); } diff --git a/pkgs/native_assets_builder/test/data/package_with_metadata/build.dart b/pkgs/native_assets_builder/test/data/package_with_metadata/build.dart index 80d168ca0..8daf35642 100644 --- a/pkgs/native_assets_builder/test/data/package_with_metadata/build.dart +++ b/pkgs/native_assets_builder/test/data/package_with_metadata/build.dart @@ -12,8 +12,5 @@ void main(List args) async { 'some_int': 3, }), ); - await buildOutput.writeToFile( - outDir: buildConfig.outDir, - step: const BuildStep(), - ); + await buildOutput.writeToFile(output: buildConfig.output); } diff --git a/pkgs/native_assets_builder/test/data/simple_link/build.dart b/pkgs/native_assets_builder/test/data/simple_link/build.dart index d2f5dfe2a..384be4da2 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/build.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/build.dart @@ -24,8 +24,5 @@ void main(List args) async { ); }, )); - await buildOutput.writeToFile( - outDir: buildConfig.outDir, - step: const BuildStep(), - ); + await buildOutput.writeToFile(output: buildConfig.output); } diff --git a/pkgs/native_assets_builder/test/data/simple_link/link.dart b/pkgs/native_assets_builder/test/data/simple_link/link.dart index 2b5125200..25f24bf75 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/link.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/link.dart @@ -6,18 +6,16 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { print('RUN LINKING'); - final linkInput = await LinkConfig.fromArgs(args); + final linkConfig = await LinkConfig.fromArgs(args); final shakenAssets = MyResourceShaker().shake( - linkInput.buildOutput.assets, - linkInput.resourceIdentifiers, + linkConfig.assets, + linkConfig.resourceIdentifiers, ); final linkOutput = BuildOutput(assets: shakenAssets); - await linkOutput.writeToFile( - outDir: linkInput.buildConfig.outDir, - step: const LinkStep(), - ); + + await linkOutput.writeToFile(output: linkConfig.output); } class MyResourceShaker { diff --git a/pkgs/native_assets_builder/test/data/wrong_build_output/build.dart b/pkgs/native_assets_builder/test/data/wrong_build_output/build.dart index 78deec341..108eed514 100644 --- a/pkgs/native_assets_builder/test/data/wrong_build_output/build.dart +++ b/pkgs/native_assets_builder/test/data/wrong_build_output/build.dart @@ -8,8 +8,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); - await File.fromUri(buildConfig.outDir.resolve(const BuildStep().outputName)) - .writeAsString(_wrongContents); + await File.fromUri(buildConfig.output).writeAsString(_wrongContents); } const _wrongContents = ''' diff --git a/pkgs/native_assets_builder/test/data/wrong_build_output_2/build.dart b/pkgs/native_assets_builder/test/data/wrong_build_output_2/build.dart index 5e346efc7..3d78a6231 100644 --- a/pkgs/native_assets_builder/test/data/wrong_build_output_2/build.dart +++ b/pkgs/native_assets_builder/test/data/wrong_build_output_2/build.dart @@ -8,8 +8,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); - await File.fromUri(buildConfig.outDir.resolve(const BuildStep().outputName)) - .writeAsString(_wrongContents); + await File.fromUri(buildConfig.output).writeAsString(_wrongContents); } const _wrongContents = ''' diff --git a/pkgs/native_assets_builder/test/data/wrong_build_output_3/build.dart b/pkgs/native_assets_builder/test/data/wrong_build_output_3/build.dart index 5fc5815e8..12ba78f5d 100644 --- a/pkgs/native_assets_builder/test/data/wrong_build_output_3/build.dart +++ b/pkgs/native_assets_builder/test/data/wrong_build_output_3/build.dart @@ -8,8 +8,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); - await File.fromUri(buildConfig.outDir.resolve(const BuildStep().outputName)) - .writeAsString(_rightContents); + await File.fromUri(buildConfig.output).writeAsString(_rightContents); exit(1); } diff --git a/pkgs/native_assets_builder/test/data/wrong_namespace_asset/build.dart b/pkgs/native_assets_builder/test/data/wrong_namespace_asset/build.dart index d2483a976..74b07ea86 100644 --- a/pkgs/native_assets_builder/test/data/wrong_namespace_asset/build.dart +++ b/pkgs/native_assets_builder/test/data/wrong_namespace_asset/build.dart @@ -20,8 +20,5 @@ void main(List args) async { ), ], ); - await buildOutput.writeToFile( - outDir: buildConfig.outDir, - step: const BuildStep(), - ); + await buildOutput.writeToFile(output: buildConfig.output); } diff --git a/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_build.json b/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_build.json new file mode 100644 index 000000000..31e035263 --- /dev/null +++ b/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_build.json @@ -0,0 +1,3 @@ +{ + "leroy": "jenkins" +} \ No newline at end of file diff --git a/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_link.json b/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_link.json deleted file mode 100644 index 5f3204ac3..000000000 --- a/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_link.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "freddy": "mercury" -} \ No newline at end of file diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart index d8104ffe0..0cd6fc1db 100644 --- a/pkgs/native_assets_cli/example/native_add_library/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -44,8 +44,5 @@ void main(List args) async { // Write the output according to the native assets protocol so that Dart or // Flutter can find the native assets produced by this script. - await buildOutput.writeToFile( - outDir: buildConfig.outDir, - step: const BuildStep(), - ); + await buildOutput.writeToFile(output: buildConfig.output); } diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index 32b7bad12..6560bbd7e 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -7,10 +7,9 @@ import 'package:native_assets_cli/native_assets_cli.dart'; const packageName = 'native_add_library'; void main(List args) async { final linkInput = await LinkConfig.fromArgs(args); - final buildConfig = await BuildConfig.fromArgs(args); final shakenAssets = MyResourceShaker().shake( - linkInput.buildOutput.assets, + linkInput.assets, linkInput.resourceIdentifiers, ); @@ -20,16 +19,13 @@ void main(List args) async { linkMode: LinkMode.dynamic, target: Target.androidArm, path: AssetAbsolutePath( - buildConfig.packageRoot.resolve('data_asset_link.json'), + linkInput.buildConfig.packageRoot.resolve('data_asset_link.json'), ), ), ); final linkOutput = BuildOutput(assets: shakenAssets); - await linkOutput.writeToFile( - outDir: linkInput.buildConfig.outDir, - step: LinkStep(), - ); + await linkOutput.writeToFile(output: linkInput.output); } class MyResourceShaker { diff --git a/pkgs/native_assets_cli/lib/native_assets_cli.dart b/pkgs/native_assets_cli/lib/native_assets_cli.dart index f321b6b3f..59c127551 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli.dart @@ -17,5 +17,7 @@ export 'src/model/link_input.dart'; export 'src/model/link_mode.dart'; export 'src/model/link_mode_preference.dart'; export 'src/model/metadata.dart'; +export 'src/model/pipeline_config.dart'; export 'src/model/resources.dart'; export 'src/model/target.dart'; +export 'src/utils/yaml.dart'; diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index fa5d12ebf..6e75b44ee 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -2,6 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'package:collection/collection.dart'; import 'package:yaml/yaml.dart'; import '../utils/uri.dart'; @@ -197,11 +198,11 @@ class Asset { final AssetPath path; /// The step at which the asset should be written to file. - /// * [BuildStep] - The asset is written after `build.dart` has run. - /// * [LinkStep] - The asset is written after `link.dart` has run. + /// * [PipelineStep.build] - The asset is written after `build.dart` has run. + /// * [PipelineStep.build] - The asset is written after `link.dart` has run. /// /// In particular, an asset which is created by `build.dart` and then further - /// modified by `link.dart` should be marked as [LinkStep]. + /// modified by `link.dart` should be marked as [PipelineStep.link]. final PipelineStep step; Asset({ @@ -209,7 +210,7 @@ class Asset { required this.linkMode, required this.target, required this.path, - this.step = const BuildStep(), + this.step = PipelineStep.build, }); factory Asset.fromYaml(YamlMap yamlMap) => Asset( @@ -217,6 +218,9 @@ class Asset { path: AssetPath.fromYaml(as(yamlMap[_pathKey])), target: Target.fromString(as(yamlMap[_targetKey])), linkMode: LinkMode.fromName(as(yamlMap[_linkModeKey])), + step: PipelineStep.values.firstWhereOrNull( + (step) => step.name == as(yamlMap[_step])) ?? + PipelineStep.build, ); static List listFromYamlString(String yaml) { @@ -270,7 +274,7 @@ class Asset { _linkModeKey: linkMode.name, _pathKey: path.toYaml(), _targetKey: target.toString(), - _step: step.toYaml(), + _step: step.name, }; Map> toDartConst() => { @@ -317,7 +321,7 @@ extension AssetIterable on Iterable { Map toNativeAssetsFileEncoding() => { 'format-version': [1, 0, 0], - 'native-assets': toDartConst(), + 'native-assets': toYaml(), }; String toNativeAssetsFile() => yamlEncode(toNativeAssetsFileEncoding()); diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index 93e0d9d45..b2b3077c7 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -13,18 +13,31 @@ import 'package:pub_semver/pub_semver.dart'; import '../utils/map.dart'; import '../utils/yaml.dart'; import 'build_mode.dart'; +import 'build_type.dart'; import 'ios_sdk.dart'; import 'link_mode_preference.dart'; import 'metadata.dart'; +import 'pipeline_config.dart'; import 'target.dart'; -class BuildConfig { +class BuildConfig extends PipelineConfig { + @override + Uri get script => packageRoot.resolve(PipelineStep.build.scriptName); + + @override + String get outputName => 'build_output.yaml'; + + @override + Uri get configFile => outDir.resolve('../config.yaml'); + /// The folder in which all output and intermediate artifacts should be /// placed. + @override Uri get outDir => _outDir; late final Uri _outDir; /// The name of the package the native assets are built for. + @override String get packageName => _packageName; late final String _packageName; @@ -32,6 +45,7 @@ class BuildConfig { /// /// Often a package's native assets are built because a package is a /// dependency of another. For this it is convenient to know the packageRoot. + @override Uri get packageRoot => _packageRoot; late final Uri _packageRoot; @@ -477,6 +491,7 @@ class BuildConfig { return result.sortOnKey(); } + @override Map toYaml() { late Map cCompilerYaml; if (!dryRun) { @@ -507,8 +522,6 @@ class BuildConfig { }.sortOnKey(); } - String toYamlString() => yamlEncode(toYaml()); - @override bool operator ==(Object other) { if (other is! BuildConfig) { diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index 9f36d3904..19d390e1b 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -13,7 +13,6 @@ import '../utils/file.dart'; import '../utils/map.dart'; import '../utils/yaml.dart'; import 'asset.dart'; -import 'build_type.dart'; import 'dependencies.dart'; import 'metadata.dart'; @@ -96,28 +95,18 @@ class BuildOutput { /// representation in the protocol. static Version version = Version(1, 0, 0); - /// Writes the YAML file from [outDir]/[step]. - static Future readFromFile({ - required Uri outDir, - required PipelineStep step, - }) async { - final buildOutputUri = outDir.resolve(step.outputName); - final buildOutputFile = File.fromUri(buildOutputUri); + /// Writes the YAML file from [outputUri]. + static Future readFromFile({required Uri outputUri}) async { + final buildOutputFile = File.fromUri(outputUri); if (!await buildOutputFile.exists()) { return null; } return BuildOutput.fromYamlString(await buildOutputFile.readAsString()); } - /// Writes the [toYamlString] to [outDir]/[step]. - Future writeToFile({ - required Uri outDir, - required PipelineStep step, - }) async { - final buildOutputUri = outDir.resolve(step.outputName); - await File.fromUri(buildOutputUri) - .writeAsStringCreateDirectory(toYamlString()); - } + /// Writes the [toYamlString] to [output]. + Future writeToFile({required Uri output}) async => + await File.fromUri(output).writeAsStringCreateDirectory(toYamlString()); @override String toString() => toYamlString(); diff --git a/pkgs/native_assets_cli/lib/src/model/build_type.dart b/pkgs/native_assets_cli/lib/src/model/build_type.dart index 1f3673b68..6cd7c6fcd 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_type.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_type.dart @@ -1,51 +1,12 @@ -import 'link_input.dart'; - /// The two types of scripts which are hooked into the compilation process. /// /// The `build.dart` script runs before, and the `link.dart` script after /// compilation. -sealed class PipelineStep { - String get scriptName; - String get outputName; - List args(Uri configFile, Uri buildOutput, Uri? resources); - - const PipelineStep(); - - String toYaml(); -} - -final class LinkStep extends PipelineStep { - @override - String get outputName => 'link_output.yaml'; - - @override - String get scriptName => 'link.dart'; - - @override - List args(Uri configFile, Uri buildOutput, Uri? resources) => - LinkConfig.toArgs(buildOutput, configFile, resources); - - const LinkStep(); - - @override - String toYaml() => 'link'; -} - -final class BuildStep extends PipelineStep { - @override - String get outputName => 'build_output.yaml'; - - @override - String get scriptName => 'build.dart'; - - @override - @override - List args(Uri configFile, Uri buildOutput, Uri? resources) => [ - '--config=${configFile.toFilePath()}', - ]; +enum PipelineStep { + link('link.dart'), + build('build.dart'); - const BuildStep(); + final String scriptName; - @override - String toYaml() => 'build'; + const PipelineStep(this.scriptName); } diff --git a/pkgs/native_assets_cli/lib/src/model/link_input.dart b/pkgs/native_assets_cli/lib/src/model/link_input.dart index 9dd56f6b2..3a82c1e68 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_input.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_input.dart @@ -2,63 +2,116 @@ import 'dart:io'; import 'package:args/args.dart'; import 'package:cli_config/cli_config.dart'; +import 'package:yaml/yaml.dart'; +import 'asset.dart'; import 'build_config.dart'; import 'build_output.dart'; +import 'build_type.dart'; +import 'pipeline_config.dart'; import 'resources.dart'; /// The input to the linking script. /// /// It consists of the [buildConfig] already passed to the build script, the -/// result of the build step [buildOutput], and the [resourceIdentifiers] +/// result of the build step [assets], and the [resourceIdentifiers] /// generated during the kernel compilation. -class LinkConfig { - final Map buildOutput; +class LinkConfig extends PipelineConfig { + final List assets; final BuildConfig buildConfig; final ResourceIdentifiers? resourceIdentifiers; - LinkConfig._({ - required this.buildOutput, + final LinkConfigArgs _args; + + LinkConfig( + this._args, { + required this.assets, required this.buildConfig, required this.resourceIdentifiers, }); /// Generate the [LinkConfig] from the input arguments to the linking script. static Future fromArgs(List args) async { - final argParser = ArgParser() - ..addOption('build_output') - ..addOption('resource_identifiers') - ..addOption('config'); + final argParser = ArgParser()..addOption('link_config'); final results = argParser.parse(args); - final config = Config.fromConfigFileContents( - fileContents: File(results['config'] as String).readAsStringSync()); - final buildConfig = BuildConfig.fromConfig(config); - - final buildOutputPath = results['build_output'] as String; - final buildOutput = - BuildOutput.fromYamlString(File(buildOutputPath).readAsStringSync()); - - final resourceIdentifierPath = results['resource_identifiers'] as String?; - ResourceIdentifiers? resourceIdentifiers; - if (resourceIdentifierPath != null) { - resourceIdentifiers = - ResourceIdentifiers.fromFile(resourceIdentifierPath); + final yaml = + loadYaml(File(results['link_config'] as String).readAsStringSync()) + as YamlMap; + + return LinkConfigArgs.fromYaml(yaml).fromArgs(); + } + + @override + Uri get configFile => outDir.resolve('../link_config.yaml'); + + @override + Uri get outDir => buildConfig.outDir; + + @override + String get outputName => 'link_output.yaml'; + + @override + String get packageName => buildConfig.packageName; + + @override + Uri get packageRoot => buildConfig.packageRoot; + + @override + Map toYaml() => _args.toYaml(); + + @override + Uri get script => packageRoot.resolve(PipelineStep.link.scriptName); +} + +class LinkConfigArgs { + final Uri? resourceIdentifiers; + final Uri buildConfig; + final Uri builtAssets; + + LinkConfigArgs({ + required this.resourceIdentifiers, + required this.buildConfig, + required this.builtAssets, + }); + + factory LinkConfigArgs.fromYaml(YamlMap yaml) { + final resourceUri = yaml['resource_identifiers'] as String? ?? ''; + return LinkConfigArgs( + resourceIdentifiers: Uri.tryParse(resourceUri), + buildConfig: Uri.parse(yaml['build_config'] as String), + builtAssets: Uri.parse(yaml['built_assets'] as String), + ); + } + + LinkConfig fromArgs() { + final assetsYaml = + loadYaml(File(builtAssets.path).readAsStringSync()) as YamlMap; + final assetYamlList = assetsYaml['native-assets'] as YamlList; + final assets = Asset.listFromYamlList(assetYamlList); + final config = BuildConfig.fromConfig( + Config.fromConfigFileContents( + fileContents: File(buildConfig.path).readAsStringSync(), + ), + ); + + ResourceIdentifiers? resources; + if (resourceIdentifiers != null) { + resources = ResourceIdentifiers.fromFile(resourceIdentifiers!.path); } - return LinkConfig._( - buildConfig: buildConfig, - buildOutput: buildOutput, - resourceIdentifiers: resourceIdentifiers, + return LinkConfig( + this, + assets: assets, + buildConfig: config, + resourceIdentifiers: resources, ); } - static List toArgs( - Uri buildOutput, Uri buildConfig, Uri? resources) => - [ - '--config=${buildConfig.toFilePath()}', - '--build_output=${buildOutput.toFilePath()}', - if (resources != null) - '--resource_identifiers=${resources.toFilePath()}', - ]; + Map toYaml() => { + if (resourceIdentifiers != null) + 'resource_identifiers': resourceIdentifiers!, + 'assets': builtAssets, + 'build_config': buildConfig, + }; } diff --git a/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart b/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart new file mode 100644 index 000000000..cb8650227 --- /dev/null +++ b/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart @@ -0,0 +1,21 @@ +import '../utils/yaml.dart'; + +abstract class PipelineConfig { + Uri get configFile; + + Uri get output => outDir.resolve(outputName); + + Uri get outDir; + + Uri get script; + + Map toYaml(); + + String toYamlString() => yamlEncode(toYaml()); + + String get packageName; + + Uri get packageRoot; + + String get outputName; +} diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index d7108734f..eeb04389d 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -86,9 +86,12 @@ version: ${BuildOutput.version}'''; test('BuildOutput.readFromFile BuildOutput.writeToFile', () async { final outDir = tempUri.resolve('out_dir/'); - await buildOutput.writeToFile(outDir: outDir, step: const BuildStep()); - final buildOutput2 = - await BuildOutput.readFromFile(outDir: outDir, step: const BuildStep()); + await buildOutput.writeToFile( + output: outDir.resolve('build_output.yaml'), + ); + final buildOutput2 = await BuildOutput.readFromFile( + outputUri: outDir.resolve('build_output.yaml'), + ); expect(buildOutput2, buildOutput); }); From a9967d17d4d354977892e576c2f35d5290a104ca Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 16 Jan 2024 16:00:17 +0100 Subject: [PATCH 025/187] Fixes --- .../src/package_layout/package_layout.dart | 2 +- .../test/build_runner/build_planner_test.dart | 2 +- .../example/native_add_library/build.dart | 2 +- .../example/native_add_library/link.dart | 2 +- .../example/use_dart_api/build.dart | 2 +- .../lib/native_assets_cli.dart | 2 + .../lib/native_assets_cli_internal.dart | 3 ++ .../lib/src/api/build_output.dart | 2 +- .../lib/src/api/link_config.dart | 52 +++++++++++++++++++ .../lib/src/{model => api}/resources.dart | 0 .../lib/src/model/asset.dart | 2 +- .../lib/src/model/build_config.dart | 2 +- .../lib/src/model/build_output.dart | 6 +-- .../lib/src/model/link_input.dart | 27 ++++------ .../{build_type.dart => pipeline_step.dart} | 0 .../test/model/build_output_test.dart | 4 +- 16 files changed, 78 insertions(+), 32 deletions(-) create mode 100644 pkgs/native_assets_cli/lib/src/api/link_config.dart rename pkgs/native_assets_cli/lib/src/{model => api}/resources.dart (100%) rename pkgs/native_assets_cli/lib/src/model/{build_type.dart => pipeline_step.dart} (100%) diff --git a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart index f72cc57db..26034d8c9 100644 --- a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart +++ b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart @@ -4,7 +4,7 @@ import 'dart:io'; -import 'package:native_assets_cli/native_assets_cli.dart'; +import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:package_config/package_config.dart'; /// Directory layout for dealing with native assets. diff --git a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart index 2f914cd28..6f4e18c5e 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart @@ -6,7 +6,7 @@ import 'dart:io'; import 'package:native_assets_builder/native_assets_builder.dart'; import 'package:native_assets_builder/src/build_runner/build_planner.dart'; -import 'package:native_assets_cli/native_assets_cli.dart'; +import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:test/test.dart'; import '../helpers.dart'; diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart index 0cd6fc1db..428cfea49 100644 --- a/pkgs/native_assets_cli/example/native_add_library/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -44,5 +44,5 @@ void main(List args) async { // Write the output according to the native assets protocol so that Dart or // Flutter can find the native assets produced by this script. - await buildOutput.writeToFile(output: buildConfig.output); + await buildOutput.writeToFile(outFile: buildConfig.outDir); } diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index 6560bbd7e..ab64998c9 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -25,7 +25,7 @@ void main(List args) async { ); final linkOutput = BuildOutput(assets: shakenAssets); - await linkOutput.writeToFile(output: linkInput.output); + await linkOutput.writeToFile(outFile: linkInput.outDir); } class MyResourceShaker { diff --git a/pkgs/native_assets_cli/example/use_dart_api/build.dart b/pkgs/native_assets_cli/example/use_dart_api/build.dart index 10380ec58..bc3bd7ec1 100644 --- a/pkgs/native_assets_cli/example/use_dart_api/build.dart +++ b/pkgs/native_assets_cli/example/use_dart_api/build.dart @@ -28,5 +28,5 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile(outFile: buildConfig.outDir); } diff --git a/pkgs/native_assets_cli/lib/native_assets_cli.dart b/pkgs/native_assets_cli/lib/native_assets_cli.dart index b46aa7031..89d8b2176 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli.dart @@ -12,7 +12,9 @@ export 'src/api/build_mode.dart'; export 'src/api/build_output.dart'; export 'src/api/dependencies.dart'; export 'src/api/ios_sdk.dart'; +export 'src/api/link_config.dart'; export 'src/api/link_mode.dart'; export 'src/api/link_mode_preference.dart'; export 'src/api/metadata.dart'; +export 'src/api/resources.dart'; export 'src/api/target.dart'; diff --git a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart index a28dd9caa..98e388087 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart @@ -13,7 +13,10 @@ export 'src/model/build_mode.dart'; export 'src/model/build_output.dart'; export 'src/model/dependencies.dart'; export 'src/model/ios_sdk.dart'; +export 'src/model/link_input.dart'; export 'src/model/link_mode.dart'; export 'src/model/link_mode_preference.dart'; export 'src/model/metadata.dart'; +export 'src/model/pipeline_config.dart'; +export 'src/model/pipeline_step.dart'; export 'src/model/target.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/build_output.dart b/pkgs/native_assets_cli/lib/src/api/build_output.dart index 8c93ffb11..ede515224 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_output.dart @@ -47,5 +47,5 @@ abstract class BuildOutput { /// representation in the protocol. static Version get version => model.BuildOutput.version; - Future writeToFile({required Uri outDir}); + Future writeToFile({required Uri outFile}); } diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart new file mode 100644 index 000000000..24a0048e5 --- /dev/null +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -0,0 +1,52 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. +import 'dart:io'; + +import 'package:args/args.dart'; +import 'package:yaml/yaml.dart'; + +import '../model/link_input.dart'; +import '../model/pipeline_config.dart'; +import 'asset.dart'; +import 'build_config.dart'; +import 'resources.dart'; + +abstract class LinkConfig extends PipelineConfig { + /// Generate the [LinkConfig] from the input arguments to the linking script. + static Future fromArgs(List args) async { + final argParser = ArgParser()..addOption('link_config'); + + final results = argParser.parse(args); + final yaml = + loadYaml(File(results['link_config'] as String).readAsStringSync()) + as YamlMap; + + return LinkConfigArgs.fromYaml(yaml).fromArgs(); + } + + @override + Uri get configFile; + + @override + Uri get outDir; + + @override + String get outputName; + + @override + String get packageName; + + @override + Uri get packageRoot; + + @override + Map toYaml(); + + @override + Uri get script; + + List get assets; + BuildConfig get buildConfig; + ResourceIdentifiers? get resourceIdentifiers; +} diff --git a/pkgs/native_assets_cli/lib/src/model/resources.dart b/pkgs/native_assets_cli/lib/src/api/resources.dart similarity index 100% rename from pkgs/native_assets_cli/lib/src/model/resources.dart rename to pkgs/native_assets_cli/lib/src/api/resources.dart diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index afa83ad74..fb91e5e42 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -7,7 +7,7 @@ import 'package:yaml/yaml.dart'; import '../api/asset.dart' as api; import '../utils/yaml.dart'; -import 'build_type.dart'; +import 'pipeline_step.dart'; import 'link_mode.dart'; import 'target.dart'; diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index 6265d14f9..b9e62650a 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -14,11 +14,11 @@ import '../api/build_config.dart' as api; import '../utils/map.dart'; import '../utils/yaml.dart'; import 'build_mode.dart'; -import 'build_type.dart'; import 'ios_sdk.dart'; import 'link_mode_preference.dart'; import 'metadata.dart'; import 'pipeline_config.dart'; +import 'pipeline_step.dart'; import 'target.dart'; class BuildConfig extends PipelineConfig implements api.BuildConfig { diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index 82601a707..9986c81b7 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -109,10 +109,10 @@ class BuildOutput implements api.BuildOutput { return BuildOutput.fromYamlString(await buildOutputFile.readAsString()); } - /// Writes the [toYamlString] to [outDir]. + /// Writes the [toYamlString] to [outFile]. @override - Future writeToFile({required Uri outDir}) async { - await File.fromUri(outDir).writeAsStringCreateDirectory(toYamlString()); + Future writeToFile({required Uri outFile}) async { + await File.fromUri(outFile).writeAsStringCreateDirectory(toYamlString()); } @override diff --git a/pkgs/native_assets_cli/lib/src/model/link_input.dart b/pkgs/native_assets_cli/lib/src/model/link_input.dart index 3a82c1e68..3c4ae8760 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_input.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_input.dart @@ -1,24 +1,27 @@ import 'dart:io'; -import 'package:args/args.dart'; import 'package:cli_config/cli_config.dart'; import 'package:yaml/yaml.dart'; +import '../api/link_config.dart' as api; +import '../api/resources.dart'; import 'asset.dart'; import 'build_config.dart'; -import 'build_output.dart'; -import 'build_type.dart'; -import 'pipeline_config.dart'; -import 'resources.dart'; +import 'pipeline_step.dart'; /// The input to the linking script. /// /// It consists of the [buildConfig] already passed to the build script, the /// result of the build step [assets], and the [resourceIdentifiers] /// generated during the kernel compilation. -class LinkConfig extends PipelineConfig { +class LinkConfig extends api.LinkConfig { + @override final List assets; + + @override final BuildConfig buildConfig; + + @override final ResourceIdentifiers? resourceIdentifiers; final LinkConfigArgs _args; @@ -30,18 +33,6 @@ class LinkConfig extends PipelineConfig { required this.resourceIdentifiers, }); - /// Generate the [LinkConfig] from the input arguments to the linking script. - static Future fromArgs(List args) async { - final argParser = ArgParser()..addOption('link_config'); - - final results = argParser.parse(args); - final yaml = - loadYaml(File(results['link_config'] as String).readAsStringSync()) - as YamlMap; - - return LinkConfigArgs.fromYaml(yaml).fromArgs(); - } - @override Uri get configFile => outDir.resolve('../link_config.yaml'); diff --git a/pkgs/native_assets_cli/lib/src/model/build_type.dart b/pkgs/native_assets_cli/lib/src/model/pipeline_step.dart similarity index 100% rename from pkgs/native_assets_cli/lib/src/model/build_type.dart rename to pkgs/native_assets_cli/lib/src/model/pipeline_step.dart diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index 0f7ad5ae1..27c858dba 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -86,9 +86,7 @@ version: ${BuildOutput.version}'''; test('BuildOutput.readFromFile BuildOutput.writeToFile', () async { final outDir = tempUri.resolve('out_dir/'); - await buildOutput.writeToFile( - output: outDir.resolve('build_output.yaml'), - ); + await buildOutput.writeToFile(outFile: outDir.resolve('build_output.yaml')); final buildOutput2 = await BuildOutput.readFromFile( outputUri: outDir.resolve('build_output.yaml'), ); From ffd28a451d6706494ddddebdbf2cbb86b61f6634 Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 16 Jan 2024 16:05:33 +0100 Subject: [PATCH 026/187] More fixes --- .../native_assets_cli/example/native_add_library/build.dart | 2 +- pkgs/native_assets_cli/example/native_add_library/link.dart | 2 +- pkgs/native_assets_cli/example/use_dart_api/build.dart | 2 +- pkgs/native_assets_cli/lib/src/api/build_config.dart | 6 +++++- pkgs/native_assets_cli/lib/src/api/build_output.dart | 2 +- pkgs/native_assets_cli/lib/src/model/build_output.dart | 6 +++--- pkgs/native_assets_cli/test/model/build_output_test.dart | 2 +- 7 files changed, 13 insertions(+), 9 deletions(-) diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart index 428cfea49..9ba094202 100644 --- a/pkgs/native_assets_cli/example/native_add_library/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -44,5 +44,5 @@ void main(List args) async { // Write the output according to the native assets protocol so that Dart or // Flutter can find the native assets produced by this script. - await buildOutput.writeToFile(outFile: buildConfig.outDir); + await buildOutput.writeToFile(output: buildConfig.outDir); } diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index ab64998c9..a5197b6a5 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -25,7 +25,7 @@ void main(List args) async { ); final linkOutput = BuildOutput(assets: shakenAssets); - await linkOutput.writeToFile(outFile: linkInput.outDir); + await linkOutput.writeToFile(output: linkInput.outDir); } class MyResourceShaker { diff --git a/pkgs/native_assets_cli/example/use_dart_api/build.dart b/pkgs/native_assets_cli/example/use_dart_api/build.dart index bc3bd7ec1..98a3f0bb7 100644 --- a/pkgs/native_assets_cli/example/use_dart_api/build.dart +++ b/pkgs/native_assets_cli/example/use_dart_api/build.dart @@ -28,5 +28,5 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile(outFile: buildConfig.outDir); + await buildOutput.writeToFile(output: buildConfig.outDir); } diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index b9de44e64..63808278e 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -11,6 +11,7 @@ import '../model/build_config.dart' as model; import '../model/build_mode.dart' as model; import '../model/ios_sdk.dart' as model; import '../model/link_mode_preference.dart' as model; +import '../model/pipeline_config.dart'; import '../model/target.dart' as model; import 'build_mode.dart'; import 'ios_sdk.dart'; @@ -18,18 +19,21 @@ import 'link_mode_preference.dart'; import 'metadata.dart'; import 'target.dart'; -abstract class BuildConfig { +abstract class BuildConfig extends PipelineConfig { /// The folder in which all output and intermediate artifacts should be /// placed. + @override Uri get outDir; /// The name of the package the native assets are built for. + @override String get packageName; /// The root of the package the native assets are built for. /// /// Often a package's native assets are built because a package is a /// dependency of another. For this it is convenient to know the packageRoot. + @override Uri get packageRoot; /// The target being compiled for. diff --git a/pkgs/native_assets_cli/lib/src/api/build_output.dart b/pkgs/native_assets_cli/lib/src/api/build_output.dart index ede515224..a210ffd61 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_output.dart @@ -47,5 +47,5 @@ abstract class BuildOutput { /// representation in the protocol. static Version get version => model.BuildOutput.version; - Future writeToFile({required Uri outFile}); + Future writeToFile({required Uri output}); } diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index 9986c81b7..5c40940ce 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -109,10 +109,10 @@ class BuildOutput implements api.BuildOutput { return BuildOutput.fromYamlString(await buildOutputFile.readAsString()); } - /// Writes the [toYamlString] to [outFile]. + /// Writes the [toYamlString] to [output]. @override - Future writeToFile({required Uri outFile}) async { - await File.fromUri(outFile).writeAsStringCreateDirectory(toYamlString()); + Future writeToFile({required Uri output}) async { + await File.fromUri(output).writeAsStringCreateDirectory(toYamlString()); } @override diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index 27c858dba..cfd78481f 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -86,7 +86,7 @@ version: ${BuildOutput.version}'''; test('BuildOutput.readFromFile BuildOutput.writeToFile', () async { final outDir = tempUri.resolve('out_dir/'); - await buildOutput.writeToFile(outFile: outDir.resolve('build_output.yaml')); + await buildOutput.writeToFile(output: outDir.resolve('build_output.yaml')); final buildOutput2 = await BuildOutput.readFromFile( outputUri: outDir.resolve('build_output.yaml'), ); From 3e68ba59a836a61c232cf99349b2f7b70db582bb Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 16 Jan 2024 16:05:40 +0100 Subject: [PATCH 027/187] sort deps --- pkgs/native_assets_cli/lib/src/model/asset.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index fb91e5e42..d4e827f98 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -7,8 +7,8 @@ import 'package:yaml/yaml.dart'; import '../api/asset.dart' as api; import '../utils/yaml.dart'; -import 'pipeline_step.dart'; import 'link_mode.dart'; +import 'pipeline_step.dart'; import 'target.dart'; abstract class AssetPath implements api.AssetPath { From 137aaedafd8771c77693a8f22ab8456c293dd6b5 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 17 Jan 2024 09:17:45 +0100 Subject: [PATCH 028/187] refactor test --- pkgs/native_assets_builder/test/build_runner/link_test.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart index 84fad808e..98d5a8798 100644 --- a/pkgs/native_assets_builder/test/build_runner/link_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -31,13 +31,14 @@ void main() async { capturedLogs: logMessages, copyAssets: false, ); + expect(buildResult.assets.length, 4); + final linkResult = await link( packageUri, logger, dartExecutable, capturedLogs: logMessages, ); - expect(buildResult.assets.length, 4); expect(linkResult.assets.length, 2); } }); From 3ba833fcd798d6a2051c50864937ba8328144a64 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 17 Jan 2024 09:59:43 +0100 Subject: [PATCH 029/187] Fix bugs --- .../lib/src/build_runner/build_runner.dart | 24 +++++++++---------- .../test/build_runner/build_runner_test.dart | 15 ++++++++---- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 572a78745..fde763e7f 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -108,7 +108,7 @@ class NativeAssetsBuildRunner { packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); final packagesWithBuild = await packageLayout.packagesWithNativeAssets(step); - final (packages, dependencyGraph, planSuccess) = await _plannedPackages( + final (buildPlan, packageGraph, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName); if (!planSuccess) { return BuildResult._( @@ -121,10 +121,9 @@ class NativeAssetsBuildRunner { final dependencies = []; final metadata = {}; var success = true; - final buildParentDirectory = packageLayout.dartToolNativeAssetsBuilder; - for (final package in packages) { + for (final package in buildPlan) { final dependencyMetadata = _metadataForPackage( - packageGraph: dependencyGraph, + packageGraph: packageGraph, packageName: package.name, targetMetadata: metadata, ); @@ -134,7 +133,7 @@ class NativeAssetsBuildRunner { target: target, buildMode: buildMode, linkMode: linkModePreference, - buildParentDir: buildParentDirectory, + buildParentDir: packageLayout.dartToolNativeAssetsBuilder, dependencyMetadata: dependencyMetadata, cCompilerConfig: cCompilerConfig, targetIOSSdk: targetIOSSdk, @@ -188,7 +187,7 @@ class NativeAssetsBuildRunner { }) async { packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); final packagesWithBuild = await packageLayout.packagesWithNativeBuild; - final (packages, _, planSuccess) = await _plannedPackages( + final (buildPlan, _, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName, @@ -198,7 +197,7 @@ class NativeAssetsBuildRunner { } final assets = []; var success = true; - for (final package in packages) { + for (final package in buildPlan) { final config = await _cliConfigDryRun( packageName: package.name, packageRoot: packageLayout.packageRoot(package.name), @@ -236,12 +235,11 @@ class NativeAssetsBuildRunner { final buildOutput = await BuildOutput.readFromFile( outputUri: config.output, ); - final lastBuilt = buildOutput?.timestamp.roundDownToSeconds() ?? - DateTime.fromMillisecondsSinceEpoch(0); + final lastBuilt = buildOutput?.timestamp.roundDownToSeconds(); final dependencies = buildOutput?.dependencies; - final lastChange = await dependencies?.lastModified() ?? DateTime.now(); + final lastChange = await dependencies?.lastModified(); - if (lastBuilt.isAfter(lastChange)) { + if (lastBuilt?.isAfter(lastChange ?? DateTime.now()) ?? false) { logger.info('Skipping build for ${config.packageName} in $outDir. ' 'Last build on $lastBuilt, last input change on $lastChange.'); // All build flags go into [outDir]. Therefore we do not have to check @@ -315,7 +313,7 @@ ${result.stdout} try { final buildOutput = - await BuildOutput.readFromFile(outputUri: config.outDir); + await BuildOutput.readFromFile(outputUri: config.output); final assets = buildOutput?.assets ?? []; success &= validateAssetsPackage(assets, config.packageName); return (buildOutput ?? BuildOutput(), success); @@ -452,7 +450,7 @@ build_output.yaml contained a format error. PackageLayout packageLayout, String? runPackageName, ) async { - if (packagesWithNativeAssets.length <= 1 && runPackageName != null) { + if (packagesWithNativeAssets.length <= 1 && runPackageName == null) { final dependencyGraph = PackageGraph({ for (final p in packagesWithNativeAssets) p.name: [], }); diff --git a/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart b/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart index f6fff2cd8..b6f9e71d7 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart @@ -5,6 +5,7 @@ import 'dart:io'; import 'package:native_assets_builder/native_assets_builder.dart'; +import 'package:test/expect.dart'; import 'package:test/test.dart'; import '../helpers.dart'; @@ -27,12 +28,16 @@ void main() async { // Trigger a build, should invoke build for libraries with native assets. { final logMessages = []; - final result = await build(packageUri, logger, dartExecutable, - capturedLogs: logMessages); + final result = await build( + packageUri, + logger, + dartExecutable, + capturedLogs: logMessages, + ); expect( - logMessages.join('\n'), - stringContainsInOrder( - ['native_add${Platform.pathSeparator}build.dart'])); + logMessages.join('\n'), + contains('native_add${Platform.pathSeparator}build.dart'), + ); expect(result.assets.length, 1); } From 771d54705a2608044ea495bcc83e098a81c373b6 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 18 Jan 2024 12:35:10 +0100 Subject: [PATCH 030/187] Works now, but ugly --- .../test/build_runner/build_runner_test.dart | 1 - .../test/build_runner/helpers.dart | 4 ++- .../test/build_runner/link_test.dart | 18 +++++++++++++ .../test/data/manifest.yaml | 5 ++++ .../test/data/simple_link/build.dart | 5 +--- .../test/data/simple_link/link.dart | 18 +++++++++++-- .../lib/native_assets_cli_internal.dart | 2 +- .../lib/src/api/link_config.dart | 9 +++---- .../{link_input.dart => link_config.dart} | 25 ++++++++++--------- 9 files changed, 61 insertions(+), 26 deletions(-) rename pkgs/native_assets_cli/lib/src/model/{link_input.dart => link_config.dart} (76%) diff --git a/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart b/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart index b6f9e71d7..1fc531e78 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart @@ -5,7 +5,6 @@ import 'dart:io'; import 'package:native_assets_builder/native_assets_builder.dart'; -import 'package:test/expect.dart'; import 'package:test/test.dart'; import '../helpers.dart'; diff --git a/pkgs/native_assets_builder/test/build_runner/helpers.dart b/pkgs/native_assets_builder/test/build_runner/helpers.dart index a3c068817..e74199624 100644 --- a/pkgs/native_assets_builder/test/build_runner/helpers.dart +++ b/pkgs/native_assets_builder/test/build_runner/helpers.dart @@ -75,7 +75,8 @@ Future build( Future link( Uri packageUri, Logger logger, - Uri dartExecutable, { + Uri dartExecutable, + Uri nativeAssetsUri, { LinkModePreference linkModePreference = LinkModePreference.dynamic, CCompilerConfig? cCompilerConfig, bool includeParentEnvironment = true, @@ -97,6 +98,7 @@ Future link( cCompilerConfig: cCompilerConfig, includeParentEnvironment: includeParentEnvironment, packageLayout: packageLayout, + nativeAssetsDartUri: nativeAssetsUri, ); capturedLogs?.add('ASSETS: ${result.assets}'); if (result.success) { diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart index 98d5a8798..57872c242 100644 --- a/pkgs/native_assets_builder/test/build_runner/link_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -2,6 +2,10 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'dart:io'; + +import 'package:native_assets_builder/src/build_runner/build_runner.dart'; +import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:test/test.dart'; import '../helpers.dart'; @@ -33,10 +37,14 @@ void main() async { ); expect(buildResult.assets.length, 4); + final nativeAssetsUri = + await _writeBuiltAssetsToFile(buildResult, tempUri); + final linkResult = await link( packageUri, logger, dartExecutable, + nativeAssetsUri, capturedLogs: logMessages, ); expect(linkResult.assets.length, 2); @@ -44,3 +52,13 @@ void main() async { }); }); } + +Future _writeBuiltAssetsToFile( + BuildResult buildResult, Uri tempUri) async { + final nativeAssetsFile = buildResult.assets.toYamlString(); + final nativeAssetsUri = tempUri.resolve('built_assets.yaml'); + final file = File(nativeAssetsUri.toFilePath()); + await file.create(); + await file.writeAsString(nativeAssetsFile); + return nativeAssetsUri; +} diff --git a/pkgs/native_assets_builder/test/data/manifest.yaml b/pkgs/native_assets_builder/test/data/manifest.yaml index 4c15cae2c..8d9167ae9 100644 --- a/pkgs/native_assets_builder/test/data/manifest.yaml +++ b/pkgs/native_assets_builder/test/data/manifest.yaml @@ -36,6 +36,11 @@ - simple_link/pubspec.yaml - simple_link/pubspec_overrides.yaml - simple_link/build.dart +- simple_link/link.dart +- simple_link/data_0.json +- simple_link/data_1.json +- simple_link/data_2.json +- simple_link/data_3.json - package_with_metadata/pubspec_overrides.yaml - some_dev_dep/bin/some_dev_dep.dart - some_dev_dep/pubspec.yaml diff --git a/pkgs/native_assets_builder/test/data/simple_link/build.dart b/pkgs/native_assets_builder/test/data/simple_link/build.dart index 384be4da2..d97aab52e 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/build.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/build.dart @@ -2,14 +2,11 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'dart:io'; - import 'package:native_assets_cli/native_assets_cli.dart'; const packageName = 'simple_link'; void main(List args) async { - print('RUN BUILDING'); final buildConfig = await BuildConfig.fromArgs(args); final buildOutput = BuildOutput( assets: List.generate( @@ -20,7 +17,7 @@ void main(List args) async { id: 'package:$packageName/$filename', linkMode: LinkMode.dynamic, target: buildConfig.target, - path: AssetAbsolutePath(Uri.file(File(filename).absolute.path)), + path: AssetAbsolutePath(Uri.file(filename)), ); }, )); diff --git a/pkgs/native_assets_builder/test/data/simple_link/link.dart b/pkgs/native_assets_builder/test/data/simple_link/link.dart index 25f24bf75..9cf31ee9b 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/link.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/link.dart @@ -2,10 +2,12 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'dart:io'; + import 'package:native_assets_cli/native_assets_cli.dart'; +import 'package:path/path.dart' as p; void main(List args) async { - print('RUN LINKING'); final linkConfig = await LinkConfig.fromArgs(args); final shakenAssets = MyResourceShaker().shake( @@ -13,7 +15,19 @@ void main(List args) async { linkConfig.resourceIdentifiers, ); - final linkOutput = BuildOutput(assets: shakenAssets); + final linkOutput = BuildOutput( + assets: shakenAssets.map((e) { + final path = e.path as AssetAbsolutePath; + final filePath = path.uri.toFilePath(); + final uri = linkConfig.buildConfig.outDir.resolve(p.basename(filePath)); + File(filePath).copySync(uri.toFilePath()); + return Asset( + id: e.id, + linkMode: e.linkMode, + target: e.target, + path: AssetAbsolutePath(uri), + ); + }).toList()); await linkOutput.writeToFile(output: linkConfig.output); } diff --git a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart index 98e388087..9af27e3c7 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart @@ -13,7 +13,7 @@ export 'src/model/build_mode.dart'; export 'src/model/build_output.dart'; export 'src/model/dependencies.dart'; export 'src/model/ios_sdk.dart'; -export 'src/model/link_input.dart'; +export 'src/model/link_config.dart'; export 'src/model/link_mode.dart'; export 'src/model/link_mode_preference.dart'; export 'src/model/metadata.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 24a0048e5..155de3bf4 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -6,7 +6,7 @@ import 'dart:io'; import 'package:args/args.dart'; import 'package:yaml/yaml.dart'; -import '../model/link_input.dart'; +import '../model/link_config.dart'; import '../model/pipeline_config.dart'; import 'asset.dart'; import 'build_config.dart'; @@ -15,12 +15,11 @@ import 'resources.dart'; abstract class LinkConfig extends PipelineConfig { /// Generate the [LinkConfig] from the input arguments to the linking script. static Future fromArgs(List args) async { - final argParser = ArgParser()..addOption('link_config'); + final argParser = ArgParser()..addOption('config'); final results = argParser.parse(args); - final yaml = - loadYaml(File(results['link_config'] as String).readAsStringSync()) - as YamlMap; + final yaml = loadYaml(File(results['config'] as String).readAsStringSync()) + as YamlMap; return LinkConfigArgs.fromYaml(yaml).fromArgs(); } diff --git a/pkgs/native_assets_cli/lib/src/model/link_input.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart similarity index 76% rename from pkgs/native_assets_cli/lib/src/model/link_input.dart rename to pkgs/native_assets_cli/lib/src/model/link_config.dart index 3c4ae8760..a5717de77 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_input.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -60,6 +60,10 @@ class LinkConfigArgs { final Uri buildConfig; final Uri builtAssets; + static const resourceIdentifierKey = 'resource_identifiers'; + static const assetsKey = 'assets'; + static const buildConfigKey = 'build_config'; + LinkConfigArgs({ required this.resourceIdentifiers, required this.buildConfig, @@ -67,25 +71,22 @@ class LinkConfigArgs { }); factory LinkConfigArgs.fromYaml(YamlMap yaml) { - final resourceUri = yaml['resource_identifiers'] as String? ?? ''; + final resourceUri = yaml[resourceIdentifierKey] as String?; return LinkConfigArgs( - resourceIdentifiers: Uri.tryParse(resourceUri), - buildConfig: Uri.parse(yaml['build_config'] as String), - builtAssets: Uri.parse(yaml['built_assets'] as String), + resourceIdentifiers: resourceUri != null ? Uri.parse(resourceUri) : null, + buildConfig: Uri.parse(yaml[buildConfigKey] as String), + builtAssets: Uri.parse(yaml[assetsKey] as String), ); } LinkConfig fromArgs() { - final assetsYaml = - loadYaml(File(builtAssets.path).readAsStringSync()) as YamlMap; - final assetYamlList = assetsYaml['native-assets'] as YamlList; - final assets = Asset.listFromYamlList(assetYamlList); + final assets = + Asset.listFromYamlString(File(builtAssets.path).readAsStringSync()); final config = BuildConfig.fromConfig( Config.fromConfigFileContents( fileContents: File(buildConfig.path).readAsStringSync(), ), ); - ResourceIdentifiers? resources; if (resourceIdentifiers != null) { resources = ResourceIdentifiers.fromFile(resourceIdentifiers!.path); @@ -101,8 +102,8 @@ class LinkConfigArgs { Map toYaml() => { if (resourceIdentifiers != null) - 'resource_identifiers': resourceIdentifiers!, - 'assets': builtAssets, - 'build_config': buildConfig, + resourceIdentifierKey: resourceIdentifiers!.toFilePath(), + assetsKey: builtAssets.toFilePath(), + buildConfigKey: buildConfig.toFilePath(), }; } From 5837168c459a47a03443759500ee3befc9a49389 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 18 Jan 2024 16:08:28 +0100 Subject: [PATCH 031/187] Remove noise --- .github/workflows/native.yaml | 1 - .../test/data/simple_link/build.dart | 16 +++++++++++----- .../bin/native_add_app/data_asset_build.json | 2 +- .../native_add_library/data_asset_build.json | 2 +- .../native_add_library/data_asset_link.json | 2 +- .../native_assets_cli/test/model/asset_test.dart | 6 +----- .../test/model/build_output_test.dart | 2 -- 7 files changed, 15 insertions(+), 16 deletions(-) diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml index 028852abc..50fb32158 100644 --- a/.github/workflows/native.yaml +++ b/.github/workflows/native.yaml @@ -28,7 +28,6 @@ on: jobs: build: strategy: - fail-fast: false matrix: os: [ubuntu, macos, windows] sdk: [stable, dev] diff --git a/pkgs/native_assets_builder/test/data/simple_link/build.dart b/pkgs/native_assets_builder/test/data/simple_link/build.dart index d97aab52e..a60ba2600 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/build.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/build.dart @@ -8,18 +8,24 @@ const packageName = 'simple_link'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); + final buildOutput = BuildOutput( assets: List.generate( 4, (index) { final filename = 'data_$index.json'; - return Asset( - id: 'package:$packageName/$filename', - linkMode: LinkMode.dynamic, - target: buildConfig.target, - path: AssetAbsolutePath(Uri.file(filename)), + return Asset( // Change to DataAsset + id: filename,// The BuildState knows the package name. + linkMode: LinkMode.dynamic, //remove + target: buildConfig.target, //remove + path: AssetAbsolutePath(Uri.file(filename)), // change to URI only ); }, )); await buildOutput.writeToFile(output: buildConfig.output); } + + +assetBuild(args, (state) => state.add(name, path)); + +add(String name)=>Asset(id: package + name) diff --git a/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_build.json b/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_build.json index 31e035263..697721f13 100644 --- a/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_build.json +++ b/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_build.json @@ -1,3 +1,3 @@ { "leroy": "jenkins" -} \ No newline at end of file +} diff --git a/pkgs/native_assets_cli/example/native_add_library/data_asset_build.json b/pkgs/native_assets_cli/example/native_add_library/data_asset_build.json index 31e035263..697721f13 100644 --- a/pkgs/native_assets_cli/example/native_add_library/data_asset_build.json +++ b/pkgs/native_assets_cli/example/native_add_library/data_asset_build.json @@ -1,3 +1,3 @@ { "leroy": "jenkins" -} \ No newline at end of file +} diff --git a/pkgs/native_assets_cli/example/native_add_library/data_asset_link.json b/pkgs/native_assets_cli/example/native_add_library/data_asset_link.json index 5f3204ac3..1a7d134dd 100644 --- a/pkgs/native_assets_cli/example/native_add_library/data_asset_link.json +++ b/pkgs/native_assets_cli/example/native_add_library/data_asset_link.json @@ -1,3 +1,3 @@ { "freddy": "mercury" -} \ No newline at end of file +} diff --git a/pkgs/native_assets_cli/test/model/asset_test.dart b/pkgs/native_assets_cli/test/model/asset_test.dart index 2dbc88ebd..127bbb896 100644 --- a/pkgs/native_assets_cli/test/model/asset_test.dart +++ b/pkgs/native_assets_cli/test/model/asset_test.dart @@ -62,33 +62,29 @@ void main() { path_type: system uri: ${foo3Uri.toFilePath()} target: android_x64 - type: code - id: foo4 link_mode: dynamic path: path_type: executable target: android_x64 - type: code - id: foo5 link_mode: dynamic path: path_type: process target: android_x64 - type: code - id: bar link_mode: static path: path_type: absolute uri: ${barUri.toFilePath()} target: linux_arm64 - type: code - id: bla link_mode: dynamic path: path_type: absolute uri: ${blaUri.toFilePath()} target: windows_x64 - type: code'''; + '''; test('asset yaml', () { final yaml = assets.toYamlString(); diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index cfd78481f..e9900ba06 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -50,14 +50,12 @@ assets: path_type: absolute uri: path/to/libfoo.so target: android_x64 - type: code - id: foo2 link_mode: dynamic path: path_type: system uri: path/to/libfoo2.so target: android_x64 - type: code dependencies: - path/to/file.ext metadata: From 13384f859f4d028e0fabe49e41eb3daba74d8c31 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 18 Jan 2024 16:10:55 +0100 Subject: [PATCH 032/187] Fix build.dart --- .../test/data/simple_link/build.dart | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/pkgs/native_assets_builder/test/data/simple_link/build.dart b/pkgs/native_assets_builder/test/data/simple_link/build.dart index a60ba2600..bdeddacb8 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/build.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/build.dart @@ -14,8 +14,9 @@ void main(List args) async { 4, (index) { final filename = 'data_$index.json'; - return Asset( // Change to DataAsset - id: filename,// The BuildState knows the package name. + return Asset( + // Change to DataAsset + id: 'package:$packageName/filename', // The BuildState knows the package name. linkMode: LinkMode.dynamic, //remove target: buildConfig.target, //remove path: AssetAbsolutePath(Uri.file(filename)), // change to URI only @@ -24,8 +25,3 @@ void main(List args) async { )); await buildOutput.writeToFile(output: buildConfig.output); } - - -assetBuild(args, (state) => state.add(name, path)); - -add(String name)=>Asset(id: package + name) From 43de992a39500b572a013f2b84de42b740b927a6 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 18 Jan 2024 16:29:45 +0100 Subject: [PATCH 033/187] Remove list of assets --- .../lib/src/build_runner/build_runner.dart | 15 ++---- .../test/build_runner/helpers.dart | 5 +- .../test/build_runner/link_test.dart | 18 -------- .../test/data/simple_link/link.dart | 2 +- .../example/native_add_library/link.dart | 2 +- .../lib/src/api/link_config.dart | 6 +-- .../lib/src/model/link_config.dart | 46 +++++++++---------- 7 files changed, 32 insertions(+), 62 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index fde763e7f..8cc47bacf 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -70,7 +70,6 @@ class NativeAssetsBuildRunner { int? targetAndroidNdkApi, required bool includeParentEnvironment, PackageLayout? packageLayout, - Uri? nativeAssetsDartUri, Uri? resourceIdentifiers, String? runPackageName, }) async => @@ -87,7 +86,6 @@ class NativeAssetsBuildRunner { packageLayout: packageLayout, runPackageName: runPackageName, resourceIdentifiers: resourceIdentifiers, - nativeAssetsDartUri: nativeAssetsDartUri, ); Future _run({ @@ -101,7 +99,6 @@ class NativeAssetsBuildRunner { int? targetAndroidNdkApi, required bool includeParentEnvironment, PackageLayout? packageLayout, - Uri? nativeAssetsDartUri, Uri? resourceIdentifiers, String? runPackageName, }) async { @@ -141,10 +138,9 @@ class NativeAssetsBuildRunner { ); final PipelineConfig config; if (step == PipelineStep.link) { - config = LinkConfigArgs( - resourceIdentifiers: resourceIdentifiers, - buildConfig: buildConfig.configFile, - builtAssets: nativeAssetsDartUri!, + config = await LinkConfigArgs( + resourceIdentifierUri: resourceIdentifiers, + buildConfigUri: buildConfig.configFile, ).fromArgs(); } else { config = buildConfig; @@ -232,9 +228,8 @@ class NativeAssetsBuildRunner { await Directory.fromUri(outDir).create(recursive: true); } - final buildOutput = await BuildOutput.readFromFile( - outputUri: config.output, - ); + final buildOutput = + await BuildOutput.readFromFile(outputUri: config.output); final lastBuilt = buildOutput?.timestamp.roundDownToSeconds(); final dependencies = buildOutput?.dependencies; final lastChange = await dependencies?.lastModified(); diff --git a/pkgs/native_assets_builder/test/build_runner/helpers.dart b/pkgs/native_assets_builder/test/build_runner/helpers.dart index e74199624..22d252041 100644 --- a/pkgs/native_assets_builder/test/build_runner/helpers.dart +++ b/pkgs/native_assets_builder/test/build_runner/helpers.dart @@ -75,8 +75,7 @@ Future build( Future link( Uri packageUri, Logger logger, - Uri dartExecutable, - Uri nativeAssetsUri, { + Uri dartExecutable, { LinkModePreference linkModePreference = LinkModePreference.dynamic, CCompilerConfig? cCompilerConfig, bool includeParentEnvironment = true, @@ -98,8 +97,8 @@ Future link( cCompilerConfig: cCompilerConfig, includeParentEnvironment: includeParentEnvironment, packageLayout: packageLayout, - nativeAssetsDartUri: nativeAssetsUri, ); + capturedLogs?.add('ASSETS: ${result.assets}'); if (result.success) { await expectAssetsExist(result.assets); diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart index 57872c242..98d5a8798 100644 --- a/pkgs/native_assets_builder/test/build_runner/link_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -2,10 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'dart:io'; - -import 'package:native_assets_builder/src/build_runner/build_runner.dart'; -import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:test/test.dart'; import '../helpers.dart'; @@ -37,14 +33,10 @@ void main() async { ); expect(buildResult.assets.length, 4); - final nativeAssetsUri = - await _writeBuiltAssetsToFile(buildResult, tempUri); - final linkResult = await link( packageUri, logger, dartExecutable, - nativeAssetsUri, capturedLogs: logMessages, ); expect(linkResult.assets.length, 2); @@ -52,13 +44,3 @@ void main() async { }); }); } - -Future _writeBuiltAssetsToFile( - BuildResult buildResult, Uri tempUri) async { - final nativeAssetsFile = buildResult.assets.toYamlString(); - final nativeAssetsUri = tempUri.resolve('built_assets.yaml'); - final file = File(nativeAssetsUri.toFilePath()); - await file.create(); - await file.writeAsString(nativeAssetsFile); - return nativeAssetsUri; -} diff --git a/pkgs/native_assets_builder/test/data/simple_link/link.dart b/pkgs/native_assets_builder/test/data/simple_link/link.dart index 9cf31ee9b..1426f9a27 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/link.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/link.dart @@ -11,7 +11,7 @@ void main(List args) async { final linkConfig = await LinkConfig.fromArgs(args); final shakenAssets = MyResourceShaker().shake( - linkConfig.assets, + linkConfig.buildOutput.assets, linkConfig.resourceIdentifiers, ); diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index a5197b6a5..d9b3dc828 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -9,7 +9,7 @@ void main(List args) async { final linkInput = await LinkConfig.fromArgs(args); final shakenAssets = MyResourceShaker().shake( - linkInput.assets, + linkInput.buildOutput.assets, linkInput.resourceIdentifiers, ); diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 155de3bf4..c813fe037 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -6,11 +6,9 @@ import 'dart:io'; import 'package:args/args.dart'; import 'package:yaml/yaml.dart'; +import '../../native_assets_cli.dart'; import '../model/link_config.dart'; import '../model/pipeline_config.dart'; -import 'asset.dart'; -import 'build_config.dart'; -import 'resources.dart'; abstract class LinkConfig extends PipelineConfig { /// Generate the [LinkConfig] from the input arguments to the linking script. @@ -45,7 +43,7 @@ abstract class LinkConfig extends PipelineConfig { @override Uri get script; - List get assets; + BuildOutput get buildOutput; BuildConfig get buildConfig; ResourceIdentifiers? get resourceIdentifiers; } diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index a5717de77..48bcb9792 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -5,18 +5,18 @@ import 'package:yaml/yaml.dart'; import '../api/link_config.dart' as api; import '../api/resources.dart'; -import 'asset.dart'; import 'build_config.dart'; +import 'build_output.dart'; import 'pipeline_step.dart'; /// The input to the linking script. /// /// It consists of the [buildConfig] already passed to the build script, the -/// result of the build step [assets], and the [resourceIdentifiers] +/// result of the build step [buildOutput], and the [resourceIdentifiers] /// generated during the kernel compilation. class LinkConfig extends api.LinkConfig { @override - final List assets; + final BuildOutput buildOutput; @override final BuildConfig buildConfig; @@ -28,7 +28,7 @@ class LinkConfig extends api.LinkConfig { LinkConfig( this._args, { - required this.assets, + required this.buildOutput, required this.buildConfig, required this.resourceIdentifiers, }); @@ -56,54 +56,50 @@ class LinkConfig extends api.LinkConfig { } class LinkConfigArgs { - final Uri? resourceIdentifiers; - final Uri buildConfig; - final Uri builtAssets; + final Uri? resourceIdentifierUri; + final Uri buildConfigUri; static const resourceIdentifierKey = 'resource_identifiers'; - static const assetsKey = 'assets'; static const buildConfigKey = 'build_config'; LinkConfigArgs({ - required this.resourceIdentifiers, - required this.buildConfig, - required this.builtAssets, + required this.resourceIdentifierUri, + required this.buildConfigUri, }); factory LinkConfigArgs.fromYaml(YamlMap yaml) { final resourceUri = yaml[resourceIdentifierKey] as String?; return LinkConfigArgs( - resourceIdentifiers: resourceUri != null ? Uri.parse(resourceUri) : null, - buildConfig: Uri.parse(yaml[buildConfigKey] as String), - builtAssets: Uri.parse(yaml[assetsKey] as String), + resourceIdentifierUri: + resourceUri != null ? Uri.parse(resourceUri) : null, + buildConfigUri: Uri.parse(yaml[buildConfigKey] as String), ); } - LinkConfig fromArgs() { - final assets = - Asset.listFromYamlString(File(builtAssets.path).readAsStringSync()); + Future fromArgs() async { final config = BuildConfig.fromConfig( Config.fromConfigFileContents( - fileContents: File(buildConfig.path).readAsStringSync(), + fileContents: File(buildConfigUri.path).readAsStringSync(), ), ); ResourceIdentifiers? resources; - if (resourceIdentifiers != null) { - resources = ResourceIdentifiers.fromFile(resourceIdentifiers!.path); + if (resourceIdentifierUri != null) { + resources = ResourceIdentifiers.fromFile(resourceIdentifierUri!.path); } + final readFromFile = + await BuildOutput.readFromFile(outputUri: config.output); return LinkConfig( this, - assets: assets, + buildOutput: readFromFile!, buildConfig: config, resourceIdentifiers: resources, ); } Map toYaml() => { - if (resourceIdentifiers != null) - resourceIdentifierKey: resourceIdentifiers!.toFilePath(), - assetsKey: builtAssets.toFilePath(), - buildConfigKey: buildConfig.toFilePath(), + if (resourceIdentifierUri != null) + resourceIdentifierKey: resourceIdentifierUri!.toFilePath(), + buildConfigKey: buildConfigUri.toFilePath(), }; } From 275ce4c44e181601a61566aaae0696b67fe7df90 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Jan 2024 10:11:34 +0100 Subject: [PATCH 034/187] Add error message --- pkgs/native_assets_cli/lib/src/model/link_config.dart | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 48bcb9792..2189e404d 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -77,9 +77,15 @@ class LinkConfigArgs { } Future fromArgs() async { + final buildConfigFile = File(buildConfigUri.path); + if (!buildConfigFile.existsSync()) { + throw UnsupportedError( + 'A link.dart script needs a build.dart to be executed'); + } + final readAsStringSync = buildConfigFile.readAsStringSync(); final config = BuildConfig.fromConfig( Config.fromConfigFileContents( - fileContents: File(buildConfigUri.path).readAsStringSync(), + fileContents: readAsStringSync, ), ); ResourceIdentifiers? resources; From fa50a910d6e18e0c156929d36bea9016c8fd482b Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Jan 2024 10:42:51 +0100 Subject: [PATCH 035/187] Refactorings --- .../lib/src/build_runner/build_runner.dart | 31 +++--- .../test/build_runner/helpers.dart | 94 ++++++++++--------- 2 files changed, 63 insertions(+), 62 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 8cc47bacf..35ec59694 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -108,11 +108,7 @@ class NativeAssetsBuildRunner { final (buildPlan, packageGraph, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName); if (!planSuccess) { - return BuildResult._( - assets: [], - dependencies: [], - success: false, - ); + return BuildResult._failure(); } final assets = []; final dependencies = []; @@ -189,7 +185,7 @@ class NativeAssetsBuildRunner { runPackageName, ); if (!planSuccess) { - return BuildResult._(assets: [], dependencies: [], success: false); + return BuildResult._failure(); } final assets = []; var success = true; @@ -230,16 +226,17 @@ class NativeAssetsBuildRunner { final buildOutput = await BuildOutput.readFromFile(outputUri: config.output); - final lastBuilt = buildOutput?.timestamp.roundDownToSeconds(); - final dependencies = buildOutput?.dependencies; - final lastChange = await dependencies?.lastModified(); - - if (lastBuilt?.isAfter(lastChange ?? DateTime.now()) ?? false) { - logger.info('Skipping build for ${config.packageName} in $outDir. ' - 'Last build on $lastBuilt, last input change on $lastChange.'); - // All build flags go into [outDir]. Therefore we do not have to check - // here whether the config is equal. - return (buildOutput!, true); + if (buildOutput != null) { + final lastBuilt = buildOutput.timestamp.roundDownToSeconds(); + final lastChange = await buildOutput.dependencies.lastModified(); + + if (lastBuilt.isAfter(lastChange)) { + logger.info('Skipping build for ${config.packageName} in $outDir. ' + 'Last build on $lastBuilt, last input change on $lastChange.'); + // All build flags go into [outDir]. Therefore we do not have to check + // here whether the config is equal. + return (buildOutput, true); + } } return await _buildPackage( @@ -492,6 +489,8 @@ final class BuildResult { required this.assets, required this.success, }) : dependencies = []; + + BuildResult._failure() : this._(assets: [], dependencies: [], success: false); } extension on DateTime { diff --git a/pkgs/native_assets_builder/test/build_runner/helpers.dart b/pkgs/native_assets_builder/test/build_runner/helpers.dart index 22d252041..3445a4389 100644 --- a/pkgs/native_assets_builder/test/build_runner/helpers.dart +++ b/pkgs/native_assets_builder/test/build_runner/helpers.dart @@ -41,36 +41,28 @@ Future build( PackageLayout? packageLayout, bool copyAssets = true, String? runPackageName, -}) async { - StreamSubscription? subscription; - if (capturedLogs != null) { - subscription = - logger.onRecord.listen((event) => capturedLogs.add(event.message)); - } - - final result = await NativeAssetsBuildRunner( - logger: logger, - dartExecutable: dartExecutable, - ).build( - buildMode: BuildMode.release, - linkModePreference: linkModePreference, - target: Target.current, - workingDirectory: packageUri, - cCompilerConfig: cCompilerConfig, - includeParentEnvironment: includeParentEnvironment, - packageLayout: packageLayout, - runPackageName: runPackageName, - ); - if (result.success && copyAssets) { - await expectAssetsExist(result.assets); - } - - if (subscription != null) { - await subscription.cancel(); - } - - return result; -} +}) async => + await runWithLog(capturedLogs, () async { + final result = await NativeAssetsBuildRunner( + logger: logger, + dartExecutable: dartExecutable, + ).build( + buildMode: BuildMode.release, + linkModePreference: linkModePreference, + target: Target.current, + workingDirectory: packageUri, + cCompilerConfig: cCompilerConfig, + includeParentEnvironment: includeParentEnvironment, + packageLayout: packageLayout, + runPackageName: runPackageName, + ); + + if (result.success && copyAssets) { + await expectAssetsExist(result.assets); + } + + return result; + }); Future link( Uri packageUri, @@ -81,28 +73,38 @@ Future link( bool includeParentEnvironment = true, List? capturedLogs, PackageLayout? packageLayout, -}) async { +}) async => + await runWithLog(capturedLogs, () async { + final result = await NativeAssetsBuildRunner( + logger: logger, + dartExecutable: dartExecutable, + ).link( + buildMode: BuildMode.release, + target: Target.current, + workingDirectory: packageUri, + cCompilerConfig: cCompilerConfig, + includeParentEnvironment: includeParentEnvironment, + packageLayout: packageLayout, + ); + + if (result.success) { + await expectAssetsExist(result.assets); + } + + return result; + }); + +Future runWithLog( + List? capturedLogs, + Future Function() f, +) async { StreamSubscription? subscription; if (capturedLogs != null) { subscription = logger.onRecord.listen((event) => capturedLogs.add(event.message)); } - final result = await NativeAssetsBuildRunner( - logger: logger, - dartExecutable: dartExecutable, - ).link( - buildMode: BuildMode.release, - target: Target.current, - workingDirectory: packageUri, - cCompilerConfig: cCompilerConfig, - includeParentEnvironment: includeParentEnvironment, - packageLayout: packageLayout, - ); - capturedLogs?.add('ASSETS: ${result.assets}'); - if (result.success) { - await expectAssetsExist(result.assets); - } + final result = await f(); if (subscription != null) { await subscription.cancel(); From a5b98cfef13cd7b89fa1e7e22e2e23db0fbf5979 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Jan 2024 10:48:57 +0100 Subject: [PATCH 036/187] Remove step from assets --- .../lib/src/model/asset.dart | 21 ++----------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index d4e827f98..1d704dcc6 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -2,7 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:collection/collection.dart'; import 'package:yaml/yaml.dart'; import '../api/asset.dart' as api; @@ -139,20 +138,11 @@ class Asset implements api.Asset { @override final AssetPath path; - /// The step at which the asset should be written to file. - /// * [PipelineStep.build] - The asset is written after `build.dart` has run. - /// * [PipelineStep.build] - The asset is written after `link.dart` has run. - /// - /// In particular, an asset which is created by `build.dart` and then further - /// modified by `link.dart` should be marked as [PipelineStep.link]. - final PipelineStep step; - Asset({ required this.id, required this.linkMode, required this.target, required this.path, - this.step = PipelineStep.build, }); factory Asset.fromYaml(YamlMap yamlMap) => Asset( @@ -160,9 +150,6 @@ class Asset implements api.Asset { path: AssetPath.fromYaml(as(yamlMap[_pathKey])), target: Target.fromString(as(yamlMap[_targetKey])), linkMode: LinkMode.fromName(as(yamlMap[_linkModeKey])), - step: PipelineStep.values.firstWhereOrNull( - (step) => step.name == as(yamlMap[_step])) ?? - PipelineStep.build, ); static List listFromYamlString(String yaml) { @@ -193,7 +180,6 @@ class Asset implements api.Asset { linkMode: linkMode ?? this.linkMode, target: target ?? this.target, path: path ?? this.path, - step: step ?? this.step, ); @override @@ -204,26 +190,23 @@ class Asset implements api.Asset { return other.id == id && other.linkMode == linkMode && other.target == target && - other.path == path && - other.step == step; + other.path == path; } @override - int get hashCode => Object.hash(id, linkMode, target, path, step); + int get hashCode => Object.hash(id, linkMode, target, path); Map toYaml() => { _idKey: id, _linkModeKey: linkMode.name, _pathKey: path.toYaml(), _targetKey: target.toString(), - _step: step.name, }; static const _idKey = 'id'; static const _linkModeKey = 'link_mode'; static const _pathKey = 'path'; static const _targetKey = 'target'; - static const _step = 'step'; // Future exists() => path.exists(); From fec0e77666a76a9464df2f32859c316ba72b1611 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Jan 2024 15:10:42 +0100 Subject: [PATCH 037/187] Refactorings --- .../lib/src/build_runner/build_runner.dart | 64 +++++++++++-------- .../test/build_runner/helpers.dart | 38 ++++------- .../test/data/simple_link/link.dart | 2 +- .../example/native_add_library/build.dart | 2 +- .../example/native_add_library/link.dart | 4 +- .../example/use_dart_api/build.dart | 2 +- .../lib/src/api/link_config.dart | 2 +- .../lib/src/model/asset.dart | 2 - .../lib/src/model/build_output.dart | 5 +- .../lib/src/model/link_config.dart | 7 +- .../test/model/asset_test.dart | 3 +- 11 files changed, 67 insertions(+), 64 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 35ec59694..c63459904 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -107,11 +107,10 @@ class NativeAssetsBuildRunner { await packageLayout.packagesWithNativeAssets(step); final (buildPlan, packageGraph, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName); + final buildResult = BuildResult._failure(); if (!planSuccess) { - return BuildResult._failure(); + return buildResult; } - final assets = []; - final dependencies = []; final metadata = {}; var success = true; for (final package in buildPlan) { @@ -150,16 +149,13 @@ class NativeAssetsBuildRunner { includeParentEnvironment, resourceIdentifiers, ); - assets.addAll(buildOutput.assets); - dependencies.addAll(buildOutput.dependencies.dependencies); + buildResult.add(buildOutput); success &= packageSuccess; + metadata[config.packageName] = buildOutput.metadata; } - return BuildResult._( - assets: assets, - dependencies: dependencies..sort(_uriCompare), - success: success, - ); + + return buildResult.withSuccess(success); } /// [workingDirectory] is expected to contain `.dart_tool`. @@ -184,10 +180,10 @@ class NativeAssetsBuildRunner { packageLayout, runPackageName, ); + final buildResult = BuildResult._failure(); if (!planSuccess) { - return BuildResult._failure(); + return buildResult; } - final assets = []; var success = true; for (final package in buildPlan) { final config = await _cliConfigDryRun( @@ -205,10 +201,10 @@ class NativeAssetsBuildRunner { includeParentEnvironment, null, ); - assets.addAll(buildOutput.assets); + buildResult.add(buildOutput); success &= packageSuccess; } - return BuildResult._dryrun(assets: assets, success: success); + return buildResult.withSuccess(success); } Future<_PackageBuildRecord> _buildPackageCached( @@ -305,10 +301,13 @@ ${result.stdout} try { final buildOutput = - await BuildOutput.readFromFile(outputUri: config.output); - final assets = buildOutput?.assets ?? []; - success &= validateAssetsPackage(assets, config.packageName); - return (buildOutput ?? BuildOutput(), success); + await BuildOutput.readFromFile(outputUri: config.output) ?? + BuildOutput(); + success &= validateAssetsPackage( + buildOutput.assets, + config.packageName, + ); + return (buildOutput, success); } on FormatException catch (e) { logger.severe(''' Building native assets for package:${config.packageName} failed. @@ -426,14 +425,15 @@ build_output.yaml contained a format error. .toSet() .toList() ..sort(); - final success = invalidAssetIds.isEmpty; - if (!success) { + if (invalidAssetIds.isNotEmpty) { logger.severe( '`package:$packageName` declares the following assets which do not ' 'start with `package:$packageName/`: ${invalidAssetIds.join(', ')}.', ); + return false; + } else { + return true; } - return success; } Future<(List plan, PackageGraph dependencyGraph, bool success)> @@ -485,12 +485,24 @@ final class BuildResult { required this.success, }); - BuildResult._dryrun({ - required this.assets, - required this.success, - }) : dependencies = []; + BuildResult._failure() + : this._( + assets: [], + dependencies: [], + success: false, + ); + + void add(BuildOutput buildOutput) { + assets.addAll(buildOutput.assets); + dependencies.addAll(buildOutput.dependencies.dependencies); + dependencies.sort(_uriCompare); + } - BuildResult._failure() : this._(assets: [], dependencies: [], success: false); + BuildResult withSuccess(bool success) => BuildResult._( + assets: assets, + dependencies: dependencies, + success: success, + ); } extension on DateTime { diff --git a/pkgs/native_assets_builder/test/build_runner/helpers.dart b/pkgs/native_assets_builder/test/build_runner/helpers.dart index 3445a4389..7010833e6 100644 --- a/pkgs/native_assets_builder/test/build_runner/helpers.dart +++ b/pkgs/native_assets_builder/test/build_runner/helpers.dart @@ -122,30 +122,20 @@ Future dryRun( bool includeParentEnvironment = true, List? capturedLogs, PackageLayout? packageLayout, -}) async { - StreamSubscription? subscription; - if (capturedLogs != null) { - subscription = - logger.onRecord.listen((event) => capturedLogs.add(event.message)); - } - - final result = await NativeAssetsBuildRunner( - logger: logger, - dartExecutable: dartExecutable, - ).dryBuild( - linkModePreference: linkModePreference, - targetOs: Target.current.os, - workingDirectory: packageUri, - includeParentEnvironment: includeParentEnvironment, - packageLayout: packageLayout, - ); - - if (subscription != null) { - await subscription.cancel(); - } - - return result; -} +}) async => + runWithLog(capturedLogs, () async { + final result = await NativeAssetsBuildRunner( + logger: logger, + dartExecutable: dartExecutable, + ).dryBuild( + linkModePreference: linkModePreference, + targetOs: Target.current.os, + workingDirectory: packageUri, + includeParentEnvironment: includeParentEnvironment, + packageLayout: packageLayout, + ); + return result; + }); Future expectAssetsExist(List assets) async { for (final asset in assets) { diff --git a/pkgs/native_assets_builder/test/data/simple_link/link.dart b/pkgs/native_assets_builder/test/data/simple_link/link.dart index 1426f9a27..9cf31ee9b 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/link.dart +++ b/pkgs/native_assets_builder/test/data/simple_link/link.dart @@ -11,7 +11,7 @@ void main(List args) async { final linkConfig = await LinkConfig.fromArgs(args); final shakenAssets = MyResourceShaker().shake( - linkConfig.buildOutput.assets, + linkConfig.assets, linkConfig.resourceIdentifiers, ); diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart index 9ba094202..0cd6fc1db 100644 --- a/pkgs/native_assets_cli/example/native_add_library/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -44,5 +44,5 @@ void main(List args) async { // Write the output according to the native assets protocol so that Dart or // Flutter can find the native assets produced by this script. - await buildOutput.writeToFile(output: buildConfig.outDir); + await buildOutput.writeToFile(output: buildConfig.output); } diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index d9b3dc828..6560bbd7e 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -9,7 +9,7 @@ void main(List args) async { final linkInput = await LinkConfig.fromArgs(args); final shakenAssets = MyResourceShaker().shake( - linkInput.buildOutput.assets, + linkInput.assets, linkInput.resourceIdentifiers, ); @@ -25,7 +25,7 @@ void main(List args) async { ); final linkOutput = BuildOutput(assets: shakenAssets); - await linkOutput.writeToFile(output: linkInput.outDir); + await linkOutput.writeToFile(output: linkInput.output); } class MyResourceShaker { diff --git a/pkgs/native_assets_cli/example/use_dart_api/build.dart b/pkgs/native_assets_cli/example/use_dart_api/build.dart index 98a3f0bb7..6829176d8 100644 --- a/pkgs/native_assets_cli/example/use_dart_api/build.dart +++ b/pkgs/native_assets_cli/example/use_dart_api/build.dart @@ -28,5 +28,5 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile(output: buildConfig.outDir); + await buildOutput.writeToFile(output: buildConfig.output); } diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index c813fe037..ce32d2108 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -43,7 +43,7 @@ abstract class LinkConfig extends PipelineConfig { @override Uri get script; - BuildOutput get buildOutput; + List get assets; BuildConfig get buildConfig; ResourceIdentifiers? get resourceIdentifiers; } diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index 1d704dcc6..babbed31a 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -7,7 +7,6 @@ import 'package:yaml/yaml.dart'; import '../api/asset.dart' as api; import '../utils/yaml.dart'; import 'link_mode.dart'; -import 'pipeline_step.dart'; import 'target.dart'; abstract class AssetPath implements api.AssetPath { @@ -173,7 +172,6 @@ class Asset implements api.Asset { String? id, Target? target, AssetPath? path, - PipelineStep? step, }) => Asset( id: id ?? this.id, diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index 5c40940ce..c985e667a 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -24,8 +24,10 @@ class BuildOutput implements api.BuildOutput { /// to whole seconds and caching logic compares these timestamps. @override final DateTime timestamp; + @override final List assets; + @override final Dependencies dependencies; @override @@ -106,7 +108,8 @@ class BuildOutput implements api.BuildOutput { if (!await buildOutputFile.exists()) { return null; } - return BuildOutput.fromYamlString(await buildOutputFile.readAsString()); + final yamlString = await buildOutputFile.readAsString(); + return BuildOutput.fromYamlString(yamlString); } /// Writes the [toYamlString] to [output]. diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 2189e404d..049abc03c 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -5,6 +5,7 @@ import 'package:yaml/yaml.dart'; import '../api/link_config.dart' as api; import '../api/resources.dart'; +import 'asset.dart'; import 'build_config.dart'; import 'build_output.dart'; import 'pipeline_step.dart'; @@ -16,7 +17,7 @@ import 'pipeline_step.dart'; /// generated during the kernel compilation. class LinkConfig extends api.LinkConfig { @override - final BuildOutput buildOutput; + final List assets; @override final BuildConfig buildConfig; @@ -28,7 +29,7 @@ class LinkConfig extends api.LinkConfig { LinkConfig( this._args, { - required this.buildOutput, + required this.assets, required this.buildConfig, required this.resourceIdentifiers, }); @@ -97,7 +98,7 @@ class LinkConfigArgs { await BuildOutput.readFromFile(outputUri: config.output); return LinkConfig( this, - buildOutput: readFromFile!, + assets: readFromFile!.assets, buildConfig: config, resourceIdentifiers: resources, ); diff --git a/pkgs/native_assets_cli/test/model/asset_test.dart b/pkgs/native_assets_cli/test/model/asset_test.dart index 127bbb896..a7dd3bd0c 100644 --- a/pkgs/native_assets_cli/test/model/asset_test.dart +++ b/pkgs/native_assets_cli/test/model/asset_test.dart @@ -83,8 +83,7 @@ void main() { path: path_type: absolute uri: ${blaUri.toFilePath()} - target: windows_x64 - '''; + target: windows_x64'''; test('asset yaml', () { final yaml = assets.toYamlString(); From aa547cbc209131b678b6641f7dc8016b9cbe4958 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Jan 2024 15:12:20 +0100 Subject: [PATCH 038/187] Adapt build.dart to existing link.dart --- .../example/native_add_library/build.dart | 20 ++++++++++--------- .../test/example/native_add_library_test.dart | 4 ++-- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart index 0cd6fc1db..fc30b3cf9 100644 --- a/pkgs/native_assets_cli/example/native_add_library/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -32,15 +32,17 @@ void main(List args) async { ..level = Level.ALL ..onRecord.listen((record) => print(record.message)), ); - buildOutput.assets.add( - Asset( - id: 'package:$packageName/ajsonfile', - linkMode: LinkMode.dynamic, - target: buildConfig.target, - path: AssetAbsolutePath( - buildConfig.packageRoot.resolve('data_asset_build.json')), - ), - ); + if (!buildConfig.dryRun) { + buildOutput.assets.add( + Asset( + id: 'package:$packageName/ajsonfile', + linkMode: LinkMode.dynamic, + target: buildConfig.target, + path: AssetAbsolutePath( + buildConfig.packageRoot.resolve('data_asset_build.json')), + ), + ); + } // Write the output according to the native assets protocol so that Dart or // Flutter can find the native assets produced by this script. diff --git a/pkgs/native_assets_cli/test/example/native_add_library_test.dart b/pkgs/native_assets_cli/test/example/native_add_library_test.dart index d7a0b3f84..426dce4e6 100644 --- a/pkgs/native_assets_cli/test/example/native_add_library_test.dart +++ b/pkgs/native_assets_cli/test/example/native_add_library_test.dart @@ -73,14 +73,14 @@ void main() async { final assets = buildOutput.assets; final dependencies = buildOutput.dependencies; if (dryRun) { - expect(assets.length, greaterThanOrEqualTo(1)); + expect(assets.length, greaterThanOrEqualTo(2)); expect( await File.fromUri((assets.first.path as AssetAbsolutePath).uri) .exists(), false); expect(dependencies.dependencies, []); } else { - expect(assets.length, 1); + expect(assets.length, 2); expect(await assets.allExist(), true); expect( dependencies.dependencies, From 8ed8aa5e1fc7716118e5a351dac5d38d56871995 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Jan 2024 15:21:33 +0100 Subject: [PATCH 039/187] Add dep --- pkgs/native_assets_builder/test/data/simple_link/pubspec.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/native_assets_builder/test/data/simple_link/pubspec.yaml b/pkgs/native_assets_builder/test/data/simple_link/pubspec.yaml index fcabb128b..11c652a2b 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/pubspec.yaml +++ b/pkgs/native_assets_builder/test/data/simple_link/pubspec.yaml @@ -15,3 +15,4 @@ dependencies: dev_dependencies: lints: ^3.0.0 test: ^1.23.1 + path: ^1.9.0 From b985808c83b117573606f8f9155d422467cf4c39 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Jan 2024 15:23:31 +0100 Subject: [PATCH 040/187] Adapt docs --- pkgs/native_assets_cli/lib/src/model/link_config.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 049abc03c..128d07bd8 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -13,7 +13,7 @@ import 'pipeline_step.dart'; /// The input to the linking script. /// /// It consists of the [buildConfig] already passed to the build script, the -/// result of the build step [buildOutput], and the [resourceIdentifiers] +/// [assets] from the build step, and the [resourceIdentifiers] /// generated during the kernel compilation. class LinkConfig extends api.LinkConfig { @override From b3d1d36d4d37a41ebf12d60c1e2ca3ebb9d43c3c Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Jan 2024 15:30:33 +0100 Subject: [PATCH 041/187] Run pub get --- .github/workflows/native.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml index 0bec511cf..3d9ff1918 100644 --- a/.github/workflows/native.yaml +++ b/.github/workflows/native.yaml @@ -88,6 +88,9 @@ jobs: - run: dart pub get -C test_data/package_with_metadata/ if: ${{ matrix.package == 'native_assets_builder' }} + - run: dart pub get -C test_data/simple_link/ + if: ${{ matrix.package == 'native_assets_builder' }} + - run: dart pub get -C example/native_add_app/ if: ${{ matrix.package == 'native_assets_cli' }} From ee29a5fb8721e034d2c0410058b851f0874c3d45 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Jan 2024 15:38:15 +0100 Subject: [PATCH 042/187] Move simple link data --- .../{test/data => test_data}/simple_link/bin/simple_link.dart | 0 .../{test/data => test_data}/simple_link/build.dart | 0 .../{test/data => test_data}/simple_link/data_0.json | 0 .../{test/data => test_data}/simple_link/data_1.json | 0 .../{test/data => test_data}/simple_link/data_2.json | 0 .../{test/data => test_data}/simple_link/data_3.json | 0 .../{test/data => test_data}/simple_link/link.dart | 0 .../{test/data => test_data}/simple_link/pubspec.yaml | 0 .../{test/data => test_data}/simple_link/pubspec_overrides.yaml | 2 +- 9 files changed, 1 insertion(+), 1 deletion(-) rename pkgs/native_assets_builder/{test/data => test_data}/simple_link/bin/simple_link.dart (100%) rename pkgs/native_assets_builder/{test/data => test_data}/simple_link/build.dart (100%) rename pkgs/native_assets_builder/{test/data => test_data}/simple_link/data_0.json (100%) rename pkgs/native_assets_builder/{test/data => test_data}/simple_link/data_1.json (100%) rename pkgs/native_assets_builder/{test/data => test_data}/simple_link/data_2.json (100%) rename pkgs/native_assets_builder/{test/data => test_data}/simple_link/data_3.json (100%) rename pkgs/native_assets_builder/{test/data => test_data}/simple_link/link.dart (100%) rename pkgs/native_assets_builder/{test/data => test_data}/simple_link/pubspec.yaml (100%) rename pkgs/native_assets_builder/{test/data => test_data}/simple_link/pubspec_overrides.yaml (51%) diff --git a/pkgs/native_assets_builder/test/data/simple_link/bin/simple_link.dart b/pkgs/native_assets_builder/test_data/simple_link/bin/simple_link.dart similarity index 100% rename from pkgs/native_assets_builder/test/data/simple_link/bin/simple_link.dart rename to pkgs/native_assets_builder/test_data/simple_link/bin/simple_link.dart diff --git a/pkgs/native_assets_builder/test/data/simple_link/build.dart b/pkgs/native_assets_builder/test_data/simple_link/build.dart similarity index 100% rename from pkgs/native_assets_builder/test/data/simple_link/build.dart rename to pkgs/native_assets_builder/test_data/simple_link/build.dart diff --git a/pkgs/native_assets_builder/test/data/simple_link/data_0.json b/pkgs/native_assets_builder/test_data/simple_link/data_0.json similarity index 100% rename from pkgs/native_assets_builder/test/data/simple_link/data_0.json rename to pkgs/native_assets_builder/test_data/simple_link/data_0.json diff --git a/pkgs/native_assets_builder/test/data/simple_link/data_1.json b/pkgs/native_assets_builder/test_data/simple_link/data_1.json similarity index 100% rename from pkgs/native_assets_builder/test/data/simple_link/data_1.json rename to pkgs/native_assets_builder/test_data/simple_link/data_1.json diff --git a/pkgs/native_assets_builder/test/data/simple_link/data_2.json b/pkgs/native_assets_builder/test_data/simple_link/data_2.json similarity index 100% rename from pkgs/native_assets_builder/test/data/simple_link/data_2.json rename to pkgs/native_assets_builder/test_data/simple_link/data_2.json diff --git a/pkgs/native_assets_builder/test/data/simple_link/data_3.json b/pkgs/native_assets_builder/test_data/simple_link/data_3.json similarity index 100% rename from pkgs/native_assets_builder/test/data/simple_link/data_3.json rename to pkgs/native_assets_builder/test_data/simple_link/data_3.json diff --git a/pkgs/native_assets_builder/test/data/simple_link/link.dart b/pkgs/native_assets_builder/test_data/simple_link/link.dart similarity index 100% rename from pkgs/native_assets_builder/test/data/simple_link/link.dart rename to pkgs/native_assets_builder/test_data/simple_link/link.dart diff --git a/pkgs/native_assets_builder/test/data/simple_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml similarity index 100% rename from pkgs/native_assets_builder/test/data/simple_link/pubspec.yaml rename to pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml diff --git a/pkgs/native_assets_builder/test/data/simple_link/pubspec_overrides.yaml b/pkgs/native_assets_builder/test_data/simple_link/pubspec_overrides.yaml similarity index 51% rename from pkgs/native_assets_builder/test/data/simple_link/pubspec_overrides.yaml rename to pkgs/native_assets_builder/test_data/simple_link/pubspec_overrides.yaml index c18eed080..efe1074b5 100644 --- a/pkgs/native_assets_builder/test/data/simple_link/pubspec_overrides.yaml +++ b/pkgs/native_assets_builder/test_data/simple_link/pubspec_overrides.yaml @@ -1,3 +1,3 @@ dependency_overrides: native_assets_cli: - path: ../../../../native_assets_cli/ + path: ../../../native_assets_cli/ From 5f890f5ca69d39c0e601f04f97491f8016ccf854 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Jan 2024 15:44:24 +0100 Subject: [PATCH 043/187] Rev versions --- pkgs/native_assets_builder/CHANGELOG.md | 4 ++++ pkgs/native_assets_builder/pubspec.yaml | 2 +- pkgs/native_assets_cli/CHANGELOG.md | 4 ++++ pkgs/native_assets_cli/pubspec.yaml | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_builder/CHANGELOG.md b/pkgs/native_assets_builder/CHANGELOG.md index da64bdf9f..43754a498 100644 --- a/pkgs/native_assets_builder/CHANGELOG.md +++ b/pkgs/native_assets_builder/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.0 + +- Add support for `link.dart`. + ## 0.3.2 - Reintroduce `AssetRelativePath`, it's used in `dart build`. diff --git a/pkgs/native_assets_builder/pubspec.yaml b/pkgs/native_assets_builder/pubspec.yaml index feadc61ed..9c4388090 100644 --- a/pkgs/native_assets_builder/pubspec.yaml +++ b/pkgs/native_assets_builder/pubspec.yaml @@ -1,7 +1,7 @@ name: native_assets_builder description: >- This package is the backend that invokes top-level `build.dart` scripts. -version: 0.3.2 +version: 0.4.0 repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_builder environment: diff --git a/pkgs/native_assets_cli/CHANGELOG.md b/pkgs/native_assets_cli/CHANGELOG.md index 402b91647..585c8f810 100644 --- a/pkgs/native_assets_cli/CHANGELOG.md +++ b/pkgs/native_assets_cli/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.5.0 + +- Add support for `link.dart`. + ## 0.4.1 - **Breaking change** Removed all code not used in `build.dart` scripts out of diff --git a/pkgs/native_assets_cli/pubspec.yaml b/pkgs/native_assets_cli/pubspec.yaml index 139dc41a7..88eb13fe6 100644 --- a/pkgs/native_assets_cli/pubspec.yaml +++ b/pkgs/native_assets_cli/pubspec.yaml @@ -4,7 +4,7 @@ description: >- native assets CLI. # Note: Bump BuildConfig.version and BuildOutput.version on breaking changes! -version: 0.4.1 +version: 0.5.0 repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_cli topics: From 94a5d42383b1486de6e383cd0fa34c8770a0df18 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Jan 2024 16:03:31 +0100 Subject: [PATCH 044/187] Add breaking flag to CI --- .github/workflows/native.yaml | 2 +- pkgs/native_assets_cli/lib/src/api/resources.dart | 4 ++++ pkgs/native_assets_cli/lib/src/model/link_config.dart | 4 ++++ pkgs/native_assets_cli/lib/src/model/pipeline_config.dart | 4 ++++ pkgs/native_assets_cli/lib/src/model/pipeline_step.dart | 4 ++++ 5 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml index 3d9ff1918..b53be041f 100644 --- a/.github/workflows/native.yaml +++ b/.github/workflows/native.yaml @@ -34,7 +34,7 @@ jobs: package: [native_assets_builder, native_assets_cli, native_toolchain_c] dependencies: [published, path] # Breaking changes temporarily break the example run on the Dart SDK until native_assets_builder is rolled into the Dart SDK dev build. - breaking-change: [false] + breaking-change: [true] exclude: # Only run analyze against dev on one host. - os: macos diff --git a/pkgs/native_assets_cli/lib/src/api/resources.dart b/pkgs/native_assets_cli/lib/src/api/resources.dart index fac795321..080ab4b07 100644 --- a/pkgs/native_assets_cli/lib/src/api/resources.dart +++ b/pkgs/native_assets_cli/lib/src/api/resources.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'dart:convert'; class ResourceIdentifiers { diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 128d07bd8..9250ae2af 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'dart:io'; import 'package:cli_config/cli_config.dart'; diff --git a/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart b/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart index cb8650227..a4e6ae593 100644 --- a/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import '../utils/yaml.dart'; abstract class PipelineConfig { diff --git a/pkgs/native_assets_cli/lib/src/model/pipeline_step.dart b/pkgs/native_assets_cli/lib/src/model/pipeline_step.dart index 6cd7c6fcd..91a718e73 100644 --- a/pkgs/native_assets_cli/lib/src/model/pipeline_step.dart +++ b/pkgs/native_assets_cli/lib/src/model/pipeline_step.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + /// The two types of scripts which are hooked into the compilation process. /// /// The `build.dart` script runs before, and the `link.dart` script after From 6392e454191bd3a789630c0f1107b7b1bd5d784f Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Jan 2024 16:10:04 +0100 Subject: [PATCH 045/187] ignore example --- pkgs/native_assets_cli/analysis_options.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/native_assets_cli/analysis_options.yaml b/pkgs/native_assets_cli/analysis_options.yaml index f1404fd46..ff47c6c6b 100644 --- a/pkgs/native_assets_cli/analysis_options.yaml +++ b/pkgs/native_assets_cli/analysis_options.yaml @@ -1,6 +1,8 @@ include: package:dart_flutter_team_lints/analysis_options.yaml analyzer: + exclude: + - example/** errors: todo: ignore language: From e6fed1f298d78cfc8aea4d948defbedfdcd62140 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Jan 2024 16:12:06 +0100 Subject: [PATCH 046/187] Revert ignore example --- pkgs/native_assets_cli/analysis_options.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/native_assets_cli/analysis_options.yaml b/pkgs/native_assets_cli/analysis_options.yaml index ff47c6c6b..f1404fd46 100644 --- a/pkgs/native_assets_cli/analysis_options.yaml +++ b/pkgs/native_assets_cli/analysis_options.yaml @@ -1,8 +1,6 @@ include: package:dart_flutter_team_lints/analysis_options.yaml analyzer: - exclude: - - example/** errors: todo: ignore language: From 9aea59cc4c52b75111165e8e426e2cac9f056025 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 22 Jan 2024 10:44:41 +0100 Subject: [PATCH 047/187] Add copy flag --- .../lib/src/build_runner/build_runner.dart | 15 +++++++++++---- pkgs/native_assets_cli/lib/src/model/asset.dart | 16 ++++++++++++---- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index c63459904..8fc45580e 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -105,6 +105,13 @@ class NativeAssetsBuildRunner { packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); final packagesWithBuild = await packageLayout.packagesWithNativeAssets(step); + List packagesWithLink; + if (step == PipelineStep.build) { + packagesWithLink = + await packageLayout.packagesWithNativeAssets(PipelineStep.link); + } else { + packagesWithLink = []; + } final (buildPlan, packageGraph, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName); final buildResult = BuildResult._failure(); @@ -149,7 +156,7 @@ class NativeAssetsBuildRunner { includeParentEnvironment, resourceIdentifiers, ); - buildResult.add(buildOutput); + buildResult.add(buildOutput, !packagesWithLink.contains(package)); success &= packageSuccess; metadata[config.packageName] = buildOutput.metadata; @@ -201,7 +208,7 @@ class NativeAssetsBuildRunner { includeParentEnvironment, null, ); - buildResult.add(buildOutput); + buildResult.add(buildOutput, true); success &= packageSuccess; } return buildResult.withSuccess(success); @@ -492,8 +499,8 @@ final class BuildResult { success: false, ); - void add(BuildOutput buildOutput) { - assets.addAll(buildOutput.assets); + void add(BuildOutput buildOutput, bool shouldCopy) { + assets.addAll(buildOutput.assets.map((e) => e.copyWith(copy: shouldCopy))); dependencies.addAll(buildOutput.dependencies.dependencies); dependencies.sort(_uriCompare); } diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index babbed31a..d354e4942 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -137,11 +137,15 @@ class Asset implements api.Asset { @override final AssetPath path; + // Whether this asset should be copied after building. + final bool copy; + Asset({ required this.id, required this.linkMode, required this.target, required this.path, + this.copy = true, }); factory Asset.fromYaml(YamlMap yamlMap) => Asset( @@ -149,6 +153,7 @@ class Asset implements api.Asset { path: AssetPath.fromYaml(as(yamlMap[_pathKey])), target: Target.fromString(as(yamlMap[_targetKey])), linkMode: LinkMode.fromName(as(yamlMap[_linkModeKey])), + copy: as(yamlMap[_copyKey]), ); static List listFromYamlString(String yaml) { @@ -172,12 +177,14 @@ class Asset implements api.Asset { String? id, Target? target, AssetPath? path, + bool? copy, }) => Asset( id: id ?? this.id, linkMode: linkMode ?? this.linkMode, target: target ?? this.target, path: path ?? this.path, + copy: copy ?? this.copy, ); @override @@ -188,25 +195,26 @@ class Asset implements api.Asset { return other.id == id && other.linkMode == linkMode && other.target == target && - other.path == path; + other.path == path && + other.copy == copy; } @override - int get hashCode => Object.hash(id, linkMode, target, path); + int get hashCode => Object.hash(id, linkMode, target, path, copy); Map toYaml() => { _idKey: id, _linkModeKey: linkMode.name, _pathKey: path.toYaml(), _targetKey: target.toString(), + _copyKey: copy.toString(), }; static const _idKey = 'id'; static const _linkModeKey = 'link_mode'; static const _pathKey = 'path'; static const _targetKey = 'target'; - - // Future exists() => path.exists(); + static const _copyKey = 'copy'; @override String toString() => 'Asset(${toYaml()})'; From ab2005e88b527d499b9f0430b6d4c79141949598 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 22 Jan 2024 11:17:29 +0100 Subject: [PATCH 048/187] Fix CLI tests --- pkgs/native_assets_cli/lib/src/model/asset.dart | 2 +- pkgs/native_assets_cli/test/model/asset_test.dart | 8 +++++++- pkgs/native_assets_cli/test/model/build_output_test.dart | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index d354e4942..cca28766f 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -207,7 +207,7 @@ class Asset implements api.Asset { _linkModeKey: linkMode.name, _pathKey: path.toYaml(), _targetKey: target.toString(), - _copyKey: copy.toString(), + _copyKey: copy, }; static const _idKey = 'id'; diff --git a/pkgs/native_assets_cli/test/model/asset_test.dart b/pkgs/native_assets_cli/test/model/asset_test.dart index a7dd3bd0c..d2511dc4c 100644 --- a/pkgs/native_assets_cli/test/model/asset_test.dart +++ b/pkgs/native_assets_cli/test/model/asset_test.dart @@ -56,34 +56,40 @@ void main() { path_type: absolute uri: ${fooUri.toFilePath()} target: android_x64 + copy: true - id: foo3 link_mode: dynamic path: path_type: system uri: ${foo3Uri.toFilePath()} target: android_x64 + copy: true - id: foo4 link_mode: dynamic path: path_type: executable target: android_x64 + copy: true - id: foo5 link_mode: dynamic path: path_type: process target: android_x64 + copy: true - id: bar link_mode: static path: path_type: absolute uri: ${barUri.toFilePath()} target: linux_arm64 + copy: true - id: bla link_mode: dynamic path: path_type: absolute uri: ${blaUri.toFilePath()} - target: windows_x64'''; + target: windows_x64 + copy: true'''; test('asset yaml', () { final yaml = assets.toYamlString(); diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index e9900ba06..27a5ef4fd 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -50,12 +50,14 @@ assets: path_type: absolute uri: path/to/libfoo.so target: android_x64 + copy: true - id: foo2 link_mode: dynamic path: path_type: system uri: path/to/libfoo2.so target: android_x64 + copy: true dependencies: - path/to/file.ext metadata: From e6091e88109384ba0ba1e73ac7bf5b79cbc0c9b7 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 22 Jan 2024 12:13:13 +0100 Subject: [PATCH 049/187] Fix resources --- .../lib/src/api/resources.dart | 14 ++++++++------ .../test/api/resources_test.dart | 17 +++++++++++++++++ 2 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 pkgs/native_assets_cli/test/api/resources_test.dart diff --git a/pkgs/native_assets_cli/lib/src/api/resources.dart b/pkgs/native_assets_cli/lib/src/api/resources.dart index 080ab4b07..9893e27e1 100644 --- a/pkgs/native_assets_cli/lib/src/api/resources.dart +++ b/pkgs/native_assets_cli/lib/src/api/resources.dart @@ -9,12 +9,14 @@ class ResourceIdentifiers { ResourceIdentifiers({required this.identifiers}); - factory ResourceIdentifiers.fromFile(String fileContents) => - ResourceIdentifiers( - identifiers: (jsonDecode(fileContents) as List) - .map((e) => e as Map) - .map(Identifier.fromJson) - .toList()); + factory ResourceIdentifiers.fromFile(String fileContents) { + final fileJson = (jsonDecode(fileContents) as Map)['identifiers'] as List; + return ResourceIdentifiers( + identifiers: fileJson + .map((e) => e as Map) + .map(Identifier.fromJson) + .toList()); + } } class Identifier { diff --git a/pkgs/native_assets_cli/test/api/resources_test.dart b/pkgs/native_assets_cli/test/api/resources_test.dart new file mode 100644 index 000000000..fef23f8de --- /dev/null +++ b/pkgs/native_assets_cli/test/api/resources_test.dart @@ -0,0 +1,17 @@ +import 'package:native_assets_cli/native_assets_cli.dart'; +import 'package:test/test.dart'; + +void main() { + const resourceFile = '''{ + "_comment": "Resources referenced by annotated resource identifiers", + "AppTag": "TBD", + "environment": { + "dart.tool.dart2js": false + }, + "identifiers": [] +}'''; + test('empty resources parsing', () { + final resourceIdentifiers = ResourceIdentifiers.fromFile(resourceFile); + expect(resourceIdentifiers.identifiers, isEmpty); + }); +} From e29da52bc5e2280dc31fd59c2d1908080aad8996 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 22 Jan 2024 15:38:10 +0100 Subject: [PATCH 050/187] Fix resources file read --- pkgs/native_assets_cli/lib/src/api/resources.dart | 6 +++++- pkgs/native_assets_cli/test/api/resources_test.dart | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/api/resources.dart b/pkgs/native_assets_cli/lib/src/api/resources.dart index 9893e27e1..3ffc4d488 100644 --- a/pkgs/native_assets_cli/lib/src/api/resources.dart +++ b/pkgs/native_assets_cli/lib/src/api/resources.dart @@ -3,13 +3,17 @@ // BSD-style license that can be found in the LICENSE file. import 'dart:convert'; +import 'dart:io'; class ResourceIdentifiers { final List identifiers; ResourceIdentifiers({required this.identifiers}); - factory ResourceIdentifiers.fromFile(String fileContents) { + factory ResourceIdentifiers.fromFile(String path) => + ResourceIdentifiers.fromFileContents(File(path).readAsStringSync()); + + factory ResourceIdentifiers.fromFileContents(String fileContents) { final fileJson = (jsonDecode(fileContents) as Map)['identifiers'] as List; return ResourceIdentifiers( identifiers: fileJson diff --git a/pkgs/native_assets_cli/test/api/resources_test.dart b/pkgs/native_assets_cli/test/api/resources_test.dart index fef23f8de..50ae76f2e 100644 --- a/pkgs/native_assets_cli/test/api/resources_test.dart +++ b/pkgs/native_assets_cli/test/api/resources_test.dart @@ -11,7 +11,8 @@ void main() { "identifiers": [] }'''; test('empty resources parsing', () { - final resourceIdentifiers = ResourceIdentifiers.fromFile(resourceFile); + final resourceIdentifiers = + ResourceIdentifiers.fromFileContents(resourceFile); expect(resourceIdentifiers.identifiers, isEmpty); }); } From 84c5335c72248e8bf573af0f13ca6b1d3900f9c2 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 22 Jan 2024 15:56:53 +0100 Subject: [PATCH 051/187] Add docs --- pkgs/native_assets_cli/lib/src/api/resources.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/native_assets_cli/lib/src/api/resources.dart b/pkgs/native_assets_cli/lib/src/api/resources.dart index 3ffc4d488..1678994c6 100644 --- a/pkgs/native_assets_cli/lib/src/api/resources.dart +++ b/pkgs/native_assets_cli/lib/src/api/resources.dart @@ -10,9 +10,11 @@ class ResourceIdentifiers { ResourceIdentifiers({required this.identifiers}); + /// Read resources from a resources.json file factory ResourceIdentifiers.fromFile(String path) => ResourceIdentifiers.fromFileContents(File(path).readAsStringSync()); + /// Read resources from the contents of a resources.json file factory ResourceIdentifiers.fromFileContents(String fileContents) { final fileJson = (jsonDecode(fileContents) as Map)['identifiers'] as List; return ResourceIdentifiers( From f3d82cc9f3b579a5d59c475958416eef67e45975 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 22 Jan 2024 16:33:57 +0100 Subject: [PATCH 052/187] Adapt build.dart and link.dart in the example --- .../bin/native_add_app/data_asset_build.json | 3 --- .../bin/native_add_app/data_asset_link.json | 3 +++ .../example/native_add_library/build.dart | 6 +++--- .../example/native_add_library/link.dart | 10 ++++++---- 4 files changed, 12 insertions(+), 10 deletions(-) delete mode 100644 pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_build.json create mode 100644 pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_link.json diff --git a/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_build.json b/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_build.json deleted file mode 100644 index 697721f13..000000000 --- a/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_build.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "leroy": "jenkins" -} diff --git a/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_link.json b/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_link.json new file mode 100644 index 000000000..1a7d134dd --- /dev/null +++ b/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_link.json @@ -0,0 +1,3 @@ +{ + "freddy": "mercury" +} diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart index fc30b3cf9..7730967df 100644 --- a/pkgs/native_assets_cli/example/native_add_library/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -33,13 +33,13 @@ void main(List args) async { ..onRecord.listen((record) => print(record.message)), ); if (!buildConfig.dryRun) { + const assetName = 'data_asset_build.json'; buildOutput.assets.add( Asset( - id: 'package:$packageName/ajsonfile', + id: 'package:$packageName/$assetName', linkMode: LinkMode.dynamic, target: buildConfig.target, - path: AssetAbsolutePath( - buildConfig.packageRoot.resolve('data_asset_build.json')), + path: AssetAbsolutePath(buildConfig.packageRoot.resolve(assetName)), ), ); } diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index 6560bbd7e..0e8cc5fa1 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -13,21 +13,23 @@ void main(List args) async { linkInput.resourceIdentifiers, ); + // Add a new json file to the assets + const assetName = 'data_asset_link.json'; shakenAssets.add( Asset( - id: 'package:$packageName/a_json_file', + id: 'package:$packageName/$assetName', linkMode: LinkMode.dynamic, target: Target.androidArm, path: AssetAbsolutePath( - linkInput.buildConfig.packageRoot.resolve('data_asset_link.json'), + linkInput.buildConfig.packageRoot.resolve(assetName), ), ), ); - final linkOutput = BuildOutput(assets: shakenAssets); - await linkOutput.writeToFile(output: linkInput.output); + await BuildOutput(assets: shakenAssets).writeToFile(output: linkInput.output); } +/// Filters out json files from the assets. class MyResourceShaker { List shake( List assets, From 5da55a0fbcc87c1b2f7f7947d1304e065d094b06 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 22 Jan 2024 16:45:45 +0100 Subject: [PATCH 053/187] Don't fail fast --- .github/workflows/native.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml index b53be041f..d9510d303 100644 --- a/.github/workflows/native.yaml +++ b/.github/workflows/native.yaml @@ -28,6 +28,7 @@ on: jobs: build: strategy: + fail-fast: false matrix: os: [ubuntu, macos, windows] sdk: [stable, dev] From 74e8670c261c8cab16a9f69efd9dd1f4cc5c4cd6 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 8 Feb 2024 12:44:50 +0100 Subject: [PATCH 054/187] Refactor --- .../lib/src/build_runner/build_runner.dart | 8 +------- .../lib/src/package_layout/package_layout.dart | 10 ++++++++++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 8fc45580e..742f788c4 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -105,13 +105,7 @@ class NativeAssetsBuildRunner { packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); final packagesWithBuild = await packageLayout.packagesWithNativeAssets(step); - List packagesWithLink; - if (step == PipelineStep.build) { - packagesWithLink = - await packageLayout.packagesWithNativeAssets(PipelineStep.link); - } else { - packagesWithLink = []; - } + final packagesWithLink = await packageLayout.packagesWithLink(step); final (buildPlan, packageGraph, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName); final buildResult = BuildResult._failure(); diff --git a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart index 26034d8c9..656a03f26 100644 --- a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart +++ b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart @@ -103,6 +103,16 @@ class PackageLayout { return result; } + Future> packagesWithLink(PipelineStep step) async { + List packagesWithLink; + if (step == PipelineStep.build) { + packagesWithLink = await packagesWithNativeAssets(PipelineStep.link); + } else { + packagesWithLink = []; + } + return packagesWithLink; + } + late final Future> packagesWithNativeBuild = packagesWithNativeAssets(PipelineStep.build); From 8d1728ef958c61435a43c67c5ccf9b804e052e72 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 7 Mar 2024 16:10:40 +0100 Subject: [PATCH 055/187] Rename --- .../lib/src/build_runner/build_runner.dart | 8 ++++---- pkgs/native_assets_builder/pubspec.yaml | 8 ++++---- .../test_data/cyclic_package_1/build.dart | 2 +- .../test_data/cyclic_package_2/build.dart | 2 +- .../test_data/native_add/build.dart | 2 +- .../test_data/native_add_add_source/build.dart | 2 +- .../test_data/native_subtract/build.dart | 2 +- .../test_data/package_with_metadata/build.dart | 2 +- .../test_data/simple_link/build.dart | 2 +- .../test_data/simple_link/link.dart | 5 +++-- .../test_data/wrong_build_output/build.dart | 2 +- .../test_data/wrong_build_output_2/build.dart | 2 +- .../test_data/wrong_build_output_3/build.dart | 2 +- .../test_data/wrong_namespace_asset/build.dart | 4 ++-- .../example/native_add_library/build.dart | 2 +- .../example/native_add_library/link.dart | 2 +- .../example/use_dart_api/build.dart | 2 +- pkgs/native_assets_cli/lib/src/api/build_config.dart | 2 +- pkgs/native_assets_cli/lib/src/api/build_output.dart | 2 +- pkgs/native_assets_cli/lib/src/api/link_config.dart | 2 +- .../lib/src/model/build_config.dart | 12 ++++++------ .../lib/src/model/build_output.dart | 6 +++--- .../native_assets_cli/lib/src/model/link_config.dart | 6 +++--- .../lib/src/model/pipeline_config.dart | 4 ++-- .../test/api/build_config_test.dart | 2 +- .../test/model/build_config_test.dart | 2 +- .../test/model/build_output_test.dart | 2 +- .../lib/src/cbuilder/cbuilder.dart | 4 ++-- .../lib/src/cbuilder/run_cbuilder.dart | 2 +- 29 files changed, 49 insertions(+), 48 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 742f788c4..ae4b794a2 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -216,13 +216,13 @@ class NativeAssetsBuildRunner { bool includeParentEnvironment, Uri? resources, ) async { - final outDir = config.outDir; + final outDir = config.outDirectory; if (!await Directory.fromUri(outDir).exists()) { await Directory.fromUri(outDir).create(recursive: true); } final buildOutput = - await BuildOutput.readFromFile(outputUri: config.output); + await BuildOutput.readFromFile(outputUri: config.outDir); if (buildOutput != null) { final lastBuilt = buildOutput.timestamp.roundDownToSeconds(); final lastChange = await buildOutput.dependencies.lastModified(); @@ -258,7 +258,7 @@ class NativeAssetsBuildRunner { final configFileContents = config.toYamlString(); logger.info('config.yaml contents: $configFileContents'); await File.fromUri(configFile).writeAsString(configFileContents); - final buildOutputFile = File.fromUri(config.output); + final buildOutputFile = File.fromUri(config.outDir); if (await buildOutputFile.exists()) { // Ensure we'll never read outdated build results. await buildOutputFile.delete(); @@ -302,7 +302,7 @@ ${result.stdout} try { final buildOutput = - await BuildOutput.readFromFile(outputUri: config.output) ?? + await BuildOutput.readFromFile(outputUri: config.outDir) ?? BuildOutput(); success &= validateAssetsPackage( buildOutput.assets, diff --git a/pkgs/native_assets_builder/pubspec.yaml b/pkgs/native_assets_builder/pubspec.yaml index 8c6501a01..0a9024089 100644 --- a/pkgs/native_assets_builder/pubspec.yaml +++ b/pkgs/native_assets_builder/pubspec.yaml @@ -1,7 +1,7 @@ name: native_assets_builder description: >- This package is the backend that invokes top-level `build.dart` scripts. -version: 0.6.0 +s version: 0.6.0 repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_builder environment: @@ -10,9 +10,9 @@ environment: dependencies: graphs: ^2.3.1 logging: ^1.2.0 - native_assets_cli: ^0.4.2 - # native_assets_cli: - # path: ../native_assets_cli/ + # native_assets_cli: ^0.4.2 + native_assets_cli: + path: ../native_assets_cli/ package_config: ^2.1.0 yaml: ^3.1.2 yaml_edit: ^2.1.0 diff --git a/pkgs/native_assets_builder/test_data/cyclic_package_1/build.dart b/pkgs/native_assets_builder/test_data/cyclic_package_1/build.dart index 607d95c9b..2479e4ea2 100644 --- a/pkgs/native_assets_builder/test_data/cyclic_package_1/build.dart +++ b/pkgs/native_assets_builder/test_data/cyclic_package_1/build.dart @@ -7,5 +7,5 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); final buildOutput = BuildOutput(); - await buildOutput.writeToFile(output: buildConfig.output); + await buildOutput.writeToFile(outDir: buildConfig.outDir); } diff --git a/pkgs/native_assets_builder/test_data/cyclic_package_2/build.dart b/pkgs/native_assets_builder/test_data/cyclic_package_2/build.dart index 607d95c9b..2479e4ea2 100644 --- a/pkgs/native_assets_builder/test_data/cyclic_package_2/build.dart +++ b/pkgs/native_assets_builder/test_data/cyclic_package_2/build.dart @@ -7,5 +7,5 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); final buildOutput = BuildOutput(); - await buildOutput.writeToFile(output: buildConfig.output); + await buildOutput.writeToFile(outDir: buildConfig.outDir); } diff --git a/pkgs/native_assets_builder/test_data/native_add/build.dart b/pkgs/native_assets_builder/test_data/native_add/build.dart index d6323ba17..69bbb9ede 100644 --- a/pkgs/native_assets_builder/test_data/native_add/build.dart +++ b/pkgs/native_assets_builder/test_data/native_add/build.dart @@ -27,5 +27,5 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile(output: buildConfig.output); + await buildOutput.writeToFile(outDir: buildConfig.outDir); } diff --git a/pkgs/native_assets_builder/test_data/native_add_add_source/build.dart b/pkgs/native_assets_builder/test_data/native_add_add_source/build.dart index fdf10bede..3fcb30e4b 100644 --- a/pkgs/native_assets_builder/test_data/native_add_add_source/build.dart +++ b/pkgs/native_assets_builder/test_data/native_add_add_source/build.dart @@ -28,5 +28,5 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile(output: buildConfig.output); + await buildOutput.writeToFile(outDir: buildConfig.outDir); } diff --git a/pkgs/native_assets_builder/test_data/native_subtract/build.dart b/pkgs/native_assets_builder/test_data/native_subtract/build.dart index 8bb50c583..66b62ea90 100644 --- a/pkgs/native_assets_builder/test_data/native_subtract/build.dart +++ b/pkgs/native_assets_builder/test_data/native_subtract/build.dart @@ -27,5 +27,5 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile(output: buildConfig.output); + await buildOutput.writeToFile(outDir: buildConfig.outDir); } diff --git a/pkgs/native_assets_builder/test_data/package_with_metadata/build.dart b/pkgs/native_assets_builder/test_data/package_with_metadata/build.dart index 8daf35642..a5e908ac7 100644 --- a/pkgs/native_assets_builder/test_data/package_with_metadata/build.dart +++ b/pkgs/native_assets_builder/test_data/package_with_metadata/build.dart @@ -12,5 +12,5 @@ void main(List args) async { 'some_int': 3, }), ); - await buildOutput.writeToFile(output: buildConfig.output); + await buildOutput.writeToFile(outDir: buildConfig.outDir); } diff --git a/pkgs/native_assets_builder/test_data/simple_link/build.dart b/pkgs/native_assets_builder/test_data/simple_link/build.dart index bdeddacb8..996b1fb1a 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/build.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/build.dart @@ -23,5 +23,5 @@ void main(List args) async { ); }, )); - await buildOutput.writeToFile(output: buildConfig.output); + await buildOutput.writeToFile(outDir: buildConfig.outDir); } diff --git a/pkgs/native_assets_builder/test_data/simple_link/link.dart b/pkgs/native_assets_builder/test_data/simple_link/link.dart index 9cf31ee9b..c43e50d20 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/link.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/link.dart @@ -19,7 +19,8 @@ void main(List args) async { assets: shakenAssets.map((e) { final path = e.path as AssetAbsolutePath; final filePath = path.uri.toFilePath(); - final uri = linkConfig.buildConfig.outDir.resolve(p.basename(filePath)); + final uri = + linkConfig.buildConfig.outDirectory.resolve(p.basename(filePath)); File(filePath).copySync(uri.toFilePath()); return Asset( id: e.id, @@ -29,7 +30,7 @@ void main(List args) async { ); }).toList()); - await linkOutput.writeToFile(output: linkConfig.output); + await linkOutput.writeToFile(outDir: linkConfig.outDir); } class MyResourceShaker { diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output/build.dart b/pkgs/native_assets_builder/test_data/wrong_build_output/build.dart index 29c68461f..c9426f3be 100644 --- a/pkgs/native_assets_builder/test_data/wrong_build_output/build.dart +++ b/pkgs/native_assets_builder/test_data/wrong_build_output/build.dart @@ -8,7 +8,7 @@ import 'package:native_assets_cli/native_assets_cli_internal.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); - await File.fromUri(buildConfig.output).writeAsString(_wrongContents); + await File.fromUri(buildConfig.outDir).writeAsString(_wrongContents); } const _wrongContents = ''' diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output_2/build.dart b/pkgs/native_assets_builder/test_data/wrong_build_output_2/build.dart index 44e327da2..a84968dcc 100644 --- a/pkgs/native_assets_builder/test_data/wrong_build_output_2/build.dart +++ b/pkgs/native_assets_builder/test_data/wrong_build_output_2/build.dart @@ -8,7 +8,7 @@ import 'package:native_assets_cli/native_assets_cli_internal.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); - await File.fromUri(buildConfig.output).writeAsString(_wrongContents); + await File.fromUri(buildConfig.outDir).writeAsString(_wrongContents); } const _wrongContents = ''' diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output_3/build.dart b/pkgs/native_assets_builder/test_data/wrong_build_output_3/build.dart index 944bcdd3c..456061441 100644 --- a/pkgs/native_assets_builder/test_data/wrong_build_output_3/build.dart +++ b/pkgs/native_assets_builder/test_data/wrong_build_output_3/build.dart @@ -8,7 +8,7 @@ import 'package:native_assets_cli/native_assets_cli_internal.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); - await File.fromUri(buildConfig.output).writeAsString(_rightContents); + await File.fromUri(buildConfig.outDir).writeAsString(_rightContents); exit(1); } diff --git a/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart b/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart index 74b07ea86..d4d439d87 100644 --- a/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart +++ b/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart @@ -13,12 +13,12 @@ void main(List args) async { linkMode: LinkMode.dynamic, target: Target.current, path: AssetAbsolutePath( - buildConfig.outDir.resolve( + buildConfig.outDirectory.resolve( Target.current.os.dylibFileName('foo'), ), ), ), ], ); - await buildOutput.writeToFile(output: buildConfig.output); + await buildOutput.writeToFile(outDir: buildConfig.outDir); } diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart index 7730967df..5170d2b88 100644 --- a/pkgs/native_assets_cli/example/native_add_library/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -46,5 +46,5 @@ void main(List args) async { // Write the output according to the native assets protocol so that Dart or // Flutter can find the native assets produced by this script. - await buildOutput.writeToFile(output: buildConfig.output); + await buildOutput.writeToFile(outDir: buildConfig.outDir); } diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index 0e8cc5fa1..1c1aafe2f 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -26,7 +26,7 @@ void main(List args) async { ), ); - await BuildOutput(assets: shakenAssets).writeToFile(output: linkInput.output); + await BuildOutput(assets: shakenAssets).writeToFile(outDir: linkInput.outDir); } /// Filters out json files from the assets. diff --git a/pkgs/native_assets_cli/example/use_dart_api/build.dart b/pkgs/native_assets_cli/example/use_dart_api/build.dart index 6829176d8..10380ec58 100644 --- a/pkgs/native_assets_cli/example/use_dart_api/build.dart +++ b/pkgs/native_assets_cli/example/use_dart_api/build.dart @@ -28,5 +28,5 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile(output: buildConfig.output); + await buildOutput.writeToFile(outDir: buildConfig.outDir); } diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index 63808278e..a60f146e5 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -23,7 +23,7 @@ abstract class BuildConfig extends PipelineConfig { /// The folder in which all output and intermediate artifacts should be /// placed. @override - Uri get outDir; + Uri get outDirectory; /// The name of the package the native assets are built for. @override diff --git a/pkgs/native_assets_cli/lib/src/api/build_output.dart b/pkgs/native_assets_cli/lib/src/api/build_output.dart index a210ffd61..8c93ffb11 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_output.dart @@ -47,5 +47,5 @@ abstract class BuildOutput { /// representation in the protocol. static Version get version => model.BuildOutput.version; - Future writeToFile({required Uri output}); + Future writeToFile({required Uri outDir}); } diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index ce32d2108..b2dfa3812 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -26,7 +26,7 @@ abstract class LinkConfig extends PipelineConfig { Uri get configFile; @override - Uri get outDir; + Uri get outDirectory; @override String get outputName; diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index b9e62650a..eecd7a5a2 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -29,12 +29,12 @@ class BuildConfig extends PipelineConfig implements api.BuildConfig { String get outputName => 'build_output.yaml'; @override - Uri get configFile => outDir.resolve('../config.yaml'); + Uri get configFile => outDirectory.resolve('../config.yaml'); /// The folder in which all output and intermediate artifacts should be /// placed. @override - Uri get outDir => _outDir; + Uri get outDirectory => _outDir; late final Uri _outDir; /// The name of the package the native assets are built for. @@ -212,10 +212,10 @@ class BuildConfig extends PipelineConfig implements api.BuildConfig { /// Constructs a checksum for a [BuildConfig] based on the fields /// of a buildconfig that influence the build. /// - /// This can be used for an [outDir], but should not be used for dry-runs. + /// This can be used for an [outDirectory], but should not be used for dry-runs. /// /// In particular, it only takes the package name from [packageRoot], - /// so that the hash is equal across checkouts and ignores [outDir] itself. + /// so that the hash is equal across checkouts and ignores [outDirectory] itself. static String checksum({ required String packageName, required Uri packageRoot, @@ -539,7 +539,7 @@ class BuildConfig extends PipelineConfig implements api.BuildConfig { if (other is! BuildConfig) { return false; } - if (other.outDir != outDir) return false; + if (other.outDirectory != outDirectory) return false; if (other.packageName != packageName) return false; if (other.packageRoot != packageRoot) return false; if (other.dryRun != dryRun) return false; @@ -559,7 +559,7 @@ class BuildConfig extends PipelineConfig implements api.BuildConfig { @override int get hashCode => Object.hashAll([ - outDir, + outDirectory, packageName, packageRoot, targetOs, diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index c985e667a..018c09e25 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -112,10 +112,10 @@ class BuildOutput implements api.BuildOutput { return BuildOutput.fromYamlString(yamlString); } - /// Writes the [toYamlString] to [output]. + /// Writes the [toYamlString] to [outDir]. @override - Future writeToFile({required Uri output}) async { - await File.fromUri(output).writeAsStringCreateDirectory(toYamlString()); + Future writeToFile({required Uri outDir}) async { + await File.fromUri(outDir).writeAsStringCreateDirectory(toYamlString()); } @override diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 9250ae2af..417a4c519 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -39,10 +39,10 @@ class LinkConfig extends api.LinkConfig { }); @override - Uri get configFile => outDir.resolve('../link_config.yaml'); + Uri get configFile => outDirectory.resolve('../link_config.yaml'); @override - Uri get outDir => buildConfig.outDir; + Uri get outDirectory => buildConfig.outDirectory; @override String get outputName => 'link_output.yaml'; @@ -99,7 +99,7 @@ class LinkConfigArgs { } final readFromFile = - await BuildOutput.readFromFile(outputUri: config.output); + await BuildOutput.readFromFile(outputUri: config.outDir); return LinkConfig( this, assets: readFromFile!.assets, diff --git a/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart b/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart index a4e6ae593..3667b0843 100644 --- a/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart @@ -7,9 +7,9 @@ import '../utils/yaml.dart'; abstract class PipelineConfig { Uri get configFile; - Uri get output => outDir.resolve(outputName); + Uri get outDir => outDirectory.resolve(outputName); - Uri get outDir; + Uri get outDirectory; Uri get script; diff --git a/pkgs/native_assets_cli/test/api/build_config_test.dart b/pkgs/native_assets_cli/test/api/build_config_test.dart index 93ace7cb5..3aa0bb7cd 100644 --- a/pkgs/native_assets_cli/test/api/build_config_test.dart +++ b/pkgs/native_assets_cli/test/api/build_config_test.dart @@ -76,7 +76,7 @@ void main() async { expect(config1, equals(config1)); expect(config1 == config2, false); - expect(config1.outDir != config2.outDir, true); + expect(config1.outDirectory != config2.outDirectory, true); expect(config1.packageRoot, config2.packageRoot); expect(config1.targetArchitecture == config2.targetArchitecture, true); expect(config1.targetOs != config2.targetOs, true); diff --git a/pkgs/native_assets_cli/test/model/build_config_test.dart b/pkgs/native_assets_cli/test/model/build_config_test.dart index df9df7c6a..72c06697e 100644 --- a/pkgs/native_assets_cli/test/model/build_config_test.dart +++ b/pkgs/native_assets_cli/test/model/build_config_test.dart @@ -77,7 +77,7 @@ void main() async { expect(config1, equals(config1)); expect(config1 == config2, false); - expect(config1.outDir != config2.outDir, true); + expect(config1.outDirectory != config2.outDirectory, true); expect(config1.packageRoot, config2.packageRoot); expect(config1.targetArchitecture == config2.targetArchitecture, true); expect(config1.targetOs != config2.targetOs, true); diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index 27a5ef4fd..2f443a391 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -86,7 +86,7 @@ version: ${BuildOutput.version}'''; test('BuildOutput.readFromFile BuildOutput.writeToFile', () async { final outDir = tempUri.resolve('out_dir/'); - await buildOutput.writeToFile(output: outDir.resolve('build_output.yaml')); + await buildOutput.writeToFile(outDir: outDir.resolve('build_output.yaml')); final buildOutput2 = await BuildOutput.readFromFile( outputUri: outDir.resolve('build_output.yaml'), ); diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart index a0a199b0d..87d31b372 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart @@ -47,7 +47,7 @@ class CBuilder implements Builder { /// The filename will be decided by [BuildConfig.target] and /// [OS.libraryFileName] or [OS.executableFileName]. /// - /// File will be placed in [BuildConfig.outDir]. + /// File will be placed in [BuildConfig.outDirectory]. final String name; /// Asset identifier. @@ -196,7 +196,7 @@ class CBuilder implements Builder { required BuildOutput buildOutput, required Logger? logger, }) async { - final outDir = buildConfig.outDir; + final outDir = buildConfig.outDirectory; final packageRoot = buildConfig.packageRoot; await Directory.fromUri(outDir).create(recursive: true); final linkMode = buildConfig.linkModePreference.preferredLinkMode; diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart index dc2b8fb21..ec9ded3d4 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart @@ -58,7 +58,7 @@ class RunCBuilder { this.std, this.language = Language.c, this.cppLinkStdLib, - }) : outDir = buildConfig.outDir, + }) : outDir = buildConfig.outDirectory, target = buildConfig.target, assert([executable, dynamicLibrary, staticLibrary] .whereType() From f8f33d630a0f3e202906ad7bb6d943abd9f435cd Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 7 Mar 2024 16:11:47 +0100 Subject: [PATCH 056/187] More rename --- .../lib/src/build_runner/build_runner.dart | 5 ++--- .../lib/src/package_layout/package_layout.dart | 12 ++++++------ .../test/build_runner/build_planner_test.dart | 6 +++--- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index ae4b794a2..b451330a0 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -103,8 +103,7 @@ class NativeAssetsBuildRunner { String? runPackageName, }) async { packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); - final packagesWithBuild = - await packageLayout.packagesWithNativeAssets(step); + final packagesWithBuild = await packageLayout.packagesWithAssets(step); final packagesWithLink = await packageLayout.packagesWithLink(step); final (buildPlan, packageGraph, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName); @@ -175,7 +174,7 @@ class NativeAssetsBuildRunner { String? runPackageName, }) async { packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); - final packagesWithBuild = await packageLayout.packagesWithNativeBuild; + final packagesWithBuild = await packageLayout.packagesWithNativeAssets; final (buildPlan, _, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, diff --git a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart index 656a03f26..00dc5206c 100644 --- a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart +++ b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart @@ -90,7 +90,7 @@ class PackageLayout { /// a `build.dart`. /// /// `package:native` itself is excluded. - Future> packagesWithNativeAssets(PipelineStep step) async { + Future> packagesWithAssets(PipelineStep step) async { final result = []; for (final package in packageConfig.packages) { final packageRoot = package.root; @@ -106,16 +106,16 @@ class PackageLayout { Future> packagesWithLink(PipelineStep step) async { List packagesWithLink; if (step == PipelineStep.build) { - packagesWithLink = await packagesWithNativeAssets(PipelineStep.link); + packagesWithLink = await packagesWithAssets(PipelineStep.link); } else { packagesWithLink = []; } return packagesWithLink; } - late final Future> packagesWithNativeBuild = - packagesWithNativeAssets(PipelineStep.build); + late final Future> packagesWithNativeAssets = + packagesWithAssets(PipelineStep.build); - late final Future> packagesWithNativeLink = - packagesWithNativeAssets(PipelineStep.link); + late final Future> packagesWithNativeLinkAssets = + packagesWithAssets(PipelineStep.link); } diff --git a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart index 6f4e18c5e..f6a67c44e 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart @@ -38,7 +38,7 @@ void main() async { final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = - await packageLayout.packagesWithNativeBuild; + await packageLayout.packagesWithNativeAssets; final planner = NativeAssetsBuildPlanner( packageGraph: graph, @@ -63,7 +63,7 @@ void main() async { final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = - await packageLayout.packagesWithNativeBuild; + await packageLayout.packagesWithNativeAssets; final nativeAssetsBuildPlanner = await NativeAssetsBuildPlanner.fromRootPackageRoot( rootPackageRoot: nativeAddUri, @@ -90,7 +90,7 @@ void main() async { final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = - await packageLayout.packagesWithNativeAssets(PipelineStep.build); + await packageLayout.packagesWithAssets(PipelineStep.build); final nativeAssetsBuildPlanner = await NativeAssetsBuildPlanner.fromRootPackageRoot( rootPackageRoot: nativeAddUri, From 0b119f3378bbcdc49ff9559de16788df8ded9bdf Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 7 Mar 2024 16:19:02 +0100 Subject: [PATCH 057/187] Cleaning up --- .../lib/src/build_runner/build_runner.dart | 8 ++++---- .../native_assets_cli/lib/src/model/asset.dart | 18 +++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index b451330a0..24007d785 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -149,7 +149,7 @@ class NativeAssetsBuildRunner { includeParentEnvironment, resourceIdentifiers, ); - buildResult.add(buildOutput, !packagesWithLink.contains(package)); + buildResult.add(buildOutput); success &= packageSuccess; metadata[config.packageName] = buildOutput.metadata; @@ -201,7 +201,7 @@ class NativeAssetsBuildRunner { includeParentEnvironment, null, ); - buildResult.add(buildOutput, true); + buildResult.add(buildOutput); success &= packageSuccess; } return buildResult.withSuccess(success); @@ -492,8 +492,8 @@ final class BuildResult { success: false, ); - void add(BuildOutput buildOutput, bool shouldCopy) { - assets.addAll(buildOutput.assets.map((e) => e.copyWith(copy: shouldCopy))); + void add(BuildOutput buildOutput) { + assets.addAll(buildOutput.assets); dependencies.addAll(buildOutput.dependencies.dependencies); dependencies.sort(_uriCompare); } diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index cca28766f..975dab70c 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -138,14 +138,14 @@ class Asset implements api.Asset { final AssetPath path; // Whether this asset should be copied after building. - final bool copy; + final String linkInPackage; Asset({ required this.id, required this.linkMode, required this.target, required this.path, - this.copy = true, + this.linkInPackage = '', }); factory Asset.fromYaml(YamlMap yamlMap) => Asset( @@ -153,7 +153,7 @@ class Asset implements api.Asset { path: AssetPath.fromYaml(as(yamlMap[_pathKey])), target: Target.fromString(as(yamlMap[_targetKey])), linkMode: LinkMode.fromName(as(yamlMap[_linkModeKey])), - copy: as(yamlMap[_copyKey]), + linkInPackage: as(yamlMap[_linkKey]), ); static List listFromYamlString(String yaml) { @@ -177,14 +177,14 @@ class Asset implements api.Asset { String? id, Target? target, AssetPath? path, - bool? copy, + String? linkInPackage, }) => Asset( id: id ?? this.id, linkMode: linkMode ?? this.linkMode, target: target ?? this.target, path: path ?? this.path, - copy: copy ?? this.copy, + linkInPackage: linkInPackage ?? this.linkInPackage, ); @override @@ -196,25 +196,25 @@ class Asset implements api.Asset { other.linkMode == linkMode && other.target == target && other.path == path && - other.copy == copy; + other.linkInPackage == linkInPackage; } @override - int get hashCode => Object.hash(id, linkMode, target, path, copy); + int get hashCode => Object.hash(id, linkMode, target, path, linkInPackage); Map toYaml() => { _idKey: id, _linkModeKey: linkMode.name, _pathKey: path.toYaml(), _targetKey: target.toString(), - _copyKey: copy, + _linkKey: linkInPackage, }; static const _idKey = 'id'; static const _linkModeKey = 'link_mode'; static const _pathKey = 'path'; static const _targetKey = 'target'; - static const _copyKey = 'copy'; + static const _linkKey = 'linkInPackage'; @override String toString() => 'Asset(${toYaml()})'; From bf970a9e63d12b69ea3dcdf7d97aeda0b854e58d Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 7 Mar 2024 16:26:59 +0100 Subject: [PATCH 058/187] Simplify --- .../lib/src/build_runner/build_runner.dart | 16 ++++++++-------- .../lib/src/package_layout/package_layout.dart | 10 ---------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 24007d785..2b6405d7f 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -104,7 +104,6 @@ class NativeAssetsBuildRunner { }) async { packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); final packagesWithBuild = await packageLayout.packagesWithAssets(step); - final packagesWithLink = await packageLayout.packagesWithLink(step); final (buildPlan, packageGraph, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName); final buildResult = BuildResult._failure(); @@ -215,13 +214,13 @@ class NativeAssetsBuildRunner { bool includeParentEnvironment, Uri? resources, ) async { - final outDir = config.outDirectory; + final outDir = config.outDir; if (!await Directory.fromUri(outDir).exists()) { await Directory.fromUri(outDir).create(recursive: true); } - final buildOutput = - await BuildOutput.readFromFile(outputUri: config.outDir); + final buildOutput = await BuildOutput.readFromFile( + outputUri: config.outDir.resolve(config.outputName)); if (buildOutput != null) { final lastBuilt = buildOutput.timestamp.roundDownToSeconds(); final lastChange = await buildOutput.dependencies.lastModified(); @@ -257,7 +256,8 @@ class NativeAssetsBuildRunner { final configFileContents = config.toYamlString(); logger.info('config.yaml contents: $configFileContents'); await File.fromUri(configFile).writeAsString(configFileContents); - final buildOutputFile = File.fromUri(config.outDir); + final buildOutputFile = + File.fromUri(config.outDir.resolve(config.outputName)); if (await buildOutputFile.exists()) { // Ensure we'll never read outdated build results. await buildOutputFile.delete(); @@ -300,9 +300,9 @@ ${result.stdout} } try { - final buildOutput = - await BuildOutput.readFromFile(outputUri: config.outDir) ?? - BuildOutput(); + final buildOutput = await BuildOutput.readFromFile( + outputUri: config.outDir.resolve(config.outputName)) ?? + BuildOutput(); success &= validateAssetsPackage( buildOutput.assets, config.packageName, diff --git a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart index 00dc5206c..b57455088 100644 --- a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart +++ b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart @@ -103,16 +103,6 @@ class PackageLayout { return result; } - Future> packagesWithLink(PipelineStep step) async { - List packagesWithLink; - if (step == PipelineStep.build) { - packagesWithLink = await packagesWithAssets(PipelineStep.link); - } else { - packagesWithLink = []; - } - return packagesWithLink; - } - late final Future> packagesWithNativeAssets = packagesWithAssets(PipelineStep.build); From b379d4052219729b95ba7c67c5cf0cb4d9dba932 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 7 Mar 2024 16:30:15 +0100 Subject: [PATCH 059/187] Give only correct assets --- pkgs/native_assets_cli/lib/src/model/link_config.dart | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 417a4c519..e6ba95982 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -98,11 +98,13 @@ class LinkConfigArgs { resources = ResourceIdentifiers.fromFile(resourceIdentifierUri!.path); } - final readFromFile = + final buildOutput = await BuildOutput.readFromFile(outputUri: config.outDir); return LinkConfig( this, - assets: readFromFile!.assets, + assets: buildOutput!.assets + .where((element) => element.linkInPackage == config.packageName) + .toList(), buildConfig: config, resourceIdentifiers: resources, ); From 2e7c1b4f4e93d4ac7272803674191d1fee9070c8 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 7 Mar 2024 21:15:24 +0100 Subject: [PATCH 060/187] Simplify even more --- .../lib/src/build_runner/build_runner.dart | 2 +- .../test/build_runner/build_planner_test.dart | 3 +-- .../test/build_runner/build_runner_reusability_test.dart | 5 ++--- pkgs/native_assets_builder/test/build_runner/helpers.dart | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 2b6405d7f..1855696a9 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -164,7 +164,7 @@ class NativeAssetsBuildRunner { /// /// If provided, only native assets of all transitive dependencies of /// [runPackageName] are built. - Future dryBuild({ + Future dryRun({ required LinkModePreference linkModePreference, required OS targetOs, required Uri workingDirectory, diff --git a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart index f6a67c44e..9669c17da 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart @@ -6,7 +6,6 @@ import 'dart:io'; import 'package:native_assets_builder/native_assets_builder.dart'; import 'package:native_assets_builder/src/build_runner/build_planner.dart'; -import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:test/test.dart'; import '../helpers.dart'; @@ -90,7 +89,7 @@ void main() async { final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = - await packageLayout.packagesWithAssets(PipelineStep.build); + await packageLayout.packagesWithNativeAssets; final nativeAssetsBuildPlanner = await NativeAssetsBuildPlanner.fromRootPackageRoot( rootPackageRoot: nativeAddUri, diff --git a/pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart b/pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart index 7b146c83e..0ee48ab31 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart @@ -2,7 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:native_assets_builder/native_assets_builder.dart'; import 'package:native_assets_builder/src/build_runner/build_runner.dart'; import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:test/test.dart'; @@ -29,13 +28,13 @@ void main() async { dartExecutable: dartExecutable, ); - await buildRunner.dryBuild( + await buildRunner.dryRun( targetOs: Target.current.os, linkModePreference: LinkModePreference.dynamic, workingDirectory: packageUri, includeParentEnvironment: true, ); - await buildRunner.dryBuild( + await buildRunner.dryRun( targetOs: Target.current.os, linkModePreference: LinkModePreference.dynamic, workingDirectory: packageUri, diff --git a/pkgs/native_assets_builder/test/build_runner/helpers.dart b/pkgs/native_assets_builder/test/build_runner/helpers.dart index 7010833e6..fe0a9e788 100644 --- a/pkgs/native_assets_builder/test/build_runner/helpers.dart +++ b/pkgs/native_assets_builder/test/build_runner/helpers.dart @@ -127,7 +127,7 @@ Future dryRun( final result = await NativeAssetsBuildRunner( logger: logger, dartExecutable: dartExecutable, - ).dryBuild( + ).dryRun( linkModePreference: linkModePreference, targetOs: Target.current.os, workingDirectory: packageUri, From 026f99f12ffccc6ce1c269115c575ae6b5dc6c36 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 7 Mar 2024 21:15:58 +0100 Subject: [PATCH 061/187] Simplify even more! --- .../test/build_runner/build_runner_test.dart | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart b/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart index 1fc531e78..f6fff2cd8 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart @@ -27,16 +27,12 @@ void main() async { // Trigger a build, should invoke build for libraries with native assets. { final logMessages = []; - final result = await build( - packageUri, - logger, - dartExecutable, - capturedLogs: logMessages, - ); + final result = await build(packageUri, logger, dartExecutable, + capturedLogs: logMessages); expect( - logMessages.join('\n'), - contains('native_add${Platform.pathSeparator}build.dart'), - ); + logMessages.join('\n'), + stringContainsInOrder( + ['native_add${Platform.pathSeparator}build.dart'])); expect(result.assets.length, 1); } From e7ee258c3d84cf375787735b099c0d9e586ff077 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 7 Mar 2024 21:16:36 +0100 Subject: [PATCH 062/187] Simplify even more!! --- pkgs/native_assets_builder/test_data/manifest.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/native_assets_builder/test_data/manifest.yaml b/pkgs/native_assets_builder/test_data/manifest.yaml index 2bb17275d..31bb7de9f 100644 --- a/pkgs/native_assets_builder/test_data/manifest.yaml +++ b/pkgs/native_assets_builder/test_data/manifest.yaml @@ -28,14 +28,12 @@ - package_with_metadata/build.dart - package_with_metadata/pubspec.yaml - simple_link/pubspec.yaml -- simple_link/pubspec_overrides.yaml - simple_link/build.dart - simple_link/link.dart - simple_link/data_0.json - simple_link/data_1.json - simple_link/data_2.json - simple_link/data_3.json -- package_with_metadata/pubspec_overrides.yaml - some_dev_dep/bin/some_dev_dep.dart - some_dev_dep/pubspec.yaml - wrong_build_output/build.dart From 91ec917eafc6733dbc8c69e22cb4d457635fc111 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 7 Mar 2024 21:25:44 +0100 Subject: [PATCH 063/187] Fix --- .../test_data/package_reading_metadata/pubspec.yaml | 1 - .../test_data/wrong_namespace_asset/build.dart | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml b/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml index fffa2ed39..81c554892 100644 --- a/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml @@ -8,7 +8,6 @@ environment: sdk: '>=3.0.0 <4.0.0' dependencies: - args: ^2.4.2 cli_config: ^0.1.1 native_assets_cli: path: ../../../native_assets_cli/ diff --git a/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart b/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart index d4d439d87..457aa902b 100644 --- a/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart +++ b/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart @@ -13,7 +13,7 @@ void main(List args) async { linkMode: LinkMode.dynamic, target: Target.current, path: AssetAbsolutePath( - buildConfig.outDirectory.resolve( + buildConfig.outDir.resolve( Target.current.os.dylibFileName('foo'), ), ), From 9efb650fdc26e5410cdc6c8ad6530d4401c5202a Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 7 Mar 2024 22:34:12 +0100 Subject: [PATCH 064/187] Works now! --- .../lib/src/build_runner/build_runner.dart | 8 ++++---- .../test/build_runner/link_test.dart | 9 +++++++-- .../test_data/cyclic_package_1/build.dart | 2 +- .../test_data/cyclic_package_2/build.dart | 2 +- .../test_data/native_add/build.dart | 2 +- .../test_data/native_add_add_source/build.dart | 2 +- .../test_data/native_subtract/build.dart | 2 +- .../test_data/package_with_metadata/build.dart | 2 +- .../test_data/simple_link/build.dart | 5 +++-- .../test_data/simple_link/link.dart | 5 ++--- .../test_data/simple_link/pubspec.yaml | 3 ++- .../test_data/simple_link/pubspec_overrides.yaml | 3 --- .../test_data/wrong_build_output/build.dart | 2 +- .../test_data/wrong_build_output_2/build.dart | 2 +- .../test_data/wrong_build_output_3/build.dart | 2 +- .../test_data/wrong_namespace_asset/build.dart | 4 ++-- .../example/native_add_library/build.dart | 2 +- .../example/native_add_library/link.dart | 3 ++- pkgs/native_assets_cli/example/use_dart_api/build.dart | 2 +- pkgs/native_assets_cli/lib/src/api/asset.dart | 3 +++ pkgs/native_assets_cli/lib/src/model/asset.dart | 3 +-- pkgs/native_assets_cli/lib/src/model/link_config.dart | 2 +- .../native_assets_cli/lib/src/model/pipeline_config.dart | 2 +- 23 files changed, 39 insertions(+), 33 deletions(-) delete mode 100644 pkgs/native_assets_builder/test_data/simple_link/pubspec_overrides.yaml diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 1855696a9..c93f8ddc7 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -214,13 +214,13 @@ class NativeAssetsBuildRunner { bool includeParentEnvironment, Uri? resources, ) async { - final outDir = config.outDir; + final outDir = config.outDirectory; if (!await Directory.fromUri(outDir).exists()) { await Directory.fromUri(outDir).create(recursive: true); } final buildOutput = await BuildOutput.readFromFile( - outputUri: config.outDir.resolve(config.outputName)); + outputUri: config.outputFile.resolve(config.outputName)); if (buildOutput != null) { final lastBuilt = buildOutput.timestamp.roundDownToSeconds(); final lastChange = await buildOutput.dependencies.lastModified(); @@ -257,7 +257,7 @@ class NativeAssetsBuildRunner { logger.info('config.yaml contents: $configFileContents'); await File.fromUri(configFile).writeAsString(configFileContents); final buildOutputFile = - File.fromUri(config.outDir.resolve(config.outputName)); + File.fromUri(config.outputFile.resolve(config.outputName)); if (await buildOutputFile.exists()) { // Ensure we'll never read outdated build results. await buildOutputFile.delete(); @@ -301,7 +301,7 @@ ${result.stdout} try { final buildOutput = await BuildOutput.readFromFile( - outputUri: config.outDir.resolve(config.outputName)) ?? + outputUri: config.outputFile.resolve(config.outputName)) ?? BuildOutput(); success &= validateAssetsPackage( buildOutput.assets, diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart index 98d5a8798..991b3c86a 100644 --- a/pkgs/native_assets_builder/test/build_runner/link_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -31,7 +31,8 @@ void main() async { capturedLogs: logMessages, copyAssets: false, ); - expect(buildResult.assets.length, 4); + const buildAssets = 10; + expect(buildResult.assets.length, buildAssets); final linkResult = await link( packageUri, @@ -39,7 +40,11 @@ void main() async { dartExecutable, capturedLogs: logMessages, ); - expect(linkResult.assets.length, 2); + const assetsForOtherLinker = 6; + const inputForLinker = buildAssets - assetsForOtherLinker; + const skippedAssets = 2; + const linkedAssets = inputForLinker - skippedAssets; + expect(linkResult.assets.length, linkedAssets); } }); }); diff --git a/pkgs/native_assets_builder/test_data/cyclic_package_1/build.dart b/pkgs/native_assets_builder/test_data/cyclic_package_1/build.dart index 2479e4ea2..e509d402c 100644 --- a/pkgs/native_assets_builder/test_data/cyclic_package_1/build.dart +++ b/pkgs/native_assets_builder/test_data/cyclic_package_1/build.dart @@ -7,5 +7,5 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); final buildOutput = BuildOutput(); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile(outDir: buildConfig.outputFile); } diff --git a/pkgs/native_assets_builder/test_data/cyclic_package_2/build.dart b/pkgs/native_assets_builder/test_data/cyclic_package_2/build.dart index 2479e4ea2..e509d402c 100644 --- a/pkgs/native_assets_builder/test_data/cyclic_package_2/build.dart +++ b/pkgs/native_assets_builder/test_data/cyclic_package_2/build.dart @@ -7,5 +7,5 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); final buildOutput = BuildOutput(); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile(outDir: buildConfig.outputFile); } diff --git a/pkgs/native_assets_builder/test_data/native_add/build.dart b/pkgs/native_assets_builder/test_data/native_add/build.dart index 69bbb9ede..06b99adbd 100644 --- a/pkgs/native_assets_builder/test_data/native_add/build.dart +++ b/pkgs/native_assets_builder/test_data/native_add/build.dart @@ -27,5 +27,5 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile(outDir: buildConfig.outputFile); } diff --git a/pkgs/native_assets_builder/test_data/native_add_add_source/build.dart b/pkgs/native_assets_builder/test_data/native_add_add_source/build.dart index 3fcb30e4b..5cb1fa7fb 100644 --- a/pkgs/native_assets_builder/test_data/native_add_add_source/build.dart +++ b/pkgs/native_assets_builder/test_data/native_add_add_source/build.dart @@ -28,5 +28,5 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile(outDir: buildConfig.outputFile); } diff --git a/pkgs/native_assets_builder/test_data/native_subtract/build.dart b/pkgs/native_assets_builder/test_data/native_subtract/build.dart index 66b62ea90..93d02aa62 100644 --- a/pkgs/native_assets_builder/test_data/native_subtract/build.dart +++ b/pkgs/native_assets_builder/test_data/native_subtract/build.dart @@ -27,5 +27,5 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile(outDir: buildConfig.outputFile); } diff --git a/pkgs/native_assets_builder/test_data/package_with_metadata/build.dart b/pkgs/native_assets_builder/test_data/package_with_metadata/build.dart index a5e908ac7..77425ffa8 100644 --- a/pkgs/native_assets_builder/test_data/package_with_metadata/build.dart +++ b/pkgs/native_assets_builder/test_data/package_with_metadata/build.dart @@ -12,5 +12,5 @@ void main(List args) async { 'some_int': 3, }), ); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile(outDir: buildConfig.outputFile); } diff --git a/pkgs/native_assets_builder/test_data/simple_link/build.dart b/pkgs/native_assets_builder/test_data/simple_link/build.dart index 996b1fb1a..5816a089a 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/build.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/build.dart @@ -11,7 +11,7 @@ void main(List args) async { final buildOutput = BuildOutput( assets: List.generate( - 4, + 10, (index) { final filename = 'data_$index.json'; return Asset( @@ -20,8 +20,9 @@ void main(List args) async { linkMode: LinkMode.dynamic, //remove target: buildConfig.target, //remove path: AssetAbsolutePath(Uri.file(filename)), // change to URI only + linkInPackage: index < 4 ? 'simple_link' : '', ); }, )); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile(outDir: buildConfig.outputFile); } diff --git a/pkgs/native_assets_builder/test_data/simple_link/link.dart b/pkgs/native_assets_builder/test_data/simple_link/link.dart index c43e50d20..a922d1e5f 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/link.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/link.dart @@ -17,8 +17,7 @@ void main(List args) async { final linkOutput = BuildOutput( assets: shakenAssets.map((e) { - final path = e.path as AssetAbsolutePath; - final filePath = path.uri.toFilePath(); + final filePath = (e.path as AssetAbsolutePath).uri.toFilePath(); final uri = linkConfig.buildConfig.outDirectory.resolve(p.basename(filePath)); File(filePath).copySync(uri.toFilePath()); @@ -30,7 +29,7 @@ void main(List args) async { ); }).toList()); - await linkOutput.writeToFile(outDir: linkConfig.outDir); + await linkOutput.writeToFile(outDir: linkConfig.outputFile); } class MyResourceShaker { diff --git a/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml index 11c652a2b..eb06490d0 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml @@ -10,7 +10,8 @@ environment: dependencies: cli_config: ^0.1.1 logging: ^1.1.1 - native_assets_cli: ^0.3.2 + native_assets_cli: + path: ../../../native_assets_cli/ dev_dependencies: lints: ^3.0.0 diff --git a/pkgs/native_assets_builder/test_data/simple_link/pubspec_overrides.yaml b/pkgs/native_assets_builder/test_data/simple_link/pubspec_overrides.yaml deleted file mode 100644 index efe1074b5..000000000 --- a/pkgs/native_assets_builder/test_data/simple_link/pubspec_overrides.yaml +++ /dev/null @@ -1,3 +0,0 @@ -dependency_overrides: - native_assets_cli: - path: ../../../native_assets_cli/ diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output/build.dart b/pkgs/native_assets_builder/test_data/wrong_build_output/build.dart index c9426f3be..66bfe60f0 100644 --- a/pkgs/native_assets_builder/test_data/wrong_build_output/build.dart +++ b/pkgs/native_assets_builder/test_data/wrong_build_output/build.dart @@ -8,7 +8,7 @@ import 'package:native_assets_cli/native_assets_cli_internal.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); - await File.fromUri(buildConfig.outDir).writeAsString(_wrongContents); + await File.fromUri(buildConfig.outputFile).writeAsString(_wrongContents); } const _wrongContents = ''' diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output_2/build.dart b/pkgs/native_assets_builder/test_data/wrong_build_output_2/build.dart index a84968dcc..849561fe7 100644 --- a/pkgs/native_assets_builder/test_data/wrong_build_output_2/build.dart +++ b/pkgs/native_assets_builder/test_data/wrong_build_output_2/build.dart @@ -8,7 +8,7 @@ import 'package:native_assets_cli/native_assets_cli_internal.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); - await File.fromUri(buildConfig.outDir).writeAsString(_wrongContents); + await File.fromUri(buildConfig.outputFile).writeAsString(_wrongContents); } const _wrongContents = ''' diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output_3/build.dart b/pkgs/native_assets_builder/test_data/wrong_build_output_3/build.dart index 456061441..051a25587 100644 --- a/pkgs/native_assets_builder/test_data/wrong_build_output_3/build.dart +++ b/pkgs/native_assets_builder/test_data/wrong_build_output_3/build.dart @@ -8,7 +8,7 @@ import 'package:native_assets_cli/native_assets_cli_internal.dart'; void main(List args) async { final buildConfig = await BuildConfig.fromArgs(args); - await File.fromUri(buildConfig.outDir).writeAsString(_rightContents); + await File.fromUri(buildConfig.outputFile).writeAsString(_rightContents); exit(1); } diff --git a/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart b/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart index 457aa902b..7f2ba4988 100644 --- a/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart +++ b/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart @@ -13,12 +13,12 @@ void main(List args) async { linkMode: LinkMode.dynamic, target: Target.current, path: AssetAbsolutePath( - buildConfig.outDir.resolve( + buildConfig.outputFile.resolve( Target.current.os.dylibFileName('foo'), ), ), ), ], ); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile(outDir: buildConfig.outputFile); } diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart index 5170d2b88..cba1e0804 100644 --- a/pkgs/native_assets_cli/example/native_add_library/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -46,5 +46,5 @@ void main(List args) async { // Write the output according to the native assets protocol so that Dart or // Flutter can find the native assets produced by this script. - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile(outDir: buildConfig.outputFile); } diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index 1c1aafe2f..afe4a6ad3 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -26,7 +26,8 @@ void main(List args) async { ), ); - await BuildOutput(assets: shakenAssets).writeToFile(outDir: linkInput.outDir); + await BuildOutput(assets: shakenAssets) + .writeToFile(outDir: linkInput.outputFile); } /// Filters out json files from the assets. diff --git a/pkgs/native_assets_cli/example/use_dart_api/build.dart b/pkgs/native_assets_cli/example/use_dart_api/build.dart index 10380ec58..3223f999d 100644 --- a/pkgs/native_assets_cli/example/use_dart_api/build.dart +++ b/pkgs/native_assets_cli/example/use_dart_api/build.dart @@ -28,5 +28,5 @@ void main(List args) async { print('${record.level.name}: ${record.time}: ${record.message}'); }), ); - await buildOutput.writeToFile(outDir: buildConfig.outDir); + await buildOutput.writeToFile(outDir: buildConfig.outputFile); } diff --git a/pkgs/native_assets_cli/lib/src/api/asset.dart b/pkgs/native_assets_cli/lib/src/api/asset.dart index 1d10d644c..6554d1635 100644 --- a/pkgs/native_assets_cli/lib/src/api/asset.dart +++ b/pkgs/native_assets_cli/lib/src/api/asset.dart @@ -43,17 +43,20 @@ abstract class Asset { String get id; Target get target; AssetPath get path; + String get linkInPackage; factory Asset({ required String id, required LinkMode linkMode, required Target target, required AssetPath path, + String linkInPackage = '', }) => model.Asset( id: id, linkMode: linkMode as model.LinkMode, target: target as model.Target, path: path as model.AssetPath, + linkInPackage: linkInPackage, ); } diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index 975dab70c..5b73ef14e 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -136,8 +136,7 @@ class Asset implements api.Asset { final Target target; @override final AssetPath path; - - // Whether this asset should be copied after building. + @override final String linkInPackage; Asset({ diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index e6ba95982..d94a1539f 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -99,7 +99,7 @@ class LinkConfigArgs { } final buildOutput = - await BuildOutput.readFromFile(outputUri: config.outDir); + await BuildOutput.readFromFile(outputUri: config.outputFile); return LinkConfig( this, assets: buildOutput!.assets diff --git a/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart b/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart index 3667b0843..8ba9754f3 100644 --- a/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart @@ -7,7 +7,7 @@ import '../utils/yaml.dart'; abstract class PipelineConfig { Uri get configFile; - Uri get outDir => outDirectory.resolve(outputName); + Uri get outputFile => outDirectory.resolve(outputName); Uri get outDirectory; From e3e71df0d46aae92f6f806512064ceb78e11775f Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 8 Mar 2024 10:19:43 +0100 Subject: [PATCH 065/187] Change as per review --- .../lib/src/api/link_config.dart | 13 ++++++++++++- .../lib/src/model/link_config.dart | 15 +++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index b2dfa3812..654b4306a 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -10,6 +10,11 @@ import '../../native_assets_cli.dart'; import '../model/link_config.dart'; import '../model/pipeline_config.dart'; +/// The input to the linking script. +/// +/// It consists of a subset of the fields from the [BuildConfig] already passed +/// to the build script, the [assets] from the build step, and the +/// [resourceIdentifiers] generated during the kernel compilation. abstract class LinkConfig extends PipelineConfig { /// Generate the [LinkConfig] from the input arguments to the linking script. static Future fromArgs(List args) async { @@ -40,10 +45,16 @@ abstract class LinkConfig extends PipelineConfig { @override Map toYaml(); + /// The URI of the `link.dart` script. @override Uri get script; + /// The list of assets to be linked. These are the assets generated by a + /// `build.dart` script destined for this packages `link.dart`. List get assets; - BuildConfig get buildConfig; + + /// A collection of methods annotated with `@ResourceIdentifier`, which are + /// called in the tree-shaken Dart code. This information can be used to + /// dispose unused [assets]. ResourceIdentifiers? get resourceIdentifiers; } diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index d94a1539f..be444442d 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -16,15 +16,14 @@ import 'pipeline_step.dart'; /// The input to the linking script. /// -/// It consists of the [buildConfig] already passed to the build script, the +/// It consists of the [_buildConfig] already passed to the build script, the /// [assets] from the build step, and the [resourceIdentifiers] /// generated during the kernel compilation. class LinkConfig extends api.LinkConfig { @override final List assets; - @override - final BuildConfig buildConfig; + final BuildConfig _buildConfig; @override final ResourceIdentifiers? resourceIdentifiers; @@ -34,24 +33,24 @@ class LinkConfig extends api.LinkConfig { LinkConfig( this._args, { required this.assets, - required this.buildConfig, + required BuildConfig buildConfig, required this.resourceIdentifiers, - }); + }) : _buildConfig = buildConfig; @override Uri get configFile => outDirectory.resolve('../link_config.yaml'); @override - Uri get outDirectory => buildConfig.outDirectory; + Uri get outDirectory => _buildConfig.outDirectory; @override String get outputName => 'link_output.yaml'; @override - String get packageName => buildConfig.packageName; + String get packageName => _buildConfig.packageName; @override - Uri get packageRoot => buildConfig.packageRoot; + Uri get packageRoot => _buildConfig.packageRoot; @override Map toYaml() => _args.toYaml(); From 0016825f6a3dad746c1119ca6daee18f142ba565 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 8 Mar 2024 10:21:55 +0100 Subject: [PATCH 066/187] Fixes --- pkgs/native_assets_builder/pubspec.yaml | 2 +- pkgs/native_assets_cli/test/api/resources_test.dart | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/native_assets_builder/pubspec.yaml b/pkgs/native_assets_builder/pubspec.yaml index 0a9024089..e700aaa10 100644 --- a/pkgs/native_assets_builder/pubspec.yaml +++ b/pkgs/native_assets_builder/pubspec.yaml @@ -1,7 +1,7 @@ name: native_assets_builder description: >- This package is the backend that invokes top-level `build.dart` scripts. -s version: 0.6.0 +version: 0.6.0 repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_builder environment: diff --git a/pkgs/native_assets_cli/test/api/resources_test.dart b/pkgs/native_assets_cli/test/api/resources_test.dart index 50ae76f2e..c4b4ffbc7 100644 --- a/pkgs/native_assets_cli/test/api/resources_test.dart +++ b/pkgs/native_assets_cli/test/api/resources_test.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'package:native_assets_cli/native_assets_cli.dart'; import 'package:test/test.dart'; From 91be8d0558c03edd539fe01c5860b241392a0654 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 8 Mar 2024 10:22:39 +0100 Subject: [PATCH 067/187] Switch to wip version --- pkgs/native_assets_builder/CHANGELOG.md | 2 +- pkgs/native_assets_builder/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_builder/CHANGELOG.md b/pkgs/native_assets_builder/CHANGELOG.md index ee2a25ac6..ea9a84840 100644 --- a/pkgs/native_assets_builder/CHANGELOG.md +++ b/pkgs/native_assets_builder/CHANGELOG.md @@ -1,4 +1,4 @@ -## 0.6.0 +## 0.6.0-wip - Add support for `link.dart`. diff --git a/pkgs/native_assets_builder/pubspec.yaml b/pkgs/native_assets_builder/pubspec.yaml index e700aaa10..605e31b86 100644 --- a/pkgs/native_assets_builder/pubspec.yaml +++ b/pkgs/native_assets_builder/pubspec.yaml @@ -1,7 +1,7 @@ name: native_assets_builder description: >- This package is the backend that invokes top-level `build.dart` scripts. -version: 0.6.0 +version: 0.6.0-wip repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_builder environment: From 77aad91ef03cc4503787eb26687c4ac5aa1a693f Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 8 Mar 2024 10:25:15 +0100 Subject: [PATCH 068/187] Skip link test for now --- .../test/build_runner/link_test.dart | 75 ++++++++++--------- 1 file changed, 40 insertions(+), 35 deletions(-) diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart index 991b3c86a..22c1228dc 100644 --- a/pkgs/native_assets_builder/test/build_runner/link_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -10,42 +10,47 @@ import 'helpers.dart'; const Timeout longTimeout = Timeout(Duration(minutes: 5)); void main() async { - test('simple_link linking', timeout: longTimeout, () async { - await inTempDir((tempUri) async { - await copyTestProjects(targetUri: tempUri); - final packageUri = tempUri.resolve('simple_link/'); + test( + 'simple_link linking', + timeout: longTimeout, + skip: 'Until https://dart-review.googlesource.com/c/sdk/+/338380 is merged', + () async { + await inTempDir((tempUri) async { + await copyTestProjects(targetUri: tempUri); + final packageUri = tempUri.resolve('simple_link/'); - // First, run `pub get`, we need pub to resolve our dependencies. - await runPubGet( - workingDirectory: packageUri, - logger: logger, - ); - - // Trigger a build, should invoke build for libraries with native assets. - { - final logMessages = []; - final buildResult = await build( - packageUri, - logger, - dartExecutable, - capturedLogs: logMessages, - copyAssets: false, + // First, run `pub get`, we need pub to resolve our dependencies. + await runPubGet( + workingDirectory: packageUri, + logger: logger, ); - const buildAssets = 10; - expect(buildResult.assets.length, buildAssets); - final linkResult = await link( - packageUri, - logger, - dartExecutable, - capturedLogs: logMessages, - ); - const assetsForOtherLinker = 6; - const inputForLinker = buildAssets - assetsForOtherLinker; - const skippedAssets = 2; - const linkedAssets = inputForLinker - skippedAssets; - expect(linkResult.assets.length, linkedAssets); - } - }); - }); + // Trigger a build, should invoke build for libraries with native assets. + { + final logMessages = []; + final buildResult = await build( + packageUri, + logger, + dartExecutable, + capturedLogs: logMessages, + copyAssets: false, + ); + const buildAssets = 10; + expect(buildResult.assets.length, buildAssets); + + final linkResult = await link( + packageUri, + logger, + dartExecutable, + capturedLogs: logMessages, + ); + const assetsForOtherLinker = 6; + const inputForLinker = buildAssets - assetsForOtherLinker; + const skippedAssets = 2; + const linkedAssets = inputForLinker - skippedAssets; + expect(linkResult.assets.length, linkedAssets); + } + }); + }, + ); } From d46741a506a4ac0411159714b92903c418eefb6f Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 8 Mar 2024 10:27:50 +0100 Subject: [PATCH 069/187] Fix warnings --- .../test/build_runner/link_test.dart | 42 ++++++++----------- .../test_data/simple_link/link.dart | 3 +- 2 files changed, 19 insertions(+), 26 deletions(-) diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart index 22c1228dc..f912dc3a3 100644 --- a/pkgs/native_assets_builder/test/build_runner/link_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -25,31 +25,25 @@ void main() async { logger: logger, ); - // Trigger a build, should invoke build for libraries with native assets. - { - final logMessages = []; - final buildResult = await build( - packageUri, - logger, - dartExecutable, - capturedLogs: logMessages, - copyAssets: false, - ); - const buildAssets = 10; - expect(buildResult.assets.length, buildAssets); + final buildResult = await build( + packageUri, + logger, + dartExecutable, + copyAssets: false, + ); + const buildAssets = 10; + expect(buildResult.assets.length, buildAssets); - final linkResult = await link( - packageUri, - logger, - dartExecutable, - capturedLogs: logMessages, - ); - const assetsForOtherLinker = 6; - const inputForLinker = buildAssets - assetsForOtherLinker; - const skippedAssets = 2; - const linkedAssets = inputForLinker - skippedAssets; - expect(linkResult.assets.length, linkedAssets); - } + final linkResult = await link( + packageUri, + logger, + dartExecutable, + ); + const assetsForOtherLinker = 6; + const inputForLinker = buildAssets - assetsForOtherLinker; + const skippedAssets = 2; + const linkedAssets = inputForLinker - skippedAssets; + expect(linkResult.assets.length, linkedAssets); }); }, ); diff --git a/pkgs/native_assets_builder/test_data/simple_link/link.dart b/pkgs/native_assets_builder/test_data/simple_link/link.dart index a922d1e5f..acb4de60a 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/link.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/link.dart @@ -18,8 +18,7 @@ void main(List args) async { final linkOutput = BuildOutput( assets: shakenAssets.map((e) { final filePath = (e.path as AssetAbsolutePath).uri.toFilePath(); - final uri = - linkConfig.buildConfig.outDirectory.resolve(p.basename(filePath)); + final uri = linkConfig.outDirectory.resolve(p.basename(filePath)); File(filePath).copySync(uri.toFilePath()); return Asset( id: e.id, From 6611f5e3f5c6b451195ed9f77f10bd82480fd8da Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 8 Mar 2024 10:30:20 +0100 Subject: [PATCH 070/187] Add publish_to: none --- pkgs/native_assets_builder/pubspec.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/native_assets_builder/pubspec.yaml b/pkgs/native_assets_builder/pubspec.yaml index 605e31b86..2cf4ac532 100644 --- a/pkgs/native_assets_builder/pubspec.yaml +++ b/pkgs/native_assets_builder/pubspec.yaml @@ -3,6 +3,7 @@ description: >- This package is the backend that invokes top-level `build.dart` scripts. version: 0.6.0-wip repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_builder +publish_to: none environment: sdk: '>=3.0.0 <4.0.0' From bbf64b6c350954cd0288e3066836f7c764764cf3 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 8 Mar 2024 10:33:27 +0100 Subject: [PATCH 071/187] Fix example --- pkgs/native_assets_cli/example/native_add_library/link.dart | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/link.dart index afe4a6ad3..fb5daca69 100644 --- a/pkgs/native_assets_cli/example/native_add_library/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/link.dart @@ -20,9 +20,7 @@ void main(List args) async { id: 'package:$packageName/$assetName', linkMode: LinkMode.dynamic, target: Target.androidArm, - path: AssetAbsolutePath( - linkInput.buildConfig.packageRoot.resolve(assetName), - ), + path: AssetAbsolutePath(linkInput.packageRoot.resolve(assetName)), ), ); From f5a3feb345a133120472269c05fcbbae46def24b Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 8 Mar 2024 10:34:13 +0100 Subject: [PATCH 072/187] Fix issues --- pkgs/native_assets_cli/lib/src/model/build_config.dart | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index eecd7a5a2..cb18a9084 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -212,10 +212,12 @@ class BuildConfig extends PipelineConfig implements api.BuildConfig { /// Constructs a checksum for a [BuildConfig] based on the fields /// of a buildconfig that influence the build. /// - /// This can be used for an [outDirectory], but should not be used for dry-runs. + /// This can be used for an [outDirectory], but should not be used for + /// dry-runs. /// /// In particular, it only takes the package name from [packageRoot], - /// so that the hash is equal across checkouts and ignores [outDirectory] itself. + /// so that the hash is equal across checkouts and ignores [outDirectory] + /// itself. static String checksum({ required String packageName, required Uri packageRoot, From a280e4dd5648ce5c9a48f9ed3b814a3a891964db Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 8 Mar 2024 10:40:55 +0100 Subject: [PATCH 073/187] Fix tests --- pkgs/native_assets_cli/test/model/asset_test.dart | 12 ++++++------ .../test/model/build_output_test.dart | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pkgs/native_assets_cli/test/model/asset_test.dart b/pkgs/native_assets_cli/test/model/asset_test.dart index d2511dc4c..fe4755493 100644 --- a/pkgs/native_assets_cli/test/model/asset_test.dart +++ b/pkgs/native_assets_cli/test/model/asset_test.dart @@ -56,40 +56,40 @@ void main() { path_type: absolute uri: ${fooUri.toFilePath()} target: android_x64 - copy: true + linkInPackage: "" - id: foo3 link_mode: dynamic path: path_type: system uri: ${foo3Uri.toFilePath()} target: android_x64 - copy: true + linkInPackage: "" - id: foo4 link_mode: dynamic path: path_type: executable target: android_x64 - copy: true + linkInPackage: "" - id: foo5 link_mode: dynamic path: path_type: process target: android_x64 - copy: true + linkInPackage: "" - id: bar link_mode: static path: path_type: absolute uri: ${barUri.toFilePath()} target: linux_arm64 - copy: true + linkInPackage: "" - id: bla link_mode: dynamic path: path_type: absolute uri: ${blaUri.toFilePath()} target: windows_x64 - copy: true'''; + linkInPackage: ""'''; test('asset yaml', () { final yaml = assets.toYamlString(); diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index 2f443a391..d77856bee 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -50,14 +50,14 @@ assets: path_type: absolute uri: path/to/libfoo.so target: android_x64 - copy: true + linkInPackage: "" - id: foo2 link_mode: dynamic path: path_type: system uri: path/to/libfoo2.so target: android_x64 - copy: true + linkInPackage: "" dependencies: - path/to/file.ext metadata: From 6abb07afd162207c87b605a1ea44ff27a2087ae7 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 8 Mar 2024 10:48:49 +0100 Subject: [PATCH 074/187] Fix build.dart --- .../test_data/wrong_namespace_asset/build.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart b/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart index 7f2ba4988..91a8624d4 100644 --- a/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart +++ b/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart @@ -13,7 +13,7 @@ void main(List args) async { linkMode: LinkMode.dynamic, target: Target.current, path: AssetAbsolutePath( - buildConfig.outputFile.resolve( + buildConfig.outDirectory.resolve( Target.current.os.dylibFileName('foo'), ), ), From 86c4ee3b45c1eb7052c57669c7cba1e4988dd4c7 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 21 Mar 2024 13:30:35 +0100 Subject: [PATCH 075/187] Fix cli_config version --- pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml index eb06490d0..4591b5ba1 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml @@ -8,7 +8,7 @@ environment: sdk: '>=3.0.0 <4.0.0' dependencies: - cli_config: ^0.1.1 + cli_config: ^0.2.0 logging: ^1.1.1 native_assets_cli: path: ../../../native_assets_cli/ From 50f77fcb0ed58085170faf0c17c5076e64fe0608 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 21 Mar 2024 13:39:08 +0100 Subject: [PATCH 076/187] Fix issues --- pkgs/native_assets_cli/lib/src/api/build_output.dart | 2 -- pkgs/native_assets_cli/lib/src/api/link_config.dart | 10 +++++----- pkgs/native_assets_cli/lib/src/model/build_output.dart | 2 +- pkgs/native_assets_cli/lib/src/model/link_config.dart | 6 +++--- pkgs/native_assets_cli/pubspec.yaml | 1 + pkgs/native_assets_cli/test/api/asset_test.dart | 1 - 6 files changed, 10 insertions(+), 12 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/api/build_output.dart b/pkgs/native_assets_cli/lib/src/api/build_output.dart index 2028437ce..f0eccb1b9 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_output.dart @@ -10,8 +10,6 @@ import 'package:pub_semver/pub_semver.dart'; import 'package:yaml/yaml.dart' show loadYaml; import '../../native_assets_cli_internal.dart'; -import '../model/dependencies.dart'; -import '../model/metadata.dart'; import '../utils/datetime.dart'; import '../utils/file.dart'; import '../utils/json.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index caad1aa2b..2e672f939 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -6,8 +6,7 @@ import 'dart:io'; import 'package:args/args.dart'; import 'package:cli_config/cli_config.dart'; -import 'package:pub_semver/src/version.dart'; -import 'package:yaml/yaml.dart'; +import 'package:pub_semver/pub_semver.dart'; import '../../native_assets_cli.dart'; import '../model/pipeline_step.dart'; @@ -28,10 +27,11 @@ abstract class LinkConfig extends PipelineConfig { final argParser = ArgParser()..addOption('config'); final results = argParser.parse(args); - final yaml = loadYaml(File(results['config'] as String).readAsStringSync()) - as YamlMap; + final json = + jsonDecode(File(results['config'] as String).readAsStringSync()) + as Map; - return LinkConfigArgs.fromYaml(yaml).fromArgs(); + return LinkConfigArgs.fromJson(json).fromArgs(); } @override diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index dee68351d..efb8cf8e0 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -138,7 +138,7 @@ final class BuildOutputImpl implements BuildOutput { return null; } - /// Writes the [toJsonString] to [config.outputFile]. + /// Writes the [toJsonString] to the output file specified in the [config]. Future writeToFile({required PipelineConfig config}) async { final configVersion = (config as PipelineConfigImpl).version; final jsonString = toJsonString(configVersion); diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 1688de589..8074c326f 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -64,12 +64,12 @@ class LinkConfigArgs { required this.buildConfigUri, }); - factory LinkConfigArgs.fromYaml(YamlMap yaml) { - final resourceUri = yaml[resourceIdentifierKey] as String?; + factory LinkConfigArgs.fromJson(Map json) { + final resourceUri = json[resourceIdentifierKey] as String?; return LinkConfigArgs( resourceIdentifierUri: resourceUri != null ? Uri.parse(resourceUri) : null, - buildConfigUri: Uri.parse(yaml[buildConfigKey] as String), + buildConfigUri: Uri.parse(json[buildConfigKey] as String), ); } diff --git a/pkgs/native_assets_cli/pubspec.yaml b/pkgs/native_assets_cli/pubspec.yaml index c239a7153..b78554f03 100644 --- a/pkgs/native_assets_cli/pubspec.yaml +++ b/pkgs/native_assets_cli/pubspec.yaml @@ -16,6 +16,7 @@ environment: sdk: '>=3.3.0 <4.0.0' dependencies: + args: ^2.4.2 cli_config: ^0.2.0 collection: ^1.17.1 crypto: ^3.0.3 diff --git a/pkgs/native_assets_cli/test/api/asset_test.dart b/pkgs/native_assets_cli/test/api/asset_test.dart index 606d775a5..c01772a9d 100644 --- a/pkgs/native_assets_cli/test/api/asset_test.dart +++ b/pkgs/native_assets_cli/test/api/asset_test.dart @@ -3,7 +3,6 @@ // BSD-style license that can be found in the LICENSE file. import 'package:native_assets_cli/native_assets_cli.dart'; -import 'package:native_assets_cli/src/api/asset.dart'; import 'package:test/test.dart'; void main() { From 5ca2b56379e25093498abee5047a78254ad67f80 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 22 Mar 2024 10:13:51 +0100 Subject: [PATCH 077/187] Fixes --- .../lib/src/build_runner/build_runner.dart | 10 ++--- .../src/package_layout/package_layout.dart | 7 +++- .../test_data/simple_link/link.dart | 10 ++--- .../lib/native_assets_cli.dart | 1 + .../lib/native_assets_cli_internal.dart | 1 + pkgs/native_assets_cli/lib/src/api/link.dart | 17 ++++++--- .../lib/src/api/link_output.dart | 37 +++++++++++++++++++ .../lib/src/model/build_config.dart | 13 +++---- .../lib/src/model/link_config.dart | 4 +- .../test/example/native_add_library_test.dart | 4 +- 10 files changed, 75 insertions(+), 29 deletions(-) create mode 100644 pkgs/native_assets_cli/lib/src/api/link_output.dart diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 9631969db..30db0c7e6 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -188,7 +188,6 @@ class NativeAssetsBuildRunner { if (!planSuccess) { return buildResult; } - final assets = []; var success = true; for (final package in buildPlan) { final config = await _cliConfigDryRun( @@ -212,19 +211,18 @@ class NativeAssetsBuildRunner { case NativeCodeAssetImpl _: if (asset.architecture != null) { // Backwards compatibility, if an architecture is provided use it. - assets.add(asset); + buildResult.assets.add(asset); } else { // Dry run does not report architecture. Dart VM branches on OS // and Target when looking up assets, so populate assets for all // architectures. for (final architecture in asset.os.architectures) { - assets.add(asset.copyWith( - architecture: architecture, - )); + buildResult.assets + .add(asset.copyWith(architecture: architecture)); } } case DataAssetImpl _: - assets.add(asset); + buildResult.assets.add(asset); } } success &= packageSuccess; diff --git a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart index 0c6fcfb36..2a0ac4290 100644 --- a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart +++ b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart @@ -95,7 +95,12 @@ class PackageLayout { for (final package in packageConfig.packages) { final packageRoot = package.root; if (packageRoot.scheme == 'file') { - if (await File.fromUri(packageRoot.resolve(step.scriptName)).exists()) { + if (await File.fromUri( + packageRoot.resolve('hook/').resolve(step.scriptName), + ).exists() || + await File.fromUri( + packageRoot.resolve(step.scriptName), + ).exists()) { result.add(package); } } diff --git a/pkgs/native_assets_builder/test_data/simple_link/link.dart b/pkgs/native_assets_builder/test_data/simple_link/link.dart index ad2b023c4..1ea6ed0e0 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/link.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/link.dart @@ -8,17 +8,15 @@ import 'package:native_assets_cli/native_assets_cli.dart'; import 'package:path/path.dart' as p; void main(List args) async { - final linkConfig = await LinkConfig.fromArguments(args); - - link(args, (config, output) async { + await link(args, (config, output) async { final shakenAssets = MyResourceShaker().shake( - linkConfig.assets, - linkConfig.resourceIdentifiers, + config.assets, + config.resourceIdentifiers, ); final linkOutput = shakenAssets.map((e) { final filePath = e.file!.toFilePath(); - final uri = linkConfig.outDirectory.resolve(p.basename(filePath)); + final uri = config.outDirectory.resolve(p.basename(filePath)); File(filePath).copySync(uri.toFilePath()); return DataAsset.fromId(id: e.id, file: uri); }).toList(); diff --git a/pkgs/native_assets_cli/lib/native_assets_cli.dart b/pkgs/native_assets_cli/lib/native_assets_cli.dart index 830e4389f..a83b52619 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli.dart @@ -26,5 +26,6 @@ export 'src/api/ios_sdk.dart' show IOSSdk; export 'src/api/link.dart'; export 'src/api/link_config.dart' show LinkConfig; export 'src/api/link_mode_preference.dart' show LinkModePreference; +export 'src/api/link_output.dart' show LinkOutput; export 'src/api/os.dart' show OS; export 'src/api/resources.dart'; diff --git a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart index bc5bc8a45..bb6f1dd7b 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart @@ -35,6 +35,7 @@ export 'src/api/build_output.dart' show BuildOutputImpl; export 'src/api/ios_sdk.dart' show IOSSdkImpl; export 'src/api/link_config.dart' show LinkConfigArgs, LinkConfigImpl; export 'src/api/link_mode_preference.dart' show LinkModePreferenceImpl; +export 'src/api/link_output.dart' show LinkOutput; export 'src/api/os.dart' show OSImpl; export 'src/api/pipeline_config.dart' show PipelineConfigImpl; export 'src/model/dependencies.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/link.dart b/pkgs/native_assets_cli/lib/src/api/link.dart index 339d526c7..2413afe57 100644 --- a/pkgs/native_assets_cli/lib/src/api/link.dart +++ b/pkgs/native_assets_cli/lib/src/api/link.dart @@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'build_output.dart'; +import '../../native_assets_cli_internal.dart'; import 'link_config.dart'; /// Runs a native assets build. @@ -87,10 +87,17 @@ import 'link_config.dart'; /// ``` Future link( List arguments, - Future Function(LinkConfig config, BuildOutput output) builder, + Future Function(LinkConfig config, LinkOutput output) builder, ) async { final config = await LinkConfig.fromArguments(arguments); - final output = BuildOutputImpl(); - await builder(config, output); - await output.writeToFile(config: config); + + // The built assets are dependencies of linking, as the linking should be + // rerun if they change. + final builtAssets = + config.assets.map((e) => e.file).whereType().toList(); + final linkoutput = LinkOutput(BuildOutputImpl( + dependencies: Dependencies(builtAssets), + )); + await builder(config, linkoutput); + await BuildOutputImpl().writeToFile(config: config); } diff --git a/pkgs/native_assets_cli/lib/src/api/link_output.dart b/pkgs/native_assets_cli/lib/src/api/link_output.dart new file mode 100644 index 000000000..b08447894 --- /dev/null +++ b/pkgs/native_assets_cli/lib/src/api/link_output.dart @@ -0,0 +1,37 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:io'; + +import 'architecture.dart'; +import 'asset.dart'; +import 'build_output.dart'; +import 'os.dart'; + +extension type LinkOutput(BuildOutput _buildOutput) { + /// Start time for the link of this output. + /// + /// The [timestamp] is rounded down to whole seconds, because + /// [File.lastModified] is rounded to whole seconds and caching logic compares + /// these timestamps. + DateTime get timestamp => _buildOutput.timestamp; + + /// The assets produced by this link. + /// + /// In dry runs, the assets for all [Architecture]s for the [OS] specified in + /// the dry run must be provided. + Iterable get assets => _buildOutput.assets; + + /// The files used by this link. + /// + /// If any of the files in [dependencies] are modified after [timestamp], the + /// link will be re-run. + Iterable get dependencies => _buildOutput.dependencies; + + /// Adds [Asset]s produced by this link or dry run. + void addAsset(Asset asset) => _buildOutput.addAsset(asset); + + /// Adds [Asset]s produced by this link or dry run. + void addAssets(Iterable assets) => _buildOutput.addAssets(assets); +} diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index 4d618209a..27d7cbaec 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -7,21 +7,20 @@ part of '../api/build_config.dart'; final class BuildConfigImpl extends PipelineConfigImpl implements BuildConfig { @override Uri get script { - final hookFolder = packageRoot.resolve('hook/'); - final Uri scriptFolder; - if (File.fromUri(hookFolder).existsSync()) { - scriptFolder = hookFolder; + final hookScript = + packageRoot.resolve('hook/').resolve(PipelineStep.build.scriptName); + if (File.fromUri(hookScript).existsSync()) { + return hookScript; } else { - scriptFolder = packageRoot; + return packageRoot.resolve(PipelineStep.build.scriptName); } - return scriptFolder.resolve(PipelineStep.build.scriptName); } @override String get outputName => 'build_output.json'; @override - Uri get configFile => outDirectory.resolve('../config.yaml'); + Uri get configFile => outDirectory.resolve('../config.json'); /// The folder in which all output and intermediate artifacts should be /// placed. diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 8074c326f..ac01a4960 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -28,13 +28,13 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { }) : _buildConfig = buildConfig; @override - Uri get configFile => outDirectory.resolve('../link_config.yaml'); + Uri get configFile => outDirectory.resolve('../link_config.json'); @override Uri get outDirectory => _buildConfig.outDirectory; @override - String get outputName => 'link_output.yaml'; + String get outputName => 'link_output.json'; @override String get packageName => _buildConfig.packageName; diff --git a/pkgs/native_assets_cli/test/example/native_add_library_test.dart b/pkgs/native_assets_cli/test/example/native_add_library_test.dart index 8d68be9e4..5e83c2f1e 100644 --- a/pkgs/native_assets_cli/test/example/native_add_library_test.dart +++ b/pkgs/native_assets_cli/test/example/native_add_library_test.dart @@ -75,11 +75,11 @@ void main() async { final assets = buildOutput.assets; final dependencies = buildOutput.dependencies; if (dryRun) { - expect(assets.length, greaterThanOrEqualTo(2)); + expect(assets.length, greaterThanOrEqualTo(1)); expect(assets.first.file, isNull); expect(dependencies, isEmpty); } else { - expect(assets.length, 2); + expect(assets.length, 1); expect(await assets.allExist(), true); expect( dependencies, From 0459384dd60058c71035f3b7b6034519f9a1e843 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 22 Mar 2024 11:56:07 +0100 Subject: [PATCH 078/187] Fix analyze issues --- .../test_data/wrong_build_output/hook/build.dart | 2 +- .../test_data/wrong_build_output_2/hook/build.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output/hook/build.dart b/pkgs/native_assets_builder/test_data/wrong_build_output/hook/build.dart index 458d848d3..969f76335 100644 --- a/pkgs/native_assets_builder/test_data/wrong_build_output/hook/build.dart +++ b/pkgs/native_assets_builder/test_data/wrong_build_output/hook/build.dart @@ -7,7 +7,7 @@ import 'dart:io'; import 'package:native_assets_cli/native_assets_cli_internal.dart'; void main(List args) async { - final buildConfig = await BuildConfigImpl.fromArguments(args); + final buildConfig = BuildConfigImpl.fromArguments(args); await File.fromUri(buildConfig.outputFile).writeAsString(_wrongContents); } diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output_2/hook/build.dart b/pkgs/native_assets_builder/test_data/wrong_build_output_2/hook/build.dart index 5d23a8d4b..dfb5b5e20 100644 --- a/pkgs/native_assets_builder/test_data/wrong_build_output_2/hook/build.dart +++ b/pkgs/native_assets_builder/test_data/wrong_build_output_2/hook/build.dart @@ -7,7 +7,7 @@ import 'dart:io'; import 'package:native_assets_cli/native_assets_cli_internal.dart'; void main(List args) async { - final buildConfig = await BuildConfigImpl.fromArguments(args); + final buildConfig = BuildConfigImpl.fromArguments(args); await File.fromUri(buildConfig.outputFile).writeAsString(_wrongContents); } From 193161c8b760bc7f252d07805dac1ded79b08475 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 22 Mar 2024 12:12:58 +0100 Subject: [PATCH 079/187] use build version for link config --- pkgs/native_assets_cli/lib/src/model/link_config.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index ac01a4960..8d4ffb5f5 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -13,7 +13,7 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { @override final List assets; - final BuildConfig _buildConfig; + final BuildConfigImpl _buildConfig; @override final ResourceIdentifiers? resourceIdentifiers; @@ -23,7 +23,7 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { LinkConfigImpl( this._args, { required this.assets, - required BuildConfig buildConfig, + required BuildConfigImpl buildConfig, required this.resourceIdentifiers, }) : _buildConfig = buildConfig; @@ -49,7 +49,7 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { String toJsonString() => jsonEncode(_args.toJson()); @override - Version get version => throw UnimplementedError(); + Version get version => _buildConfig.version; } class LinkConfigArgs { From bea90bb2f334d196b6f9a0faaedae5ec287ddf26 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 22 Mar 2024 14:01:52 +0100 Subject: [PATCH 080/187] Fixes --- .../lib/src/build_runner/build_runner.dart | 3 ++- .../test/build_runner/link_test.dart | 1 - .../native_assets_builder/test_data/manifest.yaml | 4 ++-- .../test_data/simple_link/{ => hook}/build.dart | 0 .../test_data/simple_link/{ => hook}/link.dart | 15 +++------------ .../lib/src/api/link_config.dart | 12 +++++++----- .../lib/src/model/link_config.dart | 15 +++++++++------ 7 files changed, 23 insertions(+), 27 deletions(-) rename pkgs/native_assets_builder/test_data/simple_link/{ => hook}/build.dart (100%) rename pkgs/native_assets_builder/test_data/simple_link/{ => hook}/link.dart (73%) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 30db0c7e6..a8f366210 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -139,7 +139,7 @@ class NativeAssetsBuildRunner { config = await LinkConfigArgs( resourceIdentifierUri: resourceIdentifiers, buildConfigUri: buildConfig.configFile, - ).fromArgs(); + ).toLinkConfig(); } else { config = buildConfig; } @@ -290,6 +290,7 @@ class NativeAssetsBuildRunner { '--packages=${packageConfigUri.toFilePath()}', config.script.toFilePath(), '--config=${configFile.toFilePath()}', + if (resources != null) resources.toFilePath(), ]; final result = await runProcess( workingDirectory: workingDirectory, diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart index f912dc3a3..c0055460f 100644 --- a/pkgs/native_assets_builder/test/build_runner/link_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -13,7 +13,6 @@ void main() async { test( 'simple_link linking', timeout: longTimeout, - skip: 'Until https://dart-review.googlesource.com/c/sdk/+/338380 is merged', () async { await inTempDir((tempUri) async { await copyTestProjects(targetUri: tempUri); diff --git a/pkgs/native_assets_builder/test_data/manifest.yaml b/pkgs/native_assets_builder/test_data/manifest.yaml index 587ea889d..bdf4a7686 100644 --- a/pkgs/native_assets_builder/test_data/manifest.yaml +++ b/pkgs/native_assets_builder/test_data/manifest.yaml @@ -28,8 +28,8 @@ - package_with_metadata/hook/build.dart - package_with_metadata/pubspec.yaml - simple_link/pubspec.yaml -- simple_link/build.dart -- simple_link/link.dart +- simple_link/hook/build.dart +- simple_link/hook/link.dart - simple_link/data_0.json - simple_link/data_1.json - simple_link/data_2.json diff --git a/pkgs/native_assets_builder/test_data/simple_link/build.dart b/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart similarity index 100% rename from pkgs/native_assets_builder/test_data/simple_link/build.dart rename to pkgs/native_assets_builder/test_data/simple_link/hook/build.dart diff --git a/pkgs/native_assets_builder/test_data/simple_link/link.dart b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart similarity index 73% rename from pkgs/native_assets_builder/test_data/simple_link/link.dart rename to pkgs/native_assets_builder/test_data/simple_link/hook/link.dart index 1ea6ed0e0..330776bd4 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/link.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart @@ -9,11 +9,8 @@ import 'package:path/path.dart' as p; void main(List args) async { await link(args, (config, output) async { - final shakenAssets = MyResourceShaker().shake( - config.assets, - config.resourceIdentifiers, - ); - + final shakenAssets = shake(config.assets); + print('test'); final linkOutput = shakenAssets.map((e) { final filePath = e.file!.toFilePath(); final uri = config.outDirectory.resolve(p.basename(filePath)); @@ -25,10 +22,4 @@ void main(List args) async { }); } -class MyResourceShaker { - List shake( - List assets, - ResourceIdentifiers? resourceIdentifiers, - ) => - assets.skip(2).toList(); -} +List shake(List assets) => assets.skip(2).toList(); diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 2e672f939..cb9e30d01 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -24,14 +24,16 @@ part '../model/link_config.dart'; abstract class LinkConfig extends PipelineConfig { /// Generate the [LinkConfig] from the input arguments to the linking script. static Future fromArguments(List args) async { - final argParser = ArgParser()..addOption('config'); + final argParser = ArgParser() + ..addOption('config') + ..addOption('resources'); final results = argParser.parse(args); - final json = - jsonDecode(File(results['config'] as String).readAsStringSync()) - as Map; - return LinkConfigArgs.fromJson(json).fromArgs(); + return LinkConfigArgs.fromBuildConfig( + results['config'] as String, + results['resources'] as String?, + ).toLinkConfig(); } @override diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 8d4ffb5f5..373e937ef 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -64,16 +64,19 @@ class LinkConfigArgs { required this.buildConfigUri, }); - factory LinkConfigArgs.fromJson(Map json) { - final resourceUri = json[resourceIdentifierKey] as String?; + factory LinkConfigArgs.fromBuildConfig( + String buildConfig, + String? resourceUri, + ) { + final resourceIdentifierUri = + resourceUri != null ? Uri.parse(resourceUri) : null; return LinkConfigArgs( - resourceIdentifierUri: - resourceUri != null ? Uri.parse(resourceUri) : null, - buildConfigUri: Uri.parse(json[buildConfigKey] as String), + resourceIdentifierUri: resourceIdentifierUri, + buildConfigUri: Uri.parse(buildConfig), ); } - Future fromArgs() async { + Future toLinkConfig() async { final buildConfigFile = File(buildConfigUri.path); if (!buildConfigFile.existsSync()) { throw UnsupportedError( From c61a18bacb541df1925ee4322de23431c3a6ebaa Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 22 Mar 2024 14:51:22 +0100 Subject: [PATCH 081/187] Test runs now! --- .../lib/src/build_runner/build_runner.dart | 4 +-- .../test/build_runner/link_test.dart | 9 ++---- .../test_data/simple_link/hook/build.dart | 17 ++++++----- .../test_data/simple_link/hook/link.dart | 2 +- pkgs/native_assets_cli/lib/src/api/link.dart | 2 +- .../lib/src/api/link_config.dart | 13 ++++---- .../lib/src/api/link_output.dart | 11 ++++++- .../lib/src/model/build_output.dart | 25 +++++++++++----- .../lib/src/model/link_config.dart | 30 +++++++++++-------- 9 files changed, 68 insertions(+), 45 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index a8f366210..80665dd25 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -335,7 +335,7 @@ ${result.stdout} } on FormatException catch (e) { logger.severe(''' Building native assets for package:${config.packageName} failed. -build_output.json contained a format error. +${config.outputName} contained a format error. ${e.message} '''); success = false; @@ -347,7 +347,7 @@ ${e.message} } on TypeError { logger.severe(''' Building native assets for package:${config.packageName} failed. -build_output.json contained a format error. +${config.outputName} contained a format error. '''); success = false; return (BuildOutputImpl(), false); diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart index c0055460f..6e2f23f32 100644 --- a/pkgs/native_assets_builder/test/build_runner/link_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -30,19 +30,14 @@ void main() async { dartExecutable, copyAssets: false, ); - const buildAssets = 10; - expect(buildResult.assets.length, buildAssets); + expect(buildResult.assets.length, 0); final linkResult = await link( packageUri, logger, dartExecutable, ); - const assetsForOtherLinker = 6; - const inputForLinker = buildAssets - assetsForOtherLinker; - const skippedAssets = 2; - const linkedAssets = inputForLinker - skippedAssets; - expect(linkResult.assets.length, linkedAssets); + expect(linkResult.assets.length, 2); }); }, ); diff --git a/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart b/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart index f7b2878db..aa70391e3 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart @@ -7,12 +7,15 @@ import 'package:native_assets_cli/native_assets_cli.dart'; const packageName = 'simple_link'; void main(List args) async => build(args, (config, output) async { - output.addAssets(List.generate( - 10, - (index) => DataAsset( - name: 'data_$index', // The BuildState knows the package name. - file: Uri.file('data_$index.json'), // change to URI only - package: packageName, + output.addAssets( + List.generate( + 4, + (index) => DataAsset( + name: 'data_$index', // The BuildState knows the package name. + file: Uri.file('data_$index.json'), // change to URI only + package: packageName, + ), ), - )); + linkInPackage: 'simple_link', + ); }); diff --git a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart index 330776bd4..49651fa5c 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart @@ -10,7 +10,7 @@ import 'package:path/path.dart' as p; void main(List args) async { await link(args, (config, output) async { final shakenAssets = shake(config.assets); - print('test'); + final linkOutput = shakenAssets.map((e) { final filePath = e.file!.toFilePath(); final uri = config.outDirectory.resolve(p.basename(filePath)); diff --git a/pkgs/native_assets_cli/lib/src/api/link.dart b/pkgs/native_assets_cli/lib/src/api/link.dart index 2413afe57..8ab2a193f 100644 --- a/pkgs/native_assets_cli/lib/src/api/link.dart +++ b/pkgs/native_assets_cli/lib/src/api/link.dart @@ -99,5 +99,5 @@ Future link( dependencies: Dependencies(builtAssets), )); await builder(config, linkoutput); - await BuildOutputImpl().writeToFile(config: config); + await linkoutput.writeToFile(config: config); } diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index cb9e30d01..c34fffb99 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -24,16 +24,15 @@ part '../model/link_config.dart'; abstract class LinkConfig extends PipelineConfig { /// Generate the [LinkConfig] from the input arguments to the linking script. static Future fromArguments(List args) async { - final argParser = ArgParser() - ..addOption('config') - ..addOption('resources'); + final argParser = ArgParser()..addOption('config'); final results = argParser.parse(args); + final linkConfigContents = + File(results['config'] as String).readAsStringSync(); + final linkConfigJson = + jsonDecode(linkConfigContents) as Map; - return LinkConfigArgs.fromBuildConfig( - results['config'] as String, - results['resources'] as String?, - ).toLinkConfig(); + return LinkConfigArgs.fromJson(linkConfigJson).toLinkConfig(); } @override diff --git a/pkgs/native_assets_cli/lib/src/api/link_output.dart b/pkgs/native_assets_cli/lib/src/api/link_output.dart index b08447894..138cf0a3a 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_output.dart @@ -7,9 +7,10 @@ import 'dart:io'; import 'architecture.dart'; import 'asset.dart'; import 'build_output.dart'; +import 'link_config.dart'; import 'os.dart'; -extension type LinkOutput(BuildOutput _buildOutput) { +extension type LinkOutput(BuildOutputImpl _buildOutput) { /// Start time for the link of this output. /// /// The [timestamp] is rounded down to whole seconds, because @@ -34,4 +35,12 @@ extension type LinkOutput(BuildOutput _buildOutput) { /// Adds [Asset]s produced by this link or dry run. void addAssets(Iterable assets) => _buildOutput.addAssets(assets); + + /// Writes this object the output file specified in the [config]. + /// + /// Serializes this object, meaning the [assets] and [dependencies] together + /// with some metadata, to an output JSON file. The location of the file is + /// specified in the [config]. + Future writeToFile({required LinkConfig config}) => + _buildOutput.writeToFile(config: config); } diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index efb8cf8e0..205254541 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -50,6 +50,7 @@ final class BuildOutputImpl implements BuildOutput { _dependencies.dependencies.addAll(dependencies); static const _assetsKey = 'assets'; + static const _assetsForLinkingKey = 'assetsForLinking'; static const _dependenciesKey = 'dependencies'; static const _metadataKey = 'metadata'; static const _timestampKey = 'timestamp'; @@ -84,12 +85,13 @@ final class BuildOutputImpl implements BuildOutput { ); } - final assets = - AssetImpl.listFromJsonList(as>(jsonMap[_assetsKey])); - return BuildOutputImpl( timestamp: DateTime.parse(as(jsonMap[_timestampKey])), - assets: assets, + assets: + AssetImpl.listFromJsonList(as>(jsonMap[_assetsKey])), + assetsForLinking: as>(jsonMap[_assetsForLinkingKey]) + .map((packageName, assets) => MapEntry(packageName, + AssetImpl.listFromJsonList(as>(assets)))), dependencies: Dependencies.fromJson(as?>(jsonMap[_dependenciesKey])), metadata: @@ -99,15 +101,24 @@ final class BuildOutputImpl implements BuildOutput { Map toJson(Version version) => { _timestampKey: timestamp.toString(), - _assetsKey: [ - for (final asset in _assets) asset.toJson(version), - ], + _assetsKey: _assetsListToJson(_assets, version), + _assetsForLinkingKey: + _assetsForLinking.map((packageName, assets) => MapEntry( + packageName, + _assetsListToJson(assets, version), + )), if (_dependencies.dependencies.isNotEmpty) _dependenciesKey: _dependencies.toJson(), _metadataKey: metadata.toJson(), _versionKey: version.toString(), }..sortOnKey(); + static List> _assetsListToJson( + List assets, Version version) => + [ + for (final asset in assets) asset.toJson(version), + ]; + String toJsonString(Version version) => const JsonEncoder.withIndent(' ').convert(toJson(version)); diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 373e937ef..c23a6a1eb 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -43,7 +43,8 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { Uri get packageRoot => _buildConfig.packageRoot; @override - Uri get script => packageRoot.resolve(PipelineStep.link.scriptName); + Uri get script => + packageRoot.resolve('hook/').resolve(PipelineStep.link.scriptName); @override String toJsonString() => jsonEncode(_args.toJson()); @@ -64,15 +65,17 @@ class LinkConfigArgs { required this.buildConfigUri, }); - factory LinkConfigArgs.fromBuildConfig( - String buildConfig, - String? resourceUri, - ) { - final resourceIdentifierUri = - resourceUri != null ? Uri.parse(resourceUri) : null; + factory LinkConfigArgs.fromJson(Map linkConfigJson) { + final resourcesPath = linkConfigJson[resourceIdentifierKey] as String?; + final buildConfigPath = linkConfigJson[buildConfigKey] as String?; + if (buildConfigPath == null) { + throw ArgumentError( + 'Expected to find the build config in $linkConfigJson'); + } return LinkConfigArgs( - resourceIdentifierUri: resourceIdentifierUri, - buildConfigUri: Uri.parse(buildConfig), + resourceIdentifierUri: + resourcesPath != null ? Uri.parse(resourcesPath) : null, + buildConfigUri: Uri.parse(buildConfigPath), ); } @@ -82,10 +85,9 @@ class LinkConfigArgs { throw UnsupportedError( 'A link.dart script needs a build.dart to be executed'); } - final readAsStringSync = buildConfigFile.readAsStringSync(); final config = BuildConfigImpl.fromConfig( Config.fromConfigFileContents( - fileContents: readAsStringSync, + fileContents: buildConfigFile.readAsStringSync(), ), ); ResourceIdentifiers? resources; @@ -95,9 +97,13 @@ class LinkConfigArgs { final buildOutput = await BuildOutputImpl.readFromFile(file: config.outputFile); + if (buildOutput == null) { + throw ArgumentError( + 'Expected to find the build output at ${config.outputFile}'); + } return LinkConfigImpl( this, - assets: buildOutput!.assetsForLinking[config.packageName] ?? [], + assets: buildOutput.assetsForLinking[config.packageName] ?? [], buildConfig: config, resourceIdentifiers: resources, ); From 136a1a02c42e6d6b85fc0bbe2a7076f589b38a86 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 22 Mar 2024 17:01:11 +0100 Subject: [PATCH 082/187] Fix tests --- .../lib/src/model/asset.dart | 8 +- .../lib/src/model/build_output.dart | 18 +- pkgs/native_assets_cli/test/helpers.dart | 14 -- .../test/model/asset_test.dart | 129 +++++++------ .../test/model/build_config_test.dart | 29 +-- .../test/model/build_output_test.dart | 175 ++++++++++-------- 6 files changed, 189 insertions(+), 184 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index eec072e5d..ffca8ad6d 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -7,7 +7,7 @@ part of '../api/asset.dart'; abstract final class AssetImpl implements Asset { Map toJson(Version version); - static List listFromJsonList(List list) { + static List listFromJson(List list) { final assets = []; for (final jsonElement in list) { final jsonMap = as>(jsonElement); @@ -24,4 +24,10 @@ abstract final class AssetImpl implements Asset { } return assets; } + + static List> listToJson( + List assets, Version version) => + [ + for (final asset in assets) asset.toJson(version), + ]; } diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index 205254541..d3bfb98d4 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -84,14 +84,12 @@ final class BuildOutputImpl implements BuildOutput { 'Flutter, please update native_assets_cli.', ); } - return BuildOutputImpl( timestamp: DateTime.parse(as(jsonMap[_timestampKey])), - assets: - AssetImpl.listFromJsonList(as>(jsonMap[_assetsKey])), + assets: AssetImpl.listFromJson(as>(jsonMap[_assetsKey])), assetsForLinking: as>(jsonMap[_assetsForLinkingKey]) - .map((packageName, assets) => MapEntry(packageName, - AssetImpl.listFromJsonList(as>(assets)))), + .map((packageName, assets) => MapEntry( + packageName, AssetImpl.listFromJson(as>(assets)))), dependencies: Dependencies.fromJson(as?>(jsonMap[_dependenciesKey])), metadata: @@ -101,11 +99,11 @@ final class BuildOutputImpl implements BuildOutput { Map toJson(Version version) => { _timestampKey: timestamp.toString(), - _assetsKey: _assetsListToJson(_assets, version), + _assetsKey: AssetImpl.listToJson(_assets, version), _assetsForLinkingKey: _assetsForLinking.map((packageName, assets) => MapEntry( packageName, - _assetsListToJson(assets, version), + AssetImpl.listToJson(assets, version), )), if (_dependencies.dependencies.isNotEmpty) _dependenciesKey: _dependencies.toJson(), @@ -113,12 +111,6 @@ final class BuildOutputImpl implements BuildOutput { _versionKey: version.toString(), }..sortOnKey(); - static List> _assetsListToJson( - List assets, Version version) => - [ - for (final asset in assets) asset.toJson(version), - ]; - String toJsonString(Version version) => const JsonEncoder.withIndent(' ').convert(toJson(version)); diff --git a/pkgs/native_assets_cli/test/helpers.dart b/pkgs/native_assets_cli/test/helpers.dart index ae34a37d1..1b70aa739 100644 --- a/pkgs/native_assets_cli/test/helpers.dart +++ b/pkgs/native_assets_cli/test/helpers.dart @@ -6,8 +6,6 @@ import 'dart:io'; import 'package:native_assets_cli/native_assets_cli.dart'; import 'package:native_assets_cli/native_assets_cli_internal.dart' as internal; -import 'package:yaml/yaml.dart'; -import 'package:yaml_edit/yaml_edit.dart'; const keepTempKey = 'KEEP_TEMPORARY_DIRECTORIES'; @@ -141,15 +139,3 @@ extension UriExtension on Uri { return File.fromUri(this); } } - -String yamlEncode(Object yamlEncoding) { - final editor = YamlEditor(''); - editor.update( - [], - wrapAsYamlNode( - yamlEncoding, - collectionStyle: CollectionStyle.BLOCK, - ), - ); - return editor.toString(); -} diff --git a/pkgs/native_assets_cli/test/model/asset_test.dart b/pkgs/native_assets_cli/test/model/asset_test.dart index 4424d7162..3dee1a1a8 100644 --- a/pkgs/native_assets_cli/test/model/asset_test.dart +++ b/pkgs/native_assets_cli/test/model/asset_test.dart @@ -2,13 +2,13 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'dart:convert'; + import 'package:collection/collection.dart'; import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:test/test.dart'; import 'package:yaml/yaml.dart'; -import '../helpers.dart'; - void main() { final fooUri = Uri.file('path/to/libfoo.so'); final foo3Uri = Uri(path: 'libfoo3.so'); @@ -108,64 +108,89 @@ void main() { target: windows_x64 linkInPackage: ""'''; - final assetsYamlEncoding = '''- architecture: x64 - file: ${fooUri.toFilePath()} - id: package:my_package/foo - link_mode: - type: dynamic_loading_bundle - os: android - type: native_code -- architecture: x64 - id: package:my_package/foo3 - link_mode: - type: dynamic_loading_system - uri: ${foo3Uri.toFilePath()} - os: android - type: native_code -- architecture: x64 - id: package:my_package/foo4 - link_mode: - type: dynamic_loading_executable - os: android - type: native_code -- architecture: x64 - id: package:my_package/foo5 - link_mode: - type: dynamic_loading_process - os: android - type: native_code -- architecture: arm64 - file: ${barUri.toFilePath()} - id: package:my_package/bar - link_mode: - type: static - os: linux - type: native_code -- architecture: x64 - file: ${blaUri.toFilePath()} - id: package:my_package/bla - link_mode: - type: dynamic_loading_bundle - os: windows - type: native_code -- id: package:my_package/my_data_asset - file: ${dataUri.toFilePath()} - type: data -- id: package:my_package/my_data_asset2 - file: ${data2Uri.toFilePath()} - type: data'''; + const assetsJsonEncoding = ''' +[ + { + "architecture": "x64", + "file": "path/to/libfoo.so", + "id": "package:my_package/foo", + "link_mode": { + "type": "dynamic_loading_bundle" + }, + "os": "android", + "type": "native_code" + }, + { + "architecture": "x64", + "id": "package:my_package/foo3", + "link_mode": { + "type": "dynamic_loading_system", + "uri": "libfoo3.so" + }, + "os": "android", + "type": "native_code" + }, + { + "architecture": "x64", + "id": "package:my_package/foo4", + "link_mode": { + "type": "dynamic_loading_executable" + }, + "os": "android", + "type": "native_code" + }, + { + "architecture": "x64", + "id": "package:my_package/foo5", + "link_mode": { + "type": "dynamic_loading_process" + }, + "os": "android", + "type": "native_code" + }, + { + "architecture": "arm64", + "file": "path/to/libbar.a", + "id": "package:my_package/bar", + "link_mode": { + "type": "static" + }, + "os": "linux", + "type": "native_code" + }, + { + "architecture": "x64", + "file": "path/with spaces/bla.dll", + "id": "package:my_package/bla", + "link_mode": { + "type": "dynamic_loading_bundle" + }, + "os": "windows", + "type": "native_code" + }, + { + "id": "package:my_package/my_data_asset", + "file": "path/to/data.txt", + "type": "data" + }, + { + "id": "package:my_package/my_data_asset2", + "file": "path/to/data.json", + "type": "data" + } +]'''; test('asset yaml', () { - final yaml = yamlEncode([ + final json = const JsonEncoder.withIndent(' ').convert([ for (final item in assets) item.toJson(BuildOutputImpl.latestVersion) ]); - expect(yaml, assetsYamlEncoding); - final assets2 = AssetImpl.listFromJsonList(loadYaml(yaml) as List); + expect(json, assetsJsonEncoding); + final assets2 = AssetImpl.listFromJson(jsonDecode(json) as List); expect(assets, assets2); }); test('build_output protocol v1.0.0 keeps working', () { - final assets2 = AssetImpl.listFromJsonList( + final assets2 = AssetImpl.listFromJson( loadYaml(assetsYamlEncodingV1_0_0) as List); expect(nativeCodeAssets, assets2); }); diff --git a/pkgs/native_assets_cli/test/model/build_config_test.dart b/pkgs/native_assets_cli/test/model/build_config_test.dart index 0c906f7d0..d6234922b 100644 --- a/pkgs/native_assets_cli/test/model/build_config_test.dart +++ b/pkgs/native_assets_cli/test/model/build_config_test.dart @@ -240,31 +240,6 @@ void main() async { }, ); - final yamlString = yamlEncode(buildConfig1.toJson()); - final expectedYamlString = '''build_mode: release -c_compiler: - cc: ${fakeClang.toFilePath()} - ld: ${fakeLd.toFilePath()} -dependency_metadata: - bar: - key: value - foo: - a: 321 - z: - - z - - a -link_mode_preference: prefer-static -out_dir: ${outDir.toFilePath()} -package_name: $packageName -package_root: ${tempUri.toFilePath()} -supported_asset_types: - - ${NativeCodeAsset.type} -target_architecture: arm64 -target_ios_sdk: iphoneos -target_os: ios -version: ${BuildConfigImpl.latestVersion}'''; - expect(yamlString, equals(expectedYamlString)); - final jsonString = buildConfig1.toJsonString(); final expectedJsonString = '''{ "build_mode": "release", @@ -302,9 +277,7 @@ version: ${BuildConfigImpl.latestVersion}'''; ); final buildConfig2 = BuildConfigImpl.fromConfig( - Config.fromConfigFileContents( - fileContents: yamlString, - ), + Config.fromConfigFileContents(fileContents: jsonString), ); expect(buildConfig2, buildConfig1); }); diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index 4a5c9cf58..d81a25975 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -8,8 +8,6 @@ import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:pub_semver/pub_semver.dart'; import 'package:test/test.dart'; -import '../helpers.dart'; - void main() { late Uri tempUri; @@ -50,6 +48,20 @@ void main() { architecture: ArchitectureImpl.x64, ), ], + assetsForLinking: { + 'my_package': [ + DataAssetImpl( + file: Uri.file('path/to/data'), + id: 'package:my_package/data', + ) + ], + 'my_package_2': [ + DataAssetImpl( + file: Uri.file('path/to/data2'), + id: 'package:my_package_2/data2', + ) + ] + }, dependencies: Dependencies([ Uri.file('path/to/file.ext'), ]), @@ -58,70 +70,6 @@ void main() { }), ); - const yamlEncodingV1_0_0 = '''timestamp: 2022-11-10 13:25:01.000 -assets: - - id: package:my_package/foo - link_mode: dynamic - path: - path_type: absolute - uri: path/to/libfoo.so - target: android_x64 - - id: package:my_package/foo2 - link_mode: dynamic - path: - path_type: system - uri: path/to/libfoo2.so - target: android_x64 - - id: package:my_package/foo3 - link_mode: dynamic - path: - path_type: process - target: android_x64 - - id: package:my_package/foo4 - link_mode: dynamic - path: - path_type: executable - target: android_x64 -dependencies: - - path/to/file.ext -metadata: - key: value -version: 1.0.0'''; - - final yamlEncoding = '''timestamp: 2022-11-10 13:25:01.000 -assets: - - architecture: x64 - file: path/to/libfoo.so - id: package:my_package/foo - link_mode: - type: dynamic_loading_bundle - os: android - type: native_code - - architecture: x64 - id: package:my_package/foo2 - link_mode: - type: dynamic_loading_system - uri: path/to/libfoo2.so - os: android - type: native_code - - architecture: x64 - id: package:my_package/foo3 - link_mode: - type: dynamic_loading_process - os: android - type: native_code - - architecture: x64 - id: package:my_package/foo4 - link_mode: - type: dynamic_loading_executable - os: android - type: native_code -dependencies: - - path/to/file.ext -metadata: - key: value -version: ${BuildOutputImpl.latestVersion}'''; - final jsonEncoding = '''{ "timestamp": "2022-11-10 13:25:01.000", "assets": [ @@ -164,6 +112,22 @@ version: ${BuildOutputImpl.latestVersion}'''; "type": "native_code" } ], + "assetsForLinking": { + "my_package": [ + { + "id": "package:my_package/data", + "file": "path/to/data", + "type": "data" + } + ], + "my_package_2": [ + { + "id": "package:my_package_2/data2", + "file": "path/to/data2", + "type": "data" + } + ] + }, "dependencies": [ "path/to/file.ext" ], @@ -173,37 +137,96 @@ version: ${BuildOutputImpl.latestVersion}'''; "version": "${BuildOutputImpl.latestVersion}" }'''; - test('built info yaml', () { - final yaml = yamlEncode(buildOutput.toJson(BuildOutputImpl.latestVersion)) - .replaceAll('\\', '/'); - expect(yaml, yamlEncoding); + const jsonEncodingV1_0_0 = ''' +{ + "timestamp": "2022-11-10 13:25:01.000", + "assets": [ + { + "id": "package:my_package/foo", + "link_mode": "dynamic", + "path": { + "path_type": "absolute", + "uri": "path/to/libfoo.so" + }, + "target": "android_x64" + }, + { + "id": "package:my_package/foo2", + "link_mode": "dynamic", + "path": { + "path_type": "system", + "uri": "path/to/libfoo2.so" + }, + "target": "android_x64" + }, + { + "id": "package:my_package/foo3", + "link_mode": "dynamic", + "path": { + "path_type": "process" + }, + "target": "android_x64" + }, + { + "id": "package:my_package/foo4", + "link_mode": "dynamic", + "path": { + "path_type": "executable" + }, + "target": "android_x64" + } + ], + "assetsForLinking": { + "my_package": [ + { + "id": "package:my_package/data", + "file": "path/to/data", + "type": "data" + } + ], + "my_package_2": [ + { + "id": "package:my_package_2/data2", + "file": "path/to/data2", + "type": "data" + } + ] + }, + "dependencies": [ + "path/to/file.ext" + ], + "metadata": { + "key": "value" + }, + "version": "1.0.0" +}'''; + test('built info yaml', () { final json = buildOutput .toJsonString(BuildOutputImpl.latestVersion) .replaceAll('\\\\', '/'); expect(json, jsonEncoding); - final buildOutput2 = BuildOutputImpl.fromJsonString(yaml); + final buildOutput2 = BuildOutputImpl.fromJsonString(json); expect(buildOutput.hashCode, buildOutput2.hashCode); expect(buildOutput, buildOutput2); }); test('built info yaml v1.0.0 parsing keeps working', () { - final buildOutput2 = BuildOutputImpl.fromJsonString(yamlEncodingV1_0_0); + final buildOutput2 = BuildOutputImpl.fromJsonString(jsonEncodingV1_0_0); expect(buildOutput.hashCode, buildOutput2.hashCode); expect(buildOutput, buildOutput2); }); test('built info yaml v1.0.0 serialization keeps working', () { - final yamlEncoding = - yamlEncode(buildOutput.toJson(Version(1, 0, 0))).replaceAll('\\', '/'); - expect(yamlEncoding, yamlEncodingV1_0_0); + final yamlEncoding = buildOutput.toJsonString(Version(1, 0, 0)); + expect(yamlEncoding, jsonEncodingV1_0_0); }); test('BuildOutput.toString', buildOutput.toString); test('BuildOutput.hashCode', () { - final buildOutput2 = BuildOutputImpl.fromJsonString(yamlEncoding); + final buildOutput2 = BuildOutputImpl.fromJsonString(jsonEncoding); expect(buildOutput.hashCode, buildOutput2.hashCode); final buildOutput3 = BuildOutputImpl( From 46afccb161a58062c7d3c6fcbb5e6769ca7056bc Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 22 Mar 2024 17:10:06 +0100 Subject: [PATCH 083/187] Fix versions --- pkgs/native_assets_builder/pubspec.yaml | 8 +++++--- pkgs/native_assets_cli/CHANGELOG.md | 5 ++++- pkgs/native_assets_cli/pubspec.yaml | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/pkgs/native_assets_builder/pubspec.yaml b/pkgs/native_assets_builder/pubspec.yaml index aad794690..d5611fbaa 100644 --- a/pkgs/native_assets_builder/pubspec.yaml +++ b/pkgs/native_assets_builder/pubspec.yaml @@ -4,15 +4,17 @@ description: >- version: 0.7.0-wip repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_builder +publish_to: none + environment: sdk: '>=3.3.0 <4.0.0' dependencies: graphs: ^2.3.1 logging: ^1.2.0 - native_assets_cli: ^0.5.0 - # native_assets_cli: - # path: ../native_assets_cli/ + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../native_assets_cli/ package_config: ^2.1.0 yaml: ^3.1.2 yaml_edit: ^2.1.0 diff --git a/pkgs/native_assets_cli/CHANGELOG.md b/pkgs/native_assets_cli/CHANGELOG.md index baff729b9..fe055691b 100644 --- a/pkgs/native_assets_cli/CHANGELOG.md +++ b/pkgs/native_assets_cli/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.0-wip + +- Add support for `link.dart`. + ## 0.5.1 - Update documentation about providing `NativeCodeAsset.file` in dry runs. @@ -12,7 +16,6 @@ - **Breaking change** Use JSON instead of YAML in the protocol. https://github.com/dart-lang/native/issues/991 - Bump examples dependencies to path dependencies. -- Add support for `link.dart`. ## 0.4.2 diff --git a/pkgs/native_assets_cli/pubspec.yaml b/pkgs/native_assets_cli/pubspec.yaml index 2b5f43b94..bba4a830e 100644 --- a/pkgs/native_assets_cli/pubspec.yaml +++ b/pkgs/native_assets_cli/pubspec.yaml @@ -4,7 +4,7 @@ description: >- native assets CLI. # Note: Bump BuildConfig.version and BuildOutput.version on breaking changes! -version: 0.5.1 +version: 0.6.0-wip repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_cli topics: From 5126a60145ee4d76c7ec837e593cd7909a44efc4 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 22 Mar 2024 17:25:35 +0100 Subject: [PATCH 084/187] Fix tests again --- .../test_data/cyclic_package_1/pubspec.yaml | 6 +++--- .../test_data/cyclic_package_2/pubspec.yaml | 6 +++--- .../test_data/native_add/pubspec.yaml | 12 ++++++------ .../test_data/native_add_add_source/pubspec.yaml | 12 ++++++------ .../test_data/native_subtract/pubspec.yaml | 12 ++++++------ .../test_data/package_reading_metadata/pubspec.yaml | 6 +++--- .../test_data/package_with_metadata/pubspec.yaml | 6 +++--- .../test_data/wrong_build_output/pubspec.yaml | 6 +++--- .../test_data/wrong_build_output_2/pubspec.yaml | 6 +++--- .../test_data/wrong_build_output_3/pubspec.yaml | 6 +++--- .../test_data/wrong_namespace_asset/pubspec.yaml | 6 +++--- .../example/local_asset/pubspec.yaml | 2 +- .../example/native_add_library/pubspec.yaml | 12 ++++++------ .../example/use_dart_api/pubspec.yaml | 12 ++++++------ pkgs/native_toolchain_c/pubspec.yaml | 8 +++++--- 15 files changed, 60 insertions(+), 58 deletions(-) diff --git a/pkgs/native_assets_builder/test_data/cyclic_package_1/pubspec.yaml b/pkgs/native_assets_builder/test_data/cyclic_package_1/pubspec.yaml index 5455d7ef5..83c4aeb03 100644 --- a/pkgs/native_assets_builder/test_data/cyclic_package_1/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/cyclic_package_1/pubspec.yaml @@ -10,9 +10,9 @@ environment: dependencies: cyclic_package_2: path: ../cyclic_package_2 - native_assets_cli: ^0.5.0 - # native_assets_cli: - # path: ../../../native_assets_cli/ + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../../../native_assets_cli/ yaml: ^3.1.1 yaml_edit: ^2.1.0 diff --git a/pkgs/native_assets_builder/test_data/cyclic_package_2/pubspec.yaml b/pkgs/native_assets_builder/test_data/cyclic_package_2/pubspec.yaml index ef9c9ff7e..a44e9f50c 100644 --- a/pkgs/native_assets_builder/test_data/cyclic_package_2/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/cyclic_package_2/pubspec.yaml @@ -10,9 +10,9 @@ environment: dependencies: cyclic_package_1: path: ../cyclic_package_1 - native_assets_cli: ^0.5.0 - # native_assets_cli: - # path: ../../../native_assets_cli/ + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../../../native_assets_cli/ yaml: ^3.1.1 yaml_edit: ^2.1.0 diff --git a/pkgs/native_assets_builder/test_data/native_add/pubspec.yaml b/pkgs/native_assets_builder/test_data/native_add/pubspec.yaml index 47c71fb8f..b7df5d1a1 100644 --- a/pkgs/native_assets_builder/test_data/native_add/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/native_add/pubspec.yaml @@ -9,12 +9,12 @@ environment: dependencies: logging: ^1.1.1 - native_assets_cli: ^0.5.0 - # native_assets_cli: - # path: ../../../native_assets_cli/ - native_toolchain_c: ^0.4.0 - # native_toolchain_c: - # path: ../../../native_toolchain_c/ + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../../../native_assets_cli/ + # native_toolchain_c: ^0.4.0 + native_toolchain_c: + path: ../../../native_toolchain_c/ dev_dependencies: ffigen: ^8.0.2 diff --git a/pkgs/native_assets_builder/test_data/native_add_add_source/pubspec.yaml b/pkgs/native_assets_builder/test_data/native_add_add_source/pubspec.yaml index bded3a0b1..b23647db0 100644 --- a/pkgs/native_assets_builder/test_data/native_add_add_source/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/native_add_add_source/pubspec.yaml @@ -9,12 +9,12 @@ environment: dependencies: logging: ^1.1.1 - native_assets_cli: ^0.5.0 - # native_assets_cli: - # path: ../../../native_assets_cli/ - native_toolchain_c: ^0.4.0 - # native_toolchain_c: - # path: ../../../native_toolchain_c/ + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../../../native_assets_cli/ + # native_toolchain_c: ^0.4.0 + native_toolchain_c: + path: ../../../native_toolchain_c/ dev_dependencies: ffigen: ^8.0.2 diff --git a/pkgs/native_assets_builder/test_data/native_subtract/pubspec.yaml b/pkgs/native_assets_builder/test_data/native_subtract/pubspec.yaml index 7cb8f482a..e6ee4c5b1 100644 --- a/pkgs/native_assets_builder/test_data/native_subtract/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/native_subtract/pubspec.yaml @@ -9,12 +9,12 @@ environment: dependencies: logging: ^1.1.1 - native_assets_cli: ^0.5.0 - # native_assets_cli: - # path: ../../../native_assets_cli/ - native_toolchain_c: ^0.4.0 - # native_toolchain_c: - # path: ../../../native_toolchain_c/ + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../../../native_assets_cli/ + # native_toolchain_c: ^0.4.0 + native_toolchain_c: + path: ../../../native_toolchain_c/ dev_dependencies: ffigen: ^8.0.2 diff --git a/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml b/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml index 26fe6d0d9..ce1016ec3 100644 --- a/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml @@ -8,9 +8,9 @@ environment: sdk: '>=3.3.0 <4.0.0' dependencies: - native_assets_cli: ^0.5.0 - # native_assets_cli: - # path: ../../../native_assets_cli/ + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../../../native_assets_cli/ package_with_metadata: path: ../package_with_metadata/ yaml: ^3.1.1 diff --git a/pkgs/native_assets_builder/test_data/package_with_metadata/pubspec.yaml b/pkgs/native_assets_builder/test_data/package_with_metadata/pubspec.yaml index 9c277aed5..998a373d3 100644 --- a/pkgs/native_assets_builder/test_data/package_with_metadata/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/package_with_metadata/pubspec.yaml @@ -8,9 +8,9 @@ environment: sdk: '>=3.3.0 <4.0.0' dependencies: - native_assets_cli: ^0.5.0 - # native_assets_cli: - # path: ../../../native_assets_cli/ + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../../../native_assets_cli/ yaml: ^3.1.1 yaml_edit: ^2.1.0 diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output/pubspec.yaml b/pkgs/native_assets_builder/test_data/wrong_build_output/pubspec.yaml index 12698c1d1..8d24057f3 100644 --- a/pkgs/native_assets_builder/test_data/wrong_build_output/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/wrong_build_output/pubspec.yaml @@ -8,9 +8,9 @@ environment: sdk: '>=3.3.0 <4.0.0' dependencies: - native_assets_cli: ^0.5.0 - # native_assets_cli: - # path: ../../../native_assets_cli/ + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../../../native_assets_cli/ yaml: ^3.1.1 yaml_edit: ^2.1.0 diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output_2/pubspec.yaml b/pkgs/native_assets_builder/test_data/wrong_build_output_2/pubspec.yaml index 8b7ec8702..1a5144cba 100644 --- a/pkgs/native_assets_builder/test_data/wrong_build_output_2/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/wrong_build_output_2/pubspec.yaml @@ -8,9 +8,9 @@ environment: sdk: '>=3.3.0 <4.0.0' dependencies: - native_assets_cli: ^0.5.0 - # native_assets_cli: - # path: ../../../native_assets_cli/ + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../../../native_assets_cli/ yaml: ^3.1.1 yaml_edit: ^2.1.0 diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output_3/pubspec.yaml b/pkgs/native_assets_builder/test_data/wrong_build_output_3/pubspec.yaml index 3739c2638..65f185a8a 100644 --- a/pkgs/native_assets_builder/test_data/wrong_build_output_3/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/wrong_build_output_3/pubspec.yaml @@ -8,9 +8,9 @@ environment: sdk: '>=3.3.0 <4.0.0' dependencies: - native_assets_cli: ^0.5.0 - # native_assets_cli: - # path: ../../../native_assets_cli/ + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../../../native_assets_cli/ yaml: ^3.1.1 yaml_edit: ^2.1.0 diff --git a/pkgs/native_assets_builder/test_data/wrong_namespace_asset/pubspec.yaml b/pkgs/native_assets_builder/test_data/wrong_namespace_asset/pubspec.yaml index f07a745b8..cd7008b47 100644 --- a/pkgs/native_assets_builder/test_data/wrong_namespace_asset/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/wrong_namespace_asset/pubspec.yaml @@ -8,9 +8,9 @@ environment: sdk: '>=3.3.0 <4.0.0' dependencies: - native_assets_cli: ^0.5.0 - # native_assets_cli: - # path: ../../../native_assets_cli/ + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../../../native_assets_cli/ yaml: ^3.1.1 yaml_edit: ^2.1.0 diff --git a/pkgs/native_assets_cli/example/local_asset/pubspec.yaml b/pkgs/native_assets_cli/example/local_asset/pubspec.yaml index ad2f491df..e240f87f1 100644 --- a/pkgs/native_assets_cli/example/local_asset/pubspec.yaml +++ b/pkgs/native_assets_cli/example/local_asset/pubspec.yaml @@ -10,7 +10,7 @@ environment: dependencies: logging: ^1.1.1 - native_assets_cli: ^0.5.0 + # native_assets_cli: ^0.5.0 # native_assets_cli: # path: ../../../native_assets_cli/ diff --git a/pkgs/native_assets_cli/example/native_add_library/pubspec.yaml b/pkgs/native_assets_cli/example/native_add_library/pubspec.yaml index fb790cfa1..9364dc877 100644 --- a/pkgs/native_assets_cli/example/native_add_library/pubspec.yaml +++ b/pkgs/native_assets_cli/example/native_add_library/pubspec.yaml @@ -10,12 +10,12 @@ environment: dependencies: logging: ^1.1.1 - native_assets_cli: ^0.5.0 - # native_assets_cli: - # path: ../../../native_assets_cli/ - native_toolchain_c: ^0.4.0 - # native_toolchain_c: - # path: ../../../native_toolchain_c/ + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../../../native_assets_cli/ + # native_toolchain_c: ^0.4.0 + native_toolchain_c: + path: ../../../native_toolchain_c/ dev_dependencies: ffigen: ^8.0.2 diff --git a/pkgs/native_assets_cli/example/use_dart_api/pubspec.yaml b/pkgs/native_assets_cli/example/use_dart_api/pubspec.yaml index a53e696dd..fa1b67fc9 100644 --- a/pkgs/native_assets_cli/example/use_dart_api/pubspec.yaml +++ b/pkgs/native_assets_cli/example/use_dart_api/pubspec.yaml @@ -9,12 +9,12 @@ environment: dependencies: logging: ^1.1.1 - native_assets_cli: ^0.5.0 - # native_assets_cli: - # path: ../../../native_assets_cli/ - native_toolchain_c: ^0.4.0 - # native_toolchain_c: - # path: ../../../native_toolchain_c/ + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../../../native_assets_cli/ + # native_toolchain_c: ^0.4.0 + native_toolchain_c: + path: ../../../native_toolchain_c/ dev_dependencies: ffigen: ^10.0.0 diff --git a/pkgs/native_toolchain_c/pubspec.yaml b/pkgs/native_toolchain_c/pubspec.yaml index c25e84733..d6bd424a8 100644 --- a/pkgs/native_toolchain_c/pubspec.yaml +++ b/pkgs/native_toolchain_c/pubspec.yaml @@ -4,6 +4,8 @@ description: >- version: 0.4.1 repository: https://github.com/dart-lang/native/tree/main/pkgs/native_toolchain_c +publish_to: none + topics: - compiler - ffi @@ -18,9 +20,9 @@ dependencies: glob: ^2.1.1 logging: ^1.1.1 meta: ^1.9.1 - native_assets_cli: ^0.5.0 - # native_assets_cli: - # path: ../native_assets_cli/ + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../native_assets_cli/ pub_semver: ^2.1.3 dev_dependencies: From 627d6da3ee8f54f993cb12f0e8357b4aa1f74124 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 22 Mar 2024 17:26:59 +0100 Subject: [PATCH 085/187] Fix file null test --- .../test/build_runner/build_runner_dry_run_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/native_assets_builder/test/build_runner/build_runner_dry_run_test.dart b/pkgs/native_assets_builder/test/build_runner/build_runner_dry_run_test.dart index b0007dc8f..074b5a0ab 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_runner_dry_run_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_runner_dry_run_test.dart @@ -44,7 +44,7 @@ void main() async { expect(dryRunAsset.id, buildAsset.id); // The build runner expands NativeCodeAssets to all architectures. expect(buildAsset.file, isNotNull); - expect(dryRunAsset.file, isNull); + expect(dryRunAsset.file, isNotNull); if (dryRunAsset is NativeCodeAssetImpl && buildAsset is NativeCodeAssetImpl) { expect(dryRunAsset.architecture, isNotNull); From facf25644a15c6c0387f20a613075aa6038f0f94 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 25 Mar 2024 08:24:23 +0100 Subject: [PATCH 086/187] Fix tests for windows --- pkgs/native_assets_cli/test/model/asset_test.dart | 12 ++++++------ .../test/model/build_output_test.dart | 3 ++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pkgs/native_assets_cli/test/model/asset_test.dart b/pkgs/native_assets_cli/test/model/asset_test.dart index 3dee1a1a8..ecae83695 100644 --- a/pkgs/native_assets_cli/test/model/asset_test.dart +++ b/pkgs/native_assets_cli/test/model/asset_test.dart @@ -108,7 +108,7 @@ void main() { target: windows_x64 linkInPackage: ""'''; - const assetsJsonEncoding = ''' + final assetsJsonEncoding = ''' [ { "architecture": "x64", @@ -125,7 +125,7 @@ void main() { "id": "package:my_package/foo3", "link_mode": { "type": "dynamic_loading_system", - "uri": "libfoo3.so" + "uri": "${foo3Uri.toFilePath()}" }, "os": "android", "type": "native_code" @@ -150,7 +150,7 @@ void main() { }, { "architecture": "arm64", - "file": "path/to/libbar.a", + "file": "${barUri.toFilePath()}", "id": "package:my_package/bar", "link_mode": { "type": "static" @@ -160,7 +160,7 @@ void main() { }, { "architecture": "x64", - "file": "path/with spaces/bla.dll", + "file": "${blaUri.toFilePath()}", "id": "package:my_package/bla", "link_mode": { "type": "dynamic_loading_bundle" @@ -170,12 +170,12 @@ void main() { }, { "id": "package:my_package/my_data_asset", - "file": "path/to/data.txt", + "file": "${dataUri.toFilePath()}", "type": "data" }, { "id": "package:my_package/my_data_asset2", - "file": "path/to/data.json", + "file": "${data2Uri.toFilePath()}", "type": "data" } ]'''; diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index d81a25975..83a4621c2 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -219,7 +219,8 @@ void main() { }); test('built info yaml v1.0.0 serialization keeps working', () { - final yamlEncoding = buildOutput.toJsonString(Version(1, 0, 0)); + final yamlEncoding = + buildOutput.toJsonString(Version(1, 0, 0)).replaceAll('\\', '/'); expect(yamlEncoding, jsonEncodingV1_0_0); }); From 3e31906c9fcf0ce9415509d4056cf93091d6a9cb Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 25 Mar 2024 08:27:51 +0100 Subject: [PATCH 087/187] Fix example deps --- pkgs/native_assets_builder/test/build_runner/link_test.dart | 1 + pkgs/native_assets_cli/example/local_asset/pubspec.yaml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart index 6e2f23f32..78c956c49 100644 --- a/pkgs/native_assets_builder/test/build_runner/link_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -12,6 +12,7 @@ const Timeout longTimeout = Timeout(Duration(minutes: 5)); void main() async { test( 'simple_link linking', + skip: 'Wait for https://dart-review.googlesource.com/c/sdk/+/338380.', timeout: longTimeout, () async { await inTempDir((tempUri) async { diff --git a/pkgs/native_assets_cli/example/local_asset/pubspec.yaml b/pkgs/native_assets_cli/example/local_asset/pubspec.yaml index e240f87f1..7d2ac7684 100644 --- a/pkgs/native_assets_cli/example/local_asset/pubspec.yaml +++ b/pkgs/native_assets_cli/example/local_asset/pubspec.yaml @@ -11,8 +11,8 @@ environment: dependencies: logging: ^1.1.1 # native_assets_cli: ^0.5.0 -# native_assets_cli: -# path: ../../../native_assets_cli/ + native_assets_cli: + path: ../../../native_assets_cli/ dev_dependencies: ffigen: ^8.0.2 From e4655643ffccc91e55c2bbda754aa540ad7de960 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 25 Mar 2024 08:28:31 +0100 Subject: [PATCH 088/187] Remove skip --- pkgs/native_assets_builder/test/build_runner/link_test.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart index 78c956c49..6e2f23f32 100644 --- a/pkgs/native_assets_builder/test/build_runner/link_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -12,7 +12,6 @@ const Timeout longTimeout = Timeout(Duration(minutes: 5)); void main() async { test( 'simple_link linking', - skip: 'Wait for https://dart-review.googlesource.com/c/sdk/+/338380.', timeout: longTimeout, () async { await inTempDir((tempUri) async { From 9e22a2d1dbec88b393904c5f9c29bad9ea4460f6 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 25 Mar 2024 09:38:21 +0100 Subject: [PATCH 089/187] Fix tests for windows 2 --- pkgs/native_assets_cli/test/model/asset_test.dart | 2 +- pkgs/native_assets_cli/test/model/build_output_test.dart | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pkgs/native_assets_cli/test/model/asset_test.dart b/pkgs/native_assets_cli/test/model/asset_test.dart index ecae83695..6a9fefb08 100644 --- a/pkgs/native_assets_cli/test/model/asset_test.dart +++ b/pkgs/native_assets_cli/test/model/asset_test.dart @@ -183,7 +183,7 @@ void main() { test('asset yaml', () { final json = const JsonEncoder.withIndent(' ').convert([ for (final item in assets) item.toJson(BuildOutputImpl.latestVersion) - ]); + ]).replaceAll('\\\\', '\\'); expect(json, assetsJsonEncoding); final assets2 = AssetImpl.listFromJson(jsonDecode(json) as List); expect(assets, assets2); diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index 83a4621c2..adc2e8e25 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -219,9 +219,11 @@ void main() { }); test('built info yaml v1.0.0 serialization keeps working', () { - final yamlEncoding = - buildOutput.toJsonString(Version(1, 0, 0)).replaceAll('\\', '/'); - expect(yamlEncoding, jsonEncodingV1_0_0); + final json = buildOutput + .toJsonString(Version(1, 0, 0)) + .replaceAll('\\\\', '\\') + .replaceAll('\\', '/'); + expect(json, jsonEncodingV1_0_0); }); test('BuildOutput.toString', buildOutput.toString); From d978f111295e5bfd0284806e8f81bbf2f6df3f56 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 25 Mar 2024 09:45:20 +0100 Subject: [PATCH 090/187] Fix paths --- pkgs/native_assets_cli/lib/src/model/link_config.dart | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index c23a6a1eb..cdb81cee7 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -80,10 +80,12 @@ class LinkConfigArgs { } Future toLinkConfig() async { - final buildConfigFile = File(buildConfigUri.path); + final buildConfigFile = File(buildConfigUri.toFilePath()); if (!buildConfigFile.existsSync()) { throw UnsupportedError( - 'A link.dart script needs a build.dart to be executed'); + 'A link.dart script needs the build configuration to be executed. ' + 'The build configuration at ${buildConfigUri.toFilePath()} could not ' + 'be found.'); } final config = BuildConfigImpl.fromConfig( Config.fromConfigFileContents( @@ -92,7 +94,8 @@ class LinkConfigArgs { ); ResourceIdentifiers? resources; if (resourceIdentifierUri != null) { - resources = ResourceIdentifiers.fromFile(resourceIdentifierUri!.path); + resources = + ResourceIdentifiers.fromFile(resourceIdentifierUri!.toFilePath()); } final buildOutput = From 8ab31523dd5808c73bc1e71c2dde229c767f3da5 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 25 Mar 2024 09:55:37 +0100 Subject: [PATCH 091/187] Read uri as files --- pkgs/native_assets_cli/lib/src/model/link_config.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index cdb81cee7..06e473126 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -74,8 +74,8 @@ class LinkConfigArgs { } return LinkConfigArgs( resourceIdentifierUri: - resourcesPath != null ? Uri.parse(resourcesPath) : null, - buildConfigUri: Uri.parse(buildConfigPath), + resourcesPath != null ? Uri.file(resourcesPath) : null, + buildConfigUri: Uri.file(buildConfigPath), ); } From dddab2ad9d10c49574ba840d16f40aaa8d076b8e Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 25 Mar 2024 10:09:13 +0100 Subject: [PATCH 092/187] Fix file --- pkgs/native_assets_cli/test/model/asset_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/native_assets_cli/test/model/asset_test.dart b/pkgs/native_assets_cli/test/model/asset_test.dart index 6a9fefb08..fc66d8697 100644 --- a/pkgs/native_assets_cli/test/model/asset_test.dart +++ b/pkgs/native_assets_cli/test/model/asset_test.dart @@ -112,7 +112,7 @@ void main() { [ { "architecture": "x64", - "file": "path/to/libfoo.so", + "file": "${fooUri.toFilePath()}", "id": "package:my_package/foo", "link_mode": { "type": "dynamic_loading_bundle" From c27dc4389beb86179c6e0a1c024ee2bc9035f0b3 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 25 Mar 2024 14:00:05 +0100 Subject: [PATCH 093/187] Fix example --- .../bin/native_add_app/{ => data}/data_asset_link.json | 0 .../example/native_add_library/{ => hook}/link.dart | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/{ => data}/data_asset_link.json (100%) rename pkgs/native_assets_cli/example/native_add_library/{ => hook}/link.dart (100%) diff --git a/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_link.json b/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data/data_asset_link.json similarity index 100% rename from pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data_asset_link.json rename to pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data/data_asset_link.json diff --git a/pkgs/native_assets_cli/example/native_add_library/link.dart b/pkgs/native_assets_cli/example/native_add_library/hook/link.dart similarity index 100% rename from pkgs/native_assets_cli/example/native_add_library/link.dart rename to pkgs/native_assets_cli/example/native_add_library/hook/link.dart From 858f62e76e342f9e0312e967fdca90aca19d088b Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 26 Mar 2024 10:29:49 +0100 Subject: [PATCH 094/187] First changes as per review --- .github/workflows/native.yaml | 2 +- .../lib/src/build_runner/build_runner.dart | 7 ++--- .../test_data/simple_link/hook/link.dart | 14 +-------- .../lib/native_assets_cli_internal.dart | 2 +- pkgs/native_assets_cli/lib/src/api/build.dart | 2 +- .../lib/src/api/build_config.dart | 6 ++-- .../lib/src/api/build_output.dart | 7 +++-- .../lib/src/api/data_asset.dart | 9 ------ pkgs/native_assets_cli/lib/src/api/link.dart | 15 +++++----- .../lib/src/api/link_config.dart | 29 +++++-------------- .../lib/src/api/link_output.dart | 9 ------ .../lib/src/api/pipeline_config.dart | 25 ---------------- .../lib/src/model/build_config.dart | 4 +-- .../lib/src/model/build_output.dart | 19 ++++++------ .../lib/src/model/link_config.dart | 21 ++++++++++---- .../lib/src/model/pipeline_config.dart | 20 +++++++++++-- .../test/api/build_test.dart | 3 +- .../test/model/build_output_test.dart | 6 ++-- .../lib/src/cbuilder/cbuilder.dart | 4 +-- .../lib/src/cbuilder/run_cbuilder.dart | 2 +- 20 files changed, 79 insertions(+), 127 deletions(-) delete mode 100644 pkgs/native_assets_cli/lib/src/api/pipeline_config.dart diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml index 0b52e14b9..46eb052b6 100644 --- a/.github/workflows/native.yaml +++ b/.github/workflows/native.yaml @@ -34,7 +34,7 @@ jobs: sdk: [stable, dev] package: [native_assets_builder, native_assets_cli, native_toolchain_c] # Breaking changes temporarily break the example run on the Dart SDK until native_assets_builder is rolled into the Dart SDK dev build. - breaking-change: [true] + breaking-change: [false] exclude: # Only run analyze against dev on one host. - os: macos diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 80665dd25..832c2a93c 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -238,13 +238,12 @@ class NativeAssetsBuildRunner { bool includeParentEnvironment, Uri? resources, ) async { - final outDir = config.outDirectory; + final outDir = config.outputDirectory; if (!await Directory.fromUri(outDir).exists()) { await Directory.fromUri(outDir).create(recursive: true); } - final buildOutput = - await BuildOutputImpl.readFromFile(file: config.outputFile); + final buildOutput = BuildOutputImpl.readFromFile(file: config.outputFile); if (buildOutput != null) { final lastBuilt = buildOutput.timestamp.roundDownToSeconds(); final lastChange = await buildOutput.dependenciesModel.lastModified(); @@ -325,7 +324,7 @@ ${result.stdout} try { final buildOutput = - await BuildOutputImpl.readFromFile(file: config.outputFile) ?? + BuildOutputImpl.readFromFile(file: config.outputFile) ?? BuildOutputImpl(); success &= validateAssetsPackage( buildOutput.assets, diff --git a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart index 49651fa5c..af7de4a38 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart @@ -2,23 +2,11 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'dart:io'; - import 'package:native_assets_cli/native_assets_cli.dart'; -import 'package:path/path.dart' as p; void main(List args) async { await link(args, (config, output) async { - final shakenAssets = shake(config.assets); - - final linkOutput = shakenAssets.map((e) { - final filePath = e.file!.toFilePath(); - final uri = config.outDirectory.resolve(p.basename(filePath)); - File(filePath).copySync(uri.toFilePath()); - return DataAsset.fromId(id: e.id, file: uri); - }).toList(); - - output.addAssets(linkOutput); + output.addAssets(shake(config.assets)); }); } diff --git a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart index e9048e7ad..e570eff1f 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart @@ -37,8 +37,8 @@ export 'src/api/link_config.dart' show LinkConfigArgs, LinkConfigImpl; export 'src/api/link_mode_preference.dart' show LinkModePreferenceImpl; export 'src/api/link_output.dart' show LinkOutput; export 'src/api/os.dart' show OSImpl; -export 'src/api/pipeline_config.dart' show PipelineConfigImpl; export 'src/model/dependencies.dart'; export 'src/model/metadata.dart'; +export 'src/model/pipeline_config.dart' show PipelineConfigImpl; export 'src/model/pipeline_step.dart'; export 'src/model/target.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/build.dart b/pkgs/native_assets_cli/lib/src/api/build.dart index 0cd4bb5f5..e4aa8d66c 100644 --- a/pkgs/native_assets_cli/lib/src/api/build.dart +++ b/pkgs/native_assets_cli/lib/src/api/build.dart @@ -89,7 +89,7 @@ Future build( List arguments, Future Function(BuildConfig config, BuildOutput output) builder, ) async { - final config = BuildConfig(arguments); + final config = BuildConfig(arguments) as BuildConfigImpl; final output = BuildOutputImpl(); await builder(config, output); await output.writeToFile(config: config); diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index 64223486a..9e59a98b6 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -11,6 +11,7 @@ import 'package:crypto/crypto.dart'; import 'package:pub_semver/pub_semver.dart'; import '../model/metadata.dart'; +import '../model/pipeline_config.dart'; import '../model/pipeline_step.dart'; import '../model/target.dart'; import '../utils/json.dart'; @@ -22,7 +23,6 @@ import 'build_mode.dart'; import 'ios_sdk.dart'; import 'link_mode_preference.dart'; import 'os.dart'; -import 'pipeline_config.dart'; part '../model/build_config.dart'; part '../model/c_compiler_config.dart'; @@ -34,20 +34,18 @@ part 'c_compiler_config.dart'; /// be automatically run, by the Flutter and Dart SDK tools. The hook will be /// run with specific commandline arguments, which [BuildConfig] can parse and /// provide more convenient access to. -abstract final class BuildConfig extends PipelineConfig { +abstract final class BuildConfig { /// The directory in which all output and intermediate artifacts should be /// placed. Uri get outputDirectory; /// The name of the package the native assets are built for. - @override String get packageName; /// The root of the package the native assets are built for. /// /// Often a package's native assets are built because a package is a /// dependency of another. For this it is convenient to know the packageRoot. - @override Uri get packageRoot; /// The architecture being compiled for. diff --git a/pkgs/native_assets_cli/lib/src/api/build_output.dart b/pkgs/native_assets_cli/lib/src/api/build_output.dart index a840c9f36..aebf926f0 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_output.dart @@ -9,7 +9,9 @@ import 'package:collection/collection.dart'; import 'package:pub_semver/pub_semver.dart'; import 'package:yaml/yaml.dart' show loadYaml; -import '../../native_assets_cli_internal.dart'; +import '../model/dependencies.dart'; +import '../model/metadata.dart'; +import '../model/pipeline_config.dart'; import '../utils/datetime.dart'; import '../utils/file.dart'; import '../utils/json.dart'; @@ -18,7 +20,6 @@ import 'architecture.dart'; import 'asset.dart'; import 'build_config.dart'; import 'os.dart'; -import 'pipeline_config.dart'; part '../model/build_output.dart'; @@ -42,7 +43,7 @@ abstract final class BuildOutput { /// the dry run must be provided. Iterable get assets; - Map> get assetsForLinking; + Map> get assetsForLinking; /// The files used by this build. /// diff --git a/pkgs/native_assets_cli/lib/src/api/data_asset.dart b/pkgs/native_assets_cli/lib/src/api/data_asset.dart index e159f0d81..6726cf583 100644 --- a/pkgs/native_assets_cli/lib/src/api/data_asset.dart +++ b/pkgs/native_assets_cli/lib/src/api/data_asset.dart @@ -27,14 +27,5 @@ abstract final class DataAsset implements Asset { file: file, ); - factory DataAsset.fromId({ - required String id, - required Uri file, - }) => - DataAssetImpl( - id: id, - file: file, - ); - static const String type = 'data'; } diff --git a/pkgs/native_assets_cli/lib/src/api/link.dart b/pkgs/native_assets_cli/lib/src/api/link.dart index 8ab2a193f..9ade76355 100644 --- a/pkgs/native_assets_cli/lib/src/api/link.dart +++ b/pkgs/native_assets_cli/lib/src/api/link.dart @@ -89,15 +89,16 @@ Future link( List arguments, Future Function(LinkConfig config, LinkOutput output) builder, ) async { - final config = await LinkConfig.fromArguments(arguments); + final config = LinkConfig(arguments) as LinkConfigImpl; // The built assets are dependencies of linking, as the linking should be // rerun if they change. - final builtAssets = - config.assets.map((e) => e.file).whereType().toList(); - final linkoutput = LinkOutput(BuildOutputImpl( - dependencies: Dependencies(builtAssets), - )); + final builtAssetsFiles = + config.assets.map((asset) => asset.file).whereType().toList(); + final buildOutputImpl = BuildOutputImpl( + dependencies: Dependencies(builtAssetsFiles), + ); + final linkoutput = LinkOutput(buildOutputImpl); await builder(config, linkoutput); - await linkoutput.writeToFile(config: config); + await buildOutputImpl.writeToFile(config: config); } diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index c34fffb99..1e93c911b 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -9,10 +9,10 @@ import 'package:cli_config/cli_config.dart'; import 'package:pub_semver/pub_semver.dart'; import '../../native_assets_cli.dart'; +import '../model/pipeline_config.dart'; import '../model/pipeline_step.dart'; import 'build_config.dart'; import 'build_output.dart'; -import 'pipeline_config.dart'; part '../model/link_config.dart'; @@ -21,37 +21,18 @@ part '../model/link_config.dart'; /// It consists of a subset of the fields from the [BuildConfig] already passed /// to the build script, the [assets] from the build step, and the /// [resourceIdentifiers] generated during the kernel compilation. -abstract class LinkConfig extends PipelineConfig { - /// Generate the [LinkConfig] from the input arguments to the linking script. - static Future fromArguments(List args) async { - final argParser = ArgParser()..addOption('config'); - - final results = argParser.parse(args); - final linkConfigContents = - File(results['config'] as String).readAsStringSync(); - final linkConfigJson = - jsonDecode(linkConfigContents) as Map; - - return LinkConfigArgs.fromJson(linkConfigJson).toLinkConfig(); - } - - @override +abstract class LinkConfig { Uri get configFile; - @override - Uri get outDirectory; + Uri get outputDirectory; - @override String get outputName; - @override String get packageName; - @override Uri get packageRoot; /// The URI of the `link.dart` script. - @override Uri get script; /// The list of assets to be linked. These are the assets generated by a @@ -62,4 +43,8 @@ abstract class LinkConfig extends PipelineConfig { /// called in the tree-shaken Dart code. This information can be used to /// dispose unused [assets]. ResourceIdentifiers? get resourceIdentifiers; + + /// Generate the [LinkConfig] from the input arguments to the linking script. + factory LinkConfig(List arguments) => + LinkConfigImpl.fromArguments(arguments); } diff --git a/pkgs/native_assets_cli/lib/src/api/link_output.dart b/pkgs/native_assets_cli/lib/src/api/link_output.dart index 138cf0a3a..c426bfd15 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_output.dart @@ -7,7 +7,6 @@ import 'dart:io'; import 'architecture.dart'; import 'asset.dart'; import 'build_output.dart'; -import 'link_config.dart'; import 'os.dart'; extension type LinkOutput(BuildOutputImpl _buildOutput) { @@ -35,12 +34,4 @@ extension type LinkOutput(BuildOutputImpl _buildOutput) { /// Adds [Asset]s produced by this link or dry run. void addAssets(Iterable assets) => _buildOutput.addAssets(assets); - - /// Writes this object the output file specified in the [config]. - /// - /// Serializes this object, meaning the [assets] and [dependencies] together - /// with some metadata, to an output JSON file. The location of the file is - /// specified in the [config]. - Future writeToFile({required LinkConfig config}) => - _buildOutput.writeToFile(config: config); } diff --git a/pkgs/native_assets_cli/lib/src/api/pipeline_config.dart b/pkgs/native_assets_cli/lib/src/api/pipeline_config.dart deleted file mode 100644 index 11f621b9a..000000000 --- a/pkgs/native_assets_cli/lib/src/api/pipeline_config.dart +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:pub_semver/pub_semver.dart'; - -part '../model/pipeline_config.dart'; - -abstract class PipelineConfig { - Uri get configFile; - - Uri get outputFile => outDirectory.resolve(outputName); - - Uri get outDirectory; - - Uri get script; - - String toJsonString(); - - String get packageName; - - Uri get packageRoot; - - String get outputName; -} diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index f920c0007..475c259cd 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -20,13 +20,11 @@ final class BuildConfigImpl extends PipelineConfigImpl implements BuildConfig { String get outputName => 'build_output.json'; @override - Uri get configFile => outDirectory.resolve('../config.json'); + Uri get configFile => outputDirectory.resolve('../config.json'); /// The folder in which all output and intermediate artifacts should be /// placed. @override - Uri get outDirectory => _outDir; - @override Uri get outputDirectory => _outDir; late final Uri _outDir; diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index 47aebee04..4a9de9878 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -10,11 +10,11 @@ final class BuildOutputImpl implements BuildOutput { final List _assets; - final Map> _assetsForLinking; - @override Iterable get assets => _assets; + final Map> _assetsForLinking; + @override Map> get assetsForLinking => _assetsForLinking; @@ -87,8 +87,8 @@ final class BuildOutputImpl implements BuildOutput { return BuildOutputImpl( timestamp: DateTime.parse(as(jsonMap[_timestampKey])), assets: AssetImpl.listFromJson(as>(jsonMap[_assetsKey])), - assetsForLinking: as>(jsonMap[_assetsForLinkingKey]) - .map((packageName, assets) => MapEntry( + assetsForLinking: as?>(jsonMap[_assetsForLinkingKey]) + ?.map((packageName, assets) => MapEntry( packageName, AssetImpl.listFromJson(as>(assets)))), dependencies: Dependencies.fromJson(as?>(jsonMap[_dependenciesKey])), @@ -131,19 +131,18 @@ final class BuildOutputImpl implements BuildOutput { static Version latestVersion = BuildConfigImpl.latestVersion; /// Writes the JSON file from [file]. - static Future readFromFile({required Uri file}) async { + static BuildOutputImpl? readFromFile({required Uri file}) { final buildOutputFile = File.fromUri(file); - if (await buildOutputFile.exists()) { - return BuildOutputImpl.fromJsonString( - await buildOutputFile.readAsString()); + if (buildOutputFile.existsSync()) { + return BuildOutputImpl.fromJsonString(buildOutputFile.readAsStringSync()); } return null; } /// Writes the [toJsonString] to the output file specified in the [config]. - Future writeToFile({required PipelineConfig config}) async { - final configVersion = (config as PipelineConfigImpl).version; + Future writeToFile({required PipelineConfigImpl config}) async { + final configVersion = config.version; final jsonString = toJsonString(configVersion); await File.fromUri(config.outputFile) .writeAsStringCreateDirectory(jsonString); diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 06e473126..59a09144f 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -28,10 +28,10 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { }) : _buildConfig = buildConfig; @override - Uri get configFile => outDirectory.resolve('../link_config.json'); + Uri get configFile => outputDirectory.resolve('../link_config.json'); @override - Uri get outDirectory => _buildConfig.outDirectory; + Uri get outputDirectory => _buildConfig.outputDirectory; @override String get outputName => 'link_output.json'; @@ -51,6 +51,18 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { @override Version get version => _buildConfig.version; + + static LinkConfig fromArguments(List arguments) { + final argParser = ArgParser()..addOption('config'); + + final results = argParser.parse(arguments); + final linkConfigContents = + File(results['config'] as String).readAsStringSync(); + final linkConfigJson = + jsonDecode(linkConfigContents) as Map; + + return LinkConfigArgs.fromJson(linkConfigJson).toLinkConfig(); + } } class LinkConfigArgs { @@ -79,7 +91,7 @@ class LinkConfigArgs { ); } - Future toLinkConfig() async { + LinkConfigImpl toLinkConfig() { final buildConfigFile = File(buildConfigUri.toFilePath()); if (!buildConfigFile.existsSync()) { throw UnsupportedError( @@ -98,8 +110,7 @@ class LinkConfigArgs { ResourceIdentifiers.fromFile(resourceIdentifierUri!.toFilePath()); } - final buildOutput = - await BuildOutputImpl.readFromFile(file: config.outputFile); + final buildOutput = BuildOutputImpl.readFromFile(file: config.outputFile); if (buildOutput == null) { throw ArgumentError( 'Expected to find the build output at ${config.outputFile}'); diff --git a/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart b/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart index 0c83d2655..0a7824ca2 100644 --- a/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart @@ -2,8 +2,24 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -part of '../api/pipeline_config.dart'; +import 'package:pub_semver/pub_semver.dart'; + +abstract class PipelineConfigImpl { + Uri get configFile; + + Uri get outputFile => outputDirectory.resolve(outputName); + + Uri get outputDirectory; + + Uri get script; + + String toJsonString(); + + String get packageName; + + Uri get packageRoot; + + String get outputName; -abstract class PipelineConfigImpl extends PipelineConfig { Version get version; } diff --git a/pkgs/native_assets_cli/test/api/build_test.dart b/pkgs/native_assets_cli/test/api/build_test.dart index c31618c15..23c662d24 100644 --- a/pkgs/native_assets_cli/test/api/build_test.dart +++ b/pkgs/native_assets_cli/test/api/build_test.dart @@ -65,7 +65,8 @@ void main() async { (config, output) async { output.addDependency(packageRootUri.resolve('foo')); }); - final buildOutputUri = outDirUri.resolve(config1.outputName); + final buildOutputUri = + outDirUri.resolve((config1 as BuildConfigImpl).outputName); expect(File.fromUri(buildOutputUri), exists); }); } diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index adc2e8e25..e872f22f2 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -253,8 +253,7 @@ void main() { linkModePreference: LinkModePreferenceImpl.dynamic, ); await buildOutput.writeToFile(config: config); - final buildOutput2 = - await BuildOutputImpl.readFromFile(file: config.outputFile); + final buildOutput2 = BuildOutputImpl.readFromFile(file: config.outputFile); expect(buildOutput2, buildOutput); }); @@ -274,8 +273,7 @@ void main() { version: Version(1, 1, 0), ); await buildOutput.writeToFile(config: config); - final buildOutput2 = - await BuildOutputImpl.readFromFile(file: config.outputFile); + final buildOutput2 = BuildOutputImpl.readFromFile(file: config.outputFile); expect(buildOutput2, buildOutput); }); diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart index c6b4e92f2..9e0683b1b 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart @@ -47,7 +47,7 @@ class CBuilder implements Builder { /// The filename will be decided by [BuildConfig.targetOS] and /// [OS.libraryFileName] or [OS.executableFileName]. /// - /// File will be placed in [BuildConfig.outDirectory]. + /// File will be placed in [BuildConfig.outputDirectory]. final String name; /// Asset identifier. @@ -196,7 +196,7 @@ class CBuilder implements Builder { required BuildOutput buildOutput, required Logger? logger, }) async { - final outDir = buildConfig.outDirectory; + final outDir = buildConfig.outputDirectory; final packageRoot = buildConfig.packageRoot; await Directory.fromUri(outDir).create(recursive: true); final linkMode = _linkMode(buildConfig.linkModePreference); diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart index 50087b3d3..6f5fdbbad 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart @@ -57,7 +57,7 @@ class RunCBuilder { this.std, this.language = Language.c, this.cppLinkStdLib, - }) : outDir = buildConfig.outDirectory, + }) : outDir = buildConfig.outputDirectory, assert([executable, dynamicLibrary, staticLibrary] .whereType() .length == From be3965aebbc836494ff0ffabc61a818fb76f19d1 Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 26 Mar 2024 11:56:12 +0100 Subject: [PATCH 095/187] Second changes as per review --- .../lib/src/api/build_output.dart | 10 + .../lib/src/model/build_config.dart | 2 +- .../lib/src/model/build_config_CHANGELOG.md | 5 + .../lib/src/model/build_output.dart | 17 +- .../native_assets_cli/lib/src/utils/json.dart | 3 +- pkgs/native_assets_cli/test/helpers.dart | 14 ++ .../test/model/build_config_test.dart | 2 +- .../test/model/build_output_test.dart | 213 ++++++------------ 8 files changed, 108 insertions(+), 158 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/api/build_output.dart b/pkgs/native_assets_cli/lib/src/api/build_output.dart index aebf926f0..3dbfa2544 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_output.dart @@ -88,9 +88,19 @@ abstract final class BuildOutput { ); /// Adds [Asset]s produced by this build or dry run. + /// + /// If the [linkInPackage] argument is specified, the asset will not be + /// bundled during the build step, but sent as input to the linking script + /// of the specified package, where it can be further processed and possibly + /// bundled. void addAsset(Asset asset, {String? linkInPackage}); /// Adds [Asset]s produced by this build or dry run. + /// + /// If the [linkInPackage] argument is specified, the assets will not be + /// bundled during the build step, but sent as input to the linking script + /// of the specified package, where they can be further processed and possibly + /// bundled. void addAssets(Iterable assets, {String? linkInPackage}); /// Adds file used by this build. diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index 475c259cd..720c2d6ee 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -240,7 +240,7 @@ final class BuildConfigImpl extends PipelineConfigImpl implements BuildConfig { /// If we ever were to make breaking changes, it would be useful to give /// proper error messages rather than just fail to parse the JSON /// representation in the protocol. - static Version latestVersion = Version(1, 2, 0); + static Version latestVersion = Version(1, 3, 0); factory BuildConfigImpl.fromConfig(Config config) { final result = BuildConfigImpl._().._cCompiler = CCompilerConfigImpl._(); diff --git a/pkgs/native_assets_cli/lib/src/model/build_config_CHANGELOG.md b/pkgs/native_assets_cli/lib/src/model/build_config_CHANGELOG.md index 3f11f16d7..106959229 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config_CHANGELOG.md +++ b/pkgs/native_assets_cli/lib/src/model/build_config_CHANGELOG.md @@ -1,3 +1,8 @@ +## 1.3.0 + +- Add key for assets to be linked. Backwards compatible, in earlier versions + the key will not be read and the list of assets to be linked will be empty. + ## 1.2.0 - Changed default encoding to JSON. diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index 0b8a1f1f0..a7b330d36 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -118,16 +118,23 @@ final class BuildOutputImpl implements BuildOutput { assets.add(asset); } } + final linkMinVersion = Version(1, 3, 0); + if (_assetsForLinking.isNotEmpty && version < linkMinVersion) { + throw UnsupportedError('Please update your Dart SDK to link assets in ' + '`link.dart` scripts. Your current version is $version, but this ' + 'feature requires $linkMinVersion'); + } return { _timestampKey: timestamp.toString(), _assetsKey: [ for (final asset in assets) asset.toJson(version), ], - _assetsForLinkingKey: - _assetsForLinking.map((packageName, assets) => MapEntry( - packageName, - AssetImpl.listToJson(assets, version), - )), + if (version >= linkMinVersion) + _assetsForLinkingKey: + _assetsForLinking.map((packageName, assets) => MapEntry( + packageName, + AssetImpl.listToJson(assets, version), + )), if (_dependencies.dependencies.isNotEmpty) _dependenciesKey: _dependencies.toJson(), _metadataKey: metadata.toJson(), diff --git a/pkgs/native_assets_cli/lib/src/utils/json.dart b/pkgs/native_assets_cli/lib/src/utils/json.dart index bd18d97b8..a2266b0c6 100644 --- a/pkgs/native_assets_cli/lib/src/utils/json.dart +++ b/pkgs/native_assets_cli/lib/src/utils/json.dart @@ -7,7 +7,8 @@ T as(Object? object) { return object; } throw FormatException( - "Unexpected value '$object' in JSON. Expected a $T.", + "Unexpected value '$object' of type ${object.runtimeType} in JSON. Expected" + 'a $T.', ); } diff --git a/pkgs/native_assets_cli/test/helpers.dart b/pkgs/native_assets_cli/test/helpers.dart index 1b70aa739..ae34a37d1 100644 --- a/pkgs/native_assets_cli/test/helpers.dart +++ b/pkgs/native_assets_cli/test/helpers.dart @@ -6,6 +6,8 @@ import 'dart:io'; import 'package:native_assets_cli/native_assets_cli.dart'; import 'package:native_assets_cli/native_assets_cli_internal.dart' as internal; +import 'package:yaml/yaml.dart'; +import 'package:yaml_edit/yaml_edit.dart'; const keepTempKey = 'KEEP_TEMPORARY_DIRECTORIES'; @@ -139,3 +141,15 @@ extension UriExtension on Uri { return File.fromUri(this); } } + +String yamlEncode(Object yamlEncoding) { + final editor = YamlEditor(''); + editor.update( + [], + wrapAsYamlNode( + yamlEncoding, + collectionStyle: CollectionStyle.BLOCK, + ), + ); + return editor.toString(); +} diff --git a/pkgs/native_assets_cli/test/model/build_config_test.dart b/pkgs/native_assets_cli/test/model/build_config_test.dart index d6234922b..1f53c1c06 100644 --- a/pkgs/native_assets_cli/test/model/build_config_test.dart +++ b/pkgs/native_assets_cli/test/model/build_config_test.dart @@ -553,7 +553,7 @@ version: 1.0.0'''; ); // Using the checksum for a build folder should be stable. - expect(name1, '6723f3af2ba4cd70660494965ac55c2a'); + expect(name1, '1cee460809d989b4af7c75a0d53378e6'); // Build folder different due to metadata. final name2 = BuildConfigImpl.checksum( diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index 10129dfb6..f079734e7 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -21,57 +21,6 @@ void main() { await Directory.fromUri(tempUri).delete(recursive: true); }); - final buildOutput = BuildOutputImpl( - timestamp: DateTime.parse('2022-11-10 13:25:01.000'), - assets: [ - NativeCodeAssetImpl( - id: 'package:my_package/foo', - file: Uri(path: 'path/to/libfoo.so'), - linkMode: DynamicLoadingBundledImpl(), - os: OSImpl.android, - architecture: ArchitectureImpl.x64, - ), - NativeCodeAssetImpl( - id: 'package:my_package/foo2', - linkMode: DynamicLoadingSystemImpl(Uri(path: 'path/to/libfoo2.so')), - os: OSImpl.android, - architecture: ArchitectureImpl.x64, - ), - NativeCodeAssetImpl( - id: 'package:my_package/foo3', - linkMode: LookupInProcessImpl(), - os: OSImpl.android, - architecture: ArchitectureImpl.x64, - ), - NativeCodeAssetImpl( - id: 'package:my_package/foo4', - linkMode: LookupInExecutableImpl(), - os: OSImpl.android, - architecture: ArchitectureImpl.x64, - ), - ], - assetsForLinking: { - 'my_package': [ - DataAssetImpl( - file: Uri.file('path/to/data'), - id: 'package:my_package/data', - ) - ], - 'my_package_2': [ - DataAssetImpl( - file: Uri.file('path/to/data2'), - id: 'package:my_package_2/data2', - ) - ] - }, - dependencies: Dependencies([ - Uri.file('path/to/file.ext'), - ]), - metadata: const Metadata({ - 'key': 'value', - }), - ); - final dryRunOutput = BuildOutputImpl( timestamp: DateTime.parse('2022-11-10 13:25:01.000'), assets: [ @@ -149,40 +98,6 @@ assets: metadata: {} version: 1.0.0'''; - final yamlEncoding = '''timestamp: 2022-11-10 13:25:01.000 -assets: - - architecture: x64 - file: path/to/libfoo.so - id: package:my_package/foo - link_mode: - type: dynamic_loading_bundle - os: android - type: native_code - - architecture: x64 - id: package:my_package/foo2 - link_mode: - type: dynamic_loading_system - uri: path/to/libfoo2.so - os: android - type: native_code - - architecture: x64 - id: package:my_package/foo3 - link_mode: - type: dynamic_loading_process - os: android - type: native_code - - architecture: x64 - id: package:my_package/foo4 - link_mode: - type: dynamic_loading_executable - os: android - type: native_code -dependencies: - - path/to/file.ext -metadata: - key: value -version: ${BuildOutputImpl.latestVersion}'''; - final jsonEncoding = '''{ "timestamp": "2022-11-10 13:25:01.000", "assets": [ @@ -250,71 +165,8 @@ version: ${BuildOutputImpl.latestVersion}'''; "version": "${BuildOutputImpl.latestVersion}" }'''; - const jsonEncodingV1_0_0 = ''' -{ - "timestamp": "2022-11-10 13:25:01.000", - "assets": [ - { - "id": "package:my_package/foo", - "link_mode": "dynamic", - "path": { - "path_type": "absolute", - "uri": "path/to/libfoo.so" - }, - "target": "android_x64" - }, - { - "id": "package:my_package/foo2", - "link_mode": "dynamic", - "path": { - "path_type": "system", - "uri": "path/to/libfoo2.so" - }, - "target": "android_x64" - }, - { - "id": "package:my_package/foo3", - "link_mode": "dynamic", - "path": { - "path_type": "process" - }, - "target": "android_x64" - }, - { - "id": "package:my_package/foo4", - "link_mode": "dynamic", - "path": { - "path_type": "executable" - }, - "target": "android_x64" - } - ], - "assetsForLinking": { - "my_package": [ - { - "id": "package:my_package/data", - "file": "path/to/data", - "type": "data" - } - ], - "my_package_2": [ - { - "id": "package:my_package_2/data2", - "file": "path/to/data2", - "type": "data" - } - ] - }, - "dependencies": [ - "path/to/file.ext" - ], - "metadata": { - "key": "value" - }, - "version": "1.0.0" -}'''; - test('built info json', () { + final buildOutput = getBuildOutput(); final json = buildOutput .toJsonString(BuildOutputImpl.latestVersion) .replaceAll('\\\\', '/'); @@ -326,12 +178,14 @@ version: ${BuildOutputImpl.latestVersion}'''; }); test('built info yaml v1.0.0 parsing keeps working', () { + final buildOutput = getBuildOutput(withLinkedAssets: false); final buildOutput2 = BuildOutputImpl.fromJsonString(yamlEncodingV1_0_0); expect(buildOutput.hashCode, buildOutput2.hashCode); expect(buildOutput, buildOutput2); }); test('built info yaml v1.0.0 serialization keeps working', () { + final buildOutput = getBuildOutput(withLinkedAssets: false); final yamlEncoding = yamlEncode(buildOutput.toJson(Version(1, 0, 0))).replaceAll('\\', '/'); expect(yamlEncoding, yamlEncodingV1_0_0); @@ -343,9 +197,10 @@ version: ${BuildOutputImpl.latestVersion}'''; expect(yamlEncoding, yamlEncodingV1_0_0dryRun); }); - test('BuildOutput.toString', buildOutput.toString); + test('BuildOutput.toString', getBuildOutput().toString); test('BuildOutput.hashCode', () { + final buildOutput = getBuildOutput(); final buildOutput2 = BuildOutputImpl.fromJsonString(jsonEncoding); expect(buildOutput.hashCode, buildOutput2.hashCode); @@ -369,6 +224,7 @@ version: ${BuildOutputImpl.latestVersion}'''; targetOS: OSImpl.macOS, linkModePreference: LinkModePreferenceImpl.dynamic, ); + final buildOutput = getBuildOutput(); await buildOutput.writeToFile(config: config); final buildOutput2 = BuildOutputImpl.readFromFile(file: config.outputFile); expect(buildOutput2, buildOutput); @@ -389,6 +245,7 @@ version: ${BuildOutputImpl.latestVersion}'''; linkModePreference: LinkModePreferenceImpl.dynamic, version: Version(1, 1, 0), ); + final buildOutput = getBuildOutput(withLinkedAssets: false); await buildOutput.writeToFile(config: config); final buildOutput2 = BuildOutputImpl.readFromFile(file: config.outputFile); expect(buildOutput2, buildOutput); @@ -538,3 +395,59 @@ version: 1.0.0'''), expect(buildOutput2.metadataModel, equals(buildOutput.metadataModel)); }); } + +BuildOutputImpl getBuildOutput({bool withLinkedAssets = true}) { + final assetsForLinking = withLinkedAssets + ? { + 'my_package': [ + DataAssetImpl( + file: Uri.file('path/to/data'), + id: 'package:my_package/data', + ) + ], + 'my_package_2': [ + DataAssetImpl( + file: Uri.file('path/to/data2'), + id: 'package:my_package_2/data2', + ) + ] + } + : null; + return BuildOutputImpl( + timestamp: DateTime.parse('2022-11-10 13:25:01.000'), + assets: [ + NativeCodeAssetImpl( + id: 'package:my_package/foo', + file: Uri(path: 'path/to/libfoo.so'), + linkMode: DynamicLoadingBundledImpl(), + os: OSImpl.android, + architecture: ArchitectureImpl.x64, + ), + NativeCodeAssetImpl( + id: 'package:my_package/foo2', + linkMode: DynamicLoadingSystemImpl(Uri(path: 'path/to/libfoo2.so')), + os: OSImpl.android, + architecture: ArchitectureImpl.x64, + ), + NativeCodeAssetImpl( + id: 'package:my_package/foo3', + linkMode: LookupInProcessImpl(), + os: OSImpl.android, + architecture: ArchitectureImpl.x64, + ), + NativeCodeAssetImpl( + id: 'package:my_package/foo4', + linkMode: LookupInExecutableImpl(), + os: OSImpl.android, + architecture: ArchitectureImpl.x64, + ), + ], + assetsForLinking: assetsForLinking, + dependencies: Dependencies([ + Uri.file('path/to/file.ext'), + ]), + metadata: const Metadata({ + 'key': 'value', + }), + ); +} From 7e6f2cf021969f6d5dab9a6374133735215c2e4c Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 26 Mar 2024 15:06:54 +0100 Subject: [PATCH 096/187] Third changes as per review --- .../lib/src/build_runner/build_runner.dart | 2 +- .../example/native_add_library/hook/link.dart | 23 +++++++++---------- .../lib/native_assets_cli.dart | 3 +-- .../lib/src/api/link_config.dart | 14 ++++++++--- .../lib/src/model/build_config.dart | 3 ++- .../lib/src/model/link_config.dart | 13 +++++++---- 6 files changed, 34 insertions(+), 24 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 832c2a93c..167feda58 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -136,7 +136,7 @@ class NativeAssetsBuildRunner { ); final PipelineConfigImpl config; if (step == PipelineStep.link) { - config = await LinkConfigArgs( + config = LinkConfigArgs( resourceIdentifierUri: resourceIdentifiers, buildConfigUri: buildConfig.configFile, ).toLinkConfig(); diff --git a/pkgs/native_assets_cli/example/native_add_library/hook/link.dart b/pkgs/native_assets_cli/example/native_add_library/hook/link.dart index f184af686..5542bf88d 100644 --- a/pkgs/native_assets_cli/example/native_add_library/hook/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/hook/link.dart @@ -7,29 +7,28 @@ import 'package:native_assets_cli/native_assets_cli.dart'; const packageName = 'native_add_library'; void main(List args) async { await link(args, (config, output) async { - final shakenAssets = MyResourceShaker().shake( - config.assets, - config.resourceIdentifiers, - ); - // Add a new json file to the assets const assetName = 'data_asset_link.json'; - shakenAssets.add( + + output.addAssets([ + ...AssetTreeshaker.shake( + config.assets, + config.resources, + ), DataAsset( name: assetName, package: packageName, file: config.packageRoot.resolve(assetName), - ), - ); - output.addAssets(shakenAssets); + ) + ]); }); } /// Filters out json files from the assets. -class MyResourceShaker { - List shake( +class AssetTreeshaker { + static List shake( List assets, - ResourceIdentifiers? resourceIdentifiers, + List? resourceIdentifiers, ) => assets.where((asset) => !asset.id.endsWith('.json')).toList(); } diff --git a/pkgs/native_assets_cli/lib/native_assets_cli.dart b/pkgs/native_assets_cli/lib/native_assets_cli.dart index 6a0d90dce..2dd842e14 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli.dart @@ -24,8 +24,7 @@ export 'src/api/build_mode.dart' show BuildMode; export 'src/api/build_output.dart' show BuildOutput; export 'src/api/ios_sdk.dart' show IOSSdk; export 'src/api/link.dart'; -export 'src/api/link_config.dart' show LinkConfig; +export 'src/api/link_config.dart' show LinkConfig, Resource; export 'src/api/link_mode_preference.dart' show LinkModePreference; export 'src/api/link_output.dart' show LinkOutput; export 'src/api/os.dart' show OS; -export 'src/api/resources.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 1e93c911b..85705ebeb 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -13,14 +13,15 @@ import '../model/pipeline_config.dart'; import '../model/pipeline_step.dart'; import 'build_config.dart'; import 'build_output.dart'; +import 'resources.dart'; part '../model/link_config.dart'; /// The input to the linking script. /// /// It consists of a subset of the fields from the [BuildConfig] already passed -/// to the build script, the [assets] from the build step, and the -/// [resourceIdentifiers] generated during the kernel compilation. +/// to the build script, the [assets] from the build step, and the [resources] +/// generated during the kernel compilation. abstract class LinkConfig { Uri get configFile; @@ -42,9 +43,16 @@ abstract class LinkConfig { /// A collection of methods annotated with `@ResourceIdentifier`, which are /// called in the tree-shaken Dart code. This information can be used to /// dispose unused [assets]. - ResourceIdentifiers? get resourceIdentifiers; + List? get resources; /// Generate the [LinkConfig] from the input arguments to the linking script. factory LinkConfig(List arguments) => LinkConfigImpl.fromArguments(arguments); } + +class Resource { + final String name; + final Object? metadata; + + Resource({required this.name, required this.metadata}); +} diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index 720c2d6ee..2c498b80e 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -17,7 +17,8 @@ final class BuildConfigImpl extends PipelineConfigImpl implements BuildConfig { } @override - String get outputName => 'build_output.json'; + String get outputName => + version > Version(1, 1, 0) ? 'build_output.json' : 'build_output.yaml'; @override Uri get configFile => outputDirectory.resolve('../config.json'); diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 59a09144f..d238b9f24 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -7,8 +7,8 @@ part of '../api/link_config.dart'; /// The input to the linking script. /// /// It consists of the [_buildConfig] already passed to the build script, the -/// [assets] from the build step, and the [resourceIdentifiers] -/// generated during the kernel compilation. +/// [assets] from the build step, and the [resources] generated during the +/// kernel compilation. class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { @override final List assets; @@ -16,7 +16,7 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { final BuildConfigImpl _buildConfig; @override - final ResourceIdentifiers? resourceIdentifiers; + final List resources; final LinkConfigArgs _args; @@ -24,8 +24,11 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { this._args, { required this.assets, required BuildConfigImpl buildConfig, - required this.resourceIdentifiers, - }) : _buildConfig = buildConfig; + required ResourceIdentifiers? resourceIdentifiers, + }) : _buildConfig = buildConfig, + resources = (resourceIdentifiers?.identifiers ?? []) + .map((e) => Resource(name: e.name, metadata: e.id)) + .toList(); @override Uri get configFile => outputDirectory.resolve('../link_config.json'); From 45157296efabe1f7984b0757878823b829ea10a9 Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 26 Mar 2024 15:51:46 +0100 Subject: [PATCH 097/187] Fix test --- pkgs/native_assets_builder/test/build_runner/helpers.dart | 8 +------- .../test_data/simple_link/hook/build.dart | 6 ++++-- .../test_data/simple_link/hook/link.dart | 7 ++++--- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/pkgs/native_assets_builder/test/build_runner/helpers.dart b/pkgs/native_assets_builder/test/build_runner/helpers.dart index f213ed23e..c6c619e44 100644 --- a/pkgs/native_assets_builder/test/build_runner/helpers.dart +++ b/pkgs/native_assets_builder/test/build_runner/helpers.dart @@ -139,13 +139,7 @@ Future dryRun( Future expectAssetsExist(List assets) async { for (final asset in assets) { - final uri = asset.file!; - expect( - uri.toFilePath(), - contains('${Platform.pathSeparator}.dart_tool${Platform.pathSeparator}' - 'native_assets_builder${Platform.pathSeparator}')); - final file = File.fromUri(uri); - expect(file, exists); + expect(File.fromUri(asset.file!), exists); } } diff --git a/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart b/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart index aa70391e3..794ef9458 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:native_assets_cli/native_assets_cli.dart'; +import 'package:path/path.dart' as p; const packageName = 'simple_link'; @@ -11,8 +12,9 @@ void main(List args) async => build(args, (config, output) async { List.generate( 4, (index) => DataAsset( - name: 'data_$index', // The BuildState knows the package name. - file: Uri.file('data_$index.json'), // change to URI only + name: 'data_$index', + // TODO(mosuem): Simplify specifying files/file paths + file: Uri.file(p.absolute('data_$index.json')), package: packageName, ), ), diff --git a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart index af7de4a38..2e7327a8b 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart @@ -5,9 +5,10 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { - await link(args, (config, output) async { - output.addAssets(shake(config.assets)); - }); + await link( + args, + (config, output) async => output.addAssets(shake(config.assets)), + ); } List shake(List assets) => assets.skip(2).toList(); From 4df6f2d6ec776a924c07972bb0ba15e968465282 Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 26 Mar 2024 16:10:22 +0100 Subject: [PATCH 098/187] Fix link script --- .../example/native_add_library/hook/link.dart | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pkgs/native_assets_cli/example/native_add_library/hook/link.dart b/pkgs/native_assets_cli/example/native_add_library/hook/link.dart index 5542bf88d..ab9163354 100644 --- a/pkgs/native_assets_cli/example/native_add_library/hook/link.dart +++ b/pkgs/native_assets_cli/example/native_add_library/hook/link.dart @@ -3,22 +3,20 @@ // BSD-style license that can be found in the LICENSE file. import 'package:native_assets_cli/native_assets_cli.dart'; +import 'package:path/path.dart' as p; const packageName = 'native_add_library'; void main(List args) async { await link(args, (config, output) async { - // Add a new json file to the assets - const assetName = 'data_asset_link.json'; - output.addAssets([ ...AssetTreeshaker.shake( config.assets, config.resources, ), DataAsset( - name: assetName, + name: 'data_asset_link', package: packageName, - file: config.packageRoot.resolve(assetName), + file: Uri.file(p.absolute('data_asset_link.json')), ) ]); }); From 5c6937db6f09b7f9340de9801daefbf6c32a4f2e Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 26 Mar 2024 20:36:31 +0100 Subject: [PATCH 099/187] Works --- .../lib/src/build_runner/build_runner.dart | 69 ++++++++++++------- .../test/build_runner/helpers.dart | 5 +- .../test/build_runner/link_test.dart | 2 +- .../lib/src/api/link_config.dart | 2 +- .../lib/src/model/build_output.dart | 4 +- .../lib/src/model/dependencies.dart | 4 +- .../lib/src/model/link_config.dart | 48 +++++++------ 7 files changed, 78 insertions(+), 56 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 167feda58..03d203966 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -49,18 +49,19 @@ class NativeAssetsBuildRunner { Iterable? supportedAssetTypes, }) async => _run( - step: PipelineStep.build, - linkModePreference: linkModePreference, - target: target, - workingDirectory: workingDirectory, - buildMode: buildMode, - cCompilerConfig: cCompilerConfig, - targetIOSSdk: targetIOSSdk, - targetAndroidNdkApi: targetAndroidNdkApi, - includeParentEnvironment: includeParentEnvironment, - packageLayout: packageLayout, - runPackageName: runPackageName, - supportedAssetTypes: supportedAssetTypes); + step: PipelineStep.build, + linkModePreference: linkModePreference, + target: target, + workingDirectory: workingDirectory, + buildMode: buildMode, + cCompilerConfig: cCompilerConfig, + targetIOSSdk: targetIOSSdk, + targetAndroidNdkApi: targetAndroidNdkApi, + includeParentEnvironment: includeParentEnvironment, + packageLayout: packageLayout, + runPackageName: runPackageName, + supportedAssetTypes: supportedAssetTypes, + ); Future link({ required Target target, @@ -74,21 +75,24 @@ class NativeAssetsBuildRunner { Uri? resourceIdentifiers, String? runPackageName, Iterable? supportedAssetTypes, + required BuildResult buildResult, }) async => _run( - step: PipelineStep.link, - linkModePreference: LinkModePreferenceImpl.dynamic, - target: target, - workingDirectory: workingDirectory, - buildMode: buildMode, - cCompilerConfig: cCompilerConfig, - targetIOSSdk: targetIOSSdk, - targetAndroidNdkApi: targetAndroidNdkApi, - includeParentEnvironment: includeParentEnvironment, - packageLayout: packageLayout, - runPackageName: runPackageName, - resourceIdentifiers: resourceIdentifiers, - supportedAssetTypes: supportedAssetTypes); + step: PipelineStep.link, + linkModePreference: LinkModePreferenceImpl.dynamic, + target: target, + workingDirectory: workingDirectory, + buildMode: buildMode, + cCompilerConfig: cCompilerConfig, + targetIOSSdk: targetIOSSdk, + targetAndroidNdkApi: targetAndroidNdkApi, + includeParentEnvironment: includeParentEnvironment, + packageLayout: packageLayout, + runPackageName: runPackageName, + resourceIdentifiers: resourceIdentifiers, + supportedAssetTypes: supportedAssetTypes, + previousBuildResult: buildResult, + ); Future _run({ required PipelineStep step, @@ -104,6 +108,7 @@ class NativeAssetsBuildRunner { Uri? resourceIdentifiers, String? runPackageName, Iterable? supportedAssetTypes, + BuildResult? previousBuildResult, }) async { packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); final packagesWithBuild = await packageLayout.packagesWithAssets(step); @@ -139,6 +144,9 @@ class NativeAssetsBuildRunner { config = LinkConfigArgs( resourceIdentifierUri: resourceIdentifiers, buildConfigUri: buildConfig.configFile, + assetsForLinking: + previousBuildResult!.assetsForLinking[buildConfig.packageName] ?? + [], ).toLinkConfig(); } else { config = buildConfig; @@ -277,7 +285,7 @@ class NativeAssetsBuildRunner { ) async { final configFile = config.configFile; final configFileContents = config.toJsonString(); - logger.info('config.yaml contents: $configFileContents'); + logger.info('config.json contents: $configFileContents'); await File.fromUri(configFile).writeAsString(configFileContents); final buildOutputFile = File.fromUri(config.outputFile); if (await buildOutputFile.exists()) { @@ -505,12 +513,17 @@ abstract class BuildResult { bool get success; List get assets; + + Map> get assetsForLinking; } final class _BuildResultImpl implements BuildResult { @override final List assets; + @override + final Map> assetsForLinking; + @override final List dependencies; @@ -519,6 +532,7 @@ final class _BuildResultImpl implements BuildResult { _BuildResultImpl._({ required this.assets, + required this.assetsForLinking, required this.dependencies, required this.success, }); @@ -526,18 +540,21 @@ final class _BuildResultImpl implements BuildResult { _BuildResultImpl._failure() : this._( assets: [], + assetsForLinking: {}, dependencies: [], success: false, ); void add(BuildOutputImpl buildOutput) { assets.addAll(buildOutput.assets); + assetsForLinking.addAll(buildOutput.assetsForLinking); dependencies.addAll(buildOutput.dependencies); dependencies.sort(_uriCompare); } BuildResult withSuccess(bool success) => _BuildResultImpl._( assets: assets, + assetsForLinking: assetsForLinking, dependencies: dependencies, success: success, ); diff --git a/pkgs/native_assets_builder/test/build_runner/helpers.dart b/pkgs/native_assets_builder/test/build_runner/helpers.dart index c6c619e44..e58acaf77 100644 --- a/pkgs/native_assets_builder/test/build_runner/helpers.dart +++ b/pkgs/native_assets_builder/test/build_runner/helpers.dart @@ -39,7 +39,6 @@ Future build( bool includeParentEnvironment = true, List? capturedLogs, PackageLayout? packageLayout, - bool copyAssets = true, String? runPackageName, }) async => await runWithLog(capturedLogs, () async { @@ -57,7 +56,7 @@ Future build( runPackageName: runPackageName, ); - if (result.success && copyAssets) { + if (result.success) { await expectAssetsExist(result.assets); } @@ -73,6 +72,7 @@ Future link( bool includeParentEnvironment = true, List? capturedLogs, PackageLayout? packageLayout, + required BuildResult buildResult, }) async => await runWithLog(capturedLogs, () async { final result = await NativeAssetsBuildRunner( @@ -85,6 +85,7 @@ Future link( cCompilerConfig: cCompilerConfig, includeParentEnvironment: includeParentEnvironment, packageLayout: packageLayout, + buildResult: buildResult, ); if (result.success) { diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart index 6e2f23f32..b6f9dad74 100644 --- a/pkgs/native_assets_builder/test/build_runner/link_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -28,7 +28,6 @@ void main() async { packageUri, logger, dartExecutable, - copyAssets: false, ); expect(buildResult.assets.length, 0); @@ -36,6 +35,7 @@ void main() async { packageUri, logger, dartExecutable, + buildResult: buildResult, ); expect(linkResult.assets.length, 2); }); diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 85705ebeb..a2f3a49e6 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -11,8 +11,8 @@ import 'package:pub_semver/pub_semver.dart'; import '../../native_assets_cli.dart'; import '../model/pipeline_config.dart'; import '../model/pipeline_step.dart'; +import 'asset.dart'; import 'build_config.dart'; -import 'build_output.dart'; import 'resources.dart'; part '../model/link_config.dart'; diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index a7b330d36..ce963cbf4 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -126,9 +126,7 @@ final class BuildOutputImpl implements BuildOutput { } return { _timestampKey: timestamp.toString(), - _assetsKey: [ - for (final asset in assets) asset.toJson(version), - ], + _assetsKey: AssetImpl.listToJson(assets, version), if (version >= linkMinVersion) _assetsForLinkingKey: _assetsForLinking.map((packageName, assets) => MapEntry( diff --git a/pkgs/native_assets_cli/lib/src/model/dependencies.dart b/pkgs/native_assets_cli/lib/src/model/dependencies.dart index 42dec07a4..51d29c0fb 100644 --- a/pkgs/native_assets_cli/lib/src/model/dependencies.dart +++ b/pkgs/native_assets_cli/lib/src/model/dependencies.dart @@ -22,7 +22,9 @@ class Dependencies { fileSystemPathToUri(as(dependency)), ]); - List toJson() => [ + List toJson() => toJsonList(dependencies); + + static List toJsonList(List dependencies) => [ for (final dependency in dependencies) dependency.toFilePath(), ]; diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index d238b9f24..f369933c4 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -71,30 +71,49 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { class LinkConfigArgs { final Uri? resourceIdentifierUri; final Uri buildConfigUri; + final List assetsForLinking; static const resourceIdentifierKey = 'resource_identifiers'; static const buildConfigKey = 'build_config'; + static const assetsKey = 'assets'; LinkConfigArgs({ required this.resourceIdentifierUri, required this.buildConfigUri, + required this.assetsForLinking, }); factory LinkConfigArgs.fromJson(Map linkConfigJson) { final resourcesPath = linkConfigJson[resourceIdentifierKey] as String?; final buildConfigPath = linkConfigJson[buildConfigKey] as String?; - if (buildConfigPath == null) { - throw ArgumentError( - 'Expected to find the build config in $linkConfigJson'); + final assetList = linkConfigJson[assetsKey] as List?; + if (buildConfigPath == null || assetList == null) { + throw ArgumentError('Expected to find the build config and assetList in ' + '$linkConfigJson'); } return LinkConfigArgs( resourceIdentifierUri: resourcesPath != null ? Uri.file(resourcesPath) : null, buildConfigUri: Uri.file(buildConfigPath), + assetsForLinking: AssetImpl.listFromJson(assetList), ); } - LinkConfigImpl toLinkConfig() { + LinkConfigImpl toLinkConfig() => LinkConfigImpl( + this, + buildConfig: _readBuildConfig(), + resourceIdentifiers: _readResources(), + assets: assetsForLinking, + ); + + ResourceIdentifiers? _readResources() { + if (resourceIdentifierUri == null) { + return null; + } + return ResourceIdentifiers.fromFile(resourceIdentifierUri!.toFilePath()); + } + + BuildConfigImpl _readBuildConfig() { final buildConfigFile = File(buildConfigUri.toFilePath()); if (!buildConfigFile.existsSync()) { throw UnsupportedError( @@ -102,33 +121,18 @@ class LinkConfigArgs { 'The build configuration at ${buildConfigUri.toFilePath()} could not ' 'be found.'); } - final config = BuildConfigImpl.fromConfig( + return BuildConfigImpl.fromConfig( Config.fromConfigFileContents( fileContents: buildConfigFile.readAsStringSync(), ), ); - ResourceIdentifiers? resources; - if (resourceIdentifierUri != null) { - resources = - ResourceIdentifiers.fromFile(resourceIdentifierUri!.toFilePath()); - } - - final buildOutput = BuildOutputImpl.readFromFile(file: config.outputFile); - if (buildOutput == null) { - throw ArgumentError( - 'Expected to find the build output at ${config.outputFile}'); - } - return LinkConfigImpl( - this, - assets: buildOutput.assetsForLinking[config.packageName] ?? [], - buildConfig: config, - resourceIdentifiers: resources, - ); } Map toJson() => { if (resourceIdentifierUri != null) resourceIdentifierKey: resourceIdentifierUri!.toFilePath(), buildConfigKey: buildConfigUri.toFilePath(), + assetsKey: + AssetImpl.listToJson(assetsForLinking, _readBuildConfig().version), }; } From 561fcaff4c8aa34b25950c90bdc1b23284eedd55 Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 26 Mar 2024 21:17:46 +0100 Subject: [PATCH 100/187] Different classes for different results --- .../lib/native_assets_builder.dart | 3 + .../lib/src/build_runner/build_runner.dart | 85 +++---------------- .../lib/src/model/build_result.dart | 66 ++++++++++++++ .../lib/src/model/dry_run_result.dart | 14 +++ .../lib/src/model/link_result.dart | 11 +++ .../src/package_layout/package_layout.dart | 6 -- .../test/build_runner/build_planner_test.dart | 7 +- .../test/build_runner/helpers.dart | 9 +- 8 files changed, 116 insertions(+), 85 deletions(-) create mode 100644 pkgs/native_assets_builder/lib/src/model/build_result.dart create mode 100644 pkgs/native_assets_builder/lib/src/model/dry_run_result.dart create mode 100644 pkgs/native_assets_builder/lib/src/model/link_result.dart diff --git a/pkgs/native_assets_builder/lib/native_assets_builder.dart b/pkgs/native_assets_builder/lib/native_assets_builder.dart index 9dfa400af..bdd0b0881 100644 --- a/pkgs/native_assets_builder/lib/native_assets_builder.dart +++ b/pkgs/native_assets_builder/lib/native_assets_builder.dart @@ -3,5 +3,8 @@ // BSD-style license that can be found in the LICENSE file. export 'package:native_assets_builder/src/build_runner/build_runner.dart'; +export 'package:native_assets_builder/src/model/build_result.dart' + show BuildResult; +export 'package:native_assets_builder/src/model/dry_run_result.dart'; export 'package:native_assets_builder/src/model/kernel_assets.dart'; export 'package:native_assets_builder/src/package_layout/package_layout.dart'; diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 03d203966..896dce4e6 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -9,6 +9,9 @@ import 'package:logging/logging.dart'; import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:package_config/package_config.dart'; +import '../model/build_result.dart'; +import '../model/dry_run_result.dart'; +import '../model/link_result.dart'; import '../package_layout/package_layout.dart'; import '../utils/run_process.dart'; import 'build_planner.dart'; @@ -63,7 +66,7 @@ class NativeAssetsBuildRunner { supportedAssetTypes: supportedAssetTypes, ); - Future link({ + Future link({ required Target target, required Uri workingDirectory, required BuildModeImpl buildMode, @@ -92,9 +95,9 @@ class NativeAssetsBuildRunner { resourceIdentifiers: resourceIdentifiers, supportedAssetTypes: supportedAssetTypes, previousBuildResult: buildResult, - ); + ).then(LinkResult.new); - Future _run({ + Future _run({ required PipelineStep step, required LinkModePreferenceImpl linkModePreference, required Target target, @@ -114,7 +117,7 @@ class NativeAssetsBuildRunner { final packagesWithBuild = await packageLayout.packagesWithAssets(step); final (buildPlan, packageGraph, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName); - final buildResult = _BuildResultImpl._failure(); + final buildResult = BuildResultImpl.failure(); if (!planSuccess) { return buildResult; } @@ -176,7 +179,7 @@ class NativeAssetsBuildRunner { /// /// If provided, only native assets of all transitive dependencies of /// [runPackageName] are built. - Future dryRun({ + Future dryRun({ required LinkModePreferenceImpl linkModePreference, required OSImpl targetOS, required Uri workingDirectory, @@ -186,15 +189,16 @@ class NativeAssetsBuildRunner { Iterable? supportedAssetTypes, }) async { packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); - final packagesWithBuild = await packageLayout.packagesWithNativeAssets; + final packagesWithBuild = + await packageLayout.packagesWithAssets(PipelineStep.build); final (buildPlan, _, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName, ); - final buildResult = _BuildResultImpl._failure(); + final buildResult = BuildResultImpl.failure(); if (!planSuccess) { - return buildResult; + return DryRunResult(buildResult); } var success = true; for (final package in buildPlan) { @@ -235,7 +239,7 @@ class NativeAssetsBuildRunner { } success &= packageSuccess; } - return buildResult.withSuccess(success); + return DryRunResult(buildResult.withSuccess(success)); } Future<_PackageBuildRecord> _buildPackageCached( @@ -499,71 +503,8 @@ ${config.outputName} contained a format error. typedef _PackageBuildRecord = (BuildOutputImpl, bool success); -/// The result from a [NativeAssetsBuildRunner.build] or -/// [NativeAssetsBuildRunner.link]. -abstract class BuildResult { - /// All the files used for building the native assets of all packages. - /// - /// This aggregated list can be used to determine whether the - /// [NativeAssetsBuildRunner] needs to be invoked again. The - /// [NativeAssetsBuildRunner] determines per package with native assets - /// if it needs to run the build again. - List get dependencies; - - bool get success; - - List get assets; - - Map> get assetsForLinking; -} - -final class _BuildResultImpl implements BuildResult { - @override - final List assets; - - @override - final Map> assetsForLinking; - - @override - final List dependencies; - - @override - final bool success; - - _BuildResultImpl._({ - required this.assets, - required this.assetsForLinking, - required this.dependencies, - required this.success, - }); - - _BuildResultImpl._failure() - : this._( - assets: [], - assetsForLinking: {}, - dependencies: [], - success: false, - ); - - void add(BuildOutputImpl buildOutput) { - assets.addAll(buildOutput.assets); - assetsForLinking.addAll(buildOutput.assetsForLinking); - dependencies.addAll(buildOutput.dependencies); - dependencies.sort(_uriCompare); - } - - BuildResult withSuccess(bool success) => _BuildResultImpl._( - assets: assets, - assetsForLinking: assetsForLinking, - dependencies: dependencies, - success: success, - ); -} - extension on DateTime { DateTime roundDownToSeconds() => DateTime.fromMillisecondsSinceEpoch(millisecondsSinceEpoch - millisecondsSinceEpoch % const Duration(seconds: 1).inMilliseconds); } - -int _uriCompare(Uri u1, Uri u2) => u1.toString().compareTo(u2.toString()); diff --git a/pkgs/native_assets_builder/lib/src/model/build_result.dart b/pkgs/native_assets_builder/lib/src/model/build_result.dart new file mode 100644 index 000000000..c111fc094 --- /dev/null +++ b/pkgs/native_assets_builder/lib/src/model/build_result.dart @@ -0,0 +1,66 @@ +import 'package:native_assets_cli/native_assets_cli_internal.dart'; + +import '../build_runner/build_runner.dart'; + +abstract class BuildResult { + List get dependencies; + + bool get success; + + List get assets; + + Map> get assetsForLinking; +} + +/// The result from a [NativeAssetsBuildRunner.build] or +/// [NativeAssetsBuildRunner.link]. +final class BuildResultImpl implements BuildResult { + /// All the files used for building the native assets of all packages. + /// + /// This aggregated list can be used to determine whether the + /// [NativeAssetsBuildRunner] needs to be invoked again. The + /// [NativeAssetsBuildRunner] determines per package with native assets + /// if it needs to run the build again. + @override + final List assets; + + @override + final Map> assetsForLinking; + + @override + final List dependencies; + + @override + final bool success; + + BuildResultImpl._({ + required this.assets, + required this.assetsForLinking, + required this.dependencies, + required this.success, + }); + + BuildResultImpl.failure() + : this._( + assets: [], + assetsForLinking: {}, + dependencies: [], + success: false, + ); + + void add(BuildOutputImpl buildOutput) { + assets.addAll(buildOutput.assets); + assetsForLinking.addAll(buildOutput.assetsForLinking); + dependencies.addAll(buildOutput.dependencies); + dependencies.sort(_uriCompare); + } + + BuildResultImpl withSuccess(bool success) => BuildResultImpl._( + assets: assets, + assetsForLinking: assetsForLinking, + dependencies: dependencies, + success: success, + ); +} + +int _uriCompare(Uri u1, Uri u2) => u1.toString().compareTo(u2.toString()); diff --git a/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart b/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart new file mode 100644 index 000000000..0f4888cca --- /dev/null +++ b/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart @@ -0,0 +1,14 @@ +import 'package:native_assets_cli/native_assets_cli_internal.dart'; + +import '../../native_assets_builder.dart'; +import 'build_result.dart'; + +extension type DryRunResult(BuildResultImpl _buildResultImpl) { + /// The native assets for all [Target]s for the dry run. + List get assets => _buildResultImpl.assets; + + /// Whether all builds completed without errors. + /// + /// All error messages are streamed to [NativeAssetsBuildRunner.logger]. + bool get success => _buildResultImpl.success; +} diff --git a/pkgs/native_assets_builder/lib/src/model/link_result.dart b/pkgs/native_assets_builder/lib/src/model/link_result.dart new file mode 100644 index 000000000..fe3e158cf --- /dev/null +++ b/pkgs/native_assets_builder/lib/src/model/link_result.dart @@ -0,0 +1,11 @@ +import 'package:native_assets_cli/native_assets_cli_internal.dart'; + +import 'build_result.dart'; + +extension type LinkResult(BuildResultImpl _buildResultImpl) { + List get assets => _buildResultImpl.assets; + + List get dependencies => _buildResultImpl.dependencies; + + bool get success => _buildResultImpl.success; +} diff --git a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart index 472578363..9cf647b64 100644 --- a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart +++ b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart @@ -107,10 +107,4 @@ class PackageLayout { } return result; } - - late final Future> packagesWithNativeAssets = - packagesWithAssets(PipelineStep.build); - - late final Future> packagesWithNativeLinkAssets = - packagesWithAssets(PipelineStep.link); } diff --git a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart index 9669c17da..f77545046 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart @@ -6,6 +6,7 @@ import 'dart:io'; import 'package:native_assets_builder/native_assets_builder.dart'; import 'package:native_assets_builder/src/build_runner/build_planner.dart'; +import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:test/test.dart'; import '../helpers.dart'; @@ -37,7 +38,7 @@ void main() async { final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = - await packageLayout.packagesWithNativeAssets; + await packageLayout.packagesWithAssets(PipelineStep.build); final planner = NativeAssetsBuildPlanner( packageGraph: graph, @@ -62,7 +63,7 @@ void main() async { final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = - await packageLayout.packagesWithNativeAssets; + await packageLayout.packagesWithAssets(PipelineStep.build); final nativeAssetsBuildPlanner = await NativeAssetsBuildPlanner.fromRootPackageRoot( rootPackageRoot: nativeAddUri, @@ -89,7 +90,7 @@ void main() async { final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = - await packageLayout.packagesWithNativeAssets; + await packageLayout.packagesWithAssets(PipelineStep.build); final nativeAssetsBuildPlanner = await NativeAssetsBuildPlanner.fromRootPackageRoot( rootPackageRoot: nativeAddUri, diff --git a/pkgs/native_assets_builder/test/build_runner/helpers.dart b/pkgs/native_assets_builder/test/build_runner/helpers.dart index e58acaf77..75217fcd3 100644 --- a/pkgs/native_assets_builder/test/build_runner/helpers.dart +++ b/pkgs/native_assets_builder/test/build_runner/helpers.dart @@ -8,6 +8,7 @@ import 'dart:io'; import 'package:file_testing/file_testing.dart'; import 'package:logging/logging.dart'; import 'package:native_assets_builder/native_assets_builder.dart'; +import 'package:native_assets_builder/src/model/link_result.dart'; import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:test/test.dart'; @@ -63,7 +64,7 @@ Future build( return result; }); -Future link( +Future link( Uri packageUri, Logger logger, Uri dartExecutable, { @@ -95,9 +96,9 @@ Future link( return result; }); -Future runWithLog( +Future runWithLog( List? capturedLogs, - Future Function() f, + Future Function() f, ) async { StreamSubscription? subscription; if (capturedLogs != null) { @@ -114,7 +115,7 @@ Future runWithLog( return result; } -Future dryRun( +Future dryRun( Uri packageUri, Logger logger, Uri dartExecutable, { From b193ce0d17a337a9c5962c3b01c6d04e607ed016 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 27 Mar 2024 10:44:42 +0100 Subject: [PATCH 101/187] Add new test --- .../lib/src/build_runner/build_runner.dart | 2 +- .../lib/src/model/build_result.dart | 18 ++++++- .../test/build_runner/link_test.dart | 33 ++++++++++++ .../complex_link/bin/simple_link.dart | 7 +++ .../test_data/complex_link/data_0.json | 0 .../test_data/complex_link/data_1.json | 0 .../test_data/complex_link/hook/build.dart | 22 ++++++++ .../test_data/complex_link/hook/link.dart | 14 +++++ .../test_data/complex_link/pubspec.yaml | 21 ++++++++ .../complex_link_helper/bin/simple_link.dart | 7 +++ .../complex_link_helper/data_helper_0.json | 0 .../complex_link_helper/data_helper_1.json | 0 .../complex_link_helper/data_helper_2.json | 0 .../complex_link_helper/data_helper_3.json | 0 .../complex_link_helper/hook/build.dart | 33 ++++++++++++ .../complex_link_helper/pubspec.yaml | 19 +++++++ .../test_data/manifest.yaml | 11 ++++ .../lib/src/api/link_config.dart | 2 +- .../lib/src/model/build_config.dart | 3 ++ .../lib/src/model/link_config.dart | 52 ++++++------------- 20 files changed, 205 insertions(+), 39 deletions(-) create mode 100644 pkgs/native_assets_builder/test_data/complex_link/bin/simple_link.dart create mode 100644 pkgs/native_assets_builder/test_data/complex_link/data_0.json create mode 100644 pkgs/native_assets_builder/test_data/complex_link/data_1.json create mode 100644 pkgs/native_assets_builder/test_data/complex_link/hook/build.dart create mode 100644 pkgs/native_assets_builder/test_data/complex_link/hook/link.dart create mode 100644 pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml create mode 100644 pkgs/native_assets_builder/test_data/complex_link_helper/bin/simple_link.dart create mode 100644 pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_0.json create mode 100644 pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_1.json create mode 100644 pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_2.json create mode 100644 pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_3.json create mode 100644 pkgs/native_assets_builder/test_data/complex_link_helper/hook/build.dart create mode 100644 pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 896dce4e6..dbb1a9348 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -146,7 +146,7 @@ class NativeAssetsBuildRunner { if (step == PipelineStep.link) { config = LinkConfigArgs( resourceIdentifierUri: resourceIdentifiers, - buildConfigUri: buildConfig.configFile, + buildConfig: buildConfig, assetsForLinking: previousBuildResult!.assetsForLinking[buildConfig.packageName] ?? [], diff --git a/pkgs/native_assets_builder/lib/src/model/build_result.dart b/pkgs/native_assets_builder/lib/src/model/build_result.dart index c111fc094..495b1df5a 100644 --- a/pkgs/native_assets_builder/lib/src/model/build_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/build_result.dart @@ -1,4 +1,5 @@ import 'package:native_assets_cli/native_assets_cli_internal.dart'; +import 'package:collection/collection.dart'; import '../build_runner/build_runner.dart'; @@ -50,7 +51,22 @@ final class BuildResultImpl implements BuildResult { void add(BuildOutputImpl buildOutput) { assets.addAll(buildOutput.assets); - assetsForLinking.addAll(buildOutput.assetsForLinking); + final mergedMaps = mergeMaps( + assetsForLinking, + buildOutput.assetsForLinking, + value: (assets1, assets2) { + if (assets1.any((asset) => assets2.contains(asset)) || + assets2.any((asset) => assets1.contains(asset))) { + throw ArgumentError( + 'Found assets with same ID in $assets1 and $assets2'); + } + return [ + ...assets1, + ...assets2, + ]; + }, + ); + assetsForLinking.addAll(mergedMaps); dependencies.addAll(buildOutput.dependencies); dependencies.sort(_uriCompare); } diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart index b6f9dad74..0a018d57f 100644 --- a/pkgs/native_assets_builder/test/build_runner/link_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -41,4 +41,37 @@ void main() async { }); }, ); + + test( + 'complex_link linking', + timeout: longTimeout, + () async { + await inTempDir((tempUri) async { + await copyTestProjects(targetUri: tempUri); + final packageUri = tempUri.resolve('complex_link/'); + + // First, run `pub get`, we need pub to resolve our dependencies. + await runPubGet( + workingDirectory: packageUri, + logger: logger, + ); + + final buildResult = await build( + packageUri, + logger, + dartExecutable, + ); + expect(buildResult.assets.length, 2); + + final linkResult = await link( + packageUri, + logger, + dartExecutable, + buildResult: buildResult, + ); + const assetsLeft = 2 + 2 - 1; + expect(linkResult.assets.length, assetsLeft); + }); + }, + ); } diff --git a/pkgs/native_assets_builder/test_data/complex_link/bin/simple_link.dart b/pkgs/native_assets_builder/test_data/complex_link/bin/simple_link.dart new file mode 100644 index 000000000..8adceb64b --- /dev/null +++ b/pkgs/native_assets_builder/test_data/complex_link/bin/simple_link.dart @@ -0,0 +1,7 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +void main() { + print('Tada!'); +} diff --git a/pkgs/native_assets_builder/test_data/complex_link/data_0.json b/pkgs/native_assets_builder/test_data/complex_link/data_0.json new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/native_assets_builder/test_data/complex_link/data_1.json b/pkgs/native_assets_builder/test_data/complex_link/data_1.json new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/native_assets_builder/test_data/complex_link/hook/build.dart b/pkgs/native_assets_builder/test_data/complex_link/hook/build.dart new file mode 100644 index 000000000..019ad0afa --- /dev/null +++ b/pkgs/native_assets_builder/test_data/complex_link/hook/build.dart @@ -0,0 +1,22 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:native_assets_cli/native_assets_cli.dart'; + +const packageName = 'complex_link'; + +void main(List args) async => build(args, (config, output) async { + output.addAssets( + List.generate( + 2, + (index) => DataAsset( + name: 'data_$index', + // TODO(mosuem): Simplify specifying files/file paths + file: config.packageRoot.resolve('data_$index.json'), + package: packageName, + ), + ), + linkInPackage: 'complex_link', + ); + }); diff --git a/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart b/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart new file mode 100644 index 000000000..ae945aa7a --- /dev/null +++ b/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart @@ -0,0 +1,14 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:native_assets_cli/native_assets_cli.dart'; + +void main(List args) async { + await link( + args, + (config, output) async => output.addAssets(shake(config.assets)), + ); +} + +List shake(List assets) => assets.skip(1).toList(); diff --git a/pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml new file mode 100644 index 000000000..7336ded54 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml @@ -0,0 +1,21 @@ +name: complex_link +description: Sums two numbers with native code. +version: 0.1.0 + +publish_to: none + +environment: + sdk: '>=3.0.0 <4.0.0' + +dependencies: + cli_config: ^0.2.0 + logging: ^1.1.1 + native_assets_cli: + path: ../../../native_assets_cli/ + complex_link_helper: + path: ../complex_link_helper/ + +dev_dependencies: + lints: ^3.0.0 + test: ^1.23.1 + path: ^1.9.0 diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/bin/simple_link.dart b/pkgs/native_assets_builder/test_data/complex_link_helper/bin/simple_link.dart new file mode 100644 index 000000000..8adceb64b --- /dev/null +++ b/pkgs/native_assets_builder/test_data/complex_link_helper/bin/simple_link.dart @@ -0,0 +1,7 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +void main() { + print('Tada!'); +} diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_0.json b/pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_0.json new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_1.json b/pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_1.json new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_2.json b/pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_2.json new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_3.json b/pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_3.json new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/hook/build.dart b/pkgs/native_assets_builder/test_data/complex_link_helper/hook/build.dart new file mode 100644 index 000000000..8b775a0ee --- /dev/null +++ b/pkgs/native_assets_builder/test_data/complex_link_helper/hook/build.dart @@ -0,0 +1,33 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:native_assets_cli/native_assets_cli.dart'; + +const packageName = 'complex_link_helper'; + +void main(List args) async => build(args, (config, output) async { + output.addAssets( + List.generate( + 2, + (index) => DataAsset( + name: 'data_helper_$index', + // TODO(mosuem): Simplify specifying files/file paths + file: config.packageRoot.resolve('data_helper_$index.json'), + package: packageName, + ), + ), + ); + output.addAssets( + List.generate( + 2, + (index) => DataAsset( + name: 'data_helper_${index + 2}', + // TODO(mosuem): Simplify specifying files/file paths + file: config.packageRoot.resolve('data_helper_${index + 2}.json'), + package: packageName, + ), + ), + linkInPackage: 'complex_link', + ); + }); diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml b/pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml new file mode 100644 index 000000000..d1ea1ab50 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml @@ -0,0 +1,19 @@ +name: complex_link_helper +description: Sums two numbers with native code. +version: 0.1.0 + +publish_to: none + +environment: + sdk: '>=3.0.0 <4.0.0' + +dependencies: + cli_config: ^0.2.0 + logging: ^1.1.1 + native_assets_cli: + path: ../../../native_assets_cli/ + +dev_dependencies: + lints: ^3.0.0 + test: ^1.23.1 + path: ^1.9.0 diff --git a/pkgs/native_assets_builder/test_data/manifest.yaml b/pkgs/native_assets_builder/test_data/manifest.yaml index bdf4a7686..841496e9f 100644 --- a/pkgs/native_assets_builder/test_data/manifest.yaml +++ b/pkgs/native_assets_builder/test_data/manifest.yaml @@ -44,3 +44,14 @@ - wrong_build_output/pubspec.yaml - wrong_namespace_asset/hook/build.dart - wrong_namespace_asset/pubspec.yaml +- complex_link/pubspec.yaml +- complex_link/hook/build.dart +- complex_link/hook/link.dart +- complex_link/data_0.json +- complex_link/data_1.json +- complex_link_helper/pubspec.yaml +- complex_link_helper/hook/build.dart +- complex_link_helper/data_helper_0.json +- complex_link_helper/data_helper_1.json +- complex_link_helper/data_helper_2.json +- complex_link_helper/data_helper_3.json diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index a2f3a49e6..72f1d3885 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -5,12 +5,12 @@ import 'dart:convert'; import 'dart:io'; import 'package:args/args.dart'; -import 'package:cli_config/cli_config.dart'; import 'package:pub_semver/pub_semver.dart'; import '../../native_assets_cli.dart'; import '../model/pipeline_config.dart'; import '../model/pipeline_step.dart'; +import '../utils/map.dart'; import 'asset.dart'; import 'build_config.dart'; import 'resources.dart'; diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index 2c498b80e..d242a5828 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -476,6 +476,9 @@ final class BuildConfigImpl extends PipelineConfigImpl implements BuildConfig { return result.sortOnKey(); } + static BuildConfigImpl fromJson(Map buildConfigJson) => + BuildConfigImpl.fromConfig(Config(fileParsed: buildConfigJson)); + Map toJson() { late Map cCompilerJson; if (!dryRun) { diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index f369933c4..1fb51915e 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -50,7 +50,8 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { packageRoot.resolve('hook/').resolve(PipelineStep.link.scriptName); @override - String toJsonString() => jsonEncode(_args.toJson()); + String toJsonString() => + const JsonEncoder.withIndent(' ').convert(_args.toJson()); @override Version get version => _buildConfig.version; @@ -70,7 +71,7 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { class LinkConfigArgs { final Uri? resourceIdentifierUri; - final Uri buildConfigUri; + final BuildConfigImpl buildConfig; final List assetsForLinking; static const resourceIdentifierKey = 'resource_identifiers'; @@ -79,60 +80,39 @@ class LinkConfigArgs { LinkConfigArgs({ required this.resourceIdentifierUri, - required this.buildConfigUri, + required this.buildConfig, required this.assetsForLinking, }); factory LinkConfigArgs.fromJson(Map linkConfigJson) { final resourcesPath = linkConfigJson[resourceIdentifierKey] as String?; - final buildConfigPath = linkConfigJson[buildConfigKey] as String?; + final buildConfigJson = + linkConfigJson[buildConfigKey] as Map; final assetList = linkConfigJson[assetsKey] as List?; - if (buildConfigPath == null || assetList == null) { - throw ArgumentError('Expected to find the build config and assetList in ' - '$linkConfigJson'); + if (assetList == null) { + throw ArgumentError('Expected to find the assetList in $linkConfigJson'); } return LinkConfigArgs( resourceIdentifierUri: resourcesPath != null ? Uri.file(resourcesPath) : null, - buildConfigUri: Uri.file(buildConfigPath), + buildConfig: BuildConfigImpl.fromJson(buildConfigJson), assetsForLinking: AssetImpl.listFromJson(assetList), ); } LinkConfigImpl toLinkConfig() => LinkConfigImpl( this, - buildConfig: _readBuildConfig(), - resourceIdentifiers: _readResources(), + buildConfig: buildConfig, + resourceIdentifiers: resourceIdentifierUri != null + ? ResourceIdentifiers.fromFile(resourceIdentifierUri!.toFilePath()) + : null, assets: assetsForLinking, ); - ResourceIdentifiers? _readResources() { - if (resourceIdentifierUri == null) { - return null; - } - return ResourceIdentifiers.fromFile(resourceIdentifierUri!.toFilePath()); - } - - BuildConfigImpl _readBuildConfig() { - final buildConfigFile = File(buildConfigUri.toFilePath()); - if (!buildConfigFile.existsSync()) { - throw UnsupportedError( - 'A link.dart script needs the build configuration to be executed. ' - 'The build configuration at ${buildConfigUri.toFilePath()} could not ' - 'be found.'); - } - return BuildConfigImpl.fromConfig( - Config.fromConfigFileContents( - fileContents: buildConfigFile.readAsStringSync(), - ), - ); - } - Map toJson() => { if (resourceIdentifierUri != null) resourceIdentifierKey: resourceIdentifierUri!.toFilePath(), - buildConfigKey: buildConfigUri.toFilePath(), - assetsKey: - AssetImpl.listToJson(assetsForLinking, _readBuildConfig().version), - }; + buildConfigKey: buildConfig.toJson(), + assetsKey: AssetImpl.listToJson(assetsForLinking, buildConfig.version), + }.sortOnKey(); } From 8e7de313199449d1abb5502757a9663a9d680203 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 27 Mar 2024 10:54:03 +0100 Subject: [PATCH 102/187] Fix analysis issues --- .../lib/src/model/build_result.dart | 2 +- pkgs/native_assets_builder/pubspec.yaml | 1 + .../lib/src/api/link_config.dart | 4 +-- .../lib/src/model/link_config.dart | 25 +++++++++++-------- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/model/build_result.dart b/pkgs/native_assets_builder/lib/src/model/build_result.dart index 495b1df5a..66e1df29e 100644 --- a/pkgs/native_assets_builder/lib/src/model/build_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/build_result.dart @@ -1,5 +1,5 @@ -import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:collection/collection.dart'; +import 'package:native_assets_cli/native_assets_cli_internal.dart'; import '../build_runner/build_runner.dart'; diff --git a/pkgs/native_assets_builder/pubspec.yaml b/pkgs/native_assets_builder/pubspec.yaml index d5611fbaa..7dd3ec07d 100644 --- a/pkgs/native_assets_builder/pubspec.yaml +++ b/pkgs/native_assets_builder/pubspec.yaml @@ -10,6 +10,7 @@ environment: sdk: '>=3.3.0 <4.0.0' dependencies: + collection: ^1.18.0 graphs: ^2.3.1 logging: ^1.2.0 # native_assets_cli: ^0.5.0 diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 72f1d3885..0dcde2de3 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -8,10 +8,8 @@ import 'package:args/args.dart'; import 'package:pub_semver/pub_semver.dart'; import '../../native_assets_cli.dart'; -import '../model/pipeline_config.dart'; -import '../model/pipeline_step.dart'; +import '../../native_assets_cli_internal.dart'; import '../utils/map.dart'; -import 'asset.dart'; import 'build_config.dart'; import 'resources.dart'; diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 1fb51915e..3dfb3de50 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -56,17 +56,8 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { @override Version get version => _buildConfig.version; - static LinkConfig fromArguments(List arguments) { - final argParser = ArgParser()..addOption('config'); - - final results = argParser.parse(arguments); - final linkConfigContents = - File(results['config'] as String).readAsStringSync(); - final linkConfigJson = - jsonDecode(linkConfigContents) as Map; - - return LinkConfigArgs.fromJson(linkConfigJson).toLinkConfig(); - } + static LinkConfig fromArguments(List arguments) => + LinkConfigArgs.fromArguments(arguments).toLinkConfig(); } class LinkConfigArgs { @@ -84,6 +75,18 @@ class LinkConfigArgs { required this.assetsForLinking, }); + factory LinkConfigArgs.fromArguments(List arguments) { + final argParser = ArgParser()..addOption('config'); + + final results = argParser.parse(arguments); + final linkConfigContents = + File(results['config'] as String).readAsStringSync(); + final linkConfigJson = + jsonDecode(linkConfigContents) as Map; + + return LinkConfigArgs.fromJson(linkConfigJson); + } + factory LinkConfigArgs.fromJson(Map linkConfigJson) { final resourcesPath = linkConfigJson[resourceIdentifierKey] as String?; final buildConfigJson = From 6670db5e024c02f6d2fbc1c3271b98108563d89b Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 27 Mar 2024 15:05:30 +0100 Subject: [PATCH 103/187] More changes as per review --- .../lib/src/build_runner/build_runner.dart | 4 +- .../lib/src/model/dry_run_result.dart | 2 +- .../lib/src/model/link_result.dart | 2 +- .../test/build_runner/helpers.dart | 2 +- .../{data => assets}/data_asset_link.json | 0 .../example/native_add_library/hook/link.dart | 32 ----- .../package_with_asset_treeshaking/.gitignore | 3 + .../CHANGELOG.md | 3 + .../package_with_asset_treeshaking/README.md | 2 + .../analysis_options.yaml | 30 +++++ .../bin/package_with_asset_treeshaking.dart | 6 + .../lib/package_with_asset_treeshaking.dart | 5 + .../pubspec.yaml | 24 ++++ .../example/package_with_assets/.gitignore | 7 + .../example/package_with_assets/CHANGELOG.md | 3 + .../example/package_with_assets/README.md | 39 ++++++ .../assets/unused_asset.json} | 0 .../assets/used_asset.json} | 0 .../package_with_assets/hook/link.dart | 32 +++++ .../lib/package_with_assets.dart | 7 + .../example/package_with_assets/pubspec.yaml | 21 +++ .../lib/native_assets_cli.dart | 3 +- .../lib/native_assets_cli_internal.dart | 4 +- pkgs/native_assets_cli/lib/src/api/build.dart | 2 +- .../lib/src/api/build_config.dart | 8 +- .../lib/src/api/build_output.dart | 8 ++ .../lib/src/api/data_asset.dart | 13 +- pkgs/native_assets_cli/lib/src/api/link.dart | 96 +++++--------- .../lib/src/api/link_config.dart | 25 ++-- .../lib/src/api/link_output.dart | 18 +-- .../lib/src/api/resource.dart | 21 +++ .../lib/src/model/build_config_CHANGELOG.md | 2 +- .../lib/src/model/build_output_CHANGELOG.md | 6 + .../lib/src/model/data_asset.dart | 25 +++- .../lib/src/model/link_config.dart | 9 +- .../lib/src/model/link_output.dart | 49 +++++++ .../resource_identifiers.dart} | 98 ++++++++++++-- .../test/api/resource_data.dart | 120 ++++++++++++++++++ .../test/api/resource_test.dart | 21 +++ .../test/api/resources_test.dart | 22 ---- .../test/model/asset_test.dart | 19 +-- .../test/model/build_output_test.dart | 12 +- .../test/model/resource_identifiers_test.dart | 31 +++++ 43 files changed, 646 insertions(+), 190 deletions(-) rename pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/{data => assets}/data_asset_link.json (100%) delete mode 100644 pkgs/native_assets_cli/example/native_add_library/hook/link.dart create mode 100644 pkgs/native_assets_cli/example/package_with_asset_treeshaking/.gitignore create mode 100644 pkgs/native_assets_cli/example/package_with_asset_treeshaking/CHANGELOG.md create mode 100644 pkgs/native_assets_cli/example/package_with_asset_treeshaking/README.md create mode 100644 pkgs/native_assets_cli/example/package_with_asset_treeshaking/analysis_options.yaml create mode 100644 pkgs/native_assets_cli/example/package_with_asset_treeshaking/bin/package_with_asset_treeshaking.dart create mode 100644 pkgs/native_assets_cli/example/package_with_asset_treeshaking/lib/package_with_asset_treeshaking.dart create mode 100644 pkgs/native_assets_cli/example/package_with_asset_treeshaking/pubspec.yaml create mode 100644 pkgs/native_assets_cli/example/package_with_assets/.gitignore create mode 100644 pkgs/native_assets_cli/example/package_with_assets/CHANGELOG.md create mode 100644 pkgs/native_assets_cli/example/package_with_assets/README.md rename pkgs/native_assets_cli/example/{native_add_library/data_asset_link.json => package_with_assets/assets/unused_asset.json} (100%) rename pkgs/native_assets_cli/example/{native_add_library/data_asset_build.json => package_with_assets/assets/used_asset.json} (100%) create mode 100644 pkgs/native_assets_cli/example/package_with_assets/hook/link.dart create mode 100644 pkgs/native_assets_cli/example/package_with_assets/lib/package_with_assets.dart create mode 100644 pkgs/native_assets_cli/example/package_with_assets/pubspec.yaml create mode 100644 pkgs/native_assets_cli/lib/src/api/resource.dart create mode 100644 pkgs/native_assets_cli/lib/src/model/link_output.dart rename pkgs/native_assets_cli/lib/src/{api/resources.dart => model/resource_identifiers.dart} (54%) create mode 100644 pkgs/native_assets_cli/test/api/resource_data.dart create mode 100644 pkgs/native_assets_cli/test/api/resource_test.dart delete mode 100644 pkgs/native_assets_cli/test/api/resources_test.dart create mode 100644 pkgs/native_assets_cli/test/model/resource_identifiers_test.dart diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index dbb1a9348..8dad57a2c 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -113,6 +113,8 @@ class NativeAssetsBuildRunner { Iterable? supportedAssetTypes, BuildResult? previousBuildResult, }) async { + assert(step == PipelineStep.link || previousBuildResult == null); + packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); final packagesWithBuild = await packageLayout.packagesWithAssets(step); final (buildPlan, packageGraph, planSuccess) = await _plannedPackages( @@ -457,7 +459,7 @@ ${config.outputName} contained a format error. }; } - bool validateAssetsPackage(Iterable assets, String packageName) { + bool validateAssetsPackage(Iterable assets, String packageName) { final invalidAssetIds = assets .map((a) => a.id) .where((n) => !n.startsWith('package:$packageName/')) diff --git a/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart b/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart index 0f4888cca..dbadb454a 100644 --- a/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart @@ -5,7 +5,7 @@ import 'build_result.dart'; extension type DryRunResult(BuildResultImpl _buildResultImpl) { /// The native assets for all [Target]s for the dry run. - List get assets => _buildResultImpl.assets; + List get assets => _buildResultImpl.assets; /// Whether all builds completed without errors. /// diff --git a/pkgs/native_assets_builder/lib/src/model/link_result.dart b/pkgs/native_assets_builder/lib/src/model/link_result.dart index fe3e158cf..cc5f45e2a 100644 --- a/pkgs/native_assets_builder/lib/src/model/link_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/link_result.dart @@ -3,7 +3,7 @@ import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'build_result.dart'; extension type LinkResult(BuildResultImpl _buildResultImpl) { - List get assets => _buildResultImpl.assets; + List get assets => _buildResultImpl.assets; List get dependencies => _buildResultImpl.dependencies; diff --git a/pkgs/native_assets_builder/test/build_runner/helpers.dart b/pkgs/native_assets_builder/test/build_runner/helpers.dart index 75217fcd3..6f7634b9f 100644 --- a/pkgs/native_assets_builder/test/build_runner/helpers.dart +++ b/pkgs/native_assets_builder/test/build_runner/helpers.dart @@ -139,7 +139,7 @@ Future dryRun( return result; }); -Future expectAssetsExist(List assets) async { +Future expectAssetsExist(List assets) async { for (final asset in assets) { expect(File.fromUri(asset.file!), exists); } diff --git a/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data/data_asset_link.json b/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/assets/data_asset_link.json similarity index 100% rename from pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/data/data_asset_link.json rename to pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/assets/data_asset_link.json diff --git a/pkgs/native_assets_cli/example/native_add_library/hook/link.dart b/pkgs/native_assets_cli/example/native_add_library/hook/link.dart deleted file mode 100644 index ab9163354..000000000 --- a/pkgs/native_assets_cli/example/native_add_library/hook/link.dart +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:native_assets_cli/native_assets_cli.dart'; -import 'package:path/path.dart' as p; - -const packageName = 'native_add_library'; -void main(List args) async { - await link(args, (config, output) async { - output.addAssets([ - ...AssetTreeshaker.shake( - config.assets, - config.resources, - ), - DataAsset( - name: 'data_asset_link', - package: packageName, - file: Uri.file(p.absolute('data_asset_link.json')), - ) - ]); - }); -} - -/// Filters out json files from the assets. -class AssetTreeshaker { - static List shake( - List assets, - List? resourceIdentifiers, - ) => - assets.where((asset) => !asset.id.endsWith('.json')).toList(); -} diff --git a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/.gitignore b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/.gitignore new file mode 100644 index 000000000..3a8579040 --- /dev/null +++ b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/.gitignore @@ -0,0 +1,3 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ diff --git a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/CHANGELOG.md b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/CHANGELOG.md new file mode 100644 index 000000000..effe43c82 --- /dev/null +++ b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/CHANGELOG.md @@ -0,0 +1,3 @@ +## 1.0.0 + +- Initial version. diff --git a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/README.md b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/README.md new file mode 100644 index 000000000..3816eca3a --- /dev/null +++ b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/README.md @@ -0,0 +1,2 @@ +A sample command-line application with an entrypoint in `bin/`, library code +in `lib/`, and example unit test in `test/`. diff --git a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/analysis_options.yaml b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/analysis_options.yaml new file mode 100644 index 000000000..dee8927aa --- /dev/null +++ b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/analysis_options.yaml @@ -0,0 +1,30 @@ +# This file configures the static analysis results for your project (errors, +# warnings, and lints). +# +# This enables the 'recommended' set of lints from `package:lints`. +# This set helps identify many issues that may lead to problems when running +# or consuming Dart code, and enforces writing Dart using a single, idiomatic +# style and format. +# +# If you want a smaller set of lints you can change this to specify +# 'package:lints/core.yaml'. These are just the most critical lints +# (the recommended set includes the core lints). +# The core lints are also what is used by pub.dev for scoring packages. + +include: package:lints/recommended.yaml + +# Uncomment the following section to specify additional rules. + +# linter: +# rules: +# - camel_case_types + +# analyzer: +# exclude: +# - path/to/excluded/files/** + +# For more information about the core and recommended set of lints, see +# https://dart.dev/go/core-lints + +# For additional information about configuring this file, see +# https://dart.dev/guides/language/analysis-options diff --git a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/bin/package_with_asset_treeshaking.dart b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/bin/package_with_asset_treeshaking.dart new file mode 100644 index 000000000..842885c32 --- /dev/null +++ b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/bin/package_with_asset_treeshaking.dart @@ -0,0 +1,6 @@ +import 'package:package_with_asset_treeshaking/package_with_asset_treeshaking.dart' + as package_with_asset_treeshaking; + +void main(List arguments) { + print('Hello world: ${package_with_asset_treeshaking.callOther()}!'); +} diff --git a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/lib/package_with_asset_treeshaking.dart b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/lib/package_with_asset_treeshaking.dart new file mode 100644 index 000000000..851538983 --- /dev/null +++ b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/lib/package_with_asset_treeshaking.dart @@ -0,0 +1,5 @@ +import 'package:package_with_assets/package_with_assets.dart'; + +String callOther() { + return someMethod(); +} diff --git a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/pubspec.yaml b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/pubspec.yaml new file mode 100644 index 000000000..d2fdd74dc --- /dev/null +++ b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/pubspec.yaml @@ -0,0 +1,24 @@ +publish_to: none + +name: package_with_asset_treeshaking +description: A sample command-line application. +version: 1.0.0 +# repository: https://github.com/my_org/my_repo + +environment: + sdk: ^3.4.0-257.0.dev + +dependencies: + logging: ^1.1.1 + # native_assets_cli: ^0.5.0 + native_assets_cli: + path: ../../../native_assets_cli/ + # native_toolchain_c: ^0.4.0 + native_toolchain_c: + path: ../../../native_toolchain_c/ + package_with_assets: + path: ../package_with_assets/ + +dev_dependencies: + lints: ^3.0.0 + test: ^1.24.0 diff --git a/pkgs/native_assets_cli/example/package_with_assets/.gitignore b/pkgs/native_assets_cli/example/package_with_assets/.gitignore new file mode 100644 index 000000000..3cceda557 --- /dev/null +++ b/pkgs/native_assets_cli/example/package_with_assets/.gitignore @@ -0,0 +1,7 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ + +# Avoid committing pubspec.lock for library packages; see +# https://dart.dev/guides/libraries/private-files#pubspeclock. +pubspec.lock diff --git a/pkgs/native_assets_cli/example/package_with_assets/CHANGELOG.md b/pkgs/native_assets_cli/example/package_with_assets/CHANGELOG.md new file mode 100644 index 000000000..effe43c82 --- /dev/null +++ b/pkgs/native_assets_cli/example/package_with_assets/CHANGELOG.md @@ -0,0 +1,3 @@ +## 1.0.0 + +- Initial version. diff --git a/pkgs/native_assets_cli/example/package_with_assets/README.md b/pkgs/native_assets_cli/example/package_with_assets/README.md new file mode 100644 index 000000000..8b55e735b --- /dev/null +++ b/pkgs/native_assets_cli/example/package_with_assets/README.md @@ -0,0 +1,39 @@ + + +TODO: Put a short description of the package here that helps potential users +know whether this package might be useful for them. + +## Features + +TODO: List what your package can do. Maybe include images, gifs, or videos. + +## Getting started + +TODO: List prerequisites and provide or point to information on how to +start using the package. + +## Usage + +TODO: Include short and useful examples for package users. Add longer examples +to `/example` folder. + +```dart +const like = 'sample'; +``` + +## Additional information + +TODO: Tell users more about the package: where to find more information, how to +contribute to the package, how to file issues, what response they can expect +from the package authors, and more. diff --git a/pkgs/native_assets_cli/example/native_add_library/data_asset_link.json b/pkgs/native_assets_cli/example/package_with_assets/assets/unused_asset.json similarity index 100% rename from pkgs/native_assets_cli/example/native_add_library/data_asset_link.json rename to pkgs/native_assets_cli/example/package_with_assets/assets/unused_asset.json diff --git a/pkgs/native_assets_cli/example/native_add_library/data_asset_build.json b/pkgs/native_assets_cli/example/package_with_assets/assets/used_asset.json similarity index 100% rename from pkgs/native_assets_cli/example/native_add_library/data_asset_build.json rename to pkgs/native_assets_cli/example/package_with_assets/assets/used_asset.json diff --git a/pkgs/native_assets_cli/example/package_with_assets/hook/link.dart b/pkgs/native_assets_cli/example/package_with_assets/hook/link.dart new file mode 100644 index 000000000..f25133039 --- /dev/null +++ b/pkgs/native_assets_cli/example/package_with_assets/hook/link.dart @@ -0,0 +1,32 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:native_assets_cli/native_assets_cli.dart'; + +void main(List args) async { + await link(args, (config, output) async { + final packageName = config.packageName; + final allAssets = [ + DataAsset( + package: packageName, + name: 'unused', + file: config.packageRoot.resolve('assets').resolve('unused_asset.json'), + ), + DataAsset( + package: packageName, + name: 'used', + file: config.packageRoot.resolve('assets').resolve('used_asset.json'), + ) + ]; + output.addAssets(shake(allAssets, config.resources)); + }); +} + +Iterable shake( + List allAssets, + List resources, +) => + allAssets.where( + (asset) => resources.any((resource) => resource.metadata == asset.id), + ); diff --git a/pkgs/native_assets_cli/example/package_with_assets/lib/package_with_assets.dart b/pkgs/native_assets_cli/example/package_with_assets/lib/package_with_assets.dart new file mode 100644 index 000000000..dd9c50e31 --- /dev/null +++ b/pkgs/native_assets_cli/example/package_with_assets/lib/package_with_assets.dart @@ -0,0 +1,7 @@ +import 'package:meta/meta.dart'; + +@ResourceIdentifier('used_asset') +String someMethod() => 'This is actually called'; + +@ResourceIdentifier('unused_asset') +String someOtherMethod() => 'This is not called'; diff --git a/pkgs/native_assets_cli/example/package_with_assets/pubspec.yaml b/pkgs/native_assets_cli/example/package_with_assets/pubspec.yaml new file mode 100644 index 000000000..6e86073d2 --- /dev/null +++ b/pkgs/native_assets_cli/example/package_with_assets/pubspec.yaml @@ -0,0 +1,21 @@ +publish_to: none + +name: package_with_assets +description: A starting point for Dart libraries or applications. +version: 1.0.0 +# repository: https://github.com/my_org/my_repo + +environment: + sdk: ^3.4.0-257.0.dev + +dependencies: + logging: ^1.1.1 + # native_assets_cli: ^0.5.0 + meta: ^1.12.0 + native_assets_cli: + path: ../../../native_assets_cli/ + # native_toolchain_c: ^0.4.0 + +dev_dependencies: + lints: ^3.0.0 + test: ^1.24.0 diff --git a/pkgs/native_assets_cli/lib/native_assets_cli.dart b/pkgs/native_assets_cli/lib/native_assets_cli.dart index 2dd842e14..ac2747b01 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli.dart @@ -24,7 +24,8 @@ export 'src/api/build_mode.dart' show BuildMode; export 'src/api/build_output.dart' show BuildOutput; export 'src/api/ios_sdk.dart' show IOSSdk; export 'src/api/link.dart'; -export 'src/api/link_config.dart' show LinkConfig, Resource; +export 'src/api/link_config.dart' show LinkConfig; export 'src/api/link_mode_preference.dart' show LinkModePreference; export 'src/api/link_output.dart' show LinkOutput; export 'src/api/os.dart' show OS; +export 'src/api/resource.dart'; diff --git a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart index e570eff1f..c5c47f8ca 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart @@ -19,7 +19,6 @@ library native_assets_cli_internal; export 'src/api/architecture.dart' show ArchitectureImpl; export 'src/api/asset.dart' show - Asset, AssetImpl, DataAssetImpl, DynamicLoadingBundledImpl, @@ -35,8 +34,9 @@ export 'src/api/build_output.dart' show BuildOutputImpl; export 'src/api/ios_sdk.dart' show IOSSdkImpl; export 'src/api/link_config.dart' show LinkConfigArgs, LinkConfigImpl; export 'src/api/link_mode_preference.dart' show LinkModePreferenceImpl; -export 'src/api/link_output.dart' show LinkOutput; +export 'src/api/link_output.dart' show LinkOutputImpl; export 'src/api/os.dart' show OSImpl; +export 'src/api/resource.dart'; export 'src/model/dependencies.dart'; export 'src/model/metadata.dart'; export 'src/model/pipeline_config.dart' show PipelineConfigImpl; diff --git a/pkgs/native_assets_cli/lib/src/api/build.dart b/pkgs/native_assets_cli/lib/src/api/build.dart index e4aa8d66c..f3d23a08d 100644 --- a/pkgs/native_assets_cli/lib/src/api/build.dart +++ b/pkgs/native_assets_cli/lib/src/api/build.dart @@ -89,7 +89,7 @@ Future build( List arguments, Future Function(BuildConfig config, BuildOutput output) builder, ) async { - final config = BuildConfig(arguments) as BuildConfigImpl; + final config = BuildConfigImpl.fromArguments(arguments); final output = BuildOutputImpl(); await builder(config, output); await output.writeToFile(config: config); diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index 9e59a98b6..fa04ee67b 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -39,13 +39,13 @@ abstract final class BuildConfig { /// placed. Uri get outputDirectory; - /// The name of the package the native assets are built for. + /// The name of the package the assets are built for. String get packageName; - /// The root of the package the native assets are built for. + /// The root of the package the assets are built for. /// - /// Often a package's native assets are built because a package is a - /// dependency of another. For this it is convenient to know the packageRoot. + /// Often a package's assets are built because a package is a dependency of + /// another. For this it is convenient to know the packageRoot. Uri get packageRoot; /// The architecture being compiled for. diff --git a/pkgs/native_assets_cli/lib/src/api/build_output.dart b/pkgs/native_assets_cli/lib/src/api/build_output.dart index 3dbfa2544..562278025 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_output.dart @@ -43,6 +43,14 @@ abstract final class BuildOutput { /// the dry run must be provided. Iterable get assets; + /// The assets produced by this build which should be linked. + /// + /// Every key in the map is a package name. These assets in the values are not + /// bundled with the application, but are sent to the linking script of the + /// package specified in the key, which can decide if they are bundled or not. + /// + /// In dry runs, the assets for all [Architecture]s for the [OS] specified in + /// the dry run must be provided. Map> get assetsForLinking; /// The files used by this build. diff --git a/pkgs/native_assets_cli/lib/src/api/data_asset.dart b/pkgs/native_assets_cli/lib/src/api/data_asset.dart index 6726cf583..4c9459d43 100644 --- a/pkgs/native_assets_cli/lib/src/api/data_asset.dart +++ b/pkgs/native_assets_cli/lib/src/api/data_asset.dart @@ -15,17 +15,24 @@ part of 'asset.dart'; abstract final class DataAsset implements Asset { /// Constructs a data asset. /// - /// The [id] of this asset is a uri `package:/` from [package] - /// and [name]. + /// The unique [id] of this asset is a uri `package:/` from + /// [package] and [name]. factory DataAsset({ required String package, required String name, required Uri file, }) => DataAssetImpl( - id: 'package:$package/$name', + name: name, + package: package, file: file, ); + /// The package which contains this asset. + String get package; + + /// The name of this asset, which must be unique for the package. + String get name; + static const String type = 'data'; } diff --git a/pkgs/native_assets_cli/lib/src/api/link.dart b/pkgs/native_assets_cli/lib/src/api/link.dart index 9ade76355..992d2c6dd 100644 --- a/pkgs/native_assets_cli/lib/src/api/link.dart +++ b/pkgs/native_assets_cli/lib/src/api/link.dart @@ -4,86 +4,52 @@ import '../../native_assets_cli_internal.dart'; import 'link_config.dart'; +import 'link_output.dart'; -/// Runs a native assets build. +/// Runs a native assets link. /// -/// Can build native assets which are not already available, or expose existing +/// Can link native assets which are not already available, or expose existing /// files. Each individual asset is assigned a unique asset ID. /// -/// Example using `package:native_toolchain_c`: +/// The linking script may receive assets from build scripts, which are accessed +/// through [LinkConfig.assets]. They will only be bundled with the final +/// application if included in the [LinkOutput]. /// -/// ```dart -/// import 'package:logging/logging.dart'; -/// import 'package:native_assets_cli/native_assets_cli.dart'; -/// import 'package:native_toolchain_c/native_toolchain_c.dart'; -/// -/// void main(List args) async { -/// await build(args, (config, output) async { -/// final packageName = config.packageName; -/// final cbuilder = CBuilder.library( -/// name: packageName, -/// assetName: '$packageName.dart', -/// sources: [ -/// 'src/$packageName.c', -/// ], -/// dartBuildFiles: ['hook/build.dart'], -/// ); -/// await cbuilder.run( -/// buildConfig: config, -/// buildOutput: output, -/// logger: Logger('') -/// ..level = Level.ALL -/// ..onRecord.listen((record) => print(record.message)), -/// ); -/// }); -/// } -/// ``` +/// As the linking runs after kernel compilation, you can use treeshaking +/// information provided through [LinkConfig.resources] to decide which assets +/// to include. /// -/// Example outputting assets manually: /// /// ```dart -/// import 'dart:io'; -/// /// import 'package:native_assets_cli/native_assets_cli.dart'; /// -/// const assetName = 'asset.txt'; -/// final packageAssetPath = Uri.file('data/$assetName'); -/// /// void main(List args) async { -/// await build(args, (config, output) async { -/// if (config.linkModePreference == LinkModePreference.static) { -/// // Simulate that this script only supports dynamic libraries. -/// throw UnsupportedError( -/// 'LinkModePreference.static is not supported.', -/// ); -/// } -/// +/// await link(args, (config, output) async { /// final packageName = config.packageName; -/// final assetPath = config.outputDirectory.resolve(assetName); -/// final assetSourcePath = config.packageRoot.resolveUri(packageAssetPath); -/// if (!config.dryRun) { -/// // Insert code that downloads or builds the asset to `assetPath`. -/// await File.fromUri(assetSourcePath).copy(assetPath.toFilePath()); -/// -/// output.addDependencies([ -/// assetSourcePath, -/// config.packageRoot.resolve('hook/build.dart'), -/// ]); -/// } -/// -/// output.addAsset( -/// // TODO: Change to DataAsset once the Dart/Flutter SDK can consume it. -/// NativeCodeAsset( +/// final root = config.packageRoot; +/// final allAssets = [ +/// DataAsset( /// package: packageName, -/// name: 'asset.txt', -/// file: assetPath, -/// linkMode: DynamicLoadingBundled(), -/// os: config.targetOS, -/// architecture: config.targetArchitecture, +/// name: 'unused', +/// file: root.resolve('assets').resolve('unused_asset.json'), /// ), -/// ); +/// DataAsset( +/// package: packageName, +/// name: 'used', +/// file: root.resolve('assets').resolve('used_asset.json'), +/// ) +/// ]; +/// output.addAssets(shake(allAssets, config.resources)); /// }); /// } +/// +/// Iterable shake( +/// List allAssets, +/// List resources, +/// ) => +/// allAssets.where( +/// (asset) => resources.any((resource) => resource.metadata == asset.id), +/// ); /// ``` Future link( List arguments, @@ -98,7 +64,7 @@ Future link( final buildOutputImpl = BuildOutputImpl( dependencies: Dependencies(builtAssetsFiles), ); - final linkoutput = LinkOutput(buildOutputImpl); + final linkoutput = LinkOutputImpl(); await builder(config, linkoutput); await buildOutputImpl.writeToFile(config: config); } diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 0dcde2de3..fe17f9e3a 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -9,9 +9,9 @@ import 'package:pub_semver/pub_semver.dart'; import '../../native_assets_cli.dart'; import '../../native_assets_cli_internal.dart'; +import '../model/resource_identifiers.dart'; import '../utils/map.dart'; import 'build_config.dart'; -import 'resources.dart'; part '../model/link_config.dart'; @@ -21,19 +21,19 @@ part '../model/link_config.dart'; /// to the build script, the [assets] from the build step, and the [resources] /// generated during the kernel compilation. abstract class LinkConfig { - Uri get configFile; - + /// The directory in which all output and intermediate artifacts should be + /// placed. Uri get outputDirectory; - String get outputName; - + /// The name of the package the assets are linked for. String get packageName; + /// The root of the package the assets are linked for. + /// + /// Often a package's assets are built because a package is a dependency of + /// another. For this it is convenient to know the packageRoot. Uri get packageRoot; - /// The URI of the `link.dart` script. - Uri get script; - /// The list of assets to be linked. These are the assets generated by a /// `build.dart` script destined for this packages `link.dart`. List get assets; @@ -41,16 +41,9 @@ abstract class LinkConfig { /// A collection of methods annotated with `@ResourceIdentifier`, which are /// called in the tree-shaken Dart code. This information can be used to /// dispose unused [assets]. - List? get resources; + List get resources; /// Generate the [LinkConfig] from the input arguments to the linking script. factory LinkConfig(List arguments) => LinkConfigImpl.fromArguments(arguments); } - -class Resource { - final String name; - final Object? metadata; - - Resource({required this.name, required this.metadata}); -} diff --git a/pkgs/native_assets_cli/lib/src/api/link_output.dart b/pkgs/native_assets_cli/lib/src/api/link_output.dart index c426bfd15..aed6a1530 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_output.dart @@ -4,34 +4,36 @@ import 'dart:io'; -import 'architecture.dart'; +import '../../native_assets_cli.dart'; +import '../model/dependencies.dart'; import 'asset.dart'; import 'build_output.dart'; -import 'os.dart'; -extension type LinkOutput(BuildOutputImpl _buildOutput) { +part '../model/link_output.dart'; + +abstract class LinkOutput { /// Start time for the link of this output. /// /// The [timestamp] is rounded down to whole seconds, because /// [File.lastModified] is rounded to whole seconds and caching logic compares /// these timestamps. - DateTime get timestamp => _buildOutput.timestamp; + DateTime get timestamp; /// The assets produced by this link. /// /// In dry runs, the assets for all [Architecture]s for the [OS] specified in /// the dry run must be provided. - Iterable get assets => _buildOutput.assets; + Iterable get assets; /// The files used by this link. /// /// If any of the files in [dependencies] are modified after [timestamp], the /// link will be re-run. - Iterable get dependencies => _buildOutput.dependencies; + Iterable get dependencies; /// Adds [Asset]s produced by this link or dry run. - void addAsset(Asset asset) => _buildOutput.addAsset(asset); + void addAsset(Asset asset); /// Adds [Asset]s produced by this link or dry run. - void addAssets(Iterable assets) => _buildOutput.addAssets(assets); + void addAssets(Iterable assets); } diff --git a/pkgs/native_assets_cli/lib/src/api/resource.dart b/pkgs/native_assets_cli/lib/src/api/resource.dart new file mode 100644 index 000000000..0bb15b3ef --- /dev/null +++ b/pkgs/native_assets_cli/lib/src/api/resource.dart @@ -0,0 +1,21 @@ +class Resource { + final String name; + final Object? metadata; + + Resource({required this.name, required this.metadata}); + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + + return other is Resource && + other.name == name && + other.metadata == metadata; + } + + @override + int get hashCode => name.hashCode ^ metadata.hashCode; + + @override + String toString() => 'Resource(name: $name, metadata: $metadata)'; +} diff --git a/pkgs/native_assets_cli/lib/src/model/build_config_CHANGELOG.md b/pkgs/native_assets_cli/lib/src/model/build_config_CHANGELOG.md index 106959229..4c571dba1 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config_CHANGELOG.md +++ b/pkgs/native_assets_cli/lib/src/model/build_config_CHANGELOG.md @@ -1,6 +1,6 @@ ## 1.3.0 -- Add key for assets to be linked. Backwards compatible, in earlier versions +- Rev version to know whether the Dart/Flutter SDK can consume `BuildOutput.assetsForLinking`. the key will not be read and the list of assets to be linked will be empty. ## 1.2.0 diff --git a/pkgs/native_assets_cli/lib/src/model/build_output_CHANGELOG.md b/pkgs/native_assets_cli/lib/src/model/build_output_CHANGELOG.md index 17cbf88c8..9e58c5c8d 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output_CHANGELOG.md +++ b/pkgs/native_assets_cli/lib/src/model/build_output_CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.3.0 + +- Add key for assets to be linked. + Backwards compatibility older build hooks: The key can be omitted. + Backwards compatibility older SDKs: These are ignored on older SDKs. + ## 1.2.0 - Changed default encoding to JSON. diff --git a/pkgs/native_assets_cli/lib/src/model/data_asset.dart b/pkgs/native_assets_cli/lib/src/model/data_asset.dart index 3de286b8f..a6efc19d8 100644 --- a/pkgs/native_assets_cli/lib/src/model/data_asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/data_asset.dart @@ -9,16 +9,24 @@ final class DataAssetImpl implements DataAsset, AssetImpl { final Uri file; @override - final String id; + final String name; + + @override + final String package; + + @override + String get id => ''; DataAssetImpl({ required this.file, - required this.id, + required this.name, + required this.package, }); factory DataAssetImpl.fromJson(Map jsonMap) => DataAssetImpl( - id: as(jsonMap[_idKey]), + name: as(jsonMap[_nameKey]), + package: as(jsonMap[_packageKey]), file: Uri(path: as(jsonMap[_fileKey])), ); @@ -27,24 +35,27 @@ final class DataAssetImpl implements DataAsset, AssetImpl { if (other is! DataAssetImpl) { return false; } - return other.id == id && other.file == file; + return other.package == package && other.file == file && other.name == name; } @override int get hashCode => Object.hash( - id, + package, + name, file, ); @override Map toJson(Version version) => { - _idKey: id, + _nameKey: name, + _packageKey: package, _fileKey: file.toFilePath(), typeKey: DataAsset.type, }..sortOnKey(); static const typeKey = 'type'; - static const _idKey = 'id'; + static const _nameKey = 'name'; + static const _packageKey = 'package'; static const _fileKey = 'file'; @override diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 3dfb3de50..e5bafd256 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -26,9 +26,7 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { required BuildConfigImpl buildConfig, required ResourceIdentifiers? resourceIdentifiers, }) : _buildConfig = buildConfig, - resources = (resourceIdentifiers?.identifiers ?? []) - .map((e) => Resource(name: e.name, metadata: e.id)) - .toList(); + resources = fromIdentifiers(resourceIdentifiers); @override Uri get configFile => outputDirectory.resolve('../link_config.json'); @@ -60,6 +58,11 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { LinkConfigArgs.fromArguments(arguments).toLinkConfig(); } +List fromIdentifiers(ResourceIdentifiers? resourceIdentifiers) => + (resourceIdentifiers?.identifiers ?? []) + .map((e) => Resource(name: e.name, metadata: e.id)) + .toList(); + class LinkConfigArgs { final Uri? resourceIdentifierUri; final BuildConfigImpl buildConfig; diff --git a/pkgs/native_assets_cli/lib/src/model/link_output.dart b/pkgs/native_assets_cli/lib/src/model/link_output.dart new file mode 100644 index 000000000..26bb3c6f0 --- /dev/null +++ b/pkgs/native_assets_cli/lib/src/model/link_output.dart @@ -0,0 +1,49 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +part of '../api/link_output.dart'; + +class LinkOutputImpl implements LinkOutput { + final BuildOutputImpl _buildOutput; + + LinkOutputImpl({ + DateTime? timestamp, + List? assets, + Dependencies? dependencies, + }) : _buildOutput = BuildOutputImpl( + timestamp: timestamp, + assets: assets, + dependencies: dependencies, + ); + + /// Start time for the link of this output. + /// + /// The [timestamp] is rounded down to whole seconds, because + /// [File.lastModified] is rounded to whole seconds and caching logic compares + /// these timestamps. + @override + DateTime get timestamp => _buildOutput.timestamp; + + /// The assets produced by this link. + /// + /// In dry runs, the assets for all [Architecture]s for the [OS] specified in + /// the dry run must be provided. + @override + Iterable get assets => _buildOutput.assets; + + /// The files used by this link. + /// + /// If any of the files in [dependencies] are modified after [timestamp], the + /// link will be re-run. + @override + Iterable get dependencies => _buildOutput.dependencies; + + /// Adds [Asset]s produced by this link or dry run. + @override + void addAsset(Asset asset) => _buildOutput.addAsset(asset); + + /// Adds [Asset]s produced by this link or dry run. + @override + void addAssets(Iterable assets) => _buildOutput.addAssets(assets); +} diff --git a/pkgs/native_assets_cli/lib/src/api/resources.dart b/pkgs/native_assets_cli/lib/src/model/resource_identifiers.dart similarity index 54% rename from pkgs/native_assets_cli/lib/src/api/resources.dart rename to pkgs/native_assets_cli/lib/src/model/resource_identifiers.dart index 1678994c6..7926142b6 100644 --- a/pkgs/native_assets_cli/lib/src/api/resources.dart +++ b/pkgs/native_assets_cli/lib/src/model/resource_identifiers.dart @@ -5,6 +5,8 @@ import 'dart:convert'; import 'dart:io'; +import 'package:collection/collection.dart'; + class ResourceIdentifiers { final List identifiers; @@ -23,6 +25,33 @@ class ResourceIdentifiers { .map(Identifier.fromJson) .toList()); } + + factory ResourceIdentifiers.fromJson(Map map) => + ResourceIdentifiers( + identifiers: List.from((map['identifiers'] as List?) + ?.whereType>() + .map(Identifier.fromJson) ?? + []), + ); + + Map toJson() => { + 'identifiers': identifiers.map((x) => x.toJson()).toList(), + }; + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + final listEquals = const DeepCollectionEquality().equals; + + return other is ResourceIdentifiers && + listEquals(other.identifiers, identifiers); + } + + @override + int get hashCode => identifiers.hashCode; + + @override + String toString() => 'ResourceIdentifiers(identifiers: $identifiers)'; } class Identifier { @@ -61,6 +90,27 @@ class Identifier { .map((e) => e as Map) .map(ResourceFile.fromJson)), ); + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + final listEquals = const DeepCollectionEquality().equals; + + return other is Identifier && + other.name == name && + other.id == id && + other.uri == uri && + other.nonConstant == nonConstant && + listEquals(other.files, files); + } + + @override + int get hashCode => + name.hashCode ^ + id.hashCode ^ + uri.hashCode ^ + nonConstant.hashCode ^ + files.hashCode; } class ResourceFile { @@ -76,13 +126,26 @@ class ResourceFile { factory ResourceFile.fromJson(Map map) => ResourceFile( part: map['part'] as int, - references: List.from((map['files'] as List) + references: List.from((map['references'] as List) .map((e) => e as Map) .map(ResourceReference.fromJson)), ); @override String toString() => 'ResourceFile(part: $part, references: $references)'; + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + final listEquals = const DeepCollectionEquality().equals; + + return other is ResourceFile && + other.part == part && + listEquals(other.references, references); + } + + @override + int get hashCode => part.hashCode ^ references.hashCode; } class ResourceReference { @@ -111,12 +174,29 @@ class ResourceReference { String toString() => '''ResourceReference(uri: $uri, line: $line, column: $column, arguments: $arguments)'''; - factory ResourceReference.fromJson(Map map) => - ResourceReference( - uri: map['uri'] as String, - line: map['line'] as int, - column: map['column'] as int, - arguments: - Map.from(map['arguments'] as Map), - ); + factory ResourceReference.fromJson(Map map) { + final submap = map['@'] as Map; + return ResourceReference( + uri: submap['uri'] as String, + line: submap['line'] as int, + column: submap['column'] as int, + arguments: Map.from(map)..remove('@'), + ); + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + final mapEquals = const DeepCollectionEquality().equals; + + return other is ResourceReference && + other.uri == uri && + other.line == line && + other.column == column && + mapEquals(other.arguments, arguments); + } + + @override + int get hashCode => + uri.hashCode ^ line.hashCode ^ column.hashCode ^ arguments.hashCode; } diff --git a/pkgs/native_assets_cli/test/api/resource_data.dart b/pkgs/native_assets_cli/test/api/resource_data.dart new file mode 100644 index 000000000..a0ab9dba4 --- /dev/null +++ b/pkgs/native_assets_cli/test/api/resource_data.dart @@ -0,0 +1,120 @@ +import 'package:native_assets_cli/src/model/resource_identifiers.dart'; + +const resourceFile = '''{ + "_comment": "Resources referenced by annotated resource identifiers", + "AppTag": "TBD", + "environment": { + "dart.tool.dart2js": false + }, + "identifiers": [] +}'''; + +final resourceIdentifiers = ResourceIdentifiers(identifiers: [ + Identifier( + name: 'methodName1', + id: 'someMetadata', + uri: Uri.file('path/to/file').toFilePath(), + nonConstant: true, + files: [ + ResourceFile(part: 1, references: [ + ResourceReference( + uri: Uri.file('path/to/reference').toFilePath(), + line: 2, + column: 4, + arguments: { + '1': 'Some positional argument', + }, + ), + ]), + ], + ), + Identifier( + name: 'methodName2', + id: 'someOtherMetadata', + uri: Uri.file('path/to/other/file').toFilePath(), + nonConstant: false, + files: [ + ResourceFile(part: 1, references: [ + ResourceReference( + uri: Uri.file('path/to/reference').toFilePath(), + line: 15, + column: 3, + arguments: { + 'namedIntParam': 1, + }, + ), + ]), + ResourceFile(part: 2, references: [ + ResourceReference( + uri: Uri.file('path/to/reference').toFilePath(), + line: 15, + column: 3, + arguments: { + 'namedIntParam': 2, + }, + ), + ]), + ], + ), +]); + +const resourceIdentifiersJson = ''' +{ + "identifiers": [ + { + "name": "methodName1", + "id": "someMetadata", + "uri": "path/to/file", + "nonConstant": true, + "files": [ + { + "part": 1, + "references": [ + { + "@": { + "uri": "path/to/reference", + "line": 2, + "column": 4 + }, + "1": "Some positional argument" + } + ] + } + ] + }, + { + "name": "methodName2", + "id": "someOtherMetadata", + "uri": "path/to/other/file", + "nonConstant": false, + "files": [ + { + "part": 1, + "references": [ + { + "@": { + "uri": "path/to/reference", + "line": 15, + "column": 3 + }, + "namedIntParam": 1 + } + ] + }, + { + "part": 2, + "references": [ + { + "@": { + "uri": "path/to/reference", + "line": 15, + "column": 3 + }, + "namedIntParam": 2 + } + ] + } + ] + } + ] +}'''; diff --git a/pkgs/native_assets_cli/test/api/resource_test.dart b/pkgs/native_assets_cli/test/api/resource_test.dart new file mode 100644 index 000000000..cb1a8dfc3 --- /dev/null +++ b/pkgs/native_assets_cli/test/api/resource_test.dart @@ -0,0 +1,21 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:native_assets_cli/native_assets_cli.dart'; +import 'package:native_assets_cli/src/api/link_config.dart'; +import 'package:test/test.dart'; + +import 'resource_data.dart'; + +void main() { + test('Parse resource identifiers', () { + expect( + fromIdentifiers(resourceIdentifiers), + [ + Resource(name: 'methodName1', metadata: 'someMetadata'), + Resource(name: 'methodName2', metadata: 'someOtherMetadata'), + ], + ); + }); +} diff --git a/pkgs/native_assets_cli/test/api/resources_test.dart b/pkgs/native_assets_cli/test/api/resources_test.dart deleted file mode 100644 index 37858e81a..000000000 --- a/pkgs/native_assets_cli/test/api/resources_test.dart +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:native_assets_cli/src/api/resources.dart'; -import 'package:test/test.dart'; - -void main() { - const resourceFile = '''{ - "_comment": "Resources referenced by annotated resource identifiers", - "AppTag": "TBD", - "environment": { - "dart.tool.dart2js": false - }, - "identifiers": [] -}'''; - test('empty resources parsing', () { - final resourceIdentifiers = - ResourceIdentifiers.fromFileContents(resourceFile); - expect(resourceIdentifiers.identifiers, isEmpty); - }); -} diff --git a/pkgs/native_assets_cli/test/model/asset_test.dart b/pkgs/native_assets_cli/test/model/asset_test.dart index fc66d8697..e6cffdad6 100644 --- a/pkgs/native_assets_cli/test/model/asset_test.dart +++ b/pkgs/native_assets_cli/test/model/asset_test.dart @@ -59,11 +59,13 @@ void main() { ]; final dataAssets = [ DataAssetImpl( - id: 'package:my_package/my_data_asset', + name: 'my_data_asset', + package: 'my_package', file: dataUri, ), DataAssetImpl( - id: 'package:my_package/my_data_asset2', + name: 'my_data_asset2', + package: 'my_package', file: data2Uri, ), ]; @@ -105,8 +107,7 @@ void main() { path: path_type: absolute uri: ${blaUri.toFilePath()} - target: windows_x64 - linkInPackage: ""'''; + target: windows_x64'''; final assetsJsonEncoding = ''' [ @@ -169,13 +170,15 @@ void main() { "type": "native_code" }, { - "id": "package:my_package/my_data_asset", - "file": "${dataUri.toFilePath()}", + "name": "my_data_asset", + "package": "my_package", + "file": "path/to/data.txt", "type": "data" }, { - "id": "package:my_package/my_data_asset2", - "file": "${data2Uri.toFilePath()}", + "name": "my_data_asset2", + "package": "my_package", + "file": "path/to/data.json", "type": "data" } ]'''; diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index f079734e7..c9bfbd107 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -143,14 +143,16 @@ version: 1.0.0'''; "assetsForLinking": { "my_package": [ { - "id": "package:my_package/data", + "name": "data", + "package": "my_package", "file": "path/to/data", "type": "data" } ], "my_package_2": [ { - "id": "package:my_package_2/data2", + "name": "data", + "package": "my_package", "file": "path/to/data2", "type": "data" } @@ -402,13 +404,15 @@ BuildOutputImpl getBuildOutput({bool withLinkedAssets = true}) { 'my_package': [ DataAssetImpl( file: Uri.file('path/to/data'), - id: 'package:my_package/data', + name: 'data', + package: 'my_package', ) ], 'my_package_2': [ DataAssetImpl( file: Uri.file('path/to/data2'), - id: 'package:my_package_2/data2', + name: 'data', + package: 'my_package', ) ] } diff --git a/pkgs/native_assets_cli/test/model/resource_identifiers_test.dart b/pkgs/native_assets_cli/test/model/resource_identifiers_test.dart new file mode 100644 index 000000000..7a753442c --- /dev/null +++ b/pkgs/native_assets_cli/test/model/resource_identifiers_test.dart @@ -0,0 +1,31 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:convert'; + +import 'package:native_assets_cli/src/model/resource_identifiers.dart'; +import 'package:test/test.dart'; + +import '../api/resource_data.dart'; + +void main() { + test('empty resources parsing', () { + final resourceIdentifiers = + ResourceIdentifiers.fromFileContents(resourceFile); + expect(resourceIdentifiers.identifiers, isEmpty); + }); + test('Serialize to JSON', () { + expect( + const JsonEncoder.withIndent(' ').convert(resourceIdentifiers), + resourceIdentifiersJson, + ); + }); + test('Deserialize from JSON', () { + expect( + ResourceIdentifiers.fromJson( + jsonDecode(resourceIdentifiersJson) as Map), + resourceIdentifiers, + ); + }); +} From 06bb6cad32a1cc7af988f7fe851c428a688cfe43 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 27 Mar 2024 15:07:57 +0100 Subject: [PATCH 104/187] Remove example --- .../bin/native_add_app/assets/data_asset_link.json | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/assets/data_asset_link.json diff --git a/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/assets/data_asset_link.json b/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/assets/data_asset_link.json deleted file mode 100644 index 1a7d134dd..000000000 --- a/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app/assets/data_asset_link.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "freddy": "mercury" -} From dcc81c5adab15a0fbaed189cdf636e942c175b6c Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 27 Mar 2024 15:28:39 +0100 Subject: [PATCH 105/187] Fix tests --- pkgs/native_assets_cli/lib/src/api/link.dart | 10 ++++------ pkgs/native_assets_cli/lib/src/api/link_output.dart | 1 + pkgs/native_assets_cli/lib/src/model/link_output.dart | 3 +++ 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/api/link.dart b/pkgs/native_assets_cli/lib/src/api/link.dart index 992d2c6dd..49f6c0149 100644 --- a/pkgs/native_assets_cli/lib/src/api/link.dart +++ b/pkgs/native_assets_cli/lib/src/api/link.dart @@ -61,10 +61,8 @@ Future link( // rerun if they change. final builtAssetsFiles = config.assets.map((asset) => asset.file).whereType().toList(); - final buildOutputImpl = BuildOutputImpl( - dependencies: Dependencies(builtAssetsFiles), - ); - final linkoutput = LinkOutputImpl(); - await builder(config, linkoutput); - await buildOutputImpl.writeToFile(config: config); + final linkOutput = + LinkOutputImpl(dependencies: Dependencies(builtAssetsFiles)); + await builder(config, linkOutput); + await linkOutput.writeToFile(config: config); } diff --git a/pkgs/native_assets_cli/lib/src/api/link_output.dart b/pkgs/native_assets_cli/lib/src/api/link_output.dart index aed6a1530..7f4f4e33a 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_output.dart @@ -8,6 +8,7 @@ import '../../native_assets_cli.dart'; import '../model/dependencies.dart'; import 'asset.dart'; import 'build_output.dart'; +import 'link_config.dart'; part '../model/link_output.dart'; diff --git a/pkgs/native_assets_cli/lib/src/model/link_output.dart b/pkgs/native_assets_cli/lib/src/model/link_output.dart index 26bb3c6f0..c2ebe5366 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_output.dart @@ -46,4 +46,7 @@ class LinkOutputImpl implements LinkOutput { /// Adds [Asset]s produced by this link or dry run. @override void addAssets(Iterable assets) => _buildOutput.addAssets(assets); + + Future writeToFile({required LinkConfigImpl config}) => + _buildOutput.writeToFile(config: config); } From 762c2d345fe34733784e855dea78e6505be8a1c8 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 27 Mar 2024 15:40:58 +0100 Subject: [PATCH 106/187] Fix workflow --- .github/workflows/native.yaml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml index 46eb052b6..39a45d453 100644 --- a/.github/workflows/native.yaml +++ b/.github/workflows/native.yaml @@ -82,6 +82,12 @@ jobs: - run: dart pub get -C test_data/simple_link/ if: ${{ matrix.package == 'native_assets_builder' }} + + - run: dart pub get -C test_data/complex_link/ + if: ${{ matrix.package == 'native_assets_builder' }} + + - run: dart pub get -C test_data/complex_link_helper/ + if: ${{ matrix.package == 'native_assets_builder' }} - run: dart pub get -C example/native_add_app/ if: ${{ matrix.package == 'native_assets_cli' }} @@ -92,6 +98,12 @@ jobs: - run: dart pub get -C example/use_dart_api/ if: ${{ matrix.package == 'native_assets_cli' }} + - run: dart pub get -C example/package_with_assets/ + if: ${{ matrix.package == 'native_assets_cli' }} + + - run: dart pub get -C example/package_with_asset_treeshaking/ + if: ${{ matrix.package == 'native_assets_cli' }} + - run: dart analyze --fatal-infos # Run on dev to ensure we're not depending on deprecated SDK things. @@ -125,6 +137,14 @@ jobs: working-directory: pkgs/${{ matrix.package }}/example/use_dart_api/ if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} + - run: dart --enable-experiment=native-assets build bin/package_with_asset_treeshaking.dart + working-directory: pkgs/${{ matrix.package }}/example/package_with_asset_treeshaking/ + if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} + + - run: ./package_with_asset_treeshaking.exe + working-directory: pkgs/${{ matrix.package }}/example/package_with_asset_treeshaking/bin/package_with_asset_treeshaking/ + if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} + - name: Install coverage run: dart pub global activate coverage if: ${{ matrix.sdk == 'stable' }} From ff7696b2ed8e5b5345d75047d3a826cef3b8532c Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 27 Mar 2024 21:54:31 +0100 Subject: [PATCH 107/187] Refactor `BuildResult` --- .../lib/src/build_runner/build_runner.dart | 13 ++-- .../lib/src/model/build_result.dart | 71 ------------------ .../lib/src/model/dry_run_result.dart | 7 +- .../lib/src/model/forge_result.dart | 73 +++++++++++++++++++ .../lib/src/model/link_result.dart | 10 +-- 5 files changed, 87 insertions(+), 87 deletions(-) create mode 100644 pkgs/native_assets_builder/lib/src/model/forge_result.dart diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 8dad57a2c..cb0b3c6e7 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -11,6 +11,7 @@ import 'package:package_config/package_config.dart'; import '../model/build_result.dart'; import '../model/dry_run_result.dart'; +import '../model/forge_result.dart'; import '../model/link_result.dart'; import '../package_layout/package_layout.dart'; import '../utils/run_process.dart'; @@ -95,9 +96,9 @@ class NativeAssetsBuildRunner { resourceIdentifiers: resourceIdentifiers, supportedAssetTypes: supportedAssetTypes, previousBuildResult: buildResult, - ).then(LinkResult.new); + ); - Future _run({ + Future _run({ required PipelineStep step, required LinkModePreferenceImpl linkModePreference, required Target target, @@ -119,7 +120,7 @@ class NativeAssetsBuildRunner { final packagesWithBuild = await packageLayout.packagesWithAssets(step); final (buildPlan, packageGraph, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName); - final buildResult = BuildResultImpl.failure(); + final buildResult = ForgeResult.failure(); if (!planSuccess) { return buildResult; } @@ -198,9 +199,9 @@ class NativeAssetsBuildRunner { packageLayout, runPackageName, ); - final buildResult = BuildResultImpl.failure(); + final buildResult = ForgeResult.failure(); if (!planSuccess) { - return DryRunResult(buildResult); + return buildResult; } var success = true; for (final package in buildPlan) { @@ -241,7 +242,7 @@ class NativeAssetsBuildRunner { } success &= packageSuccess; } - return DryRunResult(buildResult.withSuccess(success)); + return buildResult.withSuccess(success); } Future<_PackageBuildRecord> _buildPackageCached( diff --git a/pkgs/native_assets_builder/lib/src/model/build_result.dart b/pkgs/native_assets_builder/lib/src/model/build_result.dart index 66e1df29e..74dc1ea35 100644 --- a/pkgs/native_assets_builder/lib/src/model/build_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/build_result.dart @@ -1,8 +1,5 @@ -import 'package:collection/collection.dart'; import 'package:native_assets_cli/native_assets_cli_internal.dart'; -import '../build_runner/build_runner.dart'; - abstract class BuildResult { List get dependencies; @@ -12,71 +9,3 @@ abstract class BuildResult { Map> get assetsForLinking; } - -/// The result from a [NativeAssetsBuildRunner.build] or -/// [NativeAssetsBuildRunner.link]. -final class BuildResultImpl implements BuildResult { - /// All the files used for building the native assets of all packages. - /// - /// This aggregated list can be used to determine whether the - /// [NativeAssetsBuildRunner] needs to be invoked again. The - /// [NativeAssetsBuildRunner] determines per package with native assets - /// if it needs to run the build again. - @override - final List assets; - - @override - final Map> assetsForLinking; - - @override - final List dependencies; - - @override - final bool success; - - BuildResultImpl._({ - required this.assets, - required this.assetsForLinking, - required this.dependencies, - required this.success, - }); - - BuildResultImpl.failure() - : this._( - assets: [], - assetsForLinking: {}, - dependencies: [], - success: false, - ); - - void add(BuildOutputImpl buildOutput) { - assets.addAll(buildOutput.assets); - final mergedMaps = mergeMaps( - assetsForLinking, - buildOutput.assetsForLinking, - value: (assets1, assets2) { - if (assets1.any((asset) => assets2.contains(asset)) || - assets2.any((asset) => assets1.contains(asset))) { - throw ArgumentError( - 'Found assets with same ID in $assets1 and $assets2'); - } - return [ - ...assets1, - ...assets2, - ]; - }, - ); - assetsForLinking.addAll(mergedMaps); - dependencies.addAll(buildOutput.dependencies); - dependencies.sort(_uriCompare); - } - - BuildResultImpl withSuccess(bool success) => BuildResultImpl._( - assets: assets, - assetsForLinking: assetsForLinking, - dependencies: dependencies, - success: success, - ); -} - -int _uriCompare(Uri u1, Uri u2) => u1.toString().compareTo(u2.toString()); diff --git a/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart b/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart index dbadb454a..a6ca38dc4 100644 --- a/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart @@ -1,14 +1,13 @@ import 'package:native_assets_cli/native_assets_cli_internal.dart'; import '../../native_assets_builder.dart'; -import 'build_result.dart'; -extension type DryRunResult(BuildResultImpl _buildResultImpl) { +abstract interface class DryRunResult { /// The native assets for all [Target]s for the dry run. - List get assets => _buildResultImpl.assets; + List get assets; /// Whether all builds completed without errors. /// /// All error messages are streamed to [NativeAssetsBuildRunner.logger]. - bool get success => _buildResultImpl.success; + bool get success; } diff --git a/pkgs/native_assets_builder/lib/src/model/forge_result.dart b/pkgs/native_assets_builder/lib/src/model/forge_result.dart new file mode 100644 index 000000000..5823403de --- /dev/null +++ b/pkgs/native_assets_builder/lib/src/model/forge_result.dart @@ -0,0 +1,73 @@ +import 'package:collection/collection.dart'; +import 'package:native_assets_cli/native_assets_cli_internal.dart'; + +import '../../native_assets_builder.dart'; +import 'link_result.dart'; + +/// The result from a [NativeAssetsBuildRunner.build] or +/// [NativeAssetsBuildRunner.link]. +final class ForgeResult implements BuildResult, DryRunResult, LinkResult { + /// All the files used for building the native assets of all packages. + /// + /// This aggregated list can be used to determine whether the + /// [NativeAssetsBuildRunner] needs to be invoked again. The + /// [NativeAssetsBuildRunner] determines per package with native assets + /// if it needs to run the build again. + @override + final List assets; + + @override + final Map> assetsForLinking; + + @override + final List dependencies; + + @override + final bool success; + + ForgeResult._({ + required this.assets, + required this.assetsForLinking, + required this.dependencies, + required this.success, + }); + + ForgeResult.failure() + : this._( + assets: [], + assetsForLinking: {}, + dependencies: [], + success: false, + ); + + void add(BuildOutputImpl buildOutput) { + assets.addAll(buildOutput.assets); + final mergedMaps = mergeMaps( + assetsForLinking, + buildOutput.assetsForLinking, + value: (assets1, assets2) { + if (assets1.any((asset) => assets2.contains(asset)) || + assets2.any((asset) => assets1.contains(asset))) { + throw ArgumentError( + 'Found assets with same ID in $assets1 and $assets2'); + } + return [ + ...assets1, + ...assets2, + ]; + }, + ); + assetsForLinking.addAll(mergedMaps); + dependencies.addAll(buildOutput.dependencies); + dependencies.sort(_uriCompare); + } + + ForgeResult withSuccess(bool success) => ForgeResult._( + assets: assets, + assetsForLinking: assetsForLinking, + dependencies: dependencies, + success: success, + ); +} + +int _uriCompare(Uri u1, Uri u2) => u1.toString().compareTo(u2.toString()); diff --git a/pkgs/native_assets_builder/lib/src/model/link_result.dart b/pkgs/native_assets_builder/lib/src/model/link_result.dart index cc5f45e2a..da4c35e50 100644 --- a/pkgs/native_assets_builder/lib/src/model/link_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/link_result.dart @@ -1,11 +1,9 @@ import 'package:native_assets_cli/native_assets_cli_internal.dart'; -import 'build_result.dart'; +abstract interface class LinkResult { + List get assets; -extension type LinkResult(BuildResultImpl _buildResultImpl) { - List get assets => _buildResultImpl.assets; + List get dependencies; - List get dependencies => _buildResultImpl.dependencies; - - bool get success => _buildResultImpl.success; + bool get success; } From 3e1d50b4be01259a6fe3d8d4368beb7ab8aa21ac Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 27 Mar 2024 22:03:57 +0100 Subject: [PATCH 108/187] Rewire linkoutput --- .../lib/native_assets_cli.dart | 3 +- .../lib/native_assets_cli_internal.dart | 1 - .../lib/src/api/build_output.dart | 1 + pkgs/native_assets_cli/lib/src/api/link.dart | 7 +-- .../lib/src/api/link_output.dart | 12 +---- .../lib/src/model/build_output.dart | 2 +- .../lib/src/model/link_output.dart | 52 ------------------- 7 files changed, 9 insertions(+), 69 deletions(-) delete mode 100644 pkgs/native_assets_cli/lib/src/model/link_output.dart diff --git a/pkgs/native_assets_cli/lib/native_assets_cli.dart b/pkgs/native_assets_cli/lib/native_assets_cli.dart index ac2747b01..845ec357f 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli.dart @@ -21,11 +21,10 @@ export 'src/api/asset.dart' export 'src/api/build.dart'; export 'src/api/build_config.dart' show BuildConfig, CCompilerConfig; export 'src/api/build_mode.dart' show BuildMode; -export 'src/api/build_output.dart' show BuildOutput; +export 'src/api/build_output.dart' show BuildOutput, LinkOutput; export 'src/api/ios_sdk.dart' show IOSSdk; export 'src/api/link.dart'; export 'src/api/link_config.dart' show LinkConfig; export 'src/api/link_mode_preference.dart' show LinkModePreference; -export 'src/api/link_output.dart' show LinkOutput; export 'src/api/os.dart' show OS; export 'src/api/resource.dart'; diff --git a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart index c5c47f8ca..dd8620c48 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart @@ -34,7 +34,6 @@ export 'src/api/build_output.dart' show BuildOutputImpl; export 'src/api/ios_sdk.dart' show IOSSdkImpl; export 'src/api/link_config.dart' show LinkConfigArgs, LinkConfigImpl; export 'src/api/link_mode_preference.dart' show LinkModePreferenceImpl; -export 'src/api/link_output.dart' show LinkOutputImpl; export 'src/api/os.dart' show OSImpl; export 'src/api/resource.dart'; export 'src/model/dependencies.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/build_output.dart b/pkgs/native_assets_cli/lib/src/api/build_output.dart index 562278025..a2e2c677f 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_output.dart @@ -22,6 +22,7 @@ import 'build_config.dart'; import 'os.dart'; part '../model/build_output.dart'; +part 'link_output.dart'; /// The output of a build hook (`hook/build.dart`) invocation. /// diff --git a/pkgs/native_assets_cli/lib/src/api/link.dart b/pkgs/native_assets_cli/lib/src/api/link.dart index 49f6c0149..d31d8d7e7 100644 --- a/pkgs/native_assets_cli/lib/src/api/link.dart +++ b/pkgs/native_assets_cli/lib/src/api/link.dart @@ -3,8 +3,8 @@ // BSD-style license that can be found in the LICENSE file. import '../../native_assets_cli_internal.dart'; +import 'build_output.dart'; import 'link_config.dart'; -import 'link_output.dart'; /// Runs a native assets link. /// @@ -61,8 +61,9 @@ Future link( // rerun if they change. final builtAssetsFiles = config.assets.map((asset) => asset.file).whereType().toList(); - final linkOutput = - LinkOutputImpl(dependencies: Dependencies(builtAssetsFiles)); + final linkOutput = BuildOutputImpl( + dependencies: Dependencies(builtAssetsFiles), + ); await builder(config, linkOutput); await linkOutput.writeToFile(config: config); } diff --git a/pkgs/native_assets_cli/lib/src/api/link_output.dart b/pkgs/native_assets_cli/lib/src/api/link_output.dart index 7f4f4e33a..46a82f1c0 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_output.dart @@ -2,17 +2,9 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'dart:io'; +part of 'build_output.dart'; -import '../../native_assets_cli.dart'; -import '../model/dependencies.dart'; -import 'asset.dart'; -import 'build_output.dart'; -import 'link_config.dart'; - -part '../model/link_output.dart'; - -abstract class LinkOutput { +abstract final class LinkOutput { /// Start time for the link of this output. /// /// The [timestamp] is rounded down to whole seconds, because diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index ce963cbf4..239e36b8b 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -4,7 +4,7 @@ part of '../api/build_output.dart'; -final class BuildOutputImpl implements BuildOutput { +final class BuildOutputImpl implements BuildOutput, LinkOutput { @override final DateTime timestamp; diff --git a/pkgs/native_assets_cli/lib/src/model/link_output.dart b/pkgs/native_assets_cli/lib/src/model/link_output.dart deleted file mode 100644 index c2ebe5366..000000000 --- a/pkgs/native_assets_cli/lib/src/model/link_output.dart +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -part of '../api/link_output.dart'; - -class LinkOutputImpl implements LinkOutput { - final BuildOutputImpl _buildOutput; - - LinkOutputImpl({ - DateTime? timestamp, - List? assets, - Dependencies? dependencies, - }) : _buildOutput = BuildOutputImpl( - timestamp: timestamp, - assets: assets, - dependencies: dependencies, - ); - - /// Start time for the link of this output. - /// - /// The [timestamp] is rounded down to whole seconds, because - /// [File.lastModified] is rounded to whole seconds and caching logic compares - /// these timestamps. - @override - DateTime get timestamp => _buildOutput.timestamp; - - /// The assets produced by this link. - /// - /// In dry runs, the assets for all [Architecture]s for the [OS] specified in - /// the dry run must be provided. - @override - Iterable get assets => _buildOutput.assets; - - /// The files used by this link. - /// - /// If any of the files in [dependencies] are modified after [timestamp], the - /// link will be re-run. - @override - Iterable get dependencies => _buildOutput.dependencies; - - /// Adds [Asset]s produced by this link or dry run. - @override - void addAsset(Asset asset) => _buildOutput.addAsset(asset); - - /// Adds [Asset]s produced by this link or dry run. - @override - void addAssets(Iterable assets) => _buildOutput.addAssets(assets); - - Future writeToFile({required LinkConfigImpl config}) => - _buildOutput.writeToFile(config: config); -} From da9fda7a1379c27d4cf5a781e9e29b5cd510e5af Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 27 Mar 2024 22:09:46 +0100 Subject: [PATCH 109/187] Fix pubspecs of examples --- .../example/package_with_asset_treeshaking/pubspec.yaml | 2 +- pkgs/native_assets_cli/example/package_with_assets/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/pubspec.yaml b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/pubspec.yaml index d2fdd74dc..091a7e48a 100644 --- a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/pubspec.yaml +++ b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/pubspec.yaml @@ -6,7 +6,7 @@ version: 1.0.0 # repository: https://github.com/my_org/my_repo environment: - sdk: ^3.4.0-257.0.dev + sdk: ^3.0.0 dependencies: logging: ^1.1.1 diff --git a/pkgs/native_assets_cli/example/package_with_assets/pubspec.yaml b/pkgs/native_assets_cli/example/package_with_assets/pubspec.yaml index 6e86073d2..d043e1645 100644 --- a/pkgs/native_assets_cli/example/package_with_assets/pubspec.yaml +++ b/pkgs/native_assets_cli/example/package_with_assets/pubspec.yaml @@ -6,7 +6,7 @@ version: 1.0.0 # repository: https://github.com/my_org/my_repo environment: - sdk: ^3.4.0-257.0.dev + sdk: ^3.0.0 dependencies: logging: ^1.1.1 From b868be62c36b5d95a5486e9008e51649ef907c63 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 28 Mar 2024 08:52:19 +0100 Subject: [PATCH 110/187] Move examples --- pkgs/native_assets_cli/README.md | 2 +- pkgs/native_assets_cli/example/README.md | 13 +++---- .../native_assets_cli/example/build/README.md | 9 +++++ .../example/{ => build}/local_asset/README.md | 0 .../{ => build}/local_asset/data/asset.txt | 0 .../{ => build}/local_asset/hook/build.dart | 0 .../{ => build}/local_asset/pubspec.yaml | 4 +- .../{ => build}/native_add_app/README.md | 0 .../native_add_app/bin/native_add_app.dart | 0 .../{ => build}/native_add_app/pubspec.yaml | 2 +- .../test/native_add_library_test.dart | 0 .../{ => build}/native_add_library/README.md | 0 .../native_add_library/ffigen.yaml | 0 .../native_add_library/hook/build.dart | 0 .../lib/native_add_library.dart | 0 .../native_add_library/pubspec.yaml | 6 +-- .../src/native_add_library.c | 0 .../src/native_add_library.h | 0 .../test/native_add_library_test.dart | 0 .../{ => build}/use_dart_api/README.md | 0 .../{ => build}/use_dart_api/ffigen.yaml | 0 .../{ => build}/use_dart_api/hook/build.dart | 0 .../src/use_dart_api_bindings_generated.dart | 0 .../use_dart_api/lib/use_dart_api.dart | 0 .../{ => build}/use_dart_api/manifest.yaml | 0 .../{ => build}/use_dart_api/pubspec.yaml | 4 +- .../{ => build}/use_dart_api/src/dart_api.h | 0 .../use_dart_api/src/dart_api_dl.c | 0 .../use_dart_api/src/dart_api_dl.h | 0 .../use_dart_api/src/dart_embedder_api.h | 0 .../use_dart_api/src/dart_native_api.h | 0 .../use_dart_api/src/dart_tools_api.h | 0 .../use_dart_api/src/dart_version.h | 0 .../src/internal/dart_api_dl_impl.h | 0 .../use_dart_api/src/use_dart_api.c | 0 .../use_dart_api/src/use_dart_api.h | 0 .../use_dart_api/test/use_dart_api_test.dart | 0 pkgs/native_assets_cli/example/link/README.md | 9 +++++ .../app_with_asset_treeshaking}/.gitignore | 0 .../app_with_asset_treeshaking}/CHANGELOG.md | 0 .../analysis_options.yaml | 0 .../bin/app_with_asset_treeshaking.dart | 6 +++ .../lib/app_with_asset_treeshaking.dart} | 0 .../app_with_asset_treeshaking/pubspec.yaml | 17 ++++++++ .../{ => link}/package_with_assets/.gitignore | 0 .../package_with_assets/CHANGELOG.md | 0 .../assets/unused_asset.json | 0 .../assets/used_asset.json | 0 .../package_with_assets/hook/build.dart} | 12 +----- .../link/package_with_assets/hook/link.dart | 17 ++++++++ .../lib/package_with_assets.dart | 4 +- .../package_with_assets/pubspec.yaml | 2 +- .../package_with_asset_treeshaking/README.md | 2 - .../bin/package_with_asset_treeshaking.dart | 6 --- .../pubspec.yaml | 24 ------------ .../example/package_with_assets/README.md | 39 ------------------- .../lib/src/model/build_config.dart | 2 +- .../native_assets_cli/lib/src/utils/json.dart | 2 +- .../test/example/local_asset_test.dart | 2 +- .../test/example/native_add_library_test.dart | 2 +- pkgs/native_toolchain_c/README.md | 3 +- 61 files changed, 83 insertions(+), 106 deletions(-) create mode 100644 pkgs/native_assets_cli/example/build/README.md rename pkgs/native_assets_cli/example/{ => build}/local_asset/README.md (100%) rename pkgs/native_assets_cli/example/{ => build}/local_asset/data/asset.txt (100%) rename pkgs/native_assets_cli/example/{ => build}/local_asset/hook/build.dart (100%) rename pkgs/native_assets_cli/example/{ => build}/local_asset/pubspec.yaml (79%) rename pkgs/native_assets_cli/example/{ => build}/native_add_app/README.md (100%) rename pkgs/native_assets_cli/example/{ => build}/native_add_app/bin/native_add_app.dart (100%) rename pkgs/native_assets_cli/example/{ => build}/native_add_app/pubspec.yaml (87%) rename pkgs/native_assets_cli/example/{ => build}/native_add_app/test/native_add_library_test.dart (100%) rename pkgs/native_assets_cli/example/{ => build}/native_add_library/README.md (100%) rename pkgs/native_assets_cli/example/{ => build}/native_add_library/ffigen.yaml (100%) rename pkgs/native_assets_cli/example/{ => build}/native_add_library/hook/build.dart (100%) rename pkgs/native_assets_cli/example/{ => build}/native_add_library/lib/native_add_library.dart (100%) rename pkgs/native_assets_cli/example/{ => build}/native_add_library/pubspec.yaml (75%) rename pkgs/native_assets_cli/example/{ => build}/native_add_library/src/native_add_library.c (100%) rename pkgs/native_assets_cli/example/{ => build}/native_add_library/src/native_add_library.h (100%) rename pkgs/native_assets_cli/example/{ => build}/native_add_library/test/native_add_library_test.dart (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/README.md (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/ffigen.yaml (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/hook/build.dart (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/lib/src/use_dart_api_bindings_generated.dart (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/lib/use_dart_api.dart (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/manifest.yaml (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/pubspec.yaml (80%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/src/dart_api.h (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/src/dart_api_dl.c (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/src/dart_api_dl.h (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/src/dart_embedder_api.h (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/src/dart_native_api.h (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/src/dart_tools_api.h (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/src/dart_version.h (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/src/internal/dart_api_dl_impl.h (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/src/use_dart_api.c (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/src/use_dart_api.h (100%) rename pkgs/native_assets_cli/example/{ => build}/use_dart_api/test/use_dart_api_test.dart (100%) create mode 100644 pkgs/native_assets_cli/example/link/README.md rename pkgs/native_assets_cli/example/{package_with_asset_treeshaking => link/app_with_asset_treeshaking}/.gitignore (100%) rename pkgs/native_assets_cli/example/{package_with_asset_treeshaking => link/app_with_asset_treeshaking}/CHANGELOG.md (100%) rename pkgs/native_assets_cli/example/{package_with_asset_treeshaking => link/app_with_asset_treeshaking}/analysis_options.yaml (100%) create mode 100644 pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/bin/app_with_asset_treeshaking.dart rename pkgs/native_assets_cli/example/{package_with_asset_treeshaking/lib/package_with_asset_treeshaking.dart => link/app_with_asset_treeshaking/lib/app_with_asset_treeshaking.dart} (100%) create mode 100644 pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/pubspec.yaml rename pkgs/native_assets_cli/example/{ => link}/package_with_assets/.gitignore (100%) rename pkgs/native_assets_cli/example/{ => link}/package_with_assets/CHANGELOG.md (100%) rename pkgs/native_assets_cli/example/{ => link}/package_with_assets/assets/unused_asset.json (100%) rename pkgs/native_assets_cli/example/{ => link}/package_with_assets/assets/used_asset.json (100%) rename pkgs/native_assets_cli/example/{package_with_assets/hook/link.dart => link/package_with_assets/hook/build.dart} (70%) create mode 100644 pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart rename pkgs/native_assets_cli/example/{ => link}/package_with_assets/lib/package_with_assets.dart (51%) rename pkgs/native_assets_cli/example/{ => link}/package_with_assets/pubspec.yaml (90%) delete mode 100644 pkgs/native_assets_cli/example/package_with_asset_treeshaking/README.md delete mode 100644 pkgs/native_assets_cli/example/package_with_asset_treeshaking/bin/package_with_asset_treeshaking.dart delete mode 100644 pkgs/native_assets_cli/example/package_with_asset_treeshaking/pubspec.yaml delete mode 100644 pkgs/native_assets_cli/example/package_with_assets/README.md diff --git a/pkgs/native_assets_cli/README.md b/pkgs/native_assets_cli/README.md index 3f1eb41da..eefd10643 100644 --- a/pkgs/native_assets_cli/README.md +++ b/pkgs/native_assets_cli/README.md @@ -34,7 +34,7 @@ A typical layout of a package with native code is: to build/bundle with the Dart/Flutter SDK. This file uses the protocol specified in this package. -An example can be found in [example/](example/). +Example can be found in [example/build/](example/build/). ## Usage diff --git a/pkgs/native_assets_cli/example/README.md b/pkgs/native_assets_cli/example/README.md index 1be681f6c..1a75c763d 100644 --- a/pkgs/native_assets_cli/example/README.md +++ b/pkgs/native_assets_cli/example/README.md @@ -1,9 +1,6 @@ -The examples in this folder illustrate how native code is built and bundled -in Dart and Flutter apps. +These are examples for using the hooks defined in `package:native_assets_cli`. -* [native_add_app/](native_add_app/) has a dependency with C code. - This app should declare nothing special. Dart and Flutter should check - all dependencies for native code. -* [native_add_library/](native_add_library/) contains a library with C code. - When Dart code in this library or dependent on this library is invoked, the - C code must be built and bundled so that it can be used by the Dart code. +* [build/](build/) contains examples on how to use `build.dart` to build and + bundle code assets, such as C libraries, into Dart applications. +* [link/](link/) contains examples on how to treeshake unused assets from a Dart + application using the `link.dart` hook. \ No newline at end of file diff --git a/pkgs/native_assets_cli/example/build/README.md b/pkgs/native_assets_cli/example/build/README.md new file mode 100644 index 000000000..1be681f6c --- /dev/null +++ b/pkgs/native_assets_cli/example/build/README.md @@ -0,0 +1,9 @@ +The examples in this folder illustrate how native code is built and bundled +in Dart and Flutter apps. + +* [native_add_app/](native_add_app/) has a dependency with C code. + This app should declare nothing special. Dart and Flutter should check + all dependencies for native code. +* [native_add_library/](native_add_library/) contains a library with C code. + When Dart code in this library or dependent on this library is invoked, the + C code must be built and bundled so that it can be used by the Dart code. diff --git a/pkgs/native_assets_cli/example/local_asset/README.md b/pkgs/native_assets_cli/example/build/local_asset/README.md similarity index 100% rename from pkgs/native_assets_cli/example/local_asset/README.md rename to pkgs/native_assets_cli/example/build/local_asset/README.md diff --git a/pkgs/native_assets_cli/example/local_asset/data/asset.txt b/pkgs/native_assets_cli/example/build/local_asset/data/asset.txt similarity index 100% rename from pkgs/native_assets_cli/example/local_asset/data/asset.txt rename to pkgs/native_assets_cli/example/build/local_asset/data/asset.txt diff --git a/pkgs/native_assets_cli/example/local_asset/hook/build.dart b/pkgs/native_assets_cli/example/build/local_asset/hook/build.dart similarity index 100% rename from pkgs/native_assets_cli/example/local_asset/hook/build.dart rename to pkgs/native_assets_cli/example/build/local_asset/hook/build.dart diff --git a/pkgs/native_assets_cli/example/local_asset/pubspec.yaml b/pkgs/native_assets_cli/example/build/local_asset/pubspec.yaml similarity index 79% rename from pkgs/native_assets_cli/example/local_asset/pubspec.yaml rename to pkgs/native_assets_cli/example/build/local_asset/pubspec.yaml index 7d2ac7684..39cbaced4 100644 --- a/pkgs/native_assets_cli/example/local_asset/pubspec.yaml +++ b/pkgs/native_assets_cli/example/build/local_asset/pubspec.yaml @@ -3,7 +3,7 @@ publish_to: none name: local_asset description: Uses an asset local to the package. version: 0.1.0 -repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_cli/example/native_add_library +repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_cli/example/build/native_add_library environment: sdk: '>=3.3.0 <4.0.0' @@ -12,7 +12,7 @@ dependencies: logging: ^1.1.1 # native_assets_cli: ^0.5.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../../native_assets_cli/ dev_dependencies: ffigen: ^8.0.2 diff --git a/pkgs/native_assets_cli/example/native_add_app/README.md b/pkgs/native_assets_cli/example/build/native_add_app/README.md similarity index 100% rename from pkgs/native_assets_cli/example/native_add_app/README.md rename to pkgs/native_assets_cli/example/build/native_add_app/README.md diff --git a/pkgs/native_assets_cli/example/native_add_app/bin/native_add_app.dart b/pkgs/native_assets_cli/example/build/native_add_app/bin/native_add_app.dart similarity index 100% rename from pkgs/native_assets_cli/example/native_add_app/bin/native_add_app.dart rename to pkgs/native_assets_cli/example/build/native_add_app/bin/native_add_app.dart diff --git a/pkgs/native_assets_cli/example/native_add_app/pubspec.yaml b/pkgs/native_assets_cli/example/build/native_add_app/pubspec.yaml similarity index 87% rename from pkgs/native_assets_cli/example/native_add_app/pubspec.yaml rename to pkgs/native_assets_cli/example/build/native_add_app/pubspec.yaml index f6b2adc52..86e03409f 100644 --- a/pkgs/native_assets_cli/example/native_add_app/pubspec.yaml +++ b/pkgs/native_assets_cli/example/build/native_add_app/pubspec.yaml @@ -3,7 +3,7 @@ publish_to: none name: native_add_app description: Invokes a package with native assets. version: 0.1.0 -repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_cli/example/native_add_app +repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_cli/example/build/native_add_app environment: sdk: '>=3.3.0 <4.0.0' diff --git a/pkgs/native_assets_cli/example/native_add_app/test/native_add_library_test.dart b/pkgs/native_assets_cli/example/build/native_add_app/test/native_add_library_test.dart similarity index 100% rename from pkgs/native_assets_cli/example/native_add_app/test/native_add_library_test.dart rename to pkgs/native_assets_cli/example/build/native_add_app/test/native_add_library_test.dart diff --git a/pkgs/native_assets_cli/example/native_add_library/README.md b/pkgs/native_assets_cli/example/build/native_add_library/README.md similarity index 100% rename from pkgs/native_assets_cli/example/native_add_library/README.md rename to pkgs/native_assets_cli/example/build/native_add_library/README.md diff --git a/pkgs/native_assets_cli/example/native_add_library/ffigen.yaml b/pkgs/native_assets_cli/example/build/native_add_library/ffigen.yaml similarity index 100% rename from pkgs/native_assets_cli/example/native_add_library/ffigen.yaml rename to pkgs/native_assets_cli/example/build/native_add_library/ffigen.yaml diff --git a/pkgs/native_assets_cli/example/native_add_library/hook/build.dart b/pkgs/native_assets_cli/example/build/native_add_library/hook/build.dart similarity index 100% rename from pkgs/native_assets_cli/example/native_add_library/hook/build.dart rename to pkgs/native_assets_cli/example/build/native_add_library/hook/build.dart diff --git a/pkgs/native_assets_cli/example/native_add_library/lib/native_add_library.dart b/pkgs/native_assets_cli/example/build/native_add_library/lib/native_add_library.dart similarity index 100% rename from pkgs/native_assets_cli/example/native_add_library/lib/native_add_library.dart rename to pkgs/native_assets_cli/example/build/native_add_library/lib/native_add_library.dart diff --git a/pkgs/native_assets_cli/example/native_add_library/pubspec.yaml b/pkgs/native_assets_cli/example/build/native_add_library/pubspec.yaml similarity index 75% rename from pkgs/native_assets_cli/example/native_add_library/pubspec.yaml rename to pkgs/native_assets_cli/example/build/native_add_library/pubspec.yaml index 9364dc877..ca8fd001f 100644 --- a/pkgs/native_assets_cli/example/native_add_library/pubspec.yaml +++ b/pkgs/native_assets_cli/example/build/native_add_library/pubspec.yaml @@ -3,7 +3,7 @@ publish_to: none name: native_add_library description: Sums two numbers with native code. version: 0.1.0 -repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_cli/example/native_add_library +repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_cli/example/build/native_add_library environment: sdk: '>=3.3.0 <4.0.0' @@ -12,10 +12,10 @@ dependencies: logging: ^1.1.1 # native_assets_cli: ^0.5.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../../native_assets_cli/ # native_toolchain_c: ^0.4.0 native_toolchain_c: - path: ../../../native_toolchain_c/ + path: ../../../../native_toolchain_c/ dev_dependencies: ffigen: ^8.0.2 diff --git a/pkgs/native_assets_cli/example/native_add_library/src/native_add_library.c b/pkgs/native_assets_cli/example/build/native_add_library/src/native_add_library.c similarity index 100% rename from pkgs/native_assets_cli/example/native_add_library/src/native_add_library.c rename to pkgs/native_assets_cli/example/build/native_add_library/src/native_add_library.c diff --git a/pkgs/native_assets_cli/example/native_add_library/src/native_add_library.h b/pkgs/native_assets_cli/example/build/native_add_library/src/native_add_library.h similarity index 100% rename from pkgs/native_assets_cli/example/native_add_library/src/native_add_library.h rename to pkgs/native_assets_cli/example/build/native_add_library/src/native_add_library.h diff --git a/pkgs/native_assets_cli/example/native_add_library/test/native_add_library_test.dart b/pkgs/native_assets_cli/example/build/native_add_library/test/native_add_library_test.dart similarity index 100% rename from pkgs/native_assets_cli/example/native_add_library/test/native_add_library_test.dart rename to pkgs/native_assets_cli/example/build/native_add_library/test/native_add_library_test.dart diff --git a/pkgs/native_assets_cli/example/use_dart_api/README.md b/pkgs/native_assets_cli/example/build/use_dart_api/README.md similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/README.md rename to pkgs/native_assets_cli/example/build/use_dart_api/README.md diff --git a/pkgs/native_assets_cli/example/use_dart_api/ffigen.yaml b/pkgs/native_assets_cli/example/build/use_dart_api/ffigen.yaml similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/ffigen.yaml rename to pkgs/native_assets_cli/example/build/use_dart_api/ffigen.yaml diff --git a/pkgs/native_assets_cli/example/use_dart_api/hook/build.dart b/pkgs/native_assets_cli/example/build/use_dart_api/hook/build.dart similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/hook/build.dart rename to pkgs/native_assets_cli/example/build/use_dart_api/hook/build.dart diff --git a/pkgs/native_assets_cli/example/use_dart_api/lib/src/use_dart_api_bindings_generated.dart b/pkgs/native_assets_cli/example/build/use_dart_api/lib/src/use_dart_api_bindings_generated.dart similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/lib/src/use_dart_api_bindings_generated.dart rename to pkgs/native_assets_cli/example/build/use_dart_api/lib/src/use_dart_api_bindings_generated.dart diff --git a/pkgs/native_assets_cli/example/use_dart_api/lib/use_dart_api.dart b/pkgs/native_assets_cli/example/build/use_dart_api/lib/use_dart_api.dart similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/lib/use_dart_api.dart rename to pkgs/native_assets_cli/example/build/use_dart_api/lib/use_dart_api.dart diff --git a/pkgs/native_assets_cli/example/use_dart_api/manifest.yaml b/pkgs/native_assets_cli/example/build/use_dart_api/manifest.yaml similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/manifest.yaml rename to pkgs/native_assets_cli/example/build/use_dart_api/manifest.yaml diff --git a/pkgs/native_assets_cli/example/use_dart_api/pubspec.yaml b/pkgs/native_assets_cli/example/build/use_dart_api/pubspec.yaml similarity index 80% rename from pkgs/native_assets_cli/example/use_dart_api/pubspec.yaml rename to pkgs/native_assets_cli/example/build/use_dart_api/pubspec.yaml index fa1b67fc9..bfef2670c 100644 --- a/pkgs/native_assets_cli/example/use_dart_api/pubspec.yaml +++ b/pkgs/native_assets_cli/example/build/use_dart_api/pubspec.yaml @@ -11,10 +11,10 @@ dependencies: logging: ^1.1.1 # native_assets_cli: ^0.5.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../../native_assets_cli/ # native_toolchain_c: ^0.4.0 native_toolchain_c: - path: ../../../native_toolchain_c/ + path: ../../../../native_toolchain_c/ dev_dependencies: ffigen: ^10.0.0 diff --git a/pkgs/native_assets_cli/example/use_dart_api/src/dart_api.h b/pkgs/native_assets_cli/example/build/use_dart_api/src/dart_api.h similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/src/dart_api.h rename to pkgs/native_assets_cli/example/build/use_dart_api/src/dart_api.h diff --git a/pkgs/native_assets_cli/example/use_dart_api/src/dart_api_dl.c b/pkgs/native_assets_cli/example/build/use_dart_api/src/dart_api_dl.c similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/src/dart_api_dl.c rename to pkgs/native_assets_cli/example/build/use_dart_api/src/dart_api_dl.c diff --git a/pkgs/native_assets_cli/example/use_dart_api/src/dart_api_dl.h b/pkgs/native_assets_cli/example/build/use_dart_api/src/dart_api_dl.h similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/src/dart_api_dl.h rename to pkgs/native_assets_cli/example/build/use_dart_api/src/dart_api_dl.h diff --git a/pkgs/native_assets_cli/example/use_dart_api/src/dart_embedder_api.h b/pkgs/native_assets_cli/example/build/use_dart_api/src/dart_embedder_api.h similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/src/dart_embedder_api.h rename to pkgs/native_assets_cli/example/build/use_dart_api/src/dart_embedder_api.h diff --git a/pkgs/native_assets_cli/example/use_dart_api/src/dart_native_api.h b/pkgs/native_assets_cli/example/build/use_dart_api/src/dart_native_api.h similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/src/dart_native_api.h rename to pkgs/native_assets_cli/example/build/use_dart_api/src/dart_native_api.h diff --git a/pkgs/native_assets_cli/example/use_dart_api/src/dart_tools_api.h b/pkgs/native_assets_cli/example/build/use_dart_api/src/dart_tools_api.h similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/src/dart_tools_api.h rename to pkgs/native_assets_cli/example/build/use_dart_api/src/dart_tools_api.h diff --git a/pkgs/native_assets_cli/example/use_dart_api/src/dart_version.h b/pkgs/native_assets_cli/example/build/use_dart_api/src/dart_version.h similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/src/dart_version.h rename to pkgs/native_assets_cli/example/build/use_dart_api/src/dart_version.h diff --git a/pkgs/native_assets_cli/example/use_dart_api/src/internal/dart_api_dl_impl.h b/pkgs/native_assets_cli/example/build/use_dart_api/src/internal/dart_api_dl_impl.h similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/src/internal/dart_api_dl_impl.h rename to pkgs/native_assets_cli/example/build/use_dart_api/src/internal/dart_api_dl_impl.h diff --git a/pkgs/native_assets_cli/example/use_dart_api/src/use_dart_api.c b/pkgs/native_assets_cli/example/build/use_dart_api/src/use_dart_api.c similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/src/use_dart_api.c rename to pkgs/native_assets_cli/example/build/use_dart_api/src/use_dart_api.c diff --git a/pkgs/native_assets_cli/example/use_dart_api/src/use_dart_api.h b/pkgs/native_assets_cli/example/build/use_dart_api/src/use_dart_api.h similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/src/use_dart_api.h rename to pkgs/native_assets_cli/example/build/use_dart_api/src/use_dart_api.h diff --git a/pkgs/native_assets_cli/example/use_dart_api/test/use_dart_api_test.dart b/pkgs/native_assets_cli/example/build/use_dart_api/test/use_dart_api_test.dart similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/test/use_dart_api_test.dart rename to pkgs/native_assets_cli/example/build/use_dart_api/test/use_dart_api_test.dart diff --git a/pkgs/native_assets_cli/example/link/README.md b/pkgs/native_assets_cli/example/link/README.md new file mode 100644 index 000000000..dfaf7d413 --- /dev/null +++ b/pkgs/native_assets_cli/example/link/README.md @@ -0,0 +1,9 @@ +The examples in this folder illustrate how to use information from the Dart +treeshaking to "link" assets. + +* [app_with_asset_treeshaking/](app_with_asset_treeshaking/) calls some methods + from `package_with_assets`. +* [package_with_assets/](package_with_assets/) contains a library with two + assets and code which uses these assets. It declares these assets in a + `build.dart` hook, and treeshakes them based on the "resources" collected + during the kernel compilation. diff --git a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/.gitignore b/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/.gitignore similarity index 100% rename from pkgs/native_assets_cli/example/package_with_asset_treeshaking/.gitignore rename to pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/.gitignore diff --git a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/CHANGELOG.md b/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/CHANGELOG.md similarity index 100% rename from pkgs/native_assets_cli/example/package_with_asset_treeshaking/CHANGELOG.md rename to pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/CHANGELOG.md diff --git a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/analysis_options.yaml b/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/analysis_options.yaml similarity index 100% rename from pkgs/native_assets_cli/example/package_with_asset_treeshaking/analysis_options.yaml rename to pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/analysis_options.yaml diff --git a/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/bin/app_with_asset_treeshaking.dart b/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/bin/app_with_asset_treeshaking.dart new file mode 100644 index 000000000..be6c7dd3c --- /dev/null +++ b/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/bin/app_with_asset_treeshaking.dart @@ -0,0 +1,6 @@ +import 'package:app_with_asset_treeshaking/app_with_asset_treeshaking.dart' + as app_with_asset_treeshaking; + +void main(List arguments) { + print('Hello world: ${app_with_asset_treeshaking.callOther()}!'); +} diff --git a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/lib/package_with_asset_treeshaking.dart b/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/lib/app_with_asset_treeshaking.dart similarity index 100% rename from pkgs/native_assets_cli/example/package_with_asset_treeshaking/lib/package_with_asset_treeshaking.dart rename to pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/lib/app_with_asset_treeshaking.dart diff --git a/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/pubspec.yaml b/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/pubspec.yaml new file mode 100644 index 000000000..0fc93b81d --- /dev/null +++ b/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/pubspec.yaml @@ -0,0 +1,17 @@ +publish_to: none + +name: app_with_asset_treeshaking +description: A sample command-line application. +version: 1.0.0 + +environment: + sdk: ^3.0.0 + +dependencies: + logging: ^1.1.1 + package_with_assets: + path: ../package_with_assets/ + +dev_dependencies: + lints: ^3.0.0 + test: ^1.24.0 diff --git a/pkgs/native_assets_cli/example/package_with_assets/.gitignore b/pkgs/native_assets_cli/example/link/package_with_assets/.gitignore similarity index 100% rename from pkgs/native_assets_cli/example/package_with_assets/.gitignore rename to pkgs/native_assets_cli/example/link/package_with_assets/.gitignore diff --git a/pkgs/native_assets_cli/example/package_with_assets/CHANGELOG.md b/pkgs/native_assets_cli/example/link/package_with_assets/CHANGELOG.md similarity index 100% rename from pkgs/native_assets_cli/example/package_with_assets/CHANGELOG.md rename to pkgs/native_assets_cli/example/link/package_with_assets/CHANGELOG.md diff --git a/pkgs/native_assets_cli/example/package_with_assets/assets/unused_asset.json b/pkgs/native_assets_cli/example/link/package_with_assets/assets/unused_asset.json similarity index 100% rename from pkgs/native_assets_cli/example/package_with_assets/assets/unused_asset.json rename to pkgs/native_assets_cli/example/link/package_with_assets/assets/unused_asset.json diff --git a/pkgs/native_assets_cli/example/package_with_assets/assets/used_asset.json b/pkgs/native_assets_cli/example/link/package_with_assets/assets/used_asset.json similarity index 100% rename from pkgs/native_assets_cli/example/package_with_assets/assets/used_asset.json rename to pkgs/native_assets_cli/example/link/package_with_assets/assets/used_asset.json diff --git a/pkgs/native_assets_cli/example/package_with_assets/hook/link.dart b/pkgs/native_assets_cli/example/link/package_with_assets/hook/build.dart similarity index 70% rename from pkgs/native_assets_cli/example/package_with_assets/hook/link.dart rename to pkgs/native_assets_cli/example/link/package_with_assets/hook/build.dart index f25133039..f7cc02c67 100644 --- a/pkgs/native_assets_cli/example/package_with_assets/hook/link.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/hook/build.dart @@ -5,7 +5,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { - await link(args, (config, output) async { + await build(args, (config, output) async { final packageName = config.packageName; final allAssets = [ DataAsset( @@ -19,14 +19,6 @@ void main(List args) async { file: config.packageRoot.resolve('assets').resolve('used_asset.json'), ) ]; - output.addAssets(shake(allAssets, config.resources)); + output.addAssets(allAssets, linkInPackage: packageName); }); } - -Iterable shake( - List allAssets, - List resources, -) => - allAssets.where( - (asset) => resources.any((resource) => resource.metadata == asset.id), - ); diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart new file mode 100644 index 000000000..007303533 --- /dev/null +++ b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart @@ -0,0 +1,17 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:native_assets_cli/native_assets_cli.dart'; + +void main(List args) async { + await link(args, (config, output) async { + final remainingAssets = shake(config.assets, config.resources); + output.addAssets(remainingAssets); + }); +} + +Iterable shake(List allAssets, List resources) => + allAssets.where( + (asset) => resources.any((resource) => resource.metadata == asset.id), + ); diff --git a/pkgs/native_assets_cli/example/package_with_assets/lib/package_with_assets.dart b/pkgs/native_assets_cli/example/link/package_with_assets/lib/package_with_assets.dart similarity index 51% rename from pkgs/native_assets_cli/example/package_with_assets/lib/package_with_assets.dart rename to pkgs/native_assets_cli/example/link/package_with_assets/lib/package_with_assets.dart index dd9c50e31..03befed5c 100644 --- a/pkgs/native_assets_cli/example/package_with_assets/lib/package_with_assets.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/lib/package_with_assets.dart @@ -1,7 +1,7 @@ import 'package:meta/meta.dart'; @ResourceIdentifier('used_asset') -String someMethod() => 'This is actually called'; +String someMethod() => 'Using used_asset'; @ResourceIdentifier('unused_asset') -String someOtherMethod() => 'This is not called'; +String someOtherMethod() => 'Using un_used_asset'; diff --git a/pkgs/native_assets_cli/example/package_with_assets/pubspec.yaml b/pkgs/native_assets_cli/example/link/package_with_assets/pubspec.yaml similarity index 90% rename from pkgs/native_assets_cli/example/package_with_assets/pubspec.yaml rename to pkgs/native_assets_cli/example/link/package_with_assets/pubspec.yaml index d043e1645..bb1d2ae8e 100644 --- a/pkgs/native_assets_cli/example/package_with_assets/pubspec.yaml +++ b/pkgs/native_assets_cli/example/link/package_with_assets/pubspec.yaml @@ -13,7 +13,7 @@ dependencies: # native_assets_cli: ^0.5.0 meta: ^1.12.0 native_assets_cli: - path: ../../../native_assets_cli/ + path: ../../../../native_assets_cli/ # native_toolchain_c: ^0.4.0 dev_dependencies: diff --git a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/README.md b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/README.md deleted file mode 100644 index 3816eca3a..000000000 --- a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/README.md +++ /dev/null @@ -1,2 +0,0 @@ -A sample command-line application with an entrypoint in `bin/`, library code -in `lib/`, and example unit test in `test/`. diff --git a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/bin/package_with_asset_treeshaking.dart b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/bin/package_with_asset_treeshaking.dart deleted file mode 100644 index 842885c32..000000000 --- a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/bin/package_with_asset_treeshaking.dart +++ /dev/null @@ -1,6 +0,0 @@ -import 'package:package_with_asset_treeshaking/package_with_asset_treeshaking.dart' - as package_with_asset_treeshaking; - -void main(List arguments) { - print('Hello world: ${package_with_asset_treeshaking.callOther()}!'); -} diff --git a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/pubspec.yaml b/pkgs/native_assets_cli/example/package_with_asset_treeshaking/pubspec.yaml deleted file mode 100644 index 091a7e48a..000000000 --- a/pkgs/native_assets_cli/example/package_with_asset_treeshaking/pubspec.yaml +++ /dev/null @@ -1,24 +0,0 @@ -publish_to: none - -name: package_with_asset_treeshaking -description: A sample command-line application. -version: 1.0.0 -# repository: https://github.com/my_org/my_repo - -environment: - sdk: ^3.0.0 - -dependencies: - logging: ^1.1.1 - # native_assets_cli: ^0.5.0 - native_assets_cli: - path: ../../../native_assets_cli/ - # native_toolchain_c: ^0.4.0 - native_toolchain_c: - path: ../../../native_toolchain_c/ - package_with_assets: - path: ../package_with_assets/ - -dev_dependencies: - lints: ^3.0.0 - test: ^1.24.0 diff --git a/pkgs/native_assets_cli/example/package_with_assets/README.md b/pkgs/native_assets_cli/example/package_with_assets/README.md deleted file mode 100644 index 8b55e735b..000000000 --- a/pkgs/native_assets_cli/example/package_with_assets/README.md +++ /dev/null @@ -1,39 +0,0 @@ - - -TODO: Put a short description of the package here that helps potential users -know whether this package might be useful for them. - -## Features - -TODO: List what your package can do. Maybe include images, gifs, or videos. - -## Getting started - -TODO: List prerequisites and provide or point to information on how to -start using the package. - -## Usage - -TODO: Include short and useful examples for package users. Add longer examples -to `/example` folder. - -```dart -const like = 'sample'; -``` - -## Additional information - -TODO: Tell users more about the package: where to find more information, how to -contribute to the package, how to file issues, what response they can expect -from the package authors, and more. diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index d242a5828..6e25464f0 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -256,7 +256,7 @@ final class BuildConfigImpl extends PipelineConfigImpl implements BuildConfig { } if (configExceptions.isNotEmpty) { - throw FormatException('Configuration is not in the right format. ' + throw FormatException('BuildConfig is not in the right format. ' 'FormatExceptions: $configExceptions'); } diff --git a/pkgs/native_assets_cli/lib/src/utils/json.dart b/pkgs/native_assets_cli/lib/src/utils/json.dart index a2266b0c6..57a1520b7 100644 --- a/pkgs/native_assets_cli/lib/src/utils/json.dart +++ b/pkgs/native_assets_cli/lib/src/utils/json.dart @@ -8,7 +8,7 @@ T as(Object? object) { } throw FormatException( "Unexpected value '$object' of type ${object.runtimeType} in JSON. Expected" - 'a $T.', + ' a $T.', ); } diff --git a/pkgs/native_assets_cli/test/example/local_asset_test.dart b/pkgs/native_assets_cli/test/example/local_asset_test.dart index 51e6e980c..7c44c590b 100644 --- a/pkgs/native_assets_cli/test/example/local_asset_test.dart +++ b/pkgs/native_assets_cli/test/example/local_asset_test.dart @@ -32,7 +32,7 @@ void main() async { test('local_asset build$testSuffix', () async { final testTempUri = tempUri.resolve('test1/'); await Directory.fromUri(testTempUri).create(); - final testPackageUri = packageUri.resolve('example/$name/'); + final testPackageUri = packageUri.resolve('example/build/$name/'); final dartUri = Uri.file(Platform.resolvedExecutable); final processResult = await Process.run( diff --git a/pkgs/native_assets_cli/test/example/native_add_library_test.dart b/pkgs/native_assets_cli/test/example/native_add_library_test.dart index c462e0360..5d44c559b 100644 --- a/pkgs/native_assets_cli/test/example/native_add_library_test.dart +++ b/pkgs/native_assets_cli/test/example/native_add_library_test.dart @@ -32,7 +32,7 @@ void main() async { test('native_add build$testSuffix', () async { final testTempUri = tempUri.resolve('test1/'); await Directory.fromUri(testTempUri).create(); - final testPackageUri = packageUri.resolve('example/$name/'); + final testPackageUri = packageUri.resolve('example/build/$name/'); final dartUri = Uri.file(Platform.resolvedExecutable); final processResult = await Process.run( diff --git a/pkgs/native_toolchain_c/README.md b/pkgs/native_toolchain_c/README.md index 01b1448a5..c9dc8b6d5 100644 --- a/pkgs/native_toolchain_c/README.md +++ b/pkgs/native_toolchain_c/README.md @@ -23,4 +23,5 @@ For bugs, please file an issue in the ## Example -An example can be found in [../native_assets_cli/example/](../native_assets_cli/example/). +An example can be found in [../native_assets_cli/example/build/]( +../native_assets_cli/example/build/). From f1514e57a870b013e3d71dc2dc5764b25e12b709 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 28 Mar 2024 09:21:45 +0100 Subject: [PATCH 111/187] Fix workflow --- .github/workflows/native.yaml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml index 39a45d453..ddb63cc71 100644 --- a/.github/workflows/native.yaml +++ b/.github/workflows/native.yaml @@ -89,19 +89,19 @@ jobs: - run: dart pub get -C test_data/complex_link_helper/ if: ${{ matrix.package == 'native_assets_builder' }} - - run: dart pub get -C example/native_add_app/ + - run: dart pub get -C example/build/native_add_app/ if: ${{ matrix.package == 'native_assets_cli' }} - - run: dart pub get -C example/native_add_library/ + - run: dart pub get -C example/build/native_add_library/ if: ${{ matrix.package == 'native_assets_cli' }} - - run: dart pub get -C example/use_dart_api/ + - run: dart pub get -C example/build/use_dart_api/ if: ${{ matrix.package == 'native_assets_cli' }} - - run: dart pub get -C example/package_with_assets/ + - run: dart pub get -C example/link/package_with_assets/ if: ${{ matrix.package == 'native_assets_cli' }} - - run: dart pub get -C example/package_with_asset_treeshaking/ + - run: dart pub get -C example/link/package_with_asset_treeshaking/ if: ${{ matrix.package == 'native_assets_cli' }} - run: dart analyze --fatal-infos @@ -118,31 +118,31 @@ jobs: if: ${{ matrix.sdk == 'stable' }} - run: dart --enable-experiment=native-assets test - working-directory: pkgs/${{ matrix.package }}/example/native_add_app/ + working-directory: pkgs/${{ matrix.package }}/example/build/native_add_app/ if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - run: dart --enable-experiment=native-assets run - working-directory: pkgs/${{ matrix.package }}/example/native_add_app/ + working-directory: pkgs/${{ matrix.package }}/example/build/native_add_app/ if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - run: dart --enable-experiment=native-assets build bin/native_add_app.dart - working-directory: pkgs/${{ matrix.package }}/example/native_add_app/ + working-directory: pkgs/${{ matrix.package }}/example/build/native_add_app/ if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - run: ./native_add_app.exe - working-directory: pkgs/${{ matrix.package }}/example/native_add_app/bin/native_add_app/ + working-directory: pkgs/${{ matrix.package }}/example/build/native_add_app/bin/native_add_app/ if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - run: dart --enable-experiment=native-assets test - working-directory: pkgs/${{ matrix.package }}/example/use_dart_api/ + working-directory: pkgs/${{ matrix.package }}/example/build/use_dart_api/ if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - run: dart --enable-experiment=native-assets build bin/package_with_asset_treeshaking.dart - working-directory: pkgs/${{ matrix.package }}/example/package_with_asset_treeshaking/ + working-directory: pkgs/${{ matrix.package }}/example/link/package_with_asset_treeshaking/ if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - run: ./package_with_asset_treeshaking.exe - working-directory: pkgs/${{ matrix.package }}/example/package_with_asset_treeshaking/bin/package_with_asset_treeshaking/ + working-directory: pkgs/${{ matrix.package }}/example/link/package_with_asset_treeshaking/bin/package_with_asset_treeshaking/ if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - name: Install coverage From 723b76bbe7546a5ff40310d4c013ab097ae90cb3 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 28 Mar 2024 09:30:04 +0100 Subject: [PATCH 112/187] Rename in workflow --- .github/workflows/native.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml index ddb63cc71..ebb53964c 100644 --- a/.github/workflows/native.yaml +++ b/.github/workflows/native.yaml @@ -101,7 +101,7 @@ jobs: - run: dart pub get -C example/link/package_with_assets/ if: ${{ matrix.package == 'native_assets_cli' }} - - run: dart pub get -C example/link/package_with_asset_treeshaking/ + - run: dart pub get -C example/link/app_with_asset_treeshaking/ if: ${{ matrix.package == 'native_assets_cli' }} - run: dart analyze --fatal-infos @@ -137,12 +137,12 @@ jobs: working-directory: pkgs/${{ matrix.package }}/example/build/use_dart_api/ if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - - run: dart --enable-experiment=native-assets build bin/package_with_asset_treeshaking.dart - working-directory: pkgs/${{ matrix.package }}/example/link/package_with_asset_treeshaking/ + - run: dart --enable-experiment=native-assets build bin/app_with_asset_treeshaking.dart + working-directory: pkgs/${{ matrix.package }}/example/link/app_with_asset_treeshaking/ if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - - run: ./package_with_asset_treeshaking.exe - working-directory: pkgs/${{ matrix.package }}/example/link/package_with_asset_treeshaking/bin/package_with_asset_treeshaking/ + - run: ./app_with_asset_treeshaking.exe + working-directory: pkgs/${{ matrix.package }}/example/link/app_with_asset_treeshaking/bin/app_with_asset_treeshaking/ if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - name: Install coverage From 1481bb0b6d5734cffa6c7f49aa6d95fbf4571cd4 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 28 Mar 2024 10:21:50 +0100 Subject: [PATCH 113/187] Fix id --- .../lib/src/build_runner/build_runner.dart | 2 +- pkgs/native_assets_cli/lib/src/model/data_asset.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index cb0b3c6e7..5ff179c83 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -463,7 +463,7 @@ ${config.outputName} contained a format error. bool validateAssetsPackage(Iterable assets, String packageName) { final invalidAssetIds = assets .map((a) => a.id) - .where((n) => !n.startsWith('package:$packageName/')) + .where((id) => !id.startsWith('package:$packageName/')) .toSet() .toList() ..sort(); diff --git a/pkgs/native_assets_cli/lib/src/model/data_asset.dart b/pkgs/native_assets_cli/lib/src/model/data_asset.dart index a6efc19d8..02f0d7172 100644 --- a/pkgs/native_assets_cli/lib/src/model/data_asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/data_asset.dart @@ -15,7 +15,7 @@ final class DataAssetImpl implements DataAsset, AssetImpl { final String package; @override - String get id => ''; + String get id => 'package:$package/$name'; DataAssetImpl({ required this.file, From 364f4777f5c185dac885ac30e86712d64f7e59c3 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 28 Mar 2024 11:08:16 +0100 Subject: [PATCH 114/187] Fix example --- .../example/link/package_with_assets/hook/build.dart | 8 ++++---- .../example/link/package_with_assets/hook/link.dart | 8 +++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/hook/build.dart b/pkgs/native_assets_cli/example/link/package_with_assets/hook/build.dart index f7cc02c67..40c4abdea 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/hook/build.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/hook/build.dart @@ -10,13 +10,13 @@ void main(List args) async { final allAssets = [ DataAsset( package: packageName, - name: 'unused', - file: config.packageRoot.resolve('assets').resolve('unused_asset.json'), + name: 'unused_asset', + file: config.packageRoot.resolve('assets/unused_asset.json'), ), DataAsset( package: packageName, - name: 'used', - file: config.packageRoot.resolve('assets').resolve('used_asset.json'), + name: 'used_asset', + file: config.packageRoot.resolve('assets/used_asset.json'), ) ]; output.addAssets(allAssets, linkInPackage: packageName); diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart index 007303533..8ff6b657a 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart @@ -12,6 +12,8 @@ void main(List args) async { } Iterable shake(List allAssets, List resources) => - allAssets.where( - (asset) => resources.any((resource) => resource.metadata == asset.id), - ); + allAssets.whereType().where( + (asset) => resources.any( + (resource) => resource.metadata == asset.name, + ), + ); From 3ff93968587c4455e1a1e86c57a0e0c37df45b43 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 28 Mar 2024 11:29:19 +0100 Subject: [PATCH 115/187] Do not serialize empty fields --- .../bin/{simple_link.dart => complex_link.dart} | 0 .../simple_link.dart => lib/complex_link_helper.dart} | 2 +- pkgs/native_assets_cli/lib/src/model/asset.dart | 4 ++-- pkgs/native_assets_cli/lib/src/model/build_config.dart | 3 ++- pkgs/native_assets_cli/lib/src/model/build_output.dart | 8 ++++---- pkgs/native_assets_cli/test/model/build_output_test.dart | 1 - 6 files changed, 9 insertions(+), 9 deletions(-) rename pkgs/native_assets_builder/test_data/complex_link/bin/{simple_link.dart => complex_link.dart} (100%) rename pkgs/native_assets_builder/test_data/complex_link_helper/{bin/simple_link.dart => lib/complex_link_helper.dart} (92%) diff --git a/pkgs/native_assets_builder/test_data/complex_link/bin/simple_link.dart b/pkgs/native_assets_builder/test_data/complex_link/bin/complex_link.dart similarity index 100% rename from pkgs/native_assets_builder/test_data/complex_link/bin/simple_link.dart rename to pkgs/native_assets_builder/test_data/complex_link/bin/complex_link.dart diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/bin/simple_link.dart b/pkgs/native_assets_builder/test_data/complex_link_helper/lib/complex_link_helper.dart similarity index 92% rename from pkgs/native_assets_builder/test_data/complex_link_helper/bin/simple_link.dart rename to pkgs/native_assets_builder/test_data/complex_link_helper/lib/complex_link_helper.dart index 8adceb64b..cd0ca7f9e 100644 --- a/pkgs/native_assets_builder/test_data/complex_link_helper/bin/simple_link.dart +++ b/pkgs/native_assets_builder/test_data/complex_link_helper/lib/complex_link_helper.dart @@ -2,6 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -void main() { +void someMethod() { print('Tada!'); } diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index ffca8ad6d..fae4f2361 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -7,9 +7,9 @@ part of '../api/asset.dart'; abstract final class AssetImpl implements Asset { Map toJson(Version version); - static List listFromJson(List list) { + static List listFromJson(List? list) { final assets = []; - for (final jsonElement in list) { + for (final jsonElement in list ?? []) { final jsonMap = as>(jsonElement); final type = jsonMap[NativeCodeAssetImpl.typeKey]; switch (type) { diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index 6e25464f0..b32bfcb52 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -491,7 +491,8 @@ final class BuildConfigImpl extends PipelineConfigImpl implements BuildConfig { packageRootConfigKey: _packageRoot.toFilePath(), OSImpl.configKey: _targetOS.toString(), LinkModePreferenceImpl.configKey: _linkModePreference.toString(), - supportedAssetTypesKey: _supportedAssetTypes, + if (_supportedAssetTypes.isNotEmpty) + supportedAssetTypesKey: _supportedAssetTypes, _versionKey: version.toString(), if (dryRun) dryRunConfigKey: dryRun, if (!dryRun) ...{ diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index 239e36b8b..81fdc8470 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -86,7 +86,7 @@ final class BuildOutputImpl implements BuildOutput, LinkOutput { } return BuildOutputImpl( timestamp: DateTime.parse(as(jsonMap[_timestampKey])), - assets: AssetImpl.listFromJson(as>(jsonMap[_assetsKey])), + assets: AssetImpl.listFromJson(as?>(jsonMap[_assetsKey])), assetsForLinking: as?>(jsonMap[_assetsForLinkingKey]) ?.map((packageName, assets) => MapEntry( packageName, AssetImpl.listFromJson(as>(assets)))), @@ -126,8 +126,8 @@ final class BuildOutputImpl implements BuildOutput, LinkOutput { } return { _timestampKey: timestamp.toString(), - _assetsKey: AssetImpl.listToJson(assets, version), - if (version >= linkMinVersion) + if (assets.isNotEmpty) _assetsKey: AssetImpl.listToJson(assets, version), + if (version >= linkMinVersion && _assetsForLinking.isNotEmpty) _assetsForLinkingKey: _assetsForLinking.map((packageName, assets) => MapEntry( packageName, @@ -135,7 +135,7 @@ final class BuildOutputImpl implements BuildOutput, LinkOutput { )), if (_dependencies.dependencies.isNotEmpty) _dependenciesKey: _dependencies.toJson(), - _metadataKey: metadata.toJson(), + if (metadata.metadata.isNotEmpty) _metadataKey: metadata.toJson(), _versionKey: version.toString(), }..sortOnKey(); } diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index c9bfbd107..d66bb1601 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -95,7 +95,6 @@ assets: path_type: absolute uri: path/to/libfoo.so target: android_riscv64 -metadata: {} version: 1.0.0'''; final jsonEncoding = '''{ From e21d1faae08206cba38b1e3aaf8c0d4b6dd747d1 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 28 Mar 2024 13:57:33 +0100 Subject: [PATCH 116/187] pathseparator helper --- pkgs/native_assets_builder/test/helpers.dart | 6 +++++- pkgs/native_assets_cli/test/helpers.dart | 4 ++++ pkgs/native_assets_cli/test/model/asset_test.dart | 2 +- pkgs/native_assets_cli/test/model/build_config_test.dart | 4 ++-- pkgs/native_assets_cli/test/model/build_output_test.dart | 9 ++++----- .../native_toolchain_c/test/tool/tool_resolver_test.dart | 6 +++--- 6 files changed, 19 insertions(+), 12 deletions(-) diff --git a/pkgs/native_assets_builder/test/helpers.dart b/pkgs/native_assets_builder/test/helpers.dart index 51d42897f..140f1e70d 100644 --- a/pkgs/native_assets_builder/test/helpers.dart +++ b/pkgs/native_assets_builder/test/helpers.dart @@ -154,13 +154,17 @@ Future copyTestProjects({ final sourceString = await sourceFile.readAsString(); final modifiedString = sourceString.replaceAll( 'path: ../../', - 'path: ${pkgNativeAssetsBuilderUri.toFilePath().replaceAll('\\', '/')}', + 'path: ${pkgNativeAssetsBuilderUri.toFilePath().unescape()}', ); await File.fromUri(targetFileUri) .writeAsString(modifiedString, flush: true); } } +extension UnescapePath on String { + String unescape() => replaceAll('\\', '/'); +} + /// Logger that outputs the full trace when a test fails. Logger get logger => _logger ??= () { // A new logger is lazily created for each test so that the messages diff --git a/pkgs/native_assets_cli/test/helpers.dart b/pkgs/native_assets_cli/test/helpers.dart index ae34a37d1..739f71695 100644 --- a/pkgs/native_assets_cli/test/helpers.dart +++ b/pkgs/native_assets_cli/test/helpers.dart @@ -133,6 +133,10 @@ extension on Asset { } } +extension UnescapePath on String { + String unescape() => replaceAll('\\', '/'); +} + extension UriExtension on Uri { FileSystemEntity get fileSystemEntity { if (path.endsWith(Platform.pathSeparator) || path.endsWith('/')) { diff --git a/pkgs/native_assets_cli/test/model/asset_test.dart b/pkgs/native_assets_cli/test/model/asset_test.dart index e6cffdad6..50c95d13a 100644 --- a/pkgs/native_assets_cli/test/model/asset_test.dart +++ b/pkgs/native_assets_cli/test/model/asset_test.dart @@ -186,7 +186,7 @@ void main() { test('asset yaml', () { final json = const JsonEncoder.withIndent(' ').convert([ for (final item in assets) item.toJson(BuildOutputImpl.latestVersion) - ]).replaceAll('\\\\', '\\'); + ]).replaceAll('\\', '/'); expect(json, assetsJsonEncoding); final assets2 = AssetImpl.listFromJson(jsonDecode(json) as List); expect(assets, assets2); diff --git a/pkgs/native_assets_cli/test/model/build_config_test.dart b/pkgs/native_assets_cli/test/model/build_config_test.dart index 1f53c1c06..205576880 100644 --- a/pkgs/native_assets_cli/test/model/build_config_test.dart +++ b/pkgs/native_assets_cli/test/model/build_config_test.dart @@ -272,8 +272,8 @@ void main() async { "version": "${BuildConfigImpl.latestVersion}" }'''; expect( - jsonString.replaceAll('\\\\', '/'), - equals(expectedJsonString.replaceAll('\\', '/')), + jsonString.unescape(), + equals(expectedJsonString.unescape()), ); final buildConfig2 = BuildConfigImpl.fromConfig( diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index d66bb1601..d78af48c7 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -168,9 +168,8 @@ version: 1.0.0'''; test('built info json', () { final buildOutput = getBuildOutput(); - final json = buildOutput - .toJsonString(BuildOutputImpl.latestVersion) - .replaceAll('\\\\', '/'); + final json = + buildOutput.toJsonString(BuildOutputImpl.latestVersion).unescape(); expect(json, jsonEncoding); final buildOutput2 = BuildOutputImpl.fromJsonString(json); @@ -188,13 +187,13 @@ version: 1.0.0'''; test('built info yaml v1.0.0 serialization keeps working', () { final buildOutput = getBuildOutput(withLinkedAssets: false); final yamlEncoding = - yamlEncode(buildOutput.toJson(Version(1, 0, 0))).replaceAll('\\', '/'); + yamlEncode(buildOutput.toJson(Version(1, 0, 0))).unescape(); expect(yamlEncoding, yamlEncodingV1_0_0); }); test('built info yaml v1.0.0 serialization keeps working dry run', () { final yamlEncoding = - yamlEncode(dryRunOutput.toJson(Version(1, 0, 0))).replaceAll('\\', '/'); + yamlEncode(dryRunOutput.toJson(Version(1, 0, 0))).unescape(); expect(yamlEncoding, yamlEncodingV1_0_0dryRun); }); diff --git a/pkgs/native_toolchain_c/test/tool/tool_resolver_test.dart b/pkgs/native_toolchain_c/test/tool/tool_resolver_test.dart index 18b1a83d9..85abb1996 100644 --- a/pkgs/native_toolchain_c/test/tool/tool_resolver_test.dart +++ b/pkgs/native_toolchain_c/test/tool/tool_resolver_test.dart @@ -68,7 +68,7 @@ void main() { expect(await File.fromUri(bazExeUri).exists(), true); final barResolver = InstallLocationResolver( toolName: 'bar', - paths: [barExeUri.toFilePath().replaceAll('\\', '/')], + paths: [barExeUri.toFilePath().unescape()], ); final bazResolver = RelativeToolResolver( toolName: 'baz', @@ -94,9 +94,9 @@ void main() { final bazExeUri = tempUri.resolve(bazExeName); await File.fromUri(barExeUri).writeAsString('dummy'); final barResolver = InstallLocationResolver( - toolName: 'bar', paths: [barExeUri.toFilePath().replaceAll('\\', '/')]); + toolName: 'bar', paths: [barExeUri.toFilePath().unescape()]); final bazResolver = InstallLocationResolver( - toolName: 'baz', paths: [bazExeUri.toFilePath().replaceAll('\\', '/')]); + toolName: 'baz', paths: [bazExeUri.toFilePath().unescape()]); final barLogs = []; final bazLogs = []; await barResolver.resolve(logger: createCapturingLogger(barLogs)); From a4486c53c1248a3eb71dfbb366542f4a83524a0b Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 28 Mar 2024 14:06:24 +0100 Subject: [PATCH 117/187] Add helper to toolchain c --- pkgs/native_toolchain_c/test/helpers.dart | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/native_toolchain_c/test/helpers.dart b/pkgs/native_toolchain_c/test/helpers.dart index 4baa41276..612c2f087 100644 --- a/pkgs/native_toolchain_c/test/helpers.dart +++ b/pkgs/native_toolchain_c/test/helpers.dart @@ -180,3 +180,7 @@ DynamicLibrary openDynamicLibraryForTest(String path) { addTearDown(library.close); return library; } + +extension UnescapePath on String { + String unescape() => replaceAll('\\', '/'); +} From 3c6ddf91b5ea1ebdfa6a01a0a6605b6d60bb532e Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 4 Apr 2024 12:58:29 +0200 Subject: [PATCH 118/187] Resolve nits --- .../test_data/complex_link/bin/complex_link.dart | 2 +- .../native_assets_builder/test_data/complex_link/hook/link.dart | 2 +- pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/native_assets_builder/test_data/complex_link/bin/complex_link.dart b/pkgs/native_assets_builder/test_data/complex_link/bin/complex_link.dart index 8adceb64b..9f5b97af6 100644 --- a/pkgs/native_assets_builder/test_data/complex_link/bin/complex_link.dart +++ b/pkgs/native_assets_builder/test_data/complex_link/bin/complex_link.dart @@ -1,4 +1,4 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. diff --git a/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart b/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart index ae945aa7a..a1ad40ef6 100644 --- a/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart @@ -1,4 +1,4 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. diff --git a/pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml index 7336ded54..aa80d72cd 100644 --- a/pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml @@ -1,5 +1,5 @@ name: complex_link -description: Sums two numbers with native code. +description: Prints "Tada!", but packages some assets while tree-shaking others version: 0.1.0 publish_to: none From 9bff0b70b1bac105278fc45dc6213d8cf12545f0 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 4 Apr 2024 14:14:38 +0200 Subject: [PATCH 119/187] Show output when throwing --- .../lib/src/build_runner/build_runner.dart | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 5ff179c83..fbfbf3cd5 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -350,6 +350,8 @@ ${result.stdout} logger.severe(''' Building native assets for package:${config.packageName} failed. ${config.outputName} contained a format error. + +Contents: ${File.fromUri(config.outputFile).readAsStringSync()}. ${e.message} '''); success = false; @@ -361,7 +363,9 @@ ${e.message} } on TypeError { logger.severe(''' Building native assets for package:${config.packageName} failed. -${config.outputName} contained a format error. +${config.outputName} contained a type error. + +Contents: ${File.fromUri(config.outputFile).readAsStringSync()}. '''); success = false; return (BuildOutputImpl(), false); From 0302ac1b09a24bbb14dfbdaf345245c926c6f87a Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 4 Apr 2024 16:47:26 +0200 Subject: [PATCH 120/187] Add example --- .../treeshaking_native_assets/.gitignore | 3 + .../treeshaking_native_assets/README.md | 2 + .../bin/treeshaking_native_assets.dart | 9 +++ .../lib/libtreeshaking_native_assets.so | Bin 0 -> 13344 bytes .../treeshaking_native_assets.exe | Bin 0 -> 5662816 bytes .../treeshaking_native_assets/hook/build.dart | 53 ++++++++++++++ .../treeshaking_native_assets/hook/link.dart | 66 ++++++++++++++++++ .../lib/src/treeshaking_native_assets.dart | 14 ++++ .../treeshaking_native_assets_bindings.dart | 17 +++++ .../lib/treeshaking_native_assets.dart | 5 ++ .../treeshaking_native_assets/pubspec.yaml | 22 ++++++ .../src/native_add.c | 9 +++ .../src/native_add.h | 13 ++++ .../src/native_multiply.c | 9 +++ .../src/native_multiply.h | 13 ++++ 15 files changed, 235 insertions(+) create mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/.gitignore create mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/README.md create mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/bin/treeshaking_native_assets.dart create mode 100755 pkgs/native_assets_builder/test_data/treeshaking_native_assets/bin/treeshaking_native_assets/lib/libtreeshaking_native_assets.so create mode 100755 pkgs/native_assets_builder/test_data/treeshaking_native_assets/bin/treeshaking_native_assets/treeshaking_native_assets.exe create mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/build.dart create mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart create mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets.dart create mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets_bindings.dart create mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/treeshaking_native_assets.dart create mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/pubspec.yaml create mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_add.c create mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_add.h create mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_multiply.c create mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_multiply.h diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/.gitignore b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/.gitignore new file mode 100644 index 000000000..3a8579040 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/.gitignore @@ -0,0 +1,3 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/README.md b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/README.md new file mode 100644 index 000000000..982b82826 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/README.md @@ -0,0 +1,2 @@ +This sample builds a native library for adding and multiplying, but as the Dart +code only uses multiplying, the add symbol is removed from the dynamic library. \ No newline at end of file diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/bin/treeshaking_native_assets.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/bin/treeshaking_native_assets.dart new file mode 100644 index 000000000..d4f8255f0 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/bin/treeshaking_native_assets.dart @@ -0,0 +1,9 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:treeshaking_native_assets/treeshaking_native_assets.dart'; + +void main(List arguments) { + print('Hello world: ${MyMath.multiply(3, 4)}!'); +} diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/bin/treeshaking_native_assets/lib/libtreeshaking_native_assets.so b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/bin/treeshaking_native_assets/lib/libtreeshaking_native_assets.so new file mode 100755 index 0000000000000000000000000000000000000000..248c295a6328f0cc0bc6869e4e2e98325e65cb22 GIT binary patch literal 13344 zcmeHOO=}ZT6un8mqOCQ4fIn> z3aA3AfGRLX3Ovns_w(J?hxu;nApbUdm_Pj?d+_4p7-gubr~;~hDxeCe0;+&2pbDr0 zs(>n>3aA3Az^DqGmjz<43KVN6V+(ULiFf8t-%G~MpS>?Z5dP=8JfD0MUpX~hFb<;z zRlX{q3aA3AfGVI0r~;~hDxeCe0;+&2Fy;#U2!b6>@ucL5v+tkzptNbDo~@c3QB&~xUV<5#xbB95EeB`U5yUt4};PMyO>WH&oC z-&r^4HzF*fx9PR)vePV+z0vWETZDdtY~OABWV_|!%Z5{PL%UO}l*lgCYc<#Nk=jUj z*|50=WV;D<0>t~535kMtE2yglWB(omb?{MFz^lR=uMIxx7>K$xE@6|h$B=HB9@|j&xJLl&-6s$R?m=LII}v{i@yU`I!QMR&F(ZE& zQr2`hHuOQ=;eN%gI6`mmk;j^u=lr3Qxc3ZKdWNXOzTEn;mwPl7J{M)dw%GW0fO9~6 i=zqf4kh{2s@Lu@5zx@qyVLM|w!}yY)YGwLYI)X5M1MiRZ*j( zSogTiblfJ6TU;mZRZ-(!*NM1Q$0d$3)^VBNx%d6LrFq%&`TV|*$M?@~c!W03oV@P2 z=bU@)lC(W@#+;e`N=gjp*55eVupXHWd)j2;3HR(-_)a}%_>Cdz|GkY-#z3V5)ZN6h z{5922o^ZapP_DoFYP~Lx=lQEF-7uW5P7STE*6VaP&&l!%=d0nClGf|CQ+E^3_pBe* zGk^U!yP)&6_v@^6^!_r#e%`z1%%ZQJ$<~^v^_V7K`E}+bX*Y94@z=y|_REam74p@2 z-5~YQTECv<4Z-s86{QWQ9i6XMGg|dD_s4RME&f_S13F)w*Dd_Cxw>e1|I7M0{Sd_K z&fUDLT_ygyc(9aozB+xjK)ueY=l|)=dcAf31>=RkdJ*V+b(VKZ;74Yw4;+_V;}!nui3c|-$j|X4} z8t>5f%Nj2k-1l;K(D?2epRe)bHNITqwaWXNXVz%SuhaNx8b4d(gSPLx9foLpca86< z@zEMD)woaNhim+3jnCHjVvV1m@d}OCXuMwIYc+n^4t=-(RT{rp<9BKNA&oz)@z*u} zp~k<|`1czBS>yeN^xY2IYkW72kJ0!9jUTS@nHpcH@sl)OrSa7ok7|6K#vj)B(;9zS z<8NyGeT~oGvG4h6sq((&^K}|OL*pAXeyPScY5WF_->UIDHGZGQAJzEl8h=;gA8Gtc zjeo20e{1{~jrSYccYh7m_)Z$%RpWbT+^g~ZG(K75M{9hh#^-5#vBpnU?(O6Fze(fg zYdop(cIAC-FOO>cHH~*^{5Os7x>MiF9jEa>XnelLt2G|i_}Loo()hnL{)@&3s}twG z+IeSi!{DU zf;&_;#vs`fMMKAENOxjhAbDmB!D|_>~&JQRBC2{C16}HGaRw zAJO>78vk75Uu*oo>VlVg>UXyx!~6E(8sAgnV>N!T#{C+fuJPkFUaj$U8oyZM*J}Jv z8oyKHX^r2f@rN}2xW=E<_;VV6QRA;@{B4bYsPRuV{ea2e7VL~YP?b7>olIw_(dAur12Xx{uhnkqw$Q!U(xtG z8vjJ&Uu*o|8aMXsdz=i__!Rp(wmJx{Fzq>4T?Vmlm)O?>hZ^~%ru}%5^+txe-M5F8 zKh#KlYub;$hL7A!JQOLj-FiR3x;;2byzsvGDEP%A#oZ5^cDWe*dE_VmCH{Bhw;|uR zL2}-KFH>Kw`WPdp+BtW?Q}%JuP$SnY<<;Ws+a~0DzclT~PoaF7eH~J*?=h0|n-n*W z-d*z3F?k{}u^r|d2D$@Y`_JNxu!RDG@bbNh_3 z_xnSQ;GweImyr{M=l$aMpgt*0JD)y6@>Aza`SVbI%V_c7c&U#w&abntpQ!QkuGIfp zslKt*sn3Oy^C{}HyLx-ls()gp_@%1dt=o^ds(`vV;~|ayG7mIu zcghb#`$W;d5&K!gcn9Mrbd2PWSKFs`n~d!=b%3}UmiBEA`+9;JZv(~OM15i&sXzB) zKjbI>W7@A@i}7>kXerPAWng@o2S|G^K>nBZ`w^-=Kau5H^NV#WU>xRNH0{Uxq1}dI zdrZ70zBk76Ladh$+gF|aD#N%1M!>u$uC8Hx-ib8 zlcb)bu-uK_zSlPckB*c4Ly-Ri`Zs!=ou_!ahbbu|u`nYLt+Kg}yS!7)>9zgXp3w{~ye?SBBqmHD3Z zR~k86FfSRGo7T&X<@W!EaVnM@4Vt!8A%6?D_w<{RqngFOU4wZng?ZpQ_(W_+=AKgC z*-k6aZoV^3yQH(+!_jVLyZ9Q^^I2?PzJn#_aMfPc?Vs@6$>Jx&UsTUo?VSCiX%#ar zL(XGrJuEl+OS_Fh`F3nCh4qqiASRmS==bP)$vF`@FL@;=P2+hv)|a>UFt(TMUnIv_ zuSpoU#wuCvkH~)u{grz}{3f*jG}JRUQ~W}Vt0@?_=?ckL-Dlr!(Tv;u(awoKN%;(x z`z`v>_(t;2!E!z7d8^%WtE9ZztnAwyc#4*Lzp9r#&fy24`~)0Vq}G_WIQ5*3`e#vo z0m|=%b_-o8<=f%6sL$(I`Ki_7PJKpUJed8Z{%@oH@1dRs=3BLUvTq-#dD_ZJye{SU zNBQf~KFLQU-qdMO#AUfgD$BU-oqyHJ{@+`2qObXop0dY0E75 zc&A_JxUpVy{I)yBN$NmZu5(=R8|H1JQ`Xn|9Flc=0^{7BHSNdF=h2SCezWjjDeoK? z9pshvOzbWBFZ8otW~@MaCMQez)o6!^GY)YaqNYdtw$3X#+@2BiWAJFxF6SKQZ-@3t zRf;?F!!Ph)qxkdos|;gzujHrqEUxD#=ocRy$4oy4e7+NE)s%_t5a4+@mzSxe^ z*p94vTep}q-X1jNG3x2VyjK`1`OdsI2lG!J=UHE(K56x8s~vpfBxe$G_C@~|cAaYH zt7_P{*{G*^k7++1g!+7q@sq=LcLsbB>Y4qkly~O;vz+}xM*LJP_b1ffw?gV~qF)Yi z+VdB2wHeyC<3>yUdHlRIMx5uXeX)OZ&z9v5M?I&YokK0+VTm`MaQgRZS#BBH&8u1N z7g(;B_Kydv}L(*3e-OllJd^> zn?rjRo+{4y2kIZXUY0u<^ZWs7J*@oDKgA=+FTwW9?fD3fqq1A1{NW|?g00wolOA#F z{NK9y)PB;+Pai$ie(dC*f%!A~j+DQ|e%3ImF+Ou|im!#Aj`k@WFa81Q|7SIkTKUO; zn086$`06QVzkuzu6gg*MyEf-Z`C+O*tlRyV{|jqO`?36Q7^}xfK98SGs+6_d9NJAa zyM22M9-U~~k6$XWzZgHDJ>8dze~aag*35g4V4Oz>OS|of_Iw7%C%!q7(+@fSa*kV` z6W@aJTQDA?&xlVz`7M|~gImR&^S;Zl+&o<;ITquD$HTR7zMe1v^FX?3l40G{FqRwU z&)g}d{n*(L9z7QQI7!ymi~6@>{Frx3dF%7L*6j$?KlF}iKRyKIC#dJGelaV=Pqd#k zj7`XKmx*_x{G+I+7xUF}lz&%!wQ>p(DgQo}J5RG-UwEZFw~uu_z{<&vmmFt5csANC zi1B%YTAp=#QF9z}nzO#2n|8TJ(T^o#`d;o#^}My*o#VLWF0k8wwJi4p`&EYV29rQJehQvdzzS{laF@B(}* zatyWJRy(JwCC51){(~ESlK5=Yvp?F?xKVsBgR{`UFoCzf(Q7ZojDITlM7e z-=y*^Pee_-+z8ZjU(Elx7V)vj4>`v$pHa^K3(IwK_CWvUJ~8drUx1v~QO^{vD_ZlHbzAO5JMS~qeq0W(R*$TDdTUJE z&nvON7*_jPUci2NN0gu8Y`=F%dFS|Q^Jpn=VtZ7(QTuj0a#Gb&-tjG%AAB)!`QI>} zLVNly6mhoe$5p+o`j{y-Ak{5r|8E#m(4OAOrY-lNp2Lyv#rQcM^E19 zmHgb{;=@q>PIwmE=@|HRYB^SY(zi)}ZBpaXx*dn{8N_j&)xOs4NX#dpIY-!!opzXl z<1yn&)Ala3|3%n87FLNn`_pGM^O#}uQ&UHY{eM68f8YQ5+de@3gqu7+K>ci!_0M`_ z{cqg|s(*vjKc~b%^_|NYto}KfgYgRIvGY}OoJaE2)$^*~Kihlh{S2#aPW`Oc{=U4W z+v8vHQuxsTV~3vQ4zb(CY8z*Hy}!yUW$mp0t+gDW{_n4jwB-A3rH2+J?4*7aZ-BZF zQ+N3{K#d6JUq5^&>#;p*<0M$?>6F~|wRkOt*stl2c9E~!N=QpNk9RS4QRSR6*1G<` zfB&xq{%^OysC^B?nvJY|pS3j|R`j^Uh^WWWp67=cF+5gew2ZWV(q?;OoU(0?2iT9T zyx0iqdABh`J#Rg3vLEkcEWqQ-FWaQ{cteflMX%qP^7{4U?NVE-c9s2&)9`x9A4vJT z^yCk>%MUg-p!{z3;~kA89`9~H-odyAk3II|LB_3kJi>nLGVaFXEA0AiXJqhrll^#z z@f03kWj`KfysREux7q4GP|f|O`fBa-N~~7cxnzJ*VkQh@pM=*iP5Vj1NVr|2hi46! zy{E_}re3lAfPqHB7+g~Fgpn{4yHq8Oq%@-2RbqOLsU`jT4QO*2-m}zeQ`;L0jYO%@ zPrYSry8HDj={G=qyKuPo@~Nr{E;XeMILt5x4|KT`CC0ukdxmqD4oRpAjdmOTyk2vR z+0Rfrp?+Sqd{s49tNPzn(rS1%nEgu(ud2Jc4KUONovG8*g4MUyyNPOs^qPixwsfX^&3$^%ALy~tEQFy<{8ndp~rC(l;< zp@eC)o|PSGEx@Yo_U2heo2uLPu72L_)MIPts8TMwJ+GK*7_-#lkUNpM+;1cYg!WN2 zEj3HZd`5pG-D;!gz%3eyF-z*OHD<_oLN)nz{$neXhD&w}tBK@#=n( zx-VDv3Uv>w`zm#>S9j}pZmqhXrtS%KKS$lqSNDt6{W5jGLfzZc{aSUuQQdD-_dC@6 zeszCX-LvZcw7Ng1?k}nPYwG^Cy1%dPAFBID>i&tkf1&Q*sQVA<{%>{fR`>s?`>*QW zUyaCt>b||Y4^j7>)qOX0AF1wpsrzVk-$&iYtNVm`BfkFAXJgjR{_3bbo~_)mdG228 zKK8A>;^C98p77amhkbk98*eQ;=F#WfwLjPIHQCuWMm7F$hwt5yhg_dN@R6e)thwEje&CMdKPw5YzQ=#< zCrciF|L(%D2iHyA@483br~Pwe|HuEZ`<~19er8kQ#?}$L9rI$@eqY{m>-c4Vd~N;F zXP+1uylljT?%Kjh&%fOmJM`cO&U^Tqx4ZuP-El8plQ=V!0|K3*8}!pB2*O&)#QxidF!xn{|}XZ~>K;z^qaz5Q|j8(x0q>~W{ASUd8) zA%E+x1{a zckXN3|2qH7RWDpM>hSMBj?ai)@7d?N&09B**fm=7$2ZE)SaOR0f_Z~?_I!Wfg(F8E z{%vIVkps8)4?5-SOK;7*ef+{F{(HeOXY6$T#>w-K&OCL^yt7|;>W!zGo9;ZWxwFP| z{w1gVcKM8j!JDtTcHEzi$^B3>bjQt~wY{19cFbJ|7L04|p452jKEcjan=U@W{m|x> zW&0lVqU)LKFMsr`Eh}%o|D<2fJ@USqH+Fvh=&{RRo4fAP_s=;jwr1jjXy-3KAFyB7 zZj(-VeMJA3mrtMgr-e)1{jT`ygP+~haNXrk?C{HeH(WmdywD%kUsrzad8btE5x#EZ z8GDB=pYrUxW3Su%b^TWlT=CEy`v*R}c+kuRkGPj!`QzLRkGbxmuYUZy`;8;#j(z(6 z&M$75J?f(K8t)rgeN@SqIeX37_wLQVEgiD?>mQGs@M*{RV}@UN`?wQcfBBwFrSGZp zwk!X(|JaX)Uv%Vul6Snh;h1l4YkPIw*{@zUaOT}d9v*Zw;=vSs&U zPyg!L$>Uq^d+eF^PY-+Y+wlY5$eh{wNZZ)z^)EcS=7nf$!<-i1A>PEPC(qt+_X)QT zyzH-gFRr-np=rC_bzIGxLtfeP{Lsy_PY;|DyYI{$rYvf{dc_~UJ*w%hpKjjm!+Vc= zde55l2j_hG*=cvZ`^y`nj|i8I|JpO}tQ#)5V(;1~Upu1drs_L>duwa(#_u1$A+++0 zL3jQjBKI`>q-?g3p@}tvy!!vUZzVoExpFMlTk`I?$a_XGg>-Sl= z;+l(Fh7DQx(Y=pf`uCgND^D%|*FitMv}EXy{~7sn#q*1A7&7Jd-OqjHoCo)Bxp3ol z&z$k&!@I94E4*0p$oC7L?Rc!=!_1+hPW{Wg=%%OI4+*TV{lkXO+eU7;`LeGce{%N; zXPi6e&Zds@$9%Zuo4reCZan|P|BPLH+EF`A=otUxYqhQK{5tZ-b?!gxdF`kEP0ueL ze_G|kk6y7bd0Er>`x_M%>NiYORWvnM#+obYD{C8+tgLTrfK;f5vGB^;rsi<0q9#^Z zAFilvsA*JM6|bzQscopNt34&G9#)6@DpnH(nNRk7M=GnbszG$R&kjLFN64LA3CG$UTy+$&>I zq@}sKaa{wJiv_7NMezH&q0TL_Sh#`8)`cq@TB1^5X*kwY+t{$EIab@SQfN`QdFkAl zb(JfdjFsW$aKl=osX0~`Zm_;IH?FRT$v1V@m#T>UsG+JpYE-Uhj5RA%?HDs^*2QX@ z!*&t%lq%U!6Z6)2nEt3X*(Q@DOb-Fhjrq@k|&0_TO-Ewb0x>X#*pXZoFbG_G!m z&Z%7yt5nsn>!})JUS)Ib+VH}#>iD(cm{A|DuWww79xe)+CYkcWc`bDq6|)-FHm*i_ zDY3Y*s3;b=B!(AE57$(-)HP45Y-nt#t+Iz_&vVm?I@BJ8(<_@RWtr-Qs_nzoR^v`< ztdG{I?&~$O`g&SkIIF2FS}P@0SJ}O4uRX??Js4&+)Hc`3wqieL5B8!#xUjLYxv24G zHEnAJHOObyhU==G1zPp1Ra=r8e7&kTt7%$YV^d2E&9$(lVNPQshRovH`mp*HGGUc8 zx3((Qi0+@RRBenV9jSFQ|HHdNQCu5)^{cS96Cw=i7Q7^`*`G-IvW zbe#IyTm81CUZlqQw7N<)$WRTm#N5i&VO8sf$`y53hgnU*n2NR5He9WqYF4X(P-;;% z))s|hYip~*YM6v8>!(%L)vc(kT8$;Br)R2+xsBDeHMQYt=h>dMno++ZT&*^~S!#BR z)!QvwTt+qAqUPGF)$5BIe5M*cb-hF_W=6x>+E`;ly;}XAglKa_)v3Cov7st#Z3EWk ztiCjbn~i!^&&DdFsUfN+k>(mh&3_G(4>jtV!r|5GtMxK9y@q44hQ=Z6py~$o^ehakV5~7(xl&Efz1Bx< zqO;Vzys}sSFAO)g#2S`X*0qFpQ2#l+;%?tw!#;%3Af5thzHEr#3cPb8_!$*-tHw z#2VMlh*yQ9)@I_Ybu(6{ck$YW#^&0Z^=i*n+dR>59;u2{tgCFUiu6dV9$@FIrkSJm zixO;owVjY`etXF>M6Z2tlFokSLvQ1(f87OW;1DFYmZ!JjZv$6 zZ3;FvHBXzrVwIXX1XPt}b*vH9LyN*P!~|wF6%8ajSlp<-QN!HMoz)~Wd{4rXhKN1+ zRQGhF3{5rstJOZ(x~~j3SFNiysv_03F?-vo?1`IUjVemC8ft!x)ii20P*aLM;;QTc zqDERY)>vhaHnjltP#xSzRi?MpM`Z;UHLEFQaja5p#?lnAaI`WOUfftF`|tHlRgDcb zMoWV_QnKn6QB7rkuZ{$)S;2_Ls?@d-R)-))h5f%8?6JDq`r4jqtFh5*G&ntrW>te) zO$gI#o2;>+HrSe4HL2s!L!O&q&z|&@>hZbi*v{%6XKR;+S=?yvz}1|$x@S^R$0*ho zZLC%;WUWKAw%Vw{v{chnRjJmmMkXBV$;y@CChHJTeIILSQjhFOVUpE3lhk^KtJbO` zm~eBG3bCrLs=L~-H)Ff~)W`{12T|(yvZ1;6Sf8#2ZF9Kq=d8V4mMMzGb`2n zF5g-&P+jh9x+_iz#~Q81Y-+4p-56D)q@pIS<_K$eC{>e^+D)hf@RgOd>JS}!0qZck z=NYT9@mlo)Yw+1GP`lB!HL7(~FI26qZ(6B3rJ=gH(f(pR#3G%68x30xp$4%!W@xU6 zHmjklO4Qa^i)k`yYbvZKn;UBzs>5-^T7J({R{4fzb=+aqLe1oAgJ`g3iWRD?QD^tG zQCVe8%hCYHZkr439Zm6ms^?ksK+m(yRjNLf&CM~Rxk|0F{hit@n$2mZL~Hu zyS;l-oR?2)RL2tZoNN(J33*b?+D3X$-_shS>n)qnP^FG18dlD)k#cIu)r~F9Momp! zOB0U3or4n9+SYt6hecJg(^ngWz4KpNgPnhMowc1A*726LcdxE%T3@gJm#s~$Q-d|- zSzoO)ik1d@W3pEeX9N{9tBv~l%BUJF^(_tR8>3#$Y1Sd0y*suK7t~3_nkH+WR=uW< zEv$oHwWu1^noUNHb<|6reUlVS$HuMJ7h7}dHsxzldsc4eTze!DVs^;q0rFw0x z8puxdYoaa9RrWA#iLX_Y=ltM|d5ad!sZd8L>eQq{R+i8{MQp0JpNsP=RHZ8H*~K{= zh^VUDT$5w~eJ4ZB5 zo$6bf!*T1_Y}>+xXeri)>BLo3^xCMcPj4aTZ6T+!8#_lCi!ji6Ly(1Yn!cI zY405;whcKZlL-cA=GM5db`Vxqt39L|7d6$^5VQ7{&dg%ZE%p$zw0^bvzp@#lOMRnG zfz_t2zOjSLs;d{RuV2wv*K-14&C|a>V5w1ig9hu6!CGX~`UZ7`yT0BUuPVrzdDM=} zdaA`*_Xf4u_Us(gx9XaN(>nGt)qMNAiTU{2<_MOmj!m7eux5ec!C{MP`D!&qR7I?b zRPCT}H10g7RGlYSJ2B@O9Lzco?Secyn!rquh)yKWYsP#;7TlJLX1=>X&v{Ne7wqYN}J56L4v7}m# z(b2><|6Xu#RrKN&F*R1JD%I|@L7lrd)rG@Rqo%%59X6=BTFp~+jcS^z3fHPL3u|au z(_pi8m|_o+Sxvn!C8-ld>&&;z9(U2kbw<;gm^!tx{+Hs`5iB+*=k>Z{O*`H`>LrQ+XAgo`2S;ps@VUqK(&S0=NWU<*lDQhtL9D#s~Hxl zxwUt#i!Qj%YOpWFN$V6}q1$$XTkP5w*iSfTIOxpZUFKWSvT~kvWNUZF^e`UMWktLg zM{iD~+M;94bZ)gs9qSSuZ(Y6>Q>TWD)wZMdd|2S3h#HF3!OE7V@caflPb#9uknSmU z5zH!H&E@;j-s#rG@V>*hJ+m!)o2jZe(M9;X>tAX{{GH9SucgdVhp@6}c|2VXt<(v( z%%}F?v4=*by3*Qn3X2ol-#@Vs??Lo_rswLK9l20ld5SeJYEhQ}*Q&fSxniNN{A{}b z*!#t5My*wIf&Egc;+)2HbLA4cjaDP5>sQvrKy`gaT{pz~$k=tRrS~-N+;Ee1@+(or zHB&o?|KVAgvr$0egfR5*4A#PGakW|4Yya% zdNeO=U6QvS%GI3SbDPMlCaa*7v992#iQ2k^X}`w0K&`HtB4Jk3^v0H6*KK9)RP#e^ z!$hb2Ty;W%m(r!~-bt;Y<^9RlWtuGo7z&N&TSl- z*`lsmqTMFB~<6geM#-M zYhG%ab&l(;cT=>_1j6y6w>|J8b^WH-OL~w?tEKer9r?c3>4F-fvRZ1Ejx<(dwPbbB zk-e^7sx(2o0W@*4lw?0-QtyPtjlBnh1lX6KoR*C3L^m@<3ZDYxLTD@>#WrMmbWe+?x0u_{DT2zmwH8wP>D`V>L5oce@)c4qk zR9P!ct{B?q?-JAF&Mwj_)$4gxmn9AA*j1f6S|j&&rHap9?3$^U@TgTwvG#ygEAvyB z-mq5ABP&*}i`iEYu@dqYnp)8&b>Lj3npf6gVOU)-{M{9DwMAQj#jU3oH)_4l(|7y*JUXRs>ibN;X-;@$W!3s^mB4g@_fe~R z-qBQ*vrh5VyO#F*u07iZ%1hhWrzx^#R$)A64XfTKO}(D#X$7ZG@b0bMuswYu*8!xg zYVDadwVL8VbuF={*tQ4GIa|>|x6}wUtI0Zw>^VA+=eE7aASY9*A9}Bbd~a>})5F$< z4t03i(<;`OPzP{mfJKchv8r&AY7;Vtfvjs3*`!b&l|1N)FJpv>z#kQcbtPw)k}-j zyOqwt01iPNof)$#uMXUMy2W{&+Wyp=xZzlFHPlk&-Gy!Y$ZhY-N`@R4sZSd8^+AH3 z9*|N?=k`?ymFYWZhPv2dub}p6tg1DPRckF#7g*5GOJcR#CZYK&YFgCAOY8We=V(N= z3eGRoxl>HN^J)~EQ@O(VjEj9@U>}C!vly}@nW2}?#fXue zFjiOI`&Ki&Ja(>mDJXgeeTI6cMO}xqjsUDTFw~}@j$5k@^^t>>4dH5BdR+r5|L)f~STB(lIThzrY`ED&P@jBcly!_PX{N`8KO-TnAJ8lp6cufVvvIqDh@+ zt7RC-SX)NWp?F-xL>q_f7v-+woBUx9D)jJ1RvU*{Idc8_9)>YZxScw){k@YL= zZ`4=oanGd!l~z%|qN1uLrartBmot6!W;D+A)wJz=TjP9F?R-;beOFOoeF{N+KB=Zs zU0ABFt57Fy>gs2>A{wzSebla~u9H8ubL^a1Q>Rr-I%v{Chgpm(SJrbr!+Guy^+$QO zeSb*L_Y)^sFR8Z*Pqx0RlJ9zo_7ps{=ex;0-yPoboxkV1DLvm!-1ZW68092RJlxo4 z{=!+u&YE|ye7x3h{_c|tkE8gzQKk5MNsi|)RX^~hZa#A3GxY;&>gFf+y?2o9CVA?g z;sNsH_u@hF>@VWw5xC(oWQo?ze3XRlW)xqF~^k~}d? zyp7!bl6ZQXg|yw={Wbrg(-td4hPB+@7R6#Mla_H)F& zlhaL}K#qG<@py1@JmgM}mpq3YKe>}*k~=v8 za_`x)ULkTPCqnMzM9HJbX(e}ZlH^WK8+jHvX>ungL+<2c$=&D3dUcXJIeBs?r;8mq z#@>DRmy6uVag(Q!Q_7B?m-mr7Iev2ETv@LmxwBs7W0E^L z0dglNNbcJp>lGn)a-!r;PMkb}oFuuE(?;&(q{wr~$&foaS#l?*gWPNVB42gOlRG(G zjKl zl01!^c6Q7^X>ungLvCCk>y;yS>eET?{pjSl$WzGik~=x2@Ku>f;_;+`mqahuq2WlIJg$96z~}W0E^L0dnIK$qA7=IT3OvCrX}2 zPAmJ(lAk0uZV_)I_rcTTA$W$|xK(np=RcF>y7npV$NUfC z9*vi3+)wWPkK_b2Uas+o#^V}q)p(LT-6p>|q>cT0@ie&)o?*X1%6F2d;RW*YBjt>- zo4m%aer(^m?OWXbAA}{}MZWpZlH(>%!#(70!@cCKQzWO9{7{tlk$c~g@_ursoT`AmuyBO?ZJk|B00ECii|SZtP#&zXh-So+uZ&Z?w3ZJPP-ar{O;G{4&Y$ zlY37PH_6ZZqs%`6^6V!E*wbe@`Qt-nUJa2K22HTbN6C{>k{QGXBlb;$RUr;+a?ABpz#le@9L0rFGPUqSL9`YS}f@G_}?ggiSz#($iA z{x{M-3G(EDQa(w($5&FmjXbqj+OwT}(J-k`nmk!1<+J1$;rOA0Jhwo~capz?@t-G8 z&6V;6@`t~c`gfCi=Sg|jxZ?2;-b3o|CQqWgm;8B*|59>yQ1bocx1&BLc@*V?1lU4|#f)lrJSe0qyT2 zH;`|Vud9^&0C{r075gY7p&o<#pf$$xxT^5f(=^j9nSbI(cnBzbP3)F(xL#4A$1 zojiZ6l+TdQKTg^|OP-o0<#XiUZZG9K$)i)Hd>8p8&q{p?v}b_)7>ws2c^cz6L_P!KIYOSrc#D&-#P*&b4`Mtd z$;Y98+sJ(ZY0q}@%t~3`G}M9RC#yT(fUd&sl<$?<$C`IeB>$4Blh#qmG+Qz#!G52AcI z`EMv6B6sqmfQxqF4=8wVBl`}vp;UF1HL_mIz?DDCMbPo!l&@sYpVB=zx= zhiauh0rGqPA?1VQNt6$fKZomA5%N6B$H^DpCiw|+bCuL5Nq#N%k8R{hly4_LaE!E1 zn%uow^0VYSqI?H=5am0`Pd-uVpC>o!CBHyEq+ZH*lN)tX-gR*Cc$k6qbd&oUq`a4W z2I^l*9zuCP`6}xd%d4A7o@$Z&Ao&FqQofwrI9xHO|MAZ z>&m2jfjsrF-AVhdz|@S@H$zrF;ju z8`pI^$)84ko;>xD+Sl3z~lb<6f1A>WAe{U~{EM=75muSWS+a&sps-$p**4yjLyJTXzqr^%1r zU$(~#xvyK=vxEHpyyWM|L%43ACqD}FTNiooUy|QVJ`&}PLyG&o@V%6GlfRGpc*wKX zAJ9>^Qu6JP?<3C^q`XP~ne~TO)h$4t+$!bE$){j@50RULr2V7h&ps;oaq>LMx02t~ zF6EQt*};;ZB7gQvDc??>*j~zK$nU}R!z_6o<#XhpzbyHkGVJIZDch$Va1m zggm&nl#i27!}=!3y+6r#OOnTN{iKcD{j-#BC;#aHX`eKC@K-6HCBJ@xlzXlHWmIgYr4@G|K16Z$bGk^5{vD-%WlY${Ul5`#p#9Zt|B=-b0>TF8QV8kD|Pf zynym1`NO!r7a&icEcxZ+d%L7PL*(uXDIX=j4f%2M6w0@f|E-_oC&|4ye@T%ag8h3t zdA45alOf-GzT{`gqYY9%NB;9XDc?z+sFm_v_K z8z|pKo?0d4+sW7CdSIH|hx6qu`7QWEh#lnak7a++Nxlz`$MWPplrNBf_qL3mZt@_? zyZpuD;Xxd~xyhp_?|4|xLa)p#j+9_4-HweQO~@snS+QO2`L{?p&3e1LqfTg8Lq zmzIf_lMj1AJVZWli+F_m)1Sqok9M>t`O+K2v*dSQEnXlm`K!4155@Hf-7Ov@AAP-ef_xh4pC-TdPf|Wl-VQI2 zKlF%)x+O3V;ES2&p^58h}40&k0c$VCIfOrRa2%aa;#-x0K z+}k8>99`UxKDdiK0XNB0r$|nKJPS{d7vQbr=BbjCB~QUS$b)A{`A%}Cj zoZMM%lH6_mVS06IV@Lm{$erc3lRL}JkUQ<4C3ou6NghId^5jlCbdfvtDUdt$ag`PK zud`e)c^b zdF^xJuBpZ2A%`3{`A;uNc@Ozecqw`CQmK!R{Hxa`$4{Px2gq~C36j@hy~@c?hDXSQ zNsJ%z|8`1!;^a@Ezgo$ieovD79+8|j@^c;%Zzp$h(&Ya}eKO>i!aK;FoE-VJDBnfy zjQ;}p;TY%L1Fek-0QPr$p#Qw1qsI-__T=D!p7kr&{8a`(Tayh$E{2gvjAAbIqA$qA7s;SusI zJW6i-AUSbzH#|X}h9}8`TO}t$o`7e`egBs79pq_vp1d57yU0U7N=|{?+b!Nr9{fq% zm|5J9X}F6#`X4FpBTxP;?kCT|O>*}yQa(WLg$K!f@N)7HJVc&^N65Xu%5tOR33w}c z3f@MZhPRV@f0O(Sc@}OQTiniZryRNWzmnr7&%-_J#%RO3dC9#c;-%#7e&RmzP=9eh zc^+<(hXzRb0C^rBAvd>^@=@|2JV_pcr^plVcJdrNO`aYo%gvDI;aT#;ASs_CPrAhO z&H%3WLJ9!A6CU>^e9J#Zd z8ncW0C3)vQ_V{;^=izR0<1Q)hA>)X$#Of%HzB8s z{Ds$~e1W_UZX8$Kztn+sU_h#WUnx$mt-T@fRtdBYzV)dGdcEr$D|0@1J&)FT>9tx#kx4?>ETt zkgvQ=>f7KZW@`NPgD}$qA7! zMoyIcCw#6WPCj9hGoloqQ2;I>`6NaZyg=dGb~)w?KXs zey+b;D*jVH+OKu(hU z*1e=YZ5nSUzYjSX^7nUCVv(=u0_TDSU|tKHSQ&U1vx(Q zNAPotevJpnJCRdP-h$t+6(Vo_O4c_@{tDq% z@GN-&IXUt_W4rDo{{q`}H~BEpuAqb5`CLIK`M{ZS9NtC#&nYsl3gqv= zjU~nHzXNjI|aXB-N^Bi|NS+okE!t>`3U5M$on55IT7;jv0icVG015p ze-!g@lKgs%{}lQD$Vrpmj?af@$Pf5fw#N=~A96a$E0B{X{}^5%pMo4?X>mU`qP&az zXSj!aDsoE6&q8@0`EFP*ll(a31j!d5r<{BISwKJC-!$i@+dq+egoDkO8z;@$H~9V z$oADrelv2~$Va^^!$SEan#QQ-$jhp0;Aty*a-nm{uJ{;pM zLY_rVocsyQ0}1j1=7ALXe=!fVlb4}<2l--@&yjD!JWwDX@9f_-?mDTsU!KQ$dB~m5 z346(%&k6g;Uqg;b?tK0^K<<40IYR#P>)5}uW85al-@$T|C&eNs-S$PMW*~zc(yHejai<$mb)clYGhF zWWDm_bDx!Z7RZ+&#|Rbo;~^=@ago1+->2#!uR=~K`FzyJN4^^MG0E$Z6C^(wKWAM| z{v1Bv9wA?goH+Tu*e@i=U!N%JnYP1iI6{p zoGAG!l zkdxMUmi$NLcAty^ds8jl@L*t#~Mj+ADfkS@R5Is-*0A;Cy)~)H<43L{sVF%ejfcrnrAo$nlW>fWLF$B_A0>Ka&3$ zIVSmnTcth$jhB=E6*&=dvssoKC7%sXkUxl=B>8%rFSLCH3zjuYh-xKZoVIRu=cyhxoloZt^+E@sf8S$45R1zn8#IJ^>yee-Sz5j<+Q_HPmYkHv)8xA&CriF7_6r>v?<60MoG$Wm{Jcy-<3??9KOTS_H~Hsr+1@=G zFC{+=Iezkmm~Tyu2gyz3gveWtk#>$~JWhTba$3oE%SldB<0YhMW}np^KzG?HbRJ--4VD@*VK|v~wEIli!V;0{Py^>DIVwb#ebb zgd7j~fgQ45UXA<6pGJ;Jz7RjB5YTuz`76kYkiU)oifTMT{w{Ko)F+#2_i51cLgFCV!dpX2pwJU~7S zIpyT9du00xX*^24CvpmG7jS!ZzZoq zP8<1-?@3Nd<7x6{$&hcjUD`RT z@f>*&IeGHkQJ*f2caxup9M_uSew>LMx5mBXHOTRiU;K=;vtQ!@@-@gQCqEtM%OQkDPAuA^1IkMy$9W z9e0zrBgac#h0hIRl z)Oe8mJLH7O>u|j;qVYI+H*#9Z>*mXRnACWR{J+Ralh<`hJ7+ZBK|XMf>`yz%H{p6_ zUgHJw9g$-+7x&{$$Z=`hLp~firR3A`dvbglH_7)vPLTW}T<_rs&PO0J;(`=zdTvmIjHdv`9sKwlJEJef=G4_zAfkPkynDfu2(%6j=UZjz5cPLO;Oa>_LxAs>yLIC&F} zdlMQ@l8-}9iu`rVW9=HxkWWNT2l>AEoOVv*dGaa9DUk1RowRee#$Bfr_iq_;Jmil! ze_vALKJr<}G0FcvOwJ1e8ZRebfSd?<72d~>YCJ){3^_^iPjTMVrtx<2O5|k7Z`&Ey ze>9#WuSHIt{J;;Szq&NuO}+*>u2YNq@e=&r7`Mi~pPT5^co+H2$mu4(z&ZXo zt+*c@caz_N954CowbIU|8uydmhnxWUj`$pPP~#!;$B+{xcj5D9agDclP^O~gnTlN52G4SkXIrnN&cqu`5%q9lh-0AL;f_j_pHWq{{Y8hevJpnFF;N?`AHZ*A&p1LFGEg( ze1P-*m&V)3uSQNg`GBOfPg>(y@|%#8BcHuhwu?@Ucai@EIo;&Tkz<@y+>egC$?ri< zfPBegQlFs4L*x%3CrTd0c|ly`t>jN2r;U6QKG&4ec$)lq@ecBm`M7RFe)r{4pS;EkyLIQhF+uLSvj;Yspw$VrjkkK>^N`Ak>3Q*lOKtk0{QYQWc+lKuYtSHE$-jx$nlVOeJeR$@_7YuANgG5nB-UC z_&Gp+8@!x+DRLs@EjV9}lAjAtkXIllNxla@SJ_5B9^OtKK~9GJVf?&9R^vJHHOR@6 z`+t=7?9zBQ`6yyTnxQvXu&kKlgt>yZ;6HC0=_{lHAd~T9o1rL%xgq#rh(>2oX5%Lr9`H(pIyLJQsgfD++RES;qVOk_sHoWzphEz zGpF%9`OnBHkl%#k@NSK}E-3Eb{y{nJ^^h;d?{D;ypAYwu4@8bh{`G6JUIFrPzlxWW z4@ORe{MRliA0?l^ziclF@*&8{kpKLel+ThE;5qW0kdr4r;Rwm;(s(!daOAiyEN=fY zST<4=7H4C30HHU%XH1pCq4IC7vR`0Xb>%Q?Xtd^2g9V9pryTPAB<(Sg$;J1npBG zPb0^;xVRs0MUIR7b>w)+A3{zk`HpBGANh|MKPLH;$O)1kj`k@hUyt^QkiUqWIQbUj zB*^!{dL_x;_XEfrtMdJzbepAPGJb*@50RgYoGAHKA4pDIl;Tc6bH_{gKa{hA5A=Iy9_!_fbv^-~O3)Ty4iY@CPfW2fyG_%Sj#2;Ez&H4&NpG-5kfq@TPJm z@VDrB=+yB!d=KT6@F!ev$F+2P4S$MqDj(cj$Khuzr|NheexP!i@XNkuIW5QA@Q!ji z@E!E`lDdwk@RunkgCDK$Qx6;;!v9-2WB7GCKNOBn;m0Uv4lne1?1ke?c&3~+{1o*Q zeQ0wXgID42RZboLqFwDg+;F@F|DbZ(@Roj8EpfaHKSMbw{I%+*@Av>dR?ZN9jB-Yf z7w`*}GljoTIWxx>@GmQ834g0{R*pxfZm#3y%BjNJx{j(j-hj`Q(}L%EeJpl7f#0Z{ zF8spO?(aRv`|w{VX8?b{&WE|@0pCVBrQ<93R?oJ_!RWNj zb-b;v>mSE!@Ovny0pD7mXJ|Se!?#mT0>516jgI3zcwISt`1%@K_ssDezN2zR@L%h9 z;Kz7@k9q+(j zsGJ`BlKa{|OdZeQhbt$C&t75kJal{vPn9!)f9(p(nL0j)AFG@a{`86EEFE9N-=Un! zhd0;pgo`bw>UbS~qH>z>t4^?-7W_W?oLd`yl5#rmZ=7g3UB^@SsmjUV`{;Fmf#XB? zN0l>%H+QoAQ#d|_pQW5R{Qk;WIKG6RqntJTVOsa-^v!h)UWFIRsl(s&L!0M@<1P5- zm6O8jUCZgipYlfY0sJE64B=L7ePna~zp9)n{7ZUYxaN2R{x#*a;3w<2V)zerTnYR#<#ge%Z`nNe9Ph)gP|g7U zF1=2YJ3fM6shk47m%fKMaeM~9MmY<3w3n?{>G%qMt#YD|Zm#2*IxDtl;le&f4+H$2QmZHs#ddFH%n3@h1HD%8B7S>+}3=$2;&ll+%N6`vF_8)bR}d z7v<#ev(K`eq2putKa?|pzf}E99iPLudXC<=g72h$mX5FCTPvq>#^ySHxK z|Erx>7mhFC+bd@czeej7eSC8rgID1@D5nm;LGKGU9B;uNrJOeW0qQ4lybIq^IVt=> zn&-ab1NhF$8N#dj`=KMp3-~U|nZh5X{WEiX0pC?QOZcUlpOxd$XmcI+P)-&8E8V|p zjyK?YE2jnjhSoiHJb^!1IbHZ(TCbktefWOL8NeT=^~xO|!S`2A0Y6CVHF10fKTtUf z_|LRnrQ<93!ODrw++4@MYP~9s*Wk}nP6K|c)~o4w41a-g68M`mKOM(=@E0qm4}Xm2 zCv!Z9zf3tJ_!;VF?DzzJxN>Ij-IOzTyoA46IV<>cbzE!5D`#!4?-9zW!S_*4-SH;; zNae)vcPppucn5xra(eLhYkpG4Gx)K}$>DdXpP}Pp_*;}Sf!|5}OdX%Y->#ezeixm8 zmX5FC?@~_X6PxS!Ssho^@jCpy%4x#Cpzi^-9B;!H^c?TQFIUb0{w3w)j*sA1 zDyM*VbzBq2XYgy3vw%NR{gjTc;MXcA`qbt+9<24MI9`Kaubc+_vpTM(<1ze3HFkUgzgamm_yOu??sy6RwQ^SQ?X+HN$19)S zT;JQ2Q-i-v{nQM z)z8%NIee?<>h&M^;o-d^*{o{BYemCVb;m=e*EyvsNdn%^`-%8(G z@50Y2?e&usejnvz@V#!g`T_i&@*#XX<&5E9+)md&j!)qaRL&g!)jjq4kK;@D_R3kq z<7=&-=$y@U3|@urpqx7V<@;Md4S4!}^A`M3%4x%I(0V0~ci}rKCxu7)9ChFE0eolW z4B?;A-;)|SUch%z&J_NX+~#@a_yWGGa+dJZo?4fy9YKTXGD_zRSiz>nAO#dRF-!C$PLKKzVt z+InU1 z;a7jma%zq@;NMeD3;xD4EGLG4N5|WRzgG1<_%~HQfFGvM5#{i=%17`Ysm}ub@A{nf z1b*v6>jM9=au)EjK555W!tbolORwNd6TbfqR-eFk zRecBk5Y_kLdwkP!GWf?XGatdEgCgtbw*-LF-4dFd~K7S1Vz4pljeyqNCKXrT#zg;;c z{HZ^;ewL1};cMkoF5H~wZS+06Dtz1PEWZx_r*fL`J9e~v)q>w5Z^Q5MJbT@y122{~ zZWn%%JcZv&IT`$L{eIB^ex`f~zrS+E@RRg=ZUy{o`4s*@<;>yDZ`u4T;9t5*>j>XL zIcxasS6fc>`OS6wn{uk~os?6DFR!zl2K-6iwtiah$1A4||IBwRCxPErIbHY@m6O5` z(ERk_uhRFP2JroqGlc(H^D~0qQ(nLiQqB~9tLA40pUM~Tj&hdp^EE#!_)+rc3!Cfs zQsq?P57+mXYmPVIuU1YAe%OJwUa{i|{58ty!neK5_DRq2KKuyf4B)@j=e}~sNAOfR z1^iXVSw9oUXYiwxvw(j{Ii=$(_?wjzeQ|Rg->IC6<2Cp@l+%Eppq!@TFNwtmpQ@Zb{Ic)b{>dEA;b$mk1ixMTf9&`K{wd|m;K%E@=8l)}^OUoKpQD_$72Y$J7dhj1zWjU$i8T=aMV(&C01qXW{q~zMXQ`@E0m4nryCP z@G5+J<<#LjDyQLi3;rnOwBg(7`Agz>7rwJ{QutQN={r7v@2Z?3d>g%fIC8vz@2Q+A z{AJ&_^Ty2a1w2;H68=lwzgCV%mu#-%QZk5_6aGHs#PG{B&uzy$@LV}P_@8zDNgdDN zA5u;ZFVxS_@iF{#^{Z2&_{!w`hzlU-X_|Mc&2fnxZ>A~-% zoIZS^`)LM$g?t3RD!k4EzsI-r`~v>B&zsNTH^0ohgx^PfuHZL(!RpuWgAX&WOgGo- zAr`Q zpQxWPd|%~E;NQK-#+|~qRn8p#4CR#YUDVGK{s!f&;m=l1+nZuo*VGq`)qz%@WV9EZTP#Dlfb{FoG$z|%1Pn-DyI*Br*a1Hqm(m* zk4~}o5k~MI$P4(Jl{1CU4zZjW{HO8-{4L5^!Vf*qa#rwD<r?| zzdPC1D}ld5IR*S^-A^a*vvvQP!QZQ#1^mZ4&zJC-&hsny$;yc?+dSTi*1ZDXU+Z3j zpRSw+{PW6b!f#hj3_nXb34G@(b$)=~P2Pi_tDHXk=Q=-R@Jn=l$l(_%X9WL)9>2!$ z9lvOOPT*fs&J6w@J>JdX_f}2`|Aul_@CTk``+4nn<(r%9`)%da;O}o)P96SXc@zFU z<;3vgPO^DuJKll+P&qyL9iO$F)bR}dE9KQe zDrf2V8vbw3x9j1`<(upHx3%E{or znAvd+93R3TuADLaobdSs$EWa}lrx84A3mSp_!9nK%2~s=)%hyAVsjmXSK)gqrw%_> z^W1Q}1>aXWZTK6*@83G!g+D_%Dg1t#=f2|u__LKWgkPa~9ywmX4^_?-{vOTG%<%>M zFy$=a?+ULoI3CS5*YUrVQ-xor&z032Z@`aMP78jMzIPBip1|L%oG$z?`uus%@jg6L z&H(;wy*`k`-zXo!->IAee#N)#{yu@zEr@7wYiSD>MQWG zrKE>y$HedoXS<3>-bB3PPpoL9sYCWG~q|T+>Wc|cpLs}<#gZ|9%eaR$5Z(KQBDT`o#toY z_z=EU&KQ2Yatg<%@P8_24!@UvCwbxc62A2d?7DOf-%B~sw>Q@@con{la_aD#wO$R! zTk!iTrwxCo<|lEy3xAMuQuyiWr|Wa!r!Ny6@03G z){a-cv$?(}E2jp3s$LJQ!(XNIb`$<#<;3tKo@MjghCk-V_W0O=pQ)T4{Ef;<;crk* z20uqRIlQCe8p5BdoH6_YbiLGq|A&6>y$%1C#_hl#Ft+vW!c%z)zg9UJymqnehXMQ^6Z0Yb`^p)^ z@3D*ZQ#d|_|42D=c)7ccyKsC-SI!!Kw!WtpeRp%cf>+@`S56&%oBqB@!|@jUX63Zu zuie4sCvm(BzePDI{O@0}`RO}8fZwW|A^dB~8983Sf2W)&{3z|8nd1xi@0GKJ@A_3c zu9f4_wVUgByK<`V-Sl_;YK}MHYvr`yuTVd+;|ct)%IU)YP5ty7@5BG0oB{m8Pul$C zj*sAXI@GTJ3-}Xuvwb*mdAnYzJlLHIni~S>$sJ$O|)efTYU9VT-;hi|K#5&X+~U2*LA1iqbeX7FuywRN96 zUcw)soE5xYwVbu%mG5n??}L?7gCD1yy5mjwLzNT5j|hLy(eVy^2j%qO?@~_ccm{u@ za&q`RKWqDE==d1kP|gHi)8pyX@i}}a<&^M$UTgg<9bdzDR!-&no9kHU@vG{19sW4w zG~uV}e%f-p4S&3HI`FgfxYKn!h3}@E41QhT=4ase5Wa_U#_*B$PvQ6!{zT=>;RDU{ z!to_MR?Zs!g>&qF8ePA+j=`(&eU(#(-$U284fq>%ecOhA^wTzO0)K*jKc@>nP~)cX z%azlIKVLZm_#w&}()YK1MvfQou5zaEiTatrpQ(Np@K-5k3ICaLR`Ay=C%R#Cy^d5) z6@I*qtLAtE{$}O0;ODBJ82%*nlfd7hoG$!(%IU#hp`1Sa1mz6iuhwzpj*sA{DyM+| z=qy|J3H1Q0e!J>R_n*>8U#6TDy#H~lU&Bv6 z%I3fFgUxlkS~)fNFZDY=b@<`>yO}Zk|ERtVKT`EQ_>NavpDBE6c@F=K=4S|hn?4^k zf#0C|Dg1M)FX3NP{Stnf>MJ*H&fEECTmMz~4d1YNuEVd_JU8KQ*YnU8d~vSjx8Xlg zP6xh^_DR?A6n?XEGWdhOZ{rReAHsj9oH6`o$|)S5!q>`~!~d%9?JgW&!teA#z3&4b zsh{Yk&2B8@>oSx%-_@T-fz*iU8{WOQaL!Xx$!C$VN0{+N{TF%7r8T_@%S-?-&-f~LESMXz$ z6a8p&9si);=d3thgCD1y20T_jO~+&S+m(~RZ&Xgl@g97joId;?%E=th;U_9*1b?}5 z#*R^eJ z4}L$@r;g|FC+qV_L&wMP^VR1B{&eL`9iPK5R89$hiLRHH@Mp>^KiQoB?@nxfs_+~1 zy?`eCqvu(D3;x)Kc?bRyJ@4+qUwo@w7iI7ts-FS;$LePc-{}$?w}9VS@2k$?uU0<` z_$$=U8b124goIPtx}~`;HIbU(~t};d?1(U*Fy#}jz|=7&cA_y2nIW6d*o{T(}O zsUN~e@&aCer`6BlnZ{kflM}4Ighz)wa?7}D`05?jXY{kpc?dZbc*v>4a~*F39&(!S zkkf$|`&pkU{4v+t{j?9S?O}cA@PqDb>pq0%ORF#77wl#E6Zmp>tDnO^r0-!Z;L$Bs zzl3+g?VsEK-$sj~Z9ZvzR^i{$`^9zmd7rZSCj1wwkKymo@9`$^@)MTRh2Nq46u!`P zT?RicT<^gTJ;U-x@U`xb1^hl2TKyEhRQ()&le~lH`|B325@KB$^ zpLd7l_u>CK&%iI;(~fHh5A_8+{gs{HX7IXhFW@8HUc!H&*V9(;cf82@@7=sP&sXbl zxrF~(zhB+?)n@(k^gihvevRHo>*_peqeap8HP1bGZ%@n3;IF&T{^bBZRQ(X1==KEO z(RpkRzsD;re*q8utl$@Pt$qy;{Zw>b563%IT?2lc&Py?TrPtHi@UTz1@JsYQY!5!s z<533x>l-zn@aR^X{~^4o+Y|WDbv~cN!{hG)9{OLw57FcA8XoR<)n9M!w>|Vd;u^g7 zTdQlr|8!5g-?iXjeiHbts_(!fmzcD!qNxIV1teiqITBh@wF*J!@ zoAZ2xu0tyDu>b4u!&KjZhx!;E91>bicJ+8sS{j~CbHrFLnT?2l_>6X)iN58j!pTgrq z9<}8>)rUtN^8z0FoWMh$b9mVQ3;1-ar)?Q`1)u-M=4}lR_s5Ek!>Xcaq`C(D+1iIK zc=gUUZVGQ6s(FCN@)11bEZ`xhgy%1`{K_Bp+jv|EIWausr10pE_V07}Ub;>g!F#&B zfOlVG{gm*LysB}+JbzNJpV#0MU8gnS|9+GG%N9JWV;lZ1JlVw&;b+~+?nguTLeJC3@bB(x^#%ONPcomvZ@bid2A|3o@Z04j{BrpU z{zLg1evQ0-`{q6j=jRSQdadn~E-ozF{+#dGx{TpZl~3S5 ze}UCc;a``};eV7b;MdBR@LjYISMcrR(H)!fx$TYCPX&Iv_D>D|2-Vl&cb7Ne_uR|! zTkxCpzET_hVAUt^Kd8PB5Bs5jhy5^thy5^zXPU1Pp8m<^E7Jek(L~Yf^*p5tU+CX= z;L+=}KjHC_<{3QX58!j%9>Jfk$K^3RJnm274>{V7WCoAdcDxICuG?$)W5fFq`gdV| zrs}5#5B)UZdnl&`PyTHEwBeC%_uwHXgO~qq_v-BU$3wJ#r8#*pZeeIb_4!*y}#3fN4njIci;S|E!RC6 zJb#P%2p)1uc*t48Lr(RtoBdz*P@A6`JY0V^;n%9Z1rM*cB=FU{t^Xc8((OJx*6jg& z8(p7_;14`R_ZN6qx2N!j9Aot}csQSz@ZI!!?-Cy7XARGFyQX~+_Q~<#eIocjUu_jF z_)0kmJRENa9*#GK|KRhM--n0m(j0z?u78H`P+!3Br}><~!+g%+Ptoh53wX$1!7n|_ z`d`CCedX_)`#Dx!1AesTzXgwUyARLbYWp^WXKynf!~b=C3%^p=y;Jxx_p$rk41S<| z0e`2wguhU}f?wRW{5AY+dF3CQ^S1rdt-cE1R$hl+ukVF5;9rxs;IrK=KZZ}_3H+De zvUTskua)=Ur)VBh_^aeYcwh4{g8#R?fQR*(z{7gY;9XKR}6p0*w(iVPvjkVSl=!@tZxbr>)VHi^&P?6d)U0p z;LZ2i{dWz||24n%`iJelC>lm~yP^LL{zW|=wcwF%r|^-+?ZfNuvwp_#kYB*Vb?h8| z@7U&l0T1;ncz9oC4gc45&Yd>rVXC?Y{3)7;82%Z354sKS>}BiHg`Z!y{(JCH--kDK zdkEi6{S@%GKg{wc@JP4k@bB%Q`Gkk-%oY6Ws$auHeO0gLh5fT{_?-dxY)_k?CVVUP z--3tNu@m?un$HeAReve`LVX{$4-ft4@SW8E5FTFVEZ{A@-Z+7W{W*h=)aMfZ5Up>d z*D1q%e&jU!uL?X|r`6yq<+k9@((~&!Jj_E1ADv+L-#$D#(Y%0%oCQ4Ol<<&K`?t;e zW5|i&A*T%wIT<|UjNu`tfQOtVJmggWeY4MyQ-g<`1Riqw@Q{%tYhxVz2I zny&kEbhpj@Q@e+5)3wj5@Iv)9cwe{c@O&G~Z@^0(R}yZ_GMqYs&{;J4^`+!`LvOI7t1&Yze6(Eh6i5BK*b{Hv;O!9#r; zUaF5C{2E=KWbjXX*!mg3W8EIXzo_~#Jk(F%6ctPY^krqQ`I-& zQ+W%XKgsfA_~^;zZFsb=d58WK^DaD*_u$b}tv-b(@(iBK2k_>8mXpJyw)qe~myhAi zr(1mi5A!^MC;MCd6dvm5@Tuw-@Z=emQ^HsBB|JXB>euk-ndVV-b6-UVnpfbV&ni4o zeI1_58}RfX%WuL%ehWTLtiBCTpJkrFs|TBR;HkU|pUP8s_t}=yhbPZ5&)~UyK-c|l z2(Lfaaz^k%K880BvHAjD$fxk6WA!umNIr*mpKtXG_(;BlcVA%jEBIW#hF1@@`sm)9 z`z@7M;f1^gpT5v?>hS2r<_&oE67v?k*)@;hVSU^1us;*WyYQ*p; z^jF)sIXvW#;HB!v@aQ#`Q@}&c1YTAB3|^Pd;URwk5BVj$shkx&*ZaI{_=%U?b<1^B zZQITL_I%aX;kT+jhQCwwZTLxFviu(WZ}JrWS>@;O`ze12f0lA4@a?~4<4)n9yTZJL z|NLt6C45hL<-VKqbE!<5@27jjJX8?b+=4T9llj;ljcU3=! zw^YA?-&OT%_{&uv-EVW=&QpCIzNgl!0e_I@p$)%}>J#`Mv@R+92F-sT{x?`;=s_(%s zQvCq_de!If7puO2-#WH_=I|TzdnPOR*?L{2djHLN7@li6P59~Z1pbP1tUiU;!g&V% z1bG49RX&Fwsr(iElcE3GX8#`!{lg!i`~-ef=pX(Cy)Kc%->C0X7w}a3b`D=DX9fSz zr)}P<57_Mg2{&r~;dlOlc>@2i_H7FP!FQ}ahd=Lo<^}u@*O|}ZZ_#|N;OFY~sOkeZ z`#(VEjVAohx}SF8$-8&l^7z<;=kgRjm-peNJcG{%mOp^U?=jEe+560g@Tt6j7e_vL zOaBviwy(W@GKJUQZ}~HLQ$B}>{ul66^(FlT%U{BCdGw&o^$Pu0;GzF2e6E}typ-4B z-4m^!20YHqoA6xo*>XIAC%OIZO-k4A;pFrat-gTI<#TxQ0jpopRbPGZ=6r^nCOqUM zboH6im7l{yegO~pC472^_5-~5llcl>U7N4rsXThf=JAf?75H3Ug-3t3{2F}qSMxeN z{hN6MzLGcL@jtD;1<&L$d@66lqiCls_v-}Sly~S`S$!9t%6sssybmAfb_NgYn$z!Z z$2)|N9%w#-&nxC*c(ko~0UzDXd;-tzZa#&Vb@LfKd8qjuUaHRpJm10UOZe(e=1X|G zmH7&u$=CF)tv=d*b3d=-6?l4rt#1`x$ZPP`iB{i)Cp$cP%f4#C3waDLA8hq)c>N*f z2|ST^;OX{O--YL@@58GPxB3j8$_MaBIXS#3AHq}l2%bIE#vQ{W^*@D|+gSY!K3AV} zc&_{fd{wuc5+2K!@X^Dpeg*&66t$$hu%le*&#$D59~;Gxe1 zp1sZb>A>UvG4H{vFNwGGIe?exkKv)80v@hICh+tvmNSLt@)=#%6?4ZI zbiEG0g3pz|hS%R}{Z#9l>z>PN@KRofH#5s=!AI{kkKxVtnJ4hBZioL3?}xrzzmL>I zeX;kGx2#tRzu*%4mwkABAFI#cy@RcO054Ua!{4m>A-s$&e+0i^Z24n&^FM7L7VsU; zwfYHsx}()k;kPM&29F+X^>cW7j^!`l@nfvMgs)V;gg2X3zk;8le%A2xaaJEaY;(We z{Tl110#6=q^;P%{S6h7zUf+nD5`(F)s*|Pd3{N9@X7JRg))yMEdG(T;4vbWVI z@M|nFufxw&eFL7QR^Nm_T)+F#f+z2_ z`WSwt&WCMy{C=xX;MYIHj<*A^e!%Lx@V`IM>U;3+$yT4jZ&Q6AK0U?iGx#>Yvir*b zUOm<7bNB;PKZJL+|EKWg-|g{k2JgyCdbD%&fB$a@AIYPKZ|$Q%lhxZv%Sqzco=s8598+WFzyf@_VWlnZQHnGco=sI z597|@Vca>q+~4vS@Zw0=hLFzy5%#+|~$xHEXYXZdq@_f_T# z_(;BjhjG{NFmCi8oBLsYgymP@&D6XK5BUwpoA5Ah3!cBh@?-ewX!ABa%ySnW`su;L zxGB6m#`62{xNn}p!?;6u7yKO!+9fzr|+#6J!?;a&7`FxQzSqW$;bGhkJdE3ghjDxGFwZG`{yrPG4-ez!@G$NW z9>yKP!|{&c@d-9=0T1KO;9=Z3JdC@5hvO~b-4kuxB|MB9?YOxg!nhT97`F#6MqYqk60&mJY@aR;lPvK$QK0J(@!K2Vcokco=s8598+WFzyf@&Ko0m@oDR43=iW@ z;bGhvJd8VshjAD1d~D;E@NnK(!^61Iqp=_K`d9^?oNM`2c<~wY8ay0t6CTEG!Nc*! z@Nk}N!>gaOaTB^;zv{umxG6l0+lPnegBg6JaR=})&m(vkcMK2X7VxmX6L@jH9q$w# z#$CX}xFtM{yM%}H#tL2*Htrf8*0=hY&HWR`t--^%b$GabZotdW+qg}57`F`%<0kMh zZU-L5?ZT6bY}_6^%yR}0;|}0q+#Ft9Z23cY{SxyLy!vJH2|SEDg@HhA7);IXR2?)!*R9X;d2Ese6E}}eDzHmH-RTtnD^je z+!P+h?Zc}x%gNxGd;pKHwE7V|j5~&haSM2ImE}y}rF;r6zGL-s_!oa?@B1v^)z91K zMwal4er@$Dc=>y)j~=_Z?oU6~>MQW%4_04;|L9LvUx#O^Z^F0zht;>>bJe%uJL-M0 z1fKlS`su=-8Qyn;&u_Q-KKyxG+xv7GJh{W_b9hhnLwNm9RzHT{px1FK)aZ`J&l@cB(vzk)w_H=F-8yt%geN^^5R3?FCnQ-zm0-a7o@THgk|P<;#j z2=x=g=jtbcU-5Lk4+~HKZ2kA(=c_)2&sCqnfB0gXp8>r77t0^Qf4RT)GlJ);FW`T_ z(()(pB}Ro{oFOUoa?zpnZm-n_-?NAO$pIj%8$ zuKEf5frr|9P2urxEPoDP=Q$v!hh4U`Ru`qXWHi(`taS3wfYPm9ccAA{KUuF z{e1|Zs(uXrhx#et^@A*b3jgUomOq1Ms$amLq`#|D!b{b!;9sj){uhA1^<-hGlrL{PvCz$#rp5S_PhwI5I{1$xc{XA z-?sWb{8gW{`V5{ZKZoB#*Ly>F`8CTQ!w-3{sCL7-|$nLpBX&*hSe|N_5H2B zgy*VX!JnePle>mbFSGp0uABSe`Bzwe6<$|;9sW~Y4>aJ_%PqeJk5nJS(<`h#fq(rb z>!$RCu9pVzOzS&@U##CL9l`4}>!*Mp75+{oysP>d{AWu$ z-Z^}v`Vzj+y==cN;ic-=@Q3K{Sx38Vu6zAk)_)a#v#vjD@UH3`@ZI%%unEtvwEP(U ztJwN)!>6k6z~7|npDsMV%JNhApLBli!(*Kv2Jll~V)LKFqiZaG1i#{O||c{4C)0`&#`H{%Kvmt>D%BS$)*nT=!#jJywCI%CEscru|um zPgUQ9&!1=W(}H)^PaFQnZ(4lcr|-@K^lE^4IY6605K5zPTUn z_Zq9O!t=-4{MX_C(YE7lz>8h1z6F1g&Ob3c`!B0c;MeK?(t+1oR^NkvU?1y0g%?k= z`V79c`X9i%${)gS)b|cX@MI6mFW_HL{RCd@WA!umJN5e896s9D>Pz@%wSSiI_$gMu zhF{#X`HA+}T=!J-^*>oqy4PD1HaR@w%@w& zrs`ApWJjy-!@H^`caHCw>D zx;|OL|MW0B-W9w%wflRt=jOVfce?dcftRYU!C(J$tFOaH-?98A{JFbWKP`CmTB~ov z@BRdA>R;S$z-wNY$tCmFhG2U#_wF8Nka^Eq@5VPW2;r zewx)6@V8%O`4f0HwE7wR5Y^A&%@13B36E62gx62E`ZfFqS6V;O6F1j=uKFrG`L5O1 z;M0#-egpnU)i>ekN3A}FA9jlEpEkU!{nLS;c9Qkeg%_$%;ddHZeji>v!}=M(f1vMi z=kVm?RzHI8euU+Z;d9kb;IGvDOySLu<s*Zmm1 zK3Rd6XIeis_z~~5{5m{8%j%o(pXv3D7JT{%t8c@1((4-ue08?fcj0I1da?(vf6D6n z@Ty)f%HYYTtv-i;L(d0?@N8`LWBA*ZU%;p5Sp5{<)9V#8c=Q>oU%=n2`VwCMtktjJ zKl%?_uQfdWoYhzM+1wBR^AX!`Rd{@!)z{(8Z&-Z;zEXV)-ap;?iQ&-&mY=}){;<_| z;9b@C;QuqU`V>A@eFlH%N3DJUuU}~W4B@xlYR5Z*XR0sY&(-Ut6ZrJ=mOq0Zv#;gP z;n5eZzJxzh^SOi<7g_xpzOCjniZ|Cizu4-l@KOIF{3U-cBL@50kdtv-cMo@MoY`25ROKY-t$*Ozj5@fE8d!EaXn7@mIB>L>8~ z>+xs`kFU4-Is6tq9xdQ2)i2>|JzlKf$qkktJ!x~@KdkGA3OrSP4gNSizSQBR>YMO) z>+z)ppDwJQHvBj}z9jJY2Ug#Ouk`rRgV%4g`aXPjJ-%e{=q9Vr;lI`Sa|kb0KZc*A z^Jf7serWkqc&zj14Bq^a)i2=h*8RPNkA7_REBG^Ye_z9+pICk6$(#FOtKZuFr3&w= zz7Bt(`f0%Ds&Bz}P(Lv|E3Kad{!N`9I`H~Wt-c5UfzA&py!tb%&)`?+{yTtIe{S_d zcth8FBY6J5R$svPd6UiO1YS<9eg=QG^5^jS*R8&Ue_QV_Ea92z*YML?_IMZVySeV! zH!Qyjf8^QLe+`~pX7vsD{dIn5!n1E$eGGq@?(c1QcDdDe;IGks>%y}utUiT5PW!D7 zFI7K)AEU>+93Iase+0je9`DBRk?JS#Sp84o^Q$a>4&Pe+FW{qZTm2IL0`z@`p`j+Ll;fLw^CxJJwwE8amJk4hh zUj2^M_u;SAd}i=W^*Q_#n$ID8rTQ^^AMJ+%-kn=NQ~1Z!{|r7?{Q~|%^J#{fK4JMC zc=sr)@4+wE>z^sSex%iB@W<+RhX(MG>WAHV)7JpYlsUfO`~sQ15`@bt%4 zAHzSS_b=M;>?c;=fnTl94|m~(>Qnezl;4N1R6l^9ccRUI4$n&KX9PbxT>ryYf3^Av z{AgXzPvP~yS^XS-)?=)n1w2vx68;?>?+RZ1spUsc+g$gPb$wfbcU515pZMRlf9mk~ z@0Q<$-=_K&yttF?w>JC%`n#?Pyx7X>yYL0sn3HY@SAS2`RTx$2UtHn_!0kR{ipC;^%?xJ zdjDtu@2Y+XKScQ>c%k|N{-#G;KNEO(KV=5*sD2I)^(Fjqs$arG{TkkRj?HKE^v!h- z^;P%__5Fw%Jk&Sf$Lwgw+k}Vu82)ZOe{aJ>eFuJq>bvkzpTgg+=Tm)ns2{*jSA7l- z^&|L$548Cl!$bW9-d6n-9_r`tUwpyx7w|&QPnYmp_4?Hc-u#8#U!wgt*Zof6{0}cx zUxPoWuzu?B<}WS33IENFR^NiBzp?r@e7}3!{z>4YTdlqef5g`;zXwl$YxRBj_WIq+ z3_iNe>T~$5zp(rvJo=s0kKy0g!|DroqW-7wZT7VK8N93d1^kH5S$zqg|H=AU!Jn7g ze6Hcso2|a`jLrRU!S$A3g=ea-!;e*c13prH3x3xNEI)?l+CK^W5xZM`2OhoA`tQLn zyo()g3LhP7^%*?U=j8_QQvK)f^E97Bc)GOw5qvit?-)K({S-d`jeQSv2Cv>~Uc$ro zQkU>@I*B|iMEx!xeg2xXsPvG^V9=fHz120wI zg+~vzoF2SF2|GkbCcv#0Oyx7OaZNT#vnK$93ybUi-w)zBK%6stn#OhOcDeuFhORPSFm$#b_ z;LWSeb9ns@^C5hGh4~0x%*@Ahecz;Td;)K3+&R4a#@3eozkpA5TqQgkT0d)e^-S~V zz|H-TXxtin{u!&U(^cPs$LCvp46pvlyaTU)aQ7|8)rDuO@57rnT22NpR6nF^{zvd| ze;>o6wdGIY-FMjh&)|vbOL#a>F5zL^6!$W-nkN#%k_Tb(7H@B>B3J<@#+lQ}IpTWD^Th0KUYkhOahwyM*BY60|-!VMY z7mm*ypTonvE#Rq+Yej#k9q$?*)y=EP=03@GFt5SmhnqLy#UspH@a`kc6L@xzc?X`$ zyYRWZ2hX2nIVn6o*t`!f)s zKMQ!sS;0roxB4}_kVntj+z+Au3VfydDm;u^qpSZqJU!If7+>Mdk@S zmUrN(ybBNG_UP(Ag^!fehliXTK7XB*S6^v42|Sf| z;GzGn<2}bSc(-Tc4&bRghll+$q^o{J*W=)ruKi!Y>#wqYCh%~)bGqsm@Tt6nhyIuF z=+!pv3LeH?)75|U?9Kfa`mex4P92_V+y*?8H{qfG7CiJH!^603y82JxQ;pk!hny7N ze2vXpA0EpycqSjflh;~K4xh`1@X*i5@v-AmczT45JA-HPIXuk&0zOrJ2@icP>6-r) zJbs<^vxbM9>T@>t+f?;6_*`CxS5wPxz~}NNJdE3NJa)Y8c=!M3)=v*UJ<>ddM@O0W z;oW!@cRE){Tkks zN6*{bZ=wGRJXL)a9>%RXUU$6Vc0$H9U+P z9kRLKLjM)`>VuY3g@>G)<4wm~@X&t@k5994+wd@M0uTLn;L*@>y6}+Gb3Ai=01y4= z@TSHc!o#>Dc<6r&Pd;M(7x0iXaeVIh0v`G=;j53@xJ!8T4D%JdJ2GFxqchE;&gOnA z+kz)&o5%3-ljd#sN}j;WPg#8j9@ZswybllkXYlOPmOp@p z{2U(k&k!DuEoTG|Ib+ACj?dts|2aH6$Hra2!?-0p^uL6M{#Wpjvv$1teC#*vs~SA? zUxz2>TK^4r7`F)z{kP!t&sa_j4>@heyN>tZq5l*feb&b9!<(No&)}i|0lYZR>T`Nw zKBQ}&3&$t$(Ek)(TwwV#y7K4n(EkFSU1&KaJk0;n@#qEr@BLGOhyJVd&)c{)co?@1 z5B)db%`aF^6CQF}jwg+UhK8A<>3wUv{ zjXQyNC+1Ul{Y&OEc<6KP_`>m(<7;^6KROiqP5oEkq5mp8z0~@z!9)Lb#~Y5vj!r zhKF$zc<8?a5A|KgdyZ%D_(1DtK)=d-1P|km;o*Jc0v=s$IWu_3nZrZQ0$!@06+Gmu z;UOn_(dK@LzHR-~;320D4>=8ZT{$s4A^!z3J*Dbcvm?&Jmd`FA!kHa z&IBG`XY)3NS8p(1z*pZhFX3I)ui?qU>Z2ELu2&|nz{BUDs_^i6j2b-G`JwK310LqB z37@K;7Ch9)j&~gI!o%m>dhpPH>UiJr%<+Nax#L5}M~;sjFC3pZK6QNN_}uY@r4j&~gII^J_Ub-eF*=J>$z-0`8~ zBge;%7miOHpE^EseD3(d@zU|7<15G4jz?W*|2tlFyyke_@rL6~$6Joaj<+389Pc>Z zb-d?z>UiJr%<+Nax#L5}M~;sjFC3pZK6QNN_}uY@?0?6r@b31H z-|{)t8vWgm+u}`lxDIK-bLGVJCq86LPMfalrNr@$<6Xylj;D_I9nTyeIG#H`bbRFa z*zv;giQ`kpXO7PuUpQVmzI1%$_}cO4WzK$fyy|$(@w(#;$D59~9FHAuJDxb+alGqz z&+*jpzT=tW1IKg6hmMaNA3I(+K5=~N_{{OS;|s@2$Cr+;9A7&g9p>zR$E%Ll9Irdx zaJ=bw%kkLpw&RK89ml(l_Z&|h?>nA3K5#sDeCYVd@v-BD;}gfHj?WyQJHBwdbbJY~ z-*uNQkNYcl@_xInsJwi0pNH#;DtsEQPvGHsZk?{{jRsxU8%@Vsj>nF-9ZwwZINo)< z=XmOP-|@`xf#bR3L&rysj~y=@pEy2seCGJv@rC21<4ea^j;|e$Ua`5)!@jLJUUj_Y zc-`@a<4wm~j>nF-9ZwwZINo)<=XmOP-|@`xf#bR3L&rysj~y=@pEy2seCGJv@rC21 z<4ea^j;|e$4tMsy<5kCNj@KP;INo%;<#_CP+wsKlj^ka&dyc1$_Z`n1A2^;nK6HHK z_}KBn@rmP8c(JoxSIppDyy9@ZZ#v#` zJa)Y8c;a}+@vh@N$5Y4qj%SV!9M2seIzDoI?0Dh$#PKOz*Q+zSu2<)dFB~r&Upl^W zeC>GDbN0XERmW?N*Bx&--gLa>cyGS3CRJ z@v7rB$Lo$a9B(?_ay)jt?ResN$MLS?J;zhW`;KRh4;;@OA38pAd`#DMNI}OFdyytl8c;E5N z@qy#H<3q?(!*#{j@xt+m<5S0Hj?W!mI9@uw zbbRIb+VSYM&VF{h>UhoZy5kMUn~t{}j~#D2o;codyz6++@zn9Y==jL-vEzl~6UV2H&m5mSzHq#BeChbg@wMa8>zw`Xc-8Tm z<8{XyjyD}|IUYOShL3bzk-)=sMGqdXD^hr->xw=+Tvud{4;;@OA38pAeC&AP_{8z4 z<1@$SjxQW99bY=Wa(wN0lsfy_@v7rB$Lo$a9B(?_ay)jt?RY}hbwY=(>x3>{^*y@k zQ^)&`XO0gX&mA8+K5~5Qc;WcO@u}l8$LEeO94{STI=*sz?RfNhXa751b-dbw!)5>xu*(t}8l@cOCCJo;u!lJac^Dc<%Vn z@sZnh@ulM{$Jg+=t}CLWH}`+IuBgGobwwRs>bjx<57!k<$6NGpKBw!v-F7^2yyJM+ z@t)(U<9)|7#|Mt*jt?ClIX-s0aD3wU)bW|)bH^8smyRzTUpc;ZJUV7`KZku-alGny z&GEY94ab{~w;YchZ#$ki-f_I^c+c_F@xJ4k;{(TY$A^xO93MMgI6iTF>iEp@x#J7R zOUIXvuN+@H9=*}o|BhE3uQ^_Kyy1A$@s{JU<88+i$2*R99q&1wI^K6Yb9~@g{>3&$spPaU5*K8Mebw$E2A;MKZ)4zq->^!<@FJX~)?{muPcS55^U&hu5rYmV0) zZ_ssp(xmJ9q~&<*`2R=Ood;|0|94%F6!1_Aqyl(zY`MZ+ec6%9)vR+gY( z<1$W0872-cDIf$y8@1IG7b0uegKOBsRs*yeMIbGUsenyeiUC=|qNWPs@V!3od*-}m zp1(hSe>~=z+~<3pSCZ$QbMA98@Ep7VFTpGD8oU8-!8`CCd;lN8C-5130bjv4@E!aB zKfy2X8~g$HzU=+}ZRc;`K6n5gf=A#ncmke+XW%(_0bYVv;5B#y-hy}FJ@^1Vf=}Qx z_yWFyZ{R!l0e*sC;5YaK?)^O2Ke!JbfQR4_cnqF^r{EcQ4qkwl;1zfc-hj8@9e58u zfREr4_$=->uijY1?K#FSZe4MR=hi3UcD=p8Z}11)`}weEb=Mody6cSqJOq!xWAFq# z1<$~9@B+L9ufS{Y2D}CDzeAT@B{n=zrb(s2i*GwuzzqLJOB^D zBk&kJ0Z+j*@Ep7VFTpGD8oU8-!8`CCd;lN8C-5130bjv4@E!aBKfy2X8~g$H{w>%) zxDOtHhu{%-44#0e;2C%hUVxY26?hHafVbeC`2Jy2C8^~MA4{X*C?xDOtHhu{%-44#0e;2C%hUVxY26?hHafVbcscn>~+ zkKhyd48DM`;2Zc3et@6g7x)eSfP23P_7CoZ2jC%i1RjGY;3;?po`VaHt#aqEf!d<37sXYd7l1>e+NZ|v%>HxBR<`~tthA8_v%!=Ax? z@BlmnkHBN_1Uv=Lz;o~dyacbnYw!lV1@FLn@Bw@TpTKAE1$+hHz<2Ni`~<(iZ}11) z`z5e{a34GX55Xhw7(4+_!87n2yZ|r3EASe;0dK)O@E&{sAHgT^8GHd>!8h<7`~W|} zFYp`u0r&oG*gv=r9)O475qJ!qi2J|%)fK6@J+COltt(3L({)89Ze3A>H{dOJ2i}7Z z;3N2??s{WZcfGNIuizW_4t{{2;1~D}{(yVG6!r}6g9qRtcmy7UC*Ub~2A+c#;3aqk zUV}H_EqDjsgAd>%_yj(KFW@Wq2EKzI;3xP6euF>Y-oFF;2lv4P@DMx#kHHi06g&gZ z!3*#byaKPm8}Jsq1Mk5H@DY3hpTQUK6?_BV!4L2g`~tthA8_yAh5dv3;`bkXbwwa< zT@j00S0v*8r@g-aGZnY4$iQ>(0=xvTz-#aZyan&nU2pX2t~Uno5qtul!58oqd;{OX z5AYNG0>8l@aPP}u&)`0I03L!z;4ydto`PrKId}nHf>+=*cmv*oci=tv06v0G;4}CF zzJhPyJNN;9f?wb__yg{BuzzqLJOB^DBk&kJ0Z+j*@Ep7VFTpGD8oU8-!8`CCd;lN8 zC-5130bjv4@E!aBKfy2Y@vC25af@45y#0IccWzzbi>IzD0&(k#5Ih2p!4vQlJOj_c z3-A)WQg^*ktGnK4z+3PRyayk^NAL-J24BEe@C|$iKfq7$3;YIuz`cL}{myN-Z{R+7 z03L!z;4ydto`PrKId}nHf>+=*cmv*oci=tv06v0G;4}CFzJhPyJNN;9f?wb__yg|! z2e5x|A3OjL!6Wb(JONL^Gw>X|058ES@EW`UZ^1k89(({F!6)z;d;wp@>p%4BicQ?Q z;uN>8xWsGM6}PxupC54VD`3yyK6n5gf=A#ncmke+XW%(_0bYVv;5B%o?)s-ycm30W z_uvEg2tI+&;0yQ)zJc%H2lxqof#2W{xc8N?e{df>01v?<@EAM+Pr)5x1^b#Yfi_o49qw4t{{2;1~D}{(yV`5$qY< z2M@qQ@CZBxPt;uxr0T8*GVmO{058ES@EW`UZ^1k89(({F!6)z;d;wp~+kKhyd48DM`;2Zc3 zet@6g7x)eSfO}sB`v>>I1Mm<$0*}EH@Dw})&%q1u61)Ph#as8hq7k>Q=*6uo2Jzi> z#VBrFF@ewE3-}7Yf$!i4_z8Z2-{23p_sd|<;68Yu?s_9scfApT$KVNg3Z8-I;01UI zUV+!(4R{OQf%o78_y|6M&)^IA3ci8w;0O2#eu3ZM54iUq!~Vg2@BlmnkHBN_1Uv=L zz;o~dyacbnYw!lV1@FLn@Bw@TpTKAE1$+hHz<2Ni`~<(iZ}11)`%hs1;68W&9)d^U zF?a%=f@kWkD{^t`ib~wNq89f){q=pDjktA13*LeE-~;#wK7r5R3-}7Yf$!i4_z8Z2 z-{6nB>kaQeg*}7&-~o6D9)ZW;33v*gf#=`_cnMyC*We9!3*LeE-~;#wK7r5R3-}7Y zf$!i4_z8Z2-{23p_n*Q3!F})mJOq!xWAFq#1<$~9@B+L9ufS{Y2D}CDzeAT@B{n=zrb(s2i*JRuzzqLJOB^HWA}BCNZh(26}PU)#ADYLxwv&j0bYVv z;5B#y-hy}FJ@^1Vf=}Qx_yWFyZ{R!l0e*sC;5YcAZap)=p22%r5rZe-DR>5+gBRc>cm-aAH{dOJ2i}7Z;3N11K7%jnt_N0i z_w|$wdX|058ES@EW`UZ^1k8 z9(({F!6)z;d;wp2d}>>1n#55Pn42s{Q) zz*F!HJO?kpOYjQ325-Py@D98OAJkoMjOwm8Ch!@20bjv4@E!aBKfy2X8~g$Hehus& z+y@W9L+}VZ22a3K@C-Z$FThLi3cLnyz+3PRyayk^NAL-J24BEe@C|$iKfq7$3;YIu zz`b7!`v>>I1Mm<$0*}EH@Dw})&%q1u61)Ph!5i=vyaVsS2k;Sm5-(j>%<5nMG4JpH zZxgq!*u_`Z6^FR}J@Ev;z;Eye+#6xf;68W&9)d^UF?a%=f@k14cmZC5SKu{xqwad6 zRd>D7f%o78_y|6M&)^IA3ci8w;0O2#eu3ZM54iX1VE^DgcmN)PN8mAd0-l0r;5m2! zUV>NPHFyKwf_LCO_y9hFPvA570=|N8;5+yMeu7`%H~0hY{d(9xxDOtHhu{%-44#0e z;2C%hUVxY26?hHafVbkl`#MM`ZqF-5aqEgn{B~V2i(6ML;4AnBzJnj&C-?<^gFoQj zZ-706```h12p)mQ;0bsNo`L7!1$e3MI;2u}9a4ig;4OFu-h&U|BlrY9gD>DK_y)d% zAK)kW1%87+;NEY9{e%190eA==fydwpcnY3@=imi+30{HM;0<^S-hubv1NaC&fzRLz z_zJ#(@8Adc34Vd!;19U>n_&OoK6n5gf=A#ncmke+XW%(_As&C->+2w;xOGJ%Ze7ue zhoABK_aL3Pbwv+8fREr4_zb>)uizW_4t{{2>h6Aesk{5>4gP?8zZv!n?t=&5A$SBH zgD2oAcm|$>7vLp$1zv+U;4OFu-h&U|BlrY9gD>DK_y)d%AK)kW1%87+;NEY6{e%19 z0eA==fydwpcnY3@=imi+30{HM;0<^S-hubv1NaC&fzRLz_zJ#(@8Adc34Vd!;19Sr z!T!O0@BlmnkHBN`_M2Z_k%(JYCysk`3T!4L2g`~tthA8_xt!k)o>@BlmnkHBN_1Uv=Lz;o~dyacbnYw!lV1@FLn z@Bw@TpTKAE1$+hHz<2Ni`~<(iZ}11)`!8Vs;68W&9)d^UF?a%=f@k14cmZC5SKu{x z1Kxsn;63;NK7vo+Gx!3&f^XnE_yK-`U*I?R1MdBouz&H{b%if(T@i^}SH$A2>xx9& zx*`S7z;o~dyacbnYw!lV1@FLn@Bw^OcfB#GyWW_=7w{E)1K+_9@Duz3zri1H@4tdQ zgZtnCcnBVW$KVNg3Z8-I;01UIUV+!(4R{OQf%o78_y|6M&)^IA3ci8w;0O2#eu3ZM z54iVV!~Vg2@BlmnkHBN_1Uv=Lz;o~dyacbnYw!lV1@FLn@Bw@TpTKAE1$+hHz<2Ni z{1m^x<@LPc61T4K{+suEwyt7vLp$1zv+U;4OFu z-h&U|BlrY9gD>DK_@?eUYFBq1b%3AX7x)eSfP4S#`~BOV-@twF06YYbz+>NPHFyKwf_LCO_y9hFPvA57BJN$Uu2{vbD-Ln%ic|b_U2%!qb@&E< zz`frFdj|Kx1Mm<$0*}EH@Dw})&%q1u61)Ph!5i=vyaVsS2k;SmQg^*EtGnJ8l@aPN1({=t3l06YYbz+>8l@aPN1*p2201v?<@EAM+Pr)a-E~W+?z*K{ zcdsAR-Rnp2348`$z*q1Md%_yj(KFW@Wq2EKzI;3xP6euF>Y-tUF|gZtnCcnBVW$KVNgDt`X; zS65`>))l3=bwwp!yRN9ktt%Sv7Q6%R!3XdWd;*`r7w{E)1K+_9@Duz3zri1H@Atu; z!F})mJOq!xWAFq#1<$~9@B+L9ufS_{*Bgzx>x~w?1Mk5H@DY3hpTQUK6?_BV!4L2g z`~tthA8_yY!~Vg2@BlmnkHBN_1Uv=Lz;o~dyacbnYw!lV1@FLn@Bw@TpTKAE1$+hH zz<2Ni`~<(iZ}11)`vb6la34Gnzd!EtKl-_vp}2KLB5qxgijS@5+gBRc>cm-aAH{dOJ2i}7Z;3N11K7%jdEBFS!gCF20_yvB8m*4)?6_2|6 zIo|$%_kRD@6@mEfx*`;}u86>6@B};s&%kr=0=xvTz-#aZyan&Td+-5#1fRfX@CAGY z-@te91N;QPz;Eye+*{x8+4lJc?t=&5A$SBHtGnJv)Ln0+;2C%hUVxY26?hHafVbcs zcn>~+kKhyd48DM`;2Zc3et@6g7x)eSfO~%k_7CoZ2jC%i1RjGY;3;?po`Vy1a;`~I)*=k)$C>>1n# z55Pn42s{Q)z*F!HJO?kpOYjQ325-Py@D98OAHYZO348`$z*q1MdyQXM22a3K@C-Z$FThLi3cLnyz+3PRyayk^NAL-J24BEe@C|$i zKfq7$3;YIuz`d`5{e%190eA==fydwpcnY3@=imi+30{HM;0<^S-hubv1NaC&iJz_? zW^wC{MZEp$*Y|1c;?^67c>1n#55Pn42s{Q)z*F!HJO?kp zOYjQ325-Py@D98OAHYZO348`$z*q1Md)uizW_4t{{2;1~D}{(yV` zgY4h!{0-a(55Pn42s{Q)z*F!HJO?kpOYjQ325-Py@J>AbPOs-1y}0$pAnv=@&*Ih_ zi+JgJV->gF*uZ!21N;QPz;Eye+}mK!;68W&9)d^UF?a%=f@k14cmZC5SKu{x1Kxsn z;63;NK7vo+Gx!3&f^Xovy6cBS-Cb8t@Jrnt=T>*edBDB@5%v%6g9qRtcmy7UC*Ub~ z2A+c#;3aqkUV}H_EqDjsgAd>%_yj(KFW@Wq2EKzI;3xP6euF>Y-v0#q2lv4P@DMx# zkHHi06g&gZ!3*#byb|BP^Q$*%aqEpn{Iot1x84}Ud)FJIy1Twj;4}CFzJhPyJNN;9 zf?wb__yg|!QP?xM4<3Mr;1PHXo`9#|8F&s}fS2GEcn#iwx8NOk4?cj8;1l?)?mA&n zcjwUxzJc%R)-&qXGvF8a4gP?8|1<0#+y@W9L+}VZ22a3K@C-Z$FThLi3cLnyz+3PR zyayk^NAL-J24BEe@C|$iKfq7$3;YIuz`Z{P`v>>I1Mm<$0*}EH@Dw}~zg=(S;?^65 zxP3jP7PsDL#8=lFt++kk=)imM0el3Xz-RCUdX|058ES@EW`UZ^1k89(({F!6)z;d{K8DvZ}id*}!-31N;QPz;Eye z-1`%-e{df>01v?<@EAM+Pr)) zuizW_4t{{2;1~D}{(yTs>>u0*55Pn4NPPa->+=|kTW=)d-eeAT@B{n= zzrb(s2i*HQ*fY2f9)O475qJ!qfT!RYcn)5Gm*5q64c>sa;2n4mK7fzl6Zj0ifUn>i z_^xixXTVQ&*Gm`p4gP?8Ul02S_rU}35Ih2p!4vQlJOj_c3-A)W0!M2Bx~LYnE^5TBi&}B(qE6hpXcV_Dn#98&@cQ>Yv-pQSgRkJ5 zy1Q=g>hAh{fS=$O_znJmdw&Y{4DN#m;30Sf9)l;~DR>5+gBRc>cm-aAH{dOJ2i}7Z z;3N11K7%jdEBFS!gCF20_yvB0Kj7Y>1n# z55Pn42s{Q)z*F!HJO?kpOYjQ325-Py@D98OAHYZO348`$z*lwG?VGym_FdhcfC zpWqkx4gP?82kal*2M@qQ@CZBxPry^~3_J%fz)SE7yasQ;TksCN2Oq@kdCMqn_mK&F z24BEe@C|$iKfq7$3;YIuz`bvP{e%190eA==fyd(c=e)Wi5x1^L#qD`ZCT`DLa&g;3 zA>O(UDaGx1OC@g4TWWE8-qMKM^Oj!Rx@ZvZ-N!SkyX)ixK7%jdEBFS!gCF20_yvB0 zKj7Z~3VR0k!2|FRJOYow6Yvx~1JA(=@DjWNufZGe7Q6%R!3XdWd;*`r7w{E)1K+_9 zb=Ntkx;uX_@LSy-=TUdZ@%}9AAKV8Iz(eo|JO)p|Q}7Ht2QR=&@Cv*JZ@^pd4!j2+ zz(?>2d=|GZTEy)>xPousJNN;9f?wb__yg|!IoLnA4<3Mr;1PHXo`9#|nRxr-Uf;)( zi(3~J;?_l_`0Bc%55+gBRc> zcm-aAH|nl4TXol&9eA(qjx&Id>h||p@ELpoU%@x<9sB@4!7uO|`~mmA5%v%6g9qRt zcmy7UC*Ub~2A+#suNLBV9Vo#o@EW`UZ^1k89(({F!6)z;d;wp(x};dNmX8-E}e- zuYbbpeJjL!=cV}Qx~mdD-Ro;{>(xg6C%^vOR^0okFYmF>C1O<>(xWuy>F+uU1u)v8~g$HzUlp*?f7rtK6n5gf=A#n zcmke+XW%(_0bYVv;5B#y-hy}FJ@^1Vf=}Qx_yWFyZ{R!l0e*sC;5YaK?tL@tAKV8I z)ZO(nRChfYfye6ZIElJDPO9!+pQ*do=imi+30{HM;0<^S-hubv1NaC&fzRLz_zJ#( z@8Adc34Vd!;?}E=xLxPHZ-M=T```h12p)mQ;0bsNo`L7!1$YTwf!E*-cnjW%hhO&k zx^pjXy*h|nua4r@tCP6(>MU-(x~RKeUB#_eH*xFLUEF&05Vu}E#jRH_aoh6^{)pT2 zRqrpn-@iRyeG~8h<=6Y~i(9V-;^mjTdM_03|HYR_;`JB5jvtHnKgE5&f%yI}y^fQL z+w;{-{Qg&7ug}F}=Y@D)zFuF8&+b0bh@Y-kTXFlmbl^Ss06v0G;4}CFzJhPyJNN;9 zf?wb__yg{J>-#<1`~L>+g9qRtcmy7UC*Ub~2A+c#;3aqkUV}H_EqDjsgAd>%_yj(K zFY2xvS9N#3Z{WMSJI>--}gyS@3>`~BPN1M%4XcZK5id5OSd@B};s&%kr=0=xvTz-#aZyan&Td+-5# z1fRfX@CAGY-@te91N;QPz;Eye-1|%K_iX!o1NXrL@DMx#kHHi06g&gZ!3%ZQfu*{; zK2+c}cmv*oci=tv06v0G;4}CFzN)+TZBuve+YWw!pWqkx4gP?8e;M`~+kKhyd48DM`;G6jUue+WRw_ZKOtyfQR z`*%H;xcwZJTikw*$|G+7uE+a7-tXUf^-bJ*)fcy3jl`{sV)4>-Q6m0f&)^w&4qkwl z;1zfc-hj8@9e58ufREr4_zb>)uizW_4t{{2;1~D}{(yUb<^7&*S8w1xcmN)PN8mAd z0-l0r;5m2!UV>NPwYs~%H|p;G-hy}FJ@^1Vf=}Qx_yWFyZ{R!lq3+(d6Z}$l@8=Ev zfO~%x_7CoZ2jC%i1RjGY;3;?}Ze5g%+xcFAm*5q64c>sa;2n4mK7fzl6Zj0ifUn>i z_zr%6pW@-a@#>;W+`8x%?_EDU;ND+*zyJEnUdMkEw=VL!MKHx+oHFkI((+ z=i|lV_rLl2coOljd3h?HJI};h=ehXoyij-VTPc3J*H_}cd*5pD)Ojavz1NGc?#~^> z?K~a9C-5130bjv4@E!aBKfy2X8~g$H{`&hp+xzwg?t=&5A$SBHgD2oAcm|$>7vLp$ z1zv+U;4OFu-h&U|BlrY9gD>DK_y)eKyKXtuU7wub7x)eSfO|LWAKV8Iz(eo|JO)qH z-TRh;XW+TId!GyN61)Ph!5i=vyaVsS2k;Sm61U!)#qD~yfUn>i_zr%6pWqkx4gP?8 ze*^Xp?t=&5A$SBHgD2prc-g)>CsY4&_w$6st@jG>Qrvp461U!~#jW=maqGQS+eAT@B{n=zrb(s2i*HxuzzqLJOB^DBk)+=T?Z0%*C8o*2A+c#;3aqkUV}H_EqDjs zgAeNNeH+0ib@zVG>h3s;x_kW!zJc%H2lxqof#2W{xc9eV|KiqrzPQ~-0`L$#0*}EH z@Dw})&%q1u61)Ph!5i=vyaVsS2k=pR{l%~TnZ)h+-Yjmtw}7wW)_a?{_1-RSy?2OP z@15e-dzZNN-YtH+zJ0_~*G1m{`F{VU^EdI-y>Gs_{oaj0+A)_weixSgjZcm-aAH{dOJ2i}7Z;3N11K7%jdEBFS!gCF20_yvB0Kj7Z~^?uLx zd4B`aI6N@CkedU%*%J4SWYb zz)$cC{04v2-TUVK->`phA3RWZ#}C!r=OqG~+kKhyd48DM`;2Zc3et@6g7x)eSfP2sT{inb5)q8K^)_cDA?Rp~+FMrAFIHCCN zJQBCwi^Z+?5^?LjRNQ(m6SwbkE5)sgDs|UIwfKiUgSX%vcn>~+kKhyd48DM`;2Zc3 zet@6g7x)eSfP3Hee$V##dIR^t1Mm<$0*}EH@Dw})&%q1u61)Ph!5i=vyaVsS2k;Sm zQg`>?S>4@#7w{E)1K+_9@Duz3zri1H@Be}QgZtnCcnBVW$KVNg3Z8-I;01UIUV+!( z4R|YVUDS!&b*Tp*z(?>2dz!nUS|G}@X zd-meC^8tJWpTKAE1$+hHz<2Ni`~<(iZ}11)`#Z2_a34GX55Xhw7(4+_!87n2yZ|r3 zEASe;0dK)O@E&{sAHgT^8GHd>!8dhx-P_e&FCE|~_yvB0Kj7Zqh5dv3-~o6D9)ZW; z33v*gf#=|by8C>U>hAMZf!E*-cnjWv_uvEgC~mzpiQ9c-24BEe@C|$iKfq7$3;YIu zz`g$u_7CoZ2jC%i1RjGY;`7(M`XLp!=SZ2j{d>t=-2S~}A>O*)D8=nLQYCJ^REt|L zHR9Gwt++i$8pN%OMs@dbPU0W-48DM`;2Zc3et@6g7x)eSfO~%r_6+WW2jC%i1RjGY z;3;?po`V} z?~2|&`hU-}>%beh4<3Mr;1PHXo`9#|8F&s}fS2GEcn#iwx8NOk4?cj8;1l=^zKB~F zt>U(y4SWYbz)$cC{04u(y?+4q5AK5p;30Sf9)l<9?mCdFyX!y(o{Nuv?A1kuxOGt} zZe3J~@2;8l@b$31VJ`VN|?t=&5A$SBHgD2oAcm|$>7vLp$1zv+U;4OFu z-h&U|BlrY9gD>DK_y)d>u0*55Pn42s{Q)z*F!HJO?k- z?fIm-J)aa`U5C`-)sa;2n4mK7fzlle+sn&g$;-xPY(V8~6@>fS=%(xOLGjZe8?%d;cKpAKV8I zz(eo|JO)p|Q}7Ht2QR=&@Cv*JZ@^pe^Ut{FGvd}oy|{JJAYT6I*KtPi-uWbM&x>Yp z>!L;6zK*tv+t<-HaqFT}+`8xzUtJg7;ve=5?!CdD!F})mJOq!xWAFq#1<$~9@B+L9 zufS{Y2D}CDzeAT@B{n=zrb(s2i*HkuzzqLJOB^DBXxH_jn&=# zGyzY+Gw>X|058ES@EW`UZ^1k89(({F!6)z;d;wp<-PPUa_W(b^FYp`u0rx)s z{r;_s-o))b;)4g^A$SBHgD2oAcm|$>7vLp$1zv+U;4OFu-h&U~;o*8l+`4EIw=SB+ zt&0|M>!MZMx@Z%(F51Pdiw<$?qEpRa2-o!ub89V?F!6Wb(JONL^ zGw>X|058ES@EW`UZ^1k89(({F!6)z;d;wpWId}nHf>+=*cmv*oci=tv06v0G;4}CFzJhPyJNN;9f?w+H z^M0$l&-(-JeHYk2xDOtPTNj1mc78?RF?a%=f@k14cmZC5SKu{x1Kxsn;63;NK7vo+ zv$*#SuP$1|t&3K1>!MBEx@Z@-E;_`mi%xOtqD$Pm=oYswdc>`Z{O|gH|JFr;c=$tJ z-(M7pf7mm444#0e;2C%hUVxY26?hHafVbcscn>~+kKhyd48DM`;2Zc3et@6g7x)eS zfP3HV{hn=~Z{R+703L!z;4ydto`PrKIe4M&?vJIqyFXUowYob_qwbE=f_LifIK8?% z&Hz4wPvA570=|N8;5+yMeu7`%H~0hY`LKU*A3OjL!6Wck+`1?cxAQaw&%kr=0=xvT zz-#aZyan&Td+-5#1fRfX@CAGY-^9a@fAzpFZe4VUTNj<;_WPzUar=GKx48Yj=||oD zzG?3h-|yeL=uOURAHU%@xJz)Rf zK6n5gf=A#ncmke+XW%(_0bYVv;^p^z^+T=he%@3gZoS%y_uu<XZ?K$2c z9)8N}^`p4;>LhNxI*VJcZsOKOyLjum=n(&~XYdRB27kc4e+c#r?t=&5A$SBHgD2oA zcm|$>7vLp$1zv+U;4OFu-h&U|BlrY9gD>DK_y)d%AK)kW1%87+;NB<0{=t29cOMMY z-F+|wkHBN_1Uv=Lz;o~dyacbnYw!lV1@FLn@Bw@TpTKAE1$+hH)ZI>Yb+?lP`~<(m zt&47PyN^8J-uHz4gZtnCcnBVW$KVNg3Z8-I;01UIUV+!(4R|Zwexv(-cyW7<*Na;h z4dV85rABf4cY>3+b!MBEx@Z@lUH@F_?!36gSNHly+;;8-uxD@| zJOB^DBk&kJ0Z+j*@Ep7VFTpGD8oU8-!8`CCd;lN8C-5130bjv4@E!aBKfy2X8~g$H zz8CBt+y@W9L+}VZR(JQoMBSb5DR>5+gBRc>cm-aAH{dOJ2i}7Z;3N11K7%jdEBFS! zgCF20_@(Z4a)UqWZa?1lhW(3MFZtqj9|^!i@CZBxPry^~3_J%fz)SE7yasQ;TksCN z2Oq#k@%zucdTA23UYf8l@aPL!L|LSfhzPj5qhz(j{)a zbcu3&-uHdKf9s_;aqA^t+8!_R(w9WW8Mou}X#cn)5Gm*5q64c>sa z;2n4mK7fzl6Zj0ifUn>i_zr%6pWqkx4gP?8-|zjNZC7vLK6n5gf=A#ncmke+XW%(_ z0bYVv;I+EDuQlrKd~d-!@E&{sAHgT^8GHd>!8h<7`~W|}FYp`u0rx`KKe!JbfQR6b zy4y*t?sk%Zr|RxFnYi^*E^g<00bYVv;5B#y-hy}FJ@^1Vf=}Qx_yWFyZ{R!l0e*^G zFJ0o+OSic7(j#uY!8h<7`~W|}FYp`u0rx)r{hsaf{s!)Y2jC%i z1RjGY;3;?po`V+5lE;?_&Pxb;#XZoL$WTQ5c8)=ROt^->~ky_AYuFJ%_yj(KFW@Wq2EKzI;3xP6euF>Y-uHjMXZw7; zf&1VAcnBVW$KVNg3Z8-I;01UIUV+!(4R{OQf%o78_y|6!yZh0s?#}lGdX|058ES@EW`UZ^i97QYYTKefH{Zp9A;^ zK7r5R3-}7Yf$!i4_z8Z2-{23p_XA=7;68XD9)HuTi$ZbhqDb7jC>FOaO2n;;QgQ2| zOx(IC7q>1d#I1`;aqFT++`6b0KV27f;&z|y!3XdWd;*`r7w{E)1K+_9@Duz3zri1H zFM>UT```h12p)mQ;0bsNo`L7!1$YTwf!E*-cnjWv_uvEg2tI+&;0ySw?(RFAy1Vb} z;0O2#eu3ZM54iV(VE^DgcmN)PN8mAd0-l0r;5m2!UV>NPHFyKwf_LCO_#kdwG>Y4O zWCEYT7w{E)1K+_9@Duz3zri1H?+3&F)!ljRtGn|$01v?<@K`+j6R$2x#I1``aqFT? z{B+03#mldI9lsE_E-J;_uYbM161U%rSBuZCXBu(qqF&s(Xb|^5$Nl^P@eg|jpTQUK z6?_BV!4L2g`~tthA8_xpV9($_cmN)PN8mAd0-l0r;5m2!UV>NPHFyKwf_LCO_y9hF zPvA570=|N8;5+!C?yjGwy1RZ};5YaK?)?zhKe!JbfQR4_cnqF^r{EcQ4qkwl;1zfc z-hj8@9e58ufREr4_$+Q+w20e%WCh>Ackl!J1i!#<@CV%cY}h}z4<3Mr;E}pJ-(z)m zz9--*c&7d*UmcQ*TNf4L)01v?<@EAM+Pr)X|058S&Z*|XS#I1{JaqFT+y!{KWy1v_x~Lbw-EjtS`#Rbv zZeK^6#I1`~aqFT@ymuexuI{cI2lxqof#2W{xc4#GGq?{PfQR4_cnqF^r{EcQ4qkwl z;1zfc-hj8@9e58ufREr4_zb>)uizW_4t{{2;1~D}{(yU*2m4od_kCa8oxcHi2p)mQ z;0bsNo`L7!1$YTwf!E*-cnjWv_uvEg2tI+&;0yQ)zJc%H2ly#&U37_C7v1XC^Xk^~ zpAY*7_rU}35Ih2p!4vQlJOj_c3-A)W0!M5i!=Aw(aPJFX&)`0I03L!z;4ydto`PrK zId}nHf>+=*cmv*oci=tv06v0G;4}CFzJhPyJNN;9f?wb__yg|!P}o1X4<3Mr>hAs$ zsk{4244#0e;2C%hUVxY26?hHafVbcscn>~+kKhyd48DM`;2Zc3et@6g7x)eSh+7wV z|1j(y+*fyd4%FSAL+}VZ22a3K@C-Z$FThLi3cLnyz+3PRycfT}`SqM<5VtNG#jT4b zaqFU4+`4EHw=P=6t&28s>!MxUy66zMF1p37iyraYb&>avz@EW<@BlmnkHBN_1Uv=L zz;o~dyacbnYw!lV1@FLn@Bw@TpTKAE1$+hHz<2Ni`~<(iZ}11)OJM)tK6n5gf=A#n zc%ts^BdNN(k7VFEcmZC5SKu{x1Kxsn;63;NK7vo+Gx!3&f^XnE_yK-`U*I?R1MdAW z*gv>0Ze0|J+uyH4@CZCscRNqi-Of|+3_J%fz)SE7yasQ;TksCN2Oq#k@JT%XmRA?e z;?_lrxOLGgZe6sATNmx()%_yj(KFW@Wq2EKzI;3xP6euF>Y-j8^{ zbKC73xDOtHhu{%-44#0e;2C(X?(P?by1QSL;1zfc-hj8@9e58ufREr4_zb>)uizW_ z4t{{2;1~D}{(yTw67~=7g9qRtcqDFJ6pP#Wn1H9?8F&s}fS2GEcn#iwx8NOkukOy@ zLEW9dBlrY9gD>E#c!8h<7`~W|} zFYp`u0r&pV_j|Uzy@C7S0eA==fydwpcnY3@=imi+30|qY>uRm;uB#1r3*LeE-~;#w zK7r5R3-}7Yf$!i4_z8Z2-{23p_oHF|;68W&9)d^UF?a%=idz?D;&xu=;01UIUa8yu z)ouUaEqDjsgAd>%_yj(KFW@Wq2EKzI;_F|2Juf=Nt&1*k>!MrSy66$NF7nd%`?oH7 z6Spq%#jT41aqFT`+`1?cw=PP>Th~RI_=i1%7vLp$1zv+U;4OFu-h&U|BlrY9gD>DK z_y)d%AK)kW1%87+;NFjUzh~RY8@LZ1fQR4_cnqF^r{EcQ4qkwl;1zfc-hj92?!M5e zyZb^9K7fzl6Zj0ifUn>i_zr%6pWqkx4gP?8UkLjL_rU}35Ih2p!4vQlJOj_c3vuhB zQrxZ&6?hHafVbeCx;rm=b$4D2;3N11K7%jdEBFS!gCF20_yvBef7`2z9&zg;?~C5= z-@52c+`7mYw=N3At&2i&>!L{9x+oU6E=t6$i*j-6qC(wuQ7Qgm&)_w91Kxsn;63;N zK7vo+Gx!3&f^XnE_yK-`U*I?R1MdA}@Aqt<-#2g{JOB^DBk&kJ0Z+j*@Ep7VFTpGD z8oU8-!8`CCd{B4S|54pt|0nPnd;wph64*)!q5BfUn>i_zr%6pWqkx4gP?8 z|2XVly#0HxF7m~#ivn@$qEI~kJFnwJ;^p6cc`R;Sl!#jwrQ+5_nYeXPE^b{^iCY)d z;-~APM*PE`!8`CCd;lN8C-5130bjv4@E!aBKfy2X8~g$H{t4JKxDOtHhu{%-44#0e z;2C%hUVxY26?hHafVbcscn>~+kKhydtnRM!i@LkcuizW_4t{{2;1~D}{(yTK>>u0* z55Pn42s{Q)z*F!HJO?kpOYjQ325-Py@J`&is28{U$N)ZqPvA570=|N8>h3(+)!lh? zfS=$O_znJmdp{2L5AK5p;GwwZy}sW#61Ogj#jT4HaeH2rire#|Ox(IC7q>1d#I1`; zaqFT=+`6b0w=U|${rL4h^x_}(3_gNS;4}CFzJhPyJNN;9f?wb__yg|!c-S+z4<3Mr z;1PHXo`9#|8F&s}fS2GEcn#iwx8NOk4?cj8;1l=^zJRabo4Q@k)$Mu?eu7`%H~0hY z{RG%QxDOtHhu{%-44#0e;2C%hUVxY26?hHafVbcscn>~+kK)!vlepbSX7B}k1>eAT z@B{n=ztr9Nb*sDc>jC$EBJ3aB2M@qQ@CZBxPsDxKMX9)TQ6_F(l#5#z72?)KrMPub zC2n0*i(3~p;?_m2xOLGWZe28rr>=`8@eg|jU%*%J4SWYbz)$cC{04u(y)TA6gZtnC zcnBVW$KVNg3Z8-I;01UIUV+!(4R{OQf%o78_y|6M&)^IA3ci8w;0O4r?ylRHy1Q=Q z;19U>lVJbgK6n5gf=A#nc%ts!hg99Y4;gq4UVxY26?hHafVbcscn>~+kKhyd48Dk4 z7p>xUAKAcn@B{n=zrb(s2i*I~uzzqLJOB^DBk&kJ0Z+j*@Lb&gxYu)%LfpEj6t^y_ z#I1{JaqFT++`6b0w=U|$t&4hb>!Ly2x@Z=+E?UHE*F~%NhdqPu;0O2#eu3ZM54e}Z zp22=4-FimddImfPFThLi3cLnyz+3PRyayk^NAL-J24BEe z@C|$yw=O!w?LKmXU*I?R1MYnZ>>u0*55Pn42s{Q)z*F!HJO?kpOYlnkbkB=waqFT+ z+`6b0w=U|$t&4hb>!Ly2x@Z))E}F!xi)L}_qD|boXcr${7aigs_6&Z3-{23p_fNr| z!F})mJOq!xWAFq#1<$~9@B+L9ufS{Y2D}CDzeAT@B{n=zrb(s z2i*H9uzzr0-E~Ev?z$obkHBN_1Uv=Lz;ku?@fYBwy8G{{z-#aZyan&Td+-5#1fRfX z@CAGY-@te91N;QP#I1{Nal4N^;NDM#{e%190eA==fydwpcnY3@=imi+30{HM;0<^y ze!DK}#I1{ZaqFT%+`4EKw=SB*t&3)H>!L;6x@Z-*F51Mci%xOtqDy>tU380o*fY5I z(_qiwK6n5gf=A#ncmke+XW%(_0bYVv;5B#y-hy}FJ@^1Vf=}Qx_yWFyZ{R!l0e*sC z;5YaK?)`MwKe!JbfQR6by6cKq-StBPo`PrKId}nHf>-M9i_zr%6pWqkx4gP?8#ryqR7rlwweZ&V3z(eo|JO)p|Q}7Ht2QR=& z@Cv*JZ@^pd4!j2+#K&*<`a0SuZe28qTNlmZ)2 zdV^2o49q+E^b|Ph+7w( z;?_l%xOLGjZe8?&%*w}eeeK01dqUD zaqFT)+|JV!JOj_c3-A)W0eNmul_vm@BeQX zw=O!wt&2`^>!M5Cy66_SE_%eRi@Yy=zklnZH*xDCU);JV61Ogj#Y@*kiTH;-gJGd}7vLp$1zv+U;4OFu-h&U|qq;jECv|r|&fp99 z3ci8w;0O3Ap8u)W&t1I4t&47P>!L^8y2$(I-|yeL=uO)skn7fCfSGBVPZ)&;IE6t+@aBudm;A;&vYO;Dfr` z;Vf<+=OSLVpYqYivx?9EKV5eoKHXgZar_V(6ho;Y<@{PSN;Og%TgHBFw`GJ(g$`Nf zwvKFLi7Ax{Wr~<6CPibZ24R#qvJF|LP-AUwS%y@Tt&#A%uKWFZcU|+muJc#F`|O4Qe+KZed_q*kXPaR%4_f|F1I*!_>Xnn z2KC@K#1U}u~o?Aw6AMY4mQ=ADrIM(KE z3eS$sXYkH(=E45+`O{PU3|-^R!hO6s_)zgf`1CZpZV~R|Ex~=f5xk-Cmf^iCEq(=F z`iglBuYJ|L3J-2Fufc2bI=t~=U@6scyn+cZwUAC=Ha38xd0Dt zvGpy&rze`1;PIK}5!}aHhWmIc@T6^VVtA)zUWK=G->=cNznXOAPYdqz(}w%}bl^Te zUHDl0y$8=~-uiH#p9JpnGk_P={~^5bJ)55qUG2wkk3XZUeXwXg-+X>D@Q$B{@Zs;Q zKRI|o^AN&A1O!0h*7gD^K;-wUiQoNkvl@yOtyqe;*6tBbom(TRiDWBoKPg`)$pLU9O zQoNhuy%g`Kc#`6S6d$JeD8AoCe~e6V?N@O(Z` z4>8ZcgTu_Ta6gxFbe&5f-18w1&uZQZ@bCz`ZV_JkvUv#}9BCfG{kmnko?|QUq4F(; z$6vDeRrpwWTZ0E*u=aKMSo@^`&mM2>oA7XN^A^0IezxIdUAF^o>|t@b@NiG_9=s;+ z!xMQzS3d{vj`}l%7u25-d?=s7J>O>V+S(so^8Q|M$b3Hg>&gs#`kFnjX5pSEIr>*@ zenR+Io`;8iOY zjpZ%ROK|T`1n+5Il;MfI0{1v^idW%1y-!ku`@X2dJ$@s_nZN!;#gh~tr1&t!M=3r|@kxqLQ+$@ zD*Z{zw;J5nu};@IHd4F^A1eP_Dc*+rzUaV*dVSG_`@ZO$;W9;J9W#VaWur+78RYbjn&@kWZb;l3|AaNieQct`u92M^b@ z=lnk0^DTjwPqg*}cq|{n%i0$scq|{&wJ#=c-xpK3_j8uw!BHvsoZ{IO&!u>n;`tOW zqzW6w|ejswrMe@p_6kQoNbstrTykcn|LTq7V0dk-$rOjvByQ zYgnES>6)JryrBFa!#zJIDLzf{8Qkv|!O`>i?E4}E_v>a;JeT5Oisw_jkmAJ@FQs^t z;^h>tq8-H2p(%+jN!GM z?TZQA^KF{qvlI`Gna^jBlY!TCzsSP<^+gWu`yzyU{CtWRQoNYrr4)}+yqw~d6pvH9 zn&Pz-ucvq;#hWSKO7V7zci_H{x^Uk|J-YT$KgE+2AEfvg?)zc__kA&iH?%Ki@WSf0 zFM@hXKBss##d9ehrg$Fi`=S8%eNlw_z9^-5l;Y(SucUaK;?)$drFcEX8!6sQ@m7kr zQ@oSn-4ySoct6FH6d%BS9}VHYk4ALuqj8E);C~3LE_DijB-vgP!U)tV0do1#Q znNKZgpM#gbX2n0Mjvb>=;|@6&#YC-C47i!*}zxW;fF*96|uxTf%_;?LmT&)_)ZgYqzw;#s=B zKbC_BciOlLa35C@?&B)KhZ13MPv9Hrx>NY7N7{8~@MYz}3DI2s_vIP* zZ{=C|$v0bna`4<)<{|vo-!{*~FWJxfS%81|6V|>6-{)CtUxNQ&PxA=A)g>0E48M9M z^9p>UOU+~Wit;M_hIOoc4ZfDUnA`AOhMUt#?jz)!8258;pL zJ~)C;K5gyC@RFVrCh#LQ&r|qvn&%mO7tM2UVl$MD%yAp@SSze7vYtyt$hi8z)t27eDHg_ZW+Fk+E?J8kjL<||6p;d@Xgh} z2LH$1)}K0j`Bf}V1ODn4tbG&yOXX(^zJu;}ZTKrUSey?0D$Rcvex$-LL+V@z08t_;2+}nhI{QWlG7JOH|o^8XoR{Re9 zN}Wqx_ya$+{`BBK8<_XuBY*u1KT1A;FY@Of`1&tf{1N<3p8xQ&?(Y-$ZhB6e!VlHD z%;1Y2Q~o!ix%~g(*5(=b+PZEQ{_-|10nv^m;aiKc)4p!r!C*)Zo8<#NyZChw3@10e`oi1Do&# zZ&;ib{G}UgTy6MO%AXGW@t;|oF8pD&@4@RcYu|_Or1eeUcgY9v_0P0^4&g5!Z1G3% zOGEoT!!i7B&Hn`coeeDh6#o6h;?LjEp_ zL-;+*@KS z2ES0_s>2Uf{~PcR=y{_Fe~ZrN7Cif;&1W0_y#?kS_&4r1@4|P`>%<=XWzByd{+gb{ z6ZnRDe`Wyh>v?GifAw|i&j>z#pYk6*(DTd${<`+j6#mbHEdC6BmiAHbwP-H?FY)(( z;NMu&`jdq}tNVKnUeq&2t_8;T3HEHsIHN*ZSFnzohq7TJXC*ZSC9egV(qC9r)X? zw)S24nRl7@;NQI7ybr%f`zwL(EFZwLdjEU~UqR1rBY33uW5@74v|bbVI~8XNzd-Xp zgI|5CjVm}gn#=!(_cqVKkJtQU;hS7y?Q`(sb>4>XYoD?9dHC{rE-k?OdVVOv_t@Ox zl;G=^%p>@f@-qBUc?G_BGm8_$Ke@Si6`oO?8vHbQ9e$wVH{gAF6aJRX?Yb@aK8oLl zZ>cyP_)79FeEYvz{2qKCJtz0!t9t&!_t*J0fZwjyQ$zUjia&x6wzd9@;cr#^3H)P< zGllOOS)3VseZ>jB9?j+d_x1ip2EK{nXW`#e{2aWb_#yl|dOs}>Kk8!ZX90fyugr_^ zV|8CB!Ml&zxfj8|sn<1ScuSv?R^azNYuAn8>+18tD*P1nrw0F*`csEjwZ0AbON!Hk z@2>f8!Jp9lx8YyV{CD8%C=a{v|Eixo_}S`bA08-v0)M~yIe@RNeh%Sz#TmgLR)5Cu zmDQgK{4bifDg4Yo+B(kQ`(JDxd?T96|9@R%o`F9u&%$@z(%R?X_ozQ1{0@yP4?j=& zS%Cjc`B{Xoew$sl1Wz=s2>y1xFI0waqvwPQe9`3=KZdWP_*MAxk6Qa0yrtJcb@+aI zz1Dy?{PSP%n*dH9ps7X|pn+uC)D@Mjdi1YfB0CxTzA^QR2oN#{=mo>QC{{)+ljg|DeN zHTY2Ds>7ey#>UlvU#s>__!Vm3g8x|a(1zbH@4!E$=aw$~Ma@qS-qm>f@D0>Hf$uLL zz_(YNA$*|rBY0iy$M6-@egc0{^D~9NM{#EGa}_5zWj_BOQTq&hp!iw%cjP(vpO&%b zkPx2#t*v_=-n-bm0RP?w=0*4^I=4&k6TWEeBluEN^D_K8c?G`CA=W;IuktzbD*V&> z9z_lQrF*S?9lnpwfd+hUc@uuJ-j`^>?^6HU@Wbx0>vrIaKWyvLg|ED>c@KWG+V|n> z>GgX8|ILmTX8P5!jDq>8T|XYF9gkK?)*P* zk;TuzpV-7a3qNB&^Bnv^T{nb(B(!nm;kW5IzX0FpK5JiuzfE3(PxQHV1iwjMh99cu z;R<|9c?|!@oz|Z!{C0T_zKLE>)#0ni8}PF~WbvEuEGYU!?P40^d#hXbQjK z&vxAz{C&@x2j7b3@_%K$|CWIts{NRSe`-~mpB(%|z26(cpVs%;^6(Y(Tvvb}r`MZB z_-q&Je+j;s);EH0s(CBJYg*q5{GnSdehfca^IU~@_5M{2-c$QJ{574Q4fw{}DgWVD zFSh=);1_CKZTP1*we}tOYO#42zV)8wJ@^ezoA==#{g-(Hzx^fi0sK+DP8`C2t^SYT zo4;al#_;8JZcpI1>G^yLf2Z!hGx+8Iu=v5L(Omu?QndNczz@>;X5mNZbzcsC%ib10 zgzx-2^E`YL?XLoSw59c@2w!6>i&KK%sdOaEf=$M6UBx_AOV_wUwz3cpVCKZD=(PRpy{v}i8> z*H@lo;9KdsS@_2Ketr)ALdN2U@I#budH9p(TK^01Q{Jrnhd-|Ob4u_?`!s@It?vt! z;Zwz_z(1ng{TTkw|`nYZEo_vtz* z-i3d6b^AQA2R}mIhgaIx{{+6Xd_dRhxFLK!`3Sz7K4%=mm(%w%C-AT8bLuJlIekt# zgYUMyjW;+wn#=#wvgR51hvZrKZn|y`{v-82gnwV()62s@tvChv(()p_uQ(<6wekp_ zSDZ5Z-SP^2eR&LDPF{ttDzCv8$m{SQs-F$`-7DDqH{nNW{#)>kl|OCxrTVF#fji&YCo3Y z{yoDA+`ms7!~I;X!u|WMHMrO7)#3jAjRxG~H&eWo;_Vdgz^~Q%cHuiHpL=jWpZoB) zT(9#V{%ge_z#q}y=N-a*yrUE!r}zZ^#(OM3r|=c@oHm1>cb?rhgYV4e|Kgp^Gw?@7 z=2>{OwRsM{_;2PR{7;IXhkr-U6$SV-9nhzW-J> zKVA6lcUYVr{B0UnAAXg-my*EW(E1MG_v-m}2wz8eGJt+4zYgb;LGWA$q@d_2d#Y`?tfRh06%*pYhQ$) zs?QxtaDUwz!Gnt|P8nX`)w}{fMEg31m+rLoRk*(nt-;US$>yyN|F_<+XuuEm=YROM zC)jmc@NcP~ZTPX;FCF;7MT^sgFQfM#dhk!^{i{BFAJs!8@GIYE;~l_H*6Z9cytYAc zN&ZdX9eL1-=JK;wwDuWzxRH4l-aFDf5AVne@bc_qORg8e{dX10aR0m56}bOh>=-`O zb*pgyU4>eT*XjCQg%&(M#>U%*kL%_gxR0x!;tAaUZr}j!fA?(+_xKaI$C<)?-ez?D z9l+qb^ZDTOmPzp}UGtWQmwGlo1$aXq!F^n1xc|;Z1>U*R;>YmdD)Tzr<2T@*Z%w$* zTMItD&f>S>K5v~A@6t7I3EcZRfO|iO@bEX*p9$RKOyM4929Fgd`@Q*m=={;*=iu4< z%tLtN59WFJ_%8DT{ciIjyfHK{!#lce1)ja%+Q;yr;#c8?d#!y9?(0}j@dmu6@wVYU z{~fr`e-}O+Sbq}w%zOZkUojuUvny_B=Rdq956+xl-*{PTpMe+NVxEOxy^h_Fa`2_} zK5Ym;;P06w{mH{`yxF_}|Dm3%i}3CB{iqUr@oy|n1b^$j=4JS26{iCKf!-I5;TgSe zUxoW~W(|Jn2lRXbANc!|@H6!Kq6y#NChLC(?s?UPdtUY6$;WLS2XK!wgnOJ3ys*B- znZlDb%x7?q6Py*zJ#YBAnt_L(Qog}`Kjup{OtGV z^TFff;2tN0`+Vl%;T;yg0QdPUrg(|2`K-XbpE2C~S%t^yPXq38nsATPf+x@0xVrG+ zE#^JA$LYi47p;8)Pvir*&)YD?M|92G6rQZQ(USc?gL^-Nv*+`{`x?^~}nT>Y>@5ra{seA^{ zmMl)7>-fCY?e4VLpIoceeQ)!bA1P$H#daqx~J4w+Xy?rOn$6p8UW((Et7~zUC(b@5!_9 z=>ayb96VTL9>Rz6JiM{1wJ*Q}{XLW-JiE2EFTp#pc?55i&CBr4&gK<(`7`D*yrA`} z!jmsq`x?Bg_I3DlCu`q;C%SGE9xF}@-rB|DwBhBw%{%a#ybEv1d+^>q7N-xNYP<>D z_w@k&obq!BZ(d<}IEH7>HJ`x!{xXG^cDH>rgU9kf@jTC4@(kRcyZrjz-p7?g`)ht@ z&jTU6s(%;Y4gI?a_v@D6{#+WtOBEY$8J@^1aE~9uL$&w*a=bOPzhC36!~MC%$HzEL zw0~N0T5#`22i`s}vhx}4`Ot&=^F|-;_o*bs2Pr;G@llG8Q+$%*(-fb1I10 zT5x}!X~R8E2fnZ3bm88QKD_WF+b;>cQL}s)zXU$yJj;dS-10ndKR+Be}Xc?<6SY{R{u9k}8LJ4?kV=R)G8Sq|cN0)8mxT{u0HB;NA}(H{(>${w~Fd z;U1?3A6{VVSf^iO^VxuxuQhMMCyLXC_xjep120@>-i7=8_u#>L?_QE`eRz16#Yx~j z`2aqY58+e!2%f#$;*a44`2^nit+k)RYl-;`-nqd%(ER!O))XfLFYCHlcuDbd@I-M! zc~S*i(-kKR_tzJm7mO34{a%WbhkHMY@QVIjf|u^GJc-~9 zc^U5c=JD9i80`n@XO(`b<$oRC*1sF@;r-UnCcN-~c?<6S^my!N2koCxKf7>Wmp*)W zvGqTJhf8m~B+m!%hI|Om%E$1JoM_*lnZUQw_i3l_W&75C22WHU8vNM$>+^8?kF0$L z{+}DIMHas0gVsI=_wV_K@HZ~9_Idbe8(91T{2!|CE5fJ#eJA(^=UV&-{_2~|%kXnA zH?P1?df56C!{2$awXec|c%HSd!Qc3ewXef3I@7!XU)V8k!W)X;fdbh4}!!+OyW5A^hf_So;yYuK6Fs|Em5^;CG#G zai;Kn&$a8$;5)0XGq^BXvM;Sw5NxLT&%n>x&st>R1C2KaKWCw}58)dseja|D=Dz@M zXnu zA%tJ}Q;VO6ueP1VFTl4||BLXl;+NpRRK7*4!+4}OW(w+~-g z>y^MS`Ju%hz#r2558>a^{bdBtKWY6L!{4p>oWQ@X`Jcic)%h@kFZO!0pGI@}zoO!2 z;F)8sKUw&-Kd|xU;CF3o?L+wX+P``DUF{mw%P{w=kS;2+R@mf?TW zd02tpulb4L%W8hA@U{H>hi~lp5C8FBZGIZ?->5%L_<2WJ`xboNpWD2(;dkw3?K|+7 zwZFRXSb5%qzf1e54}VVcoWO6@z8Jut(7qVLGx}ZD5&UDCw=w+i7i?S;_!-(qQ}}Ay zcQg3s)IPWPS@Lis>_FedjI+uFzYc&6T`0zsOX96!P{s6vK-`Wr1{R^!>Blz*k zhcSFly-u9Kf1~-I!gtnwnZduJ`$C}C>(+}PIBI$8X9oUu-5;~?AE}=?_$BfX{+gaM z^YCM|z6JP~>ejO&{9v^&!QY~OM)2Kr{*>YS$Sd%3b&kdGH?Fn$slg}ucO70{-`@9V zz+3VrJSbZG7Cb9&!wVZ)`wqMz@4~}^z2De_Pu0E;FKlG-6L_+o#TmfI@*&*c_Zz|g zaGTzTg!}tTKChmi9%qX7k1Ng$o?mLglJh_D z?|%gMIA!>s6{iCCepKOM*Tz$W`}c_IaQ|Le1Mcq!HtCC$hwxw@^ENy=PE99D^Q{c`e5=4c-(tG*tqLD&Ts64o zTOIEC)_{AyHQ}CbEx6}f8}9kmfj4Tlj$L?ixOopAeA&DY_k2s>4YeP@!y_!t5I&WU z;GH9_{TM!!PvF5()_w{P@^x`8I-oLisj^d%jKKO?~b*gL}RO`v3d6>iL#|d%k7i zWsNHbZ^%P<_86PDe2N#~e%)ee!F#7DpW)f2c>?$O^mv{>-p?W0KU22n$r0S2CnxaC zWp>U^;hwiMxaV!4|IYgpPptnQ&)xf(Mf+uTwtnW|-p@R|q<v1@Ek4aoX^jyaO+< zYVEu5PS(5!?I+V|n{ zrsfHJdY}0K-g&@$2roZqK7tR`ehd#kZS5!U#{K3~ct<{ihkvs6f#%8Qzah`Shl-Ph zPt`sL57hq<9{<^{n}?Uwz5owL*1ia@seK9FQ~L-$R{JtM(fn87S&b`(7ap?yRN*yw z4IXZ0?L8lTo_#+y(Ef*>=kV5bmd|bY^cTu=cth9i!h7-_Jl@>;*@sWnK7j`%Yd?S& zT{cLuOn{3 zy^gpI_d4PZe5^X(ExdJ$*AWlko}WXyt~-MJz8=GWr+qzv2dX!p z!adFm{;1*v$|KKnzYk{M9w!TbS#ff3kK_Bv<9nPu+Q02T_WV$Qdp|ti8K;Ey>nctJ z&uM-t@PYmv!-t=>e5k_1-OX$8l76qC4)=4f0S_w{rwK31Tkwv&4Ua!(aXRqQ=gqtD zn)=^^XBEE>FDQNjFUfuWxGqDq-$Ls$f_uJB;Kg3Fy_xr*G?s+n$>%K69`|nEx`uzsaAOC%c4BUTTA`AE5m&n2W_a*Z1j{aSM z7xX(7MR+VP!8`H@Uf9?2vkdRZEAZ(@?ep9i?w=P|;Zwz_!Q=hxx^=jJUfh8D=fzF9 z@81^u%i6zfcv1V;=hfHI<8;yfJBrhT`{%_8-0yb-cuT(~RHf^FRD=8ds17gbca0iw|Ggt0ALp%w_K$cz!;3nny6~C)-Gj#m z+r0JRJ$VA}9BShAv~-0BX~jcHirAWP2m4KpHtk&$9W5`isrt*5xi>8w;8z4 zTMjnYwy@n(v*QoNnw zofPk;crV5KDW1Unyc)pYtNaaY}HHQ-(M7?+V=KEr$ENRpCBwHF%omT_6&)X30^EQI}yp7@E zS8aYK@Sc1M&wkC?&)`1ZK>hXk{NR6eKEpjve0<*CTa!@S)uM#qrkAzN~qx!+pF>c%px|;6C0q+{fF2`*^!_?Ux>W zD(}NfU$^=3esR15v_Dbf9m0KIjNqOpWB6r?GlBbgK7)s^S$+oBM03v-u{;A0UbpsH zcrRFG$$y`Nhi@_u;lWzwb$IO%^9H;pZ^Dz~tbGgK`-*uR9-m`Af%kS;)$U*L+~MZM zYv<=DdDXlG58n5-C2?Btdf)#0Hatu$Pdf0LybJgI?7=&?TAV(7EKlHt+pPTnUX~Bx z;qBIb1W)8+cs#K76S#lBWeV@zW9?_~L>_4Vd>;+v8F+lB#mT~Zzc)|A69j;QrjugZt-+eRzDI^*@2vjwV?w^m3;r{vf1n!@Y zPvQRg_zWKEbLv2!m-@W<=i?c;e?Fdt`{(01xPLw#!u|8{JlsDYFTnlt@gm$mA1}fE z^YIAopO2T}{`q(X?w^mxaQ}R~3ir>)YjFR3ybkxz#~X0}e7p&tK4SUPg8P1H!Wnh*Lsh4ih3_lR!51q|2;WZihI#lx)nOIj!=ClC2)|oif)91w z2!5UF;9~gkYF~x#q&mAA{Aa39tixYdJ$nQGn8wwF4^`jVg0JIsvhe%V&knpS@528k z@4;74-EJTLtbVT}fqz}~cLVrt>gN#d^D~0K;rR*ozxz3ZAG(cB-rvmU=eu4s&%h5- z`w;HGw~&YX?@kop+q_`$i*WzlgED-ves8A&zxR2I6T_d<@8MM8r@UhAYw#bbUb_xI ze^YDUfFHWN?UyF}+ozki;2*!-;?CE zblom|cg63)AJzHLhd*_m^(TREuXP!~5B-w$a|qu+=hX=Q_Gc~r82&D`pTNVhwV%Qd zSztbcAFq4}ejCl@|B?EAn+*Iz%Fir(Y5k5t4*rpc?7AWRAKDjr`1L1P`vUy$I%kUT zO&_%OCHUDoPa^o;k6HUN{L{+w3jD^!);@+G^RRgpe(I-eeQWUVYd_ZEf7UuS;HT>E z#W&&aP(NGnWpp04;lJD5`q_cM>1gvV{7YXp@4;KzkA3*!SFL>l|C9F70N%dC+7IE+ zDL+T>Qq|gz;h$S*^E`n+c%!wS!cWsY%-|=#V(o()qPhHk^=9)7{EBt#x>@+QbYITF zU(kIggdeDN%)`UeEPet0H^nK!|D}CVf-n6S>wg6Qwf0LH{;c+61%A5bA%?$C&l^?v zIh)vZYw*|fdpmXb8@jJG;2+a{xe5QK+PCQ1FKu|BebIsMajx~V3qM!=?7`1iXzly( zZMQQ|;3q#~K7em8AHx5o`_u^jfbw|^KT+46z|U4cr|>^NWBr-IkI*?5+!)Q}{|B|c z8Tf|EpDaAgTi)j2f7SUG!q3(`=i%Gwxu^g?UFS~`{>MjbTqXFHnx6<>)bHn%;TNlY z1zu457=F9Xy(;{C&3_Gku%1uq@P&FE)PTQ7>(zvxw~39n1z)K1qz&KZX=~qsziA8e zEDYPtkKi58hM!KKyHXeoo*UdH%zXQTrkMp^1%m1YfBAIEF9Q zeSZSqLHD~U{KPvg{tUjU+6Om9bNPRj@*xA?SNWEOUvinn&%ryNH4otz`uPw4g7UKf z-%qcnittx--z>qmR-6ca)rHodGJFrMO9j4?&Z`){gZ60^{tG|<;RorQufrcy{~Pe} z0_$fJ{tbWs2R_ldwBctitNe%mN%_`=FVeZxgP)-IefVyE{=;8Y{|E5zY2AnL|5JXB z;IAEE^Du_LRqZG6kLz5T!gtgCcLsmGZ}EfQMRWPTw)SrZez`mg|FE791>{3OqR_Ft8}N$mvrYJZ>SqhS%)t8DhVQwP@*lqXPpy3ye!f5d!!tWr`#$_Qoev5873J*! z{ww9r5WZ0JIf8%VOV3x03?DZ*Pfo0s7G>$(yADea3g{Jn|AslX54#yo~U zqkUI}pW^usZ)$z(@Kbf)X~5s2^=-nB`kVEq1wYNtfB5TqZtuWfR-Sj^Ki9hS;AdTC z*X_gqqJAduqcuMR_*AdohwzQwWqCM)U#j^W!*|#HeFDE+{h7j-lF#59>U;}siRSYE z7VYZ{{D$*v9XOG_C*tZguDe`Pwz9g;rG32@jLK8 zXkT>US>;I&zNYe_55I0ti=V)E);TkPkF`&S@MCoDjo|A&Ve!ZCs^(z=-$nak3g1=F zbu;)gnxEj-XfFRxRX%6nU)MR7h3~3)%fXkw)A}F6x4g|f58q{xc>(?%jkgFtTI*7R z&-A$h|Ny|-&W5F1NhPY`~%-p{T#sqJ=cxl zXX-qez`K6_!~asYe$L>JXg>zGMRWQ8qZ4er8Te+KS)45V@V{C69DM8Fn}_g)dM?ew zpH}}1@Q*xUaf`IyVaNEfl8+-`w*b-nz`L8^I6#uX!2%Decn={0-$p41bUM zQ-z1mTKpQkulrpczHpJXZ@|B-`&tv8*ZsW(KUjI*hM%P8#t!@}t#23p3H7rF-$Lh7 zAN~d1?-KYL@&Wt`1U%NvhYW4vGzImh1wS(d^0_7*o~yG0pP~{t3ko?uh2{|4i-E41B8dBn#hC^PhvaG|wUY_nOZ<{8HTq3-BjKHm)Lk zOMQ>41V3B*J%aC|eOHE`q36j8{8a777=En!S%v@PJnLr-{<{Or>+o;t^+*HW)qS=J zf0Od61z%Zz*QO0WUh~j_e_rQ97rutxukOM3*ZI?jFH#;R@YB|`^J)NJ`=jPV_%|N;0Nk{(T3lresP-^{^7c?kcBUdQF(H|zPT0RN`W;UfIPO>JBy_%_d&NATqorwrfb4r^b5 zKX8?K41Zqlr&ZxEDQ|1=y_Dy5_;Z(8{098HdL7h+=d|Bj@P*2UHvEqhi{F7yblom| zjc2TV55C*XyboVm=S%{>SLe(CzCdw?@OLZENASOU{=@gzexJY})_$MDFH^qF;ECol zxGS2=|9>yA@n+z^((`8){$|~ObMXDtpAde7o(J;qx9nioEx>=N=dL3BUhS6>e1WbT z!I#rHQ-+`B&p+@dG!HTS5cQ`D|A_Wi4gPKAa~*!Dpa1YDl%Gxb^Ljs|1%HR0TiWmy zwJsg_$8?T$;rl3`d+=DFFZAJi>A5I@pQZO(2JrXi_51^0@mO2;5j^(ie|T4~zb5c| zb$^+{|E#>7!C$+>t{dDP&E@|oBl8UW1=T%e;p;wY?Q`%u^geS4zd+B)dH5Tew*vg9 z8gCK)bM4;}Jg@#l@W=I>Q-<%Md9J|s(K!>t57E3;;VbL;yaqp1{j9@3sQYXKzN4N4 zoACepsm*hX{3kc*U(x(e;1}vSXA0k2^Bmk0&E>g&KPLnC?^$KxzAicVBRVHTxIbqW;J0etitz2# z&l2404I{YM87(h>Ts_&Y{0$VunG5i!xsEyeIC(< zd%a-??)8RUxYrx@;9hUohkLzY0#B5O1Necu4-Vm8Z#aT`z2O-CAH6R$fqT8-6z=tg zGq~3q2KUbAxz`(J;9hT-g?qhW4(|1aA>8W?^Kh>>EWn@E`Co*4ykZ5B zlXTuz;9hSS!@b_H3UBE=sliXv`!;p>75+Q}_jKsVmUT-*nd%fWh?)8QvxYrww;a+bzfqT8-6#lB7CueZ4Hw=dJ`S10H z8Tc3d{T#U08|L6%Zy3V8-Y^gMdcy+T>kW(WllA;uf}ixT-QOelfw~Wt;a+c8fqT7S z48Kj!X;rw_8`j`nZ&-(WyA|1V{kjjo z$e(B6UT-*nd%fWh?)8QvxYrww;a+bzf&X3maSHc(!x`M`4TC?-=YLbL?=o<&H_XDl z-Y^IM*WWDE?54;z22}4_j`dQ4EK7&D%|T0 zYw#PjU+QqLH*CNgp8s&KH*CSr)BDD4_(8g_b>Js`+UBPVKVSLWga7M!Yu|@^yT&!x`M`4TC>MbIkZ5B59)K43f$`rW4PBFR^eW6Sc7}L zVI97jUMDu-UT@fh*L7cO!M)zF4PU7J+kx+^@4a;4*K1vR@U!%}c^`g`_FV$^dcy(S z>kWtSn=VQ~L^{(HS)2JZESS-965=HO@Qdl`xL(p_jjuW`o8&2U~Z#aYd@1z9}%;*2Q`rIJ{pXhaT7QU9&HwXWRKmWt)T9-WB>kSL= zht<9afBFQQpA!5ktxE)NYF)~3uQ#l~chNk@aIZJ4!oA+G2KRcyI^63G8*r~TY{I?X zum$&e!#3Q1zpeu>Yg}Ep*BkcWUT@fkd%a--_jkUircfM%* zB7%FpVHy5bJ=ay>Pig|_&dCdCRfP1}R6Mm*XXKcYw(D~4Y zd%a-??)8RUxYrx@;9hUohd*pTPImc{qi8 zz2OY*^@hQp=kwp|4KwhD&d)5|>kV`8Wp=Rn3E``%|9Ng?qhW4es@Zb@(YdHyZG_zi9K&gnPYV3%;i2vkmup z!w%f*4ZHA`_E!&ntoBzQzTOko&jjxEh6A|Q8xG;u>}hdEaIZHU!%t8iPT*c|IE8z? z;SBEehQTPBd;iDl4Kr}BH_XDl-Y^GWS?dzQz1}bn_jkT{bt+emDaIZJ) z!M)zF4-W>)fB0wgy@dh%4W08txYrww;9hSyhI_r?1pbij*Hd`@N$ckf{&ns5;KBL) z_jkW(WjJ^j|f^VVoB!YXrVHxiAh84Ki z8^&<2H>|?F-mnJudc!*Wu8nP78gQ>SY{I?Xum$&e!!~?f-5)z}uQ%+%z22|~_j^@cPE1dcz9b>kVW0n{{8S z!oA+G2ESut%kw(i>kS)luQzPMz22||_jqn!#v#U4GVCuH!Q**(K?pkKi2m@Be>Tamf>D+Sb=-JVGQ?r!z$eC4Quf8 zj#B=^@7m400Uv08HQ`=w*n)e#VH@uCh8?)q8+PGdZ`gx-yqwnXp;9hUohA)~~zIEVxz0JN?--UaT&!x`M`4TDGL^Z#(2s~Nc08)o6F>2*gA{vLhLJcN6_VIJ=F zh6VU?I!}sluQx2gz1}c_*GD$bWw_THR^V&vyo%voZ&-!jukUZv;9hT7hp(jing)FM z6YFOa?)8Q(xYrxD;XgRS;&k9%Z`g%jy|cCN!M)zF5C5&s)dcSKh6A|Q8xG-KZ#aU# zxWM`|hVQTQb^`Z$!ztYB4QFt#Hw+$&=HCDDdczFd>kYH;`}O-0Ik?vwhVTcncK+ny zUT;`{d%a;1?)8QxxYrv-@MmAO`7FaP`nP!nzK_m<81D6kRk+t1*5JE5XYuQBuQzPK zz22}1UqR*zxYrxz;9hSS!uQht&BMLk zumE4RXyYovz22|{_j!6}ZP#E(JvXrN zHsM}x*n%IX-_2;lz22|`_j* zR&`GkxYrv_;a+bzgL}PUFrLqUuQ$xVz1}bj-&Etx!M)xvgnPYV9v-}8>t29+y8W?$8i5Ui4(a0ox~~J|4!lz z?tdpSSUjKSuj#&@h5ti;XEO&+es0e#A^f<@^*jTA(`Dub`0>}77vaOJ%}emL^>;ZV z`0^K7`!f8FzIg?{lKKvvn_=fs>tTp&U=Ue+fuK;mcoQaeDAeeq-K;-|-Xk1b(A@0N+6U9KvJ&`?m1UXr9OLmo;w_ z`1xAjDg2LJ>*oyqT*o|kd_K=hn*R*^U230&pQ-ES;Oi+LLijtCZ+ZBaHE#v@{cY=K z5q^#4tpvYQ>lncw*FG)7H&R|z;H!E5!!P@V^`{E&Yh7yauc|+F_|ozQ{7}t96TXAS z+k)St^=-pnSNslq7wwBK{7m(~2j4~BhbQ`b!3lippW6Hk;5%rZhwzn@CnNa#v|q;X zZ)jW-_%6!ZDZHe8G=s0KJPiIipZ}|>KN&rJXhhbUTgDEg9nOJhd-qK*nlt4dD4Vm zs{3XOezWGk4gZnO?GF4w&wu!8+DAS3acbX(Z?5@I;OBY%!`~|(!dJi2=4}LDOXuwv zzKYgs0)Ml73jebDKZBpBc?+JH&;J88&l&j3TCXhpS%3b4pP_Rjgik#G;b&;w3-GGu zxd>lH>s5j;tMfC0Kdty>_*3eC1%9~pdklY%*0BmdSMh7`x2m6Y_;+>wG~ny%@6k8m zuW5Z-@Le_DHvB5}rvu+Z^Vx+zru%FUzPGO1ho7qJCh)D)egNN2=f)6zjPhXwFDw2S z{t>Oq1b&CcHHE*Zan0cSX?}ty=kx!oij#qlbe?44U)S?M4t|Kn8^ZsqapmDpD6b0e zN41ZN@SBwf$yRG9Ke@Se}?dD)qVv3lU_HC z;WsKDCh*1DM^pHA=h^*b2ESGDgQw>6|4!|f4Ez=C>n!}Ox^52sXN@<6_x${aU!=S$ zz!&QNScLya`A~vyuj@weo0L~&__LbN3j8&B3|~%hs_?)1`49hw&XYR)KJ~K!|B3cR z6TZ6gwgvx>`qPHrqj~PYZ&mv){6kvb9{elne;@v`;wSKHwBHBtit>C2KV0)Xg8x9z zCu8^`*T3-nmCrSJ#q%HjQC+tIALw;u z6aFVZ|KSTX4{i7_weB7G-Re&le!Z^SgI}xjun)gq=T!oKUGFaq;J?tm9>SN^x{Tl_ z>G@#{|AE$J0-tJMPvI|Ipz|O8So{e@N>R!oQ()$-|FT z`~rMM?YkoU1m#-^{$s661b@4p6Uy+r6~6-ihR&ZDzLWNK6~3R&jT(GMc^$s1@~{Da zM)8~QZ)&_Pc%*e~!#}BWsRMsrdDw-orZ_$LLGnKQ-HM;UKkny0{Ai792(PI97~WL; z3H&bQ+Z2Ab#x;ZAsOR3`nfW~bxW<)%pXPZEKU4XfgFmlxDTKeFe9OaE^>Z7(tnLdD z{7%I$!#CEvRp1@XLk!&dC9MruVgm@TL8I8~E*7uQ7Zbt=9zpBdymI z{)*OX2H#d5JUgGyk7*q<@Kxkl_*CnggMUruQV8Ew>z;?Nuk|g!my#FZztFmu;QMIZ zBlvAv-!l9pc?G_y_InKfo7TMw|F7;BHTVawvV5q+-_ZTN0bg6|+k~H^^=-jl);hM~ zTgf}{-)kMa@Rj5}_}~59hM%bQP2f9geFyLtbl(}m-=_UIg5Rul8N-j4PvC#hKApnX z*E-JN6Rl(LxB2{kUC*T%_`{z6@Z04%`1dq#A$$kVfB56-PXYda%AX?qVfC{FKSOyE z!B18`l;KZmT`KT@>3!oEzEJzC3SVFGYw(fgrw+eD-hfv%Z%z0%nzt5wsQ$O%7i&Lu z;Lqy$p$q?o_G1rztLC{6UrGBkfghv!AHW-$pCSAs@)3MF&CeLVpXO%*-&y-{3cpMHRzf^frh5tZ#QiK0nuczwpz105(d>i$@318atAHI&(u?@dQAA54UtRMM!Ozw{ zD#MS^xGL}$^?E;s_mwAA_cIc0 zyz0XDmiOR?Yd-t%(>0$7{1NT<0emOr;SfGi9**GuRUVGvZTSSgwtNadOzS&?Pqn_m zKj!oQVy$lm{%@^g7JjkkKm1U62wz{%X?ggsl@A5@AGBYJ@Urrx1mD76|HALl{kjZ) zO6y*M?hh~}XWUsazYB=CbYKLhxQ+Al-+?=){C_=na1G5lBBFBABuG;dS*UH-l${7~h2 z@Xz`DKS=YOf&WPPnT2nq`OLv@(tL*S7qsqq_|MeO0{n04PZ3^~m*5+!KM{O)-ABss zcWA#<;D6S+8pD69aaG}ORzB3=dn+I6@P8^F8t@0?P56=W7JMb;PaFOo&wuzi%AYR$ z8Ldn2|4F+SI7hO&Uf=~N1mqDwARv$8u}fg-+05>;gn?Z$&&|N>OqiZwBd;W#WIEaD zPO?dQCbO^-9%4|DpokF#1BeD(G>BrvS9k{y3~vcHDlXQf?@z<*Zu*BCq^=fes3tE9b6 z!9O9#`waY{vLEN*Uy%K{0RJ61uATX6`~M-?j{)$P$bJlhe_r-W2>b=&F8KXqe}%yx zBKs=>{wCR9QSdLz{)&NrPsWAf;5W&BNr1mj_Dd2xFP;YfsN`P&f5L#rc`D$Jp25|tnA-8cu;a!fPY->vz&ilZT|^b&mj0mqp~R#Z)JUA;Lnxz9|!-89PbJ6vDA|U|3f)m8sOa%H+kPrYl4r( zTj0(6a``s6dn$Kg1>)#`C z!T(aWHw^yX=W_iK@T?qg9Q4Bos6|N@^uKPCu{>3AF93{d3Fwga*!N2)6_5%2~ z#4F%c`F?r>ye{4Z|EvGt`di?-f7{?Mm3lhh`u*81`1=lW{XKB~`-gq-SAT-b55V>B z1r5P}^^;tF1pYShG58(g6Y!e&6#P{;bNw^$*ND%--zV*A0sek*=WFqm@5$czzqtMY zxc*(NAov?)JwxF7_oH0!o9^cN!{FEa47bAw_+$T(%SXZgEX5uJf7W$ePaOQK_hL_g zzg2Qbg1=hYRT}(|{GF2mxVFy<_}k>X(E!);LlgXftY-^c&sS~mSG|OD=z!lP-Ua^y zS)U&G`^5X;3vK`4{~e82rP3%IiM?|6+lC3jR`QZ!_?#KE>td;5SHn zSb%@)J6zuR&-hCF|CY9Y@W=cemk)xc-@+aOKlvec7yL$T|KN|5`Xk^^lH(!@eoDT- z83VsY>W_oJwan|201t=d{15(h$tMl|ZaMA>;BS2h*HZz1$wzp(4e$rc_BO%4E9d7H z`2II?J#Fy0Tz5L)&-)cF-vxh!oKJe-ZmI{~`ED{{Gbn{14yB>oW#_ zq5R#R3HT@emdj7UQ$_X}xc>hG&cXAq=l!w(Uz0qYug6!~e^ZXr0JxqHgW$I{czr_P zFBEsd9XT(B!S5v=0so?$m!ja>AB%y%N6zPQaP40uz^nI__7AT8t2B7+B$qFM|INpx z{ewUFD0>6^pMINjYl44KyaoPE@izECyaPTG?}9%^&Tl>NhUj0Gv zcJ0Nxc3f;T14 z5P0wwUakw?l=d73kL}~~x?Z|IdVYvP`R3R8d=&%N^H&0VB-2Uo#NE8yGv^LMKL0JQrvvW3kG%^X6YqgH#rxoz^8oxSlJgLJD$|-P z?yoVF|C-b@0oV1=`mmlEl)wKsc)!oV6K{@t=i9)y;fabln5d_q1R2Cqo@D0ovm z4zBeleZ1h~4Igj$cn7>K>(c|*^%?m1$j2u>KJ)Q~j|aZ(lfRFLeLU*par8gu{hLIW zdj`|vCx0IggKPa!aIHV?<4N$e zzwiqF7Z@dbE9Jn&t}Upxe^Ifs2b>f>=A zPx^QPUDl_8E_t@V=bz<#I^ddf&&LNoKJxL2kI%q|V_u&HxUNs&zaW1(54hk{sV59R z7mtBEpX24m!6V{n@Pv2)JXYrWg(kSx-vZbAyWm>B2d?FZ;AvT(5xB0;6uctkXW*KT z^S#xan^HaiuH{{DUH>q+u73=?E%nF2b^X)eV<}$%pNluagP-U9+XC16yXaEBhc5ef zh%V(v=u&=)F6C$FQr`JLtNF*Id;nd_yWnXl9|qU$je$3%d>mZMr@?jq7Ql7?Ho>)g z3tY>0!L@u3T+0u^+p_*6aBZJc@UE1ffltL9hsQ+%+Ryv~x1RvGmUqFMQa%i>`l+|Tv6;8StULzk;LN1%M-JA7Xj1=st! zIC$WmoO1#^{RO^0Cc!J>Y4GMzUjG8P=3nvg2D;SK1n-Ksz=z^(@TqtQye-~Em+`dmDgj`60OGrrU?PjiLOm%70yQi-T)! zN$?v#a$oQKSpfgohu9n7?|Ah6yz(vZj(Eq%d*Hw9ayj|ODdo^M3`$=w5@Uw5`+~VM`k@ZZ1|D3E(0lfDkl0W#b zOZgV~v;T$5chJAg-UEOAhuH_g$w`~&{#EfXct-OFzfC+2{xI<*_%-4M@b5l|+ergl_g4%2F|uDe;Lnon?SY?=f<#>tF+1%QwOG zI;h*H=MB9MwxRrW58(TP4!B+id*BP1?t^P?10Nsy_y}Bc8>7!Tw+XoBFa_7#X5desWmIT+_3g82ou7GQ94Igj%cne%}YlHVCw+^`G&;{4rdf-~V53afC z_F-;AD1Y?>`MNLy*W4!H;RkSgn}Ta@GasM(_ySyWb7VQo_5UWfw*a{25CqrULf~57 z1=rkk`BaLsKB9{D!sHUrlj=HQy!0$j^G zvK^X_=BC@HuIINPl)qbY3xR8HVep1bN5D0=sE@~dJPxk8CBTQ@;oOqonnM~~b1Q&r z`3kt^rrU?PHKF|fklb3}np+2aCevMT&8_F-eIFlyYi>jE;deQ=5xC|s2G`ss;97nP zuDR*KDkCqRBYi>dC!~;3E5V+>xf@^MJ za4jDJ*W7gbbUpRD5QFl+F1f|QHMb;qPo~r0nnS_ID?Z);*W8-mQ^~Cbt~s>9HMb79 zmhXaVZn}M#TOZ3yZUb=5Z3G^AFt@icxaKzT@u`o`z%{oy_%JB%S%GT~j;xn%ujUp2 z*YZJd%}uvY>(Tb+Lis?DuM1&t%`FPvlIa+@<`(zygpVh|HMcZ)^P!wu0bFyafNO3I za4p{i*W7gbFt;|8k4bJFaLug;zL4oYxaKzS@u828z%{oq`1s+R+XP&5n1X9=GjJ_G z2iM$m`!F}>A*=n0hU69i*W5zrGVOwEZebsf_;?gtbBlrZAIG`H!8L~jxaO7w*Yas_ z&8+~g$7u!pJ(61kTytxIPh`3cuDNx5yzApVaLug`K7In{HUQTghTxjp2wcmL!8JGC zK5TDODE~K-+YDTDTY$$O%I(#Wf3<$iE#Tup9}j_RZZ7!nNt|04+`WoD0&AD~KHMbtP z=GF(-+;saew;`0jO>!H7Yi<+p@Q-qPn}Ta@GasM(_ySyWb7VQX{t3w^06rBDf@^Le zaLvsH*W7gbbh+BzB2fNUCATQJ<`xI<$aDf+b4&Vo+Q$pvnp*`t@?>sT4RANi-UQd& zTHu;n8(eeK?Ze!BaLsKB?mUI_nSoct=ir*# z0$g)*WIHq;%}uvYUE5m_%0J>Ee0~doYi?oihD=AmHMgjb$9y~vuDK<^o03lwTysc+ zYiOs@B8=wTyqa@+tpKjMHNZzQ-2~U%T0Y+P@ea7=)&+O>b8bC!dG6c?*W3o+ zn%fXubJOj^+{RG;A0)R4xaKwkk3NFi-yB?XTllympVRfx@&RzoEeJl9+(O`*gA1;? zg~7Fa1YC2|?bG$t>p~35Km4J5U5JBgZb|T-OsBy$hk}n+e7pg!xi!HnH*$Mxfol$J zaLug)uI0PnnwxGP=GKSuha|TFxaKwj4~4kBjlngyiH}cxdeem|poZA3ga~OhaZX<9l zKL*#_bo;QqO`-g{+!o;RM{#>~_0dUPB2(Gz> zz_q*!uDR*<>2kHbMWFn@OKwqc%`Fbzk?91u=9cvFw2v3SHMa`-QEqPyaLu6!uDP|q zwR{^~bJOj^+`3Ty2@m7zLJwSX8-NEM&FyUnuDOkTeC*>BaLsKB-j8!`GjPpe4z9T^ zz_q+1+oAbrZn}Ny+TMat{*2@n0@vKa;0>9MfNO41ACLKX99(ltpdaVllHi&{8eDTL zfNS{*xaOwYhq*PO{Le~mEpW}P13r`KF1Y5_^YOlq55P6IA-MBg&TRy)IgG(Iw+XnG zpMq;{x_y}29LoQxC<4JJMEscH~=THFG94g@L zALsH7a4p{i*W6m*np+z@{0Kh3b-*<@%?b1GLHW7l-v`(A82b1KT=O6M_{7Jj;F|vo zJn}-$a}KU~F2Ex%=JJla+ON>^0dUPf1YVG77hJbD?Bfw1kAmy=#=sM@{&8?!{{*-m zr%7-vp9a_M)$PM}Qi1XXX>Sd5`TIOA@QF;f!8Nyzk9U2%2d=sG!7DG}{XPKK9ERX} zT^NCD`7yZWrrU?PO`-fRNp3T6Jx&+k@yBy}b>v^IUvmric+kf~;F_C@{!-2@46Zpu zz%{ohxR#HBYi_!Ix?OsHOF;S0Np4AS&8+}Fkm(Az=GO4>rjNJ4HMchSFvYobz%_?1 zxZW@Hz_olITyxXy!`y~Y{+=PeE{wo6w+VRo3EbYM;F{aa$LBu20N30cS&puMGtIdL zz%_>;xaJlD*YYm7=BC@H%hmQ4f%4Z&Zc%W}Ee_t1=>)jumh|zoj~Bo-w+gu4pEkfX zhbFk@)&ke^ZE(#^w-0mcLisJptp~2T4Zs6WoZlAigw;+`N70E3GuDON58!{aMZ*K5$6a^oP$H3hzmyd&2#1r6s z@g(?MJPoe76~HyO3b^K`+lRR|q5Md4Yk_NS9q^eoVv<>PH1?|^G=U33{I?}2L$ zeQ<4W18^-r1lQbj`!KgLl+Q_S6L8IK1|GeN+us~qb6fbhBcIdt(eeRs%`FJ7-%|*I zYYr~B<`xFm@)2;&O}9_iQ?Cm#DF0T;Ee@`^CBb_#od(w&3O-)(@dmi&)&#G}aoPgc z9NOTTTL)arcfmC`-9F5%59PlsxedTIw-I>gYHn|1aLsMv<5M4>fopDa@Yp#%zb(Ku z2S?URw^wrufNS|6xaOwYr}b!ibD{kGAI0alFu3Lx1#ii8416lv6-Sr9^PE7J@=0*b zEsZYa3*f^|&a;9pf8V$PuDLbAH8{ zM3ZxigKG{6aLp|VuI1Cyz)xU zZ2+!048b+G5xABggKKWOec0ZnQ2xu3+YDTDTY$&I++H2|SL@gFTL4|oZ$Wf9UxmOm zHy6D9D$XqoJ{OOGYi?0+%`FD5x#{-lc4>P{K=~j2F}^M&!8Nx6_&}yB;M(3AKHl{4 z7P#it26tb}xpmOxdmmkJ&8-Knx%I&{H{CwWZ3yL$N^T=?&20i6ehRm@DY)h~^YOWl zFTgc7N0y`OpZF=xEdZ`L1i>}85V)3i!8JGCK3%T1w+NKKD7i(!HMcl;N2U|t%@%K0 z61*#(1|NzSz%{oD_*BX_!1a5SO>oVv1+KZZ!8JGCKFqBP<=-p0^}sc^0eIl4+}?)Z z+TKP!KKAhmxaKwmcYm7q%M4wP(>b{2wgA`M9N7-dM|0EdQ`hzugz{gK+(O`*TNu0{ z(-CmZE$ZVjACH4;ZVB+p&q#X)*BsK|np*)}%U8fPH{CwWtqJ8H@Myj+w7@mD4){!_ zyWpBz&&T^dJ^Lv+D}f( zbP!x~3;DR~<6&^kEdt(tJ?9n$*BoNtnp+%P%O}7!H{CwWEe++jCAR{&=GFio$#fH3 zb8Go{+s8ZLnp+n<{RYmh2d+8v!8Nx5xRxJ+Yi_!InA;f2|Ayo?0oUAS;L)dX`;M%UHK0X82+~(jFseb`J|3zM|BkQHxtGNZhHMbzR=BC@H^=Nx@ zq5O@KTNqq(i-NagItH%!#C<&B<4JJMEe+m(Gv`wP*BmO~np*>0%QwL_H{CwWtqtW% zl3NE{bL)XGWV#Qo_X`7X&2#AEBXG@a3_koNY0u!zx3EvaHMbeK<~9e{+;saeH)r2! zzvA7JTL4^h3!%%j3$D3^!8Nytk4M2Zw-|WyS2&+Ic;c<>32@CV39h-N!8Nx6xE`k! z@GnVj4RFn^1wNJOHn^@&2fY0*-mWfqU%U^#km&)q);|Q-`bXensecTv|9^-R@Z@9p zJg?h_?QI6-e?rR7!F74M9axWZ?P|NtOFaQ_U5_BR?#B@L&qzHkcq_uo3xjJt5%9aE zo+!AkM;u)1)m(LZhwtY7o`mwcztZ5ke+xcd0Ut~K4etsdfteG z7i2mCt~n&ZHHS2~uBXsf*FTe6-FaNSPL59?_``Mac^Hn?tY2VBpSUGO(ZJ$>-T zGx@j}fHz-o)I08m;IZ4-N8srs`viO_^-saOX)ZqlpNh}Hwf+UTli_-t>v=mg&$M^| zJh;K-gWwhM5c*5FybJDT*~8$K9D4-3DINolNj`D#$}e+03Gm=1dlFppNrOkEd;z?9 zJJ(YIcemLa;E57@6I}04Ti|0U-v)1&xt=cgLUQPVPhY|1``~VqeE_aG48glnegxhZ zAA=9YC*aO2dAU>cSFz8*g9o@>F2G|_zjMQCyKRaGz;(NV;KM^#d&g-Ay!(j9dG3Pi zc7?%R*{%q>Y*!3CEz@yu?Pn&ywV#;;*X`2!^!U~De*wzRuIB4<1zh`!P4M8;Io}qz zu4fxu*Runz>)8db$a${^J{RwU_kUd4EqLXH>_hO#i`YltUGXt^;>BEk0zMR-4H zHUn>p&%ygI<@y)kLvcs)*8Qm0qX2mD$-EzR|7iJu^qWIa{(G|D!{BLIk0`jVM*@5x z(@Ah`4{3014+U^-4;AplInJly<4y32ly8A||I77`-!`~D2kC$}rJgRh*3$#m{n7`& zMfQv4g!^R(<*$=AbB?zwjB?LZ}>y8UPtn&T} zgX?~Yfa~=x>fvrq*YWq(@`Ik!01#r!|0j@c>!Dlkv0oRH zH(V$`lAI&pnsW?Xb54TyWjYP6ITye+=L)#y+yK{{o8X#r3tV$JOtO{VGJIY`<)56<~aq|JZIpV=Nw$~T!3qyjx1ldOY;nXYo0+L z4}oi*F1Y5Y+pWvhJR?y4fnn|+M!_{ty>HffwEf4S{C=q?39jwG0Iu!70j}%W1Yei> zTi{xM8(iz@fET5nF1Xgy1J`=`;CD$q18}Wp2(Gz}z~3nKOu)6C8Mq_;xdphcrz7{l zy1(8j^#{PUe!Xwj@>)*_$`7O-7hLO!fb0Hsx{7LY{gvVFY z;K47kSHN|DH^6m0o8Y>hEpT1WHuzAM+W~j}n%AcbJ{9kSr=P{w-vPL;=MY?eGpCP#OaL#iC-hDLt7<~A6_6hj(YW69(^ECDuxVxWy z4j#LaeF2_+7P}*PX#R;9djLFklsyO@c`kbhT=%03{u*fy5%93ApY9)BAFU@2vjhYq;5hc0;Kg`7_hJn~}pK6vb<>;v#bnth1A!9GII zv5&!nMfM5!benw&uIGUn_o^oVj1)i4YDQ$4~bv&-p z0iXT?dl$U_OYA-Hc89$WKL17b0r>dM>_c!p&y2wD*7gRjwa`(y)*~)fR6{kbw7r{bw9e`x*x+nt~u%Y=yf~_E7 z=932R|10NE0H5EB`+F5|&8GqW;5EJu>iTL9dcJKz`A=*60oQzb;JO||aObGBA8^fQ z46gZ1z%`#Kc;)__!wh^FVxNO+J`3=QY_?q3s8J*?z!ZC*?cfnokeBBGW_gz%gk*;F`}E zT=SWLYd%wO=V{V@z+LetFTgc7N7h%{$$v=>x*h78TM)|6q`V8RxkbQrJ>uX^ znNEOfZb@*>Ee)=@6~HyO3V2iUX@F~Px?Y$=3(7xiAD^!};F?1ZTyq$K>-U?+K0X0& z4tf7h!Q0|9@XCj{{2W}b?+ft6hq=6S%WA)u*P zeTJ`LkArug$n7e&v07fI6X0)|a7#^t|K%sxE8x%h5PK8+f&aJMdCb8|n#<)h%^d+_%NV&D(Hn(Ik} zJNM-B1@PCtn76kDuI1a{4|y+_?}Kak0eIkFxcmfM%TK`vzsKdB+-eR9S^og|)Bl9a zhrzXc1iW^N%O}8feUjk!k?kFWyLWS*6Y!Two>TA>;!b{byP8r@0Q|dm^LhrsKPnyp zpGrMZ@UKbv82E?9)8L8sN;?66={>kzRluiT;`MBU52coW!)%lgd0^}YH9_<;xWb~)!(_sa*L#p~mOH)Vao;5SRVjeuV-o&X<8JxTDd zJG?$=@DIy&Rlvs|9+v42cv7aj;O^^x#5*tb!B2dd*E6)Wy4<^t zv4_Fmb0d2Me17}Wz53(eZ~Hu#Pk;~CZ}iF+!0-Mfm#=^~U%=(#+sD1n@m_VDtKY}J zCBe@B>M#X+gI`W z%)o#D)9efISAUK@P&&Sn&m*OL2>h<+@N&c8w~0r=pCTRy|GIb*{4?SO@Z$%0xef5g zi?_gkEym?L;1|Vv;8m$-06voPBk<>mPrx55J_G-{_yYW%ZC=knc{TrU{v3M<{GT4i z`zs9omIQkg{1pTCIQaXdd=mUcCwRF9@P)L)26%Ln%eTNAFgztT>k|8?3jH9{$eS=0RM&0^7;fS$5-0_U&wJ30>4p?i!k^P$#E0~FH4?r z@Q*#3*E0$J8&6~}fZuRm_6GQi#arNU@ecU8jN}jgt}*)nJS;u}5A5glnSg)kt6a|v z{HM$83-BA~?14LuujK!^e`XJXe@K=a2ESv*<)h#~BikDXf2Vj7{N?wN{K0Se6xZJX zf5TDs7I;~5=z#x%cn|!{ZCuX){DAlf{7K>y@B>fb^`C)1L3{!J^WuT(YX0BR`w{R5 zO8GE&RXhs*eDOH=Gh}}y!Ow~pz#k>v0Pj75x3>j8znZ-R{#5B-^}zpejmr=W?6lH6wC9}{1Izh691JHFEX->&(Czd<|?l#Czax5g&kmNqhuedWPf={>jhr_RhdBNdIa9{;uO(PoTb<|EJ&0 z^@PBm(`FBYA9w?M6ucni0sOvly>5U%@7dgbTHtl@4)}}2d*FZmEUsq&zF*3Z!2d?dPr&~`u17QQ-x6Pd zU;7ow|H5kiJNM@G34uG0Vh@AA{dc*ZDEMc^E$>Dzgx=Bz?)LuX{_dd?;qji2Ef1m7#=?lf}j2iF7JX*-@)TE zVesIuvq!)`kdplfK92DE#lS=R*?Zva|IOa_@d5fbxP1IL|9fvr@t$6i{GWv7_p&@` z`43s1w)}@JFIaAtq5rE`{y;_gw_!OyS>TyX%O7c#Z&`kmdivwUj#$1R^({t3(HmVeUnz;k!^?_XOUwEWAKhb;e! z<*w!b-SV*Ie`9&X^8aCZ)bgq2G0Xqf@`Ct%$nIfz#d5pdHY~T>ZPRkQ-L@>Z+ilx& zyWMsyH|wPT>sro7G|%Z-eqSw2|Mo5CGYrohSk5D{>_f}%Z`Cuh`~jAaEq{>Z6U&2^ zPc472%Nv$I z$?~S<{DhHbwk*HeD&MyJ$(DC44_n@~{3(|AEPtxyeao-0d|>(0EFW6FX8FkSeU^_c zzt-}J^+@`dF$SnizIZU6iPgl7gU=O-8JLCfWdyf-6cdDN=k zwVZoIJTq+h0jqq(@@H8dwfxzZ$1K0u^0?*Cu{>dU%<`n=2Q5!qe#r8I<=lhfnH9^A zSmhg*AGN$``7z5|mfvD|+w!>O9m{!-^31N~&$Y_;EPtNmealZ+KCt{&%ZHYqw0vaw zDa*%}CoG>>{(Q@)mY=qKX8F41bIZ?IzOekP<<70U?f(Uq2Q0tM@}T8O%R`p`xaF?p zFSI;t`HL)%SpH(mqn5wK@|fi>wLETl%JPKeY0HzAXDm-!zF~R6@~q_*%X5}DEYDls zwEUdqEz378Z(CllykmLM@~-8#Ti&z$yybn%w=5r6zHRx?@{;8v%PW?TEx*I^iRE_x ze`g1(wER_;r!9ZA8%IJEwNr|1Vh{u)Je=(DGllJY@M>EO#yc70bhx|ElE?%in5w z)bh7k9<%({ERS2>wLD?@+bvI8{tnC2mcP^Tg5|$%dByT~S>CYxH!N>j{+pJ!Ebm#~ zw*1|ecPxL83=oCoTW57cBob%PW@uFUuR2|8L8imVedqmgRHH+m`>k zU$eYt`F~p8xBTmt4=n$N+*zh(Kv@^4!{wfsAl&n*A0 z<#Wsb%kqWg-?Q8~z1#l(kL3Z&?E&tf<@dP9?gv7a-_vr}@_Shxw)}@Ik68Z0mhUd< z%D`D&(KuKt8`xLm5|8+Es|vz@w-sTMOETlv}n_o}U&Tgg=OrTT%FxmVTPyBz(< z%U{0xtMjz0YAzvL8iYng0@ezN&m?Rbt>qqwWtLZ-S|ENw15 zlU>W~_rb^YaHxq3cdP1Ot4d?uHwREuSA{@U@($3aas+KvIrw_ZO@|u}mTTWXOwb~`;T(y`l<+d&zrjORE zmz;8~x<={KZ?_g}HQFw>Li5ePxqP`&cX{5iVu`lk&U}^j02R#@Yi51c>iMnwcHRi> z&)RlzJHM96tZi={ZB#O)T%1<7O!Kmt)A>rdR`ezgA9Ss$dcI0K$`m?L&g9%IwT+s4 zu3Fx9&lRbey2X;4adX9LKI;`q)$;Y*Xjjwf9a-Y;o=u&jy=p2uow;~ApUoF9g?y^KVg5D8)g@tUBa~V#TfUGdUhbQ0y||XI*VZc4a{1h;b4T)9ln@p0 z_H=QZ_HU|ON>!<0(4I_XX$?};#Hm27p2?m!#|#}W9#r#Nw7+CxGpoh&*=nAe`z2?m zbiP!+SaP?D8&xx1yHu;^x0jPg=#WUQ=j*4-<@yOJ;+YM{&J|O+EjpOX<{Yt7?C@3w zZ`V=#p@X!%aXU5HRJL5Xr!|d5TVuw4+UX-YS;Pr%IVRHHunlD|2U&^pg7#mRQlL@y_h{ur-A~l^d_~|OV0j% z*YAt$+rPG5u5aZpIhFI~KRX*+#cay_y0bhGXuHa}yh~@NoqW~hBCaWt+RjwW)h$B@ z+4E@H+kv;P8nyjue)Dj>x@B5@y__v?Q5aQIoMz>-32%vJk`B&|e06Q3oTD94yHv`W z6ZauAb$tDldv@KWBaaHWOR}f0cq(xVnVP$i&zD>}bi6Z7l^RcG%Uq*qmu9Ik)XSBN zCZ5!}DqVVvVI4{DbWw@(zEIG}Kb#=K~vba{y&~B`s zi>5NwD*w9w#@*kqzfOMNq83-$FB5vHJLRqQLGOd6ajJT?)UK@8t8~peM3(~U zrO-)|jwq&MbgeUs-hU(1W}|MDZOgTzh3JR1oJDrA>#u9vaM=p(;~p{#Aog0xy#&Z1>8N#qI( z*H3R!yU)_kt@K0Jtop6xT=85npF4EPxwFx5YC8>wE{Y}kr?|F7|2@1@HC^(<^@g)i zZ8*1QO8NS&nc~()x#5)Sbn?}S>bY$6y6bd`dRO&RrkjyJLwuf(o0AlERVvF8 z$7qA;L`i)hIrV2~6KDnK3`1u!nv*tH8}~(Y*K!SYq|Vh|l6EgEvR%G#2d&i8+!rMh zRIIqY9ep|d=lbh*3m0o;I``yLbor=Pcf9MWcVk35L+0da<;@%tGCYk1xq8q);w$A1HsFN>H%{82AmVP!G zbk(ixR4UYGrj*N7>VA9oGIWvO&YOKjInh<5?$YJ4p85WzrAYDM)A>ZV&L7Fr#vk7- zm8<#VFsD-7D%TIz=|s6f*+}s!EoC>6UKl708IZ>jbj)UKMcJGFdn zS2nlG8<{OY^WkN&4O-Au*X_Hm;jBeyk(Vwy^@~oecG20SpG@_lL!I6N-J&^k-$`N9 zPSMVCrfzOYY0eRIFXi>HPh{@AWKQ~L*y)0HI=}ln|F+vLpiZ>2nWY<$iw^a>H_A0{ zpJ&gfOwaz@7V#nKT4W2}VUVZW3T1Ppqy|d2S38yZsp`5}r&Bu9n{tZU^>Yo^X$bZ)=s6zP}3MdvKt|D4HerYPj) z5Q1waQfEus-kHyIzRekT*~9^_HyyO;@Ypw^YXQ_vTK&ythtxVcIG^{Ml-N-`Qi>;s^`sR zis!6MEr$!dc^lMz57wyho4dlJ)oR%ri7H<_Np4C4dG{%1Udq(Tox*)717;YD`iZG6 zTA#I>Pt&dbh5QNXHiVzz-gJ{&&Cp>+Key9Qfqv?jF3`Q<1!u$jd+~x(yWrHT7n}n9 zl*$*Jlk`&}-MZjx($Dz|&h1p7c)_8&e&>jHJg0K>tK>o#t>u(=el=6s0)6-b-5bh? zPbz0FIJx`OR&i{%b4qIiDCDHUlG=!g0T zl;aK!o6;>ht!9?CaAU`*WT*)JoTr}x{jBZKb%gE#X`m!`(^Wf8W^41Nt8(sUxlU8& zKG0h+Glzx-@)Tyd15=5817;g_>PmS9TB3Icdd7UhG~tux7juVcmVK0d zFVzmqZ={E5E{&ymGfbiF8jaG`ooeHP_aPd_h@U!gyj0n#J3CvMOEh}sn7cmeR#2bq z1OtyvZBRGM%wDh4<*M$Sr=Q#Dr(UO@>P~Gpg97!JdAJ~9e&epqG9lBY%-65o%9l3l z1sWu$BRgkyG>yr5!_{8X;*XnQC#t{<+;}6-r}G!gpdBUVxs^4{$>q1|G%UJO`pm_$ zIU#U=DMejeZ~V{eEbtt!&QqnlPbrz>m7@MrmUS<# z3#o&-oLsYOXUeqPd}iBRq1WmDm`9tfvV1nu;%2R`_<@w(d3&poI=)RkT^@3yoKoI- zljqpo0H0MpO#>xd*!l?nN~iwlF7Cf^sn)ONO3S`H#qECNMwvww>91ZXm}p$L`;qJA zclwC_DiwQWP90uPxN->Zj=9o!IE`NCiZNX1YN>PP zT4mNMSKKuJEXRt?IDTz&y+{M?-VFLgEwh=IDbq)(`uq&FdhWo1 z4H^vhW>c)*J+CQBw_#@Jm}i(r8Fkt?8Y!h&=Av$HAiY5;y0n?6HHVEYTWYFyM^z@h ztFbppEvab6!!z`JXF1z6^VIH~bu)ub!E_TxmqhO$s=v5dqLWyS&Qf#~rm~GpYI7%3 z&80FMMlNrXx8&>Q(aGv?HI3`i*)DHJPfwILz4_XgIZ2z%Ph0rJXzud!7N%Ao$3F~yn%3vP5na7CcQP^?5Q$L>bPDomWo-IgWbMiJpqmnkBePRZ;P^$g5|+H!TD3CY=@=hbW8Z`EUmY52=rAh+lYbm*^RgSx58K zi;j*Xw9?+d81)7c-VA+2!}DFc06l>*A2n@RZ*y)nkn;X(U*YMxMqP$_+{~p*AKzru zTpDP0>F#G|o94Ms-lAnc*^I_+kh-R;W1e1{k1Ve%-r|<0WiuLm^a6d>IYY;zc{W3r zrwUz7&SYxmd4|^+38dw*niE(KN0<>>bf5v-oEn}h1^2Gu309wY|mm^nZL_lq~po$)2PR@Ipc9SkU6Yx2Cl*_#W{p9i{WC_@`z5C6BvUfP6Wy3#2XV846 zBen2vAPmV)~gB~Ej)~#p;rg!cNycqjZU-2cFah%>Dnzn zwOSdEL@a0K%2}`7Ip_12=z8is-Zt%!E|c}l3Q#Y^T>&#zvnnQ!6rBQ(mgqT1x#ZPz zoSHn{vC|XR^0w_>SwxQPva$(!Za_Wf?UY>s-PD%1y+xd)UIGo#)2kQ)Yis;+z?wP2 zs&r7$_ULKU8`597%cOI+j9!?xYrbz$>xR_z-o>HP$LK94bCe#HPv4p;QODh@h%!A$ z10+0=D^P;FlP1pHDLP=c=yeb8Q?=SwcFVlLLWAC0^f<@+)f}<40v#?cjWK(V3S619 zzJ9{~^)Q#G(+&+MteLGf{S)4--QO$aN|qL|NvDqJGuO&^kXfYA*DU8wl23%aU#)7&Z!(W8vi?R2W8_nAyqbgn(k^Yf*( z##(VL$M;3fNxB1~mnZ0cn+{aDS+Y9%S-RP#1=3H3ezwk=zMl@a<>^|YPorGAgwQCO zH@HRpCh7U^^NRTN7G>V$oked3U0yF8H4E?#NIDy?^a5ArXeZD^yASArb^-Y#d3wfe zUUV?;)|ign4!wY9&VuIHqSGKf0Hp%7|EXh8-lV%jIvZx_-iS_#<`spNk1Y=pyDn$t zF`V}b4=v^_Eya6@On+Z_(dM|Bd(Abp#0~0`Jlj2X;@~aj#8B|M7|b;4x=p1t`ntSJ zXigzKhh7tO=)Ie@+v#7g?_z!_mVDV4dHAvx&%SF^dzkTkq=Tg3|9Ka>s; znGPQPLx%_bm)co|dIQwo+q7>5sfEzA-shXKEGlRE(W$NcIeOq!D4wHhP@dYqKJUv) z7utRHO>RXeXrQ>B=We;zSEUc^4j!B^eQDR61nBfbtuwPpeK&qp#S?uLNFmS*L0d99 zR$H0py{E&&W;{b*1EW_Ob7qj#tJT!6wNcpKWs-~2`Ggt{y=!M)Bcm=Kz1~>O=FORA zD}S7hl2pA+w~^dIzVhtvH;+DQt`MflNill$ZmoQdUiqP$G4rk=Z5h2I;%<1aY3N`d zHOU;^VwgKLyGeQ7t7FB6>B>>3t=Pf;=S{f0 zE;j?Z z-F27k+}vh(uPV~T->Ky2jPE_TaHtbO&o8{upM4j$_t7;dXQrv|u(`2TZcrbI-ZG^> zw}0kzo?n2baaJApqPq+8I7kOE57XUiJx^D_2EWrsCy3Hzv#*G|pE*Q5vnv)^nPJ|y z*OyndG3hipyJy^2R*BvgqWp{A|uS zR;J4UU0AoN6J^H3&CRHJuH;f6G^#|un( zo?muwypa(3-M(QK;v2owdGnr7PA#kD>9UYA<3xuACUp{|FdO5X;sQGE$QO`xx}T!&PEg0fyotwMMaSH4=mh6Yy-u0QBgEeH zd9niioTHzUG*W4LU=$bi=c$b>ueR(VprIBs(Wr9kb z9uhbg&DS#MU-M5?{-qZ>8R%_JYUO6AfSUV3=~9}z5T5kr&;el2u_o!IU7pevphZwo z)48sj;ZN!t?X1!G-<>t@NTLg2jXSOML2n|nbumL$qv0`nv%8dAqle!+HK$zN%#@0E z(%zuAwYN;HgfuE>Za{J}={+@}N!NRRBUqzyG+ah6B-fl0{cO|E7X1|ICr>}7*GB(j z^0l@7*G1PFb^iUjr{C!PzB_b4UE&(e^xgrN->JuHUQRznw?Sq+yXJjogU6|B)b*D; zMFns8nC`oH=-BJG>Gv$WMniYNW_Z&KHP;*(1>t822Warv>(7|ie`?fYGTTki>NPw)AZ^yBxh=C*{`GHZGY*qA5DEYhE9e-|bITX%vz+lpev- zDZPZf3gcR_7*`qczJffb6as4gS-^3OY-j&XhKnV^n-l znyUw$481`elGVvO%<~mGD5!zbdBI#-_*Wg*xx(uMbb6w&=v{antMRs-o`cfOvhT|V zKkx_4NqBbw<{V6G&fk)t{YrP6bn7i+MP~VY@isT-^gA8E`tr9o=q0o1Ms>C5vXnQ6 zPCNAS@d3W-t(h|y72h2tkf+fH(dm0A6tM8_GZFKJJ$^Xs*1U(bHM;$wwn$&pqkT_r zPgh+!$D8lZ&~aX-yRR&LXUv?p5AaXVFRz&WY#w1$<-0p{{->`p6-y}{{6Y6xL)m+Ih^|W2yctd4egK^*YIN0uK;kT$o9=1X?;-l%=4I=F2Pzf9?9gIX`mIZ5xCREqMA8oD7i+g83v7pRK`T0hzZ z^LWY(sL)xJdW|%mXO`r>m1zcGmX8wnHQTdZ@#7`BKjV^TmoGW-(MuUf&icN$ceSF2 z0p`l(nnz{sCiP}YCcK8rJ)&h%Iu+9WDZNMHt%cbDO4>V?)x3736L}iq+0qH~oFKED zDwMbBJZuX!KI%>_Yfn*^x|UxzZ;I1fA*J))J+anBmp!kmN!Om78odcdn?PetOEK3R zx?obP%bhx{#d7KUcsefyW+C;vVLv4XRvCFs~E&NN?I zrQ<@6)75Jdy-iQ&KXbQa4*!g+7du`teG=h)pU}P+V4!EiRsJnuF1h?`c8mHx=CbG2 z>^&1Rmm7VLkPcFM9h)vgd?=U)p!~UNjiSgTC=N=}eD^tD%9^(XsLMkguuHDjoL`Ws z(su&AN6h8roJ7{P<<;!uj`=>?sdKXXz4Fp|@-Cw_ezRcPn%K9+U$)$*NUK6eiD?LH z=9^lHOp%s)j()P4X38eFe%ZqkK9g$zF@*e{QfOw1tkme;KeS?=SX#6fPH3K@b=s_P{xR*rx&RnT7 zx!loR+|J}K6l?kLky9tnoIHB;$W!RaOy2b3sSS923fd#Qa&-R7x#rIict^Eq7rT$u z%IQ` z@XXM?m-$AEDY5)IKfTB9y>mon7MV9Mwlhe-*Xz5O2g5af5st=R;(N${&z^vP^j;xDFBN-kVE|_cp!h-O}A( z-sRU4^Mw?DBZ~^~7@2uPm0ld722Nch>hACa4ck(m)I7-NY4fKcb}DfiT9MI~)Aaag z>jK>}o0!ZO_)9dWn)f;>=1YC_8rX*Eg;6Jl(e=<3G_N0d5zs!TQ`_#lW8NvxtW4ud zy!%Bjb10b`klhoEIU1;cO9wcOU3%Z%qMj1neDXDdzVya(&HXuj-TepubdJ7OuxY-G z;4Or!p+)i_=}DhO(@Rj)#BQgSb<1J1g5STicVYCt9nW8L^DcDD4jEl|i`ljM#qyeo zlA3SD3}es%FaMTHJiSe(f3anG5!|BtR)@wb>B2=n)Jn~xt>sgKjYC(!jEB;>G=FP^ z!uEEb94{2C$=CIIpR^yn5ex59u)J2uO%>n#nQ;#4#awjh8DXWMZNIi0=-53v%$v0I z!X$NSsOL*>A5_i$;+sLg4-X?^@9jx` zwRjJo))#^I@=>oFzK0LqNEhtFN% zo@WoWtlS^%;q$AvAbY6bvOA1D)NzH|ggw+^_n-Ih@q?A3_g%$3eDnkjpYBlibFZK0 zajLz3das}3f$HU{c@NwD|MOYzv4go@|G*cMl_tA~&r|=_``Y3UzGS}l-NPdJMbJ}w z*;*P!puy2SEb}mp^sRd@5z%e;9zOp(Gyb?meSGuMkQpV}Lmg*J^m-fJ@6#=qd8421 z;Pz0-F?|E^2j5}#DS_^2_qYPwg-_7^%^ud?+(GT(W4G?!)2wfMf49(#pzoogv*r&3 zozLg?_;Kn(&=bu3UY1Pjy_fZ+yHWZ(3VZnEx_r&YJek_V$CoEF>ZkAJ^X9bV{T01E ze%}7ejC)yqIZDiG?BV0o)1ecy;fmP_j?GDpE{p5?=91q{9bA>_ebmW6px0L`DK&; zpUTWWHD4Xs!>x;J=#Z9cou7v3o12kGb?k9vW7qqrK)>UwttHEcDg( zC&`nt6NN6R&xnlCiUO zddQg1(Sug%JlBsU&Qd3l#@1yp(cFSxv4Hu)xcQ>>|7Go6yW6;tz2AO&o=?HOp5>F7 zy+S#$Gcy^jJ^L(*q-4grFeK$mvgh=oNJ^r`TiBE>`O}}@zY6GXUL;F7PvRCEg#sFl z1`36`!8Qy#F^*X}ot>cgcU=#9s_BIZ8O4>9|j zoe&Xs^gual`}Je)u6K`lyIwrzO~yB)$-UMrJQNVzd(18KEJ$#vKn93Ay*y5@F#N-r zz;lRv(4U!8gCvUCx>Nav>~hjAAWI01JF4-K*QDmY!P54a74V zYUGxtl@gAL{uMa+5|T=oKlk894sY@42C~WEL-(R`DFUp=x|pPzI1da1#61C|HNxd} zxUi@$C|PVoLwR$U8`2gz5Ou}NK;@`Kqqr}g@6imSnJNp+9M>kyOwf_j$8?rimSZ)L zcVN{sWY(p+Ep27L0jWJm^E(?1nDD0IosZ z6u~j1S^SErn5V2tzwL(h72lxZ8M4%xf5{YZ3JQZgnco#Lj4_M7)!q`_yoaF*mTEF` z%d?0~EUjp8OUl9MEYSMlDSBZRz}R@lx*E9HjYritqsavAVFAD3oo}Z_y4F42`?10+ z6Ppj!M_!(C3OqBYpxD65K8JtUBQEe7LCLfD5|`tvV7)+hV~~^Qd0?E_xcb=%VRB;X zpmkOx+Rc+9Ave+-?YvdoH|vczrPS$B>$F*<-<;IyMXJ-S6$uKKlkK@qq^GeAsZte2cCGuy)?6f#4B2@xbz#6xQ1|E~np zb3e7Ap9_tZdZgwVFaeI zujvfx7zrjOSNN5u7cAd0Z4_68m4H5H&Uwf*5DQmjb`I;6*Z=s(Ke6d>|4LJ0(u;fr zX*w6M)w9)iS)Na4!joUR!WXlDw9|Zi93c3iEPfEo2IF0v>?YzW)*%H)f>A9U4^d&1 zL6_b2lFt*&oJ3+pBi&22HG>71Y0XE5F+k}j(7{-s4X#8R(YJBi=U1HG~0jq@&!oS{}VuDzkp&xtcCc$USxYOvj5IA%-oM? z%2u8*eo-eb68D0SB0)+nI|1O5|9u7}6J(E2X_Vv7}+EuNWYh04rPW za~F0uxv(^5O|&DS`3ViE{6)VwM=LC~#mBB(E{glCbPwY1^4tBlt?CsC%BX;F)UtPA z-3$~6|9qL+n+S~=#EPwN!Ysoo5&Z9Mo>7ix+rOlwa+SpwS!o=r3^KL|27|AYfvC*b z-AbWk>PnHEi_$RBp!#CuRxZJE8U7+V`B>Ep z4@bm&xUUdU+@l)?+mBF_H%ophd{+A|Z1XItiQcHor^<)BBlpYoLeM5j=c8J zr`1mo%Km-XKxt=N^G@EG>(H2 zz-CQj7MdBRbx;5o-N6g0j1)$jcJjghqII_NV)$3t7BPH~JbbrO@Fc~IfE$|6kYLdUjUz2q zEQOM&i6Cu0$!0@zYk|?%Svr;PUS!{Gw8%XQgGpe4P#h*i8)U$0RHee%Sp|-~P2`y4 zjvja-sd_9>35l@BJ8DZK^5f0Dgflb?RhrKBQXU4x>yS62a2eN?|ElWdd;Q53p9O7T z5y|+M{ICCuKiU0~u*J)S{v%ZDlK8mGu1EF1ar(JRKZ)~Y6&-nm<%r{(vFd-DWM;3AHK%`~|M*v4 z4PktTtH1v|!Qb>|%(J5_D5k=8FIUib|KmSj*?ll&wj;beQipsV&zFj23*)_N^Rvj7 zIakHmT)}lycli@#3!Y?Lmt3rZ(7$&l2$F9Jd&`+iQZTRZ#8~3aYd`zh7r7u2O>ePG zK5^B!?&tPM^CZ6GUgMIt#08xMoU$Yq9-6vd$}r{%cMgo`%HYpTDvC95a>)gPV!eE0 ztlFK4CH|54N8z3rSKG|f;u*ERdF~8}3a%RI6~Xi2T>U7n#6pj#a2mrKwxA87vOvt* zH&45{G#N{iQt{dB@E&vjumV~s&CCx0l z52t8^@JfUGm|;?zJTaeMh+58<5z>w(eY46>e(ki&1QcZS~1HgCb+^s_RotKC@Ctax>V zVGZ?$S)Hp*u=ZzKBHA~WCdXa}h!$)>SnDJa^#U%yDAG<@GS5tFEJ;WiLNtAUH5!yJ zDY-38XriiaWe;Z47HKqWPeRpNK86jJL5`T**7Oiy=blhzgI!tHN*W?-y)h0A>n&_4 z0^B-0S~S=sY#F;MzA!JxfqUTH ziJ$jrD=X48pis)NcFC`?jH|sn7@If)&p^op)~s*I_BKNl-E)3^FpAqA)fT#-yk*9}TDTRsNkZ(F%3s zTVn^92<@!viRg%AeYLDOkm#00aId)%`6(#~;z*;I!bb}#AHo~DvLi9~mM8@v8XgQZ zeKrputXa%(swjCog`nl zh7=^zo7-6fL#cLwyQ39$0~(KI zYCPMVQeYgI)mrN%=7IZTJ3@sqI9>^m)1By3o9EFzomi0O=J&u&(w_s!+yZoQl^W(4 z8mtzGJH%(#2a<&4Ei#R;LqWp$83x}*WrBPa=D_2v(Cow3ag)<1jYqLa0dj>4mdu`} zCt})^8u0WM`Z5A@ouxU^Wkf2^A=;^pmfMI_S$hQ0Jv9SM;a>519jq%pTUqJioQauK zTj%THiXYx5{K9A&xl?m;s-=F?<~QPctuZy0z$zxfthJAhuv%XFkU&3eP6h!1WD&^y z+}&-+=1IIW1beZdeG%=Xa!4Va2p*-sv6f=7437faV-47eLO9YA3hqp`OEvbKIfmc3 zDHaIQ?urG(ZRD{=2_yJ3_H9EfNtMeTS*&Orn;M?0E5A(^$`dp&9!H3?%1K{%Nrzs@!LB?6a6IEb4*Kpq= zD6~4xKaZWDj$&C@9(FE}4D)-h&4v&I+%O$M#d`CQKr}%aTW?~Qof$|2J22%u+121( zlkgC8AAy0<1eHzQg&7c5$`foCQ2{mt|LU#m(GyeA`N?NRWiVmHZl`VI;%y{hqO2`G&;~%H}KymriDEyQ)E^haMEs2g-M{ zu#Z4A7`UxcMtP$a_p{);B++=P64XyTC7Xq7BjlMj2qFC0j$C=Ck79N)>Z0l$t?QDr zMTk_+$`UJxr$W<5}f!0ub zv~!ULo4X>d_(yAiR+c9fL5MR{+-9Se!$ZFNs`nJT+^h5R{mg^C1f>qIpn$~+ko}4g z`>dFFv6h%exX2Il<*uCD?0P5s0WcMv?Zk)gzn#o?J%OlI@Dj`3H3poerul0iAl{i9 z8%`L(a-j&$uGhe!uA%kWE_|BJ(zYvy*bTeDkg77cb}=?FD97%_uARAZq7u{4BesHU zfXc>RCBqpm-qtoYBBg-#^ z`0&jgWn%0%L<&)8U4@o1SBH9*AH*eU;~TNVJS#mX?2!ke3v3UYHcT3=n9m{3PU|B) zq8^qO4lvS@LLud`NARhu5={{2f0AP=wI%+ECsi1!EMDI#6YSz~7(fWFC% zDc|dcEUhMYr>3=teI8OgWg2b?ei`oI12I?+36))3Bi#;Z1b0lJ4WQz!ZNkvA5G5C? zyO}YaU+jR6AvSpgoN>2t8lD%HD+$E|gi%ebDz>~@1QA**A*{5)&2+fTPdC0Aq}L<| zE{nQYie|F|)dm*RqkH%*o=NzX&jRP%aT$0SbP%~;ge%^?L~fENT>I*dMWZht|zT>=QKmzdBRKPNff;bcOpH939Bun znwZLjXw^Cgi-x}u zS$`$r_kFh`cu}2^!-KSc7;?CSDX^1kAW#SR8gA%m>@u%cD{i^6jCOL-P8O=Fc1kE< z7bsvCbnF7fA?LZt*!N|&9K38WW-ql54zaJZz3atJ96F788*>MDci2!`4H%NiCf|ne z7`NlSfmcvM(Gh+ee}oHzj*;8Sj+%PTw~%_$Fx1PFtLpGtp$na;z~&#%Nf1;q>CYAl zgoI2D5|}a5aHWuCX!3H!pM8=l`Xx$IyfWJ{a5o~NsL zAx*5AH+*^|=ARf5V*_xupZ~Hnm?U?3e|A~Nf#@rdxvt3@TrZNFs|7S}k<7Sww@A6N zF9_Y>v1i1Pgu=m_Iz&6CuI0tOTz4W&f(VYXvp#p|pVetwGmz>Bi{#4%t>jvAeeEwe zpcxn!C49}&K&YQ|UpJav#o1fW*bN1}Q-8IMT>{cLg~N_G19tY9lK0CnP-GghiBg8C z7Az(PGk#+V>kv{(JJL9KvX!3Zx%VG zlY{Sd4$u!KslCN*91C4!@1wn|{Yte;5wl8A5%b~s*N;EE`pM(7BFkUMqDPREgSFa= z&K(S^lOgSZ-pYEV8ce5k))j7W;bafH1EUQ^XW`D2HoDca+my&jL;O`_M=@F|bA^~i zzfNAI&^BTx*{i^HIw%i`ZDLhLE@dy30jZU zap{zpt|?F|M-ZoBIP3r&Q8?{tS0-!-6=)-8;i}7-Lppm1gU-*O7jG1`d}dx_+kg2G=!L*em#cB`jt7Iw!V) zNjQKSJzp~WMDwd0iB4p#Bn}%^FB!9}ph&5OdECq~gOiZeza5T4$DP5WV9G<%mL-0_ zUeA*|t{bia*98~7W~WYJn|U?o{Hl5KiA$>oQ(}I1F9D#|Z^SV!!?93h2Fa;{f?0~E zKx86J;0hlI0VZyKC>xKUV3hgyj+k1&OBO8%7Ge%!WV3gHP?{9Md2q|!3b3JPf**_O z@ueixZqP^ma}FCWFU_Kj&b1>@5ex+=vI&f^BSz%YtG#Y-8`f~xK`d1Ja*Q;NyayPZxl=?)&_5Bt4^q>yj&|BD59g@iD&6PyknF_cM-Qnt{6bGK=aT zhMyUT1OZ~S;=-)k)CIX&m+0DOrqR_%?9Fi5r;2t2RSMYG+gb9NE8}8E&n%w7+RTz) zxU!|pAZAQ7U|a*P)HUYJ&J0EwGdMR_bWWGC5*3g-cUikTXL;k$5RDCx>(Sx@=9q`f zk}IzN;miPhi-zt~AQjpyXYIx&_97q~Yp~AAW3P&Q%M9YEbwW9#~I=M z^_6A`yG;qM5y@j9#AK$Auo;|xVIM3RIHGDdO-a&`>;oBy1t_?ygbg-xKr43Bx7$h$ z*HY-Q_2F<*Dxm;mG2Dhvhkx4z{An9V4X=OR4S)4&2YfnwwX>4H{kR+c<2E+NYZfg{ z@2K;sf?OSeWC`w42)?0<-`6q;A&-Cz3+-IgCLvtDU31?Hm&x(zq_VQ(kZ)sfoi)^_ z;USO^;jXwRS00@4d(8j|>+GW!wyO`=y(489u|?Z~H{yUf1^!u9Zu1oe`(N3gelcs| zXfYpH@sXKT(%?;_osux|_Y_+F2d!RV_5Mi$6&ENLN9KfKy7 z*SY_VHMBqpG^o3P*c8x0DqFz9s}=w$2h2>P0M&wT{hOk|K=v+=6vS zt1YAeP<;9JGKTU9K-NE`M;e>C$RGxQbk>9l5xrVyYX{`1BHlt|*`s_RNiW$yvhJ8E zNq$TKGVq``t>%~&FsrDJg1btQq4rJLCouRJ8B&B5(L(*ZwX&!zgX0$+%#(CXISIX# zOGKXC3auyrK5bH%j4!hs8e5P9T$Pq5qm4rd{F=j!A>9Hpq@>AYnJN&0#fL}$M;N9& zPYOHsW*AT8AUhy{Jr5dZ`(VwgzNpSdj}YU5g4?A&Y0nIxqkvwf9fKQF(^X1H<=r^i zQLEY)Av8;D=t}{bLm2on1X=4sd$SR93hO}&6g>A&XDa@%cIWDR2gZi&z+_L!4*Sx* zpUPE;m0yP+O0jN7NkTYJpnIh#Gst#Cz!s8tu@0#>VBd7~7kij8)Fq2$h&_7^M}jXz zh-Qx?+#;0EWs(*7iJ|=* z+^`|Q%_8WKy*g9fZ-$x1?g@(CA*emarn~j%TDWOm--Mi)VZfZ2V+q7U^mel?FK(j zQ^%H z^{Oo9hF$AMZrJ)n8WGB%(KNSO698a@ms@e;Gdi^8g9)?-j}gJyV(Q!L!KP?qA`dIK zlhFmT5qO6@6LFnJ?C#8>WVT&0GNbHO;*-82mt-VQb3nC9{rSMp_7iwzh% z{9Q=r4iBs~5mu;GnR4no93D=_n78H#j3i908prFx!)!R()(WVg!74Ue1_tJRqUxW_LuA;Tm)U@r0m>^R4!mC+3-|~Y;=voz`#Z6#A@!FrCQd80vT_Y zv@mqJ;#DKD$jpz?R9t(z@X^&USlO0o;zegCy@b-$8+>K1xVuz}1yrz$8N0tJTT3oK zC?NSVVF$(4*Dt%@Pi%o0AN!DdI~J~_3#f69OG%o87^5VFRchAPvD#Fu1dqq&nP+ho zhZuL!nXJ%|43Q|2G0k$ou>o=dvZ1m&TcVZYWw?lhf&75qIgAGl&+q}1G25`=fZ=I3 z+!2-JvJ%xZrSZmQwmkeW-J%|5qMY~8040c*2x-qvVIz(e5TPPiwzvjd%PYu46n*Ov z2)!oui)Whsnna_xGuLN{5j8}*DlpCJP&g~v@!#_3u?&q=ySV^=a*5nvy05i~FN-Zo z*1sI>86!nd6vX{5?XQA{TpL;T42D$3*+JCdVts~7ID=I7_HKx^3$K*hu)qjB6VG7y zEDnkY$AXV9akCA~6WRC;b5O};(C#sK=SUWqN>Pn7M@r_*JG6rL=Yqan6H{z$-B7o} zb532=r7Xs@iKqBA^_Qfh2*TR6Q%|yZnR5N}6ggrL%7hqC6@+elxdAKzBZlk3lKhsx zZViJ-^XXe5e4tS_I~c^s2WcnQ4Ht}niSI_UIVY?D*fwy`q~bhF1WdE!pkI!vBu3i& zGF@!L>d_Cz0pAc`s4yf?Gg%tZC?GlWbGUgtaiI6$udCV(Vy-ycvSnk@; zBlQc{>g&`UG4H4NFOF`}XK***A`(bx#g8_yc*^IeIdPKx=P5p*Q@kMflQ#92!xhF; z{lb*$_l65qRC2*(Mp+U|>%fcKjP(E=bFy4blb4K~!AnicmoUZv`q?zWyAnC`dqyLH zc;a%Br1{-!In^LQvN#Ur--s{7`e_)Lkp5^ivv5vVz%IGu4?*sHiiLP^|JFb^Cy}^o z?TiLyNaF+2jN2qUL(asX|FF~N`xiu7(yl_F8?GxZxi&ikr{P?AIUId{2}exh$w#E= zceGc6(Qp76-Z9Ef!>^0SS=|#mnz&Q31GaUBas?)jIYjd-u!qH2#g6#;r#(A}dlRk- z_Us68cM;BO-Hq7YB)j3e)N%l! z7Osob%{9Z1D;`TDaZX`d4;!mDYaJ1 zQ%lDI$!6JhJCW0IJKrXTwcf^Ju?sRohKnRJm5}eoz~Dy!<}1nCA+mc5AQxO_fYIjW zcE~Ip(7)k0+pBOdrChw1_AS3h$2Tb9#C!8|2L9on%DiA&_n9bM=-KpAoFHnt8%5K0 zm|{#7psi6pltSal4M^d_{dL^)#pj_^>z{$1Ldg zeBv5&U2+Y%?w6qSF@wD2rdS1&8^zCr{m;d9b6G=&!W=-yLBY{Zzm3DJJ_OMjwl zTTswD^$CT-8|R@2yr@L_IaYXN$K`56!3+Mk<`I_eD{J85!Rv5Nu6rmev~3+l5tK(5@+Ckz9Sx&=O6}}WoXjD^h$gX|ELf9KitguZeC0b2R`6XETic0*>+ zQ`2mV0SHF+3g(_@jmPO~LYzu_UzxY$oTn_>OpF2{9l?y*_cJl2DmEGlQv`Ftafd8s zP$E`yHrW=Az_*6t=DdnErvx^XF=$>pBKVACr{*VH6|P_*?Lw@W32PS-gB=e~`pkYE zjzA|q`IzH5F3=1>Q|L0S(CgyhIOEkPi7m1+$IQ8+^K7)lGG6;~WNA3|MES~hkfqV& zJMEn4X2x;V%H{bMFT%9Vs%`_!zTSgtNE@yEHk%76^R0lagDcE_ak?NHLh#s;P{*91 z_apzNmW55e2i?^IrxvMN-`o_;Rcf=GkfiD`CqD=v&5n3yP)mViR zs7$aeYZNC_mavURim6~w8oH?(b|C~_FY)cnPiiwfR9+I%NLHr0*F&rWIN5nR0vmR= z#^J03b00^2I=E)XgP^0Xib4$Na~&IJ$_Lh*JX87~K7Y15_iU!Iu{&=qd^?Y6Aon*3 zc&l!YZOw2H!17g1=$IX#BtfmLfy)^nC$-hFV+mqw1{|PzKLn88|(QYLKjvtG#q$(O~#KPBUW?^QJx9iXDgi1@%Z?y9YP22k|rMw?i<@DIi0h zy$|ac5KuZoW=1G`+S;cLrwZYIuQfkZKUnEErgTfFp z5`wHRS$?@m`k!yuo8Mqf!tV_hVhDP(o8;!My5L9VK6WGaK;O=k+XQg?0`XK>DXl;f zhvf#36$ErT=9<89w$kY!+=^%>3UONp-4!1B1=}-%@d%yms*ZTHJs%b%ZtMl^km%|} z8O0dff*MC$hK~9pqAcEs=ZZT3J%eqgzOY(mNtSjFjqVR}0HheHppt7~NGE2fC#qq* zpkLvE4;&KSrw&r2>}6qnD)nc+NEhl8h(|X zyQQbpI=M-%xcWCda(silk{7z>3tf>1Ycr%ZL1<+*HPvc`BNy%MP~cVPmsL9@G3gID z{}XFG=5&9E72e<`>G3US)=0$J$Tw>p;IbQIDxBpBpO}!&^yAP`OfEBC)Hn+Mz{+S> znlkuqSjnQ|gkda&LCTr02wYQ~#>keAz0ZNicwLLp(GQL03+zTf+ySr%R(stefcttSLyHr8M8F+Fs395b7q;Gi#%eTJB#b%6H1iU#8#YW zsu`mbpodm?Dvj9DQ?H(f;JyrKDtPLl5Xs1ew_6vVi1O?rgzsq4Uh@DIU4BB2@hO>qLLbHL%_qc%pWqs~J|X(zV%v)oh|VfT({n3QquUFvWuFpUv#;ai zevAvvIJx5bJjRrAyv8SCM>)p6PZuGC$9V8^-aC}OK*G<)Ji{{1f>(wG2(AuSLrXyf zY3i7!j_ve%JFeK+$8#WIl(@Z)0NEeoJqJT<1niD^?3S1++1F*JD;aqq3MMIZC|Q3+k#p0XQZdCm{-qc+(*j3`o-0w;y)~Pec9RB6S_^%pd{*)XZ=aMJ%Lju(o{?`;!3HqV1ZpsL|Oy$Dxp@F0Epu#Kh~iElCK;R z1gk-Z<2#}dgqJo(qts$Adfq$yIbht$T+Rs?ox@szUowPfA>SpN z?en!94W?`e?B3ZLdzyB6In3qn!TVfR)mm8|$Tcjl+14%%)yoOK)Xoha+U*U=F&0YL zR&ocwosNfoe`ap}>aaJ;g8x#uV6!74R)N6=OU53TQ5@>#-7VT>NyoeI)JS=F-f`eH z+No=#ZgddWY^JAQC#xxGu0Gdla-Dp=0*9-AsX4Xiz&^X389pDumblD zqIz-D1tfBm%RvF#SI8B%gQye{sm#u%g@u7%RcAJSU2s;eK^NCv|VL1 zq~sg5Gmp*kOWQH;XbK!q@S)yW)Fk3rDphKpkDPcpl>TLP{}P=iq#ScWb92-$WW;vl zIeL6=sOw6mP-u0>HV{%=hi^w)c=S(X^v159--V)cTYx{%_bphC@$Iw`{V8|6xSMR+ zAsM^sw+?+U*FS{qZ>I1X%lxc{T~*0IygwwTdW~Dw6;j2kX^bvk$M7fu>_(2H%wh6m^S$w>~)X|o-k#^U(z<; z{8)Zzm$Z#=H@`|&Tp8DltFUx}nw2DSSl*OF#<3T}9){JM^@#|~*ga^o$AYZX4iHmF zYKXgg#!axZg{Z(PDP4G#LX{`l+2jx{5<&@MLNfNz9g9C8YGfuuJ(UQ)>Kq!=%VCU2 zEDz`#^3jp8GxfDIQJ5Qm`9ty(@A^biFoPzDghsex`(Hnj>#B-8{zC9i!+!gUNUyW` z?bWsTn``+fN}s|~R^_M~#fOwkkd`5zm`eqtgEZ`c2mbuDO^R@@2D9b6MW9zpg;gU; zrjoL(9rwFf#<}4<9SBb^=KD&FX@nDZtPZ~DHqT$ze&=9o%6h6kU)*brj{0^YCwN2i z#r}(=CZy)btQA#aGd~cc(Ry~ep4_gD5&l?h>)Gjg(z_IzrHBfIwz?yJT+!E9)aY^K zi8a{FbEYXgzK94)!TvX%)!3iG=@NWqnd_7y ztDkc`Dc%{@aES+6S#NGfiyU$kp-B-mhLKdk|L^0JUJcQf2Uz3VA&z1V#&CbG5k}^! zlO0i%va2gXokTFAf8j>mZ3M#^i=}5(MaEBQC7?*2s5L4*(!5~+DC|yXRDZ&$LYX`j zGkAd|N&_TT$}38kU7kQ<7%a$Uv2G(WlEwC#k)CMKH_&A*7tw;7S4>LC)(tgCR1)tC zTaDiG7E!2ZQYB{kbj*_lZi_8BicF$1RYbdYU?2d{jz-MQ8it8!V*OH#=#^Lu?3kvN zsUQSFGy!P|Opvsa>*k7x4_R^6(ny_{EZ#6&!T1twH> z0|`^{Q90k;GlUtVUYa=}Y#BRvv$i3Eg@z*}V$FO;HOtnCwSRdZq!q#CBT{yk0;z5y z!&pp2NrjZQ$$IEs7Iw~$fPR9Jv^Yw^$LA97>V#+tGP1kF{*Fa$dWCwJ6_snjIKuiU z$;MY`I8U)i!t+159cy&kr!b2$>FN;h`1`s^c))nS7A)n!(G279ZJINInpIsaErS=|mx1d24m8+zJiGV=X z_t3+jeeyITFO*sXA3X>THX{)`jW;Zq{Yp&mZ4P*%&S?6%i>IcJ&|+)~rnl8Ef@<_u zc86Ijoh>Wz%rKS{{oG`iY=17}aPvLJ>Yn!nC?TnPMhr$I@1~c~M#Gi4#9+xiQjY3i z$PL|R(~VyRR=Y$U&mTMmP+nfbd12g1XjMDQ%fl?z98?LgT&jrz5_@4uzjU^w_aAhc zh<+T71;+*F#(CA&iZB%W2tH*^#k*tneQ9w4_#$l2c=!!}i2N~_`&kOrkmjTayPaL$ zAZZ7;PmS3zXGSG2xZ+n7X?`zwb>UwQ369I{qEsKY#G_vvUN#-3l3g=J-YiE7;rP%QQ?2o}dE z;;TBT%zf`9tf^Rp2ZeXCXc1LwXq1!qQI4ztG`{gZJ!`{*)5-QE*XSea3E8=H+m=x6 z@T*bYjSv!Tp;aOYbIYBslt$aKZ6~DNr|n{`1jDeA*Ucs~&tW!NboizWwIzT@j^K}3 z8c34tW>9@vHsJ&aYp9sjJ?C{fggn=*7SaqTyvF-Y)5w^w*4dG zMUaigA~5}gcj8O}sW1{nd9fQAiQs=Qu>@Q~$IZLqzM1wDJ0I$UOjn9kif-s%nNBrS z)7u#o4HDkNS|~L7ny-ElT`HoJWc8x^(Go@SVuC#r0jmzLoWzQH~q_43a4W zoq&jB-ZigYqa;i3)E@P`>)oXQLr}&b@jK79F(R`u%4xCNGP3n?O2-o<7ew#}B}guVF$IZV=z zr|On;#Mmhi4jEp7vpJc8nHlb-w$(@!e``JTTsNGmV^5Cu2uRohE8^htXu{)AM2aTC zg}APoCtd-FQbn;IQH6sAiVS1_mtu?Ra!k$sr!=yQ)GLSgV)}bgLEtHz$ z*z&vvSvTH@_P~BL(_Ws8)L#leBBjV=II%CI!;IwsEVseH_wfa#s)s@{5CRMdOPU$~ z7$L6Lh($h6tMOLdLO>Lk80E?q2!hN#YACh)#fhVYb8=oMqT3wUfZ?gn_%k5`vrX#> z6xJ-c;4>>$f{}rFM+6&>FOS8b6?z14=pCY@J5ymLI7aYdj$|J%cU(Mp}nz8{ZF0myK z3?@=x&g4Vfm%cdQb1NQ%kygy84@BHkx286ega#f>rwU3AgU^WUEoG@mm`^>cKx0@T zfbxTHA4E_KC*MZXK6FQ24|t=oQHLTB8WdybwYITC5bcOiV!%E@mCmwb_*d!`;`SR zFyjHUG{|OykTN%MfVW@~jhW_wD-muUw;*tahNkgkne;GwNwgk$_!KxMJ89holG^F# z5N(m=u=cip_Rk}zgTwj~XGWe@K;aiyb9 z0PCC&b%(eC$qo==9_xeOG-kP zYi3Q;PH6&uNHHtLeI64OD-q|?;A?jPjdClXhZRJk=j(4shv@c%C<%(Ep!!Yf?Q<;9 z**9td)FZ=jF`9XH+HHx@5M@^GH06QK`7n=RLQd8&5KKsJxFS#oCUE&97y%E-(JZ1Z zl&e5yw@o`?X=LkFg7du*ln_y^o7Wo(7XUsMp_%&ZN8;O+nMSiMCk}@T_fPB$!2%OI zj3Uucpk10(K+a1upC!Y+uq&4sPO4Y;HOqAq_7M={Nj1XYKbY~bJ%%CaN4pFNUpCK= z%MH{kXv_Q{JBU$^!;WTaea$m@Kv>Wp#3?gqc{z+sG-UHM^n)cQJyVl>ODmnZ2G8D1a__T`98 zobfS12Z5@C*)P$@fgO<)%vuDKnLn}(?#lEd*f*Bwhj?%FVzPR~p;QyTvS8yg`jMd2 zKJK*ACOydeX3~M1!T-hJD zeLZnBn25AUNW_7lx~rMVqs!dcNqb-vi~EXkO6E5V$dL>bA>BGlx@rXhM*kDp@T}#P zmpIdO59|m}m`Fr>dTL|}?911KBzi5!3`8CIJm+=@jFr1?l}?cj#zI)>USWLVA+MY& ziV+09iJ+^$FdlAKCb75&h{(q) z?Tf8!=vccCGXVY{5f;PVfWgu{CXL^ViL#>1`9$wAq;YDl*XQ@zeRHN>Zot}`8w#|Y z5Iyh#mWnTI?&T2@1;Zo9*|Xybiu#eHx(v=hE}XDi?T<}JObB8>a;GG&G+QS_D|cQN zNvq`qwO~-Y8|VrvqjEZ+TqEY_!hCn!&Bah-M_GJI*B~35t+{-3?0%MMDRr>@Egbsz z&UUDJ;o~P%2iYdl@EhYxWa^S}7#We^B?%0?Nn!jGXm?dkYHt{2gXS7Ba3~QgF})J zMNQI$$z;JuT-ENFdPv~dAxp}-{X|@8o8Y2RRY?b#|&i$mIJ+)3o;%nl&6G+qeSkU#5l9*tQl3!ZA3M)t@vdozr z(?l!rOj}{n#nEUmmx_v4JL^@#*fT*}ZytslaT%i%u|9zGR{e@e4&Zd*k-o1))e;d8 znEvt`G67ejgUu@H0K^J}S%{e&#fC~uO91_2TR6QJ_Kb2nxQk{(s9F_1pJ*w->3x5s zuYRD~|}zyj|v{+FgQ(LChwcCU>qA!J!rM?(Xc zMHXSQ5Zb%zmw4n{eBXG3_)2ji5#v`gw&|OQ$o0R86LkTONXW=vE?8JL{Hqm5#P2tdpbeZc0<|=9%qENo zU7pT8{g1WbkJf0o*btTrbaQjHJN?-cXH%r20NWtB84ASK07j3(z1u4pm~rP6gRnCO zi2RMG5UCl|*bImv%s29KS`w)k)DP|mzQ~|mWEtJlmT8b3(ztcj5S6-Ht7=jZ4STJU z9a$*PMwsX6QS9JX_ouqUBWpNj>mHKLa>67eFldGtLap2V^J*z@=7OWM7- z5va8uWwk_hz#!$v8Q=>2g(HVOfc6{a_fgbPBxQIc@kYpl2Y|MiWyNpMe}m>Dj$tSx z^P$@*if>%ce+X_P)p22)Foa&VWx)jhWaSsv_lO(%6GYZDUE%MMfO*z%Iy4k|EyPi> zBpj-(VQd^cUuOTj#O;_PrUGP-P)ml4tiyhXd&|qg&#zut;=@lr{9re6(XA8*yjCou zu&Ce@(kzUZi6cp)$G8MKN-+L{{Wcp^27rdYltF9xDBES5x|Ll#fhKwhJAf3^{DB4J z>*+XBB1rqz!c(jT3YCqbV?_M%uO?Vwsgip?e+$k7HNvoh`q?-0W*;A8ywnEbMl{=5 zfj46jAO*3U!XD4L#juRJrsECj)ou`9LBLc~S#azt4g|mz7zCxhyj0_Il}3bwxUb0< z95QSR#b*?s=Gy>F@EH{`VIvk7*T} zP_X|cMmFplYe9BgZY_-p;v-F>a*nrXJ9GU*p=U>R@r8JV7JVE-Y-E7jM20DK?*A5q9s#VHnGfnSUly5bik{@;!K7S z7S6pv7t>9s3V~!r^ZqFK{miud<$1{b3iHymENm%Advi?2ldK8$^#S1`)wC z!hFTHn#+bu4Vlk~=kHjulw|uF&bipchY&ixsp=msWEgtxt{UH+hyjv=FYcV~P~~RA z^=o?}7)>p%(E5(0ZJ=rz97PBsaXu)nEFwjYq*;`U-{nnI*9kqNq323nBfGs@Hfh>t zA*QVMXM{iqAdj|)#!zmYLbx8?VHv_+RXitWSgvIVhFN6}E|z0cLu0MDf~j1W2gE80 zT)I<-h_FN5$ish`hyuKz=^?L3WJgj7hUlhAw13M|*F>)kdIYge=fyb^_^s*nv843I29b{omYCT)G7W~~b@OhaEn6#N z;~{Awf~;Unaxb_!@fln*z`~2HLDwx_3=!50SzJ{ySm^aRL(QT|1Www<$|nzdZjZSo7AHoYlBpxt_x76= z7UaCiDMTk~i`!)#Z9xJKe6s|H+o;h5w%+i*(A&xZ|tTSpyyA6vO z9~X@dz6mj*y)>}WqiA}d$tr1NZP;t1UrGv~=!EgCwX0Z|`Pdp&Amjv zi(fiEh8)Cc1f_@e8abqFPe9o8$pjV>4W5Y~q6j2_`r$Vy`I6~}0GM^d&ET|l(hT?6 zSuNh7_7;CNtP;10p)B`Q7p`->vmFX-5Y3XCF)}8Qn*_1OjI%UNRV>T}oF0T{Mt+8DOl^2}#6C@T6-2 zTg19B+~6su?25RJ-!{xc_k@p3E^opbJHM6dH*!#31Zf z+MTn;dA(>qq{ixgcK7h9MXtxmx*pj5gA(hKd7KkS8OQWd^k|Nwz4C^eU8As9!eJKDHbhHF*zY}%aFy?lao+f)Ez3wF+;|7|La+iF?O-R zjy#^TD=${LQ6fB^g_2RQIx7bsUF8d0Q=WAD$CauY>6=z?SrEAgq z3$U%-5$OeCbOXLG;tHCagMzR&d#U=OaH^R zJgIDHV5|NX6PWJ2wyZ9ug&Ab{X&$-jGD6JP-Wj&I37wjIkUS$ zK!EM2dxv8O%93Fg2H%&;Gxe=s5F_%c)+kxGsVX?p%{;h#tXgnpW?JK0$Oa90FoLcD zwr}MphoCFbQGI6{LTih*sDh}K3Q&5CUeb=DGB+h%76kxsGsbb#5cmQ`e)bmBJ;t%@ zH}ITtfjqNcb-&159Wf?euszEI=HV~(eoId!%h$4#@Ecjf^8I*8$%*@ z^T%eJiTRa+aq+zb%u3Y&zLhCc^~mMlBO|nZj!q%n1}-G7rb?Wn*shKTk^!Z3GVQ@> ziQf(XIJT04t_c)KBTgRbuo;@qP|$DO?aG6sT}tbo#;1UFOpu=Sm%r|rv=@0WK592D zkbUeT$skpzLR;B+pBN#qp6Y+;K5Z^f7TI-)Vt{UtmlMlVV^ld9-L9+@Z&D=b;) zBQ?In!>~6c06Nk7ysNc0xV&!^K+}8W(JN{wMNzCIp{b>z4~ZWdZt1Ke$6fOifs275 zL8B$^ff0tTTj$ymp+Q6|0=vs!b z0w9ne%Z#6z<}?>>7EzX40dlLdybw0A(zv zSwpWbs&jH656loT&4{xUwFu+CsNLcu)o6W8=Y>UzJGea?$aH0X>k4Bkq+xQQY03N) zKLJO~*CO~4JYT{@$Z4GKYF|rGP!K)`zH;EY*CTsZ4)+N@k0D_T2r@Kr9cPzXN%$7R z%C~%MRb+gw(JKR7EGAi{QS%B3is8o&<|`dU6HD|{&JWeHG7B0 zf8B(31^vEqmY$xS9vq+5-)>>3Tw@EWa*gjRhmEv;eAfKXtmhc?HPSkU6RT!u-a%n{ zsvSM%2G)az{+=?|l1v8I>#Oe*Z%SRJk)m#6 z0HDh*A|0g|y|KQ~Z|7*Z&|YhV}4lAGNa^2aTZD5-Tb~m67_&8#ec@G$cb$idOm3COOv)6sBOQObAN4?xzmBd%GY@ zVq=s8@SB|UXwC!xb6P}Qia*{Xynd`EtN>lt5(t_<+2skWCnnD_gH-ZgurL1M=gHk3 z{M0bP@$X;!l){Hx4qpNwCTPuVMD||{_u{`K-T(osfCv3vkRnlDR-f2B;YSj-oc=6D zjJ%#=B||V%cY5Ofdsat8fPtMOuPhcScC7FfvH-nwJ2mllxumGHai+Laa5K13Fo6mk zlG{GwLg@hkcHyCBgxepE@>P~&fb5)u9YuoSNi4$7RqY;|kSfG7wrzfCYdcKjV_^I8 zz~e#5a<;%~$nFQkZW$yqu6*0dvC6~GgG_%2Rx)7oIY{;)dk9IhK{8nm2vrS~>ypdX zCdg|QO(Fz?qtOVUwNmVy#RazP`ehkPY(WlEPU$E1_e~Wq?jX59rYmwVa3xefLrf+^ z)Ulre0=bHJHj)`($MgBZZVoda0{)R|&uNCWk?wui%W9YtS&o zY>LW47rs!I0|Tfg%7-PD>_j`8ShR|7p;4QRU@&l=e51Cfpi$d7i|IFNDxm~dot%3P z`jR7Uba=BUI0)cgEoOwnAqr7T!%vGaAp~3ax>(^QmXV6+SvtUg0Ox(3ZBax#qzA7E z&6uTEj92&|9oab|v^HNV?MqOt49tEk!s-s33-da4BtFH6VKJm8t}9lgfBrP^8y#iI z?cQb-UneVs)<9RWw+n&MW(4#B49*{UnY%P>SAZAhOSq>r9;OkzGPe;4nCqgnAa}u? zuGF5#qxBN8SFX^Xk&SIvtQMHOa64Qic+QOaOliqpzK88v&($*aU=<{Ugm~vMLmx7MgP<-j)=`l|qu87*ci`qL4-YzLB`cNLVaxAoLfn0B$Z5IbcoTagB z%khGU2|JMV3Tyk_AQmj&q z@q_Wk{uv%_k6v>-R~7rg;6>i!%|z6t$VW^^Ul7u34sV?orAtjJB-7j3Ioq}i>G2k* z_cK;JDA{(sdLczB+|Hqov@WOp1iY=QH5TXOPQ6ezVL5HA@hZ5$Y~#Y(7gF!~~>*vjs#?a{o# zd!s1(c+>gZEIBd`eNG8iH5DaFZ)-*sJ9F5h`LN!ZyP5UPX2beHCyKhhQQ*htU~Bp_ zXrEfS(C-L^Sm2jBMAE(J1(V+W{imHs#^%|1OKb$!kRE?6J-MIFepIE1{uJE5^ZKVB zf2c}uQ6=<3e~RLekb*Hc5B*<&RN%+zKYwzSPEiGrZzI`rKtrl{R~=l~js0F+=1H_J zb}y}u-Jm|`+YS1MsuU0^IACYVF{J$*piHSE)-nq~w)&f8EeG-URrT*QIkbU?z7F}X z?AM-!8e^?G=`{pc4qjD%`oV55NL~}^I2q`Vq(Q`{MOw;54>#T@02{jSC=`15`}mp% zu~}qD7YV)kax~x{Zc?+=)to~g5W57)(sL@gVDb4AHE4Xk)SvY8zAKjryYhdwPG4 zJ}+QM7cTgCYG;<($)GWr$y1Apro8MU?p}_NpFFD+=R41IK;qMjt+$f{Q=VS57-#Gw zZ*KogK~A&D5C}Z=9ZQWR-X+Fs$Z_@ar)uD{WPeDG^VFwb%m|o?D2Khvj5+y?l7vhN zMRjMi>FJLR!-4(R)5{c}rayT`u~Pr4cNEa#>CY?`hStsp&nOyRF-mKm`ax_qt49|Z zoA&3Fa>}!q_7{JyAS2*U6~vB;Lm@FwsQ20 z3c@fjqQEBjsUI{Ho60EX>7{J&T->Km+``j~sb{#JULbNC(w#iLlp5xf_j%F?Q>A^^9W0_0;L||bARd&<`+ovp4uIeV3|Dc zsf9|9)JM2LaVxFU)1SIg0fvIlE04taCD+p*Sd36uj%Sn;wm9Qw6e+!%j#Yc9KTmIH zsWdbH%dG$B$}$qn6Z7d04)a3V_~#a4j6bi~`b+w0SkHVYJdVp;pE_nmw4Ybv8j-cuj}a* z_(;Ed^|!zM_|NB-8V#RWEYN-ZJpEZ#XcaURPaS!70_#ir`{zqOy^W>M!0cZj=6`zG zVk(dOe|vhd4FLr~68QJ(2LulHKfeCq85M=D`dhlV7=3>A^ag}|aZunq^~2;MKyE~c zp7%V_T+FGvXTGEeP~KqOKeN2G`T6B2@$&hl%EaSOH8fC= zSoVKj43gWg7q|mlBo~-WSF_da1y=YON@ecyBl0YKLU(swbfSI?=NwV+&mnf_H}M`r zXi?8&`FhZge}4>v8or6}`qkY}kJXX8Pd$dDru_ZUYG}&i2*EMyv8Uv|TaO{BDX(8W zhCx#vM+mRHtB%g7ryxEX!($h$=6<1m2=^WSj%$Mr^Z(fcSzST}$U#=&8a7JdU)(38 z>jSw8cPY~hWt)0i#$XTNJ_%>Ou+opVrTowxEj}-zF+R|et;jKWipV{5t-E4pp73!u zv*Z(MFutoto_6t>BD_T70wVR}+5!aidaUcr;%scz7QWifOp6(L&|h*2!}2|Tf%3E5 zC{N=DH)p7yF8PXG^UP4NBHaHE+vlCp)h2#yjJ?>m(be0W@wc*AZ%?RR!E@wXRK)Ci zYDqomIk>gu)l<=}8=s1dC+yYesmKrX{&Tv1H|_)dz8m?QoxZ!+jvjv)al5;BI~ z-I%*NdN*ccjF-b|aBV@_i&k&USOwcDPneB~lDoWVx^Lu_yxex=T4X8njoXo_YUSOw zBP&j|bA<*amI9}P1S9T^#}h08^>H}*+wvOb#9Rc&)6oF($J#6?Ql#lFQfGnFHxNXU z6pQlgawEf*gGdSSlpAg2mwE(eYClPH10}v*a4g%%?byLQ8^Bn^9j712^gs_AnR@x~ zpmHF<4Xj7&N3vp_sM@-^wU!-PG6_^rwqJuwW}12x#AzK!-U zM(lfEX!7M+A%iv^88Q7sco>dHQ9LNe21;qZt*xx3k+o4GJ~w>l;HUUFQtr<9Ewl&n zjWxUb>4Dt9mpzytdg!sz^89}w-%ERL2qi!yi9D2m?(+sHibN@tfKn5#o9rUF<{EMh zxIQf}a3j7*W^?KZXM8F?^%bs|qvcz;mC@vYXf}D~j;t9w7R(fNLeAUKeee2q%5%6T zJmThp@J&~!OH;+x#P)^23{V*TWgw+w53VUryyGi=E@>EcgL8hdK-7Nh;;bpXDy-)MHYR)@?EV~GJJWh_}#VE1k; z3DAutxrt2`=2}w)P^Q^NmNN^08B3C7#*+NzO;uSLKgK%DAhKLX1YD1JDp#NDkjrWq zSkp)RSaWq_&DBk8uI|^G8#C3qwafyb<|<3g_1{J?`t_xe4r>uihg3~{PHLq;Qf$=60A6R zp#;Rqf4GI|VW#Z-QBeyE@x-FZs$VXtN0b2v;^JyUocPz_{)jTB4q>;N6o9EzW!oS8 zM+vkIDL=+B&Aop|ybi0zGDGiKhyZ^u=X~lDt}=vbmi(q^aN@Z;V4;5*lr0N796mpF1B}*>WT0FSfKGYnGL_?%kNUz$?A1!L3pB zVxAu(Jrn?Pn<0Ed0TcrsJE(xt@>zz%Rup=KXN)GRepA5#Ibt+_vQOO+mZ1|)c`Uz_ zEQ2hFTl2w8Yr93NTyf&g1-AI120{rJgR)&aEvGETS{Scqo}kADnwxJu*{Vl;8-Kjc z;O3QqIHwBnZla-UH**qGt{bAWsmc&u{GF19WV)rKPm%!FoW%{8i+x&>&7j7*`uxeJ z5HSlJom@@8`xZ_W$+*ddKZ=Ey`s$J?BT}We{+$qzHbuB6zxpqDu#e!gO!`C0#XrGqC!L#s>G$!!>Gu$ZR*BzVT=Kxn z{6>iYDB`mZNB<^ZjCLHA3k$o;5!W-tC*R+%AGT8V2JA=w3sr1{9_zTl5KX9y$Lr|7 z_xBgVI&3txwTV)%ztk%K_xB!dlMrrA0xVz73rM|HKsbtim9D;LY2^<+FqvN&@_+ud z@_ViFFG7Jm{P4W-vVkSu4^phkf0hb7^BriGw>!2eZ|Bn*^ZWTMkFZL=pLsa?(UAMt zHBg~M1i&k$kMx?|DOK+ zC%zzCf`x)99yzfbr)-&Z>8A8_;0`P=zZ%B}oA`+~%+sUOzLgR(Tz z@`1`b{-1d(0$S}?ey_av-xE#xC;qMcJ5d1JHY( zS_k}F(*K&)fO7oez zW77SYoOeFjaTKXe!$_N_J<@GmACtFtwbPG@7+L%6p8lBXW}2lZACqJ9spRNm(&YLe z3&ZyL!P_PUPCpW-zxA%xYgUwQp4K}b+r4IE9a>*YcDl8-GzSK(rGKHK#>b@okyAv{ z10K&+ddCmzJr|O(=RV}9^i3JHNXDM~kW_!Tdod|WgbpkKlu-v#&4&-k@%aaT_j*%Y z4k_^A64Yt1-Mxcugv33KIJ$w@Ol zCVy}aDLuG=l^$FG5uDnS3rJ{60fAp+eblxTP_B(w+kE3P*@tY^_lF8@v z7!^wO- zJx>l!$OP0nPp)s%Hvq|No+k~iW}SS>)y|WXkG-VP>b8$-AA8LYJ=)#lQ9Yi}OKM!b zUUJ%eU(vX09k%M4Y@Oz>=gn>}X?J?b3D;tkwn6OF+UY^(Ew`;Ru5S0db$XOicaKrj zI;A=;f?K|LMR58bUJdv2KZNnC9G&!%$tpdjHO<4?Ilm`d@N}(S@}`#@^^*QHZT1pa z-m_Y>4ezcH2blg7el}@-XrFa@%}&~F);px@$1NyK+N^bsKc+P7kd|-cy@3(uM3A@5 z&HQe&^NyMx%zsz!C1+eU(W$e8Uz*$>&|kG)@+;Rbdev&Hdsc1r&a1t|^#}x7`yFMU zqErzVWAg9ne{;?rDFu`NCeD8d=j3BIdEfO}nRL#($q84DOOMiRvumEeA9{W-VUX^L z8(sPaq|X{n`yAb*eRkZce@yFVr(ODpW_J@K&Sk(stxMOHA*{!Wlr7dTB@}F@OGPD6 z*s%)?t?hCiOPgCp(wnnRtM@T&ogSX0wR*h?G+U+}`&++XPIPosm0HAvvQ6M~udS~NZBH1wxiOLOW6$Vzl(`xt5I>{;5TdrTYj2WvP9|=s2Cp?I& z&UJ9yNp9xp+fH)Mb=gl_o#Y+YTP}jsrpCoINVMwbX^+YH+u3O|J!~B}yAUhh_N1+! z>t*_e%D6_8^oTpI%Vl~<+nPL+%ZM=3x_LyRb$pz1@rF=6tx5+S__t1S#HDvUsW*AA zwAM*}<2upR`!#8Ger3Jwc!ZcNw?Qdn%y?!pFiPg zy-r*6S@DB&$yfUGs!ihNE(hnrBIaI_qc20sl%}N&{--d2nsIt(Bej zPm|vJQw~;7-<`ttkUHm=>kZdIkNZ>lo?EVIcHSoC-|vjuU$}Z_r-?5VX&ividv7e9 zO7pa<nEv_)aYsaU_+f!op@{l3Z`O4s_q30bI@$vKO;k{8Pv)qx;lPSfMFUk$J zla%6mcY1y`Om5^ zu#v-f^Z9kMbrO9uT z#_8K+dXt_|YMdUwO%Azwzr0QEZ%4k3dK2#7CZ~sQZCt<{wcmGI)wj*J4EeM{MRlsJ zsUSlyIs7GQ{E{5}!j`MW^1?Qul@QOT+d|mT;_A#m_vD>-OH^cr_{0HCxGcc;BKtOT9r=@BioCHYm^9z$jY5e0!1N_I&1St}8D+8dCPWc}fE}H6dr0YC|FlPRqJREW z0rcUYdq2I>&03!D1+4S^07Nhd+m0XAWwA3(4N!e++jtuo7;qg)tE} zL}3@OwRP})gx>48#vkp*KeTjra+KWMr*DsvH(W*rx~(H*R!Qwp9gS4I(>$_?)9$>} z?MZ{rQ9nv9uF?ar_!1uvllO;^=tDjgzs1K^WT{HKbGX$SJL@TF9|pR^0?p33Tdg-v zsOtDo<4uaqY%m`8a0Zan7}7%BhcI!y7A#ov5IF<8ZJOOUOzMZp!C|t<(%K>X(INa1 zFs@vz#>D!qnbf&zTpydrL7E6Do2-TEi;w3`WB~l>92sW;Ss~#(Vvmn`aNaY7t|WA& z9g?A}0kY5R)sr^YA!CHcbx85#v(wWi;}w9$tJp^E#O&7~VI0xQh5^reb^EowW72)8 zU7utfK^|e-x3#?-9aFIeivT99n(QWfA1!g#dn0NHxO>bMd04Tm-kf}(CdX&>8qhcG zx6S02CR(ht)#U5(HjO4n3&|W|f-OS7g3i60fJ>gQ7|@&{nu8bO0c|9 zWf;7N%NolsSVAZ_sszq=sU?^{bRq;ygRy=E~ z3~LaLyKBm4L2JyrM)Iza^csx8224x?hP)vflOWtLlh1~q8x(Z$2 zH-!Kqh#)qwAu56*)k1Glq$6UX7wL!~VgV6U1d;bSXYSm+n_*?}AqYj!cTX~?;bOr()RSKOVEShvh2hf=fqH;R3L1E=1owDIlUt^^gl#xpu z-~cRyY*7)0$OsTu1~}l+J^?9HST@elfEigtIG#nt4>r<;`j~`GcphjZTSLUv&b0H! zQ!GP3sTsrzij?XX8Gu@gB&zR{so~Mw5V{3ozVIC0%bxFMtX)-J^)J@N9ou^yv48xAO!r0pg)o6I2^-n>;)SY zoJ7ti%GwlqKxg|<8C?>SA~NbFXG$Cz4*f^CAs+wZ!ok0XYepDkWYNEWI2hz`@T>U6 z7cydTcrO+MwCD``h~%2CE((A(GO0FH|C}*CCfpE)?@-8fL92%wk_#<8!$~ZTzXS0l z(C8nHW<~RlgcM3*NTCac6uOX*Lf0OUA|Dc9csz6`5Twu}f)x5y-xR1O2Jo+(FONEC zzGR6Alq8^bSHRZ-sF5gu8W*yul+&ZBlt2#|hV>8K2@KSD#6XQ-t*KO&K?}dKsh%$& zSi{5OlHw>%RBepzHwpF zLZ_d#kbS7!&mGQ$f6gusHA2=f>ExH`aOFAeRG7Yyd`54pIDa)1|Ag^JVy$^g>!YFL~&&mKhbd*D109e1LF;u8X6vkKau^yKvY;_!bs8riE7lqC|rl( z8`C$8IU}gna23`YW8N#w0MA}}E3g@<_ zK&>7RnNEhPr;IFG?WLE0fGphq(%a$D0s!hiHL_?Hj}{btC_4E7S&B4LUk}#-LOQsgqGHaasuTe7;oM2p3iI^tnq66U;2l2s zoDPlWgV@_s9$e+LS3pA2VeMm0N`%Ad%*(-{w>Ti6yTM{f9&5Fv=0W!+?d3s)=7RnP z6$&9`9!?N}tTA2MC3A#4Gfs}=F7Uy*Rz;qvYh>O)(2vPDh25FXg2{q3906CP3cQ3) zTyZHl@)lN~AV1ZU+q&xqH5W%NuwWAdnT>H05>+t1j!f7>n@So=@WWyxqhQ3TT6LFN zCq~t?N+p$!aV)!Huxfa@-e6pDIMsKONASOX>HiC_a{z#{Z3H!H|6DkY?4JgV8Xr&j zx*NK8Cy8LkPD(^SrMsbe1v>^H$03j~eZcQ4CI9c8m#*IVU#{)gJ_gsuUoY*0FYw z53PGr`evs-Kq-(DIIbBzz;WyPa>W{nx&)pnxd$*&q?YrK?toA^#27zXaWuDP3Mn7O z;dUp4gcw5bZGmspSR5rysGf{`?buYXpb+o@!T{)&@Lay3o9+_V6Fa!?b(cnWYCHF3 zTlZya_ocV{vW5GyoBNI3pr zQA$(ck&tONwC4#m8zK<2A98F)c1We6HiKbh_%K7g6mNzC-At+<)CssZn+=i(SA4u( zK4wD!G^7QtRGhw?1&24V$OQ6jI6G6#ozZ)N6Z3LYIzwvfBA>y|nwuZrc=-8gkBM&b ze5|GD{SeiY|3r< zMf^A=ln70ogp(BkR3|p&=%gJrY|XT0CU@yXBUQYc>OhwESRDmCW(op-jUDkS;tI(` zm8_hYD-P&XaqIhCZ?tMQ}txT zc#2WPt|bP|a}hq6TB4e*r#r=+O_!+mmX!6u`Abwx55pZ}wNM5I_q*L`?rQONce4Ba z?lgB+w7{LrSL_i%w2M1k-!^xu#eJ#4K#&^-f=Y&gAe#Lk2*rX30t`4z$c`Tx|9+7{ zMKl^fH7u(yny!lQgNP7>YbYH3V8rb#450*wv?=~O&X0B!0J){`*^+pYWwX%PM_o{t zGsQ@kPW7B9!q5a{(&&RU{4AVTSk_J!9-LIf2!M*|ixfX@s+idTp<7X@+i--|YhdRf zZ3SS>(yheCSkV&O%4Cd{8-JGYoT1$l8<(1kVY}4YJdqf^U#ujWEwQPPB^co*_cO6t zia(_?YDN`VQ5gkig9&s5P^Y6?qrqR|(n0vD$Rp55xor|$Sl9*>HwK2+~sP;%`dvB=8v$R^hv66st&;+b%%QZ2Y5 zdIZSMNYsaR8=$|%VEW7ZjzOIQJEsJ93=Y7jbLUPSQ-b_b0&Nt;yXN@l97K2NtKd)l^?QhM6U9}sH{B2iy{AbA&O*=a)v1Tx4K zdjnnOWGDFt2g(eff@KEUF#2 zB~VkXQ1vActX=rMMF>`XqDHWaM5;nhks{UU&rQK!{a^&bLM=)GR-z*}rQF7!gj{Ho z4x1CUm4M;~9i){6QSPj6@bSp%k*uL-i-yhlZN;#;Xai^GOILPQPJRIFf%^@>k2akF z?&+jUbvo4yG@WV&n$7^?Aaj7foqUz+-z8991#4IS>Q#=ve}H@%=r68vpclcFAU|T# zlaj-r4GN$+rwWPjG?FMMBLHjwxm{aw(mC- z$0ebxzyPAi@V5v?K}zxYcW0B+?2%2EsG<=(W=gLpS%-A@K1r%y3rr2oMeI*d^cJ4Y*WT#Y1X6{+)ug3?1oG1821ufwNkS zz}cT>c}%j)NSNaB2n4IkwT?9+89^J;v*}dZ0oY=5_4nA_Jnn%)J?`-ak9&-g$35WR z<32Ee?n|B=Mu`3_vj=jUi6~Ij-C9G#&Z;e^)C|rYUIhfHPtkMr3O$!;f$CKb zda9YEzO)p*a7(RAh_du`$rPO^ z1T&-Q!u^XNF(+Y)xsEtalXIPg{gkF}_NkysMcT82xzE69)K0Qm6`z<^)o0U7=!p* z2MLjbEK$8I1ETnp3hF^kl-8wOq+cyjkKR3*MXS!6g&q(f%r*^!?z9jCHp~T zpo#W77J<0^ zaj6uk)--8YL!t>xH`bYW7YHr~SsqAp7`ILz2ZG}$Pl69XowmTUtbk&BD!~pa05y${ z2r$9aVvT3x*aRZ6(Vt8_6!~ECorhyD2^EnAfR0Vo3{}v}LOZII7>t+^){_Ek8CC24VU60D)HfU z;sco;4BIVEdx|C3K?mP~aAky$Loxhl#%MLV2!+X)Ys%Zq^xRyim|#zXpleE0Oth9I z#(_Q|+8php-S)SZ}Zhq z3OLfL`h*%qggRgplnO`L!@}3HmiQ>bfzXM`=&67c-LO$-vE32>P8BoiRLy}zt+aFo zz+Qv{-jQ7xMDnozfeIM0UqKWR*1^jYiImEOo)qQ-*ewAs?pi>#SQVA3U=jrR<5=iV ztIk=d#1`4Nge4$yu}IgfxY49FnF6JV1xoY@#a~9gL1}if*rC-++jx35h1JxzK-<1O zGh6c=utF5sZSFlDnc^|Lh#0Ry4KQeGHmw76N4wul4{M)zbhnOMy(W z)I+Q$xrAn2L|?ko76Pc2lZJY1u#9P61a1uidf@@~Q2EEsl$fhmZms zh1k7>Pf;bo4k2a;ZUtJU<2Xh2P~TA3QBu|}t2HTMnJ$=rQIj(5sa8M~nU7hM(t*hf z>7`7Cb6Flsu?|3Gy6wjR3(y^?trIq1V%*(%8QKZJ(SnjPyZK+Iosb|9DdLr;V;`bj zR?z{<-rdMrh;h>0770ak*FA}FsP5SG1J(m5J!cOI(9n|g;5|AUX^L?vS@Dt zrVO}}CK57YI>xw=rxC;xW`&p!T28c@p_5bK#*#scj0>PNMFuT}8GvyREkZToL;~E26IBn? zkond5ry0ny0`U+XAnYz_y!~O@dB6g2ZPH~1<-yy83c`$MfQAwARM12k4wJQu zvkr)a&I5)>vxAJ4#JkH{AjT0SEH)^j4j4K>YGGXv0;Zh=#2mGlw%zP(+Q$fmB5!U1 z(Q#}#t-WC}@Zh%a#q1SA9dwZUiu@Y3>fZ9r>agY4)K&@MeCN}ub)wMrR)qzC5> zn4i3!6)%5Oa=#Q{n8GQ?eIN1%;0-UDQCVgGuQP_df`SP(Aar z5VbJu@?m8(niGR$Z6+lKfC2dttwHpN0`sR5Sq!iFbm(j-l({7P36tePK7oNW=_1cy zUw35k-YBV9%~`=@kfbcIIyf^qtkfJ%0HlBdRJm1|S8P9S;#-I+F(`7+A&Ypd^Gsey zFaqHQ5uqvYZyMH&6`|wd_YWv4bfLq<#3||64hcm-7Q{jwO}fRff$bBx89ti8$`FZR zECiugAQn9sf^h=6Rc~HACgBZ%q+I-JJ%aQSZDBxGOG=`Qw>{4Xz+ajtLV?|$!yvA@ zAQL;tJ=A5&vO0k)u?&jlNx;bF2luA~7?@$ls3l>wLoAYQx5J%;?rCdR(ISR~9urNb zaU-JldgSS=a%Sy8-#c^L(6FPF>@C&BC#9A3#!+B@?4xK3{`dD`K7qeU0O5(iRs6!^ zLIN4V@uShHNxXn-glZDS*OglbGsI_50}W2=W^m0qqG#@0%dK>QSD zQAH#*!d|M|F^FPPAqPCYk!bN!GOEasEVS}+{#}{kxr+=T$XCz7R>u_JP^?7+;DRm^ z0FO0aDp^F7gs1?K#DmMm9BYZ3DBrFE3h`k*21|UM< zwEyFELSk$AYU*+CI4nW*0P*s3@E{C05Ha$T$?96kO2=6PaF(N8j`F1A#5IU`NC|`? zLT7l{Fg=Q+FjJYNqSF~AS&yafAe9MwmVsuaE!bU!2)Cds?IxK#8YQ+&H?1U5qS!-# zhOnZr#n95t!br1Vh2>CK>vp^os7CczA#Wj)7I3I9S2EO55CRh3&c#N^eG;gd8cGg( zPMoR&i8k0WI^CQLljN=#td~w53GTFHz(=WKD^2E?%#DCYmOYW=-Ug{N&~9&4Ld0Tb zZdL>u&f*K8BTNlVECD{@JfbSpeFA6++k09%M8~aKVG_^DuvZE!AHxWG&#akJ{@|H@;B`+zTB6>sMU<&1=Qk$T(OD~C8 zDWWm_7ll0=TH;F+m?vjqRxA|iKGC5hYR^Hm4R$64aw6?8&=O6BPJX3IKA3!0cM&WS z5;#XdOcT!xNk2%F3Cf^C5M&JCL!v$u1gBwhkmN#~$3-j!;7|HMa!Cd(U1{x2@fz$& zf?LYwc|ijE0R3W0g&M_8J5yKL|FIw)TO5&-XcL1b z=#&r`vye=R)zj>S0@E^<<(-svD&9e@aI3`%Brw5-W@6trlN$9&6_8My&|ScU2nGdf z9Cgbiwn{A`qC*ueAySJLAZfn3fHm19CRaryg2g257tsZ7+XILPiFy?eN?7);Vcxb8 z)K>5u7-&s)BLq~m?*G*eEMnf4Ud+3wKtmP~)QGD4RJlYZEA-vT;Ru{^NSfM@^&ZgH5xvBEI|eJySXt;o7UG5jrjvFP^%bEC(RHGAyrx{&wch$S%pDtJW$~hmKe!^ z1as))ZIc_Uy2EG-&SQtgoPmtI8-a+tH4F+tKw2g@N9Xp&BcCX*yCPC`l%p+nW7 zFoMH!kf;Q^5}G99A(K5;5)@W09Mc35EA#_^P$Y^LLfD0o$4QisYFHp%Qw%)thCp5_F(B72i)d)#eTMt_7zGOk3?W8KZrb`} zfu>1r1rmoa1vW`)V-kF5QYj7wsAP-x0*{X<+iv179bYui5w@Ee`(uhE2n|Lz^ z^$Zf48mbc05HBa$b0O9Pk4*+7)J|cT2kepp%M48}3Kg#%=9BFD4CG3g%gh1OUosdg zL>-#plgWToAr#f6iJ`U1yk+JA zurCQ%nWXDwT}&pMOZZ~_w86-!xm10c);Xb}hVcvO*$T6YrR$KJL>(H2@=;SHf|GTX zS;murc%UN1I0spZq{~L*uxy8MgpE#_6INI3r$WmW0|9vts0pFz!az#JHL(*USI6#w z$QOjdSbk=7SySv#sv;-`B#U6+=>^PQ!`CC0nT1St11IT}mhQ;*c=UhyS~!vr7V4jp zfCg(X^+*Lgl5$OZYbBI_fyU?6Ki zKOlyws`>LXnY;yDl2*{WSPi`W{mast^c6MxfPg}%5qqW$A^_edfP7S*94Jk`5WT|E z1X9$tO&TeB>L!V?9w4dl(1)9eWu=%QA)FUB41-+o8j=R(XT|ZHr+ z2EqWK45N9^w2d$s!og=0-(ZR40P2<-iEeKt@O7&*gjE8-Ry{hH$!vh-z51(CZ1IqnTYOU zmQTFV(PoJ;0A5z52?;S_;U+_OS~JB(m1Gks5uyN1cgWQN(cocwrDALA@MHr^MnJHKvNLLlckO( zB_2$5T5fKR3pVmLJjFI;0u$T;UKRoVm>{xim-{Y=1loF~qLl?CFwt>BSPztMgQc+S zL`OdpZ0yO*-eAI4CzB-LXPyp~Hl-Qk6lDm6I@lMJ&SWae zX*N29I>p9HD-So)Acq9;zAg+o$rZu)!zz?4oq#t;jV|^YHBpktl7(ZbNtS2e>RqAHqjILb>X zbaxP95}rPe9>s!IqOyJ68QA)Star&i7F8smpYErco`j|JQgpBCUP;?S`dGp%zJ9>T zu+AqlPO$%3%s|VB82l{K>5I{Rz?Z1J_P?(@x|pq*Ao^4r1F{Vwg|KQpKoUe>RnG}w zKbd~|sV&q1iS@!T`E!b2k~hiQ8IQvcjdH zeXPGsy#+k89<(so`kmn%Gvxz3NwzF(NsTcqaR(_{6)>+R1|abjB=xGomwEQ0b>d_l zXQ9zRMD19kX1``MfJ`=|C+FF6gF9y$Dg16Eh17LtFdD{Y8;vEb(_%CaV`|=$$OKV_ zTWb%KEJw1Dz{0Eqwbv?cXRx+&-?%T^YKg{B_qD05p|>glkUJ$!xulR(+-X*P1^OX^ z3qB+s+-I8ysX;*%unA$G9U4YzHtXKpY&EP`3Gl?#YHb~`uX>bjT54t z0c5pdkn}6fXhfLams9bjrHwQdQ@Pq0#9Ad5*U-;RWJVBrb_PO`eMGY(qUqj>8nQQ#B{R= z2|h2pa#axah2E7YQnFto;jasb7OX3nn%q&S!bXr{g3k&JhRE9~Igc<15Er&CLI*5S zrg$dg`hvss z&5A#k0sI<-|4^IuN&q%|LBZiBPljHXB_{N3e#099FfRF#25GsPZ&R zLCj`TEvHK>#Ib!X7K~nUPL2ifH!UPITdTEI8s3jQ5QLc27~V+eWp#mxz-9oiQxJ$MsE7wV zaL@(WKwV}biG(U3C(#{Ot}#>?{>1Ry(3|_SL!jAAs~?$Lkfz3hH<7#y_taJvTl9AI zb8Bkivp4`ZiM^>zv>IaDZ0_w+xB1?hL147Q3ArEmt61>9zLK(JWk?&Pb!(-COu|c} zQ_`g<9s53P?8)m0Z=g{Durm8hfJBsWH1X1ShN0j+l@K?CQNoS}XxQL`#TdoGlIc0N zwZTd|m|l&=6$sZh2CtH#4b}$~EJ^V-^j4*`zG4ZR30sgb$H&75*vAkf1nOoYPYu*d zx677Xfcz*L;-5^_x(+KQF&AFOX7j-KSRrHPRW5c2rgRN*xqy@e?2~XMmpxrLBayAr z@)aT;(9WU)l58wrU}Hh#Ugo?TTsQ+Bo`v$g@imoeqTJ!QEhN$Dgj zB4N}lS|kMaoK;fRg4@^poPj_|o=MVcADP9+;6pxO;cTmp8`$_KXBgp`1w-XbpOX0u zqEw`)ia<{zfgdnGw9djGO;^yTy$^a1LWEd$#ixyrAq7p$_VqE)+Y}!ISqIyo*F$eL zEY#Y4<-YVbJZ9+L%Ajs>-Be|!*f!v*3KlBVccLFJ^OmYDog!W7TdKt@OwzK-3y7VZ znXopDDd2=OFC55gv4X{DO2JG^Zx?C+8pHNPF(M!d%54J`ARYORBf+3v%MKH6v2y<+ zWYZER^F+5f$piq_``Ub|`U^}rm6RT}xE0x38vM98^p_FQVZLq5z}Uj`ik0_(ww4B` zm73B`fe251Rf$zW5&$(V_$GTxL!han$JvUq6D0<-*EXap^uoMnw3vISqXil?MNVQ343nPOpEPUGhREtg}C(jAN zCj9MKn*zl+j*)c3P6U@kPC%{7l%liyKs>ZtbhYw0I0aCvsfP%(Rbs$b?D}K{kU^)8QW@^6PVG z0&zj#duEgs6Q&VmHBkqkM9F8Js(8SMW4Pu1{Gx#g3F0C66c!S)&lj7h^ z{4vreJPHS7tJhJnk&2;LR2cq(`U=HZgeZotiov_BYXJLUn-zoKSZ`D3Ob`n=cAFg9 zvHz%uif}ptvlA6T9(qKX(DqAF+mM^^Y?!L(!Y*hCD>t)$%ZEkq)eURo!jf>7T{ z6cy@pj|UNjOv3?Z(XaL}ngtlFY!hCQW^n1n@eS4Gg7G(NHi2 zq6hZ{w-`b}_#;eUD5#ME#HN8Ar4;pJh+_WEJ&=M-agV2$Ar@;{MdR$+N$W_>mF)l% zf`CPkU(zq>g$v6pP(tnm+Fyyz1Kwa-8d6=509dBNq&(9)jzSRNjY>*Rh!CQA8DiY2 zQf25_OqVwnl&a<(MsIQn4xe5?^m_YJD%Pq{a*|7Wu`44TY%1CQ1Jjd@Hu;;-=x7CD zdRKBuj~woCEzh z-~fglge4^v=N?8mdS3E;Mv`t}gDDPbqy_RYh~V?5gwT?JLIS1Oynq^1IYIH!wivxfqa-c@S&F!_5DUsce1z&~f#S+Xf6JK}cJ z60)S(7zY#6gl!>@>=*%%UIs-`?MmVYkjVtWD5e)$XQ2z_BrhB}L#`F7@U)rxb!5KDxo2vk5`-4oV;|Kuix0tBJ5m1BG9LI9>vK>aSQ{FAA$Gy70>5iT8>g5 zfEy`VCuSd`B>9puk*ccb6X9}g_I!-dAPYDG3qgSQl6j( z$rSJ)nf!}qDrKLMyYB;akUYxE%$QV2hCVp_3QBZ9h{aV1wkpd)8ci3$qNd=-a^?Vk zSdYYAN`(-Rfw$)h_uX>Xgee31H4sc*}28G z=+0U~Bl<#3NNoUV2d@+aDG&k-)C&rYJ%mZ*taIl`6CA5*(>h2;5+SN+ZoeLs#|~V8m=T(PmJ7?5wLKF!}0jYOD6enQBEu9_Dbc z^kj0xfOy><1_Y8cph`jk3e;D)qe(_YIA3s27$Zo+DW(ZB0?)uO+{SWdwhqS9u=NWE zj&h_xP5}POBb6LGil>rSy(1gDE-DPb%e;;LfzZT|m_EeY7)bUm2pK6ZlYrTgl~Tbg ziVI@Oik4=dqkmUAPN>OMQ74Opm>3Z{Z)zRUL2P!7(E^Q%loH@9lEN>@SO;7Id;gY} zJzkB9ASe+6P$GcbMReo^p`i>Dgv$8QY*{flTy?R050*>RW)Ysa4_0YunYFPnEAfIn zquyvEfsG!*Np_p1k?Tz+#@t=lH}iNBc|c+!kkZ&&+ypf{?o*K*?VQS7?TQ(4dgvWQ zkV6$mF#D$TAn=6)dIW9acmV-3Kf{Tm(Br1wP+^ItVGcwi_U~f$Sy=O3BQ&2$iC9|U8Fjwjl_Q? zr||_zX88j4P9g_Fg(4)pus9bf>7KWPL_9aMBKatiq{5y>#V!y%i12>G^oq=m$TUn; zr30#{UZi}mJHgwcq}dFGD=<<5X;Y&pUYi-=w7?FqNS>yH7&sb{czZ6Re$2hFWEZ5J zct|2{$b+&GnpB^Rts8n;*gJvyl4e|*AVP>|^x08M8Ba-*!f+<_;5VefF-EjBokmzh1yo{0=zIO`7zq=>k%_+HQ?;p62>N5p(ASKwG*pnf3tbl#5i z_Y@KXB(}#md2n4Nu|p(gp{dbvRc^Uf8I^hRJ^xrsDSL78qZ~`b=VX`(3Yq1*6i$oK zvs^m>QyJPvk`v6cs5rgE`UvHa7?>58R5=6Z|5zz+I{#Od4f;Q76!TxyJGloC_^F6p z*x7-Gav zJ}unSG7AcK6c*7DAM`MwD`3Apc7Bo>QbZ)Y zQMWdV)$_lW$2vfqceVflbfa})anY(w?q9Uxf3JbsAvk!8E9Jj7L#;q4t1!j?y(T$5 z|GfsXa1}-;|Ft);Rkg#sf??)A%}USML`ybIA}QK~99%gz|Fuy?hWNi$1IiZibUQ$g z^oswzi|Rc6_hyu~`U2d`uM8{)4jTTrE}#aOVKLF7$)21rbO3?u1pN=Ks4iJ_Tum*b zZnAL2kx1#;GA@h73bQC7^ij73FN0395uqYKRS_(d_pr^7?2uNbgv}s=D1F)oK<&ef zq^zvO6f<2!@dArbSS4;9o&_X%roEz!5fFMWj2&6|JMmjW%Za-3Voj+sL1;X{5|*s? zQP1!$dd@faAQmaZW}AHXXRTj7DUS>7DZDP``!x{|sA6!04M;A~z@tZ}JhNz^Udl6iErbgh8U1du=&C=55kfFekE zNYSW~B_BI#GHkI}cATxu9^^psl54T$B3CJJtU(yb{*g<>7w*k&mJp z;|k}|c7X25SqMsuIv|W*Oj+&*vM9pHPZ1H^0jdfiK}CQ!vNRxg6`rkR z-z%(K(F?#7JIGKs+WddlW{^R#>@&&3N8&HG{lP4Q0Cso|C1YAzCBpfi@HRmMi_CaP zAX&qZbVYOmQ1J+`LuXcHkeCOYJBK9z%9ckl0Oyf4fz9NlHR1pL8S-vrY)kTFA>CEH zmCj&<>CO)tCV5AR+BW7U*L*>NlF|h(zii1&Qsxq}ffg${XBY===otYa7>0&SW=Znr zWe68R^olO-8iJVN0B+VqlrXFT@r7e)AOmBQ1(N@H2$lxn;D|7%(^_cuED6&( z(SRcP|4m*`lavRmKcT?kj#vMHZR)R&asPm2qE!1tY9qV$JYczh%nzPZJy)td$wl4j zD4I>uM(B?nfOt(hIqQXnC2#SnwUk5J%$JEjJxDU*#7om$6jfIsqmI!kQSK#7!LYcc zEh4ZJ`OABwY*>7(KRfaYqa{kxRrf$L4NZ^%tVfoNco9`2#k7+3)}q`y@K_Vh;%=+3uOF&B zu+AL6gzPEFi=k*P$zK=Aq@Hp@2F<1{90>|JJ!G2X74GXjjx^LlfXf!0&@?eN#!jII zN&@9ZCiHapHo3%$14T(@3`8NKgsQ=!X~Th`8CwjG0$rV)o2eKJioG-h?;Pc2a5swW zgj81u%n->OOF74srU#AXhN?~|WG0@IhCt6G8AZq#VKB>t2@_cDVYfjIBT1x;Uh&Uw zFV^Az;mv;V%TnF0NpX)YAAvB?gkiipn4tc{^7i+KxY<9z1%WducknmZ6p(_Sjwb(q z`Uw2!@JAn-d05Y7lw7Us1gtb~> z+4rcLIXwk@2}DjH17VSaT~!(3HH`eQRR#zN6G$-uYc}kUq-<@YR!=_@kh2wKVB_`) zLO4A^)a2VQoU%>;@qpswbJ{N)cf?UUVFu-y%Of9`bmtW1K&5g-chP%P1fW9o)LM^^ z96FCgaU&k#uP^k`sKGZ2zY|1EstF=OQ;|C*DM*=s&`r(>z)x67b~PIc7rFPi#Z#@E z+8Hq#00oJfVIu;;Gg~#luE;N7@V~>ydi<|pV@qOOgr#?Ed_q`Ej3uIfY(muFgwm_^ zFwOdRMN87il-MF~tUaze8g9!mmI1xO5EaV8q5lujdSA0nFM0vm`lkDY%B5J(yfu`bS#;s}X%mt@a=K|G(B=5*R-Ka6DMk zOR8Mz8$HxQVvDyVhFMCjn2axpe`gCsw~vZIyG$YYjg5{jbr_3)C{1>+u-M3$s5nb> z|HRnHQVRx@)QJ)oI7ARFoNh!z7`8&;n%8b?{9k(Bim*U6aXr6|xO!YxKUK1sS#(J2** zF`qLTRVgPEl7uQ%hjnopDr%tNf*FPSf;J|+L7J+CbfZ|Gp~y6dL!5vLhQa`{2Y4T_ zF&iKH%SIzqOsEq=y1{)nG^878K<%O2hDeVjYBeh!$mU0Xj2Joc!?BNC{SXTY6t^lj z)dE=QGPv5K8c;m$=vG8alEo&+m*S|ZqD#~=sRvaQ;h9NfGWx70o4k;Pb!+e#61p{* zJ90QW5~zq{{~&Awzs3GYr21E*r^x)MfaIyhWS9`T;M0<6caL2H(c~CM(y*!rXOdwu zB=1CtQ&ZUH5|d0-=%Z1vQkFW2SwnZ#ShqqQKprY|&=UsBMP1arp2f7Ky`LWh70%(51GA;=5Fw(uL|z*=%W4wt% zah~RlLV_UOZ}7aBcPzw)6v16O7YVEcYeSY+lA#nA;)5wLvTWS-|6?WxXd(T; zLjiea+$xIJ0B%nxV+W{6#5$xVlF~s|2TyQvW2dN5NwhMHf5h2mT5t{83;@r@(J)1) z%(_0Q$X=YU3&=xfAss+B#1XfI2IOl==0UnpXm&9`C82hmEhPX|6Bd#&Wh%#UQGBrK zDU>o)7aWp3TaE36?4r%#&`2<$Mo!}@j>Je}Q-gu3$ih{dDFQOtVS+Tq@X+aM*nt?W zQJYCVkHgc2?JIfblU5>$;@@g!ixf974%-9p2*(kjm%%q!^^S(c3?dPVTIldH^qrU< zic`plQn-IYc$E%!M)hUL;|_qXsUHbJV8azSlDb_IfDmGY0!Eb*=^zJns^+=qc05Q{ z9H@f|86lvqV!`~95af_{F5waj0UhgJM1DH23Zg>t=7k=@pdBtm6=JeVDT*h8$wLvL zxspT(0}C6DX<{?vfp4D|eGNUuInvyJHxOwt6vURy#eLoD4RnxaL8-2Fm%~`*<>o*y zL+_X6)oe!bh$#Vngjw{gJj~q`8V{-#8c1?9q<9V(c@D=&?$1(^1G=54H=uqiTi!zy zgZ0Oe3(#2hiS;tHZQEA)AHJ}(CL`bI$f({rk0Q9@i`Z^NY>=m!AA)dsFdfnX3$kPn zKPWgM5gGVTWqQWxe5cqhD1;;rWt0_C1&9Ek9`c0=g3CcRs9Y2-x1OcBv7UBOCFqLs ziu8!zpa}wK67}zC4RIE~5Wg{YxFtZ9t*NC{s}Y^y6Bs6G10_B6M2rQ`g6Ocmkf!>2 zu+r{a?(VtM%6hNcm`Ij%cShB^7k{AH4;6o;meI^_O3EQDW8@Q_xd6}6ki#f#(AZu; z8)ULR0zQY$3dJxG<4 zQ0P=eLO?>>59wg6nR=+Ey$1qba+oZk3`wrsxl77H`YQc8DJhRm{#ABm+S((o)t$Ay z(wY*Aw=q%pfW}!7`c7l0b&?9t9?9II#csb~k6a#VwNk6nFh%LOsI@?4JgzDxDq`tY ziUJ!W=!v=hF<+5--3!dEKX+Fu(nKC0T#qb?h;Ayy55f_OI4J@-Of!L+8UP054hSF@ zMfGF{R={04+_OlXk^x){FcpFUTSU6eMd|L>mt{f78(Xp7s||)PLMe}EeE6w5qA1HO z+<{M-os_&htvFI>vWg6Z4CnR8L7f)4qJ@kZxiA21HBuIzq}N8u{Nju%S)B-NMRW;i zNYzw#Q`p|mO(iguBN~FGO*Ec3uSp||iFSi_T9D&R#ffM|#9qUEMzyO!Z=)!NmRWJX zNjL?mvE0BYvtb&sd0r)CF48Q|+&Vl{%#@fmH!*z=X2FGNp*VA9aoY8;Zitf1oMz|< zr5l?M3C4wKtWafGH}zK1_^!|qUS3fmxSil%blgr!HSlN=(Jp)o*i;1EPVssncQ6~fL@NH?_x#=$pC{$7$mbWK{zla<@+qf&#B)?vLHv{VBB{aJvAb&xKz&7L*@ke%DCYAFjMX9odqLqFI z&wu4wMWsIb;aAuHKC|hK{Dgoyaz5m55A`GK*Z+!F(cJn)$#gG#tx6 znI6`t+#gh*3ODzQbwhnd`RN(WT?Kp}De|Rp?}e|N1FG+}+wK{XjjN74^r=|n%Zd1N zv|VHZy{8+#b!r(5+xy~eJN6i|aBswy-ebd8eq?)*l|QxB-{2yj;YB{w5B>N4-TU`1 zqs@QczyAz<%|$+S)Q?&{jTa4r_S@9p`R_g!sOLY!B!KHASzi9qIPtX~{?g(?t=s9c z$cOr=|DsrJ{r5vWq_wBuE7u@h%TGmoW;X$^G1 zSFQnhU5K=H_|ixIa&zuiQP*`9!;^8f9)BUN(wq-ZPHFzoR~Lp!7?Hoo|D@-)IoEgp zzWC)E?az=N?TdVr17ASoM#D;9~AlM zmIiX)H>{}7#kAl1zlwh%)nI6V3;mbinLc8kfCCiV=)T+VL5lV%SJU%fZG-qHGtl~` zkGxlZC&^!l&g63mfAUujuY7)r8|H@RxRsmoJ0J8x!pGym3qksKfSJGs7LlK$%)RpIkai`(WNdhfRxd6hfPkkVoCHiMyg zkH7ORwQJR^QQfOr)hd-MRjg2+s_3zf7Edih4_bl* z&%N=L`ztQ-nM8Ha*MjByB<`Q2g3mm*b}oJlulrRgXm71`ZPVk`-h60xR+X8zM(1=~ zlzer;EZe+*>8EQg{P;}aqgRhzn11r`>~=Bht9>$I)x;{skFUJkY}-q=Ivbk(s;nH{ zYs|)*=fbu={lw8zO@F*}HtX?qM{n(&dSuGLH!|yQUz%YX_h-_*pZ3|G>p#3)gOiz+ zlaoVg-}$X()fYcgvb&C~lOA&^Y}7I5nAGNn=h2FN?@g_FIAfjHqB~31b=9;6Q zG=^kVotU;y&pc_`uv3H8~-}r>}*nRCmeaf9&_~WVC(9B`yXFt&NXaVaM5q`(Xd75 z`<$5dbx79kLksWTI(}sI)%1wJPG$#1PfuNT@Z(XZT*iu#mzz}xw8VIQux~=mv)#s2 z8t_3_d7nCUs&Ad9)Y#{}E^W}7sSc&u(UgtvT(a)3_2;>fZ|pnSrsW$4SFT-pVsGP+ zHA5!XTx;q&{F4pKGB<5krhNSK`Ze3$s&R3Bg|`l`%I(tg*bgfT4$p1a`gFx9jn260 zRZsr*>8`fdLPuxSTsn00xatRLU7CBp+N(ax4PL9}Re2)v)!M%tUQqR!v|r0T`uEPt z=_3Xu{qaSrebSiV%!jU2&dAPx_~_pk+8udz=(tmLzU*^0)p35~pMPH8IwNB1hQ`Nc ztQ__Ig5$?0zItf>?wwzEj{Eg|{~M{B52X&;viNM}b=~_0ukLlKUCpm!9`;)Cd!Guy zqsCPX+jV`^`NZ?7ORvw!_AlI;9{s`^>laO@q-=Tju){m}Vp`m+f*M~|=vjU9#zy5^ zc4%EGackF2dwi>Zvig;wYui;Ey=M55`zLn#A2_(~`FSVXH(P#g*vg%@Ijw(9{^{)n zqw~C8%_{$XWZZ*|h8_r<#A&XzS!*tvCMuO~Fb>LC+0Mz8hL~dd}$D z_doAiIc0eDa&_;|v(HRlo^<=j{S0f=fy_o@FM7Ru?QqQ#2~#S@?p#x$i?wy?l0O=a zI@qsgdhgQ(*`a+#A6kB9=<$;&)zA0%rR&$7;+JoEf6u(l=bk*Uy64sV>---1^^;GY z+qvm;zgO49FJ7?ru}Z-QH@#Z<#8+(wolDr3da{*iT*{h{`&f6Ee>iQ#Ywa9uJ8iAL zcK(bSyB%tc8h#Zid{sKiM_z zl|#c|J}^$&j$D|Jh!9a$T#C3zft$wpHB}Q^M39p z<+cUfdG+pGXRDqYIg)-`MBy0JQ<{NPV3zVt}?3(C6@U#!0L)7xPu8=XEfcVm2Vi&q=m zuy@-srQMdhbshCx^N(~13Y`6V^7aohAB(%T>!XWtSAWcD6g{rOM0?1~=Fiu)n0DdU zH9Pw+>T!SF#lxGMj!vrLXZ$7NovBaNY`(Kj@0ESt{q3!q0joL=-SNVKX7Qhmn)PjN zpTlGPEU(%PWLO7G3XBASFfa%lLq*Q^(IAGx_OWBlYFe(Y9%dF0v! z^|EjJ58SbEXGYg=2XuHXTPkUxaih0?iw$INUXF43Sx|Z0_4!Q8h zo4@y(dLqAe<5y2Uv!uh#?Hx0Q&;E4a;)4nGstvxhyjAo3A6}SI>8Ta_W`Al3^BLE+ z^19Hek4IN{veD6=2j|)D-Z}aEw!|?{-#8ZBXx+H2i>nRzGpOJF<$H4~T}=%7zGVPM0lR14Xgu)9$alVT4#bl zj~jHd$G)d?`u6xd`^g!%_vThv-!1KJ`>f=K?Ha9EAGmE{_a`DhUby_{HO31!pZWIi z&=*F(J^!T}{j1IyTW;>{thPZnFWC-Ue{w_0rQiP?d$98thfc4W+IDZ-fm6O*(4_sy ztkkKAm)cD1{p6h!;lHolm*08Xs3%r^Hpklb;egQ#5|>n4Ke1N%?tZ^Ly71fK4UNmf zTYUS@k8MXEsuO&p{Kk;6G3Fbm6JEU&*EH?BefxI&+~b+^Cugk7KV0SRi~Ha9eQZy| zlvRrj{hBO$w!*io>K*K}Y0kWa8Hpd=n|kJA2FT{t9~EfKi;YsyelF2ozKpWwH=NA z@T>C&F2~l-ymzI^Qol|%`_u_{4&t46^()zbWK{NkuKkntvFZSxZBct-J zv%ef0eY|ka{dJiu2X4Lm_pK{v z^7XpDp*43-?)dZz@09DaHP~y{FJCnp+{)JMP}Y@0&b-)Dce}3pbkz5ce06nk`9FPL z`|#K0rv_Z>SnbctTY6?rdp~o}i%QGTmp9*-{Z_!XXP5u=qOvG&*XfPd>Nr=Yjy$Wp z-y*l2;+WZK^On}#0)FjW^{?$OSIC<&y7{#cyBeg{A6Ve*e1F2-{EDMSEn1dw^~W_9 zpOZ}!me2mCSI5X+5nH^znAyBu($lXGfAfu+GyPtDdWUIApPSEowCj@zD+gyE+k8mr z@%8TNSC90Is(0Y{>zj95zFzdp%Rkh(+hpM%SEdw<{K>1!`#T? zzxsl0SxYxJN@?-i&*L_=jvN!1HZa~s-`_PJ-Qz`|WYg_A+m!`h$y54^Fo%tu8w>l?I`o7z!wXJLI+qR-dz=EJx z=Pdo?Y^^Vr{=Q^;i;st&*_83yi9qikzrEKu{QKM?8*g2IuFn0G-LD4jIb-e|^U99L zPK2d(7+E|2;g>?r*LleGSdFLNeX&aQYfWsA?pfuS{d^x+jltiJo!aPLOy9>6dhQ&( zV%U(4l?NRBgVz7Wd(&T>dT-SBRKxfE`rcbP?0rM$BI{B`eOvxPqfTxg$?cwu+D4b5T}*KC?s<@%L-&rQG5aPR1*bNfVJ*)x1$ z(|(6`HC^;}iz~*uzt>+}slheVbl0^{_q<#`w$~@u8jZBnpLe8l{rq{SuKitq)YZMK zpK8#*`{f2poK>!NxZkcp!PR|N@7tDNZQLfN!8;2J_72`W%X~2SS99m_b@s0Oy_@;_ z3+MKZ%G$Vhx-!gcSoTdwml_qeubOPzKIF@3A&0^~*#7LGULoa9bqKjS`>XBNrcHx> zsC9c^(v)}hJ-7dfpz;xq?;D!9Cg||jM}y3>g7>X%^1}Y-H)aP`2&xwNW8shclW*+} z?0V6A{~Aa5{$VZO4Lq{qC!d(=wNCAxmVT=J7ti}Fj9zl;uK`g$xo2DYy#3PlQw^Gp zJ8RtXhO)^2zS3_(v$K0{_$za-968%?^xCucd__txY#`GFPN%$xY#(MC5v zZxegj_voi-{g0Zwm$g~Ew6W=(YQG(6{PZhF?(fSn6+{j{(jjiEY03GMrv9&VJ+im? zis{>z^~>v}w9R`r>$B;;7cS-H{9bwb?eW&>b%Lkly|KBAbAHp)GuzDGGIPhNkS5C*5qA5V<+_87?gIj+3{J!Us^S5?b-OW zZUdg2Ws9Dh_R|-4(kf1CGV6uv@4d3_gC33$A0NlD(R*GQapkI`(v9k`yf`8A6}$fo z$In}a%t=|gIpv!7nUut+ju9tHB<}Y(bPMkewePCWn=+*<)D$R{=&wQoN+o|W5 zTCc}F{q}~)6l?c=<*X;3{`PH4wXgfX(a5~I&YTgeZy(>*KWEsht9|>8>HqHbM*Vxe zcx&}`L+rXg=YP~|O#3f-y=iT;uI^8jdiB0@W!;W~N$c8}lX}hHux?A+1%txgGx>$} zNj|(~=e57X-n#wBmU?;Px7_LcW|(tbtLVNBc5L4D=Hkumjz&f=7?QU6ZvW?^T|0k{ zo-?!d=KAF$R=luyeq6@{PpuboImnN@8QQs+UL*c^~~_f zdoB#WHog4(lu92jwk#Yv>_nT8Vcl)#7jL+FbJ+F!br+{P^B2$T{@SoAt7-i=Z~V)o zCw*T&HLAOH=(d6J+3$uexVC-b&b8;$1A-9mLD?YZ9W zgHyLpx81aNQ_iA;eSWFf;9Qf3E12FG->v^nTf1%Ho5NqsUzqsB@4H7o^3mxhermt> za^&K#e_h-9`!TNFm_$;r1%e#bB=sIyzaBd`hHW*tL2f9h8Ps$lZLqSz=BmD1{2O~mU?+HX?$<-! z|H=2{fv;}QK6t8Xpu(&98FieE6s1g<*xY*O*(?S@`*aRij4sU0$&Ki~YS0 zynM*gy>6}Gn%;F=+*>r}(YNnsSId0T`SR}HvZe*))!dlaq2BUEE56!0d(Pp5sSmHd zUO8;p?caCQ=$6!`e!ExRcQv?qGqXYk*P7A(JwJM4$KEf)-<^9TaX_=tR}D+@{{F?M z;f|M|@H%e2cWhhyzR#B~=>5U$o%PpE3V5|aZ`rB*m+;;iUhc6!5zvYR?mrr@5`l{D{dVX1r z$a1S6UOV~lW5-T^73e*z-q6O5n*FX^&vH&%2V3WkN9JEV`{nw2BR+c8Rb|b*DbHm7 zv1*O$LRet^^GbS+&kkNaKX=lt?a$@pzPqljY1@0>EFbm7k++^a)2eCnZ^L^SfB@$E zwf5cWbA0K!CL4a;QM;$}(UiRCa$}}`YK^`0_QW9#9!c7<<@G0y$24ko)fiL$@3UW? zoqhfG&PmP3zPD{+%TJchc<+(SrhO`m|KaoG$md_05I?@o0(0-jwiq`qJX7!Mzjsyg zow(?++kTq@tFAm%BmIXx55GCOsq@2;mF&aL*@v2+9@p>lil?6)`P1%s%QF|wKM=fm zefRaY^EICu|Jl9r5C8G@;EESAziu*icU%=m(BaepiPOjSTvT<5X?C}dyQFUUx^m_3 z_SXG9CFNMsjKZC-)OzUN&4kK7R5*HaivNXAU)wQi@rUo4H*OiQiPrzDqdBuOR=jlM z@9`IGvj-38T>b@R*%=n_RYTa{<)pLI#lPqhvrZH!d&;{$ZOV^cV|uZ?HG3B6X%g{UcOT0<%$nY z7&GdHrR9FR{QRo-b1XZ$&3LTE;D>*C{Hs5A-h3#t(Uccn$x8md%EtOnWWTkb#ogE= zYb$jOJowT#5m6^x@#*19TK%=<%&s@uR9#cEN4pA-AG`0`-R|jE-`zUk+m4IgU47dx zcW2iA+AXUMJ016S!0n6Mm$ZK+amXO2|CdwBFMPgkz3GqcNosas>r;h!qksMBk>24e zpPd`vUGUxEu!{lj9sPCcmB7@;XD@!UZNbhOe^(h~Kf9s&FV*(WtL5~$GiUK2$C;p> z5xp;TI=*4fiPbIpFY)P{*?9c9k5jKHyPkP&UE@ERFTb+*aM!@&J@@nqZZ+WT==EK; z{rjX74a@*wZTFLvJW9@*`=J?8gEu3NGFiApyU-_J|=@bIki zp_MPsE`05`%|G>+YO2@O-shR?4bNZua?zCWO^!91n%vP@XG7GLOVtmgjyb>W*O?0~ zuQ$!&u7BR-uiDFB^nJ4H=bIdjE!oYVn&0sLcR@R5x<*{=-r=+0{+ojP ztvI*f&GUUfPM8l zBJ1^g;jjMOtaarsS!){2@J*O9bnuQRT710d``$w_Gx5Vj}@t3KVn|9^x55?_4@hoM>>z~^Hch|^PL}3T15OAxpwxm zht96;@?x)1y_>9m`27j34xGGd8?kTCjb}FwsQv4ZptoALnSZm=oA*)!-i%yQOZYu5HFPcs}pv?RPKK-~8~?(;OLfcibBvlF+95(huT( z{IdJBIYS06YFBC3m|-u4cx}G5^xPNLHKw;dYJKO2E?-af8qqIt+-HyFfBxF4_coR5 ze{!h(RL!=(%zejvrfT0ly?^)nz?gjL)W=?XNB=*>y$4)V*|#=)Qb{0aXo5XhK|x|d z2jQeqB#=nJuGo8bRP5NrG8XI&6m@hQEB4+-$2PXHx3P~p&ZyW6zRx}-2{`k=_rCZ2 zec!>yb@p1jm$ld4XP=x0`CgU!x9|4R=k?wxIb{6*;=AnZ`M^|T#kh-8SJ)O!?qL)s z4jgvn^q$_yBFS>o$urw;NPe3v`@Ty4Jlzkk?&$kI)J-3JW43hvX~l^Y<44OlTc?~w zy?3~!4+}i{#JAmXf2u?l85cb6MPQLR?csq56JPl^&OiO?P_rAo%Kf>$wtKDRdk#0s z@0R>#^4p2?Ccn;ao8QBlxO~@*8Qbf6hu-Mp`}y>Xs}En*v;{xhwvXwuJ~w7oS3ES#Ir{2WtI_#$n(vtGI)B6V zYgM`|PrP`wcS#hstMCD77lo$r#%9VubO-o6VStfHj#_r_f+ z_%1M|?^&a;my2ylVYS|tfXlPC;+ z(WhTO9kYDjljQ9+>sTkhSic~@Plr$Wy@qQizuH=FyMO$>PEk{ z4^0O=CoA?|&!0W;$a39#x9xW#whg;jGO~AS!%ntkyMHoLgM0&%2j7Xivg;Tn)|B&I z^ks2?&eIlu=T>8ZqUqQQvlm7Uzp?0LFH`0p>GN)@OfrvUx#Fu$mo4(O6eKU1wBw2` z_WCmG>oZjT^Wux%wI8J3IM-`W8^7VTXA4YkE1pR2c6mU&|E1jl2Pzd-=ryaS;8oj8 zXG-Q*z22_5_(9Rd)5XD6hAit;{Xp)=bE|g*w(3)`V~%^lw&_3bsIR}7`~HOYvM$n% z#UYZe4>q41b-jab`kBEb91MN8bk++}_4tdm9&!7*)5zoGpI~Tt{Z~GK^X>{MP0PrgG7#=`-IHFIy5D zlPfH)vEzL9(*nzmCTFBu7hYd5Jm*2mi=^U9@%x6?+%>4zzQMiH`+QkxdZDQvu&d#f z__`&(3SJMAR_L*N=k+cF`<;2ew|jB@h~*Eqy|0w}`O}4E9YRkPY(5~`5z?>Sj^OTV z3W`>5Ue+#nXl}{9!w+`cbuA8T;C1HXsvFlk_2^uoTj6@a+g@AaYd;AfCQ=yjm)?cx3f^^336x&I*f$;a!9I%v*_*XI_bZqV(x*uHr#^>pU4Wwjfm&;Ij~ zNm29b@H=ZFdg;1O6UaIlE6iKhCcvbc8-L?(GXBGxjIGscg*dro@xe0LUqCb*N-TTxU82KkvSaEypxk;gd zvwODm`tVepG`!7$9jS^&dA?uwl=yFmx}HAo()CWqo0Y_cp3jqYw(Xd5;bzj_acz4& z>UULe&c9{t1Z}UBejWbmTW?l3VU>eV>nt16`P!N~kH5US)PCmC@%Ojx*js+i*ItZ z$>}Q?fSI$rSM8cr<8{ooY?pmk)0)PAK7DtS=;J0$-2%hb#`8SG`%LR{b>8lXmRo*5 zdh^cZxotmX)HpBhFwmxo%(;|W?tHWEBcJT)p0YD4)g$GAs&1u5;#KRne9HT*zH_4d z_AOuAhRzEa-KVHxgFojRZuR&$XxbmQ-^FzGKh)!)Wbwj|-PZqd*L?ehyZMjhGrDa_ zmrKTrrus{_if^kQPW;%T0yV#N;@F~-nOkpt7KeXW{ch8onX5IMJU#YVYSHmMM-}ao zCf$pv5p(@Y4fm;;(q`Egd$td3V!6NU_NGf`ThEyhd;P<%-py}yHw)iqRn566`AfQ4 zdtm(B%`&$hlUn4a-TJY7&1avcyDT`;-etq=`!!#;@0@m6{kR7`soUJam!ED9s@>~m zrSJZF-{RDvw|y5GE`)Xe`G6=gaq*ZLzjWGhyD|Md_;m1%5oz)@#uf5qKC0lOk5<#K zcGT+Bk6O1lp-JF@Dl0Z#s8<~P_Tz;i7f+9S^KM?hfr|?KU+%9lZJv$%fgwixsQxf0&fN=)j(e?{c3mzF7VJ`h9_GLlzEfx%Rcm zt^T>=dsl|Md|t7TdDo@w+*E1W)Tq+pin$GE(+9$i~@c54g|I;HH_%1DR zom;Q}o5JD6=RZsywD;__cMC49uh{PX=f%cd<*NqHXq)fu{zUmIX6Nk7?Nhw>G^;c( zzgCT5`JMyc?@7uTb$QhJ&#yjr8R&j8;$`5>qeG0V=e}t-c{`b`j>#HXnDJQ+GtJk{r@x&hAnL7S)Q>IRF%Nsy^YCpMUqA^?t6xR<91hv>DE-!$;`=ABQ&0d~M5nIl z@}mCEsL^2S4_j`I9YqU-)6W%$E@=OtZ_k$%TJ#*-VA}%Eo8zVzp1L|p8}-)@haU9F zXi}lM?stJ`OTXf<+JeX3F3<95dqgFas5iaPKG6pkRl0CzLivur-2Pk~{m17Vp}4&A zg{IQ-$K9Va^vO~m`Q^?LTlAC5_ky?79&l&;d|}Y$PP1=M>RPh068^;mP> zyY;?yBA2umFB_(fJ8^5DSIo0DD}pw)(%han_Mk}G-}+MB>F%SR^ZR?ZX)OHp{I1!t zkAJFJe{WXNwJ8&IV%I_E-^R9UceiWa3$G@5ly&fKm!GU& z)?IhSZjJlDZS-Csk-5!!7gtU7d*|nyJZ+)+vlowFX!P(x$9ntyi?2@h&-uO61*K>D z@#PYEXv25$&yUnQP|bEV*X`cf3-1RsdeB!CxNAw?jTyN$PX9J+OWeIe`hExNIgboe zdujRYFJDJ(AA9mJq4vi2!wyNyS@}VGM|G*A8S_B)h&E_{?gp9?GFE{c%go;7$@`o>h-b4(-qH$ zR@79t96WgVtk$ajQ0H#l6_@&7n$uNKXZf62zs(<`I&ylzriLHa>Hi$o{6aNzYDc;6 z{^C#m`*V(*NmVxd)O>lJf^`jln>XNyyuujUC)J#Le-7_Dpjzq+k*iXa_r6Yr8h?*` zxTR`JEPe3Q*>jpN*W1@#9r*If%)qgKkGSqxwei_PSC3fj`??Pg)&8MElPj}CzaKpL zqMzooo;q}5^Gxm6mHxF>Hrsr8_V)%i&yg2D)ausZuhENNRY_hvrq-%%9+&e*799HJ zd$qQt+2OxNtxT_ywE4c9mww=f+WAz?wY_GZ&mZc4?C6xup|5O)Cj$yDRyJ2A zwf%di)($GTT>@%&oPv+$4pceRxgBM%)veyT~>%iF)#_%XQO zxh1;=M-L^>3V+vH<^R*hO&1pp)|aa^;lk&jnH`@E=~!G**D=R`{Y>S>#S@kvJvg{w z_}h&~o(*not4Jr`D_42tLD=|Rg3%#M|D3Ri8vqerbau}hVw5j zEI2>z>321}{PYnk%2zz9`4Up~plah^)(ZNZ4&5nC#{{Qs; zVCw%Yo=0h(#1z4~M={Q_OL4wihBJ?@lp9V4mdA;3FUpsyOjW09;^d;1ilGcRz1@)- zNR6WksUy^Via7~|@X9iO9tcbRJh?wF#6?3fm9$9C1xcKw@a_%DMx1BGyGFO@7z~4CC|BI{K|MDvH z`oRC#i5m3q^z`!b#^r;n0(bdxmtUEyVwsDapZiZ&<^STU^1r;Q{x2{7e6vg@m%F;U zxse7WO-7o9R3?AEoIhsi$z5LDMe5D@B6a9|@%715zFv7+rh30|mZ|PFZ2!~%PP5x{3a2#f{vz+s>Uumb1++ygv;*+4pQ z0nh+jfC0cOz!jJRGzLxr^?)CN9>7ze60itp30w!Ff!)9`;3FUfCISh-F`y2x8t4K% z0xAIWfTqA@ARO2Z3ppgnLG@Bn53O@Q-2Ltrz|A9xAKfm|RNH~|C#Yk}^-6QCln5NH8h1EPRkz);`= zAOR)-Cg5kFHn0ll3_JvUfVn^>a0v(lwgH2HH-I}Z9Y_Vv0Kvd|pf~Uws0u6v+5oqJ zM!-H`B=80BLJ7PCaw-or57Y)~1HA}(5mXDR1uX(C0v!lC5VRPy7}O2a4Rk8#RL~UA z6wp(kr$Fn2)(2e&x(>7_Xiv~*pwB=ngH{Gz47wP!6=*Ba8=yBpV?bj-_kivJ9S%Ai z^b_bOP%`VdfKCFP1eyq%2zng!IA~qax}ZOR{s7t)v@7Ui(8r*@puV8!{Qwz| z1Ox!x06(BP5D8=hV!#O00y+WSKn4&Bd3+g19A& zHR27b0IC2&z!Pu74&z|;E`TbC?Emq03{>5s2Gm!yX-|d z<2SeoPH{L4N}v!A8rC)4(^}?#7*cUpdL`C3~0Cs!Z`$i5)e0`8-QdW zx(qVlCTProkB7L){a~OCz;p-x#nAtsD3gi*#ee+!K>tQXWiIw@CNWk_WXh^ zDn{X-8>5&l(-ohg zqZY&|t$y*!jtkj((_#K)V;deGyDEq~Af;D8Dx|qx>p+MEmJxMf*Kd#Q4pe72~(UBi3*I ztXRK&9*z8doz=+ijz^r|%UN-Ll|1A9w6o*=Qaout_er#0Cl8%p$Sj>-nup$R%rw29 ztB1jF@GOI0fYRtUf2PrIf~Q6`V75jz%TrV9_gqb_LQie2O|!MN_IZZZIy*bG)@{$Q zTAyZz)slII*Q$^gUaOW@L@iBTM6DRF$XZExk+oWRMb)~f&;&f2rU^i~14^c81MVn7 z19s(v2E3!f0>(@W3s@u%4>+gM1P#d31l`tXgI;XW28p$yK^2NZgBohXf(%7rK?Akn zLDA#FgL1SHK|d8m1U=P81_`!C22~G@3JTd86{HJ|4$9mb9n>W>CTPOen4s}qu|bRS zVuMbGHVP`rYZUZ4G%iTEEiR~1SbUIXTYOOKFgj?$Y&xiSm@X)1n=UBDQy(;In?9(w ziy>&pRzuJMtuZKmn=z=V))X|m$P`pQG$Cl=)`Xx9p@~6{w%Mi^oK&eFaf!&6p^4 zq99t`YD~1cuOLR9GbTp8P!Ox$J|eQXa>eR!9diCV7di7$VLH*-cgZhBbsQ!JdQC%!Fsiosg>gu8db@aFd^#D<# zdi=OV^$Jmvx@cUI`miWjeSKWA`cF|~H8sAm+E1LKu0K9S9WFMj6UUp?HgT%D`}kD# z5OJD%`uH?;zSyGPJl>-IO>9*^9&c5@7dKJMCNxp2BLZp3`=mDNK$o`a)JbjC9bK~2y(eXc>-k3g>-D8(=y3?(;)udScx!^rj!W&^PLKrB!RX(%k~O(Yb57(R%{A(@)lPr(FYk(Dl~#ptscP zNniT0C;hBmFZ#{;UUaPny=n7?-t@2redyyG`p~M7zI5}Aed(Sd{piUX`_ZYg{`8`a z{ps}~1L*r32hg8F2GUFB4y4PgzoP>;eMd*D2hnMp2GOn6gXyHa!SopQ5c<%jA@ogk zHtn-Hn+|F?l-6$^O803vj2^Rj7(K7yaC*(=;qI;S_pb!>M%G z#;NqvTGQx17fz#7s!ylqE}KpdSA9=6FZ`ZP446SzT0MjQTz4iNv}z{pR(}@lxo8$W zqRMRg(T3Udv5-8v!iqe4NVPe1?7BJhnmTjow9Rwr*$w8=gO|^v+t-*+pDdV9->kBL z-n)7MEeu&mPbgeSSF5>*KDTfYeZJaa`t!2IbfJ0)T`PYHt?^$<`z~Kf_pZ8(UblQ1 zo#&rVA6=GDU-U1a9~2bOw*p`5`qulP>kwF?^ZThpmk|6__clATbq)(>4Dtlw3?f&Pymwch%ZTA%Hr zF;1GKG3L2wjmsx#jaywpjXzHcHJ)|}GhUt)W_;ojZu~ka+~^^TFjku!VGNc<8p9?> z8dGIa##WP~jD2L$#sOZMr15#0q(xrZq@p}+(hDz*nVO?9dwFZk+BsS?>#M4F#_N11)+Mw!(<(dOj2(dIB|jJdL78)vRxA>N#n7jHh~Lz{2r(dG|6I`fD*I`cyx zz4>UK-dq@_v2NL>vF;1gTF-3LS|5dlTB+@!)^g!t)>_-ctoVr#t9g64wR3ocHG6x6 zb!K>^b@}#4>-O*{>&fj=)~DgoR%%DI)h{B(T5m^;H6bF_+Ga$Dw>tP3OJ ztQ&X4Sr0|TTZ_iUTYrn7tq*q4){+RF)qSVVS~pT}HSW|~Ga?PvPCE_OF_A`V_wh#S z+(?tPXs5|~EHc4*b7z9}ugFBJXjh^&Fe=F!u`9{iI4aqiwJX^=D5|k_!mh^FRZ%I{ zox4)3H=@i|`EIi{JUZ2C+ns9d6P;$AvOCSXB-&yv+HJ8Oj<#9@Ct0nRqMKL;?rdVM z9Gz}GUtZHZue_!k?3->S3T?OLGql|{mk;fR_UN`q9@eczc}=fv(=@$0mDlzfIYZm4 zi>v0lT{)WXjw!U?osw&^VN+%QDc5Gt%+Y3ll80t1r-WvQxQ1mnnG%-W#Wg&8#FX&t zX|563>!(CyA9Rh(zAz;+`;Kc=cFB~eY%jOyZ2zgz+4bFGvg4=5WH)t-&F(ohHhZjF zqwM)p8)ZLtjmyrT5|`cHQ!`?Qw2=1eL{ml<m~Ogf_}o#ABQ$Jouf3=^eC&1akRg)FLaRh1JA_w`E$bmh=qx zFr_(#WUO2*eg5>fb4{@HqQ=4Elk zEyd##GAA37Grnm9#K;OVbcsynQ4y%pOasY&LbAzhB<*EG7U4=qY11-OnQAlZ(i2S- z+bAppwNE9R&89?rJ4BzH!8J^RB^|Bp5U>qmcN>y)={h8qZnLw>gh(XZX1uuyt+je#)n%UWr)l_HBG}&2Pb@Dze){JCJ8j7MzYvJ(2Fl|{D z^eA+~EPF@fLy<(0wsRO#|9nzxPMLbv*$m0a_@V<_JDh;@N2X$lAj{0uXd1GaY$P>` z?{6@Dom4IwG6A*vtZDus8xT1-BQFEk$Npa#OUm&de6Yo=9d!LL|q+xXa+i8`tyLkzumfD4t=m z80_~pj8Kd~E}Og$wrx|n8Y83Ho;1aCS%pEm64zyz5y%YFQXDR0e7`~)8BHcDm4;q` z&Y9)Zg-JT48kR6jX_m~yq%0#os)I0DjP66tA)F=IU}Dq;m4?pwjgsQ3`kP2CM!vY@ zqbwwO8&#?noCYYbPre!Wb^(drdC=Ph=z%uq6**PLJEhWv;ER7$8yff8gv*{8|S-g5TCtA{zGm=sfAM4+ioS3G| z$V@k7>AsPX-jtbUuMMIJ&|4BvVHm>f98pSc&D2Aq+2@Z^GEzc{?WEi&WjhPYDjU+# zo4Gp@noO(-7ON>O3*#EjbV~~Et;rCfF4M?7%l3D6azcAEvr(Ep*o(JzX@fz~lr(ZnQ@Vvr!Nf3tj=)!wGSI|aq>LI!PP1lWWMSN-n~a$Tl!8~k zjKuCr*QH^SO~aH*`ZurRn1PaIYm%u;hY*oCR|l#ZaY4tLC=86Iq}mwcgr8X`E73C~ z6d5-riWDoA^iotA^f%@_n}bK@H%q!My#)qrdNOGZ8>KVZm>AJlGOhRy6&ldU)Fw=& z^cL0(=AIM;Bf&qzM89NH{6(MEx9Eod~RlR$|KK$N{8uH%2hgyJbVKU|UmQ6G; z3&&ySZ`!Z@K`QQVpzE z;)f{bGNU=o)C{%5)Dp#aFBsPtHa1dmBx$=I{U;Ahm673T4~!4iAsAD}y5H&`s`FyAn0VPrZBjGE*ulfjzeh?N<7n1m>kAuBQ6f_O;^P(O_B zCF7C^8Hwf}!?A(TaO`RgpHoQ2GA7lEkw(-pYn3>v&tOS_0q<1B#BVz0P?Xtf z!Ng^+XkI{C7b?}xx2s{kMVNJmT}(_!yMxU%D#^(t7IUr~4I4jSdrbbbbVS2qkR)fcpjZy4K@kxbg<}?H>|9nUak|lFMo&&4 zBM4t_<4l1>6W=lUKE)&qAFPSN7LXmDOcIXi(Z-nstd|sH0qqT%qiWu*^6`8)G&>Z!a}^v82Fq8>-)K z=#a^h=Q;W`#e8Kg%W6w;Uc#oKUortn1G5$$F*~tj#!7++oS9ihj>j*_V8%M@Np5|_ z+CzMA(X-nDrKX3{wZ;47xQuDW^N<5#A=vv~YGOjetW?LG{*OsoO_(j5d#u%F%fiAa z1I=TP$!=-F=z>wiR4P%nrc?{&WHYgQ9orE^sw1;HKj|}#+8nwCRlw(!YkV?AnG$rE zT{$zCXltaw&tIuVgNE0>M3jaVC|Q!S-5m@^`*Sm%qY>FDuhiUb*W*ki8A%vFNQ|jO zHX<@4k$vZBoA0${?Of-^blBhA6ziBq`2t&zbJqU14=xmj(cXH@#^Ir;2(n4TaL6|u znZ*s6JTSwvYb)Zg>TI@V7;=nBNpX`sQ3GULv&J(FVax%H{am&YjHVQ#LM%*+K;02L z36=>dGBG*1H6Zq)GIad%iZNYD|6rF~-0qii;n_@}RF2x^q9)T2lj#(LEh3Abn3&WU z4(V1B*=mSk*+0GAY@O zM=S?2q4N3E8*128oZNhNxH{zKY;LWaY=n|v_aB%_;#VhZmGQ3hbarjZ)HN3m)BngA zG+5G!?PYH<`(Scfr=wn>((DS7bbR7wmqP3!qKpRP?VD5`b{=@6)TxbT7E4T>2xR!T2&K1r`7TMDE`na!(GrhBO^NT(#RvEa13$PX9Ckl;D?e!@;I zTz!4(k5z4@`V%UKQy9*@j8qrqU!rH286h)`HR7E8u-j+0Qn6Xn6Uw;ls;bmV+R>kh zK4b?6=|KE88o5tMZjK(zZ9h7%JfLi01YyUAj2>n|N6uop0=tr8l(_-Jm+grt5gEehSXjBGQAEJnePlqfU6f*$IjCSJ71nab zq7{ZHS>>=&heBgK+ntOeB@MyMS^ps8%vnb)>^`^MC*v#=3%j39(!fY(Wc&n6DxXvZ zbX;OOHmK1mmaK*p*0;_^DmQ!EjUjH!*n<6CqT3nMh#8@<@UcgWSTK1odsz0`ff(yh zvL0avBd^B!O&P8`@+D`ib+%+?9rg`NCzYBBR+0`YXP9t!4ggn1Gi*hWg|Ce$IBtl- zrm&OO-XiIbTTZM z5E4~?z|EnGn?^EiJ1?N?TCwwH3>S^Mj4r+uJ5? zNHaXL<{?3$9<~;4JAhbocuLoT96rWn5CG($|Ymt zmdLy+!7zrLRVb!ZtRS)3Y+_6devTy%q1p8YKM?KB%=CaP_JN^OO|ooMhkaCXotV)o ztd#UDX6CckKY1(;b&ScDZ!N|&VcAalkeNSF>U8J^vdxQhxByf_x-OAy5Zh-KDiNI+ z4|SMj5-bj~!o;QVt)i0Yf%9aC9IkBLhc(PLaoU*otBLKeGy?%4&Dco^#4C&v9rCom-S>_j#{`Wir^A zWNpGc{em6KZE&Qs&x@FCK0L_I$aFGY`Hq56jA6xhbJ8uy(;uc6LCDO$X|T%3%v)BN zp?3@qC;}+1^kn`qHoLh9RpM-Q*?S>b>0`#UZvpW35VHl~5a7u+X((=Mz=_Z80I^EK zmgSh>NW{!z5ezg0=0b9uQcnjt1;g${lVI3JL@)k_j=|XN&U1OGc-ZPK{hX0o&zJJ& zY*08C3wxAKgBBSfx)slIc-xOu35-#~V6*JRuvfBU{mSii*kHzy86TS}gnA2?5GPF~nG2(%JkYh;u$%Q8GwA}h91I~|TqMSeNN zDN16D+7}1d9fom+X@cyh=##OhPUc|jIyt6|QeH@PB|vVZ2%B^+#_mED^9+6>*HdV0 z1GGn}B`Cwgbd_dfo?)ZL*yq&D0*KX|c+z5|m>oNEl7XF}tfbq3NvwZ<=C!vAuNJWy zWDio6>UddXCU^4d)F;_ZA8yTw*qudAA-GP<4=e5j7oN)CNj{8hVkmHHCtlYOoi3;YwEBRnk8Ye>Xa?mP2ABGwvt)9h3|^?96JlS&d4_kW6NU_$GIv* z#aLXJnk*=WeTv|hfy4v1BENBfZ5?MmQ zE+GM_f6_sYnnFFIC7AkU0!+SPeK)0Q&*TmMqM0P=_qy?2GbmR&ErOgO)_^ zR60^-W(tO^sTPW#R0*-Yody~SS4zh9Fk+WGi=2WW6}FH5n>^jr6vstSF-}oChv!OB zTFyKi#*o8utd!u}1sHie=^VAgP~%LwQd0hLj(zx*l9EyFn2}0}oDK!?ri*i`|Dw1^ z6huiAeM)o&|Fnd#x!%io`NvG#2N#ql-wo|XH;IAog^=6%oKfT0!sj=3FdiCev+PSF z3ht&2xn7_%5ThHpOC!f@oF!%Y2Rkn?>$3mojjSKA!;kTgEis%SagNfdhT(x#G5_iz zGtHvU(7}i%D_!SUNJp@rs4XKP>lCL&=RZifHNCTh7^?r69kQ*5k%F?|+$6h2?Hul3 z4E)kwYD zUd5f9a_&vcYJhlm+VVmc{&^dLj2Py`61&~ZFB+YWEisD$D^{1#w|3vnbm?Rn&kh`p zPfnmQ)3#$PfDJ$dwv=S6mCTloZBNG;790nFgjoD`g+v~9@P;XZk@B&ln>ixnq=twm ztP1tXW@5oG2lJeyj;j49W|`e3CojBmb7I+-9+=Bm>(oieb|B=LeJsSzD$F{KXF0df zHv(d!+gF>|Q?Wv`-46B>Kq=uI~jTkJHO2N5oZxUWJ#v@ zw*bi8&n)+uCo0@F97@ie>nY|20ohd~QQ}w@;!qL_j~O5p$DLrX zU_d7uNvCIa{rHzF`01Xv=SZ)>BYNJ6)sc?bG%CwrR^U7n=~xo%VKT@$SF$!kT>Rl> z#z+Utmd+f!ATu+LG&5Z0S)QJ}l)~&;5g!h-k6GY2^azQO(xqVPwp*{HXiWKuiO1Az zsiOt_KC}*#2)o_MZ4@vnf`3kkG0N-^XRv$2I5f#iuziC^E_fJECIWt&n^;ebfIOwQ zul&h9e_-E;hXwpPkgp~7Tp|vS*lUV?$Aj#1a;;uQQflwVuIucctQI`$A%mFPRdxtq zme{>J&c@)?5-j@o?AVjE*)lP8*t1J|0IA2)9A-LjS{RuvI`XOmt7%a(if3@f8nz0s zQgc{XI3GvmCsIYswjx|*w>a2!B07ols6^e6K&51)cQfM|#u7Fr*@j_aE9KMC98RYJ zN?AZod<V-8~>~Yv%EF$lb;DHEpDAIm_g&kV97HJu}=HzuI`>^5PYU9o|@uSHeEq~yN7uXN1 zq#JR%o9C7q+04ci3>E&QKclIc(@m@)Xb(g-u$YoL;$dD8a>V=XQ64@pdnm*nkkcJb zXMT8(Q0CZ{=j2>HJA$#@+V1Ah5c7fA3bTv3%(5D$)X-y&hH znL{HGmo1Zh9g>f`^vgd?pRrMnjWg02xkIKDp4GA&2i)*1o2FxaVct){*;YoEGrNG? zw)(d$r&*~~C}!h_Eug(n+^UROK(jHC%^-FZ+6NSN)?f%jjq^`~?A;hzi_C>Y*^rk* zxvJ+Y;va?3flk_vJPP36{jqm#UK2W}!dk#~4%_2-k6fp9Ht2X3S?<`^@A$nz3cra) z;dcdD%mw8ybwiCdG%P$KGOB%tj-5Jp;rTpu$aQ)H+K=#^<0Ek~@sS^@`UeQW<3Z&7 zJ)yjtP%-Bg66$pEzYRuyn}=L9^FMx{i~Q)8)5ZLdHQfB`z5hn}U;pCc%i-cE8y}yI z|H_{S7oPV=|4V%AuiG*|*TwkwH-Bm_JRe^U=jQXnm#bkJf9x+9ef?UYOudBvH~mHY zi@&n<(y@#`=7-3@E9KR7H%r} zI(A#h*Pgha1gPNemy0D|!yw-ex)t~lNIO*WwGRAxgD(awz~X%+UrnI&!IH0Ppa$;W zg7*h-6(~TsUqLti=|z=$j^8l@9Sdy7{cYfKN!o(3zm*o(GX%1y+3i z@1YLj_yjon59Px40{z!Z%t`nLDC?20`2UKkxPbrWkNm)%)5W{^Wch56-|Hh69}Pt_ zPVR@sC`!dS%di~^fe*+LEv^gVcud=O6=^eE$Q z4|jhcLG4W)1~vnp4NGG+cs~Kl0e8smYQ3pJq25$0;IFXK7!O`Ijz1mr68sJUCHIHn z_x}|t|3iEs;2EP(hJU~e@a6!cfFe%505lmG!{Iy7>A-j=9xs~>9=ROzt7HBped<4f z{4V4_$;li;MhuDB2dDt>{wm_W5>Oc+zgtQ8)qt|s57WJ=i{E=wXMqpE-@rZK3XlU# znBh$g2XcVHz&v0Iz+cz0KOC)iYuodHCtrp(F1Wh%*rM{EtoYyz{O5)qzzjUc~MfS(j z+d1ify&M1IfSR3S#-~3+gTKCA% z%ImaWH|n=o;$&X zs`^=+q}eH?TD;s+XU<|NHSAWs!B(q?O3x7;G@cbvLx$4Frwx=+Uwi+&v^ULbBee0Q z+B4b(H$AcChuU-79S`c>`sU>?4ezZySYqpQ=3;nv|K?r(^CevI{Pm2UZgJ1TDqR|N zBb%BxrC{sXb}7GI`Vf3z^1d1!ylfA~Hv3p@hP3|7-Lmb<49kehb)H}Ed8_uhw5R$# zwM8pFoo?S%+ON{l?C7tW4!45VSu4i8T0C;+7faxhA7i3In{c>y*+s?Ru#NF?gl+fx|tL}Z(J2ZO#oojE4bC=(pli$YN z=E?Hp*?*U_jmd33X?4WQTOHbUY`L`Zv|}UFpZ1gYxT`51=wIDs_=v^HR}U7~9?*B` z^M+l+!!zjF{U3P*c&yLUOc)-wBPQ9aip!=3c|U&n5|G$v`i1MqjhBbrs57$a&bzml z4jbt^s!D`-dhm$0ev#ES9 z`^avaTnay*o}e6U?%cWPI7O%vEIvyM!(ymI^!CyK~ zEdF@l=7r#yv-WA%KJ22nuCIIYb(h0`&h~C5?RYNLNBXRLbIXvQryhUt{qs%*MX_D_ z9}B+j>R!^XZm0KkKfcXUuX68o{Z)sy*@+jsP*uJ(t==ZS?`!kbFXif@or>=Xmvd_GFTQ2Wkw$FX5e(hPoxGBDggO45?C!Xu}+2cfqor=NZukDKX_<6+P z-p%8R#CxXANZLEA?&%LZYE&H8K)!9jwTvpM%b&WvJSH2EFlktyoTjc*4&L(UdHGi2 z9p$yFPe*K;A)*=_nqgdXQ7z3~@ga2mP0@tsO@0`=BLmup^uNxTo~=s$(mau=%eh0iPhs4k#R|7eNWxz~lVr2hT7We9$A zd-{h3bVCWXFLO}yS?h#U?$vYd@p)2euHL+7qCreevvz3M`;>?}wqn4}ZXJcx;`%Rp zj9nq2w0l;`jC+NYKBM5)vuuj0sSESm{8dN=Pkb}|uR$V8)yErO%Mwz%FDI@%GFCvn z`aAq#r$8Zo7e1r<*x3TA_4nD!UVac#+cw8N{vks^O&D8m%*z`hYX1EA-M$}Tw?!`5 zy5y~tnm(b(y(RSeo}zh=)K$cr+?jXTR;WfQl+i6QPhWmW1By%b)iB!u30^$tCZ?obaisX zQwcRxzwq+q%0lY?gNiL4|KvhlSs!_ES&E42l(SSc%3n(L9;KD7ye*}qV>@^r8YZCz zitl$ml_;f7tgpUGvP4W(-e{V6;14l%`FB(FeQya>zGP~vSepxV!h6*4%yAM*w#i@R z8|y;du9q`qJbqRC-NU1jgx>|!r>^rWpF1d_rbg=XCtq=)t|rvp(6X+WN-|7L7PfMs z>euO~yxTxRooV?gV?zY$_s8gS=MRXe)=Py8woMUGPjcIR`8f!`hQ4@CYik`bbzzud zvR@A|b^Y{YzZxsW)E!&>^v*X$RPWK$iW-M0>aQU;7Vl^(qJH%(srE-TF*Q=|vTv;N{=5(R@5bUiD>`ozQkfN7wS06M?Zgh)=P9+N-bPDeY{tp zfO4%_QExki-=zO?`}VxKBI>s1=vg(YNh!Cp(-J105m93fR;po}Ag21brllmDkWwPC z-}v2G_;vT`{=c=35mObmom(6-SV$F}y7lStF#)yj-cLv5El|&K!Sed444CK1=ax1H~CO?xA;&sfmFZ%gah?~ z-!}VDZ$bYAUILE+mm(kP6DYa3rH2YsMHVDV02FS4imXeOWKANYRG@G}4uHZfP^lnN z1E4BUxCL+v;1<9wP^l1B4S=dZ;f5RlggS_ zMklAqRwO7;dEc@dM|e zDo|8205_;g<%!@*z!Slg0Ng6L!G|31MEXj=6KN{}xDieael5^i@CP~IiL{jf+z1Cb z(uN!Ua0$qNh(y2?2A?=$SYlAIfMk&UO>8kJ3IZA2;EO@U+_=~#B9$jlk^%srq%d$JJOJte>H$972rou>fHW;igl1zZQGjn1kOINY z6bf!i3Aqx~1C)Hr0B#xFGPq@MGZl|!Wh!6bNh$yUC6xg;!ULclpdR4Ejqpet6mC)g zTqp=z0fgaPAUIWk8gfv98Zs3CDgYILPwK!?L1haJ8Nw;y&jZv0;gkrc1oZ&*P_x1D zzY^&yQDKM<07V7D4T%bXKLIGxhZ_Jz`fxKz2q7o!B7_`nG2Ea4=_aJ+pi!7kD-$3bAd`av zkTZh;a;8&44mZNdK>?C1Nx+pP1h^u7bZxjn0epIbj36Q8Ldb=X!!3pz6mUh_LckU2 z3jtT8Ed*SVwh(|^2)Ph)A>{CnZ~)|RgCcFF08HrxBs(Y$`6F4!2hNmWFinHfD-~i++7y^J&K?+a-paJlQY8L>IDGszAB$}|L2Ef^{|RFJD6hZ_Ke9Bx)jv_A1F7T17x08|VLIXnQMki&lsxB*be z;YPKRss}~}+fb=r91Bgkr0-%rwKu(GXw-9bXtb%_46!9Z`4Y&bN#1FR${sB
%SX_&WWV_7tE0sH>k_rkQ1#Wu&a(W{L0F zd1qOXNL`BuNlk5;da+2;Go5o!*I@q6f&ag?oxxM&qx760|JxzGYc7{5|~r{6qXB{bl}% z{>}Vb`Dgie_V3}}&p+3HkbjB)5dYEsZ~0I1f7^eK|GWNG{%i2-89V&<`5*Q_;eXcu zvhywHul#TL-}S%m|EqtUzfFKcfLnkU-l-BE5FH>5PzEFgqy@AL$ih2TdIjVL6bB3o z7#A=tU|zt|fYkw?1Z)Y|8L%(laKL@%$Ihn$i~&~zY6I>D+z+sGadY_%?*wrP^a%_L z6yx0>Nr7pBEd#RxI|ud%?1%S-3<@j>91=Jxa9rRNyg%gqz*T|k13wMi9atTBH1HJO zDe_g|)xg@oyMgxu9|b-Qv<-3$au4zj3J3}diVl(nse+P&ngz8A$_nZn)FY^05I(mJ zOq-uew9BBNlAvKhT)*N7<@JO zPVj@^x?o<2AS56pGDIGd6w)H3eMpaxoRGqhAt7Tzri9E1c|T-j$eNIiA=^Usg&Yq# z7jik|R>=L3$02s1ZlQjmVWH8XvQSlMQfOLe%h0S)OY9`==Th!6&E;K}RW6^p9CSJB za@pm9i<7ILYqV>;YYW%TuKipKU9&^`hw4MiXuT1xlUzrKP7IwDx`^iIxvp_N=z7-m zs_PG~k6j(yyxhcYE!;Z04R9-V8|5~|ZJygIw-uqEgl-S54m}zAW#|sK6K>Z+zYBdB z`ZSauCJejmcGoR1EGkS9mK;Xn`OS^zo)Oj|tY?^(=Dpmb-HXD8hK&uI8a6j<32aI3 z_+$~%O<;Fe7T!5O!hMqaJon}98{PN0pTN85e{<&vyabH|v4S)~mf-#5Lt!hEy9w4M ze-`#>^5OLr7lnTu zzBBxA_?hr4;Xj5y4R>u6+(_0asZonYT^eZ{l{I>+(L0SkXtb`;wnj%9ec9;SM!z(& zkMNENix5X7N3@OT9Z?W5GGc1P+=xXHA4GfuT7KLT1bU-TNW)%POiE28B5guhTnY2K42sH5hmN2MU28I{KGU~Z$uYwc-v zRBL{3)X3s@e9m7Jl^0bMRTecosw=+-|IMfgQGNIW_*0{1MdkAI`Gx!v>OVhfaa1{f z82^K))lsAPWB8v$ZFz1V#`7mV*K++{o3v>S%4hQDAh&?OGira-k*Jfjt@rp#`OEpM z8hAb5!t3R~h`JbcCFr~9z|Svza2vu!<}8@-v&kKV?2jo!ugjNZrh zk3Pr`jXuhciax=YM4#cuMW5p*MjQF5(KY;xXna1E-!}RNzf<%res|<7+g*O&Xl?WZ zzCPLz{g_`7Ju=$HVQlooXeWp1(eE_yv-rO}U1;@md+bJ^5_>o-vD!>^d>kxw0~}UF zhd6v3-N<1>bhN|PXtBfYXt_gmw9?^NwA$fxbc)0I=ro6~qgyy!i*D`kE!xR)_&&O$ z!_U!O9Ue7kwTHvgXxo?p4vsPIG5HSOF@Z594&gB|F~b~WF{&6#Z?8_rIE;6gVV_^Va^E$IHgzy2E6_ z-`W0usrPqBY#{Ds2d30-uhS0kejPv3vc=D$nfkL>|8J!8@%rd|wqgJ_FryJ)v) zzvz(YnCPVFbJ2OxMbRbEHPKDcZPE9lpF|Huk3>&Itk_n}7dwmH#hzkcaiBO<93hSo zOT-GXN}MQeA`TTb6K9As#qGqM#M$DW;=W>ySSQwti^PM)72@II(c-b<3F67(>Ec=9 zx#ET5#o}e+72?(6wc-upE#mFs-QxY?L*irNlj6_C=fxMrm&Dh^H^sNb--~||KNLR_ zKM}JMTM1v{EOD23N_-`Ol2A#6Bt{~UC?qOLqNItWnIuD!DQPE}Ebb)9mh_bLm1rb7 ziC$79$rKNkR7i$PMoY#@CP*errb}i?=1LYy7E6{%R!CM$)=D-=wn(;1c1uD<`z41Y z$0R2upG(e5E=n#*u1Ri6ZcDzG{3LlOc_euvVWqZGzSLRjF7=f9N&}^#(gl7()22*8Q+ywZEK$}()=ZWm%apZ~b&_Svddm9B zG%}q`FDsG_mQ~1x%SOw_$|lGr%cjd_$>z!y$`;F($yUf#%ht*^$hOF~%XZ85%MQto z$xg~Xmz|eglwFctliid>NN&r%m;EGrD0?J(f{m5i%K36wDjz9-Q~s8GqI{}+ zhWs7*WZ8WAblD>L68Q)659J@rA4w}jpU5}Kx5}rBZ%cN{_sUnxs^x2CN93Q$Ps>@^ z7xFLVU(2t^zmeO@zLkF`|55(4{1^G}@|&`!a;_pmVy}28b5yu0gbHtkzk)9hR>a7{ z70&Wz;wXi?T%_=o%M@{n1VyqURS_!pm8B~p3|O|eIDP;p#wMsYz=qqq+5TZ$hP4-~&C zm{@#%0yxDAAbnzkAREOtj+Mv8$EL(Kk8K^>KDH}t|LyJByAaD$56iRXKfm6RYxRp> zYjhk zAVXghSjtDoOhm1f4r?4<{j9z|dP^<56A}OIwruF5LC#`zdC9vjOl2wn=~U!T4+Z4AoZfD%yxKw#{+_AWmai7PXkGmLmDehX_&A2Xd za=q#&aT?jfxJPkM;#eiwY?Y2mSEW$ttqfF#DkGFJN{LdTR4EgcO_a@) z8Ols$J8b>sos`+ip31&Ty-cIjDfPo>&Dt9XPDyx-8l%FY2E5A^FiS29UHRVlZrueq2R4Y`gRclonRAXgZR6A9BRn@8)@@mx))nwUcs?(}3R9~v5 z%WOqotFEZNQGKiWPW7YeXVoLs6BQe88_$n-ju*yz$NS?SH{tP7@uGNHd|do2Swehr ze6#qB_{{ir@e5_0;#`lfa#Ovbq@kR0EsyaBnB7S)M==itdC&o{WpAo-U_D=l5 z_{H(d;x&pD@vGz4#&3w<62CKkZ+vz9k@%DGpU0n%zZgGVd@24~{I~Jn$NwDvOZ<~~ zHo-Q5pWvLZOmu{4w$8#9tDBPZTPiCUTSPlN^&=lY~j$N&ZQ}N#RK`Ns=T*k}4@NsYz0L zQf5-Sq)tgu3Xvi^sb^CEByCb&QbCd-sUm4)(wj+dB~474o+MMuN}8XvIB8kZilo&^ zpCoNc+M2X8X>U?>(vhUkl0Hv5pL8+lQqng`-zI&R^kdS`Nsp4ACUKMPlO2=YlRcAL zDOxG~lY^5Zl4Fu3$%dEp(~Aj_S?V| zaUC_KWx9@rGJUz;P>dhTZSZGH{u<=Xsx5xfs^MR~huK3MT{)0{pq zryP7k-8ZNoX-=D%(`<8EXii6((<$b3kvUy$PIsEq^XBxPIVH!5v>#?p=5&rZ{luIeHK!NN>CfiW4ueA4_cEt)bDC*R2bj}xb2`PGzHd%9o6}R~wAP$* z@Qrq)T?cb2FsFXzG|Zfe%&FR(wl$~u=5&HNtum+k%;{xw%Hf&%aW$tg=Cr9f?P*R+ z%;`jPy4svFZVclKjw0V5Z~D9Cz%V0_y2}{mHsY5f-Na#-VmZScLwXeH7f2)G80I0; zkQCJ8GR#b*dZdk08D;^}e56Z}_HM&4IvmT3NDWBqkX9h|Y0EHVP9!27hqMb)(%&$1 z`aaUhu(!@)m?cQ}Bi)F!tR2IgMEViZb4aIjK+H%Tx-yI#jwus@?|A@v3o_HK$J9Oznr6Q+(+I z!-8aU{sN94zTc7lVYsOtg7g9G7$W*d?3hjrO!x)~hT#JT;0T<6GjIW9QFH_DfV3$D z9>5cL0dL>~e1RYE2LT`u1c6`>0zyF;2nUS-8M59W4-|kQU<4Qo#)0u*0yqkegA2e2 zz5+GiGPnw^gBze0+ydk{-vRf46r=$hUZx+&2lzEP+V(7@?}LxQHgE`>1y{gb@Ce|e z(+s}Cfe8T;kOW$Ru0R9uwZzOwFbUwxPnjz43D^aWfeYXpa1T5I_~BOuKjg|Z2KX{* zrZwme1_FFtFf#*u0Jeg&;2O9CeghoLcSqm{!a*Ep0kXkd96U5n|H$$95(o4acm$kL z)(E74_CO0pfEi#3*Z@v}JK!1?6Yh$fOa1WY7}~ z1v9`7a05IBu9#F|KmpP~2ha~xfJ(3stO47>VQ?PQg5QA?CZjh90SeF@WP>~~0!#-d zz(r6Ceg-^DUNz_p%E0?zKM2NzZV5D?1k49}!F6DZi7o@JK^~X_)`9)tYha6$AP{7L zVlWoW0Uv@>;1YNOL^x40!BFrHSO<=PtAND`qyQa3DOd@<06sXW5`h+s2W!DT@H240 z$>s|hgKSU;7K6`#3r<2`&>3h!IT#D(fK%W;@WQ0%2qu9|;4|VA(#cKz~`V2c!pvOK`Iyosz42J2*bG! zqCpnu4TgeQU>&Fhzk}#-tSO)Z%mv4Q5pb|bMu3i>Hz))X!N*`5I0+tr;0T842J~PA z_z3I-$H5iw1h_@wSc4?c9pr!lFdbBZBj7TykHR?$5vJD49V zc8C1olx14M)*TE2Bfu1}5Ud6}!6|SR+ymsEz!d}mDM$uwKtGU<`DAI=4z6#(_BL1q zR)H;GADGy{51}xZV7m)g1}P_ zzyh!i>;Y#%E%*hv#^Ig_^VkyaK*W&%TQ8smC14~N4`zS`U<3FR>;*O8Cb$oN2f<35 zM?eOegLa@B(0~!(EifA_1}nh^umkJ|$H94U8TsJ0vo_ya0*-kKY}{ol!i48h(R)F z4Y~p?CovQgN0x@_yp_#hrk)|HMj}x z0VV@$H}D0KKmpP~JJ1X0!4NPJECj2;W^e>t26w?DVAB%k76=1PL08Zpi~`fZBCrx{ z0OT6K8|hJS72E?)fpaTdqd_E4fDF(Fl!NhL4pOAcfLtdlk&#n_w3B5NrWQ zzV*tEfTfH0s0?ZFAG|15@_{MmsD*d~DmU?tcJj(}*a_X6r=^8X38Ux4Zr_U5o# z+U262#b4f*VS4;QS#g6h0qX65|3PpDd& z*MV&(%n^_crhpCLE8yN4=PuBIN-!5}1E)a^_zv*8;241xKo7=&`Cuj33J!vspb4&} zmiTNCUwBvCKY^B@9~h2uT#Bg=2PyHvFwfLf#t-LHpSgt88*ADP9 z6qoCZD|8y6K2KjhmWy|oWErY`%Je~{dJTEbU8XD4Y0C|zdbiTxa=lhl2vt{HPRpu& zxH;7x`LTxPWx^7TR@dKKU#=^onpbIVPN_~)Q0-Axm07+#xq_>`nC7JKT->8XP@*gC zBh+fjbbY*vG$kea;ye@ya&?B@ZhBVRbfCXpm#arMuT)c#-`m@et5XzfigXv#93AxI zOMFY@w zZb_%sF8RL54Kx(y(g5s&3`3uDun*FgW9J*z;gNprbE<_}Wo~y}@j#NbJK(?>h@>=n z*u@e?pf4#u;NYtpR<0{9BjX1fn>VPKE$dn?)D>%WY>u+rOIKQ?FV+<13F#OKJ@7Au zAvzsfBrT)IrOX#YTt<$NuC$D+9jGhSFDUiZ=nJ))VneZB8>}hB50m8RixIlEP*YY` z?QTqSaMx<9-7ye7f=JsX6~)@}3VNJ+20p(Z4n-x!LrSWC8oWHcl%t8(#p)M(8u5`(_Dypu-} z!ql?mu|tHK!U`Sn8(yNT=4+~kYOBT#OrNYl(IwwfwE&?J3?*CQ4KSf_<7_^*UXp>XT(@xVZ z&{uUcaCB|+vWB|rO0(!$kX3&c*tpYUYbedtmFk9RbtU8sY->!jA&1t@N0a-?f_5c1eOX*r!K_QFy_MM63dzY) z5^VlQ9mcV+f}DwQ9Bow#T~*ssu11+NUN@yspf4^+bT7#tCD0Y=xH^+Kfz6#i$W1?+qfIO7 zSmIZzE3+)NbG^xr4HYB1$jgwcAE?)r&J*S!riB7{&DF?r+G_=HS#-e0A4^A>UQ;|& zpIe?^Z9@WI$jxh!-=?sAnV(j#&({s3;}uTM3&veHESxP?m$>I^LOgPGSmZ<9D~g8O zXsa20)55CmMOC>aY|h0r=kjV#_gpT)OxStyu8BUCHWWAShw6LjwZICnl-rNJ-f6+V`Q zJ$EwMQFfrb$OBguUG5AItnIqo={}Z)J$GWjzyeHC)2gq_o#kU$-*czpTA>>jr;%!_ zT4OEeu*IciZaQx6TLY8yZOXjKQchQBPs`Lv(Zz9Mrl-8o#19PbaQ zYF1v&buY`0;b@Zv_9zj1mEx*`E0iRV98%MXLdTEmsi`O|*XISB+qN#QqQ-6-si(FS zQD|k{fy&~h<;{nOx$DZpL$KJE=|V%?4549y(h6O;V?l32xFMx9YY3}vR2nBN)f8#s z+=hgC=t>JU!^5kt<4T`j{=xNv9);z_+ya?FUK&~yyCdz+toM*C6TnGG2uC1BUhf zrIgY_X-ivPt{!h+X#U^d^UO2HYIQj2@&ELbUF~!Jp8NV;&m)zN+byc~in#SB32bZO zmi?_(`*!Q(9xJ&w(qiAbVCTY}H}7iO-La=@@1bqm5Z%7LANn`)c00A(9@`b!V~_8V zTkZ3E?Ys9W+w6NgCw6E%Q@iwS zx3|Pv)yNKe*!oc@eko)BFmL}|QBjNWyNV4ej-jNi9^jR>zEYo|=6;#g-TGETp7q(c zt#3v0_P4FCL^Af5>(DCeN0{$<-l2cTI_QVicNJ}O#{N#;{$3rLZ++K;_#T7!&LZR4 zujFI-?t;}bA*a_Cw!2u<_GVe%mQl2u^dsiY%P~qtld93IVDa>rOUJc*9(d8s%d&AT zN!@r;W5LW|A|2Uwjh3QazM$oBEMqrsF|0Pz8pRb}5H9?1onvq9Zbtm1? z22yq?wynymY;Sjy-yn~)=|^RAeIb(VxY{6;4#m;Y)*%}^i!0JN4Yg7cd*4p&0qv0y zYczAMtZmCHP`o*8?p;2DnzJsuHdyt&Zq;`?RX7|n))lTVZYVY8aT2M9V(c$;7ngJV z2$^hXD516ab<0G{u9tPxNPpAAe0kHrE!mG-b1dxH^5YMakS~ zY|7Wu35CHhc#fMIG$4uj8@I|vm)TS@k~j;UHg(~@lYaTj#pix9F*?yRnLEEyHPpCz z9@-ygOKM)5S{_klV^@ADHlqX~kOuP61X9YyPO>GIBT1&7`Ff|aQ&lydefW!-*H{+b{n zj>r{=1Zqno4w&Tr{0fGdk6<(l_FEeC1h7x*LrWb5)c#OdO>5Q%)7FP|>y!B=72|2< zi>i?XDs27nQc$XCj>w6Fg=i^vdHYhQys7QW#W7TviYn^H zcx%DF6Ei(!$Ln$8sJ0f$950?6zvJA}l4^`n^Y3ztxGSRBIpASg`#0)zt!V#dG_Tv= zjp~^mYVYMuZYi7UGo@7N2s&C_s}DsD^(H00V`P86K3yuR_W!HbQ2kR4Kwwg7`ynN9 zPwHV~6&;C$Afabzz|2*cfrJQiWI<09;>#FTjx)jjU{o!{>)^FN*r>8y)jpT|!jasQ zYW}H}g&Om@&zY8Etf4bK|En#b^FcODKZ6F?Hd8= zlh0@=H8Dw8NC^O`sn%6S(mUr1C|6deHfjxod%~flcH|FC)&rwArQwvD0 z87ccavf8ROBy^fBC+n~fSEaHJ0sssMbGWcYF?w?2#g#?OdOc-KP=iovbz@RBfIwL9 zqIz3@F6wRnd04fc(r(K>p0kb=>S;=@$`mjkd{vyPisWUrzfgzGeO0bVvF=u1D4^ox zyBef{z#j|tsGK=il2yZ4Cg=|PO^s}ls&Zy9f6Zhrua9H5Dit)WB8;q^joU^@y)An# zXSK~(j|QL*69pVDskog^*#BOSLbX-cwiq$$V6P~Bg-7q$Z&DvfTRpmUHe07=u;X=) zHDXGj+b?fu1M^Fp)zsmWonHKPu$RP%|nswWJ#ffelkTc4zf z|8G_Ko%zl}5_1S_dosPHM$Cw`TC)FnnL3e9W8+KNzi7-(<~2jJe<`bPGG(o3EG4uK?YDr4ZKf4% zKiJ60Q!DS^O%RIn9?f~DoI0S_7m8-VdJ;3Tkg%Vu!!cmLL)LC9$=QttQ2$g!x1L>z z_7M^+c9Cc6N3k#3cGmil@ze^lI+w_u%)h>1^%Wz)pmRApAjQF(N&#Vvv3wom3A2yU1d7U9g9scY+jcNtTQmt!chDHBYGsfI{eQTJ)R z<}$IiU%fPwORGp@-wsllRYF#G`QoFQ+$sh@3OfW1f|{RN)u>Kl1!o6B$&B_Y!#b32FbVON6Z_LE zFhVAyVhZ-3HkR@Q@NMjGEz?F+J(<^ysnyGhnx0iBwK40HG!3k8y2tQ0mnXF`eM}uI z>GnTVkKH(S(mYd2PDXWg)fo2qTnRX6NnUwn9!wvC_nHXCwXR%__rK!ecK!n&C z{|dD;zFLb+;1GEkP*)w?7W)lye2=jVSfNVub?UlCwaA+Me^Os;9ewUoqt-Xate<4U z>ab?1x^>R9esfYzY)!Id@jhn0S2j-+i7aoqM+2D~R&R@MNZ4;n+Hcpazh%=ntnPAy z?7zKkIgn6}Q)buFbY3fF^Ex@#j?)MPhd!n`<1q;&NwqI3*?wcV5Gh$7W(%N2B$;Z7 z#!I$Yhob?r@$cfYzQ;kMfS1{&Wt<%d^k)33i9!iSLJB8I!9EHMA=^5Rb%%4#{&>W^ zjXE7Ud@OE%3M-)_9aazOgIUA8zl76p0=R+wqosKhTYOr#U$+t~rvP=|45wkHwqdhK zyV%Ovx=}3jzX|F4jP{~+Y_c9(v2I&+l=L}bB8;c*GHBaBDr*c)vVLDQ$NqivAcm)2 zobmP1l3}+;&*|@2mUmFUcQ&YFIF%lkwZ2>=4GxsEM+>xV3|ZJ?DeL3u%dgQx$-b<0 z!m#4GdOF88idnTuPCTkD6Z``?d9vWF$jgg>wkCZ{z^O&`8k)HZv>G;7+Hu*2TX?hy z>kP;Rtw35GpO%w2*%?j8=!Kjrr(5$4XfzhkZ`HHI=ySyQF%A^2^6%x>tY9Y{$3mY8 zYsHLpk7+%Yw;nGkqo7#x4cXFITJLB;NkzSD`6$ZdOTI}qtZq}z8u|JZN;xCC^R;ew zz7~CP`RWG7ted*}Dy>KhJ+0=n!W-Et`vH%#e{c<*MZQ*_U4}9;w0f-v*o<2!@|;>& zk2WRj)3SP-7S+bK$lSnkcoBXWL!2?we>LHnZm_$rR{_(PRUtMOQ|E)PskiHs=fE!o^e1958@jsXr9 zW8LtsJarY&4g@(qU}p?VlV~ zv!>lv2lF-;4R+SaiV;0;rh!*Xs#7cL!StHgtzNE*KiQRd>Z;@iJ_!bvmA&71N3k)j zn?Moo5W{o7=t}#3^qX}bvimYW@2vYGa4!XR3{0tD|50NigMXr(RMazx$Mq(`+Q$$A zE&ZaK%NNByf4@LdzEDr&eE)Kf-1$Oubj<2pW{{}PH zy1ih1d%QsdU(K*TE2|GD>PZM9r*??tW>0~YuZ_vs9Y&*r@V&YoY{!K4sugO+aG1mP zs|X3A^WQ7DVE+eLVOi^Jz7BZqE9*d|?g?qV*^!*pL719#!R??6=w@{C*PTtp{yOpI zt#2$BN3*($4ob$t6Q|%eg||kty8U}{YI8cOC+%bd^2RxEw~B?@pSF%?uEGHdOp5VF-Vn;{$Q~?=6r<{x z{ksn6TfyqIK0-T#^%b|DzXCQ)pS7HUYZ`zDX7skDsy7Z zJ2PMc>;uj>R5QfDDQs1=gCkG2Vb^kb2=^{!9B$CX-(RL?Mi`iVJZgfbCNU5nPrm&; zb2V}1u?rMS;5y%1M;q&Ft_G_mQ53`empB>nSA+gYOgeQaHS%R=J+jmRvK}ovo$N#x$67mY^7tV3Z)N~{Zc>yd)>{?aOg5%#V?uwWfpjuVidlGVwvr2RE*N*bA}OHFOX zyur+{y5x~}=yJR>xy%tF7OVjpVmpRW!d^%K!#dD0er_VxPXop3u?ZCHA&gjcalJS>YVv$n$Mtpx-VR2PYdCd*`vT#=WZ{Zvqjr?*W~jPnK4K1&xKLX5v6P zv7vl#C1Y8*e2N4^$DSfAxX&bdGz+MyE%MlPS^IJ{tJ;4e=Ybs+oZg*UQIFiUJJ}?D zUR1|^KBOJcUj;TssWF!^CsEE{$%R2syBtG2z!uj>oyGOhdI+3~_8F9E+%vvZD*#K) zm!@u5E~XAmn{6YzXl~p0qG#;yFZZTcLyAbVw}52Kg5PCYPdjM!)6u*-byaOPmfdIc z6wZ%ZM<(hpjvY}g*@`x1wkztv_-<2=+QT&B#x9T=+Zu=^nrw;c#jRAx4PdE( zdl~_bin*~aVl+d%M9J3F=Mx$2`lyk(UeWiNo%x8mxq&fBw?vHfQ8lvx62eVkb>B!| z`VJ#Ev61S&sTnLxJyimgwC1{H;-J2MEv*}NX0N*z#HrT6n4_!L*Aw$%!xH1!|5wNs z_CZ=<9X=0sWbUTI-YRpwc`CO93q~1kHaVhv-Yx62^-v91w}KrR>~P+B6`d0ffB42kXVSV;yV@Wm z1=}cXe>YScdyQ_hztB~>I`7-chOVtE<})|9M-1864E)W^+`NjZNBC-YG;#AtTV^E? z9$(-Q1+$`8uY;6wds89pi#Y^|97qtpF>aUYvY)@X@B|2D>*R!$pR@|+Wp#5JbgS_O z&}R2l6`PBDCi*6q0%cE3s1xS$yh^eOIPDXSU|o%=*uS@GdvG8cW07P$nucD1wl!Nn z23$dpK-{YKYjS#hF_NADHJy)xp<1j@nQG=HIem7b5LG88F%3)6WcmWq-Wy4uhsMIh zQoWcig3^37uy-IjugqqQ%VW9A51hUH0Lk`D$i)eNoYc~9mD4foAh;@-1VdjzT`nKc zBiSK2WBskMROgg9R0zfk#|j6Ew@qA{wA#_IB6e?OxQW+dB zb_jguo;ov^whyPar}m@|j@^M{E~;hiu6jMIWuBlGgQ*FTCWy3Rnh<3GgH&Nfbb{9F zO%9IKf!KeKoY@GP-FRo6mP^0APAjG##ez?B$ah0*R7}6i;U82Rn~fd$I|}h)6in-c zlG$3Mv=qabO0e-0FyNDxv{Y9=R2iH^+XoUgJ)o!u zF#lE%KU~YwT-ezN<^{&<&G$#r+bQktEcU#;&zLM} zjO^EQXzY3|GIBkH@arIB1M^-P*=FoI8&yZ_TcTPT{BF}U>{AhAjjZ*Spn_Ba)mIp! zddJyBd{9nrz--urs&8J3R^|0V`i2@~tFbwMpm?&hdbw$g@~&FF{wi81j&H-p6(GLA z(Zu2|Zc4049vnTHxo!odZ4SWoYgd%ijN@6i0(m4B8KjVp*o1|}oFdAVDO zHYEeKq4AVF(t)E+8_~362e5!#!aAW@f1ZkD_C!nCUPWI6WPPbPY1b|jbj`YO>-Fk} z_@=QfSmWv#&i42LL4%#DAE5&Tx;-Y=@b&e;ShYw&R%J%j9OEK69Xck*_vKb(pgjTt6Zqz_uKsYDXNXv~cZY(~Rop{HD)pyRyO^Rpx z*>gU6{=A(6MWWfik+tuRo;zocL?Xz{#av7q>rhl~1B+e0`><2bvJq%ogNjM)S38($pC>e5&1PJGB@J!5ifl$};QC%-Y&qEdf?GXFf zVsFX%^f(SJJzB`wN$|B35#3HyrFNy#;GcnX8R^YO($?d3B+3K#Yi-f216^%`h=Dlo z(P$=B!gd6?Uv?CNzcHMf)~zGZ6MD2dvpUn7-D7l)M~e2VW$ksPcS6M>gE^Cmq^!rH zrK0^9m@B1f^G8xcq^Bc*gS zRRVXX)o5TV)lNm#{Ojw9cl3s{&()u`zL&RtP^i{lk8RNED_NyUIn$jFCp68D>6=IG zI}L2)Sn?6`ZA(G4sSpdkT}kdw^+EQ^fjOx zMtjWu5@re%NYqF|nz z806!xRPWNPVd!xk$n+a`m|$IU8Ply8wKGhrbVkwb^Evw!O9)hx?eY$#V*VxH|Q7TqsrGuZD+G<*-Q0G&TxcwS%((QND z706WE;};kg-G0BrMSrIf-%3+I4#}m%KYueu>@!Opwz~Zph(hc)hf-%U5c#~dfbA!> zKO0eBQwLepeGo<2PXp6<8UvEX!Fy{Ydn-gzcS0n!8zQM;A(Fz$29eZeCX#v=Nu*9s zlStjiBvSS#r%R;X|4g<}v+ z9L8wA4@87vzt5BP*dI#o8tcnA=+X&H%~AUj7sXt{tp8XYq%ro#LdkR5+YGBcFDL8= zP3t6Ek>#?OlR_5rpsZatVt;(8BapE_?h0fehe}#+T;|GP-WXL)`?hN1Dr1MaCwHJ2 z1zZ1IG^rkm<~8uHw2b|FAa;-GQAizsI}8e<)95Llbff?SObT!gy)_`KN0}7h2znt!*S?%-Q`Lj-V(__+{on*Z!Hr)*uRaCKOCeLewMPdd=CLRa)#HRk9#^tk zi8e0T_eSCuBBi^*c^Zn}t6_h`1^^c^72W_Tq4oAroC3MyrDz_KA33{c9K+BLWm+)R z`Y{inHeuL$HP-u%?7n%3+?mkMk5WF9lE?mU=y(AzQku_)J; z+UiM2(T4LUe=~IFiu%o-pu+wr7V4PYli$PS6nmp;>LF+Z(h2bv+1Lg=bRU-Ujp&Jw zX6+A=+6D%6?4}6*4C{56F{=H#u-2_-%r_PuD@Ah|>$UZaGxJ)g7Ne_oG;-d|PR5Pd z4k4$@im^Wz8M8kZP35g;Fucz|S$8{5jZB_q?XG%a%kPd%DoML5ZFlFaL)QeE+XefO z9N#sGt@BfCHGT@i3ULUA;{hzQ_~jLeYV#)ZOm4h%9?Z-Gc}3rtX#rEco_LxqV8WZl zSIgOLxkzy<8hAq;nC`1lg;zuAnDNtXO>IqEZ5Z;R-4Pn=GY0eH)7V_^iDYfy1#1gu zS2`Lxj)Klv%x3JDhK(blRqHg5=P_Wv#n@f#G&9E|`OS>QwM8()?BA+R_ojO=WaHyN z_X@xVN>Eln7A4|2KS2WPX>9h35c_5oD1O^TrOuSI*-CAW=qrlRS%{T?E} zz-4%yc?>Ojs*$sf?WaPSec2wI2j~nan&VHu$ntwPweCEz8_0$JunA-Lnza3JXEy0$JZ`{LMzbKthugP)`rK|WAYR?F5~ROjJ9d1qkXmk z`r^QJ32=?9t~Q~q363v_EU0I$zV0gU4M0M$Xt0ttJKCfXb9KO@WVadnc-&eL>2Ylx zX_{6JU6kKDzIc55xsB(e6QdoVZ1U?1gT)r2Y4(=WG<)Uj&fIcWt#D^%Rc620o0D_9 z^9>p)94X!aF`brQo#@k&;9cy?tiWXz!t>8hjJ8G2w<*RNb8UVd*EwDT zEwOC>x$Ek|9!_4r5B;0EDO%9>)uq()H$j=5^PFy8VDw_o?=0L|dfPcvGg8{fG44%r z2233)jq{?mgc7^7?p#Z;70kx$_WeQ|{-&*w+zpZ34!X&*Q|(S1*ODW7=xuHpxzSu- z2j0_$NU@octdTQo^Sjs9flgQ#Ik$&ZYj4E7j&ZfFmm--5@(1&~3U^GLKlgg-v?J74 zHz>nKyY$!vqnMdq-{_Ihg8C=f)!Hb&W+Pn1&9*T2|3@ zW!-)_a{e$Xnz_kG2i~OKpLjU=Hcg3lX74z+m9@0B5riiSzM-84q6-7jP6N@^Ee7IH zBPSx)MDi_A+&tU1oK%Nd8{3pbtFhl~Mi(1v*4C5waNV`g+0a&3o0{31zpa=YU#S;B zqBD(UQj@)DITU1}5?V@(ZDA_8H$=_cHsC8sCEl8eb2Z%?8^D$@v#k^?XSVXdourt1 zGa0*omVl@mm!TUOChDG&LVH z6gqABvD^7z-ikiDD+d8Iuo`ST`4h6)SCYr}XX~IVGT6wO3`1Z)4J>7R5G{X{Pn6Vw zRIi>Ky(hbpawnxSJ`_iqAlmb;!E{|?jDwQJs9<-6C@p^osxaVN99FGQ$E{}*P_eMg zrA7gY#YS;s?O1B8Cwn}1Tfu6dSOJcqlc;>>D|rKBHelnqpuBn~blaCAWho zki_7F%XPzYIC+~|Rzipd-6kTsiGJU(bR5K)npW4yI!IA_Dx<;rif^T&FwT;9p0c%~(uPv=>##IE8vVlJ+=UX9SVLS{n6(soQVOTvcwtDQ<5hK z_<|&uNq>c_>d(_1M{Up8^I_OoJj{t_A{>r3uAG$#3tFZN3)Z>9f;EPvo7U@c|FP}g z@FbMJU4Nb~IGVq{fD5L>h5w5y#JKQPWU-C>LfP{K>BX{ zcvRte7}7NP0-FChDU^J#lzCb*x0TRnE&tonGg3g_@PwRunC-$px*&%#2aVp`Nk>G$ zx{FVIm5UudD*5CNRN){G40RuQ_KPFdA>B%5tjX-*@%1hGftPhH9L zZ-XL7ajByq$2vDMHubEmw{nTZpX2?2piF`_xPn}Q_2tDH2q)SgoM3BZk@rRA~=8eq&yXLa2K?FDU+NjBaq z1w|W}4SwOqdnKif6ci+8GBpJ$+%NT;Qn%Did}%3sS~{&2@J!e+Zn8*9|8YbXW5>m< z6iFF4DGgwk$3+%N>1jiJk7^*EAv%CRBK4PWlSNXFoRp4$@`#<}*H|mZ9+_RH;c5=@y=GnzPyP0P<_v~SwJ>0XG zdG<0-E2{xaszEEO0Zis$HE88EXk|5k$zoUyT6qmxSq)&a7*>N;UV~Ov1DGs^)u5Hv zpq14CCdF)LHGs)HtOnb84Ysoyz+^G32HSZJwzC?*WHGD;+j$MPvl_spm^};(CVBR< ztYMO;WgG8OSlr8dYn#(uExf;Au~>8hrE&VAg;$>}7RwvZ;x>-=Y8!6v zliG?nz;MSW)=syQVtqKfSxi|3g|&HMZFF~ug&i*oj2)*_K~j*lKgV|NL-=tg+=1(p zc#+2?C!h^=qTEGQxDREaBo^+#b+${LCgDZA=91FcCIXz=9UhVn<7|oziMv?Hq(?g^ zwGDL~J{*H9)=9S`Q77CqiFHWa;wtP;;87lUl-=7YNsgr)?(C2b zccKRT{yU!Gz+(jn7@}L(@Ig65A_Is*4r+odz8wHVv38&r`N`M-kbe@Au$W;MGYk#j zU{o)92tCd%(c^ssT~eQ!A{~U-0A2N^w)4BblF~=F6%p-7u<_gkq*@X)l>QEAZDLFG zv^N9eaO@~HZs{0E1cvIwm{&QD%@HL@!d8Ylr6F^q80%yLI!PG@p(2q%Xj5#^yG9`? zCs;R};2JnFw>uC)mo6n{lKO!ZIyIC7<|dt@>(MdpW)zB~+(JDK!`IdD4Y44nvxi8T zhwfKO9mp)^d6gknIRs$(;I6-@CHC_n=_Kjp6HbQ&{EY%hF-CwZLNP?@@9vBpW-f${ zxq(M~p}04}Av=7KZr~9&l!z@hDTeqZJ3d8dE)S~3*wCaQ!7f4@joi2q&cja)xxxNU zQ6whn#{(5{DBF+0W)loHFi2WV62F>@g@Ud~vJSy=>^RK3#$A92I@Kp(KG22O*eT5H zm^)_({?v(Jq&rkBayS?{EHq14WJh-}mMTKeB+$0dajN6!^jLaQfyW*xPu$;)j`Ziy zl{H6oiJMB-Ae6|sCq_<;GaFHC8b{5f69E^y?TkRSE3mXN5$fy>U9^=r3D~Ye7o{cT z_+jZd$SS(`h(UIqG{69%6)2ApVo92qbRCydJ_T#Ng9}(1O3tfaa&^j{B|c=b{u;Z&Pum! zu`b}J?Di=|4wOX_az=MlaRT9Zhox>E3<9iQx;7d+%YcxFs$r`sE-VLK`qb3E)wmN1PmihY>s2A(=1E7pS3 zJ16>ZPNrXwr44y6tBGcjT@ zRU8LSZBj14!Obi{(2RGclB5hF4>ch>VUb_DRe8hDs?YLb74l3|5 zZYzgMd3F^+avca7#i}Xl2yz_CKpwXnByK9hYF5uk+{B4Vw^MOuGD`uaflH?OGs=7|2XG-)_hINod=nr8lN1?b0dQ1|watOo_U6PPo zhtdlUFA+j`7$e5qN*7eUNG2e;4y6Ojn$$$GdpnNMiH^1*NgVDS=(!~FjRC35^NX`M z&-l9@1spz3tQVvVq;UOB;-+%E1fj0PP31@$`X&-LF~kiKB0>+)O7Ld2 z7sKb2gZefY{D+2bu+lIuX( zoVkzE9S1r&$F5tThaCqa(tz9gHx@#wus-=^B4?XH3*se%8bX$v5nHDsGv88mM;Vp& zhMZd996ziD*d@R?=KaYFl?WtIK9A*RAw`N!%i4mn3*RAl)R_wW6a`bpAjlp+Rx(n#|pq~Q_o|pzR$nVC-P7wX$r6+RG?=SO) z2JzCUKWSTDQ~d${ZuICktlRP)^+$3p9plf%2D^RSx&V&u>^LC@%Ny)QM+>(PmFHly z#cja=^+0{z!5=)_!WYO^7oP%7xzk%fC?V#}5R~LH4v^=LF=`RF{DGNrv=kL?pQXaU znuc;3?!spXD{>sXo^+Nl_60AIs>xLU+4Q9d?sMuhkV(c4v#aBh?T>Gq-ISU_D0 zq$miyh1*K|q;pp)c9bqlNo9WQu3`&NH~=#P!C)MCTP$%9+^t`1ytK`F`B0bAnrfe6 zt@zdyddC|8-`v4m&CNQw2*BM4ht*U8I2DYLzzKN<4yNb__5(N>fYkzw3HTm#`zRY` z)7mWIQY0--W-INbw4Ri>N#MA3GXb1YIQU6G-6MJelQnoC1p3b1Z81Sgxfnlbk;H2l z2Eh&W!?ag~L07WlH&BE2`P6`>C~CkG3T_l8tJ}e-N1)~&jC%~wkh(`fY%t9)A$tRj zd)EC{^6 z5Qm% z!JGh9%vGSnJ}5fj(13x-oGoR+KqOOP9BpUT2(*~Y!(;@$;oFmotJH4RVY07JoBIa0vG z7+Nf|_R6)uEW`h11oFx-EsO`w#c2U-2OBa=gai}DkD;S|EEuA+jk8A`Bw?dZU80+| zCkO-S;S*_w;A!COv94**Je1XFm_19ys^U1oJIm@|on^7}@zv~|yGK-LQPG-VmeQ5t z&sM~G+;=M=KB*Kqoyo%XYL^5LQUJc)+J$gwX(AEm>=Im?vIuvd7vw|7+~fl`*`rXj zqj3{9W;PfSnAv1{rzW3^?z!o1G?<8B!9a0~I5A}LmBDJtR!86n0*8Xc<2hngFo#>| zLGWj3W5pJc#BLJsalG6U{D6NJV2t^ZMn9AS2^CHzNF_)h<+zmLJl!|M<6@l4q2{3E zQWoNkds`;qys-iDTR6RF(bb)EcQsBdhv4O1>3Q7k-3cOEL10w@y1`S|@zo%$jzO6Q z+cjB%#Y`(Vu%P))z#c;<$UJ*YD+b;wJ)Q-~vH%anKg(S(e;`H(Tytg+I-Dmiys(ua zyw8i}&K^;O#M|fb&Pp~Z-19OpXNJ`=U?JSZV zG}D5>Oe1z^tSbjrs5s(rh*t;>*5^SK?%6^Lp&?wj5Lk+JKsM5&mJsZ@mB9kLbBA+^A2H>AtP1v=A#tpj#FS}a z;MoH331*Ces47WsRYFw7Z6UkDK?-aVb6L=1jx1|hI3xHS9!N)!BjJVurO(rAuE6NI zt(?LFrmYxsuH<(sZD}(rF$0((bZ+QsTHpw*9O}xv*eVxtufQS~8)?_v8!0Ammx|Y< zVx7)wQrN)+RzG8e(xc+mr6D;MSaliTkeKd{&1O=Mcw>@HCeO!uai&8iKt;_2gdCvl z4)p*$3UZ402bgXZf|Rx-2`jm&v}1_b8%L7o3S#~^;iqB#IMO}Zly!K}>z=p)^udv{ zRS26-1VLVglhD9c!EH~n$cl5Ni-7?KO{)@Ni!*AVfXmomj*tni2gId>jxx*fG9d%V zV`3BY7=H-kCD0)X{g}CA4&6{eB~*i-xx(q5xJR)!6EEoyy?BWR`F)V?;dUy-dSv1d zo1|xfaei^zk$|%nb18VBxo1!)yVxBYVsBMT(*kHw6u`9+63&1Rv=4Y(AbrSmMa|-< zU~*@72St3zpf~)SRs?;R_@p%kf|WlEf)x<-JH*Qny&&lBC!A~vhT%XMqYgqhaT@{H z%muDYLd}2|Cq)wKitIT~oD-g#t+gRD#fU#n3UD_%nLC7C3D2Ike^x-dr@`PDo@CUC zuyN*K#2p<4zgy{_)Kz*06dVzi-T`$EhZ%yE0lLM4UI_M8SEV1saX4(;KX1XqS)t^$Kv}j^mXBH+Q@G8`LtbFZ*N zq-P4^E!IXaRY5}Qxq+Jyr5@w$9AYw5U@6nXfRPkRtirpI_rzTiv^qM!@3fObr zZf8`C6nhDg8_p);?bVWUTBG;gq2|skC6P#was_{pii&XbYC5=LS&}3|37?kiF#h9- z6oSSR*mYzeCH%<2%SB4S7eZEqJwj$HA-xm=`6hMf^x~DI!5Qj??h$@a3F|WG-e}DcNEXgeKk2Kg zq>LazGZy|hs?8qWkc_w#8p>w)Y?KOcg@(@NC1>9%z!~BS8*vG5jgu!wm;@9{3UGyp z-6sj2pEORs&?z07XUu>E4x2n=pusxpQL$3 z?}<2juf+Z#4BCqNFOt=px;I?^XQ!~IL$KYHOaFaX*yW1s5SJ`gG}SW0`yIw{u=!iv1s{pt?SVgQy8bw zIz;a~VN}c*sgQdi(*l$>tYZ2>c(3L_$1@WiZ3J!@(1HW;iXR+U2F!q#e+E5@A%H;* zJ&xCtD8O|qUHI3XN;i_xPvMmv;txnURTnnCvyt8# z1IB=;9yNPjjST>kM+^&5dNe5hAq~o+A2}RY;Xn{-&kSH#BVg#Dz$4URW++GS)G99N zQJ#|D4bn6#(T^N>4~yJn0b9^8%4C3<02hAfZV0BB0b~p=Qf|SF!k=;s<)kSd8aWPM6T1%wSFo0rQcqoKevnW?(X5E@8}|n1vx?rg8=(2jZCt zDPG=rv$esyoHZ8 zY`+^-an!P7U~!-xexEP0*B=LuFRBlk++I5J1tQC0gVFsde_HbS()L52-OHGKfylDh zvS{pizO=LhdfwyyICy+fLj`{v`FxSXV9|NGkguG!2Uiw~@3GTrIg#&0OiKd!c^OB5 zMC!_D(M5e2rK6l6{8k`8zz?0Pbo?ns;4NTz1BZ2xBOLA$yR72+#XTH1fUXw1?>^#E zew^d2?a-S9o_xzKz~I^AZ@{At`>6xE&f-3<4jif#awjB-wL^^$-ZsbEMlUzOk87Yj z8aJo%*l^m9pbwo#6=P0e_~-6~2m`4jl^GF;OI_0uSGsiNl7<|mhnh8HRuF-vG-y}T z3xnWK-h%r|iHr(VnyJVv)rU8L?g?YsBr*D(eS*Dpb~$uN0nz;ZV<3dpU{#Zm(g zMsi*Yak%@sd4F}|Q3l{iLyY>M%W>4|ehe0WX%ft~!Ae;90B+2%ry9H*2anTDtUw{h zPI#9Xfh9pH0dy>0Vgz~2o?=AUAwO9#G{~qMRCwsL)9()X4#eY>bjG=xsPy-N^aKBn zC>2RL)hnIC+aYZ3Q0;qKCHyHp+a>%dy?qk?l-^+pe@gF334cn*pcow0edQ6My)=&E zU!g!Xn!h9IT@&o-bFQ*Q1V-*N1Co3} zy%7@xybpG}x1X4X&<3G#f-Z!^_fXDEPEJw}Le?OK&fpRX#uQgT=rJtducXyM@;^uL zN1m+zIu6~L@h;AgQnz1C9QlBMBkq%sObaEk+djw{)c~6~o;rO1VA zGVtJjkuxgrKu_MUBaej&a>BXHLwqv$AeJTv@Ybw*wWUvmo+%6>DvAbNSj^Zu!SnNW zO!%3OiF*qMf+^(S-sc%efhch<(U6)jlL3%}3zV>jJ2#MUwbn30IzZRKtHK-^PGy2R zwm}8kfPO8Cca&_|bqOpXC25xNW>rF!ww9UK%ZV92`8p0(-Ao$H0nTM zWx#e1Dxu;3T9Yur)tFO;N3c9Rm9$%OxHTTomLuge$c!`Ca-f$;N)E1$LwiOq;N}Vp zrpiFw#1t98r9&@~LF)$tLk6*=aUqrra;C|Ng9j!wGb$>8VC7(mkU@uUfo49kfmtLc zGVjSw6F!pcsayyJo_qmY1`MY9BYA2+N2qO{Iv1w@2(1AS$1qdmOu-2aG#tuI4UL8w z%4k06ufgaGrU(L*gP|`BYr&QxRhIbok73Qhz$D27fu_zDdNd@F6}`{ov816V`PKA{ zbMSf!dV`rf$|n^9P>Lv#8KBXz8!&^YY*6cDkaLurqs$4~e3DLFVBr{lGDu0z(ULo< z7jk%Q1cq`;p>)o#{deZvxpNXTlr!hgpZBm0oaH(l=%j0;^x_1On1P-|k9k^Rq}b+a zw~-#3tIRf#!DUlVt?&3K>LfJlNDmJ!a`p0*A^ej_>>r*`kZDBVOcg4G*tBq5Fhe;C zH7yK=Pg{!)32?N^Rj{B;RVaFzR2@(aaTP?45E{e`<%nOSiKqrbjfBV_nthm5<=R$` z{uJWCR4fyDQ;Km6D-2~28llq?I~rUVSM0k!?Y&`joCJW5Vw!R$3rvm~%9#RoaAq*A zBCKDgZr4AS0{fZ_nj>*G)ymY#NIL}Ju8IgLWRz)T_*61TGVJMBk)Y=6vP zY7glAptb}4=YzL8gdPpp)J~nslok5p;H>&I97wOguUvq`BO2@H?rmNtPh9_p3P%$BCJT^flnP(z-PaY5LibPPw zf|MXUO$f-yeS-2a47MvR#|B2@BBav;1y93ZVptNIB4Z&r#Y2UdIX;;vm|_em3dm}iKomuL z;!%F8xgjLZ#60G*O*%+&;I~zjUowFwW}heZR89p2fpo(8M1at98Y`3L=@7?P6yK2$ z&6T9#u{r8ux&)0=o89LVm~$J*6i9*G*DtZca3lfS0f(Ir#YyQTJ*w&W7?H?c$8-Yv zPD*_z-E5KkH` z`NNN5?C|I&OX@)2J&gcJCIJy5wFWwj#!Pa=A_0N&)uH!2Gt?oFq}Y%6n>!tu61_$! z2vd;8Obi61q@U;=`ZrK;g9<(F5T2wj&UzLG$i!~yCiIfqTUhRR*-JrJWB)uV1X7%u z9ULSokly1!X6=U@>L_-o?F`li3?gG=jJS@SnV=&WH;F(sLz0QdfjI5nHY~Lb69%Ak zI5afm6$7qh3GYj=2U1X-E@?o>&xX2?56)>uLc$uB_=_{ji9s&BLl_j8IGs+E^r?1E zH9CbNuQrj_kv1Shf=oEt2gD*NqK@{H57e2jtKdU40+^z`^Uw&W1-kl0pe&M+tn7tO zROA?;{CKAkSK%C|!hxOKhE0g! z@l#;1temQrdCQ`Gg$4nA5pEJzR{_Q=?)UkU%n?Ts#9>du01bDqltYKNOSI7Kn+z!^%IR%AMg*n$Zs1jn45 zDGw!D(|wGSOQ)xYKn(0WDM~vHe_RyHS~zhr9UbHF)vd?*r(e-O^c`9+*GW z2kfXk&?=yRo&v6kmt=aJFX0jP=&29d3Gjj7C?-`2FGDB52LhFJ@gk}Z&L8Rr#sfL* zwN$VKa~LNtW9+Vhm|&vvc5#jzvG}|kpo}p}Z@>E6?}Y^b6V98h(`qqPDvRhDw@votDp?azCc^IDfB}*l#SW=^+YngHecMG3{aY1g@A9j2*|W1&9qC zo1|bA`kass(`%E?o0HhH@el{`;K&k>bU20ZP>}~-Ey z7&Kg205K*wcH?plr-xuaaBulx`}5p9f*ranm><8+)0pCgOzbc8EHTlr%vKn3#8D(1 z;0#m3gMUPofRRw{cL1=rl!5p|lyTG5-oe&Jw?@G|qx+y>+4F~Xv1Nl$AZ|T)=#W!E zmk=;CDTl$;@`azkEm!sy;|ZMEjx&|WPSeoAlqrCO=@5tvA%XPl5m15-kPRfbcLG9$ zcR_Kcoax>#MmGd}#rN<`j@&q*!4;r~W5C8Gv;xRHd$`LO7mQilAYlA>Fzux_QbUbr z!Cj?S8TreLOu-|AhYE2JkFY91r7%Nys-)2Uw!=dMq$5T;=8#6Q$U$J*}0L*GI7UlM4xXnL0<-QYsC>>Sea<9b4arX$d1E$?N}vi)$!2`Bc5HtCDl z?L~AWYbd$-BDeE7Fg;?Mm&ya*+h^iMAT5~xE;n#`F1wHmk9Ml&<<+uB1R3nU9PJyv z*zH~8SRWPI*@7%V2!ho0H@|fUf`gqqtv0Q#ys@*?cQ+peJOPRk(&+*79sQW?zIsiE zXxYI~6SgVL3A}fHV682OK^M_}iN`Uu`K4*u$$7F+c1xt^tVqia>RX_9Q01K)80&9- zfIElq&nf1e?GBzT;cRo(p-ZZH%O+_}gHnC55tpR(u&%9^ zq%Y%5_h%Q%(%L2TB>T*tPbix7v~;cX8Gtl4UmIT4{QdB?&EF5LZoU+1Zhkhjw)xp` zNAtBxSMx!+ulZW}k!C6UWb?uBQ_UB`?`ys@{B-lB@F$xug#NHul7HU(edQO;Qs|e> z*M|P3`C#Z@o9_($d-Fl%|25yK{Hpna^6TbH%6~LJt9>hZ`@+f3xxX@=rE?U;2+tcS>8NP-t^#ODMcC9A2_yNp!OHrj%dd)T-m+!phPpA~mB=n6g*I>A5_Uewls?tsvr2r{ zuyW)D?6Y#^qU#pb*Viv%pQZR*h0mVGB^#sBmu+@FyKmTyYHZyqZFCDPb5yVL0@kd? z=rnqM?oyS_;9Zz9p%7>Ztg$UF4DbZztjV~2eg3Y_DT}}*Fs9- zOMl+yuFz{jZw$RH^nuXFLZ1zNF?2C>x#I6Dp|6L&6Z-4Wk3&BX{Ur1+q5lX~hvo2s zuz-(-SGaBpTNS=Od_#D5_~!7T@Id%f`1Y_C&W20jSBCEkzajkA@Vmlx`04OR!@nK= zO!#-he;jTJ|7G|`;Xe)kB>dCxzlEi$+NuRr(W(_yt6^`b+RE%*RR<8>UDaPDRh_K5 z7`me>UNu^ksVY|8h49x@y%FK{;fIip(q9Zcg5Sl^<5f>G`~6kV!2U$lZ^8VXsz0py zld2Oe{JT{@top~QUotnr&;9)sV8hiMZn0y}m8!vkYpQOlZmeoV4$ajYtHad?t6TBy zsUE1_<3OCMjyW#1TCY9}_qpl|FdwKML#nQ-hpJCjJyKmCzJ##%;`agk`1hIWPrGgk z`Els;0l$Fb_E)OEUj41=pH%;{`g_$ss{U1VxTdz|Ppcv|%WJN!xfohsqoZ`adQZ*4 znx2}$niDm**Jw4{YO*yY#J-~D9w%O}zNhK|xF163#n1>#!&8=c^S;$(r9_ zsr>a4sXkZprJ6sg`9#h4YJODnlbV07`BhE0wzl?LP9BlkrL_dvRO?TBF|^k4Z+7e- zhj!HNuRRD~4};GH>Nik(qE@TDoxx^nX(Yc87=68ZQ|;FfQmTC=VD77Z(8={;=q=2p zR)0PKAFRtuzW?bSpc(Q%U5A&-f2jvv>VcPf;D37$lyJV@Qvrv1gq@V{uFbHxPgd#G zcd|Ws$~j9vSo^Ws*6PnP-TCezX9_n;cvsNL8|Z9{$1??*#B5tTlGr@cQN$u zjx8_v-`=k;weO`Kc&P_o>H*OMjbJA(S@15<&og~jy0PmPY*^5;VDEyP7IZmbhZh`M z@W#;T1*)@e>Mwf#%)Ko4vJb!Pr!c+m`j@9){?yAq`SO2zc{oC$oy^R=?5@aXBfpC5 zj~1gJi~cgYxh_-pfx3eWFD!g^;qwbG$(Q7t7m+Ex>41-iKE=ZRV$sUQw=aJ8;=fqD za*2R`VfO7WrFZ-Lh4kP{{r5t8%}ev*`|sULKKLT$@QW|sYs(99-M&QZYr;N@9f|1n z$pyrZk;^d3yPf^&ffv1RiSk;&dGvoDTHyD!gdbUO(GB^)g3EA!jQKyi;PY;{KgHJ< ze5FG8cM$g1PWX=&{L_M8!2Pcao`+dmRkQGA3mX^KhnFv;I{hTP3idkqH!f^tA-kDL zahq#zM)*TjV^!U57;xl;{mgfA;T^uvi=p_!QRdGt9IHAH*9GSLRn-Fls0RbSi=nqI zyy%3y2kG9s@acsgh5yrKP@?xPhMr?Ff4uPb9Ed+%_?K|~pd$RkfzkZw!hfg;<>fse z*T21}Jf27DszviDXEvDYkjo;LOZ|(^OO(@Gb@dC%t9jAJMcY_PT19(&d655Rhi($3 z%-7zBeA@843BOMK`W6ksoc;Ub&@GF89EvR(S!B!!J9|!*W5*Z0sx05xM)KY=*vffc zNvMC-zhO~J_^pfHy67?3SN7$&9Hk+Aj`jud4dQp!w4C+o_b;L`%~XGA(MJ~z)P82s z=P)AAp`BmywRO_vuoLVH{f=Qj=4m+x{f`zItn_c82H#us16Cf7{|8nl!Ryad|9sKE zFOn8lE#|vA!7N##caZF-UEUrgDQwrTO^#cSDj%VPfhG2|`Ycc&97V*mT? zSA^(WCzXF|r5dSLS^%>=#_z8|JcnB-EtJCSORj}23xB>)3Q5)MSB?MnI{jNsaD(`L zl~TNr&%$F!`E^SD;?mc>ki!2{(|CP4dw+XyK^OHU@BJ|A4c;RQA6h6q!~7ISBS8Jc z`%57g;`#T=8uP+>+biS6ruTB1zl-;XA6~S*l1*@x!bO;uj|lPX*;8`3k4XQsUr~Rm zP5H+k!sGoR<qR{imgN7!aiqL?{+=l#kG2mho8Yi~LTn36(?Zm%gjn4nlj2w|fbfuqlU1b(<|rlhHHj*?ya9Ky`SK z)r{N}yTqv{_fd%d>($ur@|RS}UHSZ(Z|Fw=NI(85&)*BL6fa`^Hs$cbKQAV2rFN9p zWd8Zj)egdygCFkaCCrsNm~y($pI*4h7WEhQ^pyUPx#4-99L|IG_oP3+N^XCu>G9=# zL^*rk>G1Ol5q<3CR-UfBe`c;_Ib?ZGv-xLEJ9EtR{KSq+Hqm9?N8}=GFXqZ!yw|;S z!Y@X{iy_x+{WbsE_*>?0SFo(PeZ0g=0YJZR=Gq35%;1?lb$M%ff6aG=@YFnwFhw=W z*M^7}wt$<>u9QEeulx}?&kRvHod~`1bW{`mW4s>ldqiHd+y0uCyS-J)qfbe}ZAb6k=Xd`(NxQ*oQC7cV%@D z?G3hYt~>~u_ku9_tmChFsj7 zyKN#*k%Ie$Z}#-%HKeq>Y>{haThz2Xz2_IT7a<~_V10y-p!^?^>Pl>XiT=E<%uVZ% zubs;2W{aZ~^NANw3&H2)lB_FRtqUM^5#Ktgp|-KM9ygIh2-zfkp^u**hYQ10J9Z{5 zz=<~f`;1fDu3@{c!CEYClw4&A7Hc=^T}_ZQ)P7T>SMAZhw7v zZD%%x?CFKtbIl{FsW&RzRjD=}lo#u@lE+eN{^Ky^*t$r`%jCX=5s{0C_1DI83#fA2 zOC?+!BIqkm<@3{M&GZwa`4HrJ522>qnnPl=i}u_E>Vt`H-&gU4#89UL+5f+oq{m_d_|3U%?Qp9FY5H4Ve?v)=j64!JZ2`p z*A~k0p|ZAlvC~|%-sca^A+J0|SqZ40_wmPxP>$UQAGiH*{`5hp`T0o7i?8TS&&R`N z>k&#L(uy@C?Ag*)jGMW(!Pd^tcctSpbLn2pOeG75N+Tg~Q-blwQ(oSO=e)q}7ars8 zOQKK7CK$h8gaz{Ra-Q8qwF}l{Hh5mkna$bK&KAdWoDD+6&0IFc%=8hdW{R&IKA%(^ zrgHl7P%#rcoeB{$(9AhNbUlsG73rDywI?dMy^^lfMOrJePqU;_?z4wc z|IH4uWL8~j(&(KzJ$N1A#a+97hp8jK|6Yo38xb89I8!^0s z;Ap4ucEOq3H=meiSjj@unU&AZ&i^(&bAD1g=e56I=j-OZK{e+)aIlZ13iIRr5`77d z=0^|%nQy5cT(CU9kHh#wf^HuFkpRbXF6!Hh_i8Y=%bTMf?DT!(NV-%}XoF z@n~FKGKonU)6QBIid2LC6q%1 zN0;a0FNK#zCWVq&oj)ACfom`XmJ6P&;UmNP%=8W;(%*{ue#+$+^mWPP6 z6t2#*m9xJK>#c6j<+aoA^5Xrj;0&Jb^TW>1Ey^Tla+iNZJjHl!?kb0!%|AWo*`eoC zmVlw0=9|A)bI~GyJ-l2*-oo}n&FvPcywd!=H*H;+PpV2VqV*KVa}`h`hU`oD24e-(?6yA-f)xJpRMeXCkAM~Ba(_7#`TdYV zcX^vCrRHIk(upw1X}$21O&`CXkB4XSTxU0f>4U!6Q&OxSo^7KS!%p~FVa-x|T{CaV-xx5~l4a$r2;Ju#lV#{3ux;#AS zC+br4axi9YpU}ye8*(-XUeDh?K%Vn@zKV!+W&&Z19!i z7Sg`~nCIt8U`3Xd(|Ac;(Mbaq$>hZ?nOa z@6y6A`b+p{w+VVKh}q*SuP85#sLyP+2R)y?Wj-)-waQo>Ztk*0xja2D&F>DzQ_S>F<+A;u!8HDuO8E)sx!{8FGx=uj z15wUQcBT0~6YPA$i7zWo_!nwZ4wTP}{Ra25>At!07j6Fa_D#~)c6h)0eg0-&IKlKf z{_|zwB7Gd;A4K}QVORQny)5qE9skA|;Oh|HeQ1+(TW|39fIrOd2HZEw{N-t9^Zz~4 z=J9(Rzfa5-+uKl)via#(7S zJ8KWarK7|PwbwR(7XMBDvr0evRin%yX+iCm--kf{zCpaV16P04EEw$G9$H{Hb!dK<99QD ztMF^W?;89DrXsaR@LP{xCw~9BAyV50``57l7QYU-H%>*CH^Q!)lG5FKJ{5X2Buk%L zMXleq{ZpY@jLf4x^Bb$$YM%kbSJ6)&hyBm6KN(V_uZ4aI*Qem>3VjYRpGMqI5%O8s zAIBIx3;SE}KL`6~p+Ss`EPWpSFTwv!*uMw+I@aggw*L+*Z^~!>U{z=B!+`i|sI&I% zu>TqMBTlKEwU0WbcGfibU^p`?U!hAM#3FfCmkHLH{^aSck?R_NlHTXXsdOQ5BVOhG+ z)KuUjU|)dU0Q+v(*TB99_G;Mo!ftj_ zbk=S}$o)u}fc;v;#F>2o{ijvkQx&PbvuSbdLrq_eEUtY^)7M}=-1K#rZ*BSp%(pfD z3Cy=QeG}$8n!W||olSoV^O2@+!+f;q&tN{*^c|S*YWj1S7n{Bd^W9B<0rT;u@4C>mfXp~waUnygAf56uMwYZMd(H9^z`q$Dev zpg@8xC@2w>AT=luR7$c6C>8=Lp;#g+C^oSDzvrBL-o5Y5o3aV~fB(XJpSkaQ&pqw- z`|f))gYcF~e?@rfq`x7&ZPMQn-ahFc2-i<~5#b$^UP5^1q<YhUNoSrfJzq*^{#5!C!atY(jPQlh3kd&G`U}Fpmi~%x_hfrAjoRx#_=e)TE91HAmEU?G1z#hi}dz`-kSbt~W%SnhW4q_)G_O2lI4#eIa#1~T!(QHwtVw(o%LJGu@= z3(cav-q^UlaV2IdO1&QVLf{J<59audjRzr3KGfzZPTU89heGHm_&N^3JVvviNS_5; zn_z2GVCyzWUtw*119%zmGHdHL=)1yx$QH$kn`}|2www-`Wew6Z=&ur1ntfMre%7-# z(s&T!B2Tdl(pd7RuCgB)RcJ(zkLsfs>6ehW&OzzCgwlB_ zD4mVS?^<|6sSg5w3iwmDbT&eEt^JTriW4_^Pob8M>X=_RVTXiS+c>{)cXz_{oB4%9 zaJ|>G6|j;iV8kt86;r_Kr-0Q@0jr(@RyGB!fC^as6tEg93}Ei;|4PDKjJb0jU)u^8 ztqWKY6|f>IV1-n`3aNlqQK20ltcD7-8d}rXR>110un%}?{$EpCgPG#0(p3n*RQeLa zFPFZI@aodl2(Kw!gYYY*uOR$t>8l8@EnSOnZD}pSua&-r@Ve4<2(K?)kMQfIuOs|M z=^F@dDBXZ?U1=S{8%sAL{ATH!2yZIggz)Cl%?NKP-GcDe(ya(@E8T|h_R{SL*O%5K zyrXmn!f%znh49;@ZzH_3bSJ{QN_Qc=yL30g4W$hT?6`%CvDe4z9I!i}Yk2sf2BAsi`Bk6vQu+zPpO$`#@Moo;A$+v-D8kL9%?KYWJ%;e{(&Gq! zUivx0UzC1<@Ry}uB7CCs1i~$)EeM}1J&EwC(o+bZE9+{CmbN1NUFmlSpDjI$@b{(PBm6_@4+#HQ`Xj>UO3#(3t)6O5HHYwdD$lB? zVnu%l*7t|tD(R;IzXhMu5TCgR@e_ye5LPPj3FoQc)%%FEa3^pCK4+QqKg(&Uf0B)} zQXfps!N1ea!Byg?0Pl&90ur=Z2A(W28#lF?!$CK#Ot)Br@Q7-KGntnBB_#9bNPnHcjt5UoXw zc>?!HXCjBjr2d)yC#`dgxdIZj!omF<5Up*DSq((@Nyf~DEREO3+>HMvr_t1y?*Y*m zZOp9}t#7=I5vAVL_3bViRgJk1G#Ov-XGE#r?fO1OBpUO61R9}4WoJaSIF8W=fl5GBdpN-#RNYgtzVqw~6!cQrCPziYTF$>`%#h4XctGZ})V$8~})m^kQG3L^)E4ye_V$7$zKHEhr5@SBo^|>xujTm!T*XO%v zC4#om^@T24g`m#6zSu=80%O*6UE4*g0b{P}TH8e{0b{<@^|dZq1sL~G99U0?5_nctYNbbX_XW_@G6+I2%0&H2WB6QxEoGIj`nX!bGY&p`gMSK}KR z4{3Z`c*Oj=^;R z^-b5)Qy&2RBdH5gm!vL(%;)jBCiVN|*AXZB&A5I$br<9)eq`f)toQq=NBH`))DyTq zo%$WZKc!ww;f5zoR-4mf(mSMk(z~X6)B7_;yr~?{VXh<6N2K3U7r(FR`1JAVx1`T<+BpS}j+*VDHkJSTN~dPDlY^tV$FBK8w}9>Zr# z`nT!dI;U}eeC9O03E`pm9NqNxropE7Hhrk+V@($| zeX8k-rY|%d*+~BkePrXUP4X|$KjnXc_PwqLZ*6)G{~KKo=gZ0S@1}-KI@6Ll2QBxU z#<7{nnV!s%jXU8(=kB8*=euWo&&b$Z*PwyWEoX`5bLRJgd|^!7#VSGPaYenj*5(pyTO zz^?DlOHXEt`183Hxr-AQCm!IC5S@Pt#e}w7p020nugU)^-&HuOAk=y%ib-gb2tJ&*3nVUT9cnEzfdw2H!>u+WPvd0J?@GNU zw`)KlmW`d0`#7Udih-ytE%V~3+H6k=FiEj z%ios2yC$#mseW{S{-KE8MKb>Ojr_*;J1aazVm!1}IF$dK+!z_vRtfx<7-VD zaWdBzE}eSmG~vH7)b6%6WivA}#Vd-d6K3V=l?aQU1-f!B-kqj%wGW&MOO#6^xnCO!!z1ujH`!hn0M8ZZ1B* zwuMI9tsKs1UD~>_wfKCtO-A6kZOhs=w!O%)Sw*5P<*>MACC>Kb`r_82d}nr6`{MTE zzcfGfURSqoY+u>9+kG#!&n?L)b1CacnD)E*+_Am-NqH`{x7~qH^n8hF`*xh&5l-3U z#VJSGF~#TS;uAfWF>T|R?AUP1LO=d!F*tVvqK|)4Ib1n*^VoXJBaY7m?SBsU#Wr7`^@2n6a50yezskA6gHAmOcSRh@a;g9o8t%_|bDe^%=qERgTAz%M@9@?J5*H_X5 z$+w1-f3mHIpwXAR>PvE|N=&g{iMnkE)mgnhE%H1di{UfLH7<3oAzj@m{EJwQs7_w$ zXxnn2QdGV!C*fMBG&z)mJR|#+EmKP6qgq;JDNRu?%05wg z)DxG#urKj3$(6`ZuPe7jX+mEV^q_cMJ~d7+X(~U6=Ibx#s7)#Nx|Yl$wpw0#mE_1m zl0TFSI*CH3_@A`1lB}|v7Ud3Kwe^Lmqlq~SiYP~;Kh&o0k(7<-qx8`qzLZ#~rNjAA ziBtUWH4~?JSxJU+MaQw@w*Mq8&W_-vAY#Iu~{>>s;Tt zwX<`=+zCr3tevoVLU!V;iHj$$p15)1ixX!|S~zLhr1g`wPU_rY?hZ?LSi8gK9kP>W zOuZ?7FG@-ltxo@{SN$0}uW!>w$w{~|< znLCBz)un5vl8#yj)o86+jOvh9plwF3T`=;!ik5XsVIYq}{ua(n#7r z!cvst_-RDflcId-<9^gEZ7xf*Q7vUy3 z(Kt{g7iv?lBunKw+C$~(O2^VEYo~0UlASth>awYur)HRP_4Rn?(a zrPsPvwv;d%ttI7|5nP+*-u7NRov7Q{u|)rvx{9%j#XSyMB1rXLmjBbtA9a@AcQce&WpGnJ>;u1f_clEy6{XV?kv-=&l|H%IP9dO+N z6W=iW2J-L4H!MAHE37T<+uFzF^LYE?pPijF*@I*hTzJstgXX>w-{5}Z+&S$(k@KH( zB#q=3AKZBe`MULx#cyKy2iqUiv6|95-@Nh7tLLt4?3}lH9;ZLh{=lXG5_yuF+rP1Y z)?4t+^ta4|1r@C64GJvT+bhAJ1;R~}bRl62T1gQvum4}2ZH z#^FYeD5@c7lW7E?kwHfS86_yDJ}MF};uId`tZfHBi(n5y3H+iPoz%A#;dc-M9-(Pm z$P_#FZNhcs+a7xx@zAq*y0*8FESysE)lbn(BT!`< zwNl!fYoEmzYM-_2`01m6HW(*?adW$#4a$@235V``=&^?`J#_V<{tR-*p^qK<(xDUP z%iN$L)iIqtSOe@kf8Y5k;o1k~QmNAFtJTiJ`P+ZuE_J>uTOT`WJd*JyK8>i<8@KO_ z)2;nm*2g*y_`di!PD31xw5qPS^!jL`p*~*Ws_tv`RA)z9jDJ0Q{`#PO`SePd)@ka0 zT&>XzQAxHIokoAsS?j39qcyZW*J{2}->jCdX(`)}wLd$lmtxCY{3YoLcq`BK@ZxwU zsk-&L?}B3&oW0=61^Ytcjs=e`cxl0e!!#{=rE(=&`)~I>?AU;-R%!d`Bu(!iQO?4L zw!uXKSt$Xb3ZR_3!|8CeIJ77v6~_@zi)*)0TD&AteNX-Mkc>E$<)SI^t+W1J2`MGj zBA$tF15s0zCbfqJD4H!L8uD6`xv3sx*UnROH%5V-ss=q}xMsYo4tnewC zQqMJ6l}SrQm?S1XR23^572NpXqos%Wu>|TsSI1#G#mKhvb@gEz4}0;j8HX=CeA(ga z58rxt=Mi&{SbD_TBQ_tAJ#yBOi;rA=+{WWxJZ{GE3y)uR{QBd!9^ZMw+!L0bu=a$_ zCuC2Yb>iX^SD(1?#1~JT@%DvpU-tI(Z{Pa%&VjiDO9$2tY#zv-H0z|rC#^nmM=d*Q{ZU(w>O6Yx(MykBd-Ud`v&YOjX7MqrkJ)(4i^t4ZxNzaJh3gk?UD$c- z++&v>yY|@4$7YY4b=>0PTF5Pwsrj#&;}T)Om{27Dnq&nRV*= zQ)dmXAN1+F%PdkNup z8RKK+K1L~(ybbf!$0ai1_8rz!Pi#>=Od%ducaGfNv3+Op_oF+V<#<%DH!3|k>yBIH zwO6?LKvI&tDxTxm>O?eRyP9!G_5$lv;<2@NzZ|EhFanEPUXC-O)Qf7H^GKtB^^Pc_ zl1g6e(UoF!Zrc$zHg2mfZDUDxMSYT(_`7XBIw|L^vqdzu*(_8boiPH4@3zS<5G7T3Y*5}RFtCK0mDm-yX)pUmW z{c`b3UG0w6a=dn*y1kl3-q%Jzm!K?F3zf!kd}9OigM6(w1E7c+Z8`FEVmG)_!=dR%9p4TO4&(kCEDl?(L*vMyQofKCsj+p z_g-)<2}!5?$XOr18}|v-I?BC@qi89|X_GzRxRiQn$w+CFMnA_C*E8y!mW^J?rYixW zj^Y1NXa{Q5fT!(o})HliG1`RX>qyirZjxaf+?M0fV3e&fRENLM|s z8me(Ak6vk>D?j3?<$OYM_H+(*lrXBKLFqd7>X;gi$Hho8OqaM%RqeH}VNIj+owVx= zB-e6#?Zxdsi_dNQ>E~||uW`zKjH5)`HO2iSE_vj~hc!03gd9p`;hldw=*n2)R_+F2W|L@dekp3FR za5Fc9A5bdF_Jbb&kcXFe_-qe<*u&>|_@f^Fn1|2x@Od6S-@_mG@C6>e(8Cvb_+k$) z^YE~TKjGm|GVZ2u@KcOA7+m4ul^(v-!=Lu>WgfoV!&i8Cm4{b*_(~6d&ck2y@KqlE zvWKts@HHO(iif}I;cGp-*27;@jB)Qe4_~hs<@0q9f5XE!c=$#Sf78P^d-xU)-{#@l zJ-pt-cX;^Q9=_AVcX{}34{z}BJs$p!hrg>BdH_q|#nAbX zhadLvj}$}yBOd;-hkxSXpL+OF4?pJN$36UW5C6i$zx41E9^T^NCq4X>ho4rAd_AKW z{{PCuzxMENJp5Y^Z}sr+Jp8POfA8Txc=(SVe$K;x^6(2D{;P-o=Hb74_#YmA(Zeq( zMt=XP82SB|hyU&2|9Ci&2qJ?G9&Yq7{=rm_!IWayN-Kt~CJ$#kjNg#bV=(98yoU=O zZuW4Chg&_|=HZfuJ3Ktb!(%<{{Q}D%-kH*4uv0PeH9;}*HPOS9JdFPo)MF6;(yGT` zmxsGOJjKIPJ&f;4=rK6m!#y6xw*&MT#CHVr7~IjrGd#SLV&r9K#mLJp9^Tc%ulF$h zC7V44ck}S>9^S*ly&g6>E4jrCzRAOfdiX>Szum+4diaMPHhHJB-NUbQ7&qKSV(K=S z5P{)QUpMUFc;AzIBLC390gXs>iNm`r|ADD-+}obw^CVUOtB4RnCL($1C#y) z>1X;-I?*PW_!E$AA|9JxhkHzml|`8cnEYgV%5c3fwz7(;tQ1pODW>vKoUpjt)-TZo z_Za*UEVZR1*=20?D<=JlNvC4c*_gAkD8m3FzX3L{6>N1f-TI)IbTa00p2isESumeT zCQ5ne?-^N( zBz`j8`pGyklPr^E9TjIDmfvtdiH*iuZk+KSE= zV{41CwZ+)#6fAlalb+Ugr-!lC!`SL!Z1o5hJzXUy%h<{?wz7u|OhTm6i!9>t_bu;@`t`JFz-=}~+V+CO8fld%y$8C(5=Mdz5YP7h-%%h>WO zCVvEr?1XVnma&y(Z0$0(dK8l$!J@}>LJybiK;kuoxjkPfcsjLVi%;^ftqbCp{@Z6* z*4ky97-~8walYuGzGf`WdN{F#>EkCjyNs<}##Sd|t5dM(QQQFijIDm5i~hn6&`&;~ z?i}th?UOA%HLXE$cWMudA7~=n`5NKj`OadV?*cl;@YjOJ&MAs{UI^&(g@@ZA#($zS z?lERZVA_|sc%{Qb_auZqKAX+6DR==6f zb1U-`{oH_V%xr6y==gGvQf z1;5Z8ZlSyfbir6T1bPUwo}I)lmrsBP62{^NGmuE^3?3LDKM8ktQ{RElyQnM@E#|tg znDqmbZ(LtYN4q6uO!qL_Pm0zyLqx1hhC-o7@GG~I`CexxP$0{4|{t&4kt~3w|E$9 zct`i}(B(w8I+JD})`_+O-vmpU2Y8)F$Gt#6?^apx!>*%uIK0loTRc2;dEdQQLC?113LUhV} zp_t|i;c1|@7hv$ej(Lz@HNpqx zVGJJv`j`&W>*?9k!+V8s;3w!7V@wWsFm5ZxSQ=oIVSq7y0tb2=X8u6uKCCAxw)g?YW0hWb+Bkf8gE=5g>#k&x z){{r4S$~n%gaO{-Va%Zc9c?MVXiLCo+c5qc=0|%57Fou-2u2Miiyap+kKk^WW!#31 zMChTss4R^kin~2*u)Zx$5}kd7S3RXV3&rb)93HyabdsMalVb8I5C4jBpGOz`E9}K( zP!4we47`Exs@*$VgvYjE`W8y>RW(ORsn`@z~U#`^W+@c8cLRMUq<+W zCc%s28U5rTTGF78aFf<^R!^PmrPDe zv=iOVO&xClraXd2al*sK9Nxfmz7L(2P@FK+5@QdvveXAHPI%Z94sT#O$rda>Z~{2h zXJx5h&lcPe;0G`lKaJV}9eu|jFYOjn9u+qNkG1s10?OfF;cq6oV$h3k0=@BjOX|>>M0b^ zUkZgj)^E%@htVG`y+D0xEO?BxE7RA?{Gj9iKRmo_2k^j_G2Q0w0~BvDHy=HRew>KL z`2=Aqw;amE;n_?l|8wRdrUMspLmxMHg5UHEHNI>5YZ8pH?#iLP-F(12+mE0pz|aE> z{pc4$7c6w>1ReUp1B|iabs2{4;gFTCxULvk%FoZFSk^w1nn`O#lkB5sE;A)B-GW)qG&8jsbla8~+xElQwl~IH4&BTz^($D) zLG*x*{xV&38hNhN(*pfg4`XY0%6Mm&v2Cl2tu4lOUtKZns|ya=OyED-&rDGzx^)L_oG1#kD+}EQR{$Ouh=roTDmNJ=R@?EfH^$^xF zbhyv*KtC#+`E6NQ9xmH-H}o*Q$Lu)8>11sA32R;KFjaZZH4e{C5KfRkxF2D0}ps@1&ph;b~7^@feJ6@Skk)o_5gRv8Sy#gW2Em zKo4Q~fPLu>>>CH|0sF(mBerJ7;w1KF9nW4K-aEj_*Ubtr?KiT1+Hb^oNV4**B;8=g zvH1pjM?t@H_&!tIHwXR(>pN4`L6Nd8iD#1Dpu(5YMyBW9Qt2FM9&=0zYYQ*)SeTr?Adp3_tnV z2hkbBw*m5jpA8`(-{jd@@xpeV^bqXCAItB0P(f9J`4%71vm-hg-(en|d`eVbH_x zjKv*hu}2Ru@*d#X3G*(G$71el7So1hP88O?)-Jz06ku$q1Q_q<1a=wQ^(x-I3FwU3?m&XEwT1U*0zG)|rH}d)jXw?# zB=9aupRsviY-O?jv2{RrM2Jt*dH#d%=?``Em4ens}}gfbYL38J3Su8eE((XmS5>S=AX&7s2q%OxWk;~ zeAw*+>ccd%+Xo%qa|!zoKl=<}Y3I|-9!nkG{cK>nu3&8I_w^rkJmwtYk+y-c#nwAN zv$L4T8OQSx@aXz;?;O#||6c6VT8zEiIgFFE--3NhqT^jqhiM$Zz9rL%2m6GK?OvkA zvlIXNP#UUIe(S$fAQpet_0-UaU0W*gh) z88biM(*^wKr=&;PRe<~OY*BPlyTyHhwKYKRy3Fo&>k3Qnrgg<^?RV(QPUqeMrv9sR zS_4>&XJ;pPvZn&8KLI`$^N!MIC(zf}f7_32UZzsNQ2nOmqrlcr#y0OQA7dW$1+4uD z+jibCtg9v>3tgWuX}`Z%!Vceu|uyiPFNo$BEplfS_EkiXFB zVQl>@T%7kPM{ho5(t-nCOb^h{7OJrh)n=VJFR?~}SS-RAD| z=CN-EzM1off_!0Y1YPP86YD z!>6I&wqeHB2gcTx!+nM@+eP~qy4YoG+qq)ew`4qLi0{XRzJbRv#kB8D7&>`f-T4{# zqjeErl-p&X+cDwT%YoUq`G&F0FJaMhvpMbx<>_XuJ~Q3&pR!7AO*5ygcKISKK1?%r zU)g7E@%{S(^$l~h#XU67F3>V$EWXhidjZ-^lE#0gTf1nhR+iV;3$(7WmJak_og84y z#Q{IwW)0|!t$xN3M|3eIDlLBY_Xt@3s1QA9#WE zL5mmBm~S!L9ishV=#+NC812OFCqpN-4a=YM>1Zdi&l%Xo^AU^DPXmm$u_Kjp2Ft%G zv^EIxg1#KcVhuoa>dUk?uy{){aTu`nyW^S8^@Tng*m9WrFV(4x38!-X0-sC$+R|qy zur^Rzv`z^4G4BWdpuaCLb}VA7J}d{__F2p|PEUaQXg;!Z*bQ(W%}tgL9|FvC)`AB0 zndm9_kA6oyZB%0P9?NGy=k|cIwV2jpih14)c(^|LKja>rsvHF?E>KE*E zf}h8t(?1XWmY=chFN|$|8QbrL5mwpE7o2bJ_@eWHu@LW&Ph`Zrph&@EOnagE1|$#$n7mhiQE=w&f#O$_M*A zhe??XB+Nv`-Sphh%JNu!7>(O@3_r}+aU0)r0UdheJ1>msdoFl3cNoSW?t_GxhsK|s zRR4VXj)SwitKc*>_L+=PZW!TD0_Jk&y;h5RXzg^Ev273cK4EP6na;S!;C=zN;J@K} z3ekhP2IC?509&{x{S2_>$C|e^ z^-nYJ`UWuTxiG=l>T%f82ZnfVWjgC05`Np)m~QJuG0m-lQ7_0NV;W~H7JojTIDeh` z+-C?&-ls7Zo;l{c8$q|eF}8UmEcxvd9-CiF=W#4|lapm^Wf@!kx80)UaJgY@Z85g| zgw>YNrN1+_?U}J1H-wJ-qP-E;yiB?kwrm+P*0l%G$sd#t(`{LO>^Al7!USXX&0?#E z=;GUu@K`;}Pvb3gGWK=a@2Q=6yXwE(FkVD;ZLzIirrSI+P7d+9TIiBT!kWkS^)@fm zA1$W-c-9@D+wvr=<;iqg7Z-fX@i4aZ4}4qceTJ~gGTrigDfyJL*vybAoUd%^_>3oD| zBEWV(;Y`QVelsxYj`e(x>Aa_EEarVwhkH95HpP2Mr##nQc|%{&1}-N|YfF^vD#kg z*p3^7(IeP5rrWwW@P5a`*p4lXEk9#h7mWL)9SU9QCI5i>FwM-~2yFE*w)tXgbrM#8 zgf8g}IADE1`*FCpW5n{~`RrK51;~D1 zWnuRRieWdvK7Hs`^Puv89$?TP^5_8`y0!R2(CwIW_xI+pZ|Lv6_zjAakazezK>Id? zc`m@SOH1!I_}=$P+-EV5nL(dP{UWf1z7WVdjQ1^xjx`3|YvUgIByER`?fl5twtw6M20Z9HoJanS@DBu& zKMg+uw(~4weWpxw9n&5$C&6=+8~6!>oeL*q3uglo_!o&iskf&)Di@Y-I(DEMq&)6IMN!{M6;;sGm7}{G-4&zl^O;!J?C~y^p?P zv-5|sEfa_Pj9}^SjIB<_cD*We(XW`scEalOs>fizV=u#J}fA0KYZ0nJ+ zm1S&wU~GL5y7+)Kz)9L)um%9OYk&uV+18d`%-2DCz#JXmPv0;Uv>)8xoh zcwk!&c;_?F13#@@z9+R9KF?&j^izlFeIeojo%a&YFt(iW{#&3EbE3sOCt8dbFW;;5 zX|zvh_3*PoYqy)`%D`vFRzJpyfZyRh8aK|6aYJy1edGPWGujvn9e5Xdj|JmK;G4s| zM;G{seR7L=pPcldzxUCec|gZ_66kT5=j$_cTxz)nJhpw}-s%kLU)WC|?C!rr55`!G zOP0Tl=GHTGoq)N|(zhhd4-|JB4}0_wPlw~dd=$uH?fsDI0l&i?825tmXKdRQ`eTrH z!YC7rOViDTzX09V5o60wSa{}`FaA<(bqlsUi7lWb8~lD9VXNn&Cy749_k)aWJ7;Xm zld;u9SZ!VW6l5(OQ>`txZnNweV5^6*wZ+(u35w}C4r4n$2wlbp#&%r&{I8r&##Sd| z>nCCO#`6W!tu4k@ztBa$<>xVf<*%K7##TS$MMGRZjBUSWZ1oEko%mYT8Snrn`Wj&_ zAMABUv7Jv3|E=;&Gi$a2Tf2;HUL2k;Jhsf2{?73;w)_r1ZwO17^f4BHrkPJX>tq>Q zS;kiXmwyi)TaS!wIWV^Tf@R)eY|BKjlnG&NGnf4VI&B#;wzdc>&!j(shv!H1U&5B3 zG4Z4SGPZjipL&jXQ08dhjIGX3KJVy^Eq&piK)3l~Z0Y9Dj^D!xhu@dze*rwUju>0J zgyBDrT|$>KVQlp?w(Z&SbK6_-7iX8T<-g{ypj-Umzd0VlVyoLQ-ST|pAK0n zZ0n9O`#Ikb7Cq}2<1rVPA@kUJR80L;u+*uQW&fwV=zKFTIsAoxI)4~je;8YT7~3)w zEak@7`kzcG>iukuVarz8?Vy??0z*!B^|*5|7m9S>o(^_HaLXUzOljl(_Wj5K)cywBL` zCk#DFT7y~4eH?4`AziDZ?`Zwfy))y1=_}60J+h-e#J#iS=Q_<~VaxikPtMt0TZmxRKi?2tY^`HV&*|tl zA(`Kn)x>7VTK=!KI6aJQ`7pNmV$A&A#^FB3nlGVCxiPkO1xvmNgP-$tT`TO`d^y}h z`&ZUCaDFexnD>x>AlP892JPAM@IH^l+*V`o(5+YI^DFEgZ{o@}VBEvf?+;vAbU6LV zK9WVd?V}$LSR>`rE!dVD#{V_imKfWzLi-QsjBUAL%(r?5=>Cx~_Y2$`u93X+eP2LF zA6XO31)o&@K7;!a;z57kfb!n(0e591xB zUof_M7_$$3!q0d<<2Ije>z(I0s?TOauO`oSpku7IbpF1l)x+(L=+h0xXS{P8$TGHNh4DGyak!867S^?~Y#+Us7}#RW zWrgpFUj{ns;kAmzJ;q$=Y+)U;PTMVGYZuSp$S#lhxc67zXnhjc!X6-WN?8d;8Dh*t zky`#ONzCbD7xO#DoIn=s(E0=ZPGDQV-<$w!+Z$usj~Lsw$C&xM4P)zrVDX_a(doZw zlGDl9>S1jABV(&au;{sU2gusJN5+<)u`MgccJI+l2EX;q;rWT1yPOYH2`Bw%{|oXR_TfU$naE4@3x*pAz1GaIzcbj$$e_JHpXD#rH#%}y%2rT6d~`hq(8 z=+5_Oz0hyJ++*M~tzqyC_hDn#oLDD3%sMf4O&Jet>jLfVVeo5v3oyPrfTw&zyk13n zv$EXwEJoYAhGn^I(GE!#nD6fbTNpC~jQg^{E@NBQi7k$fy|Ra)g>|BRI=h5bMD z%}wT8p1k9mY2r9@W(nlJIh4a!my_W5AY|VQpROKi!xtA@&F6<&!7l=ob7&{CGaifVIyBK7JCtMFW5A!o2RX#`3VgGOk{?N4koHxPx*jH9vJ^ z>V(uOsnb*MOD#>En_8AynOdE?EcN-+mr`F#txMgW+K_r6^>FIZ)Rxq5Q-4VPHT92_ zNoUe+>9Og_=^fHN>0Q%%rVmaZkbZ0W$n+)2Q_}BFpOF4=`XlKJ(r2bGOMf=~<@6=# zo6_sk_oS~&|1kZt^b_fg>F3gaP5(Rnn{;#2n5G??Qcb%y?a{PfQ%_TW(}JdjO>b;k z-1MHN4>q0DbYasaO_w!&w5c=w`KD`{E=hj9>E@GIpX>-$)O}}k=9`Q$0 z|7bFqOr|Y!N~$|EKJzI2jh;J#Iy2Lo*&o+~@Og7)e&!hPpOPBLyfaoJs^Rp^2bk|8 znF}(PWG>5m9tfdq0PS3fU)fTXUOj{Er@; z(*BbB7bwYmJ}Ye!|`7?0#riStt=U3z}Nv>l4FNW-WHUIVeo%vhxo#{tY_vWc4e~|x4elz4BP5lyK zA^WTR`rIG#FF@)K`G1CF)#Jv3)OFroqcvYUUL3XL*ilQ=_Tv9V4yvQcD61*>%qYCR zuy^6W!W=HUH&-mdLy>Y+;rNQ_R8EU*>SOFA^vFY z?k_x8_>uK#^Z#MKJ(&5;%jD4$g+lhZ!Ub55gwMYe{#Cd$S!hl+6TPE(Qu8j&cP4jh zp4EI{^P8HdHy_%3G*aH){NCpGHxD+S-Mnl1yyj)i4`x1`UfsO1`6{HXZN9O2J+AjO zZ*2Zy^XBF!n}5~(hvw!~GxYtHwT3Oe8hf<_{%Z1a5-pb`x9=>rY~R`0^6L42 zQVB@QozjAP!NQI$yW&dco_yV$xg^=&vR}&^Id*u%;NUVe%mkoaLdnHp1>?DW9V;M{@(IjOH1p2Thgs#TPL(mZdD5pVt42@ zt*>i+G__aj8(I%)od}H+3xViLIx$ez5gDKp(~Dfz3BPxBeH@*0!d$M^o)>6WXS> z?bNn=8~H{W_XRp7bx>P#Y97)LW4ih+*JD9Hnd$Fpdw<(fM(=Dnw{1y&Wm`*nb=$JG z!R%FSYuj#UyT9$Ww!7O#5P!Vwk+!GXUTAxkxnF8)D9%jhiW7?6#T|?7LA_yTw75^P zuZUgI;{1S0ejQUBKpcB<#WRXakbW^XzAs6>IkUp!qV!cZehOCfYl`cNw-&Eu%6-L6 z#k-166@OHG4AOrt{tn?om;u9QroFlSrD8+-4((&wDP@=TneEft``Y(uCu`Aj4)X}L zzx}xO!`sX2r#=eJ#dN;A{mk|cx4$E#=X}pf)PrceK5NyuhDTv7YF*;hv}@X@t5{K< z%GZamul-rp@XnSmqpWUf|5p2V+pnvlGwLa|juFdGb{=VewEdSH|8=PBEBo+DrTp<_ zwf`8}74_%QoY9>95jy_T{?7`2ZT~$-)Hku8D5Xm+rD$3`aotOo>sPVQKDJcI?ojF} z?TqVg_!P3U0?o5I{;k~HfU>YOP&%db?$Vj150}m_olqJseY*77(wfryOO$dvQm!o> zTe=P@HDJO+rTa=hD6KF3q_lwbg?$LedQ-nD^`?GbdZF}-z-B%9s+Z@b zQbUK&i!r_<7oxb-M^h6jq&S|@BES7ih4xcYyLap~YAgG8%Q!7oTd5^y_4~Bo!5?8!>8)&#d{>~T({ljt9mP4|7UmjZXa_R-V5EnvtY*Y*=esG zW(?4Hd`e82i}#Q=nrvcjVp(EiBHJ*xVOax7jOUY3VjIp5$kBUGWASO&hO-0K$KcaS zuNwW29@|&?t$0gp9Nwyub0Y8r{77C3Z&{7U`&$z^Hs16%4mVOcQE5*w`Novl!Ho3w z_m1p8+S140wua8pmi_p$x=MiZzw=XWt(@}m`r~V(@}d${n}UQQDViEiaZ*m!(L}3@ zs}7|!phb`zohf@JOe1^Yhs0m`Q#r+#A}-NM$oHf^d0*FPu;flcwMz18wURHs+$(`o z?8E3a^Und`z0qpt1oUP)EAeQ0+||j1Q0G z35ECi7UJ3t)owMPM02JpPc?b5Pu~tp znGBy%Uxg~)A0s>A^f=wbK}TGEh@bARNA@1sbL7Ag+%xxQY5t=ThNMV8Su8JI(n!*J zjk7H2;S`dRL+KPN&o5EMvRsKHdXQgos3nclH7>tY7Gjs`IPM^hXnvJXtdy69=0v?H zk84?}1}a-uzp7trimp;;R5Ia1bxS!?OnKw-OS>oGBiv$SofFNk*wB3HRV|0F(Nu~1 zRI*=QzmzZXoNQA`NIuK!n55lNE59^1%HEH(XeX)Ym1xi8wJQ~}B>5#&MG15jl{Ufe^N1FO4_b;I}fu8s-q%Q<4J;(W{T7}{~7cpm95K+S@EH7I8Q1oc6 zYM!;d>ou;vU4K>`q_PN}BJv z)UX?zYD`}6;!`goJN*u1oiS~@ie?PyeeE_Ftr8SygiX<<&ahl?C>{5Lcm2_!weoK3y(s6wJLji%u#6d@;HsIuB zJooPg$}!z>2p{Ry8Gx>F`ultP_wS$6|CatE`j78l)PGw4S^c}v2&o@>wnd+~dh>JS ze5{5zn+T+);zMmalq!26PGh`8b$#(NVXEx#_+=F?IZ1bAt(-)0hx5}%t~XF`_3cVb z)8p^&oz3v*?WDw(=+$wFXvE=8pG#V)@1w&qqL4NxOMa5Rxb`DlQd(}`Y&3}Oo`m1u z+#!~;Cv%JM;&R*C;OAb_$`Wj3UhC6q|o0wQta;-8Qb4EGO>U1@DkGDe2KS1Gh+EE zk`ns$Ukj6j-ySGliqvo=KPuB{?5v!sDTO+Cl-FHp6qUo#d?Y2lJi95I%lUM|;Uk*r z;;s&)M#FL%bNrQ&YY{5tu9c-+3dvVG99I;n|I#8yFCW%NK7>cy@Tf*(mmBXS$9^a^ zl0=)Jlhz&8=V|pG9>!|9Q99>0e&jNb@yN7ze>(fI0)^7Jr8{E<-JI3X;a(_Vbs zIPJ7+8CT!43R{fEd~K?ac*ut+Z+-EwMu|y|bRMFZVC8l7=kvIBrz>zOowzco&$CKg ze!k0j$VW$2kHc4&9!AO)rpCvVm#%Sn%r^>0`N%tZO1uY^s9IlAAAXw^to=%2fhIcqq(z10C??*;l`kjRpjNuB%flsKZY`WnF*#hz_N~^B)lxlo zU~#o7<>$0$e{}sYETx{sm5bjVXl?1V3RVhfjFa~*k?gkSN%d&nq$Oxfa;W*xtNI@2 zm+*+zxOBBgSHIQ8wLGPXPPJOk3dOgQ!ur~sq{Ux13D%s+wbt4zKAmJG#d#_ytX=!L z&RAOW{#9#VX_}w#>>@GY_2{0YUC!uFs_+8cuVn93a0Qk+kk>(N}bR7s}V+Z)le zs7I6@JzagvTTxV>!XsBrZ^U~?6M{6SMbq`_Qsf;brPI~vc3gfsVV5GPS~}_T)8q8Z zy(Za~&uH{VdE@jq;_X2HjLP_Fgk5@h`8IGF>l?u3=~M$MufAyhjg`e$|M?uxJ3G~WROv1an9SHRr z^{Uylcz)>H**+IZYJ992X(+$1b^g)bT&0sr6hHa9ou_E299Hi4`UUZ{{i=5*&dRze zMb{Vf=i=@otz;rvkG2>0=4=DYP`jcuDJu$HUz~^-=_StLJ@b3@?={>zyib15{H*)| z`Puz@_8*LA$p?%aJo47z6!DQ=IR&XzwLzMd%YOr#WR|BkrE=+c>E-E7>0HyirsYkW znsS+WnN7uclXI))Evc10Z^^t>%a@RaP3cX=<*PO=>1Us`)Lj15N6MY#&rvEPCm%&5 zBYL9RqVY=F)eqvYBonnd+IZBq?g2;XmE!87OD7F3Hd<6EpY`dfKlk=9gc2+o>i= zX>qM1j#f)gG`+SC?H6&^xRS1y7WG8quAIoCi;V`w`C6ZRoMa_heHx=&sx3;dH%{`z ztL0VcT3a7U`dpPX#nY+h#-~)K#!2WpZriTmb+69p?y76}%Gzm$6n>eNDW)H#6GdoF z53QcU>3+Udhpb&F<_=w>_4g8T8i~i}6RdZIm99=NA=+=Mc7*RO{bxC%-`~$8O09S$ zuasWy3+0(ss&2I^$i=mM=qfwE6lywMwGZjlNrd;?luqkxhsQx)W93(>#cE~f*K)l$ zuH9FXEiW;lRN{}LSJL6r5 z6X!=5RkKZLs?$B48EJ~sUx^ld28uhL+(<5;@6QkCNANT1{rF|)kwU(?zj?TMq&eSG zNspuVw+y$8wB%d+TZdamTJvrFZNvE8r+l%$I9wbly8K*_c6hYt-qdI%eEv~dZt`U- z;S0ng%X`5R@NGx_$jSv(?M6$0@^tWaT7=D|_g1x9Dfdc0nDQMyN9|L6wR7;~h@G%i z*Ws&e z*@0vpn-r>uJ4U8|BomXy2%( zmQ_}-Jc4;XDLwA$%G{wiKBCp;h#5ob^h0gl>$U1=Stw7ftFNOLucjYdwe88g?&isO zq`GQf<5xdnt>Lu<#cJu*m31w?O3wq!Eyh#y&S|t)TD8#%u$mmbyCJ*F@z3R=-*GD6 zW1W{G8~$BGG#B#psNPUkn|>J8S2<2OmFJ#r4?D#x;A&-{ce2%ZC{5p2boZxD!Xdp= zCVtAZrpWJ7P^`K=y;CPWdODq|jjnV^+`sFtTsqMdYPWj#t5-*<)v7gJpH^pZ=OU-R zuMmDypT0@v?xn~V)lloIZ7b?OSyt=OG?IzycRnA<*0NnKUF}D&dQVvG>g$#K(On`@ zT}?M9n!M~Q5g6ImDzi5#%i?dH!w6vTr@hF@p=_~RMjGy;-S@A=2Br)Gp%9*sC@_bdN zkS>|Y;w?*EQT<3A)5uJ;xWm^#>9yiv9X@w?eb(N$bmOv*+;7JCRKYSrs~6?zVT$-C zt=EOrZ=^ITwGY*=`O|pxs_CP>s-Cc1JT=S{j5ryY(xvMke^!daI-kguc7VgX?{P9djh+#d@D|V5 zvYlkzStiY*S8NckzV+kgGue0cW$3pIOZEvF@yTz*X#QQktCy$atAt1+y=4^EQ-7RA z`E8x?XrZ+7q;I~vXL~gF#vSr5l1r7++1B5CbZ=z2K2{s)?=?#OXf4H+RCqlR$5ER` zvw0=1aOqd#QhL4I!dHu%YDYE4U2CPs$q3EWdwyO1_WmXPL;V-`ujpUZzo!4%{&oGg z4=))W8oqdV#qg@(HN)2quN%HyBxJqjhtfJ!U)&G_Tca`vMO}te#vcGRVjQdj~y+Wz>WKDeC)H|8 zs^zPIn)Dqi#J$+^C3s7!3A{Kr*>gFb$!y;d_IxxkS!Y$QTTQ9%Upn?lQ1!Z^wxU{x zQ+R^ZG*Z;KyQ=+K*G&_n9JxSy^>!bXbL0N#y@=|fIF0H`SB)Ci>o|TBkDhMMo2)$k zwbmG?dbZ_Cc51D&b=RcQwU&RC(lw8j^hW8*AJrGlxAN&VnjVcSU-%kcBZSi=7S&TN zuA?+bQmcrzN})ul)ig>PwJ#Yd>1itcUdeFzbFiQV#_6N+!W(O$h20ARP2+Fjv5g?9 z0*JFxPV-BI6v-$+c_`i2hF>e1lypu~#X zR_~%kT9MO8p6TJ*rC(xkql1$d6#g}pXli_1tcEScbH-CiUfYk>e>`WDs`=eEc_&Rs z{SQ-JEbO79$D^pHGJeMM#!;j5NPIj_QfSfnCO#gPmsW#s_hUp>|F!>wIcv|q+Mlcc zdO+ED&`aae@ILXqQ+l8LDl7R{?NI+mf7N=X^&O93lWByD9`)$evI}3O-}X<|_7?7y zPOthQJtAtqQr!JAL;sRmYou}=^4-V!cA}l9J__g6<&lsc)!K%yD-P41Yx$D{(%x31 z2bb?9#OaULbgeQB>u|YuJ}ND~&u9tBH$tP<Rl52$T&rq{@KD{;< zaX2oAd@T;gr@Q_`Idt6d$j_fEPm+`)uHH0_uB4T8(Bb3>$>C_05V=sg$VdGnMxyC8 zny&F^9#u-yNds9CKgF7Q>|Z4h;kGR_c7c6yI%^}+UEaGLjnY($YfW+GO{ui*P=4`e z+d{Qi>00hJ`6*P%jf5mmtJ3HZ=fBTW$*$1D)=941vMZ~4klNE0sqsqJum{?DiAtqF zaj{ySbIE0`{8#qbFQv-3mj23;k`kY9$(!U-^DMMzK7Af358+q4asJWDMDktvt|7kM zU76R?AO5{5<&Iuy44{wJVl+K|?)ACC;h9k~R_kQF%`uUZvdsyUpl zc3f&LB(~Ms=&y15)r<0LcmyHaG>YmOXFaYz>59MlN=LMbjW{orHrn<;a(>UJT!!cV zXsU2TsS=m4Jm>0Nr7KC4mv5LtZ6kWbm8Z`WwpVX2_N9CuM6;F;dF*p4*8Wd@T+52e zg+9^oS7qqBE#8SdSs|;`I_f*3enh3{d3CKbD&ykgO#TP><=c_`!}(45hx$kQAI@*Y z?{M$kzt_l~{ToLP%wr#to@T3)sh6Kt^)BCMUMrqadEfnayEc{b z8~wF_@NWnBy2{^b^(gqwfv}{c32pg?<@fk;;hl$HDVWECQ;8{%ib{rz)( z5@LUkFzy@vGWV$eQ7z#-yD@{tF*nL>4{{a>X{l=I#b4>Y^zxZNG?6dWj%bc*#jEL} zG?A~&rTU{BO0Rx(QkD4}51}|dqRYPu(QcWXMBA1lJX({6Fr{{kYDnr?c>UI+-sx4_ zgI-BOv9F`HRbR3`?$MQw(;wg8YiX;uzgE&y&l=M44C5_^uqOJy+PE>PURwNfit5z( zXA|+%YMR0l@$U*(ldqH()>~gpeoah%(@aBmB}?VM(V&{;_YO2B*ZAD{-w%oRUbTcR zQk_Tnqm)V(Rb%`$YR6e2{c<>(aK~#BYM8frteT!mY1K9AH+4ihuGDJD(=TRKvR#=T zmZ@zc$`O{YY==_9yirZjxaf+?$oG)y86(`>9v;6nW}8UGi}KZX)e*iLxAN#U{OkW= zs;-aX*P71hsJ&XbCVo1?auWBc&O$8|R~IVd|38V+qSv_fgV2OC>}hy?MjVyoRj!(U z^ecN#p0v3cOMg>a^~jZY!iTo`FrWN3A#ql-Pqj?#UUh8CHSA4XtUOQld9(b!{*wNs z{pXhROtk-I)yZWtykw-pb1(gU{<0_Rb-e3JZwys?7ZyI?&85g4#ftoz{-NO|xSQWo za$D|uD1Y|<11k9!S7JVmexa$_q3x$~OH_{dtH@DEhwjNld7XCU@qKdlNg}U2q(vl! zqV(uhrG(c>IWOW;REy(MUzqLK7tfShUKsBjqY3f%wkEY0#(yJZ5d^NsGX})~@*nMNDei`A6 z`cYY4IJZ5$l4RI}`nbX}ek>~QrxA{(Q`|qI>3$mFXnI^+`J%FZJWj4Ut-9^%sbS6P zpHRgsABWQ^rThqMjEjY3!W`i=KURw`oL(tbxim1U*8JXKrLmak2S>g+S&cWEwmq`= zZKUn6te%8_>xc7Gl zz4uK5s36i}HuT;RkRCulAfy3-G?NVkP(cMnK&1CBNEJmv6v2Whs5Ai^A}Cg{ph$1| z&bhObd$(_r_kI0;&*T1{bI+VIXXf6$Te7>kQ~ox)$HM7o*XUuN^i@=|{}n9%%xMq* zzY~J3Xmu;|KhL3R|04ZUdJX<9&nc@WyHA!RYa(kS>n!Uf8z37d8!0Q0jg?K5JtKQw zHb=HZwnnx|_Nr``Y%hFwbWC&~m%NtTBX25iCGRBfF7GEF zBF~cN%8TWX$*0I?$mhwI$=Axa$hXUP%lF9-%1_8o$$yYHaSzos)c+<|%9iQZ>MzC- zi_vn;th9Wf_(XAB@wMW6#W}@ait7rIQlT^`9m=Z88p?XghRT-8j>_)JzRJPMbmb^z zp>n)(l5(nYmU5BOX<4P*pnOHSQ~8c^zw(Ikxbkb|S><`a7TBC<-Xzu8YY&N^zjG*-DUjXv>!R!YE7<1+FDuGc zovO8~Z`p6ztEi<8o_p1Q$_LpVwI!-2+Zw57*yh=m*;=XFtJm5#+d8YYj=NkYZ7;Rl zuCu>pv)SYAZ`t0leF>bj?YA8Pj@qi*t&V^Bzj*{4j&aU$&a<|E`S%F?dj$SH0{bG_8>6Eg{(al~t zI@PhNXt#4Z2vrbiiWW52bv2L<{YW>T4 z(JHomWnE&OrT)&kNPW(_O1)OSN~^YQQEyk9ZBAQ)ZMXWMI^8zP*4@^}c0zqhy-(f3 zUNJh@Db=jiti!CUtlwIz*@oFx*-qKw?VasY?FZ~iM`y=W#{q}b*}*y4xzBmc*}&y> zZFgOACAkaSuekqoC&d-SO;W$BCYm74F%y4HqtSFuZGE@jo{&AtaYz-8==)TVUw|4!mCDo zl`SET={eo-DznX)pIGID>1&e{dc-R_o4+@?;^N}^=?Ck#xVO9i(p5Fwi2GT8L4UyD zj;|7bZ+si$T*D$mb;w>~Tw{DJewCrvFv0K?tRTYXzbRo&LUmJJ)9v`n@gt4QtCam1 zf1feQ*u?l!{JQvW4e_SL`1=iYp-zc$k|0YdlUJE(Y5;zvOqU=_C@}Ui_cssaX8Nn? zg6XR1bi(HeV@!t=K1^t#_$J=z*B5)8G@dd3Z2ZHhH(9y;9%LG78g5!)T5IaSRpn=d zt=)oS(^=7@N)z)?S4GHh9oL@Z80|vNYMUkS^a?Su|2%l>p15da>VGi|;3^JQG&UTH z{~%szG#WF@F~+@Bs#H1X+jDcgIo@DU$2+)tP;T0lP#)e+7*i!Y!_7J7r_IlD##$2Nyrv)y6VxHWfcwmNESk~PgVuQ}dwVB{socE@hVX2+|Jt&X;uCmhc@W;qr* zCOc+0<~o)*x@guo(i0-nC!t?LpM=2)9~&o^&4P{npU`)VGyLjys#0p2=jY)^>0hM{ z_n6~7m2WMN=lK%Owj~L35{?Buexr@ENMWzCojZ3GW~F(RVE$Y5+x5Hk`}7C(C-h(I z&*-C7`tQcqDmoi~kM9A}-}ta`7*Lq-WWuzBUB>YVjjHT5{*lnCN~ z=iHyV|8ie4Hg2+hhQ3Z5GEZL|UmTxh$TjSC zN9S$G`Oq)#BY}0j?A<^`&!rj(;i>J5O*Kvn`zU!e;h&_Psear~2|~J>`k0JnhxtxI zDDniawiP{M{{0R*{&yTTFE)$f{JD})8CFBZf0h%D$b9)fhUX}9m(tmYM(eICS zL1%&gIq~1HzBQkZ>0QS4@37*c z;&sIZg;dFNM-dx);a7R@zzp^a7t9Xz^TPkS?{hKZ$Fdgl#G=0v_m&%#7Ue^7i&CfT zA@3+ZBhHYY72B09g4l;O}q8$Ha=d^BT7Sr5#?*i~_%{Hpj5(4pm$I3MDHIe|9qTO!9?YzyQ0 z@(J)8PF9~~&>k3}y;zSz`QrheKg4|9&~s$9`8-xFR6ff_{g?QLST2!EaLc!-huSR4 z;;0ekS4nRB`tm*+N1H}jF3Y$fmT+TYp2T<4O0*IJ!f#cQC*+ajh8U|e!FjQ^P~R5Q zn&>;PIRcRi zkZ0r+8?>B~8XCSj%Wz7rtFFT@YySq>qm9N~`9I47`2zWaD%|!^-KPm8NBfk{pSSgt z_w-N0FO;9wEtW5q*U@a(hGTh0bLxgWsV?rlZ6^&iCD5=qu?fd5D`+U&(`#TdFrSJ2X8&3#F-~ zktCd8{|6-Cm$jiCK%)>` zws@<7Jg$ny0bTfvCnUkB4Al1=#3pm`S&}DIpXd(jKGAVcIP__U+s>6#1XiVki}s!- zc}Bu~{`zYzrK(k8+h#zv0w;9)m7i&k0Urt2Y+&qD-msd<7rKv?O)Og_+sfD~iH+?B z#vx^>9_>{A4AmeXX^&_RYCqNSG_(v;1+zi2PO?U_Qu3bWJxyyB*53uP-AAbL{`)?w z+N$P9v8uPhj8HkgL8Nj?dB|Et`^`iev?U&lkl3;KSR<#NEQd>)n z+!H`Gu&b$Uq^|m2wF9IgoYo=<>d3g&p@4@Rq5T`{D^5dWbduHoIqp}7VxI=D(GZRY z4Z-vwi-e$V+x1(fUs?2jUe8iPnFNI5N@tUv)?3Q&D81 z)&JZY%;Jkdm^3j@wEl5%%f*q{=%Coep@~*M)gH__ z5hcr>WslZ>n=LX+?U9LA{{?YmqV=~pD0f7miPk?+p9tTnBZ>MiNifm+*ATzwh(xsh z9i1JW9x=bg7J3-b`sccXc~VR%aF23F>pw#Li7OIQ#F2?sKT>>xYJv(r6sj~>C-^_b z%jcP)i%hg?D%)q0AAmS=Ug8g4YXUt?`$u^zuqWEshxcRqOUVyfI?`tn3VP|tapY&o z&yuet-{@#Re*2lPQXKhR@;kJD=jMq0F=x0c7@XI4!09ruJ=ClDZX+G-T^6!cHw4}0M@JbLNh@IL^*YcV5770lh%Ke-rRp@w6f6WPE~otUK6fa>I4sXx^T z^)c-q<*mS;tk)GS%fSj(sBQwPaa)u0T?2ZnN$-J?tCM>`JGd5FlpSu&XI3p~t+F}3 z3%?sie}Xg^xAcm(gN29nXSyb-N$N_QNNbWNuw|f^d8lsAI+qYDDl zNOxCvsXw&|wVC#h@>b}$!6wY8O=^>ahE`I9j@MOMo1oR!r&~!oKuZWlvDZPveGcA_ zRX;R*Xh6>c(qQ;ZY`NSY8T|RtVYc;`_Luf@4VL;-k5HRw|0r*Tjtjl@NIg=j73*LW z=|CI{q`$NtL2Dpr-1d^DKubt3@Cj|KNUIv)hLK`bF!hMpVCJI!eVMh{X|s)#j+DOP z&Xf9+M5xWQf0S7xrKuc83`qp*jFcvk(NZK`+ST%lBZ*Lcbs(wIUmQZ}IIzwU1NKfL zS<+yR8F*;V&kSD*s88NK_b07+Mg@WYuKVGn_o5ngy*{&}MAo{L@s^RL`jvz;;^MJW?#(IcO&KpR9U7 zJsIZ5`cfZS;aU%<5tdK&1L|j>4$^}3Quk7K7tmGE?hf&<4c*n>>%P~WHhgFJ+K^_V z^s@A_uzjnzeo4yHn$)qjCJfr%B#q2tY9SYOkEz=c=4nUxHua&+`-0=q`m@S`I$FP2 z#ue7&=P2~@?P%j+JQnZ>^tbf4{HD908w>xR>-8}S+T(+GL>&sO(T+T&junriBk4#I z9Xx2yS1+mnbJWkPI}>DuIuuLQ2#v(q{CSWFc}LB&nrp9x|3da>J=m`UZ>smIUs1mV zt=FI>)Ab-d$ZmBo=x4x>bb??p)Ss$9Rrk^K(|n=ssW}1dlj?KoZ`8kW98mWr->QS@ zO?bXnmyZ+|-xpiKy+2WljeO1(e;vhZQh~j~{@s`;w1gp(sRS ze284NQofM#+$}q!8AJw=@8oyO828DV!L{)k$P#5g$g9du%PCc5j2g1WvKlgvtd49D zxv66ewD^Nn2azFB=pqY8CmE%S?56sT`bW*Lz%M>TdYggL%`}WeVw?<7XsQ@YM#^S$ zV@G302BBya6up9HifoGPNgrEe42#C18BWT}%d${plUPaAl%E{J`gmgO?a}0r&@|A* zPCf~yn6!s$7Y0g8WgGCuA}t}$zd!XbFSFVx=W6F_i%Bu*tLm$&0(4S#QO?qq5XQsG ziqXvEc8S~*$WUc;CXkw{nsA-P@QhGaltsEly2nW;O*oz)NHd7RKGp5LV zt)e_bLetkA8LeE%G!mK{aFtC8AFrypEtAMqK@j}8Vi=|oK7ws(3%7h6TXK07xs#JP zxVk5{1NCUjXv=dX8p58eVim4lw4QO?m~k*J1!v&&`A}1s52FavadNEB_hr3l1=gEo zqa8S(QJTo$UX-YC%VU$<9E#BcY1isj>z-6n<|&aa%9oXID`$~c zl{=L00UMR8luOEFxpKMk4d5+q`v&B_p?p#K0(fT;N^N-~d2M-3ZEg8nLfdHb(nwxk zUQeC`o=_TnLO-)n&n0t7P5EPrNs9T3MT)VYCn*+_R7JXvR7EP-3xc>C{#*KP&1uy@ zMN_yI>|(NB@if=_G1xw<7_abxp0AjpcuKJrTB}1aNAWylAnO$)6bj6zSec1yUPg+Ev$c2;S^vs@!& z0})!RjlEgBJbIO81Hrx<2x_|JHH`$$jMc}P@Uy9c&AH1WZ=cM%Fk_&8ekbFg@_j<#CqTIm{wpsg-Cd&nNbXQ35L3tMcw zOWq~1W%60?lDFNwMO!0vp?RN#_J{VynoaYfWxr1%XJEXtjMi0z4+-NX9r6*Otk;zn z+HaFCkVkYC=OD?`jjsep$PqGD7YzCt6P%HGOviJK93zkEP|64GfxT&e+)gSNpOHX3 z`cSmCwYL4`_{;G%ahXDM$ek=g+Uv_hGkr6C8=#r~G&xOL>Ral&m?+K=9y-jP-b#8uzIXN6Gl&c zH;yiPYz-(E=Sd*`{m+x~+C%k`c~~FJ?}R5!&+{i~Z2glkX!{L)WJc&C@i)oTSBAgI zIDIb16@vN-VNh?bew>dhkclwO{L%Da*I*ac9HmEC^#XlS00X%!7QaHq=y@K6tJ)Nm z^`$ve^}#GLEiqju6h1m#kDyJre1x@FAJkLy!7TJueNz9VezuQWgu-m5XO?Bm*0UU; z?qTa|>up=+yy|$@$w+sly0SQ_;eL;!lvI`-dgN7LBk-#JWgq+8Vi97sAoNF&dW+s- z0_iW}5uTOpVZ8~NNXT3I$1FlSusz;VsEtIi_80wE`s4Z^^=I{`fM4~Wyz%}%S8HU4lf*}K1!N4^H0|?Hc^-Us^s196JsSd}-?)`2Q z^u`M253zN#cC${hc#Vu{hS+$<@QmR(z$)@*fgyHg87ME9UNAXC$Xr8)t-N$|xJ8v` zr2)ydg(g9?%s?4#OAv)(jUhT-xDGB)HIa~|M#>_iKhGNd!RYhG8OD1=$O_{M;~b9p z#$ad;t-IP7%vvMQ>&9T-G`?xPR}>rH8Yw4@w;i=a{`_S8$@onOgjv3y$>C4nfNRE3 z+%bwwbw#1LX@n<;02C%3{K^9@rtcR8LVGI$YFM~Fn5#1dgMPKi&QWZm?}sY7jW<=4 zs-}jbhN8Po6{U#?sbPvnb5SJfn95Hp5#v5nVi?+rC>~R6bP$DRqlxlrfZk|&(e!}m z0ny7QAv?fAL3RKSh$4S`>mThZ3g);eR*st9GNB0RF4|{01fE0ORv5ut9*n#fKzC7h z(c7kvLx2%RwD^9Lkk3tD`9Lq$c-I!5J+?FMS{AXTnjcDw%yP?o%X}}l#g@kMD_qU| z51_fr?yx(yxO<5hf0!ckqv=P}FQ>zjFL#N)h>U-ds@ziV%YtEHx^ufDk^NUErOB*FC}8^Kj0>zNh2ALlUAP24;8!Mwl$Z&JEfI@TZ`x`p&{cXN*u3whibj-&2LqW=stEam5l z`LgArkcL<+<7R|V9VO;dJo^Y~pem4igB2>GqE~~%C->T-~@sCu@nr|sD z&s&hEMNf<7z;->X=EqoMS#4PgtmZ(C)>6w_;8~GBD=d^5qD>Z_8KUSm=J4=+vE|Hi1~I#xj<{`iPX3Hl1Uo4f)D3%{k5aJ}}eWG_GmfB9T8di*8xpWj6Sy zcL&W|$yHow!z$C9_qy(NDcr(JpIBmJsVFoftm|wetf5$E;~DB0>R2ICIsG~A4rYZY z6i>N)KSbbvQs8UlS}ChVtW`cu`{8!Ah;Bpm=c}_E%x2KOe1DdMm1s}uVg5i(vuJ-h zI_<^Jgtz@$yv66TF@>JsHk&)Ez%*tG+rd4lhwopp)+p;J?udu${Uoen%2QxvOoUbu zK-xqGe1pZo2RnQaZlOzTu&Ca@5gZJh_qv`)9K7X`8e z)(I*Pn?#f}N16lsp^gM*M~c5_Wi)p4ydd$K;f9`?5aqh8{nyXpv1!{3p7ksq<{QKvOH55m!Us+Lb%X7+l+}g~| zUo!w(+amnm`kSIRMO$r*?KZRnaXE|?;vEs?jC-%>Kfys;C_WG|LPe>MWl$X|44eK)fo$Wi@51eNl%!KDl&PVO@W%FabzP1UW zS-gj@B5ak~qVuUJe9m^w@l#(qM?fSf%T)=kzb`)^j>={ zdtG=%`$iNr zvJbTXBnm}}Js4qLy1g=-6Xn?%BkhlrwV5x^J~{+^^f%F1So^f%To64K<@bof_#`{y zqKJW4M_B=^w$HI&76r4&9?WIY9LVOmEQ)-M6=9SgfqFOD%gZ&9kk{OE|a#OtsQ;sN{XKJW`ov_ApRcfh{e{-*sM`=`KO-~*0N?Nc1#dD20d=$Po>z96Mv zlU8^u6`!!jM%m>W=tUcR+b`^)QHUv_qr8{pG0jK#7K@?gy|g8ag^CB}qm6mLx_@;C z_N|D0(tghVt^FJO1>k!SxKyPdKiPv3W?Z%hbI~4%P8^z>_Jy$ORC#&cWfU95Q(<+^ zsg8L7ZDE_WraLeLne7N>reh|oafQruEcXLG+^-}rJ7U2l#w?eZvBkl76;|Zpi5I`> zK%ww0=JD5|<2#@NkJTQTw;i!iRUD4DV12RZ`1gLp!Bfi>8vZhX^V}`snAJM2McmzD zwR>LKMFP(_Fg7m$%v$J1YPsr$1xMb;twFU9t{H``{f>`8_Cu?NI1>C7rtWf5oZQXq zyRbkT_kChY6=yIk7Uzs}wg{q*IM^4>)6`khk2+$Z-PBndMrjSycP0UK#KAOj22;-& z30mVpXAfuJ2()tsk|-APk}ERw`de&Eugt})&>FAQ#Yg5k?{_V6FL!s0Yak9qySR2? zA~ZYFzG1AfxUsmiGdzvOy#u1urd#ao&qK~|G!w@{zBAuB%sB|icMfqD`Y3i5JF}g` zof*!Y5d7iJcD58}IOn+9!wP4Axm$`WPUK&c^3gV8N{O>#u>K32;jp+FtK2;8#r`yO zRfbODXiODH<};^|E@HIkR_Kq^{>aJGMT~p|70^ewA2|;~`v~wQ=c74nd(0UOi=l4f zsurHeZ@28ctm$Q2&!vC&O=FmAdS zp%!i9c9SbK>s`pwAlAE9yH>c?x*qmj2Q%`sTe#>@@lY|1?RN2`iLp($yf=F5O&23g z{EF)psDSn>Ag^)t(gfGX{J`~r>j3bMk4&*YdtJc@Gs0cF@UZWyhD?9r8X*qF7p_?N z)b*+B1aJ}ib)q50NT9=><|#^o1?85dkaF1m`u{@ip$=dvpl*Ibl4F2)$a zwPgFb%fqAMKr-F_OcYNP`+K5UX>MeI5A2U^>P>S$4E2YCq`5ItehS>-px4$M;TFQ@ z7P*Vum@!2>#$8$P%A1j&&8LcAa3kTfUUX9eGon4qvS+CWVI5KST*W_2vF9!SESk%< z!tCi{=B3&{CbVMB6ZVPJp6DJIm6_sjJnEhvh9}*WsqSEAiy2b{S5Lm=7BWv98|FA6 z3&jh?<~X_)`q76r-TFuTts8Dt9Alwa6{qE@-EiM<8{kr)Hi)6zb~|CA7bh3P(Rh6S zK+gVUoYQ=Cp}2Qk>?{#io+@#%uu2>`Yn3=w?urXW*tc(7Ad#UqkddCwuq6H+EDyp zMqU=bEIz6)KiIFbY}Ay8MsY%36~8LpqNzAL#5=^-&9U-^I22Jn4vP3;(OcrT#HSpm z9B+%mlkAGjLCL!T9F$N#lngMnvK*0gRCQMEk?fK5Gc~s~w;YrB)6azc4@$n%9+6ZO ztZ-C$T$!N?<|D~2!%jn63qx*u*z~YTYtR}_>Tnx8=COczP+RD2ZfRwCAF^;i^8&8= znJ0a~672K$JYd=C-0J+&kP27(jC@tR!03L>e$7w1pLCxq&*|>7BK%eND%N^UiWHa_ zuShFTu8HS$u09>5GTV2gZ%QjGZ$b@Zw{(w6W|SF~AQh>J{g|-pfHBQq?~AsWpXtE( zR{2)>Hu*W}9{Da{ryPEaF8fr<7@&Dqep&jZ{A;;d_OASz^qTaXR4S9ow#tn%oou`O zd+ABwn=-!jwN6OmWiIY3<%9A&(wowcY5rk zt2wK=qoa&7JqirAT(VZN-32soY;*RM^^}c}otJl${VeY(%anD4_E7L3Ljl_Q8{#8m zzr*%np9lTjfIiUgPcGU`c7@aZWVy2Ia*Pk~^&bW8p|Ug|Qdk_tq*LgxYHk3RG=KTH zp}Feg5AaC!PD7kQZ=7gCO69lY1+t1`IjlLzagCgT&B}3m+@?ry(mNBJ1Xiqdk0O{?W%=6Jcve?e5gR*XZ-gXVZcjC4`7%D1b%zm9822ed!{Yw>DD>^B_zJeo z6>SwqVeTEEg|lwX`MWCM<9Cfy8%P}IG3xj0Psw8AjO-^1az^G)ZQHN1OR`@98oLD6 zImKe&E;7Pe9pLYr3MYhfL}7Mt^FGwt)Ej55+P z67tT<{({-!41bZ`rLCe3C%qKG&^;2)#J|nY!QW4CS2d~jtIs6|Lk*v_;RF_lSMx>riNHa$>#}wssU?DJ7IWdIP=dMR7ybfjH^(oo4 zEQNmNV>(=a7B9c9rihIMMdi6y5t>?I{Foj5Zpq)n-j`HV_g7So674U_v&u8dAC;$+ zqZN5U`~lv|@~iS!oZzEj7q<+RfSx+J`k?`L0Qg*Q*v@otj-`8oksXdfQUDRoh3|O&KWNls&;4 zyI_A|b~msoJ$-%}4cxLU;rPr)XT_|ZFvmVni*lE$x~iXYfO3I0`Zca2XQah&mF!Rz zMky=CQr%MB$NEfVJymGt>nOR(%J8bYkt!MmN}d%uN>desk5#;dHH(y$BXBRqC@aq) zeeAR}QN}4N&!fsmp$Zk;1``;^9(?AH)*r2*z9ka+LZ4N!dlM{_J!XIA>lSMxk)$dQ z^&uN279x$hSQ~hLl+RwF+o@XYV=kvRbK3=~HL49|Y*x)xtpq`E%_7>O+pVf#gmKo! z)sCM=CKoop)u%$G%_s))!#w z48*D{+Ha(Kq`K6A+mY(gW$i15baj6pS)hM5ApO+?)#>WN>fa650rZp_(lo*3sq@sS zK4@jS%~E5n{xBW|D+uEiX+P$-UQ?{=H~IGpwxZXGb=9VDdC#iD@w9qIP;87TkRnsK z{^j$BTK%a!zP+%L(_Zxl0BwcaZc=Z8)uC4Vfh$La%a7I1ufKFyeYl)!Iq`i1TR&B} z68$us-x|43$9X$+i(eEZUQ;>P$~P6&v9ER$IcuhIYbsAtTrlBQjS2R5 z3A@5faBg@Ht}(Mr%hs9+za~w%i~>z%NV1L7@Z77rS2spee(urTqw_|AAEjcg*jK*@ zojF~@cv3S{GmnF=c`;ivrHqLhe`p?Vqpgn-OB`pwkIdIDZ++G?{FrQCQHRfp7QyvC zR%!g#ZV0{FM4;EdPw15)B6Kr3Ol+M}{tHbO<~V1MkJ5r*tA{&4x> z{MlM0Tr|3WxUcWZkiYMZ-CIrfyiNyaA_dP$9h{~61RkTlroqZz46dy8wfSrFHggAE zFzSXJ4^a zs*aJaLzsp7K0QxUgOE0+Hm3WHNS3a0RAjXmVV`L43!}x$w|+@*_6%L+NYq!32KrbD zwa$ts=HB5(xun0O?*!mlCOplJ41R5t&@Hz9NkuikdPv1uBO4{?bQ=txptA(|3P&85mERzOhhJEy%Z)bl_V{ zbsMFo4f(@C+3sY|>h#$>c$;jD%ph2W1j&I_NJ>Hou1$jeSQ+B0N2}5`PI9376Nbk@ zkjJ?eT2!)($STud*bX*Q-{XeC&_+^?=@46GnrxVC7;DTkhLgMqG3+xf#&t=;SI{fglhP|CGv8*S<-<`=Jre@ZbK(jL1Sld`1vONfNwgsMF zqm3g0^gd;oWa;Fmb`8+prK4*uT8?BQTObdmt@TD^6SsZI_>%FJN`hhgo-q#lvY& zjO)>a%VWR)_|ELlS?eK3Aff&P_*GNv;L0~!0JioG+Wsrnl;4VVHJfmGXG|66l<91g z)nFp86@$@BQMuo8!;}m{xoSdgnEE*SImWxjx^9~gt+{eH!hKLkYhg95nO4=Bt3=^0 zzqr$kRDnw(l-MTN9tUvcm`GHIXmyUJ=B7TK1g)l=zh=a~k?OM8gT57ODylQg6=j$i ziFHkxaCsBVmE#HX6Xsdwx#eO3WTS+KkIsVXv&@ryV0)VR8S`_%GFVY&al}<&BCQz1 zV(ZMv8V=@LIcEOC5(@MmgZHD`%vqMLAe61< z?Pc#x@g3@R?!D^QzIUuULGSX#@zcv~<`b4+-ZxV&SPokbnlD&_;n&OwHTw_EPuQNY z9d#q2$5V7`Gi-Is^04_gzt(T}=MT26+jam0*0Pg*{U`6>w4 z!(`(7=|JgX9R}~MhuLm8@?5C9IFR<7JmSi8(RC|v?aKSyY;Br~>fNwD%x=p&6^373 zhPKMP>PujLY^#=p&$?;3X1T{zairE*5y8Tpd@gIFX2PP1vOF4LxhyW!Sd~W@3DxE^ z`Btbr>f>|#ThnaQY~g#w8d+eQ1uO{Sr~?sJSx~9b7TEmj@kduU25Yl9v6($*dybnS z#^K+k0TIlN)=*d%+ZJW?_u;j7ppo7ECaPrupf)j8ovl^ zn#srcR^WIFhr;nWptB-0O53=7+8&v*uO&l$RT;BSxaw8tirli)A?j7;dO+A$;*>av z^I=D(l_$;0!+S%u*4XH}Lr)6UCMsWhxwUdcUbQD$v;nO9Q#rO+w^-k>zFkS)fEsT= zr9j@Wz6F)v1Kzgo175biYRz}4GBfFfmN2o1*_F>OM?0H3~G3NjL!d|P`vk#w5J+udHFD`qwlRBghK9jX3 zJ6Rv*VLJ4j*qGtg^@-IVYJH*d_yX4-Dz6>u>OXVi%%Ib^>Vd4&ZH6MZN z%#_z=tHdzfux#BJ=83EyC|f6{Vy%I&LQEw3+mWsTP+xz0_lSKX)n&2A>=k9a9f|y^ z=^ve8N1o+ik)^QCOC+AR3t0{8!ORz|@G>W2-$->?Y`wiathEPH-c@1(^AAT{=OubH z)H)>P@m=6n7zw|{bx6+HPYOWmHvqRMqx246mqo7GE5{vszL)_sq5mS&pE?^>$EU%wHG16KC_?# z%VT<$6W4#?N5s~1PJ?d_^W4Jz2Ehz!x#%ducyPOxtGctgZv_~-4orEs*uOFqmaXv- zt%WOtzs%tADZcKSAfXaIkeGI=MT!|8`P@D^B>ge|MgCe&_tb zc?Fp7`q}xjZxsqwrTp6DiiKNFv8&Wc(Yvf=Z4LBhexZ(~Ce5k%C$h9BdmK?MeB{N} zj(j!X=+S7`#g7&by?RINUR)2OGK5%d??9o3TWs+s)Dox znFw+dGZul{JFok4q<`M`RFh=5WwZ zKR1Vr&L2faj~zos7s7mV!S5|3ncf02dJK%2iLpn>IM~UYpAW|l_pczM5RPpLDag$rBa7h}%Nx!ee{a!n;)Qt?=Z_{?xoM;%9qzxh5>k?#M$$6!NXh7t zWNg}4Qc^UE6cvvmY2E*JLSn@h&!7m@LB|Bov!1{p!x^&{Q8lMWq7 zhmNGv0Me-s>D!C+?M4Q6AOky+L48R34x}KzD7%EDdA)_%>BZhGI6h=tRuL&7Ib+fa zv(xgtgrxTBnbKtdfyX$U(P_C5EqhEi=$DtB0gqbl;p_KkukVX=%FcnuE&r(Yur8g7 z^D=yo=C&hz*5Tx| zPrncPn6Hg7X8!?gpImWrCN3T(Nw5a%!}>+a z|GyZ+eZaX(VP9{9X14-Kfus;XdyHfZr^icfOYTVE#hpy#Y?eDag^>9v3sV+@UJ0@; zWn;?Xm?f` z8!e0HuA4hMg;rV@L;n{f!TndJ;OIvrb0mv!1(o*4o_bNT3f3U`5;zH*0!{jrSkcMN7*fD{1%_IwKf`+{KoKzpGDfMZrhfW6oPz!5DY zz+PzqQYctI&|YT&;8-x=UV;5s$K5;JJ!IKv*$79fi~t+=4CjvX!#UtcSPS!UyxH}E zA^`#R!umjwfB<`AeV|A{fXyA>A{+z8N`Z0M@vTqDVhhfI5U37gfKFLh#OAsX;&|hZ z-|@xAxi*}Q?09lP*l@?^_`2h(;eLkwI?j$4o|Wtdvx7Mj0{dKq`_COKUw!tB;%V%A zR?REU#rM$J`FZ>kY;uE#M&{>a(TsM5S!tt#-)Q>=vw>a-0&kH)jBE;JI*E8lGO14* zkcOlYX-t}srlc)tN7|DP1m1y=2S{hqg>)qkl5V6s=|OsuUZgkaLsCdz(vS2f50L?6 zAQ?n1Os+#LQ|geu6%-NlQ-fTCI(@Rd#f5oAiL6nrMrIhu1Frn}yvMO?{sF$sI{Ga4`G$vwbbYqnkr_94b9TMvS^YM>GJ47S zoBKHXOh7@UJogRmeZ14HOPsyqqZeO#e#;}v({A13>`$iu zanIPhmz|$*OA2Qo{JoS?(q?v-gIgEe(sK4ghhHBu&fMb3ZMUqP-MIhF?v3Ud_kMCK zp0j%{>f9v%{DN6O-Kx&n`oPBBGI|~mTd3sgc?FO9v(t(7 z9Q;FK=?Tt0KBp*qarNq(x|E*cZ2iaNsf#$sAX9qZTe)?MJEzZXKoRBul4wvFPIC?X#JMqgerEubNxAZL^{95vo zgwRLTWYxTDB~4pDQH8{F(bsH>k0u;m_-+$YowExDpPz6z`SIsdNL|hzIqBTywM~wF zmJ82dcHT5xvFoBK|9)@1y?2ADXHOaZ*!Bq}s*8g~k8<`{=Qrb4|Il~)SkYw8-uuDQhvz)~@Y8cdGdR2D zkOc=mNNIRri)bEazqV@OjltV%&)+Xv#@XMeu3EfjWvA2MiPmyuP*eYWl07af1!n%YggkF(d63_iZ}aJ7TO z#Rob2Ov+so{vKps^n~~XXE#f#y71JFRcDuqPjU8w*S;T|^66I_UKjts*)2M(U;EXg zOK%<(|Hj$I4r|wU>o(@CU&WU=+r6yK>lbEjo-UW%;_SMUA9~Svq3Y3U5-ImoS<5r~ z+>dLGOPfoyoV{GTZ1v5h#-IC1tTcY9dHPq??%PrziRbJoN7j!Y`e27i(z#Fyx}5!dX@{ZrFB>uQT}cDZZu`cJWy>A)Pn?vr;OvcY-*2DuwQI#?Ne9mU zYV4U^dG9Rv)gbN0*`xpXb7^z&GcVVc_T}s!57r^>Lv_e+ppBsMh5gVv?$1FtxcBmCZF@55+s5PGZ`+=%`f|!c4aT%52YQUieQ$Gn(sK5&9|nBa zzRipsB?&LvI`q15_VXXy4|bUIS$Fx7KPPpNLSg)D6wfm~hzZ0B;so*CR{8V+pT0qL z8~Q{+dc9BW>hyugotT6?I-(x=8sue=Lm*2)&Vu|2asuQI$Oe$BAag-hgPa4I0WvSQ z9`WSWBiBJEfc_G6bI?6OYJy~dTmaud(4T<*5u_uu-v(Xl!+K;Q2m#su0hMo{ZP^dw zfo=v`1QQmD7;K^7TV|o)F%k;CmlBE`Y@y)s6p9jTp{T$X3Lbl*XuuW_{Py1?kpgkGs{)r?bh0kSuBk3yXiKOd8 ziDWnEk^zaNH`E;rb?h*&=`fETFt6{xhc&7VN+bvSC6YvtSD?-6;@qafye1AyB=7GpXeasq3ySU8e-retzP51u$&iQRH}b`>c5m?E_;P610>L!c8xzU1>l4ZE zAS+&k`w#3j;%%& zU*1m8n_%1^*ffwSKHChj+91;R63K;k{m1DCIV*iNan3Ht$pv2_ z_|ENvbN9nwxgEwIDz`Gezr&29_#lzA>3%;s-|c>K7ia~@b!gi_zlMI0!yu!rP3@8D@ifZzrsZW9=cZ=DwX zzkSb%;S_4pEj9Bin`pIzK6?qHO;HMbe zgey`c8J=YGDmsJYhHOZtxjm0@{>dJ{UcKPkvlx5ABMu%9#f98ccZ|o`lhiFOH$5{g z)`yU%BYf;$jx(n|_suvw2XKcVhDSq_PWd^RG0rAAnX3v7TBY7Iq^gi&49qaR}C%H>rHas1~{EU{|v{!yMJVO=s&8IIB6?o3YBiASEk>c#a ztlX?T_@X)bt7Jnw&&$~dUX_ZxS()YRmF&weit+yS)Q1<>eEN-fj8E}RQ?kcrSIIr-^nIpy6YPgCE!P<+Sa&Gr`izPgL{HZHj__rT7~ z%B)y_Pg2|T?7nFu+QQF*V%WW854=1UXTTS2S()&5GZWrl#CSh=lJO09Iqo=5GJWsd zF%J&MxLD@qd+*pSdvsPO_+4UNtf!MFi9TRs+>@r=@-t%od&E=U|5-SOr<`Q=64$nH zL{UupjT3(;+dHz{9R(fW`{Fz=_oNVgiu`Lhw{vCZI!ri*`FfH&=HZ`RU53Yc($$A^ zJSRIN+e?2SRCYvT8LSa|jfFSF`FOs@(5Y#Md~ZteaQtg0`oZud_sGvG$;c}3;v+DI z4#`O!#^t5uW@mKddcn(oj2%76Y+qu10;>-PtbMP-d~be?=eDPDe|X%$x7a0KyjNo! zr%5?-Jq`O7!W)s{`Gvl>%rP7>Pcr?}wo|VdC*(w)N^i=&?#5a>@J&*T{gRVA=A@`2R;~}@5^F* zQLSJ0p#~j+`>Y#3Psba6E{->*@pE&$F^!*-&wvMbQfg{ONl99I_89m8DmAre zWOi<<7xpGKJ8yVCo}R*l#*mzoR#X%=BN?)bvZEz=Qd7s|hRA}cl?@H^Y=ZO5fWP}; zpBt^YpX7n`0T}>-cC8ouWhwYFK|1;3*Wicjcw_nwHQ`%!dSm`rb-4aLQoQw3Qd4ua`H#8zHk&h$@Gq=#n4f|5N4O1o8|McSvKIN zC#aP(Er}eR{=buJ&%iIMKyb{*o~8O7-yFUKJ27BBa$k;cjuyz70`gHn?8B)^2j*;uB5sZ%w=i7d1a%MBciXL=+&iL56^x4!`A_1u|abA)kPJ0PQ4Ca{UGk8#QjyG%Y;?{t2dS zyY?MAb}AWAr(Qv?>@Imd@Hw~>NES#sNFhiuNSd!b4m94nf}k%CBwQT*IUuZ0Uuci? zeSrIj$6S%In~Z;dtS4YCx?vWA9H*!EREoeMp{l*!{P9$8vml$FauxeyNt!prG2l5Nt`P+ zJ*|j;HEfLkc9Sv2+a)8z18*C0;qw7_HB9vix+VKk!gTCV6s~7k?G8m9io;arbF!nC z$qriv-&(=+-&1G!3sjx$x znwp(kP_X@|C@d@%4k7Jy$4b_UNt5{p?p>F#9IHzwo%{JN8`X zsn5LrcRrtt72tmzW_w72Kr(#o2SK|8eqql4g?2lb+dhzkAci>}ashNr(2YSHAYDO9 zeK|jaz6x?b_|AYRnV zdr0*cJmgW3GiyC$5J(m9p9TL@t2|`e3TQ*j3jVuZgfZ56NK2@59AaC*{vO&_Am6k8 zzbC)J9G1X*8*lTFRv=?Q27xRE*$DC+$WD-vAefT^k_NH{q#H;+NJo%)Ag_R6jks4m zwza{I-kgk3dfW zIRo`Z1nIKm1Jq&$jKyD7mn;Q83i&6WCh4%kWC;ZAefT@@(9R6 zkij4mK^_8`4zdmeYkUXu{sZK1kgM>RXbR_BZ#-{7vO&gxV9ryZ>w?Szk%LqN847X} zVx2%^jrAa#p~ml^W#HQnIstTTkonMV4EkHp9YF5_eFDS`?UzB{09gYvV4sJy2k8yc z6=Yn11jav}eyQ}-bC*h68!nZ;pubeQ9%M7fcY7|C9(nsx>BO0rN-^i^%*&uRhLU&TXwnh9q^A`aJh6G#%5nGeGudZ z^j`&X4DxnBjby0t|H%3dI4O$k|M#l9W~yg;dS+)fv%A0&mL!6R0wNM*@y@iEI6VpK zDZzMWI`vd?&KZ`RbIv(ukc{LUBu4>3_W!M(P5%CTT>JIw%Hh?EHGfAL&m!$gq|3<; zuo-aDnYHAMxYO)6`6XIo68?PGeDtSznA`j5lt=CJ(M3;5qMlyowvUH-)d3$*@Y?5n zyxr?O^zmV@I_~4sUWA8HZ@)dx&%^wPVa+c$j(x8<1DW4dJvpy7U0)K1a0dcC=HLPZ z*^o0c3gtoDY?+pqIww1h?T}N0O3Ej=EHnZ6WjE$G=qlc>a*@S0okryM5u5INw)0w> zcB!PPHeFQT06t-{N~`^2`aQ57bWPF|2-Np2ASIL^J5|@V%wR zF#o8A{$)&2PO7RK|woJE??KUqG<89hvCT3$$OuL^=-R0whY+5Vd9AML6&oe}O zJZVUB!($J(Imh!A682JQNU}ufOedAy4PTYj%cgc#podK}tXe~CdSt!Z$EG{Jq%JlM z@Yg_^EB;6)n7mCy=%w{udDzPryw)u*-|#-3UqeoI46AgR$rV+tf;j*#QP$uR>WKo}BIap~NN#%C z{?(yZR`O8?Z3>QZXtgLZ!l5Gqy!dFNwZ@M(FBxQXL$6pd#%Y8f=9+IW*ro&fOdu=C>~dXp;ZEivgNrKYuJh zBLZoFmj&z-0lpHj9|U;1V=Z#{H^=T7eP8Klch`UW9rH30Mkeg0iMIwcIHEDU1C0s&G>)wK)d^$I>pqB)gk6lEPrR7 z&em?`1*`zC;M#x5gEl8&{z_Z5_;Hn4Fkhep4P`d-J8~>@bJdUe^O^-2bF#~FG5Vh9 z`=TQa+Q~(6kw81~AHaVKHOSx&My343Ioa>=Tkg!OUnM_>0cxUlO8)3cgtcc3AdZpCdsFzbzAb~f`NBwIo2G3o@S`0 z3;LjOn1{d6hf=7f6ZS(Vq5c%yOMte{6Y7rOWdaK3ya~{>I;QLyUMFa>@GcWPOO(m` znv*@4xhHG;M5etnOs~ClG)(4LELh3U3<;b54S8COu|WSNFE8>PJ| z%zLD@D$GY@PaHfKtuI!D>5y+U(me2|0Um8vSr(?7b}gh|99YSV!qht0kr#xiPpB_1 z3Dek^DC8y&of6hs4|OzZZ}HF$BYw39*Q5kj0%NW~wslh8@bG@Ae)I4psZM(M zj;w^Q<2~*1H9AP{IHhu|jsdS(`M#hZz!%yS(3Th-rne=tWc#|e^ zu(e4Wxi^Rp9S}{478vTD!5a+K+XVSmgH1kd0G(HfJ}dpy2Cr>c&MP=9qvv#Q;Cpke zY!mxcjWnsZu!o!UP`uK|q}HbFXL1L#Vt!%zEJ~rn$a9#BEitIC_;wxsZ^&f^4>IZ$ zN{9VIUD1)QLJl*quLd9w{&V|0i+Ma#Goof{v5!9WFZ5A6j$7)3IZ$@<(MeWaeAHPy zG1*7!gw?}GXNA?tN3D%w6MZzvhyiAe5%<8Nb4IleKH6!jA;@L=2l=S0^xd#%nN$ZX zJ}MADw8PTtoW1cyYNHfDvTu7wuk*Cfi(w2xkmq?vreSrJKZZwE~ zO^7>{NJA52k#a_&HkC!oOOub~mzVu4KZ#R-@K@$HOfqPlNejhK8%;W6*mF!A^m2;H z15LHkha~v^h{5sB3}Zfaf{-!(ylKP@wHNBQoT_xrY3XpR1cU zt-v?rzlCH+gUiZCg6qoP1^-iC75tSvC%6a8V}i%B+%ItQ$Q^<=gFg{`gyjnNfIIkm_`&#NgOTEuFFNppp7o1kf?T43@#6DMf?a*vK}yi>Yh zY}YX_<~U=R;-^)AFK5dBivJ_Kd-*5T-pknG4?RdAZ+mzj%gY|V!SalUdkA^N!$XAZ zu6T`b_ImidklQ?bOUU+$yBqSMmj@g2wwJ*&YWterU+OULIh|ZC;*X z%5`4eXv$??K4HpvUcPV2XE@0hv{pp z3v++A#xn*qKaqQG;>-r^G2|i19gQRT6=~Z181C?)x-DGv@XDqTfYgbmG|wAu z*NirJcS@pxfw-+rX+fao_NLUvk^7oZN2kWUCUn>NbYc@a6NJ=6t5W2`rrbJJ_G-!< zQrjX|r}Wy#n$n?kxxESBPJe4qQ#w;39%T+IS!YO7I$Lrk|Ivi{m&WN&V>0CF#yl|t z0^QyWnbU+1W}t7`WoGilrnI}P+S8a1l}#aBH}+h1Q(9h59d69)%gw@Y+^O(<=O%RU zu?U)+^H>^^53i^?HRbUY=V9OuR*s;;%avhrKK?`)t-tX^HErU~_|S_#cwQMD`bZ>m-d`7cxh^VqX`8d^QAI*w%O|BPzggoizY z#kTYrb+0k6eP)Z7s7JjtR57(4sMP&>0Tk8od88Qsyc*erH#}bzB`vETyw#ZY)NjqR zo6vzwdqQKrkZE6P%nveUhi2Tmft}rqyEo{9*%|P%THBO|zuW_zobqY_om}{8H`Ki* zD+qX3)^OmjzIKymG^QJG*drSApKq+g=hbgj1m@mb_Q1y6zR?gQ8vb?~FiYRom#-~p zY;SGM8ybHGMy-jxz6pXx*@di_jG8sggy{5jj% z-hyx2*szNN@>&aC9?%@vAI=Y(TGE~17?e0D_RD>(sBhde%UaNpIJv7ios4_(N^@Eh zpR%$!9gClVZgfu`Cpvvhvr_CMEqPfAHULd6>KoaTHWl^HYDs&F-bAAHCC>4vRoUO^EvavrFMexDZOaBn zwBXTYRYx?ltUaM6A1teSwB(azN21BC%iAkk(tz@z%Z`_-s`~IN|7j0w&U^m( z6Va}BE25a?jcu%iy^YiLI%#6>ZOJ2=RKdq4_S%p5XcO%9olVuzkLX@gweKTt-RuN* z(}|DNm5=z|M|PLyJfXS0usP3Zz65=~+|useitn|=EihwS*|S^m%vNQ=bhNV1wc;DC z?3`BI^<#U)$2{=k!uvtXLP@yfOO+|u6PjmxfFXFm@>hdf3q3;k5C1eBcL*J=C)){r zVQv10+;5>To(9)Dg%#w=Ine&(W%mvMoC9wTD}L-CG;@11d7eqH8J*@FdG#X7N0$po^&E zZO)33w+%2V+YFrgmkn+z&lud9n&7?B2et57o?z9A$qZH@6f)xqf>3!-P119(=0 z_e~pMXW3%11CIHNi4Jx3w&C#(^;2Jsb*Q_Qh7U8XG%# zACGisk!>OAbvqIGp#cfZ=0Gspp(_Ce&CH!ZW1`)Twbh{$PWq5|>K3&7$J4B!Y8Ou% zg7qK8(X3GN?Krv1z6{=I8OuEd;ttYiIY{e`rm$RA@FB|E7uEw~&4y(?Dyg2~3fNV-m1rGDnyas^ ziUEHgi+K=R5M`FKwT*dQ0n_8|iQ=57?*c1X4L2}-X#K=p*cz(aRj@$y8VD2U_Hz}$ zKYgjdKmAa^(dj++7?-kw(Ca*|yY#y5OiQ_y!MdK-B{^%EXR=(H*Arb{#MKcw!)!Xs6PwF=-=Gj)zK7RB_T#S6C`hCwLsD_mNT@Lr9AKxLc)Pr zwlcI{60IN11v^6b7vr8TU*o6b-}xE!PF}0?G;o@t`pp#79jK5sT2wBenoG8?C!81jnLC?v?7(MB9 z^>9Pk*28bTLo^GM?4kAi*c{0AqF!H*mjC~dd{v|a)7!9TcxbNS@9)tY|AfTGN2i9G zX&1D9%7KRKcW5sq50mny{~&|fvwwg=W7+>m&|Fp*1)t>7NHJ2R-4wK5#M~CV zUqFwLzn1lWIR*N4O31YaBpY}i&NJjvBX898eBg{omUX!zbhm}_B}M1+4}tl-DfpW| z7!_R?>3M}m^$PkZy}@cJG=S`1WuO~sf0nrd)A!nNjXd=AHbPHLJ%1_K0U<8q-UqblKWA)zc3i z-d|*mL#O>}odc_lTH^31Tg`EJx$T?f&^6nE27N?8LW90AAO||UH6S}WyfdJBI(#~i z27DW*S$?adwuR|FqUpZUn;hEX+lBs&v;EMq&$P90678P5H{;~X5bd9ZZohuP7`12q zPP?$y2)2>bFoOFNzi@t$P~8>VD`_69g%WBr{|HbMR-hD}g`6*GpimnnuMojYCT)kd z)uczlKTJ}8qx@p2?Hiyhmko8=nMv4{iXSI=2+}9Pq2Sg1+GlPM2l> z@?KIF(kJUP8OuIh9%atJ2KuTzG%(;RR_m$7qKg(B)#2$OlH*Lulmns6kaxKh%NY^&!LC9z-l=(@uEE7rJ~7VgN7J&^D^X)O-%WDm?ApIsJ!z?haa;Qavh3aeZV6*HDi&mQ;8xPG?fI}qOzgwmQJmOKkEqdfF26%)5f4)Jb z0lcl$IEx>u%)D-Cp83^e4_My}%`<0d_V-=QEq|>wygi{mHW<`!n!&SJGs`%hmKVIP3lJtG1Z^%*1|59M3zLb-gJFtR5 zC2yXz&g&Pv{KBd)O5}pwtoMZVidxS678YS%dd=hA#LG>ztZ?00wz&-c`7-pVl5ZHR zktQz>_WASjgTn1fq=rNd)=SX8 zR3AZ|_-TOKIjw^L6;Yi8-(s-*d1c|;s#AQQpsDOXp!uU(TftX|G+^ckwO#O%!ln-N zC5eM2ES&^p?cI@y|juQse(g^iSD?xfu@PyuRo) z@(F@2)PAtX@)(2ZPQr0HtFSMC=CxlZdR@-Z9P$+A&mh@$VmT(iBd$L|O|^xoY35$m z=Mq@|9WlejYq8I9~RWyL@950^|VZgVAJx%c_LoHBr)<~M7sHbW7Qeg3F z_fd4pwC{SkoqQVjE}n)+bI1eMqP;gA-~?|v^lx6flj5UZxm0m~Wsgz3LD{Dj?^bAJ z!8qs176~}NUJpTN_{75D)sL-l%)<&v4Vsqda|h?vV?`G;y@bQ;>*4^iSH0W}zfhBz|BFK~uS;mB?$ZkhT2a`*S(xiKTpZ9$RvQ`AJHH@zUDW4i zD-=B~=|wo7w0sZ10Zs!Safj6&$=yZSvy#S`m0@kaV5R}?A=P2YlVsXQHRK(o&y`z>b{q1N;sa(ee7$R)M+wI~#R2Ddz~wIWYVe5n zN$Av734lvg3T(0m6m~+P@zOS+zIgA;_GA+_M>W-?+1wqNcfYAc27jQo8~icY$=>V(OTLyX>@#SFkdqAFAtcoM ztqnQL;I2?w7<|%DH*gXb*1JQPY|Z+{>33hctRO+!TNMPO*inj(u)S9C1-7xs?{hWt#49)&b(JXU)}TRoq3hC$kE-SqMq zuLavmH)Rb}JYLyz74J~?5ygiTR$HO*0)J4c`9PG(DUV>!V9)?4IW~Gwd5Oaw8fd7M z9@s@+-sJ%Y`Sf)Unvk;D!yRSH9vFONN=F!KWJ*sjAM>aS9zN&EC%8G;e*?AGYJK=x z^e|`y`|k;u?lN?jH( zsE#vA_cQ63kRW45% zN`bk!iu_IROY)@P59L9@KgnG}pU|rXuVuMd@Gqn>lv3YP zRsZ``+y4%Ks6OXU3wDHi#=87mO1nH_ingdY7^#wBw|C`&=y{jLMZs?5&Q4Sx13sfn z(Qm1d^*MiUbz^S#|Ix8z`Zs=HAhMgOKZ80m*8CaSQqjkNnF>2+-KB}4sY@-0KbaN5~a z?Ice%od+hbF`aIbcbfgt@cgz{h9)j*`(F*?BHh8jn>gUo053Eo7}6ca6Tq}KLENI5 zT>g%JBKk?~Hz3`m9X8-?0o5Yy<>#^0#tV)4RirI2sJo%};xI$)FnF8+{wJ^A9FSA! z4qn7jOpX0xm|8$!*JG?@buF_fjNuEhUqDxc$@l@opPN&s(KNjTQ3?4WHBgPYh59dl zk-vQK9damv7yXy)Dd<0{yP)qC%<}`;e~W1itJBQeIpz}cu|iyjE?4tkAX`t`Ur?56 z!T-o7soM81;Hp((`k=iS3b(B~JxG0Je=B-Xz0a>h9?$C^bQjMMM3jnttm7;{?6)7- zTLgV)ZPIEF@Vi=pF-_2Jc82P0rWwAQ95Y66I{~d>UT0lePXEKD(F#@!Xg&tH4uUxQ zr~IGwrR%E;`=UAxT?u3j`os^*&JXb&ppM|kT>*as=d6Gih}r`KwNP6Hj}bA41Dc18;x zD&$hZBSmI@;kqv=Ajg^{C$}A z>ctiuhi0*T(4=*&*Xcp_4KwK;7e5SoBji?-mIyyqF63;8OXq}Mzk>}2LepF$2GZsR zBj&Qf2aLgJL|&IM?+y6{*P}^pF{mXLEQF+yShcJVhP{zF+b4&ZIIUsw( zg}h*qc9W(6qYpl1>B7fqaXEpS8| z>X=E>jrtd~5*>?Xl&MabJjpCLF{8dcn*Rv2!+HvU7w*i~U8Z6D%zdV#Y&~EIv(^y7 zeMG@@p>I2xH*$?*jNdkTAbwgOru)V_{UUV6l-(lyr&$89&7o=Vuxg<%nqptc9?lR-Wh{L4JO$uHAWxQOJjhfrZiXi2_(5?0amY(s5wku!gV zxGq3n4vRD-Xk&!&G1~~^BOEdg!R6Snu*!1`3w}|Z&HR!Jbka3;G5r^c8Te3cX5P!z zS>~hvhlXhRL-WedXEXh1!R>JbTQeC)Y@zZXxx$}mO&l!SabtOIb-EI7U#!OWvAb61dqs-l*P2o)^sP>tQ|z17cwfpFu=}Rk zZL9OH)MF4>XBL;Is`0$yaA>8)kH5dM8m+FBw6z*tsT9At8uhH~0j7UtXdGy2l>p#H zRgS`RHlVsawmL7UZm+A(zf`wRSLegk^IIG}FTzp2ur<@CO4|wwu`F0Cf8$z&^SrvV zTvCH}P+3EcEDD!f&H}hvsQFNA3kA4`Vb7M>uSI7{I%q88xsnFRTKT&kb>+ZxsE@`n z^Oz<;rRts&T9<({;{^o<{`0i8D1pm^--nd3TGDxzDET^9LFKbRG$q9BD$oqx6>meI z*v_<(zL$xa+w6k-Oivz|G9sXz*^sf;;x%0w&mPI~YI6)os17P+nY0K zZF<#pnKY$@7nrprVs>QG%@WT7UQ;r4WhPxLxrgzxyfj?&=t#M0C~szY*|h=BD-Yh2 zwp2_5=0ZgXG_3EdklH779_(3$W(yA++Ku>vf#TYjYK7!3roBOOwkctb8D&C%d1#hKip$dO0=Yrv zSBtfvc?NwH4(7mOh!Db_>47)i72e>Xv1X&`9(rWf1-w_P*&aS4)d~-9_E@JqyxUVy z49bB{sg$gcr%2Iju}I09IOM)oBQ=BW06fc36!H~@sErEUe=Z#_Ssx0l*0ADeTRMEV zdCC8^4fwafBEjG-AaCpa<*VlhYw!xBx#+up1AC7!6h!WK=y2*&ef;Q<4Tsf+J&c`j zUNu6KJUCb*Lp@MuRD&UFw;4g_dP}v>L&Idb10LEYZKQ1NQJXy6xscncyPq{XWWc90 zqm$co;Gn|QJZkZ?DfExv<`nv@)UgygDuRns=(2bfGO!W(vj}{RJ%@_mCzSo$ix8X{ zR~4ZhW^hpvnk7r0PN54jZDR^e@T6T#p?es zh^8fmuO!i<#G?C>X_1eGk!cK+BB~G>qE~h~U6|i7AAS4cmPK5N_<= z0q|%0cu;^Q8}aP}a9|BxvuV2d*zf?<CjpIdG;O`=&KiSW4h}cyU3;)WpOhX0?_SQr4&@N&OlzSI zK!6bnE3LmsIB3uc;mkK^n}9)&4vFcxZ3tI)5TMWivci|@Akz;J^4zxA>FP_Ws6L{n zP$b4E=$i2c!xNmYXuE85-z3N?1^Wj3C_z4x|E^^ukb(>am(+SscV+rsXVYb=6#wIt zQAC&VA;0UIq`dHCuHzeE@{5&-ez37cdT@i;COYH2VW7t1aE9zJyuTToEm9DUBSQGN zQPk+9rM)2F{#tqYyW!0-KsLOSO`d4xtJhEuRG8nbG$E8yVvQV5E#ydqmUTD0ZrANr~i0u;=^%2%33;y!4ziD-t z?$JpxpRZYn(Amp4*V=omv+%|7^e~WYzV%LCTSoIY*6|Rvb1HS454esQ>tJ4e*I5R>tHJ}UH7kF|`h`Ko60&X3|a$gz@?hethphB7Ff>A*P z<9Iykm2UqY!Jzq1Mrb-e3mAgS%?OPZRRG@>{s|GBHokiiC>W~4@z3zyj^LaDMI3K_ zhZM8qa|QfDjk6u$n{n%cASIy`(clltgH0C$mSOxER_($mD;^$yH4;GRFc$q7Y_CVk) zJ{Bj3@Qn1p)^9EF&;Uct^U!eP4ftG9= zm}7x)>yE__iPGDCRQqF~FZ6Lxxx0A(V15cgdOM&~({+ExpHmZrHrY45)XKi%#TgJh z>4k=+yyT-MR#tkDBFDMu9x6!5~eEHv8-$=#XhrTvC8-Ag%!Gu4YBbifSnGM$ND`ona_V=QE3 zEHE-M+DrFjWTclSdYs{2+U#+%y>!5%OFrlMADSCo4_Xv--k|48xbGosPPi>_F@&GG zjE+moY#Avu-w9p0<{<-XGj2Of?BYYfcZ4p`U0=GqP(#YZfJE2V`;?(+qF#FqAS9=J zMju4KMfGwCnBMneu#LX_A-_$a;cte%q7T#Ed@%^FBK#?s*pKp`?$GJ-9Jf3L<;bfW z!GpVL9n$7}wMI~V?Q8GilH7Hj4)xf_X)^^(I`8%qbeI3BKkITru6p195!DI4O<7>K zfQz9zM0Nbw$*(4UL(MUV(X?TGLE7K^JrE6$3{K?V?gzJTu3OFX^jviAqag+Uuc<+} z1-*?_NKXc^0O~6N9Pi;{AKHd^^Se3B3yUoJM8bJgR|gL@z-d zgZ!z>*$>ww9EtEvIt{%q+@?ivfF6BR9?c&EJq_W{Ic>lp56Zw?yn0o=PmQAGsCSZo zrmv!KIxK(MAj*D zjMj)baNC%UtqWZgr|mWnO%>S*{zdz2bQAA@#W^cR;iH=_;*z|0H1>nkUOK-XNYoQ? z&)j&VYgwe9)%mPn9;{g_9gop94`1RF^$$wyy;;EE07I>ALzz;^TTFT`ez8gaiHDAF z9!F-H*y1&hn-E%7@ln`ljX9_UX=BSfa15>I#|mu`1Xu7aI4F&e`y}R^ML%L8?`HoQ zFdaNxp>+3K)lXs;fIZ>Zr4~4%xOo=LTp@5U_Y7x_h3Mb_dd!`bUrjR??e_X<2E^3q5F$nS=Dn1^8AaBz`koP9j9%|D#k2BClOZ~%ay6YJ&#@e*ZN=9sWN8i5&+tk?~ zX>U`uf2~_E>JHW2y?A z+aGG5K%G|mJwQfbPWdj6>Z4riEro#UChtYlQTx+-QU9Pnb5M=-SA7 z-FpYvfH_V8d#qGccSAx6F?;5I(onm}EAda~Ry zE5bP$G7}7k9(3?$7|KN)q|VkxtGnPMOm)#i8_XvG|6%seo9o!<*qspc?|v}PLstVH z7k!VTW;&P<8@CPLW{4$swB9*dPe!TanFjXA2 zL6?I-beO%J9fID4HaUt*ayfhj*6=%ZRNJY_o@6w;n*OZw#Mh~c!=)oXwakD+;2TS{ zFIU6dZvj_*8Ns6Z+pBr$W2m(a#@|jI5kbgZf9Qws&(#mOcD6PQ%|Hi)VhWxj6nuc@ z{6%-21GQO{ZrZ=Y9J*`8>~v_5F9wc;lYGBpesw!A24&!W1HVfI>O2Q7O1BL%L2_aLN%#Hj zLg#GR+&0CXGqtxLtZq9*kyF~M@8c6DwKbhH2rM;m3gwsQ$O1n*oVQE39CV#$aNgwB z_q=?wQ2FscStkWp65nxz?+W{N7mc1aUGQEMU2PiSe-^mIew^aE zyl1&eJqMuz?^^>v%}fWz{B@?)4~|n_r-MaPy-qs|9#Kvo9ZjGO{hDEWhrJTuHr0`LXTd)nm?6HI8s4NE(#w_r zuLt~lv#3qb*_4H#v+p-#(S;b_wk(<&tCnQZ+*p+Rd#nVwDcAHEG8uQ0bWW} ztFq`;B2p|!k^tux@%PN46-8dcDVAaZ9G|M%XVLUjRCYU60_<5-rx;Qci~4*~1u#2Z zJ$jYKroT*d-38Z|Rx7e-dubHfJ3|7TTShHFFUtV&sEh>osI2OpMIFnb(Cy_Uz`hmK z!&hl&1t3mVkN`VW)G2yY1Y&PRonk;`wJZy&N0f1*vIN+|14_%G&asY#As&G%4(`@7HzDC6g{g;fMaTC^pqNC`dt^iUsEl@ zNIr`~*F7r%?yIF*XVKAG$TIFZ32lmAa2%{058{5>$2!}J!Dz#{$qW! zXiKK*j0wv`x*-iDz@aZFpvSxb#BVQ1fNNfqGqU)=i*iC1Uw%=J$l?w!$$?os>7^gK zXVJZv)gQ0Yj909CuhPL+dNEKJUY&^Lle^w?xJab{j_ub<&eg74wdV`k&+!uk_|h-* z`pn@O#&dPsln1|*e4-o;5caWhG+M-6FGssX>cDce)9_C&N1e>nt>qA!A4JL?p3teX zw80Y#xV<-HNjbXd4gFq*=BNO2{i0I0m8Hunw6rWuw~7GM)>j^BI{A}3mZP)&(9$w= z&rZEnmW~HP6U)#9Cv|*TTI)pmmqk2AYM(MRDHyq!K^KF*US+9MDD^}c8W#%vQid*s zQXgbchnUF04EiM|bx;NZpd;5y)8cUI;L?yWBR5LX$VlplQnV}*xm%KQBE`Cvr9-i) zD>CSAY-oB0EsaZUlR>}6MUI!Iaq+2bOVjH3$ca+aB_XwQDJ=EKxsr4t!FQ-MO-}Uf z&7l2>sVhrk*@tG7rtwMT_LZhnNvZ2gQBG25UMZTLT<&lwx|*E2wIp>b5?WG{mKP~^ zvLyXcBz0U#8k7?1R}yxWmwT3^$*HOLO3;SX(D@QHF)e;i3EGmDxvKzjNq>4-2|Ayy06$C*FDXGiOLWrQ5#}rgm+c^U(0CO}(m8JY zY!qMiH3zObbK$lFA08;i#+y)#JwDMy@I+Z)E*c8(O(UOAdIMo9ZT&FYru^o^=~o;# z55WQWijTG!#V_fA_N4PZkR9i&kA`}B@eQ21N+Ibc1hM;Qj-^f_Zr*Bi9C7eIb<{_{ z`mjaNzB&y;kT*LCeRsF%Wm=Hp1SL?(mFKOiHJz506^ z0dolzp*PWfwqs|hK589EBz;BIJbValPS}fPF{l6rNgTJ@2ckMeTLf@&0BmR{;jA&S zn!`|}trQvSOvnHbomUzPLvqou#)2C*7cLK?-Vmx}8wDKqYYNzG$%oMrQy@D0fkV|loC9h>4-pwG9G zao_^8GJyD2i!yqwN|%a5Q#0e{oAg1P zR#pm>ZJ*@jkIHw?;@oVngWudTL*O*DSw9{O_XGyXL0;R{#Xj{l>CkPwC*WQw-1^~B zaD8g)E!P#AL$9lh!nZh=?}*#2udQgyFx~VOt#r{kUo5?kJEh~mCHCV+lLU;RVBdic zlIAV{u}Z)>3(TO4v;G1761`V9n%6zcoxkc=Qw#ZY>w0nOe^O+IA6{z}rupf-7oIEn zAIcBC7!U8$-#CDC`ggZa@DFiP<#pxDMvxRMdI|VMrKoq-%;l{bsgg6k|hP`P7cbKphY5zKu9o3;0)nkRp!av|t z(QtLDoTrb{ZZNpwq^6!r9UJ2|PQIMqp8{NA-o*v=~ zIp$-kTeHx2KkO>{Mx5Msl#Z!KPZxE+M=CgA%e9j3YriXx>K%!;Mxr{g!;mZ9h5cxy zc97NhQc*K*Ywel>MtU$Cg9Z54Am9ruF_BlaUvo5VuzK+=OyAVlrVR+W@~ll@b*sfU zqE}Mf@*G$H)ew52Dg04xKHJqx#Jx^0MD-=M%lC#G(hJc%sW|Wme~(Yo0cN#kNvKg@ zoFPFAqHMN1{^k9hnf?*}np$D9qwNV)@?&=134ceQr`71d~2xXF`&(ARt${jYHSRhl4@WK&Ge`)F}Qk5Jq*F?L|qHf zK&4KF=(JM%LNv=#n?kh6nvuT`VoUhXGFAKvq1W2A3p16c>u(+@JSKssgFjLx?sua` z@8$JB?CO((z-7fvN92Sir)ju?f?YlZ)CZ@e!ky=aS&S#>0hf^_Z(J9Hpz0avQ*z#~_Petb~ zs)@yqu}yY$3#nt^OqSeBd$rk64UfSQoIA#eu6vfYNqvaTJBj^h=v>_3qVuW>e%wZ- z=}Y!HeNPC~0X7#K-jgWH5$>f9_u)~ zTs#R!;WOj)PYu!tZ|dM6sApU!+_~aSg*-M~C7s5_W-583L&sHcfkRU*|1e;zWZYSH z*owawfTvK>`2fxH#qSN!K40>p0A2HiCj#TI1~;91{&@J|^t8k9!x?3R%3rtTz96>= z$n8Py7=Vjm-q1wHL+cjHUDkn?KHT;&kxN}7w7?xiIcRlHi{wsTTnbk1jt8VS`J{*L80CKP&>=G!27=pWcmkp<jOP07v`dk`80s3X?pry9X-LIJM#+kiQ=8iNzJ=2V9@N=qiezs#Qz+mXBUS-|#j_AX~I}U49rFz90Mx zWC9%9S4wEGbiLUKZJjOjZ%}+yDLWC%HLy4VcH7Lu2{65O^8A`eY?XAZ(7XBg2^2Qb8jfnXH9-1cO;61Xs5dON6Fwg@= zSRrU}O#wcJ&Ug_m?2WX6ZqGY3Uq_Lyhu z4-b|qNAf7Cjs1oCSWN#2$(IQ*(p+T!d95Byg#K`th(OYuDIiE=eN}M7V&ZRu0q4+7 zlWuW5Jf$xhfsPUvFC;=wGspCUYhG?b|AzD>sDcjh!--K<9b{pN5bYL4HL2|@_?CV7O3`y>=(fOg^yf@ii3 z@6?OJ4~1e+;~k(c7|q-=Z8vncNWMKL8V_9LP5OJ3&O}{oL*R!&-q#C|_wYP{;f1E= z5^MAWZP^+k`~b&^I=StH>GDNCn4GsX|9*pufPL*QO69e)sM`+gjd0jWe1qx_hDN)!es!q z$K`+e4%FDw2CWh(Lyw>B+7x{Mpv=LoFmADv3^)@njP{`teTLs5 zl6&BlDWOFDUwPCtQ8)PvX8`ObY{Yxd6%qKrZxCSXb-yd=AN=`LZZ_x}376s@%AY{7 zy1B6l^QuFhCs68zD7^tkZL0?uzBgW}GM>z=aG8cs@V4{fJ6lhzn zO{0=KuLw<~=2E+Tm(MnEm?O_l4gx&RMd80UR74ia z06u^N1RT^wLd=GGJb+CFJOQ0#>Za#6c(vD?pzpWC<;WDW;@)jRJ!f=QwZz>~sW zZ_*W!y3xedrb!Sqml*kW0jsPt0(#f)brI1uqR;U759#%E_dTw*4fpad>#WeXg+_2t z-9@BQZd&Kb*sk+tz|}%|4>e>dl14I z4na7|m8H>b;GKF34% zC?3z8{Fz_#39wm;r_+R68kZ;}mu;gmguHEw{Dyk#89 zau7g4%R}v)p+N3V^AE=3d|J`INWTzDR=lk&8s3EpjuwsRw@$@WYrJhL5!6ljvqX({ zC}mkmdmbKpN``s>*|Ahy8@!D#m9!X-O{L-MkDBGt{-Q za0tv$=keH)A&=v+Cqvyr%EK9Yk}^6f-J)rg=5tp(|E&DkKs-i2DLdow>yz$Vo2O+* zyv=+1q@h3Vswvy!(H{B>_w_m17O(wl-w=KAJo&tAjmPRtxd`2OkXcbGYro* zS@IFE^Rlv8zxH`uKE&&`*ON}8TixEcWoYc`x8)ze-hMlpXxF>)9$wowj=r93Du2go z|7OwG8}G~8c%AXVNIs0`g@29Z?kMAAb9oc5D_Y70csywNghuZAID86kJwFYPp2W2E zv+xNF!;*i8XF~Zp`m692Ap3qBUXG@;`96FIZx{a;-iSxLpTqO;7}kcvJ@K614vZMG z?C8MZ3wUJAV&G-(Sdo*K%toEci|cJ6i*uNh=Sc z^(2!P0To2I_8bc_ZY)2Bb95){Q@QPM{TnJnj{K~aM(K8xcKsl1oL5lFKpoTC2zD_M zrFRX*gVF-QN-rR$e;2gDrK?idZJan@rZ~Y1A=>ZQzlP|R6Fe899zo|MJePvcJqXdT zkb{&{LZ_p<0&NeKP@hwI98irFe8f`S{y3#$prXi3z@}>aLGHS-$|kg7stsNf|Bx@> z@;dMYq8D(uL~#y*?ZW{*gMu_)2cwZhXKpye#8qM|m|z zH`vR)1!56ttk+)X<(b}4!S=;Dr|-X?iS#qsm?UxEusv8ZB4kHNM96~2g6pTfQu4xr zt1yrUcRjiG-vDIAruGc@wQ#*2`X&y0f9?7TK1KDAK@H-Qb};GddTw4wLD z#4m0(!JVL=-Ec)R+*OT8TL~s33|s6aBOUNI(>`SKuO>8i(ULGmsJn!#JPcrcJZsN^ zwK@%+E6sy_n1`{Ac=}0PtWbKbw_Xo|wO-BSb~erNeFpJplwWf$ZrtpXlT)64EF z`q-Pf6TE0}i$eg4p0DHkAu0-CecEL(JRyiXzRQdb(kwF$K~6i(I?xCWkg=_Uu(0^| zIdoIX+YUdH@d%3A;12{MYNP% zVzWa#?0BeO*rdt5j zM!E!G+yml_C#HP>E>)4X0qX2s4o=o>&o^({(4hUV7^u%#j)xkpw+IjM;_QkYq>Xz{ z7cccQ!gI9SWvGJ}PCpKmY?qBVV7i#0c3x}-r;V4kn&p9MBSU|Buo;{j4;&fF0Q0*H zJ%AC<u)0aUk-L#X;Phev2_-ZdTzW1`F&;KdJU ztj)_~rv)2Rb(KYRU_@~57pYkV1oTHaPyZUnU-!739(<3Ugn?|{Y)wsb5 zA=Z&L3c>p@jr?MUJHhkJdr8 z_-P1<+XHU=|NgO%{NUtg;|B_Eh&t{VTMeE9YxQGA-EFi(-|qt64S#S^&SQu4+Q3h2 zm=NepKYU%Ln(?_9DZ*imiX8pT{Rp~h=)cjD90W% z9oxIBbU+~n%K&_MF39wY4vq9U7aW@I2|#oFrzicSL$kcjaR=c5CGe9N^ObYhp&V8E zAZUh9jSo^A|5CI|w_WQOAiF;m`I!Dz)qPi$BOlT8d2oD7YLE+;a^9pWQP`IzuX?D& zvAi`GU(vqrP>l;vfQ?aQZ-8W|)%oAbsH+ZD(uTKrsu-Bpz1jslT6Y-t&s{YUnHn|lo}THM?wRSyVRv>}qJZQq2Fy99(=%W=^`~dL z^G@$PJ%WIMfCvHt5+x}hK@d=K5J?gxXAn_Qf~Y9M|5M$wi}&YwmZzt>y1Kf$y6O$z z_xoOga0*`6+NT&r*u~u`6=!@4K+E6jc*tY(ZLVS8P1(0&Q?5816Ez(mg4SV$r{_Md%bDvL+ z^1XEKI;HnEfSM)vPjQF&g18Sc+l$R*!w}tMZjpr1127qm24-6EZtgSHa&6rT9r}=> zJew>d?CWrpu&*E1U%*ti(}$_c9ZP&Ijc-_vYAJKelyk?LC*=%T=YQL?mdi$jqW>%r z{na?e0O3Pat4I3=#6+F_*lmmX{Es-&dvBKr;A2_uB)XO&B6Y8!jk*&wl=$bp-}U}} zeqR&QOn4XA0nO~7cHD*9{(zX_5AO)TcyiUYfOs$Pn)_TXcfjq;|nQ=$eXKr zNPjNuBGbPFP%ILMxL%7L42UIq32l9)m#z3)tnQ>04w&K>El)7ddcFQWlQ566)y#II zvs`Bqn3Y>#ifMtmNE_R${PuO1%Je=1&c!(J(_LCZ9qVxbso&_AgF!v$yIlcN4R^^< z_o_j-f#A;u=0908KS#jy*7)WO0WD%>KbkS@@(yDA@Og7X% z-_;APjXv>$5+LAx{1UZJ3m#%k(4*h^*q1D9VL$6g?tB~g(JwL|msi$1H#fYpXXTYN z?A}Gydrie!wHKm&8Vp|-nd}v0iAnDWVlIr#fc8u)`8dcX=%<7X5i1l@+1wBm+f)$f z2|dW+2w!|JKxJP9XzMy(c7IR|HyToXvk{pD@XsiLN$sfr$(}@FnMUWJ>_V=rkn9yY zuc{ZSA8?dr0@us>W^2)`TGbhMtq&NHsWVbO#1+ZK58N*h} zdQFGtNU75^}hG-aP?md`UYlwfw7eU)9Gq~dCv5A8` zml<3DUA6eHD&s^3sOB0i&O1A+WfmyqJU&fv8fOsFcj<8y^`klvWp7TV+vb@JPbxUb zSXnYc*%Yx+c<1U~l1CXCBlDlC%^(Iky{}fTwgfH0(%Dxp!yoaX4gkAYzobo`25yhg z;6tjx@v>x$hU8f(gNMDhKM{O_YhqAyE$8|S6t(Q7<^l{fFeYKd3)|<@mHoc<)IcPBG5(HHodkZ*D0#X zr&Qp^KlxIl$*bK*a)dsQ7bw5}0ts=N1VfYXPl zdTC*mnJ6QKO3q=E5l~A+cB`~bn41>rk)0|XSusA0>+fMq9x6V2qrlBjH+X$-61YRO z_H4$^1rfILPBMmu+)sIN-ESuzsZ;gss6CWORsNzxd5qV*@h}@lZV?xIeQQ=fO&=a7 z4I1$ku~o|PkVCOPCF9=_Z=#uBs~mH2<%Q65b8r{v#dY0mWn3*TEWW=B;8wlfYtJk( zt{2r97Pl`oj7zHeqU>QcjH|1DV|R8bn_Dgdp}*H1WA&~?H6g0ixJO*>y=(I(`w?-k z!oH~MYyJUWrG8gLF8gD9my>rz+-);49$|y@#;b7**}2%(WifmJ-dbLI)qTs9=PSp! zER!ub{!Qlag7w$fPTYPlR_7=0746hJP`GEl3B~DW;x%|vM#-@Al?G|%Idzfil?>EQh;~W*6nbRH8AW!-*y6o?K}|D`hZ$g1yQfid7I#eDa2RawNPtG)zL zXEyqtSC4#yJW^Nr;E$52@4dguvS+bIo-CFHa}jK#bzV`IsrEBPyiZNMPm?s~Qyroi zFnsR0go_VJeFr_3SzLsk?sScpGeF_(J zH`$22c&1Ddv$0a9Fo*7OJ*L!E?>(HZ_lNgxi%W^ya_$wks(GU3)#cbbEsRb#VS(}5 zFWw(8z>}#FU?Amvw0Y#*{XKj}wvA}+jjM;>2(}aryf*D>)&t_g;H~0H?;A?oWUxN} z*}z`>3`($gp4X!8opoN_t-wFR5|c$vUi{)ub+`BIin_dx=!>^uFmNM}T7&FJEjUu#i5(~kNTe5Nq| z?tyJzw@LAJO1}t%yU$+hgPe=y!yOCvzUbwcfq}lr7<-C}j(|y5uQ7@BN%yuL)z`3K zPE=QLjONdK{bgNh9JyIs?2SR*_1A`Yoi7K6DdTkm@T61WA}`*f^>yL1K5_R|D)pC% zWffi$>)J8?Kl4L)hU_9*J`!9dVudyKw%+JCkr$rZA0FI;cEQ|q#6BYtQ zdbtJBKy2pF>OKEuDPF|WDL%YTk|H%GwJ$M=dA!*Krur8cy@+e# z8-hpb7xht_z-ty_x-YhCH!+?NSDJqoH=@6u9RiI#TO?jS{z^Lp*?@9L;u~aco{3JP zOnqH72XoyBEs9$5xt@LlP@bOsEr4`+AF&2LRdCp+3OX9R(9aB2u+vZlCk?jrN&fVy zfLQEL{;c9nvEcx*>k^dj2CNfUH3E^7gs=usFAoPy4vz(f(iOL_mHidS+czfuPqg>G zx0-eGV3)6sVT}3{hN`~uB97KbEThXci^C1d!OED}E-oWUxTd#$C0!ca0&@o(!eqr@ z<<)aQ*WI*vmPhA=V3j%6_x_M6hp}#U+#E-{14?v5kHO6-746)09w3*zxrGZ zO8&%a#QOWwoq{C6jbjWL5g4g?@Aqn?aTsEt83fTGjajgD%SL;A>`&2=KCDFb}){PXDdU+QA z&^Kqq(9j>@1{`wQ(HyQrX&r%TG z2;Yhp`^+y^Xyf&-$RcQ%yZjQ~EmCy#_p1fRy}NsVv(%_9D%4u9FlNmSXu@ALe$rvB zg9Mv7275TB%5DF1O{kUfnqN|7&vPD8a;Opsl&E~EYKvUD4Gl=Fo>BD6#k+a;YiM06 z+SDl4sgHV1owxs3M_pT&{e<$~e=JvX{4($dk%z=BHQlyw7wMRibceY6X}VH4)mSNR z%txa*`QDZ)Cme|6Wr`A~!?{PGj`B~a4=vtF7ymYX)#QI)R9}V4KCoOf;Ll#I-B2}5 zUYmPm6rcw5*k8GINIkduk7WId1FYgc8zR82(jf0=Pd*{keG)%GTnGG6?$p?gi+yDO zYp=rLoIc@QTf*0`&|gzH)i-> zq%k(6(oDP`VpbZXLSmd@PNc*z-sAs(Ife3oF+L=Q2ZJL>l^9eaeARjrc}YB^`ip%1 zgtbsf-;wz^$`vZq<3wWttfc^tt>R3f+l}?g@ngWsIZ1^Vc!S}-Gi-V7ZR))QQcNy) z6Rxa2N7?D|Zh8K%IFTD9b^OTX1)r!GNLkp6EqNTPd^gDOX>fM)bYmZjvC<}b`_$oN zqdCR+OST2%a=)=YAh-FA6#+RuU@QvANdb(3m7Q{RqUX{Oz#WA_QDKPiHKC*!-{^8V z?ZOAIV;ZciuErqZVy>Rp3vdGY$9u1&DXu39)x0sQZaxg&AI1w-ay5o!=0l=Y<}q=T z8ZUk~fXn8p%uC{aULU{nuKOhebm)2u;rd6J2aeoZQy*~gJl8d|5aX^@7L?;Mk9zyY zAI~eBt&JFYt&K0~ge*)@>F_$8yB>j}g#zx}U>;OcyB)gU98GOWw6DIyvbx_%dG#a; z+_K_*GpM{69E=2}xsUyITr-{8QoS)yAX5uJ(tlTY?O+eg#enS9d!OZfqvqhfJD|aP z;MK2I--7zKr3&0VA?-B^*n=`PMzi>Ur)ZbDZJO<>{Zq6r>MmCmUKWpda#zGPr`CI4 zi3Zmc+lz?DprELJuV~Gg_sT>SUSa%tu=J;wB3r6pM>pWY4KUO;aeGU4>iIb6>-L7NNIU1 zCr3o>9cgf{HMXV27t#Aqrp3%yx_?Ie9&5KHEtbX;9RC<^cOoqoB@*0YXF`>9Os0QG zljE)aF6yUrT051}DIcCr(B`!CXl~APT=bz#Ein=N)C^yvr4DkekClhv2r?c#WQuPL zwKtFRr}1H~_WzkZ__u&g$(exn%2gYsEKf?;vG~~f$x?KK4`q~ZbDl(S=X~%!3l-*Z zz8LTQIBk=_xCUu)Kwj@_|8(nIyFi*t@gMqPr1jik+==_)jX>foq>g57oDe^maY{Oc z>^Gufcqm2E&vl_T<8eq>@!nA}(HbZDvB5sT+U?yVcvWlx`f8P4m99r(Y2KgprIKFi zY>~+QNH6ZauY{L@)QehTy0X)~q!N0krxI$er#}p0OT|34z!zDDwBlP%`vc7Q*dSo7 zG;z2~%_sujMg@Z@wpA|LWBrQ*-1~Qay#j0|7Am+&OFoFM+JC+K*#fcXJo7Tqn59g; zgF1RPRrk%8 zWj<4UIkVBvA?-)f3E~{@E!lD0d$e&?pNh^%5i$c4!sl8Fg6|3XvmF2GvpMeXZ*W$* zs9uFKe4ZKX7!;pD;HxfIeZ2IV5T@%5vKq#zky?I$b+2<{&>G_X+yNad z24$Jz_*dN+9To$96>o=Ob_w?j6WwNvB$mOyk2kz7lG`Ldz~BV}oo*2}*8x!^?8$0e_yu@3*zw zH-toLIn1^jG`=Q$!xrIrCyZsXmnmikSTT#^0mS5vaMhk#2V^dlwFHLN-P&_FEcFB) zfPFfKva!Ad4uIJ{R3-P?^D681@KaZb4zKwVy>Y?%(0w-&n(0T;Lq1b|Zgq!EEZ$nV zMSf{vJ8wJPBHZ%Q?NDJDt>&Pv`TsP7j2D5v@>4XskU_-Ww;>i(_u6IxvF1hl2bGVf zDSBgn&8ABuSd3HzR#Wb{UT?(BCi!9<&-0xwUUvaCk;656vjJ$?-UMz$ivpSNu1C;T zN9bX+)vbCt+UhT^>^|8r31FCsam~ALQald++g_(!R2I9(TgCXqrrtM%vY=EeWT!1WQ6cJu@sQX8E>jnD_eyu(5gVS#Qc4*$sC}cRrt$EqcogQ+9>Se2jvw zWtg&iwaf@tE61X}TQ4wuSNp0BHK1$Elelb<;VwyPJnJ;F=aa5NHk_)sJ`K1b7!O3# z8A{^&MYC10ev^0Ki2EE5ZYoY!Dkyf?TOe(xkxv8%dxuB^u{-CfIopc|pp zW1C)~RrA`s$hCRd#M?Zg7LlJ_7O!qv9)_;*T6YO3;*6dF6!DEO$ngmuM)k!;!w>x8 zm{GO%mlk8!>}3kdoSUI=JZY>wZ~J&?`rXvU4%n=3+vSUdy1uDrzVj1-d>?DtQD4bH z2sRCym2H~eWHp=PXGM0e>nHR1vzBO{IcACH@>?uMB7=cqnaoeM81&3&j2l|MhXvLt zb6RPDc|xJz&@-C|i`Mg>hWP3-$jifgc@Qa!efiT&GhYf$x(|%Zrl44DoS?YiiQzvam+D(htJEf$zKwALEOl&de27W+}EBxr-Q2vcsX#!BPXZ{pSG%%kKYp#Djwp3Ahe zTt?Wk4@ie-5w69m+06ygd)JxgM{X4tcyeFjnh^Tx6DGp#iv}>C|DgS;zSMT@CS<1& zud1PW2P_QX4KmY1L4fis)_bIr+JHN?zfxMZ(3GlAWkJbrc$-Jdw9m#i839;PD z)D62at#Q!9Poe2}_X=K50v2(HE2^q{+oGKi?IM2{Hz|FU_VVBl);`Vjn>0e61l6(HV^%*zzf+U=qd6zxx#s?#z7s{Ve<#2s9;`J z>#+LAed|(H@E2lvTPhuvx6WF6f}*{(#^JWpYmb4=P9MQM@amINllnbn7*pwZ*%*KR z7RhXJ+q%S!507^6GtbhU_^M@Lsey;wB24OA7A>{HlbH?goV8bFdrVp!Dvw>6M4VS<@DmWQO#Ig`J`T+1r(a| z?_`g~+%-bw=;1ey>)r!jTg-jPmVh9hH2x!>1xw+bRC;mV&7M*^QR#otQG_3oa#o3D zjVmj8{dAZ{g1`7Ki3e2e4Q_5vYBjEh&H4$#w&l}HsZzYHdp_wpP;NV{K50z(Wd2~` zC{|!RE@_njQTJS~w?XJ@eW(%0(FM$Pqn6Lxm2ws_zf&t&x3&XzSTpiGKts^l4y> zoC7IU5MRCcIEW{Wd&i{zxU@P|NxH?d9n$)t@j6BSoNi@buQWgt>%R^1zpRQmLq zW>pqamTViwTz$W?RzItVmtS!2gZ}mB*k))TUajn7^1|@1aB!I@YR?&aAoo&U1$F)9 zVLK=^hH?;DN3?9g{@O0q#gqB{J2l8J54>JPrXL$tR z#LPTNwVDo8l+bN{%Zm^EkqLP*+ckvF37DUAHeij*iz9&?nz0!jlNWEBap;^+nHPSS zgG|*rofCUPiO+MQj}@Jgg9|D@JSX0=?L#?n%C5ODCx(Y3XS3qNaO~Ht*c&eN%oEfT z8k`erBcZo*;$$SaGbdh;8jEsbW;8T6CssM(*K%;I^7(a-g+I%Q0Wr4x#j(#cc%r{Z zng_DtWU@8K3sdIqtT>eV2gk!Qml27(C-V?)@~ln4>g?XCcTt(rF1tuW8~Gb!>#iGo z=uOiI29KHlmd~KcGDP0{X)L&51C#anhA95mKWC7)Uam#F=|pl5BlT+6g4g(6uTIHu z-$E|)_|v`dE+KP3A3ZyQuyXyvK4JW}Wd|UV_Qm(vpin2slVGI$6?@>h3m8jm`F6nE zV#~3C!YaT~fszjusa65byLUo~)0UVRD(PsGCNyzWX&V*0El7o!tX1ob%K@VdT~UI% z@2UX7IzT4T!8XbP8i83S_3tDG?{5ubhF_jE$kil=`0Xiv>>yRU9&@F{^+!7F+EZi! zX??S7O@Lh=?SL8)&f5Yhr=eA4W3PKTs>Zp{)Z}aXOqNg5mDgniUzlccJVoQ9b>9Vf5iV^VAL7Tc zks!MFsEiIktkp_TqULHwZ<0u9Dar@<3ZMAJ5nlxgX>TJAll*AILX4hljH44(_w%@9 zn;cZ4evp-U5qMwl%!vB6} z4!qI+=sS*>@2~xV1H#Yg16gz+IS|fSGd2~fYSaAC5eH0jf+I!*%f~rlORzB95o1Ha zF^SwYza` zlntTy9O^SFVY|O6531ma%IA2vQ#9e%6j2#Tx zly8#Z1qx-a)+_9^P3r$s+~=M5Y;z`?%|9(P(=IX(HPQRB_E=@1`={5QXX`Cptn9z8 zkWCwGk7@(9fAQmtKY<t*S9yq>azaOgf-gizx5wZi*w&T7d4I_$5W-lY7xu7Sll;kDV06*9U10uEIBa#zj_TVp7x>`)8IK{j!J?P;c%h~k3QEP z{k_yirR6j8_A|^uSLZvbrvD|ML!$Gls`*p{Y;=9>6Aznz6HgXYeU$_KI)YPztnv4? zLx=@bv_%R0D4p6^P1+lm(8s)~;k#sEwQS!su8a+ktC zS6-^-Z8L%BU)z4mCoX+g5~6fg)+Ziuxu%0mIjBXEr+(9-Y-uES+(B%&j`~Ue)VhKy zc+L4pRWFbyNW9XkSe|BXC{Fzrtn9O;&APMHo$}sy)0gGGuU4x&QkwRp+m46XiM1hp zr~5nNwtF6r{hU(Vigj4;vQA5JUWNPnYUVYzX6$(F#tVt)r~trH9L;*R{Mc_jHTqSO%Sj6w#I ziI4Nxxtw=NlOfa7^7uo;gYqDgL;do=ctgGOL>4;T^J0gVdo2$uQv7TV?JjmA#~RX4 zPUeIW8JEN8dgz#>Bq>I@o z0^Eiyo=SJD>#!Fqmt^(sO1%1l2{>KK$+o4APr<4`x?HS{hR2nQozd{b za%j(vZn%&k_cMGo6icP$4NZ(6n^(E)t zQ5LHl8}RS)QMbMw&)qAUU^xm^4+d$Jrv zo^!OEeLnkrIjq0V;c~1x*+aa0>Fg`#xwCu9*;kzH%p@(lwVZv$;YEL|W!IOp^E<1{ zvF2n~ma7~!OoP>Wc1bx=NX~p_lAfJg&P#G;mBa0voykOk8CmAYe#04Bj#DH%xE%kMn(OcRv&{0Pey4Z2*yPW?QI2au&DXAhEHian z!1=vQd>qLBR>oT7oG3%9$bMfYx|_~dW#Sz(ySGftF`cbt%<1gLGID!3tIEW0X7;l( zF*NARFB21k**RrmbGVx)^8B`|bhqC?3(EgmBW#VWk z+qF#ewVX2rG1AJODu_jvbF3iNTiNdl;)LZKD2UE>c6Wi$N@sIHd}L?W7f4X&tSE?s zc6Mn&bPYRm3t~VxJF6f*4m(o{_>r?86vWqIXLLdQ63z}Qh<75+fP$D1$@VRX6%nU< zL2Qd;Un_{;BF^bj$W*gGm*QY{ejrIvG)q>aol$3BsW=kN?kpvPhqI|v40Ez;OCeTr zmY0exPIhsrIORB>l%i^8XOiG3=1eB3Q7k*5RBVqqBTL1%vFy-N@kZR~Un+*ivwg^g z6nDCnlIA1ZsZ@L)cYZAqXX4qDB@nSXM@qzpiR{-UVr|0NQzG^xvfE2UkEFAqL<~-* z)|7}@NoQG!Sf0!-ED?v3&g>F#Dw+L=vngj{2`S66<4VNJlry|UY)@qemx$9T=dBX) zMmpQ8L`+IMT}s5H{5)%~!_Komn`O@#l}k;cBxjD#i|sj94EGyr~j@G1PC??f&FS)}QgNjku}ZEIzW%vZDB%#lS5B z1&}R~%(lsWRo`Dy@QptjTcVIr_7pdhB=;Y3kGzR229UkV6iFU`k@*#*gVc;gad}uz z&4?>U33(dV`;3nxa)&SaAwj;rMZT}&Vo@+Q2|!TToF5TGBGv~HsCL1X{f|82`K%i~ zE$&vfZ}Of!bwd;|KqpyBq|q=uTmS>4@u4Xpz8(o|Kuhloh+%qqOF(?2Cq7egBF0=m zF+O7kpcr3J1-JQ(?*np{VSJ^4GZu`s8~m}K6s@ZTpynrk7I01PfYQReCs+3c4|QP_ zjOO1;G4%G9NfJZtlSUtvd(~w1>!~4}701b|%X0g-QV{6Wo#NIVugO!gIwJoN4IQCS8O1vI ze;L%h>6(GUK1((4z1xb5a(zipnwy}bI_I!6PLwJF>~k##vTNVDdXKyIli(P?xF|Hx zFaA`Qqb|}yx1J>HaQv-|ck#2rt4Nu-TCTg&oSbg>*R?p5TvPR0)H$r@@NstcrNHq{ z^yP3ouJPsYn4j=P78|USvs9PqZ@f@GL5d4eLZ1r14MqwP*)2c6S&q<}8wOBqpUkaN ztXO}=7p>*MOLx%OOUCQD1x#pNsUNfxaXI>OIIN#l0;XG5=GyObplJW^GSDtEcU3wV;->2EZ?lc@w78hZarK&*QS+Q0gI<$2t~mD_tY8m$2e~bPiftx~ zt)Z^mG{s8vPxB`!r^_6NtCZ!x zvJQTQOBPAKwBF=v*Fe%&nbOs}t(K|chYem`cR9MmQ^jWotJe}Ql(_4jpB2*0zyiMK zoEqrb=`U}BNBa#~z5yy6V7$-^DX6h`V>N!X-^{vJT-LR^1W5%X8pi5qN!T{xL1?V-J&h+ahwy% z1`@|?erFOXYl6(M3@=dNC;o9h?B=*h@Xg-`7{e>GU6TSly*Dy?)QPz9i5KC+f0ntZ z>I~VVlD&exL!Q@K4TkYVv)_uz{aVeR9OxwOCk$T?ed$1c62Ue!+gEb|NyvP8EJR-z zxm{7>vx7TSHe7o%To3-xrYJ=0sU=Y{Fp%F9!6T6;qr#Vg{PYM|rVHH9bf2i07iu__l(-?gS5%C*^1nyKYAZn$_-l4uYR~Nm=9wlr@j1-=Z{*wIF&vm%K+H=j%JqpDP)c@~ywBpu}A%;WAJ zuQ7+zSUM#t*IHL;Pf{2dwZ@&r+l~?D5{0I@DUaLrKZP-hFE9a0ezwd*1GzyamMA`- zJOF~eS{~dx&^1PKxt7QDzfW@(s{pJ7Sc@+D28L0!dAVytFbPb5z?{rWuqTplL+bDQ z&=~Y>N=j<90~?kbirY`~v*XOvEQLnGsrXOi<9KaBs(Wx(Uv&*iV{oUoU(!wpXA(H)I?8I> zbFAOympROC5C5FSd}^G@fY6B^$%;)z;_EE&{n7m#`UlI79NLOgrX;FPQw z?j&K~oe~Rv2GwrdKRGKV$Nh`wdE7rYBX-B_QyI}I;s25QCR$C*iv0;^Vn&=uB!*nl~G_CoweXupn2LWEKwu%&tykdGZ#Xr)`v2I-MD3Z1*m>M7OlUB+5Y-t zF@aE!wL{HUweBks#Ccvk=5_kwc-1H&TU@x!EDy@Rq=n` z-cLI(iif>p@IccQ9timDi^eqpAgp=#GZLRjjSuvsQi3)n;4ZI zjN^%U{s2o4^<&<-E{Mt2OF}_By#B>sfQE{=w=;G19# zt$f9-8`LG1>ics=lz~BMa1OZ3{j*-&I}+V(iWu|B=K%$7FYYfn*Eg!zZ0|9DRAB6S zZ>tz__cg1&r>+T~A)eGc23fj!K%)b1s$Il=uHYpx=He|yS*pl$rM4?;WLP{MfwriZ zv^(MPlY!4jaHa)j+K9&?MV+DF2w?B1-bn+p*WX`QV8IDue`tZ?Oi;2sP?$ubuz>x6 z1@7E9Y{^-s`LiWgnhqE5Go6zbNlfAdDjo?Mdo6i9sMd9eZMIsnqxCTzmi`y6GYb*0! zaf$NDsCV*^5D!_nS^kRdH$;XO!RV>{7G4}SmPPc^ux-T2znw<^iv<%Heh!Ng~=TDue( zL^oge$sxMg!6(P-<}bROq7S37|7}m%88e-I;?di%oUD^3WVGMQ7{bE{&BVGgM@!)e z*`hgzz{x3H;~m``>ytCEWcn~7DrZ7fdrA&h>yp)LpFYEWQ#0Y=17g=xoDe~R?rC#RQmr}4ca|_(%PdNCu~Wseb~4KXQdxFZGP#vc%0{ezK*{qj z!NanjZ3KIBZ6u^La2$5Vj*GI)3-B_#0{Bw(;-wzn`5%z;YO8SP($x)(C+RQ={ z4cQA3>7&TIdw5H6bd-MHjd| zl6?Q zbzXfVO(HlK|JwMh0wmswNIFD|B6IVp5Zeac>Ss-Uq1{_GG^)+uWi`j3$KU3)aaKMe z9wRoVIu?#8GRB^#mHW#Fi{}*X z#o7&4R;6rsp&Xk;zp8WWF|{)%q`1OD;eM$cYsNtNZ1Fl?dt-}pm#K3vs&fP6bALR? zvU!=clXKOu^9__dD`Sv#b)U?4s?9_23g3N9;=o3Ich9+Py4T_Vd-3ic6j4CsIkteh zS>jBtv3|lg_%H~p-SRKR>y#j5pMs~-V#>b!@ENFq|Mwhsxys_EFW<|>n~LXhuHI^L z?pj4XK1{ae`padiBp78A6G8gBLc(HmnQ zgKeva68X9;>NlQ_nSD}R%W^^;?|1Ggah>x3%^88=sMxb8aPm7SBjlno+skGRB>gUnWu z|B5T`be|6`lINK&vwUtVA*xf)j4uI^?u0M1G7gKI;$T}EjLeE7uo5y|>@WE5$3#Q> zPvQbLQ?BuNYr;&w)=CB-!z&J{CD5b0^wu znPR<~LfI7~_zLeZ5prHJPb!Oil;0C&`fGT--RD!b9VMKkw_+b+@A2+&Q3Dfg`3|$Y zPu#}}H&dDzo>|?AU?XPncOA{+LQD%Sr%Kn*|#D$`s_x!Eyvay6c%tQh?@Q#kZ5u3|?85*eiS_)uffTnnD)@UJ)cWb#1 zbkI}(_S!Y;n61D$x%a@7#ahQ-xO;|h0QTV7TJC5X%vX3{niqUKa78`5GYwxwZb@1} zz6Pa{J#t%8P$?qz_x9(GrBEbuZ>Pj>{_spr2EskkVtRlV(!~s;6OA!*vy$RVGyG{v zbPR@9q;SZE2dBjBAXR#X!f&R;h)}p^N-PfLjwi*DPi@33oy(i{_?f#KCB|Z&DnO()to7d?YE3I=PPzadDmH2d?K->x^(vH zng{9^dIZHYh2QudWZ^p#m``D+35!-?4WzSL0rVxl*ci+?t1!TQ%NV~kBwC9UYpePQTJ%-ihkB?UHmBu78gP$pw?q$bc@QY zU09@}(Zq)Xk<=piKMrbdR?f4~4e{lgc%VyVJE5!M)1al`OY+){y7>5;X8K4nOe}?a zFSEAMQq*T(<-WnDX%_EmloyTPD#rck3!qh-CX)+DmMT>QCm41}Cc2T;ASm9|T73b> znjRfW2&Wz$A7m|wQ~y0*oa33khj4})cM;#YDPRl>%54EK@Rh5VY9HIaz&hSGHWVc_ z37^W}&8||uj0WX)*zE)Qa30p?y=SKEe+4n za;=VP=d85u?xV93e5JD-soxRtGW_Vd)k^Zf58#$Xo0YJxJY9}J|AwUZs@|1Wb`4r9GphHuvj@M~6OU-Gm8plKRM^*Exts5VS z;ScI1%?*ky*#OZyQihi(;>Q|bS&_4NGu^Z_*1?apJbJg(LS6kySTUlXH+4K=kct>X6#23-&cwQ7zGD*T73XVMvEa*OzPdR?LQVrTzsiGx0Sr#*mzoAm;TGSx!{()K-nMha~{6d{$1_XH9Bc%IG$Y6 zUp{GJ^!rD5?sG;4vF**$G7IC#ubJ1`#eMd)IAnXqXPEPh*Cjue`7;;>VV3giyvYaHv-B}?NN>|-BcHncMwZw&`u!}1u8eH#;#BPKQXM$E-=@lI6l6bB06?+_QW zqq!q7@x2r45f|HHHg&#=y;%9YN!JdOA^Kpg+vgL-J{O;b?-^<-WY0ZS<#^|=$)N9l zE)xVO?5HYd>AX#)vRNV%2*F^e-FbJh8=qyP2_KYCBeSp9&O=WBRcnCE4hKJx(Ld|u z`=AK)#jr!~_r);fb~MgMW}jsILv@n5n-n)f$6;a(`9xY6l$I5_B6(y+bh3=jQ3>79 zw%qy(pO`Q%KKHKN-&a-r=38xN-Y2f%<8<3*{i&Ts#2zL?2>s*bEpB;z*N>mUVuSY% z_wJ`y!|-F&=5VB@7!jsxX^ubFsIJ;+Ueps!oX;>h9c8zdeq!ggXnv0OY3cns$QToU z#vnbtk@!s=9oD@+YSsny(1kinlTWK>F*jNR!CG?Bzh;q1M>;cAvKku>+U{DUH+f>T zXm^F{%yd)BF^iY`+=_FoAIJU3HwQ1ZY>NiARU#9)_lXDu>j$suu3;s3saU^`YeTTH z5$=#Cgqa8AB}7wo(^W3*iTW+ueQ*Zjn{}_R-7fzw7+?gTcVr%&jJ>|Af?qu;AiWIn z0uSh`D%bu(+x&FDcp{H0<87J8mVZY3O)m5EX)-;E_cmK4Zx`2l@`QOM=_79O_QleR z^6Vo|1p!5o9|K(Fhcb(l{h3q}7vohJE{!*J96k3i5Sz3pv3Lix2uQ8t-gc|%LE*eywXo1I#GuxLNXHaW&Vw?GT7`{lgoT z-SXmMJD%^6zF$$@t>fj9iWl=kR{AF6H;T(Vf0pg~49)i9Ru+HS43}Hj>mD#)5|8oX zRo`5GMTEZ=0d$HB(M}(P>_|SQ*3QE+@Qx;r%1h5JQL2rk;M;0_|9;8#Xn(2r8N6@p zT34pHytAU(v^yHi!1#O0C>bO?d5mTfV6{TCK#X*>3R;C7$M z;a=av#eR`%RkRnPy`tKA-e7xl$I|UHbFG8SPS%0^Co#nz*KD9IXB22d^)KPtN%L3< zU#)>6I#QWURQYbXLWcI2;|+QhEZG6w=D3ehm*XM+W_v+22Ik0v<>I$s-R0$kewY&g znOSL0ziH>@04$5tR>#rQ2Ve@L?RJ)nPENG}fRsA#Iba0LYa6kn-~d%D;L`ha4jDL znzk+N`JQ&YXr;A)5K#JGUHcCi_p&FvNh9S{Z6a`)qkf5JHdm2FSH3V6gH2Da5(|aC|fn zeJdqqnS~Eh__C4+&#wiugHmF0FvZz*!3@VUL&mCPRm);iA4ISUc^~vF`qv756L(=uZU4;U)iZu|SMO$qr6vN3- z^0{+^_ugUzD6-u7ZUS;T9&S@g-TT!zBh4-_0B8<9?MsjxJhr|FgtJS1(I26p_3=2W zUs;y}$Y8H|sir^*yMUuFWp&Oe86#snDNCzhA*z1ifiETaGoBY7+^t#(GGrh9DoQr# z=WG*oGp~wvx4P|nc(Uv$MGBdCPwmjiHlEEvZE}Ca>~lZY_+O@7ORL^#sHw$ly6A(-e%{R<4wOo3daQ-$ue0}% zj;8#F7Gj~FS2i$k@rf3w8cQs;$HW~cTZkhGzGg8tZEk5HCZ`c!eoL1hX(0w@=#Ds@ zZSZXiF(J3V)a%Q6Y;`IQ(tJ(vWSAWQ?CK^ne}?|>8R9T~W+y{z^5G`oxoW#=i-ifU zy#vzjh|lb-5{pDSn)t0FXMq+322}QW5r#!XnwG~ ze?t5mEPoScamfA^sWx;KPT}t@`zKu0wn{{F);7=J`3^@-!>{hxwC9bS_>X}p5n(X84tFeQ3l1(}MNC|-6xq2=} zt=iX`c#b8qp9~*REY2;yQc32T^2$EZ!W=Kx(Cpl{Jg(TXN5wVBbF^&>=0+=cmM_8f z%kSz%j79Z@N`gyZ4(X=VoU0Q7YZ4jwu3`&y>v?&uqnNDPhgD>mZm)y~(y&2D_6!7} zRqqcUak1`L?a{*S3YNLpw-t!1g$)(z+gez`>Q!?_1t}>F%6s|>6DkNIiuS1xi+r^^ zS76?Y9;^mSgt@XB_{r)&SHosna=e-tYu4;rL3+8?YbwMyL32wraWIseRZYBWB>`S< zw~|2q``JmL&nxZZLH53I@{2O4sgkqV6T`{T>}Zh;yVzHenlKTl%i{r-~I97RV;dgZx+l7m2{ z0{M{baCpwZu4HDMB&NB5wFqWCQcMtM|PQ8RVA)(Y3^N zp55JC+?L(koc%F3su>9UT<>OBm2zjA5^WIsqB;Ju>j8<^AnQPjJgZ{dGE)eeqoZ+p+hCuZD)}%JcoMb)*NJ#}7d1=c;fp)~`O+0t6<3tN4OHIG;$E)a(z*2>o6cqF)_ z4H&8Nk!?VyJEL2IPPdM?5(^x&dmGT{@x`shHpiUbMhuEMlzb9%dbJcsWBEC4#He^- zZ7VT99zWPpY>1nCn~1%M8}@K*vfl44MXywZ<#$0UxU;2Lmx`=xDGsO1#Vtj*bbLt* zCSd)=twgU(@=$Z}QO2C#LafY0H?$PnGHvIy67S}2c&~*xk*oU+W1i3T=eQ)jp^aEo z8e7>){8AeEy@eQ2u+Fv=9~3Y+iw$MwC#}WyGILW)@oiZxj;EKGb!#E^lqV-Q5hJSA zJ=(uy}r#mk>p@o=#p8aVnarV62 z_f5p-bZFO_f6&ehQ?P-<=TeEuBLKtL*vV)@_0jIO;g#qk+H0)?BB?k*Hn&a zWXxHHo7*Ia~d0Gn#lQ$ zq2UqkhvBUYL?7^Ls4O5bV_qkG>RXvb@9(U!%(~yxOG3O9c}wBnSRvf9STSc)Z9Muj zq_-`qx`=(W)muhJD$G5igIiYgXAD&Gf>%b&gj+9p1o)wwaciL-IjH!fS(><}no#0- z?nmVVrijeuTikkvqJ_+NgIoh1r})!t_mwgx}{-0(83BuTW0JGW3g1n zKl_aBVRGK7+@Kq9A}fo!)h3Bvw9G%Pll;VxmquT0|U`v&uiY_T_(;SKM6R zeV&#zES|JQ7&rfASHnIa%Q!kLV;C(?%j+;;?9igv7Qa=jnj_h?RMg_D#j&<8G@le# zIQNS?&~0ctb)CwS@LUaM%rF_7r>F$0*7NWs=F8&xS{*pgjrr$dkxCmq{0I5X!D+sGn4HJzzjB$EQw%iP9-6Fu&^s5z7IJ&v!qk&B9G?SgFDE>Is6Va zI_AZii1B?+tc*rB5^osIF3gFyo%G0@=okAhRfoq*0I9LE0W13vNjG52MOe>u&lsXn%J?MG%G?D!@&5(s#)R;`zM zf6P#t@ry!@8XQkjR+HVDD&D6(;JypR)7PKJ>+jkSx@ZsJaO|Up0X7ZQ`6kEd-6SQG zRT?6NHEAmTMBXA3^wXQN>01UPmipaC0B7lb1sn|la_Ql#7_CwPnga~EQ3Wm2xc5)V z?;fbyAj#cLm=C;D^#78Zqrf(vxex@$`zi!{s5Vmv+R@pc-wD&KzpyZbOjHX7+HV4P zgXY+4UVEGbalyva`5^RPnx~EP0AbN#EdmsDzt#rG=TLnJlKaR0D*=SQW2gD*wyXHQ2$uWFMIF}KB~32+ zN>=mw5OH%BM-GwVSy>3&Yhz!?0%oXLngUFGtzj7Q%E^D!lBMH}a?7dy6I6XE7j@BG zJ;C)^G=gkEMMO8h9HzYl2R)SSr*c5KriM6($Z^mxKMA9j-8>hL1pjhM#@Y64_!w-K zJh$y@#3t^tsm$K|yf|8R!8gx~8RfzK&x?8G(Y?=$)#bpe#H#vl$b-*|E$9D&XubB9 zMmwGtXK(os9c=QQbvHdPHs3j&j&aYnVrxyzM>V5cpAbiD+Pj|+uh+77J|X(on(Sxc zt8X8DLL98$VEYr|t@H5*iZ3rK-TZ_&e%ae-rRw_3ahZnjYnWzztFm2}9nlE8=WVES zVbLBFR0NcU>#cRmti|%rAFBG?RnuplSJep_pROh(_9^elyuP%FJS(ooou;0n3AySosjjY9Ycrek&5;$588w4TSDHH| zBn*sk@nWwIAK+~fbi4MnFhpYJm!svi=jtd~nYHGnhO1PRew*U+d$B>mC&lI7eLaq@ z>_5bv=yUYL5!7sB{)@Tus(6NNhO%1XVj(V8Q|)CF)o_JWnSS@n+Dla^Zv=DPKJS>DEt@}9nJUY z-3P(+x-eFX^e6-_dw*4bEAf6;;(A;yS#If1=7_AoRDMjaAi8?GuP%7s9X`Z6buRcs z7(d}ZsObH65SWzV{$^y9SsJ(!>eTBFEvbs7EX7y3N3YmoiZw>*Skfc-En+MO2b^_a zsRC={3~duwOTpilz6}vn*aSHl5BTrocxxbm`rFN{ z&hZ5E(Jx@t3BE7+aX6GfJML$>KepP5%@OgVeXBYVPLLh8f5hf^QpETyBBw>LZTw*z zJQ*N`hB`qJZ@BZk#5}ilsI{40=<+0A#@$bPeMF|b!2U0$xaY;4SGvz06PLluuV5H= z@-f~|A^&*B=IyQTRqh7oYr=KpW%!-m)70@=?XGW>K{v|rGW{Bk;Z^wx#HkO7lEWYOf@-4}(0XUEyWUa} zNQ)pJ#+8kS^8#tzy`~a#6-IPepvXMbJzi-8Zl;@7hFCa33r|$+8cH)@Oo)^F>&>65 zkI-1C$sJND5mjRtyd;j&acg_kba9;kH|m{M?V624&xi|HA~}v$H%CiRFT@4SJGpH$ zx7uDf8|dHt-t}rtLsY0|JuBLlJuL3=)&II~;{tZzur0i*O=DzCLm ztp}moyseT)AR=nPd1rknMPqNnRQ+iX`?t8*>(4kPv8$ZYHj`|iW?>2WRLfx}8KlSg zl-BFfx3Q)8tbP$(w`nMy=K9LsjR0l7aOVGG>pkG4DAKt9stz+fGd+2BW_Q?Kc9$$D zAPR_rWH6^w?@m3lXHIu#I#0gwvMC;Xn@Lox!pWO590kjU;RMugP&Lgp0zHmU|WkzM4Xb+UtEYMGON zE=Feax+7yS>DA|aD8F`aG@M8KSsQM!H_9gLd;-;TB)vVV{)psBYB0<#`UxG#bvE)L zM_K9oacy+kxbjY7w@KjPBhC+G@q4D~g~&UQ_4Z~wY&qbn)AUkc%V;y6o0)b77`mHK z*} zTlzPI2bp@_A7hnQ=;lpafF%FP?PJpGKE|(zC8oDYddK7?AS8lF_|%U=mHY*~>|6{PufEJ>9X_ zBz5nQeIlWkg|nY^#0cHf`DA8JbLN~ zUiU@1uYn7Gxp}|zM|=V;F(bNQT>9zMSYq7tT7#gq7c8c{9MAjL|77w!`$=%34{3&E zv3I!~FZYiRw}@2Eje+A00gZI2`mlc8g2(bHd2D}3G~K%fbxW@{7!z}BOw=>svkgVc*VHhYrmvY{d7>YM(Z~j zf{ljrhebYGk#GGz_?&eGH>wW4UEAlg%=|-j@YlYdG`LQ-K{MaK4)zGQUmdl<%=M{5 zP=!07jyh?L)T8Ubrtbb&8&h_{&e}NAl3Qv+hnPgzKjK6X4ZS_&Ki1HV)D|*#Y`{T)Ob=1)0ThiS3sVIj}r1L-2R?9QZshOP3bGKEw_Iqlp zmkO_-W^~bGTre^(=WNP1pr%KSGw8&pHP#xOI>hLG63|@rWu4_qbzO>e-O|y0-tzpvmsi0p7zt-3;g5 zIO7Q~_TUSWikbF0xOdFRJaLt$=g1olq5K>rnKCcWl2wyA5o=rgxmNeY@wGhhNM*Z8 z#Zu0{Fnibx!c42~cMeM^A+bjEa1DSXcu+Bay9aBi=L#l<;-lzObYA~r)juED zUqcPazsBj@1GEV*{`w%g{U+iDBpXMZO>c;C#&4Kd&GN%7QO9TLUs}TA)BFHGf;%)O z+vmeB$3G8O{M3@%FVpqnmTGV`I-{kU6m8N^tg`2Ecvh^BxwoY{2`;Fm8lEZ{z`3am zBf}DWcKMdvHoVWeOjvTv#sR1T=b2Wytu~uTG0Qg#scn?k4|l=e$Joq zV+(xd`}Dk)YIaFece->vX#O zjIUa#!{yO&E!Dt^Gd^pf7FD!*ajaF)ok2veRx3Mmtm73F1ZEak!s)ZWdq=&`vN#}N;YX7WJLw1t|}0&U-)6YYB$*&z~{;Uc8YGHtR_47Y8p{$m67i*d;LQZL8Vy6}Jd;HPwL zvRL$r7WRs(S7J_oqBmk-JN$MMSH|af*&EnJ2Z{fY_gHI!jx(o@=$eGkykZpKzg}#l zSu*>WcjDUIV?O3z>&`;0KL)>-ajkb<#eISGV#3MelbWa#$Rc0pIDkKrxFV7C@Gg_~ zUDXauY4QPewf~J*faSplYR2KLrA)Aw|S9xJ)5(=_FZ)$xaQ1#>Kb2O zb=pL3P!}N|cx^H(&xu^6F7$sFduw1V;FQ-T(5>&vDD~766n^pSo!DI3N$}eZDPrHI z>HIPaI9Q5rXSk7{fGB6AUcxKxEmO1|^VGvQM#+Cv`&q-c*TV1GN8eW2x5z(gvCDVY zJ!N3Ire3oOAdt`0$0oTz*T-Dh*C<;n(tim~x?hZ1bHr75hkvefLF`6#afNqXqD_2* zL}j?BCgXK`uP$_Fv^!|=R&pz8+i7Rtr8;-;%h%Y?sJ|lQQ(w$_ulSc{d8v0i>gD7}A>%&809Llu-nms>T&df)ac)zc{W;*Yhl}oF#9-PDT@^ury0KbD z>wIl!ZAjf;{{xbEi0ZMNJhmhZ)+ykUM~v78vWS^e^`{|ZtwPYRbM5O%GBzuaSSXo< zqi=;s+>Q|J-~SwJ5W+blEFuSVAu%%xjS`fKf#fL`&+=U$?>5tn4S7t<58#Ee{b$W6 zhNG3Z#aHWMj8ETG+D0>;KJDT&|3cT~=wY#k@eCQoGoCG+EuE(77X|akT=H~n$i2BG zG9yxRB|7KU%InFcRG~_I893u%4pVEjgsd(Sd`VlcorVfE<=#BDPPi+_nQ-9-UKc1C zTKq60$+z;BaW)mZ#ihVAoX0y5u%nRw{l#6P^)2-TQDCm|+C{dUrrm{Ff1q6wtbc*A zL&+SKKgK1dP(=TCGm#rxwKu^$tb#8<+@vo=BdI*uuNPy5d%Ny*dOc%S^K{IH_q)|; zV+ef&jUY!XJr(a?s?GxY7N?J$T_l66&t4$j35Vaqbd`?Np}9*~M|+{qzRg`}0?n9@ zZAoXC*k9@bCiWjX%fd3uC}5Cg81W${ME?%;KN`+z6N1}HJXi7AAxu**=rm&Vd|fa| zVBuj@@tuZ0m%`_jY|`qw{@#-^CY>tnZ%+bQm}NeIQP-+PB9zru4U&=nXca6CLJ8}> zAA~HkmSm*1+i`SQfNp;sXhOx{;3<1U2X83zzc?gB+zHZG*F~$|Z8U?d@O3i@qtUx& z25tLelfHgnH3Bev#KPJ`u)0?cdP)y{^08`}KiIz8vkAOYW&n&dOXk{O?<*!ka&IL^+v<3gt)S5B za|~a^O*OFTJmFC4CMzBNXux)kiOi@uh?prO^KAf9yOQ2Pz?Dz`1~ZUVwu?AZ8%SN{ z{7Mz&usbw~p)39^`jEN{4c%*}1Xm3R6a5IL_}9z=kR$JzcTt{Ti2=($$88w-m%5g< z?(hD3?kMc+`lut&#`XG{os<%csP_=vjx8)N&osv5QN_yX*0`K0e`=a^b|i`l7U#IQI_Od z;*;}(p|7c$^?qGQ{Y$BTk!Po}TE3x3Wx^ACQx!VS>kn28z5xD(HibwlV-fFkqB!8 znOEVM2&Bp7aVSuNdtr1iLjtBb!88e&Rs}O8#{4RnCb86uPVwrHn&~i@Upel$5bP{0 zUf#2bz9HkD9*Y-K7c<+&>3`t#5`GQu+0Vpad5u!nBoG7d&AuQMw-SH&v38ylQv-k{ z{jFrvsBDk*>MYF90;&rD4<VimcNkqSg zJAlCUXs~}&_lvStpY~kL*Ie!qbyoUz)z077W2IteX>r~ZoR18yH%G9&@Ht-iFzw8e zeb=Ao>@kkJbeu9%4czXsykvQd_?LvYPdI#zsO$u4u_gJEX$zy4?C)o7Iw0g^NxN4o_(DK(#io5g- zIUi@#=#aB4gR#hYGXs9rnV3=gL*dsmIKac>GHP}>G9&{({5*}}WQ|+$X%^eZ34i^isK!zQ_QQi6qD#%{d!&^Vcy zFxTrkyCMifi776sTYR32)AX9@F4UH>-(7g-(~Dfy&x*at6t;?(;IpjUQkVv;^gA52 z5Q*m7`H?Q9BiBxIRrg?IM+D}k7-_ZE1(PJ&+7irfAXGhA`~|V++YupF z-HoA|QVhFXIw_1w@CPB`uIec%BfNgX`N&(DuIph8@8(4XOgGX;4S=H$dB>xk-y?#_ z@}j@`@6+?mh~U-?gXNv>)2ztuNXaddsQ!9n-7Zk|NpRQbA;h15>PKB5;LlW_AikTN zXUsVJSpj(J9#cThc$U8S{fdD*q`t|q-JOQ=hF`nT;{iHik8QDUog zZc%5q^WK50Y7uwtT%{Va@N({zUJO|FD+l>Wgp3tNgf!Dj%-AP{?3pepq550#uN|!4 zU+eE2g7s_i^*YgRg7d9OEcQ{CReU zx(yEP#28aOnHVk-;~7ZHU+VKGn(P+{ARCM}$ku~Ro>=+=#`p~TQr*(-Shaie+@UTl z5d)sRNluY*xXW8IUAUxSNF>nrRqYZ0yjLfX5hoHa%L)q{y8w_M#dT|@_XnZTU>1+F z9CC|pu#3pz_p_aXyz-=-LhKtBsPP4(7Qo8;B2JMY$ppk98s+55y7(34XiHDs z0I1|MU8%<>kbwk79eWZM8`fhczzh4(Aq=!p$=&Sz>p{_2~*?ywB-dWX7 zi`n|2o#c2oO3|l(GNKH}NGpYG_lK1xDd4LCmk7okfti}1#?ekg9(#?mLtX~=Ne|Z( z%>KgcUkcb_I{B#m`g0qX^H^8z=I26Ul7b`|x}c}fAtWg;0HI3yMe}=2!ikpxrDUm_ z15Zy?e{z`5g{`ra*s4j!JhK}~1Z+{*xL-SOJR1|}a90h?&fQs;v1FwAy+S93VUpBW zVo+KuK$2gLJmKgA%@}s?_slp4KQb$yd1NQ1svj5;>rPaH5jpDROBy8hr`Qp2Pi6$G z_q%42noTBVa{Yqk&aj}oMAY{?>h~w=iSy0ofUrOqaE&J;Pn4tK{6lrSX>r%vt=GLTO;%m2`GXsTd6KZzg zT*}7+d05q64#wdITON##O_CTSbpnu>lm8*1Rymi!H1i zkR&Na{@o-lmi$E6(ISzFDRn3ke?3K1kuwrgts7oJq766kKJB>s3=t3Fd{9+S%=p7V z%;OKx4sVv6v*P|1o{v?4ti1QrwlelF$)GRLiM?pRI!=f#*(C5Kj5T7rC8$0Li6KGt z+ax$wLU+fRu`fv{XR;1)kEZae3dd^tC0-obAm4WM1(Dp@nI;%fa9nc?Ho7m3=s@9R zXy=c+__O3&3vth%jR+=;-wm+|`2BKfCa+XYcnP%M_PnCEBkF32!|88yULPSCFYzH* zsbIyNh&mZ`7DUt>$C(!a=$|9Q=g4pb0ewMOc$7AUU*Ia*$byVyS=D)Tk?A^xv+Odi;l79UxmdT}Fs}3J-Zh@rrQOR=!}BL$4>uxkk@vJB z2MOk~Le#IdN_y2K_*l5Vr`fGI+AENRJ$z^YnW$Irsnw8#I}0@R--OPD!Te}Ax2z_K z((_ATCwEI`)KrUH;T-Q5O>Zt$>!ZST-Ye#gh8a9ovaA#ux5ONn#N#ekZHl{GH6&5o zr%Zj4ke=*Il=LlC&nFXyOCaq_>@QVcBqLn=L(-)@G1X~&sXCmBaBcr|glm_k8}EQu zJrmspCwL}7=ZMfPS~PAPSNAE7|j=m#VS3+z-%$=PpL$DLiW}y(}!)T%tA< zqTRe)RKOXVi)QJ`j6#jt+e*}$8aFb1ip#z#RY!_DeOjUxl>q&dcaZRHYLBol+^#wy zpi&oAmk{sRWH{6?>?{0H=lWca&!{WgdB4w4cY`%bv4A`!2Ib>M>SaRuJ)Wk?W*NEx z;lRWThjwkmvnDi!IbYueSG$ zL5w7Slj!nCg+Z&A&aBgd<6{Y)S!s`f(3Oy)JPeRe<=GD=>$>a*U+I6sH?YR|=LlgP z=t|8I6BYgq>kf*8ZAR!5yB)*?P1sof{|C?qjd7WW2JK9 zFw@L+@DF&hQpgk1Aw;XPX$WtN$c*VZq!RkeTVmo1Q5-3O$o{j`P!B^hoC4J|Sx=HA zX#LHmI6vPtMY`hM)mD5f*X7?OHYPRP!1mHnF`oJLlDIPE+3bD&0A08}AdNCoaP`p% zbeM5EkA|~SXUDs&Kt*F+M6m#X>{+I}5|N7?nLQD;KA2z5(i1!zJ!h8VPKsa^$xVxZ!enh59!gT2 z9!hfXrEtgD5fVGGrFD;#Q9Ulgep30|7hX_68nUZol5Emxl(pB4Is~_VXw)F%K@YR; zNRel!12N*va$Ge|qDYrsM^ z!kK8;2X@DoNfZ=l=U>Cx&m4rfW4DCL-App)BSx6;xRYj%P`MAR z`@ca9u!{&0+HE7;tq#PfJ`hL|IMgHfJh!7Sjar?H7XHxRB}mN`N25;SXzXni;(8n{ z;Lo>>4pbjEkO-M8?6v8dr{ebf->30ZT&26J2b6l?X6VJYB7EBV6(dg|%52#{HXBL! z=th_~@3wJe)`rj5DxkQ@k~1dSdDvEu+U~%B?j1Nyw}BI`V{MnzL+9Q8JgjxP=(t3S zCx4c2`esy#?$XjkXrC*YB((aH}b*xz#hwDb_$oo?$<_9-dCe}>wfs`Ucz8ERiv z{To@XP7H1hUO(d#_54J&*@ga9y)K3Cz8c%|I}$DLos)Pd_B`2Pb%y0;dZp|hx**4* zat*V-@*F+^*jaSJR^i}6i4fh-=gT&>Xy{Wv)p|0SzO$I`n&>lv}1M9+>BW47L4tM>YmR=0w~%PvRHNqsKP0v2KJCAkYZr3v7{^F>we z!iW5nOK^3c|HpTbtkmbjKM3ezW#t;@jgj5;v@xm+!qlU4!V14a3|GJEg2Tch!$^~5 z8b|S)2CKC{K6M<_%966ugtNs*r_=s`#>jB zXXPKSlCKMzWFQIZ$g(_IKlma%`i5wbaxFNCrkOzjNpuOPl#xG1YIlRV-P2rSQ2xMX zQIhkxhh4LE|I^mHL`PYTU)SPHpR3z?ZKXVWas-GLfC@O$crRXksbUMfILGRK>m6`l z=?D)##E78DjWk#ly>t9M0X%98Y!$6iX8YyDk z2JL>Q^)|N2YB|u0(`TJ)8b^Wc;$p_WM@XceW%Zb+-PMvj>eSiNzW9$WSL*VDkI5tB zt~T}KvSJ<6W&9pt(Ca^qb`;U}yIFd>ki+;RDA#tV|jC^$T1@`7D`C6auP4#?OgKw1==mM z@6jFYNAz{hJ*WEb)jv%A6VyLkT`w~FI8&lhBCMR#O?1G`X5lgm;ljgzNDhfoA(MS3 zik3cDN0D7;>)4;dQ)0t_zg0Yqem9vXPFbXxYFLAQ$l4>g5${FgoAc*YvJ!?V=#jk| z`+8+P+4%x|c>#A5RMvsc-t|toeV(ezrP6LqI5%sTRn>P;b(>VxpRa2BYn{{7zEU+m z*Q<{;a>hbc=5~kR6*Nes*VS`a zyKZ)$Q1@{|IZx(69s82%@$-LQQ~g`|nm%8h&E6yZKBwq9by;P(WAXh;9HG=_y>Bpt zjpCXpApJBS>A#SgykjYE+C)bYcOxBoL{wS1=B!E^jE$T>S!Z!PF4mH=_jg^|OLV0? zxQBO)6yNcO)!%VaAu*mW`LVmE|Eq3jCrwFP9X-E$2JLE)&TcpHc9$*{0z2Va*`~{v zqeB>3bgWm5a=xFp4dGq+*eC@kaKgv}9eBxn(tnQs#nFog=p6X{H9EzH{*}I^@*WBH z6yaPiW@VaRxo#G;kMG0OpWY@;)x;-48pHa=AAKt5=pF##pZ!`u*olpjZ@TiBXA8|J zl}TQv&I@+ZR|ap^*Pr&S36?m6g7q}YpWjxjWBeU*Os5HccCoj>h8h0mAV z2+!$?%4-t$Mn4ueTNIe~V0{gJB6s+ikKg-_gHp<}Kg@6_uCeWf4z_sa89YoBM+WWL zjvgCCz&!OGxM#zKfoL<|FJYQUfon(+selDr3uH9k4 zf$Xd|^a#UQW$4L<^PZt+8P``e&2=R>Ugg6gOAM0#4P#DI2%%y`8;qA@qM9HanE!RA&)U)AF1tXl@KrES# zEHMy^I#M%M2uplBHbV?l>%tz8)Emw*Q};J8$DQiW$XgK?APC@J6mG~dhA>A?Hi}3k zyTr)8MiNOQ&6fA7nVnC17c)!Z9(J?PSYwrM` zb>%~!9Qi-}?<*YaoA)GY$uwgZ;9EXwH|`IIMc@cG zue!hZ!f(UA8(G3O>kA7qa~b!jx?idLBWOpbu*hXsCGnZxmYoh(Ba4PMh-4{ZW=o$C z+y>|S`zs<&GYM7bkY(My<08~9b};x$Hf!fkt#^o8S9O0cm+vjCBiTJ-;|d^L?$oi( zLQa+=Z9ocP~e?{4}=UM>k8gR~0Q>19W5&GKp!%&Ska5;ubQ1ioysjlR`nCz-) z;T+V@OT%>tl{^~G;AI>asXfkB8zK(nFC&ep@9na!`nfCKW>J6JEFgB^Gc$%s^?+%= zY3V}(wW{jxNw)VfVPX`+^_C_e=;emH!ijeiAXejV6L}svZemgz6Msc7hV?grfGlHK ztagX^hC-=Lt{U&!n_acUjePDBs?Q0Y&*hdl+u~#Kx$^zm(=_-{7WeAsLoU8THAB{; zt&Ye_f-_9dhki+?;fgq-ix`q22H*8c82U)>AVGa|%rt|x!gSYyH#Ird+e)pLeHuYV z+R0v3Z=o2U6YB)Wm0c_%Bs0N3*0s?xVf&5&p6FpDRvWyCs$+@H5AsdCt5d&;>loVs zZ6(_Mr=M}V;T0>US41j?N(qFAg;}-H7p45BKN#din7M2 zErA5~=sf`zA-|vhy9CVA$2#84Aoit$|E%|?iEbLD6E6$vR~}7bgZ@wD`Dgwkx4~5Z z%f2JIpR!XWkmeC$YK#P^muZH30vm-9KpNd{_@P$vj3qbKXRZ3yW9~YjOTe7ZFtV&$ z%Z*dEj;Ojo0c+x!FZa48*ZEl8$bG6+SFc|Mm!}xhyNiDoF5E0?<_dpXSA zJ0}G6P2FS^$mL=rs13EfNh|*_T*xoFC2H{y5Vgt*mpJ zg#M+@Lky-*XDVLwVBfqcBJRFsc z;;>$aP-uyt`rXDuaUY86&!+v0jgQ$m0HV#hfbv0Wbk#Ge*6^oA9#LJ}diRccdq)x( z;$|xNqd$dg>j=!7^_gD@wOYYP(6SoXHsx4yq8V9Xso%|l`PkDfZ^}u1s=qGZA?a5N zwhKh=EAQc{C%YfTo;v=K#~M4wfVZt^tc=eoe83r>2s1ACL%QK1BcPi$Sj)NW>czJQ%I3-nFaRD%IAxPj%(iv>7dnur^=m0HmyzPm_vN5&U!c zJ_iPva+Q5_i*x@bjr(1yJ$feBp6$txIX2|CbpVL$MxC4HaZ?Vph~+&C4E|&@LCu$D zs2dn=^JcFd^rrK>#GeCsr6agC59>ISYJd?PBw6e22{wKkdz7u;GK>3)btv5v)+Q^_ z+lCZFK3l&x++X|`iwPsI7?S`WZtsrk9|#5@6}lOlLKbf_X_8snI*$xL+pX{<hFjt=nMs{W2UJ^>q7ns7{9kA`OLA^L&4-4u(L3>D0KOaOArTNNs+Ub_wOD`Zt>tua1Aho^hlmWCq$&&Dq zC0Sdi*!D+cF0<{G0nLys4(QQ=|5Z2Q$!wR{*H+84$g7P!2SMu703a^}r#0H19Y7hk zr_h)|E^+;i@jt|>1?D`q>B`P9XUHDXjM4c5`nS=nemW3J;0()C^tbq zKOsCC+5;?CT}#YR!t?KE(WRV6^j+vl)yKd=TuR8cdOVBwgaFmq5}?Y0;GZD;_x16h zf!#No!EQRl{x?q5ISzcMdX;0tXu8F*r-$?oI1f&>N!~?_SBigygrZ|-AQb%suI~`; zT(?gMWyOWhdzVr81$Z?x3fgRsnFL!l!iuf|Pi7UuxcZY7h3ocDtB|{Hx9@@Mc4{!S z0B>y2KJMtjPKugw4)R#lZ5fkZkld;ViB5^pKwq6$#SL}QMj*vHLBmMYTQFAZ#Frsl zg|)c(J~M?!c%WtPqA@G60|c9uof$@sjN&i;&CURyn-{1vJq(#nv|pG61}V6y7X%$3 zcB_Jo28W5`wEqa{;SO7ORY!PN$!58623){l9OhHCh;ZIJ8>`{zfO{L))N48ppVmyB zS`=aLDgpXMp6Ia=_1E^ys;1d`Suy;rFj)1)*q7MY>_m9ACW54U_*^WKW)n7XHFJXPmv40BdH6eRf zST7ITUr`RT;#c<_IkhFKgP7Rj%L8hb!GijWk@_W|dYOnrs<&-j^qs98`^(R{yClCb(|Cv6Y1!stu zV!dO%*Eb^wkK)CDLE^;T?| zhB$dd!d^@gx5Qa-YvvTxY0;sDgTbxTp2rXIM?85!)OW5 zP67*pa|8pT8QGa216$}&g6Qzj9|`qqsP$3OLPnfl6A<`>ekMRU>KsI5h{mX&6I-J9 zCm?IHze(t=3Er=?Eq^>iM%_nR*cjjW8#;+qYmua?pdKCa0o9Dx<=I(V+Ry6NOoV^h zk5})(@(yp896Nm0y>;xM=nyeN&c4yHT?Q_}LKegU##7#X1S=Lp2h(RgTy=Nu5%pq< zl1NooR?iEN3H#~Zex2AFk=%tJ;~X^4ro72)#d1B)YWfp7daNkm$e*o--$vAC+rbyO z-){X|L@f-2_C|=VWpO(ZxPjug!8n(GYO;Bp$^Qn$J4BT{dJr# zX}A`{m|Pe2=639L4F7y2ejO>?IQpK>{2+PBl3xqIgO6XAZwhl>17fmT`Eqs2(?b$d z$bFMy(m%oG;k6s{d`ihTglYnb+^b6|uIXHJ0T9jXBdEKwB=98gMd36_@ z<%vmR*-rE|5X6cAOf2!0M2ygn;o0d?GVzm()F==5GYzK=WonHU!H zz^+&5EbrqhaHds#oIq)UmN)mij=xEIB9D?=`VZEwjjGL8E#*?Dv8r3kD~CG9U&Us9 zy>!(-7ClEblw%&|RSbs7FT5LmZ0IFgwkWxqe{S7WC)Ki^-_A`bY_AV_uh9FJ!e`~d zm;T2dTD5q|HDa?Z%%92uL*7dwa)b`0?f|r3?H&;z-@l39-C{I9WPt%q9OG0RWZU1iSJpXL##v_c#s7`kmF5F zdG3sQNU4Y1gOYOKl3zt|M(m|N!43oLSjVws@5Hkrbsl#@Q|EGZ9v`6hOsV|&r>z&R zVs>5`e^A{l=gTvf=l^-y@g$y1NsmJC0T!e0s-LH1zjo#kS7EqFuKfb#Z-&%HCjs1U zmxFznKkf}LSEg5hb;Ica=+21uV-lH<_CeRM8h4Yh7%``CUh&NtQ11hEVxI7*6f-M# z>jGxz3C(iN@u)&eyt#;}^+dHF*-b_NqUwd(swP!?UQMNH!lzKLws%deWt_qIM~dD* zEMkbX6aKF|T)xw~mA^xeM467yaDjik>bnUcBaPMBy#iNcXYj7A!nPzB^;dQFTj3VJ zq4HS#vbvb69#3Ps@2{`+&v)W(T~#CJUE9#xza93Fn;jxN9t#l=JV2Yjh(uBLo$&J1 zW|x_2pqP8-C%HRfsxBiYYsqQ6GU0j= z++YM;Gr(mMm8=ZLKXlZlAZyk;PK0=^l^!7r<9ZW&Cbj{cog8LtSld?W4lBdJisQY) zEKW@A$!5E^!rU=Voa8?1qLp96`vp?j%ZR@~*p&$0>x>|5_Ztjklf`C=S$E95Y%nHt ztLP}Ap>;0h;dTa>fnCHUtL#%Yo-5TeNaOIFLf(pBt!8`Kti$`e2}#iv|Y8Cc(ITZ>-g^W3||Eeoo&@p3iGE&RM(?QskHm6OXf$(esd zYb+^O@5M6H%GH#3^cOl2kL{=+KWltSg?cp+r)G1)?pdyOCR6*$)St=twlXy)o#Wb< zGO5jFYIUa7(K0ovAoXdP>XwaBo{}x#kv_>5?JZZwv)M7_P}oHd)1RC(p_W=w=x}s> zVbO23)Zs#T_})c$6c!e_6xS9-rj@BpMX`xxYFANYY?%p1!^_l(;@jqzsjo}&v&!IXM;zKw8h*aE`l*z4#2f3Ho*t4rNnCDj zyV#Xue5g~rG*@r=I1ae!yuJF&ZU|w)?4NPf%{lWpY5XF!s2SzfIwl-P$sKV7wKVy= z_eRUf-#sB#=jS-6L2TgOeQMxMBq~JL#peE%_|ksWbw3oYvd;eTM=SB5@x8_P+T8CT z+qF7E#k3Q}~#p;!!%huz3DEb@arTJTseQLC)*sZwBhsA1j@sr$E=Gyfg#e02Cc0oWrou>4n z&XPECt`;ZPMxEu0`CXq+{aZ#BH`YNTi#hLA^Bii{o7w%gdfCcipIu8`L%#X9bao(41fA^; zCf#TQo_(W{JrqFw&*EAeW}Z*Y=Vlhc=CGLs?LEqBLe0lkb|p)Um3^Ch70O+n77hsl*%On|>iz$;_ z6a>XLW{mPd6SIT=9BnSlf{3^?!8kpU<>ZlCiZgX~G@uKw{H@Lc?&xbgMExi;g|lme zS&#DX=8ctYM7`Z*oIF$W%Z}4KNv-_|*h~~La$63NwGxX{wdQPq3t>tFsL=Yf) z>SPdWeT4ENYk= z`EzNtJdis9Mm$&!B79>o^%*I2obqqTYU7lDk%Ef69F^{eaExr!qodh(Q!tBdGf@J^ zCq>rx+jR@0w}6+vR5iyxzwefFJ1C_fH&(>-lEIL@%anRsSmUVu2g1W9d2SmBYJ zZ{=`b_qOAdU$#qOQn4L;*h_4OZE%g9$F*sPXm^k831!^#;>x|caJ!9m#6sH5sJ#{c zgn@KL56cgc@W+fCwDB_5B&1=J75SJn^H$*zQjS>MV3b`!@jbvU{LxSAS4^XNId}`p(pWK5~h9=tvH1w_NtLNAdIzwU|BCgQ71=U3*+H7Mr9ir5d)y_ zQ(uz)*T}75REz@Ti64y|2+WsFhojTX1as&!GXnG59?QY8i#c(Ltw#XZu=Q&;uC*#% zWaQuUl^yC4>-AtgLePimdH`OR>JF4~{SxuL$EY>Lmh`;TzhXATX<*u~*?O-jNmd70 zNtBN_ta^Axwpnt@ch*f+P0QG46w~X`oPR&60s)rPQy@ZbxyHY_U%bE{-v%u z&--1YhU}YXi$XC$I~#-mGs+&iO3P~G#e>zeuh*UJn@`gVoU7qLyOE`jwgLDBSIM;u zoA;ZLFy!tbRleQGi#qbB&^gFQ;k8#{x7QVXXpD;d(MI_0cC4OLB``|PK@SPpXI0V`Bs=VXHYQ%dWisIh=AL}h^<9pH6o-coh=I7Aa+4Ma5KJ4 zGCV)>ZGedN*slQ+gGRdrkxe7t%l2DNd1k=gO3vrN!_}iC;{w*i1Bb`S#QIDet20(a z(g%)*9|bUwnLt9HXQo$6QZ@Hm2iy9E8yv*n#$;AKX{8B8e9?|QH_^Xn*SH6+uuSr@g0hK#T|ncVd(SJ(fEL9l_4v9PJS( zU^93(kYUHz9Y`ZbZwu~gQ3th#Juf*i_R0JRZjE+Dz-_vn0nwT8`pY=78J23YdbqM)6WaRNB&oJY=OnumN z`&+t)b=nd_Ti5bU_{Q597|QWDJlM^3Xo-cY5Z_{n&vKjW?-ze}-9VUs`3!Gp=W=xxNX zZ@pyj`B3N7u^X#1SpF!-JEfO^DYynV;+wk6zs6N1N|o64RE2-eUsMyI%nr-XMbYuL zy2-%|dVgq`t)31ss>DjMu#D6lu%Z8`^WAMCK+*?*d>UbD)*AV5#EUB-AkUc#G*wGH zk2d$d+;4ZkMY}&)>ZTBJBM&$`pqO(QmgjY+->{Pq!+`LoMOFb2Ma@DZPe$>Lq^3k} z!Iw$ZKp3&;x;)Qiewz!WO(69*g=R{dQ>9IWrRQ~9+WB1P@iHIK={^=#!7w#%8Tq4< z2sZ`3@UU@L4^Us$y*{5l9jo0RQuT5s@SR+i$n?}AD!mE+` zRVK;()a*R1%||`Ar-MLwY4kuq-4WUoQ2%!Ll1UA>Q$+E$&x7&O5=VGMrqF_S zB~aPNzba9y!a1Uu=0sNO#igoGtbA3enjK3MXmv6sc}qTxcUnOJR3&|K`lk|`O4Ki@$ly}-b-G{z4Q1k^C6o$nv0uT1>q^v^oby7dnj{;PnphN>SgMv3 z-Ajs;MfrA=f3M-bS*q3)yRVg~O~pMCvg93?UFh-|Uy|S(f1m*${cy5pnt;z70dSir z5uDSkt-IJ(mpbn<>N*6pNoOJSa#|{IfTo zGD7~-BAOt z9IVGDVYWaHgTBuwM}#_Vlt9BXnE+gd8PO4fxGDtl(!)$YXA>-zpyo3(M|rP#CG><=i@r8;#QFZclJL=R6P>_! zH`q93=PD-X!3%r<*kJ0jR&1kZID#1REKi8lA=?H^jJ?I+49{v1X@aFYos$ z8!~dw^?tD7C|g|h2bx|Mz$$YJ#-|7LTU+jxo+`$Kgr+aEJJSkhaIF z`M=%a1c|Bx=e>>vHu#tQjsR2UIvPC4Mh83yV6>_clJV%&!bO$5#{S&KR_b7%g%1jq z@i4d)LH#v=yRN6{Y_M??wgBn(i{7I%-$Nq0sgYu22xKeSarpnb|yd{>B z&!(QiSeS^7s)KCh}tL!a{=_R;AfR{oM+#6{>92vgEsa*}i>sdTGN5p;#~0J6*Dd-`hXS5566Cy?r{1vu2Rt4mN=>h*IOX?!{{W z+yzgj?ISppHT~JIQxrjy{AdvC720X&Rfapr)EkYCr>;9wS5yWjo%y;jvJ?(ASusPf zeZjr)j;Vi_a0mY;GJfJClnK{c$FXFf$`Hcwr7pn>bXeowl0VKlcZiOj5Dg{uhlP0| z!b43vpAJ*ZdPnZCG7?4P;BZ^65NeV$r)@f>u8okoPPv%O*>pKD6-b2GNx;_DgA z1;WK1^8gR_0Ii?4Up^(~c+c9 z292!8 z)Q0IGLeBz;WJ0f>z@;Zg-iagE|7f1w57nKK{{l8VBfm9@>HG|ha+U2ct27yEviPk&g!UM>Lxypsttsno_c(*UkyXw*{W0e zYg^r%UI_DK5W_`Z9Yih|s)LAcHmO z+AG`9WUWaXy-EmL694x-d5vrx{L8E;gm9_eR`T7L-8DZ>S`EJ_RLku8Gbr0Qel{7|99Vdv6TB*}XxX@9%|9MXZf#Qtlmd8YeGRZEIGZcLnKalK)k=_;RzaR%Kq& z>fh|t{=NLzZI?yt@hlR`K#z!$d!!Yrz&~9Kb&u!XlXc)P{`naX*CHA3U(~rT#q!7j zKW?@j$!~2`|4X88VIU}*A_RQ)D;BD?d|yNu^R4aCU9nOfGRlsT%H1sE=rYUw+|uh$ zv+78D$fHkGkcMi6zWwxfCb4}eJP7vMnI6#}>q$XLGLRe!GegKZ9M*F~w-H_tuK#CP zEed0`=2Ypor&}>V<<6D50fXmPpI(23Zh+&Wx}I;Ttm3cL-;#V=Wfiwn|CaSKbgpXR z+lHKaWe=(@GR9z|8(i#S#^|QYwggz+qWH$97@JJY8&d-Irvber5T?8?(7x(sj5TX- zQ`Jb?;y!k1Zc+7I=GX<1D^!ZjPJG7>X=%N<5g=;&g@7$tSJFDSQXHF+QF6wa3*HQaeNBwOy^h-zmb2Ri*M}0UN+SO5? zjE27IsQbl28$0S3Vxe^%^@vz#Sx5bP%zdY$o)rtt?Wh;V+-V&(X>_Ny*T2M^!<}@W zxV^8Fel>1?-$_r2+uJ+ox8wHbo%Fi6y}py)61P`%(!a-T#$Z`8^Jgb@DCvCGUQI}) z=5|$^Q>jndt3K)M2kq6UbjhmrYI}O3v7oCOmc4CDJJlx_U)NS`$Q2yCP>m{#{eGc( zw=i}1LN&Ok{%h@YpS;bP@8@eT?W9iTlayE0XuP6>`m;uz5$)8W;`o#f>eZ4uL))q6 zO5=k&s5eS0hO|>7YPv_;tG8>GKHpAFD~o*FUacuB?bA-pDv!)*ueOytf40@%l{<&q z>YvL)``YTmnds{uHV!bi5otjvu{eTO zueVVf>NQw#p&C}d{_!^Yhx+!Pt#ywE*`ux1um+LeTB|h;BJZ|U@1Kz#(?)GPd~;eWYpd!#4WQrok0$^q{kYi`wY*%|b(4t1p^0 z`nHYgc@6@=iF53!opk?m2kJg;)S~9mA1_p&Hg}G+QAeBCnQ)<+)*|zHYqhCG>QEbX zvW4?X8{N01!#O8gj?#xOP>Wh6-=Voy&Ja4?s?LbkYUcTwZ!S=q&rc0%txlfr^l7d8 zUf^=hOBdh@RP)t3`gYJSc5ugb&~J2b7j@7lJGgIm($9Acjqj+( zcX6k6)ib+<#&^{Vx`ak_)l0gBUhJyZb_wksIyYBj0)c3H`87jV_HQJg%Jw7pIQ{qw6%6Pcl+ zRT<$_<8_p9s#!Ywx`5Qf!enFEBMseGKm(O4l(b2Vze2BX7zORqlGWo%=UuJ;%9b!# zN2W+P_61d^dwWKiQe}yjs)^`_Bll{(OQ6>hZsmTPVSWFvC=PYDX7o%0Vee0)bW=u; z5=yFrX6c6+Jy_rd-&&9=V;C_!;|qI7Fo_eoORku2Sm)_+QIbE@>iv_70#!e&`H zTD~pDKFtp%wivrj^?EK`CHF+}*gPq5yYqAcB->suaQC1f5~>EBaZE6}GQ##g@!mcr zW68A-M5h@9OVR**XdqILY5QeE3v%YvwGso~B|cHsZanHw+T`tgruywmJH!FCa1n2= zv0pMFXTicUMJE6rFVq!3i5grBQ2!f-z1h&SgV>Bu(W6tO?k z*fhitvRGrJ_D`1msb1$e3dtj>NrIlWQQl_AE<%L3J;u-n*{}@+T=xFcpZNkw7XO;I z_lmRfVZW~p0cJsBZLHKMVweK$Ut^Lo;!sSV3?{ci;7e5bK@x7c-H_L++wyXH-3nQZ zyEUL5sC_(ub2H9%IbBGezQ(U4yJdr+LBdM2UkT7A0sdsN86PYhif6qP#4ynUI>D`0 zjEnl)b-oGc-L_4+U!cy$fSwUJrL}r-&1cz<>kIAIwC-xZs`XX&V6Fdd_tpA#``J_P z9vfK*ziOG?>Qo)`BNIEP`ZsZqstNud!R_CbL~eY%sV`TImE@~PO=9>sV>(~N@A#`OnWIXFx@1AOpQk2Li+1KkYH@UDqz*NG+)3P> z|GYnMU8&TQqo`!x>BLS^%u-*FINq?oH1rzdv}wpZ6utTgmmkpyXe9a?i8&Au7|F?! z2Ev|d>aWGhTGc$~3(ul&LW$wL`V@npg>?@BhlEo2u--OooOkaTgSg~FGrmC*f7oj+ zeZa)XdwM&)w0`Qb#9`DQK**vphvC%v#pwJssCU!;F`|1~3COWuvM@w-w__ua`RvZH zarF+^J0p5UAn_T<`oIH-%fZ;N2#HcJdN%@#r44=dh*07a5fR&BNDU=lfpj>0(OVI9 zBy2;deca>wt9l^+`9(>772cWE#B>PL!cfy*U}|{Z-Z%ARlV++;=lPLUlcIy)>ij=C zcrhpfAy1666m9o1NgmNj%Kao7gta8OO5cl0zT0pnO3tK*D&H6JbxHdJLpQL|7Q1U_ zi=oG8d%1j_&ZmZc*|6UwJ*8pKt0sP@tuA=k@I@I8#LUl|&N7!&M@=AOhKgZ{s}|c& zP(B`X-g9C1?5Fv$I&3e*Rv&Ii`EW$ae~<;m>sRd$Vf+W0uARvN9C=r=pJEoA7{JGP zSo5Q2prxz<7wNW@fLo9ptVzz006>uVP&mVkGvE&!V&+ERr#A~JFSJ4cZa%fzP&3y) zi}DWp?&?wW_9wCDMekGBVaoRGa*tJdzS|B6G70V1f}m4m?Hy^J1DC^ZW`=A5{j63b zT(v^@{dZU~*dczk;wythrpDogm}DohxqNEd-v{)5+ddqC`%fda)i)#$MfVg+#)1SSCR*Hbx~z_4IRCC$jear>zqSwUZWh>ej?r zj4?oz@ocgB4qNoyakl-(k=5n-JiGiOx(l2?l{b|0Jo8?5oGd6PQ{J`7=X7d?fcy)9 z5ss3n=+~z_E||nv?7J?8m?yhb*1Mia0KTgQY7T8yfKL;QTHCESw~Pdyyd6gFJ(D>i zj4rS6?LyY~ znEy=Jh0cuw^uId%w7Svjj+`4kFV1p#UHBPw3)VsYeA^-YX702fEMRrJuc3Pw<)?<# zyUz0s$DY@!9ecWW9Xfw+efg_`p|l6f*MMEjA3X0}t zGvvOa!^KWukvD^Bi#IKm?rKk+?daJz~0mRe!SL_-Gdf?*zoU-uc?#$Bf9YoHsU_qr4?r z1ElMccm?HNi8y%Id5Nn)y3R^A>sz9_rLEW8#mVI zw7D4fFu(3N;Xs%tPvpglpgEZ8MwwBojM#BQd&mWxXPb)+x01(reeH2b+%=X2SG zM#60apvA9CTqa@=Sz3q)9wy)?#?x&`jPy;;!|F~%TKV0i=3`Jj-J|~D|Bkk=$y~Ub z*!qV7%lYk;UEPpixc}wQ`0=2K+?MJu+07Hw?w1XScA{Rah{V7A5B=W1E~?lh9*9df z8&%cSy)nWE_Rq5jR~#zvkKx@BMUb>^2|j2s8Io?ppkj z!+uoXgCor!VtJk%8v zPJmuw;o7VVj|y|TOTf}dLq6R>mIN}5u>S3z?_6&GRb5kQ54y^^OZ~0PYbWxGb`Xxn zKmyEfS#zRiT~>W>`JF!ZbbMg;ewPpR1?~PJQ8X@k$g=8Kn&Qi4mcK^Wyu^jM_ZjC&*p=yj1!usr4}egjf+EKyelc=PV*et)Gh>Zg>5ezg!u6a5hHflg zhsqK0u1_mIm$QVG=if;_*4`S&i?r*|L@kM zZFj4!29;3EWg~<^$koRkiW|C&t9#`NgZ?WfMNu&bQ85zzQ4Ezfg^8&2$Iw!#u0a&S z(C>NPv+eHvJ|4e)$n$;v|9PMHnR8y}oY$G8mvGqoDZPYa-mh|+#)$&(k|R#>gI@A8 z$G07U!%p$L!?TYQ-p-SWVZBqeSn|xC5y5uH-fB)<$TIn26Xb^&K9ubqVAsF=g;~cg zy#tpG=JnFgxLeS{Xyb?@kZX^A)~N;qI)5P5UhMU^+t6Md^#|T)FQx@l{Ers5o6}yr zQXF`&y;xPuFRS>xq}@;L#4ja*eeJ}C(sm!W6JM1E*0vK%$|@GO6YrM=o^6NRsA5_> z@k)7MY&-FDdBt~CVroU8sfxoL`e#*QYemI|Dv_%Qyip})R|b|^`g|71H%tTL3CJt~Iu0eB-MPFk2ZEpr(f*-YA3{>f6Y;<~C(i@fc_L zZW0k@Ts(Wbc<&Qu_nJVvB-73A=lkvySDuW!Y8w|A??`zWIVco@FxA#r$(z<$6JSWQ z9_0fJX}DOB`yn(=E~|J?xB8RP@A!Fh?X!vN*~%zJyI3ljFFVtiQd-?lHdbeJHnRP! znK@OPJ=reznN9sD5dJb2F4-6)i=THhZ8vAT85t4TZyQ` zd{a%{tKL$_;Z)+5dq>fSJC?lsMBHg2qIgvr2PKE$+&@Ydp%4hEII0S9G$}twfnJuq z_DCiu?Nk)hA$mOT{#a5uPuUu%sE6%pbM_k4yXhQO_F#V)jVZdEqU&>Y`H+6$v6{Bx zcAso~go+%RmWu1BjQmBP#r{^QGZfz?_1B!t2fHnHqQj!YWG6pKMRWMdZT=UWO4SDw z|8;iX0><@v$%{@j$rPuYVw0o&BBjY{m=&Mv0`Z9m^u&Y?qyYw}f^C*i_!g-U`Q7OB#l(b>EF++-2i`_sog%@KEO3;qk znS%PRGcFM!hHr#pPuCrypK+7u&%95W#o64gZeAlU>1dgajz&+>RlN(of!=q}w=cA| z#VfPX(-Vxt^D34{9;`?|*Blw`w7(J*S8sh4*a=Wj4+f^>l#N*s7%R7TJSw z<5}kQ%|9X7&z6$<+)rWmOJkOoRkw~!D9^J6k*~aCH=gpMJE<(`Wd}u7BQhJkoU6Wm z(~FV!%yBsI^R(kS1QSkkGr}6D`I{*=IQbUyPCv2CH_TPYf(+jbuNdRj zT({%#OSkP~Q|xg+N80zB`h#AXFxT?Tf7V}NuB`?*W`WP;d)=A<95*zyo@4u zr7FWmf3S&*6?Co!y@ssw{SN}UrQzo?)0LTYL) zZ-Dh7nJngCSi@-HR<4PVchgGdOCPJ?d!&Pb1gbxeYV5k;3qjK;0?LoHGu1wQ^I7(H z*aF9*qh8hi{u?;3??RTBlt}C3tFi=%-pA5>*eO4kjM>FLTLW|WMRpf^`ngt(?qGsm z#L2O=?x%zJzB4TAG^cBFjS@#5mgZzlj?vnFQ}2yu;hzmzxCt6L)Y4v^EdWJ}FSD+Pfo%La+#&4IEX{p;oCjdEy<7b|c5jEh8n z`VF!b?I7tm)F%tl@D72*_?2WxKzuds8k`@~=W zf9~T_bAm2Hbm=xm%^_|RBU;7`r2^@}xutv6jG~4g%Gcx&6({qq67y2ok-p&+^Zb_j zMsD6k3}>H|!B6-c8OW$#P2Uc6OvwC9%C8XvNOrNbzF8HQ>aY2%1{idZHyYIDt+WO% z9^(}+RQK}AWo-i#%A@?3-Y16r|CXn4|0KE{n$IqnR=Y3zml#S_Snojn1{&v!eznbJ zdfbl#RS8P+W2FuPk!}!m!dw`3OT`BohfQkMO{H`c3D&C?UvMXD{ zU$7|=(sCO=cm;b@ed1@S3?M#glnnKbK5-`sc+}*ngqU|NG}=Z7LyzS z&L6$yXpieRj_J0i-Qsr_zcDS{WTE`0vgf)aCN3!a&bVp~zLOqz9Luj!OLj}syiB%*!=g?@7sL4Jq(J}^XqmW z^5<`@=NY<>EA8IamHi&whpv}t4)wgu;X_GFll45w=|fe^t4?LV&FMou%Q!2z1WWl9e?O6~Y(%rwM1PTuj? z&H#@;J81^WJ#c|*i;^cQ)yz*ys$Q*&bXX;?`^e7DI-N~WlWl`JDT2b+#Y*Apzm8QW zVf$G}raY@{;#xY$xCc?_{c4EuwDcekeNjEWBRvQcH>$_I(vwDv%@&VibzN%B-+jNS zZnfr!YH{>b#OoeZHbWEFt2L5>`EK7ws=NN{G4nNXR^fIc(=NE9UJ$Q2c{O9^_cXp| zRW5!?I8`bCwMZ#nrn|r{*es6j&DiD>IeY8~rM&E#>t zrUr?GFDDPy{bg%4enWk1@}8y|D{g9@-dXS8+8MXOYlslDAw}|eSt5akLq}R(OFUrc#QMSsWkdA*v zTRVzLPGe_BG1cgLsH0eFFoh6J{?c?u@p|B4ne8Yx6m9gWGN`j7V{EK5+w>P~$EpT< z*7O*%--@c3K0o-GLFxPaa=BU(eUgo}ek9EP)qXa}6;D9OuxRuFXt#lvn|!H-h1UDnUIgz(A;58N7J08mv_H*xhj{s z4`mM(vq!t{5kJS;Pn?Oe2KyL^VS_%_foYF<=0Tr$*V~2Xgin9KFQ4)0<0z$1|IH^q z@aaGLMCB-1N7~JzY`~Ee3t0o`S^o^Q)(V9ZMqMg&muc}wp4EX1K!O^B( z`E9MzFPHV`;XhSB`KqE`3B4No-OgHbqV#I6)``&uIM3VMydp- z;e1OQ&$Yeozl}A;C!X@7^!}cP*0S(j_nj|)SLaL0|F9u*X>ZN>5jCiHP=1qv$cXK% z^vo~Hb0?^8nyn^$&pu&_d`ayQpdfjvvki2tW+25{WND9I zZfTEyyUl>Juuq?O(bb|9gHBOfGj?c7JLnhIdTP$*WhrfpeU(H}#a3OPhi)hs}NLKP~^xhZN?L-+UZiE&t5N zDN+CDKC#Mv>VtepdMVGF^^%W#Xq@o9?c?@peYsD5!S*|!obL2Z^^3WNk9&w$y8_ev zVyml!dxejs3?a64rur7%H=9~A+LF%_ek}f0#DYhxIiKvU zu#}}$Jb*Ax>f`K;3%#_LL$U&i(tPdCy*AFaj-|Y<^~7X@E?uoVPL-vf)gd}6+gyi0 zx9po*s*T^3JzXc?sL_|!$yGI+Gih~EDJ^$E6&1k^G%F8d! zV+8dZccDH?M%%2#D!Yh&yS!Sz<$wAJKHigy6X>`qVv*q1=69FX|__Vv24|>MdW*Tm0(z7tarR=SiHm2E1?d7DtMF6HXFu75fkM z7MbFbuX>}urhBHhm{wZxbuaN-slL6p{Ha{u)LZ;k&PTMaLOsr{Jnoa;;-@MDk2Bh} zo6uYAZuhZe-{Ix7glO|BxE!<;7-sFNS3;&0O`B#X{A4`TyHDAJpg(kgGDh)BO1c zrUa#{8d!AJKWkvmK+(AVTx>X(wsF9zPwvmXjmxz^8;~#SD;wClVC-!W%RFNxR&SVf zUp8=pRzJYAuLCwO`1LXU#YcXf=ZOK=js`K0Uj_`%l904i854^c-PPlZJ@jP_ z;*}m){ANA=6zcbRgP44xzOF%j*0cJ7{^G&jzi9g!#JH33v+-n|$5&6&-)a!cPs3vD z>FV*nVV$gh{TDyakDf7N8$~+vstNtYvYWuHWBchu}o5c{1-SthK6m@2+6+YLi6OuH2_2 zQO${3ztu$*e`)y+)!coqb$Qn^$uBhW zI_y-NFerLU+{Bfa75`;Jxi(}X+8%8k{;+m!#P>}-jS4OaXgljmpDUJ&)XQ5!~yZ0d2Dtz|8|%KBD~SvJHLb8MV`K8MGn zt$R<5tC8DY&yE z^_#^Fh5Q>=Id2fx7M?qg(0}IW`=v^^X$?QwO-ifEBihizHpZc6;*_zmS)mYzt5+w6 zD3>viE0~SW#_8htPU>CI9xG5>BZI`+M?Li8OSnlrSQ#kz53*;$+PA!X89x6Chw$VDZmz9fK(lD;pZxq)xx5blu2n8-u3Y)LFtT|41IF4*# zh3wI6{s*cbW|yiN@8hM6swdczr5udZXO@b24$u9iY{;CcWA&-$#K%g-t7Z+)_j~>0 zOT{AZP@Z4%`6rf&1HSm!QuF{`f3!sW5$MA6+M*7JO2m&v3nY<0Ub3hqfBsV{K42}R zA8+hAwFE=^P-ka<#>3CD(+{Yi*QRNx+gYri@;Nt=J9M63a`r(h{Y0Y+TIrV>{jqt# zrSEger(OCkmt5y^WAl-VzPXT!^&Wy~tWsL5f?S>Sr{0e3Z_6AJp2s>1ve|!#7<#Au zt9?jDoFDqoBT~A_$7H`E<3sG`O8Xd-8!LQ#R>lS&%F{oV@B74)u8Mbk96Bpy6#c%( zX!MEgp7XGI(=>U0)!Y3Y#@JpL&+~lx8$Pknhag6kQH|BqKzFRv8Mkwv0rHNG@?OhL z&D$=}uRZoL6z&a7;W;IZPko3IzvTH*oAH&81JuSIwiTP-$R?8W>DzrwQQMXqdH%`G ziUSR%%uCo7$%kQcqKvT7aDL?%k9sFcbQ13ORiTq`A;&@da*>}JDb!p+2Ekf5D;vg# zZkjN^aHwxHcOri@ew5p>;&uwRTuR5=5~d#t&D3{=&ZpI0a{aA=K*H_Ic*TdFviH60 zX0PFSzE^+8D^qCNZFxd_gIKDwL>@f9o;_@t zc~*%yF*K4GH}s+{aIsPQl{Jsz=;^%_)~HG>T{229a>Y%EZrpPpV8jALy{COgvFsj?JINRXoos`KaYR)pRLFSNGY04Qf+g zhj-P!0pH7N!<^dW_M;qgtUVRS2mLCkQuTpkp;`W@a3?)Bb+A2^OF~MH^vW}prgy$Xh@;6W? zVYfzG*4Wdods_P&+JH+Bw3v^|bDKq>ogdd(*0~6!P7}0J_Nl+Am2&+1BdvsO?O$oW zCbUM{ia3D%q^;}sb`${x@cFF0oa4kR>~}WTQ+ep3KQz|d1HY?H_CtSVbgVUhZ{1|I zb$GJ!StT)V&$MQuhK5eA_6W>SyTIGZZOEhD-I_;am0r;x1j=`$jF48Lc@*Z#8D4Nk zGsm})VIn(js6l*q9bFxNycgHNTE;&&4?Si!B8Y^djJK_KhKQasE1gy;i8tsml)&HS@euCSqo7)7up`${>)qx$ouzLL*N z#d_Z=+In+-Rr?r2cE@NnyE*8j@kLnaKZ4yOnmXXJOgkAnwYU5^S&MGvZCV-qEAr%B zhJ4k=Pbs&YorPAmX^tzR4|(xxHuHdAzHR$ITB*JLCS<*KlS_&=+gZ{OUph*#IqaCsbKWpl zB3^b!Uh#`R+#}hR=y}A3>ro%$=*@ofOFwEO%*g>cCJ;E587r?!p3nN*iRM`?ZJ4#j z&VsJ!MuV~3BsrY1-1nS(*5vQ%!&$1C8#KAPbrS$}Zd$Uo(rd*zeBqdj_yFm)wW9BA zwAg7aWv>zqG`rHRHZfSqA-8K4bc5fweyg>Ac~P=S=sOvBPDe>i(etRsv>Rx!`P5#7 zTDg7pYpgu0bGvHLwpe<%s4Gwdbg5rU9}7myH18WW&ZE-%CvC2`ZSr~B*~f}YzKnjX zW%e)h$ELMz%^sc3U93E#tMqzwm0o)6POreRJy>hh4*@^CDtz^sw~3)$t!G~cBrl?W z@nn?YBg`z=)p*I*xfS$eSMvc{cHY7jz-%A7S&i5%yCT7QTX+9BDf*R<5|^~to0g7W z&s}0DuSC^r51vmexkX&mA2T{DFGh&O1W-FD8DPw_8}GU~KzAq4D;%?J54y!RmpW|T%cpD}E`UH&8P`TUZSSzdBYtw&nNdwN)cq1ay3S;^@nd&6>yNK`idk)3>!G!( zaw?fwg&viC^}#J|OWlnzkynRuN`CUE%VFy4_cJR{gMT)F_`lOA-m&^D?N#~{dxDiD z`S!EvR#wOnR=u>d?qu-4sP2|1S)=w$_y17sP`JlRm#8i%Ve9W*#R&DDkbP;zn+sPF z7TPA=5SsfOD3F<>P2!n9>N>!dIwUJv&xNQkP^-w;)u1&Jjb~a3%hYSNk`*@O<&NcQ z0_WxjXOy;<*x zO3m?(-W&1h2%x`npVR*pV+l(EWg$)LyhaJfaE5MSl3>}L(IjiOGh()H)OPw=KQ3Zr zYXV#M*89bBw;!uno}x8=u@mJ%Ygz5`UcHK?Bwr~(5`1)pID#C<<9EYWu|wTT*dDz_ z2kh$ZzA??`L~5G%h?LMfawF0qwO_gND{iLM%C~ZBp!Tokcmm821piK9#o$j`o2nMl4qPryZnlr;{}z`jd)00S+T!wW$bgB;idT)%2HGY_EaT0V zDy|dUe-(WT;a%sp=X<`E2>7$c2^DS50J6sRlfFk=;}bu)LaTh@5nrdbd}4{O*2>fW z{oDAUj5(}#V;QQb-8@fq80*UT(9Ys{joVm{y?Y-oZn4+PDD5Y&@p_rqzThzS0#sRWEwJnLAU(M%|sse!k_id&gpbR%R6VBGs^f9xyeY&1Mk~C(%7eq z(Z32Q+EvnpapxT^km^z&@;_4Rns!!!=e);4s zg5d5cUn1H6^BxQEmbvV57lM_j8XIM_PDoC^)v60&nG?0Y&of7Ddb&>SVkmo9E&KVH zX-?A!e5^3moZ`x|u~NobY%ROLl}(g#WE(rihE=|{fn@esySGSoY6W;DAdOIjzo>x@>_Tqc!< zZb*k)h=5+znl|5|-#ATHw7wIe-;sxzSD5=)Ky;;j(_X^@XkeRNd&U^E+!jRJF|KrG7}t7u)KHQ+vNU>sQDV zjH~4-{Fpbt7%Q(*uWU`ninFxUtmHX2DGA@LvPtUf#OE5$=TLs4o%0N8`fPQNsJlBE z!MtPBd0cN}f8rKfIgh{Es_?PEuC7{s+1}>Io%VI?oVg>Tv7UShqw62Vx$Z!yBQ3%u+fxKc^lRog9M%FpOjt9nyS!Cq(yUxA29 z$*M~~P;xx)(`rYTvQc3QcanMjDb7@RQTkyT_?;}?f(+EV03Ce%s9E+E{IW9)m!*vF zGt$d;)g97G!HR?aC>S_Pgt|4yS<3bBo|8q#g1P88gAcOH#TkPy7gz(ECLC5vm0UqmJ1Bl2cOZ5h1|5*#%(QbYo&Xt+S}u1BJiNr zsU=*Yk7FsG-)VzSbxxabYI?p?8vK$!W&M)B(8jF^waJ#k(ZI`X+}7i^Ub-Jv z_tYrOm($v$he(nUn?Vgfsu{?vo@@zMR#(jC+L3M!>`d3(Y`%S5yIo~dl^r+s6by6c z)E*4?etMKPZe2_7x8XKLX+kq6veK;Gdn{ZB_94)RYgOCSJ%4IX-*|g__SZaR|B&ZG z+#Q(hstr+9%%8Vdeh%5%Bf@#8ji2@c&9MB_QGvF}M!&z@uA>6&O*_9FDu3;{rh;)h~E#)ihoAgA*@fTX@n}UhSHSQ5& zgo;nK?*`iQNwvGbg@2+ZhY#T#jp~2pdc+PbeGK`p@PtLp@y+p^Da4t^dEz`O zmb{(8b^`QeSVzznE1eTBXqB8jds_=L`qDheA|A3iHZwN1)o>c|G39P~?z1l1*d#fZQL6nq3_t2m+K_Bc zQ=VJ>BKO2E7hx&C+Q_rKC(* z9xs$-wkpd|4BxX!irh3ddoSe2@?WSY?vqkwr-ty4;d@juP-z>~sg>sVPw(iR?-E0X zQ9mnG`9I-wkyZW;R{6QhcC-COZf+Hu9UCR}w$;$_y0fMHovok4s}86=);E5m)IHGu z?$UHD_Gmg5+{AD!t%7Q)D_2Rz?EJ{1LzTx>YKF%jby+3)3(@~F*7{~B%LNim%m~Y9 z=mqy`!93`nmE##zSwf-Z8q-_U$mrONw-v_QMJQS0OrlnMK%G8TgWp2fA|w<_N>R%g zb6XqxdbAg)n=^E@^Doo`=wV%{cS8UEPIVR4cY65_gJXhfcYxKdkTi3SP~T&SHF{v2 zOMI+%I%LqK@H@#-jzZVuF~32sv_TQEto(+&X=056r0s9bW&E1_e66{@RN|c0ac~X$Tu4~EZn=|F zer`@}t<-JY_42->h_hRtIqqyOPaou>e36=iY07+C2xS^cr}H(gtu$Ew#c*9{v&jd3m$o7db9gc`fu-Fcqsx!Vd?B^YM@y^`b3cQ0iC{ECYk zsl`%Pn|4h3|5mwL6St{J=bM_&<7%bax{z*_wboeq7VhhCU!mzdzSY+KN+GVS{FSXk zN+@zz>OB71_B**=ur~gZDehV5p{F)=9$zxs#Bb$~uJms1pWyJM&f}`K`Ln|BCH!u} zH<>z*dyj=jo^(mr%M@jFGTnj2=emx^ zuXOV#WOTaD%`}H}##d_`&Q07i?r1yaROg=@FEEr*#!G%4`pI6+6q`)bRXq z)pWVHi&)ZrtnJ~hV(D?J?TqiVR!(6?(#83C7x`fqeMVQYxr=*ZSFy6*^?tp4r@l3F zO7Hmvr+C>^{qM>Hc4pm=%6&>C?_m@BG@G%}&e>EOHmhv>rcSimKV~1Y-GRjhyN>^j zc77Hu{#j*G?&>PmwtLq0aJ_gFjphwk9mfl?K9 z)@rrWT~DJ?(SG+H2RF0)n}MQ3$4lBVRs~bxPQR;WlDc%hZY)2f+VH(xwrPvdv2N7$ z?FL8qZhwNGUn|}F4IS4H4LAO`|G(+ZqyLlYMw(}|{-pSToh`Xk&V5Y|esM^5i9^TB ziq>=k*DG=SR%sya|6Go=^3wGsScX z)_EP8((d<)@g|eN=CZJU!ZXTZH%boIs5lF{+*V5uJ@FBF^+Au^ss(m?*jHD^^KV)J zb!K3b35Vr#(uMZ5bmk6deCBQbFBeuqcSbf^Fe9f55gxzc+6 zQ0Z4<7p<~CvDJ#vBd{FXEDkwC_n!-4D>8L=u*#f zU4gef3?5GT9Db0Vi;1TGxhWnn*}+Bs_q)`u1wL;TUN6VSTd3YbL=Ma2r?!_MYrWSb2 zBR|l}cy7`HGd=R4){*CFw!kB*zLfn^TVOisrECp6KW2A7L=DjS2_dZJn}uKO6+07_zBIWhO$3s z7>C@b;!w{oxB@@8+3um9ce*$`C4Y6@$a9mM&tRQLe}V%-p22*SroPXV&zX_dI#M#V zx1_;}XjZxwa1n~OUt6ZjIr<6ANp+oD&ob&_j;9>@K8JkH(HhcfqxDbGWOWwciTpRI zRJb434EE&YwNVTWY|8D3jp3j5F8UaEitvcSb7%cL(Y=qVZ{$E>{TkUHL+g9%(!3`` z&3mV)wP93aO;O5`=}eK-DO(LmfEAZ%9i8-^BszDp%w1S{P`X46hKjS**24E>Ico*G zRM?rC8{4PagstPOvG**|3({T+=d#^x%so(>=o=>boo2ZQo7bC-m1>)z(wP0brZbKj zW20gSUwoz)nNg&QRk43j+B=z@S@zyY1p}vBjXT60R<@Pj_5v|C|BS4Pg|WgXHaCx1 zB>+`MNPM<=h@1G<-P}ZhUZ*KazJ|q_Xq55o@d&RxvTzki>7lN zVTUzVK4|mu{D+OPJ>e@BN$*UJnyva%D$xX^!2RkNsB$Y>B`d~g;wz4?vkLx=e)_rMjOMTiK~~rp z;Csb}#1ur~m3>U-s z_6zBn*7bF0l)S1CzV}RRi{xP8V!M}vh0FCl%COyOeCrm=jJ`aNcNr+Jc;1y#4j;RT z)r$Yjm73?V6Ic>@O3pq3HG-WmH0hqlPY@d%Sq-Zlu9}%Ai0$r!E)0)Ubb90j@khHI z#TY(4K30gML{NR*0&Mge;NdM@!cUzQcR?>s0Cfw)JbPK=;dkM46diH(EgJut(=RTB zeO85yHwRVaKF*qB1-_!(o-}7hskEiic#+>SIYmXU{B)ZlZ|B;P3}Pdt5xP4Q{$(~V z=eFLlRg6`-;nfzDoQ>YF#s4V8F&`i*voqZ9nPO{-&C4gf-d4dc&;gr)>Z%`F{fD2| z+y{JYbAR12*3ZDx&0&gh-q1HbvBPUB8?SelPyFbuVqIjG&v?lvp7xphd~A$kZbbf6 z`0oqh@3+G5R^fZ23UZg%#O52XcQ3~+yjAPjUgk4cL3rM0eyetO6~Y@AdH*S{QfqHY z4s^VGq~sH5E=%xMov!CGsqa+xda`OPw%YaaY(}(SPB+uucKRTf6x})@VPVW0<2eVD zF#IgTH<*H17<`WEbW35*bBGWO!3d1N7>vUNjH2@{1#>V1%@@#w2ZPY`5Dtc57)D?e z#$XO6U}V07B^)Wza61eyK&u{1aNkCqDMkJz!odXBQ^sKy&VwdbaIA(=xCf@7;l)1; z!3Y;w4uVNI3g+N!80OB7G)%xIn1yy9`Q$3hdKiZhn1LfC;1|tlDro$v$3UhEf48KYFU;A%;sMU>qi31}=s{F6!I@WAF$} z!(b8VGq`JjaX1|2;ACaba4!X;Ync2fcX&{l-*Je_Vz`!YFtmYiFai@W0~f>Kd*l{2Sz@@Ka6e0e<|hK>JWWk8V-WdPpN+xhp4p`DYz77 z;TC1jp-fRmJ;7?2gALH!?hwOZ7>-fya30LU4KNS)EBhU^vvT6uNxCrq8R1|!OE?(X zMLuETE8ZK7?#6!w=^Su~o-qAihZq7w-*8V`VI$1IJ<9!i>br`39dwAkFngH#gE=??nmS4r*J_s1}pbkdSbP9Wr^s1a<5RA4%WeiMKJGst`^lF`= zx&!w0P7#C2;~AI3NFTx-hx;i`5m7t?jTA5s7elkZQ#8W(Sx#|Kna{?5N5Tzoib|M_ zIK>cUzJhQt@qbRyr0lODy=uw_`@l4ez{pUi7zN{SCJYWEA21BJL-ShV?}QoF!T4~( z!32y!^LnS44nuIUGT-17dte3zYDn)!C%R@xXM|HkVLrya!peLr>A=uP{KGgjYRM<8 zhbcG^X5k2E{)_s9LAU@W{*8`Z7`e?U%sRr2qFm6t-6@8{(0|Am%)k{e3%A2OJOa%- zsISh%2m8V>90H?oG)%zRFa=k`4BQVxcREFB7sB1;6a!%RZl@RtQ*kz*!VGML<~>f4 zgCS^kr5(V&Fmx~V0F!WxvWN3v^ggH90E1&t913HwvYvW@ePLuA<$}=(lnVwYQZD6w zKlKM=Q>gE5fuE4`3&^{vv33qK1;iUiRUO6%)w1C4-dk~JnEw-`Gh@T91eov=lQN+ z1kP0Ma4Af{EieTS!wd}cB3>AR!563>7@JT0Fb)H~sTbH2s?GC*p!o{rf$_!E0}LVh z%qlY!ClN0U!q5^YYev|^;mRIPQ1(ly2W1a8!4y0Qlgp^TKBT{#a4-c&z#N zU}B|HG{H=o_I)zuHPkoEzeD?h;YRu&n1zin2lpth!~ZGxgCUrBm-h-Ya1;!_k5E^+ z!wfVxIz?XDe}w;2@dpRN_$K_r+$W@?%$rF^xo@EyFt(L)^d;P<**G;iKdan!*r^VGw4NJ=_nuE>@JDL3qs& z4KNKyz_88WH;Hx)Q!uC-V!N_;7{Y!g_2xvA1B@7k7!0#;0t~whu>i*41{iW9PJ=lZ zY#?7ALkxsLpCLv;)6Z%MOvBYM88E~in1}4Z;5e5dLNE&l!9A+waVmTOx zM_?XSpM`xn<$(z}9H!s|n1SPZ)tSl{;JtlW+^n z!ox6LWr+F#*ux0S!;#QzXNc)A0vE#!+^%>WsEAr0&wGOD zvkWm8CeNnbDGneVm^hF6x`22F(tcq2LdpR{7g4`3cQNIL<{(3u7m|-l4bc~-;c%F_ zjCz9E%kd9mgQ-`Tf+9kASPw&2kRKR>qhaJq-aiaqMgC#(Z@l-5h!57mx@yoC6NlP=7| zfiQeM-yclDgfibieZvfFg2@}n?;!XO+6@feWQZtCzzHyNGwlGHG15`)x8VO${KK9w z4F|yt9I5R8N&aBsR@wm!{hM;ZEDT;oK5wHPz}P7K!_Xc0hiTXd!=vd(l>MEC2wYA% zU>GLvGQ=>Li_`vKG&}-B_ma+F%y0mV+(*5`44kRVW2iUf4x6AkmhxPI zJ*OthAUtO zZiiWT1cqLuzON=d*Z>o7ILyKX4825oU=n6vCPlr&JPcfe{mbMNrr|J{SVTBzzCwC1 z3irSyG=>r{48h=H`V*LeaTtA-e8Mzb4YP2+;u7A|Fw$E}{$Okw-yKZB$uI{Oz~FMe z3mAd>VHO(K;_r3p9p>Q>7+b;ng=shs=3pZXucY0=C=}P>4(nkSMqv02+B*!rNx5JY zZijgo_&fHiXb*~O@CTD?`Tk%AreU~|_ocXw?_xOlgmo|p2f{oY3B&L59V&OY7)IeH z7=s64a6Rqsddx5k<1h*{a10E-$2b6*@AI9&P=@qwz!oW-%P#1#1`JGGQ$Zl1LwgkY=k+u2L`v&4o8q**b`7tb=(NfuXNxXE3}6f6&~EzZm?Q`h*b}g$WpkNjM!w_wgQJ4jzH={f4N%1$WpN z2EQXeFa(n@@;&8)>4TK(pSb@(e-7htBuv2sOvAY_16RPvPrR>NN&gq>0fvuIf6)Au zb`8_8ZY1&jPP>7TJn_INoC{-cg);v^`Y;R4f03_0d7m%|hrt{i4Z}xy|1b@6Fe_Z5 z@4rdU<`TnU0*;0mI1i@nE|G&_-6iU7BOTZP6EFtTa59WJ*vJIqaJzDc2Vn*pqj(>% z8m0}G7yv^q(t~ji=_s?wW+!NR@pn6B*as$I44M^atylIiugq00G3-C2(~*PGiq$T0 z7^Z8<{~hF~jy)YP4mZF^y-N%nO*xKti4=^T;1cGY#1BJ?JzZiDOu-Q_eG>VB(LOE_ zz6&!P26J$XGWT_f42<;SNG^=RJdDA>-J}caU;_4qNf?1CI1HxYD42nhVHPG~4lagy z*a*$js81M#IT(T>PB~yHjKF#rhhdn4gJ2F0hvC!7uQJ08Fcx+R`#t!FmC*bP?*oS5 z5M_S`$BmWwESJbCGc@j{9B1PWW9Pa=T$$l?n1_p%{dxFT_V6$?2f9S?KFn|cG|%Tf z!VH`ZLl>~n4&!hW%))~(2km2s7gj>^Lf#Jy!Uhe3@22O|J%Q#mHbI?AHbOuvzFnk4<9l$tD!8FXk)L&iVh%!TSJo$yy(7cj# zU=j{j_Amj1SMmN}6gI*1-zdif(vQ+UVfJd5SPhfc(5{sk9)_Wzyw{1;=P=@fp=+rx zn1hYVd>!ooW{30MCt-gB?MQJ1@xkOx6EF@la4|GT z^IgFRtbCAqzLRpo6r2FFchMeT=x*A10{?No9~gndVDKL5Lz!U;CSV5U;9(fPm-?GZ z`mi3xVHig5BYv0}L;Ntr_P^jmrKt@~jNqMH!; zA^Cy9X?#yG0w=%>Y*hBsNe`ys5ygjHqWTfid4&EHM&Ur1oI$=}Y$o3e%s_Jn@jpsA zVFnI@p~omMjKR?`%kI?;FbA`WPts0iQh%@kCZ56{%sfqgls()7qjUMr9;IGk9n8YM zF!zj0jD*2w=?7s9&V^~XLYbc<++*b91=iI4 z(XL_sW%2{fMf9gI2y-wD?XyV-24NZwfO$9^ny*kE7=#I!d6oAIcm|4dA zfcfQo7cjPh?;6J8ewc!R$MFY4Fbf-C4i1KSI0Bk0X;&}^r^67O2g7g$OhDra;)8WC z`4;sC<7+4v%tCvT`d-WXgDE%{=3oYf8!6|L!~jP9ZSVZ6*O0?!angKzV& znOiwZ3)AD>;vh6rZe+sPqeFPI;;UT$3$w4e#eSH4m-t^GU+djsAPi^SA`WA_&^8S7 zoHZ+*kH6h+Q4bS)++r|Haj`{0+3#bM0nEb;jPK{BZkT{?=c4bxi@5(rJ;9*51ss}r>Jet(CK%y* z!#vEu z;1cSu6X9UG#v`V~JX`^Tb!^Fl(aw}-DdAvWn1F*|7LJC|F4P0e!Tr$eO1_p+FR%{A zVFV`NFc_*Q9hiaJVIJmSsvG{7o$sQh&hMAB@98~Vdlke9_4-SFmiM&4; zf%9MjreP9pf+@HMW}$rr{(BN0CgC8MhjAF}MLUEcm{RUA3&XvsFJ*?6D=F_uv`fW4 z9x)Oo;RKjCnRHw>NT5nPHZ zqOcz3;V@{1Jz@h4|AqIS#{LY#!%zeHg|Ytle~Ww#;5&e6I09y29OmJ4m^sHI8e#5S z>J>)Lqh8*o9tM(67(O5WFaoE;D4Yjla0N`j?Jy6~;mSCe_Xi_z05l`ikK#pqFUlS+ zR=k+{fyqnwURIOuL9{EFg2R;gQqqNSI1^@J8s^|8m>x_%*O2}dd>=6MSK@^+xCh4J z5g5JFBL=>M|EuT+VDK8s0YlgE9l+>6d9N@$$|HKNCEPuM^1|#a>IdfL(B5GD zalTWSf?E`y;Cq7EB>9AyXQ;3Bn4hPfp*f#;U>FX9aTrtP1-vJigc+EIP0GBG{KEK) z3*^`A_LbV0;_y8wvjz<$%G@sSg<8T;Ez)>&{XTsp~rdX`( z;TD*B!4!ed$=7`95ylr{53}$f48CXz`xn^5Y8c_p;uws=F)#<`!aQ6G%|+A?j4d`r z=`Q#x?;qy5-*^QKFXR2g2s{F#&}<@pSPc`f4@|;=im#g@0n>0E404O@3K)i)lsnv` z++kk1ucSO*;tuO!3Wi|@4p#PWP)-uHsX*eBb;5?XvX&6~e`Ctt0 zSMD&c++pb++}BV(7=sNk0|&z#j4AhbD4%kNvz0qcDR>I}E}| zBjtlpH~=Qs5g$y!nTqdHFEFtle_vBS8)#=R0aw8Id$_|qEZs*sAJ875xsh@z^GBo) zbCB)JBDRV54ij9h6o;X$!~?V2$=3n=!Ah9fMZLkqZrouKW?*O!->c$YuHO1D?|C2o zU=)sli35}$reGt?enYuo9va`^?>o|maTtM-A9%0I{zvK$1`pA$Vde4SbERI<2qP6Lrx)7>iu!SD&V!zf$~Kx?Pxz?KgKH- zz~CgWI0Ey~{F!>>5Y0dsoir^8_ zT||At(q?0F}&7=ckTfJhF;tuln2kxJH#R!;h@`|M}w}<-s z6Yk?Zz~DE$Pngf~o?z-*uc$ss`-EYbgM(n|JL(xGzUMta^9SM=s5SYK`hyub97Yb4 zKgC~3M`|Mcn^)Aq#8KK0Ov1@9rK2%a(diQbjbq4$PlRF8?Gqzl+~Z>p3}!eJrr`n@ z_4+t+Li|3$*|7Kf#3-17lNAH#lYx<9p9tCsUq*Z|1>-PX&JJ{#f!krIoljKixCeb) zVW6?M(nsFNPZzeL!#p${=pnE7i6JoA1C6FI(i8orFnBWgb`lR91hZ%RxZ+I{<^b{m z!*Gw{IX>>V!{50+F${*`C>V#670)AIiUWPZ?joP(6CcdL;mUl0PfUkqg#5V4@1;Hw zh34hd3ycgQJWNM@s6U6-`Zz*Bd2YZS#z**sF!6u0kA3CD3rE3V3{|f%3g;>Nk<>3V zZzsH$^1v8O{)c#A><*vE!N_RbeZ&igzyyrJ=$$^1gfX}nhVLRj$_x*~I5hnDhe4Qu zJz*9OfH^n>hVCXl7>oPF3Ydo(Xx>A7FbEIB6f^>q_ddeI$QZ)I;8;}E!Z@4_Q?L;x z#}N*up;3f+l23$SW-{#qrW2$CtTS9rCqrJf7 zLgFu_952%@%kcl2k1N=4f1UJU>|N@=oP2Di{uQ^-4q$Q{;b9K$QTE%(R|Vl=5JqF? zSPzph4AXE3%)pr9e%^y}|Auth6JL(^3r+6ZFoXE#WXA{?K1g|Clw%!xVC+ZUZwKrT z`NS9)`kDHLS!f(bxnLbk|4w*ihO=SJL^UrA`~9L%N8V?^FUG)ptzTr6xwl_bR#R_q zAk6ncNf`{C%2hVX+}AI1Fd6oX`cBkGf4>+BLuYY|2TZ~YjGXNkr8UF@2f^$BznBd( z=laEVm^{xfs%y!|K))CTQ!ojG=aWBW5AAi>U*H!FFngh242EXJFGj#LOu`IY40Es% z1}`Fh7=}3*fub|zhNUnI>lH61--?&`#R3=_M0l8iO)z>X{=4uVFY}AxFa<}$G)%w@ zoD1`p`^7<+9qea6H11bWpD+*SD)V2t^#o>N6HHx6{nk^C|D!xGb`|A;2^fb-I9-{q z@rx|Xz&tdE`bDrC<$+o^YyPgkbRh zqv-zQwaDfNfFHEP4sLa;TTOK@A@)JIyTTx3wLEAE*&SSDg+Xk{*H~F03}VB@SXm)F z2q6qYxEO?%FlY&35W;02_WPc{-mi1!{P>*DIWu>EJkK+4xOJFf&s$?^Cf=tsc{k&} z#r`mzmJjA^*u33--(CFgbk5jZZ63z&vF>{~H(bs9z2ax>)dT}3UKushT|cbdr2XV- zHlMq7$QXUzd1lQMYxD0EE?n8M>}q2&FyTt zhtbdFn=y|tVZ(y{!6j52WAO|9+5e^Y4R!TAO~2V1*4|h7SJuP)*Ul}QGk)}y{l9w7 z+)w|%iI?%;JvTVuQC2*`mb2aUv*x?Mb#fi!e~XhT2h4bc`Ss4_I_)^lnrqpx&*H!G z$K(d*lw}wR@dMswU!X`%Jz8=qvgRVR=5>9p3Im;fS3&qQE_BqLv8<;U=&TTBXizTNy;D8m6u;y{L zJk91dBVptr=DY2P&;Oc-N#`o>g=5YE)7y!Q!`qL9H5nXs$yH3&jfCxt9w;v?A0*y~i{nChWVT@>RP0}5AG&%* zk5JEX=A2}~4ID6K{7~bv;vV)NJ`(EgI_Er6J;&H=v`)sGypEIuw(LK~IoxPIu4cgv zESa+R#F21-nYXr_V%5F9Cn(GT}k?d6X$nu;j>N#F>ek zJ#J>f9c+1^yZ&tJV9aCe@f7=#;&_4kn;Cbo;xuax z*zgEj9_Ns!8NJZ?W6Y7w=I1IVT+2TDthuAR{-P0|-&KCGek@*MA0Kbtmzj?R2kh+> zUsvWS)-QKHE-^nRIphXLSK5EZ+{TL2%w8e?-Su4~;Vj!%jf8cVifgxX$N~4WevR|R zhW;mOXgSL2werFIb;e`y2Jy1w$P@JEDpp*}XpeK!`DXjj)iZvg`QB!&$ zG5W+vnEMoEZe+_X9C8PvPmYA5D<2YHSN^nf`&8pFVfI_ z+;hN#jKAo7u;i+zssEDsSaAny7HqhWEe~DnLl z_kz*a%+HuPd)&jC17=@0UgtNgXRCJKly7D{#GErszHR@XVf zJb9)vH?iVY4!MW@Yt6%yXBqv-xqFs*er&zWxsL@8F+CwqY=7=tXX5>ZbIjKE9*o6QUB+02_4rkE_B7xK=P^THku*UbxOm_K!1*!V*AubCHiGCl04 z?l}CyyfD+%e`#JAd6Dss%nPeHJUY*Rdr|*2?U{2g8y@KDzdp}*K&+p~7=J@tU754p z^_h7-gV&wYd10JGPBQxTJfDwMU(X9E^Y70K+gSfpyi88b3kNyi45L37m%~3Am+_yC z`(pjh7?;Ukjmz?1#_h`gHZD_cq>VKR0VJ}M_V6{qrCg;x&b6%o+&-r1D!w1jzd0Xuttsj$YemK;5#r!a2{_^=@ zBv;-uKWyrJ_xw;Y|M>iHlEbge5363P|IztjE!(dfkHyUVFx8d6IX`S?^sV_}H*1z0 z@?ht;#l>E2UCh|BV7NjaIm+I5=7-fBGGX#v@vu2IKkVzuKhlrsiTPp8%e4FX{E#y} zH9yRB{$_rNc53&h`C**ZpXY}y%>Ok%>|i`Q-`_g@c#KV05Kb|<@q)1W0{`vK zdRQ^K>w<9hpXc~@bMgF3d-j>GSrD3TJ`Op!yLi-Rlh*wT{kfUZ1=h)uRad^J{B&hT zyX0@}f-uRJQ%vq79+o`JUa}yZWO}~^VdRz8%|qsC9$*~C4^%%Z9|MAZ?B;+68DF#@Y}GD*=z_49(I(@oFF5B_=6URbu!h;=7KD`T;}?XYD?edDnCaR- z#d_I$s&@ZA$KOKpuwtcMbeZ`IziAA1jv3-m)MZXU$m_Z(ZQC#Kz@%_TT1QvNvsiSn)7xo?!lV=krba zaTQChXT>ed-k~3J9%R8|UHP5j>&o10z4g1y`)23-YWYo1~{(C@$6eav%?(ZK~_8xu}5;}MoT&H9ja?iCl;viX$$|I_Z%=IhE_r(Ar- zyvosGd1Jy8tUtRTWUlwVAn$LnUan@#4eT9pZrSHP?S^0WoaW#w_Lt??JYTwgJjC>y z&c_YfearKvD}UR#Z-UgRpYxW-4aQ-5(WuYB-qiO-Mtyuh91kB2@s0hq z&?CgvUFV*z{l?L7g!QAu)75X%?(OpXn9;C7`{=ROryMS@1yT)Mz-~)jy5KO}AOkJI(vN(a>YYxi?Y&{L!#c zx#D)Fmyd=?^}X%#tXy!5a>au23r4-9%5OgLi0k!BN5e_w{EE>qGDp9cjfPfz#;6qM zPI0p2W;V<@yi%NucUd2cSBmFdt}`)C^D22^;RTv|nZ0&2taiQNjB?F0tX?M{=h#QC zXI6}cZERjIpG@8;@A~CDrd+?-b>-ew_KW3S>*&UPi+yF^J38mw)Nd5M&3dlxo+`kKEf`XT@m0xS4S5X3pJ*N5fj} zhU_b+pESO5!96T_up5WR*l?CD$M)&Rwd@^|U-r3!^=I5q#vAfLH|}BQfCY!FxN5Gr zc)08Lxl!M-(2srf(dV59_Bm9avh2#0e80zeVXZv;qVuDie93xmE^pkfJm6loT%*1{ zVjkt_%kslMhfEn?V_n>$UG>$`FwN$u{Z!xonsqA|%#BeV<2^z56blVeh1T+)`fIy^x}J zow%8D1G8T_zwG~7ezc2zD_`Ap@5r0!uJbfYj=ax4oE8TwZf3(BY&p&7_sYg8{vZzJ zk|$ZyO96b&!)t6^Z@5aiXq^xC|D+!?PP67=4tavnpY0Q4j(tGhxt4uyX38DRIL(5G zS@D?pdVd#(a(mYP-AX?HAs+{<=by%5Hfw*_|BtfkEq5y?*E{dsb{a>)eGQWuM!$FSv&dk8tSsw0F5a z7+L6Z2j-ivf7gz!ay7cp|BKdt;li+i@#2LcXF0YojDJWRT*sDM882BF4!Azx9_476 zc{*d`b=Mhv*gCnEIXAQ53H@r$ndf{gU+8lR&LMZW-f$mVZdMCQkvYuENb~C!o!f=q;s)eE9fTJHV&h4y&#qH&Z+3JOU1Hd?UG!I*zVsfX2 z;gETH=ZW*9+H*Bq_8Ir|XPMa#K4_uu zA{mEgI@d4s^WFCOLh+7j_elH1>|%NOgt#9iUghYLh0dV)Qs;;96BdTCh3;#v*DiaK zyep@BibFYlg*e#T<(xBmrSrH*zgI5|t3D}@yXBkhYn*e| zuXCPR6wV8?*IV}?zF}dQWc)^XVb0y`?{SWdm%rKl)U~_H{q;jE{?t<*(h3pAr9W%*WnuopY8qTjYB##-F<=OtOv^g$-

Tk6u>}UVhi^53`=Pe4e?9E@~v-tA8cv0BIWNcB`+Lf0q3VWIJFw3Qj!s*Us zi^9m~jLS*(V*OY$XT01zOnJ1c=P5Rv^Lf`-EDEbwa06>*UH!^MVGna2X2}z*ILqGn zqA*^GpX-=$D+}&sJh3PoWX|JV{cZJQv&wv55YO!vg^g^uozd;Bk0lQ?zN0uFzp@FuSvUjP9b}m(+8T**h?0L(WA!aTK4WM zzOKw^Huuw>(K_v!KEQr`&2?^I?}75piqoABS`=m&Jy<;5^$V@z>-s%pQJ7->Q0J&C zKWtH`*!1O#@gwB<8{&K9qOhLn#zkQpbM9fugBf<&UuIn#WZE-*w)mJl zNB%hEneO^?#q}NIb1jQ)+Oy>@HqR3e>*pKyyZW)m-sR2-OKxM$J?w8cephD8=mqlp zJ>zjL`!8G+QpPV5KLt_7&Md1)jp6cqa)cyy2g}k!h6k8VT?{c58=IO5dN_qOBGB>dQD(9Cu zi>{uB*n746it%pwI&MBrGI_1@#rSpd%B(OxtJlj@cm0i?gV%D8=NXGPX~*Wx+A-Rz z9czyMNWZs;gY{e8r)=IPk6n4%{2abr-hV8fcRHucOYJy#m-E8m)&5?vdbj7>3HAHr zf$e*&i{*PgpIE%l^P2qw#`}pfd#pbwU#vc4-#PrS{b2kN=bh^Yrh$P&OBY2hq~)L z!SwUa)z6K~Rjey{X8r~DUsvWd`$xpbhNoG5S$=+DzrJc8*)nBw)N`28*X5HnPq6rg zd46f!8F^y*P5aL3JKA%|18l$RdBp6Pd~v|Blj^yagYU~PvmfZk-f`<;pADO9ov-WU z;Yae!l6?-Cb>$y>-ZTA)`;i$N<{YwM{43*d9m}8U$BG5}KhuvX8x9!#T7DaOVDIPR zW6GT@xWBvp3(w20%(F~>X#Q05-h7N1{m#1BW5JC~{viL%xS#1C z?OS)9XV|vx+tbGVv;1?&?X3RdTrfN1xyFKLS^ri0-y7#|?n~y}!jik#{M|lx*U!p( zSLU2Q7?-P<{=L=i=Kr^T?ES}clr5)OUhkhj*zhFd zq4V3ChvO`{jt!?6{ZBra@IY6-!TMOyi)KR>7W-`h>tvs?*9T|JS+L@OnfJXN@2=lu zv48g$-#LrJ_@9k;v&CUOhuq3?u6`VFz?wB%woGomIE?&7yj;VQ8(DK3Tkc_Wi^bs} zE1u}CbCwOq&S=NAEYDpWrdV+&^T@pH-&((}%vttE#QRtET*s1A9B?OxJiut4c-eBc ztDnC(toob&3#^kFw{XaU#i-XUv*8K$7Rpao=BmGI$MuXC>BpKySHIZnPFajC4kx?o zOBRQ@XT`%cOqMPVn^|)w(`Djg%VQkG=3#%idH$iEeO4@yDPIrpE& zxy|A*$%31@@@=(e&XN_Y?)s|5;S`hGEp}G5V~+#&yYlT9hwZGnheHn7zk~dB^&EEP zJ8D0x%#ToheVkXh4ayg}PnbN^yiB>1Irp*Tk*@w>*2{u(!c9W{aQncL8(DE1 zhmUkl*t=MsSU=i*-MPs+Z{+%8tdrT}pH<*^@iOlmp&jH5omv=VY$LIt0m%{_jAM+2&$1V9G=a2D6 z#nqKRraem@Va1bd7;a_0gW_WSar@Pkxs%Z+^kbhhEZKJTpY%MqwfMM}1E#FGi|rwK zXY^_FboHD&BA(AW=bc})PaJSJ`(Iid_A}#A<~+rcbLQ#KRg8}~A56G~DR(jFewIAS z{#WcXTaM1Re_s_Ri=)=ZhP%4@ulakzoHeT%d1v-b^DQv`x9l&YZ+p&h$dZHFJS@K> zAMAhEJfq_Jo^!~STi6_PU$OYU`-Jrm4!8y;iw z8}}nij*S_Y3CrJF50l?n5A)OFV($<3iP0a;v&6bN$+{I6%RiZ?tN*ik*gxaGXYa56 zxuUCQyj1_cJFiU7T0hHwEDqBgvg-V&=U(T(BFb+-xjtVs-Peu#?#>%)^>BTeeKk9Sb8X zJjLGK^t-+O9B0Ax%}30aGuzEsJySX?nlTUGv=&VvVXDlFnyH$WwFWn@8~)=GJ2f#vwi$nIL!DG=YjoH zdzMd>=R4{5B>7^^?Tns07WOjcp|1Rtv2c}`=Z_L(td(bZpOK1N&R zjqx+>Pfz^Mk}oEidAc(9vV5*QbND>_*CWQedZt&5g)LqAWyWW5rSX})!uTv- z<-FZRe6Jo0ldQRk>1*9bY&c+E$S;SlH&1u{jbmZ#uEyb7wtL3H6stFlc|VHlS2;J# zIm6*z_aCFTj5#C9Z#5sAcbJdmJFTlLm-dJ8yT-y1);!&LwSIS#uWQ^F9K6@MSiD~z z7#)xYW*;;U(+`R7?&A6ISXkFNkY~mp)xIkqG=5k9gz?#aQl9T&{7+dAt4~`G+t0`Y zlh0ZY^Uqli>(9#rn=j}$so$5Zht(11jm?*xHx^%YKD&Az<>07(?0?-poo~EvSPuuB z>dN1=PmI59pO}5e^Ns~)SuwsqyYIRW7$1{24!&<)ta*sp51l&>kIUOVwY%2+z#jW- zxr6nO#MfQ_iF`2qsr)fxv{w6{$p@oGzFD$h{d4D{yZ%e}1&fpJ(|Z}`I`;*8zjhxn zJ>~xH{EdC>{GI!o_3!1Ky+1mC_cm@T4=n!TxzFC2u`u10|0=G|zl)0lM)$EUu4ezN zbI$DF`mz3x=Lmb(%O49i9CFC&zwW<8`~S%UOJ=NDFulRw8TM|nBs5)_;lA?Cai(*Y zgbj>ux+H98!D%);!f5Ui?@MuBIQM?qb2WQ6U*h|d>bbqE=U(PK#FEEZ@hoeO-rqiP zlKCx`gp~2QOMIVF9&WY7dsCEeZ9ewrEeRv*%rk$9@3t9-Q!ExN@jXh{N6ph+U$`Wk zV#&D=Fg{l^S!7+zxRw3I;$zN3Y&p zRxBpX$C@J#G5`7EWPHJru!T8yalk`N?kWE)88(P#t$8}{=Ui~Wy$iMOTuQ>EZB0u=u+pQyUsIAIr0eeKf%7Tm@+;qPP2Wo^|1F8_XP)>`$*Tf$TJ&m zV*NDx+0|br4_*1`OTw}4I?phAhV!%0IL~xnFlEO0S=P@!4|B-lEV3nGmdUf7pNqBU zBuj2&%N-nYn%Q&YfelY~*BKtA-*e@U$u|4U_<8O}4p}gN{*rKzz01YRYP-C5*Iyvs zM~nMK^3EZ5uzs=g%H;o?bLLkp32j%;Xp?sAvHwbOGG)e$ySwtM>;t1$J69|??0k)W zk1-B6FnX=?$Ub+m;Qp@sI`gvRX||mESn(I0AI!Lc@f*e4)pME&4>R4PAEP%}-{X|I zjulfDZ#EwX+|S-#d0{y%pPR+URZQP5FD#j{VZoLI*6*}F4odgU%7{zWchCM zu-GU6Yu1KCz0Y}`G5Ngn&-kdkG5VVG_ypr}EgPonece1vxsMf( zbk}*3Lxv|B=NtBk2{$m~HWr*_$-``Uf2;GyRVFo-7`&WpUhjWXs*GuGPNtC(b{!pUTTq#Mfxg z^cTiw|Ch#R#zS5GNzXS{jGih#>@mO2{lc2tS^dg=#^~49(|Jl<>~ZcEdHjuiW64cj z`M2`GiU&CSo%6)>wC4{?jyz5MADnl_e{?=NTkBz;2buC1bDm+zk;~NoL*6?7X}{R} zm;GWst39)S%k$Hf|6~2^U+=uKtORg<8ly|hIp$o6ZUSrG;C$g-Hgv!8V+{e zY-u>bibK|npCKP}mxgs5a!cpAOT(V7KGKhaTP_U^8xC3AdZ}lxGB>dvSsHe-~`|chEt4gzclP(p9i{n9%Fom zrM|DKJ;$FXPOf9gDYo3j{_3UP+hUwM+BYT)&o@8ES+dUoGuABFzmt9}IKv@Nvv;0- zxZHdkXU+8-a;mGpvvbA)4|dn@;+%E$ca_iW#$%7eHA};04(_f!n|o-_;d+hId`-FK>1+9n$>#ezbiA|VLeRPKG?o9y3l+~STbY9;vw?LigRDAJy$c@u+;Zm zwdYo5+})KgS{e?s&l4;-WXtjYvz~{FmkqZtdzk%W&H5CX3d;K z?qhGG`;PsK<%I>~-1ywUmRmXG?ymeO`DgxU=Zn2f&euy_e~fjpdhF7$ku5X!HhZ41 z;bBIPUmA|HxKzI@w4buyY_^Dx`7=CE*ng(y0y7?E@+^7mu5<3otRq|Md#>i;M&{3P zf3w=AACu?l$NKW6-WQ|%BKh0t{QsZ!Y;t+v@TJZN)1BgC^>T5&+_)U)@Je}L^a^=k zpS!y9E9ILNPq6nY`M%OPT+Mv9^|0m+Mz2{KrWx}vQyypkb>@48`q#??d+amgR<>`@ zuPg6yewp($E6&;FI>#Bm$$4b|&H6FrZkF87_A2u++Pl>IV~qC}_sc7d$Mvi@#pG?y z69+upU7z+mX2ChHvL24Jc!xOIayy%Mnx`xCD0`**lO>~9E5B=LSj&W)nR7c^?&FY0 zy6aavR~&HeZgFunhg{Ek-_o#+{r9-f*m9=3&eKe;5$9|4;~FOKb$_zYoCT-5@_uo$ zdY|*b-upezU#mSQnR6q{1NM*62d$4Wk22*+<{uX4>x|3Qtht`$N5skGqvB-rF>x~I zS@u6JkA-o#jwRF1Psl&pPkMfE$cD)w_h;v)%=3EfJ}r+Na0grNW&IiPu{vyBY(DRP zeuMq~g8gFjMfWB1Bigh5vVCUt74xt@YCUgs{p<3;Y{t1@^)2^tSO0D8IpA^D-<9t@ z+8uMASbX0+Y<_6{%#Yh&_O7+RjDIX|tU32h*8dapFyp4K{8RhHAxl<2v!1Tp_`A#c z=l1E%*8dCVo%t_42RS$?KK6bkZ=I*KXY`w;VdN@huHlfI+5XmZhJ)X^|5=>&cb3)f z<(a)d+Mm7F!9L4BIj^k$tUX)KFh1k?%;c}u{}$u@&ADOucjI^EfA~Ac_Me^;?ETxi z-)g=85f7XH$}g+`*>^@a7@rAenDR7p&V8G4xtbL>u;Eq?xtmE?=H4|vYvycOFq+nn zJ!Usv7B(}#$+EDU1rM;~4AVKw!Yr$sE(@#QE`Dy{kXsquOh0CGmxV*!bsq1o^K5th z=F7t9JB)veW!_(7d`_`p-qoMGEKIXz#UUFe(XudPdP{M>Q#{SRX5%W^<{2@3N2SvM|Z)3D(Dw1&2Jy^oiET znnUJKS{BByHV)S@fATWl57cg}yfAzAvT&Ha=PvWTK=E;w6<596_@5IW8*XRIy-X|l zVE+sDt@BIEeBaN!oMgjIjE~4iSO2wTVSiW8qfEbU9_Ac-kNR(jkNs~g3t3m@9!9nJ znD7LL4A+S7nEWyN{xbhf-+0{C`2+ja)&EHT*ykx$9DT2K{@6V1bBgf^`D4OCSI?SR zBY$jvZh!YH|I#_+@T9ykxz2fF{3~&FWzMqvwYpY`B-bKgtJlo?!B)Wnu0I^y6w)f7Y)n|HXOg%4eJ>7Js!a z4%l|(zby+R2VCbGw%pj2|8Bon{>wRHdi}C6=Yt$-$C{g&|94r~$@m6&=*s@j?5VDN zlQ@iii08y%J+oWH-sdCkd9m-7>pwpZvz-g$u=>O1SrmJRgm}hc-~Y1CI1c+6kH?{5 z%2}2Zaac8Qo$DFhCJtMea2E?6V8t0WJk25Je#CgUH6Q!jz?@r|ofn5`_IhzR%8IAi za_&dPdFME+>0A?sDW-Riecwwz9%Ouv*!R5j=PVnJe@uU_V|>0iIan(XtayOYee`3J znCGB)xSAz5Furf>JNCSv_?X^be9YFxKKr2^qmLVpJr3Dt`~dx!u;}Vpb*{HA77w;R zpAZixSzIVSW)HD0<{PwUdr=(DFnw6;eLw7ri@itMCuSS%Q|HCj!NH^AFz1l+Ci!CZ zm^h?tA1@9LE{T0l%6ylKqbqanr{tBZnWu5s#NHF*u#@SNV(-Yco~bw-XZ>X3f7xr`T{OTkd1;GVAZ^d79DF#d+9z zxP~=1vgJ0WTg}VzJ#*f4#UeXrz=lZ>vmKODYW z98C7fH(NH$-Xs1mxX#tAud!|x?~Q%`$@m{IJ`)~ebin?6QG2do|AXRZ@nQET^MUp( zd91ts5%&u#j(pX3hgFIm75<*4@<~)bEJ;Pl$`@C+#DLpD_=s!}gzp z&soQpwXej*^o!0rtE0|4TORDnUvpnE`G)iU74b1)#+2oZ_AI_-zu53Zcl|rD?=>0! zd-C*E^Kk?7AIcM}Yn>~$Kl1!z{bT#g;)H!ZD&C)Xo-zHYb+h@I{a~*V7YiO|#j}im z?fieuJg1#M7JoE8E6yGd>k-i#eyvd z-SvMvpUkg!Uw%tJu3^iKO#kcrGyk8wu;39!H@KhKztQqA_HE8ph`=_dO?Zauxer&zxIWa2H!1V06>vVTLhJv(Gu-5huqP-)wnU$Clez-h6r3 z$KEaUV-qd+-3{^F(tO_)$E}x#jck~)n7=$sclA8XXn{Bxk1h{$zh@k-=71YHT)5oX zRKI9>D4DWi!&BXL&N*hB#pYw5eP+y9v0yv4JRIrjmo5*pEIIyt*SU@jr#R$J=F8-R zQ7k_8mW%HP;^GEIE0>4ujJcQjxVSoRBX3M^yF85iPtUuSYe}8%I$}E_1z??OQ4>ZpS z{U5YEOftXFxnp~g{p64p(}&3$D@H$&r-v{1{V8#5Tpl*FzSucs@+jkXK3ZJebq?8Z z{HNBvNnA|0h52Ka`#zO+Jjm*?`mz7G}yv)wLF|*?3nW; z-!b8OW}ITloHeJr>z7*>;}=*LTaI0){6hI)pPQI-JCpzOd|<{SEMKzRcbANpFZb^r z*3Y$!UMi1FxPuv|S@JMzo?v^0efzccFSAajT+d>sbIa=G%YDB}`zz&z%`WHf6kq8+ zWWIa3&*bR$8u?@VTKmiL4a>txRt&$k=4EZ?eqS7!LFb#R=~ zw7j$b4te9?YWFR(ce`)da?bCJyU)I|_a5t*wP z>*e4B?jxoLgi{g$++J`kK6+QO`;CzhNH6GvZ^*s`H!n zv8(^qa_?_4-nZqyvvyyx|6O@!^*#49hsUg=yZ%Gx>TlvW?%cBAcE;Cwo^ilKY;0Q} zSTbeBoc+IR&*rQ+*#1Kt|J43p*2&(ixY_4krvJ9zEdC>o&gIJ)wU zR)l>lIm6_}E5cdkjAzv|VS1AlVGEl%E5bB~=d1`v7~O1zcY!%q9R0U?u3$Jp=;qnoer{V4O?LVpgpkaWW(Nq6=9Yw$N#II>)0Dz z;d@iYMoZ<1)v^^~wQo+9@rtmC6}PkHUiOx+2#1;S1PcyXGQQCqzsIp6tY^Y4 z9Ih58qdUn@=Xopq9-Zr)dt?2$hQpryV035u!I&jeR%|%zuHVHxH*uW_i@TbK1MXt8 zW<@x};oYr^`916d3y#e(-lTnC#wjM}uL!#tU!Y%C&*Ln3mL*5eF+L|bfl3>sj7c9@%o5gZtTUR`++lnLNNbxtaJLXrCE9$hl^6p?zY_V{CYa z*#>!-Yutyf2piaNE2Bqp0&&PU1{la2QE=Hh3c&BexN^eFK#;UQ)`#*!^-&b@_x zT*cm_<&P;-7Tm#-)2w-jLmp#qlW~}G?z!4?6)Ub|%arkBjKemZiRc={G4IIQ>++nX@16xH?Ih5+2CC6@Meok`8jf^fa4igqkIbgw>1GcOg-C8{CF}~Ekvd67Vxr+t&alj*N*f2_+ zJN7s>Vm_{A#!bw*odx%@;z2e%#v#wJ_XKgwGapwo;|A8uIOJ~jo+uwod6YR%alkO& zxQrP+NgPbLi5a)CWWkyTIOI|GrsS0g!vgIYv*cRV+{7WbvG-)-Fy%oOtXc6iTh193 z$5Wg;CS1piDNF8P&AlA*AbU?W4pW|H!8r?!%W<|$7;kaz*yncU+`|C}Y&gT{Y4XG3 zGWWqE<8O6Nm~sAk6n4Yyp1Wp zz&T?3Lh*IJ*mJ+De~Gxda_;%f^a|@*!k1~!e5ZIAU8#NNEA0=fS9vaS@M`D1EAJN1 zQrBNA9uAl@d7bmgj7ORC6zjs@?`7J(LEbvw^~2^2FwC z&L4Zz+Oz+5e}@?D)1En_<<|8c?U}yM_$;`K$%pJK%MUwWY&ds?{pM;W1LvH*k2qJ% zS+M=6=UL}L_Zgc{n`fo=pOG&XUvQ2%$|OS z{^q`6^mpyq|A+SM{nNUb@p$K~@mGoKKgQ?a27ez}&RH4ubY&jwuJc$|zUfMz1yg2x zJNw3j&D@nf8>ZjQSB8?&xhq56)koU17+D#5w|9N%%5a3~ij|>dJ+U&3-9fumD}5hJ z{Hs@n9n8*K8TPZ+TN#eBxa-PrmeCsXu9lyBtn}G2POc2w*>E50d#(&87~N-Om~%({ zxr+SH`izx6+h*O*lm`xZtgFxDpB2aN!e?6-8*XLt9P47A2bn+Dx>$0^ zY@2>}RpvSlIK`GbnLTf%?`OIGeEk?*zB0^q^^DgTj|nTLteG>}ZhdSy!~P4L2WE`! zW}X+W^gcQ5UbHf7X33mG?qj^eIqI&zSU(Opa(DIrryu*=#GE@ibMvv`Q4U{fA6Q;t z-|nHjQ=E)mAunBdmwoHXuQE?p=4sZi7T=`(ddH7ntu&^3RG>9CA17tE`LZ+gFBgPxV~I z{2k`ufEgR^X78OV{YIPioMFLJtQgjcgE8aM`q<|t4!MKnyX2oWtFE3Wm|ZQ8_c9OH zGJd!HW}iD)vSiC6Z1%}N^J~m^Z`YZyeXn>~yifbC`~lCA&JW24(+_KZ9}b)g=G?)O z)2w)y4Nq{$S;imnoJpJ)u4VjD`^G*CMhE4;yUvCM=iJwL>@oegJg{KS0ZV3|kVnR! z^c-M&NdE63G=3V%fOwC>f8l%;RzIu~TNB z!{ypD8P}fig!b&;R(ocv#=V!$_1kIB^!DRn2a7w5hyAQpkB4K-?l>OKvb@uHh&Ske z*YU8ibIrK-)46`PaqmdA|92k`C)je9QDXdy#KAuE2gwVg4f4YFVdLQ>2Yq>YsQK7q z^oa4WndKw3XR}dzW)~Zu`6lfjCf>)6he@`NlSd9W%Oj&pEmJU!^QO+<1^c4d{)oXo-OyY_x$m2gngc5&LIaJdxUYh zj?v}%Gv-eAxQ~4v;c)wSIMZE!>3B#UX+N$Q_x?KbzHB_~WxaDe9A$i^cI+|Qs6SUT zzY%=nGt-a%`<+|MCv_VJuS%2Mx4|7vG;cKvHuS9vE>1l?{uzNmDb1MyWBUA zHQu|&eP2pk``kCo-Xo99uaSTD_gfc-9DAJp@3X%w-|svz|G;?I!`=bsk2Ozr*FWey zZPx#z^1zgvS#Ucm?qS1&9P$|BkC~4NM;>oHu4Ti`>>ZSUCM?-!#Q{$-`nY^tVm_|n zfSXt|XTy>$D;A#^52u-Y()unn9@jGEW@g;M0r#@vA=W(3hG*GwG_?*+GCE{lrr)s- zUHQA#$^Q48Gv=IS&9Ns~_xGJ=7C$r}>*MYhR@aV)874oLm#%z5`zIRrC(bi_Kh>W3 z&zwgN8hPxlUpF4YlZ?mJ%zvdl8*XFtYv-vevts)%=dg3u_*2IHk9}r*z59jj4f592 z&zbP=;NrOHL>PUt_1t_S^jY6x!eL3n#)RR*NUX zF6K)o!a?@p3GdI-e))v==ZR~@M3`iM)kN6J_VyEDn(^uh--mL(?lck3uwt~ueCJJs z9{cQb*qiWuDD`)n2>Y3FhBaHZjGkt^yX)6^kBP9E(WJP#GWTHc@4gd$169BKiIeI5C&Eb%Iqd4!O?cL-f51dY7(H;pKg;X?poy@X z{q^Q$ec?nn&TNBxY!&ZC6JZUrhiTuH``WX7#6&pE{>F)Ln!}4H!q_v+^XQ4Nf$3w# z#d!0C_wlLcv95fHc$i%};k|syPp}RSpJ-g>QxoA3+ow!~Q%tu^gpp^dzih&L`Q+gl z6JZ;xXIgJppUD&B%O}Dtvlm!rru;(dWXma*FLF-U-(f#FC={#kue zzst4fdiD-Y_;)e)6$>Vx5^v{WdGG2uwp~8BmeFUO2Nuj(bDHtz^ke&Z_bZ2-W$^{; ze1Y-4Xg)UF%J%<>JOB8|ru+XNNj4i?+h~^t(;CSnnN4nfR70b^$gUuCkZNf7Tm+%P zMGzV~2%D0&gQy@F1kpy_l2(w`AP9m>(+bj>YSfmLi_o;vcFOnpo*&80+O_@fyN^fq zIp@4z=Y8Jiea=1i&YfSd2Sy*|IEOZzgbtj8;W7F>kN6&Ae8O?!gdrG##*^d)S}+cM zPm!1Jk-w)o9-#3I>k3-W(hqbT`ho5X=wWzrH~y~yzf#06t8|9t$v!#aT$G+_jWp$(%j?vj5PdY3#x?LGRtfHJIx7Hou(514PM|B(J* z433NaBl?5(0(tm8as7*R47LBTPM{6Dp^=~+48w6~{g>li$}lgCe;9;O*Z^(V2Az+| zBQ!rDFVM{^+OM(hFf7vZ-AJq(o= zs#fU22#f>^)d6sr97#I<*!s)N3L3RMeqVJ{4?MGuVw3e}v{A6Uq5^w9pGLe&7ZgBceL!yagS zvryU4IfOW&erTamKOmmN3Y89{hZm|Qs5KR;F5wY{{B9lnABi41-$8#Fc{mC^j2+E5 zpk)^Foy_Fr*g`b~&EpFBZf4paU#J$KdjjLWoIJGRAI48ARGm`(ZlM~4)+vQ*3Wni4 zbfK?@@t#V)p#__vc3Pq8h6Wsj4xE6x#rR?L^g>neL*jz9&}e6#VB&|&6ZHLv@k>2) zUU&DL~`_M!4+CqNw zi1@B!KA{D3BIscN#;<3dV5q;4K4=Fc(72KH1Wh;vV{ifLH<6bs=oi*OEz0;{2zJ8= z9E34A4qdnbS~nM}yesJs>QKLhcwrb?Qa@10dsgssJNbkroP`$5yNdcd3RN|X4YK~A zb0={^7urz!DfxstbfF2gUgCi|jQ@;v0)0c|2kNjFhTyQ&|D625ILx`4^4;VInl^F5 zD72vUi$c{8L-&wZXu}zpxVMnc7t!BvA-^k!pZn-X$|D?CFb2n=c0c)mVW?e0{7{G1 z1FSC?gJI}yGwGZ=lLP)$pD693oJ&x_0x zw5AG`38OEu4x#-r`x$iLG}K-xe*2{u4$n!HIF_QLQV$TN)ok$Hu_SJ{tl zzz%DmFHYWI6m~%e4!{H)llniAH|Tqfb~nO5vu>dYTc9;VzF_oq;)9{TFrP32b8f;9 z)S>j%bQht$J9Xl`KrK|L|Fbb`ASr;$?=V0_b`n!d8umNiCv+qJ3_CWg|j8Ezp$OjB1 z=;v1Q|6kTCG(RTqQdULWBcu#tFtk;Xnv*ijAHYvmk*b4<>>||;-5m5%hB4^NE#g>a zJW$<6d1VpTY?NW0l=F&|2}3X}^)Lz@7=y;vMQTRsVb1N03kIMIL(p7Rq&lVkb46+h zTKPq45^CEMC$zs%r2KbKzZyN%cR&wgZ~$swEK(CN0cWAFph)En63@;>sv2s$6!Ezt z`tcDTbiY)jY_Wftalt5D5Ed4x;GNiE1B{mx@wp=6FD>GCvhWiu;`gzz!#U_%L;ikB zT(BBO%E%vdU=$|c7!2ve1>;cr8Gb702l`+Gj8`%q7}~u^4MMYq@k1NVLv0W8JwzGS zLw(O8)du6W#09mziqt5y;H;FtPF#0Uh6aqn7U;rmsC|R+!vvgyrctC4QilGY6aU`C z1rx9hM)oOEeNfw%`Ghu%OSz7`!4UM{O+BoKacDt(ZISAQE{s8E9qpjKAM3!TeLd>{ z>Icvt3?E4TVB%o%2kj8^3XMa_Hw?l2U*PXB)*Xy}8$ApkfnIn_5!dqAk0mY`KaRNW zp$zMw(^8~bg(ndgG)^XO(1vjs{Vwx!FY%mGq-tUGRP-=%8smp?7=xkH$uo?dRisuA zGmdkLRHLwi{6hO&bTD)tI;lUuNEQ5&_Amq!7odaT3+W#k7omd|%=;Db!fF_~m~{(d zT}7$~T9@Eg>~I4NT}r(7VP8+Y(1Fb`0XwC98S6>Pa9qkgtS1=yA$b|W-;aq~cm>A= z)UV|DgW6TB3mER@c)uV2P=|@D@el2vkPoScBT&DF{J}6(4^R&SQ14@2r3^b^0!Crz zI_6dE*E6rs=x2RDNc|1yp$prg??&bc#%^NVVviPat|Tuv6VE8TrAReF8-}3+2cbK_ z@dFdLv96(UJMsLQ_+SHc?;sxN{2V>hZ1ga4FY5*xzr_D6ZaJJ38OFs?U&HQIP8bMml?m5Um-4NOf&u` z7}p<*R1LJ_j9>VtBF0GlpNR*?W{5}lI>+@m_BWVM=t2|f8;VpHO#GGo6Gq=8E*N?X z|4(9n8~;#qi&P7A-^V|6J|G@we@Hx1KhHk)6!HBN|1h+Ge`vxmwEx4pgf5(b(FDgW zjKkGW1 zH32mW^?mRQjRT0|Iqa|oCK>|#?h$bu6j0s5gYgf2A^bxNCZG!g4*m}bux1!1?109h z0o5lwETG1vzA>O&82c7+Jx{-f2UK1Gzq1Idp#_^^1lD19U^ivs+r$Y?*h+m2_Ca4$ zK#jlKXsfH62NcDMk2=L9$=(7`$wfi2L5)x;C&pgm<94nYS_LhW31*p2f7 zsuw!nW1eB+f`FQn@`V94FMeQPXX-Cvett)P7c)Q5fK4z0J7F9~p$lU$0prlu#kimj zeZMDP(8Qku4a&~?0Ka)dJlz3)hY7#12YUpLP`2Te=-@nzOFee$2LaySgzhrpdXc=q z8tC>gE~x(yKT!KofIWfr0jFUMF2Fb}n8N;J)+e-J3yi`p7=r`Qhy>IG48ww5m|vKn ztX)BWFEReBSQpUfWnBob4ybx`;cM^%jq8XPn*FRpvELBjJ6p*E)Lv%(;VgCs>Xfw` z$t%=h2MobJ7=|OzhErm{DWKFV#2saxVH7q(7q0g4`-QjAo^lA*QI5hs%G#{~KF>rx z;XKp_7}qp@U;|9R9%$UgdV?mMhGDn>qp;u)@e?3{Ep=qd8QnNTAa8aBX2PBRDjn$SWnNgE-AaP3tG<+AN8SE z$=8>ePdE=_(6=kUyZI;jhjG{meXr3kOw2HT+H0>94`l<6Q%=By=>Nj;CHBA4zn^)B zfj`kNY=XWw8ISO7_64ZJ85n}r(tA%39=V{it437A*N{A3lY zZt5d&5Qegg)f5cp;0Gq4|1a2A6svmZE#jk`fZChrPA4DGhRx7{wdkyKi~0R8 z))8!zcIPv0XkLInDZ@eRq3_c#wBUl&!+FYaxcV*H!y0H_$au>*elKQSK=%jawVd+h z#i|8+AhY{DUE!6^0G zt>gpRLh561R_p`#dz(DKYG~fZJV6I`N66dcj+JM z(19VCfbB5ybLJh!;RJNytk_}Rd-QiVI!d4UPL~ z_dflMvhJYv8{&leL##*IM_@N}VL$be82N(HN0@ivqpY(z+Km;fI_QHfQhtJc3K~xm zCk#DJ-k|A_mk)>^8c_c&^9#-25f}Z$Uu2z8PE3(c7llXq#k#Cy-Q<<<9q#05>k>6B`fW=TAKc+{ z@+JKK80%>J5@n*ZzfhuDD93jw;eD>`XJ0Jg{jIF?0?MM>r9{QV4&%^;3269A_`Dtd zUsCVI*l=m-D zGf;=>Kg0tA&^&;7fG!L}<3REcEjSM2a9-*gN>o9DxM3}HVGFblB7aannE8eVj6+{D zRaGb*sjKL15wGkh76GkaJrx52Sj0Xmx@6;0B(?WlzGvAb> z(1O|-=%Ef{Fa+bmGfPyCTETa|lGoii4%*2pmV*@!5ECg8R$Zlg`acD0}R8F-O0y! z*r5ySr2c!v2P3fHtJK4KXmysTZmEZZFbdnH{$kbzWgFU*9k_vV98OUVT|z!<*dH$? zUTCc^;j@8^3r3;u2jmwzFaeFr$X_=3gE|bu5RAgW9?aL}taBKHVVHmxcD;x70u5+G zQz-f$GA}UnBl;0P(1k9{-;=n0%yF4RJ=CECL(mt&FSKDFjKL8Yhf`9%f_%|Fb|vjs z&<^S_0Ygx~iuTYFqSJdhj-U-4;nmE?*BI|lh#Or9R#Ud2P1%JeWnUk5=s-v6p$oNZ zOZfc{^iazsE~rD_b@UH)n7|%|!CLyco;awtU@x>`GxffH#wGPI4&zW;Ngi)tzOl#Q z2y|~`{;1b(qJPR3EZ8fT@6hA8fT5dNf6#@^==57CLlgGHC>(_`Xp8<<)}7del;cq4 z(QbhC3Bxe|>&(w>>gK;NO0Hd%GI*QV$*SnfQ?S zzrZ^BJL?xl;ezBD`VH3SJm+=lwSUqt48sQM6AR>xvhQEy9hxwIHS-3mp#vLX^xw=Q zH2%Xr2jg%Ih7znx7=Z;lkXKj-Jz`<=-*tcS*SrK%O$up7E?Q0ntb)daNQtk_|##0|Awh-dp! zRRd$N73yDL+%NOLvR{K4=z>tMa&1Rh7N3m;SloyU1&q!q2v{YpbB7z z0cgVps2#>Uz!2<#4xE5-*i7Dhjf_XiP%9?hZ^pwNUrL14bI#`DuHbLtm)@dnm!W!tn zW~g1vdW9AofW9u~8HS(>qcA_ndVsaicM0vF348Dx?kiQDlw+_TMy?|+vG=onv70xL zAIip!9FL;EiMZBKjxs+m0e$;Xe>3X{CSW`D<}LVx4vdNZR*nPc!u&G&8z3I2-Ol=k z<{jh_+Joq&{!a8T26M`>|CD)!zPrdfjKOXgznk?$zs{4TYDD6Aia25DE#j)D9yY+l zEO~?z8})J6BYHS2x_S2h16VJCpqinql>~V&3F9gas#<6VgZz#lx-~)WOOP)(2(_}H znt(c-g)Ypmq+A~4_XL?Q*aV}n1DbkJ^+T;PsK#M@kD!`|#-2fbPmuOs52^;JexI-(BId{=ea?Cw-7t*fadqmL;V8A1tTy4T^N;ogqdH7?;`Sk z5ammPsty|K86R}v2#j|VpV+TrzH1pjEI1f@Fa1&0enNcE=%YVq!U-6L4d|jbFprcS zn70@8H!>eE2E*7Rw*>iIAoG7G{lL)A7|%Dk4ug%*xEG=~e;MR+f#~6g@Yl4b-hL>k z<|z9fqkqcQZ-)M17!Jc2jH36w&N_h(oRRjBFYDwx^6-l;@)z<&IR@*X?+yGx6L!HU91w0` z-M|=}hY7fPZ|eU_98i0c;}lx314iDWf0%&d(4Hj^F#I?6uYJhd+sq@3y+eO6?6PiP z0uI5*yYvTb=tAo~*3G{3_da=t`W$&UjCr5uxS(wQgM9(U;5hXClXlSfi1F1i{sr1W z-@lkI7=!h+5C5CIQI5b)$~GK;4xE54oP*kbhzp$oC!r11TKY}k7wZ2d4jB8G_Rxi6 zFac+v_6hoR*kKSlumQ$l8}z9)oR7%^v|$7~FbZ90Lv26WLmfJ>ppkWuwT91qvW{}r zaQ-D8Xh91`U>Mrah7NR~3*%6$Cr+rt1PnoK1?^!7MxX_47=aFqK^MlMwmhmgzbzY44WxOU_WJZYuZ6~n>DJFdVAY7 zD(73&Ys5u445wfeCSVNu4kSKUgHBsTekhxtTccVjyF1~Bva!n=e)o^##7BIhhXa&D zU#348FND-<0sO*9G2{C->!XzMHlT+g=nJmlH+0zFs@L%QlH?8cK?{z+@K=Zvy8~w^ zyStOOgJ{3U8h#^)_Fp3o7>2#jh9l60Q?xVoTEp*6QV$bS5B&$T-oDPbUvL; zw8j1n+C#^n9SrSFyKmADtP}1-ztDj_P~Ufrnt;)DYgAr{e)eNtps$|!fDzaQ69`)!XxL^?aPN01g>mD{xj-JSTLalX;8iF>QgvLpX8=BD9$atXv6DPAiVf@rJd_EeU zwnmLhJ=_3IOV$^97=YFp=%E86&^(LyU<6J>7plXF`)u+H$VP2v2y)|kK z+He-SF#p@c*-0K?1UAA1?1I|)Yt#Vr!5B1P9GWlzqcG5fKUfbP*a}^!lb`VSiI;L@ z{Tek26A}7_(JP4a2;zlx!mC&Z(CS4GeOEI+sKZGZf(tMKeMgd)YiI|pKJo&i*OEu* zyN>ZmJ)DDDKmB}%_+UMBU@MH>z&yk7jjVI%yNPkZM3i+Pao^1G(TrcH!#M1r-ghf` zfaU)I5ws-~SOmtcUIh`Gk@Ci5o`Y5RAbIX#R%z zgBJ9gI_q5U}Hh7KHsktbLWP=AtfA4?h5K<6p)1bq{%2N;7RQV*wK_*ssRD)H zg?UFZKhNO@CSWTx9Q?otY(-~1PZ>s_4HGXg|4{oad4V_zxpQKo8OIIm2#LSx%9 z)eA#AmZ>qQeW^^%!N_i9s^BD8RL1X6;s>@s>nrGmyO*gL41KjsCB$A^rh+HqzphL* z!9;zT>W1O{%Xlw5Jb*Z){+q<{UGyR1fWE_s1M09F8gLL=a9rve%lPgj>Y>(#A6N@x zuocE(H%!1mXnd}QcL80jceUC`<*Q^PQEK6(N6O4nXrV z#sT#n^iuv&8LuhQZ=_6_(7dut^+3IsbpgXaDN`F@1m>KHUswZu*N`Wu!**!EUKoWo zOuz|f_R${3plYYxwPn0UiC2Wt1x4|EsT=I?uy zC&(j=JVV}L>{;T14va$cdFBnezb#YqF#P*6DPX#9zM zpHKNU{6k}=Of^gSb>>ORZ;&S`Zy+A%yh)xep!^njg3-S*uQ2j9dZ@YRrTi{>DZh{Y z`;_Nce^C37eMZWEXC7hrA7yG3S|2h0&|Tp843n?_lqmz6uoZ?rVcuXkt6Yu4#ENn? z4}IH|tH6ciM=MuN(3fAXx}o-kay0^@JCyUeY1$W*tNe@5?Oe`hXQ=;DxoU%!zg+b} zUlD$xR)SyX1o3+@_VRLmACmgYa@7SRUoBU|FbXH34d!&IrVpzt2!7ODp&2$g1s;Tho$@r{KM$|#N9)` zzeW!uG4c(4Pm*uwJjMJ#_t|o#eu&*E=l2}xXR=(iK;J9)h58?u7wEiJt`?yA26_Gw z?Pkd{482dDVd4YwCgpz+uarL`4?o7wf67$@G(Ij@ozR5+FqEyUaj9RSt2vm+)p@S~ z{cWwQMi_$a(18Omysgf6bJDM-^Z9DZ+v)sHBmP(E{7xh50`@>FUsoeAvc1lG3$cGe z=R551vxBY-XzYj{hQFw*E*LA&)ev-d($yq1ch>o?JM!>l;<<`AcGXoav|uv~@20D6 zs0HW;Ize4+kn$S(>BUbK{lEk?p;oQ)nJ?miQD}XYalkNiVFYSd6W5-!gC;a#7>1#} zm(F_}@M|z0sMVqW3GMbn590^u%7O_PfxZLLL+c=2O~VLWfaW3O>l*yR2BY z35Q`APQoahgE5$Y9dRGecwqQM+ClAPUG+iz6xIn0orWG-F#me&mddZ z-{HPzgz-_y`9%wy+ zUucf$D(6A$wa(ZI&hM9zCSSzXhHu`+y{aU(1mT#_ZoT_ zf}_xy<9MRI{sHrI2mWCQ#y-?lKeYeO@d>SYT?Gcw{eyXe+CP~e7>5bye!@DslksO) zs9u;@QNd>{h%2vx&mohCtt(UubhoKcHjHgs!RL<|_x2U4=4a?uSEw#%?NFhHp|)d% znvr^#KScc(D^wly6;$w^T-rk$>bq8`1(<;KchOHF{X@H`LQOy`P@(dEj=y5;FbX?h zxTHc2K)sYWg=G~=yBq)I6{;D=bo@ZOqC$;9qpCv939Bo3e$4#rUcqLS{ z!$ufBiabIG4ny;3{6QOXlauE$3E4;f(M^`uP?8 zwGt0BPof{_wpFN6;VF!Rc9GL6luJ2$dW8z!M}E%4KQ!AbR3FsNuHf^*tn&`?4a4VF z@cCeL=iyg)eg&V!A&xNPl=6k>U>N4zPo6Jgy};3it zV_jascVjT0updTx$TKv4h`$G^hjq|}P0;#r1-~0eoL8WOHk=h+RiOf-?8>*Cks3)VrWk37N9wZtp+(2??W@i#tq|lR`5Asco%+S9avw7-}21l?is0i(YpAJF<0>-iDp;l2vKD~jHhS7(~-x&TLA%8IPDC-hxk8vDI8BRg{ zadeLnH>`us6T~6qas0!`llX&C=tAvj;&>b#Y=$nhp!E!KL;YFefW~u-{|VxJp79G` zfaKqqWS(K{cdScz(2K0wV{_HHQylm3V>kdKFOer0gFUo&;5=pRW#XdjgZam?Ps3r# zCe$fMUZH==Hk^hr=)%x6`5tFHFbHF?9=fmXCH^gpV)t42#!hlHTGd>&d~2u^beb%{yO=S@?SXqrTixI@ifQX zTdX^1%ralXx7lBz{tkJZAZ{3e2{-_KE^$H~);&YNu!p#!a0vR|B_Gg$P1vJwfwBuD zl=b(BSK7gG7@KGQo~56EaGXNzqYAzc5k2gtY%HLM7911%zwi%za1QFQ6TJmd+4MiXQqY z$Dsj@ttwRy48f?>!#LEkD^>7$)VSG~r5b~AI1jazm3&tv^OaYrnqd@nz!>a> z31~y#)|G0Mexq;!>f2PR+7o!a2zJ5*oIs~-OTSQu3($c1zr{b)p#|%p1Djw(t5gHf z*sfBIz%ZPE=Bi4ydXn`G2k>ufPrT6Ff$>mp!G;sb`_7fhpd5xSlw+Nh zyjG7Mww=kiE+oJ0_`MYU?`gN5ddk)hh?BB?IrB|9(!)GL?MIbri26{3yr0GVU%`5V zE*yjQRm>0e7+ife{aszD@?NAr*hbm8rc(JR$6-v$*H-eoj+9~kIh3!jRP|DZt&}5C z)+6O89HngD#yahQcU1BneyqpAO4UL+c4ws;hLN8UpXg!Exs2;B`k`#YX3F;6m1>f5 z4BAruMWxyxWvI@hd@tjaGHjx3jnLl|^9YA18^0!h!iQL2--8dcPN45G#tjosk(W-& z&vE=g{dbjouORg=G2i&nUS|D412#b$_McB)r{dgXltk zAx`ML!8&`1_}(O+-)DU9uudpDuooIG>m*G5yVzmkJ@N*%ImUM(`T1w1nn9;6Fb^*? zu78miXe8(dCg3!*|I4^vVI6*4$#0~igDo%$JD?4FU<^i~1BYQ8&eM;PRiy?mB90xa zxL-wirz+Lg#Xk3?Dm9Ky-?d5=T!Ou@N=-oPYgODoqWtwLH4C+Us#N|o>v7*I)!t1$ z_peeWihxYJgiDJTt>c+s8Yc{FpeXuR0oXxUzKXST#lnEHAXoK z{XMMLmMS$RI@nHGKaqY#-&&;-lq08AasLKd*oCK8sbS$6j7NAT_8-A^?839K3(v+b zJO}%aVFz~Mx!8s0VHbW6djxi37oLw@cma0d_px6A!`OuvVi#V7U3f9}D`6LQ;U(CG zmtq&L$9@&;#xDE;cHw2%g_mRRg+17XKg13bua4E2~saoa6PXDiweZY=K5^mFj{njKKt)g!)ga)CRG` z1sJ)eN@;(heP5N*p$Qvc7`DPV?1GVN@dI5r4Wri)*K3roXI;PqG@x@sm1>rHXh}Wn zg4&IY7e?SPw4o#Ro2&S|I{pT#R2y_|BOfqyJN-cI4%XESW!M01*a?lFR`EG=+Cc}# z?jjGb6E7@)x=lRLfQ``p1>=F*J;VVc!?crnI0M~Zk%zyKhx_Ocny>~&VIzz|3npL> z^o?*FLLH7m13EAaXJHg3U<~HJLH+&sfl=5B<`Zpuh?NVW&JtklX3($Qq~;S zowS4PlwIgj4nI#m|H`;wJq*8q9Y$a`bbd=a82??BnuqR-tcy2^cZ#@R1hzs4hN1Qn z`G-0jlJd*6gT7a)RNY(DPZPKB56nMIK;JCw|H!(A(N`G3`GdZ<@bfnDz((l82n@|Kf6#^-VEAw3>mB^VAT-~mUl@7^f6#$rQt#py zCg5t9cJDG?7)dbBQs#Uje$7(eMBVVjmGcdeUwaTAE zw@bCEhVekP>Vi&5wQ^vjw3_!SlkZ?Pzw1ePO||NQ;qq!ef6O@aY8Cj9cq*$^BeY>Z zjKj$Z>Z_{xtx)_!^$hh;hpScU-&PkKuD0sT-)a|aWnS-AEAyq^$6rJL3dJi~i~lyQ zPiZsy14X@dRsLmJ`)!w-wGNLdyFqm){*GT}HJzZP2>8Nk=!d*T$yuKcGjy&cgfgoG}CAcyxPN->`vOglh@w3WOvi{I3zMwZ7aohU#?J7-u4Geys7c(*oSUhp?>VOXI+-;K-!0}7u>W$ZSS==EcI`t z?WAuhpZhJ@BiQq3zm3+7Dl9@22gWil1*uQCgN#&Gdhq zw|&-uI9RLY<{z4Le+%OpUq`t3z`}e zpczLauW@`&kA+Gr#1VCM$UnaXu9v+=p6XX zR4f7P?P>d;dAuy%7tzQ@PPORz(HX;B2W_mIThjTljiFop%N6Pcj_XB#+0W#pdQAD+ zfM)D|u2H?dzMb}yKL3g@ZEK}Q(S^ObMOmSxaY$S}=%b@6l#G9I9O=9TsT#r_!G57P_upKf8%dol56hefCB`YV z@>H@FMd%pZi#w+_OdYucCp4bYN?H!X>|AFYyp>0MhuakUv zGrqGPT^hgm?m=%pxj60*kDzUQjB9otFXoDee*Px0wPL%8$BVYqHRn|l zoaA~Q%?z5&T}Q6oHf1mK`rw$#Tqo9GpQC-D*M3ZL=*c`aVONi@Q2kzeY8_pUYJXOF zeI}MJv>j-dtxfv+76PdoNZSwa`pR0H>`d%q*avC9v)3+-DT{q3ZC{ov{2!0RFKsmP zN&BPZ@sUf{X`R^j=Q_<#bpXvAn!QBhxo$oq)lIUW1~l3eo4)oGA8l!SpVvofUV6lh ztlJ10c@1gV-mtjFvwkZ&St}#x>c&^7?{8*pWuKB-hsp7y?R#>C`ii$-dCWiYrMAN# z_P4$3Zn4kob7a+Jt}k`8ot$XD&Gpk_9=z-S;EXzT44CMLo?D?NrJqdRGJC~MINpzy z@Ld^IYVAhQH#l6sa;{p`d!7qPj)o;(?o*HRcu|wg<2mU_Q{$ROXL3Kd)vIIP<=L5x zN9JD^qU0cF73&P`xn8YjT*+&8Y@)43JCAnH&E-Cj%Do@0i8haWwukX}F;-&8O0NFY zn7h!_peYv30ZZ$zN#aYdzd(v#C(|+=w zoKt403sd(6PhEn#9_s4Sbqz2d@d$Ohb8Zm7>sA%4TjgK3D!6V{_1aan^{cwJS~`hc zmX*EJ)~jmQuBuK7kRi@rOBl)f5GKBcxX0xe|4pm%55gd^cThh}eKKF)lGvN1Nz&Gf zZ9LP4=Z)*L4quh`1m`L2Hns_Dr}0?P5#6m_<(KDyS7jZO?0Vg*y!}`Czn^(5I{vlr zH%r?DZI4MGyPq1D=Qv|n+huQRSo^PPY}-^l{;T;5@x*`OtraRD^L(x(A{k%ym04N8 zmxlzL_rwblGF3=qjdjsxes+a=k;jtnOqM0*{w`tz8vl zk*1DZGTS7@rPV4iUEi`Pai`Y%~kgI zx7w61RN`v@U#+>kzL-AFH;QXxUv-Bd*xj=5^@P3LRb;tOPbYO`Tm;@HEFgP+<0-kTyD->36lzp8zi zD|eG~xOP=Lt&{txZwK<<#LB-QfA!SW73Qkb<+x97fSKby z`=qThiyo7-Z%5l*l&gNoWBDg_-PEZ7`PzE%+GR zi`PG7%^l>~x0a7%K44sqDhHA&Vb2)N)7AGK)A zeRDT?-7RaPIc@(fj~8RfTsvI5Jf3c}sxDWRdbR0mH5u0+_I&JeuW`{=@|rKZMy|Hx zdQM_;&;|D+*IqxKduT590_+!i?WyM_a`BkVO+F{+4m4l(YKY|s1S~DS^FL*O*=zTX zOD>=eUK*d|qLnuO`dl^UZL@fdofXNbWvsnuN6^0L)gG8x@mWtxoPKPh=&b#7)pcH7 z=0c7-x!#MTnMHGVdi^HXgXdh5y_4J~NZoXhI5l24Xgio=F1-&W^`7hC?60SugNn8m zZ6uVdUgh!PoP^TXhH~#EE84n4a+lwqlKbFkjm%vS8VikV1xx;9w5c^al(r|2 zgUs4qyJVlhZqj~p&sk^F?W?^0nb%faNdI{}ft2sNkp33?Pv0Anc@JWj_$=9@GW~n5 zVY7G6ti+3wK}r5i+6*0EM)KK=J%Jy;*AMxY7rw;anYM3kKKrq|wC5?y zQXB^@^*@R|j-9P+$?kdHKb^L7%3rd3o?k4a?HlhoGAS|_1q3PmbJ@AnUiK21vGnsd z(bb{bfKK-1WqA-?di}^8w4sxDo4s@3J+=-=&4J8sAKHArTj5==Pmeb1!E_wh#rHV+ zN%T8z&Ua4Ax2)qiwBt>=>ZHwSt3;bVFwrAdfiLmjk-2JDusBBMQl6tq4(ikPeK)cn zk6pGyNxS&5&=ufE9xwWl`;Zi69Fep==Cym)Y1UmStsna+S{q+=UTtzOPu{9buDdvz z2{b2sN|SY@c=Ag<8~tiN&+^SrX;RNMMH4_%hvrPLM$W4zEydn|CW7WcuO@R|_yM|f zO2uCXT0buk9N^W;^X0Tg^3#tdghrl*F6Jt|?j%>E*bVH@dFRo)w?B}YbJ1=m*#g%t&CLdME$EK+j*0b~yoVtR^njGs zk3FCN`p`CStd&igI?Squ|0dCV!sEpprLH67PDXNlH>0t6zpEV2iyF_pu1@SR?3a7( zDIdv&CpnIy37+`B#XW)6MEhBByJ-5+oR9Ctm?RHpr^Y7hE`K+!57BHY?&S3k_MBF( zN4@jonaivf@FnZGE#*_j(Mp>c+Pvkxep_5q+24~Hl_sL?MLXD*yZoM$#3*auGgq=! zV`!(*E_*#@$?u-xS9BZDsZ(#G@=R6*H^q6;y;z{B!B$8ud2s>ir1c;_X|)+7Ubel2AbL!CH_I$bZshrk*Ciw zesm7HPIM=K%6ID3F!42qW*p6tUQOow?s=W6posG~x(B?v%=O)!gh;)gzdCe%r*XV` zb;kzP4_5o3XvSA&O13cpF{ujRy4?5+j;lWUoGu9)oA<9$W^jsfxVvl3r`1(WcPy1=opKia_+di2O8AB@fF*F5dZnQrnHCeK{ zlk+o!rU}hwo!@e}`P_x3)7w|_eLq>r5y^OhXyRyUy&BfF%nn_s2J8v!cWh+OIuk)E z)yeZlJG$=nT)umrf0Chtq%R6fN% zi`~NhRd2ta!;)F? zF^^^pjofZr)OhaauO^A|p8RFkz8-r`+Wx8i6nEmkDQ)Kxd&z(LeOLulb)@Y)C0nvH z7h>zhHbUPU+r+PpZ4?_=YIj0vy$n$0V3@$(=$%99S2mgdUrf)Pge+rd=Oov`=NB}o z$gKbLJqoe+VsFL1x#umzY5V!!F=n?X7pa_ICb5s7m#cWI?2>=)UREqpIUuutn!_XH z{5}%LKW|1^_T1KcoE@Dy21Lu(#;I{WCvcayf3NoXrQ^j!+rVcCmYpw?YcX}cl=<#L z(}8Ax9xvvDhkpK|*oLruhsTSynuUu03UAbzl zSHpUfGp?Vy9BvxaVL!%ePxX_0Mk)JS5KS1(AzlqWXd5nSBuU>cVd=DcWCB5Rd%CX{mXi3K{wc)tM?)XN0)z9`W|iOm|mN*ORid_bL=02#dVxI zzsiiu@RNS{N(D8IZd3cR_~EM*)CBe(ub<4d$AwGrOrfjp%~kt)b+Xtg%bf5P0ICuD zI`5o#^Hw2wPHFuW9G}hQhsr%LTH11JZJT;36D1QJTE!iCM zRqp2W&u3OgYCo{i&tA{{Om8f#^{l~E41VhQ*skj6&sFzqtod0=BYET_qe|VteF1O3 zOKbNqS-Yb1aS%7$w9#`kdEPIV=ALVsdUV6+mYsLJBX!)gqn(Q8s;j;6W#%yT zR_f&5*N-lA^XA9lr+o~~G@9+b<4CTn?5xZf_!yd+x;0l-e_CT^vMXyij~k=$+cvtc zO|NxXGePXe?YZhD@3G?@n_z%XP2BR)@U_`!~FKS-NLiC|QxEB9~9HrrOcB+PTZ$W1pG-ClR6X^Vg5g_lsQh z4<38_&3Zefk#WY*ETB2w+qd^zoP1YY%HJ$n(A0VJ?Ddzt zPn62D`*!F45}H%Jn$)$l zERUq0Iy56_mW?r`NoLkh+g3FGkz93#*H0=Bi++00SZEISYEpiZPYxvCHku(cGFOW+ zGl$0$jO5b6K8n4`yRUoaZ(V9%m-Y*2-3N(#bK0+nHkEuo`XEo7LJy^1bMPDosZX+` z&c`7%{b-KOp+QFD?Z05T&oKIlM|0IM@AY&dt(=@ixxeSfGKTqsq*gLQr z8~Kpi0g{s$?0wkx+T1Zxn%cMgXf+Pt3GKD6ymWmlX-n-@xE48<|an+8f6S^&G@IE zm!Hh|W#5s-Wnk8Nbnx*q{`5|@Rh_SszZuvg>B zU-CL8z28X=qv$8lZ}wj6Ldv&jC(zo@<*F}jZtvbUD=AK1|DYXsp7-Z?AubuKQgvSG~HfL?6oiLt#Uggxz{zL zbJ2acx$BF&WIsx6cCvr}<18o@XLEimi={e-$Yfmlc z2LHU#>(q;Vw@bQ`{(8{G&|SA_f9oYi8Ot!bn%7x7o7P<_eMC z+vDb{-FUosyb!0nIY4~*_ThR5`;Fchy}o)R&eSzq16u7p?%R6%^~U(|Qj8sF)dxI3 z_4@T{?@0OeBO5^5_hGKOhR2IBrt*EcbS`m@qsjj}?-|>izw~vP%<~-D@%dc!Yp=h| zx&Q9uaFXYY0&X6e|KRm~uP)hdYOkrq9>w1ADSMV|bIMP>iDm)KJ)hRxo{7B+P4_=H zx^D8m9+ZAAApUH$1s`p6&P?S(o++lz|7beUT)4c?^gBkgWE)HB7SK89+PpbiTJJ~5 z3`lPMb-bSQuUz$euRm{mkBZ0CF&siWf%ZRM?b06hjwqA+Ke~Z`^ZuUAt>=iWmE`f6 zJS#~YL$opfo2&No#>?wdS+`}Ry~#kt{}kG;k8{<`=KNo@=s&shi~qc}T%&HaQhnF! zKXW`TzPBy4)@#tVXRTBZdbNw=%ueoAa`cMd7PL7zE7dMut@jw(dg&O7pj|+_+vc>N zThflAO{`eC{8~`<7o99m%=gfVMGrrP|u-H*+61eGM(ghPICD^Oc{i^P{Ul z=g(WY{C&2bJy3i#qlutl8(unYiBC?D^0osxlZdVh-QfSA8$uUD$5WeS{!ZG+-z2)J zE%=jpSwQEaoA&0!J1Zf&Eyo+pJvv88NT+W6{ctXU;3BUEkEmOnpt zv2|kmzVwsTxM-AidG*{c!uDp;_RykD<|u$|c>9$qF1E~dRc6nW_q&LOzYw~%&#zqm z-pP#a%9KvV+ktKdT``Xr{mB~-DM~DT*ype_MM`~VF_ffj7+c^AD^;V|PFk`BC_31h zvGs^86KCc+IQ{y7=;qOlp*wt2I?r{mj~C?@(0$IUOFbn@o+AwGv)I4jwI|`{xO%yvsV%coDH+$Cb<9ljT`wS#r|}o#e0W4RGlyKOb))J1;!5?2cYS-0FVFRm^gV*UWv7*??-t3-v)sFs-8^;K zl#DTsZWP^jy?rNRlvhTVuCHNikS*fzU z_ZV1Yv`)`7!Ju?Cfm$ z>dqc$TZ&cQ2cvvT@_w5LCBJFtW}$nhn{G^WO{5(azlT)C&kIM&&a9N`xe4uYXy?-E z`QcJMx9=uCZcL1GvY8(E`F&EP{0`_gp?g`ho*6AtSR%D$5Sp%s`~EeMkF|r32ZUFDPLZ2Ra?`>#0gy52CLl@)0qlhD-zAM`c=S%dG+ZOb* zI}-l6WNV-Dt8RQu(?$5BCscVA(Yge3`(Z$7*N}Rk9erYXta>A4>hC?I&yfBIzK6b& z*!Tsc7lEcoKTP_y(RAslzlNv&nT2Kxnm0vhf-ysDe&9v^R-qesQk8c}luo>S{Si&& zv#Ad>ACJ;lJNvLWiKYpfw$_vL>4Ihinv?MvhGyH7PtIownr>)5RbHRFg8IxtvvDtc zjzQD(lq&BH<$S`uNg3u8G->jYtQ(%qxG`9H2X7#R3vQ;x|XMv>(ecfdgTbH_d;{B zdPx>7&{aOY${Xc-sJlUoEr!5F{(7P7gD$ZSp}YSyK$$poFEq2zd?Op-74Zj|zw;}o z)@V)(ne6rm`TBQN#m{itHUIN{O0#Px+Er+$ppEUrh5jk?d%pz3H-9nxcV3k@RS~IA zbgX=x{D<{5tFx*gE9?@q)W0lzzK9h>3T z2i+`mw?_SOq<^zsJocD?KG#)c#-C6|_(i!r_2nVb8%S@BwmBG+B4dYq>Jmpo;Kbv@6vUFG+ZzLAn%Bz=VRW2ATTJ$nt5n;q|{T{)URvM6rt%55X7FyRhxz~t6+~j-^2b1bg?>FyJ}ao!ZH=_I@jXl{ zjmfW5Jw!JPUEg!6;?Lx12V4#E_j9B(tI+j8_q8a$Kv$27oBfD3&tmThXwCXaAgAd3 z*X-_CAJhtMSGT{;63}V~K>g>h0f=*vzX526p=}co(CQ3bq_4-JnK%iJ+I$F_gD0U8 zd(kaJHxFIR*OYvou~7BH7Id8#S9y0RV^A-?ibunx#OI{-^F2%pBCg z{tKlC=ZbchuCXw;3*7yAU6Z3F>U~wEYjV0&8FPOQS=FvqHkpTdtKxg|FShO4L3%Ig zdr5yM-^04dFUaPD=uEpY`fVa2>sKbpwlfH-a!%_ZPQ_`F*G9K)Q zZVS4YT{4#l7FSi5IcS=$ahFvj{TS&Dr0=&BnM0E&xWY(#Ve7Jw9 zv+CXq?clXl-n#My{T;~oyS6{2XFbrh3{-i=sGddr_peHNDZXRS7hhE6{iloXG0RtU zhoD=B?vF0IUs*b}X&Jit>#Dr-qiu@X(Btj+VcLHs_BO~k7o|12mAzP0as--8s9nv_ zHoUmXdz5IO<@>5A-}@+sbra&G$P+k%Gj30l9b{yJ8Xjjr`KVNF!5okw; zs=TE%+D}{BBI&EpHr`NW&+R$x&f5-69EL{ii9P=nk!kik^?@}c)qNHE zJvX9@d=L9TtAhMA*b8j>Gt38mp{H)dw1v{}7MEqz{mOdxA%>qfrmO49yZW`$WS>*g9C(aFx9S zfZu!g+XCAUHXwaQH%@-HSmycMUS|hKT{c%58#B|cyS<#Z&Dn8yPe1K^X_fZ@m5V+k z%Izpb=7`*Jb$ZJEXx$xTpNH4+msNR{ZeBa%_u^%K>8h&ale-#!db7WO#&7lOcCdA@ zYxwTp>(#;STe{Ehvfx@T^;rjWEqkiMd-FTE;V+ZvH8&y3wg*TbCY`Mp6L)aOpU-Dc zz~=6+lB9Y}LOTWRX`_o1beCg$hA7-5(a$4tAR#O+{&1o#w*@O|LyD}_?Y&?t9zu%`z*gz|HvJO*BSwE$07Ie z8QMu`k3;(#(Z=pl%Ulx(OSF>v9JC9s@W*oWx37@vDAacwc_{rD>FX)!lJyqpxmWtO z#_u-%>aWEgg3a+grkk<*$}+EyUsq$<>a!TZ2(k)o8_(1nHh*gc(@VOL-8go^A&{|D&r(JHTs-}way||zy~SMSnXRqRZKI`|?YKCT zd->F-hv6~yx+?puDpquZQd(Xd_W2U&M@jF8R(0No9m-ZR=vV{LCh3*?N-^!#Ca0A_ zp2<=JX@TuY{zb5DU^(&gKeCTj@I3h5EI(YbiQgA_amrna{gU$-yxQMTeQ6L- zN@*16cXhrU1X^J|NIBczSXz^y9L!j~PLFdX=SvDBySQ6+cVYMig(42ZR2!ie$$Nmj zljOb1*F!naOy&*7zsmC3p;>@t@l93XdC#yNCEe2NWN>>AOz0MhL4Mgl{yOaH&85CJ z{SS5otd{iP)54cl@I&A~5@>bVvwVq5+~_U?FVyHUa1(z=pxcD*CZEpA(ih})CE2O|tI+Ovi@&BPdOoWE z3Gg9s>7Rcuqp5$3W%Kf&_EgPG!sQ#A2k{5wG4(IA-}aLIX8Oy_x0C!s#vrU;$2xTq zFAr=~L4kbM0rJ(q&0p(eoZFYVgnN$fHtm=vZ5wG16VF6Do*!w4_-sJi0BxgaX~#Z> z)Er-BpSc&)zoh*iKh4@t;@;ew;`ipt_9Wj9^3IS~u23K8T`$-)*l7l_{|Fxjp8|hu z0v`vT1Amlo>h=<9R^;mp_%irE`8u;NbG@;K>?148|FWy2&FpZn z^Q3o3S6&qHaWo)!VjstFS4CvRk>2YLQsr-a3Gwths=NbySKZ>i#pu2DEtxyxdJhxH zc7Xit?<}343uP;>Y~J611N?Gawkk@pogwcUdCwBSM|yMwY!hrq0DWH4qvsZyx^)k0 z>#jok?m`hoHr1t*8TPyl@-^+R@?Kock7zprUw=40p5Nh8R3x_2;xr{ydCfGM|X+ zf(c=|y-~95fyd-Wh|^^-u6~I7!7B=bR~CkM1p{P1SHKkpFOMRbn+tz8l*Tz0X-m=vR* z{Ob}l9sgW9vw9JEN5I#?+rX>R`X?rz%qLxSl(Bu(m9VQY%oRMY6t9P}2ZpKFC;dIW zP}c&RiN+1rIBcfxd440#QGyfYBuItg{B9Zhe9vCV2;SYlBk{M zYB6Sj^slDLCDy0e11WKQx5n2lc&-1dzn|8n`ea_qFk<}pAZdM{F3mOTq2CME3l@x# z!Y09b5_AW^y20|K>m#~Zu&xB%B3NevTLtS#V8_AQ6IkwL=tlzE4%P}5Ew=@1M*`~r zYe`_eV9g0^2&^fAje<3T)tZ*swoQQ*!3q)VAlP=WrU*6%ruscPf-QkbevkDr^~)OA zDA==wU8#NB-Zq4FPvb{^XMi(9|cQ$elz3Hbu@^l{c_a73m z>B}Rrsp>lp?GUti)%TLJ`gRoJW8x27&c?5<@eM2RYyLORZ29v8-jDJ>6~^{6UsLBx zZd=f-f5DGa_$?n?e+%nRU{~{9{sJ2&*yhW#3g!$-3+WvT{+?H&O_{4pjoL=`K4{0G zy^qi9ITWn;Xb<=#_^m!}^pPU0x4+8hrs$@jTR#Q5qtLZ~@#OrZQyb9jhwd{fm%2xE zYJZ?p3?oJk4OFiAOa6WubB=x^1lAqNsG(&h{{dAZtw#s`6TmU($`3@ zQa(Py#=uq+*nY5M3G5KqN&=e)TL#mxuaEdGgDrtY{pvc{VglO&TL26ETc`3fxjhQ@ zG%=)45_Xf&!|aKa@t|MvLLaxz+fvEL2-^Z{1v`W9`iN&e!NLwOmXLzD(4SY|naNyH;@LrR8?+m9#LLQr_&nicz;Z&e6af}Kc5EvX26bsJyL+FlPt~d3(S$WK-!qn;`Y2Zu;)gS)}U)y_Uj#^ zyEPy)^U6F66P?ht%4a6)|DK@!ykIGNdqwa|b?hKt_rF)!JNS%TE>qZJ_7VC?+e2D# z?|Z@q5_>&v9Z{4oJvjug@o(chPDxJ~CtK;+#G9#5N^=hG1iZRd(EU^6^*a|Y^<(>O z_`~n`&kpfhdeQ?n57y3i+h?zg>Cqn2S4r;<(=*RDoyu>Gg;S*0--A5eb-S=I$qIJx z0w)$O9-L+n@M__24SwE#RC)i%f2DraM9(f&-W)9U`IEdR$Qt%CA0f}D{XC2n>MN}w ze>_wg(xhJ<&=!y3GfTAc8PJv%AY_|E(6vJMet%51x)9i=zdSpYi5RC@DlmP2ki3V! zNBkViYdW`Or`}5zpT9WQ;It+nJvt7r;Z^pS-104Z$JwzI`HENjtB}DDIX9igD?Wdi zNMU8h)CqWv|ES6(oO}m8s)8h z>H*>-&uNW;WO#mIrXuqrSBiv$y!bmrISoH6jn|U-JlHm{t3_mG z?%N*w_5SLg@~%VI2iLG1WhKT7|AeOQ>)pR)0DDBd+1K8;;EwJ1#{O7J>vg;2-$6$9s@ZI>*me(ThKQqq&d5V8V9{H919eHwD?O%9Y(o3CC_a0j z+k~!LbU}Y)?8>;xo+7>YfBn4>ehWJY)&^F?cYWj!=fGOQRt32FE$$D$;PNh}|Hl|N z;B#%7t|ivUpP8Zn;?)hWhHVszkV~zYj2eu!~=wnRZh68moam5;RhoL)1dD-J>WE>&dusXB-cIrdk-zaaneI@&O+11ZMY%~b3=0EsrkhZUa*eE=cAsI|U*8|=C z{4!a5^4j@+5WEk3(rpW|`M};x*|f*VcLN>=|H%C^;>{qyTDUp$R5?x@0Z!-`Zzp4| z45KvM4#t<_akBDf9pu+bH!tw>Yi5yojrEJ_mjTjSNPnl&`ABz1z~;dIM?fGCdq(AW zpuEaE1KrgBRM|W9`7P`S*bW za+rg@Gh_QuS%fWt?Ey3T?qh3U^I%UB5g*0CC%`tq%=?7Pb-RObG^$gX8(fXt2^G9l zZs(hj|7kgUM%FK*4=e}vYdI}f8HsV_uTx$UJ4zuc;}HC2t8?KPsQ6(X>k3UrHT?=O)lUa8rj{?N}hZ2!0fNH{U&Q-p1`oey!kJ;CBgk z^=)k4n|X&zeUw$@jlrwGF6Vv5?b|LajAo*`m}QB;xw11#e#vVYeoJTM@CNpyadaJQ z5$q~KR>pFFhQ9JG{9m8*q|5rK-3?%QFw<_L?Mz1@C%gr`1KjK{;lWuUH1^#IJ_P=S zEJQAO#Lre_e~~H7R$R^b%Uy+qiVF)%oP0Z6k#U~5F!DYK|6^xTuG_y|SlEoO3EeNn z!Aai7;kC3a=e^I(D|xOn`&uV2JO7ouJJ_UZIjbaZVZC6@5lpfh0&4=hKi?%I#T&xM z{QM8~arPR_7%>gr3BBoqxQ?4}U+V(0ucOcnLl?{i2Bq^w0vfDHby*{QGEx^|C%`5m zSTk7uPW(04UDCtQU)x2p?C-)QPk7U2NZO#!Js=l8XL&Di;Dk$SrJG~$8HUfOpT zGts7)9bQ~f9%o3lJ@A-(a7iCD-VcIJfEgba>&t6G4<%VlLN^87U-4bCu%{laogN}> ze}r#6B=bIfVC%w`!J_30TL)A5QMxU#@dQ@?R^*+)8o@>*m~5yOY%f?h-&N0qoD$>5 zaG{e$?A2QFM>A?q?rrG*Lv!AD)5@67#`^xo6dycK{wDbK!f*QFzQ0Y_Ql=+ZhqO9A2JI5G zuTJwvv9Uz&RCl<4%2Yd+;8l6fU#4Hwj^f`~ekOKGwBv?SGfdfC&^G*q%2r#Z|HAw> z{=)p)rv9?+o%jp#YeRm=e168?WgG`T?b8OFf{i_CV2%-Vl7IW#v5O{RrL?$YDHbDV zPj}jc)$u`iZJe9)K3xsta({7QVKr`F@2_?%x$1QUUj2{9m(`^3+KltsNa3ZiSBn^p zPs@1^)OYHowE>mU0NxDVmF5p-;xSoE%D`jdUwE~&=j^^I!STx!+_J8kqa2krMtV2t zPjK6R!k4C;RZ*S!TY^`|&Rlr6ID;b|&BTY1cnYN(aDhboX)0=UwiY zSF8RV@R&T0Smv?(aP{p{JT^PglHRwIs?Q$k@2*c$7H6cWoRRA>cy->I^S+nf?S1kT_4V&k^tFYmymM}1qXy*Hd1uN%^MX`GsZ*XmQNz4!86 zAIah%*ic)w_j3W6S8Ku+JVgAmK=E}RbO*`H(6&6S+WTwyL}XF2k?eQq6{Eo#fk%Sx zkQMpMzlSmO8P)du5>#d#H*?fX4jFjN_}T)^8Z?(eFI!-(O3UKpNZM75{pKew;ktRoOOAuugw8$fON#`Jy&x51v;YJx>{&kvS63 zist}y?H$!#pKL46^Y(yFJQed#Lc8buYHut}k0#?|HfH9S43*9%tita|XSMeh3Ekg&Q(4B-L z#G7hAeAb?W9r0bVf&@*KSnXM*@WDi!gvy5+Lwz{tL-k)bbjP6^r9F=NAc~m0vtCO7Z6e1W zSj@n$@sjHB4(4ziL$2D02*rA1nNWEuBlFHO6rO7D3HZ*z_gj3|o?zxvg&fCxO;E1( zHoTwpjh<@zeu1F9_Wak)L3=x)Ylm(bx|Fk<2_NcS;M6mn@>>(|I{3V5`(7a1_rbZK z{$QBE^);aoR&&q+)%7U(>MyOfcg6*Ewf8iH_NBURKsOHEE8TsQ(3R}f&aQ!v{8sA+ zkl$t1;U2B((FL{u_ENt4Izm;Aj$9weOmusoEB019p5NnvAK!ei&b? zI~y<-DxhI*j`Z=%tGxo>mEMJu6ut~T3VxQ42m7cSKK<8(^N~#SP-Djx)!z5@z1)5h z^9}ULVLuuh#H$NlEAUF4FVDwyKW)C;0n!B>v-X&;t0a==*F5?KY+bg2sui3|3 zB+u+s)!ub#3(wbDTS@E%T@=@!^Yt(XGx z_%!l23)Tj9vb_Pt606V+K=(Lhr0n3?AMw~CZTwz%h_3OxoSr?R@BTY>Hge79v0 z{_s_87$j|rw7*gspCW&I!E!IG4&PrZ2bAI1vK@73py_#0wfCW!z}LZpbBnh8pNHiuZ}A}U*7fncvXxfwX7GPW z*2|uON&3?FrTNlUc#XkphKG`W%y;RO({A4zw_BQTeD6GYdtOp)@5W&O+n2e?ScUrS z7-=J<9rO8?;$UuPi1^vckD%8>)!}=!Zz<%c1yVv^)US=C&y)Ua@i97-k*hU2+D_VW z(ysE;II|ne+fVwA8{B#Kk~T=1D{mY8rb$0Y`lo%~(XqcY@N@lA$zfndl8m+0W8`nT zu{wH&(D=|*b4LXmKWBzMROV;ws{W(=e^d2I&lIU{t26-wO1`U@R455f;EGgwLJPn&$+74m%w*`?-Zfs z>-(qhu{jfKoPe$my4U!0PMwS1cYrJ20d33Q!g?7swlT`Kidc-IwhWVJ`Ic&X4_lbW zpWJi@^~1iPorX4dYqdAacb~tFhh<~IIr%Pk-B!puLEhlrb7W1UgSuh+`LJ%r_GMG~ zf50wZ?$4LGi}h;sPk1Bv4ER%351#cCu0C!9UjPs6Qdl?G(FmsaV*qR(%;*BT&lwUH z1v-uXi~ktuOQb)X?}}{{uS&kt;OpQM!jVl-A=YmMr@fy>P{VJcde^K6KI}VrHA)Pu3ZT%~&y)B;>IR(Cy z3-A1ajx@Dv6WTRsrC<6;&XtEryRF*$nSih?4dF(OUlBCRM5Eodey!wLB+o8i_f46T z8RNfqMEtk>*8sGedzp9n{GpZ5^eoX$LG?s80bS>-s_i?vWBr|ZX+S5r9f58Jx)Jd+ zzBF^Ing`uaM?;xvBo^EPKV*-0M!^}(xiAGVgpD|S9V zeP2^Heh^-5WBAA{KVr7QjnIK{kR-ichPM6o(p*E>I#^c%+XCy2U@gjjg!Y5|8{eb8 zz&yV}$Z%!M8MGK*)j=L_yxKmOW$VT>iq;osdS}!Q`&2uIp*;?5Ki^CI{qgV8l3!C@ zrlDpw?r#$E9mgLYHAd_7?t_;oN&DE)xa-(2lI#^<$<)3}J!d{ov^(!B}x zfrMC}P~mnS9{S6CUS% zQBVizPaAX%Z!L`}onYNy+rU!y+!N;}()Qdt;57}e{eM$!pOd_I-|bwFQk~Y|Q=F;} z@1nPHcj_4Ma+kLy@VEUxi@%3g8+_xkc~Kym*q(~yG(etF^5m3 zM4gi3#m8NBir)9J0Kfd(*<+D^L{>N;t&u%9YgRMtddmhho%_>iRIhrBXzbmrRaII( zW%WwzzZ`U)C$Rf34Y25kU&nhH*Yo_KRoO@8jqS>o_LA27_toAvPUDBM8R@zoPu`iy z-hEocnjlgA4wI+yW5nnRx`~w&^}DdJdS+}dy5KzfV2JQJ+( z+WGh8kuV4+tLd8YXB*_*zrbFF^74_b>m_3cz^>GH;~!pQTraZ|ewlFGjO9(x9fPjN zJ(eft#o4sS+RPk#54<+NSpENX_rMOSI|rZHFI9VAQQfWnl*fes8W9EoyzKEf`MSUC z+c3YI`OD3rk6<@zec9d@6pkU;D>8vkzgvst;?WBI;#aEeJD~NOzb>%OuU6aVX6*WV z$b&eXyghaZWLUZ_!cpaqllK^T3o1Xf1wStMPCyJhlGXNE=;xNIy;Z)a=|Scjk+!1< zs^cd42EJbHWmHb+Q{(!RJzf#d2&vlK{I9h0o7LVV-}MpJ4t50W9D`V_2W$!Kw-Ia* zY;L*Qp1t<-?gd-@vwn18M)sGY6_m8sR6y86YxiIkL94L^DG_n9WNxojb$9+EcminW& zWYGoP0(1`&9Uo!+V9Q|NHi*UcfX)2C-(&ab#=(Yuh)wu(Dt8)e5bXWJ;^T05pMc6Z z3f(4ja$)*NJ}Y1wU{4f4Td&6JDi+xU-}a+wZ(AuAk&bHFkrk0J6fxu5_Rk=%wQBFh zK5gi0wf@4!tABj-kC8P_GevHp9O+sg`CETn?cLyyNj85%*P1hNU4wU#y!**Jv|jCf zLS?fSLmXs+AY+>Jm1yQvzn}T*2l(!NoPo;S&E;A9*sZ72MY9S`2Q*LNyYwAx;9vWA z(G|!<@~fPupP)G;8a~1r=82EN?kj+gbgOxu@_vrKs!niWd|j)6hveN!+OdslQ>M~% zcZKrwgRg-wSMbABzN9DFx6t#pL1u7JJC>o}JnjF#Z1F1MJEu5kJ+HFMWs>Zdk2?F9 ztm>B`c;#wp!ZQ^yeea4i;|0NYE6W4q>n7iWH74A99dgdcD9I|nv;t(~+Z^)=qx-8Pjx@4{6Mt>p_p z1df^PQK#t6C#i{Y4pPp>{cF5_z9)4c6InMf{SR%ip~gGYt$T?+dzrgN?N;_h7DA3c zpeB45UBV_3ys}l!Mo{G206o9 z6N~S+o#w9oJcD5yWv;@nvWWij-Itq<5qah?6K*1WFfs<2A#6#alkF8hPy9~)W(~|# z)x4jrr&NW^Ps7*k7`yKl{bR7zN=u)RmpKX+J?lG~qO7u)X?U$XzQ()Mw|mAwf2@9C z;O&`fW*-vu{q5viCZG3&8t;jIzNnpXvy1f>CNU0r}@XUntb^^MC(DC{TcbPH&oB3OJ&-a_Las^%+Pp|Q| z%4DbLwlr31T&!GR9ksp2dzS|L^0t~oH<3Q$X{FrZ;{x!?WCXv!}?w^dm*Sw%?9HH+y4^ z_a^ZmKF01$pnqFN;~s$}u6Qf1zIpPhBG zxMvz(CvL6rekWeWIbpYE4Vek_w*r3!M6$|Wgnr=_HQq9?ZgT`Ypu7(gWAJ zV*Humx2Le{9wB=r6U^Z|YrKP}q*Eye;k&zClF};;E=#j<$z_zX54^R;tCQY@_QAX_ zw#JbCc_zNdfIXZSN60RnUV`7iRE>AL#@=U_&EaBtcx^?Q9tKP5hS&Bb;*q!4c#Spi zD(|zTt$8&r31Dlc|KT<9Uh0(=+swqDYxuuTp_RtQS@VqEmwSTO}`(|4F6W7i6r|G8FRc7F|{Esze z+*KcFMOtOdf*%9#KDG8c_uIqve}j3#5&FjMcZmPu&#&%IaXh2sS6}zQulPyE=QH@> z(woGd{M~8%kY7D44v61Eji>7ABWxCIJD5TZeS|H7H6*ZAux(&@LuJo!90#ih8x}_W z_HhtSt75zz&79TS_D#ku(iMkztV`|F^}GZXMSixBHbB}9N{i&>v@2hlQjK-^c73Ua`=xBX6Y*cdmU&p-X)oPZ8_v55gXqqM9M|}GtfX$cPS~@I z-hP?&0*bOSvX@z?kA_KGBh9P_@>?<<1FK&oHs!ldZ|>%ip3jihL)sVIdY*_wvLAE0 z4fv?+4S215wZ@Y>(`UQ>`4;vC_IiD%2kmn|=J`6aS5hRs<7+iut`oRyh`A1>Etzt5~-~$QT0kFdk+P&bj3ED}p%9Zju90bpU8^7b%VGeB2 zLAwk-oS%YYTU|R9O0V0zMn?33NzU{yX?du)x+Ez=~jN zV2|Rv^-X#+on2dNBkcrfHAy@3V>kaa_~6T29%`MmTQ)8BeHX4`5>=X=zTVD(^s5N;W=D#t-B z6Fud4spi$ecZzN2?>Iar;c*M!{q}|S#6e@54<6z67-L10hwQiYyXXfzekdM$qvKyD zGWQi*ww5804GxiK{D-A-OE$=XK1^DRQk~FELAMIsO-a8J?87DE=S!UfxNYkyyeik2 zCnb5I8)iW=e1JIns*1SKr6Oj}sPTKm6+f==o~wq~n3RT@WnufALwhE&X=K~lOP-1U zEbVng+8REzA~}viw+7v7_^y5W5*;@y-u+cyfV{ogmrn;|N66E%UgO>0F=u9jlCo$OXgo6Hq&lY@gKWE)L7BfIDy9u7JcxEzAZ!z<)*6-7w8#Ue`)xk9mCHm-Z zoQrKX78--s(tnlaGMYo}2U`SNJ>AKl<87zK=JM_rcySJmwu;|6{Q7=d;~jC=_rk*A z_Z2FyOJLg)&;fz_7=YDBVF!aC4T;WjlJhLdcMr}P5v2*sfcUR z((K|_zWTKbqNgm>Ux(mz0$x=mJ;XBO{gvfS^z>iR#04@a@@ZUJC-34`+;=yDdp{ul z0YAs*S<=7kUuOcPgG@Y{pOL>LcJ+5T9ndW?f_fL~r} zn{?mWS2tX&S2FcD0&Ou{&SMe03HXTWwcM&)I zko}X>Yjr%%)RQM!NhS8-->c2PM8|&p)z6*KcU9GTA3)z6_Q3jHT)%F2?ps>jnu6Ei zd~JC4M7niQ^#S`i-}MnT2e!YiHe3Ucjx2#qf&EED)>l~_>EMWeXw*M1(-HB@|A_OL zh1%FWr3lso7L+SLz5}e~j9PEbFQcS0neg6^2GaVVTY&DtqBHvx$k;#oGD6xSXKc(>)Ha?!T(F zaeT7u@EIvvw)}158sjDO=Gl%=rZyh9kUJzx{x)-+!`;qg{5A~1XXJsk-j}l}ZQz-K z=o;`{DLzyEJPWU_2cw^29@Yt85Z%|#elU~lX!*k9vc&t%K0Vd@Apk{)$NUBUxn9>b8GEd7jlZ| zs<|dtE>gOm`w995oy=Ds$#^^12$;DODk0<0ma;!6bGYKyOWw9emTXBrZV0RuY@Y9B zI{%44=WWcfAKFD|%~%qzclaPLAzFCPfZDo9o~Gv7@R{C7TY2525u|yZ^f+{*(7oGL zkGGcUA-gO7C;9^Idrqw{#+`iuAIW40UY(D|hE*;fVWVI@V3h{3^U5i(Zm^e2A;SJQ zy3GxA!3)EeBdTqtm7^l>;BT4ylP&nqQ>t@j%jGGg*W1@wUwCY-ch2e2dPIEAW_(@T z`Iwfy+Q*DrL-6Z-QmviGUTe=}O2%X0qu@iQRNrieQ^r_@crC%}Kx?h{47ZO-+RnKt zF2?lD_MbAoJhe7_XOQ}<1?&LW1Ng3wv460`U`(+i{S}c@+^=P3T>>XmQ~$N`HwC}; zwp#C^WE=dL$$wLtPAQu)K(T?*fEF8jFO$Ff8MQ_iWM?Hi2ww|m<6r1TpsP*lnTdb> zQhpmXZ(E9Vto3KKeP^xrJHD6vZ!jjzN9Tz5IL3r|b+yrd_*Cwy4e$FH0G|S@2WxpC zKSKSF$aAJPI!+L|v{GY}UNqyPq;Y;>rZ)SBT2~UgNVU?HEy`KxtMzuBn^MkFJjOoz zTo*Unj!puEW3NY+Y8W5ISbbnCZ>SCL+vbg2Cd67GDs3lyFX`*I*Lv?y>OHMt9%E$a z_rjYh;zFc>tb@U09v(e!to63V`Yq*y0= z^?IUnw>^PL*U91~q`r=8RATe+*&d!Kv!iPh^Zr4^S95{+Viuao&|mnM<1?@W&08~YbK*= z*B*EjkJj3IcglFIMtrB932wmvLN{-CNC#%&vHjm_)6T*099Ue|&q(Pv)u(ckaqSDW zx(X~VBm7W&jVN4yPpRi1D{r*30cZ*gx$fZ#iS$~mFNG`pX9&8&tDoVGp`F`MwQb9UDuau z?`<99`|-Xq>lj9t2g#pbto457_Mb5w{N8Ehx~w`Jg2%$w|Mzv+ApiI`h%4M{ z!fWj(wcZKoB*#3<)-@Qtqhr~U(?{52OX9Z#zp0|(DUb* z5YomObENGjtww2ln)q7+n*#fofOr}E1HM|>QM|PUZPS0%Y701SL->6epuc~)5bY z|Eku$x1JXsR60jq55ME$_ovd@ zjLOKJKz?93cdV6cSLSW5ezVOo=k|Nyx0ua)e=P62aKo9t%f7lI=tljNH^E$=@F1$F|=ti?aa-XSO2 zZJN|p=fm}9=};3`9xP=YDCq}Y@9cK?H1M|vUi~$Bd*7keRZgvgkv2)%j@rC8pf(v5 zkFE16q=~2(ukUe0OuG2@C$0o0OQ!!RqdlJw*ZMjrD))QV9>Bb`a${!}GymygFFAF? z=Qw;`k;W%p|F^pMXig_y)9`94GxA1s?z*La(M z=Hf4TcKm_!84=!!Z+gKtz$)CSp-g~7xR!hWLm$|CO zX)?PWxCXEG`{%v6N-7rBDHGolD22X0`w@<&N9P-+N~6d}{n5NdJpaJFcTJifiucF+ z-IcQaF#@k+#kh@4fUSf5@|5}`+v2n_|7`yXye1x+_x|23zvTF|lESN9?QZ-d{o9!L zK9rQ7o!2J%B6~}U`!&xT48yDE+`PAt#w#YnY$l~%{nEQRc&$82Z#}i2LH=6;TLyby zfgjPn4(8yA_~$357gj2Ea`WbH-a*I#*wT;eRnE|eBlzkbmEXoDTSHskdoQ?m70CGS!41~HQAcpPjV z?8&MRAC-}#avNZTk8!!h%UDa6q4sr<_wdvIckPpYjgf!&8F}w%ZoNN!rGfREa? z1h0YiQhS@g*1-C~*cJ%p$l;ip`EEF*n!A+h82}o0=DiMgU6SL^2MQy7?1Oa_#`&A% zZ$E!CDAVvOT-JYnVfa}t+{RWDlzoD-|JLnaSks7~L%-Fzhm0~~TaxQB_;p^G_xjy! zVW%)Yw{UMP*fG0_3-tOr^WI}sH?HW(HlL;;+l=QOq>Wyb_pX&q6A5Imsx)c+{Ol)f z`Qp5HBF)|p$Lhd?Y>ol_e4Z`H?s2-6y_9j3GKMeBdml+FV4q zUqIQiosLX}H*ImSkS1Zyj+}(2R49@LGh|>{a>j zzSPM4iW@VH<1p`VJq}&>3-TUIdg`z6-L828fpPH1THL(bRk3j+_+jv?-SR~*<7XS( zcO;>g!~){C2YyS}=Dnw%BEJ!*!CQW6_fh!GUzZQp%_HspRM74o=r*7m9Lz`WiK9Ol z?$uAhd8aFr>+3DNGhk|8o-u>+4Av&;oS$B&qhwM ziO2TS(5D2C7O*3K29JK|dtQ>a=ZE1bzI(ui!GgL88wVQ#JA?1~2%82Q1e1;FBkVBP zR3h(Du*pQ;6|jj&UfJ3P*euvn-2N~*&ba67emz=Guka2H<-G}h>!Z4Lfi>L_Z&yE9 zBUrRud%%idL0+|Q9Bdlw&pq3va*vXC_@)v+)Y4l4+W`AA-%EY%pRf6BY0OjpN?xKp zIh?n5#`0VF8^Df%nb;=O6`Mc2LjbyF{yLyth4zPhFO^l&tFI;WY7g`?FZJi0WGV7D z4t5Ca8=5aerOARoi8We zPR>z+STV6a{}tyTzU{D{VV zLH#D<{2rXL&$WZ>>+tG&196eB`)2UZWDXPX?m{5D3hVrB+9;T!%sSV0@)fJm-`n%v z-|<~_Pym$Sb>^bj1Jq9X0n%TWwr+CxjOc_t`+|zX>>0ZX^JnZVEb#x*8NB!VjO?>3 zL3e}hj-c+B#k56lB{BDxWmkSFuOc!c)6;}9Lt)YQ6BMxlPf&HcFvaAP{*M6ypLTyh*_|gvXC#L%(XW&6I=Vk^?}RJw*O)GS zqq2ODMm(0`G5mLVZ=XB9i1E0|!D9d(4SDqIeR;1!j=Q`b=9qP4Au5}3+8*x*J1x6> zx>Iu2#z!e<;4n5`mr_pRJ&g~pb2F14UxZihzvk_8bNrSMSq1C(bl&@^+h_8mWK10H z?FIPAhcwsW-{$l7Jvu4z%dPS7#rXCC@_C=lhwt&Q&lrBl_z(gRGj@(cGY!pyC`TX7 zE2qH@g54&c74BsO@sfWs|1Tlmz*%J>a9@Us1ct>s7Ya{5#%R zzKi2gJ0tHbzZpzNrlRjL&s^`;4VAf0na94EPrK_OX``9<7EUlAj8cXzdpCo_5SW&@ zcSW$*xQjIH>^p;a>q~iir=_c%iShM`_#K!pQRoW)ui~TUd4u8tznA!3!gyT7<%`tL zCCcns%zJmH$@Xw;T*$29`7vgSutjT#xCu<7`mP9;)=t@72b;LVUn%K@uwJksFu5Ro zgbjfWCg?`N1`^m5SbqXL2-XLt&_W;S)ErnZn6Vk7dwNRHmbK#32QjvM!G=%I^0!;> z=40^_OCv5R6Niz#^*$9|{;R~7Zoh&^V`~+AS(HGY^OZLg7AooDO1hZ;S1ak_%FMfz z+M#dflT2^NldthXR3OZAs{?bMgQKn;{H;^p=B2!M7vCK=mt5C*hpXwmWNqP4=@fiE z?$)owKFCcjHrz0ieMW_OgnU}k$9x*dZC;5EFQw`U#7 z{Xp_eK<2+w+998Q7+yQR<plr^HCQso%e&6+Nq0BkHBxut;fl=?F*gF zQGYjb6VeTOKFxB6*9-OS|k*NgER#AZ>}X zPo6?N^Fc>EWBMN+UEj@z&%fGzMX9TK#3uGGZOOUee)t>cuao0)$$2S$FZKoXZb2{I z*UEVietUnxy1!e_jCnDCkv-&`yIEdG;N@-ldzr4f#pi)U`EEaE`u{BK8D8H!Go_s~ zkBjP4_McDkZtE_1HC5Jm_etA(IDA%&*Kbl{IrZ0mcx~OMu57KQJ)FW9S>`f9n7P+^ z0s86t)_H&K8e}_VRr2D6;ca!^x$eG+)%kvz@|e2_k4|{>omJ<3$@dpLpjW~DxbqeM zTvGNi1Wm4?&fBj+EE+%Z^iE~40GEATHf|x-e;*|8&;#qd)7`OLtd75O*Z?J(b&XB< z>?qbbpP$X}<^(HI>od1EupSESjmpfknbEy?UUuZuo^LMb)fm$S{Q~rVFZy!5+{rtC zqOR%fF13`Lrr^`^kh;WsVC~tk$icAJMD}9Lxk%MviM&(f{mH4-!Fe62V($iCXxsMC zI&VY$Y40X3TPw|eD;j(I&J1$ZqnG>}53BQz^8FNK@eeLpbdz-kK6@JL?7JImADA_C zvt}C}lI!&!ne-Rj{f8o zmscJ>!dk$#fj!V57V7{jg2`{`Bf4I&Hn3nmCu|6;6D+zGIttbSc0Xn0Bf2TDZm>av z`1TKW2y9DOxov46i`v$YT>7Lr>?V8$&aDgI|AI}I={3)QqFzOlq_s!&SradkYkowX zeOHRn8C{BGb!eYz`gh5XI<>%UuNMm4WIuw zH9ntn@!77t1h_jMU1#GW)2~RDn>2Ozjna#x_mKV>zZ|wc>E2m0swusl^y8#&^V3lZ zxNvZd-_o~!KmChJkJ`3o9KoK`C*u01FY>GLLeI>>X{DYoy2&N!5n7y3o~+Kb5R$#vfIQ`dy!YxG5@yjX3ZKGN$+ z_-%VeooC+9@v?}$;qTS;;gFa8R7L!#k{N%wHh}Xr@L7S+vGzLeyD|L>h1i zF128me6>cc1z?92oBN+y9)kbeRpqRKx!rZ%KPT&9Ws{goX5Qlxax;0S;4=!JcZiSm8Ah*z z*#GuGujz8>;8Ex|p?`t94Xo|uqJv|$Aw{P*aUk*^+a4z6j{AxxusoQ;Z++zN+Q4#P zPZEG}z6=kf{5{|;5n5q`V9g1hd%;>Gbkf^NupMCE=DS0`%GL_HIe8;%+|4pdX22y; z%7)cCeCOahnx?m-@pXe<7b`7(X8$G2^5^sX568*Vb#a~d$uvK*8TTW{((DR9G7P^J_|08L4CuCh^H@_PV7j4j zu;PWBve{LbMV#}9bEe`_uxk=n=0=xXC{JzZdN}Ldy>;GwQ}r;uW;B}C2I|}fziIe& zUXCwR8{%Upt53n;$uuY$tkFjz@8<6q`5UgN^H}ry;sOnGFp|CMH`Zg-(ydfak0 z=b7NC@A~Nf4zMM#yg@A13$_@+G~Nw?Er7jUbY?tj!NuJX#u5{xclMQHTm`k6%x_G3 z3t0}4-gIT1y_4GE7v2%^3j}6H?^nrlgggcJyg9jEmc4&UpYVX}Sy>eQ0;A|N8Kd>V z59&6+U)MRTe_ca-@0NG+yxFbnJ@@&0&w5H;CoqS>t_0I}=aPFn6VUG;&km10yCFu zZ(_dvqPns>PBgakk+z?-OOy4q<3TcZZg+|vKH_x{UWcw@j^*Z+nE&X__O21!+Uaq4 zO%B$1UvbAk#0D`t%^Y;`l9!-fvilC4O#M)u_vAFYkMqmAFMYQRWlvLbS~u3&^IZIv zFE|J`2d22Iw6>aD6Up8}L~P;_e{sglJle^!PX7Eb^EY>!W8-6+<9>3@0h=FzKe@Ti zdr1{PZbM76r&THFR{wO8HuTCm?|n7=D36Ph{x&=Aye!)KjwyI8jn#!`cH3cj5Nr|b zd&&McI^SIibF!aK#DzxbyPM##0gu5q)R{4=6j#^<#cP7)Ea)WfhDXvKXg|q!(MHw_ z-WH5o(M1ki@UsG3u|Y5SH^_e< z4mcf(z1&1Tpz~4m_utfc2i!iOEN**)+ozbZTW#GBzpi)SS0xvhJ;k0)N!@-ja$AE} z@tw?tR5zY;3g-twTpoKSC;QHnrVclfy@iF4BY*3!3CHasd;zS+`d;X^pnDPDReuI@ z7Ag7iEW4gGLVDM`>g+pJE>pUFPoeRDqz#jHmh$oub`WeY*aHk=ZFCN79P9>RDeFX; zOXA_t`F2^z%;mPoKTH0sWSo+JxO|=IpW__G5N!_PF<42jdmn@Ucz2zN3q0nrCI1nM z$-IAL2ef0*9)|W#zN>#qw7eFo^jbzUz1Mo2GD_#>$d{Y0^KMo??iWk+Yhrvw{*EEh zUz#%f@-56q;I~8a;C;vmeu?>8w%(~HK120cAN-pBuFiY7>c>ZN83yYB>l0w!p`$em z`Ic(}YY*iz4ebcDKM*atX6qAQ2h4mu-Ww`+nS3qpsq>1;$47d*4%Phxs%bLp1*G2cHJN+s8v)l&OVl8kv8Hgga)SZ-HLAwL<>p_t)9y zpv(I)A!p}P7tpXH=CB!!cdd_SeG>kIs-M+OvqoXo-tNqB)lU&KHVI~pVi5X8=r3^h zd*b|s-e>73SY`2P=Wka0K2TSFRs#9>>ty~M;N$V|-AJk3*y0vET0dCleOyefO~}R- z6L6KT5gHxUZN`u$oWdfsOr>0Qk&KyB-sv@8As?^@UaS9D=UwfWOW(=|n2mVe6yQtE z?jOuR+xYQ1@98DE89AG^Al{|(*or{VGz@;ywPo_O9P#~WdEX~wow?N|YWa-qyl8X; zKI48p>Chl%dQ~7F*+mC*tI(-@ea!d=b_~qyK~aZ&dK{hqwKA^s5z;qEf21-5>2{IN z_^bV-Z;^g$n9ht-40fBfK$(g0+4Io#{8OFxib~5Tw3A>xax{L2)#IIKPgyj;sAbRf zPsAQSSy%SHR%8F99V9KV|4!)J!480(o)-7SC^M%dhdci~NJ1 zuCvdZS)ULq-`|$~T*PNFn)523Oxaep>5FOjjeMrgdo#SPj%41bejniHENL60Un-?DR=zQ8U;cMQ65=w4Bxlb?}) z3pc8z^Oa1fR-t=>=*&H>*PHScn-xi`T(0vblos}BA_mzTk3m#+FZue&cd|OFeWTDF zfG(I1%BH5k4udtg=O)QG%>DijY)Wlgh1b}(>x|D)+q$Jdd{oXBY2&1&tXCz*NZyv2 zG9*b(olha&SgAA5kotWR$oh()Pna+74!)CU_B=+(H$}ctcqH;&8_>G)&64lfpP5hc z-Xve+cUYrUd3=ObK9%tT%u2@USOZuy*e($TW24cr@TwN0ukFzFKsV~s*|AJrWQVht z2E!AUuCj)qKM*NP*cjMM1e5;k2b%_aqR+Q9CwOrn7E||m=#D@a%!`_!Uj~~8`-Spi zvq4_A1Yct^8>d$^F@V>Ge%!-eX<0dXtFAG4BNp{>GqkhNzQ?Dvz93->cf@T$?HeFp z@jpuP6*dC4J%LStH6*YZux$zK2v|K>UiIK3ehXmv1a=H8m%ui`Dic`c(-<%kSOeG= zZH<=E40a-cwSyf8t2Q;Ub?E`y1S|TO`g73d_d{V;p91^1Cy=w+F$vvK>SBBmzcmIP z5I-<|SAPcY0Gk6p0nSxe>AvX$@%|t@yg82G|!evJ^l2xYrpZSlJ$i*U|6Qg?Dtf!v84P zJlJx5}BSQl795@&@5@diIivctDP0pqO_4Cg3st18n}@cw~NE#zJwr`e+Fr zV?XrwP}2HnBi=_{2g*a@(xFJA(y{Anq^P~J5#4=k`{>EsEY-|zS?eUJHV z9Oe0F|L4DYf&BOzGIwM%Zx4DL&AI!lpGVv_K{D^y$#@O_&xu#q*1#|N+IJ)(b9iVD zu$O$DKa0*0>^Zy(&lflYx0=gtCr9ef(x z#2K`gX@r?8>4BI7;1ePY>yGW%eoDpw&bgB6(g~jp_$W-&r-i>huyruWNW4qq(AB{( z#L#ZHfn|{5GfAG~Vy3ecqJl3;*!yNI{c)cu*S3mqF;5Gi+I`7jNew4Q}QLl{iGK5`RP0^SV(5vm6 zl(BXKf9EbE8C(9Fv%YA*{BBzZ^TFTOdEelBtiJIzn&^Bd^t&VE?fOH>Ce`;7V4VqU z2CM^2TTc3j?g&^rnEa+b!WO{Vz=Akhws6enca4aUr_4vTavXdHS`){xZ(%l}nQ*90 z_2&~GZq?cQC{p}q_EnjPFkNRmp*fiK#X>$Nh07T9&WdE4b=dzzQcnwz+ymmJ)j;hD!ia$x|bX`!ccJ5#i ztG}{f&vb@*n(%iVH=^+-M8NQKih+j6H%mUV2FqDWbDoWmROy5o#eMLXJf@&)Ijs<` zGsqVn1mnsTyAD8^`?Q_FdWqIkO#hSK7Re(S9s_Fyo0Ou2^$dMmaz8%1$N3DaJ)_)o zA^Q(?1-tha@`|@PTU8NnGx;cO5WipN3d zy3QzAUvK89toAZTR{tI)t(&wR>fiGHorK@W);qVw{B?Wv)3#3R>%Il=9KOfv6u#QZ z$h-}@PUy7dtB?Ar8>|EDYyqaNyvmdRFZ9QoVbXg@UsHO@Gp(FkkE)KIXq87fje)rG zPTHvco`ugAd=y^jBfVS%I{|jRfM_3SK{U9{vNz7W1=7mh=-ZhEd*00U58FO`;Yrr= ze{K1#K6pm;t*emLU zMe8%!-`ZC2SYnCDI<&0>zw853TuOTf*~j43f4_pa$@fyfrSZz##(Fi78>;>Bk_6#wjuY!KR zgDVI8X*D_?zP?0MCT5!S`A61`1dGb78>}ON z4S=W_63pQH3hHX?FH}uq_s1? zratAgE$XEDuEJ~iL4|Oift5|;r%!-yfSb968Bbnq#uKubzHN9m>oX6I_iZy+Ljr3D z+XfcI{nCpbu=)huAXq+u?FGvvut~7W1a<(-1B;e13${i51OMMdxr<;Yz|5XWsMEee z4+R03-G@E_Z5KRy)nNAiOZJ%w&+**NK6?+zjnBcpp`9i^armdi*)txeALNwXZk}>Z z+wJJLG2UMIE))yiKb~4Y|7}`7cTuecc(pyW;CD3hp@iAg$1>pQz(?@%)Oq$%|IcgxlXNSh&z?Z&{?jPDE1b6*+p zHL?MfwVynP&MB0wTdQtINIOhg)bA|#^ik{>*ue;0BY8K$4uDPZJ?@t?6M<8e|7^Gz z{ckGRGt9QF@6u2$|EaO2mGncT8(D;7G5*8E8ve7+m&F}OVBdSlTYqlBTa`Y=^Agnu z=X(E`%*+9AZlmCcvOVo>$BTJ*9e8BH!<+-%G_vLCQye)Pq@1cOqTCci&FMqPj+1A; zx#W9;wU5B}_Xas|dK#Y_p9}Lxp$nxl?An%HBS`B1?_Iu4{Wb)j75GH^XcTNYg2|Uo zfh~c3jqfq}m?+Sf?Vh-J*hNbmgtmTu6<$4$F4%YV(T_G}3jDmkHp3}`(9t8Meu{0l zg#88brM$a>u8d8;-sH4R?l;f&I#Y~~-AftckB!S?5^OAi9RM2zi|)J5g6#!kIv@0V zv`>=tOFd5@c~|zp|8WKHH>bwy`|cK5pVkep9Xkr%hv8f5yRsPdCGi-Q-s9fEXw=$H z_Gx(Shu5p*(?UD3yqLU2-?egW;@)C2DVMIV!ejYK#745UX9w$ic1+N_Lj52)e1^IH zd8{u#x#0Z^K@TN?HX@s=;|Sy? zPM8zFrxv_|+vg|hnmv)SL|}O3E@gavy6>YyJ4uVdv-ff8042)D_Q1<~M!|c!WM~`@ z5wD41!$)mRnR}sYfKJ2vy~{e=>MWD2igOm=wY|M$OF*9KfADSKW=?2z$oR*=*Igd* zb?T$~%kUS_s|k)eCD+HEmR2W~uX^>vZ(wJ^o;gPUuJ+@_5%9g>PjUBM!lz~*;vBBw zuR0%v*Kh~+i+^|4c_zMA^hxJB2W$7VS$=w3Z-rO9s3c2aO<>z2nEXZ?SOeHYPpu8r zX>HILGY+q<=M=oJ@ZHgdgf3_PInC~t;4{`8ulpLf`zCnx!fX3;3-*0*q2Bp^ry}$_X5C^8TIQ?ay|wW%${+6zM#d<-TN`D}k#C%Q z?@Gp{F@KVMN~YX>82j5I|N8R^-XGlUO~^d^;^2_ZYr=efC`ns$)O+ z5%6~l59LtWAHO1Ee=I9s7x`)SCuYdMt=EqQ?$s~xK6=NzO8T{~`oZTNs>i+a8Flg5 zLDrTl*q?xpIoBNXZQOh2PwZLH;nne`5Lu*IyBQ>3^YaV#{vj&|oVBDcGFTc5y=2xP;aT%Q^Tr zy`bQIAWdd*f9;OZ;nT!l?ggy>{Xf#)2fVgx&i~&%CvAiD-gA?axXi^V7eQu(2@@t} za@*WCZPPX-2tv~~Z9`L{ZZ$Nfp;1AqK@cVgt~LmQASDQm3ZjD0FhP*v8bOR8MvU+4 zz1G_MtbKA$a_9H!^W3L9`~6yd!9?>n7WMl8XQ~6CsAjU z`On@FRAXWrwmM&sttZ?v=|9H(cJ7-s($29c_uZrXzZdRo&0=c~TNL}rr1!i+^-lG= zFU}Syg`MsGtaqm zjh?)pA|U4Q{G`+aPSqb^Gi&C(?0q z;^n4)QynY0g83iXYh*X7?+!^ z>$7F5w!F!`Ztiue&P4gtv3T2*`CV3KCfPP6v+_?>2m5I+-4{GXH==Mh5I^c={ez@- z)CxNT%eLf6ly{+5Z0n6*k7H~0hJB_@Va<$F)7)F&p6a7LuhwDquT>69Xsc*ukDk9x z`{&*^_x@QtDb3DBUJ?%VW-gw(lKEy2d+(03dt)|_mxOs_Lc&SxD8sVfNVq}5?Pgzf zw;S#_9NUndUvl=Ne(p^J*#XdcUtuQ*JN+{E+}--$?)kWJ!9D-G!5bE$eUKA`EqVFA zfbJrU*R>h;2orWaVxr1ee;vGv{_@6s_B=1`B=i?YqwKpOz?u`(!ySj~<~my^vd@t& z^Qw~SMK}B!{8>f(v3EaEmG@W}LF@T9gRK)c?F$~At;dl+RGXuDv0ewS#>dgNigAk_ zORlDW>)U6)AGT+D5_jbrAL+bI`)I<}^ef$S{+#x~FRw@KqlvWlz^=fW_3qx!V<+;( z>pzd3$6nj3T;Jp8BQ|H~@qAz_*7@-}=6Oh(j-eY{U(VJQ>(_7&5u1x9{Tox<*KT%m^&Q^`wL4&)@#?SV|E3?9AZ&5}zUZv8>cA}b(%ic{H?8Db zBU1FLSn|m^b-?7mU2V7M`OKGJ%^o_}u5Sq6^D)hzO=Gj?Uj;W0_YrZCkIfpcIXYkP z=6K?DF0&Q9ldyHSut%e?oH?><{MZ`KZU23puKRBDX){)Kwg&sR8MT~gglzku?8&A#9U*=zLDn*U5--p}ra_SEJ(us4Ri zn+oj{#pmhypL6j@O>?SAY%RUc?K5zGMBgb>9P`{?=l+r0dXP8G$;T9$2bug|!+84o zSYH{h|M59=VmA9Ts8sBi*S^H{lJ6+#f zNpA<3`y`7JXPnNZv^liyH?h~OgE-Rm z-#5}$(T=%8Va(d|h z!TviQd{XwSFu92R!@p*3{c!$J@|AiyT7H(BA?gz1NB z2s3tMKfl?dJDmUJUnBRb&fRanH^e^gEs3+wIPD0IqlhVBiubnDlSQYLoL);|=XH^_ zJ%pXZjr)UMl?ngJ_HphFowq-Dn8r-b&E>WIm*k$d*ReBj;eI>!#gyuRHZ`Vl?xnf6 z%02a4`cGUX_o^<6->c(Z5BFYVD9bf-Zz<C z2=kvm6yJR|twMV0MeKK7zCXB3dh+lo7N|9V`k!j_{%iKz{l5mzlwM}rXCwDlxIe5i z;(qcr`x|gdTL)U^#ruQ*^3vPGz3uDv2M5)j`A^&+_lmFIA3W2$H^#k|8}{4pkT`CN zdqL0s;OJ=zX~WKQuj$|R2k-XcSmECCP5YyDu;SR@-WvDb=EBx-uc({;++^gc=quf2k)5X0; z?mb4GLBkor5jsM;L9d0JbH-`OzufnXpuz6|O@F2E6AJ&1{lN#7&b;AibIDf}=L@gA zuM>X$z59dDdHxMvO#k@){lNv^y)^e`@7N#I6Gs23kFDh1I`DdsuPuC;Ll^ioL%5jMEjQpYYY6*&p2K(ooI45$=u7 z&{pNtv#Et~UnL*3FFQiWK?<`#nDMVsf6mAsruK}TVS?*uulMc`eymL9iD&j;JdFCI z8p8B#><_-K16_#=cjT9@u7fNun=IEHP?mR;r}Ev4o!Ueyc#6hF{;TKT5cfJxO$9SH z-+Agt*7S?^?KG|QEn#D|EEW9eBy8Lv8|Uswo=MB0m#{zj&{Xh99jtpvzHGjPY>u3w zlKuBQ*;Ibou`yhe3SKH-oxQt_`^!d7TI8qW*jPN8vU@!It$WklJ9KU;c$KR&y0@V8 zo|g*V;`ITm+&g?hD&TRK`A^&?_qv->_M2V&t$W4Ccpk>R&l$?zJH)-p3sccLT3j{v z8o0ORaShz7z9D_DPUK95o=iTe#UJv)eGy1aE$G!fXd&Art;@-=>u;bj@=H8dw zJ@v&i+?&2Q8;2y#1(&$L%Kf*k$4RFb5`53!QC zHl8GgZ8Q^ATRw)|JmzcKEmuT9x+gOgvr2$(Zw zBt8}T?CLy*Wp@o5%`Z&Zaf82gZ;N}|FHPA!GybmUU&#&3k8ViW-we#}+c)l&hh}UX z?nwn-@$%5Yy^Whv_MAh0yWa@&a7lqYjANtZm8qaj^Ai439%i`L`nptbtGQ$EEpl&( zdl`4{5dU9O{M@@q^{(NJ`zBv*$1Wl2_KSM(&#fstew*>1ag_U&{L7#nL#yUm?-rQ3 z=Y=d5?rtbKjlY_7iKKX%U{ApQz1YxBCjfuSRu_8Xa4LEa)Y!TxT%spdAdg_wJZl<( zU3gn67*oF$+PW}%<|pNFq|dn(xP)|ke&w@ypmn~3-fCb!_b-j}j_u%Z34 zwa=HhLMc{$4!w-$gC9x-PvbgDL*gRIMz2G!oyhUqQ6n3@4ZY{Xsc5g+r0E8$%OAby zBj_b6moN?I*`0*sSL68`hpqcqDtLpR7SA7v7h~6W&-!{9eiZ&b1^k!zlTC;AgNt6y zc>eKJ@H*M%h@(lT^+i1t??IkTvDo(=Z`6%@?lya>b%a|cT$i7wbEEQXR}6>II^Z&& zNZIeGg!w$j<}>jMn+|b3cxZ;Ke; z`tkoYq-ksLL*nmD*>8Gf<5#`BT5-$f6wKu3Q_;J+J8X``ZLYyr&!&PQ!bbJXrnO%- zm7ii3oTD&3K9hKnGjz5v6L&S-Cfv0J{F!`4w%%s2)ee97o>Xwmw`=1zJ%h@#AEpoH zYkpnz+wLc2)7I-r*;`Bn37_@-xnWR~))m;|Z>56XLTRnd_6hQ9$t&njze8I6KE$(~ zOt8jwl||{UgWvj5%ACQ9{A$|G%ixaEX3jB*QD4#t+q;^I-UBjacGk_wZV1^LKp#cF ztw6q#udqJIz)rz7|5wVMwGQ_hu%)JS7oD-na~Wn3#+yc|q$KX`um9F65SP%ay zW%pD=uEiwV*vX*Rp#M~CsAv1^Z;F(iM!0P_W0UjWCVy%Pq$h*k>GTV@j_lYz##An) zc@U;@J*QoV?O*K_#?*hfMYvOZU!9*F8xmK+dVS#<{N%55+H~0eoR?)~J9QK5V_5TE zc$iE$;$ zlWludu=Br51sd<8d|VLq_p)oeo>7#rUH_d5p6#>vCGj+y5Ba(mW*nxxK-`JnhZb$Q zPr#4-K4rhD7}hb9CpRi-N@9m8Q|DITm*M;UG*}<>C>3gV!7J%+H&gZ;Kl}2=mtma~ zWu87*Usb_Q!&DAn+!?q<*@G)oH^gkh48eSt>!=*9U%smN=vJdz~=bFvDEu#5o|ww11eMKeNvDnXvx5J}HAX1vd$2 z$|0-=)GbpB!u}6t1?C;Tt!$fngW^;j3~pwB?SE3iPjt;YgC^}>{ZFXhaSt=pw^hTZ z|B^GOBkt?Ll!s>Y8uUD4t)|MReaOE(aHDWHbM5)VJ+8VbL`_*7hYhybL*RcA>!p#8 z)56>OvZU@`Y>kt2jw@@Pyg`0DSHMXte@n!7bt^X zkDmUUTZ4zX>DQkhrKtm^8fF$gN`KfEK5j5u{&4ef9X=P9|FbNYL7Re0@iw8^TPP6c zGE5ar`2M3Q*U;7lSzE!Y*>8d?)Lv9phhh3)?pwhBi7jhSY_sg0g1rJPUv@OG>HlDR z5(f&FYhn=8jbqC91pIvRK=3}UBR|@9`!*R>xh}%A6ded|5fiT0ETghF<(fg-f}4Re z@5+VTQTpfSiMrdIg*bEz=lxDSVB2-r&cbrjsI9)y^tsWi*@0}g5N?QYvA*Aq^=AGo zrUzyL<`Y~;d9log!n};abe@(|hS|D&zBt*MgByc0=RafhA)%G3@yiLA6`1e)@n!on z)9=ZDsn@Vyclv?g)#7+QZR$;q|I{vO;kM!Siwonl(>>E>ThZ6i-{b549OX?)nO#Tr z!*&-Ru;&RwTXxEA=2OSf+jr6D(3{cC`@dm$&1+kYTf_ig&+_5_G5vpJ_x7Cx6^m`dZ=I;BNKH)AMKY zMmr8#xDx3Cmm3DCxaE(_Vi0|1&T;e&3ROwrStAFQ#==YXQ zAD-oIhBKq8Y^s1d-gO}Q?X1{5LAzfd;ws^0;9j9HVLrk-be-koyJoobyNTQ9T%VTV zUN?Ht`wj$G`nvq#>b>F`hG~ZRq3;hfHu7zLmw4Hlfh&Ih0sH(tOp~oQS13jD#VSk- z%vZUN(w+6iN1Qp6$C5Wt|6yJpnrOjgotp=|B_5=1C?qR%|JDAbk)qj}Lj~oc< z{XF>f{~weSY+>4_>_X3wP^`j~+?Iq~{`kOGy+YI6633q;>I83d#<#z&h z;*$rWZ@ijvHa^uhl$jQpelx`e%pBZ@3fN4jMVi`U*QE9E4WB*`eY4Bh_41h*%koNd zH~i9__}I4}`uIqe&A^TV)qeIs^bK@l+m`RAAx)Xh!pzMa2>t>em9J&~E3_tCC*Wp2 zcOYo?IXmA{%MZkq4AI}t9tf`8$y^!6R}HfXQ|>dW-|~sEWc!d-xOKQk`<$_2`-L9# zZFF;fIxKUwgJ&uxYhx6q_KU8c3Yn*8^%vMtmk4 z-#{4Op*OJ~zkDFR9=GwCT^#wP9;W~M2ZA0sGfcZb7FGoOK&%Q&X4U z2GLv5Px0G^HwQ{A0=l-R`N53rtsOAFiT1d-pW)v!S{<5M*M;jF;!^d}zMRs&t@vQ> z?~j?$`Xc%Ju&-6xD&Nd}>gPH0Gq3y;+u5{#ev}YeqLPNOFlBR49I`-%>aDw zi37n=-3a}dumh0vaoPLz0W&X(bnz@E(y!=q~zuAOK#P1)IiYx%5m73UvV9!%hVC=5ZJ;J*9kZJC;CaB zbN*;|r2IAn*Z=1O!PosV@#|BNjbHhhRs4TFV1MhV-Sq)Y7<6U4ioS{dGe2H0KZ$R_ zqA86fZ()D$e-8u;J{$HIU$k5Xtp=|8l+x%NaCR(7+%8JCT482j?)Lqdty`Z_E;RP_ z!F41{?RTET@^~(y3hjvde>eu}Z^Fp_G~v2RO5=OQ2~E=E^P>ioKUd*4%SwZP;5sTF z%{7E+y{iAaF;)Idz18wMLKN{{zg~^LhCLmviFCKtRJxkcm(b7j_12y7^uVpa#nxmt z*`_^=pf8}u)?8-AZ`;c>`V9Ib{dg`n**4*qUHAw4y4ypld)=^=u%vC^XVMLKJ8X>7&}Aw+PAU4bg(pds$ageH-3}YBtpJygXw%gsr_CXKP6%Z zC}qN~k9yG?ADG_<)r22Kul&2x;Bu}bU;F)`>cd$i&h_mXutmZge^5?+GGm!t#3)^x zFqsGEk5@L*Bdn*<<)Z~b2jQ}vKi`+Le^y?wTk1KDVGx_MV9)J;0HQ)+GW z!ZczdUmZ|g8bz-~k3ExYa_j%AZCv8!;D#Pr8oZF}D81S7%*?En?{&C?4=W8G>T_yq z{4F~rZ^z#p_KNAslYH#jUL{-&Ts558I}4u~_~qi}@)_86*nZg9KBOH(O>Gv_4>JoB zTO(P<>?kSi<1pJWv2}%8LrI@UZ+dKL-aR1Y?S#`G#dYMPHu9!^#pcZc8pGxCv1>XmK)~^}Z4%q4^JHLkeh;HmU%3!SY55TO~x%M2c^)<_I zYtnJ_?E<>eJ&#`Ul+xfnetWcYIGqMC1Ch85xJ|epa~=7?_3?UYD^UIB!GEWJJyII| zUeAtsy;hsXs;$e7@PlWS#`l1{y{u03Ui3%!@v825{jbtD1lJFj+?kJehcU`u(@Njj z`QwwmjNXQx_T$ssn7^fOIlaW!z4RU&r9Khf{H{P)4=y5nI4(Im^>A|y`P;DKX-A(z ze~jV@=V6+|Q?40q^||opNe|<(C)S9?yWJu4mB z^6TUWz5K&2z!vh)!FO6cwx{eS(aKjXddaz^_FPmLm)Whc{%u7+gdQ6wz45Kbg)gL! zpl_2t&2uBam|3^AKkf8FA!{F^@N-(aLyq7R~LT#m}a^^4LQ(MQqi za&(P$8SZtWcRjN-zPG476IW-%48qLAypiiD4m%FK8Z)NdPQo;_7M}MkqPL*e`Zh?X zj)y6o8|X`ymD+U?-)S-Zn&w5cN0mcrjQ$b*h{A_`HR)7Wb=TeI92j4f(?-u-cWeGy z51+ogG&m$5hht&5pP}8QJkN+!FM0^q*6I3%u>ELprUFqv1Echg!5w>H{(3Asv*;b@ zN=xK3@~f$!x+;xV;!eQz!adgKI$V6NzMA~Mhy1)KXI|&`A$p4D>Y?gbJ$yrVY5e)U z?Z4Js63ou2^3nx+@WnZOf}2~*)*yN@dXv%^K8wB*D|eqyPHsskFBFsU%QS2iY^;5I z^W$aoLj~fJKeo`<(VwrlLjOl?BVlGmN^|DDJkP!^C(T|zR*&9-Ug6s@Pu=XCs@>_o z@%5+5so&01WmtS`;ltcGiWYxUQsQ96_VqK6v_qWahdJ8(lzTT~w|Kx3f( zFJJ2aZVskA4ij#Oa07n26RHRT!$xA;>n!Xh>`}ju^VYY?$A-O}^~nZ&`en?23i00% zPq`EKq2u&NFE6$41cY^jww3slK@3w5({W>AMs=tICg^p2if8BLm{C0a=$TiP#`h!? zkE_pO#$noEp2c-kU&Xk-Ld*ip2#kCfF{UkQhrza+4VdFFv3>wMoe)ZE>ix`D(9iU3 zplj$;J*k%7=jQ%lUcx;B*O!ZHg)4bwY5bW^$f*y3QG9)}cXO%Tmk#X_-wQ!9=ws+h z==EI3^JE`@%Elbb22A*kanq+`L(xcILr?V=&U4Z2`2UvtX;ApX==JF5aUG=r`{CHw zfZkmoe1;$$=tJoLqVVCELU{A6kPc0848Tmln0_Q2N7Oc)KJIig9|?7}Pp8j2-Mm{8 z`q3LlPB=Z^e9N@|I~c!-Kek_>UPn#Ntio(MtKo*>@~v5wk7o3S*OUhA6lZxMHmU&WU z^An77zUK`&b>}+r4PME=40`&FrSWqUUjGvIp&8gF*m>C4+R>$3by4=ZVb);&#&wh) z-`=ln-15UHY~#C2qwnOHdL7O!-kwe49Nf@{N`qVIW+Iz*-t=84O#{qh7>(~6upQqh z4SwOXUi`@q#rw<52k2kFSsHymcE>u5AvIAOlSbyO~Xm@j72JpkMG{nF@LVJ0p9SpADEI|W<)gVNyk zLUxBOt2(p_I|UnSZ(&<%vYhHgF%SIK;pk5Cr}d+->I;y?*TT>Iu(a^LvbSDQJM4t- z{ZXlX<{tJ>nggJj{!e;QnR(wkxXjJVwLe3Gl#g-rh11KT-&2pZ1+BZBokh6*`<2C? z-FyAd271xHviNvo`k!l!5tUndg7E<64z8ne3w?GKnCFLj*yFIzIMrjla!cMP+nzEY z-SA6gW$|bD>a#Q#M_2sAia%WzKRc0~V?80XD0UXMzq~AXqJI{_t7FN-+Q+qJwhlXT zuq-~Garx4go#`lUv*}QsKlEYt10PTpe8z7}e%|`SlmPQznt#oNnR;MZ^j@a!Yd+t} z{i+9*1uxNtHsv3E|ATj{kL;`6@eM(K>m|>ZERXOFLHkX}Y3#LCmD%5azB;rQ|Bg_y z=al%zNZeUwtqr#bzwq~E!GCZaTw}r?3BQ?@7%|__Iw$;_FDKe>*AQNLsrd-w{Xdii zSD(orJM(fbKlYm4NaywXA7%3AWtP0CE%jq>=;E?qj_d3s%WZ|wUwiJ!$kcY{b+?XeVp6n{RwEVz#A;0E_y zu)ApI{COB{7R~fySLXM1;ypWEt@_YT*p6qE1s~RW!TqN^^l*Q>wah*r=kEso4RY_` zv&w=;sx6sJll4sajTk-?n*E^BT2cIiFnpor2%iqI{#n9K@Vv6%TbR**Y9}YSx4^yo zJO7yeBfAd!2({j{>I`g}N;Z2bzT`S;|Flte1l#t1Ff%Y|-=5bt5`VMpNG8;Ob;3`y zmj%Dqjj;cV+H}J7?ir*ZxcnX^Y}oLSIDh^!2d+ za`Pu~+i(XjFN?o#7IK=L!YIDOAEUm*<%>^x1Nsp96S$7@MtU@dm)?Osxr^S9zF5G1 zhVaMHH_*Gej_hmiNPRK4GW?r|sk@@g&at!pr48B1oS1c(R+!j4-sM+oG5I9*ar_U{ z!gUl^=o8Jyxvf0a!p*?xI^wi6b$YAQW9LNNc&m7NoPL=fK8)uXSvzBJMIB`Y_ZMcJ zuC^AX;{w8KtLjMB&I!0}(i>YJxb>ydQ~U|55BPS%xu%@M{S5!A;W|i9>{*S*FU9GY z7ML-ZB7cv-)Zyf|MvO|h9+<(asONtB@%Ay2|0>eW|6nJtE(>lVT$D#+PXoIdwO$}N zgS-e^)L9mPW@hKYnu441+JtF`$z20$2$qdBo2uRDw{RWBr#$Ml1a2w)wJh*Z*aOfPa5_;TAO2Ee(!Ml@BH}vv0^2gmLb@s0%?_xCY@eEk|Te+XTto* zy)h(i8E)alWx;8AxWpf_@dck|zII)i{Z37ob~hK5?=t9f==tiL;;DDx@Aczx{f2#q z+m=BmT-UMub`;M5dfP7gIC>L$%*WpPVczKv#a84O+N_rPvVX$aSDJlY!=d!zX`8-$ zW0=BJq7M>(Y+T5;2eZP+z%|3o!9AJlC>~cgHKf*X`xwkBjCm#=?g!a1UI(6H@0)Au zB|J|)LAc`Ub9`ua*KI$ufWC#@rzvi}vu5Tv#;!JS?HNzybrY@{J76k1xZm z^quT?p~uEso4!tvKuj&n;4X~fX@gmYG5cO&JdE4NFrs$Ri@t?!o}Glc*B{xlR(9MO zhh2YZS^V87n@4@4gGSi zBOlrL)b~Zk#5TZ=okYAD*lyURylldpA`&wUljo}FAJ&)u@AJY)*9Wg=^M*}MxTxP zcy&CQxFmkfMKm8jPMGT6vV3QEP3_NMcOIq(`e!j~RRN z*TEU~dtOnN@41$i0cO&1i%X>P)d;^1f5gvMSRQIvCd5}=2)pjI>ViOOJie&u)~c|LlZae|1^#ct7nnuU`yPAU_Vl6}{%<{it-z5hgQGW`9#P zOoyN5?-B!?`lJomHP}+Fqk7`b?@3R6-s<_D=Si=2y0$T*@am-bQ+hM{687`Wv!!=C zy-@r^PR|#={5a|KSl^r-htz<~dUF}>&}(!0@ElIQ3%nL8^_D2<~m=iE< zgJt%cj$ztt{WCkZVoGMI&oHqwFP4e==4zNFnAmeT%a|FT?6kn7ZY_(yAL7NOde8&Y z1oL99qcj`F?#GOvPoSUX>s%}B6xtZtqkWC>`wB8EeF=RMJvL`EJzHRWvFXCc&RV;6 ztEHam#lbH!f5gU{{W$!3(QnIBYy)il8_I$&71#sS5=1>g2DTe^?aeuBa5sO|6Ft?B zVVKl#S^W90*8A#5ZI@#5F$32Fx6iM;jhsO}#f~@f#VSn4Tk_XgQ~$rj^KA5Y!A9i} z*4Z%ONJ>`~>^$sweth9v_n&Q?8arCxHr`qmobRvq{IT-~Vr@p0hJN_e+u4W7XSXrS z%Jw8|$2(}Rsu*EC_SO=~yR*D(ufjKs6=*}fQ8LV&qU0{}2fISJ$hMbmbGqC4Uww5Q ze9wDw_LH-H%jxKf}LixQW}#f_AQbUnJbRKf~=6m=iF0>d2k4r1ojzyl`-f#s%mU28iNcKH+klyZ*)2Zh;ow);--3&+cTHJo^`?~B zwUpQf*wlyfjjig@vup;o8@2)VRa{5;wfT6d@*#V}Fq0=~Zx(iK7kkR{8cg#?%65Fi zLv1VcvAB|X`ZKuu_+@O*^kWjd)ft-S#w%dd@_*n*;Hy4;pnys$Qrzx%!bI%oKb({5$=6Nim+%@uIKu{N__9 zzvfbyTEa|xnl|O9!SCau2g>)Dj4DhQVdkgvuNTeSPWiMSdWhQE7-7<%Ir(+?BK#Ws z5kFm_FY~O!P5u{vXZ~+tY6)}bb2v?j|fMlR?;V*x0+IJMy9Ft?f5v;5+AeF6;Z(j#t_f zHP)|kxt5>S;d{PX7JM+yhwqW>2&28~%r}{jeXT4w;fL|pfl)ip)<=bFCEUb9S@4Mj ze}sKnzW#w9@^DEs=MaVnSM$xXpq^ks_+BEHO8*2}E80K$Y1!eQ&xYpAnr4+S9g8_W z&1o0mGDvZx78x(Ub@Fj2Oao!6zs>WdUDNfxSh{)$bLczljqe&}i7+gZ>WK$Vb_4j=n~gl)o9ckv%x2 zZB6n0Fz5NJS3Zf?+O%b0Q{UnI1MH<-M{#@WWid4{voO!jVZt6jX={bqhKYSICYy)o zd3_&T%a7c%u+SI8*GZDX`gI&;2<8;O9J985=}=Q|7GaP5nDa({+U&O&-=$n;xW5U* z4BX4$KPY5hgc{3V>v-Wpo7?YtFs9rja%i|kpS+!B(q z*$3BuV(&DHoq%opWm)h8-)0#9cxcs*jmxmxu$LBj@q2qZY!XHR)Fz9+M|uCIEO?x6 zTNRqWRW_CAP3S-ObyqeC*S5tq!=-=AbEqADOnf4YQ1SJ^b#3I2Px=V@U;$n6OruYr z$Ie}3+r)9DT-+*L!|!(I2Kk9T$C-Z$X>EJ^pEdC9gCYL*JkFE`_ z6E3#5lC}9F+00!?oJ zc&-o2MqGLsC;TzT7hyXz=i}{OS{>ZTpYq42^t7Q5?4tLg_Y}}GgdaukL_f-PlwLRA zQOBZkn}r#MiLEL8`Pn2OoYJ!nTe+2U4o34(G|fLtzHjxLxz3F*@qFhYcVfi^k zm+x7a?6slypkM6UGySagh15|wW9ahxAp8h?r_X2S9-6P1er*bF6|TgutG55v(<<#b zn>|XUaTRv%&peymH(Sl9;91UKJ;O*!h8WHUmaGOGw2=YFW@?A6SmJVZxM-U zfSH78=Q@WmWiDTL!mPuL>||80jkhysLyGTjIeUv{v1kiK%oNNl%n;X6e0FR#Pvzvt zWtb{XY=wKW?EPLZ9^g==B@P_o#Pv_5X)FZ#*R(udg;fJ#sV&Q=Cn3m5Fp- zUrO&nKe&rNh+bSk&k%kBeT#JL+>^E+aMHSS5vB$k$GML3o$W)yq7PTCrkR`b?>}NZ zC0wkZz=V8t7;P49Ex*mr`95fd?N6rT&vG=GC9G_BqYtA$w~*h>Y)gwF8}}IeTv0lB zULpSCY&k8!Zk@V&Imt(xaDAtxgHPtqkG4BirZFF>4p;q{@;QBX`zq%axFNWQ`1aj6 zBYz%qdVQfhJD;b9%n?s7#7hZTNrn z)8oe3&>6|%te%6oQ*ys_{P%He8~r!=Np{wio;{eu+^AbONN-2q+(qw0Pp1lpA49L%MW01)L61FCrEYYS75Q%!{TO;| zT^G$sk`=1eN@wxUcz$vq9Y0fYne~U-Y$f_2`WLy*>t9#z#kRm!mlp6{A2vO<4|eJ# zSfz0Swze!CJk3vod)Zg|0(uYnxiS4LlL_hT=;P>@#B?oO?EJW7js0r$*m+g04B$=w zhhCiCz5f%}0yne=mx1erJ6N6$F8B8sqV-W=+Uyui$Nkg64SwI`tz%_p4rcaXIyk{~ zR5srJj+hfLgAYjC-}wmpkZ4?V`TtMy_rSvAcNO{;HuCjT@^8~Fy3)|)^b5F-(rM@I zX4NPgLokO)L%zOR`lQpJ;@hCUUq>-XUqo*p{3Co_8*BV6eFMD({XxF2Ct^-d{oLyL z;#b*LJ3Tgc&odWlg|V;X$|eXn$^!qxm;et%ZV2fwiTtgd&| zi^K$;G4ngIRj~8ey34PxUOh{GO#5Qi&#kas56+oSX)wi((%*yLi@sO-$KZ+{Qh02i zb^1BjjMASt5~X7my@v4l=J!g69&8*&Z}P)O?ZQkkOgpTEYbszzLFJz&m|B?F+1YRm z`uEV2mhFLEhu!D5>nL9HK43JjJ`TH>$v>x5ot{HqMK82>wT2#?nU1et!*r=X#)f=R z@=Nv`;9~2FkbAY|GH^9;i*T`Zz2+lk)ouH&R+#O4jM>q#@%6$~K6LLoa2#$DE?=88 z`QJrXzSf++TU}H6mHZdw_po&EP`^z4HIX~>E}ONmb%)dOb1b2+bebGSTsz$Hli&v6 zN*=zqy-B!ZC&4Ylt(*iG{EGha5qrm52{*9^Cm%M$r5~A&pHm9=N;LEH=EuFT#6wZUpY0eD*%%;=b7O)iB%ewT~jLetG--*$tW< zsTp2l0x5sh>#WBfT_7!5eS348HrU$7oE$piZOIrmAq?x`bYh{!QNx=Jzg? z7c>@Z;fH>0^~d|V_5t}@b-NCIYma!ub-<1N{od_-5U%nc3itIB zPS4lZE1m`PR>JSr&b8LxgjztpdP(HNkyM|AkeHTVCCF97JvtQYcs zQyvT0+p12--;)j7i5{F1r|R$~T=V17!PmHs(&_bc2|Yqbl20?gW&Hv>;IpAkxA!UE zG{Ut#K5gtrHuc&Wn)FWeF7&f~J7#5S;~797MSqj8hw+#vo|c=0OaJ5UTm~D3^m4AF{J4D(mF2qAWBb@qeY0;j zD?jPq(Z4(~9ds9YcKm*Ee-Sw`(-TwP4e;$xP6xjSkK*;~lXupw8@A@3)4_B6Ii$Cq zNzR3RuC1$M@EuP{$Io;5X))h-V@^WU3$O$Kk`5m0+xF6tOoY#EwJmEq>N>&|{r4$B zUwu00OM2<|<0w~}^jP5rm+$08Sf=uO1L0@SEI#p}A-M9^u=aUdUH{=q&}}&yc(^r{@c=hMEA+ly@JFl1 z`b@heWc-nFdcL-j!G68dr?`&NYxe`pZlcoA0n>d!&fXg1jD|;*Uq5;uI$L#F8-9IX z%+~iw*oF%W*Y`!I=c})ZYs2YJ^y`Wr*I`>%EoJzsin(A5#isGrdLs^^BZ7H{a%!)~3emdf2sRrsLm~p=_1kHnfAS zyZ7fBZ~NiK;2!Je!OO2XUt)(VQzxgyKPzXPcXd|rE;;>Qe0$mQFuy#ddbtfZ{p|eX zi2QKq&#ceTXM8(;zjBB5gKRaz*0trgCA|~9Y8QO~{ZIitL-=v@67&|Xqq<|~VJ7Ed z7GN4-&f3A~fj0AZ?r*>xgL#{uC%cw|b}N>z|eHcJw8}7uqxJ z+eOzJb#`YBepy)PK0uJvjMk8?LdFeX&A*I;5UUW|M(xy4)=LHQThm zYtq50pN_1bmcsP5!L@eLujl8!Cr;_;hs#_GS129ktg1=JMIgDG#~l33bygObo@+b*ng`qU7Rg&V{oze zlP}Ba$IvGW=xU?G=(Fe-`)Ts(eDbhL!z9bjf8bYN!gCv+kIEx?W>|KriyN?;#|l3m zNc}JKpX&?j)#z#TeB-O^H#kVdg6$!(?UOc`?WK0 z<8TAm&C_n8=i_T|sh6gMGks3m3H+@(Q1mzIANrWDd+j;#2Fq%^tA-th<#<9iPA)V2 zYeE}9YvwvikMedjTlU>BQ!tP68E^hMgg%F^bVWA2eS}H$CG-Qn?#H(tvAp%bR(P#dwHotZ$yukwf9WE&FKw(c++2LN640SAIvdqeB5WkvcALm zErT`=SJK0|5ucN9-MI=e3yKe>)n{_X$PJi&n5X-U?6{+N>fh3*B!XF(m-E6sId!F#|B`Fqh;qdOwnTVkTfJUtZV;O8X*A z2h2~nj>;^XCUa6ZgR})#bz?esYl+8sa~su_Ly1H%{+gWqH0w|GcIto{lsb*mjj-FW zrKfoIygti3(NPEuxgfINOPCV_>EK1DdttmZB%gh{fz>CD!&VKk_j8{DY(p`uUH4=_ zmf`E(p3e6^qfovpO2jmY20 z4~IRq%BBmpcr<5!)W&yZn0WbR7_J>|%a1d%nOF;1`DIq=dnbKYp|Nu*9K+rG5B~UA z&R(5YPWD|D>qnD+K4Q4^o?YgDPA@bbwC@sLdF^xhe)%u^d+XslS$`(4cP;QU^QvPL zu+#5N+i%u}{gIdU@O_oUJ8bzV{i}rOcwgc42d7#+)`wkW!>i0PPXAY~qi@%{zTibl z9BIoSHNy20&k=E9+DzHn0~AV27tA=!hOK#jI;im3@cGuD zvz^dBq3z$>;Sb-Q)5b#n_G}sk;AY^C_-kmtFQ`&IwrQAxT^*;yP9^c7ul@ACI-Dii zesc|e^22HSJ#`WUU@#ja23+LTjK7 z^dZ8>%E66W3g7SaM{pg*?VZ^;?(7%Z!<$22+{OOd9(qyn?%@ybqO1NiIQ@Noo$$-! zjkf+|V7p;kCJUc=6EiG(FtIaTrf#dn*?Kh%vkvoIKTfmnlssLrg=>UWxWgaMX(t+c z8;z+z@fF=C5j4YGz;)z*F=lkLb*K`icNa!|aTClq%##cC#TRAkrP^mN{PZW&`M4LZgxZ+Re>}_ubZVT=XKi)9Ep8wY1`aZk2y^{OUU(W2l zU#0q91GflQ=hr=N97;YaTi@GZ*FKkyzfY*T<@PH~`-jPVJ{|w9H*d{!-087-t!$Vl zpSFI^!?a=JI^P#!y!q-n%rwklKi#e`PP*TP$PhkV!u?Iy8a)o<%_$=sk$}**Y>5|?aB9(a2+wpV-wsS5WJf;xq?V}c- zk>LA0wB16i`ORi)w+6QFZu+M}Y^5!KrMDe+_$%okQ;0Rcr|iam*n#=IS@~-kw)d;) z;D5M|+Hg3oy1nEK(kfib*LE+Pkvd2 zKK(0{=1tgBxz@tYd@~(<)Mv9kdx?A|T=93n)_;rVQ(Q;s4DH^XP3Iuo)=6+vaFgHO z+ujOX=XcV<*Zp`y|IB3LElMSV)Dq{0{k(+zg4qwYeyoD4{cbvVW;7KO zJYD_AH*B04($fP|b#FTOjGs0!X60r3v{9IOnEU(j!6eOZir8|Pg_&Ds&g?UOfAFMi zTU>`d@qN~ih1dsY^KkG0>)9XV>?L@8uIfM?OznT9gFpLu@ZwJV+~!woCv3^e$+5$* zt0&3M!cP70pIOlnT@_$~o4C`P<_F&p!miA!!VN$DwzkkS4EfF2OecBprkP@46frpci%gjgPGieIRUf12UC(}{`2#~aj7q>h8c#5 zo$<~3>nowZTH%_0u{YNTS9BsBd@sKrOz&vQA8rQjXFlh*wME5j`-COfzF(#b|E`re zV`KZYpq%yWuhPMLe7j*E`6g>KBfD@jaE0~_HIHk8*@DUUtX(#`oZiKCRM*s|F0=8- zze6w$>*-+0XTq`KOWE{H!)?P|?{n%uz4_h>OzW@r9w&+_Xn()iJx-;q3T_^5uW_se zuJ5<$VBSw#n1@eg^Uw=dxv_g5#$ftky7IT>R<-2}@yx?5{BHOC({-5Q|K6QR-5>wM z#LCF-tF$ZS@G5KP{8vfgF$C$0_d;O}#uD};5+JKx(cdvNQ7iRwk@uODRXO~AEo zri0CV+)pi+L0f{W{zEz#_BqwF*Jf>P!A!v1pW&y) zC#x4=jFN$C8jWt4{om{piF#k9EXRm~Icw%_vZK;J-bkRJZ#IF}~> zXov4t9{+6`w>O%B8FTtSavjBQ`s3_733D*@*jV$KY+t5_jTdU=rua5si%QD#?!~Ij zrygYWLxue9*6XrW2fKx>eEY%~^fsqIiR<7wJGPz8eor4v`i$}&{h`t_iq?wu4s{A) zUCPd5Ul;Bsik*jDcwl+(c7N~D-#_n9;s!fE+JvotaC!V&OwoIniKunRZsx&>U=udx zk1VTIv8f1Rn_y2oq&#?3A>VnwgV6)Ko+%HWSbz;5h$R#QwpG6;2(xu&d2m`0e}w+< z>-VDan5~y9@XHS`5B>o>;^|ASfKvHwE4}Ek@5{J@2zuUh=pl^Xk0=jrDbSwG{;;A; zK1M}h`kiLN9IGr3PA`zJ#FovE?DxX9K8p1D_Org#+W{Kwk|TDQG4*$nFfETMkDo0e zPkNLrn~Ufj=&|Q0S(~p5ZJMqCUSWzd%-8L z?|xd`c#uJEhdumHG_^hDPJWIWqwciFZy-Y%U9B!I~Q9E+x6sfeLg1Z1Akm{zauZU z12$7v9{)W&-|m0g3a+|11Y7hk<-vu8?3!;Ws#(~Fw5l6(vj4B;!B@GC$|IaV>she; z)Ry(rCj2aXzUOVSmwp)g`{)l-UmAXc)6ZL=e#TZd<*z~fS>-{yUyt3~Ao&;N?E(^D z``&KYqNC+Otv*_muMc~~eN94D?xU~=FD{RtZwm8ek93;)GY8iP_d4Ha$yZ19XAOO$ zxjeYi*R$>M=>kppA7(%6spY|^m5*n*HgojmQ{PZ@TQWJUwrGDq)|5Z&LJNHcXp|4n zN8#^+%by*veNR6*f2y7ii*GFt4l2E2I?PAo?>70JlK!m1?Q;pe8@=Bz55K-$XZsc9 zBX~IT(dU%Mzdh~e!#;8}@m9fBwv`8O_5J83U>Qs`p^rZoTYkEauwQwpJbc&PD${P5 zqD#wzHs3~eOm7k?AB@1&wdc>H>`bFqq2G|-&egIbZWXTovhw)vT1RD{_zalITk#{X zcX@g6F5h1A?J{HZO7w{<^7kzn;%RhxUvAznvw2sZx?qa0ES#r7^sSEa_lQZ`S+pGIltMYW{k+g@d z^7wDrnZ8@cpX^vy57PoO4j;9Ha9!|Dg9WnH3AY0Gd!Mu8z^_E9oeaWEUt1o$SosQn zhr_Fj$!BHz9hL12eDRCRgXj2V7L{%CV);vU*Wl`}D-ZsoP0F0xe0h0rX?}k_Elg+nQPiIsX$$%K!5g#vplsH|ZoXpo zG7#4ZS9Mc)@MXV!nDS2^SG@XlLUBWIOMSbiQQS0K$*WwS9@cSduOYOjHn$4ba&x)e zHxIeweTA6*D0npU#s2d6^OJ0ws}m?Ym2iWvE|33ynf;M7lkP_JiCgxz(+#)u8u|d= zx5?j`^kj%<2z~Cg-9D+F`37(-|&W`R9d7+YEZ`n|4pzDog{+oFAW;w&cfcd}^O1Rjh~Jd~#{4g>8FF zdHgq?l1I(JD&M!F55BGNc+unZ*c>d!ucI&{*oZwN^wORf&-!&9wrb?$(!L2h_V)bq zC8a(6_tdX{&!2YrsmAHUg?##|tWVov`$x-zL7(-@`xV*p9)vyd&iwHzT@y|(G=E<} zUncw~VDr|)_gH_a|JZ`EU%8fIcecEzVb@{5TZp|Yo7XkivG?sgk1lyE&=d)mZ}!>z-W_+xmspEkcME*~$# zEqx$=f3LJ{ps#(fJbt#=Z&N?Fev_?3)yzjeR37lUbhbQ_zcv+Cw(8JFK3pDL;it*7 zmAoW7&+dd>`RK{{WEeK}vGU-Be!NlLOg>KuQ2aA+tsgHBeqJbkbN1Qp9i4zZ^vUwz zZG?;JRya@7R-(5?l)n!?j{XZicGe-AhG$Lz93S~UST*i4ZK(@(WIBKQ))~}6 zr{_LDkv5LDK-lxRj?&M*Pli9|(1JV5g9rNOVbPLhr<%f4eonw_e=a9K;hfj3I_$hF z^?06#egTd!Q9Pla-1CSGQY~B;+;e=6IQ?^NZ7}07SNV*4*r_!2qHm#p&M)UMO&_s- z6L%bL=!@mShkQHXI@ryzRbLn24t^8zAycBO;~?su(=64HeViG&2?19%BOk4Y3sqk8u}ZUSY3RXYbW0M z_r&3 zE@JCGKI_i%O5a4EMKAOYRr(25Py69rS`@y<>4n0#I;c7^<@DR6Kh^EiL_SZL#i{nvR^SePy*&O+P;YEbs64fm=DrD2LzvVP8IK6_ z+CufaM)g~t-BBRxcBQkCa4YvPC+9j!vpbBSGd|3rTT`}v*r-VkzH zAJ@PQeP@@shvq4+MrPnU;Om#l^Zj$Xoa9h;a|n3C`1j3eq}+;>)#re2svm=DNKxZjbj$J($l@BU zA1d}7=O66pN#s%9;gG!rm}M9~>y=Hn-v^rCowaMWE!ffJ^5A%(xx<_6+(qSm_(|*+ z{Rhu43)$VLUM|}fTHxzf=o1MW`R@u4{>|YIYU}sP2ibg8J(=-wHUC(Z z!CsToW9On1--+4ihH3dp{(7o34WW0S$IkiLHm%cG>aDH|4Jwbb;(zMuSy(U3ffL(q zR?&~6=PL_^5B{0;IQkX34t<$;9#Pn`%AgnhEN4w+({qO)*=>LsgL$c6KivEzd0Mt^ zi0y{mTw@-Zk2T*{%=&v2w)5xtpHC|7Gw37emvWs=yWN*C<&VCMo^NiUv}`+l)eoQT z8{h2vxw4M_=@hi6=jXr>$FCL}i&{Oa)`eS4;tQ%L^bZC67Lmx-4DDrf_ zzqwaqrK)Ua6lXVKhJRgdzIzbabk7(}{YRfde~|A-Q{VL3s%#~6Hq=y-4AIWQAOB7M z`i*S-um&>;^EBNE^Wk22R-8ru!u}O{%n$y1f{ONt$%6g zan;wHiR5op5;CH4-6Z_#AIk0fUKhLcxbrIVNBUn`fBvyNc)wo;Ub!apeAlH&>1lu; z`crxEE7gOiIeXDKX5+r=Zr);TA^|s_c1vQ=4!PgPjMCFj`1DQ3HsQfe+>aae@aC-n|6dSSMSrOyr z4f6Q}%n6u_xsL3(b}TC>q{!)-zD{=-b118`^HOm@-#ayR~}~+-~Ni=euc`?EDrEX@_ih1<%(xnyg?>U6c zLlxJh^=u{GH^vq3DC~)Y^h1SMcNQ}PI}f|^fC^LhBmbJZ zXFFNtcU|^iV(a^GZ}X$J>}4x`F8+OBVOyHh)WQtHe3a`bKKjTEf3~1y{;nc0`!k8l zcJxCE-=pv_cW~{8mk);({!m5U_kk65%IS4}Sgw`FMYIOO#>RlC?DZW9TTWYWU2w5) z`>0QFb`Cc3d=LFaejK)Mz8uQ*kV@(%aED3&bP64}A?iHa41*1-4Hg zL$7&IMf^7}HP>Ivme(B2#vaTGn285h#P>gBXDMr^n z!MtBgBAh%L$C&=B8NDS_5xml`vwk~%k?l8Rs~2|q%$zxhJBO%oVibM(p%uYt1#B4~ zxUov@WkL2HRuO*>--|o({cK*hV0#Z&#LxP9b7a=PM}K%Ymy=(PNCsBJ95Y*y#g zYwk;1M>~ObKdz(vaGBv>@dflBX#d4^qucF7E%X)pb;%J2FeL_Y2d4X59o#+$j7r;jT_4EPs74$-B97o?Spv#x@ z=!c$I5q!WOKmD@No1Ct#D7{EbE1AWJe-^OnQDaQ zDxL6MPpYu*8Ak6&*t3=DQ1wJu$-DW~TM{~NnIX(5VNMXHk?X)4MzpOP?i0?!q@P?7 z-veSC(pa#9){6EOg%8)(;d8S)l`>cU7vZ#j&Oe_}y+7>qSNQeREC1vRY@a5-G{d&k zRRmWR=m(OAi-_13LhbKQ6ER zhv#EePW`ZBXIBJ&@Y$^0|5OfTa{{iXp&|(U_a?l@yaax&1Tsx zYG!_S&fctiSPi=b8+-2SKEjtlZ$?j_TM^&4HtjrdRH+kl45k^Tk!!yk5=U(M70(Dv zFN}^!M~tyRIdE$ly$k&xeP4L_v-9(8Jv$+LjTOP;eS0QdYOA)Mm0ZGpA57kQW~WXj z{WWmGc@_3qO!(Y_dZryZwM+T56{ZR%>GwxoS=l3RmhFd4T~HC+T_`V~&bF^f*r}$9 z;FzBeFW+XFX|rv{)K&PR3k%oj;Hiw4*!xPMxTkI0%2O5W$VDf|w!+pmR|KCZWY?T} zboqx}yo7m+&xU(8cPf6HA*EpwcKB(mqbReeUif~!qS%zD>d*@8iRV9+Usk*u% z{{FfbSK?bXT^ZP6*bUf1dqHBRVd^?7f~RvG`GGp-i z>oabTTRzO7Poc;5j>Yny^m_D7^m5$@`(|(NvEAwUo|UWb>vMX>4- zJh6A{-5#6l%sXAaj?xjX>(92n6}REyi|wU89bHw-af2-iXQ zevt<9qxQK|D|*TED}oZ~pJg;-xU9}(_`-wyJsZQmz}QbD1N&I zWyaJkr^mjlZPz-J&KstDGtZ#ECm+qSbJSJ)gfe3DS&v@yf}H&vzx#hiQQMozH|m{h7f`-a6q9_2ti->l7rvdWPw$nb4B8~z8g^dda~k)&zF-Na z{*^g>hL~=f9+k}&%qUFEm$v`YsG^e5C}~=x(pUK$+V87aTljS{N?)={HB)t`8Se1S zIpd}G8@=7=9q6$&yqB&a^nUb9{d(=U>qjNRWEsEC!cV=Lb*S$Tjc5F=bgw#n)7Q_x zx#$ha#1}(D;)>f?@7|KL=ZVkMEy@|HuF79E+%Q~hUVg;JXY!BUkFM*eZD2>OQ1`l> zp6_{z)@4IZzf&0q`v^b(e?1*bDi%%1l`@;pdBT<4ma{er+u9#&`jpQNxHY)DxQ^_H z+_dGCj)Tv|A43)KGe6li*&kixdZ4Dnn3GnjSIvYw{>F;dGkWz(_^j z^B0xqGw37e7x}ilxRdVNZ?bg)cINFl{i6GrnW_IYxOMb*`T2;-J84dXiK~X|7_A8S ziIE+CO#aHIJ%iK=SNAUWd^N1c>Vr&AZRgItFw-#k=76#>iaw5B%XMy`%dUr+e7e8;l&wr^t#il9MPX6AT)4tuhTRyKwZ$Xc}C+gc8%$8pp z?EL#G@_ws8b*C478U48LOW&4xi`7;h`F;Yv_5BsW`F>ubGEybBb!-W)5AG*E=h^ko zItG_9e%-#azfu>PA$-Q^nsY>DV8+}|6Q7s{m}YFm=9P9_zEY6<)(JBT^GB{DJKlW7 zd>W89(uC-`Eij? z9U@j*7SPAB|4)8<^6FU9y^AGZY{AY6!iy)N@=i>*^*=u5lkv*?FE$@2!^ zzI(?g!@X6-kFNR^#c#^pzU(5V=xW9b7|qAxjP2u9c9k%rF#SH0Z7=2^hqz|AqEA%> z^*$GkQFfv)t_SWA+=Y3$SD4Bm|BS&kz~!4GNS{ToK`*psTy=VbACJku9#`18b5SSb z2{tbA8FPkO&BFGx@?RC)2;7}MXVy%rR2rufa+m@I8JITs%1`Ia-%Q+gurlQjQv;*x z$oJF_tryh3#++{UST1z?Pc4Y%Y1u6aRrkB$6n+7=5nF|PwT@nkp3hebU-Epb$JUl6 zz4rNW75WI_>tLg_a;dP5XftS6_?j2C6TM`*BK|EZSnVzMqh-*}^TXnU41bTIwV*Zo znz5TO{guMc!Sv;^t$MbKHjH+IKPEJ}Z@OG%=W61LU%>qL&YX5a8noTxkD=9Yn{XN5 zo?CY$4_JGeE49krXL8QRgngZgUq-dwaBBnkaF8&apUru8@6A0Y&|A?v{kXlpHu)?Y zzv}8T?C1>Ro6q`ViTS8jc5YdG4ejysIp>nXe7Q48@>4b3;V;lu{4px(2a-oLLaE-i z!nJ*|B6v-q_^;3Uz8`k>OF4V!@=dn+nKju2-1Hut{I~=+2^ZT7b>~E-Z=$cFr@4;m zu{m*R>vFow>iNPeZ#C$tyDEYgDtxnRli}LaoB(Hw^qY2HwjH(wwoz=j4obL z{V;tnv3b3HTxjxr9DNe~r@oCaKC?4q=d}xPJ#!WDcXnN!Oa7Dmt@75&)vgn^;m5zs zI>9fau#Reh<<-r~YuR7^O8#+7^{o-T7ySo$Y}t923N!I;MXo&ez*l{h{RKZyw6~W5 zsGg0Wx1rbjx+Z!`lebqr3wI3ey*}rBa|5_0po;GV+%{ZntaoiIgI@eX+AI2;Z^!mC zW(Ff0RWKu8s|bdC#{Jl$e9(km{Pl|9Uish>S12m9EGaS7h}Q z=nI68tsPuFQrQ)Evp& z2K@8;$H&*p*BSQpp0)0EuirmrW?tU!k6ZljVCvZl?WqLc^`q$hEf;zt^fu_#xc2SQ zzBS_x7e9A_=>-$oTh!wYQ}GzjFqj!I+ArQ-jPCzU`!WrE0s2?LhT}=x#niJdt$=Bt zKP3EIx7U7j1wP8V0_zdrqQ(#OYZ>%e=%Kho|C9KF35#qa*rp$6jg=&Or(x;)967Bak4DYQ0(+s8{rXD2zh8T}SLuC6HhTDmI>K=_BbJK@IU|PYPfa|b* z7b8Hnr)EKv_mZ28X)Q8!68 zs4MUC{M!U>5L~Ej_Bk{5?gmrx^F!2+r0;yj`8IQ&agKtUTg)nZK9{(IadIp;53c1G zPakKx(AJ=JLJNKWLg%;nViDuX@4$HRv8+A1AfAtT@l=A#{POAX(3cI+%Ap~;Am4&8 z*kiL>((4P|V0(UrIf8ta%j<(%K-xZ-;f{gr{Ti(tE+I7AIe z)|CGtFH{$tdKbpCPadKk;k8%y&<`gb1cjeiwo1SZ|0!$z3k*x23%$nb+lA2zrfv=A zmB7n*xNSvyd!e^Mub1V3cCejbQ3pd?#=#BzIocM6GjH{qvcq{8;Rs)Dg4_BF?2&mS z%DYn>tO=J~jq%>!vd%@@4L9aX4fJ;CH^qf@l?jV&T|3x?e;lG(9Q@(=TgLl2vc^#I z!{7`45A9eSzaH?kWgdLZziAA%k_Pk`SUM@}c^AJFcX_WJeJ(Qjg*56ZwbI)&;>xc2kT=k#iu&N#A- zV3)vNE?MC(?_DD<^d7KoPGQ72>+L8DW^6wSrVLD>%vV`%R8S7+k45mA{R^KqzUImb z^-bt?&_nyMsBiDIdh*?Uw3 zZX7!vl$9~Cs|Uv0GzWbVdbUlhN2}1bpoPxxN}KdrKv3_J*TO#s6{;)Z>^e6XlhB{F z;D_?!ZEJgUFV_oA?GN5EI-$J;&w zy&QVB?ex(yv<7I`$+$#4blOb$BAeHR`ONcouCrt-!LEUQ7}tKDiSm@Nd+GE?3)udH z3D3kt($B7N3u_A);=z_o)5?e7Sm=(Eu# zJ5B$8J^cH^c>8OhyU?TTZ-!O_E%bbojLXjP=+i#1y9Q~!N#?N)zB-TN2R?9S|hZ#$EBxHH}BfVy7Rr z9`qFR5Ic5gOdbb32aT}YqpwGtGlkaHd502U~Jjq52f=^Yc~YRiZa2YndA{e+Bzc z9D85D)`G2i@y>Of_I7~n20JV56*f3uGxpLi!(dBZ67QF3=mpTT{la#B30ftz|HRq< zhoBsj&)bXj%fk!9=ZU0U{u;8WUsd2sUm9;)6Z9nXDBC)rRYCh_oNd1g+cpY5ue4B| z9_O>8>9b%AvdHj{h_`JMdKvU6+X{M6o}v9%+9t|V;sHM@-6qw5S4S4Aze?U~E7)g= zwxS*E4A^wseC|Nb;>|c|2<+s`3)Nnx`DDAE9Mt8@m}32cFvu(`bKsM&EHvM6_r5cf z;5k9_ZtXSbgV0;TZ3E6iIu+jR!9_R)n8+@_s!*NJc)f7=Ug&Ba<32K#V9Jgv46hp` zKI|u!<-7^ZBAA0@e6l?K)0A_vyeZy^EX)AxW>y}vJ+sdUstG}kgN=M!Gy~) zy$m+z^@ZyAI2)elrQFN~^KV9dJGxMP6ZiVI%v+y=;$xoYSwHHGT; zw9R`Lqw^ygrQcQF483Ac*8Rqx9|EKOsq-J)6u9@vGzz<%YfU<7(*#(zwlMMxF8#Ft zJsr?*O=QaI>__TO$g%DHy1^DcV<8sD2*J{eT>Oy8-}R7MTzFOrk00RbX3BEmZ$2Sy>PD^JAv*b74mt_{!4? z%{THqf1`XR9)hKKaFBV@4`u^Q3fF$x?c9+*9JhMtIgP+K-}Zd72yW=~LbWQx3AiPX zQ}0LlJp*e$lJoM|z7vD-mV(;?x1F!a)q|U8C=9S#7->>^AvtP?_%fR#^jV$jzb7>Gq9rQuyQS&6;-)8TBw!Gh- zL7?6Ty%YDd%=_VAXu{`jWA^^o^Wq-~>cJw|ymu6;XURHa_J3v(B6n1{m#qsn-HZTaJ{rOoOdxkB*CVdKr2N^w1tMey6qttr6NFuH`%M zT>P2*F!CGPan!sqi0yY+Bj|@JFu7M0s+UU!dk7a;y$N~}diEZ}JD{`7bV09#9=rcE z56~0=<$@mrUwUPsdL82v?+xaWT)uaJ?ejdC8Ze==oZf!waR9-P+XUAIt`66J`pmdg zpDX0gOr!e|tiOVb$}6U!8u|eAKg6}i_XO>+3%(tE!_}Dg%DmO_nl~aaUk1RGcNVI1 zaIM~H=Y6=OJ>$?ip#67${Nd$`^RNAxGPV)(4F3jJzy-_>Cg}eo}b*j*u zANQXB=bo!w1EHVXkD|W=^IKf|@p)VCuFx>B_L;L+KpUE3Qd7j1^!_ydZ zc+kb~H;?lZd7vgznNa?{2m6=@SVc&yY=V@+(TbY zL+^kd`tE_FUmBsy`7-o^2Mg7&WqI+=1kUSXqvx!-A4C3pzfdLQIRsN5o;u}2Ekw`DnY?q}1a?P`QxH;*~6Oq*^0SspsAev#D0Jj1?HMVILju>A<@=O+R7 z%DgPo5Am=l$|~e}ur=vqcwI-QgRPG7*#?+qFj0L4^RM9JSpR_@^Zk_zm`K+BDsY3D zq-1OJHURtH%<~Co{m?>Z zdGyIAiz{2ef4q%n+C_%lsDpr?>VX(-~jMCoo@lNiwnxWPPlGo)7&! zxc2?v1;Fyo(FVsk;v7dO?rFk3q4A)pin`nmTD^(By3VHGlt(^mu$wO-U^=G34IG|S zt#TY8eR>wxK8#=1z%G_1RiCtz_3b8&=y>x7QGSj{hQHx#>#noQj_W@z4EhiD4ddW@UXe8C;V%mM1{c~Kv`J{8J`H8Y zJHyVhy$)st%m%Lgyz<(nKN>%i1K@|jUo3f1HWOzUJ9Ya9b_J|{4~Tc>mLuDJcK&1a zAIY%1@xZ5S+|U?S-ls6Wudrcx?F`RaTD{Ebp)s;)dUQJLpm*Z_WDaid);Hvs_V4tW znS9bOUEo_Qld3DOJ@9vTO}yYmyijbGjSnTfb9nRC|S=>tVfRozG?(h^~UJ>&GcolMKI0FmbJpjA@;LJ`epjacw|Zc)fK4eE05TK)^3ggyj4 zv=$}8aLx+KAH(YfU$!SYPZ-`P^bGXSdYK3>@ioM4inI37BKW2glInf9*Y}_4KiD&b9k-*u3(im(IkSjMJxpH(?rA%U1zakm?&U~+mIC?*mJ~HboO}MYJBWdQb-m{wskG|@J)&%YK(pKMB368|H zW7#H*fNg(QQs=dAEBaeLD@A<x@9*6~AGP|6<^3Gk+WTjrZz29Do#ky6 zdfwHTs~vzpy!;kpv&8kD$4&kuM^HYm&l=` zJTM{q#B*%D(3hb946JV-+LU0|*|e?W;0A6;#=px%)ElOI8GOr)N%a9)&Saes<3QS( ze+SMd?2Yb++5VP8pMXAwYv0bG-0F6f;WUD)>WL4h6M7l+ox&MreBknAe5RRKE`FPa zJ_0?o@8mqoZ?EAoxt z%RZ0{@3{)UC;rEa-IjmyeMxl;?)Cl33XVVN&r#@g(4*$dF7#QeUyE!1ep3c{q+7Q+ zYhXqZ##54!HvP%O$Mz}tMXZnBiZz6|a^sq|lx3m@Z2t$bo+4Rq&YUnD)6fR4^Fzt- z`_0kL@NsDBeb9TMM~zFVk6FD6*M1stKabc@pMyS%`#Jvgbum|5vwBqc%(J{vbN{5g z-=>3Am4zko{=i37;4Ax+>OXO1VvS|Ov?r}#^FEq1&rEr1twFuv%NX=g9;RaeY&+Pf zyr!KKR$rEO%6$BiH5NMaas|9QkPPnu%K7wMkf!`Qaoz*$eljm**c=xkOs@M>ft~zV zQe7U$R$DvFz)0KDj(avfp0&0n!grd2K6(gj*H75<0t~+q_w?PC48NaQhJR>~ z&K|JCpFv+E{V2kBJ{Pd#U@L}`>Lkg^a4QWU8L#%zz=;PzHatzqtl(5Iol3)g-a`b{K3ni|1m?nc>@4CjeN zjyGYkt?LF?0`6FH-kMnpbR?SkF!ToKp*6QX!TrW4FYZ`>#P9Cdem z`0Phq=nVf&ykD$qvYb^xYlU_ZTB zI`biqX#$gbPg3oc^#Hzi-eBsK&VMi!_a=2-`#!X5COZGE{t_7vdrSOHeHwZV?tiJ& zFEBduXc>9~^owM_Ao9qu`vYY2#<8C>k>o4!g8cOM%ETHX=Y*ADm%f%%f0JnwZ6#+2 zdba#-rq#>|na}OGZ)7qVelLoyqt4l0t55}Q5M18c#awtLLno9r;yi65i>$+5d+U(Pq_g~9)URJ9)q7!^-(Gq92`qQ~kO?G~ktVQfc7!ah9P8=;hFF!?o`}udVo?u~ql~;6}myMV3)n_Vc~?O>T~O1G z@W_T-2-20UI^PqJ8yN|2*yU!ZQB9QHO-GM6MHD-Cr;dAm`<~7pHCC z$qj=W02h8oN)3Xd6L;$b)2>-?bKqQD`{9XxWOWBU_iN_-0t4GZp>BCy9Unt|( zWt|KBtQ6c3H*IAH*!;gHRXgjY=OfYXI481RnmRWOwqZS~4wm^S*>1ATe8bO!ulaj2 z{QQDfpSUkdx7m-XvQDe7W4;IeV>!6?@m=<$^n3B8L; zt`Xc4xOLg~SUa5G2kGkuH}cPuG$obmq~{aOsqwE!m3dB2H+d9#9h z*0+-Ct^4B-FO6dD&pFZbO)N+GlNgUWDYO6LjYsJ>lv}nP<nN@h8~5sZng0!(H{U;{9+&r+@yUH&Nn_lV;N}iUh1(&F?XE*`F7!s|ThRMt zxz*1inaG$gU0_-BW?PoQLuG+sqp%#UH@fRv(THMKPcOD8J0eWXX@Vu zSe2hruZxTKC2SuJ>)wz3zk^fZ^+nO1I|rL`#x&P~O}-#yo^SBVncg=uX=c4>2eSa? z8@Tq%BKy$2K|U}&gW%cCRH1o6&*9e-ge{H`O@&*~L;7vZgfSp##G4A0RI zerV&!0ZbtA`(x`F$w_2$L)2i>Ev4z44NiWjHU zPvY|avY>Bdez{YaFTW%eUbFP}J9i^=FwC!7aBJW&><;`Q)ASirrWj@i*!I#?_)Mig z{xEM^qOC*VDvv-N!nN;fuPtx4DHD4rbKnQTNBN!kvIc#08$Is7)E_Vf+SW zmkdMfW0hMyDh}pZJ@f(Ge|20r_>k9%ns%)l{7P9W@+>0l8HT>FjXn*1CPrtuT!uaY zJ@jrS(S9ZL6H|8l|81=Qy&UbaO#2>F#%W6#^jhdqV<75vR*!lHguZFBdT7l+f0Tqx zkT-}uPDiNAKln++Hzw_2RuSjAKL5328OA>czVa2R*k@4ItR8jlllSLM<9s>pf0>N$ z0+W8)QwE*ke@eEYvX1NL{B?7x+k__YqpwVb_oGkTdqCg*w?2#CxO9GD+HkfByTb;_K-7ti@7xDRBX z$8*1f@^@5pnV{X(&}X1uk86L9XU6;7*3pL3cdg(u72EW={|@Q}`9bhyuT6!Y$B^lG zX}~k@X2CbTF3V1PHjnx$^g8J1N`khO2Rra5_1y1bzY=<=Y;z488pl$lR(~KS?-RSh zGV7g-w1erJCfqYynKJMHxWLY*Bl5HdT>k5`;udYrh}EO=oVL$ESGYg424?q`sjqBv zzY9I*L34j2uKj+-^y&J&(<9%UoPr>)S-a6j|bj{}#~dZ1N9>ysMB zM2vSB+61&WNR5Mh{LQeYp)WuWop%!DB=J75W(cAAb?_Z;NX5Sw`Qt&kVjj9P*snS| z6@J%Y&{u0qSUzgOHC3h5?Q!kCKh$#G$ru=R7w%a+CKY~8ISBhPrjm7f1l;hOQffJ- z>^TqXBBy;h54K_V)BVhF)}XaQ!**bh2Y!5xKk}j9lMi7$b6iRl;@ZzI^SVjp;-^Zh zpDlH+X_)5Ew0~eqYf|C8MA`TJohdZ+uNQ3I@mclP_C55~DD*9a724nS<}z(29Hwy| zTm!-hy+=@#2j>{$E2eP^Z0DX-c+Ha|Mr%`MAJ)5|zXE^zKCo+^w5baEAoS~`&aph( z9qR|i(*kZCTvWeEy~pa$mEqX4H;iWl`ZDehja#^Pz&OMiojGuu;Nt4&n$=H`@nC$^ zg`il5^S+1tIstRvm~y7yW6HW@`$UfAt8q_BEyg?Y9&e0#F9O!Xao#{<^-7^x|G|B2 zC#J&tA*Wf)J_kVG41?V+-KqB3Q%3Sstw&77PHpK<0YDTDUvRrbHOjc2)^ z#r;jVzggyksB6w?LAl=m+g}%7*9x$S-VOa68CK9v=+!C4Sp{zL%_;S7$;tHn(ZoqV zw}S0EH5ERC;D?#`0iDMD?gv*>A3ug4hu#7GZD9TUGJTa^?PC}VV8+43m6;8zNA*?g zQwknNdyD%&DBDSyu13z~OyMA3174kxQXkC`Hc4K5^P7AJ`1Z3?>bN*we~-$9Pd|@< z?|%#Gzx1>3JIA4yNt2xiJJOWe@ts{{x40hSHpn!Z zVUKbVZUb2Nf>iih5L`#FYXB?{onYF))Z^OEN3T6UR!6JL!!Wo3aG`OT7#mGnJt{9* z7M7v+;Qqs9Je+FaZ~8#Zneg8w(|e&HKD{TU=7Bg_db~x<(sX zpw&Z*D~~-^k4wV{^y--VnT8pwe+AdRFGb#X&lA={UI#mau=Lq}Z+%mwSHITw!F_Xh z0Sp_ny$9T!@TMz?3AoL^Izi`6)ekYgy(oUJ++_8rbg>L{L7&9^S4g|PzC-lGBjEBc zj`knJnX&qlG7p3L@fdTE`LG6V@$J!bC+c~RAU)8d`eEv2&?jT=XJ1$ceH40UTzz`f zYd3hXkM1>N*dE-s{*IKo4`D>+A4i#{InZO+3Gm&QrWB@ck-XFH#bfp%SHS1LGo{+% z?D~_(2kUK2Z{|ms?_ZIMeD06st_pf3^w4`ebzAJ5;I&B{!nt5u!M0tQQVqEF(`edl zy@JK~`oN5Wxq$iT%}1SM8Pq<;HwJz4s+2k_E*&*Nd$kC*?3z^ge6^?(j-Ef7y{Mdd z)UVFew%?^iW?HzVY3tYm!fJuLSc7{MNJ@|@cQ+6UcWYPwQpKiwN68HS}^j}=G2 zjDy)v#_88@Ju21yo&z^{eRO$cJFy167kViFy!PgA#$WV70Tzdw-xEFeVL7O<`dg$u z!k>u|gk|fi3%&(>{|zYDxc2?P{*c>6_=$e)1+xT3$vQ3l`nSNZ6JW>Ri?JT=3x%h5 z)y;fr5zHExP``&bxhTUlZbILJ9(7KL_9TC5^v}pR%(~7A2tsf6aq2;~25kF{n4?R7 zNZVg#Y-b*{gYDUy3ZKoxc-wgunPAK_2rlm?jKSi>0gE9c&L$L1Ty5&hsgz%dR#Z*fU&3|eoDHVbViLUVE73bb)(he%)QI_5l=US#`| z`zX%CzAvR-C>d)XTO;NSXEt0~sXP5Q( z?`K#)`A~G;)I#fu(3sX1X#LPaduD6_8NMBhGW5DkI|N)<@86} zyag>8q0#TjpQF4&J72a(qK$J-<(R?bQ4QGkkEGPEWS&d*2SHtJ2U{|b3cuUVs|WX+ z{9$?r!Oelot_N(pCZH`tI~3P`nXq#U>I=}y{++PWODMn|RZ-l-EJ@ic+TfdzHO?jZ5-QZR}jdlmueqP%5 zgt+)=*y^W9oqZ>JA^gVtoB@+Rlu{)ze)aa~S?|}u7TlInFNt9jx7$3>`%)(SlE)DK zXE3gi_lP`B{M*>V@aw^DfZZ>y-YhchY(>ptD(&yVJ@dmU^?$XTmqXMNyVSh*Q+ijjk&)>euKSV+K}K;UKU7iVa~7>V4Ls2IhGt@ zuPDdP1>A=>s6L&_>-&sz&t$vS;HyGP7H*_A4f~)&dN_|4+fsFGeQ>IwY7Qjw_ zITiozgGMh8OnP#buwHRjD*R1Hk-y$|9T|2x*n+!L3QMU$UP(Lpy}6W4Klq99ti72F zw0rb8qZ|4Rbo#>2doeB?hQ0v(xlFgW<`DSjj|fR0IHGNHU?=ZMsbk`7`!3UM8W@(P zE%3AVrBq{FKJGF3NVfD>=r6yXQj@s$?G!%J&nZHp9SvanCvnz9vi=w#!Bab|06bNt z)7=Ap8T^rwXZ4_|rkdz*$H1+E%aLUu2$#NKxO&%*{#*h-`;Aoinc;wcfbp{p%K0_= zulu9d7pRw5J#Jl~26{8@kJ8yDv_P+i{??d$(a+T|tgX}ukmT#rP=Tilnuzj!#HuD>txA=BSjo{j! zkF#C6k)AVkry9%v82#+u)63^7NNp$k^fs`a)6xA|FSI^rQT-Y7auj+O^e^FBUFiD* z@2*a8c&hiA$<2ey`A$krk;@)u-)-z>o^FC00#_|Lq>WuL_2e@8SLk_Cw|x%NQVD$w zI?KBs4=$-SK%0)y+MzAPXnoLDW3*9dTQS-UwEXWz+p-L;Bu3kURvDq`^#2y^Ews>{ zm0eSyUTO6=;@VF?{Kpj}u7x#1Z^QjqVh(h_-7=#`7Wu@nxPi467|Ulr?#p>76@D(y zzc2A5Xx)I3odTQOm(}kFEKl!imgQm0spmkK0SnGo? zt4Ebn>h;hoaDS9eo7}ctQD=8_{zKn_-h%K{i)}x27_9Lo|Hp1XmcgFK5!>7Jg=Rx2PLUDLZ5;j<$K1{Y4vGb`}ce0;NHM@!{8deAH5#u z;?`;CHPBxn!_nz7gA6h&VCuo>GM6~sCW;ODJD8?@WO9EG|A8r#_0{={KVTqJ24?jK z*qh72AAXv7UQ1UqU4QGr6wIg0a~gYWRHp*jcLFN;&56Xvd2Q-?7ud;Xz|xv`&Ci zkEY_ktMGL{+jO3+fM5PuD*SC@udI1Pe1yyPDgO^xzxjFAn8{-YJZp^|RbWdOQ{nga z$g#vX0-ot>1HTELVXK3DF%Hb@`+F$2E(v6T9o3|HDQ8Q9^1 z*#MvaOOzGnz4OBTY$;8g0*vD=hM8PN|GxChZKwsm_N$b7qbyIt1}7)5nd$EYzx8XJ zE0Xn1*IVbUB<$8b;MZ&TstdlRf&n*InbbbGr1&i!5VIymdn2K0RBx8mB* z2m8`j>IHwq{u1>5kj~D@_@)B-I`p!*bJ*u_-eAfR4R+VcRzF8laW${jLJzbLM*=_{FX0aR9>`vwG;AZtTJsgkBKh1=lLfxMPX-J{2F{met=c zeetyL%mkEU+Ojq5FCo0Wap}>k>2w+kt4WtG|G01cKUwQX(r-WZaozR|fS>;_p6iK; zC-IvwKLdVR6{#1+@lOQ2uK(c2_bXDaOt)QgpuGiuHhR7cFQ{L?v!UtUmu0jDe1D=y zyM`StDjw@LUX4xZM5Rt?hv>}aB*YEDXWLZJV8ET`*4*ua2wy4%1epIa0jqXn$C zm-FWVaO2>ZU%oGK$+9~RZ3fzvQnMcjq&^S5lSkK@Y&L+4%a8YH;g`WJI(Q9NldVIp=7LylMU?vep+`O&{`sg-#7xY2suaD_#PeI>|NdwckWc9eb*n+-_`{VS?-_ajI56!LQ`CsU~pTluKFTFjE zU$PxBdC~%I`~^j7K9r6b=xoM#LdK-04_sqGkvf;$HFi{L+hwL_4EiAS*T`_}*=Oec z9P~-(`^&Op+Dz_z>Nb<%Y=9enVRYUzoPvKC{lhYzpbXtagBea0xa1+x;jkVzSv|WR zGmcJZWw`fS(Q)V*Fyj~oHv=w|N5*B^hH2;%(4*%4F798p_a7tU(dAel)6rq%Y+!yA zlMdQYV)e8PgS`;`re0(9C>yA^Kwn4r)wuS{iCAmwfu3I&U61Ii5$Fo~&*c3U{=7y`7{52(4WTG!Z^yI&p@w}ad0Vt=cVx*<7fc09uo%B z(*b=M`c8R21gU-s4-U<;3j9&evtS_adDFrwNhhN1o!{X6t_UVGzl z<1?PH*L_e4m}xMf_x5^Ymd}G?&C;}~?+xJFQ$^u5zF=MQE{0o*=(@n=78R)xSzl$p z{4tJQ%=lsyY+t%4{A{sc6F=0b_WuId>P)oXm_HjT~eZD5X&48q{56T@hP-UU5WCv+I5v!fkdV0yts?VGTi3_{7uZyURtE`WS)reWa3{M)%jNiwzjk= z{C!oKCx0?5)7lC)b3}B%&$RYJFN1y-u6-N5wA!^)+BZ)7z=h79i8!4)Q)U?F64=2b zKML2rP1f&K_^Apy!w)@^b3W3{5uZ1I+>O6kKR7Mp?`C?Y z^Q{Z_FXH~F{+00$L0^R)S3aif{p~WZ{Cegz(-RD51)N(JT|U@1<^0R&FP7m5pC&$S z(*Ty?Rgiyqk;=$^-zn4`z6-s9`YW@_t!Y#A=!Ri*g6RSi<$IQgLFjGJe}HS>_ue|( z1F#1_Gn{E~1?BPKEJM$MzFjyhSGoVj`Utq6;M$K*`ryGJ&I+*2uPRb|B#XL#o%MGE z^nU13^^rDrSUoE3)CZt<t5N&!u3>j*6~JEJL->Gtghj_|CLrH{m}gk1+=C_UI&E zQ53o7LHh@-K8S1ICipnPu|DgO9?6?^nHjMC2y04~N6}_Ek1%dM4O1?H+W_yrE-U}^ zIFb80roTx(#ph)ari@>NnfQ`MbvsxCb{T9!`dXwt@ejk&Pwil5DvQiJP`tKShC2vW zk5r8v!{7_vfU*=5wxi!+W!O2exknd;-=Qb%xIM6W6Ko&Y(zx}&LmUk=FG~Ic{~lAM zdZaI8xca2BsgLzwH^8#1@$+qW5N|v573lpkJtFwxDKIqm4kDkI|-~ zt;A?c&^9A9mX}Rvc_&8qtvdbtIch87UTPK4@^NpJZ|b3y#At2MDr2->Xmv5#2(;!H zZ5mofjJ5==H%8lpHWZ^3Bpfv!qm@IOiP7qyEyifA(AHwK9%$;MXnzhvD~Qpipq0jG zi_ofKv<+zWF{XfmR)(HA8EN(Ym0u#%P1kx?;2mX#Eiy>-9Xe5ol5U59{ta z^nsXr^PYwF3EK0)`E8y!$5CeWL#cb;mp=*ZIX2=LcOCS}ZSHTgdI9hE`hIR-;!ob+ zXZ6roV5`&iF{@{{JG^%m+8pAJnk(?$Rp?U@>86&mKiby_jp4e`R-lE>rr0?Q@2$3a zwoTNUpl!y4+X*eNF5cIJRu848#`ub1PeR{{33~xrKEe*&%QFzTk7?R~u3~hCU2p*E zPfXb5&~k8Z-1(^bZFGj+ZuKaC^+8J_>}-uTk3uVh7FDiY=(Er>&_nCq950(K4Sg7*Acepqf!1xDxSIoUN(E6bj%X_&9g}-@ki`BE!MXej!NJO~Q zhM-NxXp_+9VzdQl%Q4zIw2c@o??6Z8zWM3?*Xf6riP37Hl}BjIw`OQH&<@14?^jWd zyP;P^+^f?Mtu{uRgw_w1R_>pD|iFw3-;L z4q9W3)(WjHM(csr9it6H8;H@SppC|8i_oTGv<+zUF8dYMpN*Rr-fHHBEH4va*H0@7pZjby?G5K@3((c+ zMd|~%R%hF_2yd=tpJ61o1+MiOa3#-yzrfwg@VtK83-602UZ$ZATp$O-%M3}+a-8yHs409M<&DogKOTUQuq;q>PU!DUy+gPN&hWmUw1?xSJ z$#6HpHl35T4&kMVZ;KRb5GBvWeBfNHgT~oVVr*djtOq;umZI?cr@e6bq&ve+oP!H9 z$L|K;(6n>dw0R6{>v`DUk#@*AygnCa_8=C)_Pupy|ElLZ^CoJD%~%KN$7*nxgQ#ID)+6BhYjrPuX)p)n6a3#eH?1MOkNshv-H< z=5B?)1pV!Z!+&qIeiUk-UPJALUiR*y@HcfuJ}17bgVNs>m;k#B_G@uIx{N-ec|6f- z8ZsBruHnAc>x$H=w86`7?_F2;iDftc1;}qOp>sdB{c;jPS*rxs*M&Y|e-W14Q#)n< zP~5HHGkc3vD{w#VllJoY9o-l*?mjTBU|M9leBV3zsXex_6X3>s5SHvaWZYxyJxsb; zK3Bl6-;z~^F*o3TC(B$;0Rrm9K5P#D@cbgf`%n%@v({b?wxO{%G7Yrlsg=pWQT_XMO<-IH|OfiK6gx^17`tz8_|Nh@WPfMe0t; zOFO>mg>LMg2H$dTk-Am31%h|Z=01+`bw9#i2S4-GBDKy5sh2lgBcMMxHs-(HyZ;j1 z_6KgZdBQXKcPGBxhG)irJxPpLzFnk#lOt@BY51XOe@Y>bgI##ANZlA$R`k1{jBl2} zR_-fOZ-`@G?DZ3d&r4yxJ&Q9Nl9zc^MBez4wp5XS7-KxiOS?~FxwZWt*uFW;Z*ZUQ zcl|JsiMtni-Vcky-wTj&Ul+vfB8W-wZ9ghfr^)cl*hQ~&u`Dft83j`%?UP~Z_tKd3 z==QG&_4~(Jd*FWkPV8f1*cMlSYyU~~IXuSO0KFgjmMp^}Uj1Dm6Rqz1d%!m@6shB- zozjm-89y@Yaj-o`b!+Y81PJ6ej4k0%h6*w>gCWkeiN;; zOw>bPf&OQicA1u6G9OKu=mI?$MKNM+6Jc^raJ~I3|@Rh$WQs0kByDmY3?*hO0 z1kR$zwO!YQ+paP2jZY%ITm;>*?fRfik@px38?|TBcJ0LTNfL%*+OFziv`7Cy-xZgJ z&oT{$Z3El-e;5PDv1b~Vz8nNQ_OBv^CEFma!uQTH^VZlweinS+Q$?yWj?WFsIm_uL z_#u^6HF5l_jV&yPCA%Co?WDu!))QaW>0;b9(3^A8>a8*?Sq@(j#Laf51APAh>F^nL zZ(PC|1{j7r1a1}FOX9*kFdXh2`DdrY&%p)l*Y6oJ)4l<2`k=J>6t4YpB>q8~=AUVK1I zSbqq{edHIwuP4*$;5dFS`%_a9$>+G3PrWFuo*&2G81OFm3h?uXr`30G?fZ{=4P1x7 zPdfczx?Y-A|B{UKu{|5;Lhk`vUz%2LmTba4G=|?;21gkln9!L_#K}1X^;zgc&_iq2 z_N*Su+$!`j=%>rJ$uAqu9%dfH$v+hB_YvvHxx5R#9Qp$EOL6U|-SoQ`GW86j0gQWO zTD@K}u=PqCM+fw3==pLS?;ONT)V>>lUS6J77fD-%@0_z}t?~0T*p64hURge6IkVpo zVxFvlZ9FQihGe*seSZ*c@-WQDD$?rVICe5%YrwX@HXZ-HSN+WoV{bdyjn}2a&q_%f z(k5K`aR}^YWjcJOhofs~)Tf{)U!M-|m)Z8ig}wy66ndy!wcvi+2a!=P#`+_edR}{d zinq#vpBPUGm~Jo!NoJ3+!^Lkk(A%Mh%0%K=KO!=%V5Y!~;@Xd=7IlVaEAbQK=>t>y zhIIIxl|Jxh=4oTlC!yaj!|>OP&51OY^#ySCN2krZLcBBu+@~0$3vLVCBDgr4*fzK& zm|s+-)gN)~+b!}d@pEH81#55DA$Y1JspjdyPI-@Z$9{9Rxhk4dYy@Mh0WQv`5Nm;o^VmW-KaeGiQ80O`9~aBXi&Yd`v7q0VuuTGxN8hrXld^*J?+&E!EoI-3!M z6SZIGf+>eS0R0G=K5es8%#zEv8o&%!qy5FTZwp7|$6?s8+r;HU>H;?i?m@|!^na5S z(=`mHW_LQg{)lvO?S}d^^akjmePQt|!m_=eeVK0y?&s18ZRLTu7To`CseAc#sj-#$ zS_*CoT<9HRr|k9K$K#I#U9b&cr;kmCzio)J&IXcIk4z_+yyMd9JY4&Bf#Fn?4AV9Q zrWQ;nZPtI(r=V9tf3*w)X`|WHm!LO7&y)IbCQVHHmJPpM>Onox-^_BMmAn+=6@+uA zSOy@wmH^FRy`Mb1Rv}?{%&<~Xy zf$`3X>G1dE5@+iO8CDJS{FBluxPwRMUq|;Bp(&>f&fl@0~E+J>crW-7GmV-b--G35~XmgPi~y zs*kn}p+0Z*MHyD&r#b)^zpX>>I47;%A$8<~{fwANe;L|uFz=I0qDP0pI4Yo*pBrEQ z8lYE0|De2|aol3k;o|pBFk@gs<1RAxoEDiOFpFT`i)-J{rmpBG&uPmvn3}hsKb8y& z75-)(EJJUAUMY2U5G+f!FW|mF?#nTL05{Jv;@q*H-Pur$__G9>dtO@IBG>V`Z`5nU zNqpa4IR9ZyXVB~$be;M?d*LmK>g^uWn7atO8(}wGkTn-I;~U)`uzZYwnFkYkpP(!s zHoZ*8JlK*8v&O{uo!T0-$_UMcmir3SCupIuGV{ZZb9sLmn9hj%sntU3i_u!34aaER z&?aKEA!xHP+9b542#sl3fVK|pE4WsPt87*xF?R02a-leUJQz!@<4Jx;epb;jxS7 zUYHAf0Qc78-V1rJXPYVaZ=q#mCczAW35|X1v(UVawl9I1jIhszwh3(xT4*oS#BqWb zN2VO}FEF*>v+SrQL!VTGDY-bURwN_(zQo-i?bwB7xgGop_>al9Snf4;2mS64*v8iQ zb&)Bn*D@^cTONKp?C8~PZ!eOzu7U5oB&|M4{v=y0L_Koe%ec)mAmlTz!g|s>(&}xp z9~NnIjtJJDn6^6b$;;9TkJ|)OmRGz6xyJ*_ry?fc&= zqnuvq2BroVd>uVEOZl=~(@!ko-Ywi)DDM@|9&YZSCttn&{gpfDjXUU_JLrSk==AlZ z)qf(>=jXltii<9Ftm`Xa$FE3-zYoZ>t#q5159A$%`T{OA{_w+e?q=y=copF4uS$oX z+dSWfXWL71P2d{Aofv83^|-jgI?Irc;EL{PSlG2R7msw1mU zEd%bFvMP?B9d*(2f!C(^sP`%k?r*uh=Lu`DEw8PIO@{ItPDvZKwR^Xnl@0+J(FY zcC|Ze{=+_x6B6hQ&wUNrxA$U>4ww4j30ocUUF|xsvpre;w5ii96|Aj#PRX{V6Kv+D zw0bno2T$2Vfn}bKf}gt?Z5OV6JG^nW9x0f1WgcA3Eot>Ca`i#iM<3yp06I+@V4A_) z8xyxPY}#Pj>An{IUvFC77MK2qgEo+SJ@}Tsw0bHo>|+_WDXit-yTMm{Fs(i#+f3=;D57&jB`4lLwvPGec=rE&U{U-Fun59|2o_ zTUxciPCxJcb}6A}CiMLrxK3~%k4b~`v%vTC;}-bU&!$zUv_bZVml!{iEyc!C)$J%( zapmAe4$^0Q(Ezr71oc&pmu1@SVI4GOfMNH5uf7vuOFLv4cu`=-IM{|SrPWQ+4r%k% z#tw$N1a|VSH1?+Ohu0QJJ5Dxj0mn+YuSb7;k6oL%+8h1jJ*Uu0pjF?Cc7pbK;|AaV z<^xT7oWUgR-5*~J)5{80_vW&^R zs-*>{95jJ#oKC9`OZz3;60{xckNUvRJ{Z0C!nR@z`Xuzw{)NnY-yf%F8<@6b+WQdp zs-*v=566PCm3K7a-155u1U-~W?z_&pqc`PA>e(IxCI+(n;kfN%b3R(%uc zbPfxA;#Oh3U?ClQ2EaKxVC%q6K5F~ZMq7tCvDsIHl6G@~LoIYcxSa1E! z&a4ab>cOror`4CGttMYTOFNmK4lwP%O{+tto&H{e`6d(V`w+O!-(gG{R}c21jk;I< zFlz+s!aVNTcmi`U8NcwWJcGhKQ*Xj~xIdt;lD0@cf&K$VWe_;G6$H_9x zb6BpmzkcJjAoM{_HP%c1iFLL(Keq*KSvlB-|D@x;nL6x+Y|_~bJ|~e;(}*W3oqBx$ zl5YRO4uYjie6}X=*%SO%i#$}kIF6wU+L1R6i1iJ<{?wzZN>A(h- ztyS{aReXaC8*@EYN%}tbIP6b6Kcn6zeYzWS!P|mxXk$6JnuC%5adoA`)D^N#U`G!@ zx?{?Kb2;mZsVBXRzbK<_jhjDoa{gf039#*lX3YD$quP$onfzzEmciz{I1_&MBq&oy zlhoti8k~PF$waPmmO!h97CL)_u<6%oXf4n}d);oq6V$6I@d3g4P)kC+!}D z)(7o4T>JO=cAE_m#y<^i0$ga1SnhvAAAz1P!#P>IQroYNNB_Rf{Vwz#=mqkA`%FI5 zRBiQ9S#D%q)F+EfWvB(;4nF7bj7lLd{dCE(;1`)AoChS>^6|pCj75sI)qEdE2Sy)F zA*{uhXTslY;(8EA1h)Rs#uae$ugGM7laSAz^n+xF!0D~NgM7gr@UP5-&v3{z>G_z6 zpcH%!c=f7G>~neE{x0*p9c;;~v+@JKQ|p74gcf@Lfz?K#WuS%188rG~2AT_P8P~o~ z=?6}!gdf(xErNS{TwWbP-%h0ZHWPl1LFVn{VZICe zW@Sbl9T)zy0-j}k41Dg<8TA60PBYcfWqHo(q4$oR3lqW9Pis~mllKSXNd2%D<0+`c zd;;IFa=+)3qrtYK?DZD&_In1&sg0WjS=Fq2@$wqcmQB`}L%c1mB)N$}?} z+jGp9GH|2dYH;oQ3w`MIZ~^r?=!@IvZP0Vy6n#JK?Sozky-wCo>t|=T>C;?r6X2Sw zGinIez8xn22bdeQWf9C0m_3q#tv6U(H=*b4j<&_cJ;{@?-Ua<^dB2H6xBg_Rz;uF% zvx9A8Gnfr9Ps(uQnC6$J{OI(9ojf+9?vkum&OR4#6X2?k+nHMeHw!NESw{T^KvSP` z>af0E6Q2&+Rtl!-_?_dd2R8$5yEqwMC%CCS8TA^O*M9%*=$4q=Ft~*iw&&>QS#WE$ zneaCQgrB`{ZZgabu*)ZA)B%xko3B}t%e)!>J8654ao2zwKRFY-pJATEFl}%<*oHS} zjdA^S>n~^Pwt5iU61XXZ@0am_8)s>tjnm*dPQjcZn)`{zt%55%b!RUB6wKej?NkOU z!L`+Al^L(BemE$r%?uCRBho&Pd(d#~YkR@oO_yVi9|!YF*6&I1d1qmM z6$;mc$Npsz`qr7zp`M8(y`f=fs;pU%;@d>oJebe$C^!gq2_HA_LXTQ~N!nJQ( zknjGvmq~Dau=9D6v*+?${I&?a3;MBA*XI==@$ron~IB6?-ubdzT;xIS>3;6h`5ZL{f&$&7<3IXj+Vd<$Ue!Gy*^ z+}Gq7T8|KH`oYzLi}ImP|7qxtVszH~D(I!qL(lYyHb;-H!LgjRf*k^T2d-7K9n(mb zQyQ}btjpmb_)KGT`KE1?(DR_j<=rCmEyNc!?_vGeguVtnYED;hI_d|)j+;|eKv&!7 z4bayScAQ^3pf7Ku4?v%X9#yxQ_6g|I(4*|5uNR>{8R=?_nf20{}F}-dB>f1G$@b~Avx~re6H~m^IxHWLsg#BXAhnuII8D2ZMns;Zy z-$V-5e)UuKOw%B^p=&d05ZAu{w4XVGW0rK*E~m$-OS4zRP>Oy#mkHJAm_m z6(q8oV8_57A8Bvme{3Y0EjbhZ?aHVZN3%R!sS6X!UOm`_>oe*rIrzgXd$J$<-=H6( zKf1v;+?dhv_&j%XnO*iQi3@HNTobsz;M(VOsWj!7%p91~y&3ZkIPV*=81r)K#=U>W zw+^NS46prgysd28HoB0KXQBLpdsuRQ+iu#lDlo|&v@u*9@zN^G-9<0(T%*(127dDs z8TAhtrk6jz@KH1V0XsLC3Ga{l@jDePq0Gl=a4Vn8s3&BYvR(Z-KxoXHHL#Gcjj<<&=39Tc>Xh_icVLqq<}{756#k5D&`B7SnfUCj5+^ zY4`q4uhGA5BkKQ`&`-!Pr4Q`8pIDyiz*c@aqsq}e_~pT0UvOM{i+=3@SABOz-6z8o zb|${z?a{L@ttfBMflEhgLM_AG3OlcU(Kk=IQ~xZ zrv8+Jo%wo3eO}rgr17I(xoiYi_YLf2NKV+C;JIMLO?!J7|NR;D5y^^rr1zaow(0hM z0{rkdGwNb_zQU_VT<_6MJr5@bWqB3%EKO(BhvU*H_TrhB$#Y@B8DQ?%_8)B5Y)0kEx-ER}{DY;{%#Tang7t>Etnn+?7dbjWye|H) z1v3OD^eh`0aptlO%pw@_*gWBm_;dE>d3UtUI{j8>TKx21XyV{+W6)P||4z@;l3fHl z^}~#MT!tm;Kw`m!%Xo8|u-^1Y)_7`nkhT)&?a+H<9{YW^@nH3BPOfoFKjd=q~gdWj>1d7{(-+zMp2)k&>~`9Z_F|KD6+(u{qYfO@3`c z&pe8K9C^PeD=xywoQL_%&obff#%0-24QA!%necwMey@{R=WK@Fv6u-zYmR5NXk!<& zO=zFPwV&ViUg|@P{}*U$V)QBK$;UF`Gne*$mVqVcqtHX|+V|}bdIQ$W+_z#pxReP$ zGYUId$4j6MLkrb$Syyfex4#YG*MAM)OW#WVO#x3kd%!m@$NAYwdNkQ_uoJ({>f?em z=~D|VX*&I2b06QCWg2tehVj)(R@)(M7W+8lE5R@QKBGeWK9aBXthVz%hW`iTb(~Mc zxk!dT$naM&UyS3A4~IX?@Sn`6J7pb}_H2duO@_agQD2V>U!UtSb(Z}>X*0%yf5HAF zuKlv=^*J}1x=WwegIfUC8W-*vw8OL+U0{>zS^N3Y=9e3m{ul*Y^|!2kSF-wjipE~@ zi{PjJo>4!Ev*XIZAGAC7e57yVnU$3au+#s8G{*TlCp^Ar0k1YQs$JR=l-YwlOK5jL z*qVQ0k0&nduXwa6SJU7t{+&?|#PR2aZCM9D^He7MF4n*n{S32Le=-*!fBu_MUzK)C zpAQH5Qww$sPt1LCe9u8Hwuc?d*W=^9WH2*Nj4Sus^B85AEt}LdlSB|oR=^MnD#1g zt(juAM~)$7n3marjxp1V5}{>>q(%4L#cq#x)IX0oqsM;`&Gs7t6;w z_=cm4!|#su`wZvP9!8-g~UYq>4p>uWGJz_o9`S!ePVb9vT@1)u-wGChcU zrf?7K_V2-3=9vKa+oaW_eBwf1gg%D*bsOpR(YRl~ofEpQ|6p>DFE-Cgd5qPPmtwyZ z+8+Gv$B#=F|5re3h8Fis0qtu9lXpUNThA~$p>OReR_~YP)?eSW^&d=YZC3fwYv2i< zhS7~G!w zy&n1kbZ)))w&`Vc?e#x`v)%MO0Zq06o=nCpv(0608Lt(!1RLIF0G8W2VDNC#p-pk zEXaPLl&z8(?~j8msV`QGl9lQGE?Lvx(vQpF7fyqnlK0D*lOnD2|DBi*o?aY&*4giC zoKxvV+FA~-;7s^1&ff_F>8G4`CgxPFg_h;{O9ak zClwT@U&JU*2GRFabtgSsdQO z@eWyv{re?wx!@SD|IT%u%|%@NZOiJRx@w>QrJiXw_a7$xV_tKm%4%ZLM>g=25 zJ)NDJ*QU$*u^7}37l^t7=W(yevd#2O_t7@SSpsGl%;n_0FcaqGf;#`9uR{-=U6JFR zPx1h-$-8#29bLuhXzA0Sp6Mq@TtqVnuJ8Kd@VnWJUBjNwrobfMgK{UsLLXmd_z|Mn;6hGQO~&&__NUKV(xbl|0?t<=m*nR=i0S*p6~xN zEX3w0nY^noAGopDJd@_-vq{HZri10H9Lxxqz60@x$H=_?0Q1`To@JvMd`=(6h%%34 z8+bd*qiNgw!1mr+tp33RzFyd}>^>0QPn`naczdzxmThs+w(FY=TeQ8P{rC zr@*(4?riG{xaDWS<-H63ymRO9D!|P@1Fi{N?U%L>k9DI5+%&igaqZ`O!hBzZc{c(* z|I1nPBQNjth#7mH@Yx)=N^qZ*Wi!!ko%T-qFB?lb@&En%|NQX(=W=iy%Bfk88tFu5 zes8h*p=?8CyZBAhhOjQpgB`gqdalg&dmZ`!^n`3=Yc*~3*`Yf)+ zJCgY951-O|@R5B?>)sr^g-Y-B3(296le*Ify;;%Kot%Ov(3))q`K_*G_{=`@Pjz8`E0$&9kQ=p9at3cY~SvadG%vF0wxA@3NbD#2DDlpKc%CJeZb+o$X^fSvv&)^}pch~B+1O_rkH7r>YQs#u*O zd0m#xyGoe$O)yQr#@d8rWIle%Wcn7N<^8T$eS(@7 zhe)4(cOxXmlXC;?0eggGF~7M0QMvf71bRR84@h0i3z()_Fk4{Gk_^`y?X#x*nOr-# zipR6|0&RUWCo+spgW$SWp1%Ic<3vo~q}4lRTOiWsTw>N?80QMu`6r6i1M)ny7w5ex zglOW->&AE*C$r+-En2pNUT5{VIb0j`#%;pyvwG;+3)@yQpT?{n`cAApH^g+#Sv|C- z>ZS8KQ=S>l2Ds_{c7@L$*|XX7ZNYotFX&I<+AlkzO-lSpyG)nMYOo`TUFvbkdhMt8 zT2QlD$A@eQmAaFLie6Z70Y8PRT;=Zo^cd6gVcuX1mDXk$h2d46X zU25&=%!d{g zsd@G;RV~BPj9DOJe)NE81{3v+wF`a3>bqrIrNeMu&s-%l3#RX&U8YU(&VIB0@q8WT z_l#!^%pw@wo_KA-+i9t(n|XWDA3zVCi81Y_f5M63RDkP#&Mw^s`Q<~L1#GbTX<&Vw zw%Bsu;^$5Cc_uc#PmV0Mf_2^i+jePH$vYd({9>CL zaFn&ntiBF?1bWoIA@9$>1@k%RT!Qm`V4tz4|I4lZ5N+_D%Mt!`?xZE=K`s|aGx&8Sa&!s^kgs2KY)Eqvc~S8&~7qSV0tsV!u!sw*LKXqz29aqGhjmB zz767h3SlwMQ}M6fB%zN7aL;n_F7+W?`|0rN!n-VK+ft@$27L9dUFsCsr;7gCsbZgM z)>zlUwj8=keK9I*E{XGv8{)Ye_kGx31phM0U#x@UFFOBfz^sEgRxTxC_&_V!*>Oq$5hC=m{DFGGrkMTUjNC@Liy8YLAPDk>@#DkdozDvo5R zm}pp}Xk_?ChDAn7H71T!sJy+HRJ=(=MSi?Rg@r}+J!YL0=f_odstQoKt1J!aw3VN*WzEz@0iGUlq%_&>xp^ z|IH(mo9IJ+a3tpDD7haDVo*J}8E?!FpSy^4>Q3U=ZU^21{5?^!s*NmA^}IL?eor~Z zgyid-O#kwbwj|}wfH!+|zIs;jWDNLDAea0N@Y~*;ub!0cm;7UcT!8%2TVVfV@}uv& z-%I(XW7)5b;7`3ZUmYUl`}daP`g9NFc7r!@Y(Cy=h7ZnHq#kDkday6X!OyA6SBJ@V z%0A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 Hn)AcPPTArAro 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

6}2EB9{E2+=Is2@y%X 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 ?v21llL`oj(9WcsLU@a=4% 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⪼mxQL^`vTm9u<0&>VbK(Xd)ICTZR~Gs?050n&_Vs{$`K<_mqc|xpt-!tGd~Xh!REo0wZGiLqhcI(R&%F zG@Z!y>|;JTwI6Xcf0?&_+vCsk^DkxSGV*ihi)wG==gzO-4GFD9N3kbhxxLDxk zr|m@iQu$)t!VhN9AB%3D1o%6LoI|Y8^HqSG?-@5AiYCf8{IGnzmG5=(@pbi->`|CP z7GG08fw@l5mvTPZ6Z8x|IuDSUp-B;Zr#v+YitV36sPmQ;7 zxYG3G-P!%JvwIn>idXUdUqfQnc`B0OBNzRI8VyXEkPeP)xIA3G(!eDqE~=2PeB@2# zc42a-Bpe&@ouO7*y znymfAA3fLL!ha#DC0rUOey)^M?=#$8y6-VlP zy)*apBd+1pTGel6d|0DRR9&Ov1l#p#7R`mu=wA!CLNcRN#kK(|n;Lby5|@$9nM@mm z_SP>{DLGd=?jJH(!u7vrxer@w-bRC3afz~!4G$ykTywqF>+nKt>_*3fOWJsU#8)L^ zEM(dsWLk)^ei3X(dwX0D-R~;segWuy`J%!;M-5OS=kTK(5N#hSpJ@V*7z(Y3xKAp4 zL`kjlzUXW}lLzH+_EzE`|5g!9$>Vw( zMYT@LN*$WNs;IeWW$gcB?_A)cs_w*}fgp**-a(_q7B!)xh03-WMJ0-wfeG9TGe9j? z+ESM;)Z$7jg_%lQD&Pd+b{J(XZSB@=*_Hj*wrsVnYtd58ghv7*gopC7^02}kMqXAS zyfXjq@0>fY5Kz1AZuh~5%zd4E?m546e&_c*zhCJQ!iUX^HKL|%CBvf*A=aH3BjQyX zw711}x5timiS{QaQ=;Azs&%5(^a@@mXpi$%M6SbpEpESoSu^{h8t%_{rEdpiE&yu_ zX2F+b0G0~tl4`-AuN4~qui9OFp5qp*O0iNSL^PXhwGwy2ijRW(x}(avX;d$r-7+si z2b2sQLWU;NxAEYQDINkVk)w?{LXIr51R-%9;FJkp>2t2`!>8kwJ|XH6%N|C?hkKzv zqrB;Hsui;vDQWbaEyKoPkv=Fi>p6Rtx(ZA&dIrYxH=4gX{=m&Z6@Lmhn`gIDO8&_l z*oL@ikpz-&w^*5B-gNi7h#Q2kE^K7x;dTL)a9a&Ez>noRLQ2tahA10dMUO*Fr>`Q` zH=FhVl3C%3@AM}frWBVfKg34xiEgJVXq#otbzb={kCFSFko6^Rl0{UIwcs716U@_2=Fs7wo$aa`KW_&{sI5i9;Z!E$SY!hI=ol6;@& z&_BXVd3{SE{KOy;R^UBPc2c z%f3Ua7#P|r*$RY6g%;~JsEV)hVbnfSvx{9(n zk|9FFWhx@Y2Ky~DeqWhL4`i_tX~LNEaT+_Cp3J;APnk8HdW>E>qjsKFJJfQu71AHk zAK5Q!^^w_3amF8^WXF#b@gZ~g1n1#opl}foycJ3wtdhEd{Sn#%1uUAw`S*;mno!=e41%M2{b$?Em1I# zapdTybkRCw?2!GDwDf-ESBrYD*`?R$sME&6Ds~hlW#&?}1F5v+EOwsdJ96=AF})ux zLs{#_#P&mtM9^VlzzB$i&}S`=Wa&{fkfTL!rnd7{TJ(c2!;f@u&3;|R`Aak?g->~j zn`%v0_+D3gNz9vcykIOLA!!LqG)wg=6)iGJE(AfY*=^E9*+hbct0io=@CJskjif^m zLs%1c0i=}fBC#cz3sR0J%j-Qm@~i!VU^y0p8XNvLqg~^3In?iR3OH0E(_NgnAZY zVl;e$>R;GJdFNrNTUNKf=N41pOwauT#Cj%04<8mK3~N=-p?JFY9NJfY2Fi~qKT!Lg zLnq14bbcP3N9A&qi7H2#;Bs8*9$PqC&C0!uJVL5v0xd0vQ2w!aV6q zDA8@&#ZE@WC6I;unekdu5i%D>bZ2IU;$MdN)I*K%GtxN-;r`^@>9s+j_-8G2tMPAn zoiYVd$Fx7s()D>(m>rRegsok$T(h+fqMrcFo>HdN8)?y={2khp?8=~JHML9N)$OdD zALsetg69RI#4?_XW@i9(v#>hzRoy$C299njcoZi&q*_ZK3X9c$!?{#V3rZv{M|2|tkvt=K67EsAK8%SjSSJSpE8k?8M}iPf*c zH;c!T4P%P@jF+D?vS)D5E4edJWJWH^DLd_blJ$Oc7m4SVb$Nm7W`96RmYW-{QUh=U z!Tm}x!O57seJL=;QA`NEUYx|(aXD8xxi<$C=S!ZCWHpAme{8rS*GJA1S%O6?>oLoa z-CX2v9I)H4uQy>|?-NW6)A44Ti8m|C7Mb~?L2+NUn?nEgI%9J^ite(hSA=yUa?jyVqN0{K(FPlm=ydHG<3X7Z(h2*7 z^f5+G^6TZ~*tT$@_w`oh#gU0Y9!xw1^19e-KRRSy{~lImg;;cJ_e9^MyvlS=(()m) zR32+3gtQxPj@Z+s<-vI>S$R43+QAt~TV9U6c5u5o!(Kc1wB#>GFL5eVyFU67otZ|a zF#>9xVE&^!FDnr?=UP{nOyFF}b^&}F)hIH;0iB^dl(4**n6Jk$ijDT96?+{U?GB<` ziw4hakLVk$!}8nnPcYWr_$L@^Z#*o?(OJ_l)}A!xd=m``p}35Oi#e$~+U%Na0lV&q z%95U_ELS5CTaKX?gFSJ@_i?sU*+Pouw-|8o2k6{@I|Ku651>Kjt7Kak*lti?{vpy~ zs*E3&45cqt={TJLlL0F8(Qra}OJsS-`1kZmv{SSNiDme*GNsjy!~(UmyZU7Haia@x z^JAfG#-r5%yQ$vZG$J-*EBNTEPkfe{d;))$?K7R!YV~!aL7Xt%Hz*#Su!bXdR`Uc~ck*Iv=PV zyu|pg{9Kyl6Gd?ZXJ)J}gnOG!RRIm?_=^F}Km3B#4>n8dxgf^>NQI z<_N6=s`a5nCARb?dO^yKMwp)l9+Z@fO!O`Xt-F7%FFTdaw~QBY6kUZwhKyLKwlTUh zeUGjT^JR1<(cQ;|JgXypU`6~pls!wwckg|nRldW@GyxN5fgPpL3@t9BvcO^6@v?$86&iUPp_Do>u2p%Crd=xVGHav2k zC!0kNoNb#541SVJRuj!P)to5wXI5){AvxN_>!Tn)B1%3WD{|Ht_<~Hi_fM37QRG70 z){*5PNJ2NAWhbSFxOmV>xB|!#@tvOeOi<3B6>Zk8Wndq;6t! zs^OV~h45*gFh(Kr1&Ikc#16di_g^j9Tm~|)SQEu`rYI`>?Fy+e*Rap0p8pX1QsS3V zCCj?V%VKoFn~W7ydH=U0oi10hFyZ{aOFRF|;<-9+k5u~F8>NDrzV^mN`U*QjGj@cw zPWm3&|A#~;ySfS^~XHW__eQ~}4f2A0wMlJKQ}AS6fl(gRlF$7-bDV|F27V2sE5 zE*AVpek0RBje{smaPU~>GfQ1qA60P_w>n>@kaGWkaaAKmAqgocJF&;(rxA*a+XMO> z+=;e2x2h@?!v`B~+Dm*@YDgFRdT}%wZsFI;@2zU^Nz1gE*z9*SE%8W($0IM5upx3C z4(Tmf1M&WRfbm|e6w0c+BV8)+f3N!?L-v7Ce6gNl@yRfQ4?F;r&bfz8@7Iw1Ytl?? z%#WQCFC0!(L~%^aSex901=&;u`4Ai|1P6jI22{H-DvnGbKs02ke#VA zIW%l#D2n%6o;^NH!EogE2egiSm;FWWbN^s2-aC-bLY4igG8TUh_-Et4YlwFa|2!m( zhFZScDFg+1@(_G)@lpPlz%M(0Q4Fj3y2Q5>*BUdiP^~!l2tl!xvQ1Wz<3x6_61SUK zBB4BpOnaeE7&R%dRSLKigsCq(t)(iN!4O3$@r){wo&7qyR?(O>QkBelc{jwnvZldd zu(HVPFYs4kzsI%_A0DusTla_-BOHQ?Na?bg$OS1k*$+NFN`S~v| zNY#qm%7yMn-fDklz6@m@ z&E?BjxK_7Jg-ALqOzyGm;Y&$nq1M4NCV^~=P-PfcwJwSpSEj{}iK=h1`jcWUVbX>W z1*_mF^0Vid8RwS3f#OprZeex9?OhdDx&WDM@GNam50^$-QfooztshDg@}ajHREjd0 zYzy4UCUZYO+0NKc{MR+#rT`2z-)5;nI|sefC7Ewh^1aMAc_BaF6t%M8&=`8b-^F__K8!B&vdjZJvWr`AJ$}A6g38hjgdxLjk>d5BrDT7r&q(0ly%S z0C?|>U(j#8EBuyiR**V_Ur={le!*qg7HIfwy#MmpiPC9RvN<+=Kay4sps6`bW4V!< z!HL~^rDB>loMp?b@LLLh+q4B8zw#%|DKa586KBBL3__D2YC&{SnPeC7)FYS7+9DAqruLLUz6k z*f#3J1GbK`2juf#g)b#^Itg(4Aq`0aETEm8FF6;+jybUW8*}{SW@#UQeQfi1eKK(~ z&RF+O-h58}(tT^@67?1`v5K7qf4Qodzg+mXRBu)bWB9h_FIz))gTAX%lx`2%=`4vR zWn5ZOX;~Z<;KZv&-eTR8biwpPGISO0CMUqjh?A%{*IvqDk4sGPrq?yHf5d1k%3%jx&KI zz|RBeeZ>d)6XEqf;|Khg!D}jz`9FAN`9CJryUZ`~h%11X_8}5Hlqn{w<)rN5dNkeL z)ldJ`@y|~|=s?mXry4mq2Uae2gVjKfrDPU2&y?S@@N3vCRcAq{ud@7%E3Kqa=>8tB zc!U-yn_u(VbHdN5e=S;D`?_muR$P)5Pgv8JRk8f~m`2Us>Ci|8dF*%dxBZ#r`H)MU zjR)?RUfJh}_^RTgX7jf(3|T1ur;kS-bWf20@;!j=FDTE4;tQ3`@!u1EQwW+Iia)0K zHgb=Cg=FB{$+{}pKG%q>SRuh#9#aBS`l}*f$99vzTBSpsvMng-gGu|6nSt5rSE6?6!lGqGbB|9HyWHXpH zN1rikn?~LI37C9k|KFb!*)eGPpw!BjH!vqZGGe>r7xYaVv<>X zXjD9e9=dw9RepSwU9oC-e8!3??(MSd?a(R=XN_IN4AUYbQ%YW;nc0r!Mnt+-+`q*u z)S^ijm#k<6!&NU=n5vg6BveP|14D+^r?YR)T&CXS^Q3ESj{a0S+fU?)P`p7cwBhQl zDpgPQ29>jQzPf2<$XJg4U60H+)X0!w^jsq&1JP-FSL*hzJbQZ?kH{)1#juRcwv_e0 zIr4QqEaacpjb&s)NGhU_3dbvsX9pE1O)Om#w#43e`*0$Te&e)$`?ImTl^boyYYY& zka0Uh=ex4wmM${71r=#t__pc}y?I;p2K-%RC)QekqQGHkncma@G;8AIT)T|1qtJtb8gwT!td+K`XEV7pg zA4LLPZ8gkAmi(=kyE-I%IPttFv|Q_*@DZv5Vj9%yQL*nm`%fh3O?(;ssdAbOB^LYS zB^^Tm30lg0mof#l?2=ZhZJP3Mx_X$8BeX#YU(eT3NnYt9e4l(g&s-?^3;WH>B`8db z62unRZ!lM%X}@_F`Rk0ib7my@oc&qJUuFDe<5`MO$)(mxops(YZBFTu@2Y>v$G4Oh z^8B8XUS0i5!S0rZ?yL#pKnTE(qXz4=u7`(`2Drcw}JrVSPW!sRN66=Qwo0( zVn?%3$|^YZ(fktWdRr(D^3SUK1+%t$5xg6emQhfAR}skb^22}qd=)*Yny;<;3^V@|6snJOTYgo&)4^b?|)VBOLe5q zdetP^3&W5{`M;+5_gA%E{& zxDxb0)0>g;$`?moRJnc>`**VLEE4aaFkjC5)|ck_8=u5Jm@Kgm&cfasGo{E(iexdi zW4y#HKU2CXOP)(Nxzu@2As;ilBXw3xoKo_{d*f;rD=`PqEm3b}q1PFG)S-{`O>v{dD5@py%wmOt}T*+sy zy$E8BI4AVFi2yx?^Ys=C`vrVZgDb6M@j3_J0c!=H0q@!zex3uLiC?nz-SGK8BCnj3 z&H?KsCl_&Y4zynEmYk_e7R}GTd3hc4sfx!Rj+buM_#L+M@laiOg%T4?wQuGF9chWC zAz7H|c(E(VEvnT(o_qeXmvW*Z;&iZ%CG{C&B92@CqAujd{6LEuz9Pq z^)Jt-ljO;j4ZNe3iGdug$^i9f~OaG?x@dP(xVK}G$%_^pF?xHA*ZGKVg1YiHx!s}AVMFEEi zyz=Zof&ar_WIg*Urymjm#P#$RaXRnmKr~3jtyj(gJrmDN5)f)Tg^CoZ2zpyXG3x%N z7skF;G41$2_z9l7 z{C}~QU9exR0z`S#*ni3FVhq2x7{iNJ(qjMk|GoM*QaqlO+T`sy|2yH6__@*vNdN>1 zh?gVE__DZa+yZ*MV#G!G=nS{{2`B25$9JkzjgRa{92p<;Qi%ktEmYv{&jqZ-@P0%b zzQxsHwjjW{oZqtk^I09wV@k*KUgh(1=zBg^r0;q84BiEL4aa4`_dva~fY80JqX^ zj8Qgf*WRCn?SDvrROJq%;gJ3$3rR>s=wpsyo`VL=%x`3_Hkc{|7%(8WhR9 zyF2P2cQMRoh2LL=Jy2Sx^lgXr$$Qhc>9^3g$y?{rw@JY>^=;~IPT!W-7yNTEEp6~g z!T*Dw-Y->PUpO25bg0Mz`^^8rj|udi=3mZ^AQ63YL|E*61(IzEsuc%f}M~msNgtI6BWJhFH{`~(V^nH=5itRCH)AzCSPrM}aF+hrjYPK>Z_TrsH?I1>XWju(C&7dzM6pEnyZk$ z`l7xXs;|C(t$JqatJGEMYOub#sh_$Uq_0ksn}u4g*H;D^VYsT%SJnFJWBO{yZ`3oN zzWVO7>gsZRHTOAn)k|O9-9vrhLVb00g}SQHR~L|BmoJ>hl?Ke{SbLX9w^(~=^y6_A z>w}1eL*1}AIC?Lz*PF2!CkS73OXBO9*l~}2d}c0QVXP`2BJN(+fWXpG{5sFh*HI~T zXxdzeon&&iBxWJhSfd23{%&J=i!hg4%;cdeLK>My@PvwJ)Rqlan8^n#Y%T~^n8^n# zY?dH|e^Ri*9pBH%oAa3U3E-az9U(39i->y?xe=rP0xn z{{W^V-d*zC;O<>7 zFx^#zVCsE&VVG_m@An&g)EWJ4H*UO)L@rudE;N@qDe|9oC>J7cjlEV9+~Uj4zN+h; z)s_m6B;mM!d6~on&BZ;`;kYGIqw@z_VuH4@yhtSl%ZucL4NEL~V$4fUSYjuR@e$5V zLd_F@DdVMcBe*1(*aCJ>o3+l@f_!OM@s}o2X<+FW_)RY?5EdRf%^mUaAFIONzrYpE zOHCtUktAT?a~?^mz!%FT)scJ_S&bC5Dk}JHikn?0`*aQ^%IL?^s?n2vU7C{IP460* zLAlrEria`Jgt6Yc}{-<4It(jg+8aWyJD@c`-y7S(kRF9nvCQ`DJ0 z*PYkWo`R|7T+zVFN;u~ok#bR71bubs{yO0Gzpr9lXQs7C6e+Adbsv%+FF!2zNmZ1f zs?9+k)POl8$xMR29);PXru|9Tqi!a!uza`E>`}yX?vOp|E7uVUgLV_Pb*J+M_oA;{ zjNyWata56(_iN;05EpI)>k$YpDoC}YQoi0wB$RQ05U8@$5G8qxZy*6s-Tcb~B|9;z z&0Eg-ALE;%`RT#?AzQ+A#Af(vN+PvX@stdWL{TlQg6&?}T4XlG$M|ZT75&^=R*IS} zp~f^6&qmxQt`bPkV&=U0DIGuiM-;<0DJjd?8-GFqR;Umo6}Rc<_w$^&B0E7!B6k+l zR9N_LN$emk|0JboNr$Qe?$c|tpTfAQw&6!)Avhx2Kz}i^J(DIA=L}z8iO6NDh+O%{ zGe4>8KLQj~W5qm5cl)}p@3i#u4IQ4>xX)j3pa0T*UL_x)$8QNF_ISZwrp8B!H&tOg z6Y}+#*TT>f+dAZ{GA9IxL)&LzmVKc>4DCMS*J5sW{i@|&0i@g=^7pD)XY|C zDSG!R#5s*8CSO#s-25AF8sn>oUJRHXY66yK+!HT}?eeH}h61~H)Xj2PM6V)}#nJRc zP;d1I3#(*afO^BF%IBoCtD}>6Y$`K5qI=~LH=f0qBluFPU=}JB`yaRf=cXh{OPNlx zr}2K3ioJp~>>FI=4{2lA!#IOJ0~~K;5+S&pqupJ=s>T72c%Y2NK70!cyT9=!pcDm+ z+QH?7vvsb}LWQh%r$^HK^NX4vRL%bk&3A5zxhdfS>8mKW=aRy1PFCeUDdjH7mLs** zS<t{&A_|NJ3!^@zUuV{dh}P+zV5 z32m~w{Xc!RMPDt_S1En|5>?WD@AJP+Wm=wiK;dUd7g2coHC-46|RMQ+se zFrTkZS!5>6l`hHh`OpCA8{D0JQgG=!7?PvuFXY&VRmp>0X78oVL{i*a5J^#RhbXc- z{nCvt?nv0g_GqWLlZ;$i+`k?J*5vaq9d+|X#))_-Q9LsX=F!p6gx_kwX9)THBk8#Y zz^H`pR-uPv&1>+@;=W3sH%0y8FfkLggZiygzcuQ&O8wH#nG*9kqhdY_6DH%u2c2;M zOlOH#fZZ*ttVv2qS?H|fJ{|74-RXvBn|SK#xUtBjoaTT&?)d0Fd#rMgUiVnS(QIz;wQ`hyvgc*1 z+=~ycGwlYS_(U7tE{1ow*YMs}Wq3bJI*P}Xx2(}~p|4G<={eu$sAGfs>H{(^^0q{* zF}#CGGc$ZFuTSFj=|;cD)UFz%-$GxVJnuK(SEG&%zABDp{DD^Y^(VMw3aM?P9KXGY z`y3y6N+18RQ5|PKrb0}>?JV@oQ*X?i@0+eq8hn#D2|UjaU0dRNij(x9+3mv813!v4NW*xwaU*8M2r1L*GH(MKS;!Qhw)qS(v0D@TB%LHmt>eV{}C zS1Ry*0JsrfSz@4nXeHDwW!f#zy(IL)c(RG?Dt!{Avud44&qO^*Ko10KcTHWDitxP! z!oc;i^hz5@)OWR;lKamyYu}niMEgN(*&W2jV$*oM*?6Q00d*rqy4cOhLlikSt&;qW zJ{+Cf{29x5ys^%Bq?s}q%6I~HV<73AXAz3~Vo7^4DqfMqI7qQ%z<8ul!V8nK#-RvX zbEjQWZ>K`!cnQZVn+VcuJibQC;L;MXQ-njNnj_OH&G-P{$auv%qMsX&ujXT`C~=gb zN$%^)c3&c=cd^RbJdI}gVUh;t)~Q_pkkto#%$_u6Ph`@oM~kv20&R6?mOderJ(t9? zSHGRCZi48CDJ%c7ArfUu?m1;9bOLXO$1G!C>?84Xv0 zMMU4)Ez#5cNdlu=$>X<5bO+)Ptg(ph!08%^b1V6;)8EL;kMK&ZL4LLoCV_y?YFGNi zorh&}djFmB8+o-#4l`b5JwAKj09|S(rL5R;LI!M)K4TFfpD4nAQ#{{B#{0h(u6}7` zoHxSNuY}7FjhyCrP)gCj z>DdPUdtn1}>j4dW%?wws8yTPc>ZEY>%i;2OM%tXZ4csLS>_G!lF-8n{(LNHL>fQZW z_$_=*=7F^BvDX&4XNzBz*&_FryxPdwS^WcLe}A^@OkFnH;>UH1jRsQAv$=g1)nM;_ zT76A5d5L;4+iHE~HhfE}iI?tLa1>$B6M>m^(OuLORnAc|pryV;bt0jUC%t8z(U&|! zM&FRH#^^i7$K^P3G4%W#q~=p(J{m#hqptGmBr_hU6A=YrYjB<6^%!0OiDvH05z=i*6?#%6+gp8UhX1G&NCjC z9OHpo;AYbkWxmgGpG-SN|jFun1K68kCX^4Dj zhyM}Xe-YF(;3g@J;JCDDSlKbw{ zq#5wuStFdmkK-LlejM+o$&cf`bGiWf33&xT zKdO%Nee=|@!8e^F*^ydlkW^99Q#Inj1zhv)LyPqBdr#@(j~Y2jiw^Uev}l()&iA#d zV}q}eW56A_r+sDAmL`R+9WV{0Ics-=~J1HmQ zHTa)pyv*1#Uma)%zxFJ1U2&9`aitT=Ou1ZI2G{EzN4v*5_gLc|tK6g4J(jq~!%`LR z?{bf=?y=E5KE+XnaTev}pTuCC$GODClvb(L5lFU3eH|Ca$9zlWHskPwIue&n9UI&# z^lHi5-Yewo06e<|&;Chx_RlDuy+rN<_rvlUJo_$ngj3Wbwbs@#mKn@aMmjRyX{d-)zyp zHU^!Ouqbe)E~nIJT_TJj-2^~B}; zow^7@r-i0>nrZY5nm#2<)6ohK<|WU&({#%oO2Oh8O2Vx>Yxt3+tEVhtJf{RVjwQ?b8fIp;l|teiGMo3&i$RQL3vd&%3y_Yz##c0R@C2euA_Mh(qU_mrH*()HD+f>!fyhNTSRjqmo$IqVJ6HwPF8Q z$9RqLHFDOX&JLr`SSPoZa-s&(v5?LX_CkrzAhnN%UmW9mijy)q*~Q6NIeCJU(Q>lY zOe|QWJ~_s>$n5s0`}J1Iet41g#}MU6ti7kvupKQrxpy00q>y!YyCS!`k-Z0^WC{5( z2DO;Uwp+>0XdT;(Tr>4DVdR}qV$h9N?J?uQ$EEt4#`%^SG5HeNO2YP`qe)Ms_sIC5 zv{l_aJl_9csQQgi`RUUA8uE+kBE;sjmuKg@c88RGO9GoUmk9AiXE5mcgLfvQ;Vrl=s~uBbE;S@ zQaw=7NZ`UoErucFu2r&_eETWs2#qeLR}x`u%%Q__=zU1UG2cP?oqP}#<5_kjBax{> zGbv=nR+ffq_eYn8N##ifvpFdihQj`Z65lihmLw1y<2!76PFS_AMofgo&`mRZjniiM z4_NjA1w|`fd5AuTSwv9QU5|oWQ0Os5~@u1qVeej$+ zwxtZ%YntWC&Rn9( zW@p>a+}YM}ISone6RWt)m~XiotN?T7a4)qRa$&dV zc=1q-F0=PAGS~+86xaq_fA=xBm{|kCEsVMt*Tg_@BKkTP#l|(lJ+|aO7Wn}BsUCwG zand26XY_42o?|=BOE=0g^aZ|e#bb3G(DsoDo`@^ruMe$i3xAkDyYjf1n5pBr<6dq} z&V%qC$ShR0xXG{vEAc z&Qv#Na#OP7N#4JgB?xJSSzWm{Yu^wa>!$!O_PWPBMp*f6dglOb*_bYjFTPx_J~V2z zT7AeGm0Rz?pvqJHj5`Hwxp!i_LZIESkcqI$*P@!lSlk z10W8PEYF1OkG`HYC4D|{r{qC9LqB1Dhzjgh6P+!_@AmljO@?F6#``~F#UGN9VLT*^ z;*2Bsm-S9e&5#_=ehdGyCO&L5EaTTLXij*GtaunukF-I=#d{%HzJcLZ>hCIiwc1Ht z$=uRxo)%WW8yl-qvrSGK88Ykxs;b&w`rQ}oT&JR zSdz@<+f=&SZ5a|e23`=JIb=L}+)5tmBPwHPEOy`L6fLw@IaLq!frT2Dfq+*CqYT%G zgFx~8(HZYiBX4>Gy>!MkOoS4?QY*HCMBL5>2Qpe?k3A5dD90|y*T5<>%_7jxdb-ESM@9+9Nol;f+>(`O;=%+ zE;}#pHaJ+?u~dvi&I1$0Z4gD6%$l<@s73m(HdQ&shA>tQ_%#Fwr5XGq*@Sc6j8~cQ zIWpNazmk*h3hgh#${Gz%^Xr!VuNCiP)`|_L(EieYULdxTM366Q8_e&q!K{R#KHY8F z-~9z-1OaTp5CoJo7&e}K$4VaTQ=hnti5sv8aD1p$49ABBDPb<73BkF&$jq z@Dj#My|z%)j{a0#p*buD`2EG7NIC!XP$nZi`Y7*e zJ);bc>d$Q*%YK!z`CdGz-^jK;+f9K)ua0ltz?-St!1p43w3ZcHLlcw*G^khmdX{^9 zj~*5bL~K|Pv@tQx*ua8+MIdn-;5dQpZ6ox04LDIY5G9i7BoU6mPV2B2=uJn*@ib0-O9MQza0p;lRPbw1XYTA4g|{A*OzY@lBn3p;{Qt)f1L)EEU2>f zD-2=nKOz_+YyZ)Dn~yt)$~%;dOCsWF7YvVAH2QZSdTuZtSw13Bafzh5MxGAUu9^0M zV(B$dzJmf&-2zzSR4q~v0k(Imxhb7|y-V!%(x58$wUB2+L0yRCr3ljwMn;6`U1fpt ztyK1_TxEZddMMzKr~_1X3m&Hui~xYSpea8a7j0 z_+8|K)A0RGBjdjIaP`|(`R0+fuU+mUhjMpfds+52r&=UvLmpk|zOVYHh0zZpaf_Wb zFO05J>>wDDr{79GIIZN*ai^77;AKC-Kn4b{Cb5?i1^da@sG%brp>9`M-W!`IcD#VMwTI(cU!bM^>ivVj_G7Agr)jJmPw%l8?Lx}Y`#n$ZmGnc$3Z;8D+j0?cy77^U%{1M7oz`JA> zo9?lQe|*#@%xTb9BWp@uVIHfr1vTfy(=V&=&*mr0@sEY}fq$nFM#GcR6xWpSpTI!w zfD;r4p5^bwfrsrbj|R(Ig?Wr^&9L!>UYDiIn)#*GK=62}C_KGJOy&owMrH03RpUUp z@SZPojI9y4|6xxsCrrkqju&+m-4^$E3tr#Lby>z}cugum^H(K)xK~&c<|{jkDB+L2 z_5%8|l62pK^zv8Hq6>X^~T^e!G0~ldGiOQWkb4+1SVcMtEVkupO~)-Y-ph_{BVvdZ=P?P zOIz<8{LS(MSCX?lX*}=<-9s?>$k8_ncYoB=g22)>{5pH@I4zwgfAkPl^l8Q6q11OC z<66)OkL!r9P6RqLEc%DNyk?=HJhl_PlDK#GN)J-{#Jk^VJddw+jrayycfY)qVrEz6 zalOwOOKv@I>hWu1Z24M;N;rGf|q1m&JBp@tlHeuLT>9 zBkOvOScw52G)dlupdM>KFJk+Tq5_Ow$a4G9;`Ps7e>CZhc!P<+E_;1!AJE(%z#**P z@xZ(pmz)ewAS@>1tG8*vrZi9c5k6LJ%md@`Ey}0qA$Qn+$3!ymq>>3zBW6*xXt)-r zGBcs<74ooe;CX7KdrYMC2h7Y%=1r545n}gIfjG)upeI(eU+PtXg4l1ApV(VJk~}hE z%@S~DXWvrF7|%EKKg_tx>M9O{4UNXUQofP5)5qtRPEp+;$tK@6ybYzoyCXi73S)}& zQ94>3A1jsRS&YoHq+Gu-z9~k(5b2=%;VcSITq-s+%MRB`71Px#^GoNc6540kiFwoxIcq3wq%0@%OI!8H!qQ!CEr;D&B+bpt z+b79yc&z-^o3ejnP8H8{(1B(0jdp(gKp}`yKcK|1t^Z@8AWMrVlt=?$rmW7i7rHo5T88LdhWFH%vMQwWGUe^j>9k*1CVjN*+nM&k zGW-HUWjF?mDMNN2S2n%#slKqRRlW1w>{Kt4fsmX_#crGA-?@z|kOZ&@Fn@eZ?>A2abarST{J3}I{vmXGgJk91d5?UU^_v-f~rGlg~4 z!j-+QXnO+!R+b->2|Y*}$jQP%x^J%1-dPlk6hDG)n>_fy;!w&O4C;HmZf zXv$4t24NI4&Q}u{DC}d--5l{!W0MHtNP*;H-F;k^_prUrd1bzb3EYfbT~>FeSzWHe zK#r>KX|^Q`^Er@hk%~1k=G^f%E>4driAU|{xjn!RrP*)p61)))Q8xJvh7gDkO^1CQ zxcuQjBmOhE&z!MuqvueRvLjK-ej26hohW79Z63-A@Z8>(%CEub`OqTTVDwZjeMZk8 zHA;)JyFHW_gt#ZMhqvA7`duhr;_HF}cZv9uQ`zv)aU$ojehJ9LsA=0ImQnkq;<}f zG+Wr+A9729Oe8Mgh8|1+k{OLZ05?RhJ%ziO(N+4I3Fr;R$Ct*Z^mo1xXHOdi*cF;_ z-p;5!Oe2e4E2v3T&9>O0dZw#-E|q!^g}wj_E?aXi4B0pRmf=CrliS0&jc_&3c_ZWB z@q*Zc{70X|*BRN0Fc~Gzw}-Rac`MUjz;gx&i{$mbYS7`dEP)?Zr(pc=O0C480ouZt z=sf_dlu2btrz&zjC;pArvA5IR_p(!WbTW-hAqpY;~&pQ-B~j5InEiuLoyk< zXK!*Hws927MpJKh$9|yfWvvUwr>L>N439zg&FRilr`cVo8X(4pcGRDu@~gt>vY=8P z6xAd%aSIZZyoix_Rk+{5aP8i(G34z~tz$HtQmh|R-|)mBwk0bM&aG4Wl%!sl2MW@X z;0E}9bZ;Si^#uDe9dr7b?gW$Rlbc}LT~{^Eb2|YJb2q>X)aPvHP44t2U{M+%mMCI?`SVqtQbxZhM@z zuk65#ZHkoM zq$AuY!nt2o0FX`S^Ir9OcZuTBEsj5J52;61!3{t{H3_{e3xq5TECY496-#jyflq%5 z*UXcl#C1bVcIr1qu$6vuV1{Ylh%h}=bWTL1nPw`emg;ijv*pGXm!pi= z+4X>`t14TjmnwrPz88OG&rhOBY`dmSWuFV&nd(E0?AIieQ^R4N!o?+geqbh-7ulUTdCQR!L46e7{SB?7e3O2vjP5Yqb0W?^=w>u~P9xoZsonuq~ z!27ZWCBD>X9eb6HsdbSLgrt~oIL;=DDZ-_=w0372rR9-lZ>Znv8U({c0XGb_4GSbc z-2=_T>L>-$pRAkOM;m|7<8{W^8K7QgiP~z$b~T!wRk7D^l_4?$_MKzhmW}6=xzSJ~ zwY<<@T3I&*9P8l`MIqD}|9VA`$PRH&Fm9E){wG1-GGSc~i?yLG{(*XXW&G2n0srax z>X-Npcvc2HFA;zSW&9J&F=1I+1Id+L>+QAm{uTArZ}KZ93rFRF9ph^Wcs2(-rvk|p z-Glc2pnpxUdJn&%%-`i{3VNE7O+DfxE5yLDwcg%S@82J1W>jzFB;Z+7?^zQ_HeFwxEUd}uE&7D^L>_7?w^VD%wCgw_fSwC?Bmzd z`dh^xiI4OJJZl5? zi!^<4C!dNB?aQl+AuNt{QjDH4`4ps;bTJw1UxJF zO3;?hC~#Kqi;o=0#~<~qk)Czz*T_LUdkP@tzfvv`v^NB+cb6Zp_q-z`IeX;~zW%^x z^~W|;Zvckn0z-TW=o{lUdxbm?+Nogm2EK|H`k|nd*jK)u!An$paCTA(B$MSB2!qx8 zrK{zKs@Ioqsi$-NpWP(SZ5em^dV#$@s9M1WV_X*KW?=(1RoI9Y<)MVNNbp^`GM)AH9?xQGNiOHmkYi zKjA--{Y1dClTX-ub&r1yP2vlxNi@fh*0$JdRFeiLdiR;VT)vQ8-nHut-(p(jU*q2{ zy;gUd%lX37_I6s7ubryvJ=c-P{EN#1Z%?WlL#|j)H}QbYrjeaknmK76ZHz1*@lS{wF<{hLDeu&R*#w|#^5a@SqD z8W-KgP5AC?vo@qG|F)2Q2Xe`%UTh5r`B$3uy>QptLK1Rv6vFW)(~pDV{7Jkadq);4%uItB)cR0?}Y4or^rqyf2)vVDDN;-UqPIZ{IvV~B1VK{ z%7pzJLiWSLj9dQ3kUe)1XR4(?eu6Vo+VJF4oQ3=-FCLcOoBma%{hLO04`=4@x2Su# zrTw^-v#_-5H(NQg{LLZzg2M7}MxVAi)hxK34kkfN0} z7W%H_>!m}CXL?^sB)*zq^C~Y*-H9_%Zbm88Dv(!WZz46XC5Vz%l@V!llC(P9JalI&U=KJabhkVD2`mZ>d}Ci=3Hu z*8qW<W4~8(w8{z^i~y&ydrzQv`SR~Gu^8Q0C_e#_9iex zV{kGQ|5BM{tPRC)u#9z~_*am$C7zpj;KB%tTlPo0dH~F=a=(|{XWqXhx=%yy`}c1FUrd%vTvUbP%*zb&n&>`~``Ds|8{Dp2EI)x^i0rYuHtbJ^uEmd3 zp8L0$poxFI_}Xt^|Il&EK4G!LBkXUITlPtOGrL><X+__X$a_cz(zKwk;h0DDbrWD@@}>)BmEtrcS`dvY^1Z)dO_6 ziFbu)%Wx6}R9+{^?U4USADxt7{=T(unag!qZq;SO@ZEE zfwPJORuakis)qlI$p;3 zDW!$ob=45V^E>dcBz37888#wT`a+3&sFskz$GuapR{m$Iw7;t*FPnZwU*dWl%;4s} zg4Q?Fi;QvKcBS+9HI;E$Hub_0iPAx4?bfeN!yV=(t9He-zn2B~gwU7Ro~{y%GMTl{ z1&n6~RMgcB=pid$W=-@^s9zfr=c)U~Yk7?4r4==$Jvas{JT<`{9(C4*vo7kaD`#C% z^RUlseRM;*pHi=splYBOZ$XR)&{bW8GUdrafX{?6(mv zOClda!%~O)7OK%ehCPFan`7z$&*Cwe3TPfa9Tv@CkS_rFXU6pK2Ck{}S(z1qdAFC; zjOkH_S5r7KC6j54?J^?eICy!eC%TE3<`~i}^#w3i(8$YIgjM&ZyGmFSH8BL6gYj=x z1dR38?DmohK=r^e8la*yvUyWX02`R?cn6(4UZmPOO#mCLrNmU#*Krh_VGd<|jT%m_y&)e4Q74i(- zKTgbYrX0wm7jy+gA^fH}d-q|6*l75cj5Crb9UlQ0Lb9As_Vvxqf994nhP7&cQU8X} zzad`h+ESlo*VC^dy)4$GGA?jBUJ2?6`pF{FZrt}<86V7DvJ6(4{nixpj#tFwa~pGt zkM9&OKLyHG0Lfql?Qd3?&(bNZOBjw5l^+04yi8Ht&#$BxIHehL{!R4&e}Lm$tmPtg zk{=YiZ*vg1qWZrUm0jH^0BF^o#)U6w*1pW4DO|gf3#)dsxT1yRqRFZ~#YJ;{!-nXO z>Z*=Je^6I-BD&CAdYA^td=6C~4%$cX8}x4!{s!-y(n=g!E<$bAf|4k7F&-(wi|UL! zl15LCW~|98d)>B(etb@dO48#^LPOZAjAv$C%RC=608hE=O6qE6Tw8~a0-cE5TEI^U zK12i`22=#*MJ}LRq(>e5+B>-$YwW_;+M{c2g;t8eK4X#Y9RJ@j3-SN?JpLas=KkEp z|Hl>npEMKqf&Fu{*zXO+f1|N~ZUOd>8W?*)A-OCVy;xA00Px3w%qwa#k%{2UML-y_ zDt9I5&$n{xYlW-?b`$Wr$Xi#lJ}~cFB{iXoWKFOVlM2@a%XXscWlcCBCI&v4{a(5& zQM+CIH)o#~j4&P${i0(2vKSBAkCW9+uLgquf-wV&{T;*hn;4mLn94g%f~Vr63D(@T zfT*kDZ^$IB;y!DUUJn8+2)Kp`!hGDaOZ#&!2=j3eCfFZRy3*^mEBd^=TP9HiL3t}t z`tfk0e}7T-aZh2nf}k;1#qjnVv^;Ny?Ki^q+k&+)G|~fBtt@swFP&7_w?{1}Zs*Em zL8y}X>*6;{!dr#ywaz?Ym)wp9Dct7T1@jx4QF^;88ScF=m&zLMHb3P&n{{@ZkumghzC_Jyb zMo?eSK8Nwy^%kFG&2fO{b=L^y3)X}19d3i{>WRYmHD|~8B77eR?_{xK);<@$-{Io> zD2{j=m*|#Z(_p(gWs?M>zZ)7OuI-_9^Xquz;3*-Q+f#U!n9v zDsroV;ymsL1WIqOSigKct!qCk$GPR5!vFyvrE_nGkc-c!KDxYS5mE~EF zxfK*`uCqMrAgADFqgo9@wI>8m!|YFdgjg%o8m>K|Deqf~^2!C2wK$ltA%6Di96zff!xerG;0r7}20p`ukegDmZ$oa~xGuGIG64NPiwt zvB$9~MDvC&qV{t3?hr(623J8;^Ty)TQc$jcLDPBR&mJeb2pv~_}pUKfGoGdToC zZ9(}CSgbzdVylb09gz0%bT{>);OXo?2=az-v*~3tECMB%OUT;n6%{N{6!!$*%e0~e za;YJ!1B;MeLiz^L=X zPE?YT@HWKI0c!z?Xbs4v9#mcvHR-nVG~*tY0z1=+t*gzN*;e_xF3XAt8- z*SgpqDAMu^ zu~MK$+%@kg^{MLE{1vIjL(^;AAq1!&Ke4u|$OpJpCAau8KjKN<`)IN(`a@S=0dvv? zbx5fjGv%<+x72r+aj!J;j&4^h#b3m@S2bI1AG#p?oZOkoW3DcKc$vE5xmLLT_~c1Z zk(P8Z=G?}FRC-rq&X+iCj)`Xa1N_Mcv>#p1t`g)`H5I=lB9n1dCy&Mlepe&VOZ?5h z-nkEt9oPGDv?S%2BHoScCz?o6*{`UHtMlE-)cj06LWX!~AEFM`i7EVUxXYNjv5cQ1 zy(E~-UBR% z^hNLQQ%}dMM(lOGG=le4(B)}csR781b}J=ZjQ*4~;JAEB8ldjVrzDOT-=3*n;I~Hg znh%y<4QF0OD8tl+u%0+XJzpZIj$g#!(_H~kw;ucDa6!ZGyOyLsUif_KAC!vuhi}N? zg3Vm9yDHJ`hh*d8`ssT)*l}eXuwzoEd=cNVn0U$%iB?zu{%a2u9B5=dcc68mgOd4w zg8APY+EO(CAEi9HC>%Dxf>1)GLWs{5hTmw(G{R@8bESetsl7e(9cfBDR!~5li=!gy zYl;xG@2sU{QdH@wkSnD~o*UXpY<1 zLFbEiD^}pV9KHyq%vWVO`SYU8O`uFhqs*^pi$a+xw1Xjaem_Z}OoRL7EY^U%3Kico z*6>0R*4%`yxC#j*RnY-!Do!Y@d3mqGnvq1QOXCNd$Erc3lLbq@xJO~lkGM)>Lh1HJ z(tUw7_fID47re$;HQ|c!hdIz4k@38xf;Hm3&*4mjDZr7~n|%pYNCXP-%$U1`*TfTl zDX;Ml6GH7=!9ip0BkIY^aFJ+LBYhMyh_kU6DDAb*H!v~5nV^G#S8Mnpg-yExiAl6~ zvC~*W-lV#4;{OR=r$-U^qBIbHNTJ#4Oww2#u+@dqdkTu7g$vueGOeU!*SP4}nrSgw z0=Bvgc}|D>ou*#HcyJ;0vKW?B;jSz{>^uH_z}^{{z3=d?T*V)h^+SBeu9j^H5Ap@S z3Y=S8-zWPt^<{>qh(1fve!!}$vl7p%#Vr8`q&#nP?<*w_8cin=>;nc8o@fBM1JKbpy$Sg}N5|TTR9Kk@ zWk{5Bwm62Z=zGQhi$C71o1>erWaQ?|r)@7>&X4oOp`-~Rme{vUdpTjC>{ZXPUY0!D zho1m(NM+04YNuv6g<@@)$Q`JpObKE18ewcR8K?V*KB85xR73yTa~DdDf21(?aIR-< zd`%k(?o6Gw`sfuqFc-V~b$d5m$y(km&4G4PxpLJj*p9GvwDK8n-r*^=bs4+dOx%3e z{5LYrAAy8(aBw~|iMBZ4tY^$={w(R!^tJR?=yEn+`U|)4A=eM#s6<3YaqHaRb}Tx= zd29%Mw3o9Nysb2{G1k^25{$K76$PQL>;929G7IPqI<7K#D?m}85&c-~rc&(FiJQ0d zp+LB61N=cj>3^V1jq5cp9Ad zhO?B<;Jw;RMPMH4@Gr$~{x#)JNBs*Fe6$z1ouZSy888|1==FivAYW-@XId#JbN2W6 z&EMcn*U^2H?sg_xt_$x;_YkS7-zuio%I@d2ctzuK0;)xmm7U+5hNj64Rg%aIfylr1bZP<4FKhjC7 zwos_K-pg-EAU>=Li-8%x76(#vkcdo29J@_d_N1x|?_8z}auv^xWA$;K8=$LMz+)>h z3UkFxDskC<9)>Ymf9#;V9*Jb{XWzTQ|Iv$zT5T8<`jI!Ixbs@SC9P0e+o7eDHLJFRSesTdrqdEJOKTC;(uOyaO(ALVb&M56NBvq@-6W` z{}i9IJclyNEjHlTyL3E1)y?#c@)k^!2_db6_;h@=mue|gj?FD^IXB+iM^j8Z@ptI1 z%#{ve2SDH080jweycsVOwi79%2>vbfz{KqVl^UB>2>0a%^%tB$uvu9ZYX zvE!M@-vsTKI5|BNv-$-${ZgWN{2_~dG6@4qQ~ah(hK!Qf%*s^WJuz}kzyESGUQWJa z+@(}_vR;YN8SvO{B_5?LRYrr0w z!_27)yGh8}(K=%xUTIs*euu0?&_|%6=BXE=bn5>uYIWFh98=>Bp2F`eZkGUU4oZwBz5QVz0%MBWBLOtfP)O6V9v zN?w$D=w`P%63=$fy&KkR-dtWXyNYuI z4VXeeSksdRy5E72hYM^LFRTW=+Jq$o+npqgWSVn%al&gNDLxKUXI0 z#;-+hMD;40;z5ZN%E~3XnAiss@?d0?_rz~NcF4H3=>1OW`G? zXqX2RXeO5VX34jdlt!A4dj<-hY&6`X9$s+WzZHQ8F&F?`O}|oN+GC_;*VO9tZ6Wa; z+P#aRMy1(A1X&cB*BnNXc@1)2V5VBV|$&zaU5JKwV_&Wv43=&52!T8q^Gh_vU5UZtWjL*D(R90S<5uUM*aF#cN(?Ty=X1?j%z(lZ@ zKP#&zoIfhW^#;=76+By0d%0K9as5u&N$*1UI$Ji@)+% ziD8h3()Be=~y@ITOOltQAcgDiQL4d*zs&-PD3Py`k193;l+-T>D zcQpCC8Ngz*x&`i=&9#GPMLyQ<0kUR%kWX8(hbJmNhJuulYcHGH4^tK~R}WkL8p9rE zc%t+M_;@2GR3y}|J>)q^Zbc(@NG3b*X3>L{2P^h=C5DU0Go?nbW-wt_nv@IXy6Bss ze#l<9U=FeRtz!pZt%w8APNm<+FRJV`R@w7Ca@Ht5$L#kZZXcWZEzR)h*;wd|52i_l-|Hk=mv?xKIWRk zRM09niSl$PN%$vj@mqS0CLo8S*xA{B{Rv1C+2(phQ0%YLb+$o~JfV2$4IzKf@5x$) z4k~Z7NB%!^?*blGb@qK{NPt9w6BHE`YocQf)z(nak^(lP0rtQQMnR?4*0e#z)(XM| zup$Xg0H@<9wODOyEq%0V``DH~wTkD2QvxakP)<=fsIZ4o383+OuGW(BoFR1%`JM^i9EkmZEvUu&aD5;$y*SG|x1ppVd~qN)(lMGfwwiDcSoM_=vK9mFxQYR*NzK9>QuwOwaTE5$*=7 ze!_~CT2*(VQd|(IvU2Tn{?0kK!8Cj3vb$!=KJ#V62)F+^j1>}HWSFV?{G>(<2w!=o ze&lc~+pLfh3r8AdRLYQo5eoEL*#0`f+^wZo{!D@jC8%^?>wNPGDNVh;@JE_D$H5pM z=b2Anz}WOcf24-?e%WB)=g(M@*m ze;#f_+L5?NGsj5RjH?LU*?xqb3-DhOh)srVqsndvVD1ecRQV1a>_J>Rg`#y)kp&EB+;QH!6p?{E4vO`b}Q*s+IIAx5<1CJTBI zgPTqKrTvuUStrX9H%o=GjB&F(Mix_!{Z*1W)M|x&CSgCU^O)@EC&Sza_Uh{?rmx;Q zLt%49MqYxtfgI^g;7-`6t^2aSvBdQL*7m3hF>}`rk)6W^yTFMJFq&mq;VK~T)H5AG zBwmVt!EJ)TAOq~~Gdm`5Ky;%LoaH1Kd%Of=mEZt-G+2B9J6CwFP6H)Yte+Lxt znskwU6Pc#3z}sW^=!@*VGf!tI>2M+JZn*-cMLN}c>yD`Xw2E!;|3Ry2shtrnkvY1- zSp$T#20)ZIXi}uUmN}Trxy#M}3i#i|)jh$vkjcU5b0#xWz?}f0(;Vk6np#Rg9Rrkz z)q%rBcODd*MB%$ZkA);ECQ+FZ<+z39I`Q8FZ24K?Q+VWNg}d>{0f@y^&CI#|sSYz| zyqP&OH13_81S2{oxZ5O{pafeGSx~~)Iwl~7xi?J->Pe8=5RCr-WG=TLrA6PO!afUh z%8a^B+|<}G!=ZuN+0@p|2m7^o2Pt|Khv~t|mszCvScp|fBsR&YefRUnhW5nb3f0)l z?f<%h!UuKYioVfachRe)3E}b(kl@qkN*S^Zhfy;}da$I(z z9A`T@3XjQ=bD|tcziCzRF*#Nf;r6Fvt6p?+lpK>|-idO|c5=u=SI3^;aiSd8IyuUY z$ua0eInERrMz)MvfQaC$SW<{?Y9g0sM zqk_7UltTv8^2Lo|ZP{eM z`yC`c+`WTj1-Z&12VSg|T4Qtx>GZnUOP6e>mPX^#mIhJ6%a8J~|LS~JSbuz;$HRWa z`K+-1g0X)*!{eB-t)%Yb&bVPjP@6L8kNg^jWAYcCD1TQczcT5M{34W&$-fy{-f`=1 zB!c=4b>-x*KVJTMC(1wD$*)ZM<2p*weOBaUJ+i_V;Qusrp0;A%07bZg9i>Fw>**j z4Sj0nqvNj(#$fbtAjScBYH?P0FfvEO-mu?;?$fN)+LgbhSXr?mKE+uIqG(wDNR-(D zGjurHHfx46lI%Y_#HP~;uNT?DaHv`-z_X|M01d}^!95!Ej3z=+Omw%{O;BXcVyGn< zP6afLB_JqqnqXGrnXYNL@)uK^_&m+Yv-*9Kyy@5&`=6Y>jgCDN>l>ODXaP6C(Uo4u$v^$e+D^>t3ysj`MhtUr^m^zkHd2x^sP5#>^^VNWf6ow;2sDbDaG>MfPi9 z0B+Oq#7u40=V%{OTVq9s_S?z*W{AMeh?1>===xTl<*a77;pkkTc(1|EImf6YX?g$s z*O`5CBrHv8_WV7EnD*Q4`)Hz>eBQdt#3?W{brK&F7x3DzB~i%3or4|VUu;Ecfd6;7 z&W#X5a1}Cd`2Ya=y+U%MYUbfidnmGQhzNQ%QtB)(Y-3^9!&;uqw$c6eU+8GnuGFFP zzJI}fwy`93jon9fjCG*?39==0 z#Wwis;NTkW-vQiDp--Xufn*v+iU0an!ncyY)tt6+ZHzxbV) zBU8Ug)AKquUB1}-3ko#{p8cFT5cByGr&5ySjoo-!@mEdr;^=`HL~YN!JgpRD#jb_b z9#@J$JOKY3yHZ9~Q?Eb@M0v|quL||ny-Fgd?T8TV2Y+qYH8(PsDDGcJwULT^Vy*`e=Y3Q>fVk&K_&%Ky+BkRG|QXd zF%5;Ea5*A{ZQBlT4nJ+>FW`XP05ZpAV6NTo5=kib+I{sLIM$czt>aK*R@~`)N|f>P zX5zw(!#``R!}{tK^CP`(_RbV*7RE5UEE=Yu`Eqc3zCGasmJz5D35QnI)!%gH`gF}b zP&9x+sNmvUZF5W=a6R68685ERk*vn+HF)}L`&3pvh8@+zc-36fz~eh)y|#*cJLi4X zl^hPhe)#aQ$bO69Rk<5vkEw3*BL0PWzSSY6GY-3y@-k8i#h*-*4N;Ye;xl%;H{VRe zjt3w7!J-@@F84*^Kcgo&{YopwO?B9gOF={jh%!GKB7SC=9~}`p(b>%F?rrE&rpYVK zVOXI2CbW{IZulNAPEmm>Jo|0#0w|mJaeou`ArCJs&s&HB2!25DsKSZ);rb9tC8UB- z)tz?*h&}_3ZV3m42JR%?=;vbfV6?@#;LhBBM@2eCpq`5|QVY3qbZ<}OAcyZ?F6C^| z;w0ySy8!gKlIfB=U2xYtB(Lepc+ci5;ywQ-4^hU!PLYjmk%jd$4tUD4vbYQ_-u;{o z{i~%j{sq_Zn>-JdHEN!MYvS$)VwpggZW4W;U;FV^L-3`P76EIwJs5v>G5f2EukVm^ zoXI&>#V-!VhQT?i4__on03$PfBvJu?bor3zs^O7o%NdXnL*m2Dg@Qw(%NdZ5$!0dL zJ;O$qRYxhjszc$<*oe+gj0L~SJV(BPoKizo%XRtS$k>g`_W|?J%oYZtfy?U=G&|ta z=m6vL7F~OfoRfS17#;Mx4@#LEP%i@1pK+T#H_z@3H0;bpH4N7kfXKN_7Wc?U$ivut z2z8*bSlH7^&^MdOg1)%2fyKD$~{h|YGukJK6Al!#6OXrv8nfI>`KZEE$ht1sx=tW^r+ro z#X1G6uEF%Zw^j9B4DX>tQHTeZtmUxE1(3$CI&Qz-D330&KmV2ZJ4YOkKJZ~dIIWUz-w-+4#e(+v-{n`z`#3uRsRT)mjmL~7xFi!16T7)xts&aGfUr->-HwX_@coXm=7e#D0^I5=eeCq^gio3f=%HeD;PzQ;hlLB-s zwL^){w~|>(ygt8?1ijF&MRzN*ZGy1(1IG|?y`DX+I%wIW_*GZi48`u9X_i#%TDrVC zd{-b=4X3F~AkykVgKgS)v)e`vbe?#1kaa2)$31a@_|H7L{|~JUDRI1cbt<_1?J)qdlUF5}&ls zLTCONf8P}rEO3WC(q&H>QqXDIGTz{#a`$itbR8=1`U_ne`=@+@(sPB2WfCryNw|2l zG*P})9HpHQ9Hr=r41Lhu?)LGW_;qcOBcAA5^b6O36&TcUPzq@ck%!En{)HOtTaz#` zw6S^Xo>5X2X;rOl*arWLy@-pjQHOeXVcu@;2SW0L_j}Gbp!)L0hHdN|y7(F+&A^O( zLQNo)MqOsj4Vcb8gFa1tz)?>G3$f!|u__c@MILYym&_dyZqoJF_@>gfWN_1d;igp% zZpvGmcZ3~dDgVF8+d&3**N7bG;k}nCX)L(s97nz%P4)k@jQ-Cjk)wF<|NmY&H^@#o zFNl^oQr_IG>AmP(&j2#@SYBj{C!EKQ=Ga3rqz`MmY*+emhO}8jIyV9B_X3WA$NGF& zj&-Uw2lxW}#=dMGdlq}DyXi<-0ARB43(sk-!1fd6kb~>qHRNFZY{ zT*3e-tUb9MKqBGnyKEgB_u5y}3`4wC=zMOh9N^*q;}1qe(0>6be~$zYviKSE2@n~C zzsqjw>KrDfvFbVW(Ce9Z5)^4}4mG;2>HnRmavNm1g#b;*HpVqy1jR0vp#8%iIn73@ ztY+t9Rr?Y_1HZ%?5%c_Y*gxI#@gyO#NKLP-@NLHXKv?G`q5Bk5!ogy{_^LCkQ;v(l zQs>p5T+lxFUvgfBN7%jRy*k*m>y|q7)V11#Uf8CS^X8*Y&N@CNGLEr7L~PGR0vhV; z2of#p`Jec8rZXJYDxF_Bv;i&-7dqfw{&RCK4MU9MDh@*xs|uyrSb-(&5YK};{dw;b z6-V=`XLM+ub0(Dnn%#@$>5AqL(VPAE&R@4|FbnRgIu_iv`IcCwd1;*Q z*bjF$_F1g0s?n@rcK_kVK-H?2CdO}SJ9O<{O7btbkFFU`3JLD&n7}z1O;rLp;sU=| zjyk&(sAE?avMS8^7#D74dl^+MiFqCTF(Hrwu*OABu!LZd6GXsXce)cSBdBA&s5$RU zk3Pm?kJ6}M)zyVo)$rVM?x~%%Ny8F51s9URzU%Pjo-^rIC~K&<#NQMH{=kU=@=J(8 z5j}m4A;c(1m6&Fh7yw)j!twviH-vV)Gp_{NiDC4K{zhv$0L1Cy1=4#pqcgI+cc=v=ef`dhzL`gu!B;bwe@Cc)b%oB14?vO zl(Bfc0X1qz6+%$`*wHo^F#R|H6;sdf%+5Ss?DNFhuX1r(;u)0@i_N1e!Kwf=z+wh0 z^UkU>5Md}+1X29M$U#W3J{Vn|9A&{dh-^PJJl@kgGM>`}!RHPUYJoeKnIURQ4-wR& zhNuCy^vdH55p0Gd8ls$LDIKEs%MiH}e5N_%7~67Dxew$S^^TbnnI+(Z#HSsZ0pMFl zzE)=TjanQ*w{6Zm%^Zb~;YmWe!yI=M(ZhD%)nbu121<8MKA*Yz-n7ge&*4Uj zHnwMM0d^k>Xvii$ER^M;sdgEkpx!GY`?C!~3|}bsHx@U3oHXSo3cQBVNN=IeY1^U%H#86>Cdy2l&I-M2?xyh#2~i1+j$Sgo)XqGJ`G?fK=+}! zMxT0P(=5c|XX)Y(3(U!)t@}1P(9;z1S!@!cX(t1T7xZHEH_eSX6e_Gtq19(eZ?5u{ z!{A03>a+CO%(Yg<$NoCcB>SZL92kuVua4N4nxsoeswk6m2?3gg5NA*LYHAsf6&}t* zn}Lanzc!x~PD7vitJ6?9mZ1j=oU8-sr`A&AN0e|fS20Y0s=}^92 z#wWY^Y<6Bm8VuP0NB)n%4vi9yvF4Y9N)Oq>8CEtT*NSt@88$x@HNZ@~z$%wKBKLLr z-Dqy4qgX972If30c+8~4hB9Rny6E*@s&@?aGN(+hf5!*I=kU?EtA0MleQ>5e`*~S^zIbQTs@#llK}NV& zMz}B|T$~Xu$p{Zfg(EWISzG<6CgE4Dc>XGRGt00a!PaM0<4~u5Z9dJ_pM;{OJEkM* zULf|`dLD9)u+@Gn2gF8MUs;;v30yc!5f%y&jJ7%(j16i?{DqA*FyoLYO7FeeFRaEP zS$cEk&r4?-g56tpuhK;u&FmyiSpiAiG`}JZQ_;-e8j`tbURDZc29IH@>gp7DTdKg3 z>6B5$56k5S9n-ah?wm7%0n7+|)?l^fMg3r3(nLoM;^R)UM0}8}r?c$SDAPzIciJbJ zAQ&1Cg4*{`2lLiFPaqKcmB0i0?H%P2RFI22Z{VO=ztG;)NuDH}RIr!|i50-KUoJLL zkDCHYlM@RP&k_OqtTgG3{K2HrV!R!j4RgFur;WXV)8)y%T^Nd`cLEq*lS=cv@=Df6 z#pBXo`(`Tsw@1aN!4`@Rde_ore(zP!4#Z4jC1Hm|RO8sZHp!D(-;G>#mSg%eOZ{P| z>&iXTChQzrqpYWcq1d3sOeKNG{wj5Y2NZT^mwhUq0@23>pFs4lDkpg>H-#p<@`J%e zuEl=KpI}!!4?U~KoOkseiaoEifztQeTQ;dr#{3=;8}zxo_xDoF!r|^`_|v9 z5H5~@AFI=3FzRcv+O8}}cDbeTO4za56JDRC4bmtJJV#LGN1uc(6>y~}G58IT;P2b^ zUc(5vI23#OQQ9CjElMgC&_lZ>W|B2bp zNAn8JW|XN66pER?r1-kvmwy7C|J7QP~F~{d(5^pR#H(&7DIYrAGATd^2+C( zQ^{v0iPUxsyIx*8ZQpZF+&ba{=vwy*#U50*>HPv8I@|z$9M}Zqw0gb$wPTVr$0EBu($L5=E2z8)01Be8N#~{>168@f) zDL70rxn5ANP!%fbnl=9l4#zo_{YT)ysce-wm8IaYmct@&Fb7gPEXxeb9s3q1%FK%t zB=U`|jOnho?jOBL$&G=X&QVt?1H|)9qhWOD}e6@Uxeir$lHoAV59k(89NOVzjCHEKbsA%}K ztJGh{#7Banf+*zOm&Lh-(4ZHys7QFJux|tJWgKWx3*qXw(LSUo=V;P{d0JK;lD*sK ztLUC4isvNeQgrEzgF0u`l%(v)b&LdomE7@B8}`!d?Dp2x98bG)VD3Qg_>q&t|1LuF z&FrVg)vsMgVcxn`{7ONtYE{D)1Q(+bT+}<38F@{*mPcL@3X!r}-tyfITRID6HS8=v zxPjOdDg}`?)Wwm8tvQa2BNw4Id^UCx#1N8eBfV-Q2T}`W>OM&=8W3)yMIng@eic@W z>7;bTEc_Dv+Q`15iNz^6-0Z-i_@{!yWrD-TRluRGYl?m-A%T5a5B3!f{sQQa6(#cE zN>qXHa@Zp~#ab;m#q2&oG)YT>(dT^kkrihRy7Q#*%3g)4iR~z*7j*Py^vzmrM#vdA z*%z3g*_Zkd)NQPM?P0#+Qe~6f#RO6Q+GHQBQ39MO$Pfr-Yk!~QZCC`|-VlspbEP+w zECHVUpY!q#{>X`i4Te3ncQVh($lS&+_bzRE&%3nwKJVyN-in1%z;SvYrJ)k<%t=^$ z7%u3KO#qtihXkbmQRy%JX>LuxUE~$^vg@6N+eEQj-tHUYFCCv-V`(#nM`qc#x#e%^tn#_E zQ)wvw?Dq1%b5!wCqxK#qUqce4mPYmM6p)pVKn$h>xJ;5iJ0N1(3CBQ8xNf_>`t@ch-I?YY9KT&Sy^sCAGUvIU*lqdnKSpvW`f<5Wl!5v1kYkfZt_-i^)&mk62F$D ziUaMB5)TrR3ZMCWuk%u1UaFm!Lh~}tc_}t8-*aAsCbAMThNOT2=EcuTzj`J#^%X>i zpxbu%wL)UdR`TR%r^WKKspCN)_MMkBQ&0xGD|dUF{q`5MvvF9iGU!ysBa6Q057xym zQy{k3RFAN4mD$5_Wk~D4omd6oIXH`y;cvV~NlraM7cx>pb+sbn1VM@2Vfw zZ%6;niuJIn0=f1tt7VJ3cLRct@+OpL9>kCa^e!VyxKAv^LeysDuPD(5A9R#`9-M6i zLIpyRhHDR%4EOtt*XbZj-0ZP!*W@a?m^#IHa!MQNlopKT_}U9w3mYa?*a1PsDeO#B znA!vbn7-% zI`B3e*`LNTHO}N2*qJ^|0Wdo0DCP zQ>zcDeOj{!dZqSe?bG$zr@y)UP+QqQv7JXCC%)Fue{tTD0c8BrX|Ebd-_7F~jMiUj z5bw^l8}kUTm%h%ktPV+^aS8W_B`C8QE!?ME0rbC^)v;RR$qU+D+w{0*#Iq-gY z_}doG_&{s(RbDWliSvtR?tJKlJ;<_uKr z1$ZN7gkM}#Z;qYk_xmJqhA=XnmNHN|4y<+2L<*D0JQ`=|p}#=PxmNQii1j%^i*rniXFa2w(b?wFXx`ki=JPzd_s!_^98W%tLw^f8o?=La_?jIim1_s9Q|WG|@^hAVKy z{%lh=!Tg)BDzt=q;oD(L2Uu_Wq0avqgy`KpQ5B+As;!hDn~*72>jtVjzmU;K?!@``{d& zSK?H9Xs!ZKuS4?{$R|*sK!NF6yUtdM^Wi*ArHNTo=e(QwHS9)e)0`>ezl8rn=F9Hy znfXG<`mRF5kl);1NJ~;v#}sf3{EDISfS)fmbes#n;uFK~@f{uEcgOiTCxqWb(x%{7 z3H%(F8}976l#Kr|_yNeC0%T7Dy%cbq?i?4Q|L*!J>~R&hZ`KsYYR3JG_4BiYSwG|c z#rhdVvdkHD3EnLJFV@fJ=PCQ~*Uvb2{cN^Rw0?v)Dx4)0yW@6NQ8811X>iBCHw_-4 z;LN_{B8Lm7Og57^ayVz=?G2xF^2bj0 zE{k@H9QK62?~jel;blZlX9SLATla2{`c^wx(nQ>J*E738eP$>-*{>(TWO0gGP9s3JD2nHA?Q zqzWyh2|`3QAeS0Nq!7`y+dD$={A=4GIDxbiOj;Ka^(8IDR~bfdmc{kG(Ff`k?QKH4 zpoviCNW3>1zx-_R!(=h4duutV;}lRK-84HC|EUUc=;T~uf}A&o;)+#Y3keoG!D0h% zJkr)@_y!OH$>7IgZ){f68SDy+4CPAHCeCX7hp+sm@pHz7&cD zF;$<76`G(BHcN0b!Pno|Rs=8yKm8MP;+sG9NSodA3(gkt&X4I+>7we%!RTk!s$`(= z`=r}@n@N{jO}c+5UF2gFZBMiLY(xj!q`(qwm6<^Sr|e$*7xO=We~bSy_8n?eWN`@+ zt3UwhVtnwsPLY?Y$VyZ7*{j-%GuHv6O3Wo=h81z*T*@+Jf)Pw*#ITE}|1#h?<6|A< zQHj#s=_r&-UFJ}E?8iC6`F&yL>8DITCHirk`kK3K&|9sfwk&U72d;X~ao^{;&-w1N z-hG;RiWjcUyz5VSTHU7@Cweb%pM~zT#C?|Wlv}R~p8B)mub8~XaCxDk!KJo&MQabXMGa@ zmlb==H_klg`YO%S>4p_W&dz+wB{$*<*ITOIjFwZ%eX98YV^+GJR&1`XmS=lf>ffxM z%3GnCrc7y=Fy*mvIr6T0HHt?n&gW#<@nR=8a4Zk0`E%;nrQL`NA*~8uM?;Zu6^62gqfRt7ZqJbf_ z?#5_5pE2Xg0GfLF_s9qBR$cKWp%sx9%yxBL9z*x+21w>AX1Z4u_OSTk&?NJFwXb3v#%Iu^^a_ zYuvhg)#APW{`?6%p&k|0gD8al_{nXmUWMPnaD{Pkco|j%rks5pGmdBIqkLvcf?0bJSKX5YlGFGlw1A%C5&d-g}G_=QjK5 zqJxO$%@uGbL7|yjkjRXOi4-#PuMXs4iVrXV~T(9ZSgqG z1I=b&2bf(`O9t~7<3Znbm&$GqB#b`N zS$8YqeMPKML`%ypL%ib`>Alq?T&noD^iDa%zoGd3df#i}4-*{!EiAf%n2dPGuXT$U&vk0!xu=by=Ihg2yaEq%L7iXy^0rVYm63AwyuDBA8-3`K*B}Yy+s7)#=Jj^pJiX&ix@DS=HnqH`e0%lt8MWL<+o@qa?>G*f zV@e|DVFL7We3JxLsj0+KF{(Y(>yIdH!U1HwT42_g(2K2mrp&!N{5D{o1ZZWcQ&1;R0`A91!uJ-VD zfVFG-)_vfWX1SmCkAR*n2UOfj6_BJPL6x9}aOVg5!IL==j3pqQxJD(BZ0Ayap)t-E ztz%7$BlVQGP`S412lyWOMEw&KY0<=Hk3Q?Ia~IPHz%|5sWDj3~G-d2iu_mQ(2Cy`E zr{(KS!)Yq<3FY6VM09jwb0?=bkOVk}GA^wcLOLoGPIA$isZc2lTDkOb;X1y3!B5S% zbin9vcwmnLe~uw?Jm#X~r)YS`PbnmLeF;Cemhp2{1wX?o6*GQNrFk0|pN8?qt@dP@v`tYpe!$v1$%8#h@|D-l*zLEgMw7);>ee z@==pPHzkS}{$Z|}29IZHg7gaYX*EAB&5Zp@H||}vfgz#``V7W%@QV;USe+8hY85J| z8RX*!0j;7w;%BF`7`2RPhL-Mpez%j!DMOop`nPGCmad9mZqv9F!T}KinU-xz#_R_h zlM^&yX7bxSSE+GA+h&wB8nmWf$#?R@9CS9K78(9D>5GO43~Lsj_LW71H!8yH3D{zf z->x?;7Z49H6Y3%tB?6EZVNA2WD5FJDPI8lo0d^4|1!y%2#U4^YY6c@{x=);e=t`9< zq-)SW`?R|ewDbXneB4Zxn-;5H%^y%wt!gv#eLwAL(N@CNBJk`rKnH-lw^HX8rPO{S zj0!F_@JJBxvAzK|N-I$sj>-DM>T1CkJ=KPtZE2Uj!Uf;~BwPR;R9l49oAr6UhUruN z7{IkE#Pnd+6G`Vy$0@ItTp(QUct9(RMtNp@Ro5I|KUchVG;QBz@t7s0VKT_f>|md% z>i3k$;Ig+=gxMQGFG7#wRkNCQgxYB%O)y&-fYEMih7X)Zt~V8@pBk@zt}h@~$lXMm z-T9EJF*OLM*VGgOT;YqFDFCQO_@bsp_@ZXY1TfB+juj-$%|}>QFOBvUmq)Rg#MeEJ7=qC?_B0unK);U}5g){z?oiMuJ0HYRg9T;V z%ip(N^+4gGk0B>fmR$aGK#DGjZjdX7!DN^6*Co?@VDq`Y`5@vxU1%Gc~Gr^{}iZN8?1tC=Co~yY5S?{BW>lL&+tLx ztvj1D%>tby`mP6HQohN)(bv-=eSDA(30af^t1Np>5t3_O<2irPSHOxsn+SE(HMhx@ zK&`^fMnC*UEVKI?K7|h+Nrx74sdx0So1_OxM!K5d0neuZ{1X*SfmAnlbrDA$;EFF4 zZ_PQh^qw;VRjcR*@fkgNmm6=A-}jeph_3g0ui}~##>$Nz&Dxw3UD>en9MAq$`%4?9 zoiilbZS*I4muxL09W^$x2y3N(y&JZGlqQoQFPlTV{DA=I}% znVZu8M2%)m=&YQzp=i$PRQ6=3cfC_h-?rq*I*zCPRiG2JCUEK?T&xUQ+n(O)%|bX} z?OlypK+luB_dZFb!{hnI*u%WRtqhaSP?PaXWO+6ON|&1pTN1UT84^wSW#!mbBSk|< z$qDu4x1g5DrZ!<&Ik^|XD8NRyXObIR$6R`~_#vq75IV>hkts=Aw;($Ra$4Y^YukDovmc=G2hu)&Nkl@bI&2U#RHd2zmOk ziq-`4T1G?(j*RtLWp8DEHCa0Z3rEgU)*RYQZqMs;e2Ru7yDqRlsU6%A3@TK8* zRV;twRj1~^e^oSpV<`STGhD!XS&$L!b!9yNd!-HcjP>K1HL~5~$9+U(nq-b|A53c$0=raGFMV@dEFo|dMTPVCfv{aXA!10RrH#(A*2l7PsV_Tluwe&!h3Ww1763Hq~tJh=SUYU5jJEI zIlkPpnR{>IgBtd36dEvSGPBsMl|`sWCs%>4P%gS6o<9&5BjVaVL|*tS3hycO$>YS^}Q}K`^38Jb*@G zivwp`rD1Hn#Xg%{;F{niV_D|l&oPmMxz*PS3>7lfL6<96nHfyb>-+YKQs=&4OcM;! zuuK*93w#DYqowa+&H?t5eA1FFDUT1zGNLx~<^f+Dfr1K*=U_^l!`*-A^uiGrYNNLI z-HOMwyFLYV%1$j| z^Pj=?B)q6FD^#^6kP0F_9N$L3y{#az4HEjtR34_q+ zElc4mm?tLjo@Do<@J;_k)~VqoS&SY(ZiWO1&bb7R>vt{|nz2gXnuLqpG@4oFy;lY> zL!!2S2FAt?ih+D_Q4Gg3Pz*>4PZ=Fij9IYl_ca;^ME|$=X1(wYJ1~Rjt*fO~Tmn zij5Y&+8T=8h=ahQMWMVkp(w#ntS9)2&wZLwU;8xC)lOJLRWBE|L1e}J4aM_Yj1M!g zRejPk=c-uFs*$Ibzms)UG-p*PwV$vd1hu`g=1wgy-G9#{uoIZc;Hj-3s8xZ!`$I)< zdUh8z2lKf0raroirFp7<@9H6*1A7*F!rp$X1D>2Wz(NL3HTz39hQASr_k2Tlpmo?^ zJXe6PP61!ld!Mf-R`|+ay0QkV&P*JWLRb#I8jTBkTph83aQS-^5{$~8{>X>lK>@FG zbrrVokQiCE=kE49*BA5dk4@>-uq|6FGrG~efPJ^peHZVlNZ=mAH=PxY7zs_h^OL7z z@3jnNKdcy=xcEDZA`K@sF^P~g{mQsIaptn>U;5+azQd7yM!3Ss~r;`aX|n%rv~w zWFV#V6sxZiK)f@><|W;#+p@C~q7Uq0V{;TAhK1TaNjS+x4jI6)Z{^wuqAJq`tC`hu z&iL*`Zcx7xbB*|EcaqbJ{!;a-o@%^AcR%}PO7q#LD=OZ7yh&kNW(vsT+uf?Klk7dx zFvTrfAyNG=!&k0_K2y*` z-8KBRAu+2D3#z}-tp$T}EoY*w*$9Q1XPFM?Lh;J}xXJ4SHTX|;&As;%H*~A4$bPO@ ze}s?5$WheXX09^R?t~3mli7d8OD}*P<}!`k5tjr9XAO_$6E5SWd~ojYX!$@;_z_UJ zziq9y8Z`0iTUAbEF~LUu_j#wh1PM40BhA)esr-r{D#76md@_E)g@ zE7L~+7@gb7&4-A1a=G`=+hcUMR%ANeB+W^#Esr)twq#Ru4mT*SPJX{Ux-_y4 zZ$=&QsrUIo1^#bNJ1wj1zCovYpPyFX(VM62zGGEst#NH9Xdz(dkb`2XezF4UdJh7@u&qu4u$zpQky{)^y99E4I}(2pH_3njBedr3$3H zVwG2-^2)r=&rX$~%o+LWpb5!WoXVG4;~DhnjE|quaz;SjORdO$%$LP;l6W=_2EOrMW}OTTMz?h1l6jd4p2MUNI6wW0&5h?m$Nt zK<^;-4T?y5&L>ZcqIGkFaTw42K6$CuEX?iw_TZG-4lI_EhtbqGBJ=q|BQF(_#Qq9V zoaUv#4hT`-z_H?f`@UPS>XdKTsQSm5Y7FKwD^-UGvY=-do1^s-h3F4C>MHN-zY|+m z@16N4o@#KeNnPiY+*M44sVa%)R>bc2%_Yq8L7fl>&?tYN5nWL-x_>1%Yv6mKt&LUe z4d)^0^@O6IR&TtC>1KwI$}fObB0>mG&Zr-8_} z)-Y~dsmEkDUf*~5+unwh{FXoRkvGZqyU$pONwOE`6d~rL1IH&q{N#;0g@U4Q@L$r9YKjt}6vuxdn$y zf;}r0I6~lu3bYaUk@xxh0-jaEF@e%|s^2b;CbTI<9cVe@!?bS|7*V6Jd4>R`nRs-s zkio<46W3$uTw`Ak81d3)!rx;sWnfWfW~a9f4Q%Y<>cgcfXWt3RL0LZEXBViLJQF<4 zl;U{6(2Uc#Qsf*S-RjJUYU)kkCUXIs)@VCX&~PGQc};5N!aEu8iPJU?hS`MGBX{$2 z)@S;;#ajszZbH32)$3C|pKe`94vq)#%lJj2>lCZiTjsrwyYy~el80(5=O3<0HRG*r{;`71l;u@ zdipiK>rZ|6&VG|n-D>YlQMl3}(u@rm?)jv~%6j_97$b}oYucj_7T~06Hm-c5WfofX4kr(-3jz=&V*W!^ZJIqpt zbo1Cr-!EaRkQGp2$c5ppqvtrP=6tz5|B`TA)ykG zP=6tz5}qI-UBS0UNN86E62i_u1Kk`Ex;a(zAlJU{r$RB+XCziKiJea$-Khv%q_Hr7|KN3@(zV_?`Gb>|lDBR*3V!*w;6@9t}3>qEzOpy}nLVJ!J6#UHh$ zj&AqRZU2JvJG0<*3G9s-QFocBvx%~Q@sJL{4gqTXyK=}Gty^PYQ;1iAbcBU2t*A0> z$OEjldMj!w%pfBx{MYzLjly)~djIGj=i6^_!?DQEy7$SEsP-4Mra+A>?$D z&86Age!TIk>A`VEV44O8=Qy*KI@qt-jA>qKK)Ech`%@WtoB^GqQEQp=pC7d|K5rj2 z-Pb1l;2vc`{;>xsNb4=8Xz!^* zD>7Brx6-IDHw3_>#xbaI&1qa?8cb=J!Uc|^y6N8|qyDq~d-{cr{rlFe6Ppd)P1@u3 zuM?U66a7n#cLigN%~%;WV`bQkmC0u8{X#R|jb+AWOv7&A(YUM~9u_|N8D`G9iN7!B zYkK}*Q&grh({re}^U1}gJW8JHQ>d(i}EkO;5g+M zW|p6(FDu*`>c?V*Sz0^*2<95AxYl5#nReON`u^reR+NiDUOeNy2_-jpzWWQ_3al4P zzkBlD^&ek+8gIR<7yEUqZ@cxYm)y!*q4i>q)5eUOJ^Z-`cq_JEeEPxtW4nJNpQ}Hu z66?h$uR8GB+15XY@ixGEkpavq;opkh*UZDgPi1D#nE7(Stw&N0e=_HzW|8Kj^ex18ODIUJPXf{ca+hh3cOy>~bv{5>|<*}7-qP@(tU=hRG?T7BV( z?dSbT-lGe-NPXNu$-sOzo=7H}3uyJj2$;|VP~__pZa+oH3u z5f16oGJRU6v#|7h5HTMwH3#aW4%4@;`ONRF$-i8`qc1NIEr|=_>WIai6}gEzx6NY5 zxo3*>`2czRX8~_hFp8^89OF4>iXGTh!8ANHC1~|+Mb`NlXV+f+_DKGQ5OB9`c~@G| zLAw-gHQ{Nya`m#$eS!5oXtx{grQ-!>o9ZQ*lvZl{bm!+qdoMgRx2WH_W_~Ul8*F;w zrfYxCTw;D+{r6Ghf3o10=kdn;e04|JcY9A6@GIV!pC7b6@XXfBi}l9*e5iERsPn(_ zgV%Ute*SsE%!>~F+H)aq%+LS2XvvIszy89>yt(tU5U3nyJvsY#``*pvgY6b*+O)r9 zUap?s5h4B;XG(X|KE?#?Dbivb_HUV>-9R}qLHpXjZ-SO#W0u~JjziCMKhj(KMJ^lB z1aFVpT0p`>tT7(*oQM2adV5$mvQf!yx_zT^N6>}W8rE|VQb>CEw~f$Is8LqO9K|?F zndT%OTBuF!KSCef`nQgt-isjWMD)=>(jJ$7SV*QX-*&!?K3asNWa*6tbx6C)p_USV zHGOQK+}bbVo%h3}w4$9S_CFskN9PNFYu;|>&CnBZ<4v(~ws^Xr8*UVM(BcXEeR{XZ z{+vnOBmqy3LlB;v8f`jXlI7@%hEF@q*k-u~mLLmv>A`w><*Bs!s~qaFru#m14k9iP&p`_E7lOyABBe+kVSy3^9kmzwst znz<$pMV>G)QT-kL_5yYG#8!6up5se`J(UTYa#!zItoM zsMQq$>El7FqyEH~!Atfp3mgzzeOnxTj^VLB?~gdO&&J`=K56|Vt9Q%)CwLj>%bHcp z3btCnlRDGmhVe-)YyRz0m%fiL3e`4AX6le(ML{^JFF%u1pTy4fuF^62)4 zott`T#xtKQ6=99dUQbJZ#j$cuY z8Zz_4@Wtphendj{xEHjt43EwJ!=FTqA#+iBwIuqxrR@rny?T{T4K+LCZWo1Cu{ z?FpYBh?o10^jnsOzZEHevsc?hte~#;u!zwUtNu6;|68%C^>ts<-RuC{`##_gOXkoPCd?OPcvF9LB`3p^GP5PHbWF1*d8x!7AA8g z6;YPbeRvC1M3!1^5((MN-lw=G;!@&H1Q5U_LjYkPc)G~7eb>IxVZP)Vz|uOCn=Qdx z_jlpo=oeP(-e$_NqC?A=>-TE>dH#H!^L%K&iEGw?6nhJPQ_rin#}7)lDeSsJen#rf zur89%L7naQgm2KWAh~_ifRQk+PR1Gau;O5R{y5VLSHCY9e@c}(8LIBHh%=Rh=$te4sHRPvDH}(TQgPz@&m2^eywILc*pnbN5EYM zyQ@FsrQ^28HeiQ)ci@*>-B1G6{^ zQ_k!zF|(UrXLgt9=J@VE%|CV}y-N4(?$cRG?+GmKyf4wY_A6F=2(#Yo$ISNuN6mLr zc`*Kr87=1XRI$)Y9F+iM5llH8)!C=q#9-WJ217i0iRE8G3G2I7x6F*h59dNWI;OwB^o?D+%fQt>QFRv=`PoDeIrj>u5_R?CW4v&Ni4 zw8l*2tr(W%=lb~ur4zcagO;oA&-o%bev--_6{vMrZTm0Gl33$Bl6BkO;qLk|bLw@ur6ze7aicho=o#KuF-FCFTk_lh+ zgvCc~8@*Dyp;D?P;#$o8FVKbiZpG)iB_N00q7r_UE`ggS^1QR9d39C%A`E@Z&3Sdc zTFNogY=ZgK^h0UJ{JPW6gbU4Y0lzsu?aZgLqS~8-Id^xr8A92XZbW7=Ce(t@mpEP) zPp9HQ!-qL$IJVh;ffvPSscUAC+I!#_Kig+xNgi!5qApKZ(*u{S7AmMh{N~NW` zNX@@%STO#iQ;!Q`vsbxpOY9ObWQWc;ogj^UE$S}q{Rrc>1bH=8F-)#@7Io~tc9y4ZC zrf;9x155%@hW6Lf!E@8WGt$BQbkLIy?m0&ln-Y@g;O2Djopf+{I{11z_*^>pr*!b~ z_Mmz^?@R}hnq3Bx@7wo~z=h<*_8@9vcG#r7-8aF}7qLg1SdFzENCz)Z2QNtni_^ig z)4@~H!LI4xA#~`RIb`oj2e+kzE$Lu$I=Cbqd?_9LTRQk;I{52!@PTwNk`7Ky2Y;Fl z{wN*1J{=6EgZ^~zvUKpmbg(cTJS`nODIIJ(JJoru4^MBjBx@O)O#JA=<{eVDy-~eO z%Wr~wrZ{70XdgyvX)hI|H~YU$nI0mq^yf+=3k`CUU4*oD5ye=Iakq(xngO{d*UrPtiNe6qT zgL&!T5wMJ?q4@?QnMr%_w03xGHnB2WWnQn*3tAe5@W!R1Q5?PuF?$#O@k-a1bB*!j z72U3LdIc))_Ww{2LKWOIc*hgX33!BlveB~*-yjLSrMzR(dExGn(IDYls4ReYK+0mX zOJPNi@J-tO3>n-TyEf{VZUm;b; zGH<~Z7GF%0O7x}BTVRg*-U4&dZ*Qu%z~e0lkn?^6Id9)O-#p6n7Wl~@AiqN|DqeWP zTQI|UL`^CRMzs=W-4@K2${^scB~g&AThU^ulu6UA5c-hIQv=af>~DS6X}=BPP5)5F0Vo_lTMDXDqI#n(w)MGwDuLemO8y zFwHGF8WaX)^8?JF;$<3^SAf7Qy!;!4xR4)oqsLn4WbBD;_0%%M<3eE}o=Qe_vh z&Fq(dh5Vsl2>&57K()kaK%^kacLpeA2564?e!p?K+<@OQ>?EytSCp!NmhIXQtD z^(7{lPq3kapxx&}2DA;e*rk`LMXsnsIm@oeNLK&ZNIJqfy17 z#W={Cu~b2LBo|pT7AlC*sHn$WZyhe|WLWI8I_vw$_}q*1WRm4OSzL|LxT9knj5Cvo z_mA>lQ^7Qw42sY+OZ<>xB>rxn(HzgUGAi{`;j9`$B}OUFZ|?3ClIWHEfll(QUHM{) z-i}6>jL~I905S>s#>i}@(m28szh{C}YNuLJXC+u@W#0!taiXZA#JwsGw5io>}c59IkL5oui5TbOfuKlux=uo3#`0mB05EvH|$XI zH70p>WNWUKw~z>ro1_0CPA}dkR!E7TLo32-ZuEhr`3CBqfi)ld7NMe36b%C2x&2n-_FcZ;;XrUSLh6BVpx-AP z>Uh)#qhoyqbF63|ANT2$zN?FQqHkDxTQG+W6mgB+GVWn{#wu#U05B9i#HUc~p80{I zm7%=t0WMo8dN&aJ=>n_htzh0q=m?wm@7Eg<#|NS4+vfdRY!#P>@?aCcY2HK4fud!h zJdWV1A`~04K2X#YQu&{o_v+1oq7|V$tp8PCAa;+92q38X6we(Vtya;BpyE|NcR66u zy*!w=RqBHU)_Jhd0_TOYth^0YtdFtgK;X_&Tf$O1*uy(hEN~n=n9F4IeVnv`WA9~q zHh7=kfcb$3YsLopZ$%x%?0-cG0=?h#?|B!iiZ{7#Dd=hNdmmbC3IG#2H<^cef8^iu z9#_MD#MKdalOx5Fz}|OXR_QoyVmn$Z?4N?4vgzG#bes=E(F;Lc_R zdu)-Gw}zM-ErLbZcI|y9RJ0@5t*0+o^g*a75m4{okDE6;kOv6g3>AG5%KONQg2z-T zb7TQeEBdUj-n>8N_(0@)tNEVtQ#seC73Sa{7GW+gK^A4R$#lPQw-%((&F1}CpUo3B zQ6G!yWRBG*T8|b;M)j~p>r5FYP_Hkbnr;wt2Gw+@2o~vKzEA$DS)eZw%z9lvYJL`x zM|gPaPf~dFOk~S4%mfwqEGRL{L)= zErz@Z75rUX_JXWOV_Hu#Gp3rR6{CLau`h!>)1V@fn9s#ZhYP)t6~uvra-Q*o&p5Ui zyQhyFV0vU1Kj`I;hYICcU6?mJvKbrw$pyMAZq1I!R!=-PZi$h zVY_M=a0~pzigZ^#{-?U)Y%KQ961GU%;PKYYmEt_JfO=NKdZ0@u>W_LjM;)VIKj`W7 zEAa%`(`@~ct=$oQer=ZH zQuFpG>NDt$L?#tlPZgpDCpic^Z}t~a?|XSa;C%miVpB9~Dvm6^)*xSLCL z7m`Z7G6ss|sx-M$b*oI(z1ciz3$dwE#$?o8Yf1q|<~i3_Z%RqkU73;V+>E+6o7B(x zvJ7PB`U(Z<_I}r@4CPpgdVW*qR4AY7r_TwtSq#mFn-Q#Z@**GsJEDxAnZ zQ{XLc?b}**-*Y{)pvr$6iY1Nxzp1$oS?hMjsrE#uWve+6WX9xWaq_>7(<@r!oSj(29O7Z1Qd1NE`s7 z$<+-Ebk5|jB?eHU6@_LpBx9jSMp&vkUfBiMwSdsU<9^g0LFAzHod%_E_uyXTH3y~VSF){mpZLU7-xMC^R_{wy zA6Zz>xife32`k?COuFJb+AGE``u>YFzIBKh9tZnHo9g#=)SiG=#hxhq~oI=W= zo}pQLTAhU{>XuDCmk#%&!}Yw*Z1K*#SavhZcuDIQKa?!j{7|Ms@iAq`hh*v~b>Yd**dCs%jyMv_)i@)J?n+5Vc7KVyUlNgT z2_!~dY2M~JZ|#ErW91{mXw56%N z7hyd<1vuHPd#U}~R{!e?OFt~SN=|>utj0y{u^$AYYb;M|s0Rm!RWKNWcrVM<&#dEr<61lj@MntcA zgVFcYoR&p3C;yM3X)&3?1~L%mlA4DMHhL!R~i+SMf6NHSE1 zaFMmqZ%$63-Yxz;Ev$D=rf&rLwjZZLo@DKswmmIY?|Rx4DB57{ZN?cxFb{`bn*v4k zfjmx!?+1z&2J&`WMQ;R))?0b&ttjWHDAb!+6Oi!$0CpwYi(y(Kb_;W^<5yhF7SsmU z)emlKV;P%Na~zDFY{jnVCD=3vw1A*T%YCgPN}mbD$_&t$6hvUPyGEbw zP>j1A%P`U@_caj%$}v;N7Q=@{!-pj*y&Vx-dm$&8u;spe%D=!}n>OFYeTc5M8d3Ds z5_UeV3VF6@&YH;&;l4P~@4 zWKaccte?|C_C*s5I)o*!im8-THIZpzLAQI6Td>$?6Qu>O2CEta*0&4+Wa(K?p78 z+I^5G{M7W=7LvkAW}ctk#eLV7!k~Y5e8(_tK8#!A||Ci zHFr!o4Z4FT@(!>!>29$b=%zzMIjh`@D)^Z3;j2)f9<~7+adUQta)9WdowEw4;YxMp zpi0BVIbH;=TW2@d8^jP!!JjxLi%vSimumg1w4SZsb@1OD)B5#kLIr)6+Ilyz77&mw zs7S4M1IJ;Ho@1Kt1U}%V!$CXU&r^Cz`;gky1Q zrv-F_@zQ%57C3rVN!2p8+O9W|IX;$|w<1f23S0ZQbcopojtsM=hNGeI`cUD~;5)FK zw9qA;!OjnP+6&VN74`;=loz@r9(-G)84BzPR&D0PZDfhN#V3;%Gck8I6|FMNeXX(e z!QA2L%bm;)Cx5H&P;KWoy7`A?^$TNZ7z=CXpvmy~)SypEYt8_BPUJ#2au2qKTR>_v zns>nTG%_4#qhW+G35|U&#mH_q;|}{sutblHjwWRgk;$5mK+1Y-lLN3#-@gnqN$@zo zXebiYQ57#H>Dg3joVXxqf?MnX6Nqyd%2^Z2X>c!^4)wrImy6*&ZwHn;(e%$Sn>)<7tJYn5t^7@@EiRoXGd4Oo z?}~N|2KJFLH0$U@Rmj-q?}l1@GIqo7xjCna4pQt>@MjDKZxj*(&Y2Yap_9WAT?<#h znhXW+033<++=K!h2?kcx7zd$X;D#5ys*UG<^YN6U=Z#oJZ~DzQgG$hZy9>7SKo(^~ zvNXPxiT-K?vQ>r|V3vwZhocAfg>vY#_i4AA1M^tp<{%Yq64@e&CCS#bn1Sx-Z?Ty) zCB%jBpU&Awi?2YAgJTaeE#9matB3(u6bdv_1ucHhZ!wWq5hd-M^``YllPpU#n`Bw9 z+QL}sCJvdw9#4(x5FcV9dS0C9WtXYy#qrVMglyP^&a+h;^nDh+I~0IPbUQgKoE$_} z+?o(ziHU0n*6G@1*e^rbn%b~+W+>U4aqzb2#4%|h_+6kCO#PH;nVHjIVXXrgk`s`` zx6M@4m}E$xAwyY@VVmjx0FirGO?|>8K|uON zN_u-Mkv#qkKl%@FBBnH-6XA-;@LL>hiAi#CjD_{1Y7EtzgVcA zF9Q%12_MozE2j9QPFe*Ql`-&fJMuz7E7?Mk;!xz#j8J46XQSPf%e3rfb}J+fY%mki z%C{!FkfCD z5DxpHZp?fhIBW*fZf@3XNp3IGGe+7?c42SABETSTW02S2F%UGo)D3KQd^RG{&@Ei! zRBui5^@o+Xu$V_I9gp+mVay#-(h5$7}i$}{%AIKvd6YfZH z*lWdkS=h{T!>{=MZxOa$(svnFb_s@Lf0=|Rf{Y14i1@yJp?VwrV1j)0#-5Pz`fUS? zZ#0)O;FS2&&3N8*u*rmTfMkQKu~VAid6;Sqm)F6s1X4WVjN&@eeSu-fs3GKscsVUtt6 zg<;qNQP;c0%_*aoOiBmLXAy0)O+T{um*324rkhE?(MCJJ$IaXt%14pwa#@=2yVP_g zo*^OtLR$J30Pic^bPD~NXGe5k+ZSsLMy9Un5nJ0Hw4h)F9U@`6a805On`nb-~si)*qA*CuRJM>^q#3|+!N^@2I{O$S&wBfS|F$RPtyx{%=H_?VsL_yF z4oq`xnw^7!KnDpkK}NHBZhElK2~)^aF1zRi@91IaTgDs?=Hz-G=|1A)zc9?$mLfjJ zD@LEN+>IpBIf21clwo*-!Cvg#biK_-;u+qLC{c@>d3p(hQ2-sM@W2@(hJb1YYkA`N z+D>Ti?E-}{(VEXX6E3g8Ib$#v6evDQVmt#|&l<|4!BMh!AEw*+N1edNAi7HqSi712 zB8I!aNFmyO0N_RPHpa z#89Iz3_lI;^PbUjx*<&;MOc01*Dc(hgtX5z3K^f(9EG3LhSomh+)f9dg`Dbn?Q~Es zj7)^N^K&)Zg_{!9^mHaIt_*&U(`P&rD-3kAK_myZijtDUK9Kcr?uLM4z0w`9tyh`@ zPCYxzSV}Vk<#X}XCY|61rMW9$*u?d#cMDe}t+NC=7i(C7lAjd*cRI~W^|`dwP~l4U z(O`BZD5q2XK8!?b?@OKHM&TdJ^>v-C$&^IN{0|HpuXi%r-TZBad-sMkDZ|g}9m2im zx44*jS7i8s8$UXHN9d zxSfwg<$Hj+=m&cEI1e}5^(St$Gl@Q2Q*bAR`(Rr3a(U)oCnm+@{YF8Rn!zMK-~2Mo zi_0)KFp*-Rkp$3hp=m#e8xWp950e*QyBUBE&7}te@|&waq`CBD;MQo?!_=4Nm@!pP zh5|=S+VQ8;(%c>f0!^mDEo|tU7k!IdUGVp&?*lBMY^M9MdTyiFrHM8FQTFXJONxD; zpvOY_2tPfcO!!|N>>J-0gd)bmu9ABo8&h-f#+$f5Ze$4R_jKWOb9rXYd%! z3d?zXHlwM)7A-EL94&qhr*QQd^Tq=SJ_ALylIJYyOp>rnw{Mfdn4{hNz3jaUq5+{L z$*PdEM%4c@??wHu>bI~l`Dv2+11o*1Uh5B=b4iCp8PMl-@;IptGj06?OnU zHnXZnOW+m)hJ*2E6O?-*qP@F1pmY*tIYd160S7+yr1eh!)@|2eCB;&%K*I8h|T9acr_xJ z3}8&N-Bj!pu1aJ)A<6B8xX<$%T6rxst5bzRX{xfXSCSns_VuF4%gm{PYtR%d@SVcb ziGkQmPxN7eiw|4=UJOYF6Sn%I%pto^=<(O=w97m|+^rusI)&>D(z=&yO&~2cxwA;Z zOjN8G_%Ajm&>R^niSSPT20PFa1P!$|x0e1tWp}+~IBznG)Pek?V$8?`FVZh=#B%c2 z${{NMxEq<2;pDG#GWR+8M9R1~8|EL%JnA44MefZtM|_-AfiLr2(r=4HB@Q|HC-AV6 zgL8H$a!n}zU?_97_*rCp2F_NY%(YJb$xvicHa=LPOtd?0?#&J5$DGVIv6;u+@Kr9y zce~-+(FeXoMVNVC@cp+U=NsslhB_Q6VVa6yk%vQ(n}Dvx$wYlT=0tAgqqT144j_^B zAvYAc$W(?dLe&4;1csxztlNp)jMtZE3ONyq+zc4_f1!IMmoRhOu!C9=1d?DbVJ9A0 ztqa}7ssek9a``LC)}y@&ih#Ez%NaZy$=~BFdJq_aQ6T8-HHPISJ84;wYKnm&5{USuI?fFrR(#<`QpUIr? zDG#vUKZFrbdRR!OjsvVAA_mYW5R7?72f5at%O!kZT4D*C;Nh70(3?j$M+%$!APB5U*rT(T+s(@)NhET$^+Qar z8BI}Mq=9$eQ6`@Po$8IKnRQMfX3P%|IzC`RTjmre`-boO%r&xa5Z;3mHM%y1@{c%~ zE79H2caSnT4#Ukq%DFx+B*HXey|OtF%4gZ(eMHq$0Vfk(RX({lvh9*5twe?d2h5xt z3ZJ0Qd;@kcH^x*MBhYQAFxJN*0LsO<8#wN_xVl9a#RG2P0lT_2%`}y`C&}Ib-an}5 z&?Rsd)?l(eA%OFNa4EtOYz70wHyGtKpKuL-LF+02LIHT647#jItU+X3 z?&NIYCKTAh4V>|ax!K3fb|Wma>{;D7V0Z?gN?i(q1Xd-+rzG1maC2_E(}#vWVuz4d z0$u)8Q@u9s6gJ!F@|tp3zc*IpJYiM27zdUL_G~Mat$DJFRweCK{oRpF$t<3a-XL0 zV%9SPpAgkWY%;9~=6Z~La{W4GVVb3C-whzJ&tJBvUN0PJWBuB$ZcFQIW3<}b;;n9U zILBj5%=C>g#_u>e`)0%HbTjSILuQ3z4K1jb5>_WAtR)~V z07WPiIBH<-llWyoBU=4Zr|?+PM&Vm-V4bX#9`xsXEN5}IaCM61%q_-QYV;>you3FK zC*IDj2CeN&4&XK^MW<_{ogZWTn9>|gg{;1l*dNMV3K!C3j8jE!2s?x!x6F-lHP4e< zhxN*bs4ng3$Rzgyd^_FEBHj_x$ECU5LV9f9ZsGDX6h;;fPJ{~A_K7LJ+5%0=N7L`_G{;sWXgDf$Z0w{{L`WQ_3G;A@NbJ0XJwei(<8I(DcG;4mB=?i4OFYG($Q*3 z_lTja*V;JWVEr2>-nnPaJLnd<#5CZNhS_By{f)N{)*(3`Y-2axE{c@2qkdaqLXlDc6Ev-xCg@V4ixjV$@^s1Oat=YuM#?UP&ZaOfI;EP! z&->0ZK)ESyW-l1$T{&H?m_Vf}ZcnOyOQk)w8~qQZ@v#;zPxDfmV2tC0br`cz{MM)@ z{%%FBY}=r$9b9fm< z%3>kb$MCHsc6cVZc+-UH?JN}Dlsxt~Wj(cef1X;wWP}EkYcI}8{BtqaIxx>SKb!bx zN59r9gE#mozX1Eq`H6qXPqOfG!V}M*XQP$T%WwhOs|WBT^sVg@ZmNu*6W$bBNez!K zaEjRdx4e3Lz~%%??4nRhH>ZaXh3f{p{^X4=VsQ99r+)Vsr~dSfq5Ng`;?l%FH(Gv* z1xYvh4Hn5(5}a|ggIPHQRWfC_U`w~(>H}NTT^+s=PS+moEu63FJ75p6ApDTz;rOZ^ zd2&xFI_?&IzzYywn>1fev|+m(^`Ow_WnISl@FI>N`li)J&nxQEfn)OanuuRl!Wk5A zCp?jsIz`8vA`T>`@*R3l8~u9C=W?8(M7!%d1@n7rQ9D zqNv4^%7&q72#j2i?q0H-D#%QJof24BA$gq)OUE(jhGZ7pKZz-zt7EC4*E{7>|q(kNT-od-_)2gpcub{(O5MG+0^6m-V zn_`5~{_yPTF&o+o(oS2oKc(}k#x!!no?5cWS0#eRlPYX%&G+!z<{zjr1Fmi1++zLdPm*R+*W^8r>Cu!YGl~x-b6YhZ z@XRUfb=b~f*Y6!<54v85uO9KbCgrD5oXOa(iBQ`Xs&|~?MAss4xDz7`j8su*akYnQ zr<^~dvyvxn?SPXuC^?jv)-jAW{;9}2xk-u0N8qgn9Y1<;%J=RCLwim9tsceST30cK ztt*F`cg2_BT(78jMGgPa6$K+!KZ86{8Z#7^`9a z5#QJm&h;v`tGfmfG;_{V2Ggp$2haST8!d?^hJi)DfF`~*8Ux}+4d{Qm|3rp5oe6H@ z3B1W;_$D=T;LnN5kGPQyb-CgIFQ73AVa?0w^5@`ig#d6}yNHS-;&tc;K* zPE$v0uw&R>nB!;Tu)bKv)F44cM+9JpKqCfkvyA6G+?F7rNsI)}o`LN{-{4GntPjpFq{3Od!azDVw|x?rUTfAE z80%ZPNu2-9FiZ&7g9sKZ`3pRcd>d;sLqXYAO&2?^`o0>63lo`u(i$AiepW}fPwURQ5pJ_+R(%h>?21Q}tH6urI@XT>ebOL;r z9V2^A*~C+jq`BHBG0{?YA60etQI(?ZpFveHwbgd9rnSM^iu zGOB%+6m!J`>zQDpSFc!cD(;o`3S%%DNN?ff!RWBB^VS=(Slm0wD6AS|L179angA|C z2FZ7L%O`1wD`uO$@D-e;V?2_;O2(h{ShM6tjb6#$n0({Omj@KT;u#1t{CbG0q5_&v z;1t`Uk`;pD!z<2T!XOCKVuKAm7>w}Iv-T7_-@!?r5ma7kh|&-!GAuiqjN4l2a_r!^ z{gguT)l2V8kr`l{H!dB(Wuw#-T$}~7^mdLog~in8kg>lH8crDdE5`q8f0u8jPUA$4 ze9)6ud6|`ct_cK`Gd|bK8Jhve8{q|ic+wBY8Ox)h;PPEM^9l!s{%OPnH-3V8!mY`8 zG_2f@9bre!2`}D~=*hTg@?CurNy>aNZ~t-%bE;2VHd_^JXO`-(AZ!|)(TY1VN_lnL3OSHFiu=h}6ezrzw}x*|wiHyRu>u z1)gk5?POmV_&0K!gZ}Or@KQt;Tr5e*``PC-#HgqmuoV0|)8AF14)PS8eOM_idLfHR zj1@+>QGY)mJ0!d^hDA-*W>WV1mFc2*Kdg3{U3A(5ID*UgYjw*wV0myN=UIz#z4N!J z-*cWoI`G?xMNVOA|gA1b;o zLFow!^a*4yMYqc*MFesuzx2HhJU0^X@qq*~LD?V>*%{2(7y|j$50V6O7teKeX^HYh zUn;1gY$F7tjUMrS67fguD)aX3f|q&gXjFMOJMr#f-VGd0pMrSSA82fXMzmz$0JC9~ zK4*ZP@HUO{=RWvTwAFIG;dvsiI>C50ah3SQHKT8^teTg|Ie@r6|7)MPR7C1%qs1P4 zaI#Na7hXW|{%GI($A~MzS#M;BE^YLgabk$3QgU!{jB9K-Z{rOE-uk$4jJMu3e<9rH zfWS230|;yYK8Qd0^mT(qfgvBsFGH@_@*%dxi{gC6@w6NL9$0NG#_+h6-ukdVe(Cx$ znhgHR(DrzX6R+A;eE9uT4%kPHWunFq)CeIOlH@iKCxhW+Ox=RXERCdT^d4yYQxy7% z>kNr#^j@bzjoukVTH^BTaYeEk?7en=-v~T1fKng$SAY0aM(XexVoeO+_{_eKi=5_k zW^D$<-$W^jdZgY!GLTpmKfwE^{3Nle%Tosg);^60WqtFRwdlOQvn{(`{Zkr}zB5=y2Xn|j>ntX$+??{2DTuC4qfgwM0=8Kf~}$E4#+H4(l*+G2O`;&udL|)OL;62pLsI2IG^ig=2o%O{~<) zl+f!HL(Gd*e zy?Ih#o$ED1l$vp#rfG@wOTu?y!Of0O$dG1(c~Oxqax`s52VZ{EE@WBF4B!noh{m!@ zC~Kq)0KQW=_c;JG^NKe(BZ+BN&1KX;30s1~F7r_m&qwN`bCVx^BlwL851#L>R8Ty_ zW2~B8bh@U=5_un2ar4$Zs%FC1u7R8%^x*Qg5F_4R?|0AjsBkstb+Sp6r5|O!2gVM* z@s2*v0do5_Z4T;w?d2OIH-y)@e4_?^+^bUPGuv_o#C6HsGX!CJ30v8aRiIfR>x(gKe1$s#eA*zxF zDlzt-Yg1t!0Pl$EB?bmWqv(+Aw^K#Un}930cmoi6&Tu15RxcfqQjqAhddXtm$1A2e z;#o+JYhY%Q@AFuR$@TuvA|VSVh`Nd)gje@XZ3{}_U10wMnw}@yQLQRQRE%w{xHasK z;`Dm-1h!Nkv})c}-*B+>tP!9``>(hI%xS+*1+&b6*~<6r6VbMlCluGkZkM-F_4e&x z)c||ZO)$Ur|S@Q1{R9Go3E>+2elCVxmay_q^BH<=;XPfI-OQ&<9b`#4+ZR!e^7$ zpP(qj`@nxY8hZyn^?7p&uaoDXSDJ z=^tsF86i7`iw%%Rs`q0;T?PA=cMe^|<}LM)d{h!0w1z;UYOL13=?eRy0bNm)n1=sO zZ&SO%_`@Y$R+*PC`P)xu#DW_V-QiC`-v0TjLZ*R_>yFj_+Z+12 zgE^J%IE??0=8SA_k=pZ`kst|O8Yf!*2;rt%z)EBYPNp?3hosohMNI3DUBAwOd; zF*OU)lyUWH$0QD&N@-8^{#@*y94gZc+mX+oBK!1~LJwJ`EOthRq>W=dBU!|O9X4z{ z(ZeDIEIeOmgv{^PQGu27eaT|{yzKu7Pr0iyKVyk6HFh$86Zk9PZzO+t{AF7?=h@BQ zZy}fdx#3?f=SLx5pKTyP$1y}%R!xm=s!wLj{FD<-zsxP}u%7)P5*Rn1aqtPKp2rOn zdU&hWhO2iDsu)TF0dv%i!I7hG&>~WNWhFZWU_;%fW*7VRYTl>wKK%v~r8fqGBTH`x znB+N1o@0`OlpLg06TA3i<$Luz1}#4K+{-Ro@A2JdoXE2RH&|71ZoG;Cg1e+dc4)tw zz6^zTJM{+!-4;#%oY66y=)>_?fnUE!{#x=Rig5zCFE`r7jn*^i%-4MKc^dlICGPbg z%&bpv2;|o^UH8wgoclQ79yK;7_fN z;ugge3}d;iUzgSwt#XU}PiBvBqgSu_&YpOv2uIBs6Wk(Vk<579DO%}~LovJEaB3KUuZi;Djix>|YLwd2FzSB5_JXghcra6?MZgq=5p4r)&R}_M%?I-HBIjG&0($SZIt(hiOD)2BS9??9gsis<~Ef z+C}^5aLhest7~L-iOv3X{8GY`==e#t+-_7TNJ79ToT7n7Rik2#Ein$@_!MbKZAzX% znV@~5q{+#WCPF0PNfSg{xT{9SKOiToBD31Nm=|}_rgHgL0Ta%KMJs6zj!sU|VOlVm z3=jCNa5d?OETFfD!2!j|Q$rSMteyNLA)zWhN(9?@9EHPd=vtz24dtJ9ir#a>h87_) zjUj=FoUZi*8weGhbhglBD8hLDZ*hxuXq@vq?IMf; zhClF$LCdh=1cm{L`lFZs)qN1wRioZ_L63MNb3(3FyYpl`o+5%I_;K<)=n`L!a>9Gx zDFH6=#{3`a+(0Z|AIhjplwO$}N>a|Y_Vowx@o&J%iBFO%`)K&6Hbe?87t>1%zox`D z^Ylc;`GRB6EaZ7tbiz@i)oC*8B(`t$MXVmNz{pWnP9&Sx99v;>MSovnGW+2!B*uHJ zd2twANv@n0XZV{aN%&hHIVo#_iKk1VrXU;ntf{78BtLxewz&r=9X56Ub$zb_HkEuz z;P!gA^*=sGk8wAUgB*z2>wTGb2mow~yEOfk-Ek!@fASyw#IWD~f&>mB3JqX*2%LGc z;s*FQg87Lk|DV@hlRALWnaJ}>3v$ztMU3zqoZ;- z^5G_$ExvuH9bJ&4J`l2Hzax9ASxbLQsaRfOeuTf31aKn2z8Bs!??e?)${U$@TN)5~XmzO{ILl&I7Zb~H<}w5cLb`1s)fx*Z1YZbrRwGZ-DD?jCRFe2 zR=IEiY=PR1XV`DF;43Fm?PHGWmVDQ>;h2-jbwuaQuKBAa_0J? zQIE=BB!kuB4C|S_G*uPnkz4sF@_}*qR;es&Y^xJ!yDd8WUQFlsdC)fh)wWp#6lL}H z*68pe1;V5S=H+|p}5U@Ms87Z>#Y9BOfoD>jJjm1abhT60jkbCjMvu89b6t_ z372_=J^sc?>u#`j$5d+<{#hH>lE!K4K6X`3+kmss5zZYh?@=nI)JGfGdwJ|5U1GYN z)P=p4vo_%rF>A9f8+F-`E9_j#W%@Fu)+mKH#lyY&;1nfwc~i@*WAAcXe!`n--QUa0 z-Fmr;m%Gf%rF!Y<<^HKwZ;Zbl8qlRy?A7JCF1yv9LqNTe+^2CL7Wj{TWZ~5N!Bp#D z3%*Y4bt>fWZ}N&3p2lHg#(w49M*>gbNB1c2G4fJV>>zpPUP0ay6fqwyviJD&`i6-!0ojiG5H0x0%MvP)Fh)AN?a2_axDIUNkggY|K% zEdS8d+PF2&E6qI3$8X;y5)4L1e_8p1e(s>PozN6lfBPzlq|q9~Xz7%a zJTCS~pX-5sKG!25uE)_#b?7BOm?|<~N-{_b|UhR_(vT z{9GoX8l24H{ra?e9A}i_vy~X(M2BCGi7EvjZ?P5)eF*-yHZ-kA{14~z+_GtLF~FOn zS6o~c=n2ki5C<%?maHrbuMrCj!UD?-Q)?;9>=_FOeQ0bn>pJpZm%=T3gY~^|%hgG4 zd3@^4;VT|0D`c1Cl6YD4IiK_Oh)I^^uOt^t(r~_8!lNJJq^mDsL2}~D2s&dubB8!z zJ)Ezo?JWs~GT=%iLX^W!y!;FKK6^U!*9rDC^=}gF>C%@-SThEHR}XNNW|8m{XrX3D#TH!)>App3`$rcD{!l(9{>vEKk56f=X(FS~lgWHnuHY*1hWh`d+?$m>I`9rYXF9pU3ssZXiSou7!f=jR|q9NWV&d{1A&L^Ok^yLh^hocHYk3UIjmeF-u94JeWUj?tu9>yuK8fS-;q z^RN+Z4v_N$0}GGKB^=x@5oAB0e2~)lR74@C5eN?P#dpclM%xc=0Tkqq@|~)1Uw?&2 zHxiC~G09X2m=7CRRN?M{6;e{~J}TU(3fHOax)?H6+f^Z1+K^;S+tt$dCBVE?s)c^1 zx-P?+*DZnEs%?NSgNrl3+SK_#XfiR_VX!5r>no+oPJ?#p?gdj0cL+i>6J~(N|BQV~ z(9jw5)uT!2NdwX^AF27E)j>9A#r9Lu+`COBbFT;jR5n1#Q>b#DthDo*d?lp8s9V+X zL00X#z$$OvdG-D)|EKySuW;y&`>kNApZYw5J;S}FLq9`r!AKSD z+^huF^#WSW*r5ctKr^gIcT1pCQy4>EXasU2G;ZXVK8}5)V;v`&D&`j4g7q`o9%F#7 zS*#yMp-x_Di|JV8x&I+}(BdkAhabU{!e9S~;Gx?qYm%bhTQ4JRq2X)YC+h(%^u1wx zZr-Z$pL>&L`0GgX=tC)7%MEMod<*xtG_U7#5|R)G>1^Xasui)9^`_+!voDs81t})v zetRqShUI`@q?)9=aUpu5yvf+OeL&WS4goIzm)Ot*KW7HvTo<(JX^c(j{OJWF@w6>U zd+W2xiFJY{r0h3&mFAs8NTyq(S3FEQ%?%u|>vyAhe;?(Cc@TIf&c49hV1UV+Beosc`YCXG&(+d&xXP<9RIT>%98Vrw` zTfZ;8en)!d+Ic6;n@`L;8K=Ct&5s-e6U-6uuw?DyL*gwDbH7W2h zP5LrG^|is7*DPYDDXIH?{#biTiI?#|+MaVhrakup)PVMYYk#CY>4-zA<5NL!pZ~u0 zfYrj)6s%5|-v;{I34e@lPGYm39o}t-h!te-Cr_X5KQ2b@k$tYPwIVi_bfP2q753v$ zDTRhL&dGL^9qqpTt%Sl8Mz=+5=T~sODjvZHaAq<76Fa?n~5vmKdqBpc6v(*GR09nU}MKYx=%g!FYmcZM744uP^LnaYMhpYM5eRh2jZSuMTkVj|_FzSfaMRWVTG9v2v^cr(aSW zVm^a4>}R)`9YyI+Xj>kR7;Ai$)pUPk4z*domPImQ2ZbSDr(&(KhY54TVITK$dM+C2 z3kh4}=<7noU9+&X`raQH;jS|ZH#Q$~`uc5dsQ5$cnV*~agtKmTW3Q8XA07P#gp)^> zBj=rMu5kskFnpemGtgPsC1wLi|G4t20W~C)0Mg3g7?*^=8I zu}7@he}ik=#WAa<)>!bsKlM3|9>bqd;#$V?BB`(a^B*R-;g6JAzitgpJ9&owIyPEx zSy|v@a9(3Ve&ReR?sHiyqt_{|oKsQ}G z)#Tk?miaD+WEG&oZsYytJ{5Ldp9-rYlg7J8uxfo-8MW>DQ{z*RT63ercX(?PH&<_3^}JU+5Cr9 zbZhPliCX5qVruEv)2-Ua>4H98U9)Ej|Nb9_j}A}5N7C2b|2M&h$nC>tVq=4;c9huJ zu-L?&j)yNbNpCQ0TZnMw_frr-{#t(j@}WQee&VIlR(L)`>>Fu3|He1c{C^mKQ@F;T z#F^ud&jxbiozEY&o-P7V;n=0+Picy1!zLs{+T@KA(wpFrkG2Fzwl#8@yo`(>;-eeR zAt$_L@^0nYq+II;Dc5@C!d5f`L+PVy)5*1pT<jeXV-b#-sbU@u(XEUoTI}52?G`m0`bb-%BIM zgYO+Fv$9v|g9BXd$4ZWv_6@yn`-V#3$g8FgcIm$BpLIR(&-&`1l1Jl|_29N6rB*i9 zum=xuSH4Xi2KRHAPt);T+)tC#IF0pG3266YFPlbV%Dpr_eV5c>Kzi`_5i1+3;0&y2 z_hS+*-~SCRJzVZTZ8e?Lq|^G(T-v!jNJZsaY4(E~_y}X%gOYof^5Fhft7*$FE9a&3 z2_WE9E9bTJ5@BM_+vy|y2XCb3ktnrt-bgnlK2oox%koF!rF8kx1A5Ma^zEeVYOl&> zD}p^n{LQL80oy|(Lq@o4u6ljOl^0hNljX81(8kACeZ_Mu*Si?mjqmyGxsPT~6O!`0 zP2B)Gv~6bvdToGNgcmc{D?!KfFSO4*itIDzHMIfa(NH02|r!{iaN7#+WZZ z13Zl0;D4HD0K57_0Q)$8CZHbn za+MGMrHc|zE`LV}+VjaL^ecT1`tzp&5Sf0QdE|T{fo$YE5&e&`E^%yIQe=>se8zsO zDK;MzJC5DES1QXPOv+}he=2MJa!&|aZD3saIte!-<_#3I;V3s#jf7zyBZh2X_{uk$ z?8>ysYT7y<0Qv`rJZ+%tCI*RV3I>wy50X_oRuhPj$F%tj{`~X{>B|4VxIG3w+9RX` z(m&fC)BgX(?MWRUNZxOcGzc?p;caGDiPxZ61^m3cIEj{diNvrjF@B-$J7NGLxT_8S zoiXNL`4w-#hR$nCug|1E;V+ay|G)!g9)aWkFT!8guJ9N5&ct7~{?*Z0+PpDl(hYlP zC5E=5UxHNxdxPJZ4U`9)6ptUr- zH5gcj`nv)>b$xrVx+ndq-v)mVex;Qau73;ZFpa}Kir3Hi!<*U|Q&?|L(eW$8i_7v? zh3kXsKPt;;EuBAzRUY5~lHb#^BHXC4-ARfPAX_jQ3i21`I#=u^fNqIyjYB{>%*| zX0FfVvX)C5la`pjSjV5?{RS+b48{9ve3o)1e$7~r{@(+Ssm7O+#1>eup%ZO6bWbpl zCHVFKNdJI!l{IFP9`dOteHy*`M`jY4F>J*g9uOoFqv`PHCDnb5z4T^-0R!!&N6fQS zd#R5nzKhHMI(umnxGJdUzrkK={03JA>|&w=zmIK`eYXAf(og^=ChVm;-j=vUU-iwU zlM?1q;=7%~!zaK5DJz-Gr83pBkoP>WV=ldzQe}c2;Mn+f(p-A6Q@l;)(uAXBboj+K zCx^;c?wh{36w9bQOP+Zds&T`+`^}{R$pepUhXe0|erFz&thGzB)-Hum!E*cf^U}Dl zcpAz*g)oPY!$xER*$nUNLYO-Q?=OF^Q`e1hU?^{rAkr&AUCMG%L*!*wYJ}H zVO9&Wi5wZ2JhmZ3PjBUdagx*yE)TEea%>Zq@|DJuagUN4l)PVD=HYHG$9kzOZeD+= z*Nq;f-QUcmw@DXqqM1jsb=_&M9p<_{o6HY2@OTCyQK}Oo;!g*Q)`-=3F=BA2cuHK2 zMxU0-FheDuZs6k?%lY`x9TxX(^2)8zXBqgp5MGI~`+g>_d_EKkBoA2)! z%bnIHcb{9LqdpxBw56C!OT+8yPg$; zmdcZ-qbzeZK8&MgloqyGOHP(XBWL;hV16yl#Ap^CK3#@)vtbNd=^E=9#X4*MEhZ4T z)=qGu3(d^Q64u~Lui3-CL9x-A`&u3&}AEfz=%YSA*6D%q7nG;U=t4$#0DsyAhJL?2e zywuFoxS5z`0n~If;uMz-1b*M81C{I`({v0)F5wT%x}TAf(8*pXHGSIW*Wuec`h~#j zW@x&ZF|1*h`MvZ9fX@BpJM{}$U3$X2NQ^%KzGe#4E4fnLXV(5?516(bGV5KTOC1G3 zPPUg-6LN}OCxv8P_7wY$BWNzl>mHM68nLRvtqkeBLj?I)Mrnhvp z%G$+e$INHu(V(Mc*3%lHQ&Mf)R*>Uaa{Luv{}V8lG;y&v1?zVJX#D^{7xn?VPJpge z;d}VBv#; zJz^NTa>eQ??FUryH&pV^s$``q(UC0^wtieCZ}nAT+ObaU=;^Nno0l4qu10L&)dGrs ziK1Uq(eJA0{VJO9jc1SL+kHi^R2QvO(Wm;0UTKOxY|Lfv3G|h`{~_i7J>~zK%3rPW zKm54ff2XhL{@y>xr@d$P{<#8N^KuN0W&++angoPrFU?du>Iqpuj{L#5Blu0 zfIm;guQ9;uvYgvZ3$k7}d=dkcF+`onvuZn;TkxRxe!`RDIp34QUlX$m{cT8g)IZKm z>{KQ6dsVQPJ>gh!PraygK_aRTY}bgmZ2#AOcdz3^d{9aZ2gZxypjUp0Xt}m-vHW}p za$Jw2bX_M}?BqIJ4C`RbTnGoxW4Pty6+F}`G#7c1{Y>ss5cW&P%gI-G+E_1yLFn}_ zN^k?PedS?p51K90!c<0qU^VP*_+8`lpB5O}tu z*CjkZ9#xKcOQrPvG41eO6MtGUquGwgZl9BK)G8z-g50bU?q*$H?j+yc>;-iLUMtz& zW8YBdgl()0`aWlW1rY4!f6R^kUP~j!?JTiv>jLv}#kaIKi&xs7(7FXlfqmWE*Po!2 zdQ8o=D=J5$aBFypa-nxasex$XO1??9gqzJa{9X9Mw0{XUCi*gs&>3}Xe9QAUzWM%V z6K@Z4K56~V!3Z1d^ZePDSkMfgL~lM2`_#bs-;vj(@e!+dqITWW9r#y|x(8`E_7z{A zaHhOVESA#Dcv*gj)bQ=48Ouro+sne+%L2`4^PQ!7dN5eL`KdR8;SFVlr+lB$U}0TZ z@zObU{mMMW6l9j=A5;Ear5U?R=6?}ozUTnD{2S8cxera@oJSmb+JLkzmTmTL_rv$N z;Je9M^x8c#t+6{RcE!}^ohfU4_=5Rf0=~x5KzCWVyDZRTEjj>r>kkBrH$Am57~Wh~ z*p&iZ^PGkO(2dRv<{wfSdrLD;2IqguiF5Ka&@B{n+=pB0x1Vdj$XOalbiN!n^tFK`F*qO3A316#$uPg)jI?BQwrGaJEqBg-7E8h6jBK+@yg$Gl> zYnszI0K8Fv_o0f|Q=73dm7dUS40;+E_@PZoG^vTb_+w8;p1n|CnuTWzk%uW3;PZG>=U>+S? zm$2Up-r{yE^qx++GQfUEz`ieFca>%CHRDrSxU3)8XzhW@6~uiIe*D3}`g_6J1g!rG zr$@i#@VKwBaPnUEI^ zyj!f$DpZ98z;iMn&TRsCFMGTIIJiDmTG-eRaiq4bvYCmBy;)7aHxR!G{7oG1a5i7m zHrXngVFC)AB!td8x_dL9OMi7O~h;Q=DnrfuBVd)Q=-%DTnp836e)cxl7%DeTO zf*(kNqoqh7y-x06x?_P0Nw*GJ*4%B+T*iZ5ne}JxHc7e6&+Hg38CMtHBN!ji<+$E#H<{}7k=FDc zLNh*nM8ylhEsb0%C7HLehP6ds#mMmJW}4E5rC_oIY@;x@Nrp$RM(Saihx}$`Z?o=? z4AFI`rSBwlooJ@A)Agj-g-EJ}*E4!39-oX#Dg12`WVfv265C9dX(uG>e5{@wK?JX; z&gMG0+84q#NLKC7<&HFOscw?-i4$Qg7*#oY_XV?nbl(!G;3IQgcb=x{!8`qt8}d#6 zcbI>Fi0DRxe|b4^0#IS*PBVjBi^n-Me0&d=>wMFD0S6AUDun9C$SBrr*Gk6FpTV!qk*`uULOfbdSzER zW-b~Mf8&XEsRG4mF4KF+{_s9!YA02`j7DPrF}9hYb-zZg_ayCzs|T>x(8gx%($He; zX?<(f!M-c8Ps;N_X=t$%ESo-^E{p+rXpl@U8&%YOl-w)JPnWSfHOuaF40<^R{>cds z0I@A4n!}D+w#Eo!u|=^W+hJNEDk`s6@_xPQZRX%xUiFWUPmiEGunEb(t88t}#(v{t zdiiNn`?9{;X-i^XPD<_S%!g$*@@wxtvvy;vTBh1P)owN!>0)e7re{p;$_5=JdWM?r z>k`7d2*e1*xSum6Shei_kH0ByCV{3;UljgLA8+<|j2aJ)&2iQ1r%6qBGf1Jriuas8 zMjb}qKCL~+EXG5cNeh=hRH;TRI^i(cFnmFa&D1fsf;!5qx#{D9iBn-um>nL^IPs;3 zasC`+cBx?LWDm+_dB^m}KV*{bi=o;-KPz@!+FPPs>Cc>L1WjJ(bJxqKe%El*Avb)- z{0>_n#>ZQn3U!&dZ%h{^0EozfAgBV5ZH?vy&h13~f%>k=)UeU4HsxF*i_ zBlr?B8OtrQBaatrJ!HFNF_~>W#W-t?-K6pr5UkY=;0>WTDfk8=V0UnGmn>b~A$|+> zHCEg@C$PZ@Y*x~Jj4HmvwZ`L;N=nxny%~68KSZ+WP(YPlDd3a#@_qnK{1W-x=)ncBTMi!Dbzi>m`!n~ zWyvw0%Dx2IZza#cRit98WJS%I0gcN9)4P;s<*jn-IJQj57DGbD+`CE~5^FH*WH0ug zW2co`W8NEUF`L|YFHIObFAOTiWx5d77@Qy0W~}K`ks+aNDa7r_!nu!#;9LOs1UK?$8l7@;8TD1!1Nl=7YJ@ zI(<{~&3sRT9 zd7p^((5~eA*cD@aj<<_m+KBP}zh!xWk&=+1k5CW&E$LE{K_foR6}} zFR{A7`U$HGgh&{hYA!s^n4K+rqO+KIFAm2lhI^Ncgco{Gq7y6L<~QtcqX{L)Nr*Y@ z&B`H;T}gH}S(b=rdbcZ|4l^Wgz8&Gj#rmCth~`ysK2hEfb8bJBhw}Yoo*SMu!av~W zM|?q43(j&#IYUZk*gW6|oe7^LG*Gt63rg7>V#d#jH*v!AtS{S~D0ypyvv0^BOPPP% z$lMI?8cJs0N~ktYyfGqA#t3NgWQHg89;<<=uKglzm<9UzKl@Dxsb>xkh|C=kUq{gD z3@0)^n;5!I@w+q6Cx&j(x~{`0*|$Ze@1{=PX`H?nb#|Dp&Qk-I$tEq$CNS+DVn{vX|w^P(gBTt%eItE%d^1Te( z0J+&IULzp8eIPfFk6dvoM6Kg>04-(=1K&v0uYvG|h-V0V$~ht>XXRdpFlVv!@zH`) zP6UID58AZ?4ckd~AMW%`q-W{76HFvZ<`v9R+5FMbYXa78uADndNR~HwPx=Sv5;dvCE6rIb8%F>>gx2)5sHW)B2(I zlj!KWdT%uH6gQ!;4);oT!kmoP9Z)+4qv)=&!#!j-tV%c{AM=XNB>$tCH;!>y~lEVkRHr^p1JWpSRMO}ysx zM&fpfXqN{gCE0Fq_snfY>w;Zf;g;B@Fijw7novCk77M~z&%RF`xFF|P&#WV*#;ob%(rrd!Dj`(wLF7%1 z_BViEn3(SvYGG627jA^Z%Obb^DSkmvnI{wcq9+*N1PUe@MxXqg!Y^()Gk4|A0StrV zs$hPX!X#-2CnQBa@7&;cRQNBL{ar~pxV6{~8i_Xzbu zxqN%Q`8J2mkOU@76!3a~0qvvq=5g9!qJ0oG5ysi*qSFz+Kp9DB{P|d6Fkzzt>sIm7 z>M^^oQg?h;OyVI5H3u|~S*(YZgqVtVTh;$ZbQWbUj8T!HvcKX9B<6;%70|JX6!WYp zW)@SWckCe9#9!im^m_I1_u8M~n^0sb%^dShllLE#cX?l44MJPRja;mne^=h(Qz7f7 zQ#6F}R#doHQ$$-ZCm74^;+F!gih zd;heXOfPCY#QZGIsLGg?h4pVm`zcygR0opvWjS(sJ!-Lk)ZaJ!Co@>< znb|^qJ;hRjH7mn^^E3zSwp7gNY{;#cLU?2weyvce3jyJg`l-*~8p%5M)~mA4(|LnD zilODz;r3Bi$!dG~^8aAzpXrxhFk7adTl$ss^GY*_E5%IRP`RHYiuD{J_!2sW!3z|bmK|ywp|Qcv^)TobdA)weMVUF-Tiq? zk)1w~hcswYxvl(C>^?%|`{e!)!yxysK-~~|vzN{YDqFrA9w~~~$5->hL?=9wq`-Hm z3~amVj*sO8d2fpoBuQM@@b0_S%`HWB)$#MKAJ>^SN5{5Qck8Zt@3!jZCDrkBIi@*- zRog@hqqj8uh8)Lde=>T@&wul)>h5!AW<~EV(RKIF*<$;S(fKjpZJt@b93Xn(Xm~eeW$GPJnM!2d_J^3{!S#2 zvd~ig+txejR%z5;62#I^F+s{HwQjEC@rC~5hG6x|U``Eh?1x=-_RG&K;*BsNsgKE(GlP=|ql0hgVb-w926ui*C+A)HbN}|r zHRkrxJR(l=_Rk3eS8*(CGP_8%K&p#CNNAY`)4Usz{b5l{Q z02PA|;~P!90M0SfKd*OZURraS!djTNgBm0HBws&1eV^bLJ__o9be9d3ud7C%XXpXS zX%s!Q5^x-PfT5j?S6uH#rwH+TuN30nX5^y1-n4dcbaU>+G_ltUO@lb3daKvFBQGu3 zl>V8t82iVEOuyYf;AsHY{1W0!EJX2LW>TE<38>_=l+3)C>3zue>XsbJcf)zwM@tQr ze;@m2io5jViZfH>d2gOXV(Um{!byDN{GjzP$8%=p+woOJb*#{5om;b_;T705ADDj!IDTKwF{g;qagbCZ3&2yE%kqW{?%FWSR$@`^_bul8azv)$*=vn zw(@f^PJ~TJB`32PfG-%SWU?Ab?+;H%B?dPoHze89Wy%m8^1|0XmOaf|bT)fpzKT~| zl0-s;gU+#efyxUQtoD6$HAL(6{G3&8Y8{RCPKTqoJ5!z>>ir{uRdrl8ZyrVy%MC_u z87llO=D}6=lon0&&(Q~Z9%Dg%$mc+hB~p?QpF|PC#gB6JVhaUTY_3d~91HzqZusV* ze3Ko%nS*7Y2EF1HS9#|`_!3f3JPHvWb)wKusJ|%gE#OC0)$pq>oTJBeF%;EZoO7zL zEpPb=y{p&P>9Izp8-_Ye8>eIhBjfU_R}2Z?miKYEsS&fMOd1*)H`I`C@ya>F4fiTu zIrk#a4C;R@7vVj({oLJo>MP}^#=(fxxng+Si>Q%5N)CmPS0)Pt4e)U$5)VK zcDqC=9!}Q7e^F84;RWuLSwn+=cofx@731izr575xDM~1_*hMM!h7bo97ay4Q07nzp z0gnN8)*eDY=(QH5fVFI_wT=i~Z71-%7e7i+!kW_;lQ(k*L*1qi?L;X%xFFNzMj1E z7JXyl`iz-fNUtR9Md5>?;^VWf!xaA|n{({f9#C&E5VM9V>R~$JdJ3v;i;UvLt8Lzw z-#3%VDyW$-Kv)`zkI!tPg@bR7lw=)BMa0~+|SK3&YGeGUAUp8S)Zq%`oaM$o`4=o&mfAZ}a89q5LzLe3K{TV3=Kjb|W9L=htJKp^~C(6%RnVnWSCw2$pIej|Ko&Buo zyVpsp@4iCU5o=>u+CQ1D%QQcPj`VKa?{^+*77E^&k^1&YzKz|;-Dh?8uu6&!d2pOj zFB07AI{*+|d>_s5uKexEcq|7ZkER37kQ;!86&k|3OXC=c8aBbZPMR-mgDa%n131$~~pwaW} z$jn@O%GZbLoD{^Txc9p+>+qJi_Y@Kzon_T{du_i)w$xn<}ej z6F)Sm#qFO}%6Jr9{P$|mPhaOOVA&knf5XE>DJ)2xAKV@H=BE_%cYZP9k1u8%#TeEf zd)(G(DVx2~%tUC50`VG(4=+P^xD!)}Mws|r-&6^A!{%y}byenCZb^WwRX!rU*;i$`eb+*_;T zWpk%j$1|*&w`fZ>eulN9ctPLXiSv59MLPQ2UTh-OC(fV!Z4mo3+d1qhSiNAGK=V^*iqhz4;~SdGY4~ zt)gOH{CE6XwXgZ_YxEut#QOz6Q}OM2@t66vY8UwLhx0zhirp08g6ZLN z&1^1-ad5=R2%pb{?Sxmzgh_~f#x6RB6(xG||5ElY@KF}m|9=7j0wiuwuqjnpG}=&6 z6NO3?B&z|R#f@S`rIlK(7O6LoY!ojA;wHj&UA5oZueP<-R@j4QDA@X&&;#QM(qFh|M4RGJkMOu%$zxM=FFLM20z)bDU<5;9q3Z(&Li{N zsngf!_gGnG8lodu&PQR)G;T0cQZFNMx%M zS5~@prkUYj4wxZ*^PywJHo=>V4U%@Fhm9;~@`ebmEm?f2$~@LBkG+gDJ*P8Pc0k(! zer?mHjCpWXFfa7F>cua{nbe|$7cmMh&5KGiDL2hgewvfp(%hvqk=!(=`DwbfrI|LJ zH08NzF7VTAv`rQ~FWo|#0@5&LPIuM+Q$aghZP0gJ&~ycTWP<`tRa6jq{b7F7M}%JQ zN>S;qq1U4-($b@mq@!K^s0-n7&&juk@p)d77d??~l(oFe?j%AjUO*AXl;+!RR6vUY zzI%cK7$}?OPXyUw!}N2hdAi7T)-P>vL75T`;Z(ge#7jkXG*c3fp)Y7NddVBhs-=N@ zv!C}un|Dx|ZJG=}v2Co-(fkl|1-mZ+V*5Ek5@;^u9mTa2B3@k9*PrP(;#YV0jgbC? zIe|u4aQ9NNkRqFxU4hF>sZFo=T~uPONs9)Fc>mD84J|XH_442GQ#f@vs-=Ddjc`18 z>UWfG?)ckRnG-XCyv(qh^YXgak2n7zAZ(r3lxi3X^Xl;?sNtx`96pzXv>$WBGUs;N zqUh;9Pd^QZ%;_6&`_~|_lf^IK)O3#6fwnEfdeu1VX>BJrr;l^l(ntHxBh>%Qo3ZLB z=1m2~>3ho6IGU*1ciTqq>~Uq~QOn6}f(ejGd}#xFSYmWtbB=wZYX=$re;Wt5WDI3tQH(?q>6QYRtGUWHBZ%_p|N&QKd%E%NGT!6Xi-;$-aSTTOwE6o<4 z?&8R(+L?8`=a@HsJMiygb%Ah5MDA{vSt_ZHgw*+TQip5bKqoZ|bE%!knt2gYsA=G50*#u_Fc9WyYt2zJ;Bx!MFkh$_5y`JtVaE97 zzo*RbLQF|Xg-paRG-3;t=Dn#Rh*(wiks6R3JYH1rc!J~eU~s?1MJNI5ok3C_ zg4awWc+WcmHJkD+1#PrJfkx3ym$Huvc#B|8l-m=3I*rhm{lqVm7 z=p6+e=Yo!RLH|%tPZtz$L9Y^&`Tm3&v#qPE%4VLmi$oe3m3zjp3&H5WWiZXw9MsXfp9shjm}XnxC6vdltrzkSmo zZlLjQK=dqm4K&`WcWsSs(hKTW74mw`M8k@qxQU=PkEPgP(>er#a>)_;`Pw1X^7l>q z<}@~*Pc>2ocsiYvK=HASO);23UUO~Gi^ zJUpt)VHLf8Nu)C6b#IBDNd=6RtK)pXj!&pQ-ZK5JqS3)=uO&U|jW3?|S^DV?_;pv= z73S8rf~;u^Im-@uv(y<~_>1K4@LKi((9i;o&PKl`Hb9GPoW#tB`&>#b7vbcfu3pQb zpoltc|H_=Cj%#X``ANLYy$BdCG0c1>oWHOZ9fOukkbV{0RER5D)IHQqSLk493FSlc z3eR0wFeJ}9g%AOH7nzh@e{Z6+@Ef+{MqF5fx85Q7y$)a*Lg?s%(LF-31)a`aSTk^R-gHKxN1#z# z=uooel-OrWd3m4MK47WeBdzRt4e zvuoPd?wd&&niU1Z%mF4{BylafK8=MPATyS1RAxro=XT@qWO2cTI?c>ker>*VXIyBi zlEqAvathANPM9~OjBkt8&C@fw_~XNZEbSPL3cXjJ7ic_&5ZQ0W>Y&IDq@9L-=1}#K z4Q@JgC5_}GS#&+34P84-ftutLjm%I@f-&mz&jT;ZK}T#)5IJM__X59}8{0QLaKHGl znJcvY{ReOPCf3|jLkA&A6!>tSN{t$s&UdmS=EUJkGy2V79v)$Yd)_t6G$bsay*c^} z1sXL5SeB;V4w$xfy}+M(f$fI>3+&nH>$>%L`$%06ErxdVMz2R@6sCK$k5=Ri2nUym z)V>|TNcSD}c&!!HW!o!6XkHBdNRkpQ`yoc96|{{Y=H}^M%SL}DYko>Z-tv`Z@-dpp zklljvPcn8wn}6FJ(F)kV+jH2z@nj3l+AI`$^|7xqDOtC-kcGiSoDw6xcm&TZlue($ z-?~2&PSh4gu34Z(L&yF&wlftU*s-0N6bRQu>B`RaO!L_;9|;GVgKL$3Tlk82Kt17-$;DmzTV~n6huZld^>Z z=G}$1;O|iIuW|~$(H1(OI#VkgC9IZtDLWS=KxZyJW|1COVi*9Q5nT!~9`vpsZ>UJo?>g=*CU z6Z~xf{tEv?y=M3b7vH3K=4>H^#+ImbMHZ5e%+n+3KqPF?E9%I$&9=-u`=N#arokQ& zn@9QN0QFi|)-{;RMi?fN#}=f}@pgbvykeN;8HLttR41rUW=YT`c@;pKv4_<&vSU4G z+Rx&6hjM;q%lR|qm_@(;O6(;!5E#Im1+nA)s$uI8qOpUG;v^2vHK5gaql9jtuowM- z$j@;IaY4rGWT&4nHm(bVoY%2%>KkR4&8DyCF!cmlws)vbh__|w&Mg)sge7@)@n;Pc zo2fICc&2iXG(@Ld5^ILsE;5ZDxGJs{=Sp|gKqwho_6wQJyP^0Z0+3E`Vs}QFs`l~o z85YzwVQt?eDDgefxL{|?C4ERV(9d2qdYdGKHBp}g6! z=`QRq16a$mVK=(4!cTM3jU_CbKn%R+(sZGoY_J(bnC9q>&B44^4@s^!pv7B(+ut#4 zZmL!U?$!>P)%6&yXgg_7Y=3_JP!z7jU)f!j8HYB&)r*nU$0H1Uk1USf|V0>@O_5!eE_A{Tz zoA1zW)iZ~VihUa3eNflxnbA@CUjBNoi_(ujcM*F82GrSa5+eU~$U)6pQBMqO!=e$0 z929l7M}`V%kPG+({~ z{8)1{_0}ZrDl1CaD^uCv%Lz{X@PO1Zbsh-bOaO08-WKAfnqN_D7y_Ie{P_mkF3WV8->upYr_eLd^aNvT z$BjGsTTG1Lnko}$N-8)xc;zwJKgaeVYc%I~Hc!_;(;s09f*HoWsrW&i zB%EUl*%xT?NEfzZsl6w&ahi?bOc~CMP$xC@* zOj$uKi}$%p_Gg&g1$MvBk<3f3?dF#-^Jk;xAAKVAOJEdMiwr88E5Q`L?Q&vYfRkJh zeUG`+&s6^-_4IXWLvrv#>s>cn{__k{#P)TMfUU4SG|S4_YuI*uo0yuaef8fZ%Z=a3 z>E%3|rEC2Woo_5FNSCYRVq0?YJA-pM09ZjtOhoK?@q>2dj?K>%4CP{A2Ye}wBu>+5 z)P$@aHL%fMX{ee@W~0%VzX$cj{BZ0&WS-ZS1uEA(5DL5zJ=QLubKkc|=-<}{Ef7!b zSuuS>!OHd0xmb}36&9e9Ft2+0f`V|>NA+)p^VfQ6cqD$B-6Evv&*C05BD>OGXPY1& zmS)tieYK&|oCUG13EDqMpv;=n4AbGx&e%BUT*300k$6#=Tc6o#ac;#uhIotl1P+9G zK1$3Ke5^gf68}jGw&NL2KHP~IqU~hy6{ocW=2reo0MESeKO*0f=gwHE^;<{oz7>r& z@N(tP@JB4r7RXl1^X?OnR)nCJAZ0S&iV!vyuSLPrM>9Ycu9eruH<;5b)PctTQA!|( ztOB{j!{y-0PBIB62E1lz*c5{P;s+gVg943zSH|SvfBC_gSCul**o%H9IOzu)Ke(q0 z{*52J!UZ=SrC^pm3s>nJor0yd^MeLrYM_nF_9W*KYJTB3 zrEPz(-`=+g-1h;Ca>slx0 zG*L7z9molISj}Yj^ET2XS_0Qt-=ASSD(Dm%eNNorij@*KJ>YPq++497Sizd0xtKR; zCBp527dgmHNlW^5D9Q2k+N+tfDM|9BI%II^Xa381@%0lBYj4nkm-;(RY)8kpq#5B( zm+ej+?9UztCx-Ls!$$c54^CpoZATh|S9Cby}_6AbLRNiHd`;?I7lF=2`8)Vo}gF zbB-c8dnmVGf0z%m^giV8P&%2is8&Faci^ct*RATw*DqA%w69_7V$$1NWL(TcvBr8| zV|TgeHFgF;v$MBVp0S&rKKCNIgdjcj1rNaP#Mct+GC;&#@j1_AH8Z>-l9iWuWn9E3ClqprW5_i$2qj zzQ{%ot~gq{e6wACySN=)Y@0Stp~_}{CJvhRU2oL~Y<&b+MFg+bu(W~f* zDQ6ts6FP2A?R27wu^r;46BC;CiQ-qd_#qwQr`h?G<{D{Oz=Bbq>GexHAc4lqL|rTh@lRbBEj-e85$Xh+HJ(%4C_V2&ZO4_Em2rnc zchPafPd~il#6P8Gxjjk04)F~@7@Bo}-_*k{K2ynx=g$R)fL)aPE0R$9hMd@6*u2n~ zyp$+B}f&oX6{BKDb1#S@R1!8Z0Vr{_|u{c^JBk5)Xo>})P9W( zYo1xq%a+nl2sKjyn`S!f<=)X|^S=9t1_7=H;Mym$16~{T)a#HV!G*x|Q#ag`T%orA zJo7((ArduaD%#tBw{78IK{w}@+UuvLP!g+eIg2lg^)qe@14(|YJ6l`=t93qeo{Hmx zo%tvFj`@*@Xt$e_6dBuE$Z7{QzhU>+?oun6dngGZ$-^Xw47`w8$0Yem`+2>+`lWM@3zCC?c(yfSXCB#Q zW$ulaQnYy1Np}0hant9fg+n<_%HQ7OCXOdYVUiA{*!VtSvyXp(1w&`-O~*MT-AMU~ zC<(}yf4mEOhcK}a7rS!m-^x}F*SxmBOS43f`Y>q*Ti&VAJnKXEw4xJ8ImNT@XZ^G6 zQFHXDz{|UoP1|gN{Py!O;mNX7!@-rr)d3do4+Fn z4b6IpUz3@^TE;*ZpK6nA%TDnIo1{)jK2(xglJq1=Ha=$Kf28=?#Ah2~-uZmLYH|WN z)3C^KHYMgZz1g9vr7cdPrLoOfvyiQGfTJ76LKJSMhxand%hNsWHTBS5Y%MI;)EK}X zZFM#!SMgWdl<97IA(go90m~8idHH+m&=x5kGw>T4|3^XI3CL3yvtr3QNx7zGuuTVq zNs5a`DS}j+Q48J00?xLp^P=4?T765|&c3#+oUuPfE&_)*!QmVlh06Q>PT|0L`|FOc zTvBaqj@?5jmodEV#y0SJ-nm7&_lxxSaGYy@>knZ{{M$B!V}+VNd7+s#0q)VXbP883 zj?T`>NrU~IUG=i}i)?zfQ@Y#~pX+ts;bNUbK@Aj_`C?OszweS^|-j?o+o3OLWXv9*%7~lwsVZS~nUJuH`8^ zD?LBwUeRaqr>KY^`!*GR_&OJ^c|Xa@4a`Y?%mS?>Ymszqg`jliA^yDGZlB?a*;oHudvL z?IWbH@kOw4SNdP-r}hqB0rR5{Ud}QlL5uB0+G7gOauM7QQvc=j(;+|0ABf2;t$!}{ z5saH)z@U>4sH(0-TvpB9{mLb8XhKHf7%2Advm&}I$;Yzqi@lXF|4{YJK_xApaSi`X z957Da5Xs+(T1TX6$>ar*e4QF~fViKlzNv^>Q{UF=YB4Q!1h4*{CTIPMZH2dAW<_qx zFc#^>2cd8IRpxSzH5X%oVW*Q8F$=sEYy}t((Smv7JbvVXKNz)v=tM!^K1XO`onU4n8*hg#Qr*=G}jQ0%9 z27tVD1MoGMb!ftE7QVZPPF=yY&Jhmq+I}BptTQ$!94K|Wpk`ER=%L{P01+;yUM~De z7mmEt4=;E8{R1xC^7p0YpLaPn?=&Df6^PndXonb2s>9Y!g}t%3YXzpdSfW|NG|iZn zgJ^Zc=j(O6%8D0Qy+FHBEL4A>@U}A?UoA7gG|A?eU3963CV}TmhtH=ZNi_oZ zt2Rp(YTjU0HF250p<{n^pf3mk!3|%Sz~O-UfU)xB34cP9hdM{78>mj*W_Pu57tZXk zXZD{OZk_Xghc7t1LDk$8s-*Kjb>#7v{9b@Hp2yNo?xTKdXe&G1riW@At96`nDChj+8 z-jQlnCU3(Rx zuJah9LO3Y~2pYW3JoS|uom-N2bTla~3YD0Nci67N@D94+{oDCthd@?5_sCt!w9b^> zV~>SdvM5QeC^7naF zB#v@7dGNJLPCFiXoTSO(c}O-p($OR!Xge>8vItm7^v9e;KPNggOK_U_opgz6sa#`z z{BJGs>W0xyC%sL65AD~zn9|snnfjw7z^C%)b$#;|ed**-f5AvjeQ3d+~uuCs`BH1|7kB#jQd|XQRw}x7j8I8XqG!Bhef2adx<_ zB`7rOr`lO&ZudvRtim8pI5FJ(f@}PKrE28cl8SDNRPDHRq;KC?p)L5Nz7v4jA}kZoXP<*^9r+(W5XURu)c9&m7m|ON?dr>+xmXRrKK6 z?|i)%{-Ku4*ZwV8Jm;|3hZXx*7yGBfVjoxROk(}Lwq%;_xI!lwS_08zt&OKJu39!_ zw0J&TA-Hxk=U$0gH`Bk*s9@1AFM_fZaA84wc22o33@^2r zSgl}GOImhs^nrNMS)ElCm(niNmS};ljzOQL=@h-qLtAS((JJBJlt5vkQzcZP^9EjD znoMo}o(pvmc%w)X-E=ab=nPwqB_i|!-x+vFrRo}9^ms2Z+tLKPRVBx0Q!S7s5sABt z6&9=9q0kpEvM-h5mYSSH>)P}?sGOm~n&6%et60!31Lm*)(QJrbq7n&eqg8KzX~Ql1 z5i~n)ap-&ngK+w{52w1?ahUH!vowC^zx<6_*KbHGX}{TCXDM`Sezib`+5NGm2&4 z6CkkEXIB*mMM_X?nJiAtrvIls*=v}uirWT}E*X5!SIjuZX0+2CJ`=g8Cg}a-S8%n( zC`Z`7V*y}E^W)g4yjb=a1-`~4;r@ZYFnq5)nyKfquJ_}_>#A6m{uj%pD{EI}ZSkXZ z*6v3mJ#kt8;>W$48+VnEt3(2!>7iMcJf5@00sf3lHu!-r)vVcN)A@8Q`|(bfK$ig` zi8_RKcQRA1ExSrP|K=T*nb+&jCepS31_=JsDj=H;^xmNjP@qxgMqWZp zD)XpZYJ3k+nR@$NN`nUdoq5ftxZC9r8JIM&ie}IY2=d5RlKQDzzd}dnZVKG^70{*T zd$;IDhf)r)DF?r{zr$etl6t@sI?Ys32i!*_u}(a2~%GNUXM>F@p<$nz|R zv#`(MRm+aFd2W)n*LzZP+(P)rZ%Ef&q;V`54vJYIe@)sP7E;O&rI&b#ZrTIDV-0;C z!iJ64)ET_6QE1=)As9eHe$ez-X|X!cXc-rzGVKBH#8o_CxEicFyrpX4>oe z@dD?q(jM>CXRXwp(V6)HO+-SH{$88BEHdC@<%{Hh>SxX7ijfO$`)s;$C@1mxEE7kC zt6C?&O}ad^Edw*OBk=N90zD>D%^41w=pCd>KgB6QdJ3yobb`!G&M6_O+3+k)rMOEi z?cZ!x@GXO<1f8X%7$RUzKoIe{5fHh;$}3x5%&#j;&iE?{p9 zVzgDI*~xI}iEIvZXE|CWzK2>X!^xZQ7i*`+XQs;#RkJ9ZkW6urxu;QEpZbAj+x1ZU z%rZ>oOkO21@#(10q|d8t=B80mUUazT*&WyGHdFcx?eW+j!DTYpJ~MSyYQdU%w0Z|$ zceS00%Qrh@ zsGKoT6K_)zPf2=-kKbSq!>mO_)5TBnQ%LvuM}7n8z7zP;NHB^Ad{bsx5Rlq1{dNR4>uliw(&O zG(Mo2mMs2DuMQC2LLuyZiA&wa#G{mpC`Glp3d~-r74por*)4C}Cd^vnuPwd(I8Gee z4*ci%ar@No6ldcmxP|X=Kkh?6&hm7=AZ&&o*KFekzqQ*zGsQ_yf9^vw$gi>7%=oz@ zF*64eq>f=?>@_W02!&@w;M)3i3;I$ME{;vi|czJieXd^Jtd%Yf$xy{7?R;YQ)8PxXIWF;^hT$t_c7n!G@spR zd)D5yy_Brz?QbI8hBs6bN=$RB zLwj946(~U!sCn>|3ut33-{0;M4zS^Do4`OvTweEMP%5Jc8&m42$K!sC22~5fyz#E^ zrcDGmr3Mh7oXPn9PHgZ*jjJNc1P#Z|!5GZ@q!TtkxIcUCI5l{*U*zlA7;|&BP#xH7 zE&Z_{(D++FAff;ck>U$Y|94##j}Xodr%!dc{@cKp+u-SUY(;iBPQY;&`R?KEtndx+37fdi;WdHv^l zfoB#E40B(#nJ{QV|7NcxRqD+OfO>qBWO4kV2lc|4Vf-QWQ%!uv6FkBkHuEYrH9q4- zo5BR+GiLK9(|j}L+n3()8E@H_()bJ=Z6-z@6Q3daXXR%zq!SYuFhi%bJgVJ8dtAP* za*s(oa;34>{%D}_9)jC9BHFdd20YgQhvV_1IUIXK`9PUJ@EcCNF@-PeCH9}(7jCY; z59CqvPhF3R-yqhC*QalYB(GZ^-uq#=3SZafZLCc`JDuoRK??A&gc|J=$=A8Dc%2XK z3sUGkDpXW5?%oD$3^ZD4R%~A|aJL#+o6oL`nm#kD1;!$qjyJsuKK{1>2b1~J(Cli3 z3^>pc2C-5(wU4v4+a^WwH;3bX<1*EgZ%~B;Hom4({EDB0Z_cThKB%7j9h|~&Sl;Y< zK@EzNioCIn!^NSL`E3g)hj#TE7O5L_V2*Ln4as0$IRB4ocpJLq*e8^zC~?1#N30tvB^!cTr3`n@YZ4ZPBxu2m`}$zQB9~%Uhr2f?UJ*X2*ySD< z{Syw+h+OP-Uzo6{#mD@F#Wvn%CoFRD)|{~T#@npWOZgrAB}9_FU!qisUF_{etiaj% zyB8$~{m%u-g1qqFPs4H4&*#7 z@z@1L)rAs2jpU<1vYg8dPkhk3w*SW3{LjO^{=?S_zCI4;w}g8wk8pp4Nyk4r-s``R z*u_Uv|MW;c8U@YFt%0@q%c10v{u@qID!Jvvx^i<3?lVVN$XiU`n)uw7kB{uW{O}Yo zbxdSan2o`@^Q0xpTN`vS$Kx`!M@{#|*#yf;uu=&wMb0UmAM8Tkyqdr@3jA?37NRjl zUAMc__&_T!(|$IZ5bQ?R?NA6W(?(oH2#5MEgqLX}CJ{0(8^X)9rs?YTh6R&oQfSYD zd}nQnyTD=^;C)TpqKaO3#AjH1;dQkmI0{|w2##JC`&5V5M(5AT-cQlYd$a!@B=wBte9%X%cWvu4 z!I84(`IYnQ-OKT018(Bgs8t!{YtOo2+C5*G7u4sNvd5H2PI`AQ)=#UFf3D;=mOa4l zG8H6uY`bw~Q}+cCtto;BmGL9DVJ>braeEZEli+);kVKAlRO9XqDsgv^!kHda87-Sm z2$=)B@mAN0|Lsw;lR{w^Oa5 z9DbH4i<}tRDwgshhjD7JosF&X0Y34OvgztQ64?Z5<-}E_T4@V^mn1k0ay>zj)+M9d z>RH!@yXDjn&rd|tW}@XBZQ@;JlN5YF?UaYC*8Kw0mL#Wpt?wzNJorr{*NE4@MoX#~|jOcvVYTGO!+)=yMg#gK+{G}5$>4~4e%GBMu>ul&H<0kp9n zs5QH6YvdfOb*(_we8qDa73?Oubq~<+F_9@j(0m1nay2?#)4=YbWeUQ{7AZiT-K*8A zW)*C4O^JzlOrgLEb~;4ceJ$-J<0lmVv0m2mf)m84BSnOc@QKh!5uqy!`GV+x-prPM zpNmGUv3)A1T6N3&Qnn_KqdPd5s@p5NBcEgwH!F^!>)scU!Yy9iyX7k7sqHEyEnq?U zt0)J@c=GWDB>wQMSDAG4)G71@xZqZc#ePw&&f2|2FFvkQ!D5Pd zThOc)TyN=3qwA)GYTpf3wchIw7@hzL(T~I6y-F|VYkb-n#z4urTdT#8uLx_UOF`El zzkoy^5lK(dfC@f^&}@_lv=g6+ro?KRN@1Akl-+lgsW*481rGUS<0sI%j-kD*LM|Y$ z6b9b-0pH_?D3B4lQ50$7M#3kac*+jO3eQ@b$iz^#KGD`y)UDws4%(*vYW4dIw0KvG z5dPSN47f7>eYstT_RuD225;LrJ6wul3(eXt$J%EFMI>BO2QbE zmn!+*uGB(X;cu%vapLn>8P*N%Ek#W-C{)tG(FVW){KWff;C4$p4}iK?<7Y zubbQw{ha2npVRF6>Gl;l^0L_03E_W>Ez{OkH$ReFWCOlKk*@dy?#{db(s6pv4d<5WTb{%uV_(K7d-cv|8l<;LWRs| zb}!Qkv4jqQ zDHnkFh$9VaCeC~1MHNhuk5-(#61;;SC`(YagJX^m;dZyxlKgEp11a_>tvvL$$}gd% z%LC~SR%ybQD14c^V!hhon!Z~LtdQURY~f4(fyvL$PG;Nv56}-hpVL?}@lw1$^so!N zf2Iqwbg#=_whGzlanMeaLsOI)0$5r|>sIsyB)B}_5@XT&7I?Z!laK|)ae_<{rZlhRh(51bZuiIO{*lCUK{_vzm{V>af73Kb9bj_EK_b~|68Goq0@(mY zx-V(l`_09XU$7?ekmL%H?koLWpEi7tTFFB9k3tO_n3SDs;`cvH8e|lGLu`F&y038I z@%!ybOUstR2CVL6I>#THMY2$f>D023ZO*)gjW+br#WwS2CGl58D3V3-`2EJd{7?M; zefH(|@%sw_Jz4Z}{Qgp2=m0lMvy+hVxBM?-ZhaLq8wqmrmg(P2DKvPT_|=KeWhd!2 zQtwWyN4G2Wf0>%^6SrHWdg9;g)T9P^4Bc%xtuGaBr@t6AXd|C0jOCF}5PhO}P&g&R z*C<@eBU6sght^x5G?Ej0mnlwuB3o^BauW$xLRHplq`V!wDXQhMb(gY#q#Po=mSLJG z7tHWBL|7VOm&}8T)f=9?ZDL|oHEkxs{)h^E352XWZb@(5rZUt~q_fUSwU)QqWmKyy zsNX&@gtM&JG|)#!K3P?niay?J&1cd~?DLrc<>7)>^5HL-B1q~Uw~(wk@$aA6Sz-CT zkC`TP9`0HLYv9uB_H?2k92wyb)y_PTj+{l28AyNl6GFQ~*8eps1866`MH@v2Cauy7 zoc5&kdSUiW`b;nUO`4|{;F?NhQ(2LxYSgA`-J3d>`!t|zUx&hxYu>KSZ;_y&<+Hv% z`g{4|JX08I*euaRxMlP4;qLE*yT2ca z+nL?+S&wkb$0Z)RX)2ECn#6W0=X(8H!`*jB;&$G911NJBhL!v|?{@MCcaZl;0E8Sz zVna{jp8GZD2~Swbp@MY9XGr29H}U5x{Z(GFKqr^Teha2cG&EYbg2wXoo7_;3wY4O0 zcMUC*u2zW`N5wVK)01ty_&bsQ>k!}}?`#HnWd{(giUrJl6AtQ=0Kspw5}49S^D z(A)co^)u9rL`P@Bo|Ox&2+KwB#|P-f2q_ofyEq(cRo<@^xuv$(hssHbs8wS~o?}j=NgF*zOxf0Y*(yJYZYA7*ac%zlwY}aV{6Oz;e;}Ff^?E-Ncw+O>k>tQRwfPI$MNZ-VoDEBc z9Bby_g>H&1K$r4hAdDp<{I|@QErATDG?y(bI5}UJ9%7#d&_hiQJsIbSm3wNDhJSjy z&U?8}q@GqUbCR9Y%RAe8`Lj~`c2)`9?8OVpQopqVb=`;>SlfSXB>ziJqCs(zf1ok2 z!l&7x7WEvbRw{1y0>4pUB;LPYPuXoU5``ZaW4 zxaF(ijPY|XdO!Y zN+N45Nuk6G65~qrI3f{m@|?7MWo`Gl;e6aztzbzS7^d97Gj9&``hVa7 zQvREaox*7zn!9)?dRwm4TGkJYbYCtdrD_lJvn^YC+X=5)N-+oN#cz>E$Zxop;fwR% zqSVTjsjdLwLLC1(#;H-qm+CeqvhV{kP;;5|6*+3UOS1t7FG!>QwxPij$v5%I?*py@Zvlr!^O5Qm^g3bKTLVc5AIb zu6y%Tgu1deKE5!tXrzp3@;ESYB}byoad^DybtKj%z-0tZz(D!A@{btpL!^#&{@Rw$EB?7qv3k`JIO zNQ|8fiX3l?Wcu1t&9Sz~j2S_Zq1e=8^6IGE#lnN>T_s(4kdaVghHm)YrG z+cSK#{;f7Wyrv7(M`T^dt+4oitQvG`2S=3lezCy(l^PlUDv~%;x)E1|lhpcXf5MV? zmYTnIvPYLwR)UF?=>8@o#nVy{RLOV`I16`F~ZmoBy? zI(yjB<6?KJjXL8ry=>doIn|CUQ=Rl_)jZ_h(iV`7`Yz@82tHbaVLk;>X7PtZlq}-= zPtl0PZD=c94pJ{l{b8xQM$ncjQT%b&GWbr;KYt?!ONnkZiSrAjxqdDNGsZuVX%4*H zT$30xqi{t2ax8K+k4%i4QCJh_XJp)lzDwx4BLgoV(_`f6;~pv;IrEtA;Y>@U>h1b@ z@oqKo^9wqF`bMHAL=qy2|AotC|Hu0Lrd_nT{EK)8N#&4jMBDXyIm0%dgxsjRj$XF8AIAqNC;z@ z)kCXX3eTk&+m_<(wiNHX6cb#EDXb9Mr5$QU2ba+ZG~En#%Wb7IKO+0LbmjfnbX-br zj_g#>S3Mfaw1ld5)&y!6XZ!Yk*SGSG*05hC)i2I=Vxn8e_Qv*QqTMkdy(92Kp#JlD zjNjq$eK>XRjlEr)<}*9i4>rqL)@bvO$-yipIh1hLhwy@R$Xp#ldsK7uUOP3=8$>sP z3G6iVI(y!?~O0}#rTSp#3^~{j~3@9-*2wYTs2w3XTJT4xe zlYN5Cem%eGIa!2v?HeM!)i{RJXpw8qpjRzGKf(2yT+T!}`Ip+>K?kQN-`EPqDvp9b zb-|UY{Q8&nXRK}=5LBm+1BQ=xv^U`a3&R*S;o`6kxQpi#Te&9N#M^Crqv9)xw^vDq zN~REI)!ar~PL-shq5>H9&-8NWXbx8oPRMK?u63{@q1Bh<=VOHmJyZ{K)%kWT4UM>DHAK zY<~1TcgN@_T4|DX6$%^ahh5;phA8ZGKTK|jAlz1BM(}t1;GhlOY|b9xa8(1n|Fiai zc3tsrx+1kh3?W@nagNY3(6n9O$>OCssU2!IEA?Drv)IY{Wvzc5j-L;{tPTq_X4R+) zxl;AmY!@a9;p462FC3DF{La`wEk6DR8r{tc;qdW(^jsHBCu1t~AwFF0&VIC*0CLmK zd!l!_DDy{G?@Sj}uBfYB)G`|ty@ebV3LfQxUv|MiB6x^`ndk!HQ5Sq3!PPFLm?fF< zv=gh>KfgY);@jH$J7;3;8(}Bb4a9zZVr>FMvzqwBCYImj9psr)BJriQTxoLNH1M7Z zYlykMuLRlKn<$-HP%|F>2k3^DjEUbkQb@ie=GND zi~Ft4g>Nb`Tw@Y^Lx3+e(Q-br;hrplL0lHzyXt~u@6)*0?Nx25Q~q`D=jM0!R)j}p zUk&-?J1CsI9K;&~1+IECaL@aog*fNZh52wcy4=}2-^*aSP|C?lR#Lfy%h9rnbyUKaV7IV~1K_pn$mX+3`Cxv5(LBth7 zQ`qJ$kL2%KSWwDdXsPx^$A#GYY>oXa>?oI2LEEjK zR-o}g+Qp6yfQ*N-0k4IVj|JRr>ZjOe#M%w2o?&+UuF4A%L%WTt9NLM3ajo6L*eLCzq)C0BpTNswiYh`C zy^rvH&7zo;F;6tuyAiSZQ*x9Epb0tjz}@GUiyiJMGqsCwRmFBuj6)>hEO=}B?^7SL z_IELp_8*YVy-1*DpCtsKkU0?1Duw24flmw8-+CgroGk9u+D^-wC?YiLD}K$u5Tmz- zw@6&HKmr3CUqTFO^FPr%xobLW2^8`od)LUKcmZ40LFJfm_t8o70^MvxUgo3kxk>R$ z3nLrNf9Qo-=OstxYZ}z`1PesRxv4$DqD27+f|=8l!-)sLiKFuwrK59D0u2U`V*tpJ zMTq}+Rm-Ads`o4?jh^GhK?P;sCw`a8O1w%?q75C=-__b!MmwxFo=`An2r#u$SiyMN zv07HYL#m@pk#)MN@7mPEwki6Wmw3_I8>rO=`bkO&Yg(gEx?V(qS=k>K&vnJToQzH8 zx&pSG^&|<}w_5pQ#bdme52P)U)mACJKZ~{E5?A?=6!T!bd+tWQU>r&LUqNp?em&xOrG)cEY z$}5-HnJ)@lu*=cE^&qU+(n+*gWb%N<`x-DE@z!!Lv&8FDEAV$Nd1Nl#5Q5pft9J#Q^c>q2b~9=i&ZHmbOGH=SKRk zIN4u4KOvR_HXvcAf3fH%jq4%a6|hz|gD&&JS!r{c0~FrPMQHeu)|aVb~6l1dX!hAHh(Skr2qY{E?LWz+mYMOKT&p|f;y%AHLn8Ni`Pec>?;Dvq5X^DB8LC4(o|5mBtSBxJ|s=QIyio ztGd;@iwYU2LL@weLVp1Pv7Fy0%W_jY&d=UBJaiVRwf(Z}+<0Uw_?uu+h$L^uQ}n?| z^0rPQoCDsrOy5#-XbxQKfVK5pMf!lbaPGpIQ#$3PFV>Z*BTyNmG2zVo+N!P5Q_h<{ z^rXD{ofjpCo+JX&=D*!HNR%=EqNvdH;d#+*X(pRrl!`@Md8F4F_TC%tzL2EEto~`x zF*KG5XV;!{Z^`4PSfZLuL36ZIW_`};8{0Yr>mb&Us=cofDXXZVH0UBNTWT6v1-RRb z?(eM_&?%nxR)v-m@G=$b0JNV>}rmhJeyn)oifk93aq5=NbNJ433;^su@RR=FZv zg~S+UtbROgVxuZf_o>S*@t7K48~dt&OOm9G9qcUDvO*|Q9<7J93^e_VaP|g)#?8Eh zVh4HzW@tqRxRU@bOJCejp9nmu`}iTYup{V`lzUcMpa%gx-NVk>^i&=Ipn6dSsGpdg z?8QqQW~Q&p&fM&+(l$QZ!N?&Jrs%ZF9Jd#VryW8VmXlJ>PIB=*OFML)n}?m?qs$C7d13s_&37|duW;iY}xl;np1*Z)JfSz9{0UI8t_ZV{}9mE|_U-rA`{1Ua;Ni>!J z2(RkQTakg2B~h?Lg2{FYs`y@tFVb<4d_={2@61V}`0MQ5hB3CIMNgn52vB68ScI)l z2l@ql3s=prEAy>gkvtV8NMNbHA#L?h z*)WiK+GOtG6b}%$a|A6zayf!WXqJR6=0}4iowFt{XqlJz2|Ii*->X`B+t938`j0ry z!ub9HFEI`KMXFpx$*yeq+~nrk0{l=|977o1Pt!t}*5VCVaqCD9pgTv@bzsUF;bg(` zTK=>X(l$kVSoSLmEg5~&^!qV;c3s>gY@IH9aoWo^czK!&WmK}AR4^@3i<1DIT0Zc7KU_GdB+yt7ZP8(N=fUn!;R);Y6b$TU5qIM{_`ilgg3BUo;v|wIzv~>ftN8=k`780ji zoA_@1gmCOYr^%Qj-$gaq{ZH5q;k4kWL~mf*lUXH9e2kpHQ+xJllh>uRJcR84xD!I< zumwyfBJaYgK_<|sRZd>Js#5izrLVTDqSgi(Pbsks3fs*RpWi_JAswmOSa((g!@>jB zMz|&%Ua<|a)7L>kVAa$-?d>Vu*{9}5zb$}ps#mpf@j#*I`k~{{tWHm6{>wUxr7v*L(3i7dWJMywwfURCzHt2f zLaw4iSpwR*5BT8LLD|Xr9WOa(HF^xI?cwFeV?{i;T^G>6sC4)+P$Yc>gW1=;6S~-o zvw3H==$9oQmg}>()v?HtL)vZsYyLot?R+kAOF+%yeIfyF?%SRehEJ!BoJzUn?beB| z4L7rn9lpYGVqEIAZ0>9>QZoN&YEU?Fv==`r+qNQP&P?$|=4_f3(j~m}O2UbeY{|}} zD@F!+2GfYC%$>H3b*7GI_TY)eWbHn8oOBkq?Sy=e32A8o^Ut|Vj@?<0*cVx!sj1JF!Q^5XhwMY^=DOKEavZP7-h z8I>q99&>+Gyf;rN0~MJ_wn`rk1X7eaxiNJS_^H)3XMf=8p_tzL;Dv07@glBxWiZz& zF|6Z0MH4sK`R~$O_}6FQuXXU(#y^Q9>pOz4X2N-!Ht-QSkX&1q3R_vCNW}CV&UqMZ*w=ZVqKui5=pMAf>ck zZ0L3jMN@Ek1!gW-8Mj5TEw?G%6aTvKPm!um;C?Nx3|gPVKc!i}V4g-<=+~KZdFD)* zwmm~T?bX|8_(PA?pZ!RuvGdHaW4?ACJ=&br9-F!3Yq8`v-)oOw_f7GA+vDdP9-rz- zbPhlM~pw4IWPKnk^(E{fV(*j}n>}ElmvjJuhaixCZEK zAs&Mg1&gnM&R;Rl4E9P19d(UrDSr9DEf$|Wqi54OaMFCt=WF1BUm31co{d1v8f zFPt29qRWo4pN#pj1t!q+Ys!iZJA#6%LhxO;g!Ntm=Y`1LzL&BG zknWGdgVtkG+YZ2SUa0_W%E1-AI(;L2y<%#`PI^{y>j$Zj5daXeBC?%~J&76)j@i7! znq;uXbcYMEw`kUg>K0v1O*M{b7F7 z(~0ce0W=5qABap{1r;KG_ncf*bD969_-Ys5>f-%QdBqm~tm1>jTYxH8RxZK#ut{Us z179JWB-3(i7E|sqftNYkF)Jt7T8;>m>;CfqGNo6-ze*ne*=uL1s^DK;dMlt*7iLf* zOP|nzzf|sOyOvh1|kxLuZ_Iu2ep+e0dd#L-XPTK?xbCHM zn|_A0F!eEHRLx!;w9V*JAJkW0*No65=Y?s;%hd(39bq*>h^_diU25A1^yB`dMqD~( zC5qqzTwT-|YF0r-|9s(-Yh_PzKI3>N>CG8ey3i<#(N^*Me-0+x4<%&dg=hq_P zOU6_#7r~bVQc%cdYH9}`3M5-z>UV_b1953yD(Qbflk!s2`Ovf~F?;&i7Iv=Zlu+N_ z&%!lgY!)tcZlF<=!6ljJvJ}>HcC9R($&%B-4J`+Hkd%II)Xaf78;2&KOKLD-+tjSJ z7oQT6sxb<$ssW+EhEMn@-Q+$(WgVxo#PkgQJ&JV>;4>}2PP`&m)q6RxGFVw~ohjBD zt(fKoIskM^tw3y`a;nWw{Bq)~k;Rn3;wh34Uk5vK9^?s1VZ}RSs8K(J5R;K{bhdO` z>?mTD>JAkPn%seFH=8jO_|2l!wYIXsd$(s{zY`>8(jN)IvQ-NH5~{YY1)AHEjd972 z&rQ~gWPuTj{Sl$A)OeD3nPElI|y6 ziRsGF7CYBGW@Ect_PpGda&Yr+VBk*9iBnGL&x0GP=_4P&x=jg!mr}4d(D*9x7bb2z zVIKs|oO>)~i&fcfzN>;c%E!F~_XAX_3lBI5IsfvxpSk8^wGHG}pS}xPxs^E(>)e&4MkIZmDWY^lT9cm* zH5{_|(exxU*J7#J@msAIZeBNCD?;=hg^H=EVix?}1U4Pib*D6X1^EJ*D&m-i=& zy}OaGHrd>^S>7U?m%yi{xK^cI#2W|Hp1^%?bIzx;NqFf=h2AwKuD{lUS?cn>8f?IR z934FElGIU^efuz^v_< z;CY+iA4;&01U@h_cBgI=C=B|mFd`O-SKEG==Up?pH&WX`<6?a$I2#fsn13c+Z#@Le zZrrEO$n7urn^y&J`Z`uLr$_c@Lb8wUX2=E9FHSI7{FI$O)NL6m>yDn`GAn%}hJpg< zEYoX#vDFRWCIaL0Iw0j_AD$(GQiv(yQ%m}))p%dDpbI(I+>;CBBQ_jbH(ll(tww0F z_{o2D=+!3MX)-aH`qdXYL9soB|Hf~Dkd1`UhWd_K{$#VrW@YM15}13Qc70{N(t-0` z&kb6fXC<*XKi(f(6qZ$f>Qq;1zmBE;#g_U9m0D;MFbt$-$QJ(6mA?o7t&Z+>jt++S zNo}LNeu{eH*P*s5wV5%y64~JpQnB02q-K#j2PrRREw^}}>(?R)cJpbe0GrN#kzXi# zog(eDZ)nQxS&cazGwz=q`tmN@gr4+zYJ_T2#`Jj74eFTgX`Ajyr90L_ReV&(1b5p6 zQV~cUz{V;ieEvd*nto{$NHUXJqXf+7^^G(c24K0%&_agnZsH!B`p-)J4;TA*$Ko77 z-x5Igx&(K3Oz;a^!gQ5zgG+FAPWjVqY-h5Y>q})sIFlOXQk~tg7_r_sHKiC6BB4fZ zi3gq?Luz3j&FDUsu_|)84?f?a(Qc2X#VYmb=WQ9hJPKIDH~T9mk8$_E9_VB5f2qv+ z;b2F+r4kLicj~{dTIc<5+fHq)B3Z%E9dxSEbImG(lpGoAgU#tKRshyf5aaLaF6DrN z4QVh?VvR{zO3M#oAM=7;o}yu|0V+YWgLPaUgYYS~o7qVH)Oi7ZzskDBn&-s!^$yHv zAsItG{3zvgtGC@fo%&xtpjlZ1HcD?@ zDz}AR&bM%wNxfNCfZ$)z=|^YxmMNwm<8PXW?9AH)sI?;y z;vFUMIdj|uWq1a1NBCed6_b4al>-o+kYk?sJ{X+PY$_H@+DnKqyFrtfqTpWV%WKrv z1Ve5(5j(x>#W`a?B)*XH_L^(lHeau+AF_2KKmZK$y`yX|vXzluZNnjL^XiVKE=%dn z($qf0;7}4AGY9FKlb=0&1ZzNOb9x`YYdEURo-UzpknGa%=M#Ko32^Qbx@C^A$xI%@ ztfyH=`nD}OF(`3(Y9-A+exix-lM?A<_0t`~VW0eieGseTEuo&A~14A)I>NBm*2VsgI(emx5jve|K3R6>7I%~R8PvXZz zRkop}lri(-_m=4yi9b z;f4IlX5A$ok}k_V9|JZ!NO&+T%NIk=vV0ch0U;L|Zk&IWyx4r}O~+Dm{?8HZjfhv; z^cjfOHDyoSb@PW}F}Q;=#Qf&0U><7qNR@@;GqRA*p#$lK`X7ejRM3yTSf!0dJYKsD z@%Uq(lAjgI(JM(gi7LKBsPUI|R#_>4cV+)Fh@9ru#~Mr1iPkhNXwL zzf(i{Eozub4ISIBtM4HeT05sMqAD=>hEQga?GKJ{jp6xWzU9n7kAz#YCH$N z3G@uVh$IK!4W=SHG~dH0N?2!U2?Vq>T>S!vvD5sD=>oLJW+QE{3|&JDi`vJ>bw-6W zp>>?6nr^2iAk(pKb)adkkS;mwt)+C&aAF*rPPs?bR81)iBt^Gt;!_G!NnY%5`9m~# z188FI#k9-eW42IHJJ(wHdgqMUA3v}(qW%eIp?>&i`x$8b#FkyIdTeSP3&HbDW7Huj zfyVcU&sKZA%I-t8Kz+2Jergl%3}FRRv;Jq&x%G4^2qFy;^8RR%-LVDkzF0f5A}jML ze&w&Z^5AY1ADVSElg+Lczv~d$WFw`TX!@0imDrR%CecZU0_E|1FL5rC_fVmkUxes= zHi?*e>&*C~{k{u8k&F%sio<^TCNO`2O&gW8l15ytfK3EwclHQp*ot`7reGaRmX zo%<72i@&WOyCeig&Yg$-X|%+V^|R6;d4Nu~v5bY8?-?2`UgSY`DvI zax}!6Lxis{o|smuwdjfOiO>cbzeA6OGU!cj#(%i2#n1gXxwTk(28{A4xE#qx1kMWy+ znAmqZ#v)?{hMD~O-VutQ&0%(mY^-)YsUIS#p;Y^9Lx{u1tLG2hcx_}?^bO;6VC?_z z@oE_N|1n;hXztg>D__0RHrnTryKTHa?fU;VUMF?)$LsN@I`pI)uUF^|b6$_O@tVoJ z(|BD)lfQAiF2CvU@j4-AyoPnG#f{fmYO&+huVbtmuLT;B+ZYiB^w5*-%&8l%*8e(Q zRzFYb3Mf~`zGRx{M4U-jzFVv%o0f&`maCF7p5X777#rQxp_W zqE;cA;*FRnia;@~l8r$;Sl!iCT-5bm*8@2e%2~ksK2X66 zCx*jCEZ0K*&)3W+X^QOrzJDItBy+syJ@0wXd*1V&_q>M$O}Ygi3K|b5uoO4p`fp-?MBl}d6*^RI zDBm(J&}jCsA5spxuLo?y`kxzG9+(fWrnq5=!G8oAnJiz$OqL^AdUJwp80(Y*k#qXl z+IN@kg3sfB7_-xbz!H{0zDK5I*%h3ons1jLtH8s>KL^})io$J{dEbldUF76gP>X)a z8MKIy8Lx{H^H|x_pu{t2P!F8*Ln_&)1@y1}>>a#RvPiOx$WI=!r<(sb*DEILS+}a_ z=D_41Fl=a+?YmjWOr3fIJ4n0~^=r6EFtkAPYZ)s81^nd80}I#f7l^!_tG&_?&l1iV zS?+QQ_S^D>Dvrj&j>>OOE(=9msJYN|ra&b}F@Dcq8wDjVx@^m*x!-Idrfm+VE56EK zEMle??J~Vl>kA`0IVO1*SXzF*7@L#B;ZO+!DwRL9zXp}z(sj;GM2{#nzWTV9$=vmc zzfuSGXx7)n1&4YSitNRE4vfsF_zqQ;{^F~bfmKH5oY2J?{yHwZekGSL^UHnrBNQqN zM_1XDL7x11?o85Y#e(kIWcA})Ej^*7XeDr2ZSe~6{dCVK*8jvA`ht#q8!pdL= zHYQ&2k>(p~P9Jx;dNZUd_s2l)QVnRTp(?t8PUXpTexL+E2iI7#H5u^1@7O$}b+wQO zTJ){cmt3!cjf{pfNU%6n&+chCyLiF z+h=QP`IEpc4W{sYw^^sUX7rSqIg~t+We~t7?-WQY0Ez8ngy`wE*~P86m_GI?EScrL z=}T*3g@u9GCHdubIO@C!HaWh!1_oc3eZS??9JA8;(F*KFezV>S)aKW{K8x#E&<@Jn zFM-xu%qPk&UF?fIO}2;Vy#P`u0!Xs#j8w`JB=jEc!d7MvVSgig2d7`o4m1`Ey!qQZ z)~2wJG7(|jOpSoB%sz;>GWP>vX?}&unZY{aMf>Udo-N?3AB#w}Pue|Wwpx<~TbYt~ zIQC`r|1(J@04Pb71MmqG6?&~FUd5^4n=Q}asD8N2JelwKO!U!4?6+CA`=OC^{ow5K z+UAk}iSoJrUoONMzv(M1R-rZY9!@h|Elv}K(y0!m)qctg zZH-KK@k&|)nnntX(FgZ@p9;*@CdS;5+Rl_u-m39b!|{^!n{0pEGLK|JdKX^NbfK^Y zxV}5G$1)sXll`su+hE#5)U?I8NEtX^@80Nzwoy$xvwfEubp+HH#7joIMkmv#`D(fA z(UK?BqO(EOosR)VbJd>{?#^|f{G2d%9!@tiUh{aW76d(hVt`~XxB@<4ptT_3Vbh8F z)sgkAuB>l2ap=E3aTzLz=mquWC*k|_9PhV3-(fmf<{&$k^VD~HOqzbsBq0H&AP#$} z9xF(-FXB*AUf~3^z z(XynfHzf}X=)|5vsAdRX*W#J3MPFn92~e!btQ}yd*^0qDxF}Ki zyUF__!rBp+kRjsJOOA;&fELJ`!@h)H?CiGx41qm65aYAF(ADY9~^86;(l0e zN$f?6n+$69fvauVNFN+*ImY%l|VaI4U5f8ucgXgx;w+zj=g4C1yL`)H7|Rk zQ4jSc3$yeoPaZ5)5#+&@!UX=Q2XsC1(HS;ucEQ1}kfiZlW5pXN*%cr`rsMGEU zsh(M6=PlErEr(X2^VSm>)ej8XwEUIn66SU@+LU;pKGTJeC~Zn2k4wg{e+%`7MG ze066Ew)YO2W661{r?V>F*PEUcD&6A-->- zvRF;b1z!#D+N-|}zDm4gGuuk_`5hx4ydEM9WC{q%RhA1qX5K`PfgP?*pg@Xbu#>uO znL&zQK|*4~>UR7P-m5`J+`LJa<|+Ka2pTWBYQ1H%J4D8>0V?mJ*GkhMlm8Un6uWO7 zn3QQbi*8JwX@@!WZS!O}!a-R_l6lZV`N`Y>6t8xk%RWSnjPn{9l4+zFXZ4`P`V=o& zfl|sExT%qoz>!$)hU)bsDxR}0*(D*|0h!m0b@mX=E2$p$i92E^$#ziQ zG@uQJj^k`~dB$x0hz?+CWn+b2N{lDo)Ln`7)mP;-Rde)j+bKYdZ|*U zdSZdC7I=X-Kr85vwI5@iZ}K zOJh!Kom+Y|E(|kNl+hba(2;q^@B`?J zl@>3V{OiM)>>oZV104>dU?3qU4~-)x5;Z@;l|JIu-VUpVT9 zvD<4sk1jTsHaHwh!BH(Ov}#GoN>^$ojcI}DODXO${LZ(1_ObLM`4lpMLTz8r#&c;+ ze2f+)$=xLj1axs^9Lftfe*2p5pSSWbglUVo3~KKKQlumBb(xoWJVrHs%XSvA02rYIMm zV^6>+KpF=&zKA5h9!(W%zdB#^(9B0A`s_JxZNTY~p%Aoqh0QLv_*{rn(kZ-SExiDb zIF#7>pAd#G!Bi5b-=|Teoba3iI6`RoA|bl$^`?^cBICN`gg&)+jmtNexkf|(aI+=! zrbUgFyxiRuZ}Y4=^pc9RRz2sDIr(>XX@s{BvF`YYk!FKzqK^$G#p~obaWg zWX%0ud{0gscGxpUj9~Pq9sSY3Al2wMw{gso%nF3s@go0Kt8BBE=|iXF@shjNvM9B3 zZJRGoWKUtQOvrFy&z_pyM{N8NU7NP&Z>LjK1Uio~^VE&Tazv;VtR~P`ooQ|6%+n`V ze{mS0_iZFyk22qXX|ec99}bILVR8E#mICHnKuZbKO{=Wy(e}Q4_Ic_f4$SmsFmusB zO^E|DBGC~z8Dk4%OW%k00`{V0ZGYNL^ugFUn9eM&+3PDSgl6}X>I3+rn>-6C)#(#m z7O!MKO{Qm6e*s{c>&sO*UNZ3q7^??9wE^p8pi4KlJ1+QzMls_bls$d}sn&A*u7Kld z(~jRWUs%fhT_28ejnc6DTQYOMqu2i$Kg&l-YEtjrfJGP0 zY6D{$=~LjV|50<yJ%huLob=+4`r{kj^(tD3FR1M62hQB87m+e-uyB)BJh}w;J>PqQe zt6CP89nE~UaXVnvGr(mz^cZDgI=-#4Lbp7s1;z)FJ+wF*_%mry6^J|CURTiNVHSF3tM7WN$em_CpeGO} zsW+c+T|H(GMWe=S*g(0ilAvrxt(5`Y3->S1QLU0-9o9-$S|8)OIH25O!U}ut_U%lB zrQz|gXg5uJpZWGJI0Cb%i2S>eK#n42Uv=$NSL(PumFlii>(^7N z3#HPNgg6V~&a9|RpK*S3<`4#i8Evg{R?IZdAD$+$5)AQ+jJSMXk6pi@Q)m&^N@Ja< z8?>d4YoRq-piZj$jY(j7WTv;hZ(Kx&DcJEl?Irosq^MYi?~|G=-oIkgKH zywtOH+X1(HqMy07+seXyurF0cf9&xaRF3{^zC8{j_tNl5f!YbFoKTH6KJk)2^~Gq9 z>cstWvN2(X;>pgy5~LU;?2DT~89Ba{7xlS`@i~0L;R`K%WTROH3 z@(n_8>Q5M(N!@Zh?T2`AcmbFNSZ{H*>R%n1NLD+ZT|hJ18(`$kba_VwM-AmEkTdmNwyc7dCPn>SGPu6vbip&*==sOY#K_mbrw)CBgDnH;>2y2vZu;~92@515S;53!TWg} z=exg}b19`ds1)Bw<3*a^`|EZl;I7bky}?j}B&>gkF=Og|SKGYTG$8gX5hV z$!ZpFwKh{mL(@C4-MJ3skGP0?#+@F`f^m~A)=9-WQOvGio3Od9PZB}8Q|P~e{MNX# zS5Y=OlUnS_F0%FNSC#u7TbjIw5f?qpgR_~8b{ie)FX#_4%<60jO3iNi71`R%RK2Vk zjb_5bQl;2qtu~iYiCx0juUjaAY5mRKt#7g~?KFi-Ow}sw4S$k;_A?rV^Ii*GYEK7& zYt>m?xOIX1K>E!p#KAth`Vy1;FjMoT=9))mYDzY8?Oiq3@KrSlp_r=XSv>A5{!XLg zQ2E5$ziU=G`TfUDEq{N;g{KVvksoWw{tYXMi$3m>V?#q&e&zS&U0eR%%)+e+=JJDy zx)$Ywi3fK3UD%?2F!5@p{-lD$KfE6n9?o+N6>mzF7wJoWY7L`_67AMFjqie&AcX0E z6ho%e|k^Db||I7KmnE(C!PY6P-g-kY`<(cxi zK#Z43J1|}TDTc86Pm#IB{-`JyJ_nj@{WKyKLH+937JJG{ZWM;*{=a&0hg&|Wli_DwjQleNwNiRjYN;Xu zPf{|kHJQieXwP|5xjI_$h?`S4!i>qoGWvq78{OyS0HmlhYfzjK4d%QWigX0ZNvR;q2)i5VxDRl=tXGh=|KlAJ_n!(D76vYDzgNw=#X1nIO3a zj5Y`{1uFmC21cSFYeqE`UJ;_NjVbJ$pR2pZu}Gn zfmrvN_$X!$?~lAL#^{T6ryEX}p&odzhi?nU>k5Z3Gn`#FUWq-AtIjrsoEda6*>(DnB`1Q`q-WgTmfrWxQ$qH zZyS*&Wv+Q%90xQ0WEy5!$Mq1W_^I%%qLP{L7cKV_|HwGi#Gkjwq5Ni@x5$R3g6C2& z_z+v`34QfjW7rwUb^{6(c|{MVpq>@?ZwF3e-_=r{f}DRT+w*2Os1TD|G5-t>W7`KId#MqAF>s$&>0 zxK=fePuIXQ8SaV(;H+l@s>Bk+ckrXr8+99A)b*;jts7ZlKNbYnU#H(qUgsF?EqA9T zUt+SST{e)EzIuB!1gA}*KjJjFM@J2CnoZ$H(6QowFM!fiP!lgZ{v)xX6=fg3Q4?XR1#L0HH;&5=9z34H9$yTkMCKpF)3OjmA%yu({%?{h9KXAsX?56wni9A#oA>yK^k$&l^XZ1_W?S!w30K4j<>&+Zm>HICSJwr?7@QzhmYx6^+=UN_KQa=$b^F6Ec#A^YGS=#egVD#g^qWdVjF z-gSiiD5-njsYCyH3Xluk+}7XS*4KF1bMLA8E;Cf@M356P*CtK9MNAP94PBCh<+iEi zHP~)T1l-#L}+_ajH71`j8DanBDr7Y zJ_tm2>3=7kDc6U#RBb<1JIy<>rrHsksOFp2oUqB34;_SNl(-%?V##5Va&u$ZlNJlT z^^vvqs{bw4-_guZ8~XTH&{Fvt~A zks)+zxjU@UqAj^PgPfY^<%J`I@#D9>qY>j^euH`RIjX0Z?;@L+FzuO(;58bEc=)8} zbSiX7%_t)iB-Y1I@72gHy@~CseoGU${|OfJKDpsi>jK7k&3({7U9 z1=oAq^>9yEIQe|Kophg`L2IP{9TAoyaApRxZ;eer)j181GSQ}sDyqw((IRtBoB^Jf zPBRty`FzXqvioOk?sw|k`7mNKOzp{fDJR0Z@7e4{xue9#(Ugaf%wdwoo@olgDTW z+^mms-OUd$^c)>LnQN(J-SXSnhUCt()*L-kY{nU1A9EoZB7@ZtWifCxgDEoGNVH$u z7+qpQY?3*qZocO8=fP-Fi~&zHnuR%jP)Bhc)gw50r*%EP=NCj&HJ31BfqZ;*TZbn^ zZp}L=e2diF9(jfJ>nBc%@CeS{!T4b8ciVRO?m7^(c+sbGdOq?l4ep2UgifjLhwZLo zbYwAy zotyJXYJbfSDTj@YVv8sCL%a3W>yDeQKyWisUdEwgqn}3BwvP0BH7DdJCRst=zPvUWfR>xsk=KChu^hSPwu=8NZe5+LxR(IQsVB z=oaGtpvyAj&7@O3F1U-b;)21^U4x_FCJ$)FS4XP_eJ?CL&KF;$LZjZPiTBG#<}Az0 z?^zRF>C}S57KQdj21^m)w&>fYZH}KPuisXWT0z8hAJNhS%kq3>_3N<-`=)-u+9!pz zm@NakOLcy)4|!>~V%-m{7NDCvG@G8~Q;3$_z}q>&(oaw^soG4Jgl|^w&hd$p%WG3J zZuzv_H>>H&#+(bsMYk;6nAhJot6#hFDdSp2*82F~yKVWDF|G9sS@M+@;}zX7c`fS4 zB#}Pp_PJtA$F7E;|BZ_2a_!H>vaUlQ&c{ z8DYn=Kixw*vxR7hou)Rzswf34L-`V}i_G(nTY1$p*0C@i$d_faF#0pfYiVTL)|+Nh zeGt_VZINYLP5Gm+5TO7YlMfT6NZ20=KB&_4MaL{M>0Y#$P$0Lme0%h<>+{edHL>~H zJIqr_HhH)P@g=&`Zt%dZzv&Wl76AgX$po2^zbawE z<7Hz%lS>MaD$Pn#w2q%DNaz=*t9rdx{Y_V$VDeNy-8|~m{vz3No|M648@ts+E?YGt zy{Yp0q7ULR{K}EN$(yNR3hlG|5RF)DsgVhB5RBcajtil#!APH+aJ!&^$^!c6YX|3@Kz?6}mtR9lbeQ6ZT@jus_D^#dR8A@Y}(o z{)1A2H04;!>Cb~pH%>Ur=@=&G5eZ7PlP2@yLDX1ELDt8wl5H$>dpwITK_>FA5M%8J z<92dd_B{r!p1uAELWVbuBT(ZG^W_u*hHfBc_s!B4?Z91>n2w#=Gt}5^ai))g)&_%B zf!Fga{V}pGD7%&ohbM!%*L0`JuGu-R@QActAW2}*azG3 zDG*uS4DdUuSH>ngVBhZ!!YxvcNrt}mUW|p<-d4LlyA@rcvuQ{ zL~tvzmjWdbNGhO`dgU_>Gn}>yP1_{zwu0Gq!n}SLlY}e(G5eEuo#DrC?%U$HlDGyS_S3i@#_B{M{zR32}1r+I|JGZ7sY5j#fZ9|s+ z#c5bl)i)rwoW8mb45Z4R-6#ex$K?IitewxKk$5pT1Azq}c zR)}r_avv;{azduQ|ONea0_x|DKA35OU}n4CSr#7vY1&XL*A$LT3TPP zd5eC1UQ6Oaxv8?t>$-OCN;E=Je?`+t6Kz3yl^stj>j9JC8|od_~NDTU(KkQLLrS=vX0Zp(lx%jk~UGi zb|7Zrm6VJ75H_nuGyZ$^bT!)|JqaX&O#+nX zpfV8{c6yPlx!`f*DFD&7N<)suYt9FTYHkN5k0mRqDVBUEA&;EO=*$^>)I{fr_>MLQ z^Q{Fne066_+m}Jru~m+R!4=@HaG#ebwwnECk(;(F{IM}IEOOHNz!rJYv^&uX9xnkAQWlbm6i_}`+Rq6qs^lh3c`|^Dv}!a zOmFU}6&mI0sExjndJofcYDIm6+&ZEgLa%G)SaC&5=1$pH#qX8zak*8cyKe76f78QK zDq_Gsh_*&^AteK;cPTSzwVlQ3QWbZwELm}qPU%I;o}@$q%dzJ$^x|JNSkZ*9e(MfY z;Zrn#+bii@i}AoK=V$W~wcI)YAK?;(2`eK&9E0^B9cozu3P65h6LfNyUFz=;$>=aX zUua`fDQXvK-Uiw3%pg2O;SK*Tb3Ss6xTLwRKP|Wzw;8y2ee&k)HaEKFbUnu<_qV7t zy5ws~b}~l~5V`_d^q35;z#s}#mcF9NJR26tnbU=&Gu!wD#FWBE~%Q7F-=%=Is z-^=-)8ajk;TnDH?X02u>hVnS|Yh&g!&G~^IwAzeiZL@1^Xm0{(gxlL{V@P404WUE- zWQvz=)ineC*l1?bPvX(~?zvKuW1f1>x_kjY>@QfZ z3ZcCt^E6C3lMYEpY+8|2?q_o3c^ST`eQe>PzXCm);11B(r>zFA)Y7Sm}cWgym(wSl;+Iqecryr-MtxQAh2ZE#Ck%530t>f?W(*ZuBU zEDOel4%f=G1y`sK7*1gJ*dr`#xS5{1euf4CWn>!4=rok%|AJEfdnj$}blT(IMnjS{ z9?Y*`Y=O1`rtR&Po|W;@c&$D+Lr|SGt{(N9nKM-rLq0etEoohtL)+-)WJuh~nQON# z3v+U~DN!8YA*M;EIVQrx1mXFLrC+R~kDV-TpPSxsrPg3hQ&m5jfLw|buQJpDmRnC> z^svy{dXmLrNmXfqAN;iIzEv}XyR5HHx`WCO zqI?=Tkn%99e~Wre3tNRd;<`L~6Ym~Hmn8G#6RkS?V=uR7DUGJ%Y&p}0_Ngf?ES%WW zwW$N<SMoF?aex0SovZT@vuWjdbenAnmV61$W%l|nWzK^H%%C(T3+OxC?Ue4&DFL3`W6&lZ>RTSn>d~3Gf+2}n*fUUqMhJtv^t)1hj=bTaF)*Q*=<)fYLx<^8I8=axH(2_ zX2ZWHmXPj&W{YtEklh;ke2es4(phms-)r(l#tqL2eMY`*ztj#^wFM&hO{ zaF(pMs2g1>H<0HN=h2j7HtAp9_~Im*mIsT2)*O!BLbG1)t^8=g+VwubBt0{d;|Ikf zb5FJqcE@&T$>%!J6RKE2m(Xtlax5}0lB$)jK1LHHRA!bA)rqwDf)cc`_$s8-$I(tf#dXNwEhg&pP>Hq(Vrsy!QgdDFnT^p&{_DdEKu{3 z_N8DWwXsgCiaD0eM=;8&D$Pg11vsJ`&I8KCzMMLP8o_8xt#K3{6vG|IDyx#R*Vn{G z`RV0^s_#;!H@cxWW!rm24!6Jtj0Q3`#+m%$M(uJy2RXVzE;V2)j<-4JTXAwl`L6-r z4FiTifE8EzZeD(+Z_Ee(y3)7m14=0N{*^)B^~?GG0$RJie}1L!+Aqle@=D+8_pkIN zKcc@wi-9}Fwf1ClYePuI98xj7I(BERI%Ls#A}@o^NHWw#m+=;>v4`hqGN!ol(& z0%#n`8i;fc4){jNky<6upL{-|6=Uo%M&ePM*lF__%?4IU8y*;-nDM>AS{*Md8f4jo zt*LpTJ)GikVjJ@qyHAfLA`MidlaZIa&l%pQ5L9}t`>YtlkBX7{Gem#N^`}^W{Q6VC zpVnEd=-H5+EYKttKN1Tr9k3c7gJ)4VnJ}FG4fXe0(bT_NZm5S_G(0`PTZ>UToX%yv zjZ$l@2Xl0JmhX||M|5jOROn}xe#rWYa?R_MsCSllO$+llCT}Hj?r2(=kGqpMGkx{% zkjnWV2mH>GH0wsphM9=XzNs&epIQ-x*<^y`$f%~UT>Ga6B@}0`pPuDPCQn9$w$fIC zwWe2{#uXLby7)pgkzW7!+F-xfjWp1*&U2u`a2O+mujOiaIxzWuPQ8za*N(kAT$y-T z?A)v$&~TA}@hLNaeJG<_`itLwVK@89yLPdNMYI&t2h6t>OmA*IxMr*q8k5n6OafAk zT#C%3wi-I#%9B~SDRqA>mBqEV4#{Dpenpr${l8&Uvvl+Uj8>6&$v4kisrQdVVBT{u z)TiNu@baS{kV-V-YnP}c5#I`;7H8`=YKPTYkwBtr;%Uli=iDHH@-RQFf1IV+E0TPm zofc7HmYA>z`C1 ze@)-Zi6YE#WUlXi%ZA)TSrY84H^1s9?@Xn%=Pr({A<|Tfa}zr?cAp=U*L@CH&(V0) zKW6YFy`P$OJx1f$JP}{Mt(RcNc6`iheiH~ji$b#2Tsqk*V!YGG@yNOEhow?xlNCP1 zb@MRb>}GB_53aSQwA1;*eW~)C(A7ln2E=Duv zK~Eid;2>Mzh%yJe%QFI8nI5|+s z5swyQlw`j&ls4vabZzHN5`Cm_xvgK($BIKiSZfXX69?DCWK23U0+CE9~YT-2D1pjFy12L^_bdEqOHL-sRZ=JJzewBB2 z>dzNb6Bwi>`f6dV&3(kWaJz+lxVOH;Od3|E9|w(aDsG4hJP}MDcjdIEMI%F(Wv$mW z(H-`_*G4mzR;r_`ZD5EKnY}iyMw2=Ac1}iz6gMqu75*q-t#md}Otrr$a6m!mrKUyY zn4%-&%5%c6Cfi5bxg5QyPow4HjC3TbIDRWq(lvE zs$#o;AjqUip;fY5;!v)2@#T_*Hc zd+}W}hb$2V!`v6LI?)(El(q4)NqmC9n~{|r-EDd|A5fdJFb<7}nG4LVY8TeN4$Dm! zi_e4tbGZ^NDmVQ>rG$sS1s;cI<1u})#REsiEIfwPTlMRCi$`9Irjy+m>m=vcSpyCY zDcQ6Lvz#~V<6Z@bI>IX-h#RcK^Pv?g^C4OT*Kh1Mp>-i+2W)bCj zGk@^EpD@JCywdi{S9dMBOoL>17rzv+eK^ClWhPOELtI}(uM8+flMC^;%aq(|CBGzg zf!T_LcCRNOl`j@M4{*Rk{}SL9{(lylt$FS}vHRV`>Y)C0GoLRM9=`fDS~L{?NTtKvyQ^Z@Jt+0h zQ8zK)*1_4h>I#p#&y(WB&gkUP8ne+*KwJP4lsklSIH!xQqb;Rxw-CH+@$hJ~;ubNq z+QHq}BrkW|_zI-8`tSsdW4p`~DkN+rH}=0mj1{`oHbtG+sbl>^5^yN6u2t){jnN3x zjpjiI(^t0(Zqkq)lDV%Z5R?cz2)@Wyl(3R-m+3{5-gt2d+EVI8VvjIlE5ZA?z!A*m zW~PQ^iJnzN)JIApH#qZQqwP(%(1FTpTI9E^9Xef}VuBIsk~|?h$EF?30@pFRe9Qaw z%i#a*sZ{%avw!P2d1Wm_V4?Rtm#B?*SCXY??)vemlrY{MoI^@=INv*9Q2;qb)k)DUi50%M#IeZIP}a8gaot#G>hVD++VSw{y)PZQ8_TFHk8qxpQ# zmkOr-5e`rLCv3)f995;vx{C$(3A@TEYKfq9GDiU=ee~ol^-P*vI|=M^ABdfGaED+q z)_+R+>V5*UhI#5`9^1Z80?T8vi?{fN$*?Qm>#n4{ih6~inpU>Zm%LTcCnxlgT@_Ns zung;mO-AeJAz$v{{S?z;%B9Wrh93vkYeUFmo^#ET3#KyrH|P> z*^b3M*V>6c9_tf{t6k#M^KBwZ0m=&tT_2zVuuY(La84^>(Rh)yg08BL9!&TuJx|sE zDSUrxK%3Trm!(ao^+C_jkUk#KiMf4Z0#%F{5ACpN%qA&)Vsi2qIx%U~iHYvVaQ}3H z*lVpUVqZQg%tHs(l=dr}c(R1iJJfXAB`Q)*av!D5$)vF+XZDcpNw!c(ATRqEkN_I0 zAH(#+!N1MI=d$-QwZJh7K83s+=HC_S;Wl8c!hR0DN4ORd)w@9tw@r2-zXOV(x}<+; z&5tuwtDBO2u&WNY>|T9(@)Oj<51e}V_Rt06C}NfxXTR<3E~Jj+QtF;AR|gx*$EZQA z*U`mBU1!E*oJWD_;vb;?qP#F>fbLj0)^Xt@Y+e_`X>iP6s84 zU0)FFa6&4__5!VLLW|c1JMh31={yxyY|%Q(+5}#6IOm41BDhF#PUtcW1ia5#&sj}Q zLh%kDCA*lC$Np*uZ}dG3-o7`=i$3j}6EBIlyt_9tGQ7{pFD@CJMoCG*D{mETaSox! zS0y$BRuFmWc(5&Z{C>8a^&6TuhNAJ3-VR(D-~hm@K7$D-)V&#uyIg1S42`!`>J0Aq zFJGV3F#L|Ee)x+;eLc=wX1JPYtgt*q7*Wf2y=b$+mAN%xyYMo<=)yeJcnZ}A{3+QG zDrFGLF?d`0oisRhSMW<0H zfa8Z-#JYLShlW|=bONc7IpJV3Pw5Q*XwIBo%dL*23PNr9n-@MsGl7_7yG*HTO3?;? z2>H{qsEx^WZLk*`Kf1~{>w0G*ubgttn3kvXnYkm8|q?qP#;v_meq_WC}J5qJKVUnPxVwZ03mTo0$d) zFGBf$c0zO>MpmyHPfhK0op=R#>DZ-8OYtm8v9t>*X4{z7h<|-gby_pC|KL{j`WvjU zB;_bHn>2?eE+AFqCsRIA!;cKH_!7OPyal~opVMdE*n@UVgYk%J6$(VQ7KGYFw&sOT zsu}eQ#vLIx7?YP+&Tk$6oV;vf_NOIAnUTI}v^!kS6Q%9(x?=Qrce#a!L?=ferN`>I znQu&|x4LU-A3@R$59rd&H)i`vo5XwJWw-vrmHNpg4J7Hq9xmx)msCd5DYv<#g(SHJ z7J*XunxA8x%7wh;7;kgREB+k&<*D?SuCID2b@od$h1`9Yf((tsq;D2@{`yB* ze|>hJ?B`B5M_xIAr{+&!>j~cYes^BcR!&@ zrb<1^f!OY28yaMX3Z^}cGAzW?*``$EP8BJnPxVfT+ zi-a_(!FvIH4jhHxK9p#z;z}NMNh&1Bt9;NJ34F1JfOvESH~8e@fR>MSraH)fn!8aQ(y7ujlZ5Nn?fWL}X_w)Rl9C3CH2I zq$;@%{bZH8)i)5Y!q@E=WtgjMzp(WZ`o4bsJSczwp2^>=LW^A?I^QnvDsN^G0w1F7 zlyQ{N9?krUjxMMk^$7r_XjjshG6vcUJ#v{rP;4M)*t&xixLM=6b`dcDHIiBmoONcBnB>JBULWU zPPP@md@XyoyyzE3_Fb8%ell;NV-wpX$Q-}7tofAn22ppm4&2N$kLr}QWp#t$VB(MLiAOw%MD%3Yktk82sC~QPs zA*2V_qc!~*CoLAN6Q)>Nrac;Ab>`Ybw830A4Z$p-Bn!s$hU6L1U-@?H{_Z|E=4bQp z((Yih-463YCEFMwEIupEnuoO0u@lvl~m_VN1+`KZUCO=UzFc&_^%Ri|fa_UZiui-VpafciimR ztb)kQ$(fc*yrkZkeu%_(2)vVmE&`;RQ~XX_94 z{M^~}2}bgnjukLRvrDGBnlyb66l;$=%0iN4+#Za6LHJ1pvwQC>)(x+Xk5;)hY!d~U zQ}k*bYNOF?r;ES*i!KgAHE8ah#`_B;cR>SCGK{}Mze9_?-wHm{$HtE=PE3NKvg+#V zp2jQRG+`C;#_Q^ncOS3Gnq-v^|M&5F2!_fUulCs(H_Ky)77Ruq+7?As!@|N&<6LfH z#Y6C%7_gkdRUa5?b%Iy%EBVVZMF5u z36h@-2kk(9ho zr>I%x4_oXKt331K5NAA$%E)(seeXrqNOB$^#~L8%H%h<+?9aQ*S+pe!-Kj0Hvt{Z?q0Z^|(u9fWne%0xBfBey zjqE^V!}Zlo2UcuoarA@8irna+V%_hZxOZe_o9NJD*FAE^5ecY0mxv-O@+lGp}twfQ}`~w{Rhc?K^%i^9(&}6(Fc;p#0K@A z{H=zMvNb#+2|xAQY&Sn*+ixo*d3|+K3bMN_BPCrvT%k=coru7)0}E^=V6%%3cSX0r zuN2jGK2!97-HK}9fcmy8TAp2WgZLOG?qDqrUf4YaRT)<-JtR@%Ch-+g7@hM*%6v>B zaXD@pVkgI1^S~vVGWLGK9F<4YTFCVZJXkJZ1jBi?gAPHt*=QcI2UDRrk)3}Cy*hcP zunIjtd8dXs^aO>h{d6FyP^SJY5K9c<4}DGqg(c6Y7q{Rp`A!68w}FJ_?CE%>Yu05i zA?(X+yp9WDN<;OatKY9w@OLnmwEM1i77URIxGX6fw1m%_j8geRz6y}`fR;AsvyLbd`%&B;qAO-W4)5hG*YQ!&Qv3^b6%jQ`N zSsRnXn*|VLL}ClAd0SxC;2zJSpKK;xjQ9uXo4aRqeLrL2k-~0v$?|;UR z600*vX|jRYVr10Tt8<2!`p2|{Eh%6gP5nj9>X8n6-d`Q-?oB_A+NZ`ThD9V^@<5&K zL??A3pH9FtUMIffT9~HIhkRDMV*xi9XOn=muyeH-LBL!vUt`?zo|W>|?JKDi+oWOP z84`E6&?MhGc#!5-YmYBWdv3N{%Tz#fx~pY@y>aBKv-4d(mV+LvuH zg9dstR-vGDX^QLUJeC$+lF*Wi`+$0l=;i%mmDCd;${;~51j1JWiZ)w0K%uvhe9ihI zJ(peWHOgtfk0nJ**Q|@FCj6$U4O@hBu$R<%7p(ZT0agzk+h9+CZ8bXq54l^+w$aqT zC)(-7fLH$E2N~jfaXE*dM4aTK>yd3Oie`fFi+9@Rgk~kbBTWWo@8qw!*x+JZlE zYCFXSW%t#c0A#&OoNs>SG*GLF$Z-y-ObRor$_`3s%sj`FIMuCp@j1wq@8cE2Mfatp z!wW)1=4l|<>S7qUh!sUdK3gk-pz3@fc9E7(4cV#bNz^Wf5fIKzBo~E?N&41b;*+!g57Th-Vl@w zsHg=s@hXUVF$bbF_eX@AG==x*2olE&+crqFqu2@(7Ob*3qF2In8ah2Q!I zkJ?O>7B;_%YOYs&HkppIFk}|}D^kyLU=NwjWqE4`U?Mk{!0-}5}`pUE#RbCg(J;g#r5 z8p0^gQPG2=H!3}nRdEZ>( zN8{27iOJzi0Yj3R`GMGkJTn3N z&NJuX8XCHpcQNxccdFwG@=76@IKRGaYbp>W+AxO4PvAaWjs+1xd~IPdI842r8s6mK zspt)Cqqz8wTUvTQ=9|^m3`Y<$%Zj8cq~5`R7a-2Xq#u(N_={NWXoCr3%RBv8LG%EnU{2t^}q#--5zh;KL3E$0k$MuN!1YS_COGFKnmUmS4c&R_*5Ke(9ReIKv z9Rycm1Em`#9IKq`$)TrT29{Oj_^tmE1$?u{=Tg+1Z8O7)8tlLe!a0{7!3RC73XSWkcGS#Q#g!c&+fqzPKp5NC6pb6XV(v zHjt*)JV0kqJ|H*|w6rrjO{ye6Wr#g)|K>G+0%I7Mt;rNd%Up*xQ7&;D6V}o#{RhKL z=6#z2Gm$dVU^C_%>HpgvLwWCwokew^K|;S@eLVfUoUyY3ye9>gy~sci0w&`k`R=fW07Q?h!nzK7Ycvn;GnRG*!$%<7SCD zbCyjhH&yOS(A?eu$Q<*V#Xaqp;bvt&`(>o*H9%kHO`#n#y)ED4^VA(P2W-K5L}JL& zU8!u_w&?BI@7(5o2ez7V=VP(ui8=2Y?@wm0ylpJB$V}8BbDcT?(f8HK4=k5&4kDY^ z*10UNZ9xaE8HyKC6D8C&=lgDdsyz`S9qHk04_ZchHO;+-kHG9-gySc5Py!2RLvn?% zYW~-Z-*DO9nHmLi3vzP&=7qgO*F4_iZd zeO%r!n-?0JNoNL~O9)v!^|4svps)8jYWGr;p<;|l9b1Qc@IlCe!!?;0R2F@+v6U_0 zO~!voxubjyJ&zXI*N(i7i;98SFYs53OQ&o1koho~W=b#_4-4YawwjO&nY~@$ysNQ~<7@>?Hg^*XYht`$D;i1Q zoCO$Eaedv4!dR2L6{Q&20?QZfls&`B3>C+zc#H98THRunNWtU{9sVpb=l>{xBA^fO77764##MJz zTrgvpEi?bTL>=etHc`FlsAld4T-yqSX38>lspdat7;QLoQ# z^@g~5Jh;VDY3og;Aoc8oDVH8}(T`{+J#9D5w@JPq3Jq(HWTd>Qqj?dS-3~&T$7{Ez ztjz*m9>WT111DO057LZu;GN3x2^#|6oR)qIgTDP^}pYV@HU3>Blk zA6q_VmDws?ilYi<9w)?mX>)%hKFRj@viaoB$*30lqoQg(%>eivHL(-y+o;k=@?YXQ zVBefD*ZR>ByU06iN-f<8VkVUpl6?ecBj)eB?1g?3pkNyhCGvS2S5ED(kgaVLAc$eT zF(Yha+azrJ%6sHS0yo$6__-$cJLLGpgR0{Tv=%r@hxCm;o+#~=IKw9-2SC|PM@S%N zh?^ylDQ${b2#YPp?fjiPRi4HB7cKWG--e4~+P{>u7&E?XpJ zpl|*~zh8aIThF*keSVN6}qo^T4wj zKBAy+Vt}jDFF(-18!UHmY4Q+zT)Wwv@lTaRrRHFk+RngN4bRx)8)Rx?_^n%0)~ct` z!jzE-DsV*l*_s3GtZX#%(L$%wwbyW|E3YtlBsDGqlGar&Kgh6AvYyjNq{LI4k(f&dW*nHB zUAUV08IRUagHgg5aiDipZ@ZOoenSj8<`|Aei*=tNUNXCYcmah^c2{Jnz?%$OPN4P^ zc64-Qi&=M)wksITG@2yX`#%HVB33UOtw!PWR;~rYcTZTqFy@VtUK~c!dp5~eKa093 zJ#;q}o{F1d^6#1blb38`IP?@E4^u~oEO3Z?mYd*sIu&?5HzAiI5C?sc2Ri!dBp!Lg zkDzim^v3y7RR{m+hyhgRpTp-|Dy2*l9)A+2PrDpc!Of&t5YtJLgxI%KpNj*vDHaZO zHt~{j;+ow6U@@)ubI(hwG(9xsxU&#y1Zs4!E`8K^N`IDLdlY}MXiS*E_uz^pj z+e%ZllQ{j(WLk(Zxe|XyUKM)sin01azc+jPlf(#&OzFaWwwymwrK9}{OWi0ti(H4{q4Tx*5THtk#> z{iflC#gIi-%vf z2RcQ*flk9`SULrz%qqa7*Z0Ts(|z~VeFOQ^{g*V;Ojy}GOid@)VH!Kx+Nt1iU!7!F zAaZ(c=qoRXxbqmCKa6xIWbS2ppf$Y_j2?$@pOnv3n5r2g*bmwE8qEv6X;%q%*#vuD z9HlYRLjAA=P4nz|Ricpd?l{BY7aHfX;Hw~+7{2*!23th+zBE5-PXKuAxWdHA-ngAb zg7w4;XH6@K$-wLrp|a_I3;qa_EyKv?*+_5VN%{q5pRN)+Z`KZGqd8Kb@!7lDa=@13 zE%nUm^8Y6X*!`b<-$*`*s8(CdUygVEJ&QY}NF+RQsxX<-ND1dQOv*|1#4UYb(t9Fgao>&kiE050D!V_nm4ipwR4k}qRZyc&Ax6$+f zHl*fpmrTiKt5Gw)lh^qzcb;2VfC>=Vn(w=70I~vVt;w;W&L;3qTBazsav|kbu}TD`7sSho%fC-0WJcusk&6)>mn-C8O>A_2j3toE zrq7XwgSW3<@l*7SZw`L?Rk{2b+=`!7tx+TB*vIS89#As<^VKY~e9Pau=OnIaZm4Mr zz|q9Zo&r+{vWXz#i9a^y&#A_>oBeWuIi59BvOv*$xwY^ITjo5FmAx5v6x**pe-J&( z3eWaxAuke#QgT^kp&v9~ugbY{VMD&}_2rmzFX^j77Zx5gzl}O7k+TU5hk>DXzm8H) zVwzv@cjgYs>7%|+Spt$Q0rdsRg4)W1+7eO+Af-!dGw>Xx)4x^wVXt=H9&5kzNXy#S z?N<9DuXfu#*1l)A+C6ux-QBC5zsK5V?^gTYb6aBmEx*<8z4lmp-`#4zvRmz$UhR&1 zto_NuE&Cnbt@agO?Y;L{`@!96pF(LE;)A`#U073iM=4&m*#0Uhzc|fXfivB5_ynd1 zoe&go8&FfM#VkxuwH)}#?FHo<+Uee%Kj6Kcm!5JZn=gWc-`D(%m-rjLXKmO8SN+ra zechBlr+e!=w7McIA3&~OZE-MpCCU?@VUf1xlK}ya&t*)} zBffY^{x~G;bs?)zgGnsgnz9D?gO*gW_fE5LL&W{J+S}@*oLVq9i7?z~emP15*)?H5 zO3oQYujtN7f&Q;*QTqDRE^WdZ5}jzYxpNtP>D-|;u^aWQfUoX7N>oOd+RgBPg0Tyb z#U)2Y#2BkhcXpiCn@A#C>pFSsD=cG}*2-hQi8v33Nnc#*(v!nUXL2e1BGM}cx%7{e zj)tW4D$+-s=F;aWy`4)xp7fn_UE4F2F7=)AT}f{@&!xvm??s&RP=7Q>lrLPV1JQ(M z{=6u0Ej5_WKjb#+`OeF{J2;uC*UM`;U05dPd07Q#P&Y99Bo(}Zf;4)}2yffPi_8pR z&l}KZ7VLqZQb4%Y*ATjWuxtpsm{r<~9>F$05PiEc`i|*xB(S52N)G0uU!vh#B~5gS zY|Fo89G+V7l3v@a47xLz`%7vKRTe&~ZIIQaInYm;8>j2Imp%i2ky(s46AczekL4a; zeqs!u=+3$vYe)7JE!Xo#ilS8fnGsaZ7*>WF$KBr?Iuh zg{G^xykOlZ&CUzS(+y8jF+-go!7O!CA(R_iYj`oj<|n@6C$=sM&F@Q^S^I#!KIg&+ zvQslZ9zjV}>}^Y;r*5d}fwd-OcD(F?+{fl9a7B(e3hSgXqC?iWt=R}r_f$Ktlj ze2+e1tG!@pfZ=c1++0o;%(IX{Wmk~i*xGF{8Gw!I=hP970IFF3H7N|q1*z{c1iqZ4 z!0auwoIHT6)3UOzuvu%#GUgh~e3OQI%muR#hJr3|8EdgHuU~$F5&yhx$_~~hLFGT~hYel8wuij1$ zUSb=~iGUPYpZ)6|t{GX9B!3pb_glyl?>>esgRzs*a;6N?Dy{>66Br1NEaRk(zu`N& zu*rN=tt6CmYn{+ZV;22opNp5ha+g2H+&P_DA*S6QBt84WSiiR+mUFKHA#tHe+m`t8 zhXB3V|3J5}OxKe{O#DN};hK#*OGS7;w3gh+)I*`;WAaq&eUXMYC6#1%=yk8Q z$>C}{7k8PL2U%HOXm=zT`&^`90cBXbtsBPPwoK>>>kPcbyw_dp;S%2+H#1Vnkx>34 zD4!<#cuV$){57*i%ThKBTOD)VhH=rxrDW52tTFLU2lJjuO}tZzUkkKiF`2Ho%1*IA z-|5$$!3@BSXV3f$lp86OD5Qi2%IS>u`~alSRUnT^BMFzm6Ic~^TIrxFKRdn+S^k{C z@k!l6-2=L8xZ3=w%nI(c+QM5`6EmfPY5S>ER^6#;d4kY9o;rfH#_g23i+enFI1g_Iu!sR1ong4UX|2zd{K502fUE8Xs?4Ec~%$F9q-jx59DM!svm zNHq!FV{IIMri^}G;eK`=96ODI-LP1MKS>Uxd?0r78u(P9q$2I;(WSNJKDaL1*i>0ld32DzhY)BnBl=$iwmu*W80h1qFH?N2H zTTG@wP;)Mr^lG>u`+fAtx}x;s=<=~cx$b_5HwM<>Oye03w$iOhp6LT~S(f$wXR;_u zo`GyP>q|w3sI=-}QHdB$dMbnj4WYffb6-zQL74{O$!-6F0@iOe-f2LSRcrTo1Ez>^ zs=mdv8>Hn@<$923KF33dH-a?Yp?er7a|>-q`rd(&{`}wBN2qqr%ipIsQh*$Z-z@Og z=4F6Cdqx`g+vJ(?0JpaMl<^C!jE_e%wjSerb%MoOw?I4p6NmLDA!+ECvM2Zm->>aa zWsF%H)ZT=418>kSH$D?jLv!o@<^aj_Zl1f*h!%}lQP`CJpn&xD4j zkYSPe=0Jzc*qfaf`C-#ssdg&WS=G7lEUaHs!P3PyovB|kON77xWziKslHoJo&D85C zKZM@2`w(+P8mF_s$tww}Z%|6B)Vab5_g0O<=3l8klMKyIzx7&GXZE9F3(8(TH_auB zsR2>%!Ivtrk?pr#-jHQQnZ0-V)w&k)Y_vTF+icq57G&x5FdC#?zE_)HtMt{m{a%4C zCca&8fJgdUNYF*p%EBSAaE~ngz_qLlk11oSBc`lyKqSousy%e@$hd+WUwxG_SXb?K zsE;irDilRA0$=whD+Zql)Sgxzz6s}RXeEE`rSANdvq;JdkKr|h&nwqt4YKGyRmY;+ z84rGC;SLM+CZbErt#Y_HpsAbJku%UA3Fb(sqa6DzX8nFJ6?J+`Gq@J{%80;U%U<-9 z;)7|9GZ31nP!li8zh2PGEgA@i;zR);tV{L%ash&Zd`D}<)ytj z`4|xx2akAJ2jST^jpsO!5anSkVu|TM;v2IoT8fSw z&9(1WQUJ6|UR*%8yL$1DL_g!^&Ws!Zs z1Tq9ryddBOl^`Hz7-0Z0;g*^2d8*G`Gr6Fy@crNXemQf_>F(<8>guZM>gqa7QL|8v zE|F3C^nZ6X$Y(RSp6pM-y9f!S%t!kY_1HX>54)o$n|EW&;-%#rKptMm(~8fc5oFJZ zu5=%I>5w$7nBN6guOIWFNP&7?GTvwcoXg2-Z6>s|D_fevma>s^Kt7zcXeX2nI1l6G z#~`p9|MdN`g_^!G{$|rgon1Ov`r_^)eX-`qo(vm6-SMS9=mj=ju|@sobfAFM97Fp^ znrhqP$BN}@#pn2%_7k7}Yrw+pSHU{f4bz=yAkM!J1J0iVKq>}(+>7)Th#n*~F71`w zT}iUt;(7@!lYUrAS*d!RgdQg^LyvEH%INVD$tEKbi-U*g_#m?*E6!4SpHO5~iA-FB zBD+r%iY(418sH3;Cv3#0AMec8Zq}BK0AmfQlpj{bkxQ-kx15%UoQLfl-pK@m7#DQ~ z{2%+@S97d!f(=XVw)Fc_b8r|+9GA-I{)OO@8CZ{SrcE*UY)LiTRWSTM=%$=Ox56#d z^%eV6mhi=ipe9B$g0UApelqL_?@E@`En@|*ONXjqO@p|19Z;qJ7*g6UrT;*R?~2lv z(oQ*$_mKI1HEtYDLuCnz@dGt34?li2ZZm6}szBZq0+PzAc`ZXj>YFAZOEsRsA@wZq z7uWlE0Jz>E`Ikz5ZuPqsQr|2~XdROJq@@0nsrQP;Qme1e1RxjSBkL!}gP2f&4lwJN zxFB^yNNT14;wHGV`j#cE4oNMN)ah(=2Q<1q9&W!)@LF{AH;V#t6a_ z;X*(%-_lz~@6{zH5C!%)^yPLcc;Gy)ZmQ|MLaJXT)ic382<>hal9Vq=Eto`eg!@>q z!wNTT+31P)Q3>ywi@hVBF|jygZS@n`(@7}D4;uYD{P-K)mLszgpaJq{As`i&Xz+3E zQ>jmcq^f4lVTJm=(XiB8RX9dfcw81h^o${tI!$IbBceXdSciQ-*+K_&>lu%=!5#RFmB0< z1Od-8Yg{v4M^4OqqxiZk-3^|h4+g`Km;I$Mgdx0#piO$g3grEE^dFh8XXduZoGqs) zp@i@~ng_vu52&eC71{)Ppw|ja0-z8TnZTz%c*20R6-l&$N};m!S%moSVpI=-!)E;g z=~Q5Ury0m#d>;!#5tO46s2MnAd%gHVVYIvH{n}Dx$#rC;)7=WpK< zB*EJEncmAlIZcUTavck80v}v^OIy(!Me(&pE~1sFX>l47Gowh9#b?#4wkeRU{pA&^ zv;71?7!vh#4ZTsC1j5o%o%HFCA17tixG&)n@*J2dWfQwb%N><>seIZY5&(vTx@i^` zc#v$qL7=jAy|~6$3~N62sy$i>R4=vbYv7Y3b5wtjqJjbqq+xx8M|;}PObUTvA}LMp z!2Ub6Wlm`CIdJKaD9Z5nff_mv7`z>o9>?S%v+Z7p{gj(P_PuI@WUs7@PoTwm-wBv& zRii*oq=D3RoO75!pTpTw01`Y$tYZfb)Ly+Wf6Gz}u&zX(lyXw5?>7lnl#_V_}_XgR(5CPe{!`e}eL9g0z!0g0NNctAIhiQ6`V;L9)bNF+jMA9Ocp1MhLJL$Gf@6sOSvImg zZ$KaLFjteQ4{(@7WddqUA3YBY6UMv2t~5Xj`qL1J2YU(6J~@W1E`?4gDwNl z@~$!xwYvKf8Hs|;F6y7Fv=x-EY6d+r5HrZVNG8=&>eXOu_v;_3S7X(ye7*TO$fU^qRPMcVK@|F2sLYrd)=V(DfIS)s(zwGn{?3;+OHj z&L#7Z8>c<@Zy`|h_cs_XxMt+ajIspZa6#+z56s*_$t}IfIDbz7|3rQUGFBltYW0zA z47Ne{0#KBGBVWjeLu&P!%Mn_q~&z_gj@_rzz3>1fK|Z4tC47)+sh~WWfMZOI3&w6xVqQ^lFmZ|i8AiQYAWy`Rv9RP#`*UmLd4&- zfD1Dqe0E1lE3bv&NAH3r;?*iF0 zNce*y(4c%7Yr*Wr=Sa#D`l3leZ@%B5Ip($8?9^{SqvR8-vISnN-*6-FMPG6bM(Q&vwbn>|S(W`?_|XyS z9F=<9NaZ#k$|h`7sduVWx1?GZAmul=tCS%s#idf<1d+bvA1bA%N;#xbMluEFHP#iU zQVyz=zDPOylu9{llOF7s6q{MhSwVYNX$o{JweiyHO4)b;Yr^E-t3Mk@)>Ne}`x90m zDk^I$i0^I^6(Zg&w7KD0!MHyEGK8Pt!ls^|EsiHJc2+0G&O*?v3}I%%gg1?a0WVQ6 z1z%)A^)9eKHbAy{?Kj6*Ct%Sins}ScvXLz?3C?taCkFxnek%S+j*qh)TOpjr(caA6 zvk>R1TSm#Oc@Q}{T@ta%M^yv-r(sh^ZWkFbN+3b$0+{vy0}eyA97>o!vuhW|P6#@L zo`vNegR4enSvJ}g@BIYO)Z#V=O~m2tZ4$asU;A4qhh_bLV>MBgd=m~TIc4b;zkpX( zk5xjiU+6ZN`f^LBo3icBZul+|?e2(YYKx)$UjJDy4veicGcctmQo1pxd*3QXTehw< zsQv~(asN$TwFRPPp+WA}xOsRBTedfRd|a`}9lGBu7|*5>3;nl+l5G#!H?=_1uVUBA z`u_kw6m}u@P~Zs_JbvltveDrJ2Dkl&s<3FqS3vh+28fSJI0wk>QQZN%pNPL&{d!bG z@%MUo(}M1qadMn~CPrK2Qb_}O8>>IKBDC@s=Oz2^mR&WY0 zyCK!)wjc!p6q`r0oG%<7-E-9budT+3Q6?Y{aKwz^g*g``dh>Yg~#2CP{ zmn1N$U;L4=M~oKe*TE1C9;nV^q8Vpn4F2~ns#1dyJ|2Skmr#nb4l@kqJ{zKNbF*0A z@DqB!h!2@^uRp4nf>RQHS7S*22k<#0Yup7`w>?JFg`OgleV_cKw!{82daW;G!^#q_ z*aK4E#~>L23=N^ z9PD5l(Ly%CzLCBa^Trj2n0Levi0ySg@0{a*PJaZP&2_-)e@>mq=YIv$f6nL1V7i0P z&l&0Tmskt&1suSM{&Nl=z1lv)O{q4lgI4km?%-pkEvE+M*b24b$ourOYX6ia_C4P| z6`~aG(grn68U^ey1S?&rjdw$cxQKVp-G?emr(pjP`AUanQxo@D^QeyJ>6ZZrqIa`d z2;M!`eRpK(H9z7Gz!c1ZJ=PS0z}^!M}mb)xo;PiexFgwAT4^;7wjp2sZHE^)WT zemVX(rEJ|C*QQ=DDZm%dC_k9AeZ@kyh~FqvK9TP{22n);4nO>jdan_}_WF_7URuDF z4cr>b68;Hq@*u%2!l;{6vB@DSHwEbO>M*Yxi`8){mukXQqX6z|@dAwzsPCLghN))DT0VNwjj`id+@-6b(X%grB zus#)Ulvgh5I;@YAM*!T0@(8BhhI<-dGPE1$o6nuaq=tD0n;t&*t;R`&TR@--19NS% ztGol5*nTh-i#mJWlk^44Zfe&w3{+W{cdk_8ez_)EHclvnLkRO90>1kQ3k9Q-LrM<- zykPr&rOmNn{n0Ramm}KT5z0Ga@F4PvuAW{B z+{2Nc8yc9yH#GY_{kGEfo6}+oUDoVuAC?MLNGmvCDNWz*y%L!7;VZ#q32kv4NHjNf z#N%2_9?B!+`U7)OQ0lwdb4FD#DxpQf5-v1!1hHqJk&u;$PYZN&JZ8z{!%`iNA>v|V znTGq@;nAcj!meQQt%~(zBN}$1Wm-o|%RAaw(je-sI7usNzTH!6+J&su0AnIBSANTlpCqX^s@^*`CM7-#GP`@i)@ zODXja{lQtFCm8?|ET~O_fg`$ySr#^WrIHlZDHeo!fOJmK@5DOWSX$o(K}xHqPjN`= zP=k+XwFV#Qit%ux>mmSm?+jf&D{ew_gMRE5;THS2&VX6t)rZIzQnz6pPr342Jc8U5 z({8{zSkFF)kPitj{Dq$LyJ3930;X3oM!dY{pIlwm;3e&`kyf=JLqP-XpuU!j+UwB+ z=m3%8&*`o2QrsTP`yRi744QT<$B~RPii?u((J!e1C17M@zh>x{y03u|&-U(g9osk2* zOa6sl=3sePZqPx5=xXEVmjQodGl1Fgv84fiXXJNzJ`XrqE5Bg5_Jwg>Z4Y8>3B5p| zTQ|7xfwAx&eg8?BF;+A9QONvY8Vw@PwH8<`m?i~ny|B)gl7C`J8UwS_-YIxTRJi!H zsmKK3UeD=K&FArmh=q~E#|CcJXR3;|;-^srm4n9IJZ3nhP2xAd^0#mfA@EpWBt$oR`-5LP^a zpZyNO=xCx4x_mh+K8sOgU28Cj+pZme+8~sIM?%8*9sF(IGOM8eWO({5Mq_Z) zF}3yUY9Rz8IlyM}AWAi4`_s=tMTE-*)V4#qrt)jWvr(zpUIi;d|G&3jxukB`1pq_H z1l;!STY~l+Hu0XV)Z@6%HxtnH?ufr8%Af)D^%F7&GBLf{Yjz%!KwV<5isv+hd|}bw zxA+_p-p*jEUkxB=*@+)jesgQv&(%TDJa}J10x^5SwW#T3SPRW|UmJY=+U_%H zC98oQ;yvVhoowF0k zt?7)9+O5e+=DD}bWFCCWNp6WN+&*!glpK%iqU2V%KA7BEHSSiJ&+z@J@lY1VneWv5 zunv2r$@Kw*l*(}f!swv(4oGoT;B7S07pCUdH}Xn5tc6uK#<$geI$m3zirEhZxyBi` zG`!VV-eJW61*FW_EA0+1N3P4Vr*)OEIeHtspaL`&Vsu>wfa+c0i%V^*GkB}yVe$Z# zcIH1St-X;pK>s5ZKuiV*BYr~{a`_8Hq2w+wZc9Zw#D^x0Rn_gNjG*uEgWf>4q(6re zu1vl&7NzvWvt9}a&~>YRPd2BmScyp|@m2W|G5Qt$-AI^^gzRZ|n`HJ48)wp1CIb|f zdHCe-JboIin{I!AI}VZor-4f1kdE_ZbtuTMBUwuC$G?Fmx}==^H~K_H49iXQ3g!dE zqvJdLt{u!@Ff3SlwBmIHL3@n8n(u)Jl;Gn&WG@g)M+|YGR4QbS zL|1DTKqu8&Kb#oa185jAoLz%z{lqYoL(>+X!@wLlGW)yD4_po09^_~BE+hx))bwJb zu{-b@tW1`+#J!-|>4A_Z!CYsH`DdFi6RcPNJ6oQdoitOYA94eMk3}}4- zncy=dr+czA)m4t9wHJ~MY`9jp@VT!y5kX+M{S6ah@{g9i- z4<)BIir=fq^V_3=D#5M$qoDp2lqZOn10H!+UpG*Ql&U+XiJ!}@ znDUo1ACQu5XwM<~!ANb*@ay%fpWvqecz=U_IqngjI?ajCJMtjhUfseP;THLRN_l45 zLHHTF6Cyj=Zbz40)V2M?sv zWxs-dK;a}=YT)}Pd^L9pRvEM8l`Rh%IJ69REBulS4t5pQu$apX!|-|~>Z9THSK+p{xY8ul5sx1~bv$~bP)8i5EEFCDS`i|#0dG+cz+r}E z3w=yh^nsS8@wqdaMSAh;QyDzz3{OR`z78M*#&4~dJ%t|VvtDB^8{^|?=iWT+9G79K zsEz~lN6TR&;;I~LQQw3__jF-R?)#}3V;P?Q=$FdUlnWI6n$C>i>fjLLA(qPP!1erQ zc56Q#hbp_Rt^KsmYAV^f@M`;++Ii0bLSH~|ylt^>uGL4M;ZRk%e*}J#q1ZOmTRS^q z{DsgHm~~FszgMCC9J_%CMqc_Tw6I$JVcga_c|uex837L>z8i#hH6v5tbJ7QI^xmYo zvT+X!$!x~=Lw5d{Dwqx5X&F#No@~8Wh)7;!NQ}3=8z!JCWZh~}^fjQg4R*p<0(iht z37Ffi#fux37RJ$K*LpPwRzKIC^ocmsr`$c(76E{Lc(TuSrTZ#NRRx!-?pCakR=3;x za4p)e%5Xhvi?8cC5L#~UhHcf&&p*1Ia(SY}Ja4n~~M+7`_! za&e7I{JgQ>AeC6W;KKC!Rc!7b5w8ke$u31CwJ&j+9~^g!vJ;HepGFZmPWd+KfURIG zZ3Va1klVuwh3_#S^L3nPOH%PMDo}h2vjgss_S3P}zS^4GVk`EwX}iVUGiVQiA*fqn z5eNk4+)S`Goc-w5n=hoCeA^8mix8VnE1{pKgjv(${VmVID{66m`-&uU@&3=Rz5F(t z^)e`Js?2+zv+2%)Ph9ZMfat`+16!LV^hb1IrSGeXOGclBeb3001>Q5<`GAYUWot2i zlB9jG_WGQ#KNC+G$c0U$vSr8xLjYgp;uYl{kUJIC@pq;T$29#Pl}e%f)^D9CNc|`8 zhZ)&MA{#oI`Z^7)DLef82NuV1OWL-1u#gPuXnF6bd05=P7P+-z8+$SFn={LE>1WVGUZPFN&3%-21@RY<{k>_X?w2t)90}$jdqbq~#wUyeGwU zIjKgc3+RejQ;`*9RZ#7|7Q3ZJh)8UzqPEL#QAP>Ot^9Pj)l}d^GE$kCnf!hNet82! z+*y4&PLZi4h_!F&?E`8m{FCknj%~F&goo8`%rJp*wR3E#(Bpb-u~)~cNZlc5(Th+s z29xc3{^r00KRjF-ktB_3*HEOS*0A>|T z%r|OA4rpP$L|CRUhQDLW_|N|Cyj40H%?GzgDX+;I(!zQhYzTeXA9(>bk`~#cKEWPs zQXS74w8Gk{rlO51GrY*ERx9c|$zkwg&l|oUXofY>U)dk6tpo>A;olkAesg5|2ZXgh z2)`TQcOV)D{n2^}t|os!0=VK$SbyTI6S%b=?0XAq)_EY$U%4sRx$>~i)vs@2WPO&< z`i4bz_S&eOHCZnWmWt>m`WK19>m#8ig+cYxN{guYQslY=Je!2(&l_iLY^DTP3xe;+ z_VkHt&t)O)!2njYu(bkB+q!^0&M-Rf>_-g4s%r>9RjnlhJhGf|GVAZcIgNWC7IhX=?!G1iE0i7KenCptJ!z1oXh`(urU73j7MEdaS*IeDun+a$0 zE!@ueK;Mxoi&dP=Fw7igte_yywBlqDmvYE9(NdvbVVv77OL!CeW`0kfQD~=mEv2}= z5Yek$|I53hcR{5gh<%dEzF?yfUd6bv4?_T#H~FUY_HOI?NYYjt!nWL=xQ=FYG3Iea zYbkAODQ(};Qko5cwbeR@%dpb9ZE~ii=^Z`=ho$b$!1?VJZ_Rd;^IN!^K0Hf#G7VaM zd+8E+>DvjkGuV2%bM$elY1Ye-ft(zxZ~)eGsD$Br(5cM661$e}zBnMrR?rfa@DaAT z{5_^7uRooP3KgeZV#3pNaPK%<6a zdJbP~{!jq8pigqZLe>vCj!lm3D#&zhX&>1){w14`{SdVeb;Rdgyr7pg_x~Vu^z|ji z0MMVADhdOGC+J`B3)^xY+InraA@_3~SP12+RT6e%zR;JRV5SP0AwazCD(sAD#lHt2 z?nTU-CXRFZqw?$1r{TB$7I8`q%9Jo7GQEXwML~urIipX{5tj@&?BUqYhOp>2ze5G) zwGZQ}-*6R78U3Kc!#LnZxQhd5fo+)^+s=?KUfuMFT4aO3N-jkel98L%S_xJ|&~S$7 zldnMkRgfkZG)v!G*^YO)S7Cvz-GOzK>z9y1GEl}vRz>5)1noG>`BgdLb3w@{O+ss*33EgoQE6z{!aw^GBgT zsL``tLXr6cWH$^AtIJ7S{2W8jfytn!vwF*oLU{I5S1f3!D5e*_M4(T?UJ7+k#4i^2 z=%=&AwFtp@T2kA}eE^L|@-?WkXjp$+KeY0lAIYH$4$IpQvu~e4vvOZUoXae5pbQ`S zAn%L8yuVd>WzwC|56IJAeG)Rm_bV_7>h;&{s}1Wf;sc;cL>j>NXWppaU!i{$u6;2l z&Lrd^y5K#CU7s6L$}@`U`ojd7UDl(uxoCLn0X8fxN5nCzz(BG4QBRVB*)XZi_j zdtvTRb3elQYPEm>(_>9BF$DD-;g<*+gX6Cg= zaCHwes`xcV0LX1)`B~BMmRJ??7^D9227x>*tndse+!2uV+f1RoHcy$n$-E|(y~1Y- zSpM*z&j6@ddtOdOf?__Zt0l%HaWR3zDeIC^#Wl9qi*ApPb^jABeH%W-!ESIlWM12Y z-S`pd$1MJ&Ai+uE|Hi>pv^d5K$ml>0T}MFsE9zz+zaFU z1-MtrR`4u+JOWs76!AUjDf}*_yNmj?ue%+fgAwgq&rkn>E&`sMYQo9)DAe9DzD$V& zfck9!PLc5mS`CUDKaQ4L*h`GpPIg9HbG^Opach5j-9+1+c*=@pi9aLBerl90n{Qg! zPmQx)XD|O7#@r&uhs{MxVqYVM%yxtrdhM?r^eu* z5}V~tvzM0v=)bC3`p^>Lu9z(tbv6%CowPNN#oFugZArXq;qGpCK5OgjZf!4r6{R%A z%iLS+&L6=~;W)dw2*yMk&wSiVt^s{i=oU7_jh3~fw94~NKTiiF9KT1X;@0Ld{r;hs`g`71D0w6tJkHrc&+ksDdy0tYe?WYnJwAFrBp)DH@vje}8XM4bY zs-KFZt;*O>4b@7h9c*q%qHI+RDqMujLHm%l=9I3ZKGG*Y7fBk3gG$e``J=MVEzgvm3^7;ekSm&cZI;xT~8nj_9Jo~wfHoW>wY|ilxHBnVEKED z_HZvS1jYf^UN*4kW=xWPxFeP4j->c-X8X1q=P~IWbD7#C>Ig7M0O1@SxjFOt7DmzI zfXbqmqNoUJI`5K6RO>g?Vij5TLwvOX;Gv(?xL#!wq{dN3jeAD0#>#BpTVih@&yo7B z)_()Wg4afUSNrQ@hAJ0xl;yD+N; zU)Cg<v|7d67%rh*Mjp<$%g0A2GR1oZO9aID<}*-UD<&r=j8z5oe;eon+9MBj}t;2Zjt(Gz0?w> z?qx<9iiHr#9Ko?>r91fE3DPswI2n(d^^T}M+xLz!9yj~PW2jO3QYl>>LIUn_gm29w z?2{P**kS&AA@E4_&kaZ8_qz3^3(ohhT-&7HfTO=QP@##qw{;Xoa+aO zYY1k_qE;}mz>0Q9{{y}e+L}Qom9vFI<>dYbGuf-PkkkV!R4O%mi~Ve@O?J|`J+#e8 zS;iFB$**o<4Kzg0kh-mKbOII%)Fk7{lr|yzyAazOhN7fy7ckaaFqh-5M+2p9s)#dH z!qt-CZxj>mPzee29ZGZCUXu@;sJ{GunX&r8CP=t|59PlgokCdL;O44-eKXXr_jD>5 z>+TknR4ZP|4nc>&24HL9IaT0iz{~<4RF#KeD6@NqT0MA?F9%6iBRlntYwr`oAp|kJ zd|>#zTs=>rH&E;H>bQ29$*uTxP&C{97m&t3UJcca76FQRZ4HT|qAOM#IMrBV?U>#7 zQ+~3jZOR^~E)F)(uZ9OqiBuxs?VR#pG#*oDg1VebPV)*q?f!l1+)|3Yn zZv!BmVqo#CK%+v3LNu{vK9qhFhQ@ib*3tEy)6Ne8CyVs_L7cm zma>s(FoO=_i#Ax0`P`=5v~%UT9}+uDg7A=?3aU0Pue zdtHC)W_#WBwjL~gSE>)(!T$Dc099%1+oM>zQwj_3(In_OQm< zA1h*>JsGGDsbxD(rhvG1Bh+y#ke5)I{gqhQ`QywrKv`M* z;MSBO{a=PAl%r+pboPY(CB{8i<>E6<9LVxlEDzmR;6)ss=@r_ZH%OQVJ2><4HLwi| zkWY8eQlQtWxJ%ZBT+w3+)owHPF&UChCFB$b4&97cciDICN5*goZE zAbgZzJ~^D}IBs_6Ifx~e=)*x3{_B^cAs7dIz0dj&v!lvY0tnFL?bW6VJsvsZijK#k zfo&>m^GVRR_m%aW`r7l1Rd_{*{Y)H=nLAhPS7YH!g13&%dJJB$`T89B-GK3d+=<$V z=i3Gv@i#QWeF|JyKN(BafPNpjZ2s1B~4Uoc<9G z+-s=VK(yjg6t>VILHz73prd4rJUxRbt`DQ@hyYxMPq{(vNl|0>gde zbXd-`MevhG46tHRtmrPelJW(cO8xL1LT%;W@F1TW{HNTsRNuN9g|lue$(&sOzy(6_ zM#L)Qx!&=~ooQKvKL!X>zDr5bTduc)Y{!QOY!3i%=X9=P7Tisu!8ZBmrKkB^m_@@I zKJR%mzC6h1!6bu{nuXUd^~&?rD_X9&J$A*o78xt%wOmi4cXz_Rexfab?pK|)jxEL$$cz4{Hv-gZ$p4ii0l6P1E`yDu8M{0Rj`fgPDvZ#%xtvr=O`eSJe(H7 z5^A#8W(J|K+eLcEvB(dA$q>R$3_U6Q=w^c#y@pJ{e1v>Ji)dTy@)7#P(>P^!#A2&2 zlwWPs))e^c-u{K1F`&Kd-hMVW9JT%XXVd}W?cVEcyNia#ShP{wQg#%jU8g;_5gUZ< zYCi_dL`Uaj@P3>FuPP@;F~82MZpYCShZEiJY&g$sM9fX@|1Wz4$tmTq8a`j{#Cz(%#lewgoU?oXv%6_eqKfOqJm`TFQFdWKp%}mi3Fvw%7TrIQzC4 zR-p{*CD~ z!}Mh=C9RvF2n-(x?aD-ndsD^`k5$*F-3c=c#0uo^J-AK7t#t8S6m?kWJfby$%9t8CvN)nWD^eR)pyWy(1{l8 z=3Sc8`d(-Q>N}621;L6jCx!?{DRhC}bL!-l{d9|hCoJGQiEtOS%>id5W62qYJX*;V zaA{dv0;h0k#uJ*_4G0UYucf`8X~n5X^S2qEg8&ETiQ(Nchxn|Y=+~%*XF^f!VYIv| z<%o-30t|SCaMdt`9|8%O-@q#_WOEz`QPZU}R+;UG&L9#I7tC^cSX;9=#_qe;cIzv# zAcI(I>!QW6RMyzQl3PG|nU2%;eQnx)1T8Gnbjq}4IQIFk!FvG07rbGNaK94Te*Mw0 zqV5hb*Hpz?e*~Cu1*KwkrYB)p>dq|q-Tzebh{H*ymU+tc5a8kSOJLdkttR^^c-i91 z%sxPf*Gm4Q<28S^$m(tsoPWHjB4uRSd;9z`9Wx;?Z^!yzn@5 zZE~*T`1Qq!6AXDy?6K@vXHH*;Pi1Vngz?)fX_J!sSZ_j&i;`l6hvNguJu`LFq`-6Z~e%1IW-$K|9erb zNrI*D7!G>De53D5@h>|-yVS}Rmkjftb!@jdPV;0sU=VF$?sA;4OiKYYBOEOHX(0|W zM!_fSw#>9U@UbvACzAb4S6e|g)$Dh3=oS1C^ibcs2qHvC+@ZVvg14jiNzXmz>Ksii!0H#`L_U)w6;s=gR@L-nj zp0b`|AQ#PZw{qz21jAULVWDNb{+cF4yoB?=ZaLFtCgL2Hy$&B&W1vee42erYgu|O{ z_r+_=sI$Sk)LvW3{RBuB81PD3;THNWh-^k7_jf;6JEYL#+E9;+Q+nLZH;Epn4p)`N zC5tMjE&m@tggVzAzAr1dDpx9G7dv9b`0HAXSYf@crF~>#oO@pBZJp^#d2eQ#%Q}&pFd*=hBiW7vDSJZrb9S1? zdX-t*Fo@q})koj%^;PVT)7G?4Zu=3~s^d+pBR_!}j8NTYkc((>El|Bl43%vyf88Crht(LX-mo1qm#^Tl<1vI*Boj7qo5-P(|k zYo{-q^T2-|d(brS^&9(7eSDpDy6MqOwmTCD?wkp1cFV+k=rO~rE%_u99BL4?`5`=v zHJmXjGuC7Ig^{!-TV`0aC76te?M>H!3XjR%V#cb>*m849rMaRqF*Ei}bIPaY3McNq zFsB?dSCqHUjP;mPPMa$#aA)Le6Uc`eh_ z$L5p|%oSC*t1+jXFjs5@RG&HJthr(n?u>kZYUIP6kq_{Ve7M_UPN`B*-Z!UwqFU}X zryN(UJY-HeqaYjk0L93MJ0l;U82Q-VK4@=0wAY08CTGTeWKP+xu&~jbvRk$Ms5#{; z)yi6P$|;2zBOjm|`EY0C1AHT2Ysm4EpMh% z=_mw@!VHW3NQPEofgo^CR`zm7Trz@S#90t;E+@GS<}84*Pj~`2_6f;2-ibK?i0m1N z7BJZ};A}WdR6TJ-uZN}VzSxv^S7crRx4rE)m!<4q$t%#&oYE!l;uzG2Ii-(P=akOS zEv1hg!`ZJ>ma?liiTyttAGlh2rU+TJ<%yV=n1{f6e*A;04*2TL$JFcb7OClj<+m^{ zSsE5LIk76>jB;nG{vmhLij`7|x$|Wz=gU;~0*OX$HLs!H1@uV&dITc}tb0D3p$&=o z3=i+)VH@D=o1qoF*BO_S?PqB2w?eb+jm*}a*;=b?b9RiLq0QNvhRdEGuL>>p9YX&x zp{Hg0wrC}A<^#sO>^n#hnDPet4%V1aFa}7z8vl2$l|CtXt$z%Dj$H#~9$$9*llst#;4oMl0lzE_tZ)&B;Bdd51SG6+TdoJLJ_0A9)vd9Hzp#)wn!<43B7vv_$j9fAloTmo3o>voTC;hE{lo z373fjT-=HZqAYl4$R|{s&#vHyoxqQ3em_l}^=!cZ#GK75r|3C!2@@-YejPovIb^(y7|;PI(F5 z$;;cw1I~sESe!Im#>KlIRp@N^m%I=?29AQQSJg@DfuztOsci^68a^Zj;}Q+L8sT8; z6|$uDp77QKSA{YT7!y!nK8FWGlE_*=;N=tcXB#hI)k0!2E?zKf?_u`m94`miDTSk8 zrxamGr@Y~vI@Az&kl2tIj7v1|YJ`KGQe-Wi!UPVbvoFZ0cfd;mP4lYR3TDmO3T{ni z15q`HEk1^JOs(ME8Q#5*yP3y%Ig7{qEx63ui0t{m^(+p=>}`0Oy_XPVqI+ecdu5_~ zG10-5z^!qmXh1ovL-~^BJdQ1-c3lFpMk7}Qxc`XSVJ7<-<^lM!T~Hg z$5OVYh+J9oU^j^%KE>@W{GUdi1sTZ0+6t$P_19TA0i~tl!a|gOgQW?HjUdhd;$w8d zvzwQ1)(-M4kFcxv0Q9VCh-w4`x-{Njvt{XFK}|_H9R6KTQ7Kc>RJamOkejjt$i=+Gpcu0g2e@6SC~9=JIjB`wHPnm30a~$!@)$uNk(vlA(F!pp$cG6} z?E}xVs8%259f;Po3GE9Nff?she{+Ub1|-^;MxatFzLQO1<4p!Rgti|`V`G@v8|GPh zn1jwIVh+j-3iG_sdEl=(?f*VVlc)%&iG>5Kw+k8uM2?}He#aOhJJ&`_50^`)$sMRF zcBQJ=Ik)Uir7B()O;v>dfUFp}B~+@BbOM*{gZG$A{ZH%5j-k z?W{vqT#&P_Fcvq+S67&A!X2{J72c77%f!4&^J1ubym|;SPe9fZLs7Fy z)H>L0L)J(cG0t>vxpTeeK;_2CF^8O~-mT8pJVz=w-WB6~oX>l&Yopt_@$t!R02GA`f_=<0*)3Y3IAXMgVw=ifXvl^b(oYMs5kdz>$Me3cs!{|q&J zfyVAYV^6eq9x2$t#_sSp)`Q0GL1Vva?>t!WJ{!9y6jV(pC~p8%Nx_NM1jWV*C^lAs zDl7P^H9@hld(iI+pwMVYs&^YuXy7x+dkC%CidOmYgwFX}^(9)h1FiBm7`23g@&bhc zP+y=`3KURo;0Y*KW81~6K%wtOgVA?jPw)mD<^g*|Cs1fYzuyN6jUn#s{SYWL@R{U2 zh{oS{bzsRtef?*vu^gr%4w-t zr%jdnQ?s_FRE|u@+GgT)M@r?i-dSJaeebM2xKGde5cla>}g5igbZ8?17#9W&k@hvCg(xV{pe&^nVSH80_&N=dV*zodwM!kJ)^bU~Y$FR(;Ec1}R9_m2sT*)ubKnMB+dpOjAAksDaHrS1+1Ifdu$b^Rs zc@X=Rp;y|c;T6jOIhuVpt}KI}d9y`lx(4b1m@1J8iEnaEK@~yH8oUc4){jT6IG4>) z8WBLWhnJ%=#NYul)WuH}2KLi~*&RQ?i#FMg3T8lfHTw?a-XZU5_ank8Um)*Wxv?K)cYH6`aX8oURj%V)w*5d$ zd^9cFe(+qbxr%hV0}mPK%aj_^Kw&;U?WB)nFG0J3d zOzu+}|LC(<#`HEJIh7Z!xMe2E?<|36PoC_7S%+PnqYGe-hb^YpSFr4u6M22WMB~gk zEa0cpkW)BHR)o{@va2?79|s1WO1$<|<1!?s_YnYqB?IqZ38@B1SZAPa;<6K)F&_fE!aR4|}D{mt|2LLM!#1Er_Xt2h9QL{(X*gmYrxNP4x_5EQ~ z9slNhTKl~~hPEgEenJCIfQG{9iMft)eHPDBVY7ocUiJvwQi;}|N|}5?U_KBiRxdHo z(fpPFF8)uVO1Z&K7O;&6+Qae}=i%y2-%J2_SIei=wZ;>zdEWkiHl7ahsrN7WgkhS_ zf`zl^@cJ4DnK$dn9uP_i&W1EUStn|7QZ1e zvem+29K6GAwf+cGh?6Fv}$iI2^tL=wjdUR;Vy0_~{6 zGZvy4e^}mWOC#LPftN7P<0adj?+m=e#sgl`_?XYiRB`P3;bnD`T!y9MyV?G$oo7o< z2sdq%!!lcRd~koVwl&j3@WGcg@-hS;eEGG!48aFqVtbSLV0TB24f1l%FQ1xUd(`~$ zVdf0gYSgK%7QhH6LDyRGWo5qVc{ZU#m&e*e72kb1sC1P%Xo6exqxFp9rBk`s#B zT+mqO|J$AUuIWXnMDavFmBa~^sCRxUk$0dAa%(@8$UE@tP!1jkQL2>{;=pnUTWE5o zHa&rYWPQHWMV@4_pFX3lbYVFO-j{T6jtt=90T?UqzZblGLNnl!PWyAIcI(_uy;pAYf*A=${7A)5@6 z;USackPQQsgS#5{XK+J8?O5b7!xB`>EjACgg>Zw5mzyETSGa)rxT}C`;T#lvff540 z8z>-H`i0fT&4yQS11N9epS!uZ!KDsBRu(afR`{|}2AVEk0OT7iL#XBIcf-3XA^(MH z<7UG#+yLSx{B!RPH|X!;u>iNcoO!guKNy7ymsj%z!LpFC#tW?N+?2E~e8(NG^$2Wo ze<#su%8^rBe%&QO6=(T%IOqe%&kSw(ew2WajgQUe7zd>?x-CQE?LC1hsBwB8{376G z2-<)K%a|UcTXt?Wy3?dq7l96IcR`0OPxMP_@^&a-vmQg!{c^V&-D_L{ONyF3LLF*c z0XsAMylVVQ)a(&8MluZI-(E!L*`=peb8Jfxvy&4wemKF2I)*9gpI5FiiE4;@N@{S3 z!xS%!_v}1i&D;MW)uw!FS8Hl4Ow8kFfd% zW>46%1y$K(Dy8;N2*_7!lMcp{npiP>3Yl2E7s-hk21h?mY|GNq{K?kFY_Zrc{yFD; zSPgeG>G9>L*(2z&@j3Uj0U~@7HAs)?QL{HW=XP_JbJ;f}CiQXygg7^x06oBYMa^<} ze`%htK%k-7-+V}+Bs@E7gyWWEkG8xBo8^BrKr|Dp6QgF2z-r^Oe6RtcnOHqEL-jE{ zdjwV^W_bjfDh&|fXyQ0V#i}i8_6V%18UyOM@RjwjM+ErFP;tII`wC{5w(L5nK{+jd z!s(XN>4iUX)?IMB+|sk1u|36h)eO~|t|QJ`Ge+ELA<&+kmC2gYl%KL5%UFq`?VR6-^rOr7X50H7+Jh9*Y48H6i|x zV1f!SBoRFf12#ukJtB>ceH$oYa12!byXbN_%8n)Hu5<6o45yiPDhk@u7MJ4q__dIL=AGVmGwv` z!>H4cGXT{T=^V|APHd5+)3~(RVnB%`1Vf5PA)WaRl!zpq2$>VKhydH6M3iN~Yd#U3 zoT7RjSt62%B4iMUe)8D!wa0L@>e1A*MhluxQyC4Eh@>gi=AdayXo@Q=zu;VEgR#n3 z23}liK#}o0K#u`V8gM_xNb^QDT6I=wQAO9O$x^Pq=-R6i!bKMc=l@ls70Gq_Scu4S zB_h?2a&xesO)ThxbrM`B^Ls**-2~B!kGUfZd08Q>FtYiOFD}uQZg|4xZxMskb^t== zJqV1^69-ZuGv}R!fAmmOPgtXl;!L_8Yje-Y)|PyV%h0Z$Ay+nu8`$AcI7%g%XJ*ewjVy5ZQp~9+)rBOY9n^x|1ytj1*Xr28gg2=n95+)L_L8*#GtiH9%oe^Tv%QkmJp z%e%&IC~kS~!rMRPK4FPCdx59atN0X9h>)o+`VQ%vtS+dpG-aS$6g9gcZyMeq4b@a8 z8X&?~D~7PCucow%n%$5z4V!5~#mk|Is*lZF-25zRc0;l>q@9Fofi?p~Gnb54N6j9A z)y9Q*O9MnRvHGuj6iULgM_@HVd`AfF9~mH;iPaHNvqxYxLR`yE_w86EqU!j46G+kC zgpbs3m-p1~A-uz(A20V6yxa}InM+(eoCWDgMx{8@v?o4;4`I9Gqd$cl1tZm#?Zrk5 znQ2bTt~s6V7jwG7SKkC*)%<+5N%ga7)i0<7owpjI<#V|5UFaX~AR7*2h7DF(+reaH)sV0nAr0VsUp898t7k;aqozTT;Pf*!zqu7FDj@1uDf_!%Ly zjzy;Y_|10-Y3&6W{WshVFhbvte}Q!7qwyEAGcc-sr_KRUS6R`Phf%HdQI^fYQGa*b zg+$bMyv4u&&I{R@|H`OGu7f!05dwnL(VQ)Q5hR!J#3a@wKf6Ov6?I**NTo$xm*lCm z`slzhVERrSp2a*+3jPTf~XrK--oeH44MlrhtpLNmlR>fH`j~U ztw!UT-hB_*C&y;_IY`Lm1c%>0tl}@`*z(oJjqJXozH&TAtYoSx;AI?xtrkYLl+Exb zkHPR4a09$aPVOrk?30I#U7(N0aP+=~NwDo$0Dv4(&TD504o}J?c*J;8Cc(XYLSGto zUJHuY;Q4vKP?;+Y_5QbnN>0nmaym^BP33!&FHNdHB7p80%@O*qbzFMew4TLm{}1`E zU6tDyQqNnJGds%tBHKTX=sD1zQF$8+}RADZjt2mC9CUW zxSCOtGYP-V@_6%0a#f}&hqtBT=?1yZuX{j*(}x?4VqtCNc>2G=PmL~cW9ap!viSx3 z@*kj(a()}n^G{fT#aTGYL8%VJ8_sX{G6mx`J?~;7ZOFIKUB8lB(a7do(FRA&9%1jP z?|2bfW2dMfXhn;9vY|37S_30$RLZsgWJBD=gl}ObXX%tgMz=&cB*niyid4hH4=@P? zyzLetLN;mY6-f=!lrlJcNo{WnXSU&OcbeJoPU(DZJ_)(;I(yE=goFs9OH>U9Awt!u zMvoi!t*ppw1_{(Bx=_>Y3kHaAt6_tt+c8nIljs`uu)A3B9f9i?M@B^qZs-!e<;LOwrQ+Mnb*7*XTOVu z;MBHVm{hreIB339sm_R&J%Z>OpWy2a5aCqR-~@jxYW4`CQ#JaD4zR+u{% z+%2k);n`VZ!|r?+%LqrXlsk;BG?RU|h?+fObR#5q1WVa_vqD}oM|V}!>=C0I!BQed zceVi{e7HzYQQZoAM$H~Ex~j&2TVa5S4Ww%!wSzUv&e!FYbab}?_qgX&TK!eU4^=|* z7+n1Yz<2H*7tK(o&VQ&A%mE|NgD(c?rH>4d`1l{Pf~qQ<6p6uCJ#y2$i*cI0 z_VzMsx-U1jF1N2Y*MXc4l!)blS45CR?eN`T?Qq^e?b&uutj(3}phpr?byIGna;-{4X$_yuA;xAfA+8%|{B1aR?r-&-piy!)*XdRjKAK$8L<8 zJwl#0uB~YXh-S+3^1;!>e}p`5TwD8<0iv1me00?85%OHs=$Gfz4@2!7*BKz1sU>}q zs`?n7Jp!wZYe}ygAexEQnNhPxV6|~A=~e?oGqHMVkm_T2_6V#-Xh~t7G(RN(c+#v? zzg?EA-$Qs8@TA#<3836*4slMTzi(8E412oNNP)t;AlM3RvacDp4sowq!t58^5j+1o z#AifAM#Kz@|9T)oEFubHF9vZlC-VA$3DM4a4@b>@GvkxBNn&%PDAk_4>PiV*GaaGP z3Ps0RYbm% zt&wkMcjl`cnWP2fPexFXu#)p5N;Xu(^%40ZYlsV}p}h>@K!_bw6~FUF zL|y#Ui{7St(c2`i^cGFY`mlxb;GU%MfQ&FclVkX*yi?_-q^#;r3nR@`K6|Kdw1Zx$$hx``BbL;vQ9wh>tl{IU*tESmlT=F?!{Qq!`2@ z?Csr);DO%VmF84HO!BJQ5Q-9z+Ei}*OU=gI*xi*QepmBmZpXdZ_V;jH@#US2Tglj( zLgW4xuE%KyrxU?U7(ddv9*Z#Nb_5y6Qw^SWb$0GT+;l`(LRcldL)pOG;7nov21M`Q z`R+f4;-m3S=d>K(0dBLCI&`ClZ#@(=)XnaVV3`WEZ= zC-z;iUb%l10+dva?5*u-Q#mqT^R=%;*s2=5>96g;n*?~MG&U-g`|m>FlFE^(h)7X6 zvI~4y6!)l9oJ6=vC_VMRAv(UJ<4=uTvq;B}xAPu2L54x_jgS+E4Sv~^Iw;5Nvg`pt z0`sHSV7mrsU3vZabX7Xp$QU;@b^QHrY_Qb82m9K+0mAW57+AHNLp~520rH6x^1+(` z`QQym1aAT)f;SK_hOjx`@e)B5hhxmu;AmRONE{pie@c43ACT?zF3v!x)5&=V9;!Ir z5pS0tGG)8hmVrp9cjY+~yov{Y?M--qDZ9M0GZ1DpHxE%q6<35Xx|J#Qgb~D#%o!Y< zWaT(GspCgx@%~X+n_6HlWu1j&iqG290&^*APbUQ2Y{fvGCI;$6(>(X*8Dd}xtp^0`V@_l=Bxs8>{(?NQ6b| z_ou7X@4w6WiwKg{_yw|#DP)}rAnUHIk5JQHSuWJnC2K2c!c}S#G4-|Q858m%i0a=n z_=_-tdHh99lI|^BDe2zAmn9uB0GWP)(MLsvx=FR@Cgtc<67&>79~)oid2%&>KlS{+ zoWJRwC#(5O^r_$FlI|`1gQPD(To$}%I2I@f49CJBY*ORL<*bFyQ?duTrB?jbcHAS* z95QRmKjhxD5gl!L5;vud2y_Argcd)mFGxG6U_f*Dm~RYy3#|I3)fhE@SeAXqEcixR z@l$wpah=Nw(@sC^(@gz0B44C-YOo|F!NO{oA5pSF{Wl_CWDVi^FXK|Y6dH8pN<$g0 zx+WU`A$5J&iC0h;^Q0d5n_Sa6lF0JopJvhE_=YKv80;fVPV)YZgX~uhU*dyb zDYQ6#RfI>H1(&+yuEG^(d?gB6Z99n^f$)?mO3s|G1i+WJ z62k`PqpO=Y{6C7w7dbfL!%t-w3U1}pE;0QVNJ%QIR6q~<6-#g^wPiqe$rD-Y|&r4h|*h{m?{4)1PcH^OKvta-0U$)>yUa74byZus>*5$v)u zz-pj!YC=rvXekNRUeu9;0eyVC=c}-Mts?S4Vcm`mF9?^fMCU{eqCij=Z7*jqpW%+K z{Zu=xB!)8vhU>mxkw{Awx!SSjO8ZD#xfHY;7WM3VBuqv*a}{t3L%E1c#zc#%TpYeC z`s8j|#ry*((om#j_7%Qogl1&?g3M2AGvXU^4 z7{>1}V7z1UfAY@ILECL=-k?1bkuP%4!uU?upjoA4a4-zpLOl`CFCt&$poR0!P%GZ0 zQnKkm+jhly@PFZ*tGSUZyz^3W(TkgRV#&6pC-_X%CEMSb5|yhy$CP?YwnkPpJ=JFv zwtMDdW$3xv&sF972@A+oCxELq$dlEY2rCugd|0WJlLKOk@BmHycJD*j>#PLYsX|2+x4Y!0`MG!K5wg5TIYh*-v9LiGa9ehOJgn35vkkp{d^ zdZ1%X7$_Sz$Tiyp*R-WEx*@2$(Znzmevf)dW47Dx2sI5^l4v7qmJJDPF;PS!fZs|ek&_tW0IKS5-X%{WHW3+5({bIV@;$GoGcYW zIcqAo3R`z3vF&0{58HXz(ksMsekBA`Wuex>^Z`iwbG=Wi+K$tVoY)1D5_Gr_P6 zmHQWGm3L%1YB41=5!nAnV$IgdU0t2!U)osHp`vP+iyRYfqjZ`nTakad^(u~jF3B}2d_A=B_ zZ%4aw+Fe-{Vi4aaCi1OfB6rD7_uQY8d7U+B%f<>Nx=kU$JuayAJE!H{*wVb;5VIFh zJ8X1PLS5X4skI%mbUWt}Zt@S~#ctQ{F?jw7t1bI2WB@1a#e!YuX?(x!OyL!D)uT@; zm`7SgEE&g{e>KH8>NywZ1oK7C$#A|BY8_ZBC7U+s%!$YsX&pcfAts&Bwfo&tvgx&ZhlqTU zSZbJaoz%j6-;n*`uMznou@uI+!fYtdO39|NbX!EeNGzd-0G5=G&tG750B?*x)&WEa z+o;Z8tn;h+`zgN5xeK2K-Ah(=vJ!Ep|^L;*7Kf7jW$YcZ#N>;``HJ zP(LGtZ^EGVvfwvkP-q!~nZ>LMIRP1p_fZXWD%8)n5rcf?#qKvgszvlcJ6~s}P<%Ar z>714mU}Kr`f6{BbHYPf@qhs%)@*1B2r|~I<&v;>zKI2Dy`_EU@H#&+p6s`e>NiK^OP#*})hy?<*Zghe(oSl|5~WGKh@UMuEy$p7K} zBrK%pe;ggpAupPY?Xk2qF@9R#7=Zmx{L!%DthJ}Yf`#yb8LapU}B3j(g zK40~z#(NfKEx(}LPNKPOq;nnPwWO-OKpcIHCKejob9NPVRkZ4?4WrdaH~y;$xiL5X zFe<))8*=rix*s~$9I8H06P~Y8st(&v+9oA~`$P@xlq`$L7r9e{c@uQ6y;$%W#v!V| z4#!bL^XO+0`66){Hjlz^xkO4fjmyCi`66+N8Una%A3jqrEODA-=DzKZv~&k|s<1N5s z^N9X;5&0sCK1?iz5xql7Hcj;Ah52UHI;Iqe8m(&7yon z_r3qsm-SoQh%Lk!5!$42lWen34g_~a8ng1iS)NBAzvJi~4Y|%6R?-IIbd0nczD{Re-)i3@2O3N~lSfBcK^e33d} z!y5YsQnG2)Yh^^fNYyJ$V-HikY*MmmO}T$WzDU)pVNJP{lx$j4e)C}CSPIjW!xYq4 zrDW4sdL$xWB$gUhP{&Bgrm@sIB3~qy!W2|-$@069{_OyW5DWB|_zNBNSN#1pE~MuO zATq98Ltgj|x{zL>Ow5hUA}i{tG&gpF<5J1dGy!be-#7s@JWXDal1&r9!x8x+2_Sr$ zP;~ku5sr>%TSFG9RuTCkr+ULg{N?BDebaq-F(O}NAHs1;q6>FzuL^{_4mo2IdZZ#mNx#77O@h7<7qlTC*Teh<$+(iLvVztw84(Fx%dOoN$ z_www;yFx@HHD|gLE6v?Khn%Mp?^wm>ul_&w-aS5!@;n>fm1Hb~U{;9%6Kq(e3zhTP ztu}E|nVLoeD_Erxhy*Ys0YnT28k-du8%V&Cu}PRJN}T4<^m{{Jr-i=Ik~gGHzAv;% zzFld@wtSRi*_P31CE2jDEU$c)WP9~q*Zs`Qu1>}#rtKe}e?O0&nRyP^eZHS(XP$AF z`S+JCJQe+#zkQ225(@YVqk3)vFIee;t*+?T=C(IS^%;p%y7q%8ubs|~el4&4T^VDr z&(cb3+{VsE1A{zZ#Zu>#=Na8@r+Wi&gbDrln@ZMHW^lLNPkFvPS zeP`{08>6@Q+jpXVz&DE*+j3>}VDy%`?R(3#!oer+i{6sg-o@h5^5`wsw7*|!Ec4|@ zZ^>;>lp2rt3W(te>;XHY{S-%e8z_#jr|mA)bpv+O!Rc;PL6>GEahj(cZt0fA0W~DX zLFdvhnBUEAOT13EVRS3~G&$WKW8;0QTR|E`=Vy7bPjxPsi+G_y4e_{xztF*7gu!|^ z*j+`=V2v0|dVkj$Oc;AGZLmTNHq5@axP^PqrPx%!%gwpYU|^=jta1$2D?%%G28$`N zEu>C}EQEgx16x6aErWavHWKY!7}y0swlwh2^uj=WY8Wuk8m2FWhiy(IaiBC{mfAwrFr zbCU;v(A8+>B?o}g)hf1cUXwflxZEukPQd(rayxKi1KF?5Ku73pb6+nemGB=*0Y<7` zfH5u+_EQCv3}DJv3tLdQ9Rh^0pcL{dVH`<3TcA|xNCMBrA4xn^PDo(5zhetaU-AN2 zN27V6(QvV-i{7)_{_ml<27G3Scq5jD#Ql@d&hfb(-~}w zmD`ap8_tXXddD#{a^~IO+HeK^<>oxb~l-ACH}!NM~7Xi8oMlS7r2T3ti!|yktq<`(<-aJ)KjsX4C~oz9O@9?it{$DlajT`1@E< zY3*;XF5=c$BcV`1Fmf;pxKMu98|~3uLntlwM0@Uc#ZbCF+H;pHF2SN8+Ed~hL~)s~ zDBAM`lw_pp8DDv{=V4bXig)`eaQv#TGQMgU55j;LFbNzLZVD%bi^4&2FM7*DS0)Im z%JPBuVC|!=`a}AI`UCn`zw*Eo40Hj|!$SI(yk)h2HA=%-Ut0U{2J@-JHam6=fg?`P zo118nz?YY3m*95|q9OxeZsHIln>izKy#Laaj6T5V^yfT_d}Xzd_&oaP_La?)!EB$> z`R>FYD_7K=2tm2w3-H=G-;EiO`O-VF_>4pYImQMGqde>>5jBStkn zs8sa1+$+dI@)EC`fP)1%VCyk(5Y1Orq;ZP&H<@WqG-{J@ zEb7~jXDDp_T{Gf^@@g-A4BuoNufpTix3qPP`da#`bQelYrJX`wON^7y(yOSYRM2<^ z5P(&#aI}Z+=^Ir6xbdDm>L@iY+H;MirO?ORl$Oq*Izvkf;t~9qOr@l;K%)e`sc8KZfxXDZkm(hmlO}Xu3X|;h2Tn^v-HRZ0#yqmTJG#Ul z*qV!Ox=nv#N3{N~K*D7i)!LVv5%5fl(Lw+0P8X8YLEu%vio7iVOfd zFBnKi8xjN2Tm6BZGQ>jj9U1kw#V9?oJ=!}X(CY${lhH`-^4-xTGXlqQ&F?3g&0iuj zu-N8Lm=eAva`)y2;))~>P+{BlYnE?|F2O~CwvGAe;pnXkwL!EV%f)E#H5g0A_A18b zE#Delf{VH4&%g?#z6Z?k;um}#f$RcDx1guMtsbB+T)Z*bn`aMQBtu8$E^m%5$qTgR znr|kWtw9k>+Xc7HRdCtNUVLh7PjhV~%)Jf>kE2WG+WcjB-X-vg&ueP{xsaDwDglDxpm*RqFDuExUwTv1*Hz&>SzVFbs&mlePI8c09M$U-hU@M=}hb2s)DOsyw!D%{ujrl zCIL;`yC>4Y%V83&6ZmSXkmC(twLcqzP{>El^+p{vfc@zN{fmPH{; zQ;fGbo=zfy+*m=OWjj8rRoLD)1*yD;E=X?!%VX(n@58lpqInvJK&vN}C+MFF&p5(5 z)A6LU0t0lW;hE43_tTle)5-C`Dq8VBh8pcnwifdQ!c4^Re~>5OO=3v%WKo+v{c}>e z4(&;rT1{*=^7IG~!{=fsD@gz7o2>mcFHFK(t1H}{z+_%y7ac>B+Yf--^mV4w*O^XV z=LgX@8Gk!TUuQaf69mKx1lO5H-#NNM%?U!|HFnW81%2>8AQ9qI!b+DQ7?~KthjHiu zDNmH(9W5EoOv#XU&%yKnZb#6#u)X2@WGQvSa>RI)>#OHK1Zti`#_Y61y6)IKxxA<5 z2N|E@2jqVaew<54fY2%Y=uGFwIb=`JodUWujUVSZ1o&|donY5p(sfsgAHlUfgW9?; z;8(z!H7ZQHON_0$QCIwOSX*}oCb_{iBlJw#OK}|WWn6p_GV~C?g7}yhhfo0y&lcfO zCEusNy@DT|zq1lM*0WV`%|ZU@U+ToG+^b6QDM54-FdDVo2ieg>9xZn%JA2Hl7%6 z9kWmAF1@4RnmR(&*4>P02Esn3&EBUgH4o6O`!R2L@a>+pBSqRvZ^#)iuKT@|o-I;S z>_$1OD%aM%hZ2F^UQw(qZiqjNC#nF3NJuG(90Q|o3ntBAQGlbknJfe`XGl*|X5fOI zrl6<3ze5A5AO9bC2gK^TZ!NoVb}~`-{~X`2N*lZHp)qyV$4`&FPi%dEF1=TS2$!~a zG(Lpcby^oT{Jxo}7H^yUCRyBf4C*rukE2ZeF_tGU=Kp)7Gi= z-~&8Ev!z!kwpqG`;(l@le+MXB{5?q~;P0sD8ooc42#dn8)Zpw?U}@bZPH~miX)h^# zqvrjVGH^6+hn!LKj!VhbysM-!HLnz^+rlj@3_<2B-A1tH~Oz?*t&OkALOFgz@{@2wvqo@yjp;o&sOrzoA~5sA(VZwyEpe z?C)Ql)(HALOQ|?WZvG$^P+I+;Pc>g3Z&UVlK8ubJmx!AER#7tz1=1H+IZ6>mqU*v_ruF@7a_npON7NxbbefI>{9I6Iuuqrpm??BRr zx{GUy@TtK>W6cxzQ#I44Yy3{+yZGOO{|9mHZXc8qN2nwhFiMPODO8r!7P(7m%QLji z+7^G@kE%C)vNaP|Gjac`KB&x1pX|xhHkTUBWwqs5xcG?A>yPW&7T$?x>TH4~x`MLW z;Ix2ox35&!8c_2R6;X75AF2k7Qr}lm6LqGu&N9>~t-W%7SDvf5=8IXZw5G@9D#~KT z7swx=eujv#+F1@RW@|6CB1&=PR9`cKnyzO)ZmsU%T1MXwL`hwkZ0Y}AK>gY-=}pPp zy8g@3Uvdi)jod~_GXh4~kHnSJufih%Uycr5@U+_>mkYCb(ub=Vs@f5`Iu94X z93-shsx&vI?lsE2MYsnZ6}GopU6k@9hO5(5HP!J~OASFV$h$*=XfWP&d~}pyW4Z)2 z508tzJU&#w<6}iUhRV5!Cj&E>C+f8PnLZY_YWb8FN-bJGM8r~umJh+O^q!VacA}Kf z^1)JcRdopucW|7ldpS8)bvMx=XZm8JD zfue{cm^il&qfJ_3S@Jg8@w%|E6%Ch4%NVc4*?cydXYg#02PU?K?UMSmBdgNGR&$le zI?a*TTcgiIa}n^Qqc?ug=!?)?bYRlaV;?knDVk3smPtn+{GidlisqM0MZ5ch249BO z`1Ix!gL}pd&T28R59$)SnkT~h7uF74Hr4RDS9_^}ULBPc_gPYmXK7N33wWoI2TWfu zA`fD;ld`wynXj|LdG}t<+UMPS#kk+EN%})#bd4-NCRW$VVo1y`#^SSLcX1Z0%At#i zLHv#sro&P{C-KtI`GbbLzq7(hu<>c^!VWm{#Af!scu>yU*kL0Mq1isUuwRY?yn>$+ z_-7gX1Dl?d<0vm-m6(5C5HC^K5rOLs_{!mm*CP!m?AXF6jcBt=Vkipjl1HF$Kmsoc zhb8er;gkx6p&`k9B6xzd2FM|6YAUL)BNBr?4%E3Z5Iq8~Ae^kG8eemUGZQWvQiW5-D6eg?1{6yJnU^cTXWaEJEd3q@Vm#5#2^+fEO zT7~3Grd62mLl%Iq)*-n7oSt@}u_X3a$yTfAU_}^O>REXWNDAYBgRbR51r^DCO-RRr zMpN+Hr;fe0bp1OXAPCNF@`sQ8Gho(M4HAlxM2A6tbKf)gS;@)=JuAN~6Cc>gEZA7j zgehNVlb%Wl@qOaL)Y3B2y($G?vO;3%D*+B?ey#GuwTEC#`v-%@_F{)8<=VHBNT4v9 zGwq^vy^AyPTA^N)#A$^Np(H*lbOI%DS)pWU?d4UwnXQ%JD?THY+P9`7?(1v1nY4k~ z<@%aoW@XyC8&#TyW$u#7{;N~EDERu4WFj`rQds0zS5iaoPgBR5Mj0@}Bb3vV# zcvav&f7TReFKr`lLEL%sr|7~+D1T=81$AF>Vcl2uUy-h$Md`FyF_cTfj)LJ@3=*VL zrl}hA6W1imv{(CJH+PmJcocT2C{qCq-Yn-TIOG29m2$q{isZD22V8P#K#nJQ#{}x=W-!|dRRgh471W&>CnFYMJ!tB zT0YjnOV+~+R%+j^#Cnfyzc5ZXl%FG3qs}gzRXqDhK+E40|Ccy+(?!s1F4poJSr{K$ z87)%bm2m@SCnbh~M|3ciEy^=*qoVQEmM2-zM#aF&>aSfwj zyh+%WVj0;LH2M_B$SnjKVHlYOPh6pWdnw!}*#^0lYv271Gb)8sR+tWYv~Mw9suU?7 zPbBe5vs`)13n})hD{8SKRDdgo)RpVlljqqYTseXNNv;n5`+F&Y@0|?!2M8Rfi-2_x z#Z57Dq`p7mKwR&^DDO@ZAjd}Tt|n$KP`F)v%)?R^y>va=_r~}3q#(AWAi_j2U>oJv z_phWL>oury4kp#s!g&ZYV zyTHes1TRSUBTKHK8;~ z%P)T%?SIeB6lL|ug{9Rsyq*g{H+5}x$3KPpQp||YvWr>q%k5%zJi{(};-}zu9 z$SxMeyX|6ie2-ncHony^el8wHQOk81mF50$-(U0OdUO+-|HiL+NA-V47RR$2{vBud zOOwv%$CW~ti9<(psrK}7cM#u*!A&gdtr*Dy`z98s(sgKCG{{bnNUr=XdwoWF9n;tO z^+QaJ=_t-?aF0=00U}=?<1J}l$F$XpJ-^3iifuVOv)q!w7I%Cjt3w=HGUCVWVpjZ3 zyOf2CLF$@9Dfzxh1Xf? z{vI+IOPhr*SY%-bj9l@ZxjIsT6+`6v#6ta2t+Ew@OCTRzG0ZwBBgmq>$>_y?oX z3oKO2)OtGDf&GXv2`=(Ds`*b!HMQI?0u1=!j$dXG22H)jrZFRa7(H1^n`vLoinrQV zv*H6*aZ7f*&c2!*-)mp>#NV>7dg2lLsyF^)`>HqoFZR`6~_0 zt_oXGuL&*7;Twv)gwp@AQR(rA`>#xQkVP)|8mw)y+c5r5n9q*$PK@^=DQ#m65A;Ow z=R5MJVN_cj!Gb^eLrH4+2U!IJziU;4R-Dd48B{dfgP~}r5nE?=rGB5zZ`C%&k!9s; z8{fS{%e_ws=>JzoU*PcB{|Ak~u?P5Cw2eK$hd&MftSxS;$CFY>5~nlexU%@;>&zA!i7F&Ik(p-kB|QCg`C{=e1db;DH&6mCREH&17uQLcY2mwZ+RLATD^p^Hc1U&w$xZNSq8;`_laM`r z(5`I01BV{w9n2_>(hjkfw_?}lmugFC$ERVn{jkio`KRBa-=GCo9z~-Ny#(Ar2yUaY z6&Dy9Zwl1GMs5mh$>p&VWnN`K4E3V3HgvY)4E+GzG(2JmenW!6AkCezb&v?4cPj=L zTDOMSh%MQG4cTZ#BkOI$e>q`m+*Ma20Q4@&iV+p&WMVHd{Jot)RqM@0k;}vXEun|v z|4o5ab~rrk00XgL2Ra!rtnNq77WaStScOtBcUZm!K~2>Kalj{38}wErr59YX&vo1 zv5Fd&>;5E*mv`oBi|a|ZR}D?jn>;9k8g21*6hIJD6RZHN#<~QOCsrW`NUs1P`6$5H zQ5Vc0N@0(VOg$T|SM1{vkU{jcJKm6F2R^Y>dy-W#StTA86RIhAibh8kvNOiQ6~pj3 z!UB|Ar7vDqzqe(u*Ugs4AxFpx#a`(b;=2j&FyN{%U#``$b%PoZu4)gTonD3LA{ z)d)BjqLcs}uZ96B6g3$7afCw3-zTfFj9^J(?F%X-PzLCjJVy(%nGyl}$!A46Jg3D- z_K!hqddUG2tblz)&N{d@QlzcpOb!aM+N(@!CQrfP3@Ql~gIX#IK`h}9unjQ5ieyVYX&|=8Y7=oN9nPxds^iI(GjR!;(+Q) zMLbLG$LJRNijWVEibB14iCp;W^aew*p1hvj^g{Vb$rVP-+jZ{l&kM=8LylHRQ}I* zlKZpqMp|gl9A4gPb|+fp73^Fd>+s^v!^qF@dRYv2+Rc3&sT*k)_9lqp>Q1rV2F0e;@8l#_3Qio9MAuyG1XzOl^;-k-w0ie zHOZczVP1u`Y@E*Dh%#QzbnOnV8K#)EmyR>|<73k}L4~I)A@o&YyqD=ZfzoQc=8SjK zaN`?zFK!0h4_{^55xvFj!rS>X0z3FJ{;I~P?q0r$t>tyQy{NP>u}S)f_PQZP>4e4i zr2e3E!cL3$epZ5S0eHDV++(m$(CaTuOH29!@)j;bA33vJY>xz3;Ll3rVI)7H`7tN*AnmaeGR* ziU)Wl7O&kEF1BQicmH~90bj$-5d4@tDH18_Xyh8$Az#bmyO?~-8A=t^*{{f!FFmG- zpNd5eD80CKuGWJc3q<8aF@))s#(ho^Pk~$NKumN#REg-Va|0j4o(H0NqR8S~Z0++Z zW)Olix}_A>=-#QuT~#n)U?{qhc>dxRj*izL74j)YFSpR?vlipK%e1XAKrB^JKyFII z;aI_{3M#@GA>6~_h@&iG#M;^(dDS371?oG^MN-E#q?OhK>@$}R25VG%#L<6Mnp9JgrhmXbBjT9HNlg?^1m=i|Z%u#F zd^pi)-k;bfM))Q|{Lk?Jmn+U@W5baS%Z~FB9Z{IqHc|6tb#eTKU1IW>YU0POA43-< z-r$w*s}Yj8(yRX6!~Gtx+e6Se8;tZ^60BWxRZX$0=7Fr5vh13Ba)Jw!+PZ(hPfxlL z){T9-u|qfZ25PR-ja|Bb>n*kGJkP!MS9|rmHr>A~P;+lqz}*@NPuGpDZaj6{c1!IK zKX&i`yD6^c)uT4{N&k4BqMIyPnQSWX- zkGItR^y7zj{4S#BZAER|#|vO>k$R5q#uXX=7upLaobhK)9RE`rzkRzi{;Y}PfBd$B zH=OZjPaNOsX&c0e*VPqfB6+WMq$%GZ{qmB-}_a= z8NXoS_@B&O|8-~l1rx{r!Bam0evAKw6UYDVtB}usD8i`y1&0wXUe*B*|{Xczr-Zp?o zS2Ly7u7JB2h$8hfp&ts?1D-$K~t|ww$LPM*ewf3MsezeXP~>F ztAPr(xm&4NYfe7(ZK@R90(}Mj%w_Z=b=0R%KK$x(+$=;hIx0FD51mL8^(d$Cz**eP zLNj_PdYG%}!DP(9!Qa1zo1RI>d~;{#U*hKMNyn`C%l|luoB5NDS^3-l@AtU5VA3%+ zuKpkS^s$qXIr7IpJBWrklMeZEL81jWXH7cfv^lS2;ihlWAs05b?8D81Nyj|!cWv+C z=Auc*9D3m&uE)*nNymKj-nXJc$vDpP+JEpF4va_120l6WxIP220sC9g+iZ0=621hN zlzjho^i#L$GtdtN|1PQ&T2<;U#U&->|Mf>d{1<%&bOYiiH8ZU$5e=7=tQT(h!5Mu9 zGz3aO4^&`PslO7Jl*H@r|H`B3SaK#}`I~Jy-%H1mKM~7|#}lLJSh6N!X?kGY%jsCW z6S3U6`i)RJmPHe>#NL~iOvf^7B9@uAy8kg9%YunmewLekM>-bIL@Y0@{?e&*Eb}H} z`Rvh~ewU6Vdm@(qXx{s&bS%D!SiZmOTm5NREKP}6A_};}0XNj-NWeW3T)VM|8Olo! zViIl?yNn02jIwOwo}AK}MZVISXMEYEHF%#PSo2litY8gZX~56*`KjE884#XS2x^;- z26Mwf<7#<+{NyvUf}862v<+??S@H3pp#|N0gLC(+OyD<8bWhrz zSwX`rF)*(`RD>CQnUTO}TC0O=4_BA09jGo@^ZqFI%qm&4sR;d)L=rjJsuWK;t@}Pl zLlb7zk=3E%>foCFF1(e_#$Q_t3xkWqnpy&w|sn% z2$!pht9g_Ts-%M|>7YtFsFDt4zysusu!zDs?7r}Z7kij!R%<+&(i&2b9c)COAp7)?Jd|~=f$eIrr839 zyjb;=7rRBbgjsyPNEnEXbF1_U^XJEJt7hL1Zop^1|B~m}7-u#1II2bwyFIeF0mU{| z45PST6=Nt4u$bdR>7=^oMGLG+21nhNU-gb%cQ3BsCx9F!ku`N{?sL3&5a63{vS_*}5# z>oJy|@`4|qVd?oIFyx!y#r)%X1&3K2Hg9gZwa83X$uRgU1DH1)U%J7370lLeIR4ZI zvlh%o>4~uUBQP5!jPoj(jglWXK|F4HaTB!TCP{CJMk6;^qdXJ?9k*7X_b*lB@Rbeb z{NqnreF1Y=^#!0Y)fvG{U$_ad>RQjP=mlL67X7w`XeHO-}#N)I?{=vShVds^oC*a!gl2R)V5R&jKE;GUww zNKavmvX*Cj*k1Pd@7W70vQ=>lUeMwR?(q-KxIbLBKDtAD`AN(JVV&!IE}CL8^c|m9 z6@KWW@39Ry8o7K$;~X%oZIk)>il#Z{%WVzOThF>q{y>=f&U zLy&wj1gV9-=`ArL+AktEz(}q)pMNqIH0nyUU%;n9*Y}sWBSE8)=dYAR`sS3l>#WoD zW$rB{?t0w0=O-oZmQw5@VfCTQN9 z$a~K52V#$5gvaawOCks7fMSRhJ-ABT(K7cgw1;h>vA5J{1pqXa5gsT~r}ogkKgkfUVmT+I2?38Z)q-d$4Vmo zklf|RvBZa{F{{+wim}DwJEW_^$4ZPS5xq`?^N(X;c6I30`!Kpf_HzQYn?HxPVt~@N z_9w(R{A5_ffDVA%>R{#iXwQrH!>XtU`e%=C7kF=j87wS+g*iEqzoQ_ShngJn9$p=X18HggIuPrc0 z>_!UlWT$E4V^l{`bHLgKn{Sj(^V2jG0Nc&Wj}J<>K}%EX|FSkK7rh>EdVRdasH33J z1-d%S+ONKnCZ|*EBba$Nb~cUN+>%u7K1-5@pWIf0c{we9HZ0zbz0t^(EfKL`ap9KB zwS1-J@Ep&je2};p+o^zGc=gV#g>QgI2s^I9e04?h9OWNyz1jTHid}Nr_5+-@@y33~ zTby+bpiG|uE`;$N5zA%Z8zUL}Gera7Mg}tJC*f)Le>9`PFWp|98WN{>ZlL?J#!Xfs zmU8f96~bNZiWbtlAN1~KVF2{*Nzr=}^zKd3%M^vqQ&CM9$|8vtciDT^6;3f=zrz4* zHE1#5Wc1b-6%Z&ZV%>kz_@MQVQy6fDeQ+HhIDNKAp-EO%A>pf%$c5Jzb-Zcu^3~j? z^31bABVJnbTw`fXWov28W*@xfrteM7-oZ`worscdQe*!&sEGx}lvy!KGh zWAId`CZ^21s1=_m(~1)%#!jZzSbxR;#JKbt&5>Yh>o&k-tlZj6hIC1-@k1WUB^z+K zD~tm+)l7!+@E?g!GK7308G0U6hSpTGF;iIl1ru~6afvVrXnF#BBPOfRd;mK>CaciJ zfkYb$d1eQ;bWK*FtKC?+O;(}1?TM2ppi2|`9@2=5l*&Pn!AK{apq0dmqIT>qzP;1g=FIE|bSz7q)b zYULrqtaG5L$N7`LLB7DoJI;`C=C51! z3-f^NL7+sqnsdBISd|Rj){5aI7#}2|ZR~CcLpFmO5NznlS;*uOAJ_u53sGA_`axE_ z4;2UOiq9dXM=)T;)uHc7kbRYr>dNB>#pW1LB^=%3N%64`o$7$!Xfc!UAN~z<5wa0r z!Ny&nKCHO7I`o9dm&5e3=@9TB+Fp6QpABaLPaA9F4(&3)DWatdS}xoQMib(Z`^TQ~2f) zoEC!%Y@EX2avP^qtQ4H8;{Rs+r(&v}sgH`ew6<9`S{-O@B^74AO-2G?3sb5woOECc zCmn>sNrlkjq=Qf@ItZnrLZ~XfnU0WkZ+j)hPI3+@2zXlNZYS4ZMeU_V%;97@2RBdT zV0;V*v(q`4KZb+BF&un6orBCfrsAMiu$8Pez0|8$fRJ_`W%dQ=55F;nb;O4>QIwGT zY`=;$3a#Rff)StSE!sXod}2bvKjOm=-UQ zsRswFRO-KIeB?M_L%{%Y*nrwsml<2oU;&(Wj;dL*wi(rK z&qg#Vt$FYb)P1`o(wkdmL{R-t5Gy|hkBX`#YnxaPUz6C3k$;1_VGMa$nbC^s`6ZD! z=6{W-TC%p0^=6eCKzax3vR_o{o`(9LRP{e!(iB%HQ!OxkWs4YE#8G>;qG=&$nx0P3 z?fHtLLDU@r#H$oVp8-XekD;hQD7p>=Wdor{5i}nJeS8c-g^C~#K+XcdOBKLB20_=1 zA*e{f^8#Kz>J|WE7V77z`hS7?8RIDmswRbKQiST)DvAn0QT7;$$`wUHP*e_zu2d9# z8WdeIhNAnFjP3(T6(C7dB+Ua!Gslorp-6fhFe?FZhJtt_Abw&DNslXh&z08vxEfBa zwC3;W+ki9^t-Pw$&1jW5p0G-3_+6Rn*8G^E8I3-n$on&pH)9NW&w)I?kH);YwC0lE zaFGS1W|tXA#rj<(dG)2nL)B$iazRE>l7}x`EPka-du#JeC3)dedIz?;*+XwBT;-_joAtm1q#J%bp;dGKdd`9&%1QbOIg-5Pj zO%U_dkl6qcR3I)@S3Df{kJTWvFl@ORHcMRrIa|TDJXJTJApSxPSpX3CDG=AHD}@A6 zs6Z4^YZQnp)s-Mod|LHW4it|o6q>qnA5qLxV^#n~r9v@7U3r}2-l#^Y#JJC?aWmBw zoHasRUa2e7Hv+j?hW%TKpZ>6d@(Fc~nnW~zCS(6kYE-H5?G5VB8|u&7>d$ZRXY%_>w&z=w03_Ck5WE{-h#COUo{q^@TH*_Lm51L0qdPFhW@GuD^d6DH_s+_ zn`c)=@iD*-^Teuc=Gm(1Y7C5z0-EN)surBTvVrFZlH1J#tJ-nCKFo8w-Px+2#CV?8 zUKUN4r`pTf>7%LkTtYQ(#<(|QT(qy?`DZcyXEFZ#ay6w9g zSnlZWF@N6nf7JF}>6i6u+kPy4@9ytMI`#MLn=hq7 zzUVF{-Lo2Rcl00Nhs6%yvF3h!=cD*@oI3w09=`QrucMbwamKEu-qWcP*y~9>zXWZV zQOlS8FDmkXTldJH@Pq{5t?F+4 zDJq_^Szj}R5_ao)&x?ole)ciE6c99G_Ro7I#t@bzf+fZgnXVhnK?A!}=`{s<&2t#} zzU<%N3`t$e`_Q%EpO?%-{;uic>PZe#O}s2kO5?#eNS0tSBO3>e+m zn{yCV19|b=Ykzv3s=L)cq(@BDtp@^+F^GLNa{}1$7~{pIZmjmVH?gXFr+-k7M6Yvi z0)UwTBMtx_V;JKT8GCK5{nclsCa%QwNd0y0jTnCxs3L%wplgdw*X^}${fQbsMHj}O zO}emH3A(iHDY8DPs;0;S0AI@`bP)mC^g#$p zUbol2cB87BA`A!?fUvuLXweN8r0DvDs+yt;5DFo#WxfR?Ysk#*N1kVOE6 zpbH$Z=+bL{^*O1UBJ4Bse5C7c-y-A4XO=;0L=jQ)rj!wCh%TU#O(xVa@R?_*h^+=& z_VFx72xQ5Z(n{zf`qJIo^rnqa%+FxyNhv1UcH_(=w4#uouAb0L=%;&YQyml(C~`zW zq09SlGE<2XrFnroTTQ8={z3Q7Ceyu%5Ijm#bBtl0&9Z1mu^^?e)K&E5-T`dxjleKd zLGyqIcSFa7Unni0+WxG6-;+Ygc4dxDbpS9+aKS42aN>2CRtTH?BpZ;3ZOSB@gkw-# z8W1$STNvfAY!P)>nhb(&+ccYq3i>OSgtq%|ny)y9ZF-@|3RT>_Q<3(Z$8AV7<3unHLFDa(S@^pQUn;cy{T zZlNNLa54&dP5Xi&bmOd0$VR~fsy`w1)2LRcpx(4IG~7pAi*t~SX zLPd&d1qn(H`&$5sP}h}#px~n)mImo$6BAUNR)}`gbjvv4ZQzU*CWmIlCHQPcglwhe zmSqsrJUC_5!Xa8g@+ck85goVe0+0%()bW|3Nu2}Iu5H49rrpq z4zrj_$D!Mz<7i7A_t{KAeYBBNc|%I=v#IQC>OUr$839V2aD#3 zg5?{h$*#OXrTaNld1-Y_TGd04dHs&fw-H`}XxcpE7*7h}7%e04K=l>YezbLO0@OfW zuVwsQzy_m1U0SixkJCl)k6;iS8*M}AW1O?831Hp>lk0$!ogJGAd*C?I!mbrx+w zHM5x0WTx?k=wJ?1K(rU+S;8FNfE~SdgV1SlhkQ+A4-y{m5gmX%2nvcl@LDttX=bwr zNYmH@R9WB-S|39(NAU(FA1p*6RjeUb9nKIBEQ?wR%j)N;M_9vBJ}gDGRICxErg$TH zk?1CR=p`=|ci_xuGODG`ow_vc02GXdN(v)w!`UpQIPhsS9ih=y95anG#DqWutRCYu zPi6~mSc1*{bdEH%m?K!zxdV5nT=PuuhoM7s2c<$9k^*Zn2z+%I1az=Kdgxiy9I#Vq z4%{6qN;R_-2YhvyLrgF!S{9m%Wg(1=aL8jK|5N@@X)tK^oNzdrp4G z7=tKg#h7_C6rms$SQVFGS+r(Ymc*D@PK<$V{dA5rNh4bE2?0s$7;PD2X4^4l0Zl`} zN)b*}umzg$Oo=hb?wDxfav@AYRd>i%pk|BJ&QgH|qLXwRd_r#b)_m0>MYqD_Rn`jY zVIqY%CX~-ag7DgnLPZ+kgang;teHd2vvVj!u%CWH>ZVbw0ObqCl0OwV`BOG@U4e0^ zRal_gtr9Je&k3pUTvTsWIYldR6o6Dlh(brDk;+Y_(hEqWBu%gY5=iBN2~45S&|{%- zrq9;oSyO1TWMhyibEPa>jb~4)#v~17SsF_WeupAGvp~x@svN^6$lafT=HIKzW@oZ&`pVG?k0 zHv(*=^W>e}^=i(}$7COn8?jeF_*&d~5?3o5SX$-fo+jKuc{MgfDdY!_3SGzehCH_4 zDRiB7*299MTS{whD_W{0x8W%V>;wN@E@rS|SSxHefKeK?o3=$Yd2C?!LdTuo)YZGL68xib+W|$Et1&g8NceHG=dv=_SM58NW$~4 zUKX3i@24EungOz6hy8n~YmvOl!ZfH?!2o zT}z&Byxwm{>ZZAmkoYZm3BSp!&DXh`B3q`T*dOz6GIrpZnH*j}l7VBQ2OqRS?R&$_ zvQOv94zAt)gYK=728gDz@38+cN8g4+vc>4i0wYK06Us@=OrQH~UMIUV@g|H#dT6_U2fG;}F#|?|&j8~5>89(2 z3+|(Y*O<4--^#0v*C{4|m_C1(u?M8j=JlgOOdJ%W_H8k8VL0zF?j#QSO+`QU@H*@l zR_-P-rm+*8fGb;e%zu!?A4BaG?`GxgMknihY;=mg!=gv3!HoWy_;?xDOL zq-KY|$tFFt2f{}`!=&aUgpcG6=TA3ZZ_6L}A|ig$c%9+`s5xpWz&zF-6l#uuWYoSR z24xT}!1#l<7HE~H4?_zuI!Q|I5G{aWFFRxF08l{Ds03Q#v|<6MF)bBXKx&4Ba#B-@ zho>oh^auKF+C!Tlee@%WHY(CDBt9sbC4b=CBH|~F*C{T5njuR87O}Qcv=L}LYTp~9 z8Bh%{K0j4ax#O^{4A?WqzXKW|pZHm}Q&|CaaB&~a+r+kYUpsZF5g3D|0`lpM z%|bYd!IYQMC*@$Jt^MG(f1?PU#?l|LX|LRS*nNyrcW;H1b0}@<_K<%MOu)^}RJKEk z9%yMmTh?f70)AZE;y&TuNl=@W&L_ieT3ccZ^mis;9aa_`YI2W=nBYlZ>h6P3*ja#e zBm-EugEY7%ChOls+Xk*J?k4EvY;q=i7+`jYVfqilgx&NRdjQfa9%fm@=mJt)+vOhg z?Y(CH&&G2^`38HDdj>>k_-$lO! zG>w9I9?>)$hU)AQ%kpmoST}9H3s?)pMJ(H5>;zO?Yj+>>Cq!O!J3!M6;6Sqv$QM8{ z$X=q^N*<#?e=4j7+Crc?mH{o;L^Ms;iO=-!B#(h+pCDdDG|h)CCX>IyS&SURlQLrB z%XS%iffSbxxR3Znc{VHGnZ(O;1k(fHSr&TCgt~&+mtTj7jS5e zVlUB{?qQ(=@9+qx0hU^GBEx^!*hw&u6J3@+VR`nrD6eSEw!;8ubONVnu{b9TeH385 zc{o%0x@^0#3A&&qP6>-eT!02??S`R(K}UqwKDsJ}HMGM3&rt*N@`y_UMD6L58FWd+ z)N~!F$j{p-p1S`CfE#tsan!>5SaM>A*p=wOtBFWZF7<1kQ0 zL?|L(*dsvhL@WWwut-Nji=rzOrhv#xM0iV106Cb!NJ5Z}*Fjv_6c^6=!yt{~Qf6Ga z^Dvwb zLn+y^CJF-}caau}{hMLG02vXrN;HdPe3oPgvYFx`NJL~yNA{&|c7V~l5y`2Q}*qColoI@|xZ+y38DyW|$-|64)Nf;9hMZ~K2l zSdb{_EhlFM0GKl6;RJwI5yPVKu0J!&M^B`@m;Ua2z^X1FAecq69KqW88lN=8K8XVTS63au2J;S>XmL48bX< z?3G!@G2IAe8#{HQJjcIR$E-as+4rks>ibDHi^p{?j7{ zzq$9EQ^;uKdDuZze?IhJI2!pz$jw8EhsV3{V9qx%g^cz*@7hQ^i1s|?+7az}!nG&b z^RTPa{8=)F|9$w6J?pA`J{*ue;)rGAaqsJCZ?z%2i1t3E#j<6dXyzri`nPJYg{PVC ztZ2(}pUCUNmOU}LN^>DTe)(2-IwYLVQ z`#a4ySDeW)_t`TxdAR%=SXY;;Er095w6VV0C(^8Dd7R`XpR|4T2nbioC9~10wiq?+|e`8woOvn=w4IaQNcn=Ljq zSA(jCEkztROQYg(3PG6x^pfYbP1)G7&zh|no5YTesF@o0xS7Pjklsl&ATY`tP0Z&V zB(A^%rNm5vgt!lyN08+p_{?JPq17-vQ{TY#clsNkN3$7tly&$IQwr{_(Iro5VeDOL z&(Mr6v5Y=7I|G0QI+W`aTA*k~Rw0u!W$&~~rDm8zSWx?5n82FP@I2C(W zc??Yg5c35EFuLRkEy6AHtf`r?lQ3~E(=x!=qTm8Sn>`^@Cj9g+g}|F)s@aX%7;qLc zS`#O;9-EK-ZNRpOF0)GSgXU1nbvenaS*366$1cx62-~HesEGIVFD4}%Tf%^ z#VnNjFazUMjFDUfjtQ8}!v6h$mcw{1&>X%+m)x(_V~a6+3Z|HcbD4et!8V(Ti2*QC zCSGJBJ(8sg4m-^z%(?(`7Nfif9Fs1agZ%@5Hk)vm&RhD3oSoWumln;YX8}Z+c9Cm1 zKgB#A5Vk9BLJB9HRNhDLVrc;#2T>Y_%?8e~Ks@9>;uk*w(3odI73n{~OeXf0nvR)b z5hqi4OHpN#6Jq)J?hLJwhBYAuc$z-2zAI6s!@X%5DkR}nrO&K9yC$Tlkx z09k`G(?#I3-3z0w5{S5$u~LC7Fp;8jvCu;nmb#CbLn)Sz<#w9mvF1{Q4@b0%d?<ZtnM-a1N|`ZPnr?Xy%$YFE)|Bs1amV%`&<2?^ zjrAUYBC{q-VJ(LXlaqOqrK*;*m6_9z@DT2WWQ@RynUmy=mUBkV$h92HtuSkZK1iBx z`4lV00kF)QES0r9F#yZVNdP+x17OUZBr&x-FtXCLI3{T+pvV+z9NPj2ITQRX2A8?h z1a4vWB&o0EW|8=&#VN^qfkh@!W0{A+W$t8YlSMu#m)Vn|oLYtb_AYGx^cp@b&-s92 z^mw;@u~<7kGq_m193SfcQ08G4l+M2kpISNl$EVG&tX9{CyG*;a4?od4KiKItm6%Sg<}7RS`4xY-j@G|eSnP5~>sJ<*dE9sv z!nHA4zr64sFUl)1>8gLU@PPu9mt*dwujX8>=TXeSUdIgVb07FfU4{ zQNoYlIKJS+-qR~F?J|Fdc@|!BkC`_o>dfEaW%u7<4uv--F>~rjVk?`^(o6oXAEo)6 zCH)#Tevbb)B)8$s_3!wq@r-@6cR8j+=&3ymZ^`$er+V}>fSz_=FSugp4|AK{N$hrG z^@ozxAKsis-5c=c1^e3|{XL553i|8F!prtY(O(q(okV|ohzt{s?Mdt+W%Y!T)e~M_ zN39!@JEW(u^z;B`66mQj3vcV6Mo%Vs8bwcg*%RghW)d$(T0L zdg4x8)%e?gZEC-RRLOe(CEEMV!H$e*Px;Z2yzTz8{aShr{JtAqQq1|n*+f*&Tv;9M zdG6>iP9pBZ(Iwv;j9ts-@eBYA=d}jh@A-#-6H|q=h~j$YJ?o-9!K0_KjScF)Cv`Vw zATIr`A6uyP_>+2O*(=eW$B&)`?9J{Ytkom6j%MW52^lW9X>7ddAJH=(_)fH^^5~Fz z7prwkwWf?b?84UTAJ#LMZ;19(98J2n^KP%)-I{@oIo${Rr=v?=kL3m1fvgbE=65(c%| zlgibWX-@6T40d2Et^Y8I>x?dWl(Qtb9;mLjHph?R0oJqC)-V2u0zC)EySCm!m$q?($OHakAZngquLkzotXZsPtE^wtbvKA9 zs$K9Wykpy=Uuy< zva;HryD$t;V*<7v6RydH2Gl1(UG+GcfO?0&&KA`=K^-RQvBaeadu4KZqD#s+H-oE& ztiA)vP{c+L2yNc6!UFbD+8PD60iZD}GcgOBTyy|E3L0MxOF=oE+r;4n$B)zZHUs4eFX<-}9SnZ;56EKaG4(45DB5yPB*lRq&T!FeO; zp8kRTFh;m}ivb{}fyAUN5X4w+9x)`3F(mFkLefD@!vtA_7^Bqn8_Ajb0b(C9pd%N&0lNe3~_6XXwKw%9~_ zA#?HXBt{8-tk7+$eM;0*5}SW6V$&V}J@fpn^!k>ZK};J*Om|AQ*N3Ky)QgnVK}_2O z$%B}!HqimdTs%FAnNss1>Yx(!1Tovhmil*1MyMEX#bnAWF6oiU)Yjh#wS9a7Y}@nL zZft^(nAt=CwR$p;5*gM_3GtOFA%15{h#RJa_}Y}%-k1{GTT@~SPl+u$CAQ5|V%s() zw%C-|_D_i|J|(t84mRjyS?!xltV?R&;U9adl<84F7(R|4zEHeRehV`i@e3k;4LgJ% z!m^Ebb>qGq;{<*j^B6nuh_$Rm%)!^D)x4?{-ypxk90}dd?{M7Nh{NI-4i62En^jp8 zDm9ntpPfqCQziTRhMWZOMf!1hehIcLgIlgXXBM>XoN3-GQ>S@wKOZ_@K_^J+WW{Ltw%_^guXu?ci) zRy29aY-3jG^7vHQ#{8i&Wbl}I@z~&GyE@;LwmLooPUVX8rnJ?ml3r_70SgaS);l)1 z*vV6HN|@vG+f)izF{MkHDy8L`2Le>s%4i8?T#}xa$vQ5E#<~&DjoDbo=dNja>y#{= zB3(sz%<{?d3o{xkWhJbMvx*HYg4X$t8ZQ*!kjnJ6$};nQ9SLiW!@^qjefm3B_1 z8+N*R&cy2v$}-1%FWy?7!a@~{5h>?6vkoi4oJ@-(n?_>!(dCnB2@M8{Typ9ZI+Zz2 zrdg6EBV#xa0=sdNm-G!rtkK` zB$&a(5`+#+aAly^Ua)lX%+$&y(A!f4hwcG!9uD0DvQl9upuB?vpMxe!>^9wCuq2+-o^4n-HS7Jfy_$*fzXRQ!ruhD{Jro5nKbb>bpEqJ1X z^M2;OsYP7SVh003%Qzd0^ETnuv|@KVuHn{Ys8Q@bqZ^w7nUA_q zLHBo|!X^0ZP#|v<6*7w5hjjmGWD3P@Y*V#7tJr-kP_q=@CE8t#H>}i10b`R6{liEB zz%U;1Wfl87^Uyy>YQZ&*#2W510i%l};l7_pFi@TD3{>nNf!8c{_o#u6Vj#?Qwig?F ztby=xHr>CS0~Px>aiHvCKfZp2{yEY%TvQ`%2TjHJkeiIOr&!Tcj7>P4p>+Q+ylk<% zTMcytLt#GEQH&43DVp&7rN4tCk#~>ya*F*s^2i#D6IHC^eG;@&4TF7XNbx1bn36fe z6#Ive?-skU`0TLZc#ho9V+OG zcgC(XdQL++kdYdQN;kXM*siB3-QHrQ3jx1SgwIrU29z#flO9}D18pZsqI9^g_-1TQ zCuj)bfsiPnfJn%DE;D+>=e>w_2)Q(c|DNut4Y63Mc_(0tu_^iudV#U~2 zKe98U*ndEe9LmJS>Bat2dgSn>xSCt+KZLUYHg5L?GJQUnqBx3;sP+*>G(yY; zBEsoLaxB1r0;ureg!uA#U?7BpVJrl|k0cNhA2NVN;Dv?n=y`H*9uZ0eCBi*K_z^`= zV)THA*lfVUc;vizSU`jfyuw55=(YWdk09_89df4^kS^Hp&Q}Q+5TJx?vQV_}BMRBT zI13Q5O@n18N6(9cg#;*(o@t!O_@jvQKsTEl^f>U2oTm~lB0%N{V#gxlV&kL85dhH( zgy4n6!1FO*F{ zl&zdjXUYx887z+V$o?|NK=L%;Lpd@Qkxx$N*tO4C3 zamKZI2e zB!t)?yC`#d=0jPTcV=f|wIdU&9hq3|$i!+#=0mfCfBuZG+?Z}Wlx5tRZQwq>2oNxE z-@tw2q1oC?Cl9O5jP5I~S=~70hDNE+)}LpI`^VQ_{?7HX>yd^HZ5Csrlh8ZWcp?V- zphT|ahBd#$q4`?Abi8S)c9XUR8w4zCOy$35bRGUL_2BTNmz&9Sp|lFSa)k71><5Bv zmI__(%R9?j;Z|&)P#L~rJx?2Ox`nkipjMQ%u;r0ef&9`6x3$|_Y7WcI_B0Y}5+3ccxc9&B{rs{5~pU&m|e%jk@)y+nZkZ4C|hjy1=yUnBB1# zm7}PPeVHtvKyj9p&q!sUOJOcTWfPT8q*tB_a>WHemd_zw0PHmzu!461$k&8b{qqGc zn{ZzUewV1%d9!_uSJj`2^GZ5NZj`mANL2-NOF$F=URw?gsal~m6{^O@^-dM+*u|4A zsFrNz0b4fRsJ3isrt%NlX0ROUdXu&{`$ z0Pt)$R!{L4a~bUKq2a-BZY-hU(Qx>Bvp-Y5CoxdXSqhqW2MmPHZ77|_N)uKj&0>EG z?oGq`5IGUcD$a}ID$65C;%1|Ftihqmj?2&p%c@;iu|w%N8eM{gFKkiJlF7v-cRx1O z(2`s!%fQ#baedEp-F+Gf7WjP{>wJ=?;_?YhiH{Wy$hSGtG+-JJ%qDC zt~|M^C<}ZfA5D9T4P0$U2|Lmgf~hMxU=@n;@6OWmqPWWP=`0ArQ_MAUh)U@K7Id+6 zi{@i=0gVIhgIGVupj-#e(A~Qz*y-*OEJ=|+Bf49rd=xHLA0P%t7r2<~Z>I#<1k3Lf z*MZ_Zto)OMCoY2|W>OGP9oAEtfHhw%?y{!E3uy;_2i$#FUI!3j1`rrKR3YFV=Bkw& zd{(LuFpvzfH>C<(3QnnltYEc>D&R&Y-k{X6bqzHEm52b#z*zC+$fTHS!TucqcRyMT zm&>9%2HpoQopPT>ngS~JUaH&1Kr}Q4^sn>)tHZ^L0a(xyJt)rGhKo>x*{s7!s6{ul zfC3OD@LGh65^yQZ9mgtsN&?}4C;`aC4)Rn2?8A#D)Pi2eBMg%R6FfpsnnxIdN5H%1 z7w8iBo6SU*F#LzQ1nkIp!7hRJ4k#DLC15r(wM*EW?h-~Wwo8~tU6|4(6s2oJx=XMm zVYvhtp5+n{Gc0Y0IX+>8+AzT<^rrcQVfq9FnG5p?{DotJPZ;?FeZqnd;S*>^7t1FU zp35h6rTc`_7u6>$I)_iFNY{dNpI}MA@(J)hj!!74{@q$6ikRs%oEjaaN+{<*RT$$K zRFW_@Jy59u2Nil%MnE1T8&HXWl>?~o&puP3AHiEid^^}%fnI{VMF{Gs*seNlazZ+R zroy?3P8Bt+h^eBbg_A!7Nsv@s z;t6;wHWFtlE~=1-YseGvgHB5-5>5z$jH}_Fw-JkD#$qjPGXyb(u!yb zB{f%RtwPC+R&|+{&DttDCSF}U9cA>n=sL=Xa`AN(+e_QISy93M2Ts*$C#hINa;S;X&D6Y7^$SZ|3xla;Jcue35^zIh=eHk6}OT z>N1ZcmwU~=@tlDhK=u+EFVUva7@$*^PZ7Qo6+dWt@ikl;i@WM$e zRAIl7mg%g(xh=c_2E|O)w1O6P`)J9;#Fh<^!gpbRl;c-mYRd-nwPu7<3>C!8VNPIC z(F$eg8FLe^h<39272Fd>1vOTh!L3&K#!L>( z+W@fxffJ{gvsyD-<(XLdGUb|BQPFP2Pu|0jsQ?O9Sm5LCUENChDq)TGK94ynD_c2h zO8W9lMHGq#KfoPbJjhr@`k2bf$nakxeLgS7;VtPq6IrrKiCmf2eg30Zp~W{+7a&AeC1-?sZFv|%NGHCIi^-?IDeBp+6^W~vuz_ahhC?p224 z2!9H@?@qQ~EW7Vc!t$(iy%54b{hwm@95v1EyOS#`l-;Y;Nd$i(cAuJ;x`#$b*|in) z*^?FStpOS7Q&B!Gz^BD_JFc^}W!q_HofgT{g18gF(_%Nc&ZHjamA3A~7ba7VND~0A>v<`0}0=cX`z^zCR$`T77fEYW2+-tJOCW z3N8?*rmU<2*jScyLa7r*c`tp|%03`QF8}hDHE-or#EbD0SJr^9;5sjBkk`)CmG`)i z1tTdlS|?MZ8UN>4A+A`ma& z1Okc3CEO8&L=f3=Py%QIg3R~(y=zZq5`tn6{-5W2{vXdnX76=<*Lz#W%eowZx!r>grf04y-(AF3gYcKR$>;0K4jf!<0{F&QKoPaShSNZ!?A*;RL`##c;)e$B9-V=sZW#Y65 z3K*HSDA3KYcA9-~f7!ZTe(wPz^SFs)`EnQ`+3!7K;$VtlZSh;X-JVRV%E;Wpo=kwj zgDL*Z-FhE%z^*nUkzKKf_k?NHvMUzIBrND^xzXH}Kl2OI`+;B1aisdahtXAvVXgIB zTivb zz^D$Pt5n0<<+s+kUFp_(BXbwK(uqHWar!gY>3xVFbXAE&)zvN;)q2&{I+Mw3yZNn} z#8DkJy>)&$Wr0yOpsO^)TIp{lm0{Hyid2R|V45GKP_#0Bk?>Np4ma;Z^~1GD_rS|fo2xA_%Yn3*!FEF*Kbso28sRw7Y#wN^$Y9EbuC z8X{1)suM?b6odk~)Tl_SoUanA`_psIqFmwo^Is)b`dO5#{I8a){Ie)mW4~Ii#-2sF zn()ZA?`(SAw{eAbv~pD?v;n8k3u0#3u~T1dS62BPV7-<2u6lEltdX5vCSSc{Ia#hRisH zFv^ThJPJ2{TQfRf%pe|9T^KRNpBWwt2&0$+H1~wo-u<}30E{`rBQWABo--2b^mKwKwg=JZO7*v6djLe8XaqvOnQlxbj5JzKs~pdk z(L#~QCmMl~Z>Akn2qUeXuh5QX$J!x`h>S<9eKU+_s2)=ZqnJsjSC41MOd^aEh)2B{ z#xqopX@rsX)mNy;vtwTo#wo;Oelv_`s2=+gMlsAzuO82mVFnlrh{v%mjAyJKGYI1p zT6CvZk7voE1B^3?#|h0ao}qfoB8&xJtsc*kDTpI9L?aOLO|&D_3PGGn6Y})x@$8t8 zMYB2~y6jCkN28o7upRZ#VsWn^LLv!nlq9%OaEiuEf*U0XZj>arQIhV-(g(cedR;o{ z7K&LYhQlbeB`}Tk94}zcS>s&%z;$2QE zMPNm5{m34PpFpg{(of~l4Wp=B{)A_RiltcosOMcgP0FcU{-9?Qo~GtkF2C2a6Hkv# zs9b)hXD^kx8^3l!yvdZN?&+(NHZXOd}dGF@&b@+Zn`}CD} zZqD3LgaLY@rl$(H6xRe5C zuWa=_Fn!KS4~}G1%7=vfaI3-cR;hYmm^0&v*5kQRAf>3jqSZ-yCMC_E?cu zR`i)s)5+hb5?PfMnKK$7J-yQ5=&JPfIk+5!S-T@^Z|nr87n~-QzU+e)tlkZd2Ua7-5ZGD}O&@TSwEo!|)!L3S6*z`DL-DB-X_;OdF_!`@rw57u3P~BG3VKH9+0F zhWD6@x?O%RKXcX)L){^u?j6IWEKpYi)a^1dHwzkE_}0Zx2M5wFL5hi(c1Z7fg*p^x zZwhtr#=)D@8g=i$;o$c=;O8-A@Pi6)rZ?>O9;NrdO9n-Bhx%$0dj;;mbv|u3aQ8k- zH{))lfxw&JZ{EmKAgjxDMxRQ!^AzrM&@~M{JHZ`FvwAb`*27WPChk_5_^=z<4!%>? zAlq%|Xm~g2-Y--I&Q$!`+98EI6Ja~AZ{BFc*=_^YqQKqzaooWnp>XH#1NX1OosJli zzVP$Ka3{ly;jRkKz1FzfNVkT!UNiu_tpc2Zuh4ss(MJJtitMWoP7y1RSbTfn39S|q zn}|Dl28Hi-vJ@m1bX5|&8CfyhL3bD+Ecp(l*;%v5Zi73p4cwt2vsq*nX@R?qz}38JK7`Vwy1R4p80=HDsqRLn=csRa3GPJSJ*d5RI(_$v z;0|i4ZGD%2R`lKGHuc?SG2Bt#eUhN>HlMM+8~aW4-6yWTyLIyzY%H8c-{q_CjJddj zzPnf3aXNk1=;H1)`VN-uS9oH|3k?yGB>v(U>`{zMG&v zg(kQYeRrp}^K|+yD!4nXzAHE@`fh8R`mQmCJIZV{LEmjXV|_RCo9Mf!tM7c9$4oe_ zzAGqN`Yg6SVa#`Hj0$q7_G0FpGVENGty1QkYskfHIAy)D2n{!7vc;@5WvD3|O{fF& zET*fJRVGbCw|rf0DM8iK&)WRLp=< zrjxV{xRt#WGnJH;#BCGrI=5{&1eC?AOd_}Kbw(fBK`|33X8b6-N7@#+Y3{To`EJ_{ zF}sGlkYb~VHKXj9m<1CvUa;-R?O+$*FnVCC#LN_Bp~y0NtF#TfBqpQE9APSEtgXrh ziJ2d;Q;^Zv5&MkX|7F|Uk`q&-Eva+c#==?I6v~=#+r}OvZ3rEanzSBbh66Shx#8Q) zC$tl=iHiiz!n6*QVc@n6K2fw(rhwb_ZZ-eMrvBKZujYGcTj1t2-xkNaZGR1WtC{=T z;%`p7-xhy!*8H~kn^WGm#owHN;3VxTHq4V$ByC)iXqWSxOY;Pa`$Q30x!Jg$=fs&GR z5D%4;hG^5w9${vD%;)qTERD11Sst8apSGRN^Q9uz2VdSdf-Be|awTVPh8}cq7s>i z%FKyn{5yC7^W|m)KCDoK$w4zR+=>;YZQ~bJj}ggJKLC<(nagqoZ0*SeY~%2{i*n%o z5Sy<-(JT*+luzrB$BNpt1}4jBn$YJKFjiU9nG#|L1j7nFes>&VG z+}=NowX|na9@?u@L-FD9h#&;50xQ$5_PFIgk@2DV&sq?Vbsd+47~7t@=CKi>%mw8^ zP>h$?PHaKaL0ov?4&YD=xS9OE3^z_{fPs4P;w^}N@CfN4lqY7d{;XE@4p_+swI>xT zoQhOOdihilJg=EQ4g#TBp7$iPmYKwj%PxT1oE~p4ZA=l+0HDu)OU@jSt z6g&t5a&XLza~3mdwUY5CTd^0Abt-w#fuadfs^}zAq!>>KgT{p~4y}lLKY3ma{Mbs+ z&k=5@tu`!>2VyQPXjJTNCGST-P9u0E101FJ2OSu}y%|DDAbb=N4i!K$`n{X#UlNWJ zeKJvmYq&5gWF^akyE-5sK+I)$sNlo!6sAk2utal-iD}J6&{f+-IBeBQej7y;U)`vE z!n-{xL{FeY=s55N9(Z9!3*CmaQ*{JVL@*BSVIAm+HgyCw5OhRxOh-&`!8s@h7+k=* zzbGS#QJ-p1w8ZiR5|ug+b%2n9>K%T*druTs)^wuGAj)#cu02ub65JM!_oE=f^~lys z-U;BAo7wFmJt%iw1c~n<;X6jKA!E+TFlg}jBZU_)I|mO=ANYy&=sK;KagRt*@9?PA)fG`7q8SY*DvD}%4CisZB`lHW#= z2`!5hG#3$0iOYo%3^y3Tx(v!kGe1}j6;6j>xPv9u&+B9nUwH=pI@3=?qnY6Z*_8RS zW%-J__IhY^yOh_#h8`cT_}Sq2f^})WU_+X7U7PhO(ay6d?##tn9-wq=(F2$n`IDJ{ z+ZS!+>(6e`gY_xX3#g_u^nNFu8&TL7Jmx99A%gp_SRV*ogPA`R63$?j){Jn$|S~4UkV( z@sG^MYD#ndEU25-eB)m4@3N%Wbq5cljgv?C=eP_5e+qBn;M<{}w7{QRpgRZrd;WXd zP#F{SZFT(nqXzyxhkt&Y!M_u8`1dFI{5yTZidf*g`!$%?RO4hRvYbCRwYf*#>Q7c}HpZbT8BKRCN#y8qG#&^5#4x{Nkd@OrpX!M!} zKH`fJU?6|LO~#zPo`z_2L@50`rrj&u%-;O?IgyKE`ivjaW_B#=;BYH|UQKXid9kx^zH@S+q^4O&gnnG0@W{m9~I)%SgNDiNvm30gOFL zYm*V&Efcw2$PJ!Q_y-u5ZBW8b~T({dJ+Hn2wi`yR>ZnbY3Zs&fM z%rP3#^?{G|;C7E*wE`t^EMWx+gpzg_lxK;Gg7!$gv zBj;wX*XDkooIq(pU;o>oxKfwUjmTEgd3SO?!>=A!I4QyA$(Ixvb%3c((_Iw>HmJTq62YAIb*XvINHkT;}LbM^P?_T32So|>v(d~5P> zYA2TMsv-4!=0}5HiL!W(>C;sRt z$EvS1u8lEUBJrT#T8+L|@~Uy15VgyIf9h1vC!3~lNTJ=9^#jx>**lY9lIgF*Zg z_<@tzpP!WNh1nD)&1%$pdc9t8tV3jAe9-ZynEl~Ac_D%CrJ2?{IA#^E)qH;8a?^eY zCm3d=nD&#Ydg!h+^Wq0Q=EaXBn->RC%!_9s?GZ$keb2O}A-d=B6w{iGq}geDv?74z zI(Q@0>)hd?ff`2wR}L3?1@GV>U}1XS2(3*lGO)a0%b@-D@P8U!W~YJbL%>P1hrk-0 zo!f(txjpdw7>vlBz{pOlGkhxiN64}lP3dS$#h{Q?7|wXyp0`aOSXcuRv=N3E72zp5pkjJF`@^W8;0Q`x( zd?KXfK}exy0x=bGq|if0<>hnYND^Gik`!M_*?Wnf(^HgGRLGN7zjS#3WbGcufOcsS z6`i825MQvINZ%e(eY;C#mboig3c19Nk@`M`4MmfOQq@pmgjYk9YX1)TPa*wX;E1mv zKlcX`$*=eC@9!St0DS)4tfW?}Pq)2>Nq| zt3NL?FTNM*^FgT3N0CICxzw~KLw!yIWgd6cXLSJ1*jk*dmY%jz^>a22C#X+v>6z)z zGu4@T@Z+?=-*l_T8K_PFw5f%Yr#j(Gz z;D)QxhTL{%{^(nV`TV2OCO(li@ZN%g>CvS{p2TB3` z8}0aKcna75^NrvhOjHG*ctD*G@E^0)Nz8nYt(=S(m^3Gm@Yq^Zm<^w@Y^|Mym+-MI zOnFWk)TY5U;>QCXqo-~5&r8{hHVwWu)esYZU8WLSG&pyGN`!YYq0O*LY}sawN^IF? zol0!kW`jy>*(Sr50aD90Q&eKhHq%sM%QiD4@#GGm#2t8!q__jl=L4r;LHCM$xtHPz1Znu zH9|`4bg`M(SQzPOtcE|M)9YC34}xC2k4tah`~QR!+fx{I+pAMK&A_FntL9Qvb7|6? zU{;#TkmeLpUGNk#-R2Y$UGTIBjG%(*kr;S|pB^OQ0|ws;*d^cGW7Ib;f-U_o-`HOy z>-A>85SOiA;Vf#;{jA}k7uLwV5F#?J(;o=QRirc%NeQGcfW0@k2!Do`V(fKzxUCEi z^?3LZ@{|oo1m~s;^~^--3DHnL%=$I4`e;PeZ%C})UZ{m|rZ}}wJp(n{v35$Vc3P}9 zvJ!jGVLipQ;GGG46K35xIEVG~WA!J*>K8QE*CO!Q7gUnCl`-OisEWSg2>dr(Ygf4Q z_1W>SDZdQ7b6B5>I}tulxD&tLxz-g**LAMRYSmib>O4e(zpe3``P*(d8~(PqB)IsR zOz-fVy~)b^#viTtuRRjIZhYBZmIp%m?-NaH1~V`G>PT^O+W|2$0Wg zt2uCZ=!S0MNNKrkVulKNDA(OPfj6w1xCKvfizd2#yT#quPhc@>U<;d`>YM1vzBDc` zZ9TdEQaD>1;7oHXs?O=+zA4eg?YE}JJ=~~qihJ}X_Un2J4eM!9x#Dwmi+Np`a%w9R3_&Hs%?(Jj`MAW=p!Jk+JL-t6Bd zw2@A+`6~3wQZc0dpJ@<5NL(AHf!GDN*gbJelCXMf|34V@7RZ9yEId8K`;+c&xedUg zF}8rKIf3y{-M=AYkgWcs+u@e}8a@Z>)+NfD;+~|tzmnf695gW!`Q4v%0XvOJ^C@gk z8AX*s(6;Asb%C=%{K341HCNVebD(`{<#5@aNL|ORq$Z5ygqFjiwEstqq^8 zJu9`o7$HUO{pVOSKU1mJ%&je*IV~(58al(2p#vQ|GISbS=c+_oC#Nl~7*G2a?4PzA z=<6XQ@S@Xs&Zj+233Q5+(;0uBpi@YaJ%g0lZzbsWt9el-kJBM~$ZaIFBGjx9B0iM@qU?Wv|@3hd*dVI~sw3*bCF- zer}qx@y$kXv#KF&+vB=nJ7J?i(e_68BW2mTY4y@XM7G3xK>yuR0AWHm&26(kv~_9+ zsi*B=oQB3Agj?VPGt$0l96I7>w2}-6s@q@a5m8-kkb-Gli=J@;KDiD5+*cwU;R(Ps zRB8;-e8m7;U_VJ=pXf1334i8?&6L0`dT!OE`>$0xB@tnQ*gY=FNZ6w!S>pb98}u=g zuF^=S$#F1FM<`NB2rFpB)dd<1c>{Y6Uj>8)MRm**C`S9j7y_iM>f?yigDc?)U54ch zKF1m3+MzL~y*tLUf;o41&Cufd0U$BPRoJUM+KRL8L3IK6v^2j%*qjk6L)FBiqEQmy zYuZZ?vDP&E;hbxf*WFwg0D5ou;aLzkk zF*y!X17KoTfaz#+y|2Xr9M=C17ILq_Z4`or1QdW;ur<3vgbBywQ|Zvgn1_N4Uo&Jy zISiCYx9(}+0I9~|tOy&SF8zjwMnm6XzbzS>w+o)QBiHm^v;Cm)BsgW(aycR{bADHM7n z2gqa8L5e;A&UGzVME9ea)XD4tB=rE2dH_j1fTSKkQV$@h2at3TLaN{b6TGl>cYl+B zps_sgQm50R2s>=2!%&;Z`F0Rvk6Y81s1bd5l4D3f&Gj+VG~;E)5E-!Ew3|iE9$$wZ z!AyMwDmAVGN@?FEwIgqcj>N<*Gc@%#$VIy7!c@Dzu6>rW{YUl8Mqz(o8#lou!z6kd z!3I=_AejY{Ss(xy!= z0tu#-;?EsrD8#)gZQ4Bx_;{u}RcIv4Mrznd9c!vRDzwue?SzG70!)8+0 zOqw(!9y&Dh&32}EIM3ag(nD{@Hl`4RGA?~eVgL&+*!HeqNXAsyLzOg0`SMt5Eassv zB3Kx^0zO4JP+I{kXAtHfd-7iy>(C<3L3ZL1=5S7ehLg~S|LfvcawT>JTPz(Bzd|ge z=-q)%1hI6BkB#=F8Tv&EW-i1Pd`O2qPuxr!My|Xi&Xse8iZRA~&fS(2Ui*2Pa5Xm2 zz<9q_g5hq1p&c^jEpf)2nN}=F%7e@Y?s2?fQI)3G`Nw{Da%B7sV9wYB!VCD=Z5Fflpr z)64capEmO85k6J(={`O!>;K`QtKfix zA*I7UN{RH3qo;Jzr1;BC2tnR*2ZuRPI?A3yNGVDF~qZYvVJi zXiHNqSfb@%ZH!eIu8O?q9l%D&?#7lcph=bb%cbPIgy!xvNqJXN05L%68v|vtB<>_A zzsrav?uy6#EzUwBx=%@%dLz=@L8D=0DwsoFj55!)oCIaYN&}|H21h!dfdh6 z*nhCco6u#dG`&;0QPG$mp&P7sZpjcjs3^)$q!h-#u<>ryf$FlFBX@E6uC%_H!K{;r zOZWpG>nrsXdA8$tkHY#c>206n?L%)_=na=rE^J(7+C#Hs+^Z{>|FyAJ%GF51rpo27 zG=_1pjHK<9wD-aHS&b_zm)niCm4koN=$O_Qm?Lr|bGH=SE1jrN+)pM?t{nVkV}oR? z$jZ<40fh)(Ebff6YdV4isw(h-u&7}j#79_ir0OlY{M?Z*KlhBq8h!%S@KdmcF93tg z)I-;}yscjZb#{B0fd;8G(b5p!-!m>L@h8&~BQK8*^sGiT_aHv@c%xsjUsw>inki!x zM^sCS#3YYb1WSlX{!$XybAOEluZRPbgS3;H&Ip6^M$t>f)GAv*L? z-HVBieyRt-c0xC^G1t>BoN1a=X@Q#X; z6gpB+xf4Dx^fwKHdAxClBz*{9LRKT3S1)v<>&vuXO2dz2eIi+?b5CF0k{fB`)iz2V zTvwyJp~1-+s(DG=g$@AdFnSBy>S%N~M9N|=x9`Yl)s2o?SmNH(_mqD2UPAx@n1XC) ztfR^K=xi*ifphK=&qrx}8VzF(YFA=9v9*Q%FLCsZ=Imj1g(S%IA&V6tt=WIr+HVLK z7kq@9TDlK;)`PwloZV487muHBDL*S@oRFWrG5Jv`ke|IV`BAC~^0T+mm7h&g3o-qB z8%2I}t0oqDy;HLGRqol_IGVR)V!f5SW+vsNEuj+5Opv8npw13SRAO{eo=;AmtOO~C zf@C$gPQux+qUkiuf}>D;h-#=(1&%24|7kpjL=E%}utRkdX>lKLOZ@zQr(Xo#mZ-2_ zSW^VPk{lNw)Ixwzl1_?pF^Lm;O=slk{R^Qyi4mgX>-={v5`y)~F+|jR*cSbR;GeJc z5VAA$p=2F?THOw02`iu0VJjX(#pD`ngHC2>7=EB`PU|jw3grgmVvd>H;Y)Z7Wqk>M zp8@w2cB7lN(-3B#a?EJmsittGdueO`VCBS@57*I2SUIuuuv0m4-rt0Cmnjeavjzb4)F zP;okcoBd}f&>a4T=Xem9Han*X3Gr}hZMI&Dgm@^mHaouz3Gpy$ZT8p&t=kBo)RRw=qGrF?(!5Bqcucsrv}%co4S(BE*Ii zVIe+kL@ED{Dub^KXu{)N3-Cw;NxUx+Bk{UKNIc?pNLcFDNZmTtm4v$*Shprt7a6K9 zlH+xgq-u&(O+$GPpLm9u8?s${<04oQ~l8sC?ZzuG=>| zuV$Z!YIlUS?n!#EGWo9Y*t4&4RzoYqk4@+$(ZY*$8@rw*;llG+Tepko1>}2&@hfmc z26Cq$kuHz%E2M;V6s_x3D8+Ko!Vb=s&p(f<<{xU&d<-7@QoV{NFi?DFA?E8^XT~tE zhrj0n#suiNzK%nu#*-N?Y1Cc_zs@DZ8!41DEf+gqxmEZM%)k`qP7^H!!(GSo?gql= zy94(v;NFE%5X_fR95-p|*ps)K_?;NbUu0T&^Yl=lNDsZZ0C;p}rg=QY;lkT=Yy1K; z^a#?&Z;P$}OzWU-?RKu1*%$>vZYi3z%~KfBLtPKeu8U^wd^-goWj4NH;m240ANcFs zb+jq!Th-~>`d4X2hq_j`QIOFk_0KUsxHJ_5M$GWN>Wzm^5UDT$+WjUmQy@-&ZvI1(Ulz7Cg%nOHF zRUYhC{;R6opei3#Jxk>bw=ypfYE^mV1FGk#s@5wJ(8sA;dDXgILW1D291W8@+_Asm`4Ysvn*ATCHbUcZ;u=-6vC%ttdknOrM?Ob)n%k|it1lGUF#Me83G za(2x|k=A_sOBQ+sg|I(8r;-wLmv5YJyzg$`Jx~BU!Nf@k4dap+@cJKEXBz4N7P6xg zoX{AJEK3}gJ*M0lKUv_PigaPWtM645c^1`UX@9wo2&{~~zJXV;vT2<(tv&FUIZps` zBK=hWCfvS=9g^GaF$<#k6MW@Sw6@TTG9^<%yvX&w@_!&D(qCX7_Ea1x3U=NCB7bGtP>*DjA?xequ=?Zl9m#U=A8FZ z6Wo3ujMsJQ4x_?-k6K6PZoQ(6eqGflknY2`74y;>@2iIkc2%pkDPGq_cCl zx6CS!0j1T>=Ldn(;8Aa2vb_G_(Z*;|mN#%`Vl5oc_c(82(|Zq! zV*G^{4EmBkxHur{G=3^@2dW~r0_JmVO0o6|gCe;wFgo0|8orZ#u zEioFkobQ7N@Y$m(%<(T9*5|qf6k20SSGDud2y#8}`_g%&7B1hBA$iN|WR& zPNykI!^c^m{E-IP5~JQ4KVP)bM^w`%Q^8tEfY7uasnJ7-(XlZt&zfiS=SpFR-tP-- z?f{CnJtf)9{@BolY|%?L7M^2zn=%`n8q`*hEC2-OHAAq#U-C)eCDaAaUrPuO5}3C@ zAgI7t(N#J7M9d)Or%-u~DDp9|V&I&tH|@N6eye_z?{??jO~+|TrGO&ikX+=?Ua8If zm$ZN>iIoAY9jJlYeA%=<@LR{6b?}YD@|oP6oAywD4?#*3ji|ATF^$S~ik zJWqZm1UjOlaLp>u_4p}W{*z2zVTvWqI8j}c_lGIz7(^<;YIu+Hu zJgw}%;DJ;fwqx<-fX1*+z$=3}UjD+vu@}Avf9R?kGT%w?;TH`&_nN|UuoTy`s{@B4 z9d$2m?OJQ}+ht_03|vMkSU5g4zD63thgw!fGOz^@U$yu{4|vV&I&E$@bZKTgrZ(6y z`_*a1Wk3r)`HKn72<3&L3o5j^G#HBpT&)!c@i4gPss7Qc3!en{hQVQxuIhYMbd^8* z^TNJEwZ#Lk&xI(Bz`b+6APVj)2?suinCv~Fe-Jp#A(!-m2w@AU+6bO(hluW)8J+zl zje%?E|0TJ5#=s|Ge| zKMzmepoebt8rkb~YeV3p$ci_?nI04vc&Rfc^8_`+f9O%HAdKwY0VncDC*%Cyo|f_o z`@_jB$fpq3qSsxvd#Jr%Hv7{3#8|-I)OU?A(K9>dncL&9)G`23$JE{BxD(IMp6-U zLQj6{an2tib%&kLd-jGcq8VH`S^jz822A<0<}D)zoGf(9YQ=bADgk$bkBF|EVT2wZ zg2b@1QA!m~L;|&a*g2#UZsiMRm?;>9<5#r?VV;opzt^h?;3`!p@UqiimADuQFFVh> z*^PL|F$qJuC!hGjTN8r_pX9`7SV0?56UBXUq)16Ij$&!&wv1iQ(CogcW z#uh4VKbojoN(pfQQVmPdQu5~WAq@{N^C1Hml7?-x<6Gi&XRLA5)uBHz$F~$?)b@}Rq1EQw({qk{zL0p3?X+6LY?6QkFE4Bc3LioU{^7;Y7o74kIld^wH90tOZa+F-nSqmrzABh-zf9iAajVU6%!3_Y%cb5{ARd_M%8`5cBC&$Q`?q>dlB_FTC%m&Tv zJdX#Np{tx3cmyy`VWu-Lo;p63da*MXkDMYfdkn)P7=gu2Ef?mSVwH?LX#3F=6wdMC z)d*H%ew&3U|07J3)%cQ$-#TjA{&4;%=hk;)^Q-paipcqyJ7w;gnLu#Pg{rLp#viF= z-*@o~dht%iA%h6&xm?+s1CbrGW%%1tKL!uXgn5Bk3#&xY3J{4Kg)D`=kg&k{?LMUs zXdZ^0pSo{7+JMar1>oFRN_m3?m*C%Ma>lA^+6yZRtCf9H3Tvqddbj|k@xw}0d1WAl zVi&H=GT(7BaD%B2OIcf5b$s7D5zQ<9B=EP$Tn>EVC$WLEx`UHKn7?bCiz_fo$NzD> z&Hk$BciZq+eFyEdET8D#airPfdKH+I)4}XZ7I^1G+hdVEeU@ntfw@;+$0G1jJ)&ES z2#RjKNIjxkp|SWe?4s=~V3lM^;?f-cgqF&iYv)&~RV@6+V&gmC`%qyWcO^j9yTE7!HzKVlge8K&=+$vBCBll&naH+Fq zk3wyQveh`N;y>okP4|n!{)?MX<1AMRF9WndjZ?USngNHDs+>FV2vKh+yxy4_PaP6V z?d?p7r(W%*mJ7zTJV#7%X#KD^aG@TYRqZM4l2;N9oQtHIq(FPXNl7eq(iNOq$z4Pe z3u?vZ;L&+^IRUAHxM5ID&YF>scYBezxu6@F^bV4!7bECXG@%;O_s5jr!t1MUSDEXO ziF!gl`$gp?L$_Vs>{pQuLXq&M{ikHYK&bA%Ew+j;b*AH44<1O?ZBa>RYyykfFOHR; z5M{u$h2&TY+zJXEc;UDS`>?1#Psu--n@qIgg2#Ag~Q6RPfgVleyf+VFK-_O2l(4MU~vXshQ$U( z;-}nn_hfSVa9%f4?GZRbFftj=a(hIM&l;Jdr3`_cF#;yWs0^4G zxAV`)H2fKwa+mLJ@ix2qTKdBk9C{V56e3}Mh;3|`+l3bz_DxPd^yYR&@_&aAS=*%v z4(&#V&{sLv;a9Z>eb~ZZet~WeaQ60T){PkI7QBH*F`s_pe$~dO_>JpIKDC@r<{X$J z8t1rae@_p-O`QY2?FF^M^Bq(ev*tM$nP41Ov313>Xq>#T!As9V0a&vymO*+!L#5vzbkZ{W=XU3C8Ml;=b_E*FWib#tXv=d<6c0$fL;T~>F> zZXsZ*snCm3C*=&g*c8xaoKB{jzbF;TR6Gg7Jc*YrNag1xg?#}k5$Dj8_<;aLNU<3ZXOqaSiS;bNE`wJv%(*d$OJH+5dKNO zO6S_$MH#XP{~KvYavsWOeqn)IM;LdQ)F~Y2tJv4U7u+`i9+C2qp&R-db5<3pW<)$f zN}pSYoySxo{dIe(sCcWzcL)>n_D1ND+3K6k>yezN`{(wBjE~$1&50#)9({ z`lnc3j4U(s3e6i5;rykbAt_}2iPi;^4)5R!yb^ZBOr(&E4R0!PR?j@f{SleI-DM7_ zFIwcc!xXl;RMllR5Do|IjP!_F_=DVx)pTSHiNs#~MCs=+jP%$=89-sy;BGqf;9FB4=mvAq&g zL%=Yp>&zc23YX7n)PF_-d2fd>hj0aTCvZ#M`5xw9Hu08X9ciLOgjSVQIx%yjubdUA z6(1L;vQ|vjoNoUngG9=XXme@x7)h7FkWhx7G89~>&O?)GTSj`g9Ix~@_QUR{vY%}+ z9KnS6Hn3O_qn+O&99*sp0;$lHhYIJD#da|(InpuG zK60DuKU7d`X2#&ipvV9gTZ}hlbj)+!VCA7qEtAwL=VkY|)cu{ON=H&vm9XMLJUE4|y?+Qac1pQAZH>-H_!$)1x+CIaR%wZ(5!>*N&e_Xg5~uW!e5 zy8t%n=gAtu#{DuhSBlhIPTxpp*Y2Rn+|IR2Vm(Ov!K&2p_5XVQMBKi>a;QIp1d!vr zjtq1Q57Lv#nT?qnotb14t5(?;^*_F-g{fiJCW0^aMQeKn>!c@Bor$VhY*xC>_EF6` z7qx8gMl?ulUndQ>uvhY9Zb2MTQ4tDb@(>i=BVoN^L|4KyJ7bVxcN=M^*AK61&n+*H zzvRQh4-JGT>dvnp10UN1)1BX^#_X{6xC?#1^E12~_&7r3O-va|y8nYP4DGo&!wbhi__;L$Yg*&iSYwtW%j$WkmebZbbO z%$F=-4Z*DzbdJD(r}8rRoT~D$xiG*vu*i$O%EF$2VLQ7r-L7^MYBz1Bo3>igW^H%2 zZI*svk}8ojAAv6at?FSSX>vSny`QT><<5Vx9!Fh-6hMX^qt1>o0(B0bpJoAT zh>kq85OtQRynH@SRC#0B^6jdjLLDGhGhvIM6EechJE9zfyacTv6Y(Odl?if3WXjJAV@qoG`D%^P4;vK7owtH$1)NPiV;f^g2fAf(YK^ak z9Rt`r;6uQM75=ORe(Up={s4@aAe}EDX~i!|i%^j8TtDirWrIjFqB!EWvYnCr{`9r5 zSGV2-gP5}ydZ(4snADqIRy}y!TlgbAxZ)(7_LmkRANJakE<-2z2AD(J`Lq|S3J2;T z-K%HA?N=Sx8@UFRBAIHUX*yQh?ElVV&GIZ@!TIZE_+h!F2fT2sPhza}=E4!!N(cOG z2c`^&9`~Ta&M1IL^*-Vsr}(qt{;A-BzCLR!cZ}`FVfEcHg*YM;bb!gp-(4FN>23sJ zw}P-?!PiIPKLrUdchN`wp;W=G5!lMD!l?6#su@@(eAhPtR=C6&@&%6i=v02{%eY2H zx8S}4+{!eCe1jFRF#-E@p{^SPd!pr-eqkkyDQ}!R7f(5+{q{VNLbqQk#ZRCQ7B*Tj zR%aMJc9%ju?||L|*t2TzAx@~h2vi}xmF<0W4?rK*n4zoALzxBqs12IQt3j|(D zWX-i2*#TEPGuq?qfGmiFK%Z z!{q4cAw4rs~uBD=z;P`PZxg#&{?ZSHV7|tn)Ow{U!!M_4+nNH zz$kYj;>-4zXKpOj7T?g_cjFBg1Xf|D$6o7}!p^#N7~83*;qcbu!TfOq{wUZvQ}kdt z{Ry7J2MmiEcs}kvdxHUt&M;WxnBe@rqCfY+dVDso$%>G6r2w?Z9?reXK%zAp20Z$1mk% zaJ3WMi?T8#C{M}ZM73n(|wg(%=uuf^uA z@-TG0qGhQhAw&{O{Q;%WQvKuT(p8rDY38TVqm+vf8Q%R6x)|1Qt6Vu4#%cxNaU!*3z~X1q+w`r=CJAM!IGs)L8)}`^w*7odv8j zBeELv#p>9Io5w5h!?3?h>s>!1a{LgNF$>@$#qrz}h7nB1+TV>RxDfD}Ud&A+Cg@2c zrXX~LmSfk~Zz0K=!?Vs6T(4%&KS0mERqfNSt>+NnL!YnP;}=lm*z#EAE*b$A$NNb~ zSMLMVd!v)3P=hXLtR8gws(dWqASCuX3RghfLFZ}rB@58>ZwZaU-8Moq|6K*mbqokQ zMgFQ8KF+YPOf>c;#voJEU}$0Z-(cQ`9{Hn)!%3%1;EKg5LP9=uLau{kE~`aXkeDA= z3xI*ueyn^6@q0+XTt=4p9$JOIq|wX(P^X(3=@giUtoo{3^#gb#&FsBev3!gp)HQ!( z3q&(M!B>8QLtDF=L(B7AD~Gj!g)3SXRan@EqV<$I6lmX8fg@~dj@#CC^_$}&66asY zFy@Dx48Yb{M7uht&>%lsP0RY>%~^hvFf`)!;NHcAeO96u^YRvL4=j(|&s%(4bd6%OC#pW6hsp*qxx(qF~^t z^Rv#_1+m{Om105uv{~%OD5l$Qj)i)2?#8n$ZGwCizwnZnUzqw4q?^yCw_Xp2Yz~^^ z%X@g?s^K>%Fe#7WSm}5I#bM|*=7OyH6JE%`n*y&DD2bwA1?;DO&`x{(TRTt^2o7eEEgdRnas zLS6s$AivnTthZX6VeQqZjOZNg1$gt9+<)sy-<%UP#^Ln~`!bFOByKT#xfV>JbVZj7 zuHUV1M|iQ#SLF;`izkHY@;L*~{O#-hrpYgtTl1ZCKt;KDzf5`4+9Qu55R*R(2VPFy ze*?dF1og=8P0sH-f`<||-YV9h3D$4zze?ezw^bX(N~YF%h_&K7ZU4ba3IAHkUmC1# zcP9-1g#x>AjMlkGS?0Z!y58?RAwF%+Z2O&EE0ngr9-8MlD6t!4mR2(%h%Dg7m5H?i3}niGTKOe634Hv1NDiLoT_GhBE|uZqCg@O z3-?6f`u<4d@&JPm>4}3sg7$so7jp3Du7vT@P8G~YJb4ot2~3jouKGQW^Gt2gBQ}5Q z*1Nog&1$6K5(<=I0rtlAXx_Q4L5$wPV6QS{EO0)6!xnQ8jomUQcex@ABDA|68rEWZ zu>`m*0yni1&I9a5)^XR>Lk%Cw8?ZIUOfid0WwKSlqAm zgTd+y?g>{Y7$&)1pVCM-OpN=T`EL41ya4je&XOSl`F(ijq?@V+GMW~^Q*PN|py$>} z**GMylpQ(utMtGaSlEpA2}k}!rJJnv&BLtI9cmJVZdQdb3w6Y-R?qz}jCIe@))v@M z4s_xQ6}v6pMGSR)E1^`fpu=RTfhdI#a7=jh^`K<4{00w9z+@>0w3?O)eSR*Av+zEQ zQ0B{a&;TIMD8qh6p{)Q1p8({KRXJKmVU#U(-piDNR~q(WYEHxcWr0$zrOvt=Bnwxb z);fQvu{Zb9Kw3B@Cwt`@-p$6a(+)4al5_F8+K!_?g4y#_eWlTc1>XizqKQL+EfR#^3XtVK??n=J;=g)wZ7F z-w@c3nGE`sjwm0LKbdX`t|MkJ$$n?a0TIpNAn81$&3A@EBwW#)=lo@v5(~Kcy564K znirG1fXlXqxv`yBy~=YPJW1^qdPQ|6hMA-3`OZCVON-_0R`+ca))4Sc!LXeV!FxG! zAy(vkhcsQIifF~NFj^#Vsrh4{z?M(IySYu^X2-lTgWEa-<`9vA60({Nli6#h)NPGWtJ_}Q*AhqNADcZ{ySH{`G}uLkq}6?k&x zp=jQGbd)1jpOLhTB7#LF&^spV{O~aGsg*QRcM4ka>p!IQ#ph4hj$|bw2nIbI}mlA!V~JCWFgg8 zcEj|)p=6^~6Zs>QP^2%WOYW08K|pO<3;C>9!9nTq2)t@wKnq4X0Y#J^hh>BSAWlP1 zRdO1ljZ)_n$#bof^>W-L+)|$B92hG|9aD~lq)4#9kJFOkgv_hX1*7?B(v|!N3xfZh z=lXIwSXu{qIZw;8gez0B4_+lItay;e5=>s+N^;@%w=+jb;`x6)8gh7#3JVls}4&HJi z5QQHIOVItD{)z}e8BCY_2o1dtriGA4z3S2ZHKo`I!^FALpJ1fMVH z>W=ygi4Pha9epHuWN6?Knk%mZu2`c_p#`kU1#<;>HV4SwcAx{!VicY);YW-MpQO79i^JU=gD)of@AGAwE@^}pJg$0BBI|W~~0&rFY zYxr43++7GgG7sMak$>03<_{xUWdx%aVJ)l`6Bu}pT+|&c>;ln_VJ-{W20kh0Kd&Ux zxR54taTPKa-=CV+#~2N~OwWJb+XK|pB@-=-bV8s9_0}ZT>bJe{X9)=Kb^awGum1@~ z&gFNgYv-He>IU-%EST?hg=AQ7%2vEE;BUW60)Z=Ez(f6K9AK#HhMQ;~eHc52rmFrN zRqNNG06>&?q%>j2ZBmN5N7hVvH==Z!a-5J3Wid(iOATAcoHUPr7- zeLuDkJlY-$7haRxlJRLagE@v?;)Xym;>mB{WZ1LEO7PXwcz4cQ=*1~ggo(D(il-qV zwtt|_y%%qs!&$zuXcrpG!5tI!vvl*@If#3I-UA2R0AIRRasyjB`Y-N5R5=S^`eG6p zi)n*%wvKQ2V(&|OF#|!kZH@`mP8!{ZWEVwFGPw1yOi`(BfBD zNH8Yxc_Hu}!BVm7$$@Qv~wa|RbQ)$kqOc0W2(`Tsc>A^^N1Txmf4R~lhq%3i5t+O zk4lCDLq>3^xS_R@EWY8UYnKFC$@h>T7#Q|Fa5X1O?`~YJ2wSV7BlkaFSnf;PtcP+l z&c%fT75Wt(U`NN-l!5S)HPC2EnC2Wi&Xi|YFy#au^?s}C|A`l%amj$z5+ykNVL46Z z59|LMajz)#vxHKLQEwuqyQ36Uk_hLZ-(Dlk+6BT`Kb7@bGAVqBHCl+BVL0Kk z(ce`iPJvGKWvZcHsWh2v?vFL(P9r!x{vu5WnN6HYAQx5UwB#^S>tB$pu2*Nb$%%ho1a^89 zMPMy$=9Yx0gk|T00URE)CQ^O_sBtC6JT97gLmV*zB46PT^N!OOOpooOege|*%Y}&o z$uge<68`=`;1nDnLJX~S{cTno3g!sdzW&!J5V<09d8AL|(nxRW!PGZV1-~isyCQO- z#B;Ta#d8T~v`-^v042vSCCAh{3!hhxqMdK3%A4@p!rsN5`q*zc?p&!53MYhGXZ{)k z0M;)>Yhgz0t%h>IyQ~?fq8G3zj{l@#4DbCg(PyEiJ(2G_UX!~N5JP{8!?v|Om<-%u ze~xFAmkhfEdqwUPV<8<|Qn!<;|-4PL_FmzZrB+7q8`=o-cH zE~9adnrSXGtvbAO7Lf_Zz=TtrE;Ejf87B?JIdo9fxjEp)(Uq`aKRvepvtf`w_rW>` zN-{U;&jl#v+=DJjhzsAw#AM-|b**x3?-vwl#pD=B^8`^5wNAb(3U5fV91=oLrB0Tc z{s&3t`3{Mnb<*5)hAGO}?F9~t*rjUvlZZ^`93>S~K%dfFtiR4t6WmxxiFB-@Xq`>M zaw0q)QA3L|@Z&tClCMN*zH^hIUNv|jG%C(DW35-~JaY-@41TR*Xo$E&=TwqZ3GlF5OIbT-NS*PG3 z=7MVjABVWmQBfyVGCt50M15=mHq{pB_N}1g_%QowfKkZb>VL=rUn^!b7!b7?mU9`l z7HT5rl`?;RET7RtNZ=~`wG4r;SS&#%ed=@!{j7fo-s-Wq%;>Gi~wsZNTKg>*J{Ba@JRV6Y)500ZqvOY=l84zblx3 zWFhqFCFl^V81KgtjUUNOT+e21T$NYj_EQrbC7Td$qDAa*!L|b*oVcj)M?PB?73#!l zE;gDs?E_ELP2T|@`vBjZs23NW1QvmQ3zqTf6X&HriUNK`86@J*{C?mzoF@7m48pw5 z{~%Lg+qx_gG;ADE3&Rix0kBbN&zZn15F4ws5%2)S-f5ryY>HG9tr)Ed9&K0naPVkS zAlX;+-;5IYa-laed?7aafuHr)#qk4JfS(@`KexO}J{+{?idu*eVz!)-{{q4mkFU`d zBgkS_xmp)k$7#Qv!dE<<0R@AZ+2c$?5p**J-NYHXSUQ@@jz0Pa7Rn~I77IV4gx=WJVfFp6c zo^*ciu4!&YlH!V4mCnH7f?veUA=PKglFRm2%0B9*z1l0QwIGi!wqU+5;IAim^{mo) z7adEB{we?lil~nO+Mw6=3v)qq%J6ZZxIaz;>8cbTjmpzr**E=@Re5E?aMo_bghwxg zHrWAO_R4HcvIWHCfBs#x$>Uh24Z1R2c=}i5^2PqL`Vipp+y9_ziC+Cruu(t=8%yTn zCkM9}NIsTDcVy`HTyY?B_L_xcOex8_{Zr*{d`ByO25GweFGqe}Dh0-Me4Rqa2W{XG z!ETT}zWSfn)yv!zTn-20YOQz_%VrOTgVD6x(YF}$ulDRF{>7~={fnlJ3;yhhsfN9D z9%?$T91u4ZJWnNjM}V+ayb=9EEm!+Pi+t`D)7?)nVVsi7*HYEv7UxTLOlEYP| zuY4yOk05BEYxfqJDkS7X_WaYoHen8miVVJSEn(l)ggU=#PRmDHWL`}7wuq5SH79HE6>cpJ7M9u@LU?}#{=U~~qMZy1zCkL`r@~SM<_(i0d$%s)dNrhgr{BO-U#=t!~ZKq3s<9)uyXD&k)zDRa8iHV8cw9Ckh!Uo&% zfDoV}{J_iilaFKmOxQ&Go#XX9qyn!MIbsD%S`So%9mMUj$2qVO+%N~plD{4gb7sB8 zxJ2#Q<#>sA{2I%sj%n0L$00nR<2wAHV{glj=f*oO#7<9Qr;npkwxumD63fW;m(GK` z{ln(oig^oK{SuN{@K{t%5d$W#L{j7`-&+7M4qGuNta@6UvC@ZB=@a-tKl9)PEPzih zizF$`!fsI+z`YId`Efgecu32*d2}1`^{zt!!a>};GC@fh>Hzxrksrd(m8Q-8J=+YH z7oj(gR=giSuJs8|bt#;3FXO&)z<+Ow~+bsn#_^5z5LGJu8yykQK9NiN@%MLH^cP_e>+@Dr56 zf!-QV;W;sU1_}@&pp{&T=CIBV)77BRl0OAPOk3l8ppc8j*riCw1y7Nqr{6)U zuPP!jy^2=#G?rsP#foA30Up!f!6K|*V9Pi^+<^t2&>YiBi4W+B+^(uS5C0J}r=gl9 z)!k-k9m0%V-WtDd2`5xvY&^J!%o(I`pN6CYd$5xPK=Wo z=s4#50>}i(1k+l{&#_vre+hq_bJweN+vR`fx{Z$YGN%e-kMveS0_P$<7KL5rbmbd1 z>sc=BME}M*wa$_v)kdwnS2^48>nf?1_JO*%6*ur2);if!gH!%XJ+zefAv(VwhEs;P z?TyQZEAIIMOmSS(o_QWaHA1&z=X(|g&&&KnEREBnEC^I#YKoSUy-UI~uPV%h-4y7+ zST95YE@DY=uquhdFpal6*||_!D6C?tvwf`^ zZo^+W{3^$h-xU!oS?T_f0oPSP(e zC#HWmR4|=SOusq)i>N<@E7d8BpU%Xg92|4y>Ju6Ub!rOlG(zn!!Ke8yWlS>MvWsuH z00FWW27E^7h6|0*zzcA!beK2y#-ZN8HGFJ`$993s`Iv;qq(Cb6Y}<3s*2HZk?IEIg zSr=Fw8N{AwD*Kj_1k`9V_2|2q;Y9l#{dMW+yRl2Bz&Q7$L171;HQ4V=9FNh59!~+r zIS`4g)vby=%-0uUObS<6dZhb9L-B!4Y#WDU^t3DReMyK!z9AcH@Gc-$S?B8P8jQbq zCxdqu5m8_rHjOOoDI9|K3p*!#6eC_IDcGAeLHI?m+9wYuXYpa-Ih7=0f+RYBeixCL z5^}TjFN$Rrxxasx-xZPWU>%lNAz=LZam2v5JzSj7!`s*iBqI%*r5I_N+sb73_a6Kv z8V7hLf9a>*AKL-WbG4z?zhxcaN1m^j*Z>5c{$`oX`MBld7^m6kR}g?-mZ>e_3vi-# zCT9t*02}FisXrH_%nUdCVOsLHTCc0)HD#h|Oti#vNAppQdpBx&3rk)G^5FKsOmh34 zW*Y%(d9L5!XO6a;j!j^wiTx*?l^?|RK$YR}Bui|-e(|hovEOHv`K{07{%aMl{JC-x z+>PUGH0p2-4NpBx{{UJRLYL+2Lwo;+vF`wnve@3=K#%~&4T6e_5ET^^grEWekt`70 zXacdISWxa&B6h@Gz=CYptYlqRV?j|-Q7qV_D1@FUHv!wl3RhH$g;`ex3jr+b|9#Jy zZwqkm|Ht!?@7rnL%$d{X%$YNMFAewchR5XCUM+yoZwB{{=8ilrUB3(CYjCfozs37c zfxpw;0{h_k607Z46wTbKiLu~36r>I4HhgKHwV0l>ta(1gdh5-(fGlBu)@`ZXPMu%) zQ-yJ!VyD>#%{92|0AKFl*}y=5`--}jE#lb~by7oVDU`m&g$cnXCn3&t_Hw*QfMe=MPTk!oj@WRUvetl|T~2KT+dFNr7^#mR zk(H5nH;M@+q!&d|+#opKwKr|`{st?V-u_9xLA~;;Eg8>$f3pF?<(=*%GPL9|V zzT@AHkgO2oI2F?!%XP4v+;00BOaTUCo_^9AEjy*LioMp;l|NEBfsBNQsXK2(4phMa zNCW>7QmX)#S1QRzbL^6+G0ehhG}U`WkZ#NzweN&>0xRg3G`QSP<<#IO*bGk%n^i0` zIDoIYLu-+4-kDBbQ(R{r9nTkRz8BY+lLzktMN;jWZH|$57$uA6bMvNZ3u*x}?yCRD z3sfw&{%#Uzak%>0F$eyhx+uPyJ-0WmCl9niKW3}u_DcvQn*mXjMWnEsz*|} zMczmUDPV>;xfF106q06~H*#K%X6HNEmm=HDsFeXhlf))L@qO|G$LOegGMLOuY=Yo? zTHC7gGJ4&w(6{DNq+I#5I$>05E?U8HjeB3$#OqRtwdN0-cp(!tkaJRr-e%rMDg}6< zR1wEid;-WQQI#3<^3m(H(X9X!9a6EjFRORwW#RH|ghx3C;ZZI^c(U0%RPJtHlP{0z zJb46Mcu1X!%IYss-_-&Z?$}y_JevDxKDPjpyhxc=8By`D$H|Mf>bkQpN}KU9m_;SV z8WAuJL7_~ORf7!J7Bp#p`*=sb*>pg6uIWDr^V(EQu0fRWVQ*rmIYtv}m`L)UOJ=ql zQ5ND4p>uzCO>xOel(hX6`zuc;O~+mZQ8H=^RAPU9p z-Nv|hT=TT2kq3NZjU|-UW;OE>O>T^P;X@M$E$mDE(_7g{HO3Y+&#+8o6Xi-0sYipw zC(OXtonDXfMvxSJmMz;t9RAg)3Iw3l__8n1I~{~Sf zM|?Wi%{@o%2l4JA;k>26|Kn})A=gUdhX+3V8<%^sW)$9j&;#cjdZfDfIP8s)go)n zjVJ<8tTq*V0b@G(rX*vsIL?ir;8ajPPHM?z5>OVSGfBoPguH=QEf`PpJR(fP4k#Pal<@ zvVZPHtzo_%bb$NehC1+zgnL*+QUhkb>d#o~Z2L@?85#F?w4IYq(9U@Ewu>4}A{6G} z?iT*`-pEWw2q}$B%rA{h?H=zUi}zX<5kjLOgFQTJd1p{(6YWspjc~R)qOAbQ5BiqH zCZ=(wV65+A5Sb*=TmEKE8vy`8Yxx!x+aDkm!P2MI0^9*pu0@VTLO^Utf0!~MHN64k z=qyVItKvCm0VhD;L>yIm7O{`S#k6y}&NNdNbmX9UM)1k|RgruU4%D?-vWO6PV7&-5 z!&$5a&QUD?NzF64Y1P7aOu+`8<%R9N+4OEBJ?24S{5o2GVRPS}5lPM$`JdpEfHupI zkTDxqNR0QNbJ&2pDk5;Vr*HlviN0G|3V02FE{EV7;G-|TKBg%Lk*qxm4QBN2aqtHPG> zSyg9MY}Td#nZy_RmzNW%KlY6h(-#g%KtbqD0o@;l)1-osOP{G=-FkF7%YPb}pQ7|zL;uC5X=o57&Ku|h>-0XI^s1S7}Gz4Y}`#JaMOtm6aj0Ns^0(W=gZcqzY6fmp+ zmxUk}V$vBAnYo5o`{3p*?5@m57J}9lHu!kRC)R;NI(eR#X9qoXLCl+}sF71Gptrr* zRtmr56cQXEhM4tO+i?Rm;X5|j)x+7S9wwr}o%88lBn!>vhJ0TKK-fL&?VSxS@)l>%R@LP)W=z43p7!#27?AgyT2 zrf!j@+*SX=5Agnp;QgGlEq_RxRj*32?D_zdbIrRpogwrQx6?V!;Ug`neo|dTX0RP7 zIM;O6eqIL~*jm7W7S{=!ARGXlFfN`82ewyxZLyn)Wm&w@1GVBuLwL{~N7`X$K7$?t zWIYZ(O$_Sf>jkUj@S|LVc{bR;0Y64|QIU7^hw%;jiW2U9wAksuXmbku?~~m-0elpp z=){SEZlb{Ma-iT0oEmT(r?Og+M&z~6{y0cJmM4q{DkDx_S5tF9dHA%NuMs~tzA^1{ zioePjf#H;8?;cz-6BA7puh<<%7e}7h#m=?iLWhJ<3L~&eDXm1OFRkYJ45Y zS35MbI97$}2mbeEkQhI_X8>piQAk!Wl7GTQIZ*QUXVc^#ZhnC0AR2E}oqjmqubC-e z@%NXd49M^WD4$rtks?QGp6@UelZAYo~!hY1a4;;QdPiKoGg8I#%mWK`hxV z2zc~~N+rAX-7~3fP0mGYT)b%$Ko=|yczaGVEp{kyTH8#vhheJjB<;=8_An(f6YiM- zfTScclWwiQx$h|Ih-(w;alzt^xl225PT;o1h6?v&{4cKuR$hqF>71P``ihTpR!!JE zAvovboK+*O&Xj2a=gcbNC+RH8oL&C=e&!51QA*w3i~lh=1aQb*MYfZ~Blk?PJW!nx zt#H>>S&rw+(=x0xv9@p4pc46>Wk_=Qi|yePUq7rUwlm4s)7%Rw2u6y+T1v6>2%J5^ zG19p(R6_f!W#RY%D5ERB702SYIZhZ72kx&WAZ7_R%Dr>7FqF~ealZ~ckJ%N!?PuU{ zcHVc%mYhGk);Pgx*uaU8VA)QxeIe3+S1H9hOL7NApiooip+fEGKUsU}KQfBTMZZAA zMbRVA*-P6HCM*51iVoL^2!9n^8~_Mh*z8S@-jVMPJ%UuhVw|*Hw;~U}%->3}w*pQ= z-1!h%I8n6@s> zPvQ%qgD$N#U9>X+B&;_ogf>kFoKTZs#V2 z=9)o^;O$usx`W^2OxXcD1|4)ZK-Jl84tw`>6&&$;SGS8Lu+yGoXb!$q{#b*7V7)=* z028(y^WyT|VFiHT#%7(~3dm%dfjP?~g-(3uS<5i7#thW7AsCS=&@n*;9~5XVM`{gP zrpr4Y#F`_N6y^NE&$x>X_6Dr44nR=47T}|fv1IRf^uZs|mOanQZOm+5fAI)foVIlupDUE+vvgiiit$_P&#U7 z9RW0Dyr+34+X?tCkxQW>MftFEP5|x5{+Epi(TU$X9CP8QBF`aHi zOypWPx{p?nBpO9gEaG_MiTFaeXMBjcO>zJmK>$({f>>A>j@P)%Kxxulbw7RpRUOm8 zyzPQoRrFLyHy=bK-FKCZ7(nweSIP)YxVRqg3{5zA=dsDqgxzdtLii~A=fgjT@d;s5 z+G*ZV#&}>!v<%@1f5fF~{%_EZp!H!tIcTlxLWt1hvBD%Jrt|?$?I+}EN2@XFoa_`q zt0{^HQ_V*K?myrdAGTrTrUbU&(6bY73}Itda?jobaWIKnVeNzb$z4Kt-S{`L>#KDM zD5- z===&Fb}7vWCFb@>08$N*Up&Rs07HYg%_pIp?2pBs?xJv(pf9=*m%ab~gv!B>rO0)1 zYuMP1XQ6cN*xlas*dpClsPf>sZ1k$nbgYJ{j*!-mh5C#w8(D-m-7fF-Okc`(Aj&E9 z$FHanZSi}vL)RB!E)*Zp5_-oNt5j=({}c3PLTRMB4jsc>!YDl&M?0VNWbo07n9ekxZQ&~M!L zdRcf`w@v(}<23$<`PXxuU7kRcCg^~TM$vu0NS=g0djNeR!^ks3GVF<*3CsvT)vL%6-Tg{xm;HYvy)(w8e^X>M zEg`k$6p;$PHzq9grGxL@dPH?g*n6lG%HBu08#_#NJq%f}U!x`MnJ@ZcX9JcA^N*(7d zDiRQmK6uMGm+u-*w@kr$oyrS=9kQF@{XwStOpqgVVhF~_)N$sUsp3qRk+$(-o)?m! zhg^H+i&#*U`2G7#lyEjRlKls~MBRbZo#^tN;bAah#M2#OF1`p>COGH$P6X;7&rZrl zu*EkkXOG*T_Tnr*QqW4uk4$(UhOv1t2%1EgQc-)ns&V;=IeOoXM40{OKUZ8-gN?61@wtlP*( z(3Tj?lp9_j5Er-~-()WC14j_1Ek+s;ddZNkj~YsCo43Mwa`@HP4EzSWuJQs zy*a+#7Hr?3-Ccj|+t2sd&&g95kq%)sI7hi z{w*FYs?1oT1*OzQ3O1f_pKq4=055J&?HmL8m$lEP6r6yaOV%Ua97E_O5MAkJ&c`jmzj6Z{ywC#NyS_-jda zkf!gBOD$emn)VJbNN9*cpWT#4U#`f!(L5;R;ls9%AajigY62E8vT4R9NN~unF;gkAe!nA~UzH(N?;{Qp`n-hba&&t$iRZ}$|z9&4>hu42UP&ZnO|8~qhS%(u8B z5r{B|{oxqQCz`-0aAVNdlE_2j@ZfOFYVDjXJ?3n(fX;{lmx5nLf39MGC@IMmxt8t) zIGUKUtD*SpY>xLL{W1c*PMeLi)h0(1u%4KbXF4 zeQZu=TslMsKMPCdY=CJEj;T|l2yWWeX0<0Q?@;&V3ecPxOZi`X1sE0i2dY|`=PQu@ zuUl~se4h;GU{KhZoe2a}bGa2p}4nEtB-y;Nt*O`YV>Zpfspc`UA zv<=q}QDpOcQ;D*6Ul5ytMbNLt7ku2@fS{#sM-Lp0m53``?E*)Sk4!6xeE)HcE$Qs= z%Z_w5s4L7s4!VEiBp9>~Zwjz7kjquM#)agHuxvq+8}6$CI8zDxoGJi?VgP}iT*7KE zkLsdI&|mI(SbC!lEk`{W;%&HnO$|M7KiYdzKe7HVU}hTaCI_ZnrFMaPKTrVJ1wh>y za}B^BrzCL@@i+Vx0Z&Vg>}NZcrM=|g`9#KXnL#V&0|xjER;gIEK$DcED2L*85Bq{h zbrK4g#kg)3U%n0a8{qeP2m$!61^xz*R%_PF%=<3p0>(za)!iyimHFa0XSb@>+@MX- z^^L3FCH$7hU5q39Dn8EuIAJg9z|Xw#r5#o(rbBQQ?5CMFYgp6sIF-Js4kk-vO2>lI zlRem_)SKiz6STi6-gBWQkoVA67rcjUVtn1FqlC;v~g7ll-7y&DdBs zU@Q|j9uDSIMAUYEV|)_1U~KFl4l(0jl3rwe_P@sa_N)Kj@%BcM|1sYDhxZvTCdx6+ z|KG>E80^3`Hdf%wmmQpkAjlYxND^{NFBXcGV)&&#%ut%-l95Nm2;8u#C9Y5@dL4&- z67gOVjv%G~4s|c`4ax&*%{Tu5Y89*ja$ST&Bb~|$|MrbJD|q{$9G7ofb3>NzGqBhd zM-qPrC=T{Ta5&u8gXB^*17h0E9KlK69kdffG~blU@3QdEh*0OhA4ca+VD%lb%4o2T zP?!9N2n{60a%4YtJHcPk+CN9OeqY%wxgZ zy&oAUe)FC5di7KQ}d6Q+6Y(Hi5G)BQ&E`Z--gBbc9+k{$(6#lz3!oJqa*bQ zGZUW)Q8w)}IN5{9(My~V=9!Vl9>oT4a9VBlq@!pjL&oT}?nR|T_f!lza3~_!C+fY0 z#q<3?V&zv_czylN18M0zbY_~E>K=%2cP^h{g`|@>AA&GyCD`#_omUYKuEzHyj1IqP zjs)0ZBe2C%zyllcZS)>)GN;`HW!8!41dVdXr@Ddi)9}38yaG5+zUTmkX2Fmkp};UP_78oFD^vM zx@Y0u#kh8&7la$l(O-*b8V|4m`8S&T*30kFYNDx~i#phs5*bfPHe-Wi_hV7sA4ewe zPP`W*Ak)ug*^lW;Qvp!RQ`f#NxX-|=p)?(k<~EtJN#xA0*dJii0Y?aMm|}*m#7h}D zr24W<$!We*q!KhaIGhy?_|RRo0!8*G4WF5xDILTS>^`=aCJ)^xpK8LDqoPzB3^Y<82mXRju)#j(rIXkQ=))RSb=m`%*j!5E$?anwKa{ zt|Cm1pTPC>0p;ngq)BsM20~@v16=8K=XgPuKd0(rcj$FODh)?`)AxrDf(=BL|Ah@5 zR1l1Fup#)lOn3Qz!3Lj*0bc>J!TX7W4fL8^@I!Lk$wANIpbM@7A~=-gAVKDy<0+6V8^~1y$9;&A-^=zx{Mq5*6!^N{mHCFVcLc(H@otIc;VHa29pa)z&%um zlK2I3GVsjnoNEDbtXa$m+I0+|olYFtg6-DRJGEnVC#=iIh|8>Wn*GYJ$yJ{tS68;QcLqGzWNr&MiVRC2TcsTlS z<%25<(+pL*@|h2BC*vQFxw`}BU1_$4p_@W-by?(kQ9ofQcbQY3O%WUuD98GjM60^- z2TDVvZZl6j!(+_|T^knn+Y`#dFL&ck0z?9Y(`v@9h(vKbAtE8)ZHQ~c>u79^s{q6? z792T)P!ME@T@rsKy&|`{az0ut!X+6PvhdIn8yhdj9ePaCM&s)ypiaAHf01IC2J+=a>IkZSk4IgBoLzJduG0WhSg*G3Bf&u z?wNm~diWP_^pMkA$(>SnA#74&GtLy(Jbsib_9b#F_l&|>r#lKN_qf30r(agNM-JFl zA+8SccyhrVS}2`pRfRfYlZefeOzzic$fn9YBm{TWbV(O_2+3*FXseZTQHh@0u^S|l zE|2c2f$}a=B{T-_=usCI?8t(}nlPB3qy7u#%W`Ktqe^~0|f{3;KSBMy1Am6!FP1i0cy;Mcj#1E0heJAU~HmQMH; z?w>p>L_*)2kC8E!G5k*1Tv3aD=l!8Pi+|n$h#n$NemxH2`8XIn$IkX%!Kx&$H2h6zk3Zcr{y;ZX(*^_k6WZW(?7PmLe4tdpy=Sz6 zLpA?-t}qeaPf=F*mmeymnKy_!0+38?MZNk(7t?2VolKJo%oW}hl9Bp{io z+f9K@0)=hYWC`}(m|r^Rwwy_gTt^**B9hfIX@??APe7mf?3&qkr$2xf=V#?64A;E( zIN%cv^4w}9^{HoT+RDDd)#~6Kh^)Wyn-SyE)A36Hig^!^X8ds=&1qQ>mGB&f~rS{(%WEE!DSGulBJRxPbv9mW^|c1C90dwgo5_CyS8#=e;Q@ZU;Cwo^nT4AlSt&1dW+)sVS@>r{O&&v8Rz@7;^spc35+@9=>>Z~N zuk14?6|WqLS6?~4G5X3;PtaGwVyeCpLe=_;P0E*M;}vr~pD9tj@#Le+*(Ka(C(muB z@*NrAYBN<|>dlS%QfHn+5gGgA`ZC`3 z51oIf8JPMNl{>{i1p>*+cSJD;&%f$^(Jaj6@=TcLfl~PVTJv?^lw?#E{a^V1_^lV3_-S&TIzm*AH>h$OAearK7 zF&R1x!9_3x7v&_%%W;vK&_Rm0=#mKiX{Xt}TcPvO!{C;YrKA({FTN|yC|g8*p_(Qk z9?~T1<4(mh%p)j^LcD{A&E2KV2w^n|eX+EP`wypa-j@ocH3`9`^3KI61>_0oH3&|;I2WGe67ad7g9EEVEx5*khAy{dVnR`csaG9Tk1ce%N zw<({OL@pJoZW7{l3biuNu(in2*=%{Xw#;|ia&##fuetX$DOAVzo3#+%lbyCo?)R;}*@}dom-38RImA?>0l_m$~X{ph9#h#hkeW@B7{Y zD9D>}{~y{yFtL$@`eZFa*FWcuc_BqEsAGFWA?X${0Z?{jMeO_muSK8;L_IbX2mfGiV`#jw~ zPqojU_SwxoJKJYRJjwCA!94{xxAKOkwLv9`09wco;S0fpb*Zz?8}YGb0{=ic#S@8e30=863yG40NGb7?I5)Ep;>_9Txj7r#l84x47PEmm@(H=KC*}CB>Vnuy z0%y2<*}QnsqJlR9a)?|205*<|JqFQb%ktsOr(-`IFdS-3N%-Gz561d&HDE5(H8R@s zZ+w$JSh7Kzyx)t9!^SgPawU)>w|lnxH?|*xjR>-^!@tFy*AkNe1rBQE$7MSbud8<@ zPbE1mBEoy^a2#feca``I#Z`!Crw7wEnkP|3_8qG@UZ6I^@V$r+0Q1k)-*Zh{u@?J= z(rvwg(e?_~#1BsTn}OPMN(w*lJ&!O(2UZMf;r}^sYYXfj25xQX@?X$6v?b!a70-3I zADR=70%u?RPYP$b)#9n^N~T{iinp)FN4$<3IOWh!6u>P4=f@VEW zU4NG7!VMa?7-i|(w^#lQ=5w>D4Eb2=!z@-GKOReX?3pJ`y4uu* zC|Xk3R2msy?+$iJ`!vn^Z9CB?a22-DGe5w*pATc61iAXA7Z@WAblc2&z9M+zU~1<} z&&C{UdM#dU>9<&fox3g}EXev69yGbLi>VhdHJba^y3}m7N4Gq6yeh`jm5~R-nei%I zJAh+n#W_6rD9wFCM3NgY61?&OCshZb2AT|QMUFFora&!z@n7t0WaCTs@AIXR{L)B# z2`d2QeZ5)!6Z|QO%<1N0Jtqp)2`;+EJF_EM*xQs6GtN_JH@cC;iCm5C2m@)wu|k7$XaT@qO?IdU-M=R~>pR7Cx#2lY&0pckBd%U%3= z3WU>8+fx_j!2G3*z|Z3(Iyl2k7-c)bRq1;YC6TfmNe?V0Q*-%So88`>2;%Q_s!2N4 z7g>-$;evXcBNKk;U&yL@#39@F0xnfRkME)*4;juQxIDp&cYHtbQ5ZMKhBizOp}TF< zx_dM_>Z#*O)HI&GGZETQcN4y{q#S?T!`H?b2As@#$vOIb15eBEWWN~!)tg~QY%Jb( zvTP|TiZFNUv|1N}Ok@8_;t!(0ng5`wp}~B> z>+5)I)wW??S|j^D5<&_#@b&OA$#u_o1ML8`gFemBqf{l5!)?EpU<2+f2ckRjnv+27BSmS6rPqdWJY zx~J|ZPWE_qXQ>5||3s?$omMs=$J_F@K6a=)M7|sW;k=PyeTG-p)+0CGT}w)|n9Pz7 zq)IYOiM^7Y_mleuWDdJTJLk^qTtYh65;S5~gWzIE65W9Zz})hDk8XLjMp_c{^u-&| zlQ`f3S)yUEh^Hl|Pb~fIdp~un)%J&n}JJJjUu2(EUWO@gRIq3SHm^^ozM@ zoG6}WL&+Q27OFrytYF(6u?fVuksvzp0LktNWH3aANpK|2?fY^1My%pNSB~w+Gn1R> zm8;k#QO)+6i2Z=~)QQQ7Ab6dL*w2);O_k)7Vc)urW`o~ehg>3E%_g9_?GdUQvSck!yq8$l@)x)`L4NN`qqZA*}5%%E-+hT+y8guj; zI})*umTP5~k!w*6uQNHwV0-oXj8%d7_ob<6b>>UFIR8ZF>)H8!(s?dxK*KfcIX4Hj z=kQ|p*RZ)?*2=9)&`aSt1dsCje$VLclWX_x?iuXvB_pJ}^=1;jA=>h|q_#W?9n((N zoAcNOe5IZ3^eNiuz4cA3(?rXJ!!u&9JZ(0^Vms~gl>b*`SRRf?w0F;Jhq)=aqBP_x z&59*9BV-r^5*U4GDAIYmkP{lRBys_qq0buQZFyEXu9F&iG2p@B0TAngyWIYR%;8W! zaTBWVp!m5JHRiS!^281EdqT|H={m7uRib=qsD664*hG$1&mnZeYjc2pTKVqKt@zP2EDwLF4SNz7bPo^9 zgCzHzN)6_tJ=l4>4vY$Rpa9Bv!(veIEW_uZOd&ATnMgHXkXukE#Fif}5O>8+!aKj# z6j+6ZF&E+f+v9pFI*r3;2>D@CMfUenh+^-WJ!uLmERKIu{}LDcEyfA$%`}b zzw$?_>bULD!{rvwpF-DnFIvP+1rpBZDF;X8U^x}+fA+;sXAU0%YQPo{E?bR7!JPQ?=Hk^^{+>FU5@{?S40bG3IEUxH#!=OA z>1nP3SX9YA;Bt|5N&B82ri zq~hvr#aWR3{s6Fic=(TkHRda9)KQb3hh{LUfVuk>h*3I}De>93!1g5QX`Ea%YX|Ohc%&GdL0mhd0{!28lOv70%3}=_$A%-*B z(Q2Im=(@r&oYk5^EF*@qT5C9~HzyzsR8Mf2O8^U~1^d90XxDqVqaWZrJl^9txYA?} zm((WHKA8)9Am43^ZO|g;v*9pRe`3SZm@MbV@fYY0j$j^}ru}QL`-|8=VrnRv%Ab%u zW0-nlGL=8=-n#N_=WlZUWxWNrir)gaX5rQ~Q6pl7A zv@t-Me{PvpuhPVUlK2lvL}>0{W09~;Y#B{kO7ua8&SyiQ2I(FTLVO}$k~o)ZO+Vy% zR?4N`Ajkq3xauxww5Tq74v&`A zWiQ~7U0wDv9<8d&Uc=*n>asW73yWG;7rzBZvzAWnr;vr(&)|XD&*OpGFXDmPui$~& zwRoWR0JG(=zlcNOklukcvmTrPzXoWYZpw!`=`SKG@?82$ zFfts<(O-gz;ZUCZYBl!T&1m{w%4lymx>geJrL4uTKJshS7`$$0Jo4x$xQ<1QzIMUu zYAsHE0l#)3L%{YlMumYtiw6ci9}f)tB|I?jSMk8WU&jLje^Up(DBdAyPxS=%;P#-V zp3s0I*LL*KMvC~oe;?|exw<<(6U{y0tIdhCuE>7Do3%Qzsgzg1CB&OZ4h5LpKT#Z7 zNJVfigDk8BU3(*MNuMLL*k3c~Jhdg5 znlpXchaD%lT#+DsK5(c2{GOd~SC53k$;~9dp$8O6vZluE*c}pBu&ouS)-M;Y1RL0x~ss&4bkwW*Cq==o0JAd}J)9k_%B`hj~Fhh9pcE z?0l&U9U2~)(lK&oCtea0hR6rYKLa8WmKT6SjJD94CbqzSF;2Thm$Ty(-YepNCWb{% z?HByM1=YICn^@CbbsBUM$gk$&nrwIIP-yL*=0=RJ2#P=6!0k?i_bJ|xThmDxlUh6h zGnaW0OvqFB9ngKraQu$B;Aj9K+kTq(7X3y+8_ql-ZUG5)mtn1{J|63%<(tvdgWRFs z0G>CZ%4i!Hr~yuD9@zVm!uRs--yXr|e9RnvYE|xMY zMb-5&tdV)(RAJ!msx@7>;H~cqi(@@-MlFuV1v!JwifCgn_SmrFWE%b_$PZx|hNt{~ z3D$ge5`lFj*Hf7Qa-zjvqGAX*;pmo#A=}m$pBkF+KhKE zF6pw}F!SukiH?dxrhJQnVxbgO;w>#fbQ+oJI;dq%bB7flV1~pz;`p4YYKJ zCbz~%qamW4QW&8KDwK!N2?@(Qynul4frXNE1b%PoLO@7oOo1hx4VWX0XD`&;@g`Ao zIv7aoF)%{KmLhj30z3uZ$ziv@J6gKU3H|{)O=@F@s?qP%=DSsvb*pyaV3?3WTm>5`OQ2 zaI~E1A|zpkDGP#AJA!V!NC-~N2ai4jZxWSHZ#BT=^^}y-ZWEd-uf{mDct@m$c=R8H zw@q2-h`Z_lDU~!4xI;VgF&7aIZMa9=_?5rx+6n&h4e~54O+Zv(Pq>jN6M7rT*!+=U zKUg2l4g~A-!oxboo*?yHtdt-5XXm?eVYk%=9fi#lZk&|Xwic0pF)4uzpQs2(#4;#~EZpYWE(3O3@~ zK%pOMi9*vb{jsO{QPs7~316TZw-I2F1c9TMVpTAsFu}qo-v>x|5$=H=;VqtJWE#W6 zS9B~6@6oZZf^j|e8j9hg7z@PK7C4e|0&0*5U_p+$Vt42}ro&4zX;zj*P?!G6y8+FNO2!*Q@Knu7rEW==HU64NB;k3f>8)mBrX9aVSnz6 z~0 z;3)=XUVek*;Xlw(-b+2SI&L(+1`y8*v?w?~hpi&@3{@>d*P#conW_{~qM3hvt_80| zT3X*NnGTb_pM(yY_fJZ@u#mJF+svL&UyRVLw={BgzNjCv{w$4zxKuWuKTm<{^yVOZ zM8%v}#atbS4ymQ2+vXQ^?sp(FHg?r|jf1%$a9NOrYRPPRgy!m_MjruvOw`9XeU$5i zOuR8vkH2Uz+8s}CqyVVyXq%PzHh4W1BhO+iI-q(M!6Z97IBm8ILLN@bfH z=svPCfO;k2nS7{o^L^LQw^Y}JxR4&{sPDoIqasNi6u%u`H{nN!S?;Ruu;yC9uR9F~ zt{1Z&3!yCgO)+rI94)?(OEhiC^m|Cto< ze%#0`3&|fJl(bMch|Smq$e^_Z{A~>6JU9N_i*Cv`i*8La&hm*VJRX77BesQL5ZY*l zW9xy^r7zO>`%_>%e;bsj0=4#tY5sE6CM|=q7<-H_ntGNIpP{Yv+Xac0L?k5^x zV9&j8KSO&jHMEDoc`#iLrd}4+cBdoRek%T{CS4~X1qL0FQ<1!bZ5NL}N zUI6tPEm9xdWP90#NqbA26!r_Ke9tRxE`WXuiewrn5yt_aoq*TU$XhgQ^0dWC6++uQ zZGriP+{#D3j||Ps9Zv=n6%%M!JwG2Kg9y)CO?eyU8F)A+Y%w!O^2}JmJPBdpoY9|j zqU{ll)yLc3OeCdPA_Aj>{u%> zAC&~Vyy#2lt-mQl=vaaI;d2z2ZP9ac;c?hPpNo2w2pZfJYrkhj@Fbbn$9?2-aCaz* zbo1@eI{_}-F6>+=6o}pRV1Z?YMxjUTsa#pyRcD4Hl)!8@)2JiAwl3Z+M*WJ z+Q+(*FHEO%L!TA-sAw*FK{@gB6g^Hq4wpP=2{cQaezr&ziX=Z+wUyKqIYn$}p5{BB zL1WqOs&R^uG#0xTxfWvtF1>er#t7uVuL9tJa(60zn9DlLI2Ut?VhbHDg+`1C*1^b& zVO8Zxdo=;_3B+oGV^8f=z5{wIVQ5|qfh(NTK>A?+dW^yt_JLhM0970EVxJ+?Q+GFz zW63I%PpK@J)LGALOqg!R0%h(*sU$NI(}yX2M(J!Wg_>F>&HQ|z=HLL@nbOfoJN0QT zSBTy^_KRwiK>MemeNWve@B_2rn4O6w-H{yI5*H4DIni}96HVd<awZ!j zr+U2P4sG`9d2H5;A;n&XdE5D@#ngJqoj^=2!AD8%|A+!pr{KHjGns(H#A3i;B525} zF0fI%7fn6D6nso5H^DV|wzZZviruQOpmQJ0S!qPhhn7YnwLk?qq~WwmlNI&@C{D2o zC8K)^73`PIbLfhO_(K4|h;GS1pP2p+;Z-)p-5xrJa1IRE6}uPpok6~%AlUFULGTbs z{z}j<2AKxTH?Bve*P#d6B@A8nu%U-(NCF+x?J{?vTpDx}+H^pg?nUU1+(u3cvCYfe zX`*y5ya4L!o!eQG*CACCHvqxVBY3HPKpZuKji-Zn)?)akqy%?CehPJQzkIq6ijYqS z$EEXWWzdPsg+a53MksMt{Q>*}gBCxI6odZW%OE8*ivrk=YJcCUNw?7Vv63Ufe7H%O z@-qB(RuH>kX`E|7OP_xlm5Q}XtDaHiqnb1bi5rBfFXn11M?8PEc~lE0%ME4#nLIu zphfZxbNS^3GXMB;tdWzW`vVnf-={+Z#(g}z$iZe|)&z%F51SV5MNx_(|AY!pxU^ed zKy)D7$%qnGmxI59uUnppO@u$s$h5D^#KZqVzP<*SZ@%x6hJ7P2WOM4Zj#cFv80}-D z0baOX;5+Wn%~lCHXJ8tWKM+%ZakyefqU8VKVA}bY$@#S!a>Aw{AN)tHF)#g?TQ3xY zm83g6c{JWJ1HeKT#!c$7o9{VNNH#b*Ly{r;@7u<*w(NCkhNCm(0nVZK`E4sN%5YtJ zA7499)1B+l4SbEHz6&^S-h-M>V^5wp4?4)meEb=KE+*$8-yM2Q+4%}eJ9As1D#DK< zQHo)!v-`lZx&C3;P?;mhL=~^&XIVjWjhDs zWdYkk9JA32(T?xRfn`s-Lw}($+z9>b0B;X>Xq*0+KfrsUJG4cAyfnajk~{R7{&;nO zx2HR_T7SGgz}w3mTB<+Z9N<0K9eP!NEE?eL?G8PKA8E+egTRUAZhxGp-VP9oJt>f} z#BM1!_APkXUUa!!s(8TgVm=T?TAR)I1lpV<1wO}Y#RfvkAD38}NQ7lCCatWP#-q6t zrR+AAJqTspi9cE}M|$lJ*s zTEp-1{*XrVZ6nwXh09h`f}=MGjMe0x`2zCE5O$_Adpemj?v~80=B&S^5n&D(#7oQ2 zjS3@oQzDw-0-7h>3zZ3zIe(}!JqNwT@=h3X-J>e-79fk)0+X}*4i;o{Eb^gM;InB^ z=%TZ5%^c1`FU&%`b6W1N99J~ARC13b7Jqg`8bj!f?AQ;m_?3ilN-6fF3?z+7n$}lk ze9ZFIzaQhre&YPSXEGSCWq)5v0h<5KcziGR9f|_{e#8h5S@p{*RTscNuQ5o$l<(+u z0*T9>6xA=(5Bag@AuHVrMZ~)o!rR4eU0zcmol6tN61(o=6c*-z<(qdd`ZIx(7P{J{ zjlo^TBURk9_D@D*&^9PW%zI7ArO#mmYGi>NcCe06@R-C2KHLX&K3Bc8gSV;nw58zw z0Z>!+(_q?ngK6PDnhgV6_T;=>Ew7*inzGeU79)KnR~b9azk+a}iB8G(wq#T<{Vh5V zih)zvr7GotIii}_;kyBgpL%a(^lD^F`oR%N$MMpP;_;c1JOut>wj@SM=FDk_MrgNPxw0%CR zJ^iRtg*p+%zutr|G)XOdoRcCzJY7HLJJKd#0Bp)sS$ja7T4hAip!d*PXLc`2BxF0G z>UC^WADv2bV7L2W&MUU#kcItYc835z z1}<>~`2FCK02`A_BJPT?2U|db5SRsSl%kvK+0A3%i;UT06{?x=0`Vf5q%?aLj1b{Q zz7FolSGeM;f#hWV?7^RG9xHDKyDCI+XD8&S23-u@4-i%~6~jtP4!gA=wQhIM*rVVb z$A0s`=5Ex7`wXTE8a(U@_=OlyNFQEZxd&EtOXhCF%f4kHk@{BW1(jo7`I2 zY90uHAbv+@GW1Qe>>vAMrEfgM9{tHi1K)58tQ7!9gQk6MR^uuIPJ;^*3Z6m00BIeJ zIZH4>ojhJW*mj(@C8y(-U5}J+%;Pr_Y$!6mt}JqDw>q|3qC1E7HXa8I^^MTs@F9r9 z?_`~V&HkX2cli!Us`DU6WWws7KGt%kJolAo=frCuk^={`cpUPcMuEUQ?)UA9kqlbU2;@Xlm-(VNNk`vdpx8kGJg~b!u@bJtIc?18vpT0+&0v}?Nm{u7B9CPAfJmR< z+o#)!SoRsVX?35qv1m|!vfHuu;XL7hSiyC|mnm>r960Mig7qGP>yv}iz$Fy0bAwD5 zi7WOE-Z6M#aXqF%L$=OiO4w!u`xdM(vPFm?9Z-r~=Q#|BN=w?|0^80_Ra%09o}3bS zVk33FG|HCvCrUV=KZzDk+|FXZ{JtAs)&}ji@)5RDFRjEbgKgBC79T3BIfUuz*@7wA z1>nnFE=pphuqAXa#+pLaiadS5tA#VL7MdLCt~aI|gjjD@9+ra2g4@wAb-UATY$#-| ziW(K~iYs~RIMIVvWMMh71iip{-;aToyFW)42v6CMhlyFtMUmm+nm4h!pxM3f^u9#{PcQHzVDTMU-oov0 zR$|HU9{;zoD!h4CkV+kb8qVgTx!vz4hAbe4yq=fBkl|S9W{qVDfT8Zt6c}E<4Q%dh z5XEAw$6c|Oki!5S?0BDmC@6L!ZFIe~1=)}x)N@HQ*#{B3%dlTt;He%#FHhsS7fG}c zpsu4ApmTN$~b=V_g0`M>h31Ixwp&t3H&h4=7odH&O2v*A#@ zgTyNbo_hF^_C>0U_~My9WfnHLL-VDa5Cd>rq2;bxZfmF9>9}HWU^r;85)IK4qM;2Q zv8|*@;KIf{nTk_nDPwnaiemKANE-#WRWZyb?;DHN zWXf#eV*4CypQqVpFFa$y(a>_fP3$C3v@BYeDST6*{n7VFf;yVa?t@Y1DGvBcjy24J zTu_+pQ}E^YB&`YZK)d@Mp7F`C*KP7LNoEyMPk(|ii_xARKQBfsV*8KSn)lgfm@W9? zlk`g>Lhj_3g0}qCw%k8hu9Szgo6Kmw+rCMS^HC#ye!LgMnKYSxQiZ*c%>K;m&y1s3 z559>_rh`)i;603~5^3e{_8b)}Qo@=&lgVN>nuXsfXud|ab5cW}Jg?!^_-9T$(b#e) zmf36j6qoZo_WZ~JUW5?h7?bfp8GCEc>O=y*zE^%m8)AB3(0@u}ndd|D5oqm(jy^;}l72;YrJN@q5zFz* zv?B#e-c2njvr$!jF$3;U7g##MDzHlf|4sZ=_cYuyhBH&1Wmwn2x;T~InI9q(1!Z-= zjDKUxkdhQr8Uy9LddI&G>LqdTT3twHQ3TV3&aniOMnvr65Ob))Ka6Di@NCeoKv}GaHV|zQ%9v8(kId z>4>PP&Y<*zixlBtK;3+}f<6HsybAZWdX}gcuZ+-Pa1fH^Yv^zI0-!tz|7`$2aC&|QG7C|CTfWx@(F#IS2^YX#Lrjy5< zkJFw`04etjA`m(%K>Xq$b`(ec1s8F})7k5Eia2j7o6-cf-Wct_H0@Wy>-+cW@`_0JI0kR!@1rp4VUf9M8H^wf) zk96`QDrJ!0GN6T$AG1_hXpzFP$B9poS>2Hb|AszzXkqEhyFC?sZxcjRGrDXI?nVO2 z=@uff+T3_f2KFTcD7jm)pv5AO*!Ocb2(CB2)*O^ePu-#RP{=To0J3nZFRm z4Q4`mpm8LPA+lzix2Yi!fa@>=T!*PRl3N2uJ(+ZW>lBCYFSw^Axuts#m`(GYv?jw5 z=zJi7&K4Zp&%}>Rp8Gz&2?q4-OrpRQ)Mn!?fC3-ELlIkH6!D;-PegjyNk*T9ucb?m zzkyvThPnhy#bt)oCgJflvYi>!`3DOGTPu2>Iu6f^5$kzg?4Gx1L84p7srM;6c$#&i zp=yB4N*;j~Y=QOiO|!wemWY?ij8odPxSR}@Mg32eO3D`kMhaWn0qYgE1gaSXaw2cN z9wlH0thbgHu?4!&nzKa+XyW?Kh^!%-Jsn&4+Z~5a@6r7wApxwl5lO0JVDSWi-nCc0 zL}8YVh9^O2$Kmh>6oCivilYlT`S2O%E6^1tR*W+X|4Z_Ib5Hl?<4;ju>K(YDwb~`X} zR0Y<$Vm*JOZ~ zUyf01_~6KtWq492_aa=3Y(MjW&wd6a!C2O!cV>D!9))tu&z9Ou>;^5_0Us~B0%Yf) z6D$pXn6q!z+#ScV9e)i@KOs0ajy`d?VIg1qlELfQTuh~;Vj|NHKkYV?z9Tc1p_ijA zQR;@s3n=wmyu{|=52i7B%%NpAaYQ&R+%S_ud^#oxKoPHF^B1<8Q(0GPmU)OcldLcj zsTOPc0mCu%khzY|Q@|-tDMz>0D_%yTq3K$rVTzy zyAk!hBmxMD`dZxJ>wQe6)>gI38%wOIS3JT^3#z1!U_99dQha}APVec42;P*?5;R{ zyv6AckWmtuOq@?@5Q6lxZd5FK83k-52mMaGPP4!O9ae^DgmhaRCzWu~r&XWI=aXe^ zcRu<$G%KiQm)hT8qW`{LQW(|@t;>h!oJDr$>z_8oZC;Y3ZWbl#plzwXT?av8g-4$M z_}DYZNYh=1OaF3TsHEsX#3Gle{i~VOA_8jFRan7u0~gpu_7M97@4_aDzv#_ALWEB6 z$V!5J&yr!NXa0O4DMzfcDg{MI`s}U>qS9XCfx}FS6!b>~qvlHR*kLI^dwYmF<2;GI*M0MWnF9!J613eDCpJ zL8alpW5*G0k>#r?0S||j&GLX)ujEJfH${gaH*;u|8D`A<rW z1m_eriX2DS88yyEYpV%r=!*90C~vDAh|%VTeAow(;Vwoz(Gh89)kHCh%&Nr*>};1I z{KHoPl?Ow(I>Nkuuv6zXuT-VyVX(5b9`>|5eHQgq|17H zR*P63k^nx)O;_w^beY749Ual}X3=J0*5l?SLgI7gN^6)SDrXx2K9sH3va9*9F-T5> zkx%Rw*uUdQ0d|7>mEB=nFX7d) z3x`l%0^t&AYBY-Vt7SUJjIKcU8v+wm?R35#G)g{Ohu)xUaIVaA|b{-sB zf<;Yf$#(}jNb*w7n{%a1)73T+wFD(9LGPHob2(I?Ts|(znqa=%{<~~{r>Cv|SeS$k zRgP94ssso=O9ss`n3h0l2&vHAeNTxrPT`yvl6`*gE7<3QkSgRQYj+UNf}a#`&tY`B zJ{XtnL1)T6;&MmJqg5}rYkyc4M=pG+KBj0p}eo z5H$e-T%}L95(^5^C-q>Mj`@Z>-GuSL{$hl0?S#KG?(we2PH`>&hFpLvkX7DEo07$w zrRAkMeli2jC*#d~qpdD_Xmi37xIMdt3juflgp%N@?2_PLMF`@9UtHc1vT73-;=k1*iVb=_ez+P4h*8dsY)oaRqkP=;I zVQa$KlfYG+7)oq1>)|vYepJISyE--=3Fu5QZSTTPV&@@+rDe!5?8G@0z@dt<2O_K~ z)=SdmT&WkU^C(!z%u$NWyb1@(l_Cx?MfDBoC>@9r=K7y4t2hyOzb^~8+fU4?px*oo zctkqA2Ngn$rB`E)cbb`*Hq(}kc%==RqRgo6!bZ~Q{qfV~vtGIvw(owtw@ytQ_IQVq>ihLxSalTz(EV30*PE`}kfsUCZ zZ`}^~91~$9gal9_sr8D{#T%|$Es4W&BGo_QE%E@Z`wg301vlr1KM#JtvCS{q-<@wG zH_JWzm*xP=W#cWpfMv}MkD!{232qT>f}1yLh31BQTm@n^{Zz2~Mn*>xURm#KtVFvA z2fl&0l|{eHboUHdt;AbE){7?!6veZpx~^;|JuX!T?9^=_#Niaj45`!)A$XInPvFDo ztJU0MyMb6(?)&S3z4)r&7QI)74Fs}$iOfu$tS6IqtJQ?IHoH^w=MGY_it3BvLKD8* z8jI&=3L7E;Hebct%p7yL5*g841x}5*K}=5)+dxR|AZ^NB^*4B>!vQT_^qEB3`Vh5E z|DT#6+2;3E&%|3W_mFJ*v90FaA1sOf4hy04q0g+5;Ub_$MQ~cpQT`8NWq2poz2!YJ zpy+I%4KS!@!N--mdF`$H{SGJjDdq>&n0nF!dyW7ttKGF-uW6%|e5| z984B_i#h5HqVfKetKY8S3W|VG_O;bC#B^S6QXtfuwW^)|gJ$2s4Cm?ph~p1K;m0-$ zmu?kls&tfC3Y)1VjvYv7#iniam@6D27YP`~6n;907js`}_Pq z|0wf3Pj_|oRb5?OU0sa~m@g2H%0C)StUjIO+wcg}Ule5cs() z^x_4&<@QC-24$q6snrefwxGF*<9@NAF>9A|h^8IUeE(~!bcS%JNxBO#w4z^wE>aK| zYQ$p&U@OZv9*Cna0F97J%MY5AD>kBf(H|ktVcIqv4zrUiA4<=HQ!Yev97qBLJ?T;QznEF*B57wN zov+s=?kSnb6l~(v%JDkNmP`|GhVQP^Q8Xd-gp#`t^e1C9v^c1Q4~(O^T(T7pk~zv= z@izqGOf2UD8{GBqD>Qd2KBRaL$@ilT{Isp1up4G{G-5@8s{$-;FF6ajYvN1^pTThSO~hzWmu z>!Tb(GyGz~3GY{D9%}JUY)%DoavSjvl#uN3O2ng&Ie>%$GBDsh*8ALyj(*j8{F(v& z)ZJ{MYseU$-^sEX#vm)S7=EK0e-{3tr>K3=4X}VbnhlH+G~6yzV}U06G!mh;SrE1? z(8h^ z9#SIQICT)8hyQ8?UFOMLbYP`a}+@sa<5Lf9wN<1loAL7tD z7kBez7m*z@@e{3Cs796)14i!$TA?Oc&foTUf|zf{5&2YN?#db#A~4Qk%&={|gTt0L zyhKmLPhJEyB`!}WEENWFDyV2%ZzO{~DvVOpIV({Hy@9Flf(8%|j^E~xS2^WM{!@ck+gDJS5yJZumkC3<0zPJnA_>8H! ztPA#By@+;&U1{$8bw1n(S?~Xbv(be@w2R26`$Y@$B{LsE-+y zJSi%1sz}GZb9A!hCfQRuir~P==HswZZ<&fUpL2mI{p9l23^0HzIX1nNGOmiu`XoVCtQ}7zE*J_>FU6L7(;HU?X zS?aK;?T3WDQAEs^Y}b&poHn%OefJ}1p(}r#ea=aIHSY0YXPJ&q$4YYL*j+-zrpN9O zGW3l#oB>0@5UI*|n4Ro92mL4p>2TVzp{K0L_$gK^us;C-5~&?JG39vz%))Jw=aTot?8WKWw&FIl9Scp(nV^z#K+UaXo=MR zA7%;H&K6io#d>|%$VexZuG-scAYXkKJ3-y^Wi#$2S(EO`za7VKUqvFA+Eh`pL4js1 zJt)uX@Wh=}UvLV(GBmi)Wg~|9*V>mX;LHZi6K6BX9lxgk zI^W*S84-QAh(y9V{9n4lV_=LG<^h1XspQ#Frm?!GJUO5iq#!V=}rlw;1eXEM?6C%IbC)dN)eR3_@e?7GN z4WO2vJfShwc>fCjntmGwW2Vk+__($+Ziw}*Ew(qV!Si!GKXnIdv%UHC{>?zK9(eBG zikSZt+qZp+SiHx81K)-AFF$gWL5cwREkoJJEVp>_>-_13))qNZQ_x(Og&RsyJGXVn z9sKWpZ}_S zpLMRBIuX+WiL5esHVTpKVKkI2IuPSF&WVf+*>oev>p&2I`T;}?W!{(3^TB=G!TL5{ zt2X)+IA-!ZNH(x6BP#XULLTaB;te!Nd&HrxH@`Uy234p2j%V~V#79rY4?~`i7`dNz z;p^DA$Ti_Jba;F|c<2hS37M~v=4N8~FES;9YxwaIir|v-N|Zg-NJ6hQ0C@y>3;=S! z8@^#h+mbY}QMmpntwKb#x@0Ux8eHjti?b2Xs4A|Nfb&d1M0M8? zy%?aTZIPt{e7OUGx>JAoPI9d4a3ORN`W#t7;v89^w9)44fXK)r(yj^=WXU+rxu+McWu`3UD4@g zQMm4lP`B8$`Z{>6Y3aPJ%3w}jFCRbu7wYY@F6G_JnPMc;*pkUE9R(ETRw#D-WE3Ud zpQDQ$yd)hSEPfNqD}px+kxuFh1`4MOjjCywd>@Z@InLq9mbXi}Fk2cM-+2ZAi-`|e=!f}V-P~NKP z3Ec;G#oBwLAO0TX>;-HKA*oQ$GZ=4hgx1jdK6h`$Pxf*$2q@>hp{Xz!o}<|3pvK#9 zt>*Er{B+cMN|w{Ur1*HxIhZoP_u8-c{;F`Vv!Ve2vgOBtbyBP*3p*Oksj$$#^@yZE z8FPw#9d7JA-fR8n&R<*77PpEMud2C-hE6M34!32B)8ac$6>NgW2-Ftq%wMRa(1>P7 zN|zbJ=_^R&&HWzQHd^d<9l%9KBjl%w6F`i@Xj<1F>i3by;a+xk?#HOo z3Yvn@+WcNALn8*O7cJ%A>>So!;Uo9=cL$g6Mus;3IcoleY$y42!#y1W znQeQO^)W^?E+yuj4+Qm1CwXnb8WFdxUm3m_S}jC|B+}LPQv2f(Z`z+F*I~67g&>VJ<7nRHa8b@=0PE9iX1);?o z0oPKLsmE-8+1koD6Ge{~{A{Fi)KDLxoG5rKL&!wAF%eP0j5dDZqrGMb>ubPeb}Chh zB*OTg7wK8-#CY|DAG!4T(&3~#Z z++*659p(-q97y2)xOyF;IKWOvH(ZZMl%JWH;|g+Pwp#e8&6Xg_^c&(=L(8OQ+8RV*@D6uHKtdO!gL`qt^OF8npu}nCs%E>H%JzHJ1MZ5!ww|u(}dkX z*l@;}6cF8^{RrYC$Ugy69GqTa^U3aDwM*aRy9B}5x5$>gDN3s>a;SPg5r)hV$#mua zI(4wM$JKT+d|=Pa&fTDPbm8zE*}oz(^P$i?gic#$$rC3$^}xzRg8W~nZD0zu2g*Ed zj{yF9uns~%we-<{Fxt_f2P-<^^qxFNIHlEh$kdO#%RbBD-B*>3AgJ*)#w$U_#ov-u)-QJKO)68y3a$yil_CxVH8^g@$YptSS#W=bz7r$U-!3l_ zI|K6vS_-W-X1AKEc?WK4FKtq}^?O@nM$+tCnh2}NbXR_w{ppCAs|Fgj5U(%$&-zr$ zWS-C+n3g`wVM?37x7vRWTUCF%t#S$1Y;EQ`SVsyQuhH4G_>LEK-&bnldF(86J!?XC zB?pXtlEMKK`HMe<;EygT#Xj&SFzm{&{5+g?aZl% z@&!<^w1M~gkJ}YHE!{@E-$470!bX#~3N5k-x}GYzH!LjbooXq-0k^ePH3ju;RqKG5 zSD+i8-D&>*gHQ6GYerl;vY-I!|0_s&Yf-W|I6j8r(EomH`rs4&H((4@d&J4veH3z< zfE06@dOerKB%cs+7^+F>BHXZ}vk+2pEG}X={CkPu*8?PI)#gPi*89(i^+C=zrR2N= zNE|f}upvt8unoVsb7AF0+NLVF#+9l;2xpv`l8#%mj+!fxF1ic@h`AfXC=M{0t%rP^ zLaSsEt?9MwM-dK<-;v+}kmZ+v7A^$Mh?;a!Ry^Ym@>^-iwVRPy1ED#QjGJ2b1sCEv5h-ecNm-89{aHU z&}YIkV`*gNLST2bUCK;gYDXFR-!>eTBEfP+bk;&fRHl3s9akln3YavKH z0rG(1E)hVZuIi8sdmY+|ST+LTON^5P;|^ib$W77H-ND1z%d&w8OA(YncCcN!U&6c; z6YV-R`X`8vVO&J=SC(Pv>#ylQ*S;NGm4=rOWMR+00M2JZGq8$V*#t}&5m+YNc_v0s zSseqAA#qK+4Sk^301O2fOfFD(cW~!nIPf}$tJl#;rF)J1g_B}G!mwprF5!0#)Zs7bBn(3mHkY)H z`U-10rYlRvLrl6&GVZHb;55?c})KKbL=-PiGRrK9u z0#VH6I%J$~%lS>Z4(vNb_6HJ>CVas=VaM2yFowTC2i_ce!ckMp{7GyW?T=iQpg*;E z6^L%Kv{Z&K87@V2)O?Cm>Is5)0iqt<)zcR166>t}Foj^CtCeU%L62Y>=1QgTIlWT3 z2hm2|24h0aC1 z^o05`BA*etYkl3kX@6)E@L0Rl>S#|4kA12qV)a7yu_hwUZ4-Ej(!)O89deEFFKnSU zGdcD8d%G~+u*ei(&U0NMyYmAbYQF^p5nKb|>_*3UEugXeFxm%M`-6wu_;P}W)BHW# zw?NHZ46iOzGJ{PW<%SFUE45gbk6)dKe~D=OW@O}BZsxg0lC_O za*=$TIzs1)y)Cq%IE;cxz{LmU;*bmDF;B>mR^{0Gc}Oyz>h6F6{|@1BB(! z$^wcAm$e+ks1EX-3|zd~@5hLOks%-a(-KKH0){@|W`Sz26Y)KfXe%RrJS^Dwo``6` z2e9#x#I|}9sr}t79mfa%I8(^l^vPmQAN$mEzy~l<^VJ3UXa)977xu_L<=0>`FzbSR zv;tdfz(%rkp$}wnS{LMlf4X|BmT_QwK>Z2|n^3cey5b)?u1Ux7!9ShuVI5b)fI7IN z)qgr}D43EfJY$j?b1`CrtBW|W+<4cETad|*tM%^3cjo!Ed46V|8_jc#d46b~@0sTt z=J~35K4+d!n&%_tS&kBmC-sML??`Y}mA#_5MkKL+YYKmEwkk90hsN~^=e zpcm@z7U<7G&@GUyADQ}L(~sRcZIgbGn1O5o|@1Z1a1B9 zE?dhCy`kIDtWMb`2Z{fn`XHLmrH8m{4g1j4v^h*0`UeRfI$}P!y)NmZuoYmsGL!CK z5Fr4{x&f4r1n9_#97R8f@kOQE~!;|{JMHh65o8-Z=U3~VR#FLu<8$ZXp-hV?4^ z72yaWpQj;Ra+e{&Iwg|L(a3drX&AIe1$JGT%Cgy?0lRQIqNMIT!rJh6-b;J4- zzYMe#1g+>FI*lycfkF*UTqDPINcP}_N4fETkOSt*mF+uG>1{=}pO`Cv@FS;_lzImh^r5VOar?vN9+ZGatv zUFd4=I5`443mlQ3JBW#?JMHUM^AlG8&f{Tm<2zrctYk|2l6U$cp)2$l-Q0y9_aQ9z zSNoh03g^jR<*{F}%9~$@eGc3w@e8Dz$g-0dgB!Csok2f0hKp}^?k6Qvi5gcuj6tCu zC+gy~hXr-oM?4*Uyra3I97)pr>F%_R(fd(lcgPFZS!HY`{!t)uStmz-l?5fDtY;V% zrFPe4Nn-|HVl7uv!@kaz76qe%zr7}*mLvF;)zss_(h_k$4&y?9V^7;ksZiS){UJGiK9)&_;TZgWWXnH|6{@4Z!mgDJY&a13 zfyqxyV}R)kJiR_wE)G%Um8Db z$9kzsN4-Cpc6sY#8Jsl+J<00W7u2FbehBVA$u};z9~UMsKsn;T zW@!Q7uA9jmBKpepxm1{;_IZ~kYrmMuYOX}>)fMkkhjyFjjiS)oqQ9J5%dvsM^@zTq z*wW1Au`@A#SJ(yu8xHE_@19x$tlKV0V&&S~QF9Z1V<#gjk`lE;GQ5r%Zhns$cGelD zONL;Sp)p%o&D(a#5CNPGWvGD76<~`rEKDp~(pEtg&vI}m+u=jKfj2n9vT7wFWh_VE z$D8gC*>5X=X4PfwhGx}t1=j!^GbvpG=E%*!TK2}4``H`*>4DN;x?{&XSh_XMk243} zhCqIrf3V(n!kmd^Uw0Hzo$jZ0J?2Jz8wMnsLf4l^DAkU4rM{xRdou;(4rvma(Wn&y za)DG6R8Vl_Y?h=iz2A_DbrH5wxtnzn*b~>imUAl=dGYxz8|5iT$xP30&oQ&Bky&g+ zp|vBpCoOMFVW$K31*=+CS@Ww=op@}weC-j#`eoLRPxZkcGhJM>BsM!8 zT*QXn*@$A{ZW|T@iQyF-U4#vhj2ka*WsabC!j`g{cl{fR0&26DiY;B~gE<$kNq+z5C6M>Cz=BB9Uny>(I(c z5JlCWyG4%oT@=3;95Vq@L!4KAfxu(!c2vGF0g#TsKW@RJNzZt5D8~wM#rc)qpD+87 z{LE`@lBp95@6R39J}jmo*?pn-W~d+DL>3+$YKjL`XL%K!#VrOWz{YH$gF#}#&F zW1v*J2D#GxumN&rVpIoQgNoAq{W)jcf<5~@@ON0DUR_em&g>)Eva=4!P$SNZ!~yr-BFC z61<=04Hu_VD1Yp#{cze)H|IvQJxIc7t+)wq&dRq^`^Q};eM1OUiI0y_ZN zvjY+%ttMXK>ZJ!?Z?b` zBH|PK2OOIvvSRe*xuUBrZB}n1A!MNDvIFg~TVY@F1R<7+XVNP+K>8`%5bGZJKuTZ3 zBk@aHpbxVb*25t=Or~Xrllbk6=dw|A(wevSoy*>`FNPYl|ZguSR1rnyfKNmODHv9fQA#Lt}}g^4$QsY(lRla&siI^Q7%@rPX2p zHhJ>*l)!r}_^r)0rK8I_j&?N|<>Ssh+NS0cbc=fJ4NOzVw0&a@qqMt{m>sPx2hQY$@~R4AgTdjEAyS~s)PGjVK>#_6_q)1o6002$-Bc(q?t_aDxVW|!1FA=Fj$8J4RX$oq=`N;uqLV(Z^7ty!EiKM)qmGCQoP<%Or7J zcAtS}8hrNA&4hDYHZ|`xG}Ay}0ahNMgzz!Q9Ucs6tq%O(NuIgTWqqY9FdmZ>YVg$- zVfTph)*zWDG`=!kLRZ>Wmj#d4v#`4T4_m`tPJ3qx!4{tO#kGM0=~Fu9t&iT0&%l9f zc|RZTR;|OHDV!V6c^r}U>mcA?=WPh?XoB1i+27lM>jARu<<0D608a)Gfdd*CGqZO$ zAOY>&9XwEAFaOv8&NqNn8W5PhnEgC0pN-NR{*%8vIA9wyOwaf4IFK4P@M^Yn+&)KfSX))AVRov373g@Jm+N# zTtxs8_Upp)`N-8@x$@=8uk{sTLco<88?4&kj{Web;SRlbViEFj<@tI<;KmnL8k_yQ z2ziRWZ^6F!$*u(Ge{Dv@)l!SYy#5&W^wMF2>$~!aQBf z(}s2F{%foT!+M@wDxAkb`LC;o2F0JM>`!_^gZb6FJThB=2zz-6BqopbCHHIFA~Jd_ z<+QLfD}GQYl10`mo6P|Irc4Yh9Hfrp$+9)e8T_;Ggk(%9)h1sv}SXCHBnK3DuU z+A-cRNQzg9N2)a6E$D$tSN`g$x$Kug&VEy~(GMkO9NiC7(GSrn5O^qcp3Q=?e$c%1 z!#T?cIw4P2`xiR~mth7aHG>9fte2fh>Unq+dQC0fW=0bOqCzjMuzv z(F|lY_z2cj!A8Rv4o|@I|HZm0CL7>@25tgl*bT^5-!57t#-SXcOe!@AsHU63d>>jK~EQG`s6=39MR z>1)v!Pi7FXHUC-*{^hKKpa>ojo=&O{QyGD+#_bpkffoOw7Jm&G+1M6;|IuJ(6%Ju$ z1;WgtS7Bpbi*E^iQ+)lVK$0**6rIx_Ftk_OpcxX)9*KcAtFr#)-9A6?R*h`60R~Bo zqmmN?quym4-}Hsx#PAOp9+bm4*noU12~~t*t3M#*5b7z0n`7atOni|HbYEymXnmuP<{GFJxlO zGPFu|YT+y*oRND$LhDj!?Q&X8YVymF95L84x+bHR5v`+!r=wI6;;|r#AOvUbaImFO zor+C)(YxzqC0jFvFG9n)OdZ7X)MW+9rKx**&{TrUMqP;q`$-{(px_Kt&%B622KQ%A zJI8<)BtS=M(BlEhKy{x6%`3SWr5<;FqC%$B4wm|FFG1#U0^0E*B_GG~pHPzMAugCq zhSRfQAOqdE`8=6OQBo{eXTa0>PTphp`Fb!s6Mx`^y)Bi)2F1&8St7L*X&YkWsbNwj zsh`%VCH@0R-Pu%a9IFN*t5Q?W(uDB?NiO_ugv}LR&UjTXwYHaUlqjJ%Nr&20sX->4 zTzak(fFk=b-F%boNu~=`FpS2fwb5*QMF3%z?8cgsWHL59=0lnvRH@$$k<-jOh%I(; ziAE50=y|ChR_julDKKFieIs!!%|?+ORK-=P#n`(dm2ZNg7nP}&%D^IbWV#MtEa6fU zoG8V8TT7vttWvW~uDOEx-9S9qG?Q$WMt6@ym)0-CMqgFldga2CxlPc~BtjNw8MX+k zaGxQEk-dDF$#Mne)hhKltecqRTLX(GlO~l&bw+|98Az3lrqoY#1eRZ=0rl&1noMy$ zw&|xPh7ju~QoxKltXAS@2da>fqo#}m+37_PzJ=*}%d&2WM<<~_3xH|~m<5{R7rfVrVu+`xubc>ly{r zC}eEM#UYt4?B0h&x!+BUDFRaTHqpOo6G0%xp)qvj<%!IvVrt?{aKB7GM=m+~Sg zOQ%|Ge5cZiarsL4l}eP0dMl_TUqqAQcn3pJnKGo{Sj6HA-yk}UN7~xdkEDkvh>@uH zY3|VAoP?hp;0OT+O!?WS^J63VtF|I2dJ(W`)$)8*hk#h`*eS8B*om?3vEyTzv93uA zu{&RmE1@GQyybrBFy$sd6)*M*}8U z`W_T6piv5NQsXar>Vga~*{T7iAQh(@_#`bxn%V|->`RiPQ1WC_@`=cZDsr0|ZkTQ# zre4m-6k?7vwF~U{C5d1PWEOBEY#~=EdYB>ct(B6!%Z+D=%t9m@Y$muTqyM3!DN2Mw zHEafAIGGr3Fd(qKM(DfK;}}k1cx$6)L#z6r=WOA%121V zLdQzp>^UgREOF5vT8>AGp2zc@0*oZidNzB-qxjV~W`;BRVx^Zl>K!#}(5dRSXCMo8 zLLsWuzhEOkamPqLJa|@N+Xr(p+>S>@FoyUySf;c_@*9!#CXzZ0vg|03?F9K_AwXWu zTc5KsUJ-~@j+U|g9V@${CK$P0;u%Aem5sa}I0BIqCe(|81;=Rfwz(k>TdSi*sD9K1 zMjjo;pP~H8=g-CX(WAafZAOPj&t&Ln{5csv$Jj61sE>KzTrmiu0sCH7tvcy+nIIvC z!GLAgg1uBtZ-k~nmTa4Ij%s6`awQM~gSi0BdyBfva zs%D)i?Q%1E>7&zA7p_$(zoX`L;y(`fV^aX}uVX-P+^gtQfVdj24qSDh0CV2Ug-wPb z>a8yhw!|(0K`2HrPu5q}^^kmfN=1>*YD@6;Y8JqCh2#3*eo%5#ySv~yy-yIv)2xh= z?MeOmZ`OLC-mU)VBdDnk+HHhKeq8f>l-HALB`l4&us+qFe zkBmTAsuqGY=->+MsWjjq2)1R1s^y=&CN7I81;G;HL8E#GSH~r)O#H_k3zJR+RGZgMgy-0{?CU*G~FAvCe>l zd`2LB5MXgS>Be5Z2a*h|bf&g5vFdpfu@w;}3`Dd@6VU`vP+7A-t=JX?tC*+puPDRe$#f-AU)wfP35BH%oumKg-c z6D+jYtaTTuRUI_qgMdQvfFvK5njBP8rDmAqp90Jq5-{5Hl-I}P9hnO0_~Op4NfhPESPt->=mlJ07W6rrV6wi#5XGYivmKJ3j2NeS)B8v0d(1Pck6 z8W85;kh=KiCHHHhF|EC?z3#fpHDWGxk3gJB#F4|grLr_)f~l_`i6fTJZ|-Y__yvP_ zCn(u8UK(ssQYy~Xvbw_{UI{SPR5Ovyrn>(^C=4fOcCfWhDhuXwP117a08YboANs$Y zuF!o5HG@nz+{>s~yc2O9Cce}SPHIl~x3SNzz-MaFWR<<~PhIDnBqr6*BqsGWvRXojyNP|T({vgg&P&F?8n99~H zL{N%qJT8K?mWQ!jqR-U-fkRlZA!t!I{=TyuS%{BZs%sz;_4{`C5>St1Z z%NG04UtKtGjdc+Xqim2TTp_4CLQnL^$Y4;IE<-I^S#kv?4z9MUnz>pY#tv=9D<>W) zW)_39sP8Rsi1;!G1$rN29)fOMGB(oSCy&O9uGEyBd~Z~ti7C>cmhZ$~C@|{;8!RnD zgH$J67QSxS39#)#PN1B+VVJq`jGF+ps&JxzC?6KN$_`RiE}@Y{R%WUsUkD72nv3zP za#8l^<9M?#8PNrswe*=Blnf5Ght&u6!>6929d_*7?g;LL zMa8#Zld+DT@T{)T9so~g0-bDMG7X-1F1;!|_)-c5nMf>qVBbpRy3#k+xp32_!*KU+ z2ak2R{fQAL6c@rDRxlv@aReMaq*4 z(}F!E9n*FfTO&G)*^|mf-o?RLoo&9f)l#BU*?MR-Sen2#74$Sue5N((rd~IKeE><3 zeK11$K>M$t{S;ao=Ms>NCs@c+uebTnhGk%pBQSHK%?Cr;!8z)3pmVGnJ`wlV7Shup zhGJd296<<5$SdX`bgb~APF{QAJ~XcLuN-Ate+SC_w;%6yBH{eY03>2ZF9uc1Kl%l{4 zv`1GgmcifDd2jWkqGa7Lw#jhQB=U%o0l_FY3wcf(=WaW#2rt*&s0OVSu0D?iw^lLo zM*NJr-j%z_mH&l(b}7QsYOyvPb$x8K#0YbC=Wm+ohCK=s2sWa2rEP*gWw^fC3Fizj z56(LpVM%|3%)Vqja7-mZNjKxD@v!TI z2iy31!`imqoxk2by9o%2)2x*-*x)G)nlVLCDzcSHm=fNHuW~*E|V=3C; zghXh44C^%Y{TpmYjKV0?Yc3dhLe<%Dj8+XEY&UI?Q~_=|VK$PBtBxmjf6SA%q2=3k z9nxZ>BrfKvK}F#B7aS1sLc7?~1!rZ8>#sxVtcjX}z2Rv*EHbKutI7Zn7E?PK!;5_h zT$|0vW^dw1$+Sr-M|#jcZ#yF0;hSejc^rXRGm^Ac`?{vJwnvfL3rK_^(A@dRATGYGkLWfc8~?B^1XeczR`ben=%};W{<{wwDUkbg@NX6>WP^u$mp z(}!0bU8aF7Q{AwBQiVj@tZK)$Id&^{kQBjqkEB%Sp1Hb0x0&aSc%~LOKHlQ?Z}i8w zk~#qOcm&M~(T8J=K4W+wM4EUQC}kKZrLD_?i-c}y_-?~MDZ@Z1!$2v+Kq*1eIUbr) zlI60-H^4(!I-3UvX9ip_|2Onp4_durxb?x8C)|G5g@;@>qj3dHn=g1_kd2JaGFpd>{n5dbqeQK#vSm z*{Go>JcERT!$ck7AkjC#UP)(?Bf~lOvh}Hud3Yt2wfe4kj(?AJcLDh=+#u0K;|#dO zgCW&$wt&mfJ7icmhr~`Z4SQtTv^Uf%788nIHZl;VnhCyfdO}K|w)r^B$5kYh^?|)rmkjKt>VN&Y7fO z<9-z)$WHD+n&1^@)Vb%^{uQx`K3+uC4%D7nahgaD^<5|4!!;V;QcU)EgfId4d70 zZC5)lID|SvbjFU8McDx6V}6ARV>o!p4Vlz3cVTUBLh%@bL51z3n-J0B>!kKW+G1#8 z0TM1%=yXyH&79)C>{uIbP&cX*&lrlv#w6?*DQKhmb8PG86n!}*;@)w|7e&crQQFFW ze53m4LsUM=P=B1=s<~3qYyY*lA7@4;n4NAKA+>xIKe>CPN5bdlv-29&y{)m&19nzp zj(N^JBDbV|oVzty5L3Y3ASpGuLLwTE1l5p@yoTyRXXNjWiPvqYK+5uFh47F5=qOy# z6X#uLqlH#OBhRb{p=1(X=WGHN8(bsPwCpRj3IMU&RIE_PyV-ZZNly0kK;dK&K!7Qc zlfg#Xq=(;67^Op;+pZ>))1iIO0{~2dQTCO@@{DGz)Z*tMn1lCGag8@$X`x zAVY)l;yVI9_*ojzQ|DdC(ye0!t}N4Sc!fMk09(~m99WL^WbC;nHpe`BC7_yA5ujMA zt=A@rBtD<8y$8xF5#E*ep`18%*#Mi-2sscJ|LSo_gxu?|K=}|@t@g-Rb2bTM=dwW- z-gS!ffRbD|f$U`u!kJ3=8}jaj$RP{SjWlB_Z9vCd22HY~=77NYd|IQ&otW|ff>2y; zMNz*Gcd-vRR)P`Q)V`@$Dc%Nl_V0s9c9sdGj++1CSDo}%VP{Q%mCcoKhLr+HYZgb% zkN8zTKL|wUpi6+OI0fW8Ms7xAvX>jx)xl={h#}2ea56?1m=wcD8QdX`>Sj zoWiegtRz&Bja!?Au1-PKFBnFG!B#Y?smEZn*Ud)kHcT(xKk@l~Iu0k#_aHx5yW_-< zoTdN61&7SZQ9udm`vF3+U6H|&L*(Jvs1_}m&>J&Fv1Bi&-!{}Bpu$r{Rbnr1hlZx} z9iD7cUphE;Knomu_XC#uBxbtsgx{P1nKdC#6UzvLt|&*+0khr^|HO= zxlzT(xqIXVvPYwjOWQLm1aq#l3T4AT*fMV}~707N7Xa<$wiGm+Uv$t~l6b&Y4qd9TZ%H@yF z`gOLVC?z(>x^_7iqM$$R+n(aBSW_p@uc)GFQ0y!NB&Hjtf^GO4i7%#n7b)Ylo<)o` za*#O->9C=1>_^<8%W<@xbtYkKyhsS+_W~4-ezD?{e#nahH~F};l7OAn?E$&9D8|!Y zgLL-b{Md1h!wa{)98mFWxLJ-q8E`i;Knq|y_A%rk3ZUsJdPokL%7-)u3z+A0JYz1# z+-E|H&GRPn9BZB<@q{sj47Vy3_!h&>P=OEcv5u*ZPWqn8Sa=<9^997dV-!Xu#}imx zHqLEe9V?2^vSqol7mll=pvO2oM~^7=d#h#x>uV}e*E({=#6qq zYtKRbV9{?ppmo7;(b23=c*F34>Rp;sSle}q>yQHRsO#5KA=nF}m{n?&?D_b_!b%*< z$!wIX@xMb3BcYIuvegMX^x4*-e;$w~tY{tjgM`}4??$(!plFa_DAdmn~t?XLnCCwZ<+ zDC6N&Avq5g;lF`^P8=-5!gn`?B7Aq?H;i4#Bd$L~gp&w{Z-ew2g_GZ5ZH?hO3jx(? z+$@l=-T|M`-xRMLDCfsUFk=wr1GoBXj! zfN->ecwZno5aLxr33yIOs(9_ZU;80^&f&oucThx}!l{#kA?SH&j$H{e0I-XrWIjpI8B0cbCzu&JR2 z?jsF{idE^&+cQkWzjcIi>fG%WFG;{J>S6|94B9Jh#yFsGQS$R%Tz-{awr33X1?`Iq z+5~soi#yfZE1+l+4h-zo%cvt%b=W3D3z36Wsa?3%lI?Xj+UDQC9HVWnM%zRiLFj1M z=+}4x&^i|2r37580VW*_U>E@w2mppvnQVq)j{;*1tDS%2Q?4$sSAam7Nlt4VJa_A; zku$_sYk;<`0rc>oHYwU40Im32T;6qQAs0&X2$XY^JfSLX^(p72UIr3Lj;1_9)fIVJ&Z5@gQYsdn_{oJr43 zu(qpn)*uE^;(v)#>TJ!U{BM%lz6UJjDM)Ft2OaA=QdZNF991{VUPe+KO|k8dpAsxW z-2>Bv*a*a-dIgj451JC(4ui#x*HIH@TB3=qN~T_sOucLd;v6+I*&?UY#-Ywxj}VNz z0pH;kT}~xiRA)3*T!+)j*)&+o;S$JG@YG(X_VNuYNKS;+>dgNL3D&4n@scW5)vH6e z*aV2x6T^iAiS660BJgfM>|RkxR-$G<3jucCjqFKHKV3`p^jeS?F^&z)EZ&-b1%I5* zH7FFZVgEw*qj#I`$A1E$i0&b(Rwfr=fyn&YGCz-Y#zh6q6sGCK>@;ooZpC3ySNQo! z7*Z+n&`$OK0QT)#RCXa(?mNGd0fwtoe^C$LDHb(+ee^0WExti@jiJt_Zv?KFyJZb7 zyu;!s=6_41p9Nn^ITys;*QbiSN6Rb5Ujy8rVd9(1t(MR@C_DD4pL;;RvDNn=N$OWD za^FppwX$8Dx-sxntYk=&=&=iTfr|0Gay+UVF5PM2{058`FbkdvM_o8-y-$r=DA(s@ zFy#|v`*8_%J0HxRGG@e5=efJlws18JA_4)xb9t*suHPMUVY#ZkD`8-(m%pr7y#GXh zpf%_TL01?%>>95kw+#)#JU*0r035Q^I+BXcE7IaF6}52GpBMl|lQ~_Hm_>DLBxhjw z-5}$F%Qv+-NXK<)zI)?oKpE6KkTU)v&LL3Bnkt0Y{GIW(h;P2jRV7p! z^upB+%(kSzD-`5$SUv1Rp@n$I4iK&ZPs2o5Jg9q~y`0kx&i=N+>23c{;+`s17P%95 zz^cXB#R;jn#i4m-C4aYsz4eeP5T2=oCLKMytFaRZ4 zuuhAu2^|DR1V%wNoD{OI7#x|budE7wValU0zN_X^aC?Kq^XGkfDfT;_LZ{N7kf*r| zd3oY)gD@~R2c&iF`dpm_6z8cQ`PE*|Q|LN%2Pl*T7pmh4&_#W4G9K+!4jur2 z<^k2(^lqAVkyCOUi7vej7LHa&UMbV+Y(<=(gofv^bxvXH*x5QK+LzRckGzu1@zKkA z!|_)1J^a#H_4w%7efDe8P0%m&-Q3EXm9BpNJCxfnVNcybyz5pg*kM$9s$4M znZnQF@(1?Ua39uZ2~9K>iMVgM7ZgGH`~8=3e+@d)JlM}7C-cRwOjVW zN5y^V;I6ptir3sD`}VA8LN{YvyafQMnMGELaLh_~FqJ+G_l*2*mM7=_h=T1Mj#z6+ zph11zUQhS04%G_|jyKc3m#ar#)s@E9VzNPB11{-`M1P2Vjj?y%iuzGUL3{UfaBGNn z;#uMka5w8CSGXb@D>;}~XYx^3k%b2vpt!CgU0(AdJicFiew;tJ!d>7Ltky>G@RRKe z__UsE-(Q}Ov>%9Pab0=)et3dS4JknOuJ9x6d32YWHJi)s+{^?;OrUY;5LbeR*0femkP=Qm90KQi2< zjeB!+RJgl!McG3Qndd}oZKr+f>yCR=y%r2e8cM#29S0u})Pr9c?gBCkGm8{d8Ag5; ze7Q&ByFla1NX6IAAYz455Oq&&KU2P=@SXdA!B_DA0bl?B3%&`!x0LKu3W;XJ1-r4X zad~ZvJAd;Ol&^bd_vT%r!o40x`)$qq*G6eS)OVE^hkEiiqy5^A47bBx%m!C*Lz=@{ z@2K6;exy~N!FF`iuup*3nYSf&LJIwOt*zetRa0_-IMcm3HYz;$S>WHFxhR2uwb%Lz zAR2#{{ciLYZiub@w!O!Cqz7@EQVVMI_gC)xEi7-Z<5Tgy(Fz|x;`nrV+d68SP}oP> z6CsGmUNIbV$O>KP*6s0yJAaR~N7vN$F!YpYk3EU@2tUwH3R^CP)eVuig-v`M?5Vs~ zgEzmH_3xgZiZ4k|Y+ry7-<9F+TRmY%``VrGx$@+IMCEzq`1)8Ed+!1W>BsJ`Bt50{ z7yJz3K-twDSotfh_oVWsfP%4e@%;a(d`Wt0RX*Sg)^wXPL>Vuwcmkj zXp85Ax;)`4(_AS{f)s5q4B-8#mv1c0xp3uhSv{zwtz)Tf|1Gg@AV$b9`14x-@#b%s zQUiMFX8L#dpu+u`B|ABmHLYwY*%5o%-a9~ekmUYY7^k^VhDNv%T1NXr%I2fz%2iE$ zdBvIU8vA1KK0mn0m>NdT0h_@Ra8UFEKug?^#tR$4pfrdomUw%)$O+-$@N71-<7M9P z)Q%o|;cmG!?Jd=}AEaZrLD#cV6=xwo1Tjn&TVIIJRaJTe{5k}X;ag4txwx3+%^^A#;GW-{KLSuBdExj=N=T3{-~YC1 zE>`p0&b??q7`oX4feduEm)@taF>_euW^h7nm*c|a@85KnrKxWqwt-R3=r{JsTX5FJ%I0whU9pp5xXrar6&skFQed#(!79;sV#HyhYE<@1jTW%=d|O5l z6IUYP7rPYU9*h3g%ZAm58K1DD-87}QC)_U2y;+S4cL`iE=%EdyU+|8I2b$9SO(i?V zuf8(eZUc5V67qG*c{OavFS0N0U5*PedBh3Ve`qsfWCovZbUZ{4jg*O_q~1b>frwI{!!95prv-}3OeC@##)0gR!9BcsCs0kiE8^{S6V|$6QDp$w%A?v6^GQ=s)M3;ybL+EPR`q`Zt$Os zY^rhTh;w0en&sRW{R{d`&p(D%1BWj24~^Z5w2;r?_7pE%juE;())ilzzD$XloeSZJ z=ii7ItQdkw?K=~m+x>k4hXzeM19fn5L&1idw$fd^dS&+aSoN@jYyh>Fe@S&&a#OL` zJ{2rX&H&;yQf!|k8>7G3XQda*1?W&bRXQIwDk_!<_YU1Vzs~s~Gl_2lu3*XG{nOS; zeu4;TPn8E;EvudO6%U;XYt$Ci`$aaJA6Mrt{=pG0%=t99|H5e<-1b-2m3)aMpS^qr zsvRh;$BJb;y2KIu;~cEjLf-e9H>cM&*P<03LXM6VvbZ>2-=7;?*Uw#cxB-Rnjf2qC zWnnKEggw+@w~SnDIen$_XOlDfJ30b`d)w$=sQnL5YoPr}pza!|T7dlj0?;Y|IYR9^ zSk4dKiMopaiVDimjuj%f+W&JGL%<6X-1_cAHdW}V#z z0G$A!-yHV)3p@N=Y`;Iu-Hl@VwtD!Vc69F20evJv=p*qHV0jxVy$@q4RM_D#{2I~@ zb!>5dEo6yAQGKJ>a}hS8uU~AGnLi{fP`bvJ1hiM=p|pg%u2VhpWiT#`chH6JtEzs_rHQDp(P5sphC66(rDPzQ>nkEJnp zJDF|lWM@T-kba?kHHU;%~b8bk-CV>R*HNwL<#=P2itWG1h%6#di+bp3 z%ncSuAsIR{eDQL$oXq+^J%#y?Rj!wSUojzr--G+_oz*kmXt9%0U`v=6f zmtkWT>mHYH+~HBMioksP$;^IN1P9mHX8uG1;R#vU=_s@gP=q37mA%kctVtK8RftUMkK8#{-S$h&FW{mXd%>r~a|3k0gUgFxdQD~I6;kiP;X zzUU?Z9a?-p20QxOVpNXa&lns#l2v%07IP72P-O80eRd`=qT!|e*%(?3g!6+|oeu7u1=$DGif8aRSs zp8!r#Tl~ir2WMv4?Byd6&NN9KLCBdIJlNJ7%J+n_yw+iyr1{MQiw8U#y_|FQqE#R| zf^6_oh}jx4q1W1L_$6{Y*cKUjL%ubc-q5)@kX3s+@=I}yb01nW+6!c#I^R{SpMFzb zL~f-glX8Zfy>MG=wten@@#U(Ck0_7*m56=z8wjfj;Kw1H!)t$Km3_9z;LuXpE2*s2OOdCy((_X^i4u`*@YFuyZdg!x?^}& zu@hp?MX>OS6g!rp&G)CH?7@TSz8-m)7fPkg3&ULs98h?m-HM(0wHS#Je|BKzDK>v0 zZZ7lnaFms1o`uD>@3`1S;;T5n9>Q<_*Y@%Vs*Z+Y+f{synIif&0`eko*xHnw51|J2 z-3>-zub}YY2t1UNj@h05eX!xt;2Yx2|G^z9%t6x@=44^DvENHc&20%M_rc?50i1#I z8jT4sa0LiYN@W5QIK}M^j&+4O>1mjC9F>JRouab;r*kMLC;tB_hfdhkM24UP{|%-B z<$p&2ita0bD`6~nzfINwbcNF5RteUF#ZOeoYuy0?d?+WAb)Ybf*82he$x#PzgRxK> z`>#&ofufHYbYxS&d92ANj$LYwWyFzrxFJ=+G~b3x=Ja|INzqxptLc-r0v2md5bkNv z3BdSXo+2Qs0_BnO9ALqc^KfSl9C01B=cq1eFmK}Z% z%+7aS+2J*K`msmZek8htcR{s3gOI1-K$?$u&m6fq~ss z|JJ&RDQ7~UMclK9OCf=HePw^8$YXuv<#rmkSa42xT^dd*bi`2{NR4OV{xnF$1^p5` zCmw4L?){NQO&ln0X)<({2x)CzAnl!$EpUH3ZWOAbPiooJfj?^G+6KAK%2a8W3zehA z=DS0snQG5aZc{-%cP>=zcbR>6X!~ zgAbyEnSr>j(^rG2_iooNs#h?5$ccU_&4lJEZwoGJVZS_igO0B?$q|RXk#19qa8(A^ z5aa}A&q)egGz44xk&d;vOM&)T*mOOAnzsAe07xv=A~0R9=N{DX-O{yk#Vtx&O;y;c zhso1vhvKcK9dHPn8sVn$p_N{7EPPMjYsZ*yQoP>D1d3Kg3I0ddMdExD3n)zxzzBq%`oSsyx3B7VZ zTu!2pO#YffGO1IuK@y-{j47sB^Rh7jG5gYSl8@87*lTiI63Wu)^~Sq2PFuzb`PYBsC0E<2dgm50@(Qb1m7_&!0FRhboL z?|8vwIxbto4A9e#o8!6b`7FsF%YNM7i(>93T%v-@F`>Y%LAR4hCj0zvbCP{tz{Wor z0m(i$=6L9LMoN!|ms2~&10dU97f-rXP{Y#?!sYMjf4yeHX#i@!-AoW7eKxE^|CSTUD}T8n&Y|bP!XQ&Iv<5Sr zUz!115A$gH=jSu)?LXao{*l!$Gq%gCb{pH_L}ZWcZGfUVEs#)~PNEl)vEf8{A2+Xe zngXt6>{Q+P-5&_)BV{Wuob5> z2WESSyg!PTEA~sdfwXQtpU5J;Vu4@3n!o0*5v;K59MjJB`l$A_pSpNJV^rz{BwX&R z!M?E5k{XoDx;C(q=gD{?M4p7PSdsczUds+(}y`r8P1$!ku^(13>y&RKqfCTARPZqHndj=s&>%Y za?U#CQ>L5@dpwUh4~E)Fe;&X2|H5+}2-y>!!9Ner$29pr!c*EFo~}O&PrLV|WQ7>5 zFVw&Us;(x$C#Q1_!=%BVYz@bVX3$d@Z#&~3@#wRzI2fyqQ>MZeu>AST98Iz$v;!%w z^rJ~@eM*cd=g(EB`MlAYxon1SsYaugoe^&q?H+$`V_z zv+SdGj%`k5^f%~LOZOTOdt>F-d1nR|_F!=pHQ&V9)~q!(2Shgni0#rFNtD=W#75TC z>|@Ie{J)h6aizpAd$$Qp*MZT`xegrZb<55qU7Y*M>zQ12S*iIIdQ=)S!PZr|<)>La zact$v7D2o_Y|&;xoL6Yo9f@B7@z^yrx#0xL<7iuM`Hf|{Ticyy1s3N2-#QXl7|Q*> zl~C79hnUD+>N%?WU)QPIJU!yZtHCVL?Rlhab}@${y-k6m=~*^wMVy)^%7P{kS9Ex6 z&Y2Adq@=m|?_8kjNM6UpCS_@Xi#*IbomjLs2NY!{JTa7V=uM)t+B={T#M z)}{aTPDHd%oo+QtFP2vJTU^z`>&s$WO55CstVBSEM>pT9Zta#eE|3Y8`n^&%j-j|;qCA@^%A!K%3v_={2A+zS*I zl_nmazz|Wy3nsa|Q(aKu0-8{kS{Ky0puq)eT+r--EiTaFNPz+uXx{Kk*FOk~2pZ>( z=CA%uu6$h2t>&;(Y%DNq1F{icYKSmT$v;N>?V~pMrHLndQJ^%jRJDf^QME+^Trp~B zollH$qJoFd20jHLpBVZ@YuslYpEKR(0zRj@&ssjW(=vJIhoY}e&~kA3V{M4Pn@!-i z3R7n8M&_+9O^zagk0$580hVDt4ceG`Gu?gEnI$gs0&|IKjdKHN0w3DZ6)v}YX1=*x zS(yIUxE%9LYY%@*Bl`37y;!w;em%@4`l{X3w=>$@TI4Yd<^LId>|+#k9+BVlb7uI9 z(+~TWGM;~l=^p?bF#X;(nKrk*wS93rUwFNeS;163_bhstxKjfcN(}$wn}>nL&&>|` z8A#kvU@E%F-v5Rv=AP-28rc?eRc2m=?etPno@x7|m}%5fp{5l0TB>ozjgbQVb7IP% zNkX$5{KlwgAd_|lq8n+V2=lb7P~UcrszOmG@0;6}ET#G_S!!vtM3bp)*C1FkHux%Z zu`8tSbZwTH8ZAv_3Z1Hq@uil!8ZD7!(hhQIQ>lb*DafR?&BQ}a{DodFO@aPN$AWTc zn+Yt`Hf)>uh-_4E$+Xc@tFj3*Y_SGCv9(R!wBPH%^C0o*6Hsl6;4-z``<|=i4r)mY zdN2M`B#8ePFMQMsAMnDvyzo{ptn$Jey|CO1ukymnyzn9~Jl_jT2{YV0YyWz_mEY+D zCxk$Y47*~gM(~Ci^p)L_#Iak17cIlB+;0?lPF%Y}tkR4llV@VqMVe4e(m%bZ1O7*Z zL_F&#&=q%*zA}wUBD`I7Cx*{dwTVG`iqhOTRn3ib97pi*8~(xKcUmqP zqPAiLO{<}c-Y|vF6+lFSMu%TAC-Z52^h_O>Kcx6YQ8BzHa$w$({^rB4x8cWvjqt&* zW*>jc!Z}z!KxoK2&AaBh(sY4Bb-9@f5vxLp8?eIJ|7JX=xtB&t8C>L+LQGWBH`?veBaU{-oVBvzlYC#z~aI@z-VC z3S~A&BA=^=IWqd47fvMfceiT|qJ_rK^eph%o8=#Yg)@f2_=inwS>89tca-K4iTGJy z;dtjW@APp)aXX?H4iVIcxgu}kdQ=w)vhwfF&k9*gY+v5_I@1?CYuLWTBMf+EkM`8i zJ?WGB77g%q1}l$V{vvFU+@6;}}1hv#c{>iHUFgdk^{ZMf!;_-i#)sNgl%URdYW zPHZUXRoxloLXx^Xa*2Me&<>u<0HcXj)X+%8m{jQdVy!CNU z|41V+{M7I~skJ6EzHbfLb9~+U6-tbs2{ZV`>u%K=K_6hB>64)}6aJc=x&S!OE@Hf# zp~sR~$gIyj;SsK`K>yrg)t8)9H5E=gRk5n7Fzm+A3^k4>Rpql7h$`GR%@&wKfhl_w z*e9#NO#17MaK70%qE{yN17d%+ySuQ16ik=W zM0&NDGuTb@o4oKkFZ_cSPWHmzc;PrN9OZ>)5xNPRo*&jeRqv)~1(1&ztpE!E(ERaQ zv1GRb$eImgYX$hLWkwU5R%}tG^OcFAxEAfRcN%CZyNJ{IqC)-;;C~VS5z>n$@qcQd zdqo8$2{c*+wJxZ0L4ym{xIm{sfkidn5L9l+S~FUE2r?sdyjR{sQ*bpf zDjX<~Jmr7YOr~uxJ}MLoaa6QitC9KcSvXMq9PY#Zv5=FRLRDZ_uD;KR3{qx`)*@99 zomt3AGDubMn)Cn)*VJqR6mH%Pwv#)AtE@Rq#Hc>%8h~$a%~$;lEV@HrW1=5zE{twm zzxOMXV>V{bJkjQ&mCbpT8&mMcOg6ZaU)NDuue=J$h8yYsAzMLqw$0hu;`SBi()jQ5 zgRyF3J2A%>-f@nX57ZonO)~#MSzDI)-6Td4XMuTrgq>3YHT#i{KjSlWq1;?do^T9H za0v$okWv<#HHBr!Dox^J8_X!Y)2S)2v&JH-WKCK8Z)^FajhW_l+s3S!t_>U#eo=m` zc-3CEUgv^PZwZyf9;*;?UClcC*gBr4V&e-XsN&6g62XcF<>-iUg?wvhov*gdESG?2 zX@m|OX>Md1p;R5r`09Y~AMd~wA)s({_F#tiJX>VWJO#0lMSwk@Pj65|tl{aA@CM;s z6K&3qZrqk022dzzSlG%J4Lvm&HWr(OS{f>iHcsVKqFzSy<#mq6UdEE>XX;&PIz*d0 zL^uAFt~fhWv^mdfKe}<(&*t!n&UA#Pq8nGFGvR-2G&<7xLROs9KKN!n^2$ZfIXcmE zSg*qQC^j`gQoou&%9+UvkX1S^$(D;`fr_sr`e`;Dj}mz>IeLxBNHZliT~ounMYHwZt^WOAm*}Uz?h- z-Xle)oR^J-tX_WEA1wHf6lL2KS@~*rdC1Cg9Wley`WUC-to8A!lYGvc#h>l|PF}g= zMN`CN_u&Kh7`sWK_|ml?!xXEUL{#6F?=ree#XDIH73iN^exB@W_fri-n1Cy!?{uL$ zCA9wD)~4@tLah=$a|!zP5)w=2DdGHoFivq~kEJ#TPEoyG-3{qw*R_AnAngusm}LIs zGEPco9Lw0v;o0=I~tr{j zUw0Y0lOesLo-)wUS${9=|UWE+ajIALw-|O{(BL2_wbPQ zkuKsto2GD99>1v<^S-cjNUHpxve-@JUK{BX8q!#PxSAhg#*-;|5)L&BMO_Hmjiy*p zHhFI|*w%4Yp`Srh!yHMZ1v7J?zU4%R3*&{&UbvRf@3WORpl7Q;wElvfyKD`tx%lYT zl)0}j1QNZWFYH+UfgEG945=Q5BI0mcywTIO9d9b@Te_$ z&LmEEq_!1bi*2!`SC=0c{W5pumt87Xbts^^*m|6v$5y4@MQw~P?>++Jh79YYN^yu4 zsKOEk8|w~u+qWONkvmZ?a~Re@hMdTpmhtKnT}dAAcg4|nbT%Vd-HCmMx>oVHMy3tx zvPY64mXUoYwzOcL>66D>ctKbGe-dZ&->&?*%72LJSN_G>`8|4adppy1CVa{FM9~8* zNKpOtjcC*Z3%6K@GObZtA>LssZpzJxbeGYA2JwSFkTb+Tl|t6t`;wDr*jzoGRuf(G zUTEiZ;twPR>;I(j+yu!cPbSNT=i6nG1#PfCt}Ls`lCJeK)!LIg4S75bZIRK z9m`upbCWA;G*~%>E;g_HeLJ4)d(a$kRloz#R`u32dxtJrwWWoB(J`8MyW)Y2KSADRVnHnG-Xr*WH90sO{nSxyT52)DRn67aHlgQQf&D}Rb8Q)my&dnY^Txr@vj{PZiyU|aT;%*d9v3M;Oepma zZBO(LZO!?|q0c!I2?pdG{agk)8-XQQ&)I2Ci=<-2wOafiHCZkct@l9fNJ?vk_9TUY z>Nfa7=KRoRj9X?Qa>AE!h1k>+GRKJ=p>dSH0(rS6O1a3ImP!@RE-#@B3DH^coxWRr ze~8zpy4IEXkxMH#Y+DbKY=qp4;a&r?^YcJe%V;WHRq_!oC#S=~&Kiwz`~)oIM_u5H zV$tR95WB1_wkZ@}UQcNgJeEV_l8<~$T5pTuThK(MjeHm)`&!VbgnWokbht5)Dzce27e z$4FKvYhw16U_Z4U4*y{>0@>qG2y}VEz||GAK4f?B?+8ZoBL=Lh_<#!9-_Nr+LFbuD zo?#VquzK>_*uIMGM}&QVviGwYBKSyf)PJtY+vP}X@Roy9&o*LkmaOWgZt_b;%e`G%O`=d_V#ZT4e#`t9XUw%v&M{KFyQ+k1l@e;Uj4)s4?&fIQOzd4i_# zmg}+ErL3E;x%P3mIT=|A1%MC zdfm*k!|}bebxK4&VsNo2EsHg$Mu#e9eUuY<5fZuWdN36)X=;HjiE+O9bOzv!7T}Ws zxaDk@`gB&R&R&A`A*J?rskdjPx)C{3sohA;;8gfTG7c>CEco2-c75s=w^MMX*%!s_ z?w5G%c#In}a2>ZgZWq4`S}mdZ;t*MQmiIb}sMNsK!wEVB?pm2RB*7fW!IvSHv^+Br zzxOqMmY`4yC(hX#-LcQKQPEv_<>BbAj^*b>cXbF<-$VLR%}&;H%a0@d@iEj(Yfb~6 zRN&}`==(LkmqKtk$y2$4v#T?vDA9&aF+70URe~ag%J!h2jdEWo;zmWNdLrIe#QnBX z=W6{Sz6Y+B*E}Ha5{|Cy#0sw0DRTlPA15DO+DYv_m_a6A!bf~=1qn{2tKYFL``UYi zG5a^I>P^#gJS*PAzbr1bO_^CZvE^fCYr2q!Z&5p>re*GloI*(LP>AI(PiAkg9DRQV zw@dclUC=p(+*8}-cI)j%a+_Z>bv(2!=)mHH!1LwlmX}F1&_${luqoZXU!0b2xSEBt zoc-i1=h1Ar<{tf+9Gy8WC$e|6z7BA6ut~t$|L@tLy2dvP)XKEjhSt05TkWzHQ#x3` zm2950w971eQ&P~!q4*g1^z&BIjNPn2Qsyr-o)@liQs$+yL(v58p=SKf z`QwL=%tdphmU2fZUC|brdGBtMK%DHn+Zjo;aRPDyM%gDW#?ke{220T%)p_;#y7?9J z=)@ih+{-8GW@KwQTAOX=pc3pAI^~E*4A|q4#KD&x=xRuGNVlC!JrGc-(%ocL!t2xohta7?8;ALe{Rv= z_}+1#?iTCNt^r%W-MoGmitXgQ;?k!$uSi6GH1ACot-(PKT)l7EkFh3g@Fv=a){tsv zPHegP@>WR4mDlh6rlfzvW8yVhNMQXtItNO)YU&S~*WW^BnvK-&z{0tYlG(0i`W;(T z%g>1|4d1yH@8zyu(hhs z5j4&{KTUk@bj}C`s_k)bqJ*t~QGR$Rk2+b|QWV*rUCe0gQ%Tw{lxpI&zJK5r-<9DY+MNXJJMq_y>uKlWu3Q8k1Y=$mI?~m)a>IUmHw9zvhu7No-~&_R z>aPh0u6qJf0tBtAGOXq)#+f1Hm`P^iI4uw*wbqg{7Mvv7;HYPcNA)-|1D&kmlNg>q zjy5llU3Sl9iECsa4!bX5QU9X+7>(G`B>F7!TAM3&Icuc2yiPZIo?%V$ny3$FI#bQ% zuIV+UiAhskT{@3xE$6YEZRV4)nFWK}rDbbMW7p24E)9b&3A};lxn%mahacbA=H$hY zETOtlvAq&DGmF#0oHtV5^ghI`c?Wu7cS1S4MFsEXbscpj2PkXn!6aF8`c3+RZ@!xB zsf5q?nN{NR3ULA&{-=#!ZxWji($ZjF;DIGwT9x@hM*N%%#S}= zUUr10Q<`zOS8}nrHp||#jDtIsoVGwob>=wgu_WB?6e(XsHR(W)_{f$=HZ^<5H;&+n zNfW`P>CHFOwX!h#7Q(*5F|xwY)~HsPyvSG%%d}4zo177j{eU^UyL`zlOr0-nI1Fut zxLOrh*yuo!rP^;($Csnk{v z>E_MXTKGJH^eui@n)*Kb3m3PiADL zi9w%Cz^_n+oK;j8QnF}*{*-VN?l*SAIp+{meQ_q^ z>&mDzc{c?^q&}QUeO#%!Bkm^T)udjUNsTF0dpn~0kN2RBT-WlTi`p^HkGj-8bU?0E z>0G0e*Yo>;^zWkNmHa+B{d++20)C&G{#}^lHPb;y`;A8mlBe@~oS$CapS_91A@d95 z_|T_2tCS-C95WhazMW2zgCWv8hz2_m_v@_@01KE<%cVod`?0GrmvJN zW_lBiT4s8;KEzC~Qj(bI2*rq*-lq>S)9(5ZGhLt$G1K*A7E@?E2qoXp;y!tiL0VDk zkEJbC1s$X+(EGcM!!2}ot#ssfS3`bNvTHhC=KSf+mdelc%I8sj+L=MPb)NM|BWJvw zBLf}Bjr2=41*38gQr;jKqHKCJ(Dx@;A_-r}*=}LVk33wLn|#QhqTc*;1FOrh`vSXs z-*j_L>}6fxL`pdGV@r?k7R-Y4;W%Pt{+_h{e#>J=NHBy^t~Y!2k``7ja(VumLdTiM z5TLADbn`9QijFTdX!Ymu*Zilef8?FsByahJyI&=Hy;dGGVpjkS8Tot)EL>|J1gdRU z-3VLVN@aSK>b%S8navNKR)2NYxod^CeCC@{*Ol&|NY@BsubQt96q|MT+TDIj`Ss2@ z4x2j8=-pT%MuZgnp59lQ_=7sUaFFhKe4fl>&HMp_KxdyO9H-}xXAjjY7U5<+lH9XW z6*wTK2nfU=@%p16Y#Gx@XaBAFjfG_*(%!DPyA8!)pN@!hbBVtiMzKhvkU5I-TbfXATrJ!Ud5x{wvP5#LT=TunQ$!mGZb^?RknlU{2>S$yblrYR}JV`XNXk=%A?F_NpGli_ma%ecQ zs4w4GJSs4YZN`Ojm9C4;HBo)hp{oe!kb+=*ZaG0Ls=sMM%}t}HErT8pbww2$R``+B zHPhCm$7i3d&}ZBlG^Asek<(Ro)sMUSp z;A7Ezms;ym^~+4Ose$TTt7=_uzJb=@v@F@{P4AvU=X&!5P5TdsWS`E6%P;H3cF8{c z`hvdf!>>>9rL>0?V+GlJY>Z5w8qCn&DRsRWv+*FAYFqw@UZxi-0?f>qU8|X|@iG%a z19hAw&gmS4#~VaZjh1xz%1I9L;^J{pbNtSi`5Sw?AMR~Kc;6biE%t)qWAFCE-RYXZ z$ai9K<$zK4x^NHvEc;zlVs4YB$KYl-7@C10eB7J{3Qj*D9J@^)!NxhNNdHjG;#I}P z#&5IDz0vO#uBi!t4}Y~1zK%^_zO)m7+AF3 z++GW=Gi!$`NUtAu|H>}n@YZNG**OV%hJdAnlgcU561cVGkh5TLT1d_mRcRs7tT+2} zn#g-CYXb|dy#h1vwgqHpXwK_XVAqmhjg8=`+yXt5o5zKR`P84ojp>HwPIf`@vOpD0 zBAAVhB8-xzaBNNk85Q+TZ}kJ^&WNer`vND$EAAq3aRsl6CXZ)FvhQu#>;Jo?1?w*r z<^QJ>+vNhj;?{mQwlWx-lQlkQ!O(+DEetFi$F1I-y{8{3R&*Kn2ChX!LL)lS3_L-T z*}dz>`%P1mA=RUg7U(RbF{Do`R`W%hi*o$EQ>9&0ZJK;;Jz{g({+AjerN0a%6wC7t;{A!+rlG8 z?k0}_$V+G5W(IozG?4j)Tq}wcrUgRHk7~ksNnY$Y&lU${P;IN6fSFD8!}?i0JN#0q4?R3zQq`=7|b8jd4#yN zTvi9FHW1<1`N%@FXd}5w(|xaSk!T@!2#{M*-D)rCARf1P2EP9rIC?5>lEt}1Z+WdS+ zKJ&b=#tSP5VHwV3cDfh&dlw0>Yc|(t%7gXGsaB+O_@_?!F_JtU0r=zZ{MA%$k|+?0 zt+D$H&A3_t2~pIdGOrLV@48Or0Oc2=jD~SctR-Af7C#YhQ&X{(8;nGUSJw*7mm=2P zU<$_HSeE-$AR4D4tAy&hD3+PyCBz2n51|Jt`UN(Q=QVOESrwR5dFYnDRX6ay zP-DwqNyYbhY5bb0;dr$bVN~d46>lMalp2qhYGO4AG~qn%`D2PBfUwBM{v{4 zd-7z@;2z4>ucT9mb}gNoA+;XhKUm)vBS{R{sZGJs@LY_FK8;m2{|U4Rc~H@5B|pci;mOmRprnWrCxL2({QDD!m^C$N`}Ou zvoujM&v~tS;}NTfy#P|Nd156s=Ff|u_;{p-<+8x*zNLgvY^6?FMlKQ-}rwY{^`XwJ%G0XkaKd6>Qqk>L5N%{Gi|$$(Oh zP)Y}HnR1iwAts-DCcP7h%Jfr57jCtoJsDsC%+U{VGVlv!_|(hrfuCX40+TOv!KQIZD{R(8(28UihCySBrE?d z$c>Cr_C(2A5a$)?Zh+!2IO32s`!RX zD-Bnfasx{?# zyNs7rl*Vz^9w;d8!&Ngo8+ZU+r<1z9L^Vw?5EP>8&By1qp)t!1RNXS+@esG{rGG~@EWkU5QzV~(_sej zu?s?pGuPweWqrWiBJv*+h+ouaYHL&!fw`vCpv?4ItE)Pou|%>eYS*jl#BBmN(nGCO z96y08nN}K`__pMa;yzP3lAMATc3D?7i37rfz?64|uJR-JMJ z(DJlFgP=T*s?eQ8Sfc<4WsumQMX1b~fCN-n&}>i20O+d}V$mP3B z8SB^Gk$-enU5?Y-y!wnFy^*fYRaZMi0N`8Gbsq|ozOo4@To0(4)c9)QS>IxaQRKv8F?hEkA7naiF9QVfHy=_0GlE;Xd-mb4h^;ON6 z-7T&+x4Z?%w(r7C^&+Jv=rI=V&3mN0_e`w9^Stovbgm}z?fK5Qtn+(Tnea37l|2C% z8p*l#3}|Hj8ivEn{4AAfjfz2GO>huF#SKF-7G(>%MVJp%btaA(<}8FiMwv9{R^qFh z0#!Ppc|wNOf$Bf=Db3QOgm~tznnS2Dx#cMkEQjTZ$&Bw;=9V}4?L8v`dz4YtY1AKV zwUt&x!X@!%#JYm`G#a=%Sou>MKLVwk^53RtRdG30knj^fZ{lQ8GEvIBhhcyfagZSn z=m@eQ(67uevWBC}=aV(ZdSNp=pS19(3~dKfe^wfNQE%EdD4T%ZN+uDczWcGaRQTMf z6x5=TF=Ap%%}6wH$f>Zw3+rvj`@3J6WpDU{`G|{z)vduBFRQag^_OGZR&m^#?C~1d z&}y~Kd69kV!AwrYY#x%tY)L%cDj}s6@U%8*e(cWI;lXwpieSw;oBPi0xjeW?RVS6j%dJj||@n;*TnoBc?`D<`WzBX+-RyO3v@)2RoHkySLuyI{DepjEh_Q!kW zSA-L{+8-#^Du@dwuA7Ns2QE6~drrM#^K8a=ckBkdeLfb9{b@((EYzU(=4Q%CRO#Sl zPj(BrCn`gYq%i8bbB3YK?alm<>DOf_^Lzj%gcEc1-LCx|R89S8;O=nk)66X@jftIW zw`VA}#71x(v0EtioU$c5+m_s4Dm-guI6exaA6rK_v9N+XG#?5Sf5`v0OJk>V>uP2= z=Gu>0@Fcok^C2V%q6TN||HJW{SQ=h%3S$`&v8=bFU&N>9nCsmIZk_T5ohd#pFpc3uC->vXh&Q-{^1js&kwAAZvcWW z7AZ5PNG~P+77TIq0taaR+O(k&dQWsZNMeS(CMV#lF=VR5pc&$wiLuSg0jkA|cgu9Cx@pdE3Hr9w zfDm9iZjN>dLP9!Wrb={m3HnYaSj041`~VOWSqDzVkI?4Ny8P*6`nois&b&Op!e)uX zhfRn?_pU(yRH6I?RX%MG%l?igk(w)%(il~sf3DR(s5Yly);zeq)h!%zy>PY{&hWx( zyzp`_yx0rJd*QiWIFiuLCO4luBXyZHzMJj251j z_fJfN=2c|_&Cig%Csrw00q&-E#uxX}cYLljx}`oAr-?1yA7^Lh&u8o3S+WLoLBf{HAMfh|F$13b_+#Bh<`JW)7Ijbp?JKR zJX+_cgyMJlD7gsM;80>2sEn^eL%!qef5=X*Zlu?FPS%J(u=wA1$F@1Q*0$Lo3*paY zf4AOjf7nhEj@j_{w98Hst!gcG4BhT$Qf_{5lYe$T-XqZ;#LvwSEIex{y7b72>dF9@ zqbK_HfvL&!@ZEX(>BYYs7CD#)ymOK07+qdYZH#>BJ!~Y!hBtSGXUaEF<({G3?(dkKZP=G* zc-Fe_9M5{6(1XvlZz}cR36D#&a=~u;o9+}Wjh`&hqKBO937utXfN&5Y3COV)p@7M+ z$j8Z~*y2oAwIwv$Kiv;SzK!j&STLpv8H%Zxm~J^sKUBb_Lz>G^KtDz&nF>f$p@ zwxoHls<7iDRNhH(I>Yi>UE8MFe-7m5gqIk-zfHb9={3{_Z z8-CixCD6~c6JAp@aeY|=pXiL~u{6XB0DL(OF1s z-(O@-S^m;%90%8n8TJ1QErKt;~@XUJwzsAS-J^Vx%r-nPEtB+o-h^G4bQ+3@+W$xIT=VP0kL=!8ox z+WI&!Q)V&BP!9=c;vhMjYm8K+9uCsrIC@Cmw_vzGa+Y4DiObbxb2X)eP0X+xO~IG{ zVf}kuBi~7%Ltc+`WwPk}xP*Qr`-h{vjSHE7VPo4M^Mu3KP^s)3nQL}6+E~c^wPbHr zv42mIjr14(eQ|dTE0${7zS_$9RI^)U({`rW2ukC}%IB4v>M2$ndli+R?MsB?=buUw zkLe*d#;ZZF?u}d_s*RDA^E_nJPLpqMX2ge|OHj40G*Gf#e()uOUJazYrg_#r+}q!m z%(aLF3j!2G0Z3)PtJB>SNpk&4<^{SJ_bCh%l+@{?fR9>f0+)1AZr}3bJG1X$)*gU& zY&g?w%uy=#c9_NR7M+0C*m(A|>Zkgbn3G~@cs{cj{lUH=;7_38mlEf*!y5RgKx^6|ToV=Kh-0P=s^p@kLjGnxNlskg4 zhG1p0AjLE}xY8Unc|~r=$sB2QtZcK5+^lopC&*9``CUm>L$F@4#ew3+z``B&;44u4 zPI0U;SqAmJ1N9AD*Pi&6Q#5(WV0$ChuP zCmJcATG^&N(@zef7mvMLwK`D!0=a17s&-9CHVxK)Ly|e{-&<2H^Z632`H|jLtAq8b zqc~8~_*|}QYx*(C=O!5=cRjYwms;(0E zD&2Fut=>?zI&!SNBTWUTQb7muf&gTlp@%i67^^O?P!k|ml|c!UOJbe5h_bJY3(~v- z{N{C}o{cTXW=UD1PmI8@cWFx8VJT#1-gLz6${iks?(is-A(;5;WO~>BMzqRXPeYjJ zRNxZpu9d))jAQGY=+vwrP|R^-mxKTw_}=7sfSQK|3Q}$t-UaW#!2?f$M_LpU8Hka1 zqQ(NTBX4?O@{k#a%s6!N&>4pX{){?mxBw~dK3s4`I%npJojdRQJf%H9@oW_23CY2S z{-FsNvE>~JaIlPF1bPE5P`oL`W$iq`EX_^E#(t3W-_L!$LwLw%?nzb5KVI&4Nw6by`*j49R4x*^Y2xXBD0|3iwWViCEkCli+(tM{4RB;)d) zSMC z8#uXm$Y$aDEa>Zdp4bN8#DMR4K84TZv;%~n-{+7S2{3+spTlNU57)Gd1pJ$CMS<#T zKvtk2SC_w^4D22`oJ1H zqq`|+H>3aCd_HY*Y{uEiW4*=hIgb>dNFI(TelSE+ua#x7T|SDNCdbY_+a8NpyYHR9 z&1ULf+kOe1=Bf2t+u42pFX8|7Tnqmw1^*}bL;nqa5zJ!oqkx4!l!5>B{|Ww0pZ_fU zs7|IWvxYLgeUC%dMTzffBhHg(EJe{*^RPkZY%j1#>bv~*ww0Q;yYs)k*4$w7-4at* z>dE!826l~TCOdyG^BV_Gum9fP^nL=9hmdxV{=t=hnC%SzO~IXRb8)gc8nqugW~&p1HVzKD z1EzxVgU!AqX}2WJG0MFzoYK4tgM#+3arPdm!{}SeP7&P8e`3ET55&J)fVe(i2YcF& zNYC^%Sq84#?LB$QNX0YOwt{`h1&|qXkxt=NM)$#Vi*~TRyDJm3l)2(IX$oi6LHg{1 z+f2W|10kRt*&;r(NB!u_U4i;C{6aRC)RGBMZFyj9Gc6pT*v1|vA(VPm%U87=QL(Pg zM^mc;jMQ(xwj;Ifd`9X^l$B|$+IzuH+ZJECz-1ofGC!lti(Td>QlMI9U(6l7$E^jg zxrIEXu}36@vUlZFsq0IVcV7}DPMd2#*^0%uFfg7X+-%~j%oa|W62kOofG-liG6NK; z({4@q^w`f@qg&}tC4Jim-^+D8kJ1;ixkrXy`tJpn#_d_IPRH0lrp&NgMJyK6;rQ}e4FO5r&1GBYaxASQ?M{73)f@fhoZjrTnn(!`)T0#y7OS^e`!38A&8`5vI` zlWq_ERg`4m@baitFLAa@RE+*v?z0;Je*3SS&&w17teDvnxT4#vozLX9zJjv5>}u}_cE0-(B6GNnDUCP zCsv}H%md{AFZbEcpp8K{|Art?yhQ~}>PVOOR<8zgSRYY%8HTCyVtZ|YNbrJ_l&Spp zaEy96?@_^43Uc<(Y}NyPjpjO+XQZ7SaeNiTr}jnnue{}$R_rp>DuC!0FI#}`5WxnA zCTyyZbFeKK={Lpik z=V7e<vo5GmUgp&HXESpuYrR=fFOelN=!$<^#&;$j z{LMEHS#nj1{_QElSbCJczs+2NZk(oMNT!FKWo2`K)k76c3B~J*EMfBA$?@c}FTdG! zGOPXB6KH(X7q;=&&!q9Gw($`YY|C-P0=F9PO%3S@xqJDiT={C1ACO%>Ykl?gGkOCw zz89*y)`}|H$PZNO>N5+dnS7yBSxwV#&kzxdEDkepeKJu4{aTz^B`dSJqjt-~+?nwg zF`GtnxEQiqNCQ>6V+(rB_4{kdW2~)Q7O0YD1Fvh$KF~CEl2f7LOzF1=Sh}7rJ?lc= z8Zo`!-3k}kW)7qRO0TtRn5K`KdQq%{u>UA(w-D=!dt|Ly+S%&AW-GFkd+#`$kQ`F= zFN^1&%BVOWa51>IViwp)j)T5?Ps*%Gj=tYhw?BgfwZ8k}B0Ga2$uks_==$x&yBB#= zMgA_T?QgSSgz%PV%qy+VeAKhX(#?Mt zo9yDqe2ux+k}(_b!l;u#^Pm11dN(I+62?YMGEejqKBJaEqc=>#m}aF=dv`;jeEjSt zvuDxUiX6HJDu-;esNAmzR4#kK&KITVA4`C$HRFz@37jH(6uj3r?c_;+E%EAW*tU=N~!AuSWSbU!6HGM@JXIj3Jn2@`HTLQ0zH}x$Ioc zmYXht`8LN^!3z;{MpwEeOf!vWlha)mk*V@CD8JU0x0hATg7ZB zW(Exj-;RG&Hg4CHh~H`7Gb%@UP2c2h!ec9c`pmMG-w%bY93aGHOkmQq^Yi>JlsGq4 ze}XEH?g-A{UBOPTM4D6a;`$#w|7V;>w>uA&^~;e>cB}E!J-(s;^Y81Z&CZA2^LH}; z^&*FV-tWlk05U|nE5peUV9U`|!j;3liRH0UTO;=ynxfkCzGfrE zN3cpx`&(t$*<^le%Ki4%L8puE_F_g}?ZuBRI7+bwLri+9AdJxm#N~e3a3mzdko_^VmUw9KOYVX%hJS`zs ztZ{HS^?KQmO@V4@OVeof(1=u*j~ps$K9doCxW-ca8+0ytlAqU2hB+jugYTKAl*-xg zpy}zTdx=UhbH$dc#BKcD1p(F`rrO2-&4(CRl`7 zVPrrz|9!nbBF&06ckg4#%i2+%2OE{-SUw&k*>y*DPolbu#h`%7ADb17EA=5BOD|1D z?KsFj<{{F>T#%5m?+}{tce*i_RVD;}6dPe^D_6Bs^?_i2>m1oZ3DSe_vTfLE1XyXz z0f$|{pm)ecmhDuhM^i))C$@)KtAkk}?m;{I2K9JLPRkf*MN=jR@N8cjN3he-ydWC_ z^T}36KImFk`+d~jQm80~>%n*2aNq5P2}0bhlM=Nt8nI^cI2Y-}1R*n0u1Ke>W(#a<8Vrq2h?tx{>cQtSzOsb%Y2gCo8=bC+Fh z165}cqKsmfIjcq&JtTY;_PN<}M42_$r*}afS+TI5W=H@P^WI>CCEdzqi9f+DZc>wuSnw2@Tm23XH%i zr=fg8>5x_B7q!Tw6@_vg3hVjd+_ut=k=n9cZq^LzWA53@cOGi}*x?|AzKKG*kr0k~ z4+;%cOEI2Chds5tsvNm*;BzY+YY6AA2CenF{I1=Tj$|e_l(KjF_Awmaz9-@Q6$T9? z+S^X0v1L;%2|nhW6+S)FQrE-^Ng!Mj(ofGupjsILTv`bE#o~)4in(wuaJ!!>8W>HAxp7;<;uC%S97pSc;Kog)M^N>d)y-NV)P^lT*uN|vp< zZs`5`*hK4o=qw;zWBOmhK3V=IV;#crfW0ccy8Kt+j@?52nx>zHynW%X+MS#ggVbRC zBL13dUq{}SNItlImYZ!BX_w6?WkE#hkYzL88|CGj0D^0A(XG3fvH(I+; z>zvMAx}-x^`my@9mi;jRu`QjIP^I?|zP@p0+UppQ)k^Dp_6a|vmb(f5l_}$g=1(ov1(y}^cMtviSIY~DHX}~4 zR#exAQ~!v39gL4CpKz?FikW z#7mPj)2(&fHuEs}U_%2tAG=1`y<{`Ql|t*GW9`pPzu6*W&uXmJ91F-+>zzH9l3kp; z%b%K9kGu&~Yf{I{ch`Ee=mBRvww~0qr0PD}(@W(hEd-zp{TSCn?ZejIP2R?m`6T63 z+?0D@pjzu_h>OFvH?~t|#F@6Q!!psbsWKP2=%donkqWbRgw2}v0cuv*Bk%IlfHmu_ zlS)pnLFzBg$*5`E0rYhmkB+Z!a=5PLb|5K^Tl=lzp^u2)U3XTxniG}rbXUz=XJ@K8 zibBEq8F5%Vp#*jbBxObb`8joGNK7sikQU$gR;~ zMH(Vql;p?y$=ox|9@JF6ChE#s0n$X_NT|WVknp0-nq?M-fL##H z5itp$EU$vfKg7PuJK;-Smxj|0dI@j>!q4EjVrdM0*k!KIDF@+*a9?| zS0JdCzq3%KYZ|S*yY{ud>u(0L_R8@>d*!%KVT0+UVe>aIiN|_b8d@g8Fb8;$R~^lw zOLr70cKA7?t-<_6Vvmbv*7sGB>0Z(blEkLof7x}u>KWxl-)?fRvj-y)91wqH^1=YB zgLT!k8f_dnBj?o>+EkvH zu!47>Du+D&kRcjybK65>UW4f%HjZ_0MW>valABkRL^UyLtU_$_uphYCDRoRPFC%3Y z>#)XnrE2%1)L&PXJfczyY^lYRvX9LqN-6-fNPs3vm{ipvKJ6t?a4)1Y*FFj*?p6-D zF(|xR*SP~#*V5UFS_Y1ZMkMMP+2pY_o{~YByr;)VHJwM$w7pOjqJU`bYrJnwSZEw3B zR7(_Z)@8S+1Z+0*s9}kwOUnR%&q$!z{GD}yEJS!ss7%&a@ehv_iE z#1;^p%`9A@o6nDtPmASig$%CAnzx6iQr0P8xZ`r$V+=>k6+q-rg>Ut^jZcjppn>cL zFg|YL)}MfRd75n@Q1x*pEwHd=0lzqV%XzP2!%z9|*4W=I|Jb81-|i)BcC9E*cVI~$ zG6n1Jre|jA(rmW!$Vry1{C+td9K+2Zi9okqEgt4ERLfo-pvD&6Sq>~5`%#N-x~J1c zY34@PVz)h7d{C)vOVr|nlSIp6_0QawUJeq&#|-=|75f~4zrlQo)lAFV+Zl-Es+BG* z8yrNk(FPa4b}^}W)}JF%Vd5b^QKCa`aj*PWs8Ul z*1tuuC2FgMdwS_smRNp$w@MulTqd0OW#uqn7V%ndP>LLJiCy#HGoCU{TlIM$7Dd3S z>#QPRbCj+6ETVM5iL*R6D;llNo{D9^@M3Uzx!Oo{U3z8)0}Vt4>rYgVo?Hy7cA$;a zPW_n`h*M`IhbM<7&t_MW{FNf_RV3F$xc{cFfyvRyQOSdny`&M<)}q2J!X-{}-(=6^ zsmWh>(%3TbOY;{ccq-BcGkTI$6Ev9_eDK@@H4ayeU_kZEH`kCIY?y6-N^gLyyk<`q zIGkCbiIG!2JzH91IRIPCmQAK^uwBy+_af>{;B*^-x)Xd(TWA?j`ES9+v%z+U2#z31 zg^ma6GX&uV^XokNAhZ1I+ZQUfI2@rums7~8+b3D=KCdC36j(GC3)l$0i?*4$U;bnn z?E;Em^14Zv$>_=CSTNt&%C8A5w9kx3H*(Y-;f#KpIr0aO#UL_|MG!(!I+h)G*`~7i z9HAl57nfb#OKN?)df_eg2z0kFmz&9Y5$}zn%z#g`!2VXiE?EQ#pUiKc?o2*ClwMH# z!5g>jNVN=L?3kbMKR0#Fms}(xM@vslJcez~GVN6DzS7)czt@{H@9_0EzJ3l{Cn`Oh z)2M<_e0(80rVs#dew*wwaJ9G2S>s{t1#~;P%`6*g4?WJMv(4VqfQp`TDofGATsS3) zAdj7>3#JUf=<512+KuOJwzrk)?OO}m9SX5`vWG(HUBT}Afe9AEHtiYhDeZ*9()g1S z?O2ftMAEwo_2$JK?JWzjs#+827mmxn$xBKtO)P^s!}_=!vvaY|WmBVh#5dBrztV;0hqg~8qEf9&9nr&SvGx8`Gy_RUv#^uADjPs3MM{bb* z{84)zBbQq$MA-@g)6FZm&K69WKfGYYWHmnhZU{ZGOxZjs`MG0UD^>tY*JGFAIlRs& zNbjT`yh#+&`2~69vw0?TlHNCSi}mvTG$QNzxva8K_YxrKS~J3{BI01?J%{J5ks}Jp zN#@JD1Po98u?<6BKgNS3oTdo0Uepao00n(i3;p!AG79391fWP78mX9=monrc>0iR-yw}9J?p$Gf#y&?Pt zLh|}=PV->b8m#dfe~uf!DxfTj&+_vvKSEI7*VjR(o9WpI?BKy6kFXlRzdn~9%g68Z z(Py_i#_P%1nHtQChr3!&Rh*38aQx@Jb6Jt&^u$sPn_I8s>|{t|AbPdUDE)Jr897T* z@M}Qhh>PKT@d#JnDnOQ?+`~d+1?&UU(0r@GyugFTo{+d2pw}0@A)Z6|aH=tRv)yI& z9F}2Oj=##&o7w9H)~J`s=}ohcI8_JMM_#CWjA&bS-O%03KCQBEK2O;STefTc9$A(s z%L1|_acb0c{vPT7QhJTje@XhxJ<>l^`V^&e1+MFaJpjoF-B6$_?z}yM(d%n0)4t;v);nPY!cwp>)WG$mSLqs9Ai*Pv0G%->Ne= zJO@6<^L2J~*pbY-{(K_p;eRkaI*Gf*1Q+9r+p)hu)nGEw`a;{f5ib_#|&qeM&s9zUu)b4n&-Zs)tM7Bx)v=mgoM7 zkc$bn|L%FBuzP$iG}P&ztF0``UYjRM6PozAF0p*S{ToH|sHfd~Ltl`uPLV8gI9yqz zHD0XD{MOBo>RX5i*6#=2TmH(Y#qEhhcE{~5uwV|avpm_dos$>-lxjhL<yo9KDsKm}>kK}&If@C)-0i6|H z>x-T|;-=WP1Dzi5*&3$@{D@?4#rN0yF`>#$Yk|Ruk`UCFrn0NsG0IONS8OW8WV@=S zIJ4#MLO?_IfE_LlP|mLFfvOJV4J?X$31KRO`OIUBvV3N5W?zz6jfCyIVcI$pR{Lg7 z1`k?-LS557OZK+doWqDJQ z+nSsfw7SZ){MDD7<{#`Fl2>{uiLT>OE%}#c9RD67G9CFeWIA-W@^(9zQ2E|JmolA{ zkof%9o6x;$m(jb|4_3;qd`$!A339Gz@}G_lzI{F;mwwN8GT>9l2k8{_u{|Am%$wuL zqnX0ZkXD$44%6V47lUW4U)P(#7ic9*o|;CjMa?v30c%R$Ahy-%>zGcmy-Y~` z{z;I!uO=%N2A${l^gU%PKttCLp@@4i^kcI*^;kFk{!OAH&7cLI_Ue6=o3*(^ zAiA0_?V7Be$nTC~p zRj~dsWvM4in$}cn@&xkV-#)+F6HAIWHQD)35)>b9ZSyv~7RdB#i5Yrw=TY!jnib*` zbFKc$x=OUJn@~^YgA5XS*(}us?pF=!Dt&Q z(9pp;g}Jm>a5<%O!qFeQ1?J+hAm^M*iyz~d+@zXI|sJ4hzJ){K74Q`*i}fkh}} z{=h@gR_T2iYo1ncrsm&y;e0Yj0b&u|UgdiTN9l7%kU@;_<*d{#uXw39ALXTvB9%uR z^W)DM@Fo}jhkWVa?`U(pARnokEYVpNg_f*gE1(Tr9az{SAKlmKqnlAqoYJjm z@b|hbjLqBOxYS9lVTcB+l*#i95z5s;aL!%Jbf7m}$x8tCDt9PqMB zX@kSzMsd5gkM43)|J`d6ftdrmn%*XVx+a_QmY4FPYQiwWYTUWuo3JNnri|Gv5T5Fu z)zASv-faheF zBJskeJZ@98SRLn5bP!-u5~S#gvg;!5D&iy3XA`+l-DoQB+E!D29^tC$G5l4N6Z|Ge zQ9P8e&@f93(fkqw{MzDv*(EYoz1{s%eWc}(WieV0OJ^SWsT6j^vsj&U$8f9pM}Lm+nxe{}!t z+H!19C{wdB{o?h4qCoYJdr3g^Cg>y@Yd1k#Ihn6mb_uav1Jzrpzp+}gt*gUk4WAa9 zXRsx2v}icdr3eQ$%@k^I-l6MAafdW^R|8iN+RX8Gb5rVg1aD<0mf7f44|_AQ zYZoD9>_-r_T?EWUG?9f3acQt|%TdC{U6%hpf}DOT@I!s(m$)WyXb7$lN?3=FQG6@P zMI;a`Yl)Pr&_H!ZiUgPM&ClQp8pRvJ4ZT{v-CwvnnWHFgEz8F?#B*#BsOkx>D;^OW zTj57Wc%L9HPG1^7rx1SNRxXB&2+PyW4Tq~8BJ4a!&;Y}wMaUbj8*G#Rg?U~;hW|Z( zyy$n1x`uWWE6C=L_W`%#kMqPP_T-P}>TmcNimv23@{YpD%l?47 zRe$og?M7Y8J)?ftks9>~*fsxtm{Bicrev=>dyw_v%3zlyB`u-B9CHrdn7x%Jhvard zE1LIcld*(mHD}FYiE^7@+(L5;$-t^Z<0~0}ss^Nu;b%ihRX330iv)!LN7wzSF^MF` zH*R@dY-QzYK*@>4#rd8f7Zi5B&Q_VN;h;(0?miZdgFOX<5 zC0eySWlGQy4IP!^bA%EFD)BregyJ`pmo|?$(*0f{b~&OK^UX)<0%HCvUC#BYIDE9l zpZHPLbmHvb@5R7)gD+fY@W(5EJSslZTCsp`6!GQ)L3>sesNSp&`sm+miuTqfjRnuS zQGX(*keXNgqc|t0{tEu!4`(~~;h=Pe#gnfVYmRt(eS2{2H0J(P_(NB>Pxu}ZLNCG; zS!Somhx@sB&+b8S6ww-BhI&P0_Yks%+XQtrK#%dwJO!TK>xcqZ$DhgQW}nE&>|5#> z+H93~@}Sv^jzK^_j%*e=ixfR(dID?ef5m)PWyo*@7(k90f=@<9Tx0t!QrXW?anCOu z6~9KZN5zkNU_GZOPu{A1UW@;FnB?DpOnRQbAQf3!{}mBjt#jqg$ip1z%;vXG`+e2E zICGk5xcyIy1>&~XQt$cO6NXE$>E`~zQ4;mbJSkEFn$iUjDEy$Mby%|-@zEw(!nPVRR_!YVRqiX z6-lDuBzrp9ayfZL(>x1Qi0U_lv|i53!Pnxttj)e=QdLBc0yTGdoT1CWY|hY)zG?2Z zevuu!9Z>-sNDA<9@TH5AjSu}29$_JB#ytnq&d~Hm?Vz69Kz7wb`rwev}*IG zl>}^WTHVfP7JVNVwkW#MulzVFXI{798vz~)nfu&y31ggNZVkEVFhuY;hPoO}mq>PA#^yDx%dw zArY*%giRn%*Hx^d^p4-!R=;hPwhBQ-6D|p$A{PbJa<%HSuECfdvQ z^?&_*Np^RxXU?2CbLPxBXGC|$k&~vgLOY;FjZM7ebB3Mn`x!t_9A#+Gmt-o{=O)f9 zj5j?+_majGbvr>*bhT*kTFep>e^W!Ee!FYlkhD9}w||)Faq!`UfRErN8B{?OFk_zt>;X34 zsat7^j7m$0PJJT@jNA&Wm$CT}am;K+jo@9eymlw%s7UMu9nidz5XZz}WpkZ+JpoY> zn>HvIeaUR;PW^AxUE55dsuaz92AwG3n$l;ggAjt|dn~Zk82-yTei;g5_(Ncs;aDKt z%6LtJ(Imu5!a|8m^-h?B025o>&!FwOLLuYlqxYv`QJK%XQDIdl2bvm4o`M$@L~ua} zmpXk)2MJbaWxDwC4QSvb>KBCdK-TC&{*1(${JyaOBjbLx;`1V$M_Ll=Ny{*65nrMf z2A4%vdj&A23df7AUQvP986e$h8)2qO)$5t)r!}>k*zo-<&()Bm<6TN3t}GzR9@Q`= zOk0Dga{6o;#vp7m8Kwe|pZLnRkJ*T|qQNyaso0MfH#3Wz&iKXw+ zrh3v=|2_~K_Gj$QcB}e37^2CDube9%ew&q#rPCw0=OJV_dEdDRdn@85I`w5#HdaDW z$RZ0dA|(*>Xg?w5O!B-B9%a3aK)TK<<)d%1DRmbkOw2Y5%}5Q%HYWa0?5``-*s%Hf zaOx^Mb~K1ubabX^Vkmiu3bS~1YD`rYGJABHW{69fL%O%eLH|Im0UL4j*ke9Pab}s% z@8X@qvWXECsv#X4d$=%Hqm=K2DvGIMz|;A)Edw`Y0Zdf2C`o+NUT zQb8`%h;&zffZntt)hsq6a_Zg$SB5l9?;4)hm#Zu-(!WzS5}P*GSvWG!uRg%c%S=r{ ztdzK9F>!@q!6K*rY7so!)2zoVM?aZGt#vdZ+Mrv%(wdmeFlum_AIp_;^DKh^L)tN( zthY-~1Fr{4W|ErSXH(P2VmvxCYI1D$BNQOZ`_27`3rAB9 zI&31rvb0Ux40}whq4O+?D>T^ZefSvB<)8VHI7un7zZzyc>~CV`PW>91R#@x7;n>d% zvyUw@tUI-u85-#<=+%AX&|ZiuPg1TT9uCNvr)!0~qWayo=qYrFl>aAzzhJfm-?k;C zPW>;O`CzXaXk&wbAc9mZYDqp@*7QznvD0#=3i%c0cCKI&VzcLw?tQe} zRtWP$+gKtf^RxENP;bSvW)Aih5=y~b@`SA1<81CbCO1s3_f3oi(ulRDaX;D0v9KD* z)BCI9qR`|YOeL2e*oR@lbT*?-OcZS$_>TPHGVBCP-bWAnOr&lerE1I(sgSAVW}M(6 zF2U?8E$bT38t}YeX1hBC#bs}Iq7+}^+2Ir8FJdCbs!RO?h)=I!*LQWo9`-MyCZo!f zhV#QSM3$}Ij$aeW3*}y0t)boO(a6OQ3`fCyRc8E>E)u`y&KK4Ka?(9dq~|Oon%h43 z-_b&`4snSEV8N$f#b)IJE*zY;O5pxA`z%$p@=m6en#De2)?8YP0xcJ#TQ;oREFQbJ zig|e_zGA0ab_^00D9mlM;W(_z*Aa32)?ZWs(?pHx%|WbCr@yz!-g%tZ^m`7!eZirM z7_#QBI7eR4SxO_j%F?IP$!cySf`h6XcY-gMHHXq624275ne>xAk79`aJRU_>7B+hc z!g%lSQNm^uKN1s}07d>(8$NeV3vn;?5o4^v>B*k+PI|yFMWeVgY_7LWaOxJ*VOB4` z7{8;Bdda6@?_0C82>%>Pd$s?7OU2JTe<(7vtfaE4>zWxLe`l)iQuR+B%&LC7s*j+0 zLK0L~y_?9O-VaT^71T?_IBbZSQ7BDzUOqJ$ktWxBaSmn&`_)~{$gRxwZV;;@o$$M} z`H+zd{tb0e=UQitJ8X_piOVEHskS2L35=9+1kGtYcj^V(fc7*=#yn$kHl zSA8!7sW~ry6G*cN!apxx=Lppo3)nx!A*A@3O&0)E|I(aL$qoHD1;3{$ANEq9fO|(u z<#<)2*$Gn|6VrW(ou)0wa!O%XDrT3MzrbnrR$8t4vr4ws}=69=i_-9IQ_1gT;kNwa0{m(7t6FXIV+}^r> zUn+?OX{)!~FR-{{ftOU^I2CxJW5(~v5CGTv0MwIhE}*mSpQUa1dmw6JLgiF{r~Oh{ zzW&6c^e5cqNgjl&IZFwm7aKFVt@eI00##oR$K1Ip!W#sRxoT@kt*uAs*j-(K3AjfV zsB87!`6U-4o6^_A#8Y5&_jukDp2g6MH(3n*^C1gh`hGv{A2`u}aSB)oL9+&|TbZWr zUacwPZRFGykW9mp&Dl(kkCJ7ql8K*lgp~}R7Bum{Po^OB=KaA>e#|6S&sEwLy=>8_ zO*8j$_nNe-sccqQKIqJQdlQRPgY&w)au7oNoxa;6u6&bsR-Gn4f;(0n#DK{7C0Cu# z>+!qQri)BNv^1>dZzc#G+-5S|MLqYkz4X@iyBjRCVUzWb@P?fnv(a3mU(u`GUPW9e z*mxehr1#iQxgbxQ-81Vq{{k`mop9PpA>+e}9c77m(*2HZuK5I@xmbJ56RG?UYlro? z5Ko`ep?xfh8UV;h^U~L~d+gvRopvqMG3n|j7lBnk(O>WG5^bbaH(CFjUy%fkd=pT4 zSbejnVXkJZvuD|{jt;&&hGBFZ@hKb3h{qq%al~cr0q;qd;}Z^K+8DTLvUu|Lz6r<0 z+MxY8wgJKD@S;@J*McwWsGTlo+2=A!Cw~hmHhSOAPg{F6dWU9e-Mo!^;Bd-|n%=o= zf2!q@VTHV`{v;zT+Se<;!F)^nioUE-m+1VI2irXZR(Q+bv*f+`2N}YZ~#(>wQ@Fv-dPrxE~X7#7y)_sPiK6`%3Z0 zGW5>u&Ns8G&?cNr{7HW70xK;k$VkmSFXZqBFyF8(V)^g)7S)5p=mAtkuPT+4{n9}y z4o}MaNMDOv<`awH_BF{PjeGy}qZluNNSY$i7mMs&_H+gQEO(Q71kMBP6?{tA;l0l8 z?Op_gJ1EEDzn`<9NsA4O9&<+&Y%DY#f8bq2%e;61L7uJ7C#mxQc71+9!8UB=K|~}L z_!{Stoa7NLxjDh-0?FK#+{%#a!L|s$npr=HCTsGyus`ig@4R*q&Zax>s97vRnrX>7 zC%Mc{Hh;y>6f3EJ%^%IhBgZ*$&77+4^8*QSQjS(c@C{Z9Qr^Yk*b(J1SHQpw#B$Vz?wB$$1wh2{ zGW3C!if1|trxtiaH?eLM>Dol%RUj|Rqj!6|@3%zUZ+trucjnLivR>Ty<6PR*o2-9) zT>I{0Iu~QkAamRc-W7H!cyn!5UuY3AysL+fve7-`= zeBf=Oaz%X7Kz)Ca@0>~s!)`B4I5dLS#}YkQs|U9e-aksrgU@rCjqAwdVEa!$rp`|{!N8-i9E5N83Ps&^Vb2FYBL{+x{lFuxTG~>A@ zJ)V0to}Use4x7XqIOZ%pq9XnyhLQ3l{Z!!SC~S9bgm_REcg zXK!K$=P5W1Mp&CkcTg=V2JJcFc*Pq;nL(i5i~ll#3cPO&F;Ae}MW!vedF+zH5OL@I&;zfWMVNOzaW2mX!g2<$2wrn*ckh!|c{3dwFz&*t&r{W-sj4bk zY<7|``bLXZMs$-zYHFc(&Ja_hz=VBRuJ|!K?TW*$F0Kr1k-ZUIl|c7vMEB|I{i-V>v1g0yydChiX`v9j4N}3n)To$GWLbrypAU9s z+zYCVC2``&_8ligTfxSq{Pn&SWz*SBp%9P6D&h(zvK6sEo5saQeuwo%CWr-r>v3(7 zo0l;%=4mAbFm3vph{mbYJ|Yw~-31Zgtc#nlchyNeGDNTs9ddbo#DrVWA&_tjkq`f& z<4%EQPWEVGq#xQR=DmAfIbh<-)L%uLrlGIXPP>oF7ZyFhI8-clJH8LdKh(jZQ zep^wVMzof~esGjX?0$8pMieowK)AW-b*rH})O66=v5GFU=(eNLx8#G|S?%%x@tpW2M!xvE zcGhavbZ7pAPnse-K95~&YTKy2kFWcwJjTr%Z7@bH%~SYn34 zrn!Zogxy!{jQ8@s)jk%dUY@r8c%GP%9?yr~#lvk+k{v7>F}(NR5}WEnq08!u_#gTi zU{YQ$Ajm@Gih)ApO--;ri%hmWAVA)%sbn6XZpk3jssG>hdAtB1ct4nV{D9+1leb`) z1!R^wi``ZEcmJEq;`oKL?1dIPkFBxVE*MScb?yVF5(6>$qU)>`Ql;Wc!QV_jJA!ZO^`Tv zd1=8D1>$1fR@C_>nnSDiNHxcuti1s}so47L(}Yh9Kr{lRAjAjnmgQzosQw1jV{BmD zx7mFv+}#!K_Kp%!;x`9;v9Gh3lp)d1@Dr~H!D68mEcSc1Kcrp$z~Ct-BO5={J=^r( z?w#jp9Q*IW#(SFh=7p4JMCGyHN!l%IxUHxs2hG`*h#1CU?+m7hSsTTS?!?QBN4xfW zt+TBdf&?|t=UTt}h6dh&h=SMN+S9vjSvv(iVuJFRQ*b9Pl^I^A^=ISjxUcAu8}p7F z(a!E;y**n!+f=AGkV~AlyW|S7{GZN5 zukJ3-p3HnZnS&S;8~q@&M`OFpv~928ygPTPozP({lQ+WVr1P996gQ4vmM2@uYL9o< zIUs=3z>zV^B5`qZoOz#Y1^skn*PX^6{b)L|=imxfidKemIcPK{M>cJg=1wUzEqsyjug4E7gnjRIS zbiIA*&zn94-JG*v8VdT>BYgUJpvZ7+vnmco+}&3qrS|kj1DP+SIwllfzVE}4A&7MQ z>GS!-aw9Mjzivas{gj;;uhX$!H+s~j{!*PmOgP$vW#5%!?c9J3!d|48+(GY7&2Gs} zD}v4=%Y%i>tIi};-n6lVf2}&EB5=5(7-uZu1nS@6RXmPnNbau8AaQ96jhp7Rd7UNF zO9@zj3QKuu!dJ;|^T0`(@-dV5@e!?_#1Gk>i0*{Yc? zt}lcT`6#d-Irc-^brL22@lk0%O6`ZGT;kCpD?=~-iGvE9IM(Fd4j{V*}G~dp|qVoUtm?$?;#$Hv{Bk zg&0(4bI;MLb+4a|pg$LpdbV|liyOq6O-L%1&&1^~;bH{UhB-I+O?qPhL=;iGOw*jT zenhJ??v}_Y-LjzaP7%AlUc?15AFM%%L4J?ZoZT#LcMoUs}pu9UKgj znYFGj8n5@km2876rQ{|`T;6LZ(L*{!XGeTkA50{Xfe=t(Mf^6%4!v`6aw-ATdOwqs z4W|X=7|vhb{wiqb27n@rCX0^kL&rG1sdRM{O9PY+=7Cv-;{-Pi-t=P5f|7sDD<;(q ze20&DeUJvU;pmj6a)#V?ctib_B&!D5clS3OxxrdXpXg`4LuN$)D^XKT_|5fmnoTv5 zR3^4v*jr6CN-O6&OY!x-0bQY}S1-&@l54b8_Z`2LpcwC$% z>{C8S2*SsMS9mjD%;Mwe(0dKun1SZO*0jTA=3HW(Eo<-e7XT#3o9)3-$b6F zi_Y^sm-$2FK`|tm8he#BP&L1_+w*InS;C{>{PpsEPV0|c>Bwh=HBr_%i(g_|{MuxT z`OaWwc=1^iO)vGj5~ifiA(Z5XM8DS9ylwWEj1b7vjdrrP(?2H|{Q}+Zg(nMXKkOIO zT|1}4Lj}&PE~G(}yH4Dey7Y#;r^101^74|gr+@W;a$*e~dUu|rE4P1&v{nyLZSw*S zs>sFp^y1VlK#6KR)&Ig53Z`|R=V(Cj-lh9Db2ld&0neGDOJ4up!dyIF{}Rf@>9lH0 zox71q=jv7ND=$jHp>D5L0XD$+Vr3x(KHpc(jqjfU>^uR+@!nZDTRk;@c!b=Fbr?PD zl{|0PMIXv!UCaZiU{N3DzFiaN{bi>u`(B}KZ&3l+*6lIB`kNLv1}SxgR>l1y1w|;I ze1e%0hILezO(xdoy#)x!Hb4OHt>WUK}Qf;hEJ z8T&sBZ+-gQd;*}^4UD&PA(0cgmz5Z?jEv_CY2VL<5iaSsE#<|x+x#cmD~kF>_9yd@ zqpG@OWxQz?D=TabN4!eE^3AFov&Nsp(c#HO&)-FV{jO~!)ZRWS--TOk>RC!P>rFNq zUg0mTamsP+g#o5iz`VKH*7yP^1=?2HOJ^_~Z@AyVyIC2qfE@1>KVuac=-Q^iS4}mq zr=RiHtQy}^jXgVTA9J%ZOjDcujQhyITtTp=8(ZvW-AI)&3n>c`<&{gdQ!VC?S9{LP8Nsz7rHx{yD@p4ME}eUG>S&nLq>sSRr6D!&o-uFA=JQ3T(4{@_7QcwMRBny(9yC$EGPJ4 z9)A;sWM^@e2VhY?Vs3y4SR`6W@(YTZ=T&leC8owOLB2H?HaiQNL-C^0U}{<7Ta?ds zjnL}oz(kKy0Rz9XtQEvbU(0aNeVX-{RY%7vYHUfv>Jk_yXskIH*LSex_`MbbX1O4m zajPt1^z*$BLrcpavvrz*UrL#H^?dKIN!}EHsR5GGvO4-`##grD9L863&-@&xz6S}W zsKKxIcS@_=UKol^Hf!Wpe)2n+kTTo5m1h;HndF=PvR;lUry-Yslt=_AVgDJq)<`sPDA;yBc@H}Ej+KK|v zRHVkbi8M-$Ur@sqI!%QZn4{6q=;^xrs_#oudM!P!3W6d9BWy88r*oidLx_DWd8etI z%S^*IDj7Qx8HNLK?fB@^&5SKXTG5R4XCc~xn)391{?xH{>l#6>=9A~sHIZ#K|6ow1 zPW?>lMB%Sk?^X!Ir^(lGG;VLtt2y2_)JU>j<*7>J=JE&wfPn1vq}aSyjY%Jkq(y@i zX@~}=?viM*5iEM2+=2)^N$txCE{s*-X3B6!T+2FP9Y_V@ubBv?w0V6=P+4^=Zi`5j>b?d=q}?xGSMeyvPDGCpQ-Fm9+Te8@A^^t{ z$N&D$w)wmu;JU4?<_QLv=hUBq_#*$qR%6;^B$hoQPuhKSk^F0&x`&ts?f3P|5yOKo z_Ml=T-J5OxZzN?*dLM_!F>6o~#Y|HVlWjfy>_-0-;tC7kZjzZCV5z}9L9T!5Z{!PL z3-^E(AiO6d{4Br+tdPjI-Y4TRZUg1W|G3qX6zO$B>3*aoT zmZX-~@hl*3&IBWQC&n{@9ii5%PZ>PXhGb$5+{nZ$gr}eHusB_dqjF75Rtgi_Wx1be z#=g{m#0JxV&OhE*8dxN05Gt>qK!wCingZpZD@`6%q{#0JU5|Nd@L!|xQc7l_k(I%F zXGdqycm~;n*9F^JyPz(IB-#%R-kSfh1Ibrk_H3{i{A=xf%7MamX&oU1txvdbla=0n zt519$Y#L&O2rK&_K@Q_uSuLCbW<{H^=LRumpVy+3dLd!+KZm4{Z?vq#!!AK*Y%}XVs{r6c(45~?GVPX zx$L(#d1c4s2jEG<`rnjn@kT?2hOzuYidR!}$n<6Zs_Jq|X>ON&gybJ>8JHH=iQ+Zi z>0{Nx1@=Q`4Cs=jp_RA}GCPaw=u0KB&!sJO^i4V{FS)1DnK8q_Q#L;mJMvPu7j~zb z73euF%2$F_MEUz3mncuiz9QOKC(PGCpb3?M2oU6v+XeDNH~TXCGK5x^s?oN@hIl2k z;{Vi1pbvTKuGDuBEUiAuM-4{+fmyHWEWtj$-)6OGF2iHX^#)8@2_jC51G*u)j2&N(SuI_|Rc|NBd-_Pb2=|(;Jq@*y^Xy(+eL*;O zS$^!Hk7&AiN7v|%LboOQ{?;CQ-G{Xovq|Hi6WZHWs{(m^bN{Y%clVQpI2%h)%;3V8 z9>eO2(Ld}5!nwx(eZy0BbT{)G)-S0cA&H~I26{C3_)oh@&wrSP>Yv{Q8@rGeET3)! zEF*`UPSPR?9`qssC94CoqdOsJ06l1}eBrn1Sk__=s0_!9wo-cf?XxhoewV0 zaoexm34BkPd>1-ULx)4%g$y)nGZa?6NUscwK1nka zUo4rz8!^ro7T!TN%Mjo>sPM2{2T_WJWW|2d@Vzvg_<6^A^0%X2v8neyjU*P5g0Oyjy8kC^%iT>0sYSgF*K?KS zEU4bdHQokb(1Npe-Y3ulb0*0?TfkS~%mMW4-Ay#ng#4o!ab_bpY<;Z@kFcxb0K2`v zkzH>*5S+UA+LL|(I<>6Vk(AlUe43+OLvstrOG6*B&_{L%d(Q}a{eT{z6SFCmg+RYx zp(*%;3ho*Qns234v)3!SE#Mnhg<`Hpn<#Nsh%8_pTx%cpx?o?-GqN(G)NSCmTg;(^ z7t7MT-j_kVMVM)FteGrgJaf88ygiT3 zZ`as9rkFPzkTb+IP$@q}g_HO_^_&HB48{Ar&igSLLW4_QaKXSdzI=K(-n1#xH_!VH zXgErXC8PY4Vxd^A--cn7K$UiUA%dei<4~{0%`b3-+^VjfFRVt6+atu-|u`fj#jga% zJ{KvDh!bj_Kma>d7;>uQQxmoeLbAsHJ>S}g@2}3j#B(#nq?2O`jA1z3N3+6)WKYLN zpC{klsXgqnDg&yT#gcb(2%sSlJG*T@r>?@Wt82WAp=9$+g(%<&dbGqYdBoe7f4Dub zfxHYJplB#AP0VM*+}++QW83MCch0=8|DJh2Ut7omqku@?qca0nVxB}(s1!oHx0^&EifOQyZJTctowJmn^=P;H`=^3dT^#QOONf? zQL_EzB=3UTeJjzM)1pn35-~Z!erEyaB(L)s%S%SxeEuqX4%)1B=3kGnB)I?aGnSF@ zl2ZI!Z`le{qyDN7n43S4YulFG=o_DVv$hkoi^tn4hPSgAFy+- z)Ve7wwVW!wUp}JaYBzIOy_3Qf?u$jn8qm0R&68l+aE~$K$vQ*iS6$>&oaH{HRcHC{ z@v&5lY!jP5*I?Irt)I^>m|=vU`t;)~@~VP{YWxcWsdud3{Cw4y-~1){1ZdL6M1Ur3 z=$6<{D_^ge=^S`DxZys&NF$8*%5F+33)r3Hk&b#G%@^z_T zgpss=IQo)psjaChCqrHx9J`mjmXSivY@kMEsWGvH8E@J z8AfB=7yDfIOf~J_BOMxxO+tLJwo`A9{cgZ`j|a*UrK0xO)O>GRu7Ik#K8+q9aAKJ; zdzP>%np4wYbn59+iKF4AY4-k8i<^fx3OB!|wD*H6c$;X!937Jr-)$!fUp*|zH?a=B zpKc&z8@R$W@Prx|Km+V!iJu$7HKS(}5cuf>ts3zUw1&^ZFSHd{x=3dE94E%Y8M9=BrwstT-+WWEHyo~UF6+9m5X>hUsm zL~jz$Ep>VyGgR_J{G&H)1|#y1E=>DJU)6_cf0<<4dC1*{)tHQ3vaH6uv!}~CMkZqh zX_eRD!jOLG+S2TWO1j5*jwj{;WI}>d;!*v1h(ETnNX$E$l8GA9wRyg;Sr+FZaEYxPQK zP)q;v;`C@t`5AiPEl!7bn&Ml%!6v`e`!>IgEs*}q4_J;}SalvdV54XcU$xW2C69`= zRu7Q9P&hWzvfG7*2Lr+TOaub{BTd&Y9o&=^ZTidhbj;_+6ymTX(;o5$^tMOOonEsb;X3)W@?dG#daG*>LD`J!I34CFqmi6fm7{6wHw|iffU-NI`?S9R8RQ_o)g}`_i zH)6S1Ja~tkaHb8xrLWYW_D40A+*i_9<`gM@?1g@TSgRP{9ejAtB9-?P&ag`y7K;A8 zky~YF;TPVzL)v@L#OUO7KW#9-Dq&Q@UJ=DuY=lif`4=l=ORsnmcFej{84$?Xt70Rp zoJD>Gp5Pju-+(uzm;#LdRBLs&>+-CXW|v&r{_aXF42M|zZagrpEzBTz?%;QrWnK%j&lvoMHO%i* zIQTdVCu0JGJ9kgZnH})x{m38}f|;|_xB(35Z0_C3-nI6lut?9{*EUOP&;lY#f;Z#B zbg}SrB(ZUx$|;3v>ut=a>v?p2fpOd=cisq{N=HqunO@HN`V%$r9^-;KJ05!^W*$Ja z%B`0#6moeHP9*(H)6??u_`J!$V8Xjf&6s?>O+!2_SQD3^o{wv+j%s<;r}{o=$uZgO z`$1y@H0JbY&n|ZlWWv@Q!^L}kBNK`R&LXj|oa*jLz6^ny+P^?u>kQ_LBA|BFko>a2a;ih2pb zW%poJF#c_kO5mUO~8QoA|uwQ{w>$gmb zx;AlqQJ8u2+Yb5fog{mu-#1nPk)Kbx?v!Jv*T(VS` z70wJUMqpTF4J|pw^Bpok7|=?{5(Wl0B|qfFMC_egy$eQ*1uV7u`04fsYj3u9mU@+W z_j0s1;&ht_*p=RuLS})R{W9LQ>+G*v6KlJFn&2MWgicuSvEk^&ISL|DqZIw;eIv9l zCBO7m@5PFaEF;Y?(*7E}H@_UeK-?PK>Nn(R<)TArz5B4XbbIny)%rUdSl0$k0ay86Ptv;!88BVagk9yh?@OLa=e5 zqkG%Zvcak3qe8{Z%PcDHHJ=t0M;Wwi^@jHUlD`b^ce2vP^nvm6Cd&mXvE-JGStGZFUck+Bi&Y>A@=|JQn zGiIp2>LfX#Ha&V6p3rn*0D*s6kG81Jw}I*-Vd;!B?YU&zt}!(^p8k2)VHgKRs*ouZ z=pmDH1v%vb0o^nCvfXU?n}*k}pW2T!w|bQ=9e{MqphkMni7xuHIwx=^ALZ^+{KF#d zC)ya@7H`vZ-UDiGU-X+EXN7Kl4aF5@_^|Z;o8rF!JM2a z_p!`xUERLSe+EeYg~ksrAslh;u?E^???`J|j?|}(?3Xz@0r8QwoPxFg%z;G&Yrn_= z3st|O*`u?X-EW%xfWKZ})9gsw>;iuT4PM-gz^RiqA`(q?4H|Q*3TH$sWIVX-`5e-5 zCtELE8KgKsP&qG^dViUri=Q+-<9b=(}j7!G-ZNPu0d8~ zfnCSL9DS>=nqbyh1?@C=cQ@}#)eH$#U#wPmU}zo9=z$@9>NH~>6`Ik-Y+=1Gc&!~} z?~oU4>`sxyUnH4ifIuI45vlm~5&55^hCH}XplM>91!WuYE8`Mtom<9}0KcE8c4K98 zxiQfFf*^u9dmkX88M#Lg{`6vg7)M3>9Gpx1fCBr*9To%yd{-;FM1hG~^Mk`k-?54p z(n$*DTtyX-=I?_yW8NC{uG#k(885~rv~o_ow{ zHD+4<2D#q1O{;xvs|Qf|u#x45YYzrWHL>^1o1({rPspmCL=Yi0WyFbgE#C_r5Nx=;x+rsfvEb6g|fl z{S38>T_{&?Y^hmKshnWLaf6!@+sUAfW3$?@7#yWGjx%k1%eJwAq8avT_^bAUeY#0N zttma!guq&~nEK`{Tp2D|JM{=O-})ISP4+g6(jtG#H|X+rE88)4B%K8tU!bJ-#6|5R zG`oSn3uXBERqSE=SfNCMGKYRK?88CB=iob7$Uz|oy?bCBcv_#vzx&ugcQo(F5B2yA zB)^nbN-t-TjfYVer>=$y*4IcIfpAo&doc;nK5t5gaMzJsYe!a2%>8yuP{w zorhb3g)PCF!+~m^@yi5yl0;o~nK$WyEP-OUFHq_o;=SYNMH-<2n?*(-c*-W$#!OJzqs*)oUVw{g=gioo(DhKBY`H zOw0qec_c>M)!w%ICC%G6Ur>TIc|RdZ+v1!|TPF4wBG_DWT*ijAJNQPpzr$|Tgzt}EOMJG9rbwzel6tM& z{iZ@~t)N+;wJm$&K8IF(b zYIY|Z@yslQ>%0j>ZwKYjayLVk5$BSvolBkTmD*C422UldzY)NzzHUoqW~2nYKU0D4 z@cMUc%*C{9{-yPg|GlOKX}FB%sg3)+^oZ3@GB`Ab1)+wUHfp0lo{~Tx(XuU;;_11c z`pamiZY*-F=+{>&&ER4oBKYia$*y>)6Ee`{S}yK84J+`6SIjU(02?Sr4rph~HaTbe zIWH=QB@t>U#BE>wRnwo_JfXQcpJ#K+ivrHVig}q|xe~az`tt=qvGqv2s;DcQh=jD8 zW}|qRE2-Lguww>V?h>N~8i9tcDjFDe#}yUw3odq5Q9ng;Lz>6ziPZ}>6e()vgN7id z8%(E4^R3vNo^>lVv$S7ExdH_h!aDC>^5s>mYgzBE3ygvkmv{im678uI?oh|dS#znA zTs8QeH4)0dsB!xeu z%r0!13sWnqpPS%J`2=_me>B0F{Qh4}ZD;Z)AM@pt3C_LyLxI=HcuyJc@#Q0BQ1o6e zf=9pe%!){J;_R|pR_;Nr4iys*qxnmT*j*khFJ9-=A17H~k9iLTo6&;>&J0}!ISY;r zYz!Q57F-hud=^;aEV#Fe|2xi_QM|L*Sp&i8-!@PGI8e;?uh?&bgPt>18; zkw*sk3^dV|6AH8jI5#)%cIxg17#Vnn-Bsb}j@+uVu$V~W+gMJ3iok(Ls;RtWN%hC& z1dMc7l@~8Tn97@aL^5cq9n70DWbn!fv*{&|UJjUE?mjYLx*;)iWS92T+;r!8;gVI= zuf};tD3z*B36;)>*WD#AiB7`KGke3$AD?~82BjCTabIuVR?y=>wsJxIBwJZCy*xGw z{r%aY*!S{-(WQGMggql}XlzVjF&dmD;o`koVG~2~hqyZ-^5v3npgGKP4hLhE!-KKO zrNLM@MC^=lB^xL=))}#uNh@2+_o7HFjHpsxG!To-@butfW;7LC|6WCGeC6}z`~EkT zbNBik``4+H$-&szu@$lD6U#C8uB?cKF-I&f8qZZsj{8<*{kDo8+uXOB6S?8y*TT`| z-J`Dz3AxRo0f~xuuLo(U?}K&gs?Xp{q)S7-J_3>TUhykmDua~upG1e^4acj)QQLu}Fcm0k?Ja5+ib)f+}oCW2xY5t?~c(2*TuV5)N zyKZH5D-8y_1RJ_VQW%TxE-%^aL?5Sx@{%>qjPn_B;$ePGK(~4uXVL{L36pnAm*{q< z>bORsWBs=MYeECI(P}6F+yv$*M>jT}Yt>Ui;D#=1)nz2!x0YOJruNB#>I;BZZ#$ku z%g(|py1b;8+~)P~1L{NjH-rYfPrdo77moLxFHrO5KUq-qYIK`}=GGlvG<7<%1NaS7 zrN<}P_zeSQKaiaKju6$QAspcI@_@S*v~m#b(vDb(MD9jdci;OdQgwfTP@3yuL!gv6 zBOe6z787Qt1^lAgspqhrO03fvRqYGr;L8^1;Q9}O`!|*i_#hbA2*AZlLvGUrlW#%y zwL}pua58b6S-+2}{qaqEoyko(Fw3T#eL?5G9CuB5peb1Lrc*btn{5M1p_$CglbAdtV*`M^izlq@_B+ILZUfiFdWwGy{oGX({zu(A^n~z9&e!8Av$13kh9~9aYiv?d2iBAo9}2~XpC3KkeOgzjaLQXDml#LP_S%lKE#e5Q@#or^ zu?{l+s%ieX`sUEN2B2BvRNFn{V(Zy&%RoI z3;8VMa}b|{_$=kKl+Q{&EBPGH=XeMtIGN#=P7Zgi0Vmd1~GF=#WxsSjoN(B(cK zs_Kye7xFMm*D#}*(kUd4&{{KGtzJ}5Q#7sxOfFvIoo;gU691Z ziBosAVQQ?G4dMM;u=y=?W?U)W6HW0=iWlu??(Q}Ha(|K&xs^*)nw{5O?&kH4jgZgzaFOyCz5Kw z^4!%FjX-UYENTOca(B7+lPg7TpBYN4=YO@#VwJR|#WaVNa@U9NIZ5AJ0G=HeE1{-u7M#z5|Si`B7 zVDrc9LVJU4E&eXF4zNwN%r3MibG}KfH2Y7NuiAf>BxDou6)fSIf58&!e?>-O9)CJi zGV7ym+m|bmfpGAeDy`)Y8hbMWWmO+0j?a&ZD45{p$ z^eY>X!Bv`DtVrXFz>+?{=p*>e_PINoU$B3|FS7PeD0FXHTFTl#MW6(_N}2sr1d5oH zCeV|>MMnbN`|tNnX|mdBM-tY2UP+8KVwlw(HXW7yI?@z3OjohPE9e#xl(R2eLsO zeKlTuF)GmJ!s_G0@vc9p*_=vZ#@BTwU&8LFL5-J_8|H9T=?2j&HDyjc?%8Db3l=9i z2_G4Kx4Sv^xo@rC5pp>l7cberE;!(gVC|AzGuga3!0u96?vAf?$ByL&CEI?E?tVXl z?sOhV{?sah{J)Km5V{SnK7LI*VQWhHGkuMX;W1lu9@@RlDgDaIa%>^7U2y7dCM{BO zky9`4j^|%(g3ae%lOO%8zcZ_x6n9^J+w|ky&B!g$ZidgPcp&yX%v^qo40_ zX6T}B|2uLw@>yMrFFBnXy#cSv>5p!=hOp!?k+$+OV`pe+Skt*NzW z)eOjy){$W-2oVb7&va3Hf5RZcXr-5u%OHlBK^VnzNeMTdq#A&8FSqdiO2t}(!}-W* z4YH$~p9AgZr~-Y;9<|S?fw7=m`m4I*>B!8Cr&9j8n!84o0gC__?AsbVA*aSPF-XZ2 zs?=v|aIEr;-%uRjv%Tjs@Jh)upy^f(gjFAb z2J!H8<&6mo+p+s9jZXUc=|Ge+5nM-ea%KV|?x-QWyLkMle zxf1gG)ixW@51!=ATGgLA@nc?pZ7YZOUO$E5r?v-U(+ad6`)r89B4AU=h_VJp$Yi|^( zucbY-5Yay}Odj`9ZI zQ3x5S$jXD=wWyd7pQ%wEAYQTX(N*~1TH$!g2_KA=mPde+<}Tn)YEy%c-3A{mmAu!P6fS@%;!{|PB&LP}HO4RrxN65|R~s;a0^RFYQ~Td2Z`TpE#v zvLNxIr3GhZ>L}7j9c?KijfHX{?B8I)Pz6{xnsWaw7O>9l7p(aLtyPflaKZh{a<)Mh zb!RE)MZ9;;|NbMDIGc>NQv;KZkJ3RRyqJRW z!61r9l{-wiE~Xr6vlDDNvxx4}kevlT?gDLaDmfI1M{*;9Pgp6=tU9O>VYQ#A@db;T zFDQF?F4U37$qwQRypedLr{KM|-~J^zd0H4{@On3q7|w7tuQ4ph(0pjH^0n%Op`l0-gk6){KVQ-TT`Q)g?*2naEW{WwPHX} zQEqhkA<=!w3KR}B$EEqSmkfSpY5}1OiLO$RqOZG&$ohAYd9atQ2>c`DzL|WC+vLP9 z0Cf{J+q+ zYbO#=r`sd(%es^YR)^!a7DPXDrd?x7zCcN_rufK1l)SWyU-HsiTT%?V`kSWYLmEf4 z1+DH{Fn)!_cmj-v0~;0>s%LZ`?#hU}vdq=0Ol&pWmQcp!TA=&VgcRXzA0CN72I6kv zuruYZVC^9}Y)qMA&ioR#Lhhu(a@PsD)AB1^SiL)GtYJoQ>T|s-@Vqp?bS0r6FhjH@ zuz!SN6!&+AVC{YR+CQB7VL-u3zU>q%8<-u;&~mY~QCg{fE+a5&V0zGK-h;5|*qDhy z^zZKW(12#fe3ct;7VItg)QO$}%XAZn_R?7tL_dZD-o(W?WsVXFrj|g3oc|%5rDX%& zy@aYi4`7fp&u%fqM$(S61RVb@TYbz_jHK z;RMT0)emv=zCx$&26DU)oIUsq@=g0`;&HyXU?1)pJ#f^tVW_s^z4KbxcH_N*oRf7E z#THfSEF3(cHE)_2Lvt56SM4 zt#X_5{tDBDj7Bh29D7UsvXC zD;uzeWB+=uEU*dk8CM&K_d2PByNVq^Y*3<`lKi0S`CHJZ>aifY6G|+^2#a=4;>L;V z7>oxZfqzINTIRl2HsDRQy0a{>S*<>$RwE@VrnHWU_j*b#L6;wg+~sB%iJ#C{`+7Nu zA1yTG%o@kFQlck++}F^dzp98C%^wzo2e0A|T5%Gc`c(}6NRfMa z*MQ4N9;{*sd$*TLf5nz8}gn4zlL081WbSzeSMDtT*a&|N7)E#$1=z8Ot2*@pm% z05>`8mEqKKwn@u&RDYDAoAQ#kro5>e*Zh#XCE1gDYOT|5E4UIrs{yCmzzoib_dqL+cn6BhxvI;wA4XV1GbT;S8XB4nmI4Ci^G4|LO5na zCpW5k_9oIhs7=H$9;fc0glD^xoc|jb%Z0sQmu(5X87M}igRWsjv-T)dPU0c5BM4nQ zlj^*RJXBcj-aK9fFQTAMcif%c*B1!m9M9}gk3H7=@bGR#hPV8Es@dmEdf{@6sV#m7 zH=fwVnX!zDw9zZ4>V&im8h!78x)_~?<#R5XCDWd47S4~UfLyvtCKZESguwTaXc2$m zKkl1GZiaJ=>BYCT$g;T{mrr;(>$toqNVCb~7KQYI$!hOoua**S%%DZuNU52R!!>qP z)QPxbCWaUF0KLfYpkd5(GR{T_;Ok^TIEotnrg8!1~7Nn^OtJwCDT&VmnO1 zt&v($*ieO)hjqq!Xjdx5c3dk>!AA%L-YB{v=hPh|X}7JZ(5XMcek*nAZ-v~Lr!^dW*^X~i=Mg&R2vvW!FciCXoY_P<lrFl|BrHTGOwb8jKucB7Rg)$1H0|)AiRJ5GTWI_*Lp=e1GYNdDMEl}H~u%v%M_knB2 zLqZ*CUK3tUhei`{I_<;2&P9kv2p{k6DPDWW3Bh4wO7AFz6&mZBs`Ke+^BHusopovC z&xrf6Iap5`7b@9_=(ZEf8Zn+B;lM%s_je&ICL^XK$MTT7!j>;yb4NbEhZiqN<`u7U zSMU^8?lf%3CXM5)Fv9!Frryv>(xER{yfaul355lsURvrhN-v|WD7Rvw6~Qki4yXoM zA*$9AJIf?w&Vmu3J*7>!XrPlC98q)vfBS6vWn8&!~3HHestH*&?#;l=3D zj1o<3_mo^I*}lwn)yeq)FnA{{+udo{=;@j$5evt2sYJ3=C(|Zjglp6$DUeK|uTYyz zh3xiWjWfBn=N9H=r0T|b$XH=nb&Iis2F!f+;3 zRD*YB><5^}bBp~6uR1v#yL6xie>`ItH*CtFsRi+CkZ`UY7iu_nu(dx)EtlU(*Ko<^ zDN8LK4zh!!6`p!@SErAvT^Oes(U&AMd3Mx4sC%j6Bu7`YWLcs?)-Z?p!z{=e=8KGs zORgbin4(WJ%#~_Pih|C=oc*Qo>3%LfzS93c<2xC-^WTi`85qY`k1v0?#$~BfL~^$@ zR^RuPU?(sVE(&y$0_a`rH3}~^rj~r^BIVEYpan*`|K=ja&Qecy;W34gl2@y*Fd{Xq z&G^uBeOA!?agXTx0e5nUi#7@R{&h;pAqm){&?{L@P)4dwZ%1aYSwd(~_RC`Jmw#ng zkyu&*CGqucm>pxDrIVPiCy2z)9r-c^(~79Nq8fe(qm^FExmFkTG+_8Ah!H>g3SE>H zEDap(g5?k(@!r_m8E8~(MopK78Zzi-6mtl?&dP{W_G)C<7z9ei!7!*1EuAZVGKTq* zVqac(riN2@0KlVCVg41E{i*vt*`24ZyyMiRHJE#-&J_Pg4dzN)?mucUAE%u5yZ=&y ziJ*_R@@!R#jTs0rICUrUgXuf9KhvkP0pADlU56E+KvKNLhvbS4@0z*pHlD)EDQx)p zhQuE+q)2OtR4H?0X%}9c`pq8JLYqL9IX*ejgZb6>8omT2Vk}lpAgyMPD-L5ljMy}7 z2vIk%YP@!cyCHgztC1QyEZIBl?#3J@3UR_6bpoB4JqrIFdjq&(ccEtADU{ZMaT z@M5daEw-vd(^uj_Q(|Xgmig2voT;q@ftqTj0JqbBccEcCW)t^NFpL&ZZU$?ULsgYK z`&9Bg5KQ;UGx<#NL<{E6YxVm?vjUUHQim&+WDhhKeA>d&>`AZgPW!406c*_49E^x= zLlb&#RUsOW;t#zAY=dyP3k3QVfNm@S5+1-Kd{>juDb*FkFTj4-@CTkBud-TQR^ZbH9#7k&I?x|BYG zXRDgGbqnT>8Y^lTyv`a0@IXiNj_$PwwT?=iM_OtRO14CL@=Fs4M zp}{*j%Y3tbT_e8JDW`0SJ7#Q;%}!{I84aKA8og=CaI+n_bUYEV-Q|ftVff)|6cWGX zI}0&+vYjtDn9954{vgnP5+V)F}cDCT>tW?e|`ZE6wkf$)9IzfQ*?4Z{`*s z#2v`F@6@)X`PDycTbfsWXWLR-4(friZE2t?A4}hc?%@=#9~?-Qr8xa#srtU-;33(k zJNBp-a4&+^Z_4R1A#F}#jF9$T=nzd#0~*60Is!Nj3)4faKH>2b_4<{K*W4FLoej-#1nA^2ty+ z3SJPqe-oZ=&WvM7Fb1|Vly`YZVUJ8|L&d8Yf&&mTshyzzGX8Do3nzuT?;e4LZFdaz zM(uX`sGzm5-4Q9-!+T=jC~-O*lv_n-R+L}Tv){!h_w1MeJF~tG4~btY2aHfWh@ETi zNB_K4cCNMMisb7o81>b5uHB7%dmvP@gvgk-32Wzy{c&KGF>}TK*SB%~G5!_^(tE0R zCVoR%^s<;D7dNL?xohyR!Av+nQ4G({WfohapP}ZM2ZUjFH(`hl=wJLNDLDH3-K$RK z7CIx3;y>1xR|SlJMyfefvKsr);#F8NVy%F#iJo3Y7)G+f*-rM*c#2(gumStd&_$m$ zj11`W^M;YwgN82pqG4pNJ`XjF%+u%LhLK(MnQ9o>EgT;SiS@duVRU!3ja~hMgo&1% zYHI!vYH9|$wk6%2x|=j{jHr9_HaURI?qJv0jq4`-J(}e2(SpARqZ63X3#gQ6;19~{ zQ5g%dQu^*=;G(C(+wfsHNS?)VA5F zy-!RJ_m0Zgm}a-L(PsL-9A8;qre7H7>_?qU6T(04Dp0jkkmq2g$;Eh}sd(=t@pF3w z*{i4JVHmT8z-RKz*aKy3jDC=&3C5s(!X3&VwCOz%GPzBq+PK1x2FdMh@=rrYvjpxDAg)!ufp%D8F_CC|5DnEuzl z7esCzt~ZEE=}wiW{haNxc)h}@{DnF}vY;G+5-J)V1iI3}J6$gmK_ZBx6AA?m2HDf_ zvNYK!nnQR`kx{Z{>iSUNfT@;T`Kp!uiF$UDvC^v|vck0tcAZ>4rg7FYN7aj}0!tUk zuq}6VKK3Tl_Ffr|jTB0%zJ|qSB_Snrly_TF9JjX;F&LlFE5ot^H94&$w_ajSoP(Rb z)5)JS-9JyLGNQDlp#5qr1^L?9n$=v)%bHapRWLR>KNPPuHm%VE{iod#jNV(2Q`NKf zpsqctdM0nO->M09#hX14fp%l8-1feQ9zo9oZ9%E<9zWy&t{*J7MhRDuVWSJHPh;y3 zw0O^13rQ!~I!oC#s)M=NltKJ&JR@#oIk-$>(1Z)j)_ym1n~*h51HdDg|5 zw2VJPL(S&Dx@1wtOn!oRvznlB)qx^A{*|h;Dxm`;DYFYsR?dRVH{U}s2 zz3h5lzXs_S4ime!WC46Jrd^;Y+_>hk;}u9g1F)y=5_G)_-|r#k9W(s$t!$P8!mce~BaiM$jio7}2%o44l;UWb1e5T0-x z&Hjt(OA5GSsb>4#h(JlPP5AN*a%RjC#D@Q7R~0n0*B==E!M{y>AC;N6NzB`%eF9CW z7kY+<-qxVDkiJyEK)$nUStfl`hjfPSmj?vRc}tV>86YyqG*Fq$<2QANoYytK(&B7s zV1hICoqU19Kg#c7pC5YUE4fO}3pW;h|Fs*^xL>38*9wC5>2j+mH#F2c;ciJ4sNRY% z!i~XhKYk}&g$8|~A;+P|HU+da_c;Y!A9-jC@vcTyT03eS0!B@C`pl})ED+JQwRAk+ za{P6i?G8SkpdvOf8|z*~HmOp7Zyv9|*G|^o-_}qyviQ+s{@Efhj0}6EOw{Xd$z{*~ zWuDHp2ax`@IZmB)Rr|`ENf+?vzH^Hrfn||EYoxdZQG(Osx<3g^lgjfIa$pkp9g>5O z*Q8_qH?9Z>yVgSBLvlV;9+NpF=PiCGlO}P865q}wzH1WKDe;|5;(C+#w)wkfLYb4) zH1|FWTncL|0uv(6kKWYRH3d{ONLP=O-j1-Er}j(yL$LGv?}k~K6~2-rRnscy{m%w) z+`klicnE=>`|HomYHQLYt-ndvYTYTM!qCv}04=ksOfKTk(9i*!vb_MvCM_|!O*Uz* zNwOROC{^#R0{NAmP^7;%7MUNn6&32&RYef>u6>l+MYM%oU+BvR`m>yNcdgO4Rr>Z8 zfl5jv(PjKQ%*xkgC*N2{^ED*EbPU7>zV8)kjPEG{4lp$I5kx%cyiaF=I03W46cYbi zt|Ep9P()ep8_?fSuWyn!H1uA9N&i?MyFL=Yz04r4vV$Oqhlc;2a<}WxI$B){Lf4>b zg1P{B5P%O-Ax-?GO(x(okaMzdJ3(&d1%RNHp`lHJ`P5(<=6@Oh-Zd~Sw=jKVlDrNu zX*|sBu4a9Cl`pG+Wt&qcOJHCr1QrAEhXUyTqwdYaqbim+-~5`?fAqKxAxE?o7Bf(wcZidR8Efkc)B1qs)Mut)+b^f)S! ztAtJFd*AAF&YUwD;CH|8ug~X^$?2}{uBxuCuCDH`rqE3+<3Bq?4+5p6hwfxCmlhCG zZ?tsDs>d*Xbwftwhc=>O#F2PLSDb{3g>}EO;{E)G(mSy{)XGLWZ{EpW5Jr(h_Dr%5 zKM0J%pSwDx@#n@)!_Wvc!^}E(^XMSnfug0-x6OIbEEDT=8s~Oh(E%r2z@M2ofTCZD zB1CgSpiQ{w`J*eHs4Ja_O0#hP8wcXrEy0)tnVz~;2Dgks`|}ipc4(1NO^n4PaO3G3Hfpz3a)%L?%gfm zIZXkmYH%H+#ttDP%uK%`qmmFZeM*|lMWyJu$>p3xicu65P5uM?!o2XuqcSfXLJ~Xt zipIs5AJSUH^Y*Ds=Vb&dL-9jpxI4!=A|qh|_(;@H7iNrF)n!rUTqK?+;=dLAnv976 zv4h|Ky*V}=GRsjhCUS2%%r12qR6T+*HAMvAa>!-gIa#w$#p7Vc^z#u$ZCag6w%|H4C(vieHAo5Mmm(6})E5p%Tpo-krDLEPh(Ut4jE`~G5lrobxMjnPpl1H+lT` zmrnm21=T{pAwE(oHI8L{>ofd4nLHO?8NSO9bw041XiLw*B2Nb52*ovf1BtfAnIpVy zgg=ZgcmmzAtj7=GwcH(1vpZ=~$?Dt!EZc;EgZ>uarF5nL_tI)5j`$~dTc zHV5PJ7(ImYua1@s-lB_Mh)PAB?pNwID>GGRHp+shZfxzW{w32t2-VIe!>cTzv~&mm zka%Q_5By)oBU{^yEef&)Xpxv++sPoULM=kBmN0cUawGIJXmGG;vla-!Y{+9tW)aZrbm`c>EX=F|=&RykUhv`7HLUdzsO1QTd8JWPrD~6w z7y}J8-DuQ=MV3lLO$h8+nccs7dO}wJiWvwbmO489hp>9}2DAa_1GfUg5oXwAg1tRq zfxoC(+}zBAz!I^wy_m5OpZ1982UhgMm6`xH`wS|bm47fUw~KIMubNfc>fhyn`#2tz zG-L($05Vi7Ww*qIvjtN#_zzm`{2GNPp$&dLU^GX5bwDMt`89mlrp#*cx>_x5VU_J= zD|_G;oYPy8S?%Pt+5cww5!GtzA*=l1L6N?C>n!CX_>ZVk$Eclke}7=B<4)9Z8vLQz zTcHa2|3StGrH1@wRdKJaiuSq+#jA`xB5iu%9|3i-?(on=FHSPo%L$K3v{Z)x3B3&OKqZzF{2N=Kk;3@P;x}auDo^GL z_5BP>c1{eS*n6=H>HQY6h$}4Fl@x_Hp0spNxq##*czh>9-SOl>IpX|P(o*OFLJ9l! z^OhobAFxZ}v75bDhf+jvdkM>GB1L?t>+-9hvx2|uF&>9XXh(!f)Yf(_@QVQNsXr!Q z?!l4oI2AmfVw+8&2aV!bR2x4^yY7Vylew`!2mhbSU1#DgOuk* z8u}K06PGOp2;E?)WupzG*Z_IQ069u|@;Cpt4dep@Kw1K>AfQ&UjiZsZR zHjudnNSXoirUsd61MwOl=Nlm0%R@us3=rJ2?sKOBa=a0V&c&u|^P7>xBe}xfy8v^Y z0rNdz5cE~@3d-X`ZrlLRkXzxQRN1f%UA_|j48)<9;J%@55_UawfjlA|I*(zG;zH-H zOyp0)m9$<$2`lU4hcmNdh?(*)@$qrP4M%$Mti)g1_PMw-WDGWQoGNTX`J;S^eKT&k zCH%YlaeTN64*?8f8R~>0IA)3WCQ!uVJA@+iQ~$ZaD)Ej{f(P697-`}A^2ZUL=S+RL zsad`$%0q9eTU^q#R+{SlNIiE*J>IEq|M`sDy<`atTstC8P~C@*AwAiGRkGI}IU`@}-Ls;{VmL{-vQ(ku&Nbb5|CijDCF2lqK* z1uX!mp(X>Vg=7w{h{UNrf{De?7HGtnBK^9NOM%!Bg1ZP_7vLHxL^f4R)?3gy0-gIj zl!@+IqkU*IY_rN352SADhS(i7#?6G2`;peH`|g z^{tMqFJ;ACoOrpIAPJy0lI#2kHLn_ z4y5+D6;*H;sy>k_{$*65sNqn>FRfU`Mp817h&PH7MH@~)Q6EOni+6+8dcmCsp42~O(R3Wr-aq6W!%@m zJ7qv{uVm#S-gHiBu&ZujC17p>jNC<0?+dhG`H@ji7)_(|$~3@51f?!hvm>C78KB=H zU1!!oCMy2HnE%lBodyhjgg9cyd;EMi7bkGMD-kY7b--B*V|CRRpdR0UsiqzUG_{i7 zTcpY)CX(RRTq^V4!{rsiRkM7rNN)9IGVrrdeUUm3TQvrAD|9;Ej?FJqwIb;yI=!{} zod&AzqmL!cafoqW3$ii`^)RvTHYIarK+#0u|rCL{EM@Sf# z7Voz(R9lHkH?k6um0kFgYmRII1yZ+dH|zNj^{^YK7=;3^f}~dl_RPmqpnqN zu$PvHW$14%OJAyMElY0`#NZmq6d%kwf%NtU^2-OIVi}58u+cy^JuQ~G(&9rBBrX-d zl*z?~>jS~-&_d=Mgz%s@6_qr%F#oHW#(a&j&<>=2+0blYC-Q8VKapTz-owEBh_0^L zJzxaqNc9$qU?HhaB}!4OqhX+{w6zwS|4Pv`f38bDS!S~EJ_C{779y*tkVH=mb0QKS zLF6r|&if!}T9X5CnJ_QVNU%d5lYG8sd@AIjQs|Rl>BHmaTI2q911t+SDm#N@!F!jQ zyT-yhRX3EV?i$H8E2d&DUZAp#*8oKSy8V6bpLBj)PVng=T(Udp$X*0XN`sNU(!=;SU~(X zl*siePhfmcF&(gveOv_rn$5$*Lg4{X*}z{Ot$&qGC z%x1=*8TeCVyZljU<{q?iG{PRCmw|IYGTd$D%JZp6qW^1C0Pbz7CGoOz%~>b(k(oDC z@~l}tuC{={&8R?%x`ViB=Smj=#6x*w^M6v^LsS}>rE1wt_#?o_5Lkr{kK%b+_kJMZ zQEb)AK=bD-^;a!^VC!!~Psenu@t4p)TvLljYui>6zYm*e+^00vLj*IFh5K{J)7a_p zUrRtd{%J|{bu31E_yt<(A5sZIM-UdF=fK zo5hXe&bV3OtIqPBRB6(P_`4DeOt&^68WO_2Lj;9`NyL?ag6oU%1fu^|{T*-d_zM7m zUuBqj%GC%9J<_0A`$s^~vkeZL{F?qJtnbwlsZ@x+Un(t8eFQIQ@`*^3Lj^Aa3SM!7 z*CrY{130M108;m@>a3BgRG;4{e5=%~*CyyljhN{uQZE7~(lvTKa1j~o0YJy-HP_F_ zp=b`CM~`uzS?})&=LG3e6-XJ+KIWI`{LRp@Il+XQ`ETp|>JONYM;h$qw;Sv8K@nUB#^91gPtlqyQ>vQV(p7@{dY+*nx;wfYr z(og>r?wqkz5)!*wrN5}%dR7e(-up{Yrig>kbgt}DqgV=Ja6PwQ4LRk}oC0t9fH&k8c%xY~U$f{H z&7#GcMN2h{mTMN}&jNcYHG3*S6oy-NxqFq#9(-YRKnuaoj^AbY#WbF|5}tbiFEhC| zYW`u|Ag%+);;eUUv6a%#*<9i-S)JdT2WfNC}N zRBJId#s{QrbM{hyEK&%ycs2maKOVg`Sz&cqM5KlS`) zu;9h1sswf7Wa~Kf@Fg5o3H2luPjwj1JV=<9ztq3x+2(I8Z`$9bt{ny`<~o@(Io(#( zYCIMvhUNTsH`+b97cn^nwgmLV!WJUO{g&|1{1<9BVr|f5nfzJvxFF*I!Wgc^aX$6$ zY1(ayO*Q(%2-E)W*2vDROy5+eEc^Rbn+ae$-t zV13E_ zy>1FFx~-kwxK>Qq+R?BG3L$S9EaD+FEQ$}~fNjcV#*1D%5H+Uzj;0q^*5?ZdzD>oy z*Ud=Ta6#_thq5AB!^&oU~$%;V2X z1Osxhc>{fNf+K>ng=$fsbCs-2rgfDbNK~(1CmlsL)dQrS?HzL|6^isX!aI($^*8Ld zSDfFC3h|BP$M91acDpi*%`wOF!-x4!tfRhEmp<1lu7sEV;(Q}=L?u%m9Hpe*+4;VMn$7Ck5#fmVyCyPq)vVRI^Ez7kiTXb7D-6Js}ko zpaM+#C2?FKc>-eDiO&fBlH;xAS{~`h^4*R@-S@O|T6qRB2LEJy4Ac8fnC~@Z9R)#p zGd#XL7>Rg|**CIPWb!q176xVB)qlz^wzaiG!Zv18S+pL2q>kG1ApPbH9zLz2Lz)ZM+xU3{#TyMOV_ z%dwMs*YutyB8X5Wb~m=l{;PJrA%hKOFA!t(+<#*TD_kM-O-ZsTUxOdopW~mBoDvQX z?}oFMa+#-Q-;j$&i|a_AIy6s2b{)@Vs{QyViIW}%;TZ4`K%Nh5r01HM%-7R5`{3U(>$?8N+O!U#6)qep;wEP3)^s5^{{C%SjRN*Cl(S zUb?sgBYUD%W5c%upjo~gteOAJ_FbxLn=IfZ>)gOgjl)NT_cA;U-e>vhY52ha0sdM> zFBf=&_gY5rD3Z(Iy)MvH7l1x5%kWQXXpH}-*bqx(_$EQDBBjz3v;1}N?21uIIz%2L zpIcz&QceWVlvp{}vF+ABWNztuJAN^UdKj}(*CUqg@T+VA%O3jm9Yj+$rG`v^Z5B#Y zgAi_4%79ZxDC)t1-#SfXM|-!UJ%Gz`ZT4ve?$Mz(YUB){fQhgPk|kRzo4C6<&PVX> znXJ$xZTB~h23UViur5k-bXem99iMVU9lFKY-o!|I&v(N8k)yS8UDyWjwlXma!Sz{@ zqABUM2aV@A8^6ujcyxO+quLAOR+~v*XF28Kr0?lnXySO4gT530sX-st$3jng)X#bT z1yp8q)$~8Du1b$=hrgAqCpC7}EdwcdRtLR&hWgiya`NlS2>!WUF#K#HQYX^x=316H zbE$4uL}Wj9;vgbzK%P@XTH7%&$E)Z-blJct6h6mIKukOG-aV*LpI5>pUxBHfX0N)m zn{c%ya&#Apz{^_gvYp`VtBA3JJP251A_=~<-NxbQ_CFu#WWm4~?d!&AoDJ%6+V(## zNBiw!wck2c`=&p9JmwLwp%2i2wm?flm+FjdX1(MVPN?Si_5>Dl*`XKa>bd*4YC5Q1 zzMp2{M*dlbq_tE=6oY~a1jq1gSc_v@@;w>faO-YB5R+0*Ko&42UGlcua|YaJG#&lk zd2m6OLHTxS)&|lfukqs4S8j3^?~`TDV+$W8>zcd2)KW?y-&^SptjPnCDi<*Z*?$e& ziDV)^S%oU<4+&|;zrKHhsa`0w3iZS?aTAP>Qd}~+qx3uHiA>)%{T5ys92!ujL>=VC zuY+L4sizNNaw#D^e$u#v4&yh8-<#4}F)f*YyM2RUSR@oTWs?X}Mc@74p6dDx4!pr* zVAEef?<{*lEeK0uKP0vf!B0ekM?J0+(>#Gb&wd88KhWo&7w@6wP+NCXfCsygw5{b2 zlC)YU4MWmh`!v+sI%yk`kZB3h47ldGzd;T5SC2CJP)y;`CIkRmhfLqOOEp{3EoX!n>dE%&6?Id zE;mK@%CXj zw713o39E~9)_{$cHmy7_qQ#%b)*O%Oph5t(SYZKuW&`5>9jqdp*9qq~$El606V<@) zDR1mG_1YHG|7P2xHrm%(XB{?wjb+hYMztubTA^CBt2NQf0#l+2c51yIXmsp`Kf4rG0o?K~F*+f^_&?LVYTVmvc!yq>K0qH2nON^T_1ej@isMcdJ-~71N z1pCyF3(<-G_=3t)n8UptG{C;XD1d_gwY)C(*inh0M#Ar+KPgkAU?|mP<+Z${bipO| zf_RnEmsrrho_AouRDfKrK?-Ytxcv{pq_0r-qL*Q~T&niNQ~=Mf#hX5%HtI&SC11e6 z7&q&~*Q0K2R;y-se?vo8hJG`28-Ij;`jdz8u0|9K!gHc1jAp^!XaKUHxv=0|+YIOw=HG4iLyK_!aNHL1*3?$@KWALizU7>4PKb+RQ~a zOlgJKKO7F~?quO&Z?ypCLWGNrfoNNTU7>?EURwOb_^Qdwe;1sEna@N6 zM9b48Sid$l*7Dx1NgZh~XtB^OEWApC^r-=2$`f1kK}fQQn?r9cLPH4@3jRmN!J!bu#K< zjbjgcaf?x-gi!|R4QqgyjM|UW)3iu&P;Qg1u5va>mQ8{YKcht-Xg-?db4BE7ttnkK zIA@n9Jj!6m;A!M3vc9Y-R<{y~Gx6+-XaMqTri{^iO-Cz0aH%K;!$rT75@P{>YL;}W z&iUv!YG9lJG}r9vL#%JyewnCc6`!7{w&>2MHw#MBf3Dkq0|x9h+Vc}J6>MURN5L4a zLZcF3gC;d*54j3Q1Ax8cD!jo0z0(0|Xa!eciUpAF0D$tO+He)}p<>-wvI78mf$s7| zomVH4=kZU#;1y{6YlXuL*@-ZB5dlv&Bo%LI zrq4p;I>gg#iN93=7zN?MW(DH4dh2sB4bbo~qy0H-$G1Uq{sqR4^VR93QJ5fE8+BG& z$;t%N8g_Cl=LZ8yB(gHg-$Hu9e*;Kt5&^s(8qt;IZ`LVvr>;0jD&C|k?kE-4)j3CI z5StR6^G=A^)HA!u7q8yNq6Knbr9cigKv<;tD#(F}0pvi&hO6*593X0{jKa$R7%J8Z#ndPIyc=R|rt@a;2pH#oX~W!)V~dPHfk-4^J8YVS z?e%CyU7h3!&~127wZ?9}$9FFsVRVwhR__N}eOmvFxs$IzzS!!8fYG*kKf_l4@yGwG zt=9gi%NH9E9AmD`N)vfvHXJbe@ z%oJB)0pK*y<k zWUi^8s8}@mAYAuop*W3_ksT*07)@7UH`w1AhaS2m%u$(wfH6mDWD)dTuQv?4DfCgz z`8?j6WifvLw9_!&+gZ0(91TFln@5HR0~T8r5XjWMA1WJL9z~ADmOjXFvgNY9HP|wY z;g1meAzJr}(MyJeTFukzg`VuS2XWe%zdUE8_IbzgHd>DaqTa|gp z8zb5njNUh*x%R9v(HlQC&E0D~+_aFCJDXD5)}Fb~#{-@+n7fUyd2ZH{qGK)B$X3k1p?=;8W4r_VVHx%L)F&0b|NL z{U5#)c(V#@xCd;==w$1Yx2Nc#P2ZTh8yTg2iDro&Z^lS?;8#SiE1?@9D2&*9}80NHKcE_ zA$@BeCZ&eqFiBd5;h;?w%AS_d7wk~)YABtPFFA%8)KhY7n-1|BXru<3HLYJ9j;;n$ zTb1t#hZ?#A(^{!~+=-z)FBk8DtthuIOdjBkwj@X+r1@GnzVL*$Z#d?$zB1{gK^^oi zbq^SR8aWktf-vO-_lq2u{ULiw#))kVt;`?v(6ZfjBU&>aCwe@cQKGH_6zx^2@wX*&u;feI=x+oVfWqMGfC#eq8% z$B>k3lMF?q_VU5kE62)TCTQdigcw;n#*rvW7-S*Y;S&>i0KVeXe)}YCXIRSqDYOo9 zJB+j24=FelOT6BhZL=R_)bUCVJXt8&1uOkZYR~ z9QYqRA+|rzkL53Y(5OE+%kD1?OiNUKHU7hJpc8DWvJ>E_|M4@{-^8fjXRjXyHcsq{ zPga$o^T9w?AG`}dB*RgE*E81t5l%*s|K08Nn|0@+Znr-nyED#(_!A)!Yun(8Jnxrj z?a*u|jv0l^<;;PNebTFGd;F*B!qYSugnQv zrt21Z4F6(#dfo;g9RlsfSz)zslFSa!e#V*IuaP-;Q=Pt`%h*hgIzFcPW3zvFCC20L z3i~H9D=@H5`noux$A1t|3-3cr&*zrKAMmRG2X&`!n$wASIFyukv1e>0CalEl?uWAb zADn*vS`tQnPTh-f*1yu*AUpnNtP2yD#fKWHZ&A7=4x6}fX6&Y#Yc;F?O#E=h%?(b; zovvAUk}9_;j)5`7wrRqVhDfA16wlZ^Sh6HxDb^RGKEpq@ZPr+vp&x?D>AJ*Cc+1R< z4GL~$;35z_?rrFes_X8bmz>*Lb((>_3}ds2V8}{DXtHFtZ(6cyDLltn8vchGlGM)? zP<9Ma_9z;a?YsPCIKF|K>{YliRGRI77^Tyaz|y)kSlWF$Pl{!8r((tq^7Ju-rLMW% zP#f6FEh&$GQc`yJYOvPzWD_I{doi7rsn(bnz+YG4abS~;=NSo&^EdFBjA-gEINs3p z__eT%AS7UQpi#TKEASv@?`Ift@&GnUjwo!Du%0`<=i##4_DEa*qmh=4G=$?qdvSRC zvM_)-8A68{6z3BWO){U~{+kjJ+tlrU7-v56SE?uQgo-DyW*)M*DfAvl!mo~%@Buy$ zD!5Gs(e(5!gLxwZ- z6q~}$C7P5)VW$aLw_9 zpX#GWAUv`T6!GAdAyY)wM2)(-kBEpY14nNC&MqQ(Jv=xdCgL#$;_-8K|G%fVHAQ2Y zI<|L{K zKfDsV+JQA>zwXaVF|Is;rP9~_{AIXVgrkf_;^+1tjH-k z_ejqgPNTxDi?gZ_Iamcd5{)%nHAKNr1H8X*38c%wvH^tCS3G-PTvc4$>|=3@5KOYL z8s$9x#l*|)54cNs(&~kCKC~G(57~ zah=#VE6X^flCkVugoAKUEZM*mhXJu28*15^d`J~G%y}0@Q>A1k26dyKjX|CF9~tQF zkhZJBNV^MZ=@I}DTCDIva!il&X*j={ju5-IAt^KEx8P083M7o^ih{mEa=4_B4E{#C zs?RD+i(nbk!I4wfM|NKI9B9p7(B*ScM9wHeU5p1ys4k{|BkBTM(vRXVQ4-vSEW`(N zJxgGEw;h3&`BcuEanX)D?s(@TT9=Q^JH0Na_GW=*>IRGzifMh-54@nN!TudA`yB2s zkLyBmGZo@a{G z_z{>-4x}J=uX+&)uJ&`#4&HddbyNR{Dj8C4-%g6zOE5KvXlM2Gc8%yRj1d+$bRzs; z>PBgyJcLfRXCdbbGmJ$!p^AG$&_KL!aNU4E!V(|ATe&)nD%4g(|F^_pdbJ30?+58kay#Oz0^-!= zUc|@@=pS4>`fr9bU9bVS21P(%dXSm-g5}tX3++HJF2aRj^kOM4XT8Y&3H0grlJsIJ z*m}cI%4$SD0D{!%mk0Ynda>yIo-rZ=D{1WIW;&Gi!D3g*iaJgee=C}8j4#g?= zKr>&U*|YIqb}OrsJ~#7QWPBGZfUO4ku&}3q?(F`5 zO`m8H-;Ua{f0Z`}vQp&cl!QTaPCpJJewOM%G#67Q6h`j3nDNG_TTrJzF4R=V-&EJi zC&p9mBN$oU0l0h62_pj+d0$Jf3J14f_^7UcG5cM*`>n6o-CR=ivzgwA%M`kh((pF2 z%{57byQ0=4S8OrXB+|%0G!l9rW3$c$GB%f#WG*Y$V{^fL8JkPMhZWbF^N1-=^atVY z`3_5kz~mJb(xC4j;Y=v>X^3}IiN3Zku)7wfWiQ4zI2i`pdfJ^P$z)9Q{p)3 zz{;`))jLpp98{A%zWhpFsK(V0#aRJXB~ICuhsJBwgNRy9B< zwfZu48Q_kfAAReo)JLk-KmfCk_c}1;kUU|LSq@Tu0aHQ~)B@z1T>*M4RGTkb$A!8X zRjuaHVztDot-iWX*Oq&J;qG*V;0Mo3Rq2(qu{c;wU5TdVM4I|l^S|x$!vAtGxTwmB4g1QShEQBE$8r+Xwx$JKf?!Rx1KV)ao~}@NW6G#Wy;*fJEq4BgK;Hh z3O&Jn0OB|kW8TB`xtx`lcK>8l6YMRRI?``Nx-n%jim=R9u0mdvS7{SDCl_b?2W9z( zaCuuV{qrb8`;`YkvtElG-b_RLaZ#<9X69l^0x?k8{uznc-A`us|JC*6+ei|zaC80i z478&MFQOIBLvnWfp={p_9Ku^eq{)@nL5sze#rObMmeEW??kV*q5+oj}|8if2x%%k= zTF8jI)nXt+MpSA>uw3vk{>dUZ1ZX*AQVURHHC4m9=6nsSTDrXix_c~AO~FC$AH^ii zzH<&=@R(H_JjQWT)ev}P7XFlnm%$Hak3Bh0H9$+8xLT?vx*cTX21#HOL~aPZPX1s4 zto~a{9e@kV{0|oe%Xo})EoN{OcFoBbvDuhC7R2Wl;SOP`tX5^QngO&|4#9iEt~bgi z56&vscrGV9ysUCq4Z=E>M;HHz;$$y;&R1=!(+{^-ptSIx^us7L0t|@cyTN9F3FU7#LdtXBU#| zQM-FA*84LOS5k63-H+ndlk3U;NH-M7p)B84bvHDs$VxIY3|Z0k_RCoK@R`VbnBlD< zI>C1#<3u<%D!<-qqHLz(+dwW0GceNy5F8BUKck^{G|RcHaUUS!yi_B zKv*DR?*q>w#G8bDzp^B=h!Y{WGBO}@*h;YEp}}_h-n2(??~B*zefi(I{RpOyH(>(< zYuA_-9vg33WP8?I<^e3SY)lAQ{@W6>y6?e+Fny3QuEMGix)I~sd$A`zl;s0}|8jr+ zw~+OQHWJHF7nOQPl2`<%=sF~59W72#>?&DKQBb!Z2gpHPQAuVg{Tra}ktc<^B2f4I zReFXt?IXQkx-J1aNV(H_rJ%%EIFzVFm`K#ZPZgjV4)f|_sO1+SX7w(eJoWzcO&Rs- z=#dVD2Mpx|j}4QsS_Uv{bGzepOo!2g^UNuDcK}Z^6{*|YOvI@z-fe=?KCV2Mb94Kk z`gVNFIGoM8F42n+2Z@Ql?DfHqD_(Kb+KLkm?ANZ~_$39U@mM&c zcQKWJfy@(_XP9}uuXtH};pVBAgw9t}zA$75i>vz@{16T`QFj?h-H|jANoqKFZE#su z_`NiDxx&Y>ZrI1*c)Lg%V?BZ6iGJZYSN$EpRgEuKx0sk5`wcj&kH|(|;p*^A_v|lu(-98}a={0>SPg)?#31T*aG%n0At<=Lz7X}ak#rG~?nIKB z0V;(kTn50wY>;p(ZzKCMD-kUcmyR@9S4Yw=LK?_Qc|yplMAO%%nWmn#e$)LC81d)Y zHa7}-^`Pj?aoWJZp-JKHyxRVpKiy*yRNr)){LtKLeTZ(U1RH4>!)$5am1s%c>HH7! zEWtGb?M(YW_%I9ba= z=V8(!5~jxgopqKJAtelZiYVKLEUu@rkf(cPXut51|NMWUcMMvy=pBm>JH7mN(EG(Y zi{5+iXH0r8MWO$N-czjef1=myR(-Z%?^;W>;2#y<61jjryD7p@6QSE-m*mG`l#|5~TkxVW~?JB(mSJFdxYeC=5s6wD^ zgJiF+&bph?8C8l3aPS`}EI_4D=h7T1Qf=R5bCLUbqtQHg(0m+c2Hw%bExCSKx+j|3 z$dnEXe*HQw$sPNY{IeLKbN+luGeO#y{cqAA)%Zd*hE})(|I@Xw_gAo+h<32gYX%Ra z@!#`|b*f?ZLCr#Ptxs*~=1TmHc0PTSKyvVEv;`DaNd&?H5c+#>Q-|?94J_A6wX+-e z>YvGjS!(Hd_}h4mk)V)0gigg7?Rq##jJ2244@KdP90oalK+tGLG(M=+46hM}L-n#s zN<=Ae5Mk_IZU}qv%ML#R=l^pYlRn_s!+F}vd{%& zcnOXtzzok~LXvt24lUgcYRZd7dye?M98_Cre8Np(1`jswU8=%)C=r0K8SS=yODyJ# z;H*+}>4x;`voRzvb*$X;7-7lJmPKg%CY-T2ms?FfI8|^3OGpo-PH2JAH4Sc6PC!ul zW$LL2j^Dh%m_&eQ7u>W8PK+e=;c|L&p4<(32E)r9MbFz)aE#z^)_<&oeZv2k;VIbH^qo zSaCdSvyP9)pd%C1#h;j6z~?MQdbiDPfMTNBQZ}9D97xSE{JSJ zt)tDh3U%a7cG?E9jR2$$$oEEc%SzzFep^Xm!&Rp5P(A;nNl#e0!{^3fuagkjIDt%u z09`I9wFRmk0-L>zc^CAyw7^Za()CfgAb(3OZyGwF%!B=MErmt28rBRlty2h=kNpu87Xyk8k48hK>nP>m2CV2`)GcTN^G{xX%A9`$ z{31}ZK%!VpLJ%(z1>}9I#9YfjoO1BiY)U10hlYmOkaXm{r+X>)OFn3aO%|N zO`vDG!X0br)GI6`)y!vYdZyMVqEl~OX40U>AUj&8ihM-yUwR}q{&znS!T;DoC;r`| z@z2BDFLOee+Y?UwM;#^wp;lc+e_n?gWA~@r<(=5dX)GN=&!NX?uQVH`TXAWr5u>FDbgR$@ zCccvPD<)QZ3nss%epgiePejqu_x$X&73JMy{NPVN(#^cU5=GxjY>(_V1VGF(2 zQfQ!XQTwWw=SF(6$E)l~FQ0$7;CU<`4@p;)sFF#|wLywf>NvU^dWxb-!W#^in>$IW zmW70>N9#duphw*Xw(MVM9ol~y7t459h^mchKe;|Oz4yVCQ79rTi!k*If-YiE!^4LI0{4F?TDhl~ zbyR*^t`P2U7zuaOfca1!d(@lnnVeDYpn}ks23Le1JP&xI5mV)>X3qZpOe}M3fs@q` z-vQ`zm>TpK#DPpR_Q(NsLz=YQ+-%wOLIqc0N>!b#_O0{_fQM!8NFPI_J-T_Txh-hJ zzMk^n8+2k7z<481rAwO)q__2&SFOeh3^XpN!f}fJ z`&6oR&G`T{i)%uCw}+M!tYWNBcbU_0wQ78X(=ZJ2pC#g+1Qfo)%0H-n|4Z`A)keve z71ViFepr2td{D#X=YI8CHQSInj_fqsIH=wQjIcwrhzVEiT4MIE)Vv!rsUge! zF~_&i7jELDZ)T+aPh!>YV*QUe>z@{*e#nn0uM47@Xp1K7^19$9yS$##t+q7BNJMUf z&td9Rr`|Scv*jG~*(fx}tJ!|rsP@^Oz5TY1_8%B5T#eQKxom$%toEm#sr>~>P8PF0 zd;1GswA26f>Dzw}bDlbdrE-n2dkizI)x(bdZ6DS6LfsgKzQ}Kywka(69rLawznxcE z^83X1GS(zU)1bp5zf*vQo)zH35GnJTIIw+__p@FQ-%jhkq8UwvlM_s|SwVLAVFo(TuFUrTcS&Yi*W@Wy|TV?tV)Sn3b zZz#~#-SrJ&$jFmaja0)`?5Kw<2M5z4-J3{5@0t zu7$sQjWBr#E-Nq+VH&@21^$a(@$@fqJv|$LpwisWpx|fJLwwX8?r;&Fudg+( zq)y#SFLmRuEZ-NQ=Mf`dH>;WR1q!fMZ)z3*QN@#97%LJX)qWmK8csk7Z*vna8*rg~ zGk)sFJv_dzJpD^^uL@l*?K#hrc>*KD+5Nwn(R9}Ix?zBpdw;_}!E;cD$5$4N$8W~m zwsnClJhj3ITqhO;4`5FNe-i=MoSpbU`}hW`)3+Kv_E1+&XLT73Hq;gi+-p~HI|UQk z_j>PZ=-W8!f<7>8N^}2=@rbOz77!CH(T^hJU(Ac`X8fHyq5*h0*yS1fpc#KB4HmG+ z{~!(=0PJ3{wS8X(LL}2e4A*>x}VG#*?Q~<}C40phIE#n_-JA z$#DZUtMg)AEAJW&K(@A)kSHyoy=?o~!IQLh8B2h!Svu=rq947S#OYTov_ySBK&Crw z%LZZK;DW8r`CM|~ID-=@(0NeeAK|sh7yz_K?+`1_2-o?%z-^?lYXPJQ0AqXDf^B5^ znV`c``O|9_kdc0_8JWy>e}L2iVnZ#kJq)jty;Y+He8KRKi{C&&o0^lYd9F9 zE%T#Y|5?m`wEtO{e@8Tc=s%HS9e=Eh)8QI`2^Q*?lrhT_wJ#Vrn_kV~#HWM#`nX(>J{%(r~h%JA8*<}$%IO0RJu~%U+ z!=WFK_O+pbXmAW9WW|Tr9m#aa-1T; zyrERmUOqcNkD5?th_?}wpB0EGXwe#rpKGH5V)OF_TDB4StmS<~YaqTCX4P-;GDi%R zn>EPj8X(3%l@;2nSPxUFMPim+On4o$>@}?BU|~ncEURxyWQ~y=S<|dn8%(Guo;med zymyE-EB_l$a-DHjekK}#%(_JM*+rVziG=X2ck9h+HS9GZfbnj84Mfe5iJYM~C7V;i zKoo&SN64QJ8k%8j%-}U&5g)p;%#c5;Yuame5)R=7t}~MGbu>Wi{(c)mYNFZzsKQce ztZHG;N{{Nkp$rmHj5Czzyu7Qd8EGP_H#+Y|xZa(ecgF5&ZdD$oGMxQo56)AIjh)Fj z-PbD$fW$iDUy|c?vF@Y0af!X4h_w}0l3r(Zw4Jb|t2%@VU}NXuC-x|oPS=$VuTd${ zsq5x)pbo}_$i>$krRI8SF?JF{@2OL4;7!Zi2xr{UNV|z3}G(VQH&tmZ7 zMSH;*{7^cWP*+uf3c!!?_&F;-2G^)G20z-F{Fo1~Gx+g48>q<-?T^zev5$v}o@W^k zYoh^(L(TZ0FD#6VhZ8utDC6NU5*_2=jvC|Pc2sYShYS$#Ka7V2lZ8?0tLFH(4~auP z&LRR|M+3yB_iad@LlBJkluz4>Tl(G+pYpyMAf{o~tG8Ac5nZ1~Sgq?j!>#XRk3@}a z2Sj2^l3mxAn^4irGRKQuKJ5Hjcj;O9^=dRgY<^8)=h_F3F+bjJFK+S6F+UEh0b=s& zFqWuPuQyuiHHomklB@}*xPz(wfU7wM&wc?b&(5CrsKZG6I+AV}X+-d1 z_t@(bLl>%L*#0;x=V&1tt1|U8L>juFo*MEr^wI`36m*5w*wyu!$Lp1LbYj_O?Vs^_hLJ$d4*C1M28bzty)KKEzj=g>$lrsp?X!OXnX__HbuxJ! zHD=E!e=a++vH11-g*Ji-5Sw2m*rc%W%OQX7*{iU4=8(U+4v<*#H!cF}V41t?yPsuld_5X~ylf)ou1mCUPH-kA0CGp8 z=to>IlX-C$618UO7V5*Cod`@UIc4yj>m06qI-HqWBMf>hd9Y{*AdPLpd4!BTGE z*wuw$_b#&+7SXr#s@S~@PJoWQNL8Z(*m<+?b6R=THzqWTZmv-=(Ms^Ai|L!5I5!g) z(Y%K&CU@;84Hlg|Nn9qbdqyJxFCz#%vVy8?#RHRXlp8EW$H>n>63 zu?RHUS{e;tlp6h9|98?aE#LbBNf4e`Q~j^6A;h-hpv7$4Up20NfrR4Paew!&ZB znn*^o>LRApwK~k|FCDM3W|y^LyJr&l9HYzhEC;udMKJ{bQ+pLLI<6k# zlA+^L)G1Vej(Z$Grxko#gGTp_tWmwueO&r+1BlGIj9g{+t&r~HoiE*ehgIIW(tWPE zi;=~M&%RCQGxZ=!=w7St$X>*0*kt{EP`-_*l*i|>7tP?@TO?~Ey75s-j}e*s9Sy=m zB~JlHy1FvUmyK>{hP#*&FC8XOW7}s^@V8Uw+o9k~@JIZ`8*06Po=RoPcBGg_k)ywz z`y-ZTxf>BUQ86^r&U4x(crZ6eq|fjYYibtA#)|c&Sx3*-=*eA!XR#A#!tv5sLlT z1$HvngdtuN1Z)Dt>;5tvHP&=}<$$J5nBniQvzA4&v{WL(RJfk^!gSoeR<(haugK&2 zuu?w%gec0V%C0>Q8;=Kq3q?2&sehmrNGPsBxt{VPjc*X)Mra6{A)T?6%F^f7%L#po9-h`Uzc=^zu`U`kG$=5b_-`V>HCPY$1-&imiK9gqD>HRb&Pixpbmdg zr76O1W3a4FHU`fjwJ>0aJ6&+0C2A(bKlGX@y7C*|RuFDHxe@OB2O5oRSrPWvnZ2Ge z4N*?QjrvQY-Q~Ai zeIB58+Ws;vAywDx)u`1$#6Hp!MJ*fi4!5(B8EbK{JsN<_v-<;=vHLMSXtup>2e;Vf zcm-!>4G?qjG(vlcE>(M;uv32>T8K@(-i2yxa>v?*I-|UV&p!*vd!qqj%gd)&K12wA z$6m-H+_B^Im;)qAUM55`9rAL0Bt3?_e4{zmTfOVEbF3{;i_I~+2k3hfDz?1X{Xce* zS=aU~{ChPTAU6M|K*S^bn_w?w@z1g99#R9u5FFVRS&5s)Fa>P8A}t87J!SrxXshO~ z$e*U1)vzV)eEPr|i>BA-jPkXx%~|*}BN`w!e{KeH5&mS^3z_`U=alr0`Yg;EdJML6 zfND95_m0(>@sUi2oCVLbVJ+LC_Lr5uY9WDzbQNm}>MOyeW;OY78((4LyNN9(3!i#seL2X!hLy%h23i2w=o>;?MR7zqmdt__b$@HQI%C zWMVPxoM-?tt);ASn?u-f7G6g}2v)L7?dJY1nn$Ir>^!0gL>{H;%=cWS2gA5w2I2Y$ygB#VIx@5GI*LA1=d*SaW0k|p2u0Hk|e`+ zwnk%kjs>z({WgbXBOvL<OqrS;4PzKk zQ!SWsl@krqP1iF*!{~M8cnzd;21pLqm46gOMj+RfE%jOh>q;y&j1S}G7S|kx$PB)2 zTUh+x*8eSRJs(T9mPP|mwhaG?C0BFNFE+WVsoo0RUj&D2iY6TuCOIuNvHY;5Jp@qzUWMSHhcko&FA;homhm*Z( z{xsa{DIq>_A-oOSE0mz)2s#e`ndej8SdI9vM4;`&+y=ahUpFT>0_DYnO8#Q4;o}>y zMXyM>dBk*0!u|WAf}^#kw82&Q+!pGw4lS`(NeI7*R;_^P6gTYb!ow;dUA;R)dvt#x zn0Zn`zc6C#828~h|1th7S3GD5+5Ub7VY~#T$k4#@F}PDsAIBl`91my0AsnX;;Yd6?cp>ES3zkpCpa~%X8FHk)`UxKl!BOFM#A8+OOC@V`i(!>7 zEgI34XE|FurDh^Qjvq(b!#f*E{+=`l?wo-Zq^&%otskS>N<(o%&P9Hxmzs?qOp@J| z8-Muw0hm~0sK%@CDqiKKJV*L3*VnsN^fAQ>4LdtFgFizQw5Js-~#aXV*y~X?L6l|`Q z<NQ=I1#;Wz$jzr7mIz9&=OI>k;#^?hW`wdTf+1jE{R{2{2K~wa7Y9@;B$)auO9ltToo1D5Dw(lCqUh9DP4GpL#$|}*EG&~HVq@$?y2n=u z8DaC5TK`}0dswP4@SBPc2Yz`-h>72}JUf05;wu(@{r^w+Nf;vBDarEf;QIgw#(?Nx zm}hXABdM0Fd*(b`|Cq6<3;m>AIN`Xhhn_ndURC+T=}XML#* zL7hamw8a;h+6aTe^^z7_2{d(nr0REc)qAeAsy+gKoWB1V1R8Ocv~VIG51ODF6|Fm+ zAA!ZDaLP=bhcra+1o;f`yi4mn*ZlP&fDm9HJpv#Sh&oyXqxh%ZM`<&ZRT|hXv=y8P zyXM+yXo<~u>%lzL8`3OvA2=W%!Z(QxHB zi9`}=%-{I9P+k7kio?HOumCRM`byp1G@6e(m2q5L%&iGyQt@KHEw(lf`v@nZe=|>L{+GxGY=yp6}c%z)w|uTi`)$g zlTZ$7ikOK%%k00KhU3yqGFYp!AEZXvv<{OU;>Y5{*D9-I2m^fq*+%W>pNHJW2+EX% zRL159Jym8^!UIztsEwDPnC}}aDtx)ReJ@^{2rPF?&sD2gAj#rK0Y1PF+M(3SN7SQ8 z7&p()i_{}34Tk)|pnE>uXWsT|=Hy6!v7pJ5t5G!69?Y;M@(GL{NXHWxt~nPIv+{z< z_-g!f)sgjytI|P>E2ET&b&4zNWdwRBrqA9KhiG*WHCDszmThRy61D%}0|+z3y~HI` z+mSHOh~}Q*JG^QI8Uebupiy>VXI1u)Mi^AtYerUJZc?vwaidKfY> zVWO>%N8`iM#{-_L(Z``1jR3=AfU!hfcgwXBY#;OOyvO-3_3Np4sZVBdf)dfrdt1rGQM)&H>?>WA)*hc zI;^o!sfO=naL-p5>5u5-q5=HsNni>;Obdl*J&Xjs-eFvP1gDVkV7!komGeFX>;g3r zG?Bf#Quyi!*=EXDA5;*!B08C4q78B|CcNhxeXPtbgw3d*)tJ9N`70rG)=!7@YX@2j zO6&{!c<%-Z9pioCuBveHkM(AMl_uk8c`54VI^%KRX$|}*q$6wt--iScI|t0hdl2~; z|K3X9E^|0F0KR%S&4%cb+C6&A*v7gVf+~WCQM^VLhf_D?%5W+JMAp~}s3a4!-%zK8 zSrtCe4XjwJq(exET8~Ia$cp-~O5^xOM|4mJ9?+=mbLt@V0V+se5g)q2nNFmh(^s zFq185RBB^+RoHlXgBAS~v!-b!oM+I|l2Ka`ViQpd$e|Nc_ zqu%)k^;e0WqZZ&J!J|A!Pernnp_ z-p`!lvVC2gliOv>_}pQ#HRVG!by_dPmLee3t(w>$`v|e6AolN&o!H3yirJ8Z#>VqX zb^Q*R4JFp6uNrHuZ1n)Bw#4s2d{|n5GvXv9*vCHt_;Ws-iU~${R*t&=J}r3Vq3hKJ z_R2a%SJn{;h@Tl%pAp5ni&bTPb)He>cTp;3Kho3JCZKy@KIV3|sgH!XDhO_P9bV^X zT&(KDaOiS;FV>{J;iiSY>|bdLr%jKT3fzU&Zm^%KXxon6f)GkiuoG=PJH~lxu|ooB2V^s-}?lL0!}( zZA>9ASI<^hLaxUT`o3GS)%S1ezCU=G)%Wqgpzlq6U+^nro7j_Nqxmst9=!{Nj@Ezt zoAlK3cHwM;p@*bO=noU2HzAlrC|wW=b-}#-43kbc$t^hHpjP<1bFYCo#8wBzeXvN- zE<>oor5f#?8g0J8c1_SOvL^pc|34SgjBu?x;Zi|bI$?wEgp(842`8OcA;E!GXcQ1D z0vCAL>6ULLsx|x$vc|p^p9~g-1UlYqwc4E!(DgH4to;O_wsJ;{-Y-oYM_l=+n z5kf?pU1|Y7VFChqbXfb7x(_dkitF9gM!@dzngCCvBTJcd){ZP!Nt#f^|27Hj7qO6D zSu12R_V-3j=I9h5ld-=aK4_9@^`{YLxD>E7Tqv6-b*GMk7mOpTw=uFVR$YPMSwiEWnBPsNQd%@`B7y!`zjvA2KLXF= zurB@H(>s_6^)$Nh9?iR5^fm{Uv$Sc@+=cR?wl&f*Os+u=lqn28Y|(7pOqinWB61%kcUC+ znj>GEH6&lQ>XO?q{nPk@qb*#8oD0^)B?H>`qihLa-KF^uRyU(EYu$AVK4igVbdwr| zgw-rbf9CJ%7E~|J8{-LvpMr0L4jK%!lniF7fu|U`NbEdyjC$M+vzBW+IiVOTU)!z?Cw`!%$FbjfWfXfgXui=hq{_;V&@s$tce4U`Piw6g*__K%Z~{ zZeKApL*dY%8tJsmkD(OJ@?>q|3~mJrUfbi1)!%oT_P7*<>3!=C)4Cx!hQ5xXSNua1 zcssR~Ds8J!I}9B{YVSb17PWWb1Ju%3)N7HkNT_MQ(H@*YJ3&VO?Z8gx1+gq?j{dGF z8*1ZB2~%8%U1Kt`+B}Ad3aGwy;X#@>^(#)Z8WY5 z?``-SCgNVLdjg&r#YUNX)$ZOac09Vb&0xCts_!qt!<6n~b)~!bcvE-$7w&j$D-KTt z^b#HZkuY!`*MxzGnR$!c6Ea`apxfQWL8G28S(R@%b}1((L+obZjmU1nK47TX1Dp?| zJh9dCuse_gUpaId zriSCH<5!qnS8b~v{^R18Hzd<%QXP!2r=HM_GY}IHi2`+Y-;_0Bljct5N>@^09x8@M zzKHI3y3}x7B4xAM#;KBTuQ2qHdhOdo;Sk~(9ic0J_6Fi+t$R%NMfrPU;@>?c{$sza z3Imbx8j)pZC8a19DWy*QT@L*Bee*x#-xCMN(|upthhdpowVA_k&9dJ)48v;I?Y7D1 z2YjHPI7DR*QhS)IozbrL8GOGI3?5M~_Dtl3ukSI}a7cDmTW-@sat9_y3_w<7j>>0H zmDp4@viLC7WaQ#uDjlxGSZq-*ii5y=hYjKGM9JJwxELP}gfBvZ!=4d=SfwAYKCZR^ zQ<**cs|yTN_XLThYKqSiJ~P949h#v`P5KX=cQmfZM@v>}ppV&6eS*^1BttN(4cu0& zm(jl}|I<)oJ}bEsK?&hbL$0<*$asM{(Hijbc|DB~B-xx`sl_K*$k z6l`)^(ixdgxPHO31RZNyyW9^PCKJg)RadYv_S??E2UtXRnN0I45ecUM$>>Pghbh8r z%wFuS>gMQPq<_cmX8RiH#>5x=37m3fvm4)!KuB+{1(ea7qb*YIjIv!RlZOMn&^F;STbu-w=d0;>AVcDRE9h#0*-J$0GL2o19 zkVx1}>Lh?*B^eO8h{AU)yMOg$L?mkv=MEQB7h`6ZnNFYTvUi5jU;6YxQj+iki~sOy zN}IYKn81Y0?En`m_8io91owj+5C^~@kyKoKE2gSia9qmn7VD5jt<~eQzQKHoS!JK`kT(b5D?rF2Jg8A_Z$acO zkkG&14`J)PhCvUAc5Lr_gqp1R`V)MhrzROfbwquP1hg;mq&uhy#EkvZQ+*0-%>H2s zQzOhona?=6YT|{`xEmQy98I#E_I)L6Mr=K}HpCIH=57#$ z*$+)qVZH-uEdBF786B8kiaf0_-$Q~;Uj1T)x&1QyqO|6sJ2ZnXQ~w;L8MIvxgoLm@ zlS`wd3607RTVdbw?gR9p1%stK?BZTFuoVD<3N!seCF^D7$^x7S656 z{y-XkE(_3}b6-{{jNR=%rxg3aA|>o3o7GAAO`DsV8EP9jPlE5u?cc5y37zfVv`=^@ ziS8>L2S8lp8EqlhqF1o~+ske~?(PnoZ9T@&%spI1y;>xPGi;t_EkrUt&GRd$6YeBB zSh9S7x^dR3Jx1kLcj4w47iGP?9fj1mTv(y0=fAZ(j3pJlY#nB$UM12R< z-RS*3i$2yvgZ1s;=Lv&wxV9zBOCoXeQC@zhZ<8A9cek zP=}Z*YkPc`>9=Ri>lYDD2VYroZY1_9IZk}!KvquhK_H>+HNM9KXPbUtjBVUx;D={b z5U7~b1r=}+TBiK3ypb5_eO;|DsS$%IR(iM3^c__zV56kF9~H zGcJXN8cH(fyR7i0tp1zwTf6<&CST(p_y;%cLO8XI=WDo?9;$Hr2dIO?L6| zsZpklegw`ab2Z9@648p300zk_gDCl@F_Alz=y_~Ff(~+Co{W>-Hr>Dayr8eIV0<;` zoH2~x=O~=fB^Q%KK(v68e;OXA3f0~l$cVw1MbSdd!&HX+$oPl<-E9q5=*lH(J4^wP z&$pMCh={3eI^|kPiNpJ!YO7A^uaAF)hf$FFd3<~xZ)6f8;a$Rpv8u#%;w2acYN>|j z3l~e&GJF6loB@g)vopt+_D3hV{p~&edlEhVDM{+VV=Yiu^Ig>##xO_Mk}4;*H3Wn@FF(S&#CTFK@sbk6{*P#5Tp5s|ciF%1vyHA;`9y&{}hUTGdl^p(I- z_`orAXrRx-<8UkyT=VS$&p_M@+fDbbjBoLspl!7cBNRPU-+{{yO9U65fzl4!s5a{B zHk#@-l-b5*x()IpC-@eoBF&&!-)8%oUzMtrM&n-atCIXOz9*6d)kbGxb({Z_8l*q+ z`JqK>piY^IqrBZv{wJ32XQr_T?KND(Eu`1ZLFZp@TXb$9f6+pteUY>+OuG|lTO(=P zn1*+!8?B0@eZ#aXkhVCI_C3?shtEXPb~259m>)^ogEX42jy`<1TKe$ccS#>w{QYK| z^kI~|sfMsp(1qs-{h)oc{%+?WwSJ_@eI^=5-m=L5DHa+XH5wO1q2bYJnCjLkPaobK zL!JVWhJvvgT8(3Mkl8QBI_drK>l*Z`+hf&#Nu>U&SoPnc>%TLq{(?yT?g>Ze`p5~o zP~M^}BEMR{MaDQ!1j+ETxv1z~k*Q4_P+7&Nnr6k*r&6>Areb`RXTnkOuE4K`&KA2> z6~ol?)RqK~Pyf_jQ;uwpPkypyhvUBd*MRA*FlQM6S+h&xF25U(H3)z^Fby(4pEc6Z zoQ?WYHWwUy0D+|`X~;zCG)aYsB+1fCbdI?{+31fqMF_YN|F`BHE0ZJ6qEFiKoMxa; zmpi3z%FVHU_12jB#9dI*O|?OLHFSzkw?m!M2=-(jLOWuIx0U}D4>T~y0S)mW$2Xir^;R{Z^pX*jx-Y+EbO*jt%%npT|k!<~sk zky8?VH#aOe6`$K0E7UAI6)*)u*I~h14}Ubp8KsA%Hee^ z!(fQ^MB@17hGaPyQniTq$aU+X8k1M^iHTgd-u@-fF!>|<h`C>t^NN{_vP_X6$k6-OCSM@46Vhzek9zIv zR-6!OpcS~6C@F7WRdVsk9_#XOFw|kz0bU@p>65)?xNUQZ^6;M7o<+c@y?Hu=@{~F#!6B3i`oOattgV>YwIf9d9$`L zJ}7V2;iP`aNpflq3I3hWp=T$R$qE>n(CdXOn zInQyWH?Oyw(&#$Yvo1?F>kfFV;$E7h%hyipXIfWfm~{tn>r_cE(}MLH=)az{uD%2$ zVC~2JTR4(~C-4}+Q+L1&uZ2hB+J`}95>|8(I(K9%{|bKmjd4b)>PVp$t{S#-kua?O zaKyhE#qU0arzTEi@}+sK?_ZT?6}TuWjG$<{nuL8I5nv#K#_(JRMZ`kaXNjWb^?;)7 zDo5(!ARrk+biJ_J^i2GEiuIDEp36cv+Ec<$|3p2HH3e8d46i`?v>~Qt8pK}C`WY8^ ztgGg37@B8k-#QfnI zexm#F1$?sSL-zk9pHc!66q(Sdusnd^g4%?{Gy^jLp%L#pFoO6IeD~sRdQaWqLhFuR z=_{_ry3mlmcoaqeE#rG>q8e*F#g-S-7y+7MZV;sK16ApLoh zm1&J`-Ob}4-Ai+6vYo|{tYp#^WMP_9Pkt0^x*ZfWLgL zMFu<&pQ9K|6MPT)^mpQ$g3HGDtc|hw)(oQ=zIzRF@txJX8NT1zBKSV}0^$6&y!}IE z489?uV(5JtC%q{2JoF_^KT-VebGX5I7_J!)#2Teq_i!VboXd0;361#D$#k;+nm`V) z-e{?}hL2avGRJX(DriGkE*<;421E>mdEjbC5ni@SefdE`g(DD6$>BjSMly}A6?pQ@DG7&FJRVxDpLEv!4r51kEJ*nY1e7g}j z1^JD8D)@F3zUAPXX=SoI5_{|lbm##g1pZ&FVd=pwX~6@~l982c+*;ErUI(mIt1I`# zh=vH(8r3gPl7d7zpV&hWU@U2bf-2ClqlVr`7~lLFFs9*QJ|3uYqextR21P!7l|}k3 zyI5v=DZ005Sj)#I^l+V&n#WQy9?%1PsMZx2@0IC@2+ye#M9gHP12cRb#ihu;c{&(r zw89Hp;pDqD7=L~L{qWzGx z56L%Nw~u&U-Ws2bE+CuWQWOaYa4|Jza95VEr^jF83D%>F#>)d8lGy$*X+P*eW4irD zGv|Gyyp@<3SE8d~X!}6+22Bn`M5xn$Q?ncF_yr_x4aU>MhX9{yRX;Hu?{V@;IxPxi-Il_JR0ZlfEQ<4&u>X&E+9zVJ zMfYEP1pUuv|Ks+%{m;Ep=1dJ}(!YAi0kkM|2g*3G@o!@Iz+lu_i2?lh@d$#lfS_zx zMsm^Wj-u!ugnqR=)ZYANjEt6Rqw3#5ud%&GMsC_(qf>!`p5&OgmqpaNM)maG7^Kxk zP1+>_(~xvDQlR!4V{_94DlwHpBL%J_h3CcgM+#57#PGcF7;)snb6pHPE3YG-juf8G zM-0!sdlKTOM=U&7$G~&W?}DeS-I3yF2aK&KB9ET0M;?vA&-F3z{Nvi+gP)(;9w|K6 zB!(vplfs@a6GR9iQop{{PLsAKqK*Po)B-xv`5S%2@GXh1Ftg`iU)dscTDJ9$9o@bqaurvZWlLxN_IcrELRV zALzL2MGB;3#JUhVzs1O~sB!MP1FoZ8Wf+0Azk$5Z-kKS4U`McE(` zV%V-;OHfaIQMEf_7D1$5qw=Ai>*b}}7lH5&8S$sMuq;nnUQYGo)1jEsl~Q+KPaK3r z&X0|Rc=FF}#9$yB--z=eqsHJ;Pn-oz9X4MtY+;$rVg_59FQS_2UQy`Ew;dvL@H?ty z{yK&*x3Hepgkn$;?W?-oidjz?9pAorQy9yrX3DAfH}!P*9nBn$od1@?&TMHsKdXe}dHNwvtp+zR z6vtclcb%MROWj=Dg-J)3=cway>HoOV=SvFyGmhuE+bn5P>zTrftj=gbH_-+cP z3)b7h>3lrc!pYf4wCAw}`mGa#&*pb%xAMY3ZEnRw^EO*(Z1KdLUJ?-|*xADOLW}4@k?C4KHGWz>RG|>;~ZyU4<^d4uw zC857<5ZZP8KUG9PWWPlV<>vmM(_Q~hSsee*N8GiK&+9S%AMP*P{=vY?-wAI{ z1m3zevG6Ve{lxJP7N6$A`#82^9i!IXA8MuHJ+w30Ke+U@Sa|7=f`4$<_x0@EiJ^=m zk*HtY{yn6Kg=|}OyVTDAv`_LE)Fd+HE{Q6-N{W6Er>Mw^7rzzRBpzfr^bMExjr-|9 zKwM~*`V_nw`X1ue)8P?-_e-LA5bKCjCVd;*p&0f9er_j0k!K<{m!;&qgt25XpG^y! zq}AaOS+M^*(!rar3;Q->+nNQ`xpwWd-P$vO3|yrgzkW*7`r{yx$$Q@yNUPP!kp2{! zIL43W5#V01QT{sj^g@ggjys;;6~?5Vi>>7kaB8Lk;;oYJN8`O|ANIhZN z0R$XuR=u{8{t7BrVA^nDyDAm|xS6zfH6DfbUdzA?a<>`t0`i=M_xPp2_~q}ONR>+g zFgDHw^QMKAlm)<;cweoF-0o55p+GeDPvQ5{?cCX9G~ucIjOH99w~^1^>d)I$8b3$P z!FCjN=fE0Msjw>%nS^_$MomI2{&7FGMt+>NPB5n{E*-trTfNzyT3S35i>G>Py=aN? zzRMKc%rW@a#QQEYaI>HfTj|?@{-5hpWi@?+O8JbrL_`xJHNH@H+)afib#bXMy&9}8 zp1#Fi?1F2BBQr_H#)U3>bL}DUHyvC-w{iU7ik>n6MEDTv(IFCzs%jS1W2`#uv1%Gz zv3)a#?(Qf?f-A!6VbqjKmD~jDk-pUy9#b+AqHtJ!ax&CAsD_jp=mf*$Lkv2{wd;;C=hV=#7L)>HPYr*bGp&u|XkCg^>#0fPs$~MS5?)*&bL6lx3K&;kkg?`mn8uKFd zgkdH*b-qdBKD35+Lmqy-oYKwA*=v-q!z5dILrd#>-~f$Lejysh&zF;ul9P<`d%~P4 z>83ZkIZwL51}3$aiSp_s>E`lubD)`ylbQ>WZg>c4h5E6fNkdDw^*}~Pqr4}7-tGQ8 z8b1-F#&qHUqs}N##tX>dnu6m#v@!&=D z)2VvltdhE~MqsER3={dBQ&8i(QE$2Klzb}Ccs~cs;4~fqE41{mXvAv7b*X#{{!Y9N z@2x3)Qg2|}2ahc_=d4L-{Lu+kr~xDxW=@S!b`+`uwpA+xHX5kl&~bC;k_l`68qdwF z7*9qG_^<5{`jK22IUf?mk4hH*PJWA<;2eG%tcc}D3pEy+#!K9Cg3FJtL7-a`e!Dj) z{OI+ZXnyq4{8)YzNKKu?zWPb*UQuW}RCikf>G4n1aU{7C?PnfQv|no%`m|`1Uidql z$>4Xh*o(_AV2}CV&!bNt8W^ZP&~Z`#Fbz!R(KaLhuo_vF0!jj#LVi||R{`%0|H9!v zq2gR@j@t8OkD_OE`@iAO`WcI>C4b7#pOMU6T}g+oFf0N4ci?)O1hJcn$TJ)+<8JT^ z>$FBkd%>-Vn6mKP{bYKiS=TiL);bLgnl7!s=Wx%nT6IP>IJ)Y)VcsNL3>F?V=_=^q zFGm|0QTWsPUK~zK`znR)(P5WRsXID$h|w;)rO>Dm;|UY^0Ga-@609x?6fl&MN%5P6 zk&AfRPl>g-dg3k8Bo{7X_pE!sDiJh>pgHI`4?59J{U~<=skd3OQk|&=vUH%BMC!eH zixVsMsHpv#UgNIUWX>^{d(-&51pcc!%#&Rn>@zB+&t4kx$HD(^(ARJI7oYefhQ6Ya zf8i8|zJMuW$e(8bE2AC~tV9vf?}6uMiiH;Zx2du4MAQ2#H2m%0VFbqlCInS>!At|F z<^HBX5kCpz1)lqulEPIi76Rc;yh6UX7dDI5Z)?z7Dt|NnA+|jSYRajfVBqra!-ude zLBqPuRhs`q{8t~o@jLl7Ly2wuxRXSbM*MAK9C&Bo|$dDX;zxmLb+a=u5&r*B^Wo#SOw_IP`~#mSD0S5IFv z|KjSd?s)Gzz1et2z9Zu;xi)&dX|dyV^-0)WIPV;9ag*DOsN)*K;h(TN^?)oV@fdjn zXZC&&aajWklBg`&k@gW~al6_G8@rjGPH!O{+8+)#`y|^$VYLO0F1x=aC?2ce$Gn_&zFDF_~{!5p2PG0M|e_y1D*vR zB*f1!8y@h=X88G2VtBNz-9kvr-MAKg!nvo2lXe$$B6cA z0)A$;Aa`B*rp;ZK;KAN2jBqnK(RhUVU6@LdD=G;$GS3O6j^gJY85Wjf$> zO9);RzfYjW4n)tu97pFzOz5I09jpG2>>0WcqFQHd;US_~2a;-2lYF;eZz0W7heHbC z>0_OVuRu*2GMG_JJLZ^&(W{q%5hSUq6L3H@xzU?bQt#{S+AA~6A@ zY9d*3hD3J8yxaQ_*P4TG_kJE7;gKk09J8vfUQ67@4H-Xtd;BmD*@EjS^|)!F+F<_( zW7Dps6ZTIBH4JPWzaQ1E@T*SZb(K7^Dh)31aRnWMq(-8_x*YM`9kMnpM|Z`mjx)tx9m+HKBy3D1>CW?b|x+~^ddsEI;SNNxnR z|L0rnjff+JkNa0G!S`KNLiip+SI(M=fe)M2&ER|O5e?s%-wEFWEXJ1LD@Y9Ajz1)T zuU8!SI@<6pMkUw2Ou%XKAY+B18gXFRKK^FgBk@#r)k(_BKJ`376nuuk1DBZDL8EN0 zz=FJ#8)54Qp=0_bSRZ#Nz!y{-+=AT|CK5mjlu0;*evr;d(-^!G|KCH`V=x2<5=_%U zc+U@r#~TdKH)7pYiW#^&1zafuuh7_F>^-r3E0k}ASeO*Ibm;;7{t_Z9Wekvwqsx*R zkMx84=iVNH%qwQ&7NieBwoH|kU2_T?G?(b}%?a?+iE}3YhiPeMzl`i zZ2gzmn}^p%+nY~XG5QEZ@6XfNSHET2vi^Kk%l^iuOh7Mc zX%ebOU{J}$NL(TJ0KSWBGJ)S&w+Ijl2``T42m|R^@^M{Zq^3QL z$j37gg-Xo;yHRC}Ig!YTz8dkDC*Vndx zI@;)u3+^e_4_V{#M2Fyc30=%mA%B-uRo-+5OIzTI1b}ZoRknh)g3%Cq0bI#OR9;V${7#W6nuG!(gl>i zC-{u-dV{_WP(Vgkh(u_sfinH;)Eu~oZHT_YH-YF&DMZTDPG7M=>})kH?(aRnnR8ZM z6sox}BBg~N#bnEHK21^6Jl1TZBb@@7dixBmhl<4x-gPb+Y z3Ff6@Bha)Q?!_co-0Gc_4y3mHKgnPtgchYgsBTjcqZUZbic=FJax7<_WCm1DI9G4e7XAs1T_@NR+!mnAmDi5fkqFQu3_JCnL8{ zPR-qIvNtsD@z;8j>vhxq`6R5<^D@B@9kgne?80N;pF6+}maUAlU^r#hEF~?p5G~)ZB*NiVvRMXRa6-| zNoe1~_7@}=E__LxU#n4_xP;)qd~8%NNE33=LMCFlG5qO>^C>}x5V+JEJ$C8_Q5W}m z{actLIDlGZKol=vk#Pn(w)>-SGhZj7h!6oyi$V_r&-hURiqV7m5uE@(Xuoig$Nv#_ z;i-A5zyE_{UG4FIULr) zTveF!vu^|55(0p%N^K+(szU!E4w>271<#EtRUSdP5(_u7FYaM;FbXzdKDHv`kqVc|k}B=J14Tf^8$3xK*pw=p254WO27{5!f0#)+}M zDp`iL7GcN*XxV1UJX9#nZ1vRPNe z@EhpYEd(ppZ6+USDOm9hDUl!|b2s~b?Jc$e!UvSQqH{6rQX>Ig{8$>;#5n&aHC-=v zrN)rZU?ysMtU`w86f(ZYQ->6IKr76ogRx3@sOacu;|4M!X8br2Lq~IqhboVEL^13(|Y2!cKh8e0pl@o6;P<>{91rd)$sXJzejV6WaMN3!gFOa7U{k`&+JWyk~Bh zg0^lu$FZ)CV0&YNUYEx~JiPiOo@p3CJY+`l-D^EWmCq*^7jE{YY&~P45Y9@h&RW$C zw+cXcKf@D7bOZP;;PB+EzONL`df5e<#f5ADDr%iXghb%I4DeQTgjM@mtvsnU_{+sH zXhl07a&EqDofBP2~R;t~CmD95tQ;Z;Lz5!7eH7pyn6V z`r6w0xf|*=>Q$q2i^DMB*H+VM+RU|3;DUG-wKM$ z#^usKGz@Uh695BSo)DCKto!Vc->8IKC5u6);WfMg){ci}e6 z6kj)IE7B-?kSqs+Of-S;Txv$(W+eC-C><7Gx1KR|q8<(?m%C8vqbFQ$U&al0(cR9= z8AsjiD5Ja)4WqNxz9L!To75GJB!{60`)*^DFT_{-eIwq79>;IY?k_jX?1rAupTqMO zYIxEC4;)B&JsSRmJO#dP>L1gzLetM~WMnWUsbM6Ros;-&rk!CFx}^tHo12B~YtY<; zFOCuXt>MLzs?|*%?AbJ1e^@XzSb(G%1oEaY=UIvs{D;{W(h!On4(|o|J8s*H~T^b&2l%)bIrQrca`Cst>v>?9vZp2sbMml>d58;w`BiekoZ#aIS{z!yj z*ZPJa9=iwB8{y4AAs9_8JFOy8lyJd*!`BQx2hMs^cLWr@B}0@^Rw^?>v$C27q;7~y z`YF-&s>!+V@s)^mIfEZ8!)whlp$6+!XS+mVS6N=T-V6+_qRVn>8`zLl%nv>EMeV|@ zLce&2Ux!;8k5Gf>A-qV1Qv)a~+8wwRe@_V~jzwv4jzV8x!m<;mWh zA3gr{zNMkjctJ`Xp!WMTrH;Uuur)`w>_GJD-wi)_>HdDmy@8>fgEIx`HK7wxE4wn( z4S$Y+l*!bT{}p>GbJMNd84LRrpI}R5b10IdzIsFVBuwDIc1GDsfZA|eL@;55&pc_1 z)DMAVPn6eJl%yza9ujC#vM1+5qwGGk5?wNi5PAqCLI|!I0IDL5q~McS4#@xe7ZD0E zaC8A2xa3Vp1Oktnf^K@<*a;7{g9_yh41FoP(j%z+o*76>tKjd(@rwsG|B3?=U*OfE zx}lT$_FFSSY8Y(Fgj2W+h9 zc+*xeA01=U-tXBkPxgB{9wnZNdVL=2!HF^ZJyH8pua*5yc(G0Dz`F-gn9=YK2MvO$ zHa*Yq`1dZnyR(|Xdyk`~ah51u9f!)$X~-YKp}`Ft+bFjCTXbt_o`PvdS^ zCGrUU&bN>;9=MiuQN#Js_nYzjqcwgZ%7S$ov$-;$gW%O7$edl*0t*A-C?U6pCR$+* zq)*{n3<5mtY`m$Y9Spe(sdS*#eQ%*PNe>>;Z--g=ySthGAt(vSvcwXz@HS*_$-S}f#vcU;j$-)-neo;rb ziu`xZ#majMt8PAGxHxoZm?d*feNUyrnQtf-xcM2kEfvm(#sf;r58_&!j#I`Gy*cnB z22yXA=K%;hap+J=m-8ZE|2>EmgBjxSPsjgDaQbk+QGNv$E3Y!@TQGM*b;11PBz2Vt zzk-Emt-Eebjs6$qVZkE6RiWV;16afPmhY2%q_qt;BR zMIV>nK7ECwRN!04W7_^W_C$zH>phdr-ToAt)`Pe{M6Cp;lxD5w>_wF9BiTQkBpzb% zi5RY5Ue-_i{lh%Fys;$riiH^x0eT`trfk)96xj)y$W3>f63){?dwbxrX9a05OWIri zfZg7Eco1*I?`ZG&==O4@z3EPScm5CUjfie9UD`X>JQnG_c(| zenZ1&&M_L;zsLt0*tO#{u(Nb&2iSis*T7!$Ptg}#U|+!?Twn`hfCa=hJ>j5u_J*R+ z^?)x{z(u}`AypI_7+XZXL;j7@^5JqIr6}~|voZ1{qEA8wAfH+4OI)l6Ik zxC3L9u%CUZ0UQHb;xQ1$3On31rZt;vxPh*Pui>yZEjWAf(wEVSMPkO2fkZbQxsFjc z2Je=1>!>F$LBr()9Vzw&aF*H-!|`nnVOauP>#D#sJ61{b1Z=mikm0 znFp-D8JVj8;p{KNIN z8}vE!fgF$Ax`CT5?P(mcUSGUn&tv{NK=bsU39a0|QD`BPJI=FPS+X(0^?nDG9EcQ} zfV1#ehTWa$OgGY-~+0NcQq6 zB7d;H>)6;5xV-lme}%)>93xhd*3AV zAFq+W%A4FkziHFvb-P9xU3oDbd*J#d9j$=9R1x_ydSh?+23n@26=$F^+)ndRb6UFm zo+w(nK(Nds%F_&Z%v4V(r8X&@k4G@2!PE_6h$fF)t+@Ti!Z?u!3FtYO!?p@4fPouv zuD~ci8c1n4-x+^w;Wm-N=b~_E8>|p`8Nwa|IUg$$Jw}^RZP0N&3rFKyNfsh+{JM1TSu7`IsOSc{d1+>CD=uyKF zB0)OPff?|BbW^jy~#=G7V573_Q>ujJc|}8U6@(bJ8(xK&c46bUx8s5lEfrlXQq&;|v>-HV)(B zY{`=vXD2dax?L0-5#4Z6h!~kpWj$`E1f8C7#(kUJSlz9W#=t3iAbt#Y=I!+ur>&2) zppU|r1`k8y-)kDDA=*_Sz9dp49>mBcV6UoyfH}gYQEiax^5YHOkFJI_Fz{v$gLQh0vULiW6P;B9@)#K2|uuQIJjs7 z-TICeRN*_ANyUCHqJfe2>@h}tjf2<>8=h%@h(_!*Q1(Yq0fuB`@7tG~o=&?_m4j)) z$wEIP7KS%)%D2O4vGng{n=E0q>ItH)0G^YuN;@dei>Qzsub(TR%2W~@9NJmP5sjmN zM#c{}ikKo?LWqW?AyT?Jm#f)H5*(#)IPyU29K55*qQeE*2oOzJy1%vYa0xnj8;xUA z9&+thaAfUflHUi3QnVe#nDComaX&*_(W@;TiOky#c9cshlNmC``sp z32^s-L%`pUwWqHbQ{$cnj_^S)uN6GFtfL1Vu91bAgOV-=obl`ZuBb^Jn@NkfPMK|? z2Jc5$cPsZP#eGV5pEBI1EIyT1w^rE*U!@~0a7vmdYH~SQ+aBYDBEAfC20sMnbqF4z zi+ievQqjj$LP4y~?WUjgRcbnD3;}3U|EkAoJI31F=V72lo@BVoTLFa`Bz)#^m?`K_ z*y$oU3=8xhAY61H>S~?=+%Y;sJElsj)8U-DuhwIA0LdWGQ}ET?3l)PeeI^tcBY1AC zQPJTVg+aNPsDr5$6{x*QYS*JOTt_u?z&9RFLQU+0LSecE2P1&7C#J%XJc;*>+iIK* zr&$_2L@#|{J=%jnhx<=K8`L@_*n;K{IN+KND90F(9?7d%0dyuHCUm%z9TTER^OKd35r*R+-BRW zK9CvSq*o?wb%&vH7#MFc25LNf4%iJa9%ooKv<;0pU3MgJ3b5etrRyiwTV2!0~U_0!j8Y&>u(F=93%Md_kPq?UqBpnI8 ztHzNusDomjnt>BW;Rpa6WHk*r^ccJMNn#fT+D`ty!emI!>cVCnXi_rD{zm$W?Hg7g z$>}{nS^;%9>Z^A*sEw@F)J7t=Izg2l-iIZYg?%3uNNK$=czp{ONoy~>aRV6dYIQ&s zLU8Q!~TtJss@mXqCVR$pVs)wEK(oJ^I@%G#GUF=hvTQCaG%tV{=TI&&dAL zAski(*E;g^Ry5dck8_@ci$?aB#>#M;?bm#}!QHPJa}I$8)^O0c0;M63?w%_9OZWaY zdcUUkl`;D@u6;aQ@<08Ih2%PTu}3ZUHuMjwp1>`balCu(_7hbj0{p&OoW{8F(}`uE zLvi0(bQ;IGACL8pm3nbwvX-NsV`%X{9&=nB0!@79he_7INmEB;c-R@T1c2b78k&6Unr0$P||ktir!NN*B^* z8pKI(oI(J`iUdb(@t14_AFUxP(>ErinSHs#om4Te1I}ewMWK;a0i~*kA6@~dId^`Jwt!{X7%Xb z_!mnT`H49Y1`9lcS|D+6;5Ali=rUn$UKo_OOO4ls5d~X(pI(8|TzGgE%+yT<<@;uQ z#x~D-oS9FnWslFau7wI!tuB05&dj91zB~#hRT^?48rWJWt=wVu1xh8*0Js`Qy0LtV zOl+D3N*1Y74$#5|f@}g_7u+8z1{JeBka7N0?2%g~3jsWlk)}7_S>2hvPjK6X{q+Di zh0HCM8gh(b_Ao*2?4bh)9((pK-jGS$K%4`jH_aN6*P=Vij{fmtBkZxIgP5 zdp?(W<#)3CTYtxZn%)O{)&%AT`MvkSrr##=0s(2XHJkhE#UBjI9FD+CxTTA+q=I@F zMeniB2ZE_@o(yQHm3S=7%9R$CLru2dK~1*bK~2WH_j!k!+4g;S_DtCw0xTJ3&MG7D37)*x3`qQ; znaB=N-0QMH2jrv;rkSN%_L~FKeeFDf4x4!jX-WwqQH(i$4r3Y3HT*Zj40QMgFOcQ2 z&M5njw3P*)Rl2wDRtex^PRO52y3ldyU$1IswkNftAK%dpCwT&$5h?%^!^~jMM|*17G(&Pz2UD5COhVS;il_0B8yfN7_8iIk;d6msr$9Y9fu*hde_#Mm#Wu;3z+L_a%n z;K2u73rFZPADDpuk8k-~bxXk^S#B;Ag&xL{3b!$vzau}m`~8kM-y`x=oQFTfjSrNx zQ`=Sd2SljG+i4By2Byv||V&H^#24bW!$ulB?c$c~}ZkxDl z(GEMHY7V{puv-1PPM-0vN61tpd4{jE7R9lak1%sYZpDPab^Xf85>0%%_<%&DKQ-|Y z%A;gd)ebgH%q@Zq(#eDWeQJDci0biKnV`T?Ju2OL+tr^F)Z0yd{H)ZAt9lGUJ@ss+ zutq1`$kg7 zC~>x{eEGXeU4*|V`(lkSrwV8eHgmeQoiL{gv4nXsM5U@7Cd_GCq^!-HI@x7W=3gj7 za{l&Yy-Vq?kKek#8y;`WO2RUk_~ zUeq0QvXAzybCqAHaByEawrpq|&KE`NzqULy#hy)c<@P3tJ1AHLT8(oz<92m;CPz(v z03KR{tk76iUp7 zs0Lz(oymF`9mQ`MzPY?^{!-E1ufg2T68nb7BrjWmh)IM`s8cwCCCP)BgUBeGhtI00GaNl!g`(c!WZ$?jBgFjUD;m1Uei63MD&Sry%sFfX zF4GOpCrAuWm6i8C_QqpZUhzj>>yHQrKQwJ{VPHaXVa~5c;MgWrdvJ(zn^iT+c9R>B zmDKGo^l!rzx{cr9=sC2P_Ib0u3nTo<>sMI#NF@!gkhkv+W6m{TN?5kg8?jMb8iZ+b zFoRG}PRR~8Oavb?OSkPF7P#m(H~}*}$v;mpb|E0B5`WghpY`KlklvZYVbE@dG~ViNT$C2;!k;jDB+$e%xJ~q2ErgM$+lxE^yI6t`9brcD}9c z=WvDL_?&N#v9x+n7(+51U>0klmfFg(bk%m|BUoKSd;2wkj+!snGzADH!hPA3`>=7|*;QhUa?NecB~@kUq-bP2>=r4u+d98fsJgC~-SH>w%<8?C(A z{7IiDj~D)?&#Ifxa)LL*auT(sC^U3~qs~O^(cj?LDbhw_e%w z|1;~w<=692&(Skv+YJe#`y!HhbM{)7OAneIIXW$v5&6S-9_T}H;sG^6rp9&}$;Q^G zx=W{Rgv&CtRGT(~e8{u{{h0<+C7G`0yMZfhVmAJkI^;+MoYP;mHHU8IYf? z=9ycF^KjC_jMZ;<^KA1_D#aDfGk zkG&@MC+l`F@?iGpqX4+D;3y=lni+h=zpnCNTIG&5N%-5!SiVjOW-;&r)Tt0uZHmP$ z@;9u$pz0k+eJ=|NH6nbmc{GAZ4xBf5FO=>84i!}@-zBz9f28{I>M61kMRSBE=h(pP z|2Fg&Pann!$42!q>LuXI*$L{&>KrZg;_~GK-5e)&-F~EGNQW~BM<{1|TQQA%hcjq| zh}TSZpO18W-}(}c&yW5Rj_+TnmtcG&64aCN6-&Li<2%+FUu1C1@HN4&M|j%lu_KHX z$nJQZ{VzHEoXB3-2_Gk{FNRW6mpKVX} zWAj-ms5YNXG0OXJG1vhIZ~;Ctm3@?c2d^6(H9VtS)6DpN@P1|m(?ZbZ$~R~*blgJD zD(;vWkC1yqKLlqUKZ?HG?G(oCuz~5#`K5TW*nFiyXj)j}fr&=Ge+O76SgzR@;XL7A zjR)Q&XA6gD+%ow?lT$c9%Ua8=lMtv!K@!e;UTw|%dbav-lxq4|{QW*C;rLErZcQ_bZLOlIl&R^FaFVILhr zD}cF)zr~Bwou1_V$TLveO}CRj90x4jmpz=9ofs=-=6vS+FmKz% zqylVvc}|oo*3~zuf5*+R`4QqDWckA1XyqZYQf2v&k9Pzkaj}L$G$-Uym*gJP2$cNX z4DQJC^@rt2T^*6Qrhk7Ed^z!z_r%2GB6(?YrB?3UlLVSCksl?1E}PJCEx__|6Rf)Y zYqWg_D-MLi;Tu0q;CA)Hyp|bQM;xqxX(VO=+=&s*Hmu%)QtG%FHDfC-6h~y;{%QG| z;5DM)@k7d!5scq0J$QXF{weYeHkRZk8x5((()>KbSPEqyOPJx+I_N3XKVr+D@E;q3Tt z&Uap1q`gs~qyxnzk(_5JffwzTARz>_6Fo1h&%~5%Hpb!|9E~ zgDi!}c}E>zJ>yi!5!njbD$*!=`#p#DJA~|>qqJ2X!e1g`3;w$FBKKut?IcP__|qLR z$V`Xiay)Z?MLP*Jf=2Z&>LoztO$q7=GRvf%yAU@5Th2~IU&1fQkXWTcrrUw#HSHz@ zh|Rc;OOign;toJOIM%?+cu%~34&zzuA5j+3c9_F!TGFKh^Ei>V7;b!KF4`MenZF+F|8TaQ*x3c7jL-ehQ-QF7*fZwkH z7wwgAC?1L7a2pR{2+MK-D)$SECtz=>{Hy7Gak{YP0OUqs{31jw&K+Vb>3kMeKjlcJ zItwyFT(J$lZBQmExIQ+u#`=J8Y1KoMP^?a(>1)ufZ+#tByMZqLj!#dJ9BTcoF}QZb z1_^3%JK;JKmZ2qoXgJO}O8fD(ky#j;Bkx@bY@z%JmS?`wg-aaiV#_1T$sgFyZKuh6 z+4%+g#Qh#Quccng=P0l_H&LHp=3ZFw$skPkz}4IObj9EriO#GTMWA%Pf;~ft;7B~# zOrgYP@nnxPL$_b<$GY=eVjw1-?4%JC_#N+ADssOboC?$W`Pr_TNBl4zrzkWM7x3xv ztKQ#%aP)rqMe^1ez5b5zy(3mmYe^x>*;;T^I)fbf_%t5;9vOo$2Z7-UOAadIc>MY&&{dX%w8qn<4z(?lH`n3pDp zD(k%Vq0d@8&@`nE*@TU_2qFCO=^GJvyT&Jk`tdZUcPMZSG^x)rv+-wt52~t~;Hl~g zezd)Xx^JcZgz%po3;%#9tbfwRfgj2> zV)g8+Nf2LG6T`D2^Gla?q9JIvb>%HFBXGLo2*#s3+al%(1E7owrJ940XbJ4jPw1iQ zXaJo4MPGp@7+y7<_qKUTS4xyYi9y(!N;=Dr?1RB0qj*|Gga zi^5M*oc^Nb-l&R3y{wTI+yCh1nDIonU+lJj1nYzTe)s@lEA-gH z{GKc|-T94HLuy)U;$)&%&c#y?0XK*&?7|-we%S2AKq`fXR@s%t64(v!2SN2#-Er(+ zSgpGIFqkg#-gRqA5-zXd1MwM=|Fgb-3i3jtmVP!{82B!A%S{|O6s%p!--mLqU=c|Y zTFiy$&@(WlS472%U?r@+Z$+$Jo*vwi7Cg`cOEAM6w-&+OHQenp{lkzOtV1u~b*_q9 zH8UOAWRiEAvu5{UvI}uB4BFaOvQ36RZOy@|G|?kr*{PDx^qVdM(<*!vfv?sql~7jo z;i2TH?xpME8engidhABJk9HOMzoWU}FR4&B&6Xib&{GSS3LYmTYLXDcv113J4bIx9 zv-K2?65K#>V#BSfyIsl}z?Fem?bug}AHwOk&d-G8_^q!*tR= z>{1IWSlmtj5JGe(I-E&>I=&;FKLx@X*@cAF&xPw84Oi_gUOPJ443sWnh7EW|SD2VO zRk?r~E$$MpR$ZV_j2LfQ=Laa9}T2Fv6dnI<$UG!zXk~5 z!9fg%zZ{BU7-u;vJqY@gNPdoP#_A4OTgatsy+FvlIWJV;&vbY|OOe<Tfs9-@o20y%6VExqlC80@2r4q$f=g9;>8} zss^Gto*Q;B_GFjpR@fCDY#VeT6dgl#XGQTTp7473ZgIj#4)-+C9$_~)+T*_mak^82 z9)C)&m~`Q%O`>@(DLkJ;x+CF+_R%uH#OP8vSM^`;ep)QB1;TR&U<#Qu4L5hA?sj$l z!DJq(LA*v@>59w_SmwSqh==C+_R)v<{>AqI%md9s<=|N-3+6vHm5<=WO)+1yM zIQw$JBM5i5E?Q~!{K$Ahe1fGrlkYBo0prVMcCZI$qMRQ`O3v#jCHsG7_FT`BrK;84 zCz|E^e8);kv8!3E5)E#fg9ghxtVEfz4aErNK>nNKKv%v5B~7hsIS7DHKS}TW(5bnv2Ux7%|P9g(^)uDy;2{Xk(e}G)D%R$dr^-W*HDE^ zcp^3qr}T~`aAVE_u@i;nLdm*pOy`%vqSKvwe^=*6pB!Rea#B(j*6=GJVUS2jpOlCl(F<2P0Bj^vKjI1hBkF|~NR`+IPpNk%@xkBK;18QI ziK9^kEaWNSe(pNn&4x6`<<`;WEHEpov~VNy{9G&J;a{+^!RV?!_Wp_-jVpLc+tuPf z%X=5g82NP98-b2!P6x8tTzn21M9Qzm+LyyKl9GHYUG9($?$De0e}5N$=w|%}f4C9z zCj8-thgdQZf5>4m@`oxGbNGW%)`LO?JR+@Y`=rp(GWoGnFleDOrzs+OkCg0FQ7=>n zH2vQfIj8qH5|I-+_ZJbJFsdL-nuNgudId2%~c=ZKZvM|<{$zTGD zMS}mM2jW=DzeOYwC3fimESJp(7)S?pnt}(jT9`12Cq^DUjmTewi$Q83OQ+T2bQsnJu>#dT}*b4AE6x^rEaKpQER-IsUzDh(RspDk~3hj z1#d-QxeT-so`s`R)O8F;NuI$=+k2b?-#2|gkP z{mCA`u3{gF&0gyb^r}JDnGEVpIE~rRo=X{}*a_67>Fvc>po}L3o4u6Th;gUP=do#Z z=x;axM{E4R8P}>`idrRaTs(ozcyO9DtSAhRL z%2jud5Glvxg}OgM{oPbJ7ev)BLBPjCkgXk9UaQOmH6=v+kEj`C@ki`-+z)|zID$Ao z9@O>h^=#?Y9qmTlX*x&y$&al2%vg*hUiFQvzI%iqi;q8F%SWF6Lq>F;@%Zw{B4LIiS}~lCFrHn^bcv)1H{dCbw#9y&gcQQE_;Bx{M0t!t9sW-N99EK^TnR{ zqroA1?zAH0Vrg2MBTR&AR7*c#6_T+L90Ouwkro?`>bRlk*_tC9y?iZ>_%AF*`lN46 z3)0{LzHPYLV?EH4B-z+CB1z`Bl0;W=B?+4hbcSGF=?D|a198H@REiJ~A4Jmj57Z^Vj zR@xtDk6DComHdXx-*AM0Avd{~2O{RhcVYO$Gk^j!MJg7|#(vdI_3)FFH>qphreC0d zDJ|*oN|LMy5>fyk+Qxc_3d{Et3Owb?kH=ou^5gwMUBMa={~kDRc#7uHa8NK~a6=w# z?N`s>p~-49FfCb~{RABzn`Fa=1~NiM)wQ_H4k2UU6BUE2QU+qh{0Mkb(G;0kK;OgT z57_>Rg`S*C(;ZIE&=cPH0ee|9Z*@H{i~#$DN99NK{e66&@Kab-s zUTXoZ8}@d(c zZ!d^t$WTm?HDgptT!H6)_=}N_8em#ah=a#J zDi;}AOh>?jbTE^bK_k#pJ$uMRV@biH*+V9wf1;Uqw<=@@E-?8vP0b}~ z^dTBj9urgvDKQ)_^@XL!Vu)#l{y$`T{5Jrg?W*1{B*N{`Co+KLKQS-LI!9Dk&UST7f_f0QVRgRLbI(~ugyt^w z)%WrHgRl*&!@~$C7#*;|^IvvF`}`Mb!l|cyd*c^DdYU3Vo5Nnuw%(Gq;tJoZ&=RVH zt3voTuMXiGR+DvgK0einI0qI)_6|#GDtn`a;;#+yh6mZpGhH4(Y~@IguJA?tQ>3@k zBE2P+y-y_Q29kVyW!!EcE5qtpkI(@hUw|fN4=T2sXieg*1l_>18D}JwY^0X^zDIXcy(2!-DzU_6#rmm8I1{DO1_2ya>p=nFJA54Xq703!8UlF1;p0UBAM2iH znh!~+BYJkJs}l4F_CiS?+tDJnK0eaXY0pP@bWyX8BBFkm+8K&JFc5F^jux_`Un$M? zh=TL^SZ$B!<3mkH6x~sIf{qr7aUd6b1XAa+2`ed923NQ;SXNey7{<3k%z?=0*<(IO zqHgM|9{<-(1TuF3z?ULPsUa+nSqy$zT9pAcfPzC9scbR8f5aDRFHScgFVX35kx@Rw zSK!!We^Jf&eRH)i#|A{nT*YJ-5TtWakbDra$cTu}-T)Ea|KdDwWlPv8RW1BK3-W@to|s@YT`+00=rzB z?IxCT&O`%_ge6UPi0fPgSt4WR$#mg~8vV)H6mJ+Uz0N=UPC0qq(lI z@u4QV!qhjK=?eduCA3Ig;kI;4u2lr>ZO~aLh$*^L(D=Y9(v0TQ3VDQX`UCU@jdAZZJj#mEsPaNvH! z0~*F^Pn&Tjd(d_xbl?m+jMX?iWl#R?x#9fCIcfP4A!H|XDD=XAu; z?YafGT+FM-YP0D(!TLJul9=`7Xe^|Gk5L;FebI@W=zip3;1JrEB^(Kf=fX@I|J6^C z6$SWG2;b-EK8ijip2dydNpKb;te(F(hU%QfPL6pgfN3Fi=MPeoW(kC!lk`QWsp){4 zvI(HJ-oS-9HFmXrlh2ntXE8jD+R9;`he}ctYH31~-M#xI8Q*5re16*;J_VRpm~61(e&8#~JH?}K8H5V6dV z|6?;I_3w2uV~&4pp)5^^s7fS&l5ylB>jZRpJTnVU8(_~t2$I%AN0L$~fp8Tj8diTs zgW@0Q`277?GZk2;{O=O@pd0T=hXbz$b8pOnH3@#Y23v>FV50Ynz?85>$jk`XpJ0rf zop~ooAj3Uu_)B*akS0f)-y|oH2oJ3AyKjt~xtrQqpSSaMz*)P7q0aeS9y~k7J|YZ; zfaAfbI35g!5OX%zzpkN6^W#z*Cd@@HRQt4BpiAW}4A6KZWgXH+<2Fj;K@SIoJ4AEF z*BIsJ04{ogNN?wt+YTFEBK;~#LE*~&s^OZZow9vIg#nSjf*@{0`(ERXUhCi%g7*ZQ zF(5|0m0Vbh6J&iwyW6TN%8;8Y`8#G4%PFcc$|(6ozY;cGyisuZn8ar!!rSa9ymhzn z)){yU;S50Rex95f2bG5%93BN6>d_L9t>a)V)EmVy)7fElCP0NAUJHg~l>I~CWCFZ> z*n{X3QC31zZflbyd3&&8E)-XIwb~2W9jyrrz7F^e3>wf`nARt6Xf@(%fF^PQXosqy zy6aN!*7B&+PADhupQ3RsO6ThZXP*iDJQPe(c=eDpB3Ffgu zJ@RmSn|T^#a-knm6%&+M82rZd!e9~j?YMj;*E$cY#3G}=`2tqAlwTO&^F4JGvbD1%OD6Upd zHQ|4d5{q|IO7vTH8Gyn44>|4;7_GlFxsU5~DK&|uvZ%(-XIg2R*p^>T;_? zTMrJ(7a!-z*;AbA30F33^#tovhLzrzoQ^(e3JV`&;zBxhe^ehm(*XxYrt~SaE-uWO zo<1Eq(WMy;S25WNhlYiMR_cUeJ93KP4N7@EH|4Ksbd ze|J!&oU$85HEq9LPZ3y9TNvoo27A@};WYp^rzx1*?{e!51uL#NuP|rZ)XQ`-^bhm2wTq_q+a4QOeAL44x7=jax!lsAu z-)nmE0!rkAxgeIFXgTI)GPRL^T~WB+Rz>6wPT)?>agam=eT*}15Xh1I(b(Y)s|AO! z)Cp_OrYYZRIP@7KsS0}~kb3m<8#2x6q1Yw^t(AXO+*Qb7GyMNlAvUYiPr?4S zzfrcadrXhXO-q0x?X8^OVtX&x?S0it+EX8wkhW7htRo_zjtnZP{5m=j^2a4eguER8 zM2|kwANKD9sdqVD&X7YzscO^Ruu!eZS+M%EI3TKhvKgORFVO=simL&EYlk@SOM5+< zwl^nEd+<0ls>PdiG(tzT1uRLs$#~Z5U6$-b~Z3ahv8%S?iJ zd!jO{;1ynC-G>_={R*u>CVDgj+_r(y9Y9^CS%r2^sm43-7EQtwR}Yb?C#J6D$gEvQ zb3`bshC@I!6jc|@r-uVTX1pm!vln9VfF(`Cr1|D6>%Gp+P~MjfJ-SJwXvaxilNu26 zik!WOF5RFmBvjmmob+eN=GbgYk@#_*eztKl;%Emq#kT+{^#BG92nZ&U57(=)^+$`X z%rSjEF?LLasIgIM1dsqZ;H$^@5lDF{*5^j-UkZx!XqgirM5YM5e)|ST3TQQaTsooq zrCVRU9z`*JHH=0p^-wL~B-?&BY8cEmvQV()XTmZUO$*g6?>0x1P|_d2(P&!Lvul!? zz75E?O6t{^dmY?Fjt0s?aF;&tGawHq)FNPk7QkH0iFgNox&HzCO_>0e#15_Hf%(Ac!dAWu*i^4;FpsbzPpdAkJQxn^ zA(hwQF@n~`{G!@nV4>HAsD@;D{r&X!i5Wl(BWxR$A9M`oT7OB~3`~9TEEtvE%B|Gi z-x_#-D@pOo@4mJM6jmB-06a zezp>i(V(t{l3zZJ9z#ry{E6bHW07ze#N@U9Nq>^pnhsE@K;`B_1(-?n z-M)`n9#_Yo@qTJ9>EvSWw9i}J%880VfhzUp*)i&J7G?sR<8lO<2{qzs`H5eLLkh3e zsen5=I&VtcswYIM&iMnXzJ{vws*ADPTMi1~7h(M8m5%M9+IQo%x0ebf-*qW-c4N!L zk3@g~AMSwRT>XAtNicpkl5&(z&rB*lmZLejiZoQ!kb#+L{I6&m3~`u3&D{-ea8!8b zuBhc_Nxy~GABN*%l;NCpgbH%|V!PUkq+k4d+zAX=z$pg_O#}@R;BsA2JQy(8ZCv$; z4A=m!fc2+DFT##Tr~++s@ZP{XG!^vwv6zv`V>u(yLm9g!GL$o-haxU^2liG10t}Qt zMg{BrK-hPwQw8>2>iX`49j9AjfUh}|qsIO#$L9dgdmf4hLI)k%Ei!nTp^PcBl zjb+j&g1M2Pbv^Y_m>azqT>E?!*O(#$1E$VGJfRKa3$n!z#urv5z6#QcW}DVKwr6@3 zlNlhONvu`-QX(4Q?`IR7cWkHhGblw~*`#C-mV929q>=@*|Cp=YuJ;2h^cMr!;}^T1 z+X`gx*6C9z9%~F1z~mjzifr%g=ab!~Ll!Oex!LM9eA7`>Wu z0V#a5TJOQ%@JzB>Skj=g;pyVl!w%$Q@3IJ8dZDVcq`a9wC5OtP1C8%jRq*T zX>A}o)kkW8Sm;dnf>a8j3-LLkquT|+93O81D&J+=gZ4i`RE%7Z0>`3l^b~AX75nkm zN)5i}m=fpwC&rYRJqf17Wc*{x3*hX#P1^qQ07XTi>b^1dmu=<0$+sL&vwRi$KKgmi z_b6Y8+`%;4ZoIcNetV>Gr~f0qFPtsdr|nDAxwhlq7ante1^A)%QtauI2!1{4x`f{~ z;BO}UULXUT=X`hlPt5m_?=Sp6?7a(o6jic6p2>q`fY1R!KtO_`1W*VHLIfm3UOg}a zs65s979Z;>N&-O*Bu>z@!)SDMb$8trU3W#-UGWtVSI7iN0wM-Q-a-I@9tS0W5TEy)03nFc-MRH|NpssK4iL2pGQ@lI(6z))j4OQn;d9-*gcd?_Uhsj=@^#gAobRmcniO; z*Mih#ub1;GHdMw>MrffCr0%;mj_)z^b=tRsn&}`b6Kj%K2h6PLBDK$~>E-<76q&7X zWE#Ob0I+i0GQgpU*QvN@Gm0CLHm=@XyzY&TQdjR}r_bF6`%Pw#!-^Xxv%7jHVOL%> z?mF`9wz1s{7rT++3x8RUq#kwIVMd453o`(SBW!2>{n4cTIqzyiD%DkV3NK5CmwJ#$ zV+sk2S+*T!vsOeSm%@Z3SRY3&%tf@LBf_{DsWA~hYv(_-c;HFqC~7l30oVGa$J51v zDh%b32bpl_G|o@D1UVHW4hptOf}Q~%UrpxB45~y%B}rMT`q-Q<6f1!(1H5L=g)S8q z9@_Y5=KO|z>mc)pt9Gf|@CXwl?RtcEubl}yq*SXX0>5T`vL|~-z*}L0_mwL48L2iA zJV`d=6*L09H}b)JzCsl{J3_VOgnNV1aXv|VWs9c{-oBq=XST*U6>EZ%a4L17{E^@y zGJj%1!iH1bJ|mS+OjKq6fh7N)1lfL4D$h&AT^^e#`CFVgCX$ax<&Px>W&38F*BL9P zeVV_9mO_1GTL1|vo#7VV@8UmzkcYwTWqX4hs>JF1`QKrRxb#WHacVRsLucXrZ0PLy zhZvee)ILy^&}F*sTZU*4xve`I8R zX8G1dY-Vr9@l1N=fHovIa7wct;sqaac$)#@wJ;Yz6{=}2Lp@dS88Sc>ZSK3u-y!r+ zL2Yvx>L|kkYC${D&i~)-xW+=S``z#%c}Hx*y06CNy${zn_>MWl$hmFl5*;c{Z9T@`o_t|^o~03&iT9Y8F-a|oWO{!Y*7goiug{K5XX z#md!pH#P?*OP+U-pJJzBs6GPOAj2=8*B2)zrePbF=8wyi%3EiZtjUtb)nt|?(2xmL z;2zoh13}n%*VDZ+o)f2LPjL1m%%bg|KuiX@yU32ZBpvPg&=s-Q#cT?zGkmVLr>>A|hjr8~Dwm$u{g!L@kCarWES9?g*E z-Gof|X`A5m_>)~}Yw}mqmdKKsXbL-TyW~xB;#3z;C9KRFT)htC@(!FH+p!%rK^_G| zzM!GGZCj!84XC^pm2a3nTH4ex9v~&Sa97$cs&)P|r*WcV7gR0V*2}if19R{$#5&94 zGoPPxSI>x%X_g$V{p34ucHd5edO6CmITJFf(RCAFK(e#0jY|}GKse)%N=dP{qtXo( zJOfcM3K{mcDyBI|hnLUmXyL%051<*CW<4{&)6lRbz>kqe5ngNRvk%*MEXqMJG^m+e z4t86Cs6NZmrvT)*aB$($T^xmhiPnMH_J)cu+U;Yp4Kl9&OXk3^vqhh8&)h$&Nd*Z{ z@@91JL-UsC`cTfIf39G#vHl774B9*w1Cd4QD(@it!V8;unmcJTzD+`wi@&J+5PY45#|1gjYPCg z)B0%qyoqx9VV3+3eDv-aqr|3-Q6{FrC=>T?Z8KeTmi;sT0!wuJS%7_xQ?~^8RA41x z;qwT^B-P|R!q}V0O~L08j=vm*HDy!_Q+_TAUww(!=F?AMoroUJ*;TJ^A=k&dxWBx` zGXbAHKZ2+9DVtU=SHTWo*+tV(&NPJda-<@hUebIy?xJ2?&e#+cE_X<+vM7f&1@wnb z5j-3&*PuR)a@qo(tN=Gu@I0n1=Wkd;TSxFRfj)gfypETt^s-%_#PyA4fx$zB5F+|n zt{-m!B&JcQLqZgbZ48N&QX{3*N-0~krg8%t2BQh8pA0%v)<{#nkfs2T+`v-$p#8IM zpU(T-*)akDT?!EZo^p@^zuqEnH-*b=(k8*&fI2TcfLpGAZe;!SCfmcsTK&Hn)+&l9 zeH1nq9Q?gYy-y_62z;QzX8mBGyz|O1W&%NKpVq51qOewNL4!SVUIecCj7Uws_+j&G z##7QVlrxDuy&Q4UEhtCj4*)EJAI7K#bsN7-&H9E?w$SG-=Fgw(L{@d8xqVod% za(|I8-NK}?u7f3&9{NCFdjeHTQ{rx4wHAz$)-3;nyTy=DK-Lpj1F9)MGC zGU-nOL?Sjwe-n4$4$ATar?$`H4m_Y`K?jN~jQ(yd3vsEaI2&eyao+$k@JEHoabwKyJL9vG&TJ|50a ze!M4H(re1QEzs)`l(V2$Pn08iy#b&M{`w=oFn`?~=C9|qEKHCmwJacr$if6E*0L~v zKUm^?h*8^G>=C9jC7UHj)TjZ~M283y*^VeDE1I6tu33ln?76|4pA+eqW&UcBI9RcS!hMu+rbwWDDd(ew^;mdTvu8!gK!M+1-93Fa&roaH+$%W6l% z*Hp_$bCy)R;36utBfaQv*qW(?GL`+f)dkizu{<+uWJ)6>2(b8K9>4Z zSCq4$*K(92G_o%@(JKuvj3yr(=J0HU4ubnR%~>whvwQ+|6LCOaah7Crmh<#1_d>233d+j>ebegUR4M+v7}d^jU~OFMmZwJ z`InjKWycHni-hk+X+VvM$3p#0*^b}^{wPy6ozGNrw(XqlJ5x5D*EX25t-{NoHF~Zy z@!Kp=`keV~cWX=fJ@Ix6^m`NKEck64$`SoG^)nG>4Zmo_i{QBx=4|hovqkXTB6GGs znX^Uk-m~UxC8lg=!GA;0$LGp_ui7o?myJCrmi%`w%308_9m)~?e&5$bKZRc^vo=Oe zcSyLL72lsQf1eZaeHDG5W&VC|#CIGYyGxyJ{yr`IU7G7}L8>KzC(mJg7AIKJ=hC-Y zppO&fEa>z7n}R;GQcU!@mtR1iSc5*(&EKa*d}sPhHh*_Ud}sP(o4==pzqd@EdJs~l z&zber+v6?C6Av^k*{2`MnaHCr8fhl{e33B0U|A}budHQJhiCO6f|-@D408%khYoW} z9hDlzDM`5yY9_6U)X+w&jBITB3CkbC-D-Vte=AF@+XH%P^$(~_niyC4NqBwndy({x zNaFRy??lqeB8kB*qokA`3MEZ!etq%hOLRa5xW@Vd_CaBjp)={5^>&8T#c>goH?IUI zy+J*eX>}O=ER-}Y^!1X2Z8yu3Fmi;{5!@z%ucGi4D$`5Sr`><2O;pf-fRm;Sh18qy zLX$f(IHjD^sw@1lK^?EXK>Z7;qeV`7=A2iAKQ^dCv==DXAvHzhq-W0ACH%2L?WVod zQqFcFXRRAe)BEY(0yOS1Kfj21V0I$m{*Lw;+kLUV)jn^*94kIA)IRef`mfsO9meNp zwa?7F&x_BwwbFnsv)fR8k0S-<5-@AlMw&nmlf~f!{n3HkN?rNIqEBKi<0jA6^&rFKAqUn{%lDP_!ld&ujIMXk7n4etY)t zKVx10V6Fax7d4{K*rxUKddw>3qQ7+;wSN^fnu<0ur3v*8|NfrD3EKN{hv$GTOM1Nl z5mUR=>-9{Y{l>dAp~6#V%kZ^b;v3=DZqN{Bl+|}?RM6!+$%|$Mh5D2&g2-l@+CUA! z1E0lFbdSUTJ;PTDPIZupZI_BITNF@Aj~9(ZCjX(H0B5elf3W9hU)xvxYEOntcWDML z*WuE{nIX^4Jpb&8ihxs>EY$RqueC7$yoGY6`G+FBbkD_jl+*Vxry%@|vW<*FhMBXe z+KOb8G+3#<@Yt`?UU;Oh(O!1o81~BBg`W2_M{M2xF&D&U(xD#pv5Q$yzgkdV z^3Xm)>Va!O5}GP1=*6MEFt=rDFE#WfM|)XE0JYX$AmAI+MD2wa-bvaETNBRHUeIgD z^6Lg!L_+j`jfuA~fqIs`l~?(Kd(|ZCbLj=N<1Jo|JTX zb7uTHSmU?kFD>A=?UW^c^H7dpj@J;_(F9q>FTspon=|9rm$8ZJYnx0)8id zvc&Hdlq3B503hlu?z(>3OI;IWx&Qj(^BMYYShr^SujTu+CILtbG zLT(J8F<8;9y)Y^h@B*Kb8BbQ1>L6F$!o;k{4Bd5shSJ&dqYN@GyYG~Udz z@z9?HO0xkC_ZNwz`|tvdm(0Mjl=G8%gZ`0_&(&VoY&t>Yq-V~Vu79MQ8QKe5Pp=X= z>6vq0s(+-MeYF=Bd)-COEiNhNC_&Sf-i6j_HN3la4YS8N$ge9-SkiOzA6sCNlgBOT z`3lMrMtuO0LC*{L1@>ns+B*KN^bC~SuDvi#Pj#W9a7&nStDL3@zo7QQbls`th9%ah zd##><>i$f7VcJ$`xoJh9)Awzpoq@g|b#6pomYo*b+KvWGsuur2P{&S9!oNDe|8T3L z(zO-AIJJCi7be(2g82m6lLo|9;)+Eh!wXu5ddi?uhR6!?weRfl+#)I{)+^W&Oi(8x zgNElpqHjI^OcIXJF7T6mb-rmlwuIlQW0v^6`jWt}FPcZ~o#N0wTmiMucZPJHOGOnhKz(j55b>)zPYxsA+DB!;rmBBj>6yipU zcKwa09Y4m@U1P%8&(pIHh>OLe(R-VnB0nSBFPwkxVkSi6>KAF*nFMW+9iSvG5qaUX z_e%p3|AsfNp8B=``CI7Q6CE4zuMv;k@*L9s$B3@hRYT&y^53^0Ah!NM0>TI})5}r( z#axSWP(>TmSGk-Ke-SQsNX@n=$MF~UaycWkCS0yTZHIDtfXXl|An2UD*xtNLkzTP# zLI?(w`a`$^iQjSHMk~M~UX@*$%IQpHkK%9YV3>$*Athg*zs|yc3lh3PM} zKu-nbO!U;t5j_W3lw*2c%jFDuhRYpNk3HXfdrZ%+T+X0pxLkv}9OWpUMOt1E->{2= zS)}DN;v05SB#X3sLVUwEn*F8aa(u(qrbO%6$;63biA3~k-hM&xBu^iSAelaQ6ANBR zpx}4-%}wG-hMAfG|CZ>*~@8xjx%{0)Zz4K z=f!y)1|}Bgl=>At+Ii))jZ<-qC+x4B$`<51FOLKFQsNDGvadAE>PjbaKiueZh@e?0X%1O6R; z5&po#3jb$Y!vByp{wT-z|2vF7Jq{B1156!%dK@J1=Tw0|rwaW08~EdC&>8S=|BLVk z9#;65wS@oo*7&0w+h(; z->81qxzsON*Z+Y}&}UtrNctQc*A)JdiCROud@LbhOv?VXc_* z^;p5wMBQMz$t?_T<0$IdH*(oU5r#K)LD*nw%vbC`YuR2p<6BFLbwZUb_|L9FNfXWV zsg9=C?Ov;rY%e_(ppwnnOJ7Av3w!DBb$e+!5wwDczqc(>oJYLMk8CL|yo55aowNhz zWh?0t&cHU(fAb?RXRqbFntc?#qghAMJ7L?X=$%8Y&^w=Ky%RQ!mbK9hqgS~^|NM(W zu6-jf=oQgFxT?l5Xq)<{#pu|Ls%78Id8!3&ei`LVJ!9r(2g)_(W)Sj^z(VtOyuy!6 z)4{#tqB4~RlLBwpga6Rlkd7w(ozACiA=)?A8lN|n7Vuejz!IN_P>wjE?*}|NG=tjb zfD{u1WxDfX!UrKw$Mgk>fzKNIFTiIo;Ia_?TT5HO=hS{nd|pL40(IK^j1N7Y253N_ z8PuM?NW%vKZ%256W#Drn;TPa@C*ZQc$KDb?ms#Vp;Yopy@}7au0D%vob|oHZIVqNl zBwd9{u563MroS1RGx%#?*=LDFrUuNZcjItaow)yfT{rFicRawMPsa_Iw_fuCi^i+< z{BPaf#wP^wBLKeE-m9N#?Umu-7qz$I8%zA|)Y{t-Z?rc^Z!h_mwm06oy&vWa{MsfP z^z`E>MLq^-F`ubuO;5I;oIze}+-r&I95ih?o4<^5Ci!Pxd^SgY$`M{&fuAPOmjg6Ps=}`(2yeX5z%N0=@0f;PRl`mmgTi2A;P+=PJpK2wHJ@{^-&xerS)G*4fWp@*e5f5T!Qp`Wy3a2#E?D8 zKyPh~3B7Z%M-2j~79w-g<1L_gqRtY$TH=4F+! zeMoyLqL(kk3tvHKe!msR3Q+9Sb6VyKdU-*6Sxhf4X)g=u3z33T4i3FQ_XXj3!^Q56{1wL^%te)l z_}U&k`+IHWbUJro6^B_A5J!t^)dJb4^;MLvZ=PZQ_FX$8I#ze86B%0E)Py^Uyis@SSv==FXe*WLy$p+POW?)`%O=Fu$+(+7ik;&8@-vptX}5=oZ-q(L?Od zqn&xDqZ$KXJ>Qc(^_oZkbY3Jf?VT%l@i#xm!QXI01)W*M{)+oVLJfjIv+517O0<@Z z{=wL5dB0rcjtJ!IP3G^r(YED`_!P>Sx=1faT{KXGc{YF{c@-8F zn=y*jvM`MsFnmE;qA_J@Ok>#?-Qo4und4C&-)2eaK7i8_zcDChf#0D=1%5*rUX6eH z@yj$5|DgK4{;b?$iQnCiw1D4JC}+aYETRXZoGIEwix9XM z;2lA1Iv7;jFnc$rFv_CO#HMH6PPO!>NPJrIAD`N6iN&jP1UCgx9pcS9DB*Zc zzM2w5L96RvUMoY{dLBp29?9V7?VrlbWAB}QN2m6BKG_p)W zN{=wx+rR)D@~LHbFR_MqZGH>ze)pv%yw9N=amqFT(!BbZjxPp$XVjk_M^hHe*rz2B z$3%jtGck?SLwN$kp#a2~ANt{iMl2~)9IVz=|4P_&*Isy@khH8uwA$%o;Sm?9S53qh z8WLxZ?{i;R;yV;@Te8p%C}(0JGrpmj0^b|}W8ix=zhH78!J*@PiJpUSPSIW%=Wbed zmP2|JSt}&!k|q-Gn|_QG2`$QlS2kFpoT-7n0QF5rI1+$G_}CE`7SU)wKjL)c(jvOx}kbQC4jjPqcHQ;S-Pnz2E z^9cT1jB~^Fqi9#nz|b)t^@Dv1z9EknZ-Y##R%dmlD^&7EBkA8?QWEydi=<&ly7hjM zG(jW{FeQ!Tr2K(!I=y#8$EaXeJj|Jj2OPUUvW^~bF8jzAr**^; zZFDO7PTYp@<}%^DdX^Q;YPBmsjlh@gQ9$|Jz<3ljzK92+H(w)0-v>7T9jz6nb>$io z8|R4NS0TgcIw2fs-Ce&g*PL@_cNZ zH~w+>yz!6CS5WxFw`Jf83a_{=gQ)-GQ#jJQ+Czt#(?8sS(}h&53x{;juV^?x?9y&M zjSXmX1qtdGr|9ak@d-GrR__1M(7Zt|<)NWC6?zf48W$;VAtsxDY;KZLsUB#Er1q**h;GbRG>8 z9&3RsJDSfk{|e?RzG#K}Gkl)bXNzdYIEVAJh~V0JTJ7Jav2C2EH6a_>0s#2% zW(=UXB}v9%TI&FH#0c{Z$@&lj$Cr5b0s7Go(>h6L8UGr=+v8l}9TSH4wtqyxTQ-b` ze-n^n!yx}PwF$`2eZU~Ub&nb3oG{3Z;QcLjtDX~muL;BZ?pu-Y3SUVRcqd8*i7)Ke z1l~RGGrWZ-%<#VWoI&D7@P2|lvgZVEP8eQWBY2aWr|;|S40wMtpb5NJ2za|ync+R~ zY;*8htO>4OV=3f!;buHD3z8aDouvW=jJ|vv-i`a6|5gvNi#=*?Ri3{lZy?SYhNtNt zUv9_hE(`a;4ygvu;>7L>bx#g%lS2jGLRGCw!i|^nkLAOPwre@bHf)o74w{EC6rdMi zf7XhT;(YCDq52_FU4W7#&@urUF+KGMs>eM`xq%6&f!^WYtj?;}poD6pPSJrZtfy<4 z;?!(W3t!K4foK<3FVM;ETKVRePf|?;sZvby;Rp8;sWK9Z3Z$s~%Zdt;qVgat3vhLM z7!q|J!Qo{f^6@nzp(Zn(AC%HHx za8ex!VN5=@*FhamVO>=Im8@l{MTeOqv=tnkyFTiBzFy^x;esyj)DqOy>TEO>QK=V| z`bOr_*uWOd3ibDJ*;B^3T!2o@W+xU5l|}SFY9VZ?&kfb& zP)f7<#aZ;n-&R|;GzKj-r@S5~qW>1bwazYtJ+CN{7OWkPkQl&Z(RRBl;S&yA_XdqwdO#4wP zSqQ9f8$~HcMojI(HzW})-&#doo3)UhzsHpycwR&&&42MJr!U4Rp}U+&zgb8GSVsDm z=XfaZ0tnf~xXnF5CM^%g2185kaX(t5o9uhsA)3~1&1z6Hs2RHG14??DAKmDkR37)H|TwUIkT6jP%aj(kjAmSrixDseZYF z)J^zXox|g$`5&V>Odb;s@v)%`(M!K8qdU$DYXevEf7iPA!(|XG>4P&lE_E{j_V1E z)e^Bx6;0+WQi%^FBA_DiUWqPTh%YorE+pRF{1>{V6+2+u3qg7?Yfau2pj+N07*m)n z3)cZlDeFrh{D*&Ov*icrG+VafBDf;x1$!4Dav}0dB@RrO5e@o=+>T;_>6~t0_8$0& zZq~Sn6m@TpEAxpICB23EUbGOYxW}E?dK&5mgC#uNWf^I!%+)(p4^k266N@`oXcdfU zXV6u+)C$Og#>DoIqZ9QNr;y|$S1cldyHgCSi{SIuvQD9_P!g)Miij+<^5|U!D;Q}5 zrYq!qlZvzQmdl;|h0 z(&2bq#ZnQ#84Sd_!OO571%o5c79S0jJL#qy76%X(U7X&b2JgO90Rf^MqLHQUz-=lt zT2^5~CYC|H_tKfjUb?ExI|g@soWSi^g|*TGQgCD+QmR)%P=#E+IQ4JcuzKv#6+cez zFsJuQTH`pCEl$V_m#q@F6ATSr-ROQ}TsrRZ+MFAXyM6L$r#~>tZL4v5Do!KC8KMgf zl3ZykC7%b4xxCTNwBvc7;ny`hJ0TDJ+*(#h!eEYoyv-_eD_@766}(Wm5Hxt_ZQ=)# zv0p6!36vm!%m8#Gb_iR672)80SdurK#!YRfW&fd3vh6f(dN@rfq4j(%`ca84;-GGP zqpLyJB2)_P>E1lnp6L1?z~WwnOe_9DeT^%w-AX-Lzk4Kg5^d~iP{+0cw|jAMUgQOH z=J5|LucU%U>0@UxxKIAk%zM)Oi*Z#=U;_S_$7mB)AM!)z9dx}AL3xB{AJso19yHFc z!LSb`arq_3CG;^^U_ZElR*Q5W5y`;AKT-8dO100`;&X<1SU~N)H3Bl`nvx|b$)n=$ zcmSnR-lBy=r<2v&Ljeyb#f`jy7aR+5_38(Lm!}Og#PEXo#?pe-OwyO2YJG@|WHI^d zKqHNZzO((%bpJGNkWA8yfavw(GB{5L=ec~B;c|`DV7;GZh+f=`9&-8*CFeVEZCkv& z;UowFDfICI5*#p5j74WVh`nV0x5@e4(b=+pPcm*NNuujF9}4B!F`#At_sMxdXXrC` zuS0I!9pm&~3xful+m9Lau`Bw3ecpSG*aug=RnRb!htElnN;cEjvTXtrQjVHeDMymy z-#{`dI5^@y54Y_A?%_u5PVbxqT#`;>4R@==Q_(Tr$Kv}?g?V#j?=|x9M-uXCWp6tu zDl}}C4M%Oq{5IS})+eYBy%1&CgQ|%hpo91uUxqB5R8RYjdJ&n?9=qT)Y)VQjzIY};C@4pK;ABJ+@J>M)S`<;gri%W#iuYu1xSj!wkA z)wd;g00u*2If@}p-zHx)Gq+sySe_CXIh)I!Gl#BaztdMuU zkvEQxxYqIAQ0FN1W&F{a4$F6_s%ULCYRXQQ6$o!-uHG_L3V$A9;^eCx(jq}TIT=xAQf4o!4p-i`ia0eAK&e`kqtSZ7+r~L;Avw4$( zc1obfF|u;KvF~N2`F`}DKrr-gkwJYTvLcdZ-yC6v!_ zHMzLf8y$Sl#k!b{XDOSLpiW{PH*PL{QDU6lCp0ymt@KJp7ui?3kVJ(tHuyILL6>p|%xD=?0UBLuUm$)xMfk;FLI7KZ)ZRna zyW@xMSCz`Mx|Dhr;Yp=3xHNJxesCn(X@@5iou2|pib;QF>I$r~qSX1M-;mOXi98=N z_lSBFTccgdqf?=qCCf1x>9Ud`H=3)6j?Bc6ZTArqr!MP+%5no!J_O~&Kagk6McR0I zav{Ew1)yZVC*sQ0YBkH(5g_We|7v{J%2WNYANu01Y+Q?WO=`7j7iHCFQA+m4{ZZD( zQ=3r{Sj6Tf4&1x3b#za8N399b&2l~femDEqFBmX#@ZeaNO9@$ZRG zFF97=vR5J-v;fNXP&5uGt7}K;Bki@wkF`AKkD>gXC>=hvhvG0~k=q&T-`(9_W3LS+ z$E8E?2D{p7v#5UVf~0qVq2o^<5|G zD|?0neslG;M}5J6aV^7q8MrAlCO=ga?JSDEVp+5uiUue|**kuiXZLBTd?gx|=06TF zeDdp_6EP1z|XHSh&g|m19wjguyn)hC@K>4`{`yj7!KWotxyS z%5E=kc1ZKG3F(e#$*Ht+lxC->i-*uS@w=3IO_=}?X5 z_-~{qhtOS!zQi`))P>|bVvA*4O{h*lG7OO5tiM*G{TEUNfig=AlB&|R<~5Sf?P-ua zvvfu(O;)6ZqN{7r@kwTsr0Wk3ifZj(HP!PcmPY_f(H~3(g zfs_RmA5E&tFnWU|a$*AaMw`-%6!ohND(xqAPZ>+B@EA|xZ35HGZH#ZejTxP&rBFX(nng*Dykp!91U zIhp82_iT%Pnk(AtJJ4!OyD=gHu+M7!I!@%j@nXyTklKOsjQkgh{Fw`^^6#U8zZZ)e z0nhhP`9b`Z*zelBjJbsBf8WTzT;zXqh*kc5Ab-GP>a_a?#47q$1l{U$# zJHb$pFM)S42MO}Nb%e=v;cu+KdzQ%iAZB@y{}GXY%4noCvskKq4lW0Ww*s75Q)F<1Z5(}XA9cCo9SoX>Dl>aRw|A!)fh^g2d54I&F9x?LI z7x_=kw;C8DK=Z&DBmX3k|EVjj;6F(CUSQ`tQJ6-v z%GLeEgUgKktC3%H!XLC@)LbX@!2}n;E>&$H!GlB6^@mHWkbaSXnq)L`tH^)hP%EHj z6HzZgeuKL&ry@7a1VJ*x&Uq8Sug00~^?}$8~k;;KQF!Ui?IkJgWnz243d$nAA za4LorT-IeAc6xJy6AKGj$xg_U%KK-Pd{>Z>HRuamBptSQusvcQEQoIVw=hZ2ZP-di z0<01PkbTZ>*tcPk*ypx?1;2HEhd@V2C`!YdR1%LDmy-LEFnEBIr1I3Pl4CFez=WDr zp-kFXkQTOml#px}_K*E8`!Q-vv@}E5KaP?8qYAC*blKr({XOX6)xD-|Pt0Q6N_>N$J zS3+*s;_eDV3r;FIpl(4Sl^iJC7^5!mr+bR_g(Mwe!Q3(BRioty)*g#m3p~vO<_-P z4>-tOp+5ayEL=>viv^wCaB^iW4Z;`cEv16~-7(IXv1ldJ-x)Q);s|G&Qt}z$5yI+z z6m`L%V?^?R7hnLT{K+owT?^e_So4Wx(8*4vgrD8>$$0)!-i0ubB{-{d63_y=hN7=( z9_<+hO)}L>0HIzuUERtFRQ>Zj zL@fZ-uL7MZUHuI2z>TsQ3vajWlv|meG^irD&lE2s@S_1r=7Ce-uK5)>v!Tk{nXvpS z8sSC);Xk5k*dge~SYS+{Dt-BGjEB*b)9a$di3pbHyH-xC&F=+Y-R%gXQZoq<3XbuD z5`!vm|CB4OKCeTtpKSBXA-_{WL8Rng!2S@BRGNm07Go)-xfV$r(tpq^L&E=_)fqE^YgFJ%`~lO*-W3tU zWk!NCrkpI9>OBZ&ae8OLFgMNy%M5I2=a+m@FapC&7axt}#~#_fneETBkasfVM^(ue zb1*C`i{vly?PM^Po?*hpeCXL@b0`~eL!86&&G}B-DtJ9>onCI(>0Qnc`LfaM69fvm zp~n0Z0Z_g;&m=++DH#J{nvDn3;HNW;wUXQRGk$tDV=Qe-FYl8AXO5#vr7DNp@)1-J z;S*#Nd_laL{)QGz_UKe~6}DEpy#FAeAg||UVL&)TtApncs=(oOS;}L*XTr%!iJqTr zv-(iz%sB6zDjY}$)DyL_v~A!kitdSb4$tf@<$a22?AzdKllP~H4Az)#l4b9ssc>yC z#Ts6v`)i4vMA%pHL;-HMK_QMARqJ1mK}TjI#NkQGPK{z>LomVnj3mr;4|fv@>78Ym z^&r?vB^jX$QVFgY!?yQn;TsEH zAtP=E`oBGRuf(mgZvra1-tcy$4XVJ5 zH9+cF0#LR2{u|tu>$2BzeTYNh%$JhK1Ny}(;qh2SGybX~@W?%~?_tz96OBg0zC4r_ z7IS^_mv!XLvR86_aD7tN_>u~OuL2xgC&P9O4#u;RF+=uE*5MLP85CTy?HDhZK(gE^XgJ0^S&xa_B?GJ)wMG(jUX={MED_JGsg zK($o^K0g8pMj}2g29Z7uTjj1H*9q40Sc{l+LQ56wFt)s4UD}7ttF|5Cfa5t2jfodfDG8`0rK(6&we>B?@>#2nRb! zcdPF#!qD}4nHv#62KPq-^q*V7dx&>_cqi#$GZE)-M;EsbE_Tv1eQ{np6k@SEWTEh( zFM^)BP@VY=#rRzQc1L!gFLWt|OP7-;#~JfMZ{f9-v;)VJ&(@7Z8qg~bMM3?06iD?*&Kk<wo$***IG~21>Y}@r z;7?x&aF>F5m==HoBYk=gt%R6j>T{r%a7ptteIzs?nPHzh5N%J_$48U)F>_@qyOCK3 z;cJX{)7c{AL|!(Wmk{Jo?|BLJ!jN{od3jKV+3JtC>uUpj{(*l80>BrSd>*Y`peD`h zf{sj9Z_NbQhEr)YU>Eb1H@huzDez}2@LYSdX)M8IlhXwsJawl%$D{M1baQfs?5V4e zZS`11RUk()96Koy9@ED1D8-x87EYvCXn4@>D`a0Rq&d}|RV#a{J0h(Hlw7K=;uUN) z`YNx3hyqD5DOViSNudsXzo$SnTpT}mHWU}k|J|T44B8Kc;XEXO@liqkib31627MQV z4}7J|rt%Ue3)fbbXF<$MB_x|&wjeqs*lBth$kc6ix2UQpo0cK3ctmo3SEIk&zI>ab zsL+<|R({Mo5{z*xfS_S{GI&p|uOrQ7HJWrunL)R5(B1b3d_?!OzIGeL_a1d8asZ=0 ziqt(5L~0GEN+oruM0|v8e4f?aQs& zm)DFh?@beBvb8U`X^^HFKwPYSxlH@A&?s~C0#T*|f61FA@_(kKp4vqiO7oXPYXvPw z&qBEGSkw9iX&)o9GdL6v@8coxoXGeFB|__sdxa7UMdI)9+$jF93JTHf;_H6Oc|D%d zb%8C=`O)*Tfm5EmZt@9g?hp@jIYL&}7FV<-bVY%7S-M0Z!ITi>}3;kgP$+z$LASi%8LM*^UwyrJC1kBw!I(*j3PM=T4#y z7UQ8zDf74}n>Pgv)&ACINpD46_27{PQRQtK&mPQr-wqQD{AH!Kz71fcIX}BAy%6*e<1v>B#WXBq9v8(@Gi+BR^a%_OhyEp|J7Z~J%7-Pbz5EBkbj0!b+Crvmb zZ)`^sP9f%&{4Ib%Z4;!84l@(H=OF|y$>q)H;_{A#BtA$}8vlg&94o{WlzmA^v#%OYIpx8q(6Q!1tMu>TG+sD)( z?W~xYqNR$d+fN^SaoZ9}3TKt6w{;<6BeGM#f!N?ObtJ?dX6+PN`J{k=@D7FkR-~50 z-;AuK$V$m-6}>}{Kny<$DP1KRNd15bWG6_ysc5QaG&MD!umn~#kBbFu!~Gor31hE5 zdIxO`fF$-7Zc&#Lv51&Mc90;bZ`3&mg&}^?=ac%j#(bidP)TDhIkuhV68iVc_zNZh zmmnyhS*R|7l~iLjIPk?b0}m|5BF)5W*CYsD%SOmFja};h?bf_D3fWuawSPr5&uhO2 ze&Dr3Z6bN?6%|A{8(ymdd7JRsyASESmV*!t=CyyEf!7}Rh#G8$*CrVsc%gz7NivK8 zF9KeSUnotHTvts#mZn^nPJ51w@-DO7?{jpPdpkrSbxm2WFMN-S5o)q>>&BWZsl`6&sKLxdSM5?K{Mvj!py(TFUvpjHw~E#xpGYVFSN ziG5f-AeMr-*srF-#4OT?rL;v`Fix=4(LZV|6;hXOiC`%L!Vq5vDZ3ZSOn*|w8;c#p zE+xPM>zUUX>ctC)aAzrmO04S|MVN;VgsIvD37H4c*^wFbK-nwK>!QEJ9A#UeGk@AR5Iqlz% z(4A1hWczxoauB+sWqu@DIpN=p=$%kOmi;hFL0QvF#ZV~(@PrBm%f3etz{8?bD!(q) zzo)x>gZ*%@cd?&rlELn_!^M7%;_1Lo6vmSvo}$z=zcimF(3ZriryP9J9IM|)AAE5~ z6NtC7N+I{5#C<|Eg+wh?gXCdh-Y#4u#OY%7?%$#aX`sHsMd~B;63NvE5Yvn*D>8|z zhXpUj^#8yxMCcz=zm5^yu#bqWR3qglq=?RW_Y|`}x9t67h9Pa0yP5SVT}`~1SpPWW zs+ns{A%?`?9B73w?k{1o6Y-!qAP%PaVmoX3FfpqiOb*9`YW77f-mY;l;tUvPW*N)# zt9g0eX#I=zd4s+_uhMe&X?A@M%P^|T#)7*Yc<45~M$;?SW7*I(s{IGzv#@5r*8VxZ z#OPn5GZjBLh`u=NC-5a!{}RJxI?*&prOg0nWZ)_Y^R}CKTLxfcBr6Cr_9$ZP832p(hq)R+6#%HY$ekYR zuj_92pDjzvclfcQO-JzN+!-$4h}GEn0LRIJ`rs&5XbpP?*>6*((h^w2kW&2SI2dg> zep5?A{3bt9{N}|Jn+jte;y1xy;rPvArua?R9g=l{WMVCrpoaWpe-Z6(^k%2a-f^py@FT;ufYMo?i}|L)l0-BI{D=$Nzk#9j!3*lCHDcCK{|Jb2bN;`Ij=axw&9ayRYX9bDgo3_BKkhKuq7;=0< z?f}^nvP%n=;mNTAIirI8uwD$IpJ|&TrWU?lD>Z9$B(sCOlQo&#GaIFp2p?KL=E6@L; z;8IG6HYHq02{D-CVztD;gCur5{^-DT@emWp#X}fhc&%P?r+p^*aJ4cm&~}XCzBSgj z2Jp!A*pa~35L)DbAv1?dxtStdr<&H`>(cG}tq8At8*fF?M0MYOY>=VQ{Ud}f z8ilxi@Ipge$6c!}LRr3($BWITQxc?dl2#C;6DWu_0mCO9g0u>Au@Iz?R}(N7i!Tv^ z6cTF!reg60f)r(RK{^35F;#u8GRrp_rqUb~B*QCUA_ZYK!8Fj?_|g`_e(VBp$IO5Oam8_Xmw-WPyA*C@jbR&kyG(* ztO*}XCWoxAn7i+m6j{Ux50jqrH`FeQk)E$mcKY|@_>=saF8*l|ia6lu zg0NUR&ihy$95}nw!C=MKS(`Hx>ZNkf2cZTK5VjgQZZLZdbBNDgA~VBwlxA=6KJX)n z8!zC*lnVAUZ==zbV8)lu%foBp*V zc^9+3?wz<9kWEOCy^r*iH(*qc?(B@gfe*?f_nBB5Ssm zbuJ78;(Jf4@34mhiu@(o)(L~(rRCTSvIcr0u33Xj+YOnvfn-_=B|xSb2|XwQG7UyS zkr7#m>MYLm@{NCe zu??~0F%S2EQFM=79C`+QIvdd=iT5w1aO#d9!7vlrle=*Uw$@Jd8{%fKM?>9 zogMEFL@PDHOn&LAto7_c*PV>c>+U&e!|@B=tQt>6S+Em2?`e3t;OK5o@gOmdCJ>QXUQX=q`aZfJ}z z_P2n6U*MbFg4NwZPy)LqcOR!sU$(8}fR1-b@BDVL)Akve?y-4zc;QQVPT;x-uEpb> zAx8T{(|}t^DxC$=vLaq4;%{7b70OXK#~hX5MBt6nzB=GWW~cHsD#8?ekCk9B^}pG^ ziAnb-m-mSx01x>K(njo08b&^>AvChc%Vz9PI^eROBxOx#_5~t7$Lzn_tog6J87aOp z;uDw~u-W2d^uyQ5cc2%pebzSvvZpF0A3c9^=xoXVZM3ohAr|w72QEfdPVA;^^6Uq< zoQ{@Cj#BZ{w*2_mvOoaOP+^E)*1|m&jbhT%6u6_H=ERSy>L9y%;|hWAf~FtR*=^6>fz;!u#unGFC$7JNTRA@Nyvu4$xst1M=gQuVEiJIX}f} zWCEcd;U7N|Of>W*a)~;ncQ)d;kL=k~udC;BF@jj({(R;}P>1&7`PwG&H3(0Rp#-HJ zZx4uVJO--^X;I4g~>Rl4Ij$!xEubm)S*e2|{c+5}x413P~)O!Iv(tYy#MdUXC z-!A$bkuXQpl`stVP0(S?E!!hCh!Z<2|)&`df9IotrR-L&pupm-Q z_WrI2Wq55Xdp-Ods(_=Lo_Kif%Nql)F90SzlwuP|5B+Bt+)R!qU=M#4#wWoG-ITzE z_a9~xG)>n)9I<5=MEJsXBb=4e4XCC z0(0u{==^~tYx48qqrs6`4`8ajoV0u;YYUDg`b#^Y=Nq!-P1gG4oJdD$<#Uk> zrXK{1IK3=pbf~mfwhkr$^qt(qIoG;vvq-z zDpqgp@TAj3oN0=IjUJ-t5w`mbLd0jmU@?7&{-Fp?rNU)DLR~~1oGoMIQDi8^duS1! zn`j0>gr~MwRw^ec%+aE_8wLRyx_&L>vD045{Y{3a#`4%@uhgSarliU-Q=rRZhil)> z<9xk;>;nv4%3d0>SPvuv^b`zFwwol%UYpAo+r>59kud8*_?>GJ1maYF#4c%yVtPKC z&V&4(mW6Z-fz9Fn1_S&X8sN_2b%SBO)5keIJ0;gT8C$=6i3?IizbSHp+lFY;8A&c* zI-&;BlK~1kmbM0CkE{*yo%$m2n_ESG?=67+7QpUIa4Z8WfYWYC7Mc%<+38N{0o-3Q zqaxGon~@Z}+@Q}GU&rDW4x zhEZ#p?;(v&y6yXD$|KE%^O2}9;&a^ggF!pTOR(I$1Izxo^P%#^&Xj2Ur-jEqqQqdG z`OMvS-*{j5O@qETij9PsU)Ix4?3WnHvCg!w^1mekQsTfMMW$LZh#B^<@k(19f3ez? z7Rdi0&=WbJ*42Veg9n06!`tWm2B#<`$s4|R_1%QSJagqcs-W-1&Ws(jCOC?;2}IQN zJshSM)$jDIOd7OZ>RAL*L@_+u1w7kvG*7IYwl)7-3YKj@);GAe%%!wlPd1&jn*1Ml z?9+;=iImV+V`2Xm-S0xWmaM5F3TEYIbS)7N&AL_zfg|Ma+3H*5&)S~T8WC;Kh}!Wa zo1PSu&GbY3*aYYr8)UMQ7J+(ptPKmC-tr$h!3OY$3cnLqMIq(oM`2we-FC{+;*J#@sMUkofEdAj>1HzSy9F2 z-nI54!K=W+kQZ`sCHn`i()!1Cq_~pZ1n2V;nFHF2rzn-}KX-gld@>5BVM)IB%pC{} z2f6{8K6T8L>r*i`U_l(#^1%44>t18%dFJ>u(4XS9to7XnQeAJP{rJ_G{6h0E(O$1< zXE!@;$z2)dU()}Um4TS*b)(PLs{47~VzTJ6mRL$<*_Qhul*Hib2-yp3(=Z%DN9!ag zTD30ktOAJhu9uOU0>TX}H#{d*S|GyYVb6Lei$ajbgA!OQlMMvs0pF)~G~i87!kkqB zXUSrha#u~Tmo9JN4y}Q$VkwP*;qFBUiC&E01}Xx(31W8FcSdY?^BW`Z}Cx1kmP*Lb+zyyCx%63i?9UX*}^00yJB;(yzaZ%B;} z{uzH`f-h44yOp~iL}y-1icE%7KGvqxz&;8ST6U(r4)4(pWgTQSc_%V)AvscFC`TuH z#|uK4R>om}xx>B=UxN;U-%-4ZS#U7(7uv%`&PZb}L?^F|(cXy{abCvCSp7XponDru z+&x<=kAa?oIqrI!vH=)i;K+7AUZa&-n8xs$ZLh&=41Mi{S3q*TfCOH$T6;~<8OArX zQtW!y#|PlC)d&OG#RLq!5G3alB>Vy}!u;n@p7el&1W2RJAZ0~@lo1IM%;k|FWozT} zzYdT0e;GVaGCXahC4Ml)K!Zfmk~QcWdXFYLL#El+DjR|+G(Cms3x47LQT)LqonM4& z%I=@;P{uzhm1{L$(x_&7kEr=VE`Nsl3Pn#s(1w|7Y-CS5BYQFjStFRs)g1hW{5?nh za^G>#q2$biT!8REoYeQ~w^#_^kptln3wKgYdjIIFO4f!{bHyl$QM@_k0QXfE@%?odD4!WV5hL4v67SJUgZ}`Zgpq0AjQ8*f7#OQFMYqBC*D#to%(BYaWzY)i&!Ag8%czYED`vP=1QSoD061ZzL_?u{Ji4OKS7Uq*A$0n z8JBle$rn;7B2J=;5E(3$780#|Gh>P#jmFzFO1}mV*N~C{kr|*RJ@G4s$SA4&(XcX* zX2%lv(XbMbZa;$e@Z^6D-UMC;y4z1;;vcEa_%OKu6@9vg@nmJR*o;I%j*<;|8!`VY zJC$dJgriLk*Mi7q&+{bvW=ermq7nm`oDx&)Cn?3`X`V*!0I4d@0hey3z0!VCd6tA! z0E`QUsS*HcY4m}1QrJ!k#Y7|rXCp0!(*UNHb_dd8MH-wJTxD=Pb&6SjC_6#ef^G=$ ziz+}|;pCX2xzSMt{fn-SDriqI1$zL3U>9mKhy`C23P+4z1?1)JVUvIc`DJvc`y_h< zr2ut!f*AE{?WZZlgu0vFfqJEedX@cj&>dNSsIr)Mkp*>rtBkgtF0Rt~tult+G=8g$ z6>lbfdsm3ptED9kGzbQopp=$i3syzJWeg^OhynfEIqb)QgK4~K?JEsIiTn}pCkSr0 zH%wRNK)mWT4{2KS70uP$r+NIEuOH%;iAyUbGjZi6#La9%+;l3_h`8ynP5jsB`OrMF z-+(=&(j>??8GiPnG-zX6=ll?erUVK$Ql^rPXjp`2R;*EU{gLb$Ff~N@#+H%_2)&T3 zcD49MzOgM>Yt{79*0An6mv=U=r`>6%3on;_xl7U97WiN5JImGCp}`o4WP#{|G2#qW zxzif*cafPIJ}kh*J}kh*8nV7(B6y&wCP1YAn*N&jU%CGOU-_G~_#t6DJcF|!oflBN zfGt9=N337TW`{A*oWFn;O&tPX6Q77Bl=O5hUa)y3I67i{s@-sIkSlB*gx!$s`C1a$ zfpvo+cF>-ZN)%Mn)M$vwMcbD{_WU~8-lDxQ!k!N!qOarXp;RsG`7mN8!{-UJ(b?GZ z-LN@A7lN@-kG~200|qpm`SD9e0kWC9U^91P+qv)0F!mUOlx=P=_>(ulT2(-%FW(6F zU_><_W-!=Z*k9n#K(UfrQEZ&|rpnGzc^C3eY%dssXmrhgvDazeiS?}hiS((JFpchY z*^dT05V=kIEPe5{{hIJ~D(jt|{q;sj4UUK-OSV&Tua)g5oXS{8pSIobD~YIu>#4JC zS;}b#hbx2%u5;MeQyS(V3K=Bl(zs0fVM>Y-*$|-+DsWN)1Z4$gp#zwJPasdwSZ`El z5rg{tQxTnM#18gCp&0Q>GZ5y-idgNHrXaE>AQ;TH1~8JpEftg@^W@dAQQkxY8|;5TtEmLfc03f=unQf#E>C0R74)NoXj4K@N?-uB#NbzJ6l0l#V4k_=U>;eiRCoL)9M7{d2+#E{ z^`pVChkK`D*nXUh!Ke29Eg9M~dkZ_h;-N%KlivT?zcu^!z!vS_WjIS!^K%Wxv&sJ5 zRnr~L*8c4j`Tx)UE!Jz6_U|q@ ziOCa&s2u%>kp^1ABjAQZ)7W^M&juR`KEu+JzAe`LQj0NV(#a$D5ms!cq4*R&PlTO$ zfJ-W$LGcjcyb*HX(P1Q;$bWJTOwq%y=@wNqEGo~bod=@(>oagBNWHY+0M7s!1;Jrq z`wi8B<46!#6j$4s5G+a}`HT$=!Ok3y#)r1Tr5uA(RtvBtzFzt$9rYkCN5bM~5@089 zF+qlH4N~b(m@kop$VEyr?Q57svELN8$mvGxw^aI9)JE~&Si6aDhVeowC6fuhAfA#+ z8QU5He?lv)Pw1*iK%sfMg3$DJC3e6?0DTb>XmP~JDE0l{#-irL9o(tPjMjv+6GsD# zABE6g+=78RFy+O6lmrL@65jM}6M>$DVfY9XSw8|L@C`obTPgx4XhWno7wbDdm$tdJ zA*rRh>Z$p5DXb915LUSNBbub|MieebMi$}(g{q((ff!J`_t9NZ6o;Exhj}_X0dDP4 zG*7R1hEGn|?)2v1%ARovh;_hk4qQ(BECu~d=3OBwe)aX>uMoc%5r1eXhrd#MV;^1l z{Lj@N5r2q%j1)$cJrw^(nL`SNe5Zr0>9p*VlJ8E46Y8|o=u@-`UbZGGJFmB^j$l*T4+ zi6~#=_;PQieLL1?;qP-)q8mOq?A!U6)*JO%#2BC0pX)i8itb3qlpu@fW|}78s#7Lm zl;^{3$2&IQEstxJM3NM?8QfcrfJ#gkSZp4Ud?#3( zZ!2T*OX-IAEf{NvUP?DaZ$Y{yc99wuyAvS?BiFBn{7o~9$jgkEC{>Fh0DTYx1^JVz zFU^g3x@ETl$J{`#*Ua;?PVWed8R$*BV|02?F2FPBo%s89`qUgr?~XM0`atjgI=#UU zTn9xp7)!lz6v4*S-UUcN>63!ehgDgzcM@Bf-vPqQ8~3!FFQ3DU90oweVd{zE%@5Qt4#S4=)jc+CwOT z2ZnzXokBGCFX?;G%P++VNi=gE$ln>9h9ZR%_3><;$EwqF{(+ik z4O*Q(mM$_OV@@@0(ZklgBi(Tp8NcE!q^`s(Wvoh{a7wHC{Rqxtba;OKKYQmH#5CeeZYCfTu1X9>mRapeV!Xwg6j!H_p!YW@vY(Y4c%JC^B*>a zzQUzO(M$+Gv9LddDjdRpl%-rd)LHEqg&N^h63d=GJR7=dFuWb1!K-=MlSHeWVLT-{ zF?`*&Z8QxI1ePnPvYHDTt`p=72K|DOp+eZAgg`c{(8_8?S81^Y2AW z#Ws8o#G<0e@txP5y`Nk^1}@JYQd5Al{0$YQu0w{N)U-cPLL65u}EGkSZSX#=<|H+KbkB%^%&%gWSq;%0i{Yt3WX8S!3ThWk1ov6 zU8E8IK=zLr@vsa@bLSTlG#!I|b!d`}^}jaNbqd4t1Wz7H2HoC*Bd8*x0W|v2epaz@ zg$xbjld%Or{gP_%PELXCC{?&r9lRNl_LT;3rD8h^49k>zd)s=owDM~Kz^b9_-SkNS2lw&!^`+G=WE*^&?mG%qTpsR zn~p`e-vlF;^g6gl#V&B#?lJ-T*d{n!DXbI`u5_LS?3P@@h%X(6>@ZnUcHRQ+uvZ~x zu)jkKMY+gfTaRas={a9}CVy&c{W(fypSKs=)=Ihia5>nlB=UtXqgQoSr#4YR%b zx((iU*k#`r-HZTpIpm?|Ol8Il>MYY>r|}N!zwhoCF~-9i6=mg9_!4oQ8lq_Hu)V?9 z4}dO#O%yDROU=CEda5V<6uOoRyDPrOL5}L& zMWmp_HJrWxf&?qbES&U;3#_E&?P=>Vb{H*x2)3s^i2OT3p@5?)0ZUvXfyDYlSmM(8 z3Y-`m*m!*#@;CD5`q`iB*ZjEx_}Kvd`AwvUJC#XP>3?(kM7#wXMEmYh2nQz`w5I56 znpkk$D#u+PCK_Br3EDEB6RxBL(4bO_&OY48{#Mxt|4PQc(!hTTI&TWK&wI62 zv)#WNj`yKS4(l6CXS5-VHVHNx?;|#-G_yajX}nJb_`B!1@86|Ox{*d7gTCSObs{W? zFTo_Y5LUxQu-Go9C?7n-s@G}aNfJ>Vgl(~sPCv&Zj_W4*Bp7Mq%Aue;lKe{XCnJ4Qxo2zMO9jZY ztq6yru}bETPL3XrV>}?3S|pTDtq}Tu^QYP{C!&>;u{kBlJ}_AK-0RnHTJ0b z;_eFPIW6*Z_ynbVg_I`?d02`Ne?vt}5O$HA1il1PDy9AV*b@dz0G&H?t&J>7L}QvY z?eOjLRgn1Nz+jb1x6_xpc62h6xD1lY#88>_T&9yK0~LlEaKus>Ked2(ZBYm}QgcIb zROo&FwC7?`3T(@z=vda$*F~v*qEv!b3OjV9(icRjL825+g5gpLREo_!{<>i^rm&%XzJ&cKR6!!MWc3f$VV`-2GmC|^?aRqzggOjvWK-(@Tix>LRDL6d*rF(Dy zyIQ%cfYo1Yl!*msn*Ib8}X5uw} z)8^dd_k60;v@=ia{Du71?#TTG=Py{w?ptW^kP@q(y)cdvaP|TX$)>WK7(7CLPrwd4 zL~9zy15uo`~H2hKm26Id8s_`s3EW z_?P_T>%Y^AL$3YHWT_|eEQ#@=lGnbF*cR*mS`?=OX z@mfDrpT-Ea>{-jo8>~Prdo7LHD9b)yE&GH5u|kPkgK>OA zSlDd6Hj_ss`&T5`XSpCWt~s*)ll?2aK}{mO#^tLKX4ZL$LtB9uS;REi(kbz;5C@Qt z+mZ1>94^GaLL5Ns0`aeiIe@6bL-|*43;xjga;Uw$pZmgl}M#j@3y_@?7u*b-73K$RBE@bs7cYzHM;kdg% zYO3unkk25J+y%s*G|63{zZ4+8u1&Li2qLHb7<$pFzrb(}y`&ExhQENssFD3L*&Z$# zWC`nE+j}NS51ZK^+V(BSY!`u`M6*q{KMV_pDfWlNnh*h(!}bq|n;h0jog@R#vr=Og zE3d0(%`H@3Y1Kj{ZeO2lp)%qS7AohrVxbbg77!)T^O$`~*vpfciAwlf`vz;FJ_6Q5 z85L?&``PWwZF}aQ&OSTIe!;d~{^{CJ($5o;RoQ>{Xr``<%R>&w9@fUkyFUIY@o{Jz zAM0eQ|1aZX3wro%B0cOT^sqqN=(-Kh(J}hBhDvezck%yA^iPPh8w2mlxR}6!M$7^U zQ@(lHrS6Q?QkLpAHWnzy-_6r5ac8WPGEOv7569ol)8s^>%>^+r?C#FkNSzk(Ct~A| zSn-%@Q{5@+fQdTLo} z!`dcQt;k6+d)9x;PhS|kZ+*HP z#jP%8@1o#s+mklg@K!})Pb!`k8Y^@WJH$GQ66{H1@eY(f#bNEQi$7|eo@D@VwZD2| z^P_|HnD_6^a172$}fASVZb7 zW08#dj5XmQ3gU$hN6H!RJX+d6d zS|ITZk}To+wV(yP66w#sr3Z<|c{HP_kM_4ppg!8)Dxo0mZ)FuG*jF63eY>)42O8OK z*Ng8erz^2fP9Q*(Z)O+jPLUGWA$!9S3+fc<6dxb-r9ey1pjBa#e#Iz<7HBK}JZ7(^ z5>c38lrFKLAK0e7yaY3K`=8CvTlN5h@ZQRoN!R&yB(I{I5RBqgl;rGNxG6?)aQ02` z;1Y3^juKLvvzFM?q~mt`B`H;?cp)<0xtx)a_g~^tG-ZeXm(UD6e{tO^GHynMyhYr$ z_6pUKJTsaw;n*s%K37Qi5Ybn)$p0*^ug&v6Kf;Q~lPMPC$JQt%jaS>`HNjglY|QII zop0L6u!cafO4qt7MZqmWB2r$lzJswb=gcz_l)IAbrrk;C$`Bs3^ zQ5r;*4hH&^kPl{ud5gReoSN~OCJ*nRgf~dtsz^k%Yrf@gJuR1$~6k#P9*L!CT?Hr?m6Tz7@6gIx^n-o6DbrW2iND zHTCJYCwQAx|28sl=qJbunm@r*Kmyn%ANP z9EulI{wh;O#u$lQwZL00{54`el;kpxG3hYk(8t{6N2I{sU(P+ugXJcllol|-MLw1j z(4&s`mV^9n)9i$R=g_n8OsLP???Ne6c`r{w|E|?knMTm6rMw~J`^W=o^

EvX3CWVTIeFu&}b=9@&f&bF8G?t8U;r~H;mLxy=8R7>dwf}$6 zzb1*^+c6J>-eU~6Vy%$lzAyKK;1`FV?q>UgChrINvLA@hGLip#;Rp7E!{h%{2SlQq zxF3{`Z^8TJ>b)R#{%nok+t7mF%YdwE7V-O%w+_L{CGfkkd^0Wix%q2;1pV{>X!<8_ z9E$$&tabWFe3X{_+>@qF|0KSQ*$Ej;B0ndEislVTq<yCl<(*m_Eg$@&B5!Tzej=Jdc7I=vPCus=Bl)p?Noq>20? z*=!|ki?Cz~1i)4CDV=PMZmj)Uu}GW~RnQ4uvw}{*+o_-vlq3h8;0r3~1P|gtCr(I| zmulH|>+vUuWuZcl@V3q9iKgdJj2?NJTQYi`lI62Dzo+6twSH!`59?g~!1?vL)d}=Y z%!K9q`izF3b$)$>J4Hzfn3~qkufLTF$>&!U@31hJ!)dd_t7M@f}Hj$GIK4zcp$wW>HRoB!R+hX!g4Yee4Q-0*3Rf2bF{bKA?`jehlL(T!K z^m;lA*cFGnbV^!JFXyY$t1nNC5AY-9E$=nR2b!<1($UTL+x`_lyx)o#9{+v`scOXq zDA~aJ!rh})kx3%@#qke)n>aK!Nt$4BWc&xFRfIrM(>MHPnb)zoB=+#-B4r@yrzD6> zO8S{AScBwXJu`6$7Z+nvOe&k;#YE(qDTeTbdQw?GCnW1Lv?JsDyfuZ|Q+P|f8>d)r zO+DN4bbKGN!yzhI89-l1c8sw`srak^#(!>QKS|=J|9jq$n7D_z-^SfY#e_ZP{45E* zBsXDF0=!d6zd7w(grun|ShAI${8L}Xmtr-eJ+FU_!_89aP5;|EI$Y}6Z2yM8!iP?hREi77RAQigBZ1OfAqh)N1a6he z-gQ5cbfofl;uY0+LtYZd?jwQh(x!EL>e}R!*O`>@)rH2Yx~(0Mw};XS;Gk;rbKcLd zDp@c2+DohBxnx(+(V7v#%Nx6xXH{8AWlcK)bgi9KmY|H$0#{Z$SI42)YSm{c7n1EI z&+~c%iQ&Xeqi2$vhP_9`_>&(K&wp=SY;GEVAfEs8g!TPzJpZJyXFZWLCxtybP70K! zT$`n?J4Al!r1L?S#Ph-bn*Y|}#M^)NUq8;i^JlV$?jh9lN9WIN-5xqAzJ4Cen7wE; zHEI@LKPRn~`1%fB`>EpVyIy>wFx3Ao8KT>0Dk$Hvi}(#`1!ddC7owmnDxR@LuA#fV z83&0oAN8bc_8ONF{T=TF@#n%R;iNc!E%B7?`0twusJx5}hOUZ2Dxz=wUyJ|#W9ZMc z*AA2Z_?HnA7y9!wc}*+e<#ftSftt zzOnO+K0kY|B`nJ@6cOtDjHN^db{nH&>XuvNtwak-|8_MF(Y1E?R?g7PE!KWzsa$9& zAw=f2hluet?hqD~^hZS|rWHFxX5_qP=ifS&JgR4GJTZI9L&f_de*!^bu+5AG10^r3 zt7?xZOKeLMOWh*&C!-}5WGv3tw0IUMx1@rM*_up?NA*N<;6YcUqJpL2%}es7-QhdnaV+o;DJmpv#s4yvNqp>Vd;ajxkroqC9?soMjWMVC{AJ9kPD`-glJ#Vp zFuAk|lWljrR`CfjgR0#GfV4~+eztgh37rvVD6yZg=RVH0_+p8Q;>KCnoA<0-jgrIR#0t%gRCngI(<*@$^_0TG_nOpWo%4jrW!0} zO52;2eYcP%3gEkhmr_B?g(Q43(_*J~+3ZwoFSJZ0Z(%V}c_wY`7D&O7m>_B22M4DaAtP`^gU z-VpwQNZ38CGlQgG9hHRL;B6hoEej?8P5ih}U68Y`u&QXi96lmlljJRSV*4eE;ka>S z7reyJW@o_{k7ZXo?L3tZ+xACP{+Qc+8N0MUxmDB7U*pYK+1wwK`1--ph1MBG^4T{_ zjBOfsG|y#kr@D^i_+U*z`ii!a%f8x|(I~m>Ii5wmuGe8xYNw6hViXQh5-+C#zJ;J8 zwXC~_X$A7Y3Zx?srVW&WHXL~fCZuXd&Pd*`7MjunKi9 z_$ONxxq_0$6N{@Z{3$uV*Zx%bpTu9UHK!xGlH_zW62W78m7K^*1*MV{O%gVBRpb|v z519CT|Je!a)KDJa zDX{VUU_P_oOU2+A72ilY@NeQ9=?HI!5#PvI>RGoxH-(TA?{14Z(IFnrQ9<5fiOnP? zh9}YSRPwWXa5{JM+e%`ycV>y6yE*-wV2s0J?+QdN$li?72cf$OWVG59dRW;YDZ8hI zkt4|`QR^GxUf`;@QxAAAM{2Ruo@FRU{(E?!I(xk+I#o?jYH(YrOAnC-qm4BI8?c`KP;x&O6lA zv9Qlhmhywj9P$3z6Wq(I-0RJ2r-&_SZCztq*!j72+d3qi;k;!BxahiJC@lfA{nbaTjA4f})6V`66p{}ugN`p}+y{{wI zr8kJlrY?_H7lw#aM9N&pIX9EDbABmrY_8`GqdxvHoKct&&oF4O$N!CZ8$$AI`ge%(($P1MnM2cUoC+z9}-Cc z6ire!#q_1)7Ra7HWE@FoVJxcNv|^WZN9P!Brt%JcPXIF94A&RsB^` zM=L*76XQ>KIDH4HlXY^cgGu98#VNbJK|UGuwkz1PBBkV!Nk*rF2wRoJNV-ad?}udH z)P9G3$5Vfi1>5&!C?5Lg+206|gDs9b+=~4Vx8l)W-2=J=Pu z&-Jf^^+ws~U(ZS#!%EYUlS4CEX|DuW|DNECIu_WB-7GNc*(E%?S3MKntbA`y$&0Mt z(aJ^?Iz}soPpXfkIbAPAP+vp89mIgc@UJ`coVN5`Rze^WD)oo?xfd&_KGUhiHsF$k9-ritvr`lX8 zT_E$KCs|2wk=+Ew-@K+^48KC^JQ4$Xj4I(735)6r1Zq2B&40cimp!;H5L(u1<;J zVr;(_`MknM6?j!*XVx#>3#22bD0z#@@F*lD_|GPhyRe!&(&we=1l{f1&f%Cko;mC* zvAy5nVj6<3?TD}rdPof2PYRfByWnIgu$0@XF!Cpv?gaWJRykHa1n`*A8w=ZtF~uT> zd|IiEMoNx>W`Tuc@KF5f4qt|jFMP;+@sTt+S9n8H#j@Vq@f5S2x0}It`z(CUztQsUgSpIXFuP--1#60TK-RKFGtToeW)Kbau z1Z&n(ZWiu7fM@}oiMUy2wq2lCPIvQix@*x8O!;7X`Ka-cIdO2B!wjVJneye?iAfm* zzpwKI(@qiuqkHtqS@W16d*7Ek(^hf#;m>Sl*BW2*`c+o_lU4m+x2SL7@~m|8%UW@8 zuQ#VCw5>NUY`{85?!P*~$HnmQLcO*|knl7>b82lR;bYMMKFdmNsB5@TwZsS7u&!8N z(#}kmXI+$xlr!FDXHFpaF?yu(pXxcX$-dI|4ijWP9!b=+J`#ab;qNCNW2G-+8%GW~ zn;@j4%E?rbd>xh;>OH~W<$)q&QdVqH=t#E%M7$!#XBvNLPlR$A?@MD!+&3EYv)YPx zrhm#3<^;pD-4geCX<$Ss?F6*YgdlszHRl*k3ck?k$34nU&?j+y%Fvr_F~)H6B`hx* zGAY{?(mTLV5+=-Oev;HmhE#)b~s9W9AW93 z2NTfoyfWIwhTccW=vi_hq_k|Cs=nVbm+H8<=2JSli+9L4ho8#%yyQ7MW}n9DWu-~n zeOJ{e!LepRwa<_O7N#A0Ur18Yo*M4PYcYDl%8bQRBL01fG|29`c(L9+Sv4C3wSuEL zh4JAKG{Cq6nQA{dKn^3%h!ybC=Fil8Z1)=byh_F5iLzYo@Nlw}H>Pj3PL;llm7c-x z&p0!jDkpY1X>ykv{ss(Ht_U5h*Lqx|c6m}TBW#LZl;bU*ndR_Lm$w7UI3pBD5`*ljV^yXU=GWMe zJ4?L9u|>_U0zbYZhW$_|*51JFq1He7*5Q4!t-KvsU=FE_rOr`6YeD}=!y=4t^g3TK zS8oF38@LETMtLpg1a~bWa#u%p1M2o#pRwJ%hg7T3q0CX)INIM-TTuRLZX=WHC>c>B zvJAP;?m!q3f3BBHQy#eiV&|oI2OyI^tZTRCM-RC6d{Da(nX3pN{9g`S}7i z%KD1j9I4H}qTqG8n6^gEqepghyv*8;`S-W^L^eQnR0^Wexz+HL6}A3r3Rbpd|7)kp zYAB;h!K-36OQ&~To-GVD(x$}qx;)!k_I+)4I?#P&(0|%4`Pe1ByErOqOSTOi-2JqY z4@ObEm-n+T%q9ztu;h#!C2NDHezx?J&p67LXfRyxl7OLni3Y+6p7JFz7;u>g0_;lx z!769J+Fc&kqTeY9IL)^nV^sla^SwpLlSL9I+jRo&%ls*Rmze&e2W*O(&z>q>^`FZ9 zmlD4pYWSco%Ax4Gk2b2JN?mje8q?$0;r}p=k+4xY=gS2s=X{b2#Y`mZm4Yzxy_e4v zsu#*^yeu1Kgd%u0{qzi;zQLc(-(Bi&y8jp`G$OU72TDFEUdHuWmBhgG1T~v$qE7|YBDy9pOCG~E{(P>f8TxaHSNmHZALpQXIy3@Ty2?)-DCQt{udN?EGX9I2E6l9N@1%u#fFY=z2P(OB;`yD~gbxat61;LQc``A`-J&BJ2+lg^5SsCq;_gsLZ&JVy!$@Iz?Y;f zlNT(5VI`3u5cPZJl(UsHkODdU6A;eG4tj7(G^95KQGzfMi1Hp!1UL9PV9gmqjcdy8c?H9 zC#+cUvgH1O#XUvz&U^(EqI>F6U6n_26aQYY4by*v zJU6z4x5!kNyvGiB?n!h}s#)hDR5!lhRoQ{O?3chse^2wn0oX^#v5SBcTcUGihXF;+ z;AV!{1Zx0x-aQaWz4iPCp>V+?s0#~LQA*pPAK9oHSCjxbdEBL*Fva6ym zt;$|FSI{DuOvYfdMgv8S;K>GK2+#q89{G+2#Z%3E9l@3l}d%dB=ocr#sz z&I|BYy0VO}2zbdPv@pw6`8vf#p}(s$Ad}iY4gf0Odz!0~)NXQ6R-J6)sytS=$H3O#m*xn!ms<f;JDDD22yTsQff#jZE$%MJMZeH2p`V6b3M!;ouW0<@3pG7o0YngbG;&Wjo}y zAZ3lK;vT-lBxro!V}3inO>8uq2E^b$nzmx_k8sY?I5SQ4)qkOUcMf&!uH^SYfs9xv zDx!}*G_K?kI)u}J(KfVxYq!6P0ma$}(B^`oR7ZK~dybjM%eQR&7RxM1Y=VPHw9#5x z31vcjkDaB6Z%w_swu)ZL1fTmNh!-00_EI6jr8OGGPkG!Xz>405@|s=%cS8f-t&wV( z-P&)C0`PoN?o>HHP>=H7*ERa@Q8gYqTGjZ4s_}}h@q(_=Ti2MUYkZIEPL=av9%&Mv zNFIsjC)!wph;|TsV`{qMRflJ}I%0!TKfEtf1OiSS#C<;Zqt$&V^BMULuAgFWKV2b_ zm&7kuXNhwqBAcQOu)XlRZuwnX6q=gj4PDu@C^Wn;0Khl81dpBF9%G|<>k)#0?rJPN za>Nvj-=6%|^4pi+4g6+%>xXBF%&}jsbsp9poIzhfjyHG=C$$Us_2u>q`ckqy!J`dd zs_F*q`3ibkHTcyvFcpv*onXz=J$Vagwxn8O8c;hRD}aN6$0*ZRg|r!{p$g>3D3c4T zW&_X02C&aSm@Rq&VxPSoCV+3n%y{HFsAgRQ$UTsoUDd^Pq9TRMB30 zj82gCF+GhAcLqv#I{aPZyJ9e)nZ}V+@?=M(ds&Kqi}9DjKa5rW8OovgAO_-yysyvl z4*p;k>CVf=n32KOVvxmxa@TT=C*CF5-q3|PMWJCm88{2Dq}n`EB$h$37!WzI8$fda zS4)dZYN-v&!e-Us$a0jP<~6P$*!c$qu1DKZhRDcK3ST-@4%~otLlR;@>@M!6h@Ip} z>m>aN4LI?iipZ(_XY(xz7l$u{{Z0Y5jF6UDju|68A<&0ZYJ-P*W^t&xV-Q3&-xKRdwzrnp)yJ1cA7=Zf&zE;p}@^B zY-ag)UDXga)Vmw4AzbwjHG~cDA$R^!hLD8+@JraQtk;?@CWJ}3g-Q7~aZ<2oEm_E< zKl*bz zY|4(7DPus1<`>LN&9Q1&we{`>YgoqfYFM=l>)A)_y+>9-Y<{%zF63NZDDQ$5xPP+L z5z^H9Sp(p5`O>}C7Caj2Hf1!NMSkl~>B0j$_@FV=Mr(V)dCF&HrOqgn&nkfjIvM$A zpNE4+Y#{~5%i0lv@sQzJr5z>DG5V!Cww;nq*v@W=?`IY=%%Ic5N0a+-mj~h*h(?Y_ z!sI_9c&BQyu}vfuQ8rGjM%p4OLM5nZWZ5Sl-9_nG0_rGvzByYqyuL5fD(A)3?=(Lz z+WsJ;L2>hC&fIW#=22fGlP|v`E7f(+pLtOUQdlRBg4bA-jz|~HeNb?tXpIenr~tL;*U+31<>xj!ME^T9hm4O%big1C zglhed!w;G-FBFb*I6G8as)G%UuSj_A?V2Gu`Qo+?t&D6=DFq%%Ua};IubFud?u;rf z!QtwdpXD)-wcBT9Itv#dv$tTrHJgYdRRex2qC zo|}RtSBiAKWW9N3b{9wF9Ym2?=2R{jik3%mZDW(hU-}nBZZ0x%|M~K{E^&N{u4Tit zp2_z-!HeiNf%CzwX@Obj%YxR`W zfi^tpNUO6TPl+e#1oGa3|LQ45!>Fo!66X7QnA$7T6>>sEV1w72m(P=4EM*D$g&aG=k*F3 zK}zF2A#qHCTCHxn#b*_|LfwiCmX{E9FchlpGp>WG*B54MyhW8I6D-spBjL4*5k%9c zI7DIh5@7|ewaTT~z3O^*jm7Rgyil=w)v$Z7^5N$2WcR=ODJ5@Meh#mOGC#~x(uB33 zNR{&z9>tj=+7Dl8ndRc4f)={MOL_r&hhfc_3x9#c&fa8B<#GIrR>hF>iKJHi9Fo72 zcW>11n%`uxQ3ai+7YnNeFQ515m?RtDZ?d{L%q{$hH?6MJ{&mS1#lE8W`x%vunqN!S zH==IjqyI+PxRx{gVdyutvhfM??HiJmjf_yn_i{E^S{%NpA*NrA$(Q9k;xXO;*Tj;( z9#H^Gyk3}0fQSh~DfD70TyZ|SplM=RfLa{->uwNvB~!NEeC<30Xe#>m#99%PfUy3$ zy-fO_zyho^`uc(=a*9p&4c=xE^8Yc#xSbB&fl4xLiXo0oF+yW=QMexsHtsvCF)H4i zh}}w1tz~|}eK6w!qr-xFx47|$31$4epdLtFU+AQFzu&?t`^wjAp9rVs{Do0si6B0o ziT3aBZqKl+->oOpKPy`)UjIBesLeCu?dvDTSAnhVjHbGsZ3;twrw5IddkS6Noq>I% zMjyjh%D1=kUfbcHzLc%et)9@ibFnY@-duM-IW1CF6e50J%q3h>@Mzf!4d2}F!{hj# zl1~Ov_D3_sl+!pmd_JYYqW20@!bZ`1LyFeA=A2GRcq^Z@`F&27OsMx-;*g5)2`f3X ziRZ{rfC7^^&=VEixw-9JnOeatCiO-&sc&K+*lbe43U=o!ZT|d!x*x=6cQ&UOX4l1i81b>#f;BtGK61SxYzyn%)whe7D>R_`e4$sR3n6SD-=hedtdAD< z2%`HYKGO!sVj(XrAL)Fg9@H& z>wpu7R+i|DNeVo>>fL)s%Ss9jn0KB6&o02TJjgy6a!!cXIak-Y?eDTTbRKcD+9IUt zL%Qne@v1(mM*eQo*XHNp4b${_xDTBsf5WmC=V2{R^VINM{tv$r%#!#Li61z6(z%Ljp$SOH%q<$gcOU3P5D*?5jetdr0s=s zazp9qqKP%$#uCGv|B9&n5iftFKUKF)xHegXzGca}>gjJtZG--iqKm zX7z^$z1FE`%6LEvFaYF<=?d7QSIrT`4h`7hRlsia7^`0reiBHIx?2IgshwT7ovu4K zUYBY;sTSMD5K+u5Qb^njxzajM)5ZcN7s1e=tI!AU;I*##wHJmuq@x8XJWhPB=_KT{&$LVQy9opEKw3gMOiL zhV1tN9>w>2)s^zkN3(hCiqE^@2IMtLY8m2E(r<*^yZEgY7ky=@By#_d^TYANE4Uji z0hozU4gkI1Z>&e#9R5O<`Udl1nRjHCFpQ?y z{(3_F*I+{CQrl{Djrnk$*gmS~jj~l?U?*E0$Ct4Ut_V4mY2$sFhJVw>B}r|>zoFXW z8w2HeOmJw!RxSiyw!NyBAjiQL6ZGci06j6RGv~`9G_XCJQv0=Q77Db`fCq2y>UdeU zZXw!Vpz;z$oVdmkB<~>4XUKCwFi|JHrJnnb;@N)e)ep!!gAq?ePNU|fQd4N3)O^Bf z=?}W4CTj1O+P$eQWSRPd5?j7qx15QmsJ#BkqcqA=9ndYY(F=8@Ut(;mvVMF-Eu2n) zwFrW+v{AMfOkw?R)DjTM>YaKCJmymb2jhs{EP<0|tCg}KUhO`ru?|Ddd*WqJ>sPO{ zU)|5EpWPK-JuTpm^aQqYz3Kd-4Wq0#PnUfo8Qv3av*8^zOHly|yx&()nkw)H)%~z;x!F%tm)E6P5%tIU9 zvY(m6_iey-c@~@H9Z26X9XT>KXXE9IG8qk0D>lP*y4Fq9;;`3bUL;>?Z8FaJwLKYq z1juYMB=1Pu2hp2`IX(=mAcw8yP8apmumJJvFJ&T1W)BG z6mohV(Tn>C7N%*w1{5M0>JlZktYg-A5yVEe>cR%L=H)p_6vJvSU+5EbXK%t{)AUJ% z7MeCemk?`cdL^{!S7U72R11wtpiMh=3gnjO^Ci`ObNj|)n6u*Wx>pnVZ>68fvQz<~ zyjvgc>cHyr6s(#Bhj(v*&JHM*A6MZna#E?eHILk{Cbp9|c%COT{Cg36LS3dk!lVq= zZ{DEa9AmvnMK#~%d;8RzC+au%$(zDs7W1lJeC$+~>5~BY1~o-%Q4n&Xa1;d2XEvQ5 zJx^(<^XGrz$5kjt6Z&|8S55I+CT?!|PIa(LfT@;$PuBarxWpj;ex=2JZ|kdaGzF9u zSRU3Z@L8GGgcS&z?tTbZ^@|n+&drs;MfG&e`;`LNIr0O*yya^+6ob|K&CM_YtcBY= zq1)4odPxid<`R;AJMF^oax)Eu9mkQf#r_r7K;=(t(aO zna5B|EmB3}<8X9n4pekpqWxAqrnmPmQhX&2ut8(!X2i(!{vHjp-k<#Yp6o;2E411;N3u#X@hdo6y zq7NMW^i?1mtyUPMKgeDkWMd9am)&%|?54C0Z@b3y@lj83Xtr|JQPoWCPF1*07GqD_ z@yq(Ie9wGZG+H6&Rrd>?;Gxk4nG|!@VTo*O<}*M&(m{j{Z*9chQUtw*vxC%ypl#k1 zUBaH|Fu$e^qpq5SI-+wOaPfz+2b*|M<@`hpyg~ztuG(nTU#5!R*2U?c#ESo_ifbs= zWJAF>m^YsSv#+BI$75%RYx!3k9!2F=;73<))a{=0flPE}!Ks^~+ST~E+odxX+RfYh zzwHmvZ!=n^*ImtgQU`y;UXV2UjEi?uh6VeJLIVVy4dh)a?-}m*{KW-GeL}}w)Z6N>vftWtc4BvB01Z--)ZN8W zVs*FBz_ngR^(P7gc?W(^<5(U>Qma!6jj!s$N0ZySDl<&6v8nE}u7PbSRh>6+S7gr-#BezaQX9wJ{?VFRPy+ZVA{ zt=Wt3%26c{pSF65G8DM2vy48FG|$or-A(Ldg8e6Im;#;Fzng5%z!!3_hOLtv$p zBthVxQWA%N+t{JzY(B+>#!YJrja{{-GdHEmxqDt$$C7?@PoaQ0V}=NNR}cl0<^sqH zZtEgObavlCG&M^`T_EpyUInoxuJvE15$lRxRzLf_Q)raFSzxT8x2N(+%U?jD+*Znt zkus~lf`&rWQl%`8V*U0Q8!7#KfOL2t=u2}&#Os`x<~B;w3yk6p^pWZTIw(Ie;3jsk zqjbRXe6U*oc-QG07CO2npd5RJ&@rP8q&wx61$`6i#ktF zE|0cx&Hj`Z(WHbjM}5Xtd2L!55yZqCE$`jm;n{?YBX21ebZ4?U@a7@@UFi-m_CHhX z@E<*iKxsLSdUxRV+b5n$=+4SW8h-=6P{}8OymD0saP0B)`UpOn zO(5^eW|hu3E>_7AuQWtg@~UQL{6f{BS*C5Xj85bNi7 z6o;wW4?@n%^Q39#-_&c)$Z_g!q1+kHXLR9^IYK&|Pw2ayS*pr>?&_VRCg~Y04j+Im zOWHxC{h;$qDwOX{@wZ2l-Jv+##IdP3Ja1gvgpMTapZffp6?A?#QNPxQ*Di*&G!OEk zXtl9ASt)W1JP}`s0zbs?_b(I1rFh>lj!1Wf5ZglZK6tK@52?A|%J=$hR)#ya7~|&A zG7PtfF~n2`kQSdtNvO0Dkj|aHGa7VGu{x1KC%S}Z&;!+cxz&7lKg}vAic~G+?5oy(^nDg*Ob z0Whi^;PUV#39K2(T z$mr8X1=G&;4X*XS@v{B+Pdx6b9(PKM+*d%xOjpIJ(xZ@bAJ9UG;t3Y7^%EE>Z+B4E z|H*Ww_g9;uP>N8V=R1a2wp@mgKDtAps5-Q%?X_qR=O(h z~R_T{$0$Ac&EtT4a)4Id55AAe3q^i6X0+0gb5 z^V6C9$*JJa5d@dH6zdZQkHK$^QdRzYo&bjlF>5YJJh%9wK>qu+$eJ(j_aY!(S>rr zM!0%Iw(43($to+GsTdip!g;hnId_?R=f!tt$n;AHk*H^0^tAk9Qh=CXT&=G9)?XEr z1`_(GVC8J#(o&S00S6ye(rYqw>YD?fR&HNaa=nR&>z<&qjfxgDZM1m~!awf6CgKmi z2&0uhnfbzQ1wj!JU7FoieHO-ou9}e8-0sZQ_jnVKyL`da(+e}3QllM2I zY!N7WUIkASeHcrL`CXN=EajLt6u<4s?ep*(R)JASs%d_}-;`uT z;TY8V_S@7ZuqXwGLsxZX8h|Z1L3RT(3=hDLTJFqDl z{wD&@MI345-3FfZtJO?m@_vFoH;|XlV~6LJHBDnae(I6sIsSp>^{0S-top5SfN5n}@nKb7K3i102x6p&bo!R~=bvVB{khi{4 zwuB4Kblv<$ZoN&PD+5=t);`}`7j5TFK|GUphhohS()Rbg*tB|W@s>ru1&?OP;qj$Y zgkzS6TX-nn>B4u|T@%%LY>ts*@YgLu8(Q@w!foRKa@WeKOu_5o11+!R^BQbG$>yR^ zX^OY}K>HaZd`4-*O80uE!+F7xGMS=zaJFmQB3w)@EF?-3_dZ)6ZqHqB^VyTs*Jh}%K?$3EZ82ZtQ%|uSm^5XR$bHK_=w_Y5qUu=Jf7vF(j=f$&laS0w64)d41 zt*@4-c52H7PFI>=<*J@9<<{HOvgZRiDA7&?(paW(az*Wj7byhg(VEM!)*JcNUfYxd7G73@>#!C)oo;!u8@LY zUORrw)L%g%gL&WGDRrWP7VVBXc`N10-`i|DQH{KT+tx;&raSW$cx0Y- zY)4u>?m5*e9udoF$P;`;?e}~o3p*vV=8I#%Z?QEi!OEvxp2Yv1AS9odqu)-cSaMd17x`F_!VL zm(<1nEJK(Dyc|cT2l8$V2n4S*=O53r-p-r3Z4H8B`zr`Mz+wpG4N~v)Hh-nxIp+}X zlpd?zxt4d#Gp_!EH5Hwur>n1iG35|1rs?TARbCu$EwJi)uk7Bo9zjt(p>Cew5&?g4 z_{w#y%1d2~o!|1wb5l#wcX^`Duhg~WJS^|?{9lyuEK`2thjG53+UG1Lj8fl&ZHDD5mF90uxW9N3!AUx9x7d%dY z*j4{cB>`8i@kdW!3Wl_ERel5}VY}+TP}Y}M_Mx6nsWXp%d@%2(OF#-whrw(7(+F90 z+wEf5zwt>P8_NoUGdq}X$u;uRb|T^UNE_2<%t>=ZdWm^q<(;%$o_7k3r1_^)FK4L5 zTJ_}uHvjcwq-*u&%4eZp!uYdmdJ@iJZ_D#g@m$?~WcIbn(#iPBtY|09;TH4FOwA-- zr$&Zd5C#=427%M!T65Nw1cL}-F_GA4f^aGZ|B%x;UI=C1mrtR?#o--)vQ<1u@E@&= z%_PO5d7V=0)SI7A6A#RlqOc>v!|ROHJH+iM8Erms#TU_{;FGyBKVmWLlqJ!_8=R4w zV?KSf;uB;>y36|*8LPLtvJ7|4P#mluwsA&omifoG@ump6g`H^Cg)6Cl+8%CPwaNkc znBc50xI`g{imvTmSQLCw5!sM4?MTilIz&f}I>87xfxR3dI>ILWcF4JVpqyqTLVXFy z)MUQ%weU?P>=;^bPo!dpkZ)u%FJ3BVW9+YPA0(KRCDpH;pqZL(zv~3?|IHuHv*)PimVqUO7_PkdV zFAN}0Y!79D(-ELf{Z1aqj0`w!oXkku5&}ZO9~tG@tPtYB?lJFuN~7KzZwl&dk=Oce zqS@X%(-cZd=1{AA5aohvlh?@E1;t|$XP3Yn#qg=Q{&bAOs(Ftk=uef7O1Z;-=fhj= z^?a(xA@Hv^i|TB^q){8;DWm4;+#;$W2yXdaPEXQ%;P#Bh5w708M8y09Hp&k&etBj8 zP11t%F1ya^E+WYputk2XI`8W`*V=V%xz4Syndzb$rJkax#jxyK7ISr z#rn3A+k*0gsU^es^sRQY@x}T!o!dxTKA++rq&A*CipNMN&JpYB4t*lL5B$!&BuDkTx&2JZWM?W!$NN{zo#uF=GkK2%B2pWg28bts7CYkCVqC^t>9E=)I{SKYJ<18H=2WBZ2A4Z7-%3ra=!n_g> z3-ijM!@>l0U>q6PKYl3^6|sshh`tvKKqLB{!wEK17mv4-5NswulPoL3*aW1T@(*}& z{`w8&EnP3vLSaTS7@bGL9FI!Z-+##-)l2bFy=0AQY0gsD;-%L21^Qz~_j^a;gv?W8 zI}*{U$5>;2Gl6fijDvV`Cv-=7XNBv3ZAUzp7R)ZkDlWvF+H5nn*01o?yA+ z7)3W+zJKNn0+=cOx~rmmX5VXK&S1omQx$QnGW09;`RITlHSc&r9oAyDhmF4kI;A1} zqExTq=U?@`-{|it@~pp?pYXjbPV#2$)d}BI71j6DRm<;5pwAYc)BJ`C-m;7JaGp$= zQ6!i5u9Gum(O$_i*~{ICr)Hz<$nTiHhQcz-+9t(1Pd4IKrY%#{dO$y81wU;kc5B3E zzGJj`=l$xO?G#x&?oQ%I)0b$o4GK&0uI?sWo08K%)3t3}3k`mR`~D30@!ln^;fML$ z4T8eX#iz?;Bg4x(B{#|JzI5v`4)X^7#HhT+K#)gG=1Yxm)SN%eYPqoANac-0OweDD_vuDn2^|Uzxav8fSDABXD}7Giv7*m8fk$x` zvKjmZ$^_h7w;z1%F)I^j{zh5~p1U@Z-H-0Rujq(2u{7r*s}=5R5IZTPK{Ie_O5hx< z5v%qS?CpCZ9)arwCbRuXqe!$pOv`v z`u}07mP~&VsM>+C%%7%`LdqC#8$P6DA;F%{Af68amx)sI^f(D?7F1H=g>k*!G}w#N|IsNZ+a3M%1v? zR@5*>LR}RLCuS%q4s=Kp)7fLBD>2kIcx-)2IvbwOeQY^seO3Z~c*FwAiV7uRFk~SZ zo1rb^Gh@gLO7m*nk$!mn3U@0HhZzQb_X;UJ0I|+x1Wr~;7 zU=JucI+C=wJU|5S#2-RPfd$VmVOF7pb0LFgtwe zQ{x*xYzI5;Mqu8?RS}hgO2}COFgV?3eyUIR+3IKy{OiqMcV{z1Xw+WC$2BkO#@Qq| zc`~XPb0_;`QJbkZ5U|);duuMoYS?WfA-kU4{f-IdZ?(cE=O$#CwK}ILty!R0yQk-cCjIh+4h~Qow17aQM zf1lL>VRDE8WI?rp{`xo-5L81gagLAGBSQU~q;F#G_0~huz2WH~&@P2Q9kA}x2n6sd zLA7WYlmg&w!Y`;_!D+E)u2zR1w2Ok1cgb6#qTXVTyj;TfKujfM&>1`0IKrj8Cm;y> z)rC7f{2MN;6{P4rM^t6-$%0t7H%{B7N^|?eV^orkQkW)+EC^&kDxmFenh<@ z>R1$zU_^cw62Zv9VSb&S1Aha9jGCwXUb?%2X~;yM?+Y&I>k^CayI-@Jo}8Vyoz`w+KgODZ@k7gsI%a$VLkVl2aauH zoB0afl&YRU3-~lq81=OIC5}pZa^<`FeDPN1`P52LG9xg$h`PcVxC`lT@Yhe+a%Y=#{3q+Af_xPeV@I zB8-|&Xn~+VH%CD9P8Yk@aP{s^dG}n7nO2J_F9{5n=`|!rSPwbX-C%y0g{$M8p(BFl_U#@KZt2NCJnyiIrjpDC!WfaTRghJh7>u{CeWytxc zQgT;kqskDFjViO}WmYqrV zyF^)$^~#+jz0#A!it-uzl52(Ug`zg6H;m_9#q42ee0{c=)vOb>bAEIu4nRcps?tHQ znswqx-3f~}#^|5zyO!UhRr(lz-lx^)Vqc`rC+19nEoR@6AVH!@1bxSzO$;J9zXo+o zvE;E9J(k!E!NR`hCpMZq-^Msxt0nra-31Sc*J}BHU+Rn##7qNDJT&0h2SvlW1>L}N zmm*%UnwNTl!>Y;!2tRa{yA!GeJ&c%;Qv}Ffw^zKt=1gIxY4Ouc4hHNtnU^DaU-+EN z17S3*ZKTCZ%D&=GsU>kj7<au57+XEZ=aIFVdht&avC zGN{VWV?EwLCHryG$8jDMt^YmP6cG1?uB-UDeG>M274WLHe)p=wIGx}^ZL zKML&QE@Qkkf3-(4BIxTkTxPJ9p{TbysL@DV#WQ0=xyS13h~U`1qhu_q;^K%hO6owZ z@byYDKH%yO3KG1#XM#wG2K;`fHRNV!yPn4u&L-gp^4JONMR30a=L%&m$Y=eNu%kVk zFpHEhlZdOLCEZBX*JD;^LVlxb2{~WBUZ_OcuJCh^L3PmJYZDTL;u|R!DFPV5UMK6b z*Gk3HTFmSM!T>@#U;;3@;PVTK4Td)SfZBLuI~GRe-9o6!&iO)ML8O)Db$<~YsxM0U z0)k@x8F{>%iu8V?_KYs(pCIi;DW3?NeOJrpJF@!LKJ7dgXtq@fhMRu2JS((-|QrWCApOj}rbqL-R zAYKu1bBd}&s^c3n5$~xLG{{TLb3UA8VWSGLO2LD^ltxcVEo^zU$G9LJnINah08>)s zs<<5-BVGv6uHH=Ke>F2&XhQgfgF~;w8M@tdaN3o%vqr_9isuJWAW$2q?v9bJp29H5 z9<#>WCuG^;cdc^8>u#0u@)ZZMxx>NaK-*dO%AHcE1Si&nKhp<=R}=@J;G?KhP|OSZ z<3hUfY-#+DG$OlH;q$U}L-$G+m=nIj?uQ6V$#@!dMWg~v)I*sSW z%M_9qhlM<}7U=~pKJAxPyYuwj$b;F$s+4gY@SV{Z5@RtKVkC_1T#5Mg}56C=|L(69?6aRyjB4Zej^DsbaDb0A)h|OT~ zv8nAp;pf-s>Mf#CZQ!)%tjkx$=l;pFjF z-uXl0RqNU;e*PXl+g2Do3V(w2aG=kh}Wt_h)n0PZnh9tYg5 zJCXrc5cqe1OMsv4uP|Ejlq8dkDg`W+JIkUTSE+$_+AISn7%!$~2&U$;1BpjxQOKV= zS>%J0BkkpSnp{ryR-@!(xE!BCSYo=3jb9P%OnUK|t|qzzCT29;HVt6g7P2ry}5JHs0b} z?Vc|ESM%`_k}DSID_IM(q*GiAGvTMv!blcJrN}_QS4SB= zr?R{N23H9gfZtz^nzD{RZ^COHAMc&$*nc`bQD9^`ckYs$u+iC!VBLHUUfK==-w(3)!SsCirH`G;J<{w#wvdY zU&>b=V=^FEDRgH5oMS@nGt7fHEC#(77t@@KSE8VpdUE^2rwdGdSwuFs`s1hPg z8@IR_4#*TKO+ZalLyN ze;GA)Z$uj6So`L^s_VPxdZTom8c;Dg1~jsRU-$)sxfXj50w=-AjH3!E#znjoJCG%h zPY5=HI%B^Asf=%)j;!%N8(-7p|9E__-uLguck}1}(fBUhXOC}@j(DNR*E4he=?Y{1 zgE>6%L4_w!9^&~4q69@lC%JlNrsLBw z$u+iNlIx7j8^7Ef#VT)!AR+%|$ui8|DbLSnxSg=rXE^Vs#_i7C9@lAm@y`0=26)UU z$Ncc`xr&X(_)hsbfWdE~*0FfdMWW$>e1-BB9S5!0V^01I$Y}m_1u7gkM+}N#hiXs| zk%C%uPJ7JD&?no}z7_qdf)=rQAfAMdEI)Xu>z>n<_+cEH&XR_tRgBc-%~M5#I8ciS z{$3(ITJDKT{E$1+)w$g~^_etff!Y?iLw2OQ{Q#w@c^=QCSZ8HUcD%HEdNATkGOTSQr>$R~xXx+5J|A^<_ym~G~|h4L|}!R>DI zOsRzHZTW#qas0R5ETxWE>FV6ar1zW;-x$Tz;3bhkd>W<_S)BV1r;1h#ae(n%y)Q9JEwZn2&l zMUtS!7Z4U>B`J5wFF9>=2Gc(RF9ZD~wa}=oYdlh(oS(6aC&bp)Pui$=I?IzYD0k|n zFHWo5);(iw#;!8xz z3H`Y!0}m>ak5W;d(4VDs+f;uFGIsM0{n76v^rxQ>@w^Z5scW$}t!``gjMXG?%`IE1 zI@CR7ciB?aqodT7bSYh5(Wkm?IYuq{Lt?}m2&xs6V2?8heK<1YqP5~N;0w-#>JQ8E z_1X(_;hM9EIpc^O$%)%v6k&CaRJo8ys8*$Ws8kf}pNq)-^;)jYUVUZy#W36|$fkg^ zl6{}9Du|3;zp%HDY(QB03~|@`k0VC&%!d-~ZOn8LQAXb?`8rZo1ZN^LEn|=`CBhY5 zM{JyAZw<~L=p=d=w*sf591YcFVZ#=vL7TAUCB*I0btY-A)99q;GlPy#kx;^lDX6?d2B1+|EpB&pYVOL zA%bke_&wSNTc}_$VS~w5N~~_Rg_wI^JQy`U{>CY+(B*Uxl1OhjP7_eLAnMOJOYbjf|gavOEkWn+b&Q3&Kn;t6t z^>~{F}EgyD<&NI+cSbBsJ26$d*;&TA?+~%vDDl= zR|opveU+NH7s>~l<4?NU`-&E-AmRjZDt*=VKQH2Bkz~xWpv*qkcNWnzYP!&Kl0**4 zgoQu*!Jl6NdQmbS4;bjN2q4>{_!DdppoTK1ohbcHDd_~@Zv2(NJCLPBT9eZwX^2e_ z$uyZCTNV)H8lxTdA$NoPD*1XSbAWEbPZK4tiaR}=46_+EKR@*gz#?ZIu~M@ne)R-@ zM0Q^5N!cS!KSfdViiXA!d38r`&yWprY0_2>yQ z8iJa#!@4RuK)YCa)$rEu~R)R2{4USz>n{j zEZ|x!lo^`@aZWrdxzt%nrs}!tFr|$hlDq~HBX7WQ=Z2t~>;Xo?y|_lUI96U$zkpQBM_wiX6gDh4+=MRn*|W$~w{ zlS~1>kV(w&42GCYoQp|vz*TuN?LvL%hGics+&NP^Z-zZ*ZAEV+98!~~ekBAkYW7DL zCwJXrO?yoqgH>nsh07W|GQEW4l0^@C zhLoiPCRvZ_MvQ4o+Eu5(8%5e#z~r-h|d>%7N3ezTi5g%uVn*ib>OWWBv&0PJ^Tok4dW14l zOS@I@tD-E1AKRcdv${ZOgTvq76SUAn$@GOEtCT1v%DDwA{y)MDV0_V2?RRqcyo1$* z)yG2cWq}+ZVcZ~4lOamZx!r{*^@Tgf{(CQtz;etLS~HbKur#SwOLC<-LE1D{21;uj zYEPUX@5wGgisFhBm@#wvMp@cg(>sFRis(EnF@2N2JQ*{ox5ZoPWEoM&IqIN-)&vEW zl3Jhf!c_tQ$=F_b16T4z>4$%U?zP&TH+7R5?y}B1Sy|ub%R~b%txsKL-ihuM2^}YCwYXK*BA; zHaS(rXw!tP9l`I-Gj&A;RzfAjDt^0F*?{SaA5kYzy58ZR;R(Ga*l2!0FIQFyC>-9< z62(V{LJBhMe9G2_qwsiCZ))*_jN46bTk*_O42W6Gwbytoi}lC+>{JsCbyCdcWC^gZ znpU;PEr7W+JA5NN59~z3sw%;*FcC==ZWh-@y8J)fy$N_!Mb) zNI->Zn?V#MVUhlRzf<@265=fH|NWlld;a}A$-TGg)OPCBsZ*y;okD{l-PVC!%XtxX z&uR{Q*jRn1z6KlBGRmO=q%Kh9b`=Jb`WKC%e7sZLbrAcA%mj_utL8g(V=yD!i`Nq0 z8&+FR`FCyEq4M{0)x>p#P^AB_#9JsQPX7V#I>TW0TB~W6QZ_F6374jDR8K1xN|QAS zP744pV$m)HDPnT@XKd=QnIug3S|5{KV$Q_!A)wBEKqmJmVK(2z$Sri0{}C+b+tB@b zJ`wvQ^`yAEW&p=)PZ^YU(8h;N{dtd--0%|2Z!OW)Ptv0Hux z9&0K3C=i1IU`IwD*VgJh@E`xACUvf6HXMRvNKKgjz-+?m?$c>f!;*njP}Hgt?(o&C z*8#65*!Js#)hxoc5{_^KbYX@tmEATsC`aFb{M1{wvX3yG@+(}L36Uz@Dv0J4C1 z*I5|QBeevIfzQ=yZr?^I`uR>m(HyB8@EWD)@iI{2Mkl5e4&+IVa=-6BY&gc_3*|%e zP(c3y)uiN>^AdEq?9I5FtvJ~Im5LuMRTjws=4OuIE}&AmqdCY) zCGR^%@NbOBj3zgN8yRw96qNP1EB7qpIz{6|s#y3ArHbHPj63&X-pMG9YC*+9DJnf0 z(u@$~l#gnMrmD3Qbo&d|DI^b#QSV-B2c#0>T=lR80Srk&-gl;ihAM9)-BL)OA(y%} z5-0#?AE#p_doSA8Y}Z)qnPc#RlGHv!Ayqkn!h>{*0iF!uXg zMj`Khbq|eM#k2n>lt!6?>7|Vl6r|t?BpvZ?phm;c0ppHKVfxpzWLZA`ZF)*hs&h2` zdzcW~rPulcTZ4XA70U{!i)N7VU~`{tH$e6G!AL+{QFA)YvU3sorTiVyz+Y^o@6;~+ zrA&_=0X}h`Ias;WB98t`Vcf@y!F)e~D{er=xlle-sq6E~HGIA;_2I>Bosb`R1RxgI zaheJ!2l%2TR{>QURSRl@@dk()7Q~lWFxh^F39()vunnLlZcC6nuDBKuT&oDWH>yVg zA(-JB=0dyHQ3Q6-eyhHnP+!5{c4Yt4R-OINKnmzd?>po(Z+qY2s~-d-$L4nkE=Jk9 zSAJ{fr{=t@8~k!?Za<*h4ZSS}pthZwN=Xoo?tL^-({(Xh%dt2!z{c`#ntn??h zOMffV(=$8!w{Kkf$o#i(59b_ICT1r1YbtmgAh6gIInGW`u@9 z14@h8sSSmx@bvfz=dDI0)ciS6n2&rhYznjAgv{bF5-q!(vD0ipj#CN!hrT|~D6R=t z4BTJfx*1c&4A-o>alC3I&6+U^GYc9zLuKEFnS+&$nK?ZEnYcwuRt=$iPF7PdMb~)e z%|gXy;$p|A!I*HLR_AWTpSWuI!6`FzWBUosReKxiZPhDA_}B`a64ddKS-yqj=J6MQ z;_;V!s=8g1OrhY_>UoBvVg=BEOJJ$@E=xINH!dN| zAnn#i^z#tSVJ+bHwYljKFQLu7wauNd4<`Kiut+*oJYusa=eq*eqxHC^32$y!Nh2<3 z#^1Q_jhqiF>Un0R<}VcEy5lG!Kc2=1E zBkZa;PJLq(jJIq8KTwnjlB*GGzCopd>#9z9RB+qL7cusJGZOX zF!u#7!AHRx3Blv=w1zat-Zis7>vYQo&tmkvvmPd^r2ETIlB_`>!^m;p z$?3F8YzU>h{r9x7dw==F@5p-Q&=)y~sC?>JRK+dZGp*{LmxYCh(kHhtx%})IOCeKU z!UQ!ql1LfTotu>IswosQ>5Pc*(hQ6zvED}t9G8UW+zD*lsug0)wcT!GaOVqD76U2y zKsa{{^OFzc-<(i>md)a67J<#01+yIG*yS8^o#7jUb>o~VY8gkY>{SS|a3*{j)Gwug znF7HR1}@kTs6MOA>@XWUA5JCVdbrJ?*VnQ(PLb(26&Yt7MnQb;&NnHExS1XGg_GY<{Oy41fa(7K1a;a9?`_H&pPg#8vc7 zNzOM_w_fZ|nu%|RTrEET?QD;KB#%;Lhf?HzvhWA^P=qYN_yRGHhILJZfekL|16)_N zsn;Hb!(DT93qBNJuwiup!EpCsm(W_ARib}T-03Fm#jd=^CvRYRzqQKC@c8Dx4c> zTX5NeQ%anD&AIui9;cHznu8CLyx$%>z33?LIu?KB^{(J_P|Vor7(j{FUA8rNPv0^V81IRseZrf^19IA zm;z@LSu*0iMH$O#-|<#i?8NP!!*$*A9*W^|><`@?HQPXk6H?VRQG zO1?N?$Gw~AhH-I6Sk|0DB5)OMY|@6N0B-PY7U{E zj6g+^{pDMUj?fJ;kR^ni+W}-!IUH={$3UJ!$Z-}Vt`P_giizyZ$PqEwu>G$}``xsb ziD^BC)qmdl69pI=aI+UiYLy3?6rNl3=RJ^&qf$Ii1ZsqLlcW}pd0jI4XjhN=wxrf( zWBNW$29HnBi1PT(z}<+ON^(wHumze`2#=qKlK2wUk=vs89vtJ3J#R?aAmb`z14c2B zk`*SC%!(l9hcxUgLB6`U4g2e<5SGaqVuWQdg4_0E&8wB|0a3~KC*}FGy1mD>u;@dv z96moaW;rbL8)&MT4ww8{g)Oi_^Y<*Sl=~P_(}ow zGOcRO1rz}aGl{@aG}`DB+di^@oIoWm@g18#&K!A=$wN#w+e$vqN*?-H=FT1uMQ47Q z%7TCVyEA5!T+ja-t^+dEtOp3o6{~vZbEh_~E1cr$RcPQZ8-E#wZ}9#z&{B~jL^EZ{ z5AZL>aJYy9iXk6R=EHMu9@-Lcu04M``@4P9F zim9O)=%g1qlY3UDLBfJe3N=y{q<~gcg#AzKMWI}H!mCIsFmIdfNq{N8a~`&K;U?X4 zdS=N^+=zg;!gY7T%;j>H}RU7d*b{*@l1Y6u18}7;sI<9OoO^hDibYQ@sX)?0rie zX-FUej=>U;jDXeo3{C93W)y0Pxh!TrnuR%b-ZYON7Adu17-oY-VfLCm4R;?jp={iC zkPjgh&h5VtK8Of^6+jPw`9ju$d#OTz5|EIvhTC`)i<)VnXW1)X0%v^g%IyRG|4*!1 zBK=GGhyu2@>{hQ8QqfS+RAQb>qb0e>-SAJCg1S<%8On^@myF{41_c3B;9ZaJBp_s( zJCKyl8o;I#Yh;dz2{cbKZ_6mChW%Hk^2QSLru0+@Ughh#kcF@h33N3MsiJyebsh@G zcBLUJnqsI#U*;=gh9ibmfC@BJ1KtJqTPz27rZ64r8zvEuvGNDcw|!#CexF{%#vL>k z?r=a&TCi|;cmc9M9hA4`h3EB;l+wD>sQ)$*vfibzgiG@HM|E>A45Xx?G_$5#raYH) z%jVNxngIm3T}7~j?M6#>7~&PA6;v-kQ*%mSeUGEr<(V*2(hXgu8``SIp(1YcPTkO? z^b+5*x}g|9hymBpxCP!L_|3rx0e+#Y6v8QR4FjS0qRXi6NN5k{*!Elfo8iW~3R>ZE z2bOj8B%6$TBZ6-uGh7cVo_)lx4R-F~Ua zEFTfFe)b+b#=YQGy=?b_Zu1@i^g))?No@Cmn?3&YMjRkdF~V3aV79;(3*|EQ{Ror| zltAtz!O*0N`)`n?O6p2{n84tZC+_HHkSL0y@6r+rd&bkmMW3XMA-c@E_ZWmntB+CWX%()m{+ttJQ_{MVwFUK%%oPs){2e3SWtr?s{ z7EWWi9Pya)l03fa(n@^S;C7ATWDs&?3gtJquOu~cLx`_9qr`Wn$ES=_H8p-iYJ`G% z-*%`j>VNL!PI$+Ycw;GxJQGC|lKeg*YRBzJ{M+_sz`%@76x+3TBvx(Uo^0>!PsF$P zPZ#R;evdt=|Ej&6{y(?(0u=r4+smsOd|OW?+Kkgj#|&bQU_Hk5Ku*FyZb@>b)Fg8h zyHb`Ur^)mFWR7N6uglV0y)H?C`**`S@Wy>~Y=EKK7%zjpHiONS7l0p`~*CNsg7aN_Af^FNPyb1KH!Pasp& zakpyhseRIVbFqHfi@*`l`3O$u-oXg$(SVED;qPt!cUbLI_I3M5H2{@~?qQoSm1C2( zSegslZ*yLn+wAYoxh%PgUba#~Q`tLP6|9K=`#Bee4kfOzJ;uy zPhlvhR=vPuHcq%i!hjt ze{nq&>3?|PIcnt0NnQYJuvfJWW~+J(Q?NVd#0BF1z;|N%!wOda%Kg=)8uuHrfnW8Y z$?I_%Hl*>x-NWXKoUq-#(O?)=kVC_`Tx)bDY7SpQyA##P026J?1h6TzsD3A`g#*g; z_XA(4!i_+Qa)QDvWELsfu`swqyt;(?wNzpy$09uVXnmbh_BfCiS~jt<&4B+RT21Z; zI|z^Gg8Wy%CPX1E>!GfSkec8rj=r?~@IJg2VG9P634CZ|eFc+52mn=ChB-KZcSz8& z@-x;R&_O|My;m(>V2L85q}Q_Omm z2SX&Ien%1Vu=Tzdcc^Y2g><^%7 z#TM4c_c{NC->ul^83u0Oc4W@Emb`@t7x78&yUn64myEeG*(7Rcz(F`S1z7LH4I!OcO=l;IViBJ03hj5IBy6hG0Q(Hoi#H8ypaC)fAsJ z+weL2A>8dRhG6SF0k4<%M()A&j-Z1WN$X$GLn-#-xOdM(_PQsR!}t?~@A0L1d~?~8 zdrpk@WQp&0(u=4_q!*t~lV0@mkvsfuJY2N{?OyCBy{Oe^RPg*lH!hY!bvLe!cB2u~ zjicIiV?-YRf3QC{50L)6V+a>sXtd8c2e0VUxp+kT^h$h1`?O|}-KQ5J-0IUYcx9hr z0Q{0f5jVae31;<18jj~&Suf}P2!lna6e9S##5`lS+pGkoeW_Lf?_f3EM0K#M;_FbC z0&gYOkG)3JwJQ%IR2sR`F4yah&{wexnB_M(O_b7ZJu3QKapn?7V59DAM_}flV+jmG zYJ|WFku})F8GPgpAC3ns$ZP`Z`=1fmP$^Us*qSJTjfo+!+;#-!8d3v5ROA0WesO(& zp|631BlOiDub{6~Jfie<6b4sO`bw|0>1!v#E&AGxSJIbuJKUkj8c$!x_UBDC?fP@= zz+?Lp%f?85&PJK&&nx)I9bSgVf8U>%NumFL>CcDzYW`2tMa?h9;1&I8;1TW5Gw~Je z&xu~UKaWSa)t~+G`d{`Zm)zKu)ZG8^--|+vr>}5NHn{&@=D_^3sZT_{Jn|u_s)Mcf8+eu zNcdy2=kJ#G^Ecu#hnqzoa{k67jyKNVn8fkM`Fo2sf4|T9yH$PGoBfw}7tFytzTqYx z=BZ2YVBfXM{Cz9FqJ6h)p)?#5!(@cJ{YB}Vz%R%9Sl^)C$1vYmb{o+Li7v<-lYz=R zU5ow`yWvo5w0-eM*EfPEJ(t_|nA?hk|~KyqkR@AT&?U>=r55KAf09Rg5z zLTc~_Jh3Un-8^8cRlTKgu?AKQPxf(6wgGz&ukczHS5X_SG~5Xdq3+n=Ohovl zjE2X;l3_o({qsq)xI5+jDq9B*bq`mXHzG?w)fF@(4T6-hU46a)5Gdkq1JeMyIC*xL z5u1Z&@M8^(Dnv9#aGC^bwNt%u($*0NX1H#44iDn4-qhIjwznb8$obw?0&^Z#@ zBQCb5#CD0q9v2tuLTowC*;j3e0Hhq#{9ea2|9E5)ZGLYSaWLBaK5<3#mDp(W`^Clf zm)L0YQ{!R>NNlv>1LI;(kl1L$2gSt>me^>+PqbrQHEq~6L$?i?8r;kMvmBUa?Ex=X znd++fm}~^Qo!*V9P&pYV!I0@@r`r8_7|)(9IJ^|X<$|&6Tb!mz7J7ORDfhdoNKZF^ z4y-l1*c9z&K_;l6K|128VWoobtZ)jk-t9n%T;T5P#_oO4>%%eV#QL1#miHmDbtfK2Cr_#qJrl z5Bkv64N0`u3o92wWhjdc9*43UL-~&w%Cc}k22B;<7L{oZSIx5sg|?E`I|dY!yyD;w z9P|FX{eR{eGTNMi(Y^SZ(-FL*V`gv-mDN~?+sq*Cn-2R=^Mj$}2eA3;b6y-naDoq= z7dIq27c>-|7tazTD9RJ$GnOexK$I)UXDnNgfGA&(&sfGF0a4B%pI{BBt>?TL-XP&o z<{+Q3+(81O>_I+b`GW*R8H9Yc;}8-S&mtr!o<~Sflu5{EESHdgD4USaSUw>EQAQ!3 zv7ABzqO3wbV|j%HM45$r#&Qb@h_Va$jO7;+5W_G&1)E^6gJZmJa|~)%$uYj@h-19| zmF5^P?F7XQ=#XDLPJU4Uh5>quXBe8~I^Y;mtppk8!ZPGLhG)ok4AYSB7_K4TF>FJ= zWBJBZa0|8*jANq3IC>RSk8%yKV4YmTI=-bP?om1agH76hz=bC!X-Fm+(G81Wm#)2S zJvikLaaII1dbVMXC=1>(H&#hrop%om5OMq+1N*|iH;04oLH~P<&?1K(;CmqN8Zn&A z`W+wso{yuFYq(*noDdRUazk*1wojz`FpcA1!ggZP~PnG2Csc5LqtM18~9bcVy8(&`!C|?m^beXwy5evTySkVd$IE7sAff7 zEd0zGxr2{G(EP6(ocoa+7k0;YZ=6EVyd;C08?~D&`T+qI@B?-p3VUij3k$klb~?NV zvA&?+7vE;=ng3-5*A_kQG7`3icMw)wwd9@fnZTdL%9)UY5e|bxf8NzNSB!l6$A{N$ zE58Jh2|CfC7o6Pig8cdYT|{@^vwx2VrT$1Z!*n)HfQ-$3nGSvv!N~3jd>OuXQQS%d z2;F-3q#)a`aGyH_ZTk6ILJaw{u3yQ5D)*st9{p)=+=har^XC5kZGo)QAT4_&m#BW-Ex|cq)%KEE7Wg(Vjou#4X{8KVY`LUVUxlcfP zTN(A#Ad`-hj6MJcbfs?+sJ*bKVn*NMiPoFCMxC$0(uAX1O%CEnv9l4e`~=`T8gTt| z$!k%97o)R(2~iRG;$&YGnkf75*?AoC__eN)5GOmDIjJ9JZnMUjvx|=aq=! z4<-IaLw%MbdFAhwHohboT}UW^@)Dw0sg)XJ)L$i|WOR|n z)PA_XY;gLljA}JhAD2LF0`aa%847&<1NaO$rz4i1$ZnbjeEVA|QNjD$n*7aACaTv2 z@B+m06M(rI@FfknjDX>6SJh~?n8x8CrRxNbHnNv4?=XYGw421~I;q+WUboOTeOKaRN2Wf;vS*9Zr@?{cVcW`*Z>6f+#jEL4%BcONzS``Z}~eSwOx?(jeRM z1cFjKOD^Al90Bsp4z~Vn3uK)J8MIY$nFRfwuJi_hdJM5_+Atc=EMsBzsTqxDX^xKe>S+k!enL%n&eKuwz@#SIsb6hyK0 z-84vjy?|uu8g&zpy@?t`;fdDwJxf3)Pe*@n7h3%Y90i;Wh~+2pdRqgQ%o4!X-`O3v z7CNd1=hKKK4j$7`19XXPbEQ(t1myRKVn*{d$cvu~4tjx~%QRHE#zETM zlF=msl51s@r9l?xj7lN1pySREkO3A*Zw)f@IVo!inXXV;WK}%MtaV zp=9y5Wu~Xoa_l^}7lwe2s_#mm>Pv+H9I+>aRl{~U2y!S~n##LSAbh8ket)$2k!PRB!+na}s;=Pmi&aDtXxU zix33(f3x3B`<+GE;HBDE4leS==_Shh6;Re5)_3{-_FLrR+sQ*(2k2fS5W8>UDBZ-mmFg=4Ihlr^11qflA|#5-`*6gw*e@h>hnr| zXa3UuSPRra$=*fkJtkQVzYzzG{Lb}j5QD?f|@C+h?BMe=+XN)5$mB z%u`SNJ7#}FFCLOyu%E&@pgxX*rF`)Q2iw`iE^%?pNXK7-HAsQj(R3=qZLVmS8zD&; z43YHSxv37<19j~)h{W@BHoC93nBDYAKw=}I3E1vY_V$RFRPEt$Q>V);N=UMyB;I!( zJwi%R2fAEX(fPobo1?_Q_X7C1Nsp0>R-{IFCZrSWx;nD>UU26gm`qs zE#9p5`t})#V|4ab`_YSu(fxQJ!1uk8&$Lx)G5Xo(+iJuP;rocidcdHtA}`00cQ;Z#cCQ-yUl*c?8g_$PT?@QPF3#4VD&pc zih^CoLi|}x7L3+nP6n7JW0qF3A>1dQ;^RWabpf@6k6Y>1_-_UG#^5vY?0#dzTt>i2y?Ro;1-j*70T z-=kPE`wFwsL7EW+%MojjA8ijO69djSKVmz>Q2Bs?mIY@+vOx!~$FX0#Ak*QxA6K-a zk>{dm#&idc5qfgI$C2PbLE5JU)nVLbYXrt*v!S8R*iQ2J&QV>E5l>)?QA@l5oJCKT zmHUT%Q0Fktc7P7H@!hf>Os4W@#MR>QUHwUbz)%B)QVf9Ey}>6CF73D5b6B0I8-v;| zIXuAO!N~w*e0@wIGh+(rUXlRkG6&S=t8_U9$CeXqLGT=whV!u)>)4abwA!I(SJ>;R zM8wlLHJp!%=EqgEt@qDidtBS;FpzLKbRZ4`OB`_k z63n;n;K028HoSpSbvbM_VQTPp1J5$$s(H^l9ij7?(~jeR4r3d5nxo=$cfxjcHS0Aj zASM!W81|?-i&^{cW-Ht|@{r3fV~yXuZ3z{7bS~e-l!_hYMwJ4t1J3e+R2Nlc@mHXD z?)}n>WAG+$B^$BUllay1uel-8r2c4(IN0`t@_bQegBH#FH6yn+O#i#2>Msg*={GiN}UIcn?zprn2icvFm>KGzq*YJrgNl=~9%Q;SLm~XA`4tUrjoz=l0j6 zPr(z>HR(L}AukLe#C6Ef9jHm4g{P$Qzm-0hh4ewrI@6l;RTj`nJd**np&I|xrQ4~Q zu1R0PSnpfujCH{L-CLIoLmb;a4!n#`f;eIEN3$A8r0(1$0zbb6o*7{4{1gw=Y?uWA zm3w7`FzX_97(E39dL1(WIdXGRTVA^&uryb!Kg7dPuhtG{Q<h$Bs!yGch8=&h^~#^#(bY3l3rmv8?wm_-uR7F zam0b@ygmB|fV^ErxD_>^wtoUX?sq1?)E|Qf*Ec3S$y4t zS6>~E%!RR8g~QtJt_WYt(IO?o%Q3`3I8W`I^=x?t3u3?X(-%qOaC0z+c2sItQqHK{=O?BoS3i=LQiuU)(vcdx9%>45ZN*Xtjk4s0+4ed{Ef%7*g- z93sN{FkJ3b?;KzU_Y0@)6erDkcZ1haHWfK(+k#CO|JaGG>iCPm%*@%DM(*qs?Tgoe5D&x}4#a?$5B_jIgH;Ht zf)zwsSmmG!0OP0z7$0$911+%QSyTU7VH~3$6GkHp<$V1vjOI-JE)3{o{Vt5DpMDpH z)lI((BRjfW@(~92gMJsrw@beZL;PI73#0r{zY7E1sNaRLzK(Y^fn1l(JH_rwx2qmY zY3_^SY$)0)jwZwE(==&ui}a0`54*)D;z(37hAi3D}E(jDrJcBqBT z35D!Xthd6jCNT0~zt)`zQ^3 zB(mTQCNbm4r@i{K_$AhFw*Q})N#+fytl#OLADLtt^&|rWS*#I8T*gTz@BC*t$>404 zucC!z54>8Oj-CK(uNK36WEJYgXtrUX`sZ{k%X`CYwuSYLjrJbyD8*^_;(CKjzvrbAk%KdGy=u3;iBiBIi*U#9b~@-Q zn~JryUK?QNf5W5H#(WvMyZGjGO4716K9j{~cBB1Y6h4E?6(Xk{Bq#fNZ z=e|0YWQ5p#_r&MidWw`wfbMFnZdI{I}(JQY~%#4nc$V-V(?r)m8b9imXsK*e2@tVOWcEG^v|D6m08n;6~?vz#*@3% z{cmUnc@ttveBVWzN>KrNtM#i<)APDez-l5(O zqG+gEesjn8c=fL~KGvF?YO>J~>aowSppYOg-4^QaKW>xzZH{W!nA8SY#QYmVe2g zvQ~m_Kt6w((=mU#_fp|c+n$W)Pj@Y&tXl;kxDV{B&S1#j!Y!52VgRr6IZE0s?G=WFw7@lF0ZG?;L3nc8$}t5APOq{PDI3I_fmLZbX4~ z>h~xRre=wP4s3M!%9>fBc~Gmw+PjT?=aWVGv@+qN)RHBO=igXr12!6yL zL2Ui{;ijpW`aSdjd%%?XdDk*?N0p5EDt4xo={5jG@vXhTq+v>pkQlhgx!(whombv5 zi4B1ROh^PP9+weU2O^MTG^xnhUT{M!CQzE`od6~f*>^(0kACJ^EK!TZYE1| zc9jo`rB89t7@m+qM>ILRa9pk=bvG^*X$hg*cI%Hfi^k|ri$O&Ap=bzv4c;bG+vHa_^or0dvZ;7BM zj(=@Lx!_-g%ZZ*S|5|(BzvN$6pxSZ#D+GA(uO%ofmVYJF5fOw2&{LFiO$BU}p6Y>A z;av9%=X#QnB&$D-?T~Y6gm8RLDAk&(Rc`z2lFC|&#L>xO*Qgkr4{q8qz_B3(gH%;X z3htnz51h>m=Sok_h~{+TpOBMp@Y9GBF4qp@x_rzIUIN(uziz9;>Ij{>_j@oy*xw3?}0xY1xMn=H$N(7ARh!=ERwjF2f^IPN)(Z|3v)?=Q>1C`tMb4@ft~ zw$oa?!%AYAED2F$(ZM6o4tNd7TTqQb8OAr%1#Ohg)ZjS;h}l`a>xIb9>W?DN=Iw?| zsvf;A1-+EDq#KNNvBj#d(dhrKy?q*)Un2aD)+u16XO@`jR{$mMg$;a^nhb@t&zMq2V?`H4|~rfys+A88OwadLjF;9(!I z)XHY9Z#sW65KlUmM@ZBDu{Rt_-{*ab!G{rC5j4y{G~ojj_RS*LOTqYDU0lUM<84H6an09|qx7m@ zZMN()UqCJ!yFpvL* z7K#5(4LooJV)j$b*5?WQ^gl&q1e0;Uu0Za}R0VjYsup&SRMmcy=I%z75L!)}UD=xQx+)?pWBH8FPF7~$F1LP7^$MbI@^$Lv=9L7{H{q7|sJ zT!T;#@`0NgbJ0o(Da4`Yd-Q9vJG^L>w5(z^eSE36L^brC8aW!o2w#=ebGth#CV9-P z7rxL7oENbEtIm5GUvMnZ;H7F0+aRrKKf*(z90}r$Ty6Yd7QbEPoQR#`ziXcaF{e_X zi*Vi{OYve}f-;9y^JhIamlRvc+fTN>11>`P0!~J0h89?qMxzk?%7SNK&dpq*Kgbsg z_pCxqAWj8p9Z=e0dIaN@`x(Kk9D&+QD-aT}Pi~J2)J{W?98>l^a2;L^zodk^xDKy` z$16m8fx~MPuCL>;F#G`U6|cbXU&dnKlQW;5$$*2K_jA9YVkzFCUe?#loNzCafcc(= z4GGBmXFxoM<2V00rcqT$08PxoO{~1^{sSp#JUgImSoWd-AjLOFkkSIAytOI9T4f5b z=bx!*hHp+9C!l`B`A=`k1f*xI;I$!3CfD{SWx+eIjJ^Lw+mqaiFeJ5-j6@O^!2BU^ zaIjz|;UjMNYy8KIf0&v<*f$O6$`2;G?*0hfCAJ@xP3Xlzry@N`yoa^Vay!6h4H45I z^7IRjV4(pGzR95#URsCoK+lqQBNO^BOm=Vm8J-a^Ew%Mgh~~Wm9v%xD%~c5EeXX&9iPPe5=CcLOR?bW?l0#_G5E9yK3G;J-Fp49iC}* z$m^_}=_NmeKQvUCcOleb-vQn9b9Yw__ZIM$sqZkDtoqt33{Um-MZth|a_i)nBY$xeE2 zG&(PD<)7JkUCK{&!x=XTUAMNpFZztLolvw~U-37MlHe!N27@sOmb>Bno>Vsm%NI(S zk@0Vj&$}b3W5!xdCh}ilgc3*UmDcR zF?5AiQjXhb4c2`UiG9|v+@Kh2iB`hyYqb1bfr{zt36P_HVMG}(SR?8M5N!Jq#mgBv zqT*Y=P(uIbEkE_+_z`7M^zc~nmsY=TwHop@P{LL(rkED|R=yL1d+=NjrUa@a!%>6! z)6(xYP*D}+DY>n)zZ!~pLMyU=?srV|St=RPptKQZa?zSX0y_W#yYEhv=>6&_49mHf zbN@!Eo3B9)n1Vf@nVQ)0f$|niPi>tmeq%FT)O(jo2S*DT#{iuh2joJkask+97XhBE`m@UZVvhh>`89wN{oj6l`PAjb<^)eII4qi^!Qq_?%gh% zL&Z$@52pJZdA%16t72G#wSX4+k^6I{+CElW%-VL3;CN>E&^?Z_ltv-`G$ELP+R^X z+KHP}b3Q3=MhLX=Ffq-Y)1?CUf0SArd@ei`MH{&n>~d8?sMCl#5mS%Zy^Pnd(iI|| zVIAA2nd&v%8zy}!Y#g21dv$!HTuZ1%&<%UzS!tL%ut_>~Gwgpur=p2PkV|X7_PC54 za9GvJ9_Ai%G&;1+lT%-b;l*o-V;Z`J4W&_mG_+BVH8e8Xn?ph)km=k}hFR6$jpNvG z$cn@0x|8>kY0Au|lUQ*>KmfKu%MC$&To2#s63v2 z{ZEklR&df^!`=b{*^KL6+&Qh4H{pOs>cyt#AP5Ay)ts&6pCSZ!10&5Hhk-x>5ml=> zw?B}8C4olJ2R{kx+$HAqD2SD~9oQ`;8VN;IMQJCvobXYL&s z{Gj=-B%N4(;E(Ww`A`2}Fq-w$f5;z3{}1^?O#L_QZ`ZLM@cYAXP;tI(#05uO5X0ye zf7NQta6pNwn+KH;hbnZA-Q*fVweC?G*t9C=eCRkV^REmnjHyGBRlbPKJQAlTO!Z>T zKRMaOxd#rnL@OG#6wwtVzGXdbm>Z~?Qiq|qgHd}|i)-`vlbBCS7G=Q~5#7;vmHmHc zMN+wv;gP_fp+eQ>jfQ_+ohU30s1J9cIsRvw@d>5NGM;%DaQ>bJPk>x<6UzJ8%M2~EyJ{Xs!Blgl@Hm6-9pMUC^__%I+|irhs;xn9 zSeFHdm(rvF?1l?{YJ3n5o*?=OFs5+`fk58hS|;E=+fZB^?bY*Xk`nUeR-AHa>*T8W zGdr9s>Dunh!tcD{{)n(L8chn)^)Zg;q#mv4NljhRjqrB;Did*%^E)S|Zx0)}+4{2a zj_UdvU0ui3^+`%ov2{)9xUP3dO4QYo1YNb)NlJQ{+6zKZ#$IFuggG`6e^}y)!Sc4p z1>INz0Xmq4e{>Rk#r1IM0)dGLCk;IMZ5)0`1A<)KJly1}{T>G;f`{-AE&TN#A_zH? zMCi}j_}hr2_S0W1HI~g^G`+$fo)GI%=!lX|MX8|9l`zWS5B}ht-KKl-4 z>ygaV8aTVj(ily#Y ztqUURtQtd53#+cEF}=06X)pC?c%5%b8X6T$iJwv_N=P zXq??{OM-{Zh^j@yFjyloX7vh$;GP&5aqJ?S}xCPD8Xt-pBR{w$sLB-Ex z%Xsx`1uw3$0CVr*@vWl@cr`(MTHzbf`!-r~MylHPXBG{lO$K#c1kt9g)BFl}4F|D5 z@F=IYnUL3H+@PZ{8L0=BLUc!@LyY&BSl}yK#=x$a$CY@1>A` zNw#xSv0lS^Z|5CofG8B&eviop>p@)xG{egZWwi4JkIHQy_!b#zWTbLvwBCu;&I6hqdNoaI7gjIOix%mx@({_^ni}QXzIm9 z(;FF|yw3#=kYWxr;TT{V!7vIQe8fIpF$P37CR3lUNIQf3F9F%JfHuCP^A+n}j6Yv7 zCe7`eno)oo70^}lvh`tv!u%P5LW6EZ=rZpg>Cdir$h zFoqo5z~PNF{AFU_h%38*cLo0Qr@pwFn-%(yRP=O|VLHEh8$IfiQ&RZ)hyJQV5*RSH z;32J&T_}{@i~#PMY^H0#Gc{h%2)K+^OhTR%$mW14=TS~z~jjUz&G z%rQ^>Sf(F~@j%rZ@!-$eDNLXp?t}T7;yaMn4?|{Z1i0#t&WGJ@cEq~=*+=vS&6V4* z5n{TYHOaq%?ZoX;<}3Oq4@Livb?ztVy~@H-9v65;)Ff{MxS`3yoWDr==<&=Lf3F$G(@ zYUTy!4a&VRT#f0w{IrYBw{oYjEVOkOZ{Xdbu0W0qW|ye%hV^rVcpyU6vOxc25ENU<6=MF z0(h0o@MCPZ_3rqKP29SAo2GG5p*i@;Oxr-ql9vO{A$69GMZh^I`Z^%`+AsRrJNlXu zeeG$#nuFJGz~IN_k%RP6nahUS8`$a#lnir_iHPWD4>eA)7$0rL^)-5|m(szb)uCtZctRMr5uk4D5s!(UCY5n(H$ zqNA^5rN?}N6M)A*{38!c0le>|KyI{m)omYstA~o+N3SVj_Yv7uuOErw7uBKX6Rh-KTZCC$14acpB0riI(%`(Qqa{@czqYuc6N^qXc znXwj_H&ZDm_4efKFNbT!;*}5t44hM17TyX=Qnayn1^flTqzp}vQw}lphRlIV?p6+| z_wZj|#(L90fD%9CNz@zGiCm(>Dill6nYxZ!vq)&Wl^b=0xaX>!kBWM7Dpt8_ZV-IJ zJ{4-BZi^{nvUsAn4)v{uxdC2Rqhh#mM$Uq|%}3Kq!92Lob9?+1t3$_W{g`3mocZ6& zv#=C`_Zi%hJ}(90QPe&LIisSuhVUrP;-EjAU|<=Z+#8eUe-nD!y>QbMawO*Gvh;11 zKbx#re>N#2{%+g*#N`LZA^Ev;uYfn3uR|MgF8y?AP8skk#{gC6NwFiEhjuM{bAVjc zm7|_50PVbKTgw}*xN$YkAl~$9%XxG^eA&?jQ=NLH41>Y%yb+mr%uIbG^u$wQkA&`{ zU!mn|*kd)JMDHdePMC|x)3!H|_VTiKPqy3l0S=q{aC=bYiinjI zc3AhjN#6~i?~0WoUFf5W+_`B^hi!-7`EZ4F<4V$q^Ff;J<7!rZv|W_K1(4gMVP;qb z@0A za6Mk1R_}U!Gp+zKyqldP>h`%^f4PUd&pfOaRv#^cX~cHf|NfTbhb=y&f|`-_z!+;> z&0!TO!HAZC*Vq#3aRr$HQDVeq98|GNaH{)}J+f^y0@b!j33ySRy6JiHM%*`#Mx!vG z=~f!!`ZypfSE+RmAli=;phW`Lj4sQL>oRLT^6_|NwxonuzaUxFFkxhd=#12wqaVZH zto5(QGI;@~8fHW|Rr{Vi?i6;wsavE2cn&qJa_=Xfnc2RpzCM|d!^>d&$=LtZuF80b z#Dk0Aw1EipV6K|w(plTXP10jC{}*~}CrGrT9$Q0Y0D7!bf%F(p#Y$Hl4@5{;JuCq1 zs@Tzm{&|CrNik~#idU40(MQ&)@8Eckzi-wkv1VL`QSEu+SbH1#AAvn1w-;zK?=fN9 z0}i%Jx!!=z#@mpO3l-}&Q19eU+|Udm8}l$+>H9t-rHGOIZBKXoh5pC#3CcR^KkT!} z8#rO1wkMAU9g24-oM)xm2J&Jo#k-v(G|>BI_ADm?&Gq-6&e@w6Bo@;c4r+{-R^VY- zDTaDm@*+tl`&t;@nloX9`BV96(4pkxYEZ2M4Xd|iPzPGs#`ztmZ@*M)7lCDMW=Wjr zw2(GuIBSTy933JijO}y+w(P=ZWPGTrCxKs{F4lG;>u9?o84qGF?(x6Tf(mo4eCR`J zupiNqQL9?UPhWFXKA4QPDGoY4o~@@Xbu9o2aJmV}S9YpM*R+|R2KuZanlDdp8qyf-;0;bvp8b_ErkB>M#9oov%W@xa$$WA#z!X zwl>j%&RPgLVo{?&2lw_J$)2gui`Hnb}O!+99}zKrkL`n?WAZ57lHUT$4@=y|+KQ8+IOomt<%yvovhyo)P6;erZO+gSbt zvI_zo6~Hr%InX?R-}4ph%txjr(N{OCvpD!1R<~APtL}f1canj+2Zs-_cpweMOv-5J z2lIu~FNS__a#!HZpLOmy(M2x?i@*Mn7#1(|?RUPjSYxIXbuJ4&_fcd4X2m~a#Y414 z{GwyxYpwY6B>viC;;*sdFO&E&?c#lNqBqdfCT#RCncJ~=IhpJ4IsFyZI0=Vz*KPB;Z-ld{~+z zepcg?wO@^dhAH|7?!irfB7+0MgKI9$X_x?kBseI^#6RWlPnG05V0t219s(159ue4~ z0TWz`wY}Rs*ByYO8nuKP1CnT~f*>u$EZm1;P~7$3I9-13Ro6x(Oe|6W9D1m z53<4+Mr%$%<#@fk(Y1}Yiqr=?8C^mCjkumH$>`ds!;&LmDH4WjboZtiUD3pb#0|ej z*=o(sM36)SICN7Dwb&!mHIqV5zr2Nl#&*?ujwt>~3}1Z0ptmC~A;@e4`JfO~-<*x* zU==zSI(=9gsQiy9wos=p+l`&)UuyX0hV`yYfgC`BME=!l17gpIy3G<~G@j-P*)(cU zhsl=1&^90+q?Ww49>gj+*`4#@d~A93fKwyL48&ar6SmN!mRE6%Bn{G~$9#jxjv$g7 zW@!9J-k8R7?7bpVR&gEQ51cL2W+O51Ia|e9(Yo~uf?pkJcxNB>U|YBxE;dUr3ynv+ zi#85*n|;zlID3$kF2TNyRC6RzWn$zs!C@yVo@UF%kTW9nmHi;OAB(#V9&4+j zho2~wuF%s8bs0Z@AeCFi_X1sMNW@`vs;+b$DoqWs;|EuYGhy`Ku_USlY*cw_)t|}c56iw=2lz*27#L={mhBq4-NG}vyt)#)t%hIj`EqTrSu`~R*u;n zv&IMHC(5C|hnDeSkEX4E#AsprWqeq{>V!vlG%1?qa=zdr_{Mm-*$dN!O!3Gn#YUGAI$*f{c40+t_8$9vnVF@6lTZ#>(^R!4*c-g?Sm}w{8hT*2wbL@KTxcKZB|yR@bO2( z!G*{QVBTZE#@k@c0IRNi%~75K@*{ZyE!xlXl`q15hFQ5%Ba>)(3n8Hq?co}pp_>io z8`GsKT#3abx&BX#l&)0EABIHa-846bH6Y#k*&+_{*o~t*Ynye(>$33u`E*(M^7PGw z`$Q^=qp#8esKK~C#r-X4Wr_c}6?~X4%OmHT@_tL*xQ2t=;79b9UQ>Qk5kirL@Ct5l zYSYvX?GaAM6#2ea-Jv`vF*h)WkaGskyW`Z~?(%-HyOA~LcgU;=!>k-KLTD#4>iMOf zBY%P6NqxC~)bsCx6!q;-N5PV-GTpgV@Povi0cOPTiK@XhVXrSN$J*uR#_2;LxLfOcT>+pQyZ)3U zupN!5L%a9>DpU{m-kET(5!J_9*_=xM-qh6o%k*&XO&k64<81fd^}+YpLcjCcFRWgY z_J>Q;Xnymhj!Tt>6yk*WOH>($Qew*&n!$lUw5JjZ<9#LmN>n3y-*Nl;csGfLwX%heT@7f)9(fn9**}(<9iePG5ELpb7ZtX%cUdQ_2+?z zy1XGn_vSa$mj~GT(DBjsb3B3IkR1k4)%PX-IfBl}eR4KFbbdr8^Sd^A{;trbj)s^` zpZ58CAZQpTNnCu1*Y!ug1Rjc8JbFN5(`N-x=FZt(J{U^;M&7rC^SGEk!jqa&GelJE z#pKxnNt155xPw&L2%TZnZ$}5^eMUh;m-oB>E9J=%Hs2zO*zt$mtp3zT++b=?kFK=F z^^M7}0a;%wER$jSdy(F?@Am(&{|2dm|I{JB5g`iVeq~cbaWl^MhSjU3 zsFQcC7@1V1LmiK7)HL`S;QXY8<){F=0JC$F6vElNzB-N`<*-hn{uGit3-GErSIl)M{ zhqZ#Kw5&P}IgHT&#qo|qSi>*G{SNgK>3cdn3Fov`B zZ6GaRB8!eg5`Wf;7ep3ywDBQc`vZ$28oD@qtMyp6U`N9u5?~c8GC^y_Y|GO(;blFg z?h~sAo1;y9NuO`7-tYu@S9#)yI_oZpd$>TPwe_3Q=~cXO!uuu(q9X#({k4c`qV!_Q zH+ru07x6C}gb!h-9{M`lA5Lir9;FJ`9`#e9H&$JAFn^eC4_&X)0Z zQ^&_AeU3@*lcbUUM)g)t7W7IZljdR}gjy_Ff~VIh_n}alQ~$u ztZ$Z8!RQpDzNM3~o@-M478oZrn2FvN*NAQ2wyv%RHmZ?7bKx~Tg}xDNVLvT1MeZ?F zU34W?H#?l|(f<6u&$CW);Eti3J#8CPZK9j&)7Bl(5Z34ja@gm78W z_Za+imU6eN^DYL7LZb@|fP27;S#-n8q9=1I%yTT?3cm(#0p=~ysQdF#Ww$lHBKK2Z zN~d#nsB-9ZT~&9|)_|#FP#nzv5XPTjuGOY9;qqQf;lxKx(QvRcs@MlOM)C)>Hl=%j z%fq*pYZb00aRqinp7)p+s#HlIhTLDV56Txfkf(zmfewhrALd5=KNFuAzy4tP%?VOZ ztNg+YT{t`moAWXapE%KHN|+qxL&<)jS}E}D%j3$>Mw8z4PQ$?n8BaWKDQjD(*r&>x z=mIWME{f7GcePeynm}Aq`vY2azgH+3l(Mc1ryY$Hr@nX~<*MPw>k8dN^cH zCHNTGS&E_EOdGiuC%bCs(C1=*5>D{e4PDDACzK!GKe#yqSHebeGoUC=I!I`qmP4+6 z{~);@ud`c$9At9n`x*@8aqf=6Nw$~D}zqvwI4*g+202YakP0|5&U+S_&? ziY|QNLGIm^LzVFZwsj9a#H@P2E-kslJQFK6G`LH6X(_79RsQ7|RFMNMc3?3_nzcFU z&gDV-a}a_X$wOW2_IIqnw&}&T|4W4vaM@WI16<|<>(>G6KLhJ^5v=EoN`UJzNQw>E zEC=HEy3GOs28#9pMOm{17yXEfiY~ZcHdB~UStC%1)luD0cOZbug$4f}zw>t3-NR<4 zDReH^uU^QduA-yvgfFEZtjwh!c%u^g;d>xca(C5m?@6$oBAACO5nx^%T>eimzu>_r z=6&y%n8Sd4v^#?Q@`84VFV6(h0m04gVjv3#P5fE6uswd~lbAqCd^=pVBhc1Rfo%_> zVM;Vim4*o(2N2!z;?@z!4|adPbHD&GvTVnqZ{u9Tu9*1>{v<73A#4MHek#t#_s2Qe z{s%TDl!I(WL`OSzAoL#e1+Q}m2h_9h5Q~XQCqojRsP^u}sMv^8w%97>?g2)U9IEFg z$tP>c6L?G5?FbwL_=(%u)9e38gq>^TPEM}4p4OTy`z$8ypz!*?>cWRf;d12|RQPqs z3}$}1^rJF+%GuLf?9zv*DN;IXi$mKiJ-kKEeE3Jg=%|58A#BYELpl?XapH|$|3&s^ z^06NK0hT?D8fQ?7_zjl-uW;7Qs`jmS;&{CY9TXSSNan#&F*lCWa_?xo-SAsFYIx&o zy5X7aa*#b77?>n{@`Ky;s}E5R7wk>Y2}d!j{9w3#1s4Rph|!BW>`gSJq?xU0QZuX) zKCDgP)=O~{{*_?aAFb^Vt}7eq^2VwvT-9|{RmoDNTDev0+~P9=A4_HtjWb+l*53x^ zaMZwdSXdHf*VtfZJXlJ9~q7=mzbO-{&TQ_Tmn5$~padr=&fTr{0^z&~ZBilTa*^mBXz zF(-X+EeA|y!CRF1^q7496^^ZOper|rFcx`-I=hw(0?+jL$Ga?EiRH(@Wk~AJ8jINh zJ9B@#mtT{b3f6K$G0Y1&3}FZvN^duxg##sKCmfe|d+UBK$qBgp8v#GgEIN3WJEyI@ zMczEQqm#=&hT&%;ESV0TMW+E`ZjyhX0ms#_0uI;j?XmDECoKbv-&OeD!lRtAV5a@P zJB$Nco(~Wqrf}#~5facjuyFN#q8>TOnF*6NjZJr|QLrV@b;eTC<7?5FfKd*P>T4XZ z)u2uc1@NPWpK)9rjUUW8(VsOA4BEAX+_D{Wj0}1$PvERLvf|I&@R5L z!+25L?30@e`*H$@!@Yf&`m2M~c};?Tt)vBX(?UUbo4VsAnR?rVFIYO(7E!XLLC)3X zVXdEyc?2LSW#JaPE__P7Ri3}+1yWcE3hOyR3M*-IrF3x(g9a{AUblZ)o?+f8Lc8gr zL!B#`y)7u^A6yPZnDfAx`zhpoa&s#$0Ll264d-vCc+L! z46A(=IoSGFe_qy7AiwkC){!9&%36G8cl2gx5I5g1i9F6wvmh1UqCKQ)bF-U)LT_11}7`k z_7qJ-DF#Knw$X7g7Au&!YN$n4Z1)?WeXos}?ic{Ai?&m4-x*VXl+I|r=>I}zJawJ!jPBCR+0)e7=dzg% zu9}BH88BX~!9(Uyw(54v{rYl1he9z;JA=vpSNih*F!v_#O;zdpcv~9VvY3J*b)_gs zQPfsIsDQT8!VRQ=gMu51gDj34qlr|Z3$_R`2GLQ+aa_j@XA^ZsD=M^zO+l2h2q+E| zWVtbd$RHF@@_U~5+N3z07l?G9$6|mtq3DM=(-cPe=B%l{fO{ke*ci{ z!Z=Q}`V|fX=4UpaX)#0Sy8tMg-ri={OG8@x^A*E6aefJVUv57NqpVS0-%nm+*o!Pz|c= zY(FFmVc((=qJO05#s}_ykjBD*gR$k<>)>Dur_`bb&F574M$HYLD&y(!v4dl#{`hwt z5tQEUCwyAH)N_XB@AwTa*$=ql!L84dnUE|cFmNs2fuGj7QTfXP2Q*nOYp^ms7I2&*DGk%BATHo&QO#5h! z@%k&W$A(tz>S*d;M~{LaV0fHE3pfZWIMGZ691b=D7x3!e32o`KZ6@#cc}frxAg&+~ zNZIkv_o8L#Il#z!b9fRuUpE#f;q}vpf>8lQ@|;u&6*bN^fcX2`g;)}3EC=e(UI6-Z z2_`iao^G@pW8iJTiH}4YEpJ9Ri`f(oc-pgxEiZ!m;M`O%1==dn>Kc&eDDPse=ZtTK z2lG8qAlxtvO4P;794SA6Yw!bu&$-SXqIq@p2*An`arU^n(%EC|TxX97FF1SLG2ht( z;b1-JpzTQFp!0*C^E6A93l6auYXJ*&O(te0S4aW5#H*WhfsYwW*aetYFb`ZraQ@Zx z;7m;VWa@hm?@9kZD;0w0%t2%sDO!xg+=t+t1Fx*VSce#B!TuR*;`tiDy zQomRC9dbPfA!$HEnoU;gT5CU70!3scDZ79+ZtGtX_A z?)=-b%4cE4vcs#XP1CRW77)RBNl*96fwQpiN#3)x@s1e;0ch^$%te2(lV^fJSDYAn zz_^13wfsJJ{u=*^awzv;C?jMj zSJbEW12j&{j^L=NL0n)GBF&}@vXDyA4+Q57{MDmifosQx9zrTY>$RdU0mmJc1n#^4o#JC zsS+PNFD1S{ASJ%N1%iRkae*pwp(^syKcq-aNQx{~MLOV}kU>Wlui87huyD|EE`DSN z0)6(+kQD+ zgYoxI_nw*;5mK#hd5y~PAs~-4`B`{`74}q&T^SipPNRJRteI&1sCbZYCwL8)bp-{? za{F(u>r~>q9ciKcC26ky!_&R1a0R(?Sh}|%+zo?*;Z477Z3>zxlE_vdzVfr2_&QX? z%qWeH{RtktqH!VW4SWjf7dn6T4)JVs9bgR>*V1vS`M0f)gwZ@T8bd=EO;-$fZ0PhRC>lMWw8?JHi(C;o8IA+AhGgTL>Bxgro~hr? z>Y$8TGKZ!bq|3Uy$Tq!V05WVpn*Vyphp_)VY1w}?Un?X`Fzi331}tu)+c{wV^*-ApKI%{+uw^kD?CI&7B=Y@pj&R=zsdb>lf6{tUmeTYt9q5^Y@}5H zoyMA;5I#@fmG@q#<)G@9JskdR2oQwNrRK|pu>;4+%XMFDeLk3AR)qg;tvxTOg#j~= zrP{$qPBIKoU8y4|V>fe@H^+mufd9E_!mvQd$Enj# zDx)txS1%?b(asd(JnKQFNXs%C@T3yzoHW6nsVACHXHY35|4I}~$N#t#=WSe0G?VNw zxeM-@>IFaX42krg_P~(@w}4}BUl{_7?c)exvf?-w1HIm_zwj`#p-dYG@SAMCJl}X( zg_mfaP4N$_3%e&YTGL9EzNpnUY^uRQrF_YA>`j(eDdvkYTe1!^?*Ye!uYaL@XUzU7 zdmj#>b@`Tq>oB}>Whp^6p2X*XL^fXH`}=(Pd6mP3d9oHih4l}8`h%cc3Je>4t>--@6M%|s%%%4xqf0`lML zNdf9586%GGxU}+p4k^i-S6{^oV{ARQ*vIzZC0tF+H8UPa{=0P!CtKV0~z4e3=-(DaAxXZ}Mek#x6JpDPmDuVL5IDdb!bHsl6zBRrt ztcs)*!4mDP{wu03h9~nGT2)zX5>m7W9AisQO{(gb#GGvK!TifKEOOZg5XOp^zt4_2 zi`U}={9E|Xq8N_^YB9enG%CVSdKFUHX#i^%gxYF0j39|2|t!^WwGm@22Zad4P3 zyJL%yv0tbPgigT&W89Tx>ylt~jpz?to}T1~+iGkE1($z%*U9>5@J%e}Sr`7w0%f@n zco6S_Y!D2009$Inao5GNg|CN&psBuCr_YVvDhB`-@U91R$)1l$zxjY?=8xE~55`M5 z0W~`zJyP{oR!m9qTxK-UHm(Uaj*6b`ZncuP3QZvJ+i2ozyaA|eh-=2|zv?@yxQBZ{Lm+IfI#e>N2_?)m7&5Xt(^Y9TN%@oFYIy zBv=?{7yyCD14xuOF6ISPsP=o*5gubB*lzz{YWNNbxbTBhJ70PczqT(P!xua%2)-+5lWaS}8_XP{L( z1h)MCX?$D#iQRjk>t_az-Vl~+=Z;B`1O0&=v6g{w^B5{ zc{e#S)>8^z{Hm@DUId$?GBWpn1~19=)u+4rPs^S@C$IJ>%M;zN6#t2QI=O^e`bcWr z^M{!%XI>1;Y56}Li{Je5E5&bKRSk9_FfCi(aH?>6Cc_x&|F55-+H~9eoBi2v(f_nR zw;TOgQf2gKnCg%I_E%U(zvJ5+$`&AU1IKob@ezC*AL`HH9}ASC^ilZ}D9wr6KQRj= za%(cWEn4|B?)}1kz{>I|T5S$tyk>LL@qSSy3r)U`hZzsf!3mDJ zN##8-?DV{)X8cUBpjrA6L`gIdspG6bdd!`^73fKg$I@EvUSJ(V6f5hG{bj@(eKlDWl{L%YT*f(Zj*-fY=806x1hWO;a86ZAI}&S?=3gr zW7^5F@UdZCOZXU~;3KK42_L^bEe1Y9L)A$l;~6Xyku|2Li$3$4GpT+ zDf9@zz80x!N=|UQ+xw+)mPQQiG?%aQ}cbSN_y2@6N(Y zhh%$qgm0R0_;0AsIqM7jTXndnvzn_=;C$z^s=Dv04qO3kN?_m<4X~w*Z~KUrd?2#f z9T-2-`A#FSLH`^e1I`!$5F>Ha2e;01P9Qx8ZS)Tt=k`snYZeky009^1qv94621S}+ zuf7#gu5$1tu0KZrV(2Thjq4wH&3@o|uM=gKsOxY3fNO#bo-aohi4ggIT#r8you;6AISuE#_4l1{P9+v0Ge z2UR7bA42Zy!KiJ56Pc3+;-b@cc+wjeC%4DN`MBsm6BlRWVhArz#l`vm#ziJBa`)f@ zfI0A%PEfak(!2fGh|GTMi1uUs0O?1b^aIZiLc4;l6rw9&eAxR%bd~^NDE}Lo7j(5= zACF6}0Mi>$+h6r}X!iWqQw~MJjw$foQquNs-uN*hiL%ug_3Kbjl2cHT|I^t<9ErKh zn)oID%iLk<89w9iYiQqlwd_$;I*wjL=Y@7>b-}>kWg9HWWCtnY*B4}CPTT#^omdGG z6x&Z-j!-saw?zgs{6ShSP%M(z^<06$k3#>}&-qwgb)EMa*NnsSP{{K;JnK7ku=XBn z#$Tn@1$7-r@%FNM(YRWAaiT=nBD$Gv`ee3izd{yXt zXGPWbt)M&qhTsDCH=hRNnUYmByEGf^jRFY^y$+t){^4h<>>m!rfwe6^y#G9WI3@1G zCt^N)pnswdALWOAV?JD~-+&L%8|UZN%5#9A@>yf?TQqwL`?{ZB{sd9c?5o~QeHO^E zKI5|Tvtjr(fF`#GKC8EXwrizo4cKghGk$h`^t0Eo6^8bJAepTpieLYS`f~F@>q~qf z4GzSw(a+BO@@jj7W$Lr9C(>EL0x33lRkXqN{A`A;L4C0LthSBSnmIgI^s_e!OFJMp z+WXm7efitf)|dD|`gtRM&H3cS0N<@IeXI4=jWRW2(tPjn>U5F3W;LgT(Q4#~i*vTqon*X}2 zkl$7vq2X0kUsvo9M*q!@48Vmk%XRF?5PS)S;o2VJt-?5p{I=*aGDx(iqgxqtFnd6o zJB~CwRZM!R&VPoU{15^Us+!w5XN^XeNk9Yb)_i0m70!1YBjJR~NP-EZBz{8>@N;*g z2`DhIaU%Ex>;iS)q-(eCe*(#BwY;@jm(LiUP`4%3?N80jTjk>69M!uJ8xm`e$ZvL5 zFTqo6%lO3Q+wDSr(BXb$7sChMrqBm?w~$a73ZjDxi4CC-aa9N=BhpaSe4?}J9uyI8 zP@WJWpHY5UV(d{jU9(Hh zB{?5&4fU9nd}g~&{!x1mmGQ4LPfd8_5)`Z|YfN59;Mb})CWX#sC-Hw$C=35W>6Q-m zC*T+#!v5|=Y1eqDNQd~4L*|{@gl? z_h;IzD`kd#E3~@r(zU#GS{K;WF!|<0i-2SCvufI>vM=ax^#ojKu#0!uk0gQSOozWD z$A&ab{TE(~o_KCXH}0)Rhi^n_+dQ|C5y9)0^ZWx!$~<33Xu&)O${(%!E(L)MuP?)c z8Z}Lk%dztN2Q)*`Ti!ZUhi?{=fC}RUvr1QTUx?gmmAA^22mJ%uYhe3uIC|A$rX=$2 zgoy#hh)r;vb;1Xnsuh!qi|Au7~+j zr`h!Z-m@^a89OKnVgx&uwirP_s;cJ{VN{r$r#=R!RD_EZq{4%zdcg554p#|ZtkrE# zMW{n=dN@O?+ri6z&=kB+zK()y(l-d3j0`IkmN?)TfLb6|@5bA_S}+)h_f;GxoG=D{ zH6A`OU)_095<>%Lfk*`%6Yz+CuyOy|xC}ZfaRok6DGD6rxWmWK<46DGu9K2NCHNBE zyR@5-2OOEazEd025a{#CU1&VeG5lNplr@4x>={N9A@o7?t>D@bLLtsdBQl}?%Pp?n zSBh1sO`&Gh^xs3qVAtyH?uJ^yN6K5N}?V!+7EcI)eLV z2h^mReLX@iQDyf(mZP zRPjm65_P7JF*9zf`0Aj{Oe#HQS}f+^b5v)}WN}%~msRm8(-U>3``HR1f(1DsSO5bu zF*2cdsLy_VS)$Jh)Muf0t>Txd;;$^UiYG@QEZOMPY^%6a6~DJ{qA^@-)PAj1ya~K9 zfZ^S<6BYlrQJm&DlGJRWP)s}Uuwr0tOUD!B8$ezvP^YVgC;4S_`AR0veKVfE2@ky~yA68GFxFx3Sz3S1)~Ie2Tc>j zQ&mt6LvKHpHAvvfi*{ErGY)uPdYZ??+(|D^URdbbb4-J*HH0mOD z9cqxALiC6@DANmG+6ly+~uK?JnIXhZ&C#m^WqdL_5l2vmZuA((B!X0XE z!jIn8sQF9OY%06#`eY*?XO^-m>04o;r*s476Q;dbDrqmUDzw*BzJMk){|60BHViGA z7F>)TMf9XC8Q^wbdJ4mZHTZHUV^!EM6>V41hDe3!+k9>4OuxfJ2qf~v?)#4 zk+%;LktGjllrP3tAn97IEB~iL*m&K^%&#k=#uhjTK!b?9UE79GSoCxqNgL-MOW*`C z&Q-U)6*7r;ij}YEy5!2==;@0@ah+Y`i@L%K_+xK~J;{QK%-uB`l&w(ed=zzZl0;td zHo^uUu0wu_35{k$&gu)XEH3{IsxclT)lRYl<{x%epM+OK{R8@I zx;t+%7;2ZV(Ucr1UE)BZ{M~R~i7XCp$=gTCXA2}BPi8vY-r%FTXxaLJxe`(q)9%z0ZRPHkkT0a zLW%kW%UGU6ov6z%gI-q3w}D|LfD5t5APE6-ltSl$$hT?-Dno?2faE1`n~g$bB6!sD4;>L6uSP>9 z{<{EfPO6N-D-zDB5`&RCJnKO49|>n8@6yF0X&i~u>{}Beo3Wg+QzE|3gL1;D6=vj zRH^R1-C^u%4N6KLmI)!b075b{F_=O!SdFFH>g}2#9}hwi5sy*qzOCSQD&-}_W4Vsh z1Lq|RHk2K2&1warJ*=NZl!FlN`GJc;WkXF5Y!l`&0e|#>CL>o*xP!6>(zPQ3dbo~k z52H?0xDf^OZ20Ju4mUfe=2PVNt?rC1BEJt}v2jX%-%9y?3FP;!u8cJr*NuOmJxiva z82X7^6!Xoo2;57y@tr0y`hbH9jd6Z|kskDS`;p*bNV>a+uI2A8>#SdQJ3?T6ALC5* zigQCHC>;Y&$oX-h2AA37shKF@oYNBpfL}G37=>S$iEF;28mNAlujnTZF$ebIESDSz z3%w8Wa2n6(++33Xqjxzf0zTF_=WN1W3WTx4?=b)LA5aN3Mv{)Tz9fII_Zw;YO{=tR z{bR~!s}$OW)?o|XXyUBX+b-yd=@>}fl4mU}elL}`jDTm(mX%n-V#&Id+CZmK4A(ro z+1n109_+zWptwfN1D{?&!DV@Y`BQWH~Pc~&jOY59wt z)n`MbBZiXjA;zLdotD3{45!hp)h8m3INU}Hw1vXmsUYGRcQ|9>8S<;n>lF)SG)>@HzElL9mY&sO{(c-9buXX7prJWG$3 zHo$VZQQE+>gMiH5C`&wx#jhFPHUJahnBj(KP`EFc>?zj*XO^CWn9uzFp1TXGBfgR~ z&gzFy2nS>67j;Wz9FgI%?Y~cn1GL`vxl_aeyi7H$Rz@hu3n~rR4!!D@A0dGJwJW1P zz@<2=od6#$tIJm{4?|bsfhf0ppXg7#Ep`_ON>Gf$gTVKN{@8MyRZjba)d=#-F^~rQ znH)b|ufMTg?!flyd-veduZ|Z|Y3eWrw8v2UcURwaGOoIm*}SU|Fxl(*C!=-Gf&TA6f~gDMeDw?HAF&kp^>@#Kmb!&Pi_ zv8TO@Zr?ZTn})t2l?pQK5jtpf7^|`dB!HiEEQp!MRby_5SD0mxZEeA*@JnH_JE$1g z^y_?M*I-Su)l~6^{WaF)3TsWW?E9~6eX@_TK3vPIF`vzXs5ALvEmAtJ)gti-4xDd0xfuWGBZz|zi4Y>%-c}1Pd_a=v& z2KuxfO71Te@k6aBiJE>=EgJ*L3rE5V-LZdhkL=?^IU6tu%PNcA;5S@Q$>LTyz?h23#pu~PL@ zxE*KlGE{e?RM!?}U8yT_mQ~lqtjpk*gi(6W7;J;^NsMSzCn=dD1tC$Ry|TM(w(p?; zr{DkE?$+2IxwYkZr^&Nm?0AQ8yk`)})JUD2K+mnw@r^l-@!_Z!gdV9+!LuIMa3F8N zGaO+yC{2A-4DJ!cV&DroM*CqUkVy|wf6a#(-G=jAP6Ubbf^rPblmwzkx0I<*fZ-qn zA1amwjjMoG%s57D+GOf%3erPcWx{^I_A~i&(}#2BJb=E!o%y(O2mZ+iJVQ|;TlCB3 zGZ93$G$#{5yux?LgEbo!VKJal^A*o^`wo@(rsmLhape-chUV+O_dCLB=>g-jNgta5 z#;2H?CE&?Z*bb1gwIoYR2H`4x0sqfKZlw8m4B=Yk*uoI76^(7ss}?J{2HfXU`e;yl zppe-I|4jB4%=cW-zZ{SS_Dpa82Fwiz@0hWKlh$%-1%o-in1Vhh(t-j$O%4mxrBN+s zZ0OU!$9O}k^`LJVIAtsXhE)QA3h|c*Qk)Oe$!E;?HyjLI2~<=ijao8(kTAwSm_uq} zE_NA`l{y|FKFuJPSbb)FxABTq2Xf0gAdYQeE~?dgBQ6WvP#6byYv2@-@zrZISC&~P&d=i)*$Rmz7 z)iYc@_h;d6b_a`_q4Q#eW157&*^QbWGHOx;)q?k{Mnw}8Rt0mQd&!}mXFAWx1FS)N z($DSl&`onN91}~OKS$Bo=~Gc76&cFT7)9r88%Q%iAMA?G6VR%ur;Jl{8tr%bIqm;` z`H|ZXf0>~D2hpjcwm+qFQJfYpfueVxsYdH$wJ%3i+s407zfIb&w~s%fpOBz^%smyo z#H+acCZf-~3h~MG5qJA5aE#8xY=bp;=3=bB2%3WmAPH+dmT9d<2WT zBWtz&8?`QLfnJ((#BME_4!V&mvk`xso5W;>kW-b~rC)t=9hm#_Zr}%${sPOT@D z$+Y@?1ssrM4m-SCt*+{8p`D6@H^~>v&ayt2>N{#>eZ&1dn?RGWJx#%x5}WjfZ$J~( zJ+^C{Zx_Aq%=>w~X99^G&}PR`b%AgAQ>Yk80qlDPuwVLufQ_IC|8S^ypt@Av;}$*` z`h5*O1L7@m%m}xObg0H zKr^ru*aqf964A%&81YX-cta+2R>QIUon84i zr90=GgQW$b%M4cmgzTw1^iz{f-~|X1K9v1iwyxh-q5jt zkMboKU^-zVKya~h4wG*JU>V369!Yg(RNufQjRF$jY#!mLiT~(8vz>oE1fC@kVC7G! zaaMoCMN>*ZP`NXjcz^?0E#%?@%+f<&rCUbeFrn)rbc&!0wE0fo(-m;djg33Q6lh4w z=0X0`uYa{8-5@m+@E*C2Oh6Q?{yU7)KR~M%79mnG6d|V;8&j+(aRPb_MgsJX;f??I z3;ypHtpz8+1HfIABM2QR<)YVc(N~-=i#}f#oeq##^l(v&^*(;;kw0O+3JEtCSx5)c zIUD5TMmWb9Kp*-I6Ybx)4}m>63jm6@3E67w>OL5AxJA zye)qro*wjFYte(>oO3jK06BvD;r}^3So6FE9<^L7?uUpkQfv;+XY4_Rx3@v|FFJzI zc-tBJXi;x{qi_2Y;=7V>gT^uF&c{(b)d3r3W6{CZ;@BAQ5@*m3DlD#Gws29q^wF#y zh>iVmr{{h39w_af2C;;ERh`!3fYxeQt~)Vr+ zcSFD3LxV;Ag!^(O4+r=4u{$4Df$Bf0rL0k`S65v!cZj!$e%5{{H4tm-f-6Tl^+!-Y z+|V_v#D7^yetCMuW44rR6yJ|`?_1)k`xa^0mVg0-hd*S09udEt9HsujnWUOLbE2dH zc1duP6VpTItF?~JTov8_u!8^G({g=ZRL}5s_#dsAH{|KGmDc)RdRF}U+UMWE*IG(C zYWm5D9@bO4k+YbVrJqhF9JUC#xeT#(VmwjGqL1laaCXf8Mn+Z-cBPO-!PNPJv3T9X=cz z>VCDAQmh4ibTQ2tOq$eEj7#GQByfY_jzz1*oO5U#fm!=0)I+;pCsVL3nwH+oL3IxyBbvkor?JKyo-I2kNkjXU1I>zR!F=ZR+ZrQ@7cXEluz ztRr*>=Okfe$Gt>x@;ZeM`^JLF?C_L;Gxbfw;YSL>)9*6@XDXU*JAGF~KXp5_pws4Kfk+t!r)&m5Ih2Q80VxX1Z6vFKvwsvkh|j}M&gx2(;djIRw={Pz@-^8!z7lqPyQwP* zzb74k*Vg0h`e5lXh@IJEAp=c(8rNmS-?-4_kVhd`3k`Sd{2TfrA)ry6(d2AmNu<0N zFa({Yys7p*#LX7N;Gc?|6=x)sr1 z#0lDb1UkTzi13Icz>lXO0p+iXM~f6-u9xm4nK!McB1xQ9c7$ifAx_MG(QRi-d}yzp z0UyqKLJ-V`59=7EfTN&+V6C$f;)7lPiV)w&|CJ){z87M9a0MzX;-yM8=R?CI+F8g)w@U5iLU!t5JZd7$=;2YkEjz>eaMwQ)E}!4mR>aSj@gHn zdeKqRhd90HE?r&>@}19Ah;%OGR3pAl;Zsy!`q!NVIniB4 z^`%jA8Li*Ym)-?^DM*m)`s!p#3vVLfGbhe1tlZivx~Fw9$q_va*fclICC3`u~dFvj2~&XXyXmABpe(B*u0sczC+Q&+R|XCK7l!KX1d___=qB?Ln>4 z?pw??LR!7Jea}Q;qyK#p^uLSM|6Oz9`~TV!tN&lNKXU&Q@=r^7;4F4nn(TysA}e7| zxxT?=&~~^rLjQRGg-MmP87G-h>9zXJ79FN0fF$vhR7fIt{*|K(XO#(>nOwB<-C-P*lA09tX zHfFx``t2B=?5&0DZah!sPS9VICu7?9csPlr7vO_jz8~Xd#r3Bsc)V2bsi-S-@*5RT zX0c(yn$1T!E)Vf{#tV>v^H*1JCn480g@=vN@&6NHwG94Pc(j5}l3$PI!=JI2 z;JFTazYf2Me%ghVs6KOBOZ?AM&xrs2c>I}EXW`G&CmtDp67L6-JF59ENJPI5ZHuK} z;c*}W20u)I-GF;z))9%&!o?(Zy%V>upRC&Nn}Gf-NAo25Y-$Rd@_RFReG9uG`-OLT zf@WjZ8#7kCHNkwUXLx(#L-F(3sn(j$q3sgQ=P29xhBjGl;0HusoBIIN9O?RNd(yy- zP~pl0x$=JxR|_Qj#6b=+Ut-<1b8$6rZ8W&JXK_hy0h5dSaDv6ftz5p2T--1?CK=4j z3ln3xxVb27adEv6*o9e%Sr5QJaO($4Wv1*+&}(eeui|m;Oeslw6GIxs-h@Li$Hea6 z00rvL+`j(QpFt}!f2hyhuW2}SXrQ-uB!3&>gWb6P9wdp^%|NAjTJj)h)RwsOCqScS z=yYl*??lZ`-{}=!bMed4^@-o738t$FY<_|s!C;lq!{Yfeu?W9_P&ZG1wgdUTv6|c8 zA4egiJ0H0LG{~lPJ6?_3$F91a(71gJ$i@l+;&zF)ZFpq# z({H>&fiGhU0_~>kw{53PL;#|SZS$SYT2N(6oroetM-utw zzHW+J5_3q6qv5)DSl^1E^cHS76*VozEo{DYLowR_S#CI)M`{0-MD0iLFkak?Y5(WB z;mn<9j=!b2xfLg^3JyixkRp0Tg7)LZ%_wNdRSZ2Dc})Kn*)sK@+A;wm;@`49df%B_ zWCQPy;@<)Y?zpKXd?%}Ccsr*$9=?Yxu;Batw4Vdtw{xE22znI0%P%*eNZ@{zRITFH~ z$jb@knFBZ))&#kh@=Tk7#>5K9ow>&ba!Kd60J*>$iRGDBKvGFOTar`)!jaX?17B8C zo=DC7C=ZI|u}h}XmV8=I8O(91nd!UaI+8q7iI?o~&z5EUFG-JM^~>AeWLM*5nMyh7 zHny*(EOT7?a3P=bJZk9GPm(63Mwfq16DoH5ZdZbC z_|FN4l3>3{EKfX@eq?>dbVQL@@&w8mGQ?5!8Fu?74TMrE%h5E*uTEmWGK=D9;yz@j?u++nv=kV?yA?sXlFY zx9rlb2UPq%da(=H;ttcz78Xj$PNw3fJ%82mS9sE3hGKtIXFW(^_IqfiM|VOdiqU7Q zL?dm{P|&gI6lkY7-k{?v<1*+th%4lnFtU&};|?F6%8!fBL86gW$_MNy_HXaHmh}8) z^$hfUxMV>RPX*Kd{gy?~FOBR>#2=HMEBvCr5bWPD?kRZ+_L_ZqD!SXkVdredL)JUR zXJ?C^S3#eV@ll^036rzTKvAEa$!oa+ z6|LE)zXH8I(~%HZ^HCneJy^VkaDykXa3HPX8h!2w^cDOVLZn{&<4#<{?;GwK^kv)* zB_E>c^bgz6ouaIP&Tm(y5*rX%$gl-?@%96SEKt5ru2v)H`{WETo*dPS{}b)G@%~Tv zB%AeNK3!E6@Gb}MSkX`A)rk$V*8hYvnACg%0=qF}CeFXLy?TbXf4?uD-L`42BT$xv6biak+YWmc9SJr=WsjP33AJ8}xy1IL4VEGfG!6TTedp81tckI& z#L;i!=X@J}VzKw>w?GKR1k}g`FpmawVbp(wFBSl`@=w6b#ca|ur*SUs0enXE*Y5|s ziE|L(bD5eGflv6^>5ykwy#rHX!sj1YJ`sHGZbj|FNA5sxbY;K(;(?u11A(Pd@Tnna z^-Kdkp`wA?QLX+r^pst$zK4LA0N=lN23#hL?zV9Lk_0$U7_~d;F)tu+-cCgI!=S8D z*y5F;Z}@msOL%=#Jp;TRzBe9T-~Fovuis#p(K=)33H&9@5RWJ=JuLax#B1nb0o0u^ zDp~7;{19nyc2Dir4b&}vp|e+VNp4|4V+&`Ns)Npof0Are zH9IR#Brs}$;m#PZ#uzHuk#&eCz1;ypU$HWNx-5E0{h=IeI^%F9M&S(j@NWrdr+*l2 z7ui5gOMM%PoQop&ZD#rpl_7)~K9^vSa=04Io~H$-I5giqC|!_R*K|fkUB=3A*BNyMn3(Vx$t!2nCB1;F4sw;$7zwAVt0cY9 zH#`@y-h+gPIuR5F`#VlZgqHT|Yg%z(a#&J|hi z{WP=&NX=Lc4UsVn^MgOFTs6+9V?a&~UMC?S@a~(m@vvD0v`6<9H%K@Ra*?JXKE>A% zE|RpOr}~yvAy))~cRXiQ9mEL<*f|@kYUhSKB7+5Ea-a^?Q{WUPkK+S#>X@^(-LQK$ zg0M(n4v1QRy}y$?9)c%v{mAQ#fGn<+@iL<=h$b_igx*094f_dm&JdpcTBhblu7$we z06oO^)NO&bxHp`Ji`oOMi(lXcJR6}I7G7pg-qJ!DsNQ;XE0D_}>ASTmEmD9}0W{|u zCG)wh`@Q(;>UsLSt2w#cv=8SY#n<=9wWX(y;WN6X7p5c58%U1)euC(+x&NN&WzIav z#5T_jD2LcW1yq1KCZToC?kl8F<=BbiS0ta!b~7KXKx(3Vv>^#3PoO9!Q{b#F#oSq# zLQN~e+9qYW`%l90O-y3|qzQLd`7GiSsbFfdsVwV15oMX46C(hK6+lv+-h`FC2g4bT zDJSrsQoXA5GJstQ4((d1)<^P7Y|%2-Nj?w4{AfU8ef28lZ&{4|EqHe@+zy46J&O-r zkri02#!ig8Xqg*kpqa%&`g?r&E9~{#6UAIr*U1%_n#EnVswXuTaVayLv%eKqUnQgA z`J2bpp5&&rqV=Mi53baD%oRF129y}=TYjT+P6Zxtfk3w~xvq3yu*W)rashK(oQ}lH zD>2pg!xIbqhOT%H)0|qt<#U_!N37DU&UFdI>WogPz7_Oa?*Z&HykV zJw;+}MNfeV1<6Ie`nv6D#Yq2iWyWWC1ByC|l(_&$4c39C@=amJ_a;r{n^y8oN4^17 z9SN$+s!gi;y^X4VZ&6iVDXJ=0NxE+YiRxIeITd|Fy#V2M`E{X&mC^4#8zwbHUUM~H z>N3exF%0DNGiNo0jo2(XRR^@`K_Izi#5rqW>}>GRBTcNU1%fci`)Yzfpk3Cj8*##7 z?-}tm*z~B(*vRQ%5%yek*^{-N3)a zC~nKwb=b()B~Hs%0_X0_b_a&wl)1ueNYqa)&^e?UhA;`Z!XFBBAlW8_wfMjtw4LZC4uWu|BbA_wNXD&Az}R+ zz!gaS2=c!%LH#RR*59urFbwq%XZwOxeVtWL^2vg$)gLleytLR^ z^?;PZ>hvFyT{awX^s^>xjQAgZsDQN5KROpjKP(1W>Q`9RFU{LKm;z-^l5Z%~2San+ z{$CZ8jCVn99-3J)erS40D-G0kXcm_awN0-j;4u5SW0D+FAv%$t6x95iQB_LEeeSNE zxO5DPmf4Lm;V%t(W%Gy4!B%Ff(Ecyui>rTQu`vyCd%UE%Dll_;3An_q=Z<6MyCOFV zmK!|L=_d$(1W6h>p$=lEp+^%_@#DCrzGn%F9h)DTZ}LMmN;6oR!~A9@PqfcXo(N7S z&Nn82?fDL@5I(rN#_ijzKh1aktB=U>{P{eS<3T{hVb67Ov%#c&&e>PTaXhi`z4e&+ z`$Ei#6DK{&K5OH0APsmE&%0)W3LZZ zqoPCT0G5F3By01ntj*T&H8J!-m>!|CzeVR-(Amorokh;S#B^57mOnbHA3^0Uw~P*I z%V;dWnI7POEeq!6ag43zp3}dy-71!M3%aXTqZ$m46GJr&hy$;)CPKk7OHY z#2F0_InZpN&)E#?Qin5K{f)5=SnCz5-vkZ~$@#y;-z5_*{B4YbSUD)-sQ7zq{#>0G zA^6+#FbyxxIbRT1pnLI;NAljC;nUQ5xm%5g_s4jpR`|hL{WePlin?N-AB1DM-%0HX zUguI^xtv-tajxv|O$GH;WFVomWWPiSwar^Js|jm*Mxx*`j2b^=*Y>29O@&vDQP z@|B7l&68Ani1Gb>Y2{QC2nV!U5zOy@FT-Y(OV@2`*zxpI>>>Wk zF!)@{=c@n^Q;hQqy=WZ9RG0s9-O(UiLj$jS;5lp)yu4E`aoD;_5bW}efcTVEy`dDx zD;p_)neX>&E#pfvn~=wy?_2}rM9#ngR}2!0 z{A8=O!2M{o0`?m*5qGKZn= zEls3o=YjVHv*!nkYc2+WggfBbozZ8P5`v(fLl&{f+#236&7g{flG{L^ryr9PUh|Qi z5~eaBMw=}y=mBIB%;pu?G6x&Wg@oEr;XpE;Ywnjpz_SL)FHt_>W-K`1c?9<%wfxRG zSMbI^ItON}3vs4v<*-286wv}uJROb$ty5Q$qA`=VZ!{7j1-1O3v%0N(H5{jr7DBQU zRkTQ^`NcN)p}gt)$dngrSq>6loIJX+Wad)u6X6UBsJwj0WpJ!0nl8d9dX*y8#_S&= zFG8NBFlyAS0jqGH)l%luHKg5@_!vq6-j4{JoDM0n6~*EqU?$R2pj~m!W-7|!yrqV? z8-s7I)lDUor|U=}lst`2wZdnVN5O93eMUoQ86ZOC)1keLIe!w7?9$6k%A@!p>Ho3$ zE0WX>p+92<3=@32?sC z52aDeLnWWFv#xK>9VSgBk{trk0UBFuDQ?jW00Fer) z&H4l$08fhFm6C;k=Q=_g;Mst-D8I``CCNalD>^4?V5F^qN&pP$t-$Ls>MsF>=n}dM zARV{ANqY>#9ffy5m~gHXu-1mmsZgIxC+3uCfuDsd<&M8DP&|wWQa5em=c!6TZqI*5$)6!8v)W z!e@y;6jGrFQ&(_6ie7^_FGj{yPdBI)L71uL9GqEsc~U9j4}-Aom1kB~M8I@bB;U6u zTpOERZ29sSE#+#EcMgE4r!B(T@vkC`d1^4>mH0{>PM5FYzVE`BG4#&ut24iX=pvhs z+t_?6WswO_$GQJhbPipB0mjtNEd%?Ja}LjQaaA2i_6{sWN>6ouhP`vn+1oKebIs0R z2~$G=~dUqbm}5#S<8AH3+O zV#JtE=3exf_p=x=qSg>2tPSKySYBGiSp~93G<&24= zo<9-dp;oa3jIa|^{Rp~06X zmC`><3yi`2XcB16w+`piw2y;N-$DB)^I0ECSo^Jfdq3&95<>QsGzZ>q&*y zX{yzxR4BAgi-U(4eK%YJL48WoL$?AS5*p-V=TBIo7&VeiA;d?+IYaSZ$2Wg%!oM~q zul!n^`J5i^LwIJSrT*%tN2T|Z+M8>?+;bL~Ed?=~aX>3h)y_=vETD_&pO&X2g%`vR z>K7f)&E|Nnk?~xN@#Nt=0MAhe^K@o(Fxl2%PR3v+YR)@r)re~JUh6TOn)u;F{kx6` z-_TC}XYk!7JjEQ(BmwLKj7LG%gDH#v4HgE|QU!txoV^L>#VVdxa26XJl*3@~eBxQ< z=>lkW`!5H{OLzBZhCMZR`g~Vl2=E|H(w&FjXfeF#_>6d+c$rw>ua`MQ(f7kY?U?p4 z!+Q-|{P|F3iGG=0r9_Gqu6!|`pKa)FS zahyMsMt>%1(XMJlezd9SdZ%=7V1yEt?p89;Fn=OLBKott(fPtGR;ulR{1?Q0$XWXh zIZMC19fd5IS$8?BjeN@}R0{u}IL4;5#$syN|E6P|rxi%d%ozNP-QQXA@x^N1W%-Y4 zA347LvqPvem(aAQcHqqiim{0}3C2(|;G}tGB{TpP2-!P|kbq4j4pWDS05AJ0yo8%y zb8cCd!t>`2BXHhVkB}9Ue|H6-NH_4cFn9vI3-olsKo zOVKm8LMeENg|Zvkpig~$sOVU2r+(e>FrL7AVxIc7ez|y4R7MM?5fK7?PBjX~oZ9qf zl#cQnn8Ym0ONaac5pq;CUz;iK{!J!M`R?G1QkXdb?$GW~twiw^9-?(AvLE99KJsTS z@Mln~lz&LANmpw-H)RY+ZPN6qHLtnz-U=q8% z2gNq>BVLbTj18rww#<+COYBFtnETQ7E&0W-YlUaBc&OF52jPb29SpdGkz&f=x*$-s zaR2R;Vbbg6-oMB0K^8qd;&}dJ{_(^R-HXg2d1Z?ouJG>ML&Q7ouNf#}jVZE7?XT8@ zUFv}izmK)yJ|DB;J{LP!8~sY8fBvue{VPp=Uu(I3=U^y``MdRkqb}BO(#*wL;jL@I z_#b<{ehGf)-UH@(wYIOBl^x3|VnK+M!;va|*rtV50>~FK-rh%!u z4=$wJ=|YMVvJ$$EN`NsE?=sjXMjWIhSmsm&O~!C87QmKce?4?&|jxP$1?I(=icDNS-tfRBF9(%Y~F4aGEs^A=i9)h_)99u)^u4xJ5-_VT-Zz%rl zYK(hqXvo1sCJXyt&gZkk)OFXUylmf@93* z$61Nzv+Ts9&1dKP6V9i|d%_kWTdWv|~F9uh~75J18hw^jP) z)<>m@7azvtNQ@h@zy9dCGQrOKmPweS^0m;PWADGT*C#~KczDW!_{N-njavT^&@l8? zls0^(DbI)l4)o-(gJ}IVl%QB^A|a#k-2U4eI+ggn&X#(JL8c#`jb1B##LtVbDhZTD zkV;VW5hm^23vwoIsf>4q)wUCzw=PEhgarBru@1YFcai3PfbX~+%R#9v=4h2aJkpF1}>jB5Q0GrWwear7;pS2 z6X;t+MR-(w%dz!^${+P2z@j0qIp^>+GiX^{3o+OH%e3?@@KsZa!B_<-b%D<6Fp7e* z$Lc{%eanSAMUIHkw?y@$5C?xDeGB3

L_a9I)-q-&1z2s9K^2p2Hj9u2|L+2c37M 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 z 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 m3h%x8>x3FyTk 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 z

EhaouTwfs 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 S%YU)hxn8ho)0bbmKmH%clqR$Q literal 0 HcmV?d00001 diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/build.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/build.dart new file mode 100644 index 000000000..6cf2d9299 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/build.dart @@ -0,0 +1,53 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:io'; + +import 'package:logging/logging.dart'; +import 'package:native_assets_cli/native_assets_cli.dart'; +import 'package:native_toolchain_c/native_toolchain_c.dart'; + +const packageName = 'treeshaking_native_assets'; + +void main(List arguments) async { + await build(arguments, (config, output) async { + final cbuilder = CBuilder.library( + name: packageName, + assetName: 'staticlib', + sources: [ + 'src/native_add.c', + 'src/native_multiply.c', + ], + dartBuildFiles: ['hook/build.dart'], + linkModePreference: LinkModePreference.static, + ); + await cbuilder.run( + buildConfig: config, + buildOutput: output, + logger: Logger('') + ..level = Level.ALL + ..onRecord.listen((record) { + print('${record.level.name}: ${record.time}: ${record.message}'); + }), + linkInPackage: packageName, + ); + _placeholderAsset(config, output); + }); +} + +void _placeholderAsset(BuildConfig config, BuildOutput output) { + final uri = config.outputDirectory.resolve( + config.targetOS.libraryFileName(packageName, DynamicLoadingBundled())); + File.fromUri(uri).createSync(recursive: true); + output.addAsset( + NativeCodeAsset( + package: packageName, + name: 'src/${packageName}_bindings.dart', + linkMode: DynamicLoadingBundled(), + file: uri, + os: config.targetOS, + ), + linkInPackage: packageName, + ); +} diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart new file mode 100644 index 000000000..5f35eeb99 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart @@ -0,0 +1,66 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:io'; + +import 'package:native_assets_cli/native_assets_cli.dart'; + +const packageName = 'treeshaking_native_assets'; + +void main(List arguments) async { + await link(arguments, (config, output) async { + final usedSymbols = + config.resources.map((resource) => resource.metadata.toString()); + final dynamicLibrary = config.assets.firstWhere( + (asset) => asset.id.endsWith('src/${packageName}_bindings.dart')); + final staticLibrary = + config.assets.firstWhere((asset) => asset.id.endsWith('staticlib')); + + final linkerScript = await _writeLinkerScript(usedSymbols); + await _treeshakeStaticLibrary( + usedSymbols, + linkerScript, + dynamicLibrary, + staticLibrary, + ); + output.addAsset(dynamicLibrary); + output.addDependency(config.packageRoot.resolve('hook/link.dart')); + }); +} + +Future _treeshakeStaticLibrary( + Iterable symbols, + Uri symbolsUri, + Asset dynamicLibrary, + Asset staticLibrary, +) async { + File.fromUri(dynamicLibrary.file!).deleteSync(); + final arguments = [ + '-fPIC', + '-shared', + ...symbols.map((symbol) => ['-u', symbol]).expand((e) => e), + '--version-script=${symbolsUri.toFilePath()}', + '--gc-sections', + '--strip-debug', + ...['-o', (dynamicLibrary.file!.toFilePath())], + staticLibrary.file!.toFilePath(), + ]; + await Process.run('ld', arguments); +} + +Future _writeLinkerScript(Iterable symbols) async { + final tempDir = await Directory.systemTemp.createTemp(); + const symbolsFile = 'symbols.lds'; + final symbolsUri = tempDir.uri.resolve(symbolsFile); + final linkerScript = File.fromUri(symbolsUri)..createSync(); + final contents = '''{ + global: +${symbols.map((symbol) => ' ' + symbol + ';').join('\n')} + local: + *; +}; +'''; + linkerScript.writeAsStringSync(contents); + return symbolsUri; +} diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets.dart new file mode 100644 index 000000000..1963f09ce --- /dev/null +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets.dart @@ -0,0 +1,14 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:meta/meta.dart'; + +import 'treeshaking_native_assets_bindings.dart' as bindings; + +class MyMath { + @ResourceIdentifier('add') + static int add(int a, int b) => bindings.add(a, b); + @ResourceIdentifier('multiply') + static int multiply(int a, int b) => bindings.multiply(a, b); +} diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets_bindings.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets_bindings.dart new file mode 100644 index 000000000..dcf55de33 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets_bindings.dart @@ -0,0 +1,17 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:ffi' as ffi; + +@ffi.Native(symbol: 'add') +external int add( + int a, + int b, +); + +@ffi.Native(symbol: 'multiply') +external int multiply( + int a, + int b, +); diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/treeshaking_native_assets.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/treeshaking_native_assets.dart new file mode 100644 index 000000000..6b7188f81 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/treeshaking_native_assets.dart @@ -0,0 +1,5 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +export 'src/treeshaking_native_assets.dart'; diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/pubspec.yaml b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/pubspec.yaml new file mode 100644 index 000000000..0d776efe7 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/pubspec.yaml @@ -0,0 +1,22 @@ +name: treeshaking_native_assets +description: A sample on how to treeshake symbols using a build/link combo. +version: 1.0.0 + +publish_to: none + +environment: + sdk: ^3.4.0-257.0.dev + +dependencies: + logging: ^1.1.1 + # native_assets_cli: ^0.5.0 + meta: ^1.12.0 + native_assets_cli: + path: ../../../native_assets_cli/ + # native_toolchain_c: ^0.4.0 + native_toolchain_c: + path: ../../../native_toolchain_c/ + +dev_dependencies: + lints: ^3.0.0 + test: ^1.24.0 diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_add.c b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_add.c new file mode 100644 index 000000000..3c47d5220 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_add.c @@ -0,0 +1,9 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#include "native_add.h" + +int32_t add(int32_t a, int32_t b) { + return a + b; +} diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_add.h b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_add.h new file mode 100644 index 000000000..275878fe8 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_add.h @@ -0,0 +1,13 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#include + +#if _WIN32 +#define MYLIB_EXPORT __declspec(dllexport) +#else +#define MYLIB_EXPORT +#endif + +MYLIB_EXPORT int32_t add(int32_t a, int32_t b); diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_multiply.c b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_multiply.c new file mode 100644 index 000000000..37ad92677 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_multiply.c @@ -0,0 +1,9 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#include "native_multiply.h" + +MYLIB_EXPORT intptr_t multiply(intptr_t a, intptr_t b) { + return a * b; +} diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_multiply.h b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_multiply.h new file mode 100644 index 000000000..1c326f4ca --- /dev/null +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_multiply.h @@ -0,0 +1,13 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#include + +#if _WIN32 +#define MYLIB_EXPORT __declspec(dllexport) +#else +#define MYLIB_EXPORT +#endif + +MYLIB_EXPORT intptr_t multiply(intptr_t a, intptr_t b); From e1979e5d4d45bb19796ed31a9eab3449e48547f2 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 4 Apr 2024 16:47:58 +0200 Subject: [PATCH 121/187] Add dependencies to linkoutput --- pkgs/native_assets_cli/lib/src/api/link_output.dart | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkgs/native_assets_cli/lib/src/api/link_output.dart b/pkgs/native_assets_cli/lib/src/api/link_output.dart index 46a82f1c0..5270729f0 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_output.dart @@ -24,6 +24,18 @@ abstract final class LinkOutput { /// link will be re-run. Iterable get dependencies; + /// Adds file used by this link. + /// + /// If any of the files are modified after [timestamp], the link will be + /// re-run. + void addDependency(Uri dependency); + + /// Adds files used by this link. + /// + /// If any of the files are modified after [timestamp], the link will be + /// re-run. + void addDependencies(Iterable dependencies); + /// Adds [Asset]s produced by this link or dry run. void addAsset(Asset asset); From c9f9e301763c974a907dbe9c85b52119c589fc80 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 4 Apr 2024 16:48:14 +0200 Subject: [PATCH 122/187] Adapt cbuilder to linking static libraries --- .../lib/src/cbuilder/cbuilder.dart | 35 +++++---- .../lib/src/cbuilder/run_cbuilder.dart | 78 ++++++++++++++----- 2 files changed, 80 insertions(+), 33 deletions(-) diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart index 9e0683b1b..374cd2e1a 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart @@ -152,6 +152,8 @@ class CBuilder implements Builder { /// | Fuchsia | `c++` | final String? cppLinkStdLib; + final LinkModePreference? linkModePreference; + CBuilder.library({ required this.name, required this.assetName, @@ -167,6 +169,7 @@ class CBuilder implements Builder { this.std, this.language = Language.c, this.cppLinkStdLib, + this.linkModePreference, }) : _type = _CBuilderType.library; CBuilder.executable({ @@ -185,7 +188,8 @@ class CBuilder implements Builder { }) : _type = _CBuilderType.executable, assetName = null, installName = null, - pic = pie; + pic = pie, + linkModePreference = null; /// Runs the C Compiler with on this C build spec. /// @@ -195,11 +199,13 @@ class CBuilder implements Builder { required BuildConfig buildConfig, required BuildOutput buildOutput, required Logger? logger, + String? linkInPackage, }) async { final outDir = buildConfig.outputDirectory; final packageRoot = buildConfig.packageRoot; await Directory.fromUri(outDir).create(recursive: true); - final linkMode = _linkMode(buildConfig.linkModePreference); + final linkMode = + _linkMode(linkModePreference ?? buildConfig.linkModePreference); final libUri = outDir.resolve(buildConfig.targetOS.libraryFileName(name, linkMode)); final exeUri = @@ -247,17 +253,20 @@ class CBuilder implements Builder { } if (assetName != null) { - buildOutput.addAssets([ - NativeCodeAsset( - package: buildConfig.packageName, - name: assetName!, - file: libUri, - linkMode: linkMode, - os: buildConfig.targetOS, - architecture: - buildConfig.dryRun ? null : buildConfig.targetArchitecture, - ) - ]); + buildOutput.addAssets( + [ + NativeCodeAsset( + package: buildConfig.packageName, + name: assetName!, + file: libUri, + linkMode: linkMode, + os: buildConfig.targetOS, + architecture: + buildConfig.dryRun ? null : buildConfig.targetArchitecture, + ) + ], + linkInPackage: linkInPackage, + ); } if (!buildConfig.dryRun) { final includeFiles = await Stream.fromIterable(includes) diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart index 6f5fdbbad..531816597 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart @@ -121,30 +121,81 @@ class RunCBuilder { archiver_ = await archiver(); } - late final IOSSdk targetIosSdk; + final IOSSdk? targetIosSdk; if (buildConfig.targetOS == OS.iOS) { targetIosSdk = buildConfig.targetIOSSdk; + } else { + targetIosSdk = null; } // The Android Gradle plugin does not honor API level 19 and 20 when // invoking clang. Mimic that behavior here. // See https://github.com/dart-lang/native/issues/171. - late final int targetAndroidNdkApi; + final int? targetAndroidNdkApi; if (buildConfig.targetOS == OS.android) { final minimumApi = buildConfig.targetArchitecture == Architecture.riscv64 ? 35 : 21; targetAndroidNdkApi = max(buildConfig.targetAndroidNdkApi!, minimumApi); + } else { + targetAndroidNdkApi = null; } final architecture = buildConfig.targetArchitecture; + final sourceFiles = sources.map((e) => e.toFilePath()).toList(); + final objectFiles = []; + if (dynamicLibrary != null) { + await _compile( + compiler, + architecture, + targetAndroidNdkApi, + targetIosSdk, + sourceFiles, + outDir.resolveUri(dynamicLibrary!), + ); + } else if (staticLibrary != null) { + for (var i = 0; i < sourceFiles.length; i++) { + final objectFile = outDir.resolve('out$i.o'); + await _compile( + compiler, + architecture, + targetAndroidNdkApi, + targetIosSdk, + [sourceFiles[i]], + objectFile, + ); + objectFiles.add(objectFile); + } + } + if (staticLibrary != null) { + await runProcess( + executable: archiver_!, + arguments: [ + 'rc', + outDir.resolveUri(staticLibrary!).toFilePath(), + ...objectFiles.map((objectFile) => objectFile.toFilePath()), + ], + logger: logger, + captureOutput: false, + throwOnUnexpectedExitCode: true, + ); + } + } + Future _compile( + ToolInstance compiler, + Architecture? architecture, + int? targetAndroidNdkApi, + IOSSdk? targetIosSdk, + Iterable sourceFiles, + Uri outFile, + ) async { await runProcess( executable: compiler.uri, arguments: [ if (buildConfig.targetOS == OS.android) ...[ '--target=' '${androidNdkClangTargetFlags[architecture]!}' - '$targetAndroidNdkApi', + '$targetAndroidNdkApi!', '--sysroot=${androidSysroot(compiler).toFilePath()}', ], if (buildConfig.targetOS == OS.macOS) @@ -153,7 +204,7 @@ class RunCBuilder { '--target=${appleClangIosTargetFlags[architecture]![targetIosSdk]!}', if (buildConfig.targetOS == OS.iOS) ...[ '-isysroot', - (await iosSdk(targetIosSdk, logger: logger)).toFilePath(), + (await iosSdk(targetIosSdk!, logger: logger)).toFilePath(), ], if (buildConfig.targetOS == OS.macOS) ...[ '-isysroot', @@ -196,7 +247,7 @@ class RunCBuilder { for (final MapEntry(key: name, :value) in defines.entries) if (value == null) '-D$name' else '-D$name=$value', for (final include in includes) '-I${include.toFilePath()}', - ...sources.map((e) => e.toFilePath()), + ...sourceFiles, if (executable != null) ...[ '-o', outDir.resolveUri(executable!).toFilePath(), @@ -204,30 +255,17 @@ class RunCBuilder { if (dynamicLibrary != null) ...[ '--shared', '-o', - outDir.resolveUri(dynamicLibrary!).toFilePath(), + outFile.toFilePath(), ] else if (staticLibrary != null) ...[ '-c', '-o', - outDir.resolve('out.o').toFilePath(), + outFile.toFilePath(), ], ], logger: logger, captureOutput: false, throwOnUnexpectedExitCode: true, ); - if (staticLibrary != null) { - await runProcess( - executable: archiver_!, - arguments: [ - 'rc', - outDir.resolveUri(staticLibrary!).toFilePath(), - outDir.resolve('out.o').toFilePath(), - ], - logger: logger, - captureOutput: false, - throwOnUnexpectedExitCode: true, - ); - } } Future runCl({required ToolInstance compiler}) async { From 1d61a3570840eaa2f7b2d96046842001d6ff11ec Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 4 Apr 2024 16:55:23 +0200 Subject: [PATCH 123/187] Add to workflow --- .github/workflows/native.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml index ebb53964c..b7d262898 100644 --- a/.github/workflows/native.yaml +++ b/.github/workflows/native.yaml @@ -89,6 +89,9 @@ jobs: - run: dart pub get -C test_data/complex_link_helper/ if: ${{ matrix.package == 'native_assets_builder' }} + - run: dart pub get -C test_data/treeshaking_native_assets/ + if: ${{ matrix.package == 'native_assets_builder' }} + - run: dart pub get -C example/build/native_add_app/ if: ${{ matrix.package == 'native_assets_cli' }} From 348adba4f631c79a3bc7911e6d99ef8b2eee6d7a Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 4 Apr 2024 17:04:22 +0200 Subject: [PATCH 124/187] Remove example SDK constraint --- .../test_data/treeshaking_native_assets/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/pubspec.yaml b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/pubspec.yaml index 0d776efe7..90ea2611d 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/pubspec.yaml @@ -5,7 +5,7 @@ version: 1.0.0 publish_to: none environment: - sdk: ^3.4.0-257.0.dev + sdk: ^3.0.0 dependencies: logging: ^1.1.1 From 628b76a1700bf0518d068b6e298568122c911c74 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 8 Apr 2024 14:50:12 +0200 Subject: [PATCH 125/187] Small changes --- .../lib/src/cbuilder/cbuilder.dart | 25 ++++++------ .../lib/src/cbuilder/run_cbuilder.dart | 1 + .../lib/src/native_toolchain/recognizer.dart | 20 +++++----- .../test/cbuilder/compiler_resolver_test.dart | 38 +++++++++---------- 4 files changed, 41 insertions(+), 43 deletions(-) diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart index 374cd2e1a..1ab2dca27 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart @@ -253,20 +253,17 @@ class CBuilder implements Builder { } if (assetName != null) { - buildOutput.addAssets( - [ - NativeCodeAsset( - package: buildConfig.packageName, - name: assetName!, - file: libUri, - linkMode: linkMode, - os: buildConfig.targetOS, - architecture: - buildConfig.dryRun ? null : buildConfig.targetArchitecture, - ) - ], - linkInPackage: linkInPackage, - ); + buildOutput.addAssets([ + NativeCodeAsset( + package: buildConfig.packageName, + name: assetName!, + file: libUri, + linkMode: linkMode, + os: buildConfig.targetOS, + architecture: + buildConfig.dryRun ? null : buildConfig.targetArchitecture, + ) + ], linkInPackage: linkInPackage); } if (!buildConfig.dryRun) { final includeFiles = await Stream.fromIterable(includes) diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart index 531816597..aa3ee45ef 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart @@ -166,6 +166,7 @@ class RunCBuilder { objectFiles.add(objectFile); } } + if (staticLibrary != null) { await runProcess( executable: archiver_!, diff --git a/pkgs/native_toolchain_c/lib/src/native_toolchain/recognizer.dart b/pkgs/native_toolchain_c/lib/src/native_toolchain/recognizer.dart index e4232e998..4080f5e93 100644 --- a/pkgs/native_toolchain_c/lib/src/native_toolchain/recognizer.dart +++ b/pkgs/native_toolchain_c/lib/src/native_toolchain/recognizer.dart @@ -3,7 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:logging/logging.dart'; -import 'package:native_assets_cli/native_assets_cli.dart' as cli; +import 'package:native_assets_cli/native_assets_cli.dart'; import '../tool/tool.dart'; import '../tool/tool_instance.dart'; @@ -11,7 +11,7 @@ import '../tool/tool_resolver.dart'; import 'apple_clang.dart'; import 'clang.dart'; import 'gcc.dart'; -import 'msvc.dart'; +import 'msvc.dart' as msvc; class CompilerRecognizer implements ToolResolver { final Uri uri; @@ -20,7 +20,7 @@ class CompilerRecognizer implements ToolResolver { @override Future> resolve({required Logger? logger}) async { - final os = cli.OS.current; + final os = OS.current; logger?.finer('Trying to recognize $uri.'); final filePath = uri.toFilePath(); Tool? tool; @@ -35,7 +35,7 @@ class CompilerRecognizer implements ToolResolver { tool = clang; } } else if (filePath.endsWith('cl.exe')) { - tool = cl; + tool = msvc.cl; } if (tool != null) { @@ -46,7 +46,7 @@ class CompilerRecognizer implements ToolResolver { toolInstance, logger: logger, arguments: [ - if (tool != cl) '--version', + if (tool != msvc.cl) '--version', ], ), ]; @@ -64,7 +64,7 @@ class LinkerRecognizer implements ToolResolver { @override Future> resolve({required Logger? logger}) async { - final os = cli.OS.current; + final os = OS.current; logger?.finer('Trying to recognize $uri.'); final filePath = uri.toFilePath(); Tool? tool; @@ -75,7 +75,7 @@ class LinkerRecognizer implements ToolResolver { } else if (filePath.endsWith(os.executableFileName('ld'))) { tool = appleLd; } else if (filePath.endsWith('link.exe')) { - tool = link; + tool = msvc.link; } if (tool != null) { @@ -89,7 +89,7 @@ class LinkerRecognizer implements ToolResolver { ), ]; } - if (tool == link) { + if (tool == msvc.link) { return [ await CliVersionResolver.lookupVersion( toolInstance, @@ -115,7 +115,7 @@ class ArchiverRecognizer implements ToolResolver { @override Future> resolve({required Logger? logger}) async { logger?.finer('Trying to recognize $uri.'); - final os = cli.OS.current; + final os = OS.current; final filePath = uri.toFilePath(); Tool? tool; if (filePath.contains('-gcc-ar')) { @@ -125,7 +125,7 @@ class ArchiverRecognizer implements ToolResolver { } else if (filePath.endsWith(os.executableFileName('ar'))) { tool = appleAr; } else if (filePath.endsWith('lib.exe')) { - tool = lib; + tool = msvc.lib; } if (tool != null) { diff --git a/pkgs/native_toolchain_c/test/cbuilder/compiler_resolver_test.dart b/pkgs/native_toolchain_c/test/cbuilder/compiler_resolver_test.dart index 6d2485189..1a2d40860 100644 --- a/pkgs/native_toolchain_c/test/cbuilder/compiler_resolver_test.dart +++ b/pkgs/native_toolchain_c/test/cbuilder/compiler_resolver_test.dart @@ -9,11 +9,11 @@ library; import 'package:collection/collection.dart'; -import 'package:native_assets_cli/native_assets_cli.dart' as cli; +import 'package:native_assets_cli/native_assets_cli.dart'; import 'package:native_toolchain_c/src/cbuilder/compiler_resolver.dart'; import 'package:native_toolchain_c/src/native_toolchain/apple_clang.dart'; import 'package:native_toolchain_c/src/native_toolchain/clang.dart'; -import 'package:native_toolchain_c/src/native_toolchain/msvc.dart'; +import 'package:native_toolchain_c/src/native_toolchain/msvc.dart' as msvc; import 'package:native_toolchain_c/src/tool/tool_error.dart'; import 'package:test/test.dart'; @@ -24,31 +24,31 @@ void main() { final tempUri = await tempDirForTest(); final ar = [ ...await appleAr.defaultResolver!.resolve(logger: logger), - ...await lib.defaultResolver!.resolve(logger: logger), + ...await msvc.lib.defaultResolver!.resolve(logger: logger), ...await llvmAr.defaultResolver!.resolve(logger: logger), ].first.uri; final cc = [ ...await appleClang.defaultResolver!.resolve(logger: logger), - ...await cl.defaultResolver!.resolve(logger: logger), + ...await msvc.cl.defaultResolver!.resolve(logger: logger), ...await clang.defaultResolver!.resolve(logger: logger), ].first.uri; final ld = [ ...await appleLd.defaultResolver!.resolve(logger: logger), - ...await link.defaultResolver!.resolve(logger: logger), + ...await msvc.link.defaultResolver!.resolve(logger: logger), ...await lld.defaultResolver!.resolve(logger: logger), ].first.uri; final envScript = [ - ...await vcvars64.defaultResolver!.resolve(logger: logger) + ...await msvc.vcvars64.defaultResolver!.resolve(logger: logger) ].firstOrNull?.uri; - final buildConfig = cli.BuildConfig.build( + final buildConfig = BuildConfig.build( outputDirectory: tempUri, packageName: 'dummy', packageRoot: tempUri, - targetArchitecture: cli.Architecture.current, - targetOS: cli.OS.current, - buildMode: cli.BuildMode.release, - linkModePreference: cli.LinkModePreference.dynamic, - cCompiler: cli.CCompilerConfig( + targetArchitecture: Architecture.current, + targetOS: OS.current, + buildMode: BuildMode.release, + linkModePreference: LinkModePreference.dynamic, + cCompiler: CCompilerConfig( archiver: ar, compiler: cc, linker: ld, @@ -64,20 +64,20 @@ void main() { test('No compiler found', () async { final tempUri = await tempDirForTest(); - final buildConfig = cli.BuildConfig.build( + final buildConfig = BuildConfig.build( outputDirectory: tempUri, packageName: 'dummy', packageRoot: tempUri, - targetArchitecture: cli.Architecture.arm64, - targetOS: cli.OS.windows, - buildMode: cli.BuildMode.release, - linkModePreference: cli.LinkModePreference.dynamic, + targetArchitecture: Architecture.arm64, + targetOS: OS.windows, + buildMode: BuildMode.release, + linkModePreference: LinkModePreference.dynamic, ); final resolver = CompilerResolver( buildConfig: buildConfig, logger: logger, - hostOS: cli.OS.android, // This is never a host. - hostArchitecture: cli.Architecture.arm64, // This is never a host. + hostOS: OS.android, // This is never a host. + hostArchitecture: Architecture.arm64, // This is never a host. ); expect(resolver.resolveCompiler, throwsA(isA())); expect(resolver.resolveArchiver, throwsA(isA())); From 9d380ecd7f9582c020c9fc452839b70cc6d59de3 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 8 Apr 2024 15:02:30 +0200 Subject: [PATCH 126/187] Fix error --- .../lib/src/cbuilder/run_cbuilder.dart | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart index aa3ee45ef..634a46f7c 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart @@ -143,16 +143,7 @@ class RunCBuilder { final architecture = buildConfig.targetArchitecture; final sourceFiles = sources.map((e) => e.toFilePath()).toList(); final objectFiles = []; - if (dynamicLibrary != null) { - await _compile( - compiler, - architecture, - targetAndroidNdkApi, - targetIosSdk, - sourceFiles, - outDir.resolveUri(dynamicLibrary!), - ); - } else if (staticLibrary != null) { + if (staticLibrary != null) { for (var i = 0; i < sourceFiles.length; i++) { final objectFile = outDir.resolve('out$i.o'); await _compile( @@ -165,6 +156,15 @@ class RunCBuilder { ); objectFiles.add(objectFile); } + } else { + await _compile( + compiler, + architecture, + targetAndroidNdkApi, + targetIosSdk, + sourceFiles, + dynamicLibrary != null ? outDir.resolveUri(dynamicLibrary!) : null, + ); } if (staticLibrary != null) { @@ -188,7 +188,7 @@ class RunCBuilder { int? targetAndroidNdkApi, IOSSdk? targetIosSdk, Iterable sourceFiles, - Uri outFile, + Uri? outFile, ) async { await runProcess( executable: compiler.uri, @@ -256,11 +256,11 @@ class RunCBuilder { if (dynamicLibrary != null) ...[ '--shared', '-o', - outFile.toFilePath(), + outFile!.toFilePath(), ] else if (staticLibrary != null) ...[ '-c', '-o', - outFile.toFilePath(), + outFile!.toFilePath(), ], ], logger: logger, From 90bdc300f8ad3d228782e7fc6ccebd2935ff9b19 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 8 Apr 2024 17:23:08 +0200 Subject: [PATCH 127/187] Fix error --- pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart index 634a46f7c..c26b89b50 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart @@ -196,7 +196,7 @@ class RunCBuilder { if (buildConfig.targetOS == OS.android) ...[ '--target=' '${androidNdkClangTargetFlags[architecture]!}' - '$targetAndroidNdkApi!', + '${targetAndroidNdkApi!}', '--sysroot=${androidSysroot(compiler).toFilePath()}', ], if (buildConfig.targetOS == OS.macOS) From 35ce8c8faeef38de57446e34ed8025c492f86bca Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 8 Apr 2024 09:42:31 -0700 Subject: [PATCH 128/187] Fix paths for windows --- .../use_dart_api/test/use_dart_api_test.dart | 4 +- .../lib/src/model/resource_identifiers.dart | 12 +- .../test/api/resource_data.dart | 79 ++++++----- .../test/model/asset_test.dart | 131 ++++++++---------- .../test/model/build_config_test.dart | 59 ++++---- .../test/model/build_output_test.dart | 124 ++++++++--------- .../test/model/resource_identifiers_test.dart | 8 +- 7 files changed, 192 insertions(+), 225 deletions(-) diff --git a/pkgs/native_assets_cli/example/build/use_dart_api/test/use_dart_api_test.dart b/pkgs/native_assets_cli/example/build/use_dart_api/test/use_dart_api_test.dart index dfd9c2357..b8dfaec1c 100644 --- a/pkgs/native_assets_cli/example/build/use_dart_api/test/use_dart_api_test.dart +++ b/pkgs/native_assets_cli/example/build/use_dart_api/test/use_dart_api_test.dart @@ -4,14 +4,14 @@ import 'dart:ffi'; -import 'package:use_dart_api/use_dart_api.dart'; import 'package:test/test.dart'; +import 'package:use_dart_api/use_dart_api.dart'; void main() { InitDartApiDL(NativeApi.initializeApiDLData); test('use dart_api_dl.h', () { - const int x = 42; + const x = 42; final persistentHandle = NewPersistentHandle(x); HandleFromPersistent(persistentHandle); }); diff --git a/pkgs/native_assets_cli/lib/src/model/resource_identifiers.dart b/pkgs/native_assets_cli/lib/src/model/resource_identifiers.dart index 7926142b6..da509e8c1 100644 --- a/pkgs/native_assets_cli/lib/src/model/resource_identifiers.dart +++ b/pkgs/native_assets_cli/lib/src/model/resource_identifiers.dart @@ -57,7 +57,7 @@ class ResourceIdentifiers { class Identifier { final String name; final String id; - final String uri; + final Uri uri; final bool nonConstant; final List files; @@ -72,7 +72,7 @@ class Identifier { Map toJson() => { 'name': name, 'id': id, - 'uri': uri, + 'uri': uri.toFilePath(), 'nonConstant': nonConstant, 'files': files.map((x) => x.toJson()).toList(), }; @@ -84,7 +84,7 @@ class Identifier { factory Identifier.fromJson(Map map) => Identifier( name: map['name'] as String, id: map['id'] as String, - uri: map['uri'] as String, + uri: Uri.file(map['uri'] as String), nonConstant: map['nonConstant'] as bool, files: List.from((map['files'] as List) .map((e) => e as Map) @@ -149,7 +149,7 @@ class ResourceFile { } class ResourceReference { - final String uri; + final Uri uri; final int line; final int column; final Map arguments; @@ -163,7 +163,7 @@ class ResourceReference { Map toJson() => { '@': { - 'uri': uri, + 'uri': uri.toFilePath(), 'line': line, 'column': column, }, @@ -177,7 +177,7 @@ class ResourceReference { factory ResourceReference.fromJson(Map map) { final submap = map['@'] as Map; return ResourceReference( - uri: submap['uri'] as String, + uri: Uri.file(submap['uri'] as String), line: submap['line'] as int, column: submap['column'] as int, arguments: Map.from(map)..remove('@'), diff --git a/pkgs/native_assets_cli/test/api/resource_data.dart b/pkgs/native_assets_cli/test/api/resource_data.dart index a0ab9dba4..df7437f3b 100644 --- a/pkgs/native_assets_cli/test/api/resource_data.dart +++ b/pkgs/native_assets_cli/test/api/resource_data.dart @@ -13,12 +13,12 @@ final resourceIdentifiers = ResourceIdentifiers(identifiers: [ Identifier( name: 'methodName1', id: 'someMetadata', - uri: Uri.file('path/to/file').toFilePath(), + uri: Uri.file('path/to/file'), nonConstant: true, files: [ ResourceFile(part: 1, references: [ ResourceReference( - uri: Uri.file('path/to/reference').toFilePath(), + uri: Uri.file('path/to/reference'), line: 2, column: 4, arguments: { @@ -31,12 +31,12 @@ final resourceIdentifiers = ResourceIdentifiers(identifiers: [ Identifier( name: 'methodName2', id: 'someOtherMetadata', - uri: Uri.file('path/to/other/file').toFilePath(), + uri: Uri.file('path/to/other/file'), nonConstant: false, files: [ ResourceFile(part: 1, references: [ ResourceReference( - uri: Uri.file('path/to/reference').toFilePath(), + uri: Uri.file('path/to/reference'), line: 15, column: 3, arguments: { @@ -46,7 +46,7 @@ final resourceIdentifiers = ResourceIdentifiers(identifiers: [ ]), ResourceFile(part: 2, references: [ ResourceReference( - uri: Uri.file('path/to/reference').toFilePath(), + uri: Uri.file('path/to/reference'), line: 15, column: 3, arguments: { @@ -58,63 +58,62 @@ final resourceIdentifiers = ResourceIdentifiers(identifiers: [ ), ]); -const resourceIdentifiersJson = ''' -{ - "identifiers": [ +final resourceIdentifiersJson = { + 'identifiers': [ { - "name": "methodName1", - "id": "someMetadata", - "uri": "path/to/file", - "nonConstant": true, - "files": [ + 'name': 'methodName1', + 'id': 'someMetadata', + 'uri': Uri.file('path/to/file').toFilePath(), + 'nonConstant': true, + 'files': [ { - "part": 1, - "references": [ + 'part': 1, + 'references': [ { - "@": { - "uri": "path/to/reference", - "line": 2, - "column": 4 + '@': { + 'uri': Uri.file('path/to/reference').toFilePath(), + 'line': 2, + 'column': 4 }, - "1": "Some positional argument" + '1': 'Some positional argument' } ] } ] }, { - "name": "methodName2", - "id": "someOtherMetadata", - "uri": "path/to/other/file", - "nonConstant": false, - "files": [ + 'name': 'methodName2', + 'id': 'someOtherMetadata', + 'uri': Uri.file('path/to/other/file').toFilePath(), + 'nonConstant': false, + 'files': [ { - "part": 1, - "references": [ + 'part': 1, + 'references': [ { - "@": { - "uri": "path/to/reference", - "line": 15, - "column": 3 + '@': { + 'uri': Uri.file('path/to/reference').toFilePath(), + 'line': 15, + 'column': 3 }, - "namedIntParam": 1 + 'namedIntParam': 1 } ] }, { - "part": 2, - "references": [ + 'part': 2, + 'references': [ { - "@": { - "uri": "path/to/reference", - "line": 15, - "column": 3 + '@': { + 'uri': Uri.file('path/to/reference').toFilePath(), + 'line': 15, + 'column': 3 }, - "namedIntParam": 2 + 'namedIntParam': 2 } ] } ] } ] -}'''; +}; diff --git a/pkgs/native_assets_cli/test/model/asset_test.dart b/pkgs/native_assets_cli/test/model/asset_test.dart index 50c95d13a..aa5e6b476 100644 --- a/pkgs/native_assets_cli/test/model/asset_test.dart +++ b/pkgs/native_assets_cli/test/model/asset_test.dart @@ -2,8 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'dart:convert'; - import 'package:collection/collection.dart'; import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:test/test.dart'; @@ -109,86 +107,75 @@ void main() { uri: ${blaUri.toFilePath()} target: windows_x64'''; - final assetsJsonEncoding = ''' -[ - { - "architecture": "x64", - "file": "${fooUri.toFilePath()}", - "id": "package:my_package/foo", - "link_mode": { - "type": "dynamic_loading_bundle" + final assetsJsonEncoding = [ + { + 'architecture': 'x64', + 'file': fooUri.toFilePath(), + 'id': 'package:my_package/foo', + 'link_mode': {'type': 'dynamic_loading_bundle'}, + 'os': 'android', + 'type': 'native_code' + }, + { + 'architecture': 'x64', + 'id': 'package:my_package/foo3', + 'link_mode': { + 'type': 'dynamic_loading_system', + 'uri': foo3Uri.toFilePath() + }, + 'os': 'android', + 'type': 'native_code' }, - "os": "android", - "type": "native_code" - }, - { - "architecture": "x64", - "id": "package:my_package/foo3", - "link_mode": { - "type": "dynamic_loading_system", - "uri": "${foo3Uri.toFilePath()}" + { + 'architecture': 'x64', + 'id': 'package:my_package/foo4', + 'link_mode': {'type': 'dynamic_loading_executable'}, + 'os': 'android', + 'type': 'native_code' }, - "os": "android", - "type": "native_code" - }, - { - "architecture": "x64", - "id": "package:my_package/foo4", - "link_mode": { - "type": "dynamic_loading_executable" + { + 'architecture': 'x64', + 'id': 'package:my_package/foo5', + 'link_mode': {'type': 'dynamic_loading_process'}, + 'os': 'android', + 'type': 'native_code' }, - "os": "android", - "type": "native_code" - }, - { - "architecture": "x64", - "id": "package:my_package/foo5", - "link_mode": { - "type": "dynamic_loading_process" + { + 'architecture': 'arm64', + 'file': barUri.toFilePath(), + 'id': 'package:my_package/bar', + 'link_mode': {'type': 'static'}, + 'os': 'linux', + 'type': 'native_code' }, - "os": "android", - "type": "native_code" - }, - { - "architecture": "arm64", - "file": "${barUri.toFilePath()}", - "id": "package:my_package/bar", - "link_mode": { - "type": "static" + { + 'architecture': 'x64', + 'file': blaUri.toFilePath(), + 'id': 'package:my_package/bla', + 'link_mode': {'type': 'dynamic_loading_bundle'}, + 'os': 'windows', + 'type': 'native_code' }, - "os": "linux", - "type": "native_code" - }, - { - "architecture": "x64", - "file": "${blaUri.toFilePath()}", - "id": "package:my_package/bla", - "link_mode": { - "type": "dynamic_loading_bundle" + { + 'name': 'my_data_asset', + 'package': 'my_package', + 'file': Uri.file('path/to/data.txt').toFilePath(), + 'type': 'data' }, - "os": "windows", - "type": "native_code" - }, - { - "name": "my_data_asset", - "package": "my_package", - "file": "path/to/data.txt", - "type": "data" - }, - { - "name": "my_data_asset2", - "package": "my_package", - "file": "path/to/data.json", - "type": "data" - } -]'''; + { + 'name': 'my_data_asset2', + 'package': 'my_package', + 'file': Uri.file('path/to/data.json').toFilePath(), + 'type': 'data' + } + ]; test('asset yaml', () { - final json = const JsonEncoder.withIndent(' ').convert([ + final json = [ for (final item in assets) item.toJson(BuildOutputImpl.latestVersion) - ]).replaceAll('\\', '/'); + ]; expect(json, assetsJsonEncoding); - final assets2 = AssetImpl.listFromJson(jsonDecode(json) as List); + final assets2 = AssetImpl.listFromJson(json); expect(assets, assets2); }); diff --git a/pkgs/native_assets_cli/test/model/build_config_test.dart b/pkgs/native_assets_cli/test/model/build_config_test.dart index 205576880..fca954a0a 100644 --- a/pkgs/native_assets_cli/test/model/build_config_test.dart +++ b/pkgs/native_assets_cli/test/model/build_config_test.dart @@ -2,6 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'dart:convert'; import 'dart:io'; import 'package:cli_config/cli_config.dart'; @@ -240,44 +241,34 @@ void main() async { }, ); - final jsonString = buildConfig1.toJsonString(); - final expectedJsonString = '''{ - "build_mode": "release", - "c_compiler": { - "cc": "${fakeClang.toFilePath()}", - "ld": "${fakeLd.toFilePath()}" - }, - "dependency_metadata": { - "bar": { - "key": "value" - }, - "foo": { - "a": 321, - "z": [ - "z", - "a" - ] - } - }, - "link_mode_preference": "prefer-static", - "out_dir": "${outDir.toFilePath()}", - "package_name": "$packageName", - "package_root": "${tempUri.toFilePath()}", - "supported_asset_types": [ - "${NativeCodeAsset.type}" - ], - "target_architecture": "arm64", - "target_ios_sdk": "iphoneos", - "target_os": "ios", - "version": "${BuildConfigImpl.latestVersion}" -}'''; + final jsonObject = buildConfig1.toJson(); + final expectedJson = { + 'build_mode': 'release', + 'c_compiler': {'cc': fakeClang.toFilePath(), 'ld': fakeLd.toFilePath()}, + 'dependency_metadata': { + 'bar': {'key': 'value'}, + 'foo': { + 'a': 321, + 'z': ['z', 'a'] + } + }, + 'link_mode_preference': 'prefer-static', + 'out_dir': outDir.toFilePath(), + 'package_name': packageName, + 'package_root': tempUri.toFilePath(), + 'supported_asset_types': [NativeCodeAsset.type], + 'target_architecture': 'arm64', + 'target_ios_sdk': 'iphoneos', + 'target_os': 'ios', + 'version': '${BuildConfigImpl.latestVersion}' + }; expect( - jsonString.unescape(), - equals(expectedJsonString.unescape()), + jsonObject, + equals(expectedJson), ); final buildConfig2 = BuildConfigImpl.fromConfig( - Config.fromConfigFileContents(fileContents: jsonString), + Config.fromConfigFileContents(fileContents: jsonEncode(jsonObject)), ); expect(buildConfig2, buildConfig1); }); diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index d78af48c7..69b51a660 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -7,7 +7,6 @@ import 'dart:io'; import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:pub_semver/pub_semver.dart'; import 'package:test/test.dart'; - import '../helpers.dart'; void main() { @@ -97,82 +96,73 @@ assets: target: android_riscv64 version: 1.0.0'''; - final jsonEncoding = '''{ - "timestamp": "2022-11-10 13:25:01.000", - "assets": [ - { - "architecture": "x64", - "file": "path/to/libfoo.so", - "id": "package:my_package/foo", - "link_mode": { - "type": "dynamic_loading_bundle" - }, - "os": "android", - "type": "native_code" - }, - { - "architecture": "x64", - "id": "package:my_package/foo2", - "link_mode": { - "type": "dynamic_loading_system", - "uri": "path/to/libfoo2.so" + final jsonEncoding = { + 'timestamp': '2022-11-10 13:25:01.000', + 'assets': [ + { + 'architecture': 'x64', + 'file': Uri.file('path/to/libfoo.so').toFilePath(), + 'id': 'package:my_package/foo', + 'link_mode': {'type': 'dynamic_loading_bundle'}, + 'os': 'android', + 'type': 'native_code' }, - "os": "android", - "type": "native_code" - }, - { - "architecture": "x64", - "id": "package:my_package/foo3", - "link_mode": { - "type": "dynamic_loading_process" + { + 'architecture': 'x64', + 'id': 'package:my_package/foo2', + 'link_mode': { + 'type': 'dynamic_loading_system', + 'uri': Uri.file('path/to/libfoo2.so').toFilePath(), + }, + 'os': 'android', + 'type': 'native_code' }, - "os": "android", - "type": "native_code" - }, - { - "architecture": "x64", - "id": "package:my_package/foo4", - "link_mode": { - "type": "dynamic_loading_executable" + { + 'architecture': 'x64', + 'id': 'package:my_package/foo3', + 'link_mode': {'type': 'dynamic_loading_process'}, + 'os': 'android', + 'type': 'native_code' }, - "os": "android", - "type": "native_code" - } - ], - "assetsForLinking": { - "my_package": [ { - "name": "data", - "package": "my_package", - "file": "path/to/data", - "type": "data" + 'architecture': 'x64', + 'id': 'package:my_package/foo4', + 'link_mode': {'type': 'dynamic_loading_executable'}, + 'os': 'android', + 'type': 'native_code' } ], - "my_package_2": [ - { - "name": "data", - "package": "my_package", - "file": "path/to/data2", - "type": "data" - } - ] - }, - "dependencies": [ - "path/to/file.ext" - ], - "metadata": { - "key": "value" - }, - "version": "${BuildOutputImpl.latestVersion}" -}'''; + 'assetsForLinking': { + 'my_package': [ + { + 'name': 'data', + 'package': 'my_package', + 'file': Uri.file('path/to/data').toFilePath(), + 'type': 'data' + } + ], + 'my_package_2': [ + { + 'name': 'data', + 'package': 'my_package', + 'file': Uri.file('path/to/data2').toFilePath(), + 'type': 'data' + } + ] + }, + 'dependencies': [ + Uri.file('path/to/file.ext').toFilePath(), + ], + 'metadata': {'key': 'value'}, + 'version': '${BuildOutputImpl.latestVersion}' + }; test('built info json', () { final buildOutput = getBuildOutput(); - final json = - buildOutput.toJsonString(BuildOutputImpl.latestVersion).unescape(); + final json = buildOutput.toJson(BuildOutputImpl.latestVersion); expect(json, jsonEncoding); - final buildOutput2 = BuildOutputImpl.fromJsonString(json); + final buildOutput2 = BuildOutputImpl.fromJson(json); expect(buildOutput.hashCode, buildOutput2.hashCode); expect(buildOutput, buildOutput2); }); @@ -201,7 +191,7 @@ version: 1.0.0'''; test('BuildOutput.hashCode', () { final buildOutput = getBuildOutput(); - final buildOutput2 = BuildOutputImpl.fromJsonString(jsonEncoding); + final buildOutput2 = BuildOutputImpl.fromJson(jsonEncoding); expect(buildOutput.hashCode, buildOutput2.hashCode); final buildOutput3 = BuildOutputImpl( diff --git a/pkgs/native_assets_cli/test/model/resource_identifiers_test.dart b/pkgs/native_assets_cli/test/model/resource_identifiers_test.dart index 7a753442c..7a0dac543 100644 --- a/pkgs/native_assets_cli/test/model/resource_identifiers_test.dart +++ b/pkgs/native_assets_cli/test/model/resource_identifiers_test.dart @@ -16,15 +16,15 @@ void main() { expect(resourceIdentifiers.identifiers, isEmpty); }); test('Serialize to JSON', () { + const jsonEncoder = JsonEncoder.withIndent(' '); expect( - const JsonEncoder.withIndent(' ').convert(resourceIdentifiers), - resourceIdentifiersJson, + jsonEncoder.convert(resourceIdentifiers), + jsonEncoder.convert(resourceIdentifiersJson), ); }); test('Deserialize from JSON', () { expect( - ResourceIdentifiers.fromJson( - jsonDecode(resourceIdentifiersJson) as Map), + ResourceIdentifiers.fromJson(resourceIdentifiersJson), resourceIdentifiers, ); }); From e4c7274ebff79962591755a5f29dc1eed9bd56fe Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 8 Apr 2024 18:50:19 +0200 Subject: [PATCH 129/187] Comment out CI for linking --- .github/workflows/native.yaml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml index b7d262898..9ce3b896c 100644 --- a/.github/workflows/native.yaml +++ b/.github/workflows/native.yaml @@ -140,13 +140,14 @@ jobs: working-directory: pkgs/${{ matrix.package }}/example/build/use_dart_api/ if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - - run: dart --enable-experiment=native-assets build bin/app_with_asset_treeshaking.dart - working-directory: pkgs/${{ matrix.package }}/example/link/app_with_asset_treeshaking/ - if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - - - run: ./app_with_asset_treeshaking.exe - working-directory: pkgs/${{ matrix.package }}/example/link/app_with_asset_treeshaking/bin/app_with_asset_treeshaking/ - if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} + # TODO: Enable this workflow after resolving https://github.com/dart-lang/sdk/issues/55369 + # - run: dart --enable-experiment=native-assets build bin/app_with_asset_treeshaking.dart + # working-directory: pkgs/${{ matrix.package }}/example/link/app_with_asset_treeshaking/ + # if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} + + # - run: ./app_with_asset_treeshaking.exe + # working-directory: pkgs/${{ matrix.package }}/example/link/app_with_asset_treeshaking/bin/app_with_asset_treeshaking/ + # if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - name: Install coverage run: dart pub global activate coverage From d59ac1426b06b0468982a2e3a0507374955061ba Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 9 Apr 2024 10:52:19 +0200 Subject: [PATCH 130/187] Add docs --- .../lib/native_assets_builder.dart | 4 ++-- .../lib/src/build_runner/build_runner.dart | 10 +++++++++- .../lib/src/model/build_result.dart | 2 ++ .../lib/src/model/dry_run_result.dart | 2 ++ .../lib/src/model/forge_result.dart | 1 - .../lib/src/model/link_result.dart | 4 ++++ .../test/build_runner/helpers.dart | 1 - pkgs/native_assets_cli/lib/src/api/resource.dart | 6 ++++++ pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart | 3 +++ 9 files changed, 28 insertions(+), 5 deletions(-) diff --git a/pkgs/native_assets_builder/lib/native_assets_builder.dart b/pkgs/native_assets_builder/lib/native_assets_builder.dart index bdd0b0881..d3d92db0b 100644 --- a/pkgs/native_assets_builder/lib/native_assets_builder.dart +++ b/pkgs/native_assets_builder/lib/native_assets_builder.dart @@ -3,8 +3,8 @@ // BSD-style license that can be found in the LICENSE file. export 'package:native_assets_builder/src/build_runner/build_runner.dart'; -export 'package:native_assets_builder/src/model/build_result.dart' - show BuildResult; +export 'package:native_assets_builder/src/model/build_result.dart'; export 'package:native_assets_builder/src/model/dry_run_result.dart'; export 'package:native_assets_builder/src/model/kernel_assets.dart'; +export 'package:native_assets_builder/src/model/link_result.dart'; export 'package:native_assets_builder/src/package_layout/package_layout.dart'; diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index fbfbf3cd5..aeda4e574 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -37,7 +37,7 @@ class NativeAssetsBuildRunner { /// This method is invoked by launchers such as dartdev (for `dart run`) and /// flutter_tools (for `flutter run` and `flutter build`). /// - /// If provided, only native assets of all transitive dependencies of + /// If provided, only assets of all transitive dependencies of /// [runPackageName] are built. Future build({ required LinkModePreferenceImpl linkModePreference, @@ -67,6 +67,13 @@ class NativeAssetsBuildRunner { supportedAssetTypes: supportedAssetTypes, ); + /// [workingDirectory] is expected to contain `.dart_tool`. + /// + /// This method is invoked by launchers such as dartdev (for `dart run`) and + /// flutter_tools (for `flutter run` and `flutter build`). + /// + /// If provided, only assets of all transitive dependencies of + /// [runPackageName] are linked. Future link({ required Target target, required Uri workingDirectory, @@ -98,6 +105,7 @@ class NativeAssetsBuildRunner { previousBuildResult: buildResult, ); + /// The common method for running building or linking of assets. Future _run({ required PipelineStep step, required LinkModePreferenceImpl linkModePreference, diff --git a/pkgs/native_assets_builder/lib/src/model/build_result.dart b/pkgs/native_assets_builder/lib/src/model/build_result.dart index 74dc1ea35..dc7402642 100644 --- a/pkgs/native_assets_builder/lib/src/model/build_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/build_result.dart @@ -1,5 +1,7 @@ import 'package:native_assets_cli/native_assets_cli_internal.dart'; +/// The result of a build, executing the build.dart hooks from all packages in +/// the dependency tree of the entry point application. abstract class BuildResult { List get dependencies; diff --git a/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart b/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart index a6ca38dc4..f78e75961 100644 --- a/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart @@ -2,6 +2,8 @@ import 'package:native_assets_cli/native_assets_cli_internal.dart'; import '../../native_assets_builder.dart'; +/// Similar to a [BuildResult], but for the case of a dry run, where not assets +/// are actually produced. abstract interface class DryRunResult { /// The native assets for all [Target]s for the dry run. List get assets; diff --git a/pkgs/native_assets_builder/lib/src/model/forge_result.dart b/pkgs/native_assets_builder/lib/src/model/forge_result.dart index 5823403de..457565527 100644 --- a/pkgs/native_assets_builder/lib/src/model/forge_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/forge_result.dart @@ -2,7 +2,6 @@ import 'package:collection/collection.dart'; import 'package:native_assets_cli/native_assets_cli_internal.dart'; import '../../native_assets_builder.dart'; -import 'link_result.dart'; /// The result from a [NativeAssetsBuildRunner.build] or /// [NativeAssetsBuildRunner.link]. diff --git a/pkgs/native_assets_builder/lib/src/model/link_result.dart b/pkgs/native_assets_builder/lib/src/model/link_result.dart index da4c35e50..a4705fc70 100644 --- a/pkgs/native_assets_builder/lib/src/model/link_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/link_result.dart @@ -1,5 +1,9 @@ import 'package:native_assets_cli/native_assets_cli_internal.dart'; +import 'build_result.dart'; + +/// Similar to a [BuildResult], but for `link.dart` hooks instead of +/// `build.dart` hooks. abstract interface class LinkResult { List get assets; diff --git a/pkgs/native_assets_builder/test/build_runner/helpers.dart b/pkgs/native_assets_builder/test/build_runner/helpers.dart index 6f7634b9f..f541840c8 100644 --- a/pkgs/native_assets_builder/test/build_runner/helpers.dart +++ b/pkgs/native_assets_builder/test/build_runner/helpers.dart @@ -8,7 +8,6 @@ import 'dart:io'; import 'package:file_testing/file_testing.dart'; import 'package:logging/logging.dart'; import 'package:native_assets_builder/native_assets_builder.dart'; -import 'package:native_assets_builder/src/model/link_result.dart'; import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:test/test.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/resource.dart b/pkgs/native_assets_cli/lib/src/api/resource.dart index 0bb15b3ef..d3a509031 100644 --- a/pkgs/native_assets_cli/lib/src/api/resource.dart +++ b/pkgs/native_assets_cli/lib/src/api/resource.dart @@ -1,5 +1,11 @@ +/// Identifies a call site of a static method annotated with the +/// `ResourceIdentifier` annotation. It consists of the [name] of the +/// method, and the [metadata] used in the constructor of the annotation. class Resource { + /// The name of the method which was called. final String name; + + /// The metadata used in the annotation constructor on this method. final Object? metadata; Resource({required this.name, required this.metadata}); diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart index 1ab2dca27..84743e9a8 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart @@ -152,6 +152,9 @@ class CBuilder implements Builder { /// | Fuchsia | `c++` | final String? cppLinkStdLib; + /// How the built code asset should be linked, This determines whether to + /// produce a dynamic or static library. If null, the value is instead + /// retrieved from the [BuildConfig]. final LinkModePreference? linkModePreference; CBuilder.library({ From 63bf1fab1f5b5e844b779bf3852ecca11d75cb1b Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 9 Apr 2024 11:50:10 +0200 Subject: [PATCH 131/187] Restrict linking assets --- .../test_data/complex_link/hook/link.dart | 5 +- .../test_data/simple_link/hook/link.dart | 5 +- .../treeshaking_native_assets/hook/link.dart | 6 +- .../link/package_with_assets/hook/link.dart | 7 ++- .../lib/native_assets_cli.dart | 3 +- .../lib/native_assets_cli_internal.dart | 8 ++- .../lib/src/api/build_output.dart | 1 + .../lib/src/api/link_config.dart | 18 +++++- .../lib/src/api/link_output.dart | 4 +- .../lib/src/model/build_output.dart | 12 ++++ .../lib/src/model/link_config.dart | 58 ++++++++++++++++++- 11 files changed, 110 insertions(+), 17 deletions(-) diff --git a/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart b/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart index a1ad40ef6..a00196f97 100644 --- a/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart @@ -7,8 +7,9 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { await link( args, - (config, output) async => output.addAssets(shake(config.assets)), + (config, output) async => output.linkAssets(shake(config.assets)), ); } -List shake(List assets) => assets.skip(1).toList(); +List shake(List assets) => + assets.skip(1).toList(); diff --git a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart index 2e7327a8b..d8df572e3 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart @@ -7,8 +7,9 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { await link( args, - (config, output) async => output.addAssets(shake(config.assets)), + (config, output) async => output.linkAssets(shake(config.assets)), ); } -List shake(List assets) => assets.skip(2).toList(); +List shake(List assets) => + assets.skip(2).toList(); diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart index 5f35eeb99..1e65c04be 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart @@ -24,7 +24,7 @@ void main(List arguments) async { dynamicLibrary, staticLibrary, ); - output.addAsset(dynamicLibrary); + output.linkAsset(dynamicLibrary); output.addDependency(config.packageRoot.resolve('hook/link.dart')); }); } @@ -32,8 +32,8 @@ void main(List arguments) async { Future _treeshakeStaticLibrary( Iterable symbols, Uri symbolsUri, - Asset dynamicLibrary, - Asset staticLibrary, + LinkableAsset dynamicLibrary, + LinkableAsset staticLibrary, ) async { File.fromUri(dynamicLibrary.file!).deleteSync(); final arguments = [ diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart index 8ff6b657a..55f0ff931 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart @@ -7,12 +7,13 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { await link(args, (config, output) async { final remainingAssets = shake(config.assets, config.resources); - output.addAssets(remainingAssets); + output.linkAssets(remainingAssets); }); } -Iterable shake(List allAssets, List resources) => - allAssets.whereType().where( +Iterable shake( + List allAssets, List resources) => + allAssets.whereType().where( (asset) => resources.any( (resource) => resource.metadata == asset.name, ), diff --git a/pkgs/native_assets_cli/lib/native_assets_cli.dart b/pkgs/native_assets_cli/lib/native_assets_cli.dart index 845ec357f..086dc926e 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli.dart @@ -24,7 +24,8 @@ export 'src/api/build_mode.dart' show BuildMode; export 'src/api/build_output.dart' show BuildOutput, LinkOutput; export 'src/api/ios_sdk.dart' show IOSSdk; export 'src/api/link.dart'; -export 'src/api/link_config.dart' show LinkConfig; +export 'src/api/link_config.dart' + show LinkConfig, LinkableAsset, LinkableCodeAsset, LinkableDataAsset; export 'src/api/link_mode_preference.dart' show LinkModePreference; export 'src/api/os.dart' show OS; export 'src/api/resource.dart'; diff --git a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart index dd8620c48..3469a1d48 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart @@ -32,7 +32,13 @@ export 'src/api/build_config.dart' show BuildConfigImpl, CCompilerConfigImpl; export 'src/api/build_mode.dart' show BuildModeImpl; export 'src/api/build_output.dart' show BuildOutputImpl; export 'src/api/ios_sdk.dart' show IOSSdkImpl; -export 'src/api/link_config.dart' show LinkConfigArgs, LinkConfigImpl; +export 'src/api/link_config.dart' + show + LinkConfigArgs, + LinkConfigImpl, + LinkableAsset, + LinkableCodeAsset, + LinkableDataAsset; export 'src/api/link_mode_preference.dart' show LinkModePreferenceImpl; export 'src/api/os.dart' show OSImpl; export 'src/api/resource.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/build_output.dart b/pkgs/native_assets_cli/lib/src/api/build_output.dart index a2e2c677f..334a74121 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_output.dart @@ -19,6 +19,7 @@ import '../utils/map.dart'; import 'architecture.dart'; import 'asset.dart'; import 'build_config.dart'; +import 'link_config.dart'; import 'os.dart'; part '../model/build_output.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index fe17f9e3a..980967a6c 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -36,7 +36,7 @@ abstract class LinkConfig { /// The list of assets to be linked. These are the assets generated by a /// `build.dart` script destined for this packages `link.dart`. - List get assets; + List get assets; /// A collection of methods annotated with `@ResourceIdentifier`, which are /// called in the tree-shaken Dart code. This information can be used to @@ -47,3 +47,19 @@ abstract class LinkConfig { factory LinkConfig(List arguments) => LinkConfigImpl.fromArguments(arguments); } + +/// An asset which can be linked. As the link hook can not add assets, but only +/// modify existing assets, this class provides no public constructor. +sealed class LinkableAsset { + Uri? get file; + String get id; + LinkableAsset withFile(Uri file); +} + +/// A [DataAsset] which can be linked, see [LinkableAsset]. +abstract class LinkableDataAsset implements LinkableAsset { + String get name; +} + +/// A [NativeCodeAsset] which can be linked, see [LinkableAsset]. +abstract class LinkableCodeAsset implements LinkableAsset {} diff --git a/pkgs/native_assets_cli/lib/src/api/link_output.dart b/pkgs/native_assets_cli/lib/src/api/link_output.dart index 5270729f0..3d8812034 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_output.dart @@ -37,8 +37,8 @@ abstract final class LinkOutput { void addDependencies(Iterable dependencies); /// Adds [Asset]s produced by this link or dry run. - void addAsset(Asset asset); + void linkAsset(LinkableAsset asset); /// Adds [Asset]s produced by this link or dry run. - void addAssets(Iterable assets); + void linkAssets(Iterable assets); } diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/build_output.dart index 81fdc8470..038816c99 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_output.dart @@ -224,4 +224,16 @@ final class BuildOutputImpl implements BuildOutput, LinkOutput { List _getAssetList(String? linkInPackage) => linkInPackage == null ? _assets : (_assetsForLinking[linkInPackage] ??= []); + + @override + void linkAsset(LinkableAsset asset) { + addAsset((asset as LinkableAssetImpl).asset); + } + + @override + void linkAssets(Iterable assets) { + addAssets(assets + .whereType() + .map((linkableAsset) => linkableAsset.asset)); + } } diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index e5bafd256..49a04bdcb 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -11,7 +11,7 @@ part of '../api/link_config.dart'; /// kernel compilation. class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { @override - final List assets; + final List assets; final BuildConfigImpl _buildConfig; @@ -112,7 +112,15 @@ class LinkConfigArgs { resourceIdentifiers: resourceIdentifierUri != null ? ResourceIdentifiers.fromFile(resourceIdentifierUri!.toFilePath()) : null, - assets: assetsForLinking, + assets: assetsForLinking + .map( + (asset) => switch (asset) { + DataAssetImpl() => LinkableDataAssetImpl._(asset), + NativeCodeAssetImpl() => LinkableCodeAssetImpl._(asset), + AssetImpl() => throw UnimplementedError(), + }, + ) + .toList(), ); Map toJson() => { @@ -122,3 +130,49 @@ class LinkConfigArgs { assetsKey: AssetImpl.listToJson(assetsForLinking, buildConfig.version), }.sortOnKey(); } + +sealed class LinkableAssetImpl implements LinkableAsset { + AssetImpl get asset; + + @override + Uri? get file => asset.file; + + @override + String get id => asset.id; +} + +class LinkableDataAssetImpl extends LinkableAssetImpl + implements LinkableDataAsset { + @override + final DataAssetImpl asset; + + @override + String get name => asset.name; + + LinkableDataAssetImpl._(this.asset); + + @override + LinkableDataAsset withFile(Uri file) => LinkableDataAssetImpl._(DataAssetImpl( + package: asset.package, + name: asset.name, + file: file, + )); +} + +class LinkableCodeAssetImpl extends LinkableAssetImpl + implements LinkableCodeAsset { + @override + final NativeCodeAssetImpl asset; + + LinkableCodeAssetImpl._(this.asset); + + @override + LinkableCodeAsset withFile(Uri file) => + LinkableCodeAssetImpl._(NativeCodeAssetImpl( + id: asset.id, + linkMode: asset.linkMode, + os: asset.os, + architecture: asset.architecture, + file: file, + )); +} From 9ba15f2fbe90faf6f4b6af814c50e7b600dc1170 Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 9 Apr 2024 11:54:32 +0200 Subject: [PATCH 132/187] Sort into separate file --- .../lib/native_assets_cli.dart | 5 +- .../lib/native_assets_cli_internal.dart | 10 ++-- .../lib/src/api/build_output.dart | 2 +- .../lib/src/api/link_config.dart | 17 +------ .../lib/src/api/linkable_asset.dart | 19 +++++++ .../lib/src/model/link_config.dart | 50 +------------------ .../lib/src/model/linkable_asset.dart | 47 +++++++++++++++++ 7 files changed, 76 insertions(+), 74 deletions(-) create mode 100644 pkgs/native_assets_cli/lib/src/api/linkable_asset.dart create mode 100644 pkgs/native_assets_cli/lib/src/model/linkable_asset.dart diff --git a/pkgs/native_assets_cli/lib/native_assets_cli.dart b/pkgs/native_assets_cli/lib/native_assets_cli.dart index 086dc926e..6f48e372a 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli.dart @@ -24,8 +24,9 @@ export 'src/api/build_mode.dart' show BuildMode; export 'src/api/build_output.dart' show BuildOutput, LinkOutput; export 'src/api/ios_sdk.dart' show IOSSdk; export 'src/api/link.dart'; -export 'src/api/link_config.dart' - show LinkConfig, LinkableAsset, LinkableCodeAsset, LinkableDataAsset; +export 'src/api/link_config.dart' show LinkConfig; export 'src/api/link_mode_preference.dart' show LinkModePreference; +export 'src/api/linkable_asset.dart' + show LinkableAsset, LinkableCodeAsset, LinkableDataAsset; export 'src/api/os.dart' show OS; export 'src/api/resource.dart'; diff --git a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart index 3469a1d48..0de2da034 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart @@ -32,14 +32,10 @@ export 'src/api/build_config.dart' show BuildConfigImpl, CCompilerConfigImpl; export 'src/api/build_mode.dart' show BuildModeImpl; export 'src/api/build_output.dart' show BuildOutputImpl; export 'src/api/ios_sdk.dart' show IOSSdkImpl; -export 'src/api/link_config.dart' - show - LinkConfigArgs, - LinkConfigImpl, - LinkableAsset, - LinkableCodeAsset, - LinkableDataAsset; +export 'src/api/link_config.dart' show LinkConfigArgs, LinkConfigImpl; export 'src/api/link_mode_preference.dart' show LinkModePreferenceImpl; +export 'src/api/linkable_asset.dart' + show LinkableAssetImpl, LinkableCodeAssetImpl, LinkableDataAssetImpl; export 'src/api/os.dart' show OSImpl; export 'src/api/resource.dart'; export 'src/model/dependencies.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/build_output.dart b/pkgs/native_assets_cli/lib/src/api/build_output.dart index 334a74121..0422d491d 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_output.dart @@ -19,7 +19,7 @@ import '../utils/map.dart'; import 'architecture.dart'; import 'asset.dart'; import 'build_config.dart'; -import 'link_config.dart'; +import 'linkable_asset.dart'; import 'os.dart'; part '../model/build_output.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 980967a6c..fd27c7a9d 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -12,6 +12,7 @@ import '../../native_assets_cli_internal.dart'; import '../model/resource_identifiers.dart'; import '../utils/map.dart'; import 'build_config.dart'; +import 'linkable_asset.dart'; part '../model/link_config.dart'; @@ -47,19 +48,3 @@ abstract class LinkConfig { factory LinkConfig(List arguments) => LinkConfigImpl.fromArguments(arguments); } - -/// An asset which can be linked. As the link hook can not add assets, but only -/// modify existing assets, this class provides no public constructor. -sealed class LinkableAsset { - Uri? get file; - String get id; - LinkableAsset withFile(Uri file); -} - -/// A [DataAsset] which can be linked, see [LinkableAsset]. -abstract class LinkableDataAsset implements LinkableAsset { - String get name; -} - -/// A [NativeCodeAsset] which can be linked, see [LinkableAsset]. -abstract class LinkableCodeAsset implements LinkableAsset {} diff --git a/pkgs/native_assets_cli/lib/src/api/linkable_asset.dart b/pkgs/native_assets_cli/lib/src/api/linkable_asset.dart new file mode 100644 index 000000000..f4f8dfda3 --- /dev/null +++ b/pkgs/native_assets_cli/lib/src/api/linkable_asset.dart @@ -0,0 +1,19 @@ +import 'asset.dart'; + +part '../model/linkable_asset.dart'; + +/// An asset which can be linked. As the link hook can not add assets, but only +/// modify existing assets, this class provides no public constructor. +sealed class LinkableAsset { + Uri? get file; + String get id; + LinkableAsset withFile(Uri file); +} + +/// A [DataAsset] which can be linked, see [LinkableAsset]. +abstract class LinkableDataAsset implements LinkableAsset { + String get name; +} + +/// A [NativeCodeAsset] which can be linked, see [LinkableAsset]. +abstract class LinkableCodeAsset implements LinkableAsset {} diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 49a04bdcb..f25bbf8f4 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -115,8 +115,8 @@ class LinkConfigArgs { assets: assetsForLinking .map( (asset) => switch (asset) { - DataAssetImpl() => LinkableDataAssetImpl._(asset), - NativeCodeAssetImpl() => LinkableCodeAssetImpl._(asset), + DataAssetImpl() => LinkableDataAssetImpl(asset), + NativeCodeAssetImpl() => LinkableCodeAssetImpl(asset), AssetImpl() => throw UnimplementedError(), }, ) @@ -130,49 +130,3 @@ class LinkConfigArgs { assetsKey: AssetImpl.listToJson(assetsForLinking, buildConfig.version), }.sortOnKey(); } - -sealed class LinkableAssetImpl implements LinkableAsset { - AssetImpl get asset; - - @override - Uri? get file => asset.file; - - @override - String get id => asset.id; -} - -class LinkableDataAssetImpl extends LinkableAssetImpl - implements LinkableDataAsset { - @override - final DataAssetImpl asset; - - @override - String get name => asset.name; - - LinkableDataAssetImpl._(this.asset); - - @override - LinkableDataAsset withFile(Uri file) => LinkableDataAssetImpl._(DataAssetImpl( - package: asset.package, - name: asset.name, - file: file, - )); -} - -class LinkableCodeAssetImpl extends LinkableAssetImpl - implements LinkableCodeAsset { - @override - final NativeCodeAssetImpl asset; - - LinkableCodeAssetImpl._(this.asset); - - @override - LinkableCodeAsset withFile(Uri file) => - LinkableCodeAssetImpl._(NativeCodeAssetImpl( - id: asset.id, - linkMode: asset.linkMode, - os: asset.os, - architecture: asset.architecture, - file: file, - )); -} diff --git a/pkgs/native_assets_cli/lib/src/model/linkable_asset.dart b/pkgs/native_assets_cli/lib/src/model/linkable_asset.dart new file mode 100644 index 000000000..9c311800f --- /dev/null +++ b/pkgs/native_assets_cli/lib/src/model/linkable_asset.dart @@ -0,0 +1,47 @@ +part of '../api/linkable_asset.dart'; + +sealed class LinkableAssetImpl implements LinkableAsset { + AssetImpl get asset; + + @override + Uri? get file => asset.file; + + @override + String get id => asset.id; +} + +class LinkableDataAssetImpl extends LinkableAssetImpl + implements LinkableDataAsset { + @override + final DataAssetImpl asset; + + @override + String get name => asset.name; + + LinkableDataAssetImpl(this.asset); + + @override + LinkableDataAsset withFile(Uri file) => LinkableDataAssetImpl(DataAssetImpl( + package: asset.package, + name: asset.name, + file: file, + )); +} + +class LinkableCodeAssetImpl extends LinkableAssetImpl + implements LinkableCodeAsset { + @override + final NativeCodeAssetImpl asset; + + LinkableCodeAssetImpl(this.asset); + + @override + LinkableCodeAsset withFile(Uri file) => + LinkableCodeAssetImpl(NativeCodeAssetImpl( + id: asset.id, + linkMode: asset.linkMode, + os: asset.os, + architecture: asset.architecture, + file: file, + )); +} From d223fb0831e3558768f1f384b0efedb1f2eacd88 Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 9 Apr 2024 15:13:32 +0200 Subject: [PATCH 133/187] Changes as per review --- .../lib/libtreeshaking_native_assets.so | Bin 13344 -> 0 bytes .../treeshaking_native_assets.exe | Bin 5662816 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100755 pkgs/native_assets_builder/test_data/treeshaking_native_assets/bin/treeshaking_native_assets/lib/libtreeshaking_native_assets.so delete mode 100755 pkgs/native_assets_builder/test_data/treeshaking_native_assets/bin/treeshaking_native_assets/treeshaking_native_assets.exe diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/bin/treeshaking_native_assets/lib/libtreeshaking_native_assets.so b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/bin/treeshaking_native_assets/lib/libtreeshaking_native_assets.so deleted file mode 100755 index 248c295a6328f0cc0bc6869e4e2e98325e65cb22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13344 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

%SX_&WWV_7tE0sH>k_rkQ1#Wu&a(W{L0F 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 z%0A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 Hn)AcPPTArAro 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

6}2EB9{E2+=Is2@y%X z_0v_*(NRRohw?vA5q`*CQTc;M1;z&%es4}=E6~!y-VNy3ZN``DHoJ^1y3?g`)a;g9 zASKd8J35OCJ#pp*o~4_e@FIKQiZ|?wh%F&@0&iq2BI;pB`hpLrojlO0|S&f&KG9Y zbU9WIi%Jl4agK`xp3sHb;tDQ`cg#7JnxCTPWaAQ8LvIkGFLpWM`s}{&&*BP=t=kNA zP2~zMyFaf3gQ&#|PU);`_1{MM$!X=ARQZ4MYmTR1!i{8m%LXe~O>-G`^Vl0G{cAV! z0AdA1jQ}gS8PZ`n2bDY@w#&UPyJ90e-O>@(B(oS(iY&r%yZPnZ9Ca3k#m6}FuA&03 zvBzbcDF$2S?`MhA!7NAX*et==(y2_Zf!5MhwWXq+C0}V8XnvN3=dKGi22X_81B(QP?9*zh!(}z2M@w zEsz(!FK%2W_+wvH?6?h)J|W?&m;ufEu^OhoC~_#XOk0Q{1YSH0tZ&EX!R@(V8#=%t zq`kCH`*mYCgl74=U~2Zc@&SUh+V0_6rh>Pb!YZLR|9Tg(GaLQqdn8B&TO4R0*%JmX zgoVPT;Q9;Y=t6%us>u9kCX+_cm@Y`VsatCwerS1pBrHS)g%G@jMmJk$zo>tnhYR#T zB?)si)Kj_IgSjde1+*t;@|Wh$3sTM9M04WKB^n*^>1h72v@y6at1xhRVq8*rXq>}S z+27aI;}-K2c9H7*M)-~^0S!4FlM-6MKdsYI1bRu@Qs#YfgIJA)Zq7Qr`OI-yWzB(8 z%qTg~IOU=5=vTU;WBq^?#_}6L>m6+a8iUL2H#934qHpqF3Vy*iBNS-<0bsI1RtwJb zRG#7s!zKv7buYL>{*LE77xYl3Qo5agl02Vm)gx?yfl37?U&bX0_Oc2FzI2D~&(aE5 zJ+0VPK`Je-=We z$)l_3a=;_KaY}O?FUtsEVdCcRm<;Lac_QcttX0Nl9s?V+)wsE08;Q)cm(9PcbQeZO z<=U^8Q5{wCDq}WplF~-hQ^N(NfM412`_Bf8z4XpbvExW0LN|@;4bSmwE=2num91?R zA3|~Z;kECUd+KUmkOXYoxg}+r^Lb`H3Q8$n;jSGm8psf$`!j5!veWk77Is%VjxI_T!kB6u81!m+S58UG-T7 z<+X95Hn)~LI=DiNL!fNsoUf@&(ExVNx|1ZHTX$kxfl1d-H+U)Z)QA~L`JA(ul`s@} z>S%hM?|Q>xe$AO@Gbv3h7pIQbIN%9g>IvV-7J^+eJ~L1Kv&@!Xj_OV3LXHC{hg!ZV z+?zb0dYd0imAR8c$qI_>3N4_BTBNtnM35*rRY}n$gB*EQ+O9tdC}J8Q1^~YBZ8FC@ z%rE$g+E*S4LrA?5?9TiT>eVPE0zX$FnLWi#3VH<#*+2K-(k05W*}%&JbY*@MSeP?1 z=3(5=;Io$+_Xo72H%Js=^S-kf_e$vs@P`SO0MvBVA6r0Eua=6qm~UNMY?SI6%O5wl zz!@mkNiF-CPKEcT1R1x@U&#TL!IXL`Go|($&|!d+CMB1@+xquTt$*(m*1u`a*Rj*O zpS|8|qg`Olbt;99zaE}G3%=)Kr~4SMT zSouwI9w@x4E%z9?%1p23n4pb0@6pCyJpYbgq^qO@&v!w#^&pzQ&`nv!dNrW3)hCW; zJk^OK;qldVjiKb(}!K_{3(%da>n8kwH6?hfG2U^n*3(?~}Z=TrWyO@CJjP4YT z&>Dj$iF1IlLu~|eCkqRR<*5TV_<@6yq}jZ7NJf`4vwZ8C#ct($vXp!v%7TeRo^+EEll7thRm z{_)@G^C?HB-tapbGao#i7RvSqmc>@d2n3!QWN(}~K1;R-4EXo5&Wf_T)VyFB^GK&J zWgvR{xNN)MN8c>GaP_}3Y@*A~zoc7R7C=cBwR`$^OPr}XBG)CE-#e)~v3*h$MECym zJib4_XAb{Ue0>{xKaX@vOzY3jezZThty-=K z6~;$$5xv1hrQC>pI3DN?sRp@XzBpdCjo?bi==XDm0vwtx-Q-n<9fc8@l08Eq6G)1t4qXl*%y9lZ2Y z8?$^-7N5b$A9-rF#XI70%R-)%Xh%eB=1Gl04r#SD6!6ABFi&MIJfWwH8fj0No*!oO zc*{Q39@)o3biNwDG<}TjUcnNZN*|(>{NH*)Hx@y}wk^EKTlUr5b6J@}wnuW6ElyZ| z&CgB)&cma%r=szwti`)_^c2MB{+iYs`jA5=EikR2zx7xUsAv$MF1}_3#&j%`o@;fF zF!4N7T&w$y_3V`AS9qrB-?I~vO)sRd-taNM(dSueTo^qeyxx>{=P5q;LZ|zTZL*5o z24yTW4-B9RBf=arbD{#8NhU)C8jumw%-^sYE-bw3UZ6$~oE@tI_a^Xm1Rxiv_=s+a zEW>bTSxuohDy9-TmX+!lMVxv=Q2Lc&CGPmw@x7KdqTeFRr|61gD!LP-F_r)VlHFzo z2dNo-{Z~TzD)HR)quI{5vz9>$ucH4ORDp|Akzfgx6ANBi{&bh z(8dtR3g|XbOMFU^Lx%Vw?NS!`bv&^Zp5%*^f7vP@_{4)xX(1nJjN-7uk3D8}fPPrt zWG5lOoKjS7+L%=uy+Hf z+T%13{Rc8oQlCmob@5$q_<>(@(y1U+>`U_Jo{-KihW;TP`l zU~mzmh)$%93j4S3W>^qB;om^;V2T4{(ciMB-pIEZ?`Bzv3ndX$q7r{W;=9TfJ3Rce ze~};}w&-nq6~vqPkDHSXnA+rPIzA45hglKwycZ}YUZuf>g*L7B*Xj*Ie_LrAOw5u= zydzTryX(}06fk&j(t-=P7*eS3CD$uaj8-e`f}G_>t4qAUCHu)%c9aXq>M*m)&WXh< zw28;$7+cMTs53!V1#rw^cGHiMw1w5K0vaoY_BSbC~~&|R2>~vI=E?R=YcvVVmrI$MjpB( zrLfZiL-R!qpnPhMCKw+mfKBFE2<_zW-(OZBH(3;6BICP@(VW9*QpBaT#WqU6os1{? zH=f9p(Jhlqy58_d$#kTUOoFV*^!4A;YqB!Ypw0Z8OtGI67F6^*#g-tYkgWog2=ezA z_2tExFSW2rBW_iz>elB3nFHm~057VK+fum_%t z{jqD#Et3>WKq_45&cCKWA#Limog%VgSc##)m}tBZJ;)(lh~Be+bGqAjJ-0Ak$x17e zg`hndRwFcCM%t5+7Ks4(2INa4&3mpRr^pR|&V!{Z3ypOya`?aEYoR$&l8GWCeNQ+A zOS0V$r@iThXbH)amO`l5%r~c6Q`}osQeL3-wzZZ!L6XPQL(!9%iLTLq_@SqAZPamc z>QfrMq%P$6RCXr4zX!siU2p%OJfNdk((2!$YW;mV_4w%2>Sl9h1(*F0Jl1D!uZ9R_ zmD)?D_HYGX^^Om$Bd(SrQ4e2OHM93?vN4OW?h~I+gu~*6Zc;5E`H#u@6<_8p`!4W4t_VyKH3y2^ zp>t4xxa^y?`W56D6V4LFtDMJ%2uh;==8d2RSpt5ed-CG%JzCiKz{wK(fGUVrCr`pS z`2;lO{BrWbSP>scPn@QAoT{;2`7}@y;-ohJoyY|Wkqh`jcNIDLR|p-+7{8Vq?9=5z z;?Hwd_wnYWjTiZv8gGs@-g~CVj56L+=p@vcuWVc3eIc?6?QL>0InBGK~(Ew zsWoq;uJM7Bl_ElYVC3~n>AuUpS6u-G4h`qerc_BD4V?S8c&rTh8fFNV-b|lg~p~g1Co%*vFN*U!bEpN z2gtTe+kY0n;zL|KRPc>6{IGB$`cla+htH$yWKxY|ONA}bUiv}{ijYji%Y}-+7*6CQ zW{C;A9e-okZ?J|7^0pFd0gKHLimDBJYZlFXgRQJMglnk;MkP=5@sdxtmV($B$@><8 z4W#8(d2?a1kcz`WE$^$^mI?5bnOw@-l7xR~t`S0W9i^|*oJ&dyHH1$~L7>cC{{zcL z`;>_Q7)mPd6vA_;+t_SQg$)rRVeVg*c|qdqU}J^ zo6He^QKf4eC@t_^C?DUbPK@_l>f&JX5yi!G34^2WY4T4t@`9p^mD82!>#>>c!Gi7e zm2Q^qonM+JJDq(y=5OgGzHW&?EKd+EU)gY@;i-v{2fwN z$Zt<|^|rd0UUPlIhkVWTk*D(e`n+M`srF#!#0BpF5Rh-?(uuNi3ybtn4lVo%K^6K_ z?zcfGu*rPUO3bx1XqJX1otm?TbgiYRK?0Vps3}+4nHKXNhNF%H4iKVzuQh)U%>~PF zwWm@hku{zxJGE~F!0+o~)(TvJh{MHep8oD#xgf&K8;b^ka-RG`ED<)9HtLi0Ys{CS zS3xfYrMv1H%e6l)pm>{cIU%ZL6ohpL(XIoBF{gPXJbSCR2%zRS87ED?x+ahrJ=V~`K##7lVs z$DS@@E}*-}R*YtI+Eq4N*?Rm37TGPV?;`Nk2hJOs!37!qp4Eq(b6%-FRONqB{M`a) z1P|R9m=WCG3%`wUzsnHzrdoUZMw*O;st?`hFVPl9f(Os=4>dli*>Q}|!T2bDzv@FH z=iTg)6U1gKv^fw(w9cJKwT=MN_d=vDkEFo?Q%a+xk- z{i`-TbgMTG0{Vnpb2cbO;Zs=t@aX+-o@+CEZ4vr%^pM3kMnH$&&6w4xAI|?1mB>H~ z%?;y(-fp2tqZB!nBFOWNC}BC+6M^j5gbMrTT>QXIm5qAMX4%_F8l4$F&D~fLx(XGG zSmy~3u*rPW5KzU@9yP6Ju4o zi`@|$O0`c*wSp*G%~z?kO96{`FB8OkAd1`uZfYj4e5kxFz z?;iA>vz!{tXSPW10^cN7Bh`n=p1o~#GaI~oLU@BDAXH%B1=>n>+dt>I$~JO1GaC+=@|k;V}ipnwzDWNCa*+J!}CJg$XvsHIn>E|Vpq@x0jmx$iKH_!OMT8q`zCauu5&8X8F*p`UuC(=6))`W- zt{taz{Oxje+@8ULjkM$Lu{?NaaMgLiEkpDk%U$&_bdABz46XJaHe=0U>53K(^IKm) zN^}EX_3GtA$mq3P)^uZ~ZmbaYDuwU$NHiB;aNR2JHdfBvMIOC+OVzk~pUut!X|D8;M$JGzw?v)kZ_{zXeFZ{yX2cyf#Ub;dz zRvVuu?d>AF@#T!@H3wzm=*Hf8yN!>_t3M`|3{ETe#oHsa^0G==t_L?`%e1O{f4%Wl zZsW@_^-~=7$WGc@9@vGlJ9F;B=(m)jQ_}RDi8$_OY2ptdV~*_1)vH(1!6}ZT)_bqy z`w{ECU-JEMBs$0yzFOryL?uTFP>@yij?a!PrZGciyYAPJ)-ASbra1Nsx+ksAndJ@7 z&8i5GJ^C)v$aqCK@6?KL-&4KuCa=9sB1)9DCCBd$4?C6Km)Q02`2*|yL+!?AkzECR z9WbW;t`f#n$aA5}fo<<#FCKTeART>&!QtD{nN_t!9N^=PC`;9zu4|uvu_6tEhleZ} zte%WDY3s}S040a3jFt0#z-uIMQm`>IR;;j8bG*?~uPhi~>@&W%_!}mb&xd4nj5YK2 zh4V^ki02fqD%)$3PQFNLFAKz~^AT;MAUj13peno{Bd}A^Ug(if2=S`>iR+mE-OI=YcO`WbZYtIrgu^$NWFb6! zhIi#)^-CT^+Uhx9&c^0M4aC(8&$SCdua^y8c#`NWhF65|al{75ugC{6wA*2R;}T1{ zEg-=d_d#@+>&6P1@XwU!18bV}!~_*{4_i0^Y{AEB2xTR#Ex z$azX=0?OgNa>W>S6in(>1+f8~BR=Sp&_ahNzZ*bk<6d)y~3DBz{w$rHA}}>las@EX^b_Df>s6q@J!3HM1zim;Z~xM zTJOn|;J4&JzQ`529H~mKjh`G_uqrDv0KI@+l@NFOI>@4BI`(Lp{$8%KV-F3EU8vpy z1cCGy<;W0EBae;{zUo5*>1s|QWA48_Tp32X>VwfQ( z{&dbg=#Vx&bXAthT{aKU~qHKnnNNP)7-7W zgM+C(oPBk9EZ(fx*(!-XRhd=8)=e)fQ!=SRxU5X#hD!X*2J}Qh_yACC}{)X7yAc0^XB!|-}y^FwuSc6_j7YW1^1tFL$m(Q zB;<1PNefCCXFku3>cK-JtG>~L2S-+Y4Ru+yUeI}umF^xZ=YJ$@a{=fqxXI=U|K=Dt zz!ko!2Or$p*bU*g?&BQ5Y{}c9Ep4CK{vZ-n-S{5lIwaEB&xOrVWxKEP3(w5X*+8k! z{)Kzyy65P%9&E~RYfIOeNkNsnBt64W%Puv@;D-5UX|wy zV|WP!_`>XSK>!=f3&|n~V86C7bB5NL-Rr3sa;eWV)hN=eI8zOJjkTV4s+XK(Tc$>R z7&nA>tH=EI5w52o=GF%7;lYf_Lc%bO?_5`W^~WzPcSC>S)4tPECtl%+9M1RHn>;g{ zWOfM_u^t&^N;UwN0_H3{!I3P zxK9G&Azdh`sBEj4iN(XLGM~}riNvn(Mq*AqazxYZZKQc;woP0{EGrhdrd6u(Rd#r1 zZk(7i*GFcjt9ZZhb!69&$dR7*n9IJuVrJ)&n!j!HM)o+}_70bEj5IwGr?Nd2Gq-0i zoIKDQ`OfJs{=sEzQ%OgA>-O*5_M^J}E4jyh=Kj|YJ@$q-vfHWK@ozbx@^m_M`|gU$ zcK6ISiCW>d?{^u4D`vJo#bWyCAAM1sE^c$F&d~dwx;<7=d4$yKpSv)(`^ZRBBeNf= zkpJ%=8y@vvW5a{~OJYq`ws~f@eNlZL)=@F1{Rp3Qg78FkGr-(2;Zc`(YmQt@7Z4#| zk~t=P<0T!M?`z!{7(9|82aE8qRT=S|nH{p%B=8&HKC}Hf{u4GfvWLa%Jl)>uvTuyH z7^OyJ$+9xQzr zK!q6L%3(-2h@}dLJ=m83qw$u|?EWRt`|-M#TIT zzI;Od!Uoy&%zOLlp?PE{&T}68xx*dOh!>t3AWEiND3IXeuNP5rf#*Ciy;ihaIldPj z`%2G}ntyc0tN2F{iaD30Z#cqiq&D2ne0!6%-HIc+(aY$QzQe`BI(dV9Fh2PHOwNAx zYdC)h5ywRCp0;8_YQS1C?4;ombHVAvEbHpPgW0&#CjT>a!9U2w5U30gCQl?Ra=%^K znS6(7!6h=*S4kJz&9mei{1JLX608$ewQ9jf!g+PREA(DbBh~sakP%S?VGRFPBvND% zO%3HQRFY66HzN@g!moxIj9;O@C%;4l+p06X1(O+B+kd4vyGDxX4IBA2mmCIY6w_-y z1-;3=4oHE9Pu!u%MG%{a2Y+$IZiyr3r%__s;!M2Ovgd8r3AP!||0!{{(r(7UHdSm` zHnQ(HDY3?VmbwUXrqw;cgUgWH^U%Lw~ak~B$Hiy!Qvgblt;VDy#> zv=px)?j{UP{flI-+cm#$*=nia@ zu+GZn1=5$6z7P)vy{=*;2V5)P%@Mk zy2;U%EIOFr2WfB=-|R&JgtRQNh$3*MWgCB~h`(7ytT;nYtlcD08zR0Fu40SX2<8<8 zGn67I_a@o2+RIoLWyqnR%}qyq>|Egg+0@(!6RtPNg_F@EmX*`{X{q%pbtk{kuSsQp zp-&s(mD_b|xA8TxUA`Tv+OC&RxD}PnD$pMPl4nn3Tec^27M2kp_TA>ObNM7!YV0=0 zoS_OYQ3HY&`4=@rg;kfj)dB_NGAxnwjR!l(!1lAcGLibf#U5Cz{azYKE|Ij1?(0XE zMIuzqi1Cja@kxwWcDRh1WkVIZ6^{yC;a?wH$YZ`r&lFa8foA10 zlHf9@)Xq;iuF~tP-i-d16oh7N(I@2r-OFu7vwgH;MYVc-y+CIhF`eSgME2=cSbKam zMf7&JJ=4FLE}`l}_V!3IEpY@QBKtt~v&F2GPvR4>-CX1Z|GXjUn`uZt25XOq=m&Rg z!CwsjaTV(^*+G2e%GUc(d5#F2$^5E?(`v=EIx%Tio|XW?Xbad_KFa13>a+1|1*avp zK;cqhNRpdMkAESv{DYch@QXFohC`jr(Q0Z@Rj3J&{wO#DD(|p%=!h6j**gTpHVu(= z@*%2@Bgc`6Q7tc*olexI3Bc$wtD{WIJ3QIUyMRIkTL%saa*(|$nn1UF#>Ak+MkEX} zGH+_l31(G>PFgKwKq8jqa0$B&XG~feD$C9Z)hNA@rB~D{i*LTg$P_l50`SXF&q)AO z2~KOC^8}y-(iq<^iCjI?_^KQmNA@79A?%z%J|xP+prQ#9a)nOEhN>Vin6nMBW_ry2=mk9lUq#o^mfKiXAv!M< ztE|#&%S1ecXzSz9_3)#D@1RTg@k3j1tfAn9+V$f6i|(MGDWu8#Np)@W2SJSFX?1I4 z#5LbG^2b$n8#d*2OL_DW$Du^o0EyX0;UZ^1EDCr1DqY?;UrILgVavtJNL)=~QWTg* zM7*(A5fT6DR@4I9e2SV+k*@fJ5ou(gaek5XzmQWBa6}G>3UZ&K>JFJ_I0Oc8p#%yF zy~WEa?AroU1Us?W?FzNU{s{v0pP{x@>?OK3JgsY1(^x>-VnLDyrX?*=15&uat*C?i zqfe#}c%DjkO0U1(BgBvDTD#de5SSW4i4=REZod=!&f_vZavQB)<3q3U8JO(fMb%VQ zU6vi_{jMC_kkd!Cx=y~uF4h?q9v(*n6)vJbb5kNKneUf=bh&FAWYinv@Ql6+q;dfc zq5i`86T4+nq+-KslBt$VRE9h*`aDII_lp3BMI2#nfXSCk_Xr_l6}S-5#WbTRU4WI7 zA%Wy-^|;@yFJ)WBW0TQOZ+#-YN3!0mklvu^#>U-tTM`mvx>d?z>B(W<1i|D912ONl zhJ}6OH{(cgaPFVQ2B<^aPRD{5ehwvd`yEeqiA&#{@WkghywJZZ45?k{Siegz7#O#;`f&CrVQ`GdX1y9jkg zSQO)cFbA^zg={R;#e45)z$1CVN=^};4>0QoC$KI?s@BOWsfN>CHmb-kLU9)X`PZ5? zXrNU=5Q3Mrcf@*@u7%=L@T?PJF?g_t_UQZ477lOO=^PjoJ-bXS7G!tAyh<>Z(iZBI z(>GI*m6>mgsmPh0ELV?1h9@g3AV@{8hf`CwM9rq!Xv-}Q4k0Da3V<)99 zQ2mfKZ>F-k0H_3wLRUAVM0{H?i8L4?a zmW=#My9epq&1n`98d|}LY)!M4)hZ3QV(yEXOttRz=yC}?N7tH1SEQa z@IG{PlvLWvPzBxXF!P1@BI8gQC80^>yG(kgMPvTym#JC$4JmrV9WqOgM!CqRky)%w zOBXeo-f**|-!ADdkbYZQ`r|5ns-%yX^lEhqrP~uYadcDRp+wLom+x5I7Mqv@%-YFG z#7`8j<>uZ^3h`ghfG5?hm|swa)mh*{-lp;72;3(CmxI4gy;~{Zu+fl{*dPuVWQ;@E z*6Q`S;tZTiN}g_TiRGl3(WT{yB?VMdOjTWo=EDLbQE z*%UH~HKh*VZuHgA3WFeRs}P$b%nJ23KC9W*$gFun;MTmN_NE;FS#r`8a7GgW2Zt;Y zgIhBQ2co~+Z_*p&K!?C*#CJ^6r(l#< zgN2h2eu`7M9h9LgvSkZ*N*&?+-_)m|!8$E!$rTlUJXdHIG@UPvrb9+JMJ)e(GUbh? zYojG=3ertC!lr&M4!%K_p*2s1T3tSk2qou`MR0lytQTzx>hEXwug8uiMqx z_?NU)YpjB+%`mA^Fa2?$L;aCybsNidBbu7i3(z`s&1oMQq0qxJr+=X<%;}gD+WCdd z>E|*{waCw8*Quq7e#Vn|+CN3BtOis279WW3xohFid?Dlwsr^5pFe#%|yM`6tdHixC zuKhK!;H7J9d@jU0pV_`#P>jQT;NO-e_Wla{F%EWGsQQB^gqT(k3$&{eWyHL6zV4CK z6sEvC+F+fPx2L6AQ+St5;g#FE_?3$gQz`}X(5^kiouVwF?0AQ1%ZH5lG__acN#P4+ zp2)E-qJDNSF(HWqjnO9W5;p~~ZWPv4geQy;ako-*fLnf0c}hVppQmS(O(ne5d`Lf{Falln zSl#w}p|&`K>96!~pB^5eWQ#9Xmhz&p@rC<6+8K*`E3+Q<*;mIm;{xpBAP|L!SBwl1 zs?nPYQS7ZDVlsHc)J{?7OZ^&(bG-8lBs!w4Ja|H5m@9}MA+lj}16M#*B`0UP(g#FK zz|G7YqU*Y+rARpcZtnO^p8JaWY!LgPs2u5}PE1RU@Lg{ZXpKsof#4xv_m{kpZRiQv zgma6Ylgy@;2}1USY=4z(LZqqMnyuP4a1U^@OID*VN;V}E3g^FfLaN+h5Pet5hQ<`e zCjstS-D0b%C(<&z_@p;1m#XBTN|tw>cc7$n&7CKEwf2n}=LAY`_4OXI$u`!bG$Ibnpa@1TMeK<9`msFQtE5I(m?=O zk&#HFA|`okDTOUwifDdjxJ~RWkfq6qE-_4=kU<8I@>Iu@7>_3m01xS~b{BprLne~{ z!aLO{9u!X|HObZ>{(%vJg6d7oY-%8n%4ZgUp0ZuLjm1YRX^u93lXAgUC%#QWgCWMQ z`Xe4q(WfmGc6Uu`IU>^2hBx_*-bHExEp^+^Bb1KtKxkllbD_TssP&H*_&=c%xs|{i zgNR45{wGKklJ;f+2mcvt-`nrVB z27a3Oay~O{KK2{y%)QrgI9DA`xBs(1${hZxbp)4qL)R(nT~dl|EB_@>aW?d%0wIlW zM#PFQq?di9J<-Wr>h@*gc_Q{WH0Le*V9p{7YzR*WM3~nB2CDRjWJXHYOtd+ZVR(WB zfY<6I27YugN#*r>rG3%^E@XUeW3?{+`Q0Q`4DqetF&3~*H@NN;pb1d%qasOznUll+bJ0<3x zvEIDlb0CgRs+p9SU34^krrHiE5pg}&anb&P=tlk~T3{{;%n7OqZi|(n*9ua!w$Ix# zA5@oUP0nhO=npk_ekK*+f1gOhH;hCS)~vAk5s4L{+nKTqe=k{p-#yKG119tQ^7gpA zp&^4j&}yg96Vx1>vd)zKC%HspGyD~6{hb_t3I7`XvtvqJlGstRIh+1>YQ&Mm7j_15G<9zKHFXA?iR0Qj7mv9c(q+dt6puBGQ zuF!3K1Wh8k_XNup8k0q@kD;ZXaS( zEI;n>EsbM4zoGlb=-)o=IvUgoF&R@2e9eqi#m$-zXHhX9TrHmQp({*h4>2C}XWY+v z$Sb|!8p=m!Gx2(;96_z!KS{_;E-pc4>!x{Z1R?bv_!$;`$NV=^MfC|)%#tcZuF@)| ziO_~hGiB9x)c-CvFR^o#Td)33Ptu9Uv|73M>gu{xPOg4A5XBAyP`2sIMid_ z1W5jH{?h%i_*Ip8hS$DAk8e?NciSy%AI$|x+hShx8lp21A$vkvNbf8A*n0Eg0NfrJ z8x@`c3wQ2ea3Cn)Q%N+$r;w(|#sB6}56(yWSVbtnF9$T@-E8^730&q1-*5|)f1`?U z$UgrVs{JDSIYPA~uDpWuZoT>TRXMj3Jb^YbqC6w7dLT9F!i(z-4+_BEfqqueMZg9z z5xt@LPL{4G^iEZ;=)D|(LiyB5AS!EKV_zhQ3I0ry(?)_2K#SX^aUV~*fJF2!TJ09v zP?ku?0FE32jt>#bVT3?d(0)kLq8zR6Im%Z+02Ri#ar7bK2gJ`4?PP+*_%GgAhFiYJ zjo30RjcJuETRd}&A=sot{G@7DkX+{FS;#Ub6z3y4Vk+@ZBVh2LWxu}(Qp zpHEVBq|~qKJMIA9KmvDxLZNh+7d~#G-b<}>#WCYaz6#FW_Cf-&du0g1)9;tl+QO&@ z!;}J>u9GTeVZj@1p+(hGWhmgE>I=;;5Ft;67zm{I5LL58r5X{H*i}+Ooexj&g7V#B zkRFzoAL)2}Gs8{H(Dq!#5uA;@s_dqMg@ZkjZ?e6aH*uzb#W$L{>;{VgFh%7lp8RzK zc~~lonw%`U5>;jPZ1n{>y1{bF`S!I6V4#kf8GOP@X#4iXxgfnKPw8*|IsGO6jlGSm(&lge*}sv`$fK zlth0Dz#|+Zgk$e+6M?IB0Rhl$WKg(Wcn0X^*mQAQI&<5zhZ@dWZ0}kj>zKDCB65*aJW5h}g)h)lKHNJp#M&Gak$* zf5)T>UKVtZR4O`>ugcvfMIUN!IXWUas&IdPiK{N1pitdcf*`~V8~gb$G17;P77Gvt zjUYCOENvyUlUT(s-8*HMXJ zq}msGi22jYzruFxD*wD}(jO@=`YBcZXFNpZmNuzE4OwY!@_ks=1Qq2k5Z{C+Jv;cDCh~2*&R~1!Wd#iUx zldMkwZ?XGWn_hSV5A@(CiwR?3i>yoFmC#jA!x4K${Iw*g`r(W@Pm4F=6Zkd-ennoU z1arrS81(XHct4xc6c*R0>2M={KU+g@z z9YJz|nJ_gMA}}!T#1gWwftwTEx`S@9h2OX}T{ZA?>d+fRCTrfY8uiA-T8^Fb{KlGy)g6ch_8<2dRvkHz}8FbPbICi1agQ%XA2WzUIv>OKk7}96SpiY8ldsiVP+KX;ay(3FQ9G-ed#A%DRq}~V0 z`{J&5oVeFW{hz|3OZ^P{^x@JTWPms;VF$FAJM4H%lZWX%$x~UL*P11gnba*VlK;$P z{(&lgUqx=li8xAr579zK1aqv50;pfk1>Do2R~!A5Q(MhHuw8d#2q)n!R8CS^Ts-7* z2rrpxNIK7dQXYC%l`l`0zf6@coh%i2!h_J8EN}pjaeuD)T@@z}A4ZxF=O;rv;km5p zmi1P`f3j+|zo#{;=a$J7Ti?P1wIn3O^pjLWvns?hn4@}~r&8z2kx|g>3vv?;KByYx z_D8d~)gYm<*bw7Yi=x@=E#yYOYH=dF9dY+%v80u#9dg0Toi@x&KQE!)t*!;Fy9>lI z9rL`s0@-W*cPIPf2@Qm(5`~BAtlz6TIM!ErU*VOZDVKos*7}DFZ-BNV=gLstCCUf| zix}=T`PkGB2%5oij+|b5-=gGX_%n=C*t)pMS&9a0>aF=_>N9c9PJSZ3a{D+tPO8;1 zOBmN1>$pI!kQMR@&JB&C3vvI&W>J3z7nyv$A?3 zZ~p)Sj(95EW>zw1d?MaYvJ`bG{ZAsZr!@lqz=b^#Us-g{wTZI9*3~%3mJoB)s^+43 zjlwk$S>Zve`-jaz(syGdZcjDf-*}Zv8*d7&3K}-8{AB`=O&#iQnZIOV5 z1R77Sz5G=ZNRTz|>Lex|GNP7-EJ|2$061T@#Wx{C`VzNojPed=XphKk%$Q;g)+66I z_&d&y!=1aw26vBDlC3eCp;sTeTo>(|&8NBcaVL3}Ufq6C^^t?R$N~5`=8ztqdDK;M zz~wx~Z}pMY$?RkHxx){P*Gu-eogMsEAGt#mB@)Na8?)IITHdwa1v~V6wfR(%veUvyERer?uw}|CGTc zDkZ5~drb^)gWI{1UswH<+)llEGi@DAZ%ej~%-@=1Tki0*qwbPbZs$6F$=t22N#naJ zB&l0ljkLAe?Oe{UtKOB1N~00waSJXaO~Uq$TiG+XYBwH@-p`67Y7ys!Ko1DA z$QFm*V})pzBj(AX={b100vA2eKNtPm%G`f{k?MbHhUl%UWSyFsb*i^r17aZ7%&cR6 zRByYI^zby@#Tq!*@oP28vM1)It3_7mX!=?t+W&uO5g-FtWoFjv&b|D~%p5CUJX&ry z@!vsQ0hWKu72Gomd@Jzw2zV>OCTkKY2hhs_ba(jbqk75rZf6s}y!XA5gGnk8t-CH!%hYn0lya&SOstqYwZM*~*1Hc^X;t;Z=I0w#-$#A9y}`doOTvd3UdvF(O<83^~wq!&I+L5kn)TN^)^JRXc>f>_o z1|)Q`lgcvYJ*l^h8)lCg5)PRFo|4<)*Z4TxZVfHg56AU$iSs1Q5q&JyQza(lVd0gun^$eGGZ!}kb@IHC2nBxr-MgD=qImzsD8FZ|lwHlw zE%J2h+8J)`-VHqcOn&ZEsoB%GKwG}AUP4l0t@+25+d->QnzDxLKqiL<1s$`w-4Svl9M z9_{&5>iA0P_)>n>NF7_#>R6|qx2n!a-dQrf%C$4JP0Z=Nqc4(b)SPeHG((Gh#kaFU z)6}=k;vj+Y`=V2BVY3O%X%@}Ei<(H4&=_z+AioVqtkBtOs1A5SSlXW zkF3Im8QLxUyS0r~_)?p+s+0>~MD#sFTey~Utx1n;KG|3k*^*VW#kNzOWJf zGx%w=M6KgY%oJ~PLQJ^11FQP5d~F^d&U?=K%HBx(+V^_UB`0)Oad(e3h@Uh46No1w zNs*mB(WYL(>Dr^oSjTZHQFcyK)(;|@^|T6Cj7Muhy;fgkufHxMb{gL}v%9{<^7tV8 zP-RlYU{Z{)aEJVyxZg_~N9L-FX%tPUn7DH4FkiG=tnrnJxCdM~S;#*GY2_nGhfOPN zEzgtYTFb>9AL4t$2;nnMl~@(RYO`Up(PASpLJ-$XbzFPbMR+E9r0|&~1A@|-0OTctLTB+QM(7d5g=R;MG`1T3BY`Ku&EfB`=vP(fS|Rt|m?8!xK8OQ4)UyJh6*Y;7PnM ztNM)i=1J68`r|duq()C`qvAKD?QV5SeLvP;+0fnlyYAZKXGrz;r2o0U1jz|*wxkUPq-srR7WTiXSYK7Gz z>)*O%eNbf;&MJC0S(Q_ew)n0htsGa-dZDOv@oFZfgyQD3N6%Ne_6YY`wnKaLG+vb& z++&O|3yx-kb=8GKQ-wCd3KwPjPSddsF+k>dN*aiFrFi(cDW`mTM1pyc7U(lHj;quvEAzI==_9tX4@8$8Oz-XW4i$1&+hvj1GE%{T2WUs10ahC^3Ex%b(?Rp{Gx`ic*0 zwG&CV+~>L9V(e#1xo%m_azjf3D`V2KP)sN!TA?to-2B2wF7eqrl^oMT(q8*jCCXOk znB-~T&JS=mu>cHV?Tf|moUQ!mn*cf-!ZY+WtdZCQDx!&Z8^G`xs(40eKBvr1Q3 z_Ra(*;})|(N9e}9JZ+T>@-(0QkS7?)C|!%b4k-a)WqbG7?};~Y>04k=&5>&AKq?c? zuj$r`wW}m_c+4Hn+eIc@b>yJ2ew|63I07%rFt{pB#+=wIk9-QRLp49?R?X{_(;KE! zjX4{831!TdPUNfI#8r}($J=JgAD)yxSgRY8r5j7YHwlp%8U&fz6gELGzRrWPgHFD~ zdRA$!HRYlTLX0G0B@07qwO^`dMMP+|AMzrE1eR~hwA$bDh9(=peY~AVNI z&ErxD#+~+YB`hmqBFi2TxK>h>YV;>CSiZ7DR^wyVB#wkTlY8S}>P*a5)c@Yl}ZJPC8Bw1@8#e-3Zl8B=2LfHN406c0cZ{_+5&(Jt87o!ozX& zwfRqu4Hu&F!cAv0aT5DJaF$5QWYg$?LvnlFONaG_3H+Ls^e1)!;`r|epJOxo9RPHI zt3g<6I6cPoXunE*#(f3Vp57U)<%JZGYbzU1WSNPB^*R-F9XTFj-x3*h>DuV6sA0Ot z8#C`Ygbt}~;Td}S_}&?TA)+=iHi#(DJ&-j(%>j)+ps~mL*f|gnXVUpvU@_TwKh;_n zyqYgBPEa@}bSMoX)fHV3PQ;%OuVf7I{kW(*jh)_51q$&sm=3zMvD@V4-BD=j9d2WX zIx-HMts9xfkQay>2g!Y z#YRbMzf`Reu9w5*OdYv6V09`9Xcs4vWSB;@Zr1}nVp@frDvYSHyd^8srmVM=fWEs> zHl-N2*$H@b-dA-){NrF}PwmmK7>X~P-TaBz;17GvXK#sbhviDB8AQh^(l7xu!p2~b zs^}49M4HF=1Xb?-ug4w?t7MBG_{C2dEh(^<;5GC9szt4B=eUcNQ$k(s+7-8?XvqVV z4b9iymi&awN_K+6MC=f~Z0=ETswpVC=?+!PJr2)69r_nwTIYC77N*G*-l# zgs0npG4cf#+f4+A47&fw3t%3yV;7zf@nqvxs1mr~&7t`}(>T8RN8GCYeN4F~N5*>Y zIC5SVig;b{C|4@7q&EijXXqA|(dF8HgdnW!4bTYpQ|bvV_Z1QNzne_Al3Af7yoHUFsYU{@Pb~T;&~5fRb2Q2uaL%XN?vq$K^7YQAwNy%b+2N6tco|x`kOZa~9na<_XdspKNDQ)SY3 z59h+3pd*vbnll|w?mi-;TBqWFt>_+xXjN$b2qxV<`dc~Fb-G2=sS3~I7uF858HE?S zF3eT$JC--B|b(%>4mT$R#$ z`aFV*nUzAsY2Ku;A|$^ihUPD(&rns0!ga%UyyBL#4{-lB7fKRn9RBDI?S}s+WTx*Q zu#*bPE845tnExAwb>a=(V7!M$Li0QL>;CCE7}f!TI96F+k^wh!zCY7|5oav7}4ZpKBQ0v@+5PgTqll+%96iMfg=syQt&wGPTntm z)IY3mVQiQd1ntILoYnw{r{M=sR=pI&igqTerSM%loyKuYD~yef>fy3&3~QUyIHQo8 z^^#}%`gQqE@}}hd>MxCrWnG0hI2bNFpfcR~eYmDDSz-WiRqDL&lpK~Up`VjEgJHn< zz3VPrt6_}G50@NtqT}+bpHmy*z+vZ_8Nr%fc%KChC4UNIo4mwKWX(Vk{OWzI63BYE ztc`B9VGB|^UsG}__bbwG)+5yaB-H=R8H60Uy1CgHn?KuR{r^bZ#m?2LJq28drw*G|^%-9%NM&8-45U^PrwEnW3gu1lY6+!Q{e>+Q!| zB?K6>N#ga9dF-obHcQX zaKJN~^lnOm$Q#Dg>^CObx*HlnvBfx;)wN{WcO7vL?lcS3s-MD?%1IT;2yr-~%}!@? zbHE>$F^65^i1h?jamNf{>QLw7=e;1=nY_)&_pp1&!mVR?L8#%= zb-OK6140ec1DGjs%w*@SUU>l7&dGRtmNjoAS=ZI=QX#bYULj-WYIhQ6lKTa}y&9BE zeKw~PL&d0K`i`jK{tYEcYsTZBnXF2S_wSb=y6;G@+K=i5B}&zkWWES~7rp1omyhgQ zswbg85PMVY4@U93suB;D64b8T)M8!+L(wC6z-krOj8yl&lwSW|g3m)MxmdJ4NX1J~ z@)}U)e>5n&dQzC`$sqLveqY_oPwR=UR7>76>B+yY{rtbReVKL%64spKC?<>&`dt#y zj@sP!*B%_5*d zC$P`yTp_mQwuo^>u0BIcKDUy~SNpo(5B1Ut(Ux|#xfMJdtLfx|Zh9AdXas9|@zwBU zKCzp`+t7ST@chJDTH8qZOU|WtmoqiS!ea{u;XOx!1%h zPex)RuW&k7ffk)joh#&WbhmB_!1bjYe?!szT$7P+_M@C*nBC(UgG zgnj*tNdG_W>P-`_oKAu6{l(c%E|!EVvB9B^zzi%qA%kd9aK_$*?^5030}7m3iZ|#1 zan^%zVybyUuL>3TBtLlxO*o1LF{htc8#As(^ZbMF6>e%6C5_UzuFJGZ? z*O=foES=FZkxi@vO+1|Ffe*G0_>k8^bM=`!K2N03s{fU!gkBHb0!9A9+1^`)fKUTp zFb!DsvMcjG);{eHqZkKuKEKZ|xa|f*=>~X(u2iA3{JQK^3uX(H5-`Vo)NfthV#bU} z_KsDf(VQ|^6Tf8c4Z`e6u5cg0(rf31iYTtRKYj=`OGyyPZC9b97EiB-&o{e-l!Eu}{DSRU&6qn7MYkk_i|o@_57UVr^N(!>z5_P{aQ1UB_BsiHP3%@ghoT3ah8{ELMlH3DZFYQ5RxEE# zENg5mZ)|70#I0-U&$=l~5Q}dy7I89X>F)2)CYDs^;z(J$uH(!5ttP<^ByO}`?SGXW zyJ9TCcU!sO=14!$u-$31-|wiwW=n6;D6YHAEVDlV4B-@!ct>Q^K*x5wdqy&lA=0H> zrpNmzsNYLU%m=+g#;;GG5aCX1Jzw`__B@bxlker@y-Qtw_?E}~pJf5^w(&!%Fr6(?6*wf{@X?)JIIU7H=Yfq*-EP8!Jwi`U zx?lET7Iq+!k?12F4q7}zu+R8T#wLp zb=vf#pSOK0sx{T$z~MtD_rS(!nuR}=oempO5O=(4tO%FQ$_LiOajX)PU;iPc4Hzy~ zX`H4$(3LTE0LPwH?h}hJjgLOuCGqUK8OVvQb7EsY3ScHG06GGRp;8k}wcZ3@{-!s< zC|44QeSlmIkc)uC1g_qnoI@YmMw~t(1EWX&k-b?S%{Wm_<|lPtK=36Ay>|?N+UL7- z`xqi;3`X8IE%M1N%hoZH(Btz4hsuGJ|s9=JvKd(b_oBR0b- zC@4q_+US)&+c3kt(}=SOlW)3$hlcc_ddsQTRJFEo|)^-u00j7Ve|(3Yb7 zT5H179`t?$yj<>ACOUzEX&1hWxqu_l%<|yd(94|pEn-{n<$@K&T>fBfg z81np&)X=$DW<2=t++93aCvzz8;bdVNy%lr{y)UZ2Zu-AVLq|#+h82o#ieNPH)F3mK z&!Nt$kvuEw*VG)WUUVrau$2JhL~_W_f9MWHa=;>x`4&ArZj|%jB$Y|X2h@p92_v}SuX{gHS4RBEhX{m9 zSb>wW4fK^;Z)|sXcxFV}8tH3szqp zZS?@$bfWIa`74T$bZ;Qn1hzybn5>Mx?{1&# z%Ov(2kP8t%najF3*Q^V#m7z;38o3MRGqAU;EY{OjHwirH)SSC?KoTP~A&n72vZv{h z8TwAc)Fj{Ti4Hy2%VdI?5N0h!2u|SgwbxsBm-y?>jQ21CB^sLC-B99v{IE5t7cvO- z7g=YsdjL2IUg9=GwX66W^l1bUZjZTfzESp%$?(?x)*l$esvg(1$R>D82z38}DXlfN z+s#J*YNB23cAwKH-URIz$WE9!svfO%_@q}|&C6boj7-K5<7{vU_@UrnaT#`63%#~K z{a`u5O8XZ=<(Us%@nr_IX(Kko23Q*Yq|1Md``?hac*3HdIh?57rggoIU2(R#IlX#F zGqg$5kDMs*%&Tg+O?kJA(rP5v6OaWPcqM7Lk@D{1v-#e7=Lf zAVTPD(rh6GDfZ5A6tfW<*Zk;k`QSkHlQ`TSU)viawXP0#(|0UT@60#d&a)dYF!KB= z=5=V(;TsCMW^yuVFCbX;SUdVbr8RF-Fp@dR_!GZiNT*eQ9c9oB6gp+gtw)EN55AQX zDcNm3TFe9H7)61a0etyD5KT@(<_=~NCB)H(<~Qq^Ro4l7L4abO9E7ikU#I8klw5Bd z+mhFrml^)cy7@ZbCrk8_gje#>`J#!*{_sSztZ%O)t?z41TSz5XV85pbf@3ppd6QQ7c7P@&eZLbA33;aJ*! zMM)>~*20R0kp)}m;?+X%q@M5%$7XpXFEi3ON^vl(d2etNlDAHrz~*T>n_fNil!dzKi2yelkJCy` z7-1;b=#<5$-{Gwmj0IUP&1keRj*>bi`hF<7f_0M-DO(va>!vBfy1_?X2jXKZy>;_j ze9v_rj<8m_vA3`Sm?90;2_OC}k4s$fmWiUN9G6qSrn;CbfOR6070LTU4~xNkgNUsw z=3&{f2UudY9Nla-vp!bAX!f(w!RFC9fiTC|aCA~(!>z&D+X4+Y71`0x7zlk7jJxmo zUaM_bc;=2^UYN##e+JUXzqSxLK<6%B`|(-2z^r+<&30e(?ax|je@yX2o$fb5!W3%% zi3%gJd-FqPnfLVtJeG+@BF;XYh;25950oYEBgQF)jAM;e%NzW61d2BqL*PS?g7;R{E);q%WQ z0UwD2Jfw|eGD8M3k6d*MWQrb7gUlB+DzLVB`e#pr40zfBowXcDI$VIYQd8asCR!V8G7&MvnFU1zORgGHUwOuc@)@Yrc^`BiD|8!vp2Q z9_v{o*Ink3@pHZPJR#uyjyPpqr-*{+wZ>a;a~afaZ&znSto0 zxXU(@SKJUVwbdS{e4who6B`W%;+jyM$pu}r?d~o4j-LI?QvH{E{kzKVAD@Ws%^qhd6@6q z{X~IefxsM?Dw7)xu}?p3_ZT1g2274+`s7wno2M=?@_t6_?HrIk_bF3r>IOd0yg7r* z&>!&UG%M2hb!>|7fnNE99+5w)%vj&>kW*GndxKU?q_9_F2|&cc8m1^deQavMR6Q5<*YavA2m@FV7nI!Y0KtRVRc>e1QITpYAOQOvHM{^MY z7!5I|ab^7W53U?)qv}V#D;{{+aI-`_Jp?w>rIDJuofFHSxpzLg%>5JajRaZ zKp{Ec4x9$=hXFS>c!vMA_8VR|$)8lS6A8WNL%BJbCCkc^-K^YP}f2KK~BYe}fwN|~ZNic}O zYH~3h(3X7R?2*M+S#zvZmircAyp6E!geFI5qnd*5JyfGgc6Pm{l4p8UvMiP5K9#Bj z7YzSIk5tNfOnN@+hjA$(Ffi;KZ2e$C{c3BDKjMZ}JqU#s zn9$|Fg*wWPC$bT9!ECn7IDn!m5UN|3QHhwW^ZM8oJHdpEijtjhkxq2iq$dsCfSibP z`a_2Yvx{hkYP)#QP~E;XCKOUH9<;J-XVn4&0k`E*A1H5Aw=rii;Dt158plFwJqWib z+k`lG=RoR#?*$%wfA3|uvr-lPTrW_$DwM8*HFM^05r5-9rTbiaj<1vPZDf2iG`tV^ zkl}qm2fIhM%iTbo-9hZca2-m(X#1}p|(Kn?&?3Txxny3UnPsV%|8@ZODIi}Yw&UZSO*C5jD z`%5bIV>uhfnh)M~Z~h~;X<|zvjSu8k(^Ym9=ETTT2sxzKK_`=!nC80M6IyJV1zHf3 zsID39_UqMhGxXLtwSHxG#`OyliX& zy731w9Xs<0_iL(7rflu*og`(VQN~pnOE9y<=zX{QQ^tmdR{8So;p$lgB3FdV4*i*@ zjPv%@tqAa7RU{~k)Kk0I7x7Rpf|NNW2dfB;M%Fl=?@aNJ@MB$N^{!hUV59w`r@h@5o4}36>sT5&?pw{kB${ai zkdVUD#fo<0Z8=gjT`->5W@rqb`?ZYzFb<@Lc?di}>M%isSHRr0hI}X(Ik4AI7 zqRWjWhsheKpl}3Uv61{?qkt~enipv3WBAx~4{?9IiX4b|HrtMk@1;-b;v5~vtE;fE%MQn~Aasaj$HCxW zEq?1Mv$uRX_PWfkQ_@;>B{j17VD6V420Z>*Wli-t9MITuSGwQ(*OW( zQdOo$UGU7T8tc`UJ|FZ*y&4}NmPvkyIjPKD#&dbENN($2RlRrrjjl%zD+=fqnNwWD zK_9JUxbc(LJZ>Q+jM{eh{a=E%pxvNwiR+Xs5(x6(UM%dUQSe?R4Y?6E%iYLdg&suH z=!4G1vZS}_wR(+7KsH7rr4^8)8Yqegp*B*?vRN`b{6-I*+0d<4Zy)Jwk#3J6V+sk8bPY{RKL?8#ZVT@^X8{(Vr7 zmF=l2jsynL{yEtj1(-I2VP^YCr#W5SOm6dWNk7mJ3Gx`b ze;F>{rxbCz3nk1@fa?W@ah5wEZUR+(?EtfUV@|pX5(${(l;gXqY0~F?`MgIAlx}#3 z8wZ3@$)m8sdi<=APB3hMOQ8Ek2F?8oY=utj3-Idqa_{84%Q008)$JO@Jrjd!ChEqc z!^!iXWH*j*o{sOxM&CyEtVr(Lh`t{j;?(U8SdX4f9bD3gNm7|Lr#BA(e~1kCmxN}2 zFuNw6I7oYun5MPOsXdOOw#|CV$KtjK-8LpDKMt@>tOict27UT&;>@R()t zVf0@e#ugAR*-ou9L(GJx66h3YWteRMyMOD^D8(@&{FJ{e;hQCOX62vTMI{pVPzINa zy0%#!P)2twreDG8>#!L8tg2;27YJqmi=qOSeoP}y$wp6$;l#4eHY8;hNOid8=gD7G z#O&jQ13O_os;KrvezqQ!)-)WOK;%6vueN16b;mQOi8mBX$8ujysP3IC?{Ty>@Ahi~ zPJ9>3cSlYn_Yg0tuVMYZZE`YC&B-DMd%rAvYikxNg8#*Mf-p(cX5_P!&*95~*QlIA zcpt4Hio?lSGX{HO{)!V_>JKlLr{T*g@J}l=f@B54WkL>_r9IXqY zXD$VH)|{`x4eodgSVCw4f4>ms}_C5de@YfhnluG*D z0g!bb3PO}3R>gZh`eU|+=FwaUfd=X@T5YX{PEP<)!Ub^sYc3J9#&NVTVpZ;zdyKcV zoB-}gJow~_K9s7vDIJ7XYbl`tym0+N+p0L=H`(2w-`e*~Yi#0NzS^I7Qo*=2PmBmL zg}TRN`}_YC_H%1qb~IkMZBX6OK{a=U%$7l1hf90#hfZ{v6W`7i2TSX=%?jtPb~>9X z>z6(l43{ma9>UZ(@kCk8#msOXe)LOgT0y+oHOrD5>%IqA+X%U#H8zd#4oL#Hw8h&B zb6dD-fED(`c-a9I*TEKI_IG#CqfdiRp-*CCfiL>naBJ1{iWgA1*4+vIpfN6sDhoIVxGqjEs3zzvB5N$>O@y7rbaDnPe z&@Kg#QRdYzX(*VKWXL;dEi-|bC7MSCrCBlV(!+U{8f!a?u86RTd3A& ze9V{&ta-Nun7=a&aj9Q3GqA9JjrEhJ+M`lqQg@D!iD~Ml=OE_bFf@-vZ`I3KI@~yj zz21Z{tJ@CQJ~pW4s|KsJ7}g{&GV~yVSzCNJ#QWV)-FArgG0}?p!_e=t%~pLAjYUv7 z$M-|NHJem8{DR1wHKN}qMZZP4BeC!B7y5nFqu+W8fn0=GE3C|I4VAUj%rxVWnLVgh zeSZ{X;YNSu7MgRx>5JDO7u;NG@m}xARYtOS^J+fLDcWp_EMEM`{Kbn!xVL!C+F@Ie zcE}9b+c}WAdK24y5aWBheF3o1I;o zEqgZS)~+={w|Du=q7m^tHH^`c$f_y#iB3NKZpZ4)(3~MoAgfq%C*2to%&56QC+EY- z{)qb&oY>ptrAO%%9pd3;x&*YFmMA6tfM^u-a8-1*uafZ=tJ?}qHC6+ct1}re6%zPJ zQgW_G7|&J*3NxyECv$M*?52ReXOHUl^*!a$717mV*bpU@YS{U1l_%$ZgevkgsvqhJ z8p?W(#mR(IM%aQ8^1ar9NRjr`F%)cH?J=c3O8dd&VI4$$@6wony`W z+_{~vf~B2ncXe#QN9SD@@WL+kJ?(qE-L!u7y{=oi(0qSx$XF7F*0x#m!UH-(9jz5} z;so7{9*ie4WjbEAY&v%3c~<%14S2I`sN0@Bw8{F#YU}$x&9yz|7FX&<3lRV$skQn% zY@iE>uTx%sIC^sCzUWCv-|U*5oPLHj@eZ=kO|N_4^JJ;^HOH?8fs)($riY4-IZ5*d zMaPhEBbVH5NuKZfTk4Jtm^tl3v+Ug0p|``Fy7oZT+2OL}w7$AV8bqwwJaTr;dQVt( z=35|@4xf{I?CQtISKW*wWb~KvqoxO*XVyxz(aajUc=vz9z1Y| z%W&JasW(>rFujg)ZB1e@AzNRk@(`6vVC8iTX%&_KNxeaC_0v@4$XrzUF>K;g%RWd2 zPU(G8{bHqif*V;^22NC?=lx;4uI zc1z+3Q@!TW^u5^c`wU)pLyy=q+vsXGT{ZH)ANPdAIIpX7zRZ9V*QP2&>aYR2tTB|N z-Wd_0mg_`!>=rMtuku)+ISGrDXo3Dyd>k=s3F*>!?ty={m7i@C7Lt7;)sr{C8p=Vu zt@@*U!LE-NRu~dO0XZ?%z<_tSkNrCmlsYajuU|(Yb!<7mWIr6xMb(qZ*2@=oNipu* z_^nd0N@Nfa3(DQoO9#Ai$|<^1U7RcIzvI{RD8F{B5~+g}Df1rYsDQ>80Vy=S}p zj0QCCPpJXvE_n6*IA-m@N6)GiOw_}mzlP7Y)T&@>KhvR2hl@ zUUVhye^5wSS!6M=*964D6|s?_Q0)>8&qN2>4I+hNBOmZy)ph1skFDbs6MN#t-(Z4h z{o<$*noc_t&yhjXFHGnR_~Q68OpaBjo2SXR$a?JOq>O~%ha}WKovq2zSg-Ut+uN%D zCRyrHmC8n40#s>4y)~j7zq7ZI)dLagjtsEA8&aJW#Up?R7t;*W=UNqfJ(bJUJKSY| zF!0E>>IaagCM;7%JW4DC8w%brQ)oF@6MXd`%zURim#Fmg>5U!g&l|YFADJiGLrjO9id|Zsnyfdhridz6 zcWj7NUq>0koYfus0_%;Zx?@+?+$qy`s6=P-fx6CKHRD5v7iB6W?pNO{x&6BfYMaN; zzo>Wg-T1Ozwa0kT3(Zb^WmfIUGdKPsqbe`Bx+aJ244j^m9Ki2|GYarQVm{2|S#$1# ze4M6aRC^3bCx_yU>b9+^(wF;V12VXCS@h=o=vVVdkBHuk zIny`5monNNfFA^Rwi#Eo-*dN&Ch0l=W4NQla8ia2rv5+=haOHGM&;?fN!e>?UpGF_ z)n7B>vlB-8m@c0M70QGO-}#*|q51}6Rsz(j%ZynGvRo(1MFx^_dFWOo8h5)_`W!7P z)@+3#SX^k-&Ab^IRLWdGjXoofml#iA%ybuXJ&9orIe1hQXVy2(Jn!^M{76>f4ccmt zHUasXb36qAvzIlS=NCBuWF)Uwi37Dq+jvk3)_jIa$l(1&OC^FTaisR>0hRc9=+6*E zuLN?H7t!-%6t(D3pE>DCT^4Mt3ofCDf<05f&PX3s1?QpJl(y#F#@lEjzO7GP+o;?Y zyh3Z5Yj?KI%E+kwK;+!2|1<@z?d(K{{@4(ejn{5F*-7?M{bi~0F4j=mON2IPJu1|{ zh8|mWhe6f^g;KLD-kLM3VSFw33B2-|p|jK>D`myZnFDqRTQXrldik?VdEeG#xQUJ# zT~@n2;|TpYma!=#qk2$uS>5)Nwa3({>a%0tGaWh>tjdm_X;{$idQ-+KOf{ryE3(VMlxFEQ!duTt1Uz%}bP{y@t4$(xgCD_V&zdLf4X{NSQ zP^}th>||>@HE&fGzs!y?vbF0r8DkSVA^k`6VC^O#t6WWzo$& z0ltuTvBoZdOG{XHeAWzP{D&AMID1DTv`KWL_P8Q(&Nx5r_Q`9q<{gl6$0w9y9O!E% zCLf{%U7OK2?&jsecB@4460R=DJKz^TveC@a&9b=3D;||MoA+Xm+PwE=dfzAQeT#W- zh+_3c+(0q=b-p;HFMdakuW;eIBX6SB*KYnB7zpYaGX{(=x8@yoA4>m1BkL||rqGmE z_d^~Og^~sphU!^Wc_><46nnylR@J%Vtrrfv@4k`Nm#&&mor~&Ed$Ta(s#EH_sJp&? z*K+3Yo2R4ogWLvhOw%z?KT&~}E8f<}J7tsu zi*R(GU9#9NTTi6dJq|uZXh7e&BRj)CB044et4BD2b|{9j-qJ|&2ddM#& zx|xsMKkG zqnCU-K~{km`tM~!q3x_3@yyQZ^Iy_n{Bq^)k@LL+_O*v5!Ddz_Gb(WwqyYUADUV8bum& zIj84M3^kw;Z%V$MR{zkY*zSK+g*hcFlUdrJVK)^=CcirO8rZU$PvRo03)vA-L=Wc1 znRIK;Xowg7MNyQPpX*Oc{fh})&>1IkW%W9JRQn?C6!ctrK%5#Xxdi|`Z(>oVh%KXH#qfOYJclNe`YG~4=a^Zu-*7v zv8%QkpEhB4oakOB@a8l{kuS?W9XQh{>XsAVF7aj9fk@e+=_+aUD0wesLi1;+A^*6f!2gSmq#L5syCEs{fN&S9cdr6!{V2M50F#@b|$qepEPmAY9TWC{9(R zUId590@)M2MzIWJ#r0H+by3{686-$j1@Pxjss03CDyJC1Q^W-4YsnE&YlV9jd@G0J z02UdxHD)1^#_f*PNa_`3pzgpZtQ!%K2n{U)CqRCt=2u;3cQ%O?n;Nq6v#z+_$`6kW zTDP?zxXil>i5=k~5;d3GvCpGxS087cVt-=ZQpVhgsQz2|6<2Uxp)ASpsC=)k@KyOR zW;K1NXi)MRQ^?Er+X`P5tUFq2@;|9?MV}vK%9NTqN>g=|;=d5UA%{rSZ(wI^m$g{+ zud~jbz^asd1{FcY$YAJGSyzM_2s#2)D0_>d*sEP8BSI7!&#eJkgz9TA zr$tV#=GOOPcH`rw$}me&SRdA`-4eRB^Z8=`e;2J38b{e0OoFu?2eD{oVVL`0VzLTc;k@6PVj(Ri9_frKD+! zU7hny;;aGOQuiiGs9rYet%5YmY%1-_qG6b_Xo#-NG_T%ugS?6aZ~#L+bV`-~@nEXT z|ys&C`Zh)r?E0QSmA^|Gve&PNz|a_$Kj5$OQRWJ@P&Bv|af|coFOSP9XjJd&mjR z->v+1{=nRr5Z>z}M8%J;^br4F*pNKLzftp80LK-MGJGv<)FWc-K&@x^Tv+`pe&wtE zCISz0;)DOgxP*8nuD>j*WFJ1B1&#AGltEU|r=xcz;1p_CdZ;ag?yBw7=GDY>Y>6kYCX_ZeTbzX1Fc$_GOrdxjU~sy{KtW=P{0iVN)eu zK8M}0)N04R#g$(3W-~_jvwE&unD5kLhiw*M zRW#m-zNE?TP&m3ebjx_Rwp0}_%I`4*1#wLuFV9Z;v!}1}Ivj~TlI32&HAtbx>$t=# zE8|)<`I7#;sy|lv0EbX4ZBY*M_eK4&u3t3=HSkR>$OfK}4JrO@M{*wOA3?2KvdQ7% zJBK^Tthyi5Yj{Z~dMv{2mUY`RtIs7d=}Fl_oH?dppyhPN9j>@+cS?@%#fcf8#bl@= zBZK@b^0~TFD3h!WTukXA;q)8WvgnIW2z~ z<#kOi?y?I4HMb-uJFywuipCXD+fF(iXg$KQbDC;!iSISKlW&^F&~83g)LqA$K4~wq zuHz!VUcmk&9%VJF?UE&S$0n+*9#GjUD;qPNCe#-*s7T+lg^h~coE_hjd3f{eZP~AK zn#@?cfBtNBt)!L0BeRRpcJ>`($`7|f4a2i*k14zQPW(L1b7CV0lz*x^yHiJ5G{0ws zxV?^R*jwt3&8ogO9C()t1u7VyuYil}Lv&kR{CuhP) zFh37tHr14z?!`ZAqkSts)5^awA1-1vG1Urg!dLf5uo~{-h9K|R)(b{M1qyB&9;!Q1 zUVS<5%XtrVC>UL#_n+ha#OkwoKauxS_5Nn=aM1cQUUkQ?y8YxoEa z-_+Ru%yH5F7L%D1L2=z~KDe9@5>1p%+rL;DoO#z7?KNx^4yT;lSsZpWtGKG%j!nj= zrQ4?_nQyb+KEL{fjhq!@#z=Dw`WHCdDGBE zolZIL!+mgaCJ6O9<5kmH*_hFIBat8wEk8=@-2RgD(9L2Ua-8T+Z@q-0J1U1|hlY(~ z-7R7zEkTr;RSY|u#qm^x=4H0Gibh>%TA2YClNF6{HRWPd-^Z;P3v>!3WIraqTnTUv zOEwbN&7$q(Sk(6`Rf?$H|DR2C)S*ig65Oi?*5hXHQ!m8I1Pz1P6(6u7x{$^R>3X-M z?u(98HlmOjUR>EYg$}B7MBA{v({9im2ghF#O;kn?3>#R?VRzs#0$((IDWlY^4dO;=n?y&yF6~i6^R)L*n(7mJI(4h04fd}v0M%NM}MSY`9 zahI;gxd*O-iQI!+W@UUoZ&ndRF!8TU4X+c06vZTE82?7H*2loQu8Oy@rsj<^$!$5g zu<71IZVQW`t4txu+f145`PgrCJ>>WgxeF?W^8Zrg(VAIrBox~R!c z?`H)wUm0D-^?G>2XExjrXt=Rg!!4N=4L4?$H%#kY-taBdDXWtYayCzbEs5kX{kcSc zhV#yV9$K`5bi+MfBGFK(gyyBNJINI3Z9|Ru`}s~LHou`?!?b`me>e2f{N0jCyAAjC zmL*Pp!wr4niNb~(nbRH~0IaOf-_kgsaU65Fn#hd#rgZ3K&aUi9AP=07qM4-0BccmC z)>ag~9$j3tBCtO2)}&D8<<<-9qif?yE7t#(=-Q68WUen-ToG7da=+HA!g_%*y&g}V zH9D5pNQxp0E21lk)~AYOQ9=d!#`0b_*=wUKDyV<4S3@7CZUL6ti=zwUJ9@|6GjlhE zI$yWuRI&W67uH}|yp;b#oh{YZ>jFbOb#$#^sBU5J=)$@kqpTMO-Vt~sy4FvI0-NbV z>iy>K+wUtGi)fwxB5tV^e(X|yN$E_FERz?rf zg}$Nq{>;kUm6hBH(6KsHw7D|6wX$dj=42o|j0ldd$rLmrA6d(So;L5)+>Mrd%7{V+qxGg!uZ%szme8tf?g80&Y-)s;g)v+Vgu) zSeUQxKTGa?J#(kfFbh(-1Idl_%>BB_J%e2Ly@*_-j+`#gbYfpZwzt*2<=tKx(3YBu zL$m+v@I^)qm!o24Lu?hfHgT?V+bDu8cfJm08jys?ghb%X%?6Fczw~e~cy=k+ei**% zZnD^1#>R#RQ{~)$>QDt%{WK_1_%3YPU>DT(#)DqlAw9fAU`1?g1pMEVGzWhPFK`Fz zUyQ3EF%ujxeQmC%tbbS?iM}PtPGPb?DI4KQDGhKe#W)VbKOMIPKh^jpYQ*26@dj=1 z1dGGm0pS{P(k2958KnxBIXAm=6%pP+UD!d+ts@ zGXamx{#vdTfLL)jjuOOU^9rln&tf`V*NpU4@xvuG8iCX(WMl@3-|#tTx1sGr7RGQ! znyB{*{KtnCn5hDHc?ITvSb~&EmV`V=f?X<2Lr@?>md)(iu{#Mn|NCbs36t#Rg4OuL z33tzG_Yiro9uBe`qVXGJS)ah{jHsl+>TIsT={T6o8oH+AAPxwKF`cq@Lt5r;?EyiL zXf&!T-_ocW5oPl$bbNWIAs^P9!MqR&Il%9k)|}7qlZMA<8~kbS#-D|~JS-{IXUI=n zeqSOutQo>QAG!J|6P!HTnEz>TPy0C{a}u1kP(q3;xub7)AMtayC|9^F1naNw>iwL! zasbAA`+UfRX20r@my6QLixy0&J7vE|A0!t@5e+RCU=Neu)|Ee2-K5g*zAp%)h+*J@ zsU&?Rt?Yxi=mx9r7`n#kAU4PPs{IpA5sfQtT_H|(@E)>t0%BNu_3KuH}}GXCU0eZoV`WsPGc<|9zca9^xMM>&il?Qirb@=a4jiZ%B~DuQaH-Fs%Oe%cNXAj(6n_GPCEE!3$QDFf5F3odIzAP& z(34?x?I_**$!YxR_YB%Cc3=GP{=l#PUYl3X{`@EPh5Ye-)v)!ajZggV-&Eg0zkla_ zczwXj`kU%2z+y}M`BJgGr^BEAy@uPtUq9YBR!*w#!4I#G{!KZ(KE%2Rkjj=?k4cd z2)Bd~xLR`_;W6=3A+2Ki%15>$y0&)5Nj|$NHvA0AIZKv^ag0P4AsmxHnDu7O>k}&F zD$9AU)4{=V-snyqow9`yYfQW3y!3*Lg_lH%+9E}+Q@5}eg1?j05H8zNv!H9cP!Fn$ zA|;#ASN1=nbO9Au^I!(nI7{MclK3afB1J7j*RZ}rvyX6yoEx`sin1zNkv1bjv!nPW zTSolXb@mbxcjFuUkOXTq?VY-0^ac%rQ~8}BBMX-%ynV6hapl8g^t<_3K%hgp_iNan z>q6y!6bPXkC0ns-*M-sAt2*8wNV>dw6rnPDvZuVnE_*xlq5#EZ2#8m?{V?eaJsyd^ z>2$1fI$w_z?Qr79M@4cu;_Y>YE+v;g^$ zqP5{%?m}41sJUv-?rfHA;7=7V!g@59-Wj|9Z6{4|jc^RR2Pr}Gr8Q!*36O83R zRx#YuwJaA7Se%9HW))(u`3)Y7bUW66g=Ra{80imIT8~ap2E45`=O(4ZD2Ey=Zx`2w zLVP6G1TL|;Dg{G;+aLz`C)kbsiMfUySQGDEeE!+taO+2rEUwKk*tVBOrePQ;CYh4- zk)y{XtDTD~8xBLwkPsJ2{puQVycWl*Sm^^d~+zxg>iGQZF z;Lps3hhY>T*W^p?E}rbfPmB_0VpkNk<+vWM+m1T zWvaX5TUi;0Le`W@0t8qOET3deT}nTOxUPmi0xhKCOcZXBb&PG)(^tuMy zF{}R7Y}PXC^enC{xU^ee6KeeW?cyI2Iu}nBm)zo(OQE9rBJz4Rv1 z7q+a``*pqZSL=7`JA5#8Uj>XM9c!LCslu9a?bRFhc>d3NTF0MtYm|CZsm)65RmxTB zJ*5uO&IbUx{UnL^m3UuyD<)N1?XN4fSg8g4nX-$=<2&`JRC2eMB12yse_xMEB@cTk zGLp*Jr^h6Jl8IDm${WgfOOJ0TV^bX?MmOLVpBJCznJ=tNxx$< z*Qvx>s+_Ww)bw}wv+hmm*?L^>-tKxlL~6=r@3GR_`nn#~G=+Iw$QRREN9gbB5xlq; zJe#(Gg)?m}Iz4yQ&>yeS?lG<{N_lLpFt5>blgd~CChLPu@E6gEx-4gxT zsy`d`ha+pNHRm31CS1lX=&!JaCw`oT9v4gKsltK9%w~&lV72CbWkaV)2!!=X$7wrd#_u04T@pf| z+~S~D6dY$Ng{kY}%2i!)y%HL)TTa<2p7ESAxA3Q3STJP=8SQOKt>sU4r}cpc)oimp9gd_W)~Pl(n2fl@;8_Pr`~kUz%{sdDBl=_hEpg<{9Gl-iX_syC$g zph+JH>ma=$E4jc+@r70!8I)5h+3cmPDMF*;Yw65J8URW3YhZHxI1d6&5-cR4RZh_) z4@x8fpx4J8WIgTy*lHJ2fNQj+wbQ>eSP2 zy>#ZqS*^rgRe7fb*ej)@+;v$}=cq@()v$8P5XkxdX z()%9_rC8TO{yH;qe_ik>lqN%qhC~wy2EDG87z);$YjlPvTW!^U3NyUJ@tm4(*a1w? zH>Uh!W8)Bw^hbcXU}`wfX_p|nYPLJxPVtLQw8i9_qb%k|*j zbQ}cx*>9cb^F&Y*6n9L>sAWuHrX@W zjt$3Xr5P4&Kdjp$ux@Z0;Q)qo-E7-r*fxC1yV$k~X>8kgaa|KrY?}=zJhn~1F(l}j zRN_gK5Tsz+f+lY^ui)HZY~c8qD{+-G4d3>TDV1-6)OFb}*u!pz6Y6~3zU21enKq{l zfpS98CfK)Es7X)b&C{R#C)+%|>OW01Pcp+byqhnGd%h-%jy}Meo7!afxQO}tdFIma zaJQ?k$<6e~q_(s&#~xp|!0TfdL$@e=4Sc0lzrrwd?^O4Nq5DMF`4WC^viP|@DM_1H zx)EaO7TnIEOh&^;reFCX9Nl>uS9uplSG#03BXDDUWSF{lPGjoU{3WLDe1zU6kllaE z)V=(=*|r()x^u>PX~WbVTB`T!dSA0dzde{bPnM~5f9;o+lbe3t(%X;uJAm;22Y=VT zOmp)$@pn)E1^({##i|mn0sgM7g)~F)_`B_kOpf92b_prS@%X!$230)%E>CH4()hby z8w^_4_n@f&?yMEe2Bm!d?tpoMziaYd`}|!SPhI?-w;Evao}_MSC>Jwi_`C5+iNBlZ zzp78Mbu4@@Z?3ohnNy}$2&!&cW!u#*>hX6$r&|C1|3V#O8GV4o=`B_`5aY@79RFTdnQ76#h=k;9toSQo6j0 z6BMu4gA?=wdgI-fN)+^=9D(t*&#;4Izm%hpV7>uR4}MXuD5$&;5gY%F4PvZh9ie%U z7fg^}_iNPW)l~lw&#HRP4l0(hW;vp>y5r^6V{fV@FS@zsu_Ct>Ec~;IC6A_)~%gDG5AjwZ4Xgr_nm^eE0 zhSMiy!J6#y*dU&N#Ivz~AXAQw-{zUFh0%{*sYtlu^fHX3TYe()U2yNB2p+3q%S!OS zGCnlqai0wqC9eC<9?xAplYwaTnD5AUMQr5;$8Fr`B!=I*Mj`p|6oAA>d$|B$5S95c5hFR-!-`>$Zz2}1#;od zhk(44BL4} z%ax6^D=EdjHU4k_Y%{In)YO-?({C% z$?XuHxjW%Q(HfyB3UzLr)AY#jaO|!C$_i`FP&61uft3sbt8)lp@mgO-jzjF-{DkIz zg{9|)KM^1<0l>nk<-<(mZ&8G-Yd_su!u(#{zNoX){n~MWeb+*&%;#-mR&9E?Mhwxf z&GiZ|pm5?^3j3N6?MyxBh-O)Eb6|-I|{>CBb1=6 ze#0rkCMY?qV~aI!Z8-C$pi{Ei){&I|j%0_6R?3dyZTq}6c5K3a8?9Jiixb7q^leV$ z!|Wo$CC2RlN|Tj(b^=XK;6NC`1`lDBD;(5Q56ie1JGwr;6I<@)_^v)qJXwnMYIY^I z$Q6hV_VUl=-#h$klPuwg{$Ng#xUz2Bs9dahD~jLLpG}qW62QBA-I;9|*;U zm$NOb3q==(q6^TmvE7=M-B03im+LkRYM2#>z7^k>U*0gKmlE8!HU*=*x9s@7AjvFX zFu38)-uMyhZMd@!KW;qPyW!4kQtx0f-Ee0PskV6XoQ6BORpfTM7f)W;aOW9H)63+g z4R@Z|FfI=hhd1MiUJc{=lG+qcoY622%i(=zS2RqqocP}JD;n<2=l-^fD;j2TkK6vs zD;j2;P04i)oL$jyXMYUat%`=*&cRN6Kt;p2a~b2HiiR-*faxd78)g(Xj5$vR z=vfV8&ev~V!L>`>clB2K7MXG<>VwTL{KG zuNedb!zvp45d9vn?K^Z^{H?wD*N4P(1wg*(0$fUJw^4K!vB>D_wmc_yDeupZZ_5hj z5=M0UV9z@#+lg;0jbL)j=Vv0&;&*f&*_RUYHyFvqI$T!c#EiQ#oV!+q&LHzbKb?yS z^*Mezhjd>*jluS=-r-#CFJkIL=H^nipDue*A;#!#6VRmM{ zIYe?#6rO)5Gj`C#DGI8 zi@JZ6QR=T2K?xTfu>&pPqGJfqD5v(qMMU_=sNhJ1=jdExC#>HVwHWne-}-Ge` zP9xvMb2wUW7%%;{ndiq1XBVcttMUv{L&g!@rpN)3Rz4n``Yot0KH@*m_n&hNNA$ec zbZo9EFAJaTi)aeNL=6xl$4-avYmxhwTqf&afq^kDMcHz5_`ao=IUU&fO8E;Rf$70? zqfN;PdWjPAc@L79CwFYqD|kLBeQ^owXaj)+aiz&KT1s@);n)>iGIhZ2fVY#7kdMk` z16oeQ*npbv7~NW?@zdscr=$3n&9VlmYB=+0uVEg7LKD83AQon_ zvZu;wm*2s5CebOv{RBZ$`H_M>LeIK28IJYrvA%ZE#)y0XTQSynwzaQQv?dHX*R6(A zel|{SEAU`bad<=drM$tGW+QXE)QJrYg#(!LZxW(Afg{+G7&K+C5o}i46k@_dHj~Y~ z+!!0a#fc4{<{%vgWM&v1EDZ`^fwsv9TaE#hc{WqYLT7rN`wm?eiDK7xI|DRmAv!|u zl&0KVe-`RJJ9NDT!5;Du2L$_E@pufsSw8Bg<_9zvDEaURzc(7J@N!bvW1}2k9Sbp; zTlK1tj}0PmB_Btnx5GuWjA|bw@o*31Sc`#^!9yIMaV;e6b&yY11Go&+TM*9+1K?vU zbi(wepVu4FmJBTzo(*zY&o1a|zna1jyXZhzlNs)ZNre;Wj1;UCehk($mkKY$r8))6 zoWNSmG|s)EDG}@0H<;l=k-)KV0epfXJxu#*UcMX7BxX*y-`&Ei`xz&xpc7c(6mVt8 zHvj9r6nx(%dxVg;Tq#?r@%Xyg1+RlLNf6|H7T6YydT!({AXq-O)?tyr+fEUl%pIbV z;lM_xh$t&r`{*RJ(xrT*mrR83TXES~KPRl5;U*^>*x$XXQs~0sGpj6xF08sVbfMC( zn@Tl-%mj$K#<_3(Wo9;*rPQL`5DDxv??4t%M3ZbIVmEbr8dH@OhM2c3_Y`)ZAQ}}G z-J;cQ^x#XLS?x;{wm?0k<#ir*(GzG65znDHd`F9Oy_wRINWJiovcC8!L$>&2w~#>{ z5Hc8~;MpKW!MlL`6udBt-0pWjMqYtcc0Vt|N;h)I@N=pS)o;>>z!cLA6{}h84lVqC zINCUYV|GE}6tp2Qx1l>>TAV071$6p(Bc0W2(CB^^4zF3VUYrXXJcY8|4f;UiXVaQ; z+Vm?5r=0N^x;h2x753A^+V}f9fw#g1+rZUC-${<_3HSqn(QcA=v-nIi3BiAmb@Dwef{e>a5hd!3z*4cENOgOA7?7rt-fWp>97VF-{h+nexF zNv6TuauhqE)l}VLXcn7}@+TTvLs4&&g6@E}-N-i(^tTO+$Ger$Wl4Hi&L=1+jP24PQnZo=OYTf;NAGJJ$@bL${GAPNNNB{mZ--9r1d`yczy9B~CdhuF3 z1Q)xsImIrekO*pFu%Qcyw3<95@~BPmo&JTLLxh0B8f70DXuAnL(lp+ z1S7<^3)s})uEaGNibezrgG1yp`5Qo;G?s}y&SRLG3`kN8Q_y3WPQ#&hJO;_&kl8F< z!+YVaF5X3~6zmeNcxK0O0t-BLX>H%MQ#hyQE*!G^iQ5Tq1>i;{K_i0V*ld%a(d{5E zDbR==+wS*x@oah+VQT?-a)f0Qg?W>e8XPHT<8ELdGg{d9K$-)>Driug$0kt9uG=6s zX{AsKEP+$Ax%G`V9ep7OEdP;X?4k|Y?xM$ZVxwgd7 z_I+TXF3|^{V*(3UI)-CniF4v^weMSfnRzx?QmXPJ zc=o5iT+g-`W;Uh^bh^(E^GydIvs-N-ZFVX%&rle0AVZ7A+Gx#_2~xn>LYP3d)b`iR zlR*fdKn#W%<{A}4Hu4P;K{UKFh8<4rz!cc6$te{#LlD7*PQeD2fvND+yyP3M^V?H4{K7XM{pk#@F16D_iC#3+5n*Vk(fiVsoi*L{VF}?VhUYtrVQgmZ(ib-{EC9JrZ z3(=cXnG4aLzm>UoM&F24kQAgR*~5 z^kTNeM(`Iijr`zgW6C7{VzPPf89C{2J5kT@7v4%b=3a)Y%E$D=7wK}K{hJOW|J&)s z$NYuOdH(N`Ui??jBZq(U@pUrcx|MD@t_`9VSAM+Or*yyfdYdN5hSIM^BA>N|}1PLY@eDW-MqnF+_=@M)MT%NH2LteQcDe z(sZIyGs;v-Vkpv#9#6_t8L>5)8c@G_3VD>NMj3mGLY{a&6iHLaOGE41o}rNE=^g38 zM)=CqxTj1-yOk!t@VrutenfhEl&MGbo6@9)yELgrsfH#s+|RS-asvCMUqea9l}S>x zqLA0^Ck6X4IP-O-CsCwr3xLrj0FM~p7=trku_`NO-#TrXv~Eo0nn-N;^%1o0 zL@z>fY6p%xMJSy&%be1|;JFBsKF`!lbIS*)?uVBfZ7I<5I%j0ok^45G6!oSJ{igtr zQWPbsQDKhPbGfn1;WI4QHjImn1O-vG8~Y8k(OB@AXM++(6_4f>rK(Y~7OD*_0JE?J z?&F57b$zF9I!!kOW%Ff-bt< z9x~T6=*6Z$)(&Q3bfeegFqRKPUh%AZ1FOPV-Jq7Ik#VuSCXmy1UQA&G9tCMG0!1{8 zQ6SC(iDBU)S|iRui!8zfZi-5G?Sb2~Rtgv4<}lY7JB5o@$j9y<(U=EeBQt<3_j%xD*T!;XFhAjC?6eYi9aU7c&Ufz=6y5l zfZJvB#X9s&bWU~;GorqGmWNnnjKwM=9N>;a&px|oX_%|AidHF<9E0u}JEJpW_KbE? zhH*kUp;~I-U8ZX(yRo!U&s$+eZ4F2p^;bUK+k_$H_JujZMhwnhI6KJ|R9(m^jC=aW z%1O0+(!HOWta;u<6bED+^d#R}^PE9ViR=;FfAuU~a^|OyE*xFr3>if{r~k*^+rU>@ zUHSeA1V|J-K|xbXYcf4{h@#{aro}1N966Ea=yQ~*Z%k`j?$lb&#i>+7p{>=V0h`mq z=`aqx7#b+)S8m#U(fxM)gj!H z=P#`GOV=lh%Yl#j0t!Tf(TC+A#6qb=96@iN*L6wfU(Q59Se?w>xrh#WS%?@t2!6~P8k!Cz+^f>PhatBj2Cn1`+>e;W6`N{EAw;6=Qh(mI z4?`?aG4Z3z{On~_=(0fhM|&dkwooQ?edQV+w98%z-7e7mKG9&P2Xvk2aZ!1D9oaV> zrL9-xrZSxyqfG_cpNOtfIZU4k6;iruEi3|wXuBdh{OnET?mUylo%=54hH^vEq2esN zBKFb>%}R&L6r509Mqvi_;>PGQm9bLIxF-y0lIMN}H>FD11X!|G`AM6It{`MUONwyf z_e!aJl@|84!Aj*tO*^S9p&rvN65S!!J#wwolF%u2(Lk>Io1lsC;76v~^M zU~Et!ANMB%$cO$^h-*oR9ZFp_0O%|)vk=hE|mI?x4;@OOQsmzi0e{ExzTy`Mc8cOuQ-bCV6hTjLdJ!I@S1p%gDyTQzLfV)y=zRU!4SWEZ{5HO}l=P0;_`M3TfFe3+s`y3MX|;A8yhGUnNSa zrgnIT`lwSLD&y)QtCA)ZVfX6`w(wlt;!x{I{0o<)>V5R(JQ$_(vEA|u*;$^e*XZW^ zwQaJQK1{&nU+^$*=9jS&8O0p?x^3aMpUY z0nTdpI~IGcBP2_okw$&#lYVB#L_c#you9c4{_E?&W1g2RVrnWkt3S!b7hR~yV!kdn zdM5Kt>m(`*^WAMKVr1fm$zE6mXfjVxlo4+?-cY_npKkgcXy56DMCqW{U>5kG532H- zYz=pow9KKj2c2gDpySf+r_}0HZXAaHr9?)Vb$Zy3MqWLO;27W8e9z!Jhwo{8=kguJ zcfMbWrMwNl@N1b1`~BL@erdN~`yA_(UyDX+U~u{RA}{k}gJN2EVH@sroLMO}fdcTDBfn z&&GLP3akacan`14dB5-KxyjOXsoJ;w%sh}ByavI+Yml0mej6D5@4q2N55ecYaxg+~ z;-R~(>pIn*<^UFEMwP_>V>(Vh#}zJ^18+o0Nz-s6Xl8D9!2acoY+^ERWps|i*s4Ey zH}@dDiadr|6O*5h=R3=i740*!{$%VAjK+-V3ulokG5OhiXGCRHlJ1(xJ9WcQ#jKr~ zyvjxw&VTMj+*z8rTw`8#0ogXN8p3HZSFSwt`caABzAJ2D= zD7d%fJ5SM*Iex`qYuMKOE8JBsfKD8F#cr=+19bSOUIlcR{VW8Ii>>eTJ|xnK7@*Rx z*y>k2Do*1p>)&zg}fn=Bw3V0kpCliQ|x;?AFZjH{<* zDL|fWoP1PJ{FR{i8vVLqa<3)tmhChLwVNk%tK+4Ko{VepPq*EUCM&Sc#`WKqE=Yz@ z3k0=-=YXIVW&mnl&D&nZI)fUJ7Sx>Q6@!{{zid!*?jD00eArG>pUtgPV7AVh^(wtM z-3m5*E#pV>eY6@_!WJSAB4jxTmna4LxzBb}{AH;`6%T9>0TjQ3#Sha9>%jIz| z^MJcsQv15cMx+z)d9`rk?jl*Tw%uoo)=Oxr_IWO=pTS+#UnD7Gr&s#RWaei0yi!aq zC!&GfMuq9cOn!=yriguBjQ7b!j^{_;DmUtWLt0{z)z+*;(Yl^AU59TcDCmO$>^JbaWxk6{_ zXD(5*!YD`z1WTcd_-V3*azm3=Nd5bntjlXvt}N=qwrfmj!$fY>k1JuC^H3u9@neT0 z|G23>a`$?IuPG_t-rceX8~G34UQ)UJKyKW1E&EDy;~pU(QBt)%;O2U+Y_(nX7Z~P1 zaj+GIxwjGDZPwy<0BfkXT=3Xt3?ZpM4-3VENA_i4QUeWkp+<^2WTKcoI#vbEYH#~X5B zRBM+EhW2#h*e8cfeY)~jljV~bVcR8ZnmuMc%j#W2_@_Dvm&Mkeov)Jq(q3{=bYwTS zxM&XHpxv-!tT$QH$1jEqv5vS%k3UD2V8H?aV7_!d1BBzDf>o>s3Rbc1Gf@ap%T3II z<6e_*;Bfbmg`}P2*7F3_$!x>KRQ59^scecDO(zUbW>a;^?6uQU*#(u!?1K7K_S!0* zRq#^ThHAY`SVtmcYRIl|oGC{=j*rOU;eb$a1#w{3f#rTJIRC6)i%8=+zxI%a^s06T zQb?FHal9ghvxQ`HMD6C<4Nki%n#|5*d$}~)1d4f?c(sf*kJ8Uo!tA7eO2vuaZz!ny zZ5g=C@$Vnb4B7iFp}aH3iqu07Me-y@UGODLn#hVE*8y@5gqNDTgH=imlUXj25>kUc zmB>n0EgA8@dIVMi=x3TDoB?3El492+^n)x<9*F}oA?vxO zDeF0JFZ^HHZ++r+$D7{t)%V(OdD?Hyyo+|_t~X|NzV=%mRe)I0+;z6!s+Q=bMuFKo zW+k(ifgqyo*{{sO1CGEe;9!4Y`vhH8WP>zo@Fr@$7_CL&CW@^S^8{dMA2mn&D5GPf zz?vo#M=}2w_fd4^y*E;9oQ7Zuk3-X< zKxqiRwv#YK)*P3`gTHtMyZgDX7@qJRvh%V1<|HGy4WHJ!iQ0YEd8I6T*T5&yyLv6< zgG8$-9;ra$;x?_5KtLE8wyaPyOo z73AKj8ul)TdtX%=m_p^>nW{M?Z&+N1m$_n=$A*X<4vWOsk$eHo7WpZB*;T_@UN|TJLM59tq4SE!PiJD+ z=BiNyxsZU6F@!{lAu9B2vxyjqH@IE3vQ{O6H><|IrQ zodfeT)2F zzb1N5GM#T(_PUDFY`;IgwI|;EqMDyf_oz0%bY1rPsrl}*<~=TSt;+G!-717#yO-YN z@*kum*C>N|8-|V8N*~K!70Y*xa&7X{FIbyOpYjXM*_p^*kC~qC5ph?(mp`U`{}K!L-s_{&naQD^ttS3Ctyp-HQG-fbnSYcc%@|jk-h93v0uFy zQL-`e($BgUuklNJXtaarnt1*Iwd_+Zsq_I=jTtg8y;?0s+?`B6<9c^Ancko}K<8w7 zqhf(wD*cSgq+Qu7BSj2Irr)sm-1O79(aqy(B_)+C$p^jWy(J}`SOrI5e0!8Je8aku zn_hP%ZY@TPSpWdutOtC9SKQHL(xMNi^{|e>wc5y-v{YQLk2d z%`d145K5bOetN$_l~a?Bq#Kk}?d#%ddgIwEPsw+c6{dBst9mmt->NR%noRF>IQ(WZ z-Dee-ZejX6Bt<55O|+e-;YUFnMuo&d%mTahK0p0Sm6j@f+)qEL(xmH}Q7!LX2d3 zi}K2BLVCCB2+i+zRjWL?lIa7k1?zlpCB0UjRCyqzISueN67Mnk}mns6(dCx8us(yOg= zxzQ69!wztr=P($eVD;rD4AUWcSa808XKTE4BHCx*fZ1vHbK?e*F;o_TCd2(Y9kjM2 zYq2;0#tDa+WfM75p2)+5YJ^tn=6w!-Iea|^j!&9;Wv=YQg=r}1;IZ+dc`ML^Da?Id zs#DrhO!*xdFA=S#`Kh`&?B7zCf%&s=Qz}5Vsn=*(_ zsfPC}!{K03?ev;oa*^=9>L16AmqTL;11A$weUPEH6ep%6NO7#p@ho9UWX$Pq;SQ&W zoE#Nv`K6B{6-fz8W?o6=-zF)`-L}GDb%azgT)D!j6>l~|*8GylnQV@%Fm{~wN=UFe z9!6m20ATy2JeGC?_$Vp_wSY7{Yt3g?WVQ(KIt#tuOdM(K_VR9&0597EDkFmB#G|wj(p)LKv>P@#bGy zZ_@qNcb#{w^MHpBf9D{RDt$7=6KsY*Ym9#uK|T}$J6Qy_PLKhJtqF)s^jMs_uD3Fu zGo-)(kSs|tf}HkdHlt)Tz5y#^aP_^dqguaM%4>`Hpb`cub0EKOM8$@9>z%_g5TxPp z)|tcQI2A`({*^OYUK)OBF7dA{8U2KeNGNV3u94VhJT2bx(w&LS&V1*nL`6U#?{@Co zDo43Og9=>OB9Mt90&eT@2NY->{vd4D*oM}HLk&lUJ6iYNWy{Oej2JHzCo}sVtA+#D zEG^=>1a48oqH!5M^dY+n7I?_GxPC);_9it=+eM(eCFUQdy@sPumfD`_IEPiAJX zie56hzLhT`Ft1nAmj~=18rhQsEaPDcb@XhCE)e-@SriOtLZou3iJ)ZE+3Z70@HMAY z0+GGUo51(wM2k^UE!CQBBp~-tv`xLDl4+#1O7;ZviK2rf3>yBK`q-z>m-Xjqc+|%E zZ46x9W#_~rm81B(sxmV63jT)U9?9R8xMx%oR>!tQIw^y;E$=Qbs4A1ZfOlXq^ENJO zY6Xuvsa|fm**FZrwIz6ZIk39V!T{Ie=q(g)5OYp-q#iLk9SQ#UU*JCIpu~5kBBj8e z5NN$LgHu1WBu?V$AQLQqfLtWJ_mDb1e%=0VKKDjvA-Xn2wf(`}kOmDwn*}X4>7qtq z1%8dfN_}gc=2@gRG&x7Rs%V$mQ$l-G!y}gq@XqhhN#?U(yVa#yq|&Ll*J|0VsAm<0 zn9FkoNC5YP`_)R!Qj$uRHU9^Gfkl1>sjlH1b-M1KhZP~9aa@U?bBF2zRD@Xf5*7j` zJ1!dJ@Tz*(*xf>fuL)Rao_+Hmb^O%zEAsHt=rEd7+mdVL*dKe+qwc-x7TruOrn6vm6s}V0USFvY@u@eU8o39uhd_*38Aj+e` zB`q(VlYfaF?K(wVO8{+qAbLHHIN@;@{u#?~Z}f9~+5c+$yEyu17PvHeqXG+i=}N_X zA&mJV-y!Xqt=Rt_#@;+Q-!#Q63uEpcn$JBJCfNM7%c8X3#i{N4QX>J1lqFc&p~&wS zBl|S}iM($h@*l!TL~0s_2Nbi{vi-ASU=VqkoNP#6G=BN65pEd-uLUrOvEz58cGaGY zJlLia*vNy3Ni1t8SqE=Y(f5r!NJICN^e~37Nye(f?$Ve7_yNMPqilJ1s@lb_o53in z1~EDL(R^cv?oP`{Ak<-53EQy-!IuUse_)i`veK>;BqQ=5ENnN$Z^w=$1*9_Af9*?Q za!HML1xj=x9unTJUhQN#_BlIgBUtUFT~v39RTplUtvwy$O-m0Yi2M|hELmkCuY zDzhi7q1ZcX{6w3HKuxA_tgg*`1dy#gj^B_XGtah09z@s%G3JOK_c1Yd*$L5sL=&Q^ z$b(Eg>3v&swxb~+gK1(ImPf0p2bDiV*6xv^D1nX7ETnfj-fUH$t&V+6Z&+PCN2mn3 zRyd-5rU!%k)V&*aKLL0(DUk^vPcfN*ILdn0ImQh=WeqNtw%!7&eio%QWUEjkL6Nf8 z3D#<$wN8qM;^r$^t+f}aRCmSu(A_H3pyBm2g%^?0MxCT}O6ta|(sH9gEtR~;gBU_% zp@TQYEk$11q+^0PuFL~`-tsf|MOUaHbdY9aQu&qPY@Pkg>%^iCepIq^j}~ixDR{59 z<|5c#9yPnWls8*iP>~1SjrGV+mqz~yc(7;U;R1qDcil}s#%YV4lM;&eae0vxMjk|m zK`8eNI6E|tQ<;~2wwvXW%L+imu3VQ zw@>;KAi)$BjVVr10j^F9P&mX)JEWbcmpFS}u2p&Bf2dsHL^l0rI0SVGP|ULGCW<3Q z_PCQg44!%_z%Igz0yN%@1~$An&?50OZ{k)L6P&|{AVUL?dzhe#m|mV#=fjm^JuFb+79- zN05y3EXuqY(KrU%BM(l9BHdDGrK#gEdwLY0_Cy{;MxN5hVS^%-d71!bo@mxOjmkyJCYWLiiJn*=fx#1@=wlx)~ZzzoR_!6}G6p<4zZYl;m`X*+{vq`zyF zdU`)aNMlYqx^hMyM56@)tn4-eIy5NiUU*E(PCYvnwULAB$}Ea~T+l$@=+Wp3HOD6H zIw$EtS0PfBt{98UNQFo{M z`2@A&PL^&%#%N~&%dPW@tRoV_!K>DqI<)R~%@@#xiWNne$dy2-`Asq)4Z%ufUgb4w zyiUqbnzbmRCLw4voA!uCg7Or218vSct1hV_3X|xz6ao8k2R|^niN2FzHNk#Jz$Lz$ zrm>_YA}3&0ab_^RnfOzql*d6eGqjBaI%#rbMx`lxrMBRl(O5b!p&U*11(-EFioPxF;pus&`F>#&4w`k%;kl*0}1w$2&cv&>0j6hT&dkC<(C`#b~f-7cgY~>sM3w6QokwWp&_TOqlLa4VO4i z*0(UH9L`&F3BReE>m5wc4hC+U0!a8;vJ{?Sr&_C$#mV$?#6+oF?_j2a47i`*RKk&G zJ@73kXxUZFTDxchs^aG6N@$oG)HWKBn_5|vp%Et5kOP8()Z)Hqr?3Q@i(D@-S(#T$ z{SYe^q~oE2cv7TR>=m-8k>YkL{oI7Qq?6=nt!`Hw7ePAslJ$G4r*K9y z*UJY;YS`u|vLHM+G5%b#7(cpyWO!D=FxgWJx#=;FyDLI&JuY832GA)ctmkRd#Vhj=_uxLFb_WsapvpGoD)K9Y2@e}DK?SRh-m)+Y;+et0s7dCbdUo>mgg>CrIIt9_G8VUqBV^Go*(mhg8Y^}@O*ijzqv2Q(#8 zX%Y^R`p-hCd%T}Rkr0*BFh7z7h3YOE6yGfxLvzg)UG1aGTf0N%F*m(ZNgWu90$s?X zh}9gSfr(^EBJ|OEIl^@%)S3(NL}MlztU)m{X9z@Ps}zu%K1`KZq5-LKVLEWKT1ai9 z5~jACgH!ie+0yfqwP+jcvX2*zpv4i%9e9n~&my;8f#P33%xQ?0y%z>}y9Ak+J0C>u`JZuYXH(TgQ{ z`k*9;oCbMVvK>5mXM5?qoh67BCb2t?5W!BruJB}fy*ni6O{NcDn>De(fugAT(`MAM+3D zRK~e!n+DpLqx5>iF67i)Z^{zWO0Y+GFX zsVL~5nsh{CK$M?!PA)jiDIR6%%mP!*x;Qq!>30<&XCk3 zWerJOk?}oTQDZSbbw}DTubIpVu zO*&d-Cz)>>@?fnw{YxRecD-}_(ihd%>cXKME2`P5hm@`syfv2~^c-uaUs7$bHcSM| z&XExFXNUU4g9+TIHeR?$wYQ_F;JR>gv@Vt2r}lHM ?v21llL`oj(9WcsLU@a=4% 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⪼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

L_a9I)-q-&1z2s9K^2p2Hj9u2|L+2c37M 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 z z*3r#PA|of`gP-;^asv_KE9*qelfip zor*sbv2bH295_#*bC&^!%9C@|;t8GFW1-{~Dg@PJahSxAa_Ngj5qUIx;w$--5gdVc zz`cSN0A8l-pkOV!r+j!;ur}P*E@HujLIu{FxS|TI`v?BA-754atwqJ|A$`e}XvgB8JHHBG;t#9Lf1%KYHc%RUy1;k!4f5U%XkAfd zSZ4Y5A*vN>2S0_UVOr-rf)+I2sym~<)8lSyEY*p#l`;hCbOusHDacwPZ!go@-?_!s zzWM_8^AcTH&jo+#fyCmm=O*%(JlXTu*Wd-2&?QlmOH_nGWpu5y?)btrzo%43jmbVz zBHp{otY=>+jPa}de=Gcau3$tfVb{py2o8_Mv0Ru{{&^Sm56YtqKH-(EK%4|k0E&=4 z;&1|WxdG?&8magVx!SjRMs-=@SchD${%cZ!@Y*cm&e*M3YOObYAIM0l9D&uFNH)@9 zT{hUMFW6Sy`85FTS$7Rh$h&g@)mNA2d5?bdUO)AJ8@nT^CovJVJC2wapqtX)gpU{z zS@7A2$VTtky9GGQcOoK<1tPMi5s~6D&K?M1L?mDaj)<6R@NOnFBJ!{Zw7l?{P&+kN zAR?dMy1)+v@f*(UqOA=4GiY7#9XP-?hpNc_mPj0K5d;lToXmg);8($o3FB3$+bnL*x>qW5`0#-&~& z%nb4NvKyR#DT3d0fDqjF=7-D-f_a=YOt_b#Epz>jW<=-f&2ODlmu8^885;P?P{+x#0(6lt14_@9cy0EOD}z zwym0pK~f)#ZNedst>dy^`p7fWf~MgQbyZXCwf_s4_$>KbKR0Z0rBik4LA#Gtek&$A zxDzrZ^I&ji7uW>l3b1K5<{x9l3vLrE+DbA&jIm;ES)LUS>JgKJ!_|fUd5%`m*q%IE zoP%IqnaYwKX4k<*EYoj%!8jmms?0lB%6k6EC%8=&t{nZi;mYkyQ;aJ$4BCm|&825u zf#KQu{w9mPj@(K6FuaaD!z;f>8?TVMLMe0@-uDLOk7gE6=a*f?@NiE14DWB-Y}M6% zMuoleg*$!egFTRu5h@64Ktf|fN>K+J;=&-*&oAvc$h+d#JkB<0L(}IhD1D^o=4y$c zp>rdKYl?))ksdC!zbu zpPYCnwbTs$6emnm5NU|Z<)DUpRAPJZHhe%lKU*uL$SW&YMSbHPaN9Q&0FH>dbE%;@vYX^(Ec=**|(dU;Wq0LCeb6kS2TT_ zwBE?(4!zhkn5Mp`)MQENJ(Cwpg9%=Y12Ww|n!Z)zW0(OZrCNAL6DYgW)BEn~=~%kD z?j}8wJf1f6*B^(kt#4G71Ms^A^@{K(egz%5;iL*RVBM=JL;9XNwbyoC|5~FzQ3LjuN)r>`99=LxbMpM~eW?H%+p5hKJaF}(@X@Q>lSZyjo}-RX;J zWRf2TnI1I`psCcN)(z~#qPSW+VOnwuq??wevOgHOkVIyWOyH3|`9~JmBZ;9CU<%&4 z`n2q_puI2L@F5fzE=MHnKwB{t5si4c}uQ)HSSli$Nb)?c_So;11yy-i_$;_ z<^`D zhJUbGn+S4W07G|f?s{Ovmz$ooThxHc99Ks)uAtQ` zp9eH&BqS{BPjNzm?T|HRpca0$JbI!*#a)6Tpu)T6`RtDo3>0(o}FYAz|dazkA9$*3qLkxg|=%&4jXLmc{|l&RFl=kde0{=goXcRzumn ziv3R}zY~ArpOWAhww2r5NztAkX}@$n6=A$`8)BF*OGH0f8>`3z6VbnMI%JKGmDj4XQDstHgS@XHvt>V@&qLwMEyxHZzW$1Q z)a@t+nY$7vVl+pA9p>j%uLO_vyv8fV5VYTz4XRVy-=+A~)+HzMy+u6TG4w5y9Ya56 zlD@uPvQFbx#@9n>9;F9x5kI%{v-)rB+7hZD78|qOZ1?)Jb;4C89yF!C%jTX>aA2=m zZ^8OpJvq%6+0}gK`}2)l=vGHaFY`?Zo2+5qXEH_vDmvb5m_^Io$^J0d>IhSHOU!=C z5CKi?BZVWOCXp`PaGN$nfe;!M)}{aXkw#(Ewo8L_shLaQ7!1p2EP-^*>g~%#5^I#Cn!Q5*4L=w?J^bJ* zitdIV9LKMxI^U2%lwTd_03ES%2#odY7Q{8ar}{PsB1>>p%#!%KvfofPS0X>i4r<|w z-xjg3M?^Y55HA=|GQTwtX{Gexc1N0In zJ&eCcU-T*+VF>5FXl^>glsV@LR;vnB>} zE*rh0c%FZW9GrbyzLLYGn#oUv@e}tfg7^<2Vbp$#)xMbgYhfx{3#?%h7d!5>>f^lp zV)tjV01LgF|3YUv_Yvjxl23CM`S|DZVFYsj7m_mCTUdoo1@bgaYQK>!@hbn$;o=xR zjR1Jy2Ay&#r%Xse;~LWz(gSukW3eyu7o&s2hX8;7?@Kz&UlQVimPDS@a-9}&4i;%) ziSe1^YF)h-sg9<0EV2M2dLntX5FbcD`=84f^bNN@#f-%2S%%IIKYuMS)hRTl zW$T&A&kJy@r!5M})qges(q1vig1*T$J-28M-`CR&7X+tH_Xj07gZ(MQfCOKDSfJD@d;wyzcO%3Ee@JLAay+!qp8ItoP>!Aj z{6MpEU1#Fy2iFhK4U|LFe?1+8QpD1CPO!^UhKYv_eFIGKhv8<5s`HpdebOW(LVyG;G>EdT(f6BqNsI8e z(PiE{C<^u`$Oj*6{S)PujHPdp7SUe5d3H6*eP!bNM*2Tea3Xlv?=Ut6z@2AfQy=Hy ztFe+EG}O#PB}<%YV3ar+Y7Xgo+eKt)A5KE_#}xmz_jNGOrw1Ee6ZBDdj4SMzF zW_xk+ckPOsEEb0H0qzbYUCS_C>;;z_-TLx3h<~;*gu}0#V2g>enQj^tV`0#A$&si9)j(gc)&JT`&)p$!5jh@ z^wr?NhZ|%RI-TW}95vutSP8y)KSO8#o%&?Y zaGq`1dUSGxM1X)mkkO}{b%Q(SGdF$JKelk|d&1BFD4Q}1+!(5*qdI*C^VGI=%o13>5JMHj1y*3H)0B$1IFRVZ?&{xq1bF7(HGe@p*B z(n0B#zP5pvile&*mspAV{Mg!H9Rz+)BjO*TqL`P|YVRk%w;O$l!*iMz_+FCVz7xDf zf@SIWQ_I@RTRuD`@x|Vo$#)6rWY6^4c5^HfBS9&&1@QcylK`h5Hj@MIF5*3Um=m+Gg~GiSG2CtD}1X>1qHSB1@<6f zP@cxpN05gv|5iXPk2XSBw3!4v0V`$R{V5+y44wXbk}TYhb0e0?IQl9P`m-2(%8&^s z&p0J>+?&IghKeOiWNL7gN+J)*&}c5D%b}@_@*lg_V>660aS#^d6 zr;qEThVgrtf`$>YwyEU2R(TJ94f^hvzw%FujkH=bTKK@i!Vl2GLt6Dd%%%0dgFU-X z>YeQWWXAk3)!DJFqN8WGGXCuoUc9PDJPSR4fWrGyjjE*e&c$Nbqf!<{8&uNz-5Dh@ zgu8(EEs9rm`rfC)d*=;;cXPiXPA#hwymzrFd3ZPF?f(aWpML%>0KO3N^k2jKMZ}gm zcqi!2>bm9Oy^(Lb6uWKW8?>WXd8tfcR5n_bty8_d9V01FF{G7GWq;Gh(UMWczh{9I z$32Oj^%z_zxR7`f0ga;MwX2iQf{GZP`uQCkRnNU2ZNo~cl@#bt5dUT>heT1m45AZM z8u+iR#-qJ^%S4T%l`YrNvw9#Dw{2bGn|?gt5No%4RxI;F$3gpBWKyQ;1M0wFsUK_> zE~%g}sJ$M~2jqO2*b>NqWYNcJ8OeaU2fM zH=E_=D~cSJZKfx0Sc{W=!gwSxixi322*E`$;ojm|#GRQ4VG-v9tLElT7l*TKnwPyh zRx8w#{eMYBxQ3QZ5~=1Pv=xDZiby#lye%R#>OfB<;AI}cQFwYe@oxErx^@bRue9$a zUcJdb1B_~=Yx~@PSX-ZxwYB09EP73F+_t~Q?5Qv})F_iek?%dzDAR_Ily5LYq0RfA zR`6%~<4-A!|C1Yke_{Mg0GOt!6^y$M09R zd1-a>TK?3(aU{KA(KS77s}hrnpE)ltlY)n(V8!0&Muq8Gx~oy#6arSD;0 zIsHo=l1v|#J&(tor!Ft^N2?cB7;GU=T6o`RZ^uUpWi$C<>X!k+Pbycqp69ZS7|6$X zKcgGFtQg@3&mW1r@ZDqlR}S*Zt^BJ^cDN>!Y=0OT8XAx#d>WCiVeK%XP?1s{@B_gI zJlu**tH&rN*YveCBgr*y=$qKLzWMdOi9I6^_Gw1x+l?k^eUhPu(c6-H00QW3rj17M zy86=bWQR8U(|iqBei_GTVVrfi2?kF2w1M|aPVi@({%Hf}nNiva=DrPM*RQ@%sFn%6 zaHs+1+Lev#KX!l<-EM%n7Qp=em|gSBv(Jivn9vz^hdtrz!>uNMq&_6xGp~YY=9~*( zM$?%FBgC}u0w>qlnoABd-8@;dGgw$J=1mOikrBlEHgcZ0thUYR3f|}XxD^80zX_n|bBppxafAZal$kESB zF@W3l7G(Ty4$eRL-rgvqCJ+`My~Ddz@m8s2WSjxH06Q=+bDS=HRXElg(hV$qNM{Qi zq`!5#JK%dd-2t01mywE z(N}9RpY*Br#iieCVoshG$Tkw&S%Xw1SJ@#VS=p5~>iAYz9oLn92~xA-ID<>eHY@iq z2IGvaxOCTj$=gUvV)}`{Wp5KFV_ONgsjHm)(X(ZJW#SM; zr<~9SRCL;LLuWJP;~#h`+^}YJck-2Xx}lY<=W~ViTwEe2KU%-j`rkbu|GjN) z{5K2Zf3)-XrG@dgxbY(k<1gNM{B4Et|Lew=7semA^Z0KS#?N=-*U+-pmk0Y5jnCUR zolK%!dBlhho6=WT(zrZ)i-ZAJqBM)lh7pf^Z)Nj7<-K%?x|IVnk_a-PA!gZZ-bBlU zXu3`YIq!r61iYsYJ}uSoPIcrj<&-4qOJmV+MrKJIF@sM_pMW|s7N!Z2qn~}75^<<$ z`Yz-`wG0%efQ+S1_jl=$y3j*MLv3!wxvDPj38XG-_a1ID1)V?+wR{h^o+WkNZ~Go@ zZ4^+aKJpI6Py$SLxp)ixLHF};TRpc$8vM8Q?8o1zpbhrE81DpQpF8EF4FhrifxxOsl~ z=SqgtSw+J$p$jmjHnzU`&|r#+FS3&~H(tMLo93#Wrdjvz;PmGl0LQZG0QWUFxEh$@L^;ozL@% z`I>ZVJqO^zv$`xN*2hAB0E3SI&}WPq8Ht{(=%1QpCJNx zzBWUU&?DzPIUMW=9mucwyJ@7o!jgjXHT@>A?Ghy`OF3N-4;cDLgg#=ZGwUbU#Hvy_%= zpI}Vp;5$G6e6IP#UlHv|U~S{t2&tI*7vEpz;GbNtX%wduXjjGX>hq_)-Mge;SDme| z88zFzOZxR+zEa=^z;iEE)O3!yKwPmZXs^(IeZu&KpEN#Cud$yauClw%4;F5nrCs(_ zIPEya8va}!$=qN%($;?AA4s_8%a0DXp6h;{6mD(eSMMb#aM2sb4M>cRf3&d0s!0|O zEJByu*09DfKp(fu0dK(?G(hxzmjfR62k3KmIpFsU@E*NGsp+f*pJZL=fx{&niRc~u zFUdCjC@C|hvY~d$v~cSTo3DYumb%a_`EmVh99Ihi&-MpaGw_o9z;&-_!iJ&Mg@H%; zE1U;_GPX89_Lw&`wsoj(6o!AK57Cym;k)ODm-)kWqcHq&fB1YieBEKer>*I6v+G7- z_#HOOw`A7xZ(nd-y` z#a?_b^k1A8npAl9^(w@}7xVm7I@cGaF2DMsgq@Y%_vgxMvHTPL(b-ewj2>R%j7}cg zoBjmx1N*}su+GY&r6N%$O%GhPuQjCBmntF7$X2pn5boj8RD5Adi8Kh4DTNuITZv2+ zCHOyXewYXbz3JHBBEzETYlcNfuAqEZ`Lu#F7c~eKgWj1fC>BQ(hoNk?ISQvprxZ@n zvVkl$bm|7A6*B|pUB?^{CHNJIChhY*ij1U@i-}3!Z&N z*7#i+x$O{6S_Ynl^iz$ss4t-X<|6G0eGflPC9v(8%IV zLWjOnYI+vyM|#u|;~~Msr}rq*n!gVX{-(GC1e~**exY|z)Qm7xq~w&%cKpT=Fmk5+ z!QO?h%d9eLE%E!Hl0_-H=)Y6{NiP(cMvARko51 zGZ;>K{WC&WzY3HWTH)E(Uneux94=Zqs5BR-u!BLAeZI|OK>&;KPld?(W)oj zpf(`TJwnSmELst$npmBOU<;1b=?pg}CikN^bh1c?YF;@3uPBD;2yTg@rw*cD$V!4{ z8q$|&l@Ox%!bU6K*X}(-kVGt{7~`suallu7J}@qa2Jm$pZn2hN;`}&~RP+ecrneeW z8@!8OPzzpL%DtCqDdIx~%k-zixPJwxuqZx8 zUkJl4AHV zeETy|L#I-2?nx*nZYBdEO25auqRZwv3j~H=cIwFNr>>{-*lUD(J zF5I&zJ%&)!#!4lTQhN*Ao$9f;N{5|cIlgEb*sXv7ry}x;viO`BoGGK1|BBpG1% z^@r{6+7*fO^BZcg78Gn;;r-%bJA7$8w!aP(4Q+m4w_XNB8dBS3kl?)0W&^6x^KN=u z&X4vjx?JR%G%RuSJUVG5p-zZG_|-naN4iidVfH%=yZcjzNv+F{X~~`VNzT@VQXR90 zF;TZow393dpR6H{PVC!zv0mO-dE*V5DRX3og_e%rC>Ckj@%aNSFe0Aq3qH3DmR=<} zYTI)%N!EGqyd-W*0QK}~mSANJsDwVie@2V{5Qgax;$lP&S0#dUd)!C?K1^Y4lCdJ( zH`Ds~F|x#^r;MouFr+_*9~@6+#FW!7)rAANfSzpl$?x*jikVJar3U4epsqJgKi=yW592_^We173cyB!%EP&hh z7vB~W?&hwKXv#qm+OV)-9f@fwa#njuck&MVrd(G#8U+$a(@I=OJ+f$|^WS|UvtQGS z8tN|To_ZR41b6gSy)0G;zeEs!-FsMn)h$%-aJxRFsRP_nw@M?9i6k`ARaxpB3}D}BGAWJ+i24qZ&c2Vq8ITYS)_V- zqJ~wF@Bn8pO63yz#@PWU9?qv7?3y1%aZa_D&%SP&ng3>`BeNEaNbF-Z6w~!%z~u+` zWyKd{CxPujyw<6eRA-WM$Ive|rB4C>LUS1wtL>0oKDBm$*u|M+D3FdbVQGRutWzqu znLI9;rXHeWT#SUUr6+8-4`N8eyuV*Q1-t?7Z?drJ?(S(Cbbiu^3K-N_3?P8L)G z4ZcenzsW-*#S>KgRmmH8Q)iGnI)^RNIt1e`C$UgcQdh@uZYwVI{x(qr!g98W%m^L6 zav$EJQ2WpV1vpFDbJx81>j*`DE@b-XFfsdQy#|#@@TsjOI5~ zI_Et%$$qy-S2mKA$g)xs=iwfikFkE9w`vC$NQ6pY<%qYNt0UdeISj*hI&>AYJFy)n z2DPziPf&F}*9dafe(blRbU*%ZW??_>`qg&o7R(R~4daP$+a!Y_jw{n_(S$lVSZ|Qj z!>n_mF1mN`XX}boe!}OtPO)$dWe<>W^8TYY0=}Xw2M~3?Q^SkPz{ket7gZ+7m z%;sQ!9{861-u3?6`?0@2Lkj!T)H#gZ8Oz+U6veYCCsvg`nJXvS6(N#=Aq2ohMgWG# z9-~ib^r20=4`1^n0rFgk=WKRqWh)!o?U2&ru}1&MeTZN;6T0Wo()~VZJnQ!1@7TNi z{Wf7`azU~y5#dCCM6aTS`nKRF^=+U2npqa}^vTa}vj_@;_d_jDJ)iTQ$gx^_djbEv z_nftMW-ocqvqLDOmm%4+`)kcG!7Xwet2P*`u7>}@4jMMHYgI20nQ!{vK^8NhIb7!g z@8$J{(b3Epr9dhdkJdHo!NzLu&I?u7Qy#=m%||QMS4v|*eCN_cBY1@bBcrY1)>C_5 zwmi7jW4H`D=5f>IV+n{MXZgfAr=|f@E44b{Pb3zvoHc&M476=Qe zy6ZgKQ-2r6NI-j;_y0f4y$g6$)z$Ey2?+@bo}eIjE1;;*Y9*FbQb041zzj~f2r61* zsaC437r+?-TF6 zKIhC#5^Vdu@Ao}_9?i_0v(G+zuf6u#>%Q2+^?){7wHfyF`u-wQ?{`Sar1K=zdjTUg zx*Q&n#hET0sZ1H1eW0OV_4CT@WZ;Z`FwsoKhVU8CbU|5=dTYG$EQ`wg>%5{PYmkwXBEf7H8EPN5EP% zJS_!24z;s>wo)jsmT@sHq_zQsgqp|Ex2c9;uO&&MnU(;3lAiUunOF;XZpyim9p2$X zD1+&YXmK*V81N)n>*3i8MQGAQ?n4XVWH}eoWEwYdlb%6k3DOshI1z-oI=e}uokzNC zWg*iAT6#&tZ+f+AdO4G1c_0+yUXV$N4nC_)jlcSXcK+(4xj5RrhOF{B(d2&L8>EXT zUq`ubA9Ykn;IYoPGP*&E*=&&VD(#CK;(2T38--S|hWHykB&o(5{y87AUrDNQjHDV{ zzpEFYh?_ZP3Xdp#f~OSb1wjg=3inh2LCFEGSr$_#d9ANw-GY7M@V)cAP<`9!WI zlE4N1`VK&}zXwr>tD;RY5mSH1^lPW|`O7hczTXnAK9n8Jz^vTY4Au5G$dKrJD9$3_ z_aqI>+du+or3z9fQhXN)(=bFvxTmDlC-NVspL+^p!-u2SI9H{g*bj#z3>7)Tkl(jD z{6mOJ@ko`9`5dWdna%px@Bn;u zt=M4gV`32z9+q3>u{#*m$B1bEltEUM{`1c8#Q8y7{drMr{BWvvOU8}b$9S+InLFow zX+)nR2cD=CGvj~-qj)<>rT za(BM^U+TkO3F5f*TsQLD^sl@H`Hu=zn?j=U8YdsR9?Hs8^fN9!t_#F?GP2BEx~z;2 zMT77SoTXhfle3IdPKfqu;dDTK2+rH>>6^^RgFp6>dGrjIjKtwkg-8-9^Yjvq0oB% z_&qXHkYOB9e-DKy^rK&fA9fq`!{pyFqOb<=BA5SyP45cFxsgJweTiD(MWV+{8jZJ2 zctrs1(`)+DBWn)E!Rd>B1hUIbvVE_trPmLzSk%PLUt zd8MUrxiC|>yjl3z=xy_{P1v0lhIrn;o~9*MEw(a0yMYkBuSjTt5^P0&k0XV?JovL`)*c~7soVNyzuU;s-N@7IppGdYz z$;2abDPuRvp`~u^=P0o_W`BKB=-U;@QYLPJUS5#)4wyhuAKd{wfJ>;=7cueMO z=RWPcS=Bff$zUwG#O$3BTx6Iuyh*Xp$m$x>n)sc(*wo$-aSLwfB71d69<5jy@Pze+ zh8m<*u5gCg$NFnl?Hm@~PdYDA2|{4X)ZkrN`g!=rMt8$T93iKeIllWb@tyW9ygy@< zueUwQp*l*L8-29bKBnu?BMm++42rv8{NRS=pX!8 zAOW7}2RN=0FP@SU?w-6P5Q9FtH-{E-XFYcmJ}kRYM(GPU4R7OQru~O0>cq(b0ljMv?c#4-qo)PDjo%VIzwH8u2c}k+&?U4j8_^U6?37<`q{!Wup zn$Q%>s(X$n&f}8%BTIZT@d?66X(VGIPNS*-CgsC1U-$%TiN6@Nr1dyD;WYo{vO+}Y zS>3Jo)P*oq>hgi9LBXKY&0 zGF;zsmdl^A1C2$I0ti)~z{XEv(~I2SWB9$NbW6B2`6C_---NcaParnA4`oQg=OXfl z$3ojB!vheyj(&)+_Zxx+D)aV~Wc2Dcap0JKk-lW~x_IJ1|HY9W-jSjUww-_|7h;JY zz9Ge4-Je+i%ve8h$#9f4ml12{iv%a! z_WUk(e`o5i#!Efh3VZ`JeRq8@`i1)RRul=T0_2`f>Jj~+$|iO#@dfkky$fXLHmZpZ zjEN1AVB2#^rNR!)fA9z-1-<3Bh?S*eY|2_P1ynsa>zkT_N=$rmB~<$1OlsLONe1^Y4}EA>ZEB} zzvQiFkMw#H-W%R`{tG_%$wl&9q5-6Y$gn1RdQUe zkuWVzwphg@q4*+I*g@%=pAbp^Q+v`XWhdr~e6jggLgg{sv~nt`MMHnnqKF)xp=fVh zTz10sE^z!?7M8~ZHX$&`IH-5c#NBBHixlx1SVWVXpdFh07^RrD~j-v~GlxvQb@q(dM z8WJp2Q*aNK{y;;KRr?pf2-H~ijn+>V@*`t2f=#aJ>>4zjfN&Cv-Q;ql*K0Q+f}?$0Y!CH8T$56UvLcETOEUc06SXYC+LYLWjT`Qii}T5dK- zsyAdupBMf9jENE7pe9oIA?VWlhaHX;rHykhmK;s_^mk3 z!vs%k?waGKB)5Y@l_7xXP1$i}x>N&cPadJy<$&G*FnMVeOv22i5)onl;GbL&Bg=Ur z8yE)IFbXHoH@SI*RB1jj_GFjjFt*sfgBdr3oor=N*m}~Zz?cr$rMB`6&-1vx zOX?oFJh}1=59zFoMPb~ZgtL|!>x684I)E9(p&TEQ2my@a&<&)~N9lG;cn{#zWxuQY zBJSjzPm(m}BK}M$&Y(zSTa3?Ks6xISyfk0pal*a*oLy)yK4}tNMag^eA;kr0h$wYssV(sC~NV$mXD@YlV7Fj872&zYI<50Jk+ygVE$WQK!?R5^x))H`jydOdlu+J z@yL7yy(r6G9Ylz3yd(!^ho6A&(M|$Bqv&PXrpek(YPEJoL1V{x8sA1)JF0+^p`%gP z?mYQ0YX=G*rq^LvL>f>aj5DwUEswlPYj zy58h-|E0rGXRbe`7oGJ#;H>}B^!n##tiQpR8`ABMn)Vx)c&uSJiP*^i}MI>b?!lVhh%DxU=m>8Nt%~jhScl+y0uP z`BT3}*2qG_EQFg6ZiMpWpIp5oHR8sO3rwYT0$Tr}VBdgQ`v#_&7=nw2;mM2xG#s?s zdmp#~w`c4A0%-_e8_$1wc1D+#zGI1T46D+5_F&?2`O+7+FZ2t8g(4VxLZuI{;A4r~ zg*90!^n`!alC-`~@-axRT&wQ4d_#>=oU#X)C+jYwdCN`Xl8+BMnf?7YGTmOaGA{i~jB%$hnN^3-0l*gvg-Bd&9lX8?JTU5Qu1BjW2iW-1x_4jiAFzSYry;~DjgGSn2ecF3I=_|o13$D8a! z&hxi<&wsxlx!kNI7NU$U5{dL#3l$fkK7vMZvs+fbpu1}W$K2u^vs*IwRfEqa zS}Q|s;UM%7qXhF1ni6P;r|4wz4ADw7GJw#b$ zq{MV}l}tFT3KXwO{w2_1RdNx~`tWTJS}y=CEkCy@eeEd&!F!+gAQ(>V@$x~q`V&bL z4?Up1qw!!g6V(_{klXBD?7ioO2lDsaaA*GZw(6DvplCzz&E3hqFyxoLgjJ7#-%wNV zO+C6^E!9b1ZMJA~wlw{ey+PZuN-M-xK4?E}+9(QMe>@br;sgViuR|u>13h`c@mlwG zT1#-KX+52?;;j)D*!^Lf2fHQ%r)!_{;1oJ$;3Q|Q{8L5B!2I7P;TPQ^HbgVI@eIaY z-$6QxSR!V8OLT?Jxuk(K`i-pgRC<0Z54y2giU)amE%UatJ_A%$m6x8+qTbtRd%tD< zH2%BIQS_Af22x090k(~YmqI~s?b|qGto1}axjB-TyVSS|P(k|w4}$2?rI{bzuHu2@nCVRjDW|x)(UzfdQ%2 z((*;9ss8;WxGpgHbk_s*2lncQz(KNH>^eE%Ymy%gi5`LC214Yb{6EKBIZ>`e*998h zYab9t_zfJ)rxtH;5l#DRiC=>izb0So;Fr5U`$)dtU95&HVcglhWj&4z3FC%*L+>6{ zBi$q|%CU`Dq6kuU;oXpCt7_v{pH;) zBzzgy#MMrx{eEj|${7r{R?K4nDuLfIp5=X45|&s^ zr!%`Qmk+^}=z4o%U&))b6Q_gtd~>;TpyrmM>NRDvLF-WlI~ld}%qqKXvDkJ+xDug= zmrsX-_Vy=82p?Uy3A=$FC$fX4r{?UIvgC78Qj|P$w%nfggxvP+!~4vNZjoe9HHY)= zEGM73a28q5?4po)-Or@CJoiKS67M)U>p`nV6pB3DOYSZu|G4~{O#!*$dQTr{EiUyn zs^^ifIogQZQE{WS*zeOHyHC(tXj7W4#nW@!XxFY~I|e{$+?7WoPfN1n+VwJkO_}vK zti^*m`x^bxWU?P`V|uGw~~#YKzgP_0iUn*5h5`&uuvlYsvJy zR^wgbZ{M;Vi5-G;D(3~V1=)t9NnC(D0ZpFK&gOu-Uq|AMi?i zN13pUJ)rp9Sy)!VXEKGN9Ap!u$2`!CS%Uep2CNTmlkVifH=PH)L0@VHoiW}ezT*s6 z@)DaNZ+C{QY>%d+M{SM#Be96Ktp{JrK0}zZ6drAjpKaCl zPAwBYUu>9P|#qM3_Y_)5ZO};p`jTYv}#na#h)v!xIU1Ziwte0bg}og1YKIpU;xk^I0+~x8*pk zC0FOQn$MC^?OV2!TAA7NS0#4*H`DHcJUV4kTDCWi=e1vaaW2p530Sp#D+AH1IS4P23aG)@ zq*TKv9czwVPr-s?RVIEMuk&z`l{_^R9fc9I$$CtblbpEZqz{i4L)Vt_=+%Y(Iq&5h zMf99=IAsn#A2~BR1#fKk_!`$o}lGc**HcdYiNI zlg!QO$`9Uo?g_y+ap@$A|Sb($*@+Vy>)>%+9y74FXPtWQHpEWwaMyj&3WH?vjE7 z0|#HWU4`pS62Nga*AJt&2u3%CtkBv(;~F7@m33>ac|V0PRz}wa4{rA_^7;P?hk=aY z)icm?oHa)T{zt$=2@o4%ExxY%Ny!fQmkzO(TsOW`C^i+;`UKPhU(e)kRpf`mK-L~7 zu`2uTJT+PB_BRYv{az=zI^|rH;ia$o!Q#u~XPzENtqP`A1#mHs#F8iA>zK?p4w3cZ z4)8?1lmsUK-5P$O9h2Y^w5I5Sz`!XtE1-5^3v)2=kzXsIcEN4Fn#@|$O!|X6eT16N zlF!lPdZ%U;w>!ZnuwFFH3%FXu7&-Wnrtg4y0883+lKDJBbkZG_7 zTXiwv)Z%$nJ-C7wf6(_%U^(PY{&D!MS#dqrP2~drOHc;X%I{%z`_q9hp*UnnyBY1@ zBvHAE!&EBzS;L;ZIq%`MniDxud_{V{hHH0pWw7SMW5M{aA_Te1;s>!g^5dPkauW)RXFM`{W~gG#9D}Nr}b$F~j~;zQu?3@CHl8?KLZ^ zxY~NKsV}_2GSf4}nW>;M7VcdT?Ne#Q$wHYYa)2!TdjDq6oP6TPQvOG!Wb#4r<>4 zW>0O2*t_jtpwyJjxbe$i98Wmiix)VnwBv_@*eQEIY9eudqcqAXT1=^?kqxOnjninN z4uM$-Py}N~HR!~f@ZfP)bHbl>;;7pMEkF6to4BK+Q~CxEd)<%-*3fO9~{(D8s#d_gS zX0goH^Z%2@Y6b61{QSL(pXSt%vQS@nWPqkK_IkjkrZ4Bk&260*yY0_kaW>sQA-*kf z^pcwlq(_}+a1{7~y)Jsb{e$D7=OVQ*R0w)H`!fE=O!OS}K}+;}jjYJxY;jDr6%T_| zs_@CX^CbUsJ`R0~6efaP4Z0{eJJ@Rj3h>+4O|(8mYj;Q2fn>*pNwn@bxA-m5f!=Xp zaD#r96my5)gV(;vXSsDp{shxtd#3(PZoDdgHtn}&by?1z>y{Vtd(!sJyn+8GzBSSM z@urE^jhiO=t(}|X)|+zc@7yAdWyW0SG!MA3s?pD|V!3mkrgx6&PVcvGv$Gnk&gn8?yyfwLfqBUX1XAEWZ zL~GI}{)|3cN3xusH%zoP^Z%r#Px#U#mV))c(hXJN5|7`Cb-Ax1{wR@jDL*k=RHq5l zY*pC+C|BScR&EV#3a08qr7I(E`VTY^Ru$E~j+fJx=(+@HNHVM`h98#m!lSSMb9(X8 z#~up*OL}qPs^im($u}4*j-KE z^kT|iThfb~g_-oC^Sf=)3rPa%@*LtOp~+Pba8BQ3&gl=nnq)-RK{SScA4$=4kqEX(v#mVOTzJd2?XS*lctZ@YLNhIw#p8O!^+QcEz88=%RBpmd; zVj|MQeTT*d{Vt9}TPihJvNTS8OPZ2e;b!y=mi@tJds1Q@$w|J}_R-j1eCeW@w5Rja zF7(6;^Ua+~dz9W@HMX*@-kR4zl$exYAmBZ9uBaZAuS921i8er_W-bj@YsBds`6q|~ zEvAW!gYiMdLJt!surr*iR^2BI4z(d#reF=Js%sFr@mX1$Fv*Kss&?Z-)Z&A%P&8UW zG`l?0eM+y9@h-VR-?~ugR;xx%RoH zM7-omH^G{<9V>e^h2mXC1Z!5d2PkR##c)K&5vbh1R~Yc^ub6w?X_j80z@T@fNUvZp z_O5j1%9$fFE}RSq8CVlewuC|S5Bc5*_|{U+JBW#qw`H8)q8b>1rlm0G+c#`(c?Ude z8&I7@cB}9hT;`6svKPf2&+N>E3xn}9f!V4e^hQwM`fPpY{-M^a(6^f9qszA-%2?ng zY}h}B+*_!NFldq>5fc_IeRN$_Vn7wp_YTZZuLd6S=)bkN z&IED$C%Bsb$qkzUEmxYAj#w9mK#yzBEql;Kl&_YV2i0PG>I{(Vdu zz9#@*)obo{47@Vms>H+l^PE#e=RfBoaYzqD|1yBnk8DX&&LR+v2lxm@>qhHGd^{hB zdFNSu>n8Bk>KmV=A6HgeeXHhMeQ#P|^}TJ8)i+Xa^(DqVUe}M?;%^xc{w7Lc*QFv> z_tQ63?857P7r~V?Zlckg)$;zd|9}}!FuLC#B`?MQwc!-C7*0r%e{Ql9)Y0&Ur1UD| zd>vr4I^!|66Wd9(C(Q}1!JJ$os0IC5v|=fN#^@4lBj&uECt}Xgz*3M){>_G}-eyjR zkK58ba3Yj^=$r_XSb>|5$3`BspFumMYKKfV(p5X`z1AEEg=e}40y6y4;LGkXta)Ov z72N6{Y5E-eIC>w2Xq`RTS7b~tux7%asJaGlj>vgNH5nx8QsgC~$)K}8z zLVP>X0En5M2Ir`8Ol23@F*Qeuru2e{eJudzb>EkI8jyRTW*5dew2*tP`x0CeCKLl0 zEZTeRh{KCE2m$c)kwQ;UYDM!#2_Z?Xi+n<+1^knsx1vZv{@^xuQTv_bn;0!0l`G$J zg7?kyP1pf9tviOW&ZV z3+sx>;8g%N5<2YRC+xr&r#&L@cU*F8J4{q&xCy$WP%m4?CX$t-??oW$coKicomA+Z zZr1FMqxM^~$6<7+X%NFhkfpOTUb~EhUy}h2kd&D;KN6m5Y?UTS)FPN3^{7ab@oovZ}CmpTA{9 z%l{2}`L3at$i@F!ch~VjqT&p$~lW$%PKCZeC0|*D*th6CaJXMJqZ^79}>um z=`tZDg&YF82K>t)kix*R_0H5?luaNnkZY|8EnDJa`qMjfj(Y7j%nU4S3TY>P_xbb1zU(m}@ z`YzXC>e5R|lKB<%QZnee6sZk*IhWhTn<`O_Qe6@P9VYj|R`sXoh$$`FaXP*rK~9HH zLVZ8O^8k8zNPyl3y}T6KI8Er~r9v;K3B9~j=;bt_mzN5?oW=^G?l{JIrzHgAE$HRc zD}Vz!3e58^uMj|n2&#!boB#g*6aDn~t3a=94jG;QpU}@2g?=s)7Y7fOL%lxZK$X)3 z@dK*th#wjBbO;2sJ(9+(aqZI-RpgK1M*bKMt6n79oVU2;>4IZ+Nnde-JS^1& z;`h>8+?2$#R-I}YLXXPmyQ+__#3^=EY}`6hFpNg-zP2E^@d#P%gMHUmmhPN!L&*1b zW$X%97_TVa;fULQ>me}@hDvt^t&vB9sRk_Ckrx7zbsD~xBmYBxbekK8mv~yJ)Y{h9 zEe2)Zz3@neK-Tj7=wkxg(XYc{G$gR&olj@T`RKWV@lfxq6XK0lb}<5m*4p-VPrXv< z`#>}-lxl5T!&0?K&j?}c<3mNiG9o_c8?yRX@tz!I&WM+a=^?8| zv?I#F36{gX3F~&1LyC}O3@JL3FHZhu&XZR3=&+$jeZZ^#5j{#lkKSi%Wb*fBQjrsa zHL1KiyJCgD+u4t>r0*R|{6=V zc*EfEybHqO4THt=F2Li}!@D;`UL<7&whpWIGTpvih6Q}vP)W3;hl8e6N-R#$S3hL# zjP@{mn8^1LF{!5<@2(&Ye zK%2sktCcBTci|0NWfwY@^l8W6g4-zyfk=yjO$>uA_TX6|*@L_7l1^q1R`zbO2P4Pd zgHK+5+&y^N|HdAa>}LN*dvIbKdr%~6VF$cD*j@J^{*lMse;533?7!Wh(toi3o|dif z|9bxom6yi<)BQ(y;{S#Hw?y{em2`ca{dd-Hy#43MO^1K#?mvlx|65ZV`;VXujB;oh zT&K3ueY2p!h}p)+t?$Mkq+MiA0PO;?{P+LTRWxX=_HQ8is!5i^qjftXJ*4<9(Nf*u zKNd-fmsqt_Y84A=;w}|1%qvPa&cwQsAE(#E_2#;xATlV9-fO939Jgw>%lqqgSo1Wy zU%cZfcr+!uxbiEkL9leK6&F4;gm0g}VGmwOhpWOL^7neH?mGI$2WcDy#L;Ac^iy8P zr^KA}F>}&~Voz_t>=lX+I)j5u{dY2LD#sx=`!@->Sz{b`rXdvy$!WuJ=f?{j4ccyO zD#IO<%0+VICu(G7?qIe;B49h5!35%$|2v$=?d~9^$;pV*!Z4f`ZpUfiu9i*MH zgqBVVIu2Nm^M;>{N0{j8>UJOk)|0nmDfwB1Zb;=>&tYCvHN?d^%Az^yJ|F2y!CRlB zCi)iIa4R9T6}jk{PIl_=ds5NuQdFrX)sBK#Ttd}d%qucFJZv;WlI>qQQVrf&Y{k=X zmJCsuP_c}ISNMkff{a!s9ehN&saRee^?K2G<-Rt;qxE$eu|3Ef6V&{t1!s#{c`w( zRgu48OAnvvoaczS1@Hp6)UJypoz&f(E_xo~X`2JW(T1x;^}8;$Eeb`R|u02@7hD-=_F4>6Dfps7A8D5$Dki(~EJ2qd*6l+nVHwLHt<)(Sm?)YEjzn?4|8_IsP?yUxQKD3t+n&PhgC3;=yyo z07G1t3P4YM&VGKc0s|x!51tEFwLy<19(6SCHufjm^u;8{_t~2o_NW7qq$R-c_L=SH zy+haJUBY`Awd;ZGbUf7TSZ} zR4dF?;@wD2b8KQLSu^y>7157kRg0oK{i&@~i78!$OThuP^p;x{dn-yms<1|BY8-q2 zCg~`$o&-8Rsy&K#Uj#=eEE(BJa2&XD(Ld+Q6kBqtl}`DSIExDzKj#5bcc$jE<$U|d zq{J&G6iur6WSg;(oFjz80OH^A2J8B|GLsa2;!M8{Ue*?^nB(wxYwy+$k6lQOxIxq| z_T4CWpr0JE84hB|LqvP4n77PtSjZ>3fs-d>3NgE$?F`Q61+G7_8e+5;Z$p z_4+#%JL^Hs2kLdJzWS)w#@VWWzhAd%y}{rg(JZ|Nt>GV)g5T~M*os>cDT-vR25Q!z zMvY17^X+&JhVx%_sI81tu0P)8Wk#yL(WjbM@LFUQ&`JtPG|4tF zKy$YNmc^M%?UD_;4aQ3er+8#(vY*FqU|L2R`M$`?L~&lYX-~>O_aBl{+xHQ~-#)rt zAM8Q)=hT&pSUF-rB?w^EObRND64!|G?^~Xa1DRUdzYFg(%pB8W zg+5)L33^=wfxmIEiVqfhV^!ktkxT=$-fx~merF4m zGRAwxamIT}8{^H5bZViNwP1o*w9Cq`?len+HsSPIK{P%Ld0 z4Ab*xjTJA12zh4^9s%7$@sS0=ns=LnF|sC)E)4cvSxMx^*U_*M%@7nl7sVf5qyD44 z`eUij!G%4c=(}XlCGKhV$;n%BC@HLr7FGHJMG^^h9eKdB^#x+8S9g~N<%_Qme@(dK zNELKDbec7hsF2xrbx#iV>_HXQlF&8g`qc9)=8|s{JsfVN+arG={#OFKv-}_vKbd)i zh@R|=at^+s*~!&i$DuTz->#HKn1b{Frj%xVsZttY9L!mnfAc-2jrt6(q2-r6D&rc#c(e@W%lGwQ-dPibHn=&$x@|Mg=I58Z}G`+EZoT|a!ZS@aO% z_}j~@nzc-Txf4IyA%fE!j zYixWu{{KCAoVDgZg2%jH9UmT>zGL9A=ZFW7iz;KcqPePh1$c0TO7PZX4rjg|?lySh+q+o)7yK;m54LWexs_fGwKleceQ^sksbGA86Op3fG zmjWiiAE9K`(+Xf#JKbI>8!-Rbaz3o`29tlo(f>;`xAJO}LJhtWM=q1YWdZW5q;mR` z+z~c!VE&@tcFnPBCBEI6g;obaO2*D`jAXx7-E8hLF$u0ZtN4KA>kh@r_jL=!LVLT3 zyVnh>-TW+)&}1HaRrl8D=3mjDrH$ds=s`f0nlD!*w?cuY(k2PI$;9Gb-YW?*CArJM zPF)#Vq%(n{U8LlwY(5iEK?zDxU?|UBya~YwXEyh4qGDQu%pcxFv0Sx{Uca& zl$?FWN%IKxGo1`}a0Oc)LmVL?D}&RF74}V}=Oa3xg3#u=)d~bk5pD#SCQpew;$!zJ z)1s+s*(DP8UGCe(X=h5gyiWZPLa$$!GD(-gsuQ0j(Tb|+ml%Z0#MATrO|t)5jg z!RL|2q4DyM$xGx^ty%AH*iF@%_5L}#IlV|{mZECSR(glQ?a*Q}WL~xFn2#w`KwzXt z$>302`ZRX5I1WdTt+U;7C= z5049bW55A64ly*){6AC=w12<9S*k<1tC_NGg3}mfzF9C&B2in)WjcS8z0vdh z9~ilu!{#67%K$xp|6nh4Nge+oJe&!`;r$ug6OV?D<29!!+Qm3MFaMQ3`*t8U3&wt zu6a4uys$2o$Wa5Wx}CzpxTswzwIDq0Y_L}&Zkk2z=#Me_H&!tEc*ip+qrmV}8N-)d zPg>27Pjp~jQnOK%g}fU)S7@U0tNo6=`rr;zzg)zi?$GFSOyzQp5y0Jy1A7-~70dV0 zgSx`7vasmrwlpb!D7w!cMl5(Jx{K5`-;TWOuUXz5eV zdmAsgKwI|Tg1JIk*4VjIPKQH_bd@r|)1wI6T{}pVx{fQkPr>Ngv)O1OL5x_Kmy;l> zn2n(@kKFN&^KJ!h9bf2BTj_D_`?CUlc(YDJ3PZvk5$t z6)5Cx0wok_T-pRSRlj_EY(nj}#(tuMVAJaAnXl!9&mu23YyPP@6;v;`#y*x1db392 zV@pn6FX*E6R}991po;MKT`2e@iqI?TMUb~@Z;}fQs4hW8rS#BR$uyokXFhsAkS%YZ z;$)-XBP@Dl^q=JHUTD>dr;YM}mC=tRPdJ=>z(*O;aqYW-pHIi6z}Z+PT<_5ZBteRIy67#F{U}JowjRVW+r;~uMSng1!6|ikJH%Mx z6-gm(-*}QzM%BJ$=--63;(YJZP0si4Nt<;2!(D7OF3V1+&^xe^c!FopLi-;dao9mP zgQ?ddFPg(D^R!O;s{@~XzY?`7;16|^WW_DOpp#_UzaBw+7IS_72VTC^=x58zKp(St z{V(<7yOio`cMN{DY^Hyx0sK|^K~@S`ik|F%tf%pq-Urt7dkPp)6z$U?-lFBvVjT*`OD0T z2)BxKCtk~{>(0&OS*QRoSlJ!99=0V#1wy*s7S}6?rU&v+Y%<^}>%qviHuD<$^Y)4! zQV7Xx8XzI3$KU08OhUgwgVX~eFbG#Jkp!{}0T7sT(2nHkg#o+nAGIg6QGq z6f7zG;0Xd2BdN;mOdk9-DhtAclbBE2vj{1>@wn|ZS5$FRI=_|HV{D7nmKi-UKYK>P zX`jKQ;Iv%?%>a$!Xa;=HA1N`po=H1vWds}h;Crl$DX7u$k*-pGhQMbj{j%Ebs1`-> zFHzwMM=R%W6p;>a(1Sg|(OgRpr0Y1>#8E*EBa~^;166rqAxFWec9mUe%I5V(={kwT zE<4?+B=$-$>xmpYx}(nLiarS6s$6Sl*LAhB%v) z=Y4QY6ltuC>td+iZxvM>rF~g}e3K{3PLyxbQJE#*q~Eer*rX(*@kpbGe~5WmgngO3 zwJPzzuI9A9fnGGDr;eBNSbm@A_!r3eEWfQ5zfZ~dEmU{Eb%zY`jv&^`aMMIpz6X?*N;B|!Hm&@6ys0H zTJ-(awe|eJmj4O8zIF%bI+y&Zi}I=xORr1gxb)}fm+*dwzUr6s>IePNqbmd(Gf-80 zyrfRSJZ)dM5NBdYIIvm3t*aYV!(zHmJ<7uOJPc?CP&OfFi4CMKkToNHfb0mTx#% zwA{gM!b|!m|L@;3_OIqB&Df9fJ9EG4ef|WjEUaK|)0x|%+^WR$*UH@7^~e6ru6Nao zEA;44v$dmMEaZwXGQW{Kk}Gmxr!fx*oAom;aOR4v>#|c7@wwNqR;nP%Se91C%MVX^Tc4SRBNWT|^YxIr?aaPtiHkU5-d)jkf;#iZ6j#*sim%<;!Zo1tuCC@alS zR?72Y7Uyu51Y+g!dEVUpYM7S+Soi)!o{#RugW~~0kuRBAR30B`0MMSn<|gmZtK?(X z@aEibg&$Ei(!Q*E&HUux^7ycMK(3;$-fso>HXO^Pr{rJ*f|d1$3+nd(0KVi}%Qwk* zj`6a@k68j9|Ec7{t8Xsw*OMhON51A(Sj)+uiEvr+wH^qUv1ycgPmQ#m9kiw`*xi^3 zyUcallbal_Fze#LjCBKE-nz8`tmLU}4?4ODKPT1vTF-Xe5-eRGxl}aq0|6?k0+=UN zysM(pq^%ZxJXxI0<()7gsMPK1UMJ@ecmDHLWN!9&Sk)`1&q#Owi)@3HKK`7yT1e+p zt`_^6gC?EglYJm02+Bkaa-8B$^h}v(es#nAWY_qZc{L3WkP9@p4qIk)UGkLbhMz{) znN`W*Qx=8!#Y>)3l~ll+rldY8opl;ytN;&z!W0#SoZOHm2VzF4pjMe*t5zv)k&cUf z#}0P|CJ+Z?fgBHrvTa_UIIfG?8&}B>(gMMFu*=(+z~E|{4uS-Zg^MZ z1u7^LKm6s<4E`+`MeXF|5lK@M0^*SOmdXo(cgn9dQ>zlcqI6~&+=jlm`qwul3&~u^ zb`k%DfL^CT&ewRf%HWq2qV><=kl=zx*Qun8~9(e)*}#)BLi-e^AyXQ$$b=Wh^6M{-Rx=w1{O( z-(oV+#xyE=tpv||f|LU|lak)tV{NtOCKud-gpRBT}qy^@_{ojXn9}h)-yxg(uzpJM+#b{$SoIrDhN9nx zOT?Un(EO&<-o}X|o1a>tM; z7A*V-mNB{<`xkn3sG8o|IB(MYZOifN==(aOf0q%OQBT&8<$y$)oHO`Tgk^Vl&Zw! zjldHPe7J`}@<8lTrfA>YT{7hDG%!iLw!+GBWgFQL(v(Bs-e;V8a`M|-Z`U@D3%cm> zLPqH_n$^V!j_Ugu)}dzlI>5xLX)nYoXzZsRB17|6+8Z_qa_3K{ ztr=m^3Pzz`WcPI+y{+}5_|mMjA2N?#ntqf}H+?jMHO%vsbp~*L>t0Z7!J)ei6BYF5 z(Hj@vYCh_R!-Gd4j0vmCR3>DFWNIJ33X;W3W)I>7X4Bu!*_)-F{qlew9aul5^-sT} zCO_Hm?v$ZlQz=ZG_%@^-7=XT+8aRnBW%sxSxF!ay?1AW?0|tu* zcKVrgmrp(CvN8%SA z{)RvcsgOmKw8~?;CEKCVFQ@#0>nnjr!>8zJ*Q*vh)r3FthFBnArWqL%D+`c}&zBP! z?k?B)0+T*9R{O45)5GqUb&+8i7mD-kZrt!Tyzm=Q|0T-T>4wTOFe$xi$uG#1pntD9 z=ZW~j?>DG9&9WcW!%bv_@@=d=ThyEk24o(+6E}D7nTh%gSq)=j#r$=UnRcVZs+?qr z?Lua~fAW0h`?}d9BCbq=OK>dDm?FGaw)MVl_Nf`qjEJ7OH+^L4eA#7Xb0_tXPV{-l z-(PHfD?+lIh8-84%kTp*0}uY%ET$Zytryd>fAea3F`X6aX3x`$!wc7x^$-UUQBRSi zyw!Qp68Hr^4*Wg*3(WawJV%F;44TN73$)m0FjfWa0F&4we<*`(h}KP0?O4g* zW;>ON<<=AQh{n2FzOOo0npG^t^8QF>n|o-(Ig1zFBhu`(A=+%AM`aNWyIWV2^Qo?0 zEX|E|8~BjH1fnl*<106$Vg)zmr*AxBuJmI}PE*M>MVkS92y1{)uZ%G!zd47hxiGWi za`~{YTbY+5WpL)ouRs(H*&RiUzfMzD#q;xj$Jtaf0Q!5@xlf~hdZ_;Fc5^GX2I4P| zrsrk&%g}Y?5&NI72+L5X3_`4W0aQ`u!9jiNZ{={~zp~MU#>oxzAKj}5!a&?qPZ0Xt z5S7!d+5>={3GR}45S$YIi_JHC=kGwxXx(1EhoUbpQkrfjr0 zGOprAq|p8rNh%57MQ#tyylsQ_M|2@ zRy=?E9cwCH%;DQ#y&I^fYMJlYzh_8FuP zm4K)!MWQ$9DF33&i4Ej2@sA_3+Q*u|d~p{d=XKh&ef;XpC|d1PrEh%rOFxRd!__y` zbHD}7p`VjyI(8E)^IoX06k59q;UPUY9^a}hq;U7)z&EZG;6}c~7^ z?_KzkFzu4*!8~TAmym8LsD{c@&^E-HduU?BD1Yn!;^jI5h|dB*c2WBqYj z0SEwpA%_~D0r+JhXfP%M7_r;~8KO`V9p@Y}kZD@xKxXBfLjswXAPNAg9PffoA3r7U z&T9z7X3|MPYIM)qdZ@yEcXQdQsM8b&LLDk$>*RG63w62TovvHT%Y6^R1e4rUs*kKYfiXt zAodrbj^bY%e_6iS&kq#w&t%n$#f9F5qCaS8F5VG}KO@^16F+#|Z_H*kgCv#z4DShW zdB+2LQps;KQYbs?IWT|Oba%B|JbKIJY-#f-&;5qy=n}aJKdZUSc)nc*pm0Z(&@=X1 zePST7&*`PUX#z`q)`NReiC$cn^&+-&TF(lfU^H?D>pw7mu)e%Vf~Fr(qRYAw!Fs@d zhcApT^_7LyclXE%pN_iUXVqCkWaC{IKM7>M1BS|3!S6qr-;tiN(Zdg}loYyzxblFE z$*R4c?NYoW@r0yt@h<+8i@kHf1w9}JN<=@B5OV&}3Vt8-3cSx>#*Sl3hA zg6M9%67bV=AWWqwv7Zc-k(NH*Os|pmV=ouc-tPXhJUo9BedShc`VZ}CpNj~$+F8#% zQ(?R(1Y%V{Qd}ISea|k?GaFGse_vux{qk_iAHNIFBA^ugt-LT4eMUykJmj=mD#OzH z?B+;|KU6O_^_GNgBZ`qrOLXGt$CC>01sXP#S-_*bYqh)0zeD&*rXbzY$v;X zWi#&}h~1$f?v7!LJ;8F8LMfh`3I=M~I z^lfm7JY*o2|8?FcB6PV@6*fa`%@+W%me^)NVyDqH8!{qD1_$asA3n^zo7Vcel z_O9$pB9fACnRYkQPI^{eVISSxLpMo6>`P8ri}Kps;qnhm@3#mOr+mg(xsV;^-IhFA zxw$gBnow2oL^U;)qFe3z{l@?X9j&ov;H067v`_6h(}WBVwy41z@82ojfT8%{$3J5x zXMlO4jj*qyy(|2SVnTV%k{c-Cwd_=oSDKvGUd&>IXCG>OD^+P#9Aq+86{4HpX>!Co z5>rU+{H?2afP%mXJT6uwhH%@{ zk4?ivux#!CYXi z9t+-j8qgC%;aK#tle*c3%Y`;U5!w*I-2N3mN1Ng@l6xu?y90@87&dIpBY~6Nr*^-8 z0$YrZ#~XsN8vIB{vD%D69(G1?@5?d@IbiMGj2D8gE2(~hpW6K=i^fDUK8PmS2=YDb zkv!wHI$uU`QX8$#xBF--NnljdcoDfKM3Hcj7(k!MlUStdBstN}Kz#59PzL49q2=v( z`*n@bnJUyg;zw471xV5oM6oB!Ah5UX1+cr|M#>fVE|aywp7l3Jo@K@DlQZnT$r!gy~cz zUT)vc*d1Jjf%K2GaW-fF_2Dx9Rz(J=B&=Yh!YUCX)Z5_I+M>UJ{Y^-2*hPQ1F=Q@gg;}UN1P1b8Shj>CYV6% zxk;*0zj7N(U@v;=n3!W++wydC^a~0MTV|97VjkO_8ckw~)gW@G%kJoko;zq&;Eh=< zeSh+jwtK0HVJLxnhjX5&u3)smzL%s-**A>81expXiE>X0Hf25}H!54*NIz7}J%xiB zXPt;Lg?~$Zi@>`oF^9orpI4{^hH1^a(&2^SnXt3B-wy9J*+ki){tJlD!FZ@F%KYzE zMn8096Xdo!*da(or8?>glV;gdltV&U`-zeSF(Q*g55hgX&{|wJN*w5{#lcbi8V)qf zpt8i8Bo*{JeR&&HzANtgUIjgGdj(=sQtZ>*@Con?`Yp1R?D~|>+tV{#EZ)odP4uSV ziaqvGIXzIFMhI&-XqU^+(#FVBaB>?&uM1l)mCJaQ+1BLh?)N+4Q5i6cYSoPel`(l!IN!B=8|SoLJ7q>k>Pya1;h-{1B%^;6)2@$gl>wysvjnJfSDwPV$^v4(E z$iWvz)kc$)jk@|Bks)!Npzw-o#ajTGAwSL)Vka?7pYUyWa}-YLX0M?Wjvjw%Gr8Jl zVf7M0yR4vi)51dQ=PL~fUAj$_$5^Hgea5V%MPu0|tiLST@vKW`e;8j&_Qv`4VA^LK zv90jo{YTUIp#73xq+ce&D?YS5-;6)Xlh3F5ul^+&`vC^wjD8vXnBotxPKN`9Vv9sQ z7mUs7WB=h~)nJ3*BB1^0BYpw0HkoVA2pNyA-?*{(^N2r(8zK^nEtfuln6Rp=h022} zA$sTFRMuu-{;`RoyJ`R^!PtGy2w3q&BGKBjqXI3HSO`Ue-Zc< zh}|!X!@Gv?F01x*et0;bHg6o*Lc}SeI`1ZvhJceLY*!L zQUFz@h(5Am(aL<6k4cI(bOiQC^1ZZT zL*!oRF;OM_cP#(g^ytO^W)TD3ud$M@G;qLp_|L9vArO}P&UGq6uZKSA*siru!*n)e*AK=Y)!&C2>f-*uWDw{H`@JfgEpUZ}IPPv${Rf~BVG zX&2d(U*ui-9*ObWZ9gDLZQ`+Fk5Z zGafQM9X*ZiA2vN1h_$O&;F!zW2GcDxPK*OL-2G*^!G4(s9xMdOpdwAm?1{Ye)YHPs z?36h3&+G!xylQ0zaqh{Yi7od-cS)KGcGJ0Cw)?P9HBo9SxrvosM3Nc~k0S(Z&$?NP z6d!!Y4QQtVq3EM|4UGj^!Kfab;4XYDL8(jGCmAS3fP8Acxctao4wmlpTaUj&Nxw_e z!SIo1lkNO}@%gL&=_{8UdXg>ClPEoSz#qH%u&tV4ULs#jrbcnHT5&Om;JCaP1)TUx zsGsz0Gd-8tdry^vO;2)DspEXtQPQa?yyhbN_CLsklvU~>*d^ad8{&S2aQmqwQ}gc8 z@(zbcSs}M;CRil=+G$R#dDArummvRs^2w>*OcTmDBXCD8lG6VVGG&wy)4oC(D4l4{#k))0XUGKhWkU19MTE!4uy3tT9yl`TZ z&kq!DK?CKRIv9X`63l?r2atcUQyG; zs*A9+)a)t@U&Ik;RJ1W6Ok->?V^wotE?$fEcR*8QW3=iuLE$Ic2~k}oUmxbH za1|>1Dxn?Bl4Ls{q?>?$Pdw}4-!AnFTP~5OLhS`R=VacMw=CeU zIbL8^VpqZ&R4z@;4}hPfsubhbC2YbVg$;e7(woo$t&Tj9=oq;JD6^bE~7)fopiigbvdf@oa8V}ZkT4sd6e+EB5B_9K$& zP-I0S#>H9gu0LSwPd=vuNUhKGOnbHAearXioc963WncoiCZpSZ#EMMqX%BsxURwuZ zw}205h94ebDT{oVldRfVY^9i=^uFzISqx8B`RSOwD4iEz+_P(-l}_7`SGgiQ0zCd5k#Zill&Hs@M=3W?=bJLSQwnMTFli-r<8nf z$n(P_3Brao0g&R-gGTY)q+-T3};2W3R+ zp*Z%Ff70tsYH4VmDQXPb5{snQ{;B1vtF7PdbIKT5K;6dwCiIwr~FxuQY?VZ}>=d6Fm&f-+hgU zMU*C&<6%)CUM;*1Ltf;rX!=;O=FMiPc&8*!(({BoW|G;C91>;N@$B#wzF zB<>q!sfD?b*Bw>^!$oTT&A-F!qGA1}8HqBelnFVrh{Fe&enK`TyY!nV_!2Y4R>?f^Dut z$6?MooReOMPy_e5#QZNh};l zIYfb-Tv)BjUIo|%Qkj=|KPe1A{^ZR<*DQ_iIDP`w==}Nr1f2&zp$K~qP7JJqm zi%XBOr+nTjo?m1;;r~N$h2jtNH|SMXAOl#Q|rTbIEtWfcO}hV9uXk4U&i2O(`WGkmw$>Z<}xT$6u@VSJ9rVo zEHfWGkIG{equLt#+uJUi>G)bW#ggB#8 zk5z8A=N}L>B2N#GkL%=cOF23gWi`!M`ujN7MGc{ZeSbXfUh0!zs56=digIQ0>#JJQ z*YWr(FZ4%AvX4_wG%`Pv$rVq>P#mvOT@G0T{1Z{mvbnGkr0jalfk?>3%mwoEIeu~r z5C|C)-qqz89)Y4+^L`0E5`oRQ!l{3X3!(T<+ex8lyg{42-8ZVR=$W&P$< zDh4PWLr^Nq&I&esoF(liRN5DW?I|r(FRZFwc1+1LSGb1^_vb%uRvNL`XT;)>x9&+* zheh~yy=$w#Ff5IK7MDI#kJi~r$E z#`$na(_ryETndjOo`vFjI9YuL^BRKDwAwKgzm2ocoUcDtiT%G%*aGA7sr`cd^oR-R z`~DB!m{Je8>^E|zJtAm7mi}QmBj+HpeQ|AF>*OxQUC<(7r9kg`uU8z+!YA4 ztEe9l3+>7V{duCJ!}oKkK;1Zi-idyzsr4}Si;E|opIOj1kPq-K^XhXu@aj^2x{#MQ zW`W+S?aM%0ztyVAmFv-_#9_3m=@ZnY&qn8O@+-iMnN0XjZiQweK#tSRFfjknC^UP+ zjRYxTES@cn6nQZ^%7Tr1tRpU%|1+ zdobiJ0^!~97*qjcW}liyYzC(VcYh2%rc`{3V7 zhkAHe_LwC}(_IX^&2*@((%d(V%XHZvTfD!sj5RtTTq&NuidV@PqY>gNh)}wEvIfe z#d!(>jrHI$?2{xWfxh4OchPog(jzC2_@6L6LM--T%h>t7%+Pj4`j+@5iV~6c@N(-# zzd~Appds|0H%g{b_q$7uOXg=3cC$M^AvC^0xd;?Jx*3243<_>TWHs*l8G`+^{9x(k z8J9ZOf{m+nN?7u~L3Bi6mOlZhjt`OQxB;(}f+FsT(oGnTp-G0Y*um7{K7}38k-M)Y8_J2&bFEQ;m7J1{zYu)~ybo+6p{gdhTo2y!l z|MGPE+fDn)>Gn^xZhuC){k13R`2Fej;nwYwZ+r87tw`HGtKV+y6D)9uEeY@4F{?^X<~QeJtJnMbrMdbo&p!`~Ok*Ch$>I zSs!Qu34|q9P%uGIf=0n@03|{UNSY*24IK!wx}YfF?#R*&Ca^p|7@voKm&)N7Ju5tBGUmL%=wa9<0 zjsKz>zm<)D&e;OrW8?eX_>qmV_Rf&_&20PvH~t4U{!%^-q!;f3l5#-gyH5IU9e&5W9bdhkH#$D4&=- zWUe>4_V@Q>iSKW+zkk&6y>O15o(G-A@aXn9X<{|bRH#am=L!=QDUBdL7LO|+udT0% z9n_oOnHaE|qAJ&&Uo3}AfT7iy>xkXREbQ-9Aap{&mH0daT&|DTeHQEgdWfGx`cH}V z=i7tr{xRFouGV_o%KpCX1>$>;{k`A$y(}-XK33iX62F;^U*N~5sJUXvE;BoR|6FdLR zcA`Hz+4+xh<{zAvQcrnAjGP=V&`71xqgMZZurAhLH^}^UG>EmYxide~SP&PI)aomn z9s~_Gw8{`2Y5wEr&%SnfWwN}nc6l!jboFN|8-G)KIsP`j-+@0oJmKyWj`=mP*cgo$ zJbZ=)RpSSfxUorw@+#7CaW`y!98qRSz;uy%=LYKetBlYPZsxIl5K)Q{xyC$ki4^cKh{4oq>-95tiPaW?A;Evb~W{V(lH>LDavQoqvHN ze{=o)z{X!C@pmM~+S}ZXuiN<7!r%q;@urRcZ9hkQ#eARC#@JVh!)cw`v*FR_7F!ZBz`9wf0P@4>#A6Pd?4`?ZT!w|{MT&!-4cI&LaaZM z-1w7i{I;D$e>`X7Zzyu~hpc~J8-J?AA8X^k=*Dkl;}3?#5&GL>{-N?dFuB|k)Ahjwh69>4He>Ri3W%~;AK_0Bhy)3gk!a` zw~Z7j4>;}FGK44g5s2XJv5l}wor7Te+Td#1xhZ8Iq1usFI1r)h>eE+HyAFE?eQ-7J zhvR{x7cqus!Z!sMI$Yp6v@Fs89c*1vN)2BiqetlNdTe+`Z(Rn3#-nQHPt38LR zQebNw>J_DjX~*R8X~^7o9_#^eZRN4wQMDX0xSBXA0cq|o~Q;Va;- zVs?e7@ZaJqd{=yhmEah=k{dgt(vUT&SdTNo6!Mymd+B-FO_`4JT(ANmhal7SD0P~K z3kd;w;iqnexxu^OkExF!)i^Pb7(0N)DHAQ`gpp1cW5fr-@Xatb%NRts6C0g^4+GnI zmi(EB*b8q=<8X7~(X$;EYN!a-V0luIz4?5eMdCl4CLwx|REN_SDLi_M>4`u+b*w)1 ze!D*F-k0?m_IvfY^(6HXe|1FDxQleakMcmmq0l%^e6}(X)s0Q5P3w9K+obd6HK~`L%6jk?yN*r|M_>PzhgdUl=>AMzxAU-KtSmJFh&=kufoSdiD)4(f5T~>>UpG zgiB5PFnBs)U*bz#iGx&?8IDZB=d1a7kv?j5J74ZdSiBbL?TT`5N%61s>TP^_8?Sa< zisxeyfoEwVquE>+t&BAFEEdPG$9N7t9vA;?^Lz}}noxR-N8$eZMcRqJdTRvfY=sCH=|x?E*cU<6~lk!RDyLKT#0dCt*SMq9fNR!TaXypZ+2DOcuQ-f zJdi&_@>k2z=9E&=Va4f;iVQZ}DQ21k+Y2+2$$cd#2M6LyHi}td8GxEo;Qk{BnnRPv zC737oY+`I9YgAR-lQ|+CrldH+=J>OWt4T+76w<;hWO$v0v~?EJxK<&|8eX>E#0>|% z%0*BB$(x^oOHLpF%|TVU2%am=SoY{T+lTHb+RQ##XUv%*Te^8eT`hgO#?jJp)DyP{ z6t2TRMVp;%KB(MK%`hHjgRifM5)R?iTq=6RuqhRJ`GQy{6OPKW-vYH=xg9fdh(7A;4`!_3@*!y%?FF$S?BrU zJR5ocjIcRzEk>p0Ap_4xoRKny&-DA)e3}JIK4o$_WwuH&Dg>Jod2)*I>F>Z;Qwz6p^#7`{pHu8%>E;p`~!$Stks` zg&m#oSgZpl;jq479~flnNH_>k8xv?PY(0UfRxM#R#_bMlHPkzu(>V%0CvI*tz|qr; z3#Or`tZqWb*pm=#+#vfDz4Q1g4 zs==KnWW-j`mySrCq0Za5c%kL-H4a}i)hUEn_2>F(SDf}%;uZqLDJm#yr%Scxo?gWMr0alwM+fQGVjhGMn4$fPedaXtL(eavYpdW?ZM zrmSt})06umCvWbg6#qxHA-7*|LU7Nm{088o7`aX-hmJh#cNnE7|&fdeR!726MHmeDJ74MR3zQ3<=Z}rFL4D^!=pZ}cW`f;oXKfQd2>9{n&|sD zYa*#nh{^M=F}RH$a~y-g!$kB4n40`r)OKGH2*Ar*S#|$W&V@GUkyx*fh0L&ub2QZX zC@7$vH0@IL7M-p`zjvT@m&3leC~+_52lDiSXz&T>dqq1;>L?-yIV_!*0CjwhrGw@Gr$~nb_nEemww?@@_sF>zH+?K#_9H?G8 z2%#Pep(?m9-V9Ay0BfpM{xcAqW5h++jJ7}&xdwOx-MB-D-q74hc@(E`OJ+h zMI&6J##9?PLmM9r;kdxPcboAaCUaH<-k_~7MGP5`LwFI}IftLR*-~}K%R8oTZTuXR z;}7=VVy?6pKgsyh3Bfe<$vye_gXjOBjX&&5A_|YMR?E^|o2!mvQ>hkwovyiV>)>X)JKR60` zpjILObMkkZS&3nFR-(1D63M8CF_!%O6(f_wse$r$#e_d3f8T^WPg(x< z?{mxFnaIE?eYMrJN*|h5wU@>IXbgKLxocRBM|Mx|g zSb~(v{~w=i^M6z-#{bcpKhOUi@`w+rHj0}*{SGdsKK%j_ZO~i^b5k?g!odAXID@5o zgVDr^mx9AWIfknw_975U-<2Y$qj1}TDYq~22$sHdOM;EmhyR!<)mqZ*04{M(Y39Sa zq}h?h=>E2I{+Hy}@;;7kuPwiBhJn8+zsyCg{+#>*?>ln?)4Pe? zjd08o(j-*8w0T&MtA*)>{Vci%nsFHcQcr#WpLyh-IHwXDFs)h+R0MHj%n`aIZiHT` zs%wOxpvXf`Vt^>oGPp`7M4rJI!~Y$!h8SbHKfhJvKm{oT-vhqH0~}(0d7>!iFk<1+ z?K-C6h!fw1{7%0^aVJ4D=mL6E4GX?JG=p*49-PaEC~i&LudX-LM*HRQOg*&`!dFy7 z4o^}WL9*jfQcCPyns~QDt^6@lZM1?RxivV+Eo8pRTA@y9UIf1W=I zZ`r&*p`ZTp7AYj1ySOePZqH7K5Vsa6F(K&>$;Sb+kdHpDtB_J>A$Qa&1f=pmq@UhD zTDG)nos~Gg!_m^+K>6?G<7sArRUg&WYTa3&Ul#bktDoLBN_I%QI_nqN?&y#WK#2`~ zZTYx&uiEnQ+?EdccoK@Sz0obkbzS^-aeAeKPCCN zMLx=Q%E#TjLO#A*<@EkPm5=Xm>!%Ng-SY9$-l%Dv`stMp?32jH_uqz|`hEF$pU2rt zzbzk|^2KpexEPi05-t!L2_fAOgw2#M#;%g`#na&RmT++?KKnz$g-=`!hcSoawk`fa zxY%{(DGC>jMGhwyE>3aAUjg`=a~+RB|jCI9=#tnCV45E+8Zw~ zOYpbE%T6ni&H!QMrM%DWk5aH+EAESTmnZly0UX|G$jv-!Mm!gU=QhUQ#35?nQQqy> zo*$lAIZN%2PdX>~74toc&P$o47E><5W~htNf4P`|+i}RgAr-MuwZhGaV`AX(F;EL{ z6Um18(q^OG@?@I4wl_{JBqKxHp+?;nI}m8sgvaKHTEGK=*A{_M;3FaN86{^MJfX;p z8H~iq55<;YgMh=`W+g?4?2wpe3r`3&nFa<$^@SNOI_%7ZqTn5zt~fUwPRbNiM+Z=$N~_teg@{=|G@>`4e+ zQlZ=g3T34^CRLM86)|$GrACIQp{Yi`Jf=pz5Nc!$i!nY=Xp+6!S5zjC<`b03Z^33q z%spG7-03qb`*43>oGzJCqecHT8zK2m1mWhTbXsY}3+}1B>+je^I~?3QjX`-o->Wt{ z8mw#x^M<^#Lz8x>+Q9ZeJ_P4jY3~I5DIJ@5v>M!G&M&;5Z}&A?VSN#uv`y8#c^+D8KT6dq;wE8t(?;w+5gp$2paA*))<)Cl>7ZV!&8twZ>)7Ndm~5oI)gKP} zt?Rrbrsw@H&r4c#iz8eeCUa;LT}Vvg9few%d(O6KhLmG}k9aNmu;RmE-_^cueL2V) zn+NpgiA3xz7EV0N3XV1lRS-wxLUo>(62DXM?FUzAF^9`iZXc;e$3??nbi*qUco0E& zDxgMR0V0X1(T5{U)7|SLc~<`-x*GNAhhqA4Q(9MXIF)pO8Q_@t086>ZEJZ2Xfnif& zrmMH;mnTd1FO)kX5ZRwswLg4iYz&I@OR#$&6GrG4YaIND69LAKgJ*qM8|-ruC$@=E z9()%f&1qjpO&X$)ue(m0$oX48hxj(tkfqjzw$)4-bQ@_7I>7VWFrQhG5oJq5{p+4Nfsb33|;~(q! z&KnDp<8S==9$aYS$7`DNwlU3larU|vs}o{T;6^IMIbCfi4Po2c#C-TqW5f>Db|5%8 zK28cWvZSV^PAlKQ8TeY&Hd(;%ltxhZg?d^>%7_*m2mU%G2~Hr6Kk{2d1kdiwmS$h} z5;b|L175{-O?j#H6O8W7F-^4OGX=PNy2N_p3W4=y*~TcWR$o<)MQ0@+znmF#KO}y# zTkQLs`TX^70%MlI*b0!ixHWk*Qx_)hke}S~cMNVQJ2Quwwn%<_W7N1comoDI^(*Fw zWL0@VV&0*uME?z<-ulq!p(XVK#kdzD-1N|ryg)|qNY_9QNRI7Lx~CB-gbtRGzmy)C zk44tsT!W=+<-@R@?K1JKAflZfsUJ8U=;;tLqrvTYl|}=`jC7P5TaV211YEqli4w2g z69UFMiJFt89uh-VNG*4Y%2hrApu+yqs% zIupNf?V~*9)vARR7!z{0v;0b<|(G<6F2Tq3tK&N>7A8+s@1I`Hv%Ci+n?ia~tDpM*U>eFI2 z0XMdJ^-z1f_v+o2scqLPbI}S!nf@_x+~q3bvi&7^qMkByCQ!A5UcK`Mwe1?B1dV#* z&VU9#a2f)aPP|jA@Rm1S20+5Asf#i|mFS zjy0@48Wtz@giD^leHC%9802Q`W0(tARH_OWE`+>_*-=H`t5C@TY?zN`)Yh-_{GmNA zfWgqI8cdWJYY73))^WE&18Dvh2r(8iS;=N-&o7wD)lVd^V^VmTw&z9K7CrE8_)X#n z0jB@hCu;rEV4apxp!LsOtRhb%`1fXv#H4Cf#%5^KF|$2Nv)*03RlPg%)L`*+BAt_t zfLdDb_TJ#MjtNscfXcCzi>HUGJcgUXE*$^h2R7fqiZpL-|Bh3>g^qv*mG_pgve%`^ za+`>9c_D!@B35oMl-tWu?n`H~++HYmD#~pq%a!r0Pf}h#lqbaFLvp?duYw*Z*)dm` zwE9Qd>y&;!3zY`RbAMPA`glPy>1;x=eq*L8?=3W1<&z;NKYc<(;pA&g>N6_vB62&gDqL^)PW`xvVngM=OmCwqRezs(U>o@>#}P(BUTuRhw*@=2 zEQ_Eb?ZYflu3oah8|s(n)fC=wj`JrOq8pTpFoh-P2ob}z7;_pM<-%D;#}*=p>Kp=% zfv-p*N<6H1i4O=$m;B0!jW|#30e_oaIQ3AqqQ`w;3y5~PPVPq#NArYNYlDF0O4+}G z;R!C1yrBVj!};{LS!DBrMJM408udS%kX`MG0>0P{`De$4veOZk0kCHOertJgLbg;yQX-|3!D`^+BMJz3aR$!Yb}xM z_L+ez!#4t{^yqwK=5MV*ZMg(1_t7rO%-(p9RWx|CzEYkma>Z#Yt{#I3pp;)k;E}FM z`3v|C@!{sdY<-STy9rb5`YgDREZ`6n#R7HS91_pw6IzU9YB8}cID=D zi*+R+KN5+y`S7||qSF!*0+q4p1`ET;1vnr5L-VcOl;4?eiKwTTZ@*3^=E>&Um#C?j zZ<~l_%{Qg2jo_|pjdaM-ta$h|yinyGzsAmHM?mtDmpJ1SxA8(|%UP!zsxs8?bQg&0QFSrmw9FE$&AAwnwvb)5$$*uN?g?k|!D2m9w za7$}87w#6Xef@bfatHX^O1RcUnm~Hs%C?XBmoDQPVoPWg0LDBN%f}P|RxD*cB?}<{ z97*FjeDWK+V>mup*2|qmS-V~nUeiQf1Jw8hOsroxUnu>a$~Y|WVB0cCxi9q2Lfmpk zL$uzgkWkR$ekGC}0$GHT@2C+g7;#knBLhFizK5C-&*(jejD0hj!c1-DsdK#?G>}&m zK&=}}e*7I=-iuXU)f$RBt9z#y<;)?J+(488o9W3Jke^^Hke}%bjcW{s1`(kSd3i2e|pOr zr1EO0@WeogTd#egfAfVP;XTIc2gSh6{Q=mTz(hIZ*l0~bR(ndZMcQ3i7{YzVh!-eo zRv9Uf=@Eh+HXlmaC#+HMgWJH#5~g?GJ=lZxvxY!L)?ih7G z79DV4`14@%6rDp$7#JssyT1VLxidD|=E~TCS9TJUEoVNqxD}k4#!ac5mxI?yG13^9 z%AWtT_1OU1OtU_*?&)fGj~!p#)jv=E%iTYr(G z3Rdd_E{mZSK{y+z`svh*`$wWmsu(dGy1gYw%<{M5J@LU|a=hSOHE4SZImAX* zD!8m3f>`=;U*NY>Hj2zkmytpp+z-8Pytn-*c+BKX>;&6L0v%m|xk!JcP>VZ`2u6(i z%e6|(_Do!501b6M1ORbI9OAr+v!=ngsH?*G`k+uQoQA;?d*Yq=2f-z|Wnk1_2BAyCg^ zI{1{pMWF4gjKe>0qKTUv_?RI;<#bEo<4UeNS~>S1e0)+~F#)OkD&sE*2a9e&2xt*$ zJOc*p(t8xOME^{u-y%Ncz6H}dAc~`b21rjSS&6hg@ z@^N>va!4~iZG?<|Exi9Pv;@_d+nzb|E#E!iJH^Y{(Ov1s5(%FiM(&a{?nW%$hIYlH^f>Lur+wrb_-Qn?)%F*fx+a6{4xK=XIpy zrIY9h(O7gzCM0tyLh^nf52Ri5XogFZIPo%{t1*-~oF9VR38|r{l!9s}UBT(6btTyPE$9c6Fmx@472H%h^;dAoQU!&pYkOhe*yw1A+N@|OW zNdxEtXekP(V|nU`A>l{!7|{VC;r9u_g>Qj49rRl)=vVl~AL~!t|_T(5#B)#rKs0ws74!g7>E@7mf z*o|y?Jybo!Yhc9aAh$eJ8J?RT33oA+U}i4P;5cX~01RRB&tP|xc1* zajroFsm%$1+IqpaOewz*KpbFas<*G0dk2(Ys3o_eov^a*r^g2F#!Lxh`*dv*H(t7@ zeUa|%=#8!v{o`x9%By|m#g*m#_2#&@`)H!Sk2mKa3`wF(B0KTXnD~$Cz(0%l$pRm; zV3IdDB`pOzr$nmJ12IzYamcZ1GQc8*)VqV1<^UPQID&y{(~=`a00~;Db_{YmL%}hr4u- zxyUmAPRt)#?o5nQdrVoU|D>AJzz{q zVw8^iCE*Y9#Wv%CvBKCTo6cp>Zaea_1 zB6;pw_BX_l?hRJpE>%bm2~tycJ@Aa)_{W??_RyN!AM~BmNXUjwi?U9+Hh(Rn#Gr@rl_T`I~U3P_S`uMaXr7Q zwF^Q&7u)(dTtKQc%O3{dZL&b_aqvyE{7H_D3wn&(6bT7(s{-JBeto$< zB_cQ^b`Ct-uy3Pw=x1a5%~S4hks(84$_@`6Nkea^p%h~%W9~G?!44=Inw8#Zq-^kx zTQe5(BWyhf_u##Q;zrpg-w<>S3buxUBwGwTv^0NMtjN74jsG41F40r>dBNHE?m*Mfw%Sc!36+L?;>sSD%b+PIe*e|H1ljym$;f z%a`)$2R>Da%CP5M)3=s>UYuuvYvJN&xS`*eDK6dl7*Zo5#~O)!xfXB3X^=5NoaiqV zViK;>!7;8=H(9BX)FH@v%DivpbXfLbrGYuwL5U4 zD||UW1$KF>%9#!SaOlU{!Km>O4iQX|pm42#W_umPEa)9P?08KHLl^=V!QEUidJyrJ z7%-_S7gHEI*7$=tc5IPeQVc0}1O;x4*8U=r)+S@fo7}L1qgO>ArsxKN?I)albIZvR zg`w+bZ?S6*7QrA=D`(x%6i#dzO{Gt*;eeXLF&awYD(rkKV4ewUP^kS;U6};~J_x$_ z_N-cTad|e{;B1%-B$aM_cO`8frK)$izH+#ZZ zCSjRwSUY3BgfW0J$c$I*g%8$2Ml7O4pcZ0%4b4Lnpl?a>e3%R5SP%+KMG=HTPDK%l zLRESmkb^I#xT+Lx!W{fU413`i?o^$D!OpUa5Gq3y!Qd7b#N}ISihDkU#yG*J6z=S+ zH^r(2da9jqJEO8ILUCamhq8;gHnmO0O28 zelom>JB(2BhYy2XQUoa_Klu>S$L0HP`F_7l4`=#YnLb3E%`$yg2ENwxm0M6sb78e zYFuuQnxjSE7(J_wq9jXxv*I(T*xrc6WJ1)KemXEiskg(YK-CfK5Z6P3Gb&|Yk>Tnk zX$JfcxgQj1&^NLzoW}=r%8Pr*l}z>P%ucN3GHTR4WsrAql&(dEeS znc>2oUS#-)NW(Kh^Hz)?T z9!_}^%(H8y{7e84vg0!R2=f-l`4rB=r#{eWt2JIIF0-z&*}zhqoVPs!gG6z@T6&a0 zgK$!8vX=ZcrAO%_VzQP3E-bg6=48I9kBfCi43SdiMQO2N`YTGoiZ)Ly%5g)L)d3`j zK#vfLg<+KE&~nI7AEO{FnNftNgrZ;po(i=Sp2{Da;zeGdl_z)t=33xAG}n4$7e%SW zK!-3FM^EXA`S|g-fVLKAMG&THx=b7=Lgv>G+<{Mo$ri*h#8#tE=#R!{ayD)i3yG+F zppYsR&}b$z(Y={iJSz{CmLgxsSEO`LX;eyB9BE{Z>^px&IK9gZmbtoL;ER?hQH#F98Qc z4w0t(6vBvrar)uxarXJdm?zX)Je0pTO;(px?pA3Wo*yq>pdd&X59?IB(uZc^YpgwH zvF1_Xm{IK0ZUaXzvPBAQl^A^`f0I+FC|Hkfzmry|(!~U`EOjT@QbITdlMb#yD=bN1 zJL(5Qd2l=>fu=a-$EV3_XKsu}cOcR50dQu$n?dtkiHygoBmbXo&!nKo?}VM66M{`C}<_97h-@ddycB%sGiH7qdV<6 zy274g;x$lBg|eR$SaD~|XVI3U1uea<5a-HMiDI8CXK(@1lT~yM6qM*}X~>2${||GkqPm+o2O3@z%`#%!|vvs=dg6p*w$O zYUaNHzsQ;!G!FkjWX&Ul_K`WRw|CF@g z925v`1!Z%$a=>YiV8$a*O|_gp4J>z@xu-tdj`A3cL@ThRD_qER4V2uuK^Ez>`6Wd{fZA2O{S03;*K;Nbr5uEXJH-$9x zASGW>WqO4i#u2C%-{S>pC*S!*Rjbqx^mz~+(LZz05j=uLM+jGVeVn+6FlWC~Zr~j< zT_{*S%IZIm=Y&`ygCBI|Kq(Ktfqx4-eH+P$$s4#1HTMNVE!i-r;-Q~@$#yKl>;fqp zcE&uQRPaYdL-cDnS*}3Xj(hdfgkY$7b=>Al!SE}=f5g&e3WqR8rEK`t1&|GIz*>R% zKt&ex%f(xvfztMZs{HrhWH`;d$omkq1TAuSB!tGUFdiu6;8v0Lu0m5?{72{|`{+rT zu-rf$5M3?Q85X4SD(`<^jE})!VZR*MfEbb~D0a)293ymtPT7$fN>qtjGgf3ot%}U< z8mma6sK_!_p0gNy65A64~-O#9KHgK6WQw8Y!C+F@2+SX5qN z+K=X-EFp7T3e1z+vz<<~3Uo;WqSML zG$v;dZ!qoKV|e=MoiRBb8@I>M3+zsdHMRc(dxO5PPNmWbvlDZ*B!y3M_f{6$7IZ=W zLLk<_5yZB@oTR6nCwB!teT)Jxmc#&f7Y}&HDB=51QP>X_>3_xUU^#XN1MmWOp@Vkt zY?_36(G2blCVV0H207u2ffX|e1>=%C17+qJcrSMcN;$*Q;6rnVpp+lRT+{}GrE;Ti z$k2MCr$VX!X&7sYQhp9T!4X5IK6n{i9BOYBc)IN={Z(!i9uuhf9nlI1+5JvQ$ZkNB zR#V8<2X++n`J>UXhbR<}o*3VR+QwcrK9*5o*dk>xDgV|SE1K|>` zNBfN94X_=4(%hKPK;6n4b&I_1)9=Kx**8=67RBNa5=`+Y* z%U4lT>{3p>1D8j+FA}g1gGx$*Q0H&{(?^mJHVPPo{O5QaE=>qwFD8B_4=jP=;WEj2# zX)y0HP#HVV$v?TxtGx(MfPY&Uk^cDoU&PV}4h2C2N`2R!; z-vzR~n6EzVlOk=Iu?{j;k+$6nLvtK|cTY%2N>Co^1bNM?Bg(|R?S1-4IdB(lht-Eq zE2>sze+Gi_hLW0cP;t|-QdY^if*rm$G$ zmGxz?U=KW|u*sJ$Qw7px>fLo=-j@PR!pryxTpOP=6bfCHM=B4mn_nLuVwu&-yVaFD z8o)_A2cyy2t6^0QC7<|AY=@}<$naJbWMv|w1SZm$ASH&EFhS+Sxmc{a#h0-t4?t6s z5qL22yp?QG2U?_z*+nM60Zdy09u!J#b~9I(@d#OW0?uBY;p}zT_;gno!pm|Pgkq7a z;%v?xje}`DUtt|#Y;YICl)zov8~S(w%J#xhg!PNAFn0ZotoVNU_Q49i)oH6Zh`I|f z(zs}<(0|e%UMpJHX(cIRPddycV7jLlRa4IpPY6?*ISHUVDwsubtIxSvhCTvzabgKU zd2qM?yHj~<%Hu$pyPh50@%{d&*YNPf)-n5qIQlLY<`E}+`Yq8yZLg# zQ9FM>zJxCy_?%b!Mb*|A^_G+5e^jdq>T>}A;cY)Z0W<`ikI*bN_lAZ(+zI}GN4rc+ zmEHt_WHDkm=O7J$q=9@qx~*}-#B)8t=q3KvLaPj?x+8Ma8*{4LgySr%IGJc-$3A+~ z8i{AT0c8-(OY#C2Vmw$uj0b->9s?f{<00QZ$o-$HU5~L4yLT&N+aJr)Kf@&N*0e%M zhG`x|M%RZRmNV|}$wPp;w$MlUvJl`qskE@X!rzwO6t~PN&~S@*=c7s))m_nwg0?j# zLI7@`$*+qwBq4&Z54~uGh9mA}^c)yBl~?be6J7vm*Bd_x@lhfLqLm+6Y!te0s%kb;?G3iv$pNPkUxO)>*N=C=W;k#LV zADoD?Q|GO)d>(BQ@%Z|<8XmVxc@5&E`m4|7$SX``DF z`Z7&)tQsEx$1w-v=a&!WP~{k?-YBJCDC^gDXpc|Zr3QEH7hcWq+{ssND%$ zERsskqgWDP+mX{Z)VznP!Tb{T#-EZSoQ|gyR_Q^il3`1PULBIw=@0^?G#Hmp=jIE) zP=nFTab47pp`;T7;cI(>$}_nhD``nbl{DYcG^JV65v7^$NE$AJNK&CQ+wH~u4|gJj z4~W|f(b3-=i8(&KDFS~s#W5Bl2UQ35`z}0zbNu5Ids^}Sbws7tI^)7B|4|H+{|FXt zKfGa)f+XZWn!!{C%kbtz1M6W57)oBaTC5_qrnZ=2aJ$offlvxpT|~s3b~-u+t3Z4w zPiamz=IG<{r$L{HUbK*1q^V@FyM;Bs5F{dxI)>LJAG8NkUm)1%FR+I5LG1yC!un=- zL;kFKs8ofqFa*^MxIF@=fT^|br(LqWk9Pg`ltO(XxXv1{K3H;{JFw!C>-0|vb}L2L zDC*0}V)pYf@JoS~RO;a;dhg~THPNH>Zyri2ggB9qvwuQbBKBu!#NZ0FTTrPmltkSU zrA<@(**j#_IQ}#ce#bU{>PJa+#*<`Du<0$d=03cAz?p>38TJ*J{@8DT`!qVZ->bYi zIO+$Jlh>bp7v|*$9(}OnI@l|lTnGMydJnRjf8qoU?B)R3%`$o+bj}d$W_vAmBa8eN za6s1Zor0s(Lp^?}0?7r5NL{ zhhsFgR+W3}8SiclM?KmW?(saqX=w@C@C{1YR-p34FMC0+FQbt&q<#T|0YperG;fH{oA$8=SLxv1-?MTtt~PlLfQ9S1W$E;T%;$hh~F4@;l}tf;aE8p zWFY*logS6x)WV-GJSuM>oIckpOrL8C-$sx1^%Dy8q7C6I@Z^Ifus3*ReP#B!K=yn< z!iqF1$~{X7HAC8~_e_HZakB^4IPpYLl5BDG6K%7DW*bK<+HMx)dZ<8aUFwPUZte{( zt;eo-rvQC%f_?Ft-4{yvG4^UjI2~+`^iIoVCuJ%#s37qnU{GxJyq@&(?PDf&0^KA# zwuFuFAs&uWE{;hgnZ~c5CcUBsN|`XVHHmh2m=?{b+Cr|6YGRd<@V+3@?>*Xbb5VS- zg`m-CAQc#zEq&vw#oX1QS zx{+qUs-+vT&trxOy~vOGae9$-RK%xkH9D-N%gm%Ij)6~)nu_O+BqLJV$)PTDLiemFySwAwY<%TnHJgzy{f<@1^QghF;QWqnY^pI9rain2IxIqGb5zJyGA{B&EI|`-P5XRb8 zl{cD0sGPv~2&m{S!?39dC9nRM7@+-Cg*9D7|7Ksi^Ydu9NcQ#XE@-oDfOe43IWA~u zH=xZVbes#i@e4qI;!Fx94{||$@ZSt?l+Y_&&@qI*C!rZGXdBk~2?;&=TJ09S%5Nu2 z=vOZ24t_gaLO*sv%Lwfuq4QkOorJcP&>1dhBSPy-=qMNTf-QjVhVBQw(aQyWj(t@n zq3vDJx4#AS6$x$Zg3jIws4k)3zgoLDdVd4x-4eRS1x@3({UvmP3;N!dfOeA5M_kaW z`Ry4J>UTkF*rH#OMSF+1pjWf6zL3zaF6ak@E|So*T+o4}x~C-c_$#sY&PUIOp$uaO z@3vo?WImi-c#Hg~$_33~ma2rlVnd%omXUtQZ?65$%zVS4i7x0yk|2Xj0)1rqvC7j!M5!k`DcAs6&TwikhrSm)ba(4Ax=-(lScw66>L2&ge34P23-Lw%@l{6dFtDoi6CB9R2UbrZ&0A1-*+ouaVFW zF6d$QF(#^Uv6w1iJwpj!y)kA^OAfi|rLs53xwU7(zG0JQ|@ zJ{M>|x`&NLOXsZ(N8|J%5d6A&VLC=#7)lt#&n7P6-D|z z;v_BbVWIZDr}BGwjF#aE9`71}2{l8aW&hPt6zOjXy(p?874oIl z5n4cOEo5A@`FTqDXgovFHy`$K#_bWNu~XMeU{r55HI#j`u(Q8H&Fz(A`(ra|Lw>{by{UUZCYhM3Vh2da~AfzG|KEQV#Pb@B=ySg*k#hXRJf>% z$xx?}X5iA8f##wZogiGscSiDVl7yXaIGsHrXrz|yFzSU0~v-pF&$in zXx1k`PiP;{-#psSU>!Js`_{?g{7t;UmWv;*PA4GB}vCL=1n9?nZ~@?Oq<5MucOwMF>lpyq)lVq zTz=a_WS@KkG8D$VAi+8UJ)cD13H|wcdXSHt&`=u-o2qM-Lrdw5haQI|m1#&$doOvm z9Wx~VwQHa^4yD>5PK5UzaOm8GK$kGqV;sN!D%QEP3&06u<|2Ow#9HefKpLM~tZS+o z>OIWz6z8>@-yk%rIKCc(J3@G}Cr+3c`f>+KyA$g{k&XiMQUbl;JBsDbsAWJB7#O3R zRVWKt2p738jUL-YhR8^q#UkGbjF~pW9z^lsGzp5M1kXbLi!RKtXL0y3XrHLMXK}H` z@U#2k=?h%$9t@4JdZQe7b%`h%9vwKq=~b+1xKdW{Yn!jg&=YmIoq4|zL`AnVu&T&g zlBjxPl(FJ1w^qCh#Hgp<)`vu8`-**k9pYWh!gueIOr}WEcoZ+gV`Tapz8@viLzx~X z)BB0zlj&QoK{`*S8(xcaXQU+o#mQ^MSk!SY-V=1w3tG0Gh^_!DAgw2cwpSbcwo&yP z+6j89<~Zo%K~D@u2fZoi=@-~afSwSJ4vq<+ryisyu7CeQi-lu?bQzHJ1jmFJJx!cq zE`fdr9o;6x#$Xj_35Ta3q76m|G783f+KFs06U&8kR6tP_G3z9rURZRc<6a_(eK3)`vS z)Cnd7MyoU#lLYhro04FPFlJ7I;gJiv;Vm_uU_QWDM`m(OBmtOwXe0^1(6zha%lW6p*}$X*v}Mf{CLS#!clY`ShtI89_Q8oTtG4q$b)Bo~=At zzyb+FPxM_(WMB9}8s{YBf1Xbxs-EM#JAQpTrUbW%_3f?<%I1mw?M3=%q?XkSY%0|D zNKcq$h+7;daLrmE2+sf3Nd&H^Oltd^L*SZeEpVS~17+9?+-k8Rn9|nG?2+GG;Eqd5 zvlqBMl(rt*YUdd~TVz5bkekpc4rzPJ?e}5|~`;(I9L~y7Yuj!AR zeiB7{Rd;lR9iLeYu&97=umYtmB=Qps!+Hz~bS{C|P58}CiW5`xQy^nU4dbPZM_ zBP=L*lhY5(qfffOHD*J@$XUoU9eKjk0eM#SY{Op|V)6rgr}Y6c7a}Z5zr&yt$H&hn zOr~c*axn&78u+sedg3Ow&SKCl|HY?-@CG@HVk`P0JfkZb^LWm&qMtR$WYFJ|{>^!` zWFXQegKor8V4*raSUn}MB;;B&EErkT|?B+s9fR%p#cDP#Kt9Yt>XIt|O5-#UA3{jSlq$ik zj~Zd{IhjrNRmd@daGEuu?{u~=9j0gh37cD|0MS^G zPwE~|Jbm5=(h>qh0cp~t&vQv{CVk$;_a=SrCheK@Ih8mjpZ~cZ(k6Y*?T>UEebPR| z84n2oLg8cbTp?__g17{2AmTL60WqlhTjB@NDPRF`^Bwfwk)c0zeIDRG%@2dWIHc}% zAWf;Pi44G0cpi0f+D;2=ep=Q0&&Rmb>RQAQa0ZY-3;{a&P8Ig7V&d279VPwU%`KQd z0rE4aorf$7Q_n;1k@$_t@Ng4|Naoz)Pwn-jwmfdGFG7^nE%|!^I^*Q>_q{KJ1{{vT zb;#c_$6&|Wa)Vbp4!b7kSRs3VVZ618D*+76QWw#gKq{aD-7qpVo2+YoT^dGc>A zD6>Bk*;rEd?=tajce^IZ7SL0SiGO$xCrLpT_GATFe_&Jg_BzKjNgnbNpAy0p@SIbG zn>4hzN00a^G8B{)(Lhpdi;E{n;} z(wm&}^Kq%=h9|kya+?avZ1tZcm5Di^t=jo82YiTN*-5F0R+_{IcUn{cY=ZEiRrh{e8;)tZ}Vbhq5e9ZBW`Lbzd`*hE#>K?5K~L3^Zj5!f5|VBT1+iv2ER46l(~J7 zHno%|Q4z)Q6VOwJ2)^OXKrL>1LDU_KFSlY!nK(|;uK|-f#(+Whf`}HS&r3?c0arrg zOzZweo}l~%e4(D2v#n&XPakw7-J7$@|3jhnxhJ?Q(f@4`9N0YYLMjYhyUY_jcJ74L z9vLygztR^P2Nn)-j~9CPY3QxWOGDn6zj+rvF_RE#r5fb4NOwpK7!Gl{IsF*^RIIBRO-XeaoREfglu;me7^2>b5F@5 zy3i!H-B>AR8=q6x2)6>+Y6gSA+@WgMaJ788=xI}&I*tc4wAyU?6RTxMn(gkD!BC12 zY%+zTMQ|#d3g=c#|0ywLY2Z=_SL^UKWK;f7xVrOZAzaC~4{jG(Q*l7Qi#V+w%)^Rc z3s`GYef*Yqrhpmz1g2q3$eMCH>k7AwSm=jS6|}~!;`FgL0nO)0MsNmZtaAnVS#AQx zUKziFv`{HzL74%OuqZPo683Y~HUi98ZP(n!*;0tbu23Alotj8kz0z6JJD!y_{p+uy zrm=&SVmxEW`{u;g^v>R>sSb9LjcyCC7tKjN124nNWqLT@%e_wWCR8^3Z~6Wn;yfqQ zy9C2es zE~Mk-r+9uh_8HOe7{9~eCI&FZ?|ZNkyuzhrl>R>}PS z9J`w`{J&y%sW-dW-K&@u#*A{XS>$?k5v z$yM9qz>L*)+sHq|?zSv*)^zfdvZg0tcZ0IyYdWQ;$?kfQy_oDS3ok8p_gB6*+1*}L z)?#NZ(`0w~ z%u}#C!SCKL1ScCFF8%hf=>_=&Zy+$+IJSQp>>?luA``|~Q}vk@$ik<0+w8+dIIs=52gdO~ zG^IgJDGvV>xVjc((Nu=6qp%;V%H!JQ1%7w>>_C$o;(N z2<}h&fe^smFHz%`*(gj~f*=l_g=u)}S;T+E!QdYF!*qG)c+?YJjuV6W?z$`Gbeyx= z7S6?kru+i6G&Y=;#kXa0hXm3I>~Z*T^0KjAXY56yhc=xRwP!ninOrtkGGFU z*#|G9eTmBbPh!b}fl*I)E&b_u-&zr_O7J;J@gR^~_#vR9;wc!El<*8Leen{IsXs8i zK*#R1=%E<37#_aKdXCXUvAB#85jbJwzpFCR)M2_1IM1t3O;PoU@QZPpGz6Nc(Y3}N zocY3Tq0?vH(#0b%@cd8t#}Z%Y&WF9hU%N~^%{eTQCPg7%R*h#NJ3~0_ag6F?j3B;r zh2Rx)-an7ZJu8^M>ABx?zwq1_(ORH|+2jpP8wRQ1=L$}1;k^fb!ny9z(Z&_HzU z(Zq?3AyYx+qAC$3cntkWXCA1RH5D;1hjxWB0*A&%2hhCrWvK5zgGWw`I}L=Gn2?k( zC0Pxs(L~Xj8`VYDyTMm(8L_K6K!DLidedsSA%+cZ-_A zbZvQJpenLUJT(msq^E;YMmOEyv7SnK8WQLT?4s0$;re(eJvJXj`R7L7q_P2j*8Wh& z>_*TFj|fEqUu^h6kHJO`vF1uo@IJDM3^#WPoj$km(l1dPam(NBQ2#@3l!^YQ^X`5i zP+@d4f_nRM$L9t5;Et0TWZ=aef1@yF=hui@P0A2sYOLCJ7`<2pJsy$JeV8vsV2Dum zi8s2=h%P=2dOW*S>(U;p{to}%d+3tawGeR~oi4sTO&8yy6unz%dDMTd2$ML65oUX) z7wH8x*v9VnPZKV_0weG($m~u~T5 zl+(|$axZ*@@`V4~(YpP4uM^$E!}fxjHnnCp9eT;B7>-6b^?oRwdeNyR3BJU=Mgey3 zasIrYBkT#Th}h>G;F~c-3hldAo>&dHI%#l-Ha((QX$MKzQK!;cwzZrd-WTDK2W-t1yJLK>iQpT zmu%r3*-YxU#P~@6NUby6BmHpX#w?N!l0N*#JS5MchvZ%;d@6)%ka0SQ2wT_%zQp;Y zCv>n=WdZ_@8`~kVu^j|@Hb&nh+|P&w_D-L1rF;;_%k(&l*=GR=|48^p4}|*{xFlBt z;bOigoCSP+V8d{0@!fFPzr@@m?e*01&-Mpvjc5IBvGH6-LNxP5Ad+gOeC6+r=X^Py zlut08Ty{=2o+tB{%s|T_+I|wt!5|#E4cSn6EeI6D4#8(Qs!#KipTD9`8;$pq4vjlQ}2% zr~GHkpYo~y0e{LzZ}=U5N};R$WB!yKK-f-y$_3MF`%_-^l_28Z@Ta7$@~Qe$E(Y!& z@~7O}_*DEUD}nVp{*=!U#f~%85EY?6<+i!;{*?QuViEq7&4B@anu;I#Q{ws?%5HHC zD3tvEIl_?N;ZK=15O3tQ#rgAo)1MNTrQwL&_NT0Xu!Z&O?hCoSY3lT+ytWllO@B%( z@`7HYMIkl42vPzpxeG!X9V$Hw!6gxj0RDzEPB4Y&6tMsEQZPTGAmmN-z@j41$b*0@ z;coyJfYu&pR*`~VC3W~7NV$QO>6LTBFX5>mEa-q7T2H4 zdD1Th5wJzv2h1SxKHSBuaJWC>fyj5|XIiOGT3V^L*aJxD%(h6?krS@nF)@fIa%htws?1lJB<7$_?^#wpb zmC)rbXq3=5B=lt$^mW$xVF}e-(3}?m9WSAGx}alT0d%m07P+8j5ZXmTJGh`@32iB% z&0NsOS*v3>j6i#TlCfeP{!Z^a3+UGpy3qyg$i7-Eq3^k%`L6-`oP<8%g0^}d(4d4) zc0o6>H%3e7a2NF1=K$?3p*>vCUW8sKp>18z9fUTK(E2XuOt$EUWYHVD$J8GE9qg;M z5?bYg_F+H2DWR{ppgY+cf0Iz%hB_TC{q}3q74iF5@zD+PqaiM6HM7i<(5^N#=5U#1 zzcce&#BM!Je$l`M9YyH=B++=|o>=2ehs&)+aJc+TLRZ;PGw1pI_H7CMmkWC2X+Zxj zp%1#Cd-&}n2_55tzVR}k*GlNsE@)2lYC_Bfy`B=ln!^nUindYH7lUmr6aEql8_ zcmLgVw7kRxT1OBaEt|POGcj1Eqh*)B$6`>`)_*{sRy1G6ClY76rV`JgLG?F*f~--= zS>chKU{L0@oQPlSQt?)q-H$JAQ|$#Fag&f|F{BV6!FU2U5@F+75osg$aOtSe4&IIAro)#MBeze$ZEb%d0{^eEK|lqv(Y!Dk6zF<3KNx_Xk<0-KL-FC zqpma(O!U9WJLaQ@mcplCB#6hOeNA)0Lre1l5G>(RP(+OxeG2|L19~zX{&WlH60c4l zm9~J$bAF|q5lH#1X+EfwC*cLOt_yHRZ7lqO!dvPN`YFgWFQvSRfYSl9?gMYqXX!C% zKFBMoun%8{wse%YaU%Fj>~^T%xI3VOupAXpIS~{J-|mBc(75J1Zlj7iIyIxG9@ccL zu*5XOnhsxxc-PpmvK_QH5W$#x(EK90Hj+nu6mNDS4uUkB@8K3<{C)Ld$hi!yb9Y7f zTy9oeXrLJ59-tA0sNrKgKc-o_eodM@&^EnH@9ljQfD~v<&C8u|c?>RgzsR!7IpXC| z*p3o^s0+UrHlJo-Q#K_ZPBy9cPZvYkNAq=+7oa%Ls0Oe-p%y#O5nChkE{6OIOzZZ^ z?QynZdJXnO9W8sD2~3;zIQuR{+O)?>A%1tNbYN`Dw6Mp4vnnzSpU?NTJP1w2%gOXF z@N*FkFSON`3V27jQO?~XoV#b6b9eZ7PD_|mAHm#Z(00e%l@5g92Qb7aso<401#%Lk z_%!%aNRL+NC)R_RQeo%QEia2NEw@&s{Cd!~)3sIJIno!T&S`kgG&v1(!<~U=ncBcr zY`^U)M%Q_38lHwUK8?*n?kh11!BKuRE(6&k%j<+sf;fX!%Ig7NQg2-zg-Uq?QL1?d z$%A-+NeQN5FHEIVzro{``6L!|77oFubT2bLhod7-7XIWc94zuQk0(SJa(fD@q0Vj0 zDcEI>3{oC@LvN9mD>?aS%TiJi9s**mg~OTmOEqU+Nd@u3mx&2l$Gs=f{P>wCE#jU4 zWg-t)7*FfP?sd+*Q}4C$v?{fF4aXQ5y0j88>r~B`Aw$b!*2T$q^XU-?7Ell=>>)KBUwmGKg{F?{5D&@zwkVyFJwAi zyAqppwb#oGsl2APz&G+<8tSGLXp>-}R*ksB3NA7X;4r2*EzHAGpMD3eD6u#(l!P-% z0A>ZE1o+^_fLW29GKI6^G%QYk5%eidC^0J#(W(-spGR=5VRJyBKM5YewT40+4G#!# z&FG;@LcbkNw++U6tKn79w!KzUE-n7`YY0@dXa1Da<&xS21E>D94Cr;GxA?(*US>M@( z+6ZPp0Gahnu?~&mPVj^m5)7$p#0j3Tp~MN^VXvO_vx<0~`gqjAgDf2Zx6eaBZJaqD z=kZ#z6`*l#ZzMxt!X}UbxJmpq%Q->q0&}D zE=a%JYfcSB+AainVrFazF8L&Q6t@K4DP~4?pO%~%&Ht_@9*n}jG5KIykn$u+){98i zcggf)d_O{_cksP9hX^HK%e0IMoBR`Tx=Ebd+aTRhrW&2xy8&j%a{<0Okl06zU@ ztO-+7ib8i~fd>t3$OxAW(M86@WjM0ahbnx5km&o2TjUG)M)oj)!2{6;l zlZ%sb|2?P%kTDZ@0jqt4Z4!vQv}7Un?+HpF4#_X=@;oP1!E#LUMD!z;98lgKV+7op zt!%7&K;kCU$&SSJf{ik(2|NfFGb)l4yOJ@uqMfmP2}g`q8uTR%cK|KJ(G{|ip4Wxv z=cqXyULEshsq=fxy2uBxLrr6sNZ}5_>gRQLO``4~u$cKyW*)i)69{$U1VUe*>I6EI zrmWJ~NYpx%`t}5C0<{yqB$z;-1}i@a9>D}El}k(cnPO>q0GDftTeaRi2gGiAOiv== zkCBsL2;YyA>3MuVOr~2h?UU*M5XbbGZr>W|&hq_ArrRTJO`zKA3C=^mkQ*;{b}_6C za2v9oC%ix^ch)Q2DIH@)yr|$3FePwr8OX-+iVai;(6S}Q=TiK7U*w#Bt5DA*F$f*@8*nt#z( zz}htZp1AglJ#m!#ry%n`Bd#44W}NZj+8!h8>;Fbvdr9PJifg>JrcP|>xXDV^=;#@_yO(%Hs;hzW#H5ab9H z&c=^7ClG}*Qn^z&^UE2u_zW?F%q>yJmZoraTPqO#I5`12oQ?D?GCh)M^LojzI5GOk z_rIKlbWfSSo!>ItELODH$WYufaWdfylZx|6QuptlOO3nLc_x(>JCka_GpR@)aUj*g zI*{_W6^BvDIE;$4tm`By((-o>e<~BvJMo7tmC?+3j2L*nG6-C;Khf3Z)oTnTy7T={O<^53m| zlo0Ke&mk|S8=ri@l@BYNSnUQtfGmbv-hejvh3j%2PMg?!^SaAT7`b zB9zAf0!l%J6N6er+w!pa{%h@%oTRN@$9wPh{XT!voU_h;ueH}&d+oK?#w0hSZW>K^ zL+ZAifoDVN{*2&;)O{Ikk4xRrl-H2D{}_a4L+aiz7|%lL#^;yeuLdTe^<8>@yp_Cu z!vNF4OXxK6nO4;=X(TDxV3B%EhLBi3j53b0?sZxvyoLE9a)ddd*;YC7JfuZV3m2`=E@}w6>qFua<#F6Mx zk)J->W$kgC+!RxN_imo*Ru*!`RNv2JKe0#smMrs$c~1K6s{nwmf3$u(?YE|W3%@Sp z+fVv!5b`8m%umyAakE3$E1IBieM6pw@q3l@Ju7M1cqn>KG8D5(uf+%8=oj}=fn6k8->(kqL7&W`DIKY3{h3$)8gE5syimGbip)Dy2&Z@^KR2L z2V|U3j?+h?21VTD^sgz$$Js}eSC>MzkNoXDGy$kPQe+rpZL)Ig5~6)yADX6p63X$j z12LtHX?iP7FJqcI2yRT%5W$UUdWxo_p&UO)X^d%ldVf3{)AUt(PF9YSdOi;Rz_SU4 z`8~(Md(;O=60-t78+Q|(qH8lJX_tP64p}B>eLlOGx*Wot2g2e3mR8amVba+t`81Cz z=}ouAV$lr!>o-a7EQZ`8MkAb^;dh=Lw}#LpfUhwOB5*v1#+4MzC~_0r3Isz-Fi|6|X^a|qCY7*mg9SELl+bNbYeVRy$FR1i8>~lT_H++C z7GKvl&%_N15-UtHFWEBy*n0enuZIqrjplo@kkHfSJu zE9-j=UUPq)mHXK3WucM64P9 z(htwS5YNX54&tY^#J%)hDF{CFQcUn8D}^u_b#cs67={iM))%K7@<*ge4+ zTp13qNsDsa(w4Fwr|wNs?#<@|_CCjEN!!Bf@v+#&1eAkRVLcwdvR$ml&4c#BP#oVr z*?(7@;Kh18VJL1fw@-fTdi)sZ47$*e--vM^njQeK2E?bM&46VD(Yo zrSVSNCwpF_i9maoKCyk0nuIigl}JLLdC7hyQ6sO^N~vuV`fa4?QoeSQQ5{;2i2(wTaWL!2+N{@plllsI36`Bmss zHW{-@nYxOC4`{Y;g@|iu6?Y`kMTpp?Y?hY1OHlE)Fb6se3uGDC1&KN0Yf_iI|xLmkF`4KgO|$sH_*=xjr$elMsV1wIE^kT8qA zfimd~Egk=-J@KR&NJsAsRa<&uEI5hqA?R`j{RdnKj;IMjGF%8q(>`M(&Ap%MLa>y} zG^XCnW|}`JjGIPc2(AM0>34QD90NFk38bVHM(O;U;1sRi)kr5);x{4n$4yB26wo$t zUgBT!-@f>x4^gD8F7;ZZr2B#wz{U=hM;rOwz7H{}M00YdM43|ro4p$Bj?kQ(A52mh&VoV&jfuGXHHOVjLSw?2#?H^*Z$qzno|3;oPxEvL;Bo!Xj^||k z(8BMfVM9NxZQ`l=IkRFzKcw&@-!oOM$eoBoOB<>Gvb#@FRRWWVx!S4!qW*s}SC2eN zWp;?KAPF=ZD3nPND_*#u zE7g;bysB56>W5sEO!ZwA${!&6f!wjUV-I)?JNEo-26Z<}NJ$cNNz{HXbwL|EH-Z0Z|Wk-Ym3#ZZn(>LPrV6`2?O|LF( zJi_sGod3uN<*~nl5d7~u-?B#2-34FJMqjtJ-m`ydkGU(p@SkVi)~jV)K@CH!X2jdd z#~p63@FXBhO34+;JGxgy?!gz+%;m+KOF2YGNrmJ^lpc>UqxapyeTC$`2&u}&j?|E3 z{~_`jiqB}F(3*B_+SyeCjmgHY=mwtEgIIE5ud3U1e|^zNVPF7DGJ5 z?Ns1Wi4(~^Zs&sH=2g(J*y?z>mauj`Q-_AY)y=S*#Wmm`v-Sfm4H9KG^J4N5tg2x( z>0xL03O)LY*x3~ujbc%bP=kz7Pizy~e=*@Jmoco0g?fDJ{me)e1{W@!*qn-QMBL8E z;?v-!nq(mBiksueBCpGy*zW~N$f7I$lG!iaQVCBqDCQJr38%O@0Ps%Tv7Rw@heD%h zVC)x2OMA^ds7z!+HPIDjhk+-0vrr-S^&_p6K-=r&L)r~(d&6kWPs7=4QD6dR%xa67 z7sprS`skP2W6{A$d+TTFc>obxrk!pBi|4_Vcb*)2oI@iygWp=6nH%UF^}D-4@RT`K z{|3EU^k4n~guup2N@N%>FFT8kW(-kP9UtPx%kSChC%b|ETNLG0PSVgan@nmhJO}C` zPqKE@!;EdA72 zipwFbct7qK@VU@`8c(o9NZ3A?cH)3YfRq-MVpS44fQQ z2wiR*PUhoYUz%7lt(QywH4E<5?4Fw3k$+B&cjSu5<)^3<8{?gL=p;>#!A~Af>I5}d z%V_>C-VZI~w`gBH{78V{M);An1XoxxW)#wMsd(N>X&w~M<4@xGF7d3>^UZh`RTNQ{ z0T?RrdJg5HI0EAJ4*E(FuEgtZ8rRPfulG~por%{2C-B;kcwI~tt-@=Pai$0ROi%K0 z`HdJXT&QwKl6<@=MLwRHDjzSEV|8?`v?(6HjEhHXHm8cm&4zf~^n>Ct@cSObqn+CI zzbhVB-@sk{-xH6U)-bdEHYDhc%|!pl;?cuypl2@E<=U9yh)C z|DJfXUmr)-|E736do^RMn1###i{kN_$9agmXf^M>jn@1$@#qu<{-Agq`a(DHcp5>*PsHN^_AyPCDvKwJS^mS~ z@uhE)Bn!mKqwV0#KO`QP5AN0tcSo{#ycqrXABe~7ZXH=MDc+Iq6OXfxC3QlGqu1Nw z{m?QNqJ44kcoV@5@wklOhIl-So(=K%4@zT*$J}r5Y>3AudN#%5Fv?i<7}#^yLjaN3-Wz9#!A`L-p`I@4R|JU+pn#=x}-?{g*_AUy4*{jGxk7-5Hnl`q$z04Lj ztUtCM$7RHQc0y&b9BN}052cj$s%AzOBVt3UxKG`WLBF<>(*k@dc#rft{RX5Rf27s_pyrXkQl|6ZPkaonUXyP{$s zXg^BU#rvvmrUbn3bdKXiG}fj+54ZXo!T|XCJpk!hICgL5tRlCj6bL;XDt1T?W>fAbhA_ z5ST0=`DU&X0Vy&e(*S}0+Me+8U>`tgft6Ci3!;)AhS(Ki-62GA-aGB zO-QQ&fmfl?!XnYfY7-(Gy*@3GMsT32*(PMVNVCk$HCsSxOvpR|37ZhXrK*}u$U>2( z#e@U}q}7B}35dn4U2v%?y9rq;(&U(sWdf3KLY6Zm80OI+S@&cZqcL+`LSLAQ8(@Ih zl}1>T9b<*U;i#7?>C|MhCLyZ}vz_mekyAvBT&nR>PHzoVT%*>PVG`}$}T|M!%&OjqWa2P7?gY}3CtGGcg zxOM5U{`W(aZatkSJT{NMxNy)Ix*;;YEHaWjqm0icG8RKq`$}J*lspH?{USMc7s>B3 zliTT>r|utloN7YK2_hx&3@UhU>37^BKE>FnzxoiAJ8jH`NQ8i|)xZMP_QW2uaoA~D zxeVdh2;TXT0msOVO& z=36-i_%;(P6IRGVtv^aA0oL@^t#Q8Bf@`*)-!8wGb*A=<#;USug@j^TYauhiH0i z(C>RXF{KY8ZZG*~VGwr%r8J0QnDwd$2rD@BdtWmx%#_>EQ=DgJ17=MQPmP!!+J;2r z9%Rhv`6x$EEvHD7LuI&81}4kjQ3l9A-zeiclo8LrkfsIDOYul(>V?AeEzzcL?#Ch& z2%y3`5M$q~jl7);ThZD_(BnhRW?}Pi0ZAq?0Pz1=0nC@00PF`-Avgb1Z?+RQ}thzl<8toKv0D9OA!pze-GhbuZ7i@eRH@V*st`WwPFY{ zTb9x^!6(weXf!S~KUEu_NL!;%rXrOaGFu*55 zA)rww^@%@bZv&pkRD1_gVoE%Z5G){l*14hbJcR^FWdGegl>RUpvhEa`ifkuufwIKM zk%~)@Pe`hme&a5hAMDIZvS)f?>@Fb!BWd!7_j?*UUf+j~6yeNs2a@4mAgn*R3-$=r z*9ylKm;uii0cRk|wNb7N^N&JtJ&V{{Wt{iyntwdyS88!1RArMtU3KFk)OZG?K8WEo;m%MwofGHGB!8T3IWS5qZi*6Fi}?WiTKGHID74a6_~RU# zknqQW7({u27M3*nfBch*3~-T_jsGz!rO3r*ksC#k_nAd5Ly^?JRg^8Ye@W$EBg(&w znw%*A?Jey$eDcTV*XPLX5g9%zwfc2(?TOy96{o}3i{99}RsHp;L~kw>y)o>6a`}-) znjy*wS$V4v=1f_6j?e2Tnv6HEQdz=38XfLIknoG7yvo^ll=3t>1|;Q84N7@4tEIfV zmPvW{)kt}Pu#^Yhsa59VGYzS%xk*XXWe)0}kIL}YBC8qu27{k#U~Kf_7{*_> z5Hk1c57BS=dTQ9M#^4z84$W=m68_H`X-DyiMxtr@V5+ZtJymPAg&06${J(P^wl24Hr!)HM00$^0)y&nc1reM zs4$EQ!&JDk2LeQY0#(vQ_m~!4?1riBM<^9KohYr4g0=rF2)EUKCp{Yuj_#cwa7Zh> z>DEwFPU!f;z@;u}#hvMC`j$pAr#CcURB%qG;#2=HOpDz>-a9madKi-}dY=B5&kO0W6vAuC>eUpNUw>)_*d_1=E)&*c^n$4TSg?T~0dVfj6R}7&h6=;BjMRPK zHexpZMetr(?vz&I5(~WDkJVF-&w9#xk6u_1hMhM$AmPsdGi{;I@vYxm92z~s7HBPQ zbB(as{Q5+7#t6GJwCKFd^uS)P^<-$2EwEkI9_}M9&d|pE@va>){o@UGEM5!3l}&*a zYOxI=!0b^Vs$ehCRgZDX;`BsoN7(;Q){oD$g0-%`Y#`{kx9-cNnO|(zZxj!h_>br4 zycjKAd94diL;7Q~^s_Jm10nL+)(E^D<*ddy^q4d~d`!AIYnvt>Acn5Diew{pQqnuSIm*X^9n#H-6{(7acC%nqz^YsZ(LVebDucPCUD=;ST zlcHNLNS<7j%kpG*gS(}GaX9kG?aYC9L!P|s!j!~Cpk|s;BF&U}lxFZ_`;l2IrKAgy zl$DJ*zkxkp9hyc5K)@$|_HcVFIOgOX2wUXOTU$j#F|95>d^$V1su>^PGwc{8US(t* z9?6dr6Met_-9xlB-I{8@ccT2z5wMtyUY9c3f{QaPQU$3nHi^t0g6J=C@OY{dN#3wCm%3(GPch7f+{z_?7ureLP$L06hnl=AdtadE7QL zax)Z7^kwNqjE$BCw|+fk(?*Wn&e&+d5DzXkhM4G=&x-3`!`Da@LtBwM?(WAYAQSYB zv)tm~fn z`IpL<6+IzjxIV`B0IH^PumASYn5zl~Sz`WDLg1w+pg!Zf*@G-rdc6#IPS zW8Th3<$)0PuZS_}|AjS_lJQ3XL6i3*1&3lQ*h|&_etvsQ9iz}U#Hl=rl+=N&;NzJ9 z?DnS>gzuCUalZ>1U4YD#>t^J_84_b0Pf{})ig_GS=bHDo$MnNDkvJ=c0^ClN8@U=e zj8WwA0|Kz;+Iwbfc4lHAlfHw#QC%HQL{N2~KR{#jF5W=nOVA}TP6O8_#wnLP>eLK{ zj!=kkDl_t~L0)yt@+(9KDFSgpn0qI=)+M?Izszh)z=T#kf5|R7^cWp=00o?bl=T@$@J6ppYBM8e04Q?s_~4$d__!GP zm6Ph21DA_#c)-vIPraxoK+<0HWQe$ghX^;G(=3nV8*vO-gfF43c&&7~{$LX;#uMpf zjm2WO=!*r!AvWV*Uu_2h3cbpFtRSX?-3-10qmR@rkao+#FZ5X=eHIsY2VT$}S7F)V9Fyie%eAL_uh zE6b3=t6q%@Y2Xbp%dYEpfxBpfr`)+63#QWMHFo+=7NMgk=XubDeh4ZJW)Rsqqj=PD z4JQlk@z927X8j4ggLAa$?}K=}+FL?_Zr5i3*`T^LxKzQS&%z5YB4B{QM)7PS1ZBT7 zwgW4f^7Yi2g!Tgl79LCtj8*Z5O47uCi3IAA$BeWRCSgs_n5tGd5I?UVqx#=2AHdVRz=SEEK*d#eR~ zdWUS-N`taa|J_|A$wt1kjRjVV0*w*tXkruV^g?`PjTERMMkEs@u{PY5nnimH z+Ga*ZAWeL{;`9|d0v-wFzEeMhj(|v)60Xl?B4zz`B*n!h}QKb2|Oo{7pRvJvs4Tl4ju*&2ywq|ykEi}pBEp0 zo-(G-4dgK;l##J6dJ)iAZo;l2*Z{!pGhq&1o_0a)nmLTx`sP&B9v+n-s^s?S=ZUtY z;x|jwLHKp`RL3o%jypsh3H*jc9aO%)3uBk2R|}1o z@%{jRyhnU|1TUZJOT% z4~u3zzB#oSFE|pUMAI#mU&Ly;F{$+QwmmU^WW?`Q(P^Th0bMG(QdE@OU;VY7%D>qx z|NWlI|LbfX&wqT7+L7&riSd;0ZquO(%#28&5$=`whw2ydGR}i>d3u{v@gkAa+j~c> z*!9bg&ncF1ps78=#ss$QcxpQbc&zoFyX(WNTVt}d)q8gbRe{bogBJ@!RDUd*yy*<^ zD&i-7^==YB3jcV@V`M*Cl#Q_KMgmWHgXOBbz@IpQtUV5ze~wBdHn|lVY(Z0~<9_Mc zT0${C0{T8fF}>`t%Nb%KzT)XSRASuFif6wVJ1Wc+75C5Lv3q0_kKJy?5EZ|@Iza@< z_(AxwT>T!@huTtU;H`cM8ffncN4-Qn{X{(pn!m!VCytSB^_|{ReQvY9&YtS~4cS+; zk^lLADow1tD$%dx`k=;6q4OKs$T6+kkgspQm*Bq#0to6KU2-C(WL$}_2B%|sfp(=} z-E}psgZg8MVb?!?JRwdaOO&1)pNOrzQ%E7pje|^C;PJ?I$)^ zuX;=UUD>Uk*m_tl?7mTVSxO(KL!?+?d(>=?V|wOd#1`HyZ`I{22v2GgT4%Hqtuxw* z))_Fg4tqu$aII{PCu@Tz2ItR(SWA8>*B-LzmnSvQr_4i)%=>CMn7dI|Subi|^p>Ac zW4)*LOVn6TcN}nyZCvAfSDHiOBh6R!VWV#<>_I?LVjN_}pWRAvu{*p<8V5xF zgntEHA?XsZ$j5-jDNFnk{(14P!kA_SLd%B0m&A@h(wQ939pUFX{5bzvi&1Y39EDo> z4AVASy)OfDK$X!ii7MIZ{T-T1CIpV4P z)P~ZI;FLoYcUe~8D~d;e$=C-T&5f&4*CXmX-D>*}z_Aqy*9!Y2hd-zF;g5pXTKqSM zPFnpJRqhRx=oha?BsS`h$Bq-=!&)b(-eDc2%xNRf+q)wc&CxTyKgCCT;P(psA1RRj zHnfK8!g^yu%#a1Fubz)prusw??43UNaC#g?y#pEbR%`U%=q@ny31@X@;7k!P z)Bp_Og5_x)6t%wr_-P6pjTVtht@=bhsq5qeN}*v9!EVYROVDA#rKDse+phOo$DNz= zA+bg1xTN{l0hVIg;T9(FNB+0y_R#lB#Jcg5*;rwQ#;n6D*1;6X6${oic%wD)8MvF3 z_1Jd(bbhSo`4%&qJ5L>MeQ(;LguyDa9oGz*MF54_pIj9i7ddgTEUKT{D>3OEdMULZEm&F z9DOgv-c-3wQs@}AM_Y_7-pTm4G6?!YGX(uBbm1o7usKNnoy@gG?PmSd9+a&PswJxx z)SwgT{=RZ79IXe}iqJNxC-yY0%)H77c=d4EaEl?co25T?c`m~V-lIItP&mWO zTA%A>M`P)k9+mUT?ah$ka$X~Vi!!2_vb9aWfqkmRxcCSLNPR&jnmo4}2R(jFdy%U4 zpbfDu`ui|s5<;1#`!lH7YvtJFY(zNrDg|EUQJ{uG;=wyRwXL!;*^d3AL_-J3DsuJE z$}gyuPzyKQX4nm92-$B?e-eMddYsov7!4R>goyI0V`fYuii+ue6d{O!30MSIZ;a?+AyRb%f zeC_`)F=}`A&t#*rtv|S#++ZU^4hT6uR3(^H)9f@PUd?IsYLf`XUdglB3m@zO{w=S^__t>C?RSu26Gf0m!A z5k$VS_9%KX&geR$$-kj#q77bsh|Jm?cTRVfO;4rz5jJV)% ztOoOSuT(*yA-u{3k*W9<^1{$xM$YmIcCrBZfc)ur1@fheIiypmY|2N^r6qIued0pw zWSm3XBH5lCtHwu9ni$L2soWETdiYyH3Tv_teThl0Z$bEu0j zjln9IL&b~4IS3FN^QTwQI#5fU2TZLPLIg3|dQWJuSqN3fqz9(i=Sn-a9+MUmi4_wP zTk!$oA)bv?|4zKbNXXB!ss)o%y6SyeG7_G_Olgs%BB+r zzR4a~;^gBU5F&S@9ugwulvd5SgQ^96BWmJA!h}@u@7!JJjA}j*A!l_kQqCcyoJ$#} zQ$|o$<*$)2@&f)SjhHa)V#1*QxV-2^<;sMO#MBpMrA~d|>jbtc!7vg2;*3lL&e}yQ zoAP?Gxe&Rz9i$v}00TKx;2E;m;A9qoz`6}Z`Dg-nX$_JRJA9;$cJcP>f1lD1wnk`6 zhJD}E$8W%X0iq-hok6EJkkU^%)r_h13X-q*6G{XRG!}voppc_UeDE}SCUF(*Ew}}C zZ{oeSx(i~_vyJl`1UAH4GC%YYGdVMb9|m?P&CEb|AU}v?VIFbB;l{A^M+17tN^)rc z`jVMz;IB9uF6|s~SJzFax!>)Eb`3ctrjG4<%Fcq^IS!^@> z*PqE4$NLeMFKFR8)PYn;?4-njCca5buQXHrineoZj*MVhpg*3J3pk@Gl?#itw)l|7PRgd>IFF8j8ttHs6x1~#UCYpa|j@*@-?bJEr$Fx=Ufl-Z6ZXr zDMU&$iDDiiv%EU=9BKnzubjp^Jwx!C*dBXr=wX`V`o)uJdo1JBIJSe6BKHLzDH$S3 zTubscLw^}#MQKk?;KNM!zxV`PR41rG*o;L4^oJV~?JhR6dVi9memdA4}EAJz=HtIpdE}Vm>xw2FihBS)2NTR2^zDvFh zWLl}!$9T2jbh`jH1LXGI@>wx&)?vNnLRu9!&^Yylwm~kV2X&QbN^q*O%h5NWd|*<0 z4StKZrtn+v;J|2E9VN#4>Oav~kHRK)W_&9vp~G~QFHq}xp`V|fvSyjZ~0pQ6tR-w-i=qdkbCjP+ge@Vzv=hvD<0>+#|Hxfs6eLVoX=TkW-Cmp{#`(EUe=QG5}jC|gf3@t#Y=ZH_nhrw;vr zjzYdsvU&{<>tUjVgM1H9LRY2-;+IfRW)@=;$BsT?+WPQJ|FH!qWxaMv?@LJ(M93X^ z2~uJHQuMyuzhY~FczD=9llc6(!G*EY{DWmH3?$g2I;8hT0(=b|jE=#A(PRA>8P{Bc zD)cX2<}d#9WogZHD?aM?)Bu8@6ruVwl-cH*Zq4yY?oQ_W;P(l-HF}ZMKIr?pkGhO@ z6btW-HSFe7g-W3MKROmIP9O6aevrf~xjWp_ii@4~y{R80fGt!tgyC~xch$w%`7{-M zbI20)@p%yaBTRIvZzg)mmC=4rHrIDy7T0&-X^Hw;e99qD-p3xT%&LDgjENO3xOBL) z-ZmVgN_#^HfQ4vNDjuXK^&LzZlVNY5^;x*O` z2SV(CaY{&=z&X*=W$X>%6Y}pzQeECjdH^2lb@=N-7f9N5ruyE#eGd{mc{M~&HKs9U zJWOpkM7|YQVYSNA>t_Zc_yiXy7c|BHo9~GMp!U4O?NM1i!6KPx&qmpLl-eT&B1)r? zLyVVDeQN#_^e$ANj8Cb{L!Y>AkVPmw&l=yeKCli9?1>SHfjvKUR8KcXH821s z1!G7lJ`YNUm1w^nCNfoq=23z1F^%JI=;;K-uD_j9Uc}AWuYWv_m4hgbWiWo!F-Pcx z1}hMC;@htHH&G&$2kqavMvTeOHz_?zte8ZaMBl&Bt79w5({`wRCtOowb z35-n3_}(U4J83)%@V)k6juWT;vvyM9SEFz!$lbjo4E~DqH&m}S@-Lq=Jx71b^xRD0 zHI$4jd`rP6_Qi|Z>N5iuBWA*KTObF6KJrRxH~udwS<9y+(>V^n%*YIz4H|zUJ8aXf zN-gek)uwcopLhv_COvsEElIVJhhC?M6Y+~L$Of~uL)i!!@@wruE9y)44-6edRD~01 z{yR-sLaU}#Iry`#R<~V96D@#+&v-k3MY7K5L-HIfiZxr1mJHE5 zjkgUKBPkbyQebb_Y(@B2nGD6&Kq!1pye51FqYR&ys2a=2FfS#c%%;G%V%?COE)>S{ z0PVdK#t-3Xq8i~A=oZ?dT%}2#W2-V69KOzI)O_>@4SEvIj5p!J&Y0B#7~*ZkVbCdB zpfTAhua0+zXw-0U`!jCRmW9iA^BIh$54I4Au<_e6RQP8bzKq9Z?Xga|JoaBGM|!ds zR=}(5c=T!+|Nf5;W1cyqS9z@svBR{44K>0NI0ZG==6Ka!q=+c>&RB_k6|Ed2|3$`J zvcMakHp|LJgjrx5MV7Fow?Ju)BTK4$oIuJJ%-L*sqWuR4Q?u6UeY8~+vx84EA!dj4 z%N(S`d;&#*imqNTRa?k$JA9y_2*?yfi0kH1Z-f`z;w2{{Hs$$Cexk8x5!#!*s)*Wq z5^@OnG9wd7x>L~?8I&qj{0F`fwGOgXN2)2EC^kFt1#)U7OArtl7Fkan>`Dj(SH>kZ zS=F&kkKT=^>}Y@EJvXw6II8BPCggT& zJ>y#3zSgbLIVp8hj16UXg!h0&RnxnbHk%suplA#zr(21D;X)50wAhsF$e5&7cPpxd zin_>5F`KTqaOR>(^SY%CQrZ)2R3j1zUmc0iOAjN*-Q|<h&m zPTSK;ogpajn?ul9&jz<7r3{!FSf_wJ2Vv*l+p* z47*;3q0`9=1>&*eD6>)W@wo#KFLn%ZxzRMS8;-rG6=z0bdVi+4j1kW!(i$xHmW|AE zbtKd%;c_beVfu3|{dpAiCKdpOegXEKZ|pB9@E2495KjxRGd2xMAr^idwZ?eJg}yn} z6Wi=;8+U!0A9sh~asVx31o0jAyU$Qw!)Pctc%b1#ib6*xa85;WH^TiV%*<6k?1iF0 zM-ylV4hn5A9Oethnpe#x#D>=ACn+A>KG;9SeNSF>ac^H`tjsCeI!VLDsG;@Po~f4* zNH^MVZZ&O42PVZmGmF#1xy)OkbwH4yC-TkuwEfES$T8zuo#K2 zCx!F&oK_xaI?i+h5B&J}Da;r5GkpZtdrN8F_KD~$BAf;;5K$K=??guv&s#1y1!Di#~Y1CWf{18`q79@6~hgpOMSHd}RckS4Q0ZjwB;B#`0O0}fFeKHfVV>1Dw$I7Aa+ zE;`C2CQ?4;XS|X~T)XKCaFORF96^992n#C zzXQ$mH;eQyndx^75a|h77g}0lu`w1zeh8eK7!S-Db{(C#=sOyLOc+<90}H~qHg{Za zueR`W&!};dS8~DO1NK{_ksE5EZ6RsE=2Ry=?9Dq#2G8Gw#pF-)i_53|H7eXwe#l~> zJ91WA=W-n_4CqnQlGec0O%VK2C! zoHe33iLn`jNcCZH&1<0&ERZnZDonoP3b7)CR(7yMP6u7EGY52Yr=}?^R)vQ(-J8iQeF<)oH}=ODqW{ z99-TdM!+Ili-{P(aZ<($QI-?s{reA<2bm_ylVkCMlE#DmgA?&GLUdSW$#cko6C$!k z=a1cu&iCv9falAIdk{U}T>oM>hmM(htmAW86s*toj(Q-o^k$4~_5^iE4qr+atB1!+ z4yKteJW2KEfcGM7!@+H|(>osL2C-F713+Fx%8j);bsTAD)FPmJr`7+W8x|R$goerz zeMZcSgz$hUbP7IK)8Jlp6ph53YpP>B)Id(0k^~;&Sd7!N@GmPrvWokOxFfrSdANQo zo$a_OKWQablui3DdF~q6B*I9J?<8FD4&w7_f1}$m=*+S;N*yZ82lc=|D^{J4QE#Yx z1YapredS~H)KIx74sZu84enp^H}?}ToVsa?)Kc%R=CfpZeD)LvRp}rre#j%vJa0jtRYcFq(d{i+ zz0CkSaM)01LA}`+k9$1_X&u+>kmxHjDq?Ss)lFC;lM-j3g5yGNOo>B8u!qex521CiPt`BKGiPz-Bc zbpo<3F?v8t>2dlR-Qq^hUU@05vA;#J_% zxEU9RfCog!ChZS6)iZeXUCM#&EiUQhgHnj>32;dR>S3#oRcE6xkLDU4!vSH$JCT-L z0Dv=e>byrFD-ggFdx_VOOCDVNu%Y6yyBx#(&{<2cU&a1oUt`l17H*g0&ev_QWCgy! z^$v@EANRj9_G0|l!r&sFix-hEiohPQR8b0IPAMaTG9-=e&xmGLrb`tw@Z?iILkr99 zC(fdtj<@Jw)Gxif_2FAR+EnPd-(f%DpJlQWFQF6XJ@Oe%6>zD1ScuCCA(rfpGyVUB z4@%5k(3Ci@>ci&!IX)nJtmDR~Z9Zjd;0urA>qUQy_5$-n`SF4Jl4evjIoiY1P^`nr z0NHI$q@V>liHzH$R>8?N3})I0ouU~G8H{M^az-RAbPM)IFYzf~#`n`H1_<2rcxxbr z6`EFTl}F87j`<)}kbijS8$^(f8dC3cT*~pbt-%9UX+@LA`T;9{N%VxQq&EpC3e_Gu z(JOGN?3kXt82e|_a~8EAL?f3ct@xC)x+K?u=tfiiAXR4I9Wpu&gBi#F49K}M9o^!@ zd_~ra-t>9d&Xv~av$&1J8t7}37{JCF0(LgZp_4E@QTX5B!W`?{P>d|04=sEpDDgw6 zp8o3~uU3&FIw5+4pt9upL2u%MzcQ<1h9KF`ncRL2<4S}#co+xJ_CAhP7olym`cggy zm$mDc!M%Lde87xWNtF|kYZcLjNBNiRL6|6%B>Dq6g!V|h5Ym_)nI11u<{BO;iNBMz4jTGwl4bCXePo`s zHP$H4X^wxVX)K;ed5_J`H~kR|oBT;R^cbql#ZRUsFiZ|zV+p|L=&@W&U=V)t(Hi^| zS^~X7kIj!^Ph8oBSx9d#MN^{|AW>^-?0Mw!S6Z$&G+2@=6n8s z^S$uD`CioXcjLU}DhwZ%{*U4C^mP3E3uuO3G&z@jbt(8Xw9v)4khm=Ou0`cMPQny1Zjv?KZ3DZ5V6W&D5iO-L}r^zs0K# z`r6qrHk;r+WrE#P{#a%Z&;Bul-QpHYuo1_le=EPZkQT;?z|G23B zDi0P9)DWL~jt@csg%;1JKU8mV3H_mZi}UFZ)muzS(kH1iwq^EMVAW46Fv9*T>UhG5 zSGB`C1ZRi9{^1$|`^sjwvfiyUI%C&^a3P^$Zlwjw1@d^vf)i;N2X-1@3r=x~kK_B? z(Bcvp;VPN}XY`13xTdv|K{TOHkpKMqV5^)j!wowS&PtUT#Da!(zyk|vghXP1vOp<89b) zz%pTHgg#sf3*Dy?1vJUBZ5D*sc-aeESE!CosL*1QJorz;Gx?OoqP@wT*4YkjK;|A& z!Dvl8QCd-}xZz^^MYJ#bFNQYQJ+UqRD}PZFVVecfA|MBj0H8IIf;X9Fw9 z3WzD@QMRxxX)4xfzOcI>9C~!V#Yy3y)ZP>g153ZJ3!31Y>oBR9MmU z4(WKSNY9g8b-3Cg2T$NBZY=6>E~YHtQtsM8kq`^EAsFwob=shRl1q|D3!EmdV(=+- zwCbX@m$CkHNh@#bbXV*xl2(8lx{o`Dty4a9ZvVucwGW@p#Vfz;w{C}#x|b)mG4O#~ zxhu!5lnyVV3x)?4>;;*poZ7=O{DjDfq z)O?&0gr8zZnm-4BtpW7BtPuS~N8b^hZFUaZ;dJbX4&X2T-g99vh(&Gm7hY+>(rk3FCnBikF+$i<*X z5@@OPSAJw31{6!`YGxk;pf(a9No@pE3ql{`wmaXY#$!dg8v{^{RdR_Oa=><4hP^qj zdWK;;tzuIm62i6?>_D}kSFDfQAZQ-=oG!y@7Fz>T8(nlUAsu%`cW{X15wGexZVxRw zjwmJzeemm5=VkJO&ja}*9LCo?N|B&9p!y(NwAro&$>K)n9yeRIJW6Rco-?7C0SlO+ zY}ujvOMO^WFZs2NP$?5vK|H;M=m*a)->6}d z7Qi?7$=r&CZIxFWG1-F-jFVQ5zTGXY{L1Z!O27P1q;R$s+0z2&&UGvFuPn`3Kh9>2 z4C5*j{;$%Cv4vH*PqY`>OZ-OaU$LR69hKp?#Q4QYKYmBl9NJUNl*jY}odtGa5^Ydw zU5-~jpf7 zZAQH0+A@X|ECkzz8w_@{vb&5zHa_xrs_tcFh^ptS@gY92b~9Ez&Q30nj>J8DrVFM7 zXXumkz~hm>qGY$SKe7YAK4rHj)N+cx7Q|B4n@*+HU2xoW!J^f#xRn#`f{p5ptCttl zxm54!SDgj5&aAC2bgHoJy>s6861JnmC; zTufgR7{J63J)OQ8FpSW(bDhe#G}^I?t&<%vSlx@&4zHJYAb(z_FN>i}C!W?s%Fg_kqlKN2m^9_3J}4`97gDRYQ2s|_#>Y~hX37!yxfeJP+&5NU{eD#!dHb~ zr?YK*jy3Res-j>UMl3<^F2|6qWtZS!i)YkSOW+;OxE? z-1{*372>zS?bz*<#-F4|m(t)WIP8MO*I9Wy(082H=VG^`HejnSvRUa4z^%G7s{@H@ zze;muH4p^OMR8CjK<&Gn!%h*;j!vfehkU4dCnoYvx3b;2HR{gV?pF3V;gjXg+Cw00 zq9eB!+@*BlLiK_DdP=;b3Z$pj z03IwO!Fny81ZQ3-6YqoI<24OLZ{&P@s~?wZrT#_WIm|CagqBEeyd@SrDe?jF2VfRX zlb&)A!&9f()rV}tpqap@cMe)JVxxD?W~Thc(*Eq+8>{s=J_sC)SdbAI5ctu z5opAAnn@1`;$)w!jNU}OA|i`OS`(5I*r$%(5ogGO4odB&#fEEJiNr2r1 zXu%roln2(|1^i5o$0VF3Ees<=E+x zChzpXFV~l~3mDiJS%k8x$E&t|ZU;R5eGSFxjhjxn9NUl%w`(;bHlw8Vh4jLaB46GX zpX0-_^Pn+HOO9g-yPz|JtDKUaI2~^^cb~;Cf8K)!*kyPSXFwMSbK1(iYiMj_Y4S0| zSxBFx*?6qHdG#1)-a4qD@1VNzcDUh$C#bG)#{|W85$(Fhpo)DS_|%v86|~Vtmx{Vo z>=01>Pu_#-pck_NR+c6~hyElT@mAx=pz>sG1aPo>g6i*VouK$TfCB>9&ZE9Jz#Sb;{LA+N97w$sY+ZYscqQgcn|f)%e0OeTu4Zc2j*^hEfj0Bu=Qw zWW~caPO*$-C*0#<(vF@{5SCWp8eavrhXdCIn}SvJvM$M+rK^4`VwxIN;bc;qRP_|N z3+*ErRTh_c)f_C@q$StkLl3HJBP|6lr1~RMkb)KoQpJ^cGVCR>4H#Cb!b-)e#U-@F zouKu(k7(Cxjd)dmBUIYPOi1LiO#kgPBP#ddo6u*!hB~_# z>g@O~>MZH9rGBBu?#;nQtv`VeSi3NC(vmwtZ)EmDEQf(}*TyV!6$hOrCCiQnpQM!| zreLQDbLAl&j&=xoTrrCj)3tBmj`sJ^7yst+&KKynzPxiGlKJ0>kaJ(E?lIo(Q_4v3 zD1+kBsfV8cy`!7d2GTG_QUjo1u%AkNe{K%^qXr%I#`OzHJBZOBj!h@A9IXLt0*%YT zw$A|q(?(eXYNvwA9n@Uusb7IjAx$=#{3-wxhldj`S%x=RMJ!(CbLA(f`HTCMcRr6_ z>FFDgt^5RajbQIG>^i`TR$7IW6!V zTJRZC(5U4tQA^q1B8`BPHF6nNLl_&;!HV;M2JYb7lnouEwN&M+cqxC>#;e4qevcQU ztF`E*+10nG&)?hCc~nN1uHFb(qN`myc`-gFI(ar;exQ>lStae>$xi_18I0Q!Q)e-P zf6y%6gL7Hiq!pOw$_<&ruj><}DNpx7(sCQ-{UjqvLK`vW^G!DxQy8}WwuRG1U$@`} zOyBW2U_P_u*k%~J$aun5zt|M)7`KyoAqRu&&ki0~TQwQ=d`vqMk;{497H49Wj7fzT zi@``H=U{eF*!}us6k7*Iec&yHUvK>!c@}@vGDZn~I1jsS{y(D!{>1 z5kQF+xbXbTgdv0u&nC-jcIl06^uz4tAT!NZG6mO;^a;z#t?1Q0co7rp3!tpBTdA*L zUEoO2ioux3?h!pBr92PYt2X;@0yC1C8Iiq;7Q%sMgRAbN=24R%PV*=fxw1Y=g%NK0 z1ii|f%;9T+8>|(&;|7u~ZP8AVlJUolBzZy}v0!8m7YWYx<}YZazCOvVs3co#XzIt` zBhBE8vU{oZbhs4%CFw5>u(y5SpPbZwsKwpd?^PePPgHEzdQ|KSQhc<-diiQ%6bP}d zdWYlC0R?Zc+pa}OAZu%MIl3iNvm>}r($scMd66uWZY3&v5L9+wTuAUp3d<#^tv8%R zjIq3m&P^I4jligOcCLeK2)1omf}Ir~YgvJJ#mCVs#^zu$hoCX!tYXXruL8Rs%>?*F zB%B37h{474EPm@cqW|SZfp#Lt8%mh?VN(W?oYc=IDxQN{% zhSfWjW@kaiu=csiqP~A}w!?nciUqq%I^`VJ%n$J3uf@8(QL4BA#b9wq-=vi{N}bY5 zf8ST6mB=^O2?6)FxsDTo<-tXLms^xwfmfn00&&y7kNtJA*RhYT4>$`n)8!9X^b|XT zkIl0LM*Gyqpgh%eQrIoB9drB{Xxf{|z$R62gch=V%k9U>fQB$0Pu~e-Mi!D#C*>LH z$0&ERw8X^#)Ir;kU=rY}uo&m~egEYNTxJ zP{}F+lJE{y%hnyRV~w4Ue+c3*7Qr0GBB;Yy1a}ylgMW7HOi>^nI*LtXB(I4V3}eG9 z$Qza5UxxiD)?!|u6tD|4jOXnsS;4xhe6iS`x}3Oskg4K2Y-gb0@$>Nym5wjLKU6wC zAOBG4czgqIS+q5?r*fY8*UE{^0_NF9f7B_)c*$94<+~(kz+W+`0-K^&r}8`0o!w#Z zH(W9d(hIwlR%{VL(}ue?BI;c%X>fJL6v3K9?Sm-WO@160ggfH;B)nk_w26!c(h^!W zQ7Li!!9Yd4-D)k?S!5oLd9EZUihrt|&!5oLd9EZV#|3Rk=OWFuIMANJ<@3WCLT=CZBgVN#F zn-KJzB;Ilum$svZ_Yn3J8f!uxK$QT#Tm3b__0a^5ru|QFebmHtQaQi*7jaFt0r2M@ z^aJu!BO5pVQ3%Hc*aK|z(0K|(2HVJy%ub8X!)R{`Bn4stGjE|ux#S~Y!62Ae^b*i} zH~MJAE+*4QgP@OVC2cv=2QC!pMjwrdd2P@I0AgM{6_5zgMQc~O2>(sTF8_I_ zk-x%eh!k9D$xHltA1Q^Ed$H@b0ZXq;Tz1h4*C0a|%e|fbfw9IYf|3mHX5!%bSokZW z=y-W_zXW!tVV=GZieeFzn$%Xp^a$BTL3W(#v=VH%O3$q$XPJD2oTZmq_J^gtK43G+ zEidvISfJ?IbBKe1sF`#--Uf(tJS^AW!-EIj8&>~$9`!2W&kegf+byBgv9&Q)P5Wxb zH)wK)*GxmFW7RYgxIv^+!*4t%eSM6+mP{uQz2@T;yC17!C9?(SK3s-&AD1&5pTKpK z5?>RC7-2r|7Xko0n z126CxK&)8uXAdl;jO@>40I0DjDR|79QpR~k8SyNrD`o7H{S$cqR`~xb?}IaeNd>^2 z%JL;F{_PX&lKuJ|$$m?|lqYU!Qpe7RN>&Z`e8Zb8HKegu)+ zQLJ?W13{V?EM`&4CJ-bXupvV$n?T|)L2V|DQJY#5Clr*_=2SLgo7te1-p<-jGn}DK z(@+SzhVL=yrJ9CK*@vSX(8DXkC=nrFsWzq@nRdODJxmh}WcnchNP+>gsb>b&Fd&&| z7{D}>oF$oJ(6mEvLyD~tM1y_Z8+(CdNKwULVPY2w<|vH#+H*847>6*q33fY5K=KEC z!x}gpE+_t8Wa7sq0OU1-0@b2iS|uc$C%Vb2@*`E~3;BzXr_z&rxL);dL|<4f!Y>fp;TqTn`8Ps4`oOFHk#YkphyWkh*Wh5B z2q=THf6e_Uke$y3y9l^=%RPW-Unq}c_5L-vIWVqtqH650GZ=fG08=m=TE~fU`o_zl zq2N?TW8gAL4xQ9cpbvz|UMTQ0B?t)u@=p8)zV-T+l{DuAoSRzvb*ws!!T^FapvH2ldo&{d=QwB(&Buu1`U}4c4m`ujvyqYs&qn0zh9Y21P=O$uRQ!QLu+2DuoCw%* zvLF6Za7=^~rSKk@4{ejthXBt|n{gJ19)Lis@bCZ(x~nPnGyc(H&OR*%e`e(iqzWdH zf?FIU0tZJ&;SiM=EEr{2V@@`=bkV2Ek1R(v#kbxGLy1jRgTq5sfq$=dNdhglqt6Y_u(J_2AYT>4POT);#EY) zZxby`u13WNhnxMO!<`>f};5#j?s( z1Q$7N7XMv|^)#F;U^RrSu9udaMO|T6h$3_!8im#eJ`|%H+2|~*+y}(N@}y&srY>hI zv{XT-SEw(~hMl34w!mwyoW{UkeU62NixrdwqVg@59kA)XK+B6@aN%_L>O2RJiz0N| zT@4Io!b~Mq4#6@JW)NZQxp+D&7;@Z^0ImAI6GzB~uV78_6Gw2$SPt3{#_WFZNQnFq zuZjNp)SEI11^x`O!%IH(XXFyH_pOe6wOUXx=)}Ktb?T`uc9DmFbK!-Y%Scu5W^aNMowJLw>(X9ZLQcA zz?LNfs~-)(rLQSaJ5lR%g~uTmmi2Z9M-R6IYCM=lW2KdS?v_?=U7i-W0`7*Plj#eV zqD4i-5VXPl9;9F+eSYOdP+x8Et7t~-03JSp(@ZpP?kX7E*;MOq5Eg6yT49|Hyfqh& zQPJ0tlrL*m-ODFvLvk5Mj%?|Lun*@);mfK9g2A%sFy_=|Vxd=71RG_hw8Fg}tIZ}^ z<*5RkHhPrZCC(W3@j9`62Q{opEqw)>)XU)f!KA19UV!dkuYgK`(W>|-h9zE=)<`c( zc7)>*B{?6+d?M^Nu>pYDtgi*HB?>_;UiCV%6=F)(l=i|JuQ@6ckHI2Vm2G@hjDT3* z%sGlxOS5-Q6It;bn@juQKp6G{>Trq-OG3MT&jD&lX$>Vup{T~4c?3Lwm@DwfTa4+T zDr~f2XNoEq=WyvAix1J4iZ}6v$R}_f%2)-$!+La+Aum+63pEOj0ZdvC4j?Vee=f{6 zZR(H&5+G_7Ks;*gN(0f1vpRH-#1Baz2={4L7Go#Id)h>{G)-KrMzwPM4YcyL+usGB_55J!Nte&}tx*r^RX(5LLu7krXt!IG9*1BVeXI6CHr zh4r(whO-)64Rx4T0-1`thL@Dm$~tyXlm5M~And9*7;v+j+I2-0h_y;#Vu8cnE;X8{O!%<69yq3d|?I_b3dxolU2HULQN4QLb7qiKgQ7y?^1*}IU>ND1Rg=mgXSx;J$ zvP)Vq6;(e%=qgK~Yfl*HO4!>7U*t{reRxa8m$Y)fv|^p(g$;zzKvwz-8(zUfbV9v* z8O~iYnwI&LZ(UWTyWGkar_!nHFKE*@9!SGbwNqO#anO{~T{zj7gt29$Z#4>Z&5Wa~ z0pj0Xf#snq!ia-~BO-j0_F?EDr-x$FB@ZJ-+7uI=h7rU~jnsXwf-Q%>v-z*b-*o>h zE~3(b6l$PGb-xKKOfY6WtEs$+GzWMWe~oiRTjo}t5LO0hWt+6NwxC&B*=(E~foP2h z$J=RY;5`7b5}=yEA+U5np$vM_01^5K`lgZFcwH4QjARXwQvCDBU?AMY7wLjI!etU^ z<+aXr)IW5WQn&T<@`F>SqPY!uyOa~<2d})+Vu8O~`C)pn0#y6C%?h|AA z;2yneF1Zk0B&}^KsD;;!+K)Q7vI$)y?gozpXYAMDXO_t0;0itWBH|)uq-DJJcVa8< zWex7-9D7U~dG#-ep_DEIH~GaDlbdwmCx|)z0qkW;0LQLR2~~2RkM<24Sg-D&(jnb& z;E^|sy7)u@X{oAYHV&_61E@E|(!}9)NMrVs%=Reb?Q3)C+vBK!oJO>aztj!@w+=%& zPNz-JxqLR>rQAa&<8zP{ghDD_9&c$uH0a?{I!zScV1y+Ds$9%&p&$+&!H09K;^+~$ zg5Cxb0~iSH>a%*99P5IcP0=3K&PD-x)XVMhsdJ0arn^?4O$x`hrs8Goal8JzzhLtV zEkd)X2N1z?iuep@aXvN>W#sxwU(SkdDi|v+`V~xl-1S1pFn_N(PuzZT5TQMv?eZ(E1E@(zOw#gn7^JQCrHgOr+vVl8wWY1fQpJQN35pV^3ToBhg3mZs7Ht4Q=J!4K zKC>ke^?m*Q{`mPZ%(L9*F6W+m?m6e4WuN`@J<<#6#gtVA>CkvO>Kt96 zM`s8O^@Hjlsc4k!uh6`TurSm?QhvueNczGAwF*M#lw7Ie6u+>hDx$X*}Ru!-H+svMcY{|o;HkSsBp zfam}YT1OXg|cj*B;$vMt(#=stZ}}xu4Ub{`Id~IDUm7i48+$)D#p{_H7>PEliA{Sj|1d3nH9sDy@MG(~PT2GV-G4K7?RYwzF(&*g8yj2K&+X zgl5B`APB@J4HdsF3{}ydU>J_4<&A6ERXBK{1*W*T7@oFG*P%o+#UeR1eUF+{5!J+c z!Rg%Bq5Ri!h?x8Og8bJEBk%Reye7yqie2fCsCG%yLvPT~lRL|LRrN*>%GzVMlW#!1 z*YBh&nRlD>-$_3*?^fl%lTKvbE#;k~>{2=|QFg6FnWdCnqT^D^t{N`7D!a75L|PM0 zL=RDjt2u!Y32^=p*0X;Xvp@J-Se@gNo_j7^8WDSebo z|DhL?XJ!lB)wMv2lG_;yUp}x%cFKmWi_Q_tw9;p*&oY*Mo8`+6T%+7-y&H{&Efhsq zNt_`s#KYxb9#}8b?Ufj|Me_*_PrAz|vEq{d7Mo{(7>Wmes=X_6>~nlAY^`mF5Sss-PRt#vkzb|+jmlYa5>)xt)uzp z>*I~bDo-g2EV-v>d~DPy0c+&=Smi0b1J*sg)ti32=|?L)u$vwb#&KXfk$pLf3daYy zCgD6url9h1#$!__6^&amb$k)h@+9QZ@xZ!zB%LP9;;6;C`J(brX-h~iN#e>fXn)Y! zzr1C<8Vy0yu?*y4@1VD>@*VUSYRY2ztfdftKYc~U`WjZfA*()jscU7PS^5-wvSbpP z#24{-fDiTlq1{L|66lJ=bEa0Wit35wBdXuj6(!w@f=7R=L_sO3&ubh}uxgPK1?4%+ z+rwLIVep<+g#(Sms&I-;SH-FtDTBD2wW!Lck76&!=|ad!I49}2Fj?xVG=`j m3h%x8>x3FyTk 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 z

EhaouTwfs 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 S%YU)hxn8ho)0bbmKmH%clqR$Q From 6133521b703b62ccfbb1dc6ff5c2981f8efa5c0f Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 9 Apr 2024 16:20:09 +0200 Subject: [PATCH 134/187] Address comments --- .../lib/src/build_runner/build_runner.dart | 59 ++++--- .../lib/src/model/forge_result.dart | 16 +- .../src/package_layout/package_layout.dart | 23 ++- .../test/build_runner/build_planner_test.dart | 6 +- pkgs/native_assets_builder/test/helpers.dart | 2 + .../test_data/complex_link/.gitignore | 4 + .../complex_link/{ => assets}/data_0.json | 0 .../complex_link/{ => assets}/data_1.json | 0 .../{ => assets}/data_helper_0.json | 0 .../{ => assets}/data_helper_1.json | 0 .../{ => assets}/data_helper_2.json | 0 .../{ => assets}/data_helper_3.json | 0 .../complex_link_helper/pubspec.yaml | 2 +- .../test_data/manifest.yaml | 20 +-- .../simple_link/{ => assets}/data_0.json | 0 .../simple_link/{ => assets}/data_1.json | 0 .../simple_link/{ => assets}/data_2.json | 0 .../simple_link/{ => assets}/data_3.json | 0 .../test_data/simple_link/pubspec.yaml | 2 +- .../treeshaking_native_assets/.gitignore | 1 + .../treeshaking_native_assets/hook/build.dart | 2 + .../treeshaking_native_assets/hook/link.dart | 1 + .../lib/src/treeshaking_native_assets.dart | 1 + pkgs/native_assets_cli/CHANGELOG.md | 2 +- .../link/package_with_assets/hook/link.dart | 15 +- .../lib/package_with_assets.dart | 1 + .../link/package_with_assets/pubspec.yaml | 3 +- .../lib/native_assets_cli_internal.dart | 8 +- pkgs/native_assets_cli/lib/src/api/build.dart | 2 +- .../lib/src/api/build_config.dart | 4 +- .../lib/src/api/build_output.dart | 8 +- pkgs/native_assets_cli/lib/src/api/link.dart | 32 +--- .../lib/src/api/link_config.dart | 13 +- .../lib/src/api/link_output.dart | 11 ++ .../lib/src/api/resource.dart | 14 ++ .../lib/src/model/asset.dart | 3 +- .../lib/src/model/build_config.dart | 6 +- .../lib/src/model/build_config_CHANGELOG.md | 5 +- .../model/{pipeline_step.dart => hook.dart} | 12 +- ...{pipeline_config.dart => hook_config.dart} | 2 +- .../{build_output.dart => hook_output.dart} | 22 +-- .../lib/src/model/link_config.dart | 32 ++-- .../lib/src/model/native_code_asset.dart | 2 +- .../test/example/local_asset_test.dart | 2 +- .../test/example/native_add_library_test.dart | 2 +- .../test/model/asset_test.dart | 2 +- .../test/model/build_config_test.dart | 6 +- .../test/model/build_output_test.dart | 147 +++++++++--------- .../lib/src/cbuilder/cbuilder.dart | 25 +-- .../lib/src/cbuilder/run_cbuilder.dart | 21 ++- 50 files changed, 291 insertions(+), 250 deletions(-) create mode 100644 pkgs/native_assets_builder/test_data/complex_link/.gitignore rename pkgs/native_assets_builder/test_data/complex_link/{ => assets}/data_0.json (100%) rename pkgs/native_assets_builder/test_data/complex_link/{ => assets}/data_1.json (100%) rename pkgs/native_assets_builder/test_data/complex_link_helper/{ => assets}/data_helper_0.json (100%) rename pkgs/native_assets_builder/test_data/complex_link_helper/{ => assets}/data_helper_1.json (100%) rename pkgs/native_assets_builder/test_data/complex_link_helper/{ => assets}/data_helper_2.json (100%) rename pkgs/native_assets_builder/test_data/complex_link_helper/{ => assets}/data_helper_3.json (100%) rename pkgs/native_assets_builder/test_data/simple_link/{ => assets}/data_0.json (100%) rename pkgs/native_assets_builder/test_data/simple_link/{ => assets}/data_1.json (100%) rename pkgs/native_assets_builder/test_data/simple_link/{ => assets}/data_2.json (100%) rename pkgs/native_assets_builder/test_data/simple_link/{ => assets}/data_3.json (100%) rename pkgs/native_assets_cli/lib/src/model/{pipeline_step.dart => hook.dart} (71%) rename pkgs/native_assets_cli/lib/src/model/{pipeline_config.dart => hook_config.dart} (93%) rename pkgs/native_assets_cli/lib/src/model/{build_output.dart => hook_output.dart} (92%) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index aeda4e574..6d6d92f2c 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -53,7 +53,7 @@ class NativeAssetsBuildRunner { Iterable? supportedAssetTypes, }) async => _run( - step: PipelineStep.build, + step: Hook.build, linkModePreference: linkModePreference, target: target, workingDirectory: workingDirectory, @@ -89,7 +89,7 @@ class NativeAssetsBuildRunner { required BuildResult buildResult, }) async => _run( - step: PipelineStep.link, + step: Hook.link, linkModePreference: LinkModePreferenceImpl.dynamic, target: target, workingDirectory: workingDirectory, @@ -102,12 +102,12 @@ class NativeAssetsBuildRunner { runPackageName: runPackageName, resourceIdentifiers: resourceIdentifiers, supportedAssetTypes: supportedAssetTypes, - previousBuildResult: buildResult, + buildResult: buildResult, ); /// The common method for running building or linking of assets. - Future _run({ - required PipelineStep step, + Future _run({ + required Hook step, required LinkModePreferenceImpl linkModePreference, required Target target, required Uri workingDirectory, @@ -120,17 +120,17 @@ class NativeAssetsBuildRunner { Uri? resourceIdentifiers, String? runPackageName, Iterable? supportedAssetTypes, - BuildResult? previousBuildResult, + BuildResult? buildResult, }) async { - assert(step == PipelineStep.link || previousBuildResult == null); + assert(step == Hook.link || buildResult == null); packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); final packagesWithBuild = await packageLayout.packagesWithAssets(step); final (buildPlan, packageGraph, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName); - final buildResult = ForgeResult.failure(); + final hookResult = HookResult.failure(); if (!planSuccess) { - return buildResult; + return hookResult; } final metadata = {}; var success = true; @@ -153,15 +153,14 @@ class NativeAssetsBuildRunner { targetAndroidNdkApi: targetAndroidNdkApi, supportedAssetTypes: supportedAssetTypes, ); - final PipelineConfigImpl config; - if (step == PipelineStep.link) { - config = LinkConfigArgs( + final HookConfigImpl config; + if (step == Hook.link) { + config = LinkConfigImpl.fromValues( resourceIdentifierUri: resourceIdentifiers, buildConfig: buildConfig, assetsForLinking: - previousBuildResult!.assetsForLinking[buildConfig.packageName] ?? - [], - ).toLinkConfig(); + buildResult!.assetsForLinking[buildConfig.packageName] ?? [], + ); } else { config = buildConfig; } @@ -174,13 +173,13 @@ class NativeAssetsBuildRunner { includeParentEnvironment, resourceIdentifiers, ); - buildResult.add(buildOutput); + hookResult.add(buildOutput); success &= packageSuccess; metadata[config.packageName] = buildOutput.metadata; } - return buildResult.withSuccess(success); + return hookResult.withSuccess(success); } /// [workingDirectory] is expected to contain `.dart_tool`. @@ -201,13 +200,13 @@ class NativeAssetsBuildRunner { }) async { packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); final packagesWithBuild = - await packageLayout.packagesWithAssets(PipelineStep.build); + await packageLayout.packagesWithAssets(Hook.build); final (buildPlan, _, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName, ); - final buildResult = ForgeResult.failure(); + final buildResult = HookResult.failure(); if (!planSuccess) { return buildResult; } @@ -222,7 +221,7 @@ class NativeAssetsBuildRunner { supportedAssetTypes: supportedAssetTypes, ); final (buildOutput, packageSuccess) = await _buildPackage( - PipelineStep.build, + Hook.build, config, packageLayout.packageConfigUri, workingDirectory, @@ -254,8 +253,8 @@ class NativeAssetsBuildRunner { } Future<_PackageBuildRecord> _buildPackageCached( - PipelineStep step, - PipelineConfigImpl config, + Hook step, + HookConfigImpl config, Uri packageConfigUri, Uri workingDirectory, bool includeParentEnvironment, @@ -266,7 +265,7 @@ class NativeAssetsBuildRunner { await Directory.fromUri(outDir).create(recursive: true); } - final buildOutput = BuildOutputImpl.readFromFile(file: config.outputFile); + final buildOutput = HookOutputImpl.readFromFile(file: config.outputFile); if (buildOutput != null) { final lastBuilt = buildOutput.timestamp.roundDownToSeconds(); final lastChange = await buildOutput.dependenciesModel.lastModified(); @@ -291,8 +290,8 @@ class NativeAssetsBuildRunner { } Future<_PackageBuildRecord> _buildPackage( - PipelineStep step, - PipelineConfigImpl config, + Hook step, + HookConfigImpl config, Uri packageConfigUri, Uri workingDirectory, bool includeParentEnvironment, @@ -347,8 +346,8 @@ ${result.stdout} try { final buildOutput = - BuildOutputImpl.readFromFile(file: config.outputFile) ?? - BuildOutputImpl(); + HookOutputImpl.readFromFile(file: config.outputFile) ?? + HookOutputImpl(); success &= validateAssetsPackage( buildOutput.assets, config.packageName, @@ -363,7 +362,7 @@ Contents: ${File.fromUri(config.outputFile).readAsStringSync()}. ${e.message} '''); success = false; - return (BuildOutputImpl(), false); + return (HookOutputImpl(), false); // TODO(https://github.com/dart-lang/native/issues/109): Stop throwing // type errors in native_assets_cli, release a new version of that package // and then remove this. @@ -376,7 +375,7 @@ ${config.outputName} contained a type error. Contents: ${File.fromUri(config.outputFile).readAsStringSync()}. '''); success = false; - return (BuildOutputImpl(), false); + return (HookOutputImpl(), false); } finally { if (!success) { if (await buildOutputFile.exists()) { @@ -516,7 +515,7 @@ Contents: ${File.fromUri(config.outputFile).readAsStringSync()}. } } -typedef _PackageBuildRecord = (BuildOutputImpl, bool success); +typedef _PackageBuildRecord = (HookOutputImpl, bool success); extension on DateTime { DateTime roundDownToSeconds() => diff --git a/pkgs/native_assets_builder/lib/src/model/forge_result.dart b/pkgs/native_assets_builder/lib/src/model/forge_result.dart index 457565527..19c979ac9 100644 --- a/pkgs/native_assets_builder/lib/src/model/forge_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/forge_result.dart @@ -5,13 +5,7 @@ import '../../native_assets_builder.dart'; /// The result from a [NativeAssetsBuildRunner.build] or /// [NativeAssetsBuildRunner.link]. -final class ForgeResult implements BuildResult, DryRunResult, LinkResult { - /// All the files used for building the native assets of all packages. - /// - /// This aggregated list can be used to determine whether the - /// [NativeAssetsBuildRunner] needs to be invoked again. The - /// [NativeAssetsBuildRunner] determines per package with native assets - /// if it needs to run the build again. +final class HookResult implements BuildResult, DryRunResult, LinkResult { @override final List assets; @@ -24,14 +18,14 @@ final class ForgeResult implements BuildResult, DryRunResult, LinkResult { @override final bool success; - ForgeResult._({ + HookResult._({ required this.assets, required this.assetsForLinking, required this.dependencies, required this.success, }); - ForgeResult.failure() + HookResult.failure() : this._( assets: [], assetsForLinking: {}, @@ -39,7 +33,7 @@ final class ForgeResult implements BuildResult, DryRunResult, LinkResult { success: false, ); - void add(BuildOutputImpl buildOutput) { + void add(HookOutputImpl buildOutput) { assets.addAll(buildOutput.assets); final mergedMaps = mergeMaps( assetsForLinking, @@ -61,7 +55,7 @@ final class ForgeResult implements BuildResult, DryRunResult, LinkResult { dependencies.sort(_uriCompare); } - ForgeResult withSuccess(bool success) => ForgeResult._( + HookResult withSuccess(bool success) => HookResult._( assets: assets, assetsForLinking: assetsForLinking, dependencies: dependencies, diff --git a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart index 9cf647b64..740e8c45a 100644 --- a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart +++ b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart @@ -87,19 +87,32 @@ class PackageLayout { /// All packages in [packageConfig] with native assets. /// /// Whether a package has native assets is defined by whether it contains - /// a `hook/build.dart`. + /// a `hook/build.dart` or `hook/link.dart`. /// - /// `package:native` itself is excluded. - Future> packagesWithAssets(PipelineStep step) async { + /// For backwards compatibility, a toplevel `build.dart` is also supported. + // TODO(https://github.com/dart-lang/native/issues/823): Remove fallback when + // everyone has migrated. (Probably once we stop backwards compatibility of + // the protocol version pre 1.2.0 on some future version.) + Future> packagesWithAssets(Hook hook) async => switch (hook) { + Hook.build => _packagesWithBuildAssets ??= + await _packagesWithAssets(hook), + Hook.link => _packagesWithLinkAssets ??= + await _packagesWithAssets(hook), + }; + + List? _packagesWithBuildAssets; + List? _packagesWithLinkAssets; + + Future> _packagesWithAssets(Hook hook) async { final result = []; for (final package in packageConfig.packages) { final packageRoot = package.root; if (packageRoot.scheme == 'file') { if (await File.fromUri( - packageRoot.resolve('hook/').resolve(step.scriptName), + packageRoot.resolve('hook/').resolve(hook.scriptName), ).exists() || await File.fromUri( - packageRoot.resolve(step.scriptName), + packageRoot.resolve(hook.scriptName), ).exists()) { result.add(package); } diff --git a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart index f77545046..b4a03a30d 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_planner_test.dart @@ -38,7 +38,7 @@ void main() async { final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = - await packageLayout.packagesWithAssets(PipelineStep.build); + await packageLayout.packagesWithAssets(Hook.build); final planner = NativeAssetsBuildPlanner( packageGraph: graph, @@ -63,7 +63,7 @@ void main() async { final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = - await packageLayout.packagesWithAssets(PipelineStep.build); + await packageLayout.packagesWithAssets(Hook.build); final nativeAssetsBuildPlanner = await NativeAssetsBuildPlanner.fromRootPackageRoot( rootPackageRoot: nativeAddUri, @@ -90,7 +90,7 @@ void main() async { final packageLayout = await PackageLayout.fromRootPackageRoot(nativeAddUri); final packagesWithNativeAssets = - await packageLayout.packagesWithAssets(PipelineStep.build); + await packageLayout.packagesWithAssets(Hook.build); final nativeAssetsBuildPlanner = await NativeAssetsBuildPlanner.fromRootPackageRoot( rootPackageRoot: nativeAddUri, diff --git a/pkgs/native_assets_builder/test/helpers.dart b/pkgs/native_assets_builder/test/helpers.dart index 140f1e70d..5fdc18502 100644 --- a/pkgs/native_assets_builder/test/helpers.dart +++ b/pkgs/native_assets_builder/test/helpers.dart @@ -162,6 +162,8 @@ Future copyTestProjects({ } extension UnescapePath on String { + /// Remove double encoding of slashes on windows, for string comparison with + /// Unix-style encoded strings. String unescape() => replaceAll('\\', '/'); } diff --git a/pkgs/native_assets_builder/test_data/complex_link/.gitignore b/pkgs/native_assets_builder/test_data/complex_link/.gitignore new file mode 100644 index 000000000..a051860e1 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/complex_link/.gitignore @@ -0,0 +1,4 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ +bin/complex_link/ diff --git a/pkgs/native_assets_builder/test_data/complex_link/data_0.json b/pkgs/native_assets_builder/test_data/complex_link/assets/data_0.json similarity index 100% rename from pkgs/native_assets_builder/test_data/complex_link/data_0.json rename to pkgs/native_assets_builder/test_data/complex_link/assets/data_0.json diff --git a/pkgs/native_assets_builder/test_data/complex_link/data_1.json b/pkgs/native_assets_builder/test_data/complex_link/assets/data_1.json similarity index 100% rename from pkgs/native_assets_builder/test_data/complex_link/data_1.json rename to pkgs/native_assets_builder/test_data/complex_link/assets/data_1.json diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_0.json b/pkgs/native_assets_builder/test_data/complex_link_helper/assets/data_helper_0.json similarity index 100% rename from pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_0.json rename to pkgs/native_assets_builder/test_data/complex_link_helper/assets/data_helper_0.json diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_1.json b/pkgs/native_assets_builder/test_data/complex_link_helper/assets/data_helper_1.json similarity index 100% rename from pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_1.json rename to pkgs/native_assets_builder/test_data/complex_link_helper/assets/data_helper_1.json diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_2.json b/pkgs/native_assets_builder/test_data/complex_link_helper/assets/data_helper_2.json similarity index 100% rename from pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_2.json rename to pkgs/native_assets_builder/test_data/complex_link_helper/assets/data_helper_2.json diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_3.json b/pkgs/native_assets_builder/test_data/complex_link_helper/assets/data_helper_3.json similarity index 100% rename from pkgs/native_assets_builder/test_data/complex_link_helper/data_helper_3.json rename to pkgs/native_assets_builder/test_data/complex_link_helper/assets/data_helper_3.json diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml b/pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml index d1ea1ab50..0d82d76f8 100644 --- a/pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml @@ -1,5 +1,5 @@ name: complex_link_helper -description: Sums two numbers with native code. +description: Adds two json files to the built assets, and two more for linking. version: 0.1.0 publish_to: none diff --git a/pkgs/native_assets_builder/test_data/manifest.yaml b/pkgs/native_assets_builder/test_data/manifest.yaml index 841496e9f..1ee4bdc89 100644 --- a/pkgs/native_assets_builder/test_data/manifest.yaml +++ b/pkgs/native_assets_builder/test_data/manifest.yaml @@ -30,10 +30,10 @@ - simple_link/pubspec.yaml - simple_link/hook/build.dart - simple_link/hook/link.dart -- simple_link/data_0.json -- simple_link/data_1.json -- simple_link/data_2.json -- simple_link/data_3.json +- simple_link/assets/data_0.json +- simple_link/assets/data_1.json +- simple_link/assets/data_2.json +- simple_link/assets/data_3.json - some_dev_dep/bin/some_dev_dep.dart - some_dev_dep/pubspec.yaml - wrong_build_output_2/hook/build.dart @@ -47,11 +47,11 @@ - complex_link/pubspec.yaml - complex_link/hook/build.dart - complex_link/hook/link.dart -- complex_link/data_0.json -- complex_link/data_1.json +- complex_link/assets/data_0.json +- complex_link/assets/data_1.json - complex_link_helper/pubspec.yaml - complex_link_helper/hook/build.dart -- complex_link_helper/data_helper_0.json -- complex_link_helper/data_helper_1.json -- complex_link_helper/data_helper_2.json -- complex_link_helper/data_helper_3.json +- complex_link_helper/assets/data_helper_0.json +- complex_link_helper/assets/data_helper_1.json +- complex_link_helper/assets/data_helper_2.json +- complex_link_helper/assets/data_helper_3.json diff --git a/pkgs/native_assets_builder/test_data/simple_link/data_0.json b/pkgs/native_assets_builder/test_data/simple_link/assets/data_0.json similarity index 100% rename from pkgs/native_assets_builder/test_data/simple_link/data_0.json rename to pkgs/native_assets_builder/test_data/simple_link/assets/data_0.json diff --git a/pkgs/native_assets_builder/test_data/simple_link/data_1.json b/pkgs/native_assets_builder/test_data/simple_link/assets/data_1.json similarity index 100% rename from pkgs/native_assets_builder/test_data/simple_link/data_1.json rename to pkgs/native_assets_builder/test_data/simple_link/assets/data_1.json diff --git a/pkgs/native_assets_builder/test_data/simple_link/data_2.json b/pkgs/native_assets_builder/test_data/simple_link/assets/data_2.json similarity index 100% rename from pkgs/native_assets_builder/test_data/simple_link/data_2.json rename to pkgs/native_assets_builder/test_data/simple_link/assets/data_2.json diff --git a/pkgs/native_assets_builder/test_data/simple_link/data_3.json b/pkgs/native_assets_builder/test_data/simple_link/assets/data_3.json similarity index 100% rename from pkgs/native_assets_builder/test_data/simple_link/data_3.json rename to pkgs/native_assets_builder/test_data/simple_link/assets/data_3.json diff --git a/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml index 4591b5ba1..3ac7a8c66 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml @@ -1,5 +1,5 @@ name: simple_link -description: Sums two numbers with native code. +description: Build 4 assets for linking, only keep two in link.dart. version: 0.1.0 publish_to: none diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/.gitignore b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/.gitignore index 3a8579040..5aa3aeb88 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/.gitignore +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/.gitignore @@ -1,3 +1,4 @@ # https://dart.dev/guides/libraries/private-files # Created by `dart pub` .dart_tool/ +bin/treeshaking_native_assets/ diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/build.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/build.dart index 6cf2d9299..4fb9910ba 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/build.dart +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/build.dart @@ -36,6 +36,8 @@ void main(List arguments) async { }); } +// TODO: Currently, linking cannot add assets, so we add a placeholder here. +// See also https://github.com/dart-lang/native/issues/1084. void _placeholderAsset(BuildConfig config, BuildOutput output) { final uri = config.outputDirectory.resolve( config.targetOS.libraryFileName(packageName, DynamicLoadingBundled())); diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart index 1e65c04be..8905618c0 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart @@ -35,6 +35,7 @@ Future _treeshakeStaticLibrary( LinkableAsset dynamicLibrary, LinkableAsset staticLibrary, ) async { + // This removes the placeholder file. File.fromUri(dynamicLibrary.file!).deleteSync(); final arguments = [ '-fPIC', diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets.dart index 1963f09ce..6b4a24dbc 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets.dart +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets.dart @@ -9,6 +9,7 @@ import 'treeshaking_native_assets_bindings.dart' as bindings; class MyMath { @ResourceIdentifier('add') static int add(int a, int b) => bindings.add(a, b); + @ResourceIdentifier('multiply') static int multiply(int a, int b) => bindings.multiply(a, b); } diff --git a/pkgs/native_assets_cli/CHANGELOG.md b/pkgs/native_assets_cli/CHANGELOG.md index 36085ff8a..cfe7e3348 100644 --- a/pkgs/native_assets_cli/CHANGELOG.md +++ b/pkgs/native_assets_cli/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.6.0-wip -- Add support for `link.dart`. +- Add support for `hook/link.dart`. ## 0.5.4 diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart index 55f0ff931..df49d313b 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart @@ -6,15 +6,10 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { await link(args, (config, output) async { - final remainingAssets = shake(config.assets, config.resources); - output.linkAssets(remainingAssets); + final assetsWithResource = config.assets + .whereType() + .where((asset) => config.resources + .any((resource) => resource.metadata == asset.name)); + output.linkAssets(assetsWithResource); }); } - -Iterable shake( - List allAssets, List resources) => - allAssets.whereType().where( - (asset) => resources.any( - (resource) => resource.metadata == asset.name, - ), - ); diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/lib/package_with_assets.dart b/pkgs/native_assets_cli/example/link/package_with_assets/lib/package_with_assets.dart index 03befed5c..7d7de8437 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/lib/package_with_assets.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/lib/package_with_assets.dart @@ -1,5 +1,6 @@ import 'package:meta/meta.dart'; +//TODO: Actually use the assets. @ResourceIdentifier('used_asset') String someMethod() => 'Using used_asset'; diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/pubspec.yaml b/pkgs/native_assets_cli/example/link/package_with_assets/pubspec.yaml index bb1d2ae8e..77dccdba1 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/pubspec.yaml +++ b/pkgs/native_assets_cli/example/link/package_with_assets/pubspec.yaml @@ -10,11 +10,10 @@ environment: dependencies: logging: ^1.1.1 - # native_assets_cli: ^0.5.0 meta: ^1.12.0 + # native_assets_cli: ^0.5.0 native_assets_cli: path: ../../../../native_assets_cli/ - # native_toolchain_c: ^0.4.0 dev_dependencies: lints: ^3.0.0 diff --git a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart index 0de2da034..008a95f11 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart @@ -30,16 +30,16 @@ export 'src/api/asset.dart' StaticLinkingImpl; export 'src/api/build_config.dart' show BuildConfigImpl, CCompilerConfigImpl; export 'src/api/build_mode.dart' show BuildModeImpl; -export 'src/api/build_output.dart' show BuildOutputImpl; +export 'src/api/build_output.dart' show HookOutputImpl; export 'src/api/ios_sdk.dart' show IOSSdkImpl; -export 'src/api/link_config.dart' show LinkConfigArgs, LinkConfigImpl; +export 'src/api/link_config.dart' show LinkConfigImpl; export 'src/api/link_mode_preference.dart' show LinkModePreferenceImpl; export 'src/api/linkable_asset.dart' show LinkableAssetImpl, LinkableCodeAssetImpl, LinkableDataAssetImpl; export 'src/api/os.dart' show OSImpl; export 'src/api/resource.dart'; export 'src/model/dependencies.dart'; +export 'src/model/hook.dart'; +export 'src/model/hook_config.dart' show HookConfigImpl; export 'src/model/metadata.dart'; -export 'src/model/pipeline_config.dart' show PipelineConfigImpl; -export 'src/model/pipeline_step.dart'; export 'src/model/target.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/build.dart b/pkgs/native_assets_cli/lib/src/api/build.dart index f3d23a08d..7b173d402 100644 --- a/pkgs/native_assets_cli/lib/src/api/build.dart +++ b/pkgs/native_assets_cli/lib/src/api/build.dart @@ -90,7 +90,7 @@ Future build( Future Function(BuildConfig config, BuildOutput output) builder, ) async { final config = BuildConfigImpl.fromArguments(arguments); - final output = BuildOutputImpl(); + final output = HookOutputImpl(); await builder(config, output); await output.writeToFile(config: config); } diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index fa04ee67b..9606abb6f 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -10,9 +10,9 @@ import 'package:collection/collection.dart'; import 'package:crypto/crypto.dart'; import 'package:pub_semver/pub_semver.dart'; +import '../model/hook.dart'; +import '../model/hook_config.dart'; import '../model/metadata.dart'; -import '../model/pipeline_config.dart'; -import '../model/pipeline_step.dart'; import '../model/target.dart'; import '../utils/json.dart'; import '../utils/map.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/build_output.dart b/pkgs/native_assets_cli/lib/src/api/build_output.dart index 0422d491d..d9c094ef8 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_output.dart @@ -10,8 +10,8 @@ import 'package:pub_semver/pub_semver.dart'; import 'package:yaml/yaml.dart' show loadYaml; import '../model/dependencies.dart'; +import '../model/hook_config.dart'; import '../model/metadata.dart'; -import '../model/pipeline_config.dart'; import '../utils/datetime.dart'; import '../utils/file.dart'; import '../utils/json.dart'; @@ -22,7 +22,7 @@ import 'build_config.dart'; import 'linkable_asset.dart'; import 'os.dart'; -part '../model/build_output.dart'; +part '../model/hook_output.dart'; part 'link_output.dart'; /// The output of a build hook (`hook/build.dart`) invocation. @@ -90,7 +90,7 @@ abstract final class BuildOutput { Iterable? dependencies, Map? metadata, }) => - BuildOutputImpl( + HookOutputImpl( timestamp: timestamp, assets: assets?.cast().toList(), dependencies: Dependencies([...?dependencies]), @@ -137,5 +137,5 @@ abstract final class BuildOutput { /// /// The build output is used in the protocol between the Dart and Flutter SDKs /// and packages through build hook invocations. - static Version get latestVersion => BuildOutputImpl.latestVersion; + static Version get latestVersion => HookOutputImpl.latestVersion; } diff --git a/pkgs/native_assets_cli/lib/src/api/link.dart b/pkgs/native_assets_cli/lib/src/api/link.dart index d31d8d7e7..08b015a98 100644 --- a/pkgs/native_assets_cli/lib/src/api/link.dart +++ b/pkgs/native_assets_cli/lib/src/api/link.dart @@ -25,43 +25,25 @@ import 'link_config.dart'; /// /// void main(List args) async { /// await link(args, (config, output) async { -/// final packageName = config.packageName; -/// final root = config.packageRoot; -/// final allAssets = [ -/// DataAsset( -/// package: packageName, -/// name: 'unused', -/// file: root.resolve('assets').resolve('unused_asset.json'), -/// ), -/// DataAsset( -/// package: packageName, -/// name: 'used', -/// file: root.resolve('assets').resolve('used_asset.json'), -/// ) -/// ]; -/// output.addAssets(shake(allAssets, config.resources)); +/// final assetsWithResource = config.assets +/// .whereType() +/// .where((asset) => config.resources +/// .any((resource) => resource.metadata == asset.name)); +/// output.linkAssets(assetsWithResource); /// }); /// } -/// -/// Iterable shake( -/// List allAssets, -/// List resources, -/// ) => -/// allAssets.where( -/// (asset) => resources.any((resource) => resource.metadata == asset.id), -/// ); /// ``` Future link( List arguments, Future Function(LinkConfig config, LinkOutput output) builder, ) async { - final config = LinkConfig(arguments) as LinkConfigImpl; + final config = LinkConfig.fromArguments(arguments) as LinkConfigImpl; // The built assets are dependencies of linking, as the linking should be // rerun if they change. final builtAssetsFiles = config.assets.map((asset) => asset.file).whereType().toList(); - final linkOutput = BuildOutputImpl( + final linkOutput = HookOutputImpl( dependencies: Dependencies(builtAssetsFiles), ); await builder(config, linkOutput); diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index fd27c7a9d..b6fa31f24 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -45,6 +45,17 @@ abstract class LinkConfig { List get resources; /// Generate the [LinkConfig] from the input arguments to the linking script. - factory LinkConfig(List arguments) => + factory LinkConfig.fromArguments(List arguments) => LinkConfigImpl.fromArguments(arguments); + + factory LinkConfig({ + required Uri? resourceIdentifierUri, + required BuildConfigImpl buildConfig, + required List assetsForLinking, + }) => + LinkConfigImpl.fromValues( + resourceIdentifierUri: resourceIdentifierUri, + buildConfig: buildConfig, + assetsForLinking: assetsForLinking, + ); } diff --git a/pkgs/native_assets_cli/lib/src/api/link_output.dart b/pkgs/native_assets_cli/lib/src/api/link_output.dart index 3d8812034..4cbb9c248 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_output.dart @@ -41,4 +41,15 @@ abstract final class LinkOutput { /// Adds [Asset]s produced by this link or dry run. void linkAssets(Iterable assets); + + factory LinkOutput({ + required List assets, + required Dependencies dependencies, + required DateTime timestamp, + }) => + HookOutputImpl( + assets: assets, + dependencies: dependencies, + timestamp: timestamp, + ); } diff --git a/pkgs/native_assets_cli/lib/src/api/resource.dart b/pkgs/native_assets_cli/lib/src/api/resource.dart index d3a509031..7d7c4b087 100644 --- a/pkgs/native_assets_cli/lib/src/api/resource.dart +++ b/pkgs/native_assets_cli/lib/src/api/resource.dart @@ -1,6 +1,20 @@ /// Identifies a call site of a static method annotated with the /// `ResourceIdentifier` annotation. It consists of the [name] of the /// method, and the [metadata] used in the constructor of the annotation. +/// +/// Example: +/// ```dart +/// @ResourceAnnotation('add_func') +/// static external add(int i, int j); +/// ``` +/// will result in the `Resource` object: +/// ```dart +/// Resource(name: 'add', metadata: 'add_func') +/// ``` +/// +/// See also +/// https://pub.dev/documentation/meta/latest/meta/ResourceIdentifier-class.html +/// . class Resource { /// The name of the method which was called. final String name; diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index fae4f2361..6df49381f 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -9,7 +9,8 @@ abstract final class AssetImpl implements Asset { static List listFromJson(List? list) { final assets = []; - for (final jsonElement in list ?? []) { + if (list == null) return assets; + for (final jsonElement in list) { final jsonMap = as>(jsonElement); final type = jsonMap[NativeCodeAssetImpl.typeKey]; switch (type) { diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index b32bfcb52..2b78f3a40 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -4,15 +4,15 @@ part of '../api/build_config.dart'; -final class BuildConfigImpl extends PipelineConfigImpl implements BuildConfig { +final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { @override Uri get script { final hookScript = - packageRoot.resolve('hook/').resolve(PipelineStep.build.scriptName); + packageRoot.resolve('hook/').resolve(Hook.build.scriptName); if (File.fromUri(hookScript).existsSync()) { return hookScript; } else { - return packageRoot.resolve(PipelineStep.build.scriptName); + return packageRoot.resolve(Hook.build.scriptName); } } diff --git a/pkgs/native_assets_cli/lib/src/model/build_config_CHANGELOG.md b/pkgs/native_assets_cli/lib/src/model/build_config_CHANGELOG.md index 4c571dba1..6d4c5b415 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config_CHANGELOG.md +++ b/pkgs/native_assets_cli/lib/src/model/build_config_CHANGELOG.md @@ -1,7 +1,8 @@ ## 1.3.0 -- Rev version to know whether the Dart/Flutter SDK can consume `BuildOutput.assetsForLinking`. - the key will not be read and the list of assets to be linked will be empty. +- Rev version to know whether the Dart/Flutter SDK can consume + `BuildOutput.assetsForLinking`. In earlier versions the key will not be read + and the list of assets to be linked will be empty. ## 1.2.0 diff --git a/pkgs/native_assets_cli/lib/src/model/pipeline_step.dart b/pkgs/native_assets_cli/lib/src/model/hook.dart similarity index 71% rename from pkgs/native_assets_cli/lib/src/model/pipeline_step.dart rename to pkgs/native_assets_cli/lib/src/model/hook.dart index 91a718e73..12e82fd47 100644 --- a/pkgs/native_assets_cli/lib/src/model/pipeline_step.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook.dart @@ -6,11 +6,13 @@ /// /// The `build.dart` script runs before, and the `link.dart` script after /// compilation. -enum PipelineStep { - link('link.dart'), - build('build.dart'); +enum Hook { + link('link'), + build('build'); - final String scriptName; + final String _scriptName; - const PipelineStep(this.scriptName); + String get scriptName => '$_scriptName.dart'; + + const Hook(this._scriptName); } diff --git a/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart b/pkgs/native_assets_cli/lib/src/model/hook_config.dart similarity index 93% rename from pkgs/native_assets_cli/lib/src/model/pipeline_config.dart rename to pkgs/native_assets_cli/lib/src/model/hook_config.dart index 0a7824ca2..498e77bad 100644 --- a/pkgs/native_assets_cli/lib/src/model/pipeline_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook_config.dart @@ -4,7 +4,7 @@ import 'package:pub_semver/pub_semver.dart'; -abstract class PipelineConfigImpl { +abstract class HookConfigImpl { Uri get configFile; Uri get outputFile => outputDirectory.resolve(outputName); diff --git a/pkgs/native_assets_cli/lib/src/model/build_output.dart b/pkgs/native_assets_cli/lib/src/model/hook_output.dart similarity index 92% rename from pkgs/native_assets_cli/lib/src/model/build_output.dart rename to pkgs/native_assets_cli/lib/src/model/hook_output.dart index 038816c99..ba12b56e1 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook_output.dart @@ -4,7 +4,7 @@ part of '../api/build_output.dart'; -final class BuildOutputImpl implements BuildOutput, LinkOutput { +final class HookOutputImpl implements BuildOutput, LinkOutput { @override final DateTime timestamp; @@ -27,7 +27,7 @@ final class BuildOutputImpl implements BuildOutput, LinkOutput { final Metadata metadata; - BuildOutputImpl({ + HookOutputImpl({ DateTime? timestamp, List? assets, Map>? assetsForLinking, @@ -56,7 +56,7 @@ final class BuildOutputImpl implements BuildOutput, LinkOutput { static const _timestampKey = 'timestamp'; static const _versionKey = 'version'; - factory BuildOutputImpl.fromJsonString(String jsonString) { + factory HookOutputImpl.fromJsonString(String jsonString) { final Object? json; if (jsonString.startsWith('{')) { json = jsonDecode(jsonString); @@ -65,10 +65,10 @@ final class BuildOutputImpl implements BuildOutput, LinkOutput { // remove the YAML fallback. json = loadYaml(jsonString); } - return BuildOutputImpl.fromJson(as>(json)); + return HookOutputImpl.fromJson(as>(json)); } - factory BuildOutputImpl.fromJson(Map jsonMap) { + factory HookOutputImpl.fromJson(Map jsonMap) { final outputVersion = Version.parse(as(jsonMap['version'])); if (outputVersion.major > latestVersion.major) { throw FormatException( @@ -84,7 +84,7 @@ final class BuildOutputImpl implements BuildOutput, LinkOutput { 'Flutter, please update native_assets_cli.', ); } - return BuildOutputImpl( + return HookOutputImpl( timestamp: DateTime.parse(as(jsonMap[_timestampKey])), assets: AssetImpl.listFromJson(as?>(jsonMap[_assetsKey])), assetsForLinking: as?>(jsonMap[_assetsForLinkingKey]) @@ -143,7 +143,7 @@ final class BuildOutputImpl implements BuildOutput, LinkOutput { String toJsonString(Version version) => const JsonEncoder.withIndent(' ').convert(toJson(version)); - /// The version of [BuildOutputImpl]. + /// The version of [HookOutputImpl]. /// /// This class is used in the protocol between the Dart and Flutter SDKs and /// packages through build hook invocations. @@ -160,17 +160,17 @@ final class BuildOutputImpl implements BuildOutput, LinkOutput { static Version latestVersion = BuildConfigImpl.latestVersion; /// Writes the JSON file from [file]. - static BuildOutputImpl? readFromFile({required Uri file}) { + static HookOutputImpl? readFromFile({required Uri file}) { final buildOutputFile = File.fromUri(file); if (buildOutputFile.existsSync()) { - return BuildOutputImpl.fromJsonString(buildOutputFile.readAsStringSync()); + return HookOutputImpl.fromJsonString(buildOutputFile.readAsStringSync()); } return null; } /// Writes the [toJsonString] to the output file specified in the [config]. - Future writeToFile({required PipelineConfigImpl config}) async { + Future writeToFile({required HookConfigImpl config}) async { final configVersion = config.version; final jsonString = toJsonString(configVersion); await File.fromUri(config.outputFile) @@ -182,7 +182,7 @@ final class BuildOutputImpl implements BuildOutput, LinkOutput { @override bool operator ==(Object other) { - if (other is! BuildOutputImpl) { + if (other is! HookOutputImpl) { return false; } return other.timestamp == timestamp && diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index f25bbf8f4..de0ad2099 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -9,7 +9,7 @@ part of '../api/link_config.dart'; /// It consists of the [_buildConfig] already passed to the build script, the /// [assets] from the build step, and the [resources] generated during the /// kernel compilation. -class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { +class LinkConfigImpl extends HookConfigImpl implements LinkConfig { @override final List assets; @@ -18,7 +18,7 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { @override final List resources; - final LinkConfigArgs _args; + final _LinkConfigArgs _args; LinkConfigImpl( this._args, { @@ -44,8 +44,7 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { Uri get packageRoot => _buildConfig.packageRoot; @override - Uri get script => - packageRoot.resolve('hook/').resolve(PipelineStep.link.scriptName); + Uri get script => packageRoot.resolve('hook/').resolve(Hook.link.scriptName); @override String toJsonString() => @@ -55,7 +54,18 @@ class LinkConfigImpl extends PipelineConfigImpl implements LinkConfig { Version get version => _buildConfig.version; static LinkConfig fromArguments(List arguments) => - LinkConfigArgs.fromArguments(arguments).toLinkConfig(); + _LinkConfigArgs.fromArguments(arguments).toLinkConfig(); + + factory LinkConfigImpl.fromValues({ + required Uri? resourceIdentifierUri, + required BuildConfigImpl buildConfig, + required List assetsForLinking, + }) => + _LinkConfigArgs( + assetsForLinking: assetsForLinking, + buildConfig: buildConfig, + resourceIdentifierUri: resourceIdentifierUri, + ).toLinkConfig(); } List fromIdentifiers(ResourceIdentifiers? resourceIdentifiers) => @@ -63,7 +73,7 @@ List fromIdentifiers(ResourceIdentifiers? resourceIdentifiers) => .map((e) => Resource(name: e.name, metadata: e.id)) .toList(); -class LinkConfigArgs { +class _LinkConfigArgs { final Uri? resourceIdentifierUri; final BuildConfigImpl buildConfig; final List assetsForLinking; @@ -72,13 +82,13 @@ class LinkConfigArgs { static const buildConfigKey = 'build_config'; static const assetsKey = 'assets'; - LinkConfigArgs({ + _LinkConfigArgs({ required this.resourceIdentifierUri, required this.buildConfig, required this.assetsForLinking, }); - factory LinkConfigArgs.fromArguments(List arguments) { + factory _LinkConfigArgs.fromArguments(List arguments) { final argParser = ArgParser()..addOption('config'); final results = argParser.parse(arguments); @@ -87,10 +97,10 @@ class LinkConfigArgs { final linkConfigJson = jsonDecode(linkConfigContents) as Map; - return LinkConfigArgs.fromJson(linkConfigJson); + return _LinkConfigArgs.fromJson(linkConfigJson); } - factory LinkConfigArgs.fromJson(Map linkConfigJson) { + factory _LinkConfigArgs.fromJson(Map linkConfigJson) { final resourcesPath = linkConfigJson[resourceIdentifierKey] as String?; final buildConfigJson = linkConfigJson[buildConfigKey] as Map; @@ -98,7 +108,7 @@ class LinkConfigArgs { if (assetList == null) { throw ArgumentError('Expected to find the assetList in $linkConfigJson'); } - return LinkConfigArgs( + return _LinkConfigArgs( resourceIdentifierUri: resourcesPath != null ? Uri.file(resourcesPath) : null, buildConfig: BuildConfigImpl.fromJson(buildConfigJson), diff --git a/pkgs/native_assets_cli/lib/src/model/native_code_asset.dart b/pkgs/native_assets_cli/lib/src/model/native_code_asset.dart index 3073a5855..a1c6811bc 100644 --- a/pkgs/native_assets_cli/lib/src/model/native_code_asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/native_code_asset.dart @@ -363,5 +363,5 @@ final class NativeCodeAssetImpl implements NativeCodeAsset, AssetImpl { @override String toString() => - 'NativeCodeAsset(${toJson(BuildOutputImpl.latestVersion)})'; + 'NativeCodeAsset(${toJson(HookOutputImpl.latestVersion)})'; } diff --git a/pkgs/native_assets_cli/test/example/local_asset_test.dart b/pkgs/native_assets_cli/test/example/local_asset_test.dart index 7c44c590b..ce484b754 100644 --- a/pkgs/native_assets_cli/test/example/local_asset_test.dart +++ b/pkgs/native_assets_cli/test/example/local_asset_test.dart @@ -68,7 +68,7 @@ void main() async { expect(processResult.exitCode, 0); final buildOutputUri = tempUri.resolve('build_output.json'); - final buildOutput = BuildOutputImpl.fromJsonString( + final buildOutput = HookOutputImpl.fromJsonString( await File.fromUri(buildOutputUri).readAsString()); final assets = buildOutput.assets; final dependencies = buildOutput.dependencies; diff --git a/pkgs/native_assets_cli/test/example/native_add_library_test.dart b/pkgs/native_assets_cli/test/example/native_add_library_test.dart index 5d44c559b..6f3c17a67 100644 --- a/pkgs/native_assets_cli/test/example/native_add_library_test.dart +++ b/pkgs/native_assets_cli/test/example/native_add_library_test.dart @@ -68,7 +68,7 @@ void main() async { expect(processResult.exitCode, 0); final buildOutputUri = tempUri.resolve('build_output.json'); - final buildOutput = BuildOutputImpl.fromJsonString( + final buildOutput = HookOutputImpl.fromJsonString( await File.fromUri(buildOutputUri).readAsString()); final assets = buildOutput.assets; final dependencies = buildOutput.dependencies; diff --git a/pkgs/native_assets_cli/test/model/asset_test.dart b/pkgs/native_assets_cli/test/model/asset_test.dart index aa5e6b476..77a5e1b45 100644 --- a/pkgs/native_assets_cli/test/model/asset_test.dart +++ b/pkgs/native_assets_cli/test/model/asset_test.dart @@ -172,7 +172,7 @@ void main() { test('asset yaml', () { final json = [ - for (final item in assets) item.toJson(BuildOutputImpl.latestVersion) + for (final item in assets) item.toJson(HookOutputImpl.latestVersion) ]; expect(json, assetsJsonEncoding); final assets2 = AssetImpl.listFromJson(json); diff --git a/pkgs/native_assets_cli/test/model/build_config_test.dart b/pkgs/native_assets_cli/test/model/build_config_test.dart index fca954a0a..ae647175e 100644 --- a/pkgs/native_assets_cli/test/model/build_config_test.dart +++ b/pkgs/native_assets_cli/test/model/build_config_test.dart @@ -117,7 +117,7 @@ void main() async { 'target_android_ndk_api': 30, 'target_architecture': 'arm64', 'target_os': 'android', - 'version': BuildOutputImpl.latestVersion.toString(), + 'version': HookOutputImpl.latestVersion.toString(), }); final fromConfig = BuildConfigImpl.fromConfig(config); @@ -140,7 +140,7 @@ void main() async { 'package_name': packageName, 'package_root': packageRootUri.toFilePath(), 'target_os': 'android', - 'version': BuildOutputImpl.latestVersion.toString(), + 'version': HookOutputImpl.latestVersion.toString(), }); final fromConfig = BuildConfigImpl.fromConfig(config); @@ -677,7 +677,7 @@ version: 1.0.0'''; 'target_android_ndk_api': 30, 'target_architecture': 'invalid_architecture', 'target_os': 'android', - 'version': BuildOutputImpl.latestVersion.toString(), + 'version': HookOutputImpl.latestVersion.toString(), }); expect( () => BuildConfigImpl.fromConfig(config), diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index 69b51a660..bd7ef2950 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -20,7 +20,7 @@ void main() { await Directory.fromUri(tempUri).delete(recursive: true); }); - final dryRunOutput = BuildOutputImpl( + final dryRunOutput = HookOutputImpl( timestamp: DateTime.parse('2022-11-10 13:25:01.000'), assets: [ NativeCodeAssetImpl( @@ -154,22 +154,22 @@ version: 1.0.0'''; Uri.file('path/to/file.ext').toFilePath(), ], 'metadata': {'key': 'value'}, - 'version': '${BuildOutputImpl.latestVersion}' + 'version': '${HookOutputImpl.latestVersion}' }; test('built info json', () { final buildOutput = getBuildOutput(); - final json = buildOutput.toJson(BuildOutputImpl.latestVersion); + final json = buildOutput.toJson(HookOutputImpl.latestVersion); expect(json, jsonEncoding); - final buildOutput2 = BuildOutputImpl.fromJson(json); + final buildOutput2 = HookOutputImpl.fromJson(json); expect(buildOutput.hashCode, buildOutput2.hashCode); expect(buildOutput, buildOutput2); }); test('built info yaml v1.0.0 parsing keeps working', () { final buildOutput = getBuildOutput(withLinkedAssets: false); - final buildOutput2 = BuildOutputImpl.fromJsonString(yamlEncodingV1_0_0); + final buildOutput2 = HookOutputImpl.fromJsonString(yamlEncodingV1_0_0); expect(buildOutput.hashCode, buildOutput2.hashCode); expect(buildOutput, buildOutput2); }); @@ -191,10 +191,10 @@ version: 1.0.0'''; test('BuildOutput.hashCode', () { final buildOutput = getBuildOutput(); - final buildOutput2 = BuildOutputImpl.fromJson(jsonEncoding); + final buildOutput2 = HookOutputImpl.fromJson(jsonEncoding); expect(buildOutput.hashCode, buildOutput2.hashCode); - final buildOutput3 = BuildOutputImpl( + final buildOutput3 = HookOutputImpl( timestamp: DateTime.parse('2022-11-10 13:25:01.000'), ); expect(buildOutput.hashCode != buildOutput3.hashCode, true); @@ -216,7 +216,7 @@ version: 1.0.0'''; ); final buildOutput = getBuildOutput(); await buildOutput.writeToFile(config: config); - final buildOutput2 = BuildOutputImpl.readFromFile(file: config.outputFile); + final buildOutput2 = HookOutputImpl.readFromFile(file: config.outputFile); expect(buildOutput2, buildOutput); }); @@ -237,12 +237,12 @@ version: 1.0.0'''; ); final buildOutput = getBuildOutput(withLinkedAssets: false); await buildOutput.writeToFile(config: config); - final buildOutput2 = BuildOutputImpl.readFromFile(file: config.outputFile); + final buildOutput2 = HookOutputImpl.readFromFile(file: config.outputFile); expect(buildOutput2, buildOutput); }); test('Round timestamp', () { - final buildOutput3 = BuildOutputImpl( + final buildOutput3 = HookOutputImpl( timestamp: DateTime.parse('2022-11-10 13:25:01.372257'), ); expect(buildOutput3.timestamp, DateTime.parse('2022-11-10 13:25:01.000')); @@ -251,12 +251,12 @@ version: 1.0.0'''; for (final version in ['9001.0.0', '0.0.1']) { test('BuildOutput version $version', () { expect( - () => BuildOutputImpl.fromJsonString('version: $version'), + () => HookOutputImpl.fromJsonString('version: $version'), throwsA(predicate( (e) => e is FormatException && e.message.contains(version) && - e.message.contains(BuildOutputImpl.latestVersion.toString()), + e.message.contains(HookOutputImpl.latestVersion.toString()), )), ); }); @@ -264,7 +264,7 @@ version: 1.0.0'''; test('format exception', () { expect( - () => BuildOutputImpl.fromJsonString('''timestamp: 2022-11-10 13:25:01.000 + () => HookOutputImpl.fromJsonString('''timestamp: 2022-11-10 13:25:01.000 assets: - name: foo link_mode: dynamic @@ -280,7 +280,7 @@ version: 1.0.0'''), throwsFormatException, ); expect( - () => BuildOutputImpl.fromJsonString('''timestamp: 2022-11-10 13:25:01.000 + () => HookOutputImpl.fromJsonString('''timestamp: 2022-11-10 13:25:01.000 assets: - name: foo link_mode: dynamic @@ -296,7 +296,7 @@ version: 1.0.0'''), throwsFormatException, ); expect( - () => BuildOutputImpl.fromJsonString('''timestamp: 2022-11-10 13:25:01.000 + () => HookOutputImpl.fromJsonString('''timestamp: 2022-11-10 13:25:01.000 assets: - name: foo link_mode: dynamic @@ -313,7 +313,7 @@ version: 1.0.0'''), }); test('BuildOutput dependencies can be modified', () { - final buildOutput = BuildOutputImpl(); + final buildOutput = HookOutputImpl(); expect( () => buildOutput.addDependencies([Uri.file('path/to/file.ext')]), returnsNormally, @@ -321,7 +321,7 @@ version: 1.0.0'''), }); test('BuildOutput setters', () { - final buildOutput = BuildOutputImpl( + final buildOutput = HookOutputImpl( timestamp: DateTime.parse('2022-11-10 13:25:01.000'), assets: [ NativeCodeAssetImpl( @@ -348,7 +348,7 @@ version: 1.0.0'''), }), ); - final buildOutput2 = BuildOutputImpl( + final buildOutput2 = HookOutputImpl( timestamp: DateTime.parse('2022-11-10 13:25:01.000'), ); buildOutput2.addAsset( @@ -386,60 +386,57 @@ version: 1.0.0'''), }); } -BuildOutputImpl getBuildOutput({bool withLinkedAssets = true}) { - final assetsForLinking = withLinkedAssets - ? { - 'my_package': [ - DataAssetImpl( - file: Uri.file('path/to/data'), - name: 'data', - package: 'my_package', - ) - ], - 'my_package_2': [ - DataAssetImpl( - file: Uri.file('path/to/data2'), - name: 'data', - package: 'my_package', - ) - ] - } - : null; - return BuildOutputImpl( - timestamp: DateTime.parse('2022-11-10 13:25:01.000'), - assets: [ - NativeCodeAssetImpl( - id: 'package:my_package/foo', - file: Uri(path: 'path/to/libfoo.so'), - linkMode: DynamicLoadingBundledImpl(), - os: OSImpl.android, - architecture: ArchitectureImpl.x64, - ), - NativeCodeAssetImpl( - id: 'package:my_package/foo2', - linkMode: DynamicLoadingSystemImpl(Uri(path: 'path/to/libfoo2.so')), - os: OSImpl.android, - architecture: ArchitectureImpl.x64, - ), - NativeCodeAssetImpl( - id: 'package:my_package/foo3', - linkMode: LookupInProcessImpl(), - os: OSImpl.android, - architecture: ArchitectureImpl.x64, - ), - NativeCodeAssetImpl( - id: 'package:my_package/foo4', - linkMode: LookupInExecutableImpl(), - os: OSImpl.android, - architecture: ArchitectureImpl.x64, - ), - ], - assetsForLinking: assetsForLinking, - dependencies: Dependencies([ - Uri.file('path/to/file.ext'), - ]), - metadata: const Metadata({ - 'key': 'value', - }), - ); -} +HookOutputImpl getBuildOutput({bool withLinkedAssets = true}) => HookOutputImpl( + timestamp: DateTime.parse('2022-11-10 13:25:01.000'), + assets: [ + NativeCodeAssetImpl( + id: 'package:my_package/foo', + file: Uri(path: 'path/to/libfoo.so'), + linkMode: DynamicLoadingBundledImpl(), + os: OSImpl.android, + architecture: ArchitectureImpl.x64, + ), + NativeCodeAssetImpl( + id: 'package:my_package/foo2', + linkMode: DynamicLoadingSystemImpl(Uri(path: 'path/to/libfoo2.so')), + os: OSImpl.android, + architecture: ArchitectureImpl.x64, + ), + NativeCodeAssetImpl( + id: 'package:my_package/foo3', + linkMode: LookupInProcessImpl(), + os: OSImpl.android, + architecture: ArchitectureImpl.x64, + ), + NativeCodeAssetImpl( + id: 'package:my_package/foo4', + linkMode: LookupInExecutableImpl(), + os: OSImpl.android, + architecture: ArchitectureImpl.x64, + ), + ], + assetsForLinking: withLinkedAssets + ? { + 'my_package': [ + DataAssetImpl( + file: Uri.file('path/to/data'), + name: 'data', + package: 'my_package', + ) + ], + 'my_package_2': [ + DataAssetImpl( + file: Uri.file('path/to/data2'), + name: 'data', + package: 'my_package', + ) + ] + } + : null, + dependencies: Dependencies([ + Uri.file('path/to/file.ext'), + ]), + metadata: const Metadata({ + 'key': 'value', + }), + ); diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart index 84743e9a8..a0ff5cc82 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart @@ -256,17 +256,20 @@ class CBuilder implements Builder { } if (assetName != null) { - buildOutput.addAssets([ - NativeCodeAsset( - package: buildConfig.packageName, - name: assetName!, - file: libUri, - linkMode: linkMode, - os: buildConfig.targetOS, - architecture: - buildConfig.dryRun ? null : buildConfig.targetArchitecture, - ) - ], linkInPackage: linkInPackage); + buildOutput.addAssets( + [ + NativeCodeAsset( + package: buildConfig.packageName, + name: assetName!, + file: libUri, + linkMode: linkMode, + os: buildConfig.targetOS, + architecture: + buildConfig.dryRun ? null : buildConfig.targetArchitecture, + ) + ], + linkInPackage: linkInPackage, + ); } if (!buildConfig.dryRun) { final includeFiles = await Stream.fromIterable(includes) diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart index c26b89b50..3ff4560ef 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/run_cbuilder.dart @@ -156,18 +156,6 @@ class RunCBuilder { ); objectFiles.add(objectFile); } - } else { - await _compile( - compiler, - architecture, - targetAndroidNdkApi, - targetIosSdk, - sourceFiles, - dynamicLibrary != null ? outDir.resolveUri(dynamicLibrary!) : null, - ); - } - - if (staticLibrary != null) { await runProcess( executable: archiver_!, arguments: [ @@ -179,6 +167,15 @@ class RunCBuilder { captureOutput: false, throwOnUnexpectedExitCode: true, ); + } else { + await _compile( + compiler, + architecture, + targetAndroidNdkApi, + targetIosSdk, + sourceFiles, + dynamicLibrary != null ? outDir.resolveUri(dynamicLibrary!) : null, + ); } } From 103945dc519d7d125eba570105e6be8430d86a43 Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 9 Apr 2024 16:21:58 +0200 Subject: [PATCH 135/187] Fix issue --- pkgs/native_assets_cli/lib/src/model/link_config.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index de0ad2099..1374eea34 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -20,7 +20,7 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { final _LinkConfigArgs _args; - LinkConfigImpl( + LinkConfigImpl._( this._args, { required this.assets, required BuildConfigImpl buildConfig, @@ -116,7 +116,7 @@ class _LinkConfigArgs { ); } - LinkConfigImpl toLinkConfig() => LinkConfigImpl( + LinkConfigImpl toLinkConfig() => LinkConfigImpl._( this, buildConfig: buildConfig, resourceIdentifiers: resourceIdentifierUri != null From f84fa17cf3d80e66d69f34ca5990a0f4b72e6986 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 10 Apr 2024 09:37:37 +0200 Subject: [PATCH 136/187] Changes as per review --- .../lib/src/build_runner/build_runner.dart | 17 ++++++++------ .../lib/src/model/build_config.dart | 2 ++ .../test/model/build_config_test.dart | 22 +++++++++++-------- .../lib/src/cbuilder/cbuilder.dart | 7 +++--- 4 files changed, 29 insertions(+), 19 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 6d6d92f2c..902d68b87 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -53,7 +53,7 @@ class NativeAssetsBuildRunner { Iterable? supportedAssetTypes, }) async => _run( - step: Hook.build, + hook: Hook.build, linkModePreference: linkModePreference, target: target, workingDirectory: workingDirectory, @@ -89,7 +89,7 @@ class NativeAssetsBuildRunner { required BuildResult buildResult, }) async => _run( - step: Hook.link, + hook: Hook.link, linkModePreference: LinkModePreferenceImpl.dynamic, target: target, workingDirectory: workingDirectory, @@ -107,7 +107,7 @@ class NativeAssetsBuildRunner { /// The common method for running building or linking of assets. Future _run({ - required Hook step, + required Hook hook, required LinkModePreferenceImpl linkModePreference, required Target target, required Uri workingDirectory, @@ -122,10 +122,10 @@ class NativeAssetsBuildRunner { Iterable? supportedAssetTypes, BuildResult? buildResult, }) async { - assert(step == Hook.link || buildResult == null); + assert(hook == Hook.link || buildResult == null); packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); - final packagesWithBuild = await packageLayout.packagesWithAssets(step); + final packagesWithBuild = await packageLayout.packagesWithAssets(hook); final (buildPlan, packageGraph, planSuccess) = await _plannedPackages( packagesWithBuild, packageLayout, runPackageName); final hookResult = HookResult.failure(); @@ -152,9 +152,10 @@ class NativeAssetsBuildRunner { targetIOSSdk: targetIOSSdk, targetAndroidNdkApi: targetAndroidNdkApi, supportedAssetTypes: supportedAssetTypes, + hook: hook, ); final HookConfigImpl config; - if (step == Hook.link) { + if (hook == Hook.link) { config = LinkConfigImpl.fromValues( resourceIdentifierUri: resourceIdentifiers, buildConfig: buildConfig, @@ -166,7 +167,7 @@ class NativeAssetsBuildRunner { } final (buildOutput, packageSuccess) = await _buildPackageCached( - step, + hook, config, packageLayout.packageConfigUri, workingDirectory, @@ -397,6 +398,7 @@ Contents: ${File.fromUri(config.outputFile).readAsStringSync()}. CCompilerConfigImpl? cCompilerConfig, DependencyMetadata? dependencyMetadata, Iterable? supportedAssetTypes, + required Hook hook, }) async { final buildDirName = BuildConfigImpl.checksum( packageName: packageName, @@ -410,6 +412,7 @@ Contents: ${File.fromUri(config.outputFile).readAsStringSync()}. dependencyMetadata: dependencyMetadata, targetAndroidNdkApi: targetAndroidNdkApi, supportedAssetTypes: supportedAssetTypes, + hook: hook, ); final outDirUri = buildParentDir.resolve('$buildDirName/out/'); final outDir = Directory.fromUri(outDirUri); diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index 2b78f3a40..5620ab49c 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -193,6 +193,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { Map? dependencyMetadata, Iterable? supportedAssetTypes, Version? version, + required Hook hook, }) { final input = [ version ?? latestVersion, @@ -214,6 +215,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { json.encode(entry.value.toJson()), ], ..._supportedAssetTypesBackwardsCompatibility(supportedAssetTypes), + hook.name, ].join('###'); final sha256String = sha256.convert(utf8.encode(input)).toString(); // 256 bit hashes lead to 64 hex character strings. diff --git a/pkgs/native_assets_cli/test/model/build_config_test.dart b/pkgs/native_assets_cli/test/model/build_config_test.dart index ae647175e..8fd4e8193 100644 --- a/pkgs/native_assets_cli/test/model/build_config_test.dart +++ b/pkgs/native_assets_cli/test/model/build_config_test.dart @@ -541,6 +541,7 @@ version: 1.0.0'''; buildMode: BuildModeImpl.release, linkModePreference: LinkModePreferenceImpl.dynamic, supportedAssetTypes: [NativeCodeAsset.type], + hook: Hook.build, ); // Using the checksum for a build folder should be stable. @@ -557,21 +558,24 @@ version: 1.0.0'''; dependencyMetadata: { 'foo': const Metadata({'key': 'value'}) }, + hook: Hook.build, ); printOnFailure([name1, name2].toString()); expect(name1 != name2, true); // Build folder different due to cc. final name3 = BuildConfigImpl.checksum( - packageName: packageName, - packageRoot: nativeAddUri, - targetArchitecture: ArchitectureImpl.x64, - targetOS: OSImpl.linux, - buildMode: BuildModeImpl.release, - linkModePreference: LinkModePreferenceImpl.dynamic, - cCompiler: CCompilerConfigImpl( - compiler: fakeClangUri, - )); + packageName: packageName, + packageRoot: nativeAddUri, + targetArchitecture: ArchitectureImpl.x64, + targetOS: OSImpl.linux, + buildMode: BuildModeImpl.release, + linkModePreference: LinkModePreferenceImpl.dynamic, + cCompiler: CCompilerConfigImpl( + compiler: fakeClangUri, + ), + hook: Hook.build, + ); printOnFailure([name1, name3].toString()); expect(name1 != name3, true); }); diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart index a0ff5cc82..5bffb92f7 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart @@ -152,9 +152,10 @@ class CBuilder implements Builder { /// | Fuchsia | `c++` | final String? cppLinkStdLib; - /// How the built code asset should be linked, This determines whether to - /// produce a dynamic or static library. If null, the value is instead - /// retrieved from the [BuildConfig]. + /// If the code asset should be a dynamic or static library. + /// + /// This determines whether to produce a dynamic or static library. If null, + /// the value is instead retrieved from the [BuildConfig]. final LinkModePreference? linkModePreference; CBuilder.library({ From c882ee99b5a990fcecb7f6d07d67b9f4893a7838 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 10 Apr 2024 09:46:26 +0200 Subject: [PATCH 137/187] Fix tests --- .../test_data/complex_link/hook/build.dart | 2 +- .../test_data/complex_link_helper/hook/build.dart | 5 +++-- .../test_data/simple_link/hook/build.dart | 3 +-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/native_assets_builder/test_data/complex_link/hook/build.dart b/pkgs/native_assets_builder/test_data/complex_link/hook/build.dart index 019ad0afa..17e528ac4 100644 --- a/pkgs/native_assets_builder/test_data/complex_link/hook/build.dart +++ b/pkgs/native_assets_builder/test_data/complex_link/hook/build.dart @@ -13,7 +13,7 @@ void main(List args) async => build(args, (config, output) async { (index) => DataAsset( name: 'data_$index', // TODO(mosuem): Simplify specifying files/file paths - file: config.packageRoot.resolve('data_$index.json'), + file: config.packageRoot.resolve('assets/data_$index.json'), package: packageName, ), ), diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/hook/build.dart b/pkgs/native_assets_builder/test_data/complex_link_helper/hook/build.dart index 8b775a0ee..3245391fd 100644 --- a/pkgs/native_assets_builder/test_data/complex_link_helper/hook/build.dart +++ b/pkgs/native_assets_builder/test_data/complex_link_helper/hook/build.dart @@ -13,7 +13,7 @@ void main(List args) async => build(args, (config, output) async { (index) => DataAsset( name: 'data_helper_$index', // TODO(mosuem): Simplify specifying files/file paths - file: config.packageRoot.resolve('data_helper_$index.json'), + file: config.packageRoot.resolve('assets/data_helper_$index.json'), package: packageName, ), ), @@ -24,7 +24,8 @@ void main(List args) async => build(args, (config, output) async { (index) => DataAsset( name: 'data_helper_${index + 2}', // TODO(mosuem): Simplify specifying files/file paths - file: config.packageRoot.resolve('data_helper_${index + 2}.json'), + file: config.packageRoot + .resolve('assets/data_helper_${index + 2}.json'), package: packageName, ), ), diff --git a/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart b/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart index 794ef9458..2f19866cd 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart @@ -3,7 +3,6 @@ // BSD-style license that can be found in the LICENSE file. import 'package:native_assets_cli/native_assets_cli.dart'; -import 'package:path/path.dart' as p; const packageName = 'simple_link'; @@ -14,7 +13,7 @@ void main(List args) async => build(args, (config, output) async { (index) => DataAsset( name: 'data_$index', // TODO(mosuem): Simplify specifying files/file paths - file: Uri.file(p.absolute('data_$index.json')), + file: config.packageRoot.resolve('assets/data_$index.json'), package: packageName, ), ), From e3dfa219e574e7d22748175536f994666f1e9394 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 10 Apr 2024 09:53:20 +0200 Subject: [PATCH 138/187] Add test --- .../test/model/build_config_test.dart | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/pkgs/native_assets_cli/test/model/build_config_test.dart b/pkgs/native_assets_cli/test/model/build_config_test.dart index 8fd4e8193..c766bd1f2 100644 --- a/pkgs/native_assets_cli/test/model/build_config_test.dart +++ b/pkgs/native_assets_cli/test/model/build_config_test.dart @@ -545,7 +545,7 @@ version: 1.0.0'''; ); // Using the checksum for a build folder should be stable. - expect(name1, '1cee460809d989b4af7c75a0d53378e6'); + expect(name1, 'b6170f6f00000d3766b01cea7637b607'); // Build folder different due to metadata. final name2 = BuildConfigImpl.checksum( @@ -578,6 +578,22 @@ version: 1.0.0'''; ); printOnFailure([name1, name3].toString()); expect(name1 != name3, true); + + // Build folder different due to hook. + final name4 = BuildConfigImpl.checksum( + packageName: packageName, + packageRoot: nativeAddUri, + targetArchitecture: ArchitectureImpl.x64, + targetOS: OSImpl.linux, + buildMode: BuildModeImpl.release, + linkModePreference: LinkModePreferenceImpl.dynamic, + cCompiler: CCompilerConfigImpl( + compiler: fakeClangUri, + ), + hook: Hook.link, + ); + printOnFailure([name1, name4].toString()); + expect(name1 != name4, true); }); }); From b248d3cb617d68bdfe1fa38988fe160892c2aa38 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 10 Apr 2024 10:57:55 +0200 Subject: [PATCH 139/187] Do not delete asset file --- .../test_data/treeshaking_native_assets/hook/link.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart index 8905618c0..b8846a157 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart @@ -35,8 +35,6 @@ Future _treeshakeStaticLibrary( LinkableAsset dynamicLibrary, LinkableAsset staticLibrary, ) async { - // This removes the placeholder file. - File.fromUri(dynamicLibrary.file!).deleteSync(); final arguments = [ '-fPIC', '-shared', From 0f8eb1f006e2ed5d7cb3d8b41858fcf36279b29f Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 10 Apr 2024 17:26:47 +0200 Subject: [PATCH 140/187] Add licenses --- pkgs/native_assets_builder/lib/src/model/build_result.dart | 4 ++++ pkgs/native_assets_builder/lib/src/model/dry_run_result.dart | 4 ++++ pkgs/native_assets_builder/lib/src/model/forge_result.dart | 4 ++++ pkgs/native_assets_builder/lib/src/model/link_result.dart | 4 ++++ .../bin/app_with_asset_treeshaking.dart | 4 ++++ .../lib/app_with_asset_treeshaking.dart | 4 ++++ .../link/package_with_assets/lib/package_with_assets.dart | 4 ++++ pkgs/native_assets_cli/lib/src/api/linkable_asset.dart | 4 ++++ pkgs/native_assets_cli/lib/src/api/resource.dart | 4 ++++ pkgs/native_assets_cli/lib/src/model/linkable_asset.dart | 4 ++++ pkgs/native_assets_cli/test/api/resource_data.dart | 4 ++++ 11 files changed, 44 insertions(+) diff --git a/pkgs/native_assets_builder/lib/src/model/build_result.dart b/pkgs/native_assets_builder/lib/src/model/build_result.dart index dc7402642..9857989ad 100644 --- a/pkgs/native_assets_builder/lib/src/model/build_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/build_result.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'package:native_assets_cli/native_assets_cli_internal.dart'; /// The result of a build, executing the build.dart hooks from all packages in diff --git a/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart b/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart index f78e75961..e451d44e8 100644 --- a/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/dry_run_result.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'package:native_assets_cli/native_assets_cli_internal.dart'; import '../../native_assets_builder.dart'; diff --git a/pkgs/native_assets_builder/lib/src/model/forge_result.dart b/pkgs/native_assets_builder/lib/src/model/forge_result.dart index 19c979ac9..d257f2658 100644 --- a/pkgs/native_assets_builder/lib/src/model/forge_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/forge_result.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'package:collection/collection.dart'; import 'package:native_assets_cli/native_assets_cli_internal.dart'; diff --git a/pkgs/native_assets_builder/lib/src/model/link_result.dart b/pkgs/native_assets_builder/lib/src/model/link_result.dart index a4705fc70..90f3c580b 100644 --- a/pkgs/native_assets_builder/lib/src/model/link_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/link_result.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'build_result.dart'; diff --git a/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/bin/app_with_asset_treeshaking.dart b/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/bin/app_with_asset_treeshaking.dart index be6c7dd3c..b315f0c22 100644 --- a/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/bin/app_with_asset_treeshaking.dart +++ b/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/bin/app_with_asset_treeshaking.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'package:app_with_asset_treeshaking/app_with_asset_treeshaking.dart' as app_with_asset_treeshaking; diff --git a/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/lib/app_with_asset_treeshaking.dart b/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/lib/app_with_asset_treeshaking.dart index 851538983..19ebd67d8 100644 --- a/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/lib/app_with_asset_treeshaking.dart +++ b/pkgs/native_assets_cli/example/link/app_with_asset_treeshaking/lib/app_with_asset_treeshaking.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'package:package_with_assets/package_with_assets.dart'; String callOther() { diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/lib/package_with_assets.dart b/pkgs/native_assets_cli/example/link/package_with_assets/lib/package_with_assets.dart index 7d7de8437..439430dde 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/lib/package_with_assets.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/lib/package_with_assets.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'package:meta/meta.dart'; //TODO: Actually use the assets. diff --git a/pkgs/native_assets_cli/lib/src/api/linkable_asset.dart b/pkgs/native_assets_cli/lib/src/api/linkable_asset.dart index f4f8dfda3..95d3173fd 100644 --- a/pkgs/native_assets_cli/lib/src/api/linkable_asset.dart +++ b/pkgs/native_assets_cli/lib/src/api/linkable_asset.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'asset.dart'; part '../model/linkable_asset.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/resource.dart b/pkgs/native_assets_cli/lib/src/api/resource.dart index 7d7c4b087..273a99450 100644 --- a/pkgs/native_assets_cli/lib/src/api/resource.dart +++ b/pkgs/native_assets_cli/lib/src/api/resource.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + /// Identifies a call site of a static method annotated with the /// `ResourceIdentifier` annotation. It consists of the [name] of the /// method, and the [metadata] used in the constructor of the annotation. diff --git a/pkgs/native_assets_cli/lib/src/model/linkable_asset.dart b/pkgs/native_assets_cli/lib/src/model/linkable_asset.dart index 9c311800f..44520412f 100644 --- a/pkgs/native_assets_cli/lib/src/model/linkable_asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/linkable_asset.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + part of '../api/linkable_asset.dart'; sealed class LinkableAssetImpl implements LinkableAsset { diff --git a/pkgs/native_assets_cli/test/api/resource_data.dart b/pkgs/native_assets_cli/test/api/resource_data.dart index df7437f3b..b83351e19 100644 --- a/pkgs/native_assets_cli/test/api/resource_data.dart +++ b/pkgs/native_assets_cli/test/api/resource_data.dart @@ -1,3 +1,7 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + import 'package:native_assets_cli/src/model/resource_identifiers.dart'; const resourceFile = '''{ From 0f3e9c366fab260c330af78ea6863e5784c1359c Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 11 Apr 2024 17:27:49 +0200 Subject: [PATCH 141/187] Add common config --- .../lib/src/api/build_config.dart | 3 +- .../lib/src/api/hook_config.dart | 87 +++++++++++++++++++ .../lib/src/api/link_config.dart | 13 ++- .../lib/src/model/link_config.dart | 34 ++++++++ 4 files changed, 135 insertions(+), 2 deletions(-) create mode 100644 pkgs/native_assets_cli/lib/src/api/hook_config.dart diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index 9606abb6f..c64302282 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -20,6 +20,7 @@ import 'architecture.dart'; import 'asset.dart'; import 'build.dart'; import 'build_mode.dart'; +import 'hook_config.dart'; import 'ios_sdk.dart'; import 'link_mode_preference.dart'; import 'os.dart'; @@ -34,7 +35,7 @@ part 'c_compiler_config.dart'; /// be automatically run, by the Flutter and Dart SDK tools. The hook will be /// run with specific commandline arguments, which [BuildConfig] can parse and /// provide more convenient access to. -abstract final class BuildConfig { +abstract final class BuildConfig implements HookConfig { /// The directory in which all output and intermediate artifacts should be /// placed. Uri get outputDirectory; diff --git a/pkgs/native_assets_cli/lib/src/api/hook_config.dart b/pkgs/native_assets_cli/lib/src/api/hook_config.dart new file mode 100644 index 000000000..498a0070f --- /dev/null +++ b/pkgs/native_assets_cli/lib/src/api/hook_config.dart @@ -0,0 +1,87 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'architecture.dart'; +import 'asset.dart'; +import 'build_config.dart'; +import 'build_mode.dart'; +import 'ios_sdk.dart'; +import 'link_config.dart'; +import 'os.dart'; + +/// The shared properties of a [LinkConfig] and a [BuildConfig]. +/// +/// This abstraction makes it easier to design APIs intended for both kinds of +/// build hooks, building and linking. +abstract class HookConfig { + /// The directory in which all output and intermediate artifacts should be + /// placed. + Uri get outputDirectory; + + /// The name of the package the assets are built for. + String get packageName; + + /// The root of the package the assets are built for. + /// + /// Often a package's assets are built because a package is a dependency of + /// another. For this it is convenient to know the packageRoot. + Uri get packageRoot; + + /// The architecture being compiled for. + /// + /// Not specified (`null`) during a [dryRun]. + Architecture? get targetArchitecture; + + /// The operating system being compiled for. + OS get targetOS; + + /// When compiling for iOS, whether to target device or simulator. + /// + /// Not available if [targetOS] is [OS.iOS]. Will throw a [StateError] if + /// accessed during a [dryRun]. + /// + /// Not available during a [dryRun]. Will throw a [StateError] if accessed + /// during a [dryRun]. + IOSSdk get targetIOSSdk; + + /// When compiling for Android, the minimum Android SDK API version to that + /// the compiled code will be compatible with. + /// + /// Required when [targetOS] equals [OS.android]. + /// + /// Not available during a [dryRun]. Will throw a [StateError] if accessed + /// during a [dryRun]. + /// + /// For more information about the Android API version, refer to + /// [`minSdkVersion`](https://developer.android.com/ndk/guides/sdk-versions#minsdkversion) + /// in the Android documentation. + int? get targetAndroidNdkApi; + + /// The configuration for invoking the C compiler. + /// + /// Not available during a [dryRun]. Will throw a [StateError] if accessed + /// during a [dryRun]. + CCompilerConfig get cCompiler; + + /// Whether this run is a dry-run, which doesn't build anything. + /// + /// A dry-run only reports information about which assets a build would + /// create, but doesn't actually create files. + bool get dryRun; + + /// The [BuildMode] that the code should be compiled in. + /// + /// Currently [BuildMode.debug] and [BuildMode.release] are the only modes. + /// + /// Not available during a [dryRun]. Will throw a [StateError] if accessed + /// during a [dryRun]. + BuildMode get buildMode; + + /// The asset types that the invoker of this build supports. + /// + /// Currently known values: + /// * [NativeCodeAsset.type] + /// * [DataAsset.type] + Iterable get supportedAssetTypes; +} diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index b6fa31f24..edaf90de7 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -12,6 +12,7 @@ import '../../native_assets_cli_internal.dart'; import '../model/resource_identifiers.dart'; import '../utils/map.dart'; import 'build_config.dart'; +import 'hook_config.dart'; import 'linkable_asset.dart'; part '../model/link_config.dart'; @@ -21,7 +22,7 @@ part '../model/link_config.dart'; /// It consists of a subset of the fields from the [BuildConfig] already passed /// to the build script, the [assets] from the build step, and the [resources] /// generated during the kernel compilation. -abstract class LinkConfig { +abstract class LinkConfig implements HookConfig { /// The directory in which all output and intermediate artifacts should be /// placed. Uri get outputDirectory; @@ -58,4 +59,14 @@ abstract class LinkConfig { buildConfig: buildConfig, assetsForLinking: assetsForLinking, ); + + /// The version of [BuildConfig]. + /// + /// The build config is used in the protocol between the Dart and Flutter SDKs + /// and packages through build hook invocations. + /// + /// We're trying to avoid breaking changes. However, in the case that we have + /// to, the major version mismatch between the Dart or Flutter SDK and build + /// hook (`hook/build.dart`) will lead to a nice error message. + static Version get latestVersion => LinkConfigImpl.latestVersion; } diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 1374eea34..225662ef0 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -66,6 +66,40 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { buildConfig: buildConfig, resourceIdentifierUri: resourceIdentifierUri, ).toLinkConfig(); + + @override + BuildMode get buildMode => _buildConfig.buildMode; + + @override + CCompilerConfig get cCompiler => _buildConfig.cCompiler; + + @override + bool get dryRun => _buildConfig.dryRun; + + @override + Iterable get supportedAssetTypes => _buildConfig.supportedAssetTypes; + + @override + int? get targetAndroidNdkApi => _buildConfig.targetAndroidNdkApi; + + @override + Architecture? get targetArchitecture => _buildConfig.targetArchitecture; + + @override + IOSSdk get targetIOSSdk => _buildConfig.targetIOSSdk; + + @override + OS get targetOS => _buildConfig.targetOS; + + /// The version of [BuildConfigImpl]. + /// + /// This class is used in the protocol between the Dart and Flutter SDKs + /// and packages through build hook invocations. + /// + /// If we ever were to make breaking changes, it would be useful to give + /// proper error messages rather than just fail to parse the JSON + /// representation in the protocol. + static Version latestVersion = Version(1, 0, 0); } List fromIdentifiers(ResourceIdentifiers? resourceIdentifiers) => From 58ba0c042f36b98e1c9c870513060614991ee0b7 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 11 Apr 2024 18:07:23 +0200 Subject: [PATCH 142/187] Export HookConfig --- pkgs/native_assets_cli/lib/native_assets_cli.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/native_assets_cli/lib/native_assets_cli.dart b/pkgs/native_assets_cli/lib/native_assets_cli.dart index 6f48e372a..3e48024db 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli.dart @@ -22,6 +22,7 @@ export 'src/api/build.dart'; export 'src/api/build_config.dart' show BuildConfig, CCompilerConfig; export 'src/api/build_mode.dart' show BuildMode; export 'src/api/build_output.dart' show BuildOutput, LinkOutput; +export 'src/api/hook_config.dart' show HookConfig; export 'src/api/ios_sdk.dart' show IOSSdk; export 'src/api/link.dart'; export 'src/api/link_config.dart' show LinkConfig; From 218bfa6d90ed35d097f28044eee470c99b115f21 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 12 Apr 2024 08:27:35 +0200 Subject: [PATCH 143/187] Fix issues --- pkgs/native_assets_cli/lib/src/api/build_config.dart | 11 +++++++++++ pkgs/native_assets_cli/lib/src/api/link_config.dart | 8 +++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index c64302282..457ff5791 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -38,23 +38,28 @@ part 'c_compiler_config.dart'; abstract final class BuildConfig implements HookConfig { /// The directory in which all output and intermediate artifacts should be /// placed. + @override Uri get outputDirectory; /// The name of the package the assets are built for. + @override String get packageName; /// The root of the package the assets are built for. /// /// Often a package's assets are built because a package is a dependency of /// another. For this it is convenient to know the packageRoot. + @override Uri get packageRoot; /// The architecture being compiled for. /// /// Not specified (`null`) during a [dryRun]. + @override Architecture? get targetArchitecture; /// The operating system being compiled for. + @override OS get targetOS; /// When compiling for iOS, whether to target device or simulator. @@ -64,6 +69,7 @@ abstract final class BuildConfig implements HookConfig { /// /// Not available during a [dryRun]. Will throw a [StateError] if accessed /// during a [dryRun]. + @override IOSSdk get targetIOSSdk; /// When compiling for Android, the minimum Android SDK API version to that @@ -77,6 +83,7 @@ abstract final class BuildConfig implements HookConfig { /// For more information about the Android API version, refer to /// [`minSdkVersion`](https://developer.android.com/ndk/guides/sdk-versions#minsdkversion) /// in the Android documentation. + @override int? get targetAndroidNdkApi; /// The preferred [LinkMode] method for [NativeCodeAsset]s. @@ -96,12 +103,14 @@ abstract final class BuildConfig implements HookConfig { /// /// Not available during a [dryRun]. Will throw a [StateError] if accessed /// during a [dryRun]. + @override CCompilerConfig get cCompiler; /// Whether this run is a dry-run, which doesn't build anything. /// /// A dry-run only reports information about which assets a build would /// create, but doesn't actually create files. + @override bool get dryRun; /// The [BuildMode] that the code should be compiled in. @@ -110,6 +119,7 @@ abstract final class BuildConfig implements HookConfig { /// /// Not available during a [dryRun]. Will throw a [StateError] if accessed /// during a [dryRun]. + @override BuildMode get buildMode; /// The asset types that the invoker of this build supports. @@ -117,6 +127,7 @@ abstract final class BuildConfig implements HookConfig { /// Currently known values: /// * [NativeCodeAsset.type] /// * [DataAsset.type] + @override Iterable get supportedAssetTypes; /// The version of [BuildConfig]. diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index edaf90de7..7aea171af 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -7,13 +7,16 @@ import 'dart:io'; import 'package:args/args.dart'; import 'package:pub_semver/pub_semver.dart'; -import '../../native_assets_cli.dart'; import '../../native_assets_cli_internal.dart'; import '../model/resource_identifiers.dart'; import '../utils/map.dart'; +import 'architecture.dart'; import 'build_config.dart'; +import 'build_mode.dart'; import 'hook_config.dart'; +import 'ios_sdk.dart'; import 'linkable_asset.dart'; +import 'os.dart'; part '../model/link_config.dart'; @@ -25,15 +28,18 @@ part '../model/link_config.dart'; abstract class LinkConfig implements HookConfig { /// The directory in which all output and intermediate artifacts should be /// placed. + @override Uri get outputDirectory; /// The name of the package the assets are linked for. + @override String get packageName; /// The root of the package the assets are linked for. /// /// Often a package's assets are built because a package is a dependency of /// another. For this it is convenient to know the packageRoot. + @override Uri get packageRoot; /// The list of assets to be linked. These are the assets generated by a From 21402dcef757a0235cffbf3a8728b810324e72e5 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 12 Apr 2024 09:19:45 +0200 Subject: [PATCH 144/187] Fix API --- pkgs/native_assets_cli/lib/src/api/link_config.dart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 7aea171af..5cc67d564 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -11,6 +11,7 @@ import '../../native_assets_cli_internal.dart'; import '../model/resource_identifiers.dart'; import '../utils/map.dart'; import 'architecture.dart'; +import 'asset.dart'; import 'build_config.dart'; import 'build_mode.dart'; import 'hook_config.dart'; @@ -57,13 +58,13 @@ abstract class LinkConfig implements HookConfig { factory LinkConfig({ required Uri? resourceIdentifierUri, - required BuildConfigImpl buildConfig, - required List assetsForLinking, + required BuildConfig buildConfig, + required List assetsForLinking, }) => LinkConfigImpl.fromValues( resourceIdentifierUri: resourceIdentifierUri, - buildConfig: buildConfig, - assetsForLinking: assetsForLinking, + buildConfig: buildConfig as BuildConfigImpl, + assetsForLinking: assetsForLinking.cast(), ); /// The version of [BuildConfig]. From 4b0df6a57352f8c86d8db3ad3308409255cced67 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 12 Apr 2024 09:23:16 +0200 Subject: [PATCH 145/187] Make arguments optional --- pkgs/native_assets_cli/lib/src/api/link_output.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/api/link_output.dart b/pkgs/native_assets_cli/lib/src/api/link_output.dart index 4cbb9c248..6c217495a 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_output.dart @@ -43,9 +43,9 @@ abstract final class LinkOutput { void linkAssets(Iterable assets); factory LinkOutput({ - required List assets, - required Dependencies dependencies, - required DateTime timestamp, + List? assets, + Dependencies? dependencies, + DateTime? timestamp, }) => HookOutputImpl( assets: assets, From c19dc831bb389e5d8dd7222dc8cba975493f39c4 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 12 Apr 2024 10:11:48 +0200 Subject: [PATCH 146/187] Revert linkable assets --- .../test_data/complex_link/hook/link.dart | 5 +- .../test_data/simple_link/hook/link.dart | 5 +- .../treeshaking_native_assets/hook/link.dart | 6 +-- .../link/package_with_assets/hook/link.dart | 7 ++- .../lib/native_assets_cli.dart | 2 - .../lib/native_assets_cli_internal.dart | 2 - .../lib/src/api/build_output.dart | 1 - pkgs/native_assets_cli/lib/src/api/link.dart | 4 +- .../lib/src/api/link_config.dart | 3 +- .../lib/src/api/link_output.dart | 4 +- .../lib/src/api/linkable_asset.dart | 23 --------- .../lib/src/model/hook_output.dart | 12 ----- .../lib/src/model/link_config.dart | 12 +---- .../lib/src/model/linkable_asset.dart | 51 ------------------- 14 files changed, 17 insertions(+), 120 deletions(-) delete mode 100644 pkgs/native_assets_cli/lib/src/api/linkable_asset.dart delete mode 100644 pkgs/native_assets_cli/lib/src/model/linkable_asset.dart diff --git a/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart b/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart index a00196f97..a1ad40ef6 100644 --- a/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart @@ -7,9 +7,8 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { await link( args, - (config, output) async => output.linkAssets(shake(config.assets)), + (config, output) async => output.addAssets(shake(config.assets)), ); } -List shake(List assets) => - assets.skip(1).toList(); +List shake(List assets) => assets.skip(1).toList(); diff --git a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart index d8df572e3..2e7327a8b 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart @@ -7,9 +7,8 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { await link( args, - (config, output) async => output.linkAssets(shake(config.assets)), + (config, output) async => output.addAssets(shake(config.assets)), ); } -List shake(List assets) => - assets.skip(2).toList(); +List shake(List assets) => assets.skip(2).toList(); diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart index b8846a157..0228b4dc0 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart @@ -24,7 +24,7 @@ void main(List arguments) async { dynamicLibrary, staticLibrary, ); - output.linkAsset(dynamicLibrary); + output.addAsset(dynamicLibrary); output.addDependency(config.packageRoot.resolve('hook/link.dart')); }); } @@ -32,8 +32,8 @@ void main(List arguments) async { Future _treeshakeStaticLibrary( Iterable symbols, Uri symbolsUri, - LinkableAsset dynamicLibrary, - LinkableAsset staticLibrary, + Asset dynamicLibrary, + Asset staticLibrary, ) async { final arguments = [ '-fPIC', diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart index df49d313b..6f0197739 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart @@ -6,10 +6,9 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { await link(args, (config, output) async { - final assetsWithResource = config.assets - .whereType() - .where((asset) => config.resources + final assetsWithResource = config.assets.whereType().where( + (asset) => config.resources .any((resource) => resource.metadata == asset.name)); - output.linkAssets(assetsWithResource); + output.addAssets(assetsWithResource); }); } diff --git a/pkgs/native_assets_cli/lib/native_assets_cli.dart b/pkgs/native_assets_cli/lib/native_assets_cli.dart index 3e48024db..6c109e09a 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli.dart @@ -27,7 +27,5 @@ export 'src/api/ios_sdk.dart' show IOSSdk; export 'src/api/link.dart'; export 'src/api/link_config.dart' show LinkConfig; export 'src/api/link_mode_preference.dart' show LinkModePreference; -export 'src/api/linkable_asset.dart' - show LinkableAsset, LinkableCodeAsset, LinkableDataAsset; export 'src/api/os.dart' show OS; export 'src/api/resource.dart'; diff --git a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart index 008a95f11..525945c59 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart @@ -34,8 +34,6 @@ export 'src/api/build_output.dart' show HookOutputImpl; export 'src/api/ios_sdk.dart' show IOSSdkImpl; export 'src/api/link_config.dart' show LinkConfigImpl; export 'src/api/link_mode_preference.dart' show LinkModePreferenceImpl; -export 'src/api/linkable_asset.dart' - show LinkableAssetImpl, LinkableCodeAssetImpl, LinkableDataAssetImpl; export 'src/api/os.dart' show OSImpl; export 'src/api/resource.dart'; export 'src/model/dependencies.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/build_output.dart b/pkgs/native_assets_cli/lib/src/api/build_output.dart index d9c094ef8..f81c51ba6 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_output.dart @@ -19,7 +19,6 @@ import '../utils/map.dart'; import 'architecture.dart'; import 'asset.dart'; import 'build_config.dart'; -import 'linkable_asset.dart'; import 'os.dart'; part '../model/hook_output.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/link.dart b/pkgs/native_assets_cli/lib/src/api/link.dart index 08b015a98..87a899f9d 100644 --- a/pkgs/native_assets_cli/lib/src/api/link.dart +++ b/pkgs/native_assets_cli/lib/src/api/link.dart @@ -26,10 +26,10 @@ import 'link_config.dart'; /// void main(List args) async { /// await link(args, (config, output) async { /// final assetsWithResource = config.assets -/// .whereType() +/// .whereType() /// .where((asset) => config.resources /// .any((resource) => resource.metadata == asset.name)); -/// output.linkAssets(assetsWithResource); +/// output.addAssets(assetsWithResource); /// }); /// } /// ``` diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 5cc67d564..50c738396 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -16,7 +16,6 @@ import 'build_config.dart'; import 'build_mode.dart'; import 'hook_config.dart'; import 'ios_sdk.dart'; -import 'linkable_asset.dart'; import 'os.dart'; part '../model/link_config.dart'; @@ -45,7 +44,7 @@ abstract class LinkConfig implements HookConfig { /// The list of assets to be linked. These are the assets generated by a /// `build.dart` script destined for this packages `link.dart`. - List get assets; + List get assets; /// A collection of methods annotated with `@ResourceIdentifier`, which are /// called in the tree-shaken Dart code. This information can be used to diff --git a/pkgs/native_assets_cli/lib/src/api/link_output.dart b/pkgs/native_assets_cli/lib/src/api/link_output.dart index 6c217495a..ec2c29dbc 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_output.dart @@ -37,10 +37,10 @@ abstract final class LinkOutput { void addDependencies(Iterable dependencies); /// Adds [Asset]s produced by this link or dry run. - void linkAsset(LinkableAsset asset); + void addAsset(Asset asset); /// Adds [Asset]s produced by this link or dry run. - void linkAssets(Iterable assets); + void addAssets(Iterable assets); factory LinkOutput({ List? assets, diff --git a/pkgs/native_assets_cli/lib/src/api/linkable_asset.dart b/pkgs/native_assets_cli/lib/src/api/linkable_asset.dart deleted file mode 100644 index 95d3173fd..000000000 --- a/pkgs/native_assets_cli/lib/src/api/linkable_asset.dart +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'asset.dart'; - -part '../model/linkable_asset.dart'; - -/// An asset which can be linked. As the link hook can not add assets, but only -/// modify existing assets, this class provides no public constructor. -sealed class LinkableAsset { - Uri? get file; - String get id; - LinkableAsset withFile(Uri file); -} - -/// A [DataAsset] which can be linked, see [LinkableAsset]. -abstract class LinkableDataAsset implements LinkableAsset { - String get name; -} - -/// A [NativeCodeAsset] which can be linked, see [LinkableAsset]. -abstract class LinkableCodeAsset implements LinkableAsset {} diff --git a/pkgs/native_assets_cli/lib/src/model/hook_output.dart b/pkgs/native_assets_cli/lib/src/model/hook_output.dart index ba12b56e1..3adab8bcf 100644 --- a/pkgs/native_assets_cli/lib/src/model/hook_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook_output.dart @@ -224,16 +224,4 @@ final class HookOutputImpl implements BuildOutput, LinkOutput { List _getAssetList(String? linkInPackage) => linkInPackage == null ? _assets : (_assetsForLinking[linkInPackage] ??= []); - - @override - void linkAsset(LinkableAsset asset) { - addAsset((asset as LinkableAssetImpl).asset); - } - - @override - void linkAssets(Iterable assets) { - addAssets(assets - .whereType() - .map((linkableAsset) => linkableAsset.asset)); - } } diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 225662ef0..9d0ea8dde 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -11,7 +11,7 @@ part of '../api/link_config.dart'; /// kernel compilation. class LinkConfigImpl extends HookConfigImpl implements LinkConfig { @override - final List assets; + final List assets; final BuildConfigImpl _buildConfig; @@ -156,15 +156,7 @@ class _LinkConfigArgs { resourceIdentifiers: resourceIdentifierUri != null ? ResourceIdentifiers.fromFile(resourceIdentifierUri!.toFilePath()) : null, - assets: assetsForLinking - .map( - (asset) => switch (asset) { - DataAssetImpl() => LinkableDataAssetImpl(asset), - NativeCodeAssetImpl() => LinkableCodeAssetImpl(asset), - AssetImpl() => throw UnimplementedError(), - }, - ) - .toList(), + assets: assetsForLinking, ); Map toJson() => { diff --git a/pkgs/native_assets_cli/lib/src/model/linkable_asset.dart b/pkgs/native_assets_cli/lib/src/model/linkable_asset.dart deleted file mode 100644 index 44520412f..000000000 --- a/pkgs/native_assets_cli/lib/src/model/linkable_asset.dart +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -part of '../api/linkable_asset.dart'; - -sealed class LinkableAssetImpl implements LinkableAsset { - AssetImpl get asset; - - @override - Uri? get file => asset.file; - - @override - String get id => asset.id; -} - -class LinkableDataAssetImpl extends LinkableAssetImpl - implements LinkableDataAsset { - @override - final DataAssetImpl asset; - - @override - String get name => asset.name; - - LinkableDataAssetImpl(this.asset); - - @override - LinkableDataAsset withFile(Uri file) => LinkableDataAssetImpl(DataAssetImpl( - package: asset.package, - name: asset.name, - file: file, - )); -} - -class LinkableCodeAssetImpl extends LinkableAssetImpl - implements LinkableCodeAsset { - @override - final NativeCodeAssetImpl asset; - - LinkableCodeAssetImpl(this.asset); - - @override - LinkableCodeAsset withFile(Uri file) => - LinkableCodeAssetImpl(NativeCodeAssetImpl( - id: asset.id, - linkMode: asset.linkMode, - os: asset.os, - architecture: asset.architecture, - file: file, - )); -} From 3955ea9aa400cde89fa604c4e269dbb610561f8c Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 12 Apr 2024 15:09:59 +0200 Subject: [PATCH 147/187] Export ResourceIdentifiers --- pkgs/native_assets_cli/lib/native_assets_cli_internal.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart index 525945c59..37f726a06 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart @@ -40,4 +40,5 @@ export 'src/model/dependencies.dart'; export 'src/model/hook.dart'; export 'src/model/hook_config.dart' show HookConfigImpl; export 'src/model/metadata.dart'; +export 'src/model/resource_identifiers.dart'; export 'src/model/target.dart'; From 3d8ed4a2143af18071c9101b366880994b26e46d Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 12 Apr 2024 15:17:52 +0200 Subject: [PATCH 148/187] Fix import --- pkgs/native_assets_cli/lib/src/api/link_config.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 50c738396..604e72d42 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -7,7 +7,7 @@ import 'dart:io'; import 'package:args/args.dart'; import 'package:pub_semver/pub_semver.dart'; -import '../../native_assets_cli_internal.dart'; +import '../model/hook_config.dart'; import '../model/resource_identifiers.dart'; import '../utils/map.dart'; import 'architecture.dart'; @@ -17,6 +17,7 @@ import 'build_mode.dart'; import 'hook_config.dart'; import 'ios_sdk.dart'; import 'os.dart'; +import 'resource.dart'; part '../model/link_config.dart'; From b88c152497d71e2d2395d6c80011d9aeea117993 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 12 Apr 2024 15:55:56 +0200 Subject: [PATCH 149/187] Fix dep --- pkgs/native_assets_cli/lib/src/api/link_config.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 604e72d42..427d55c33 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -7,6 +7,7 @@ import 'dart:io'; import 'package:args/args.dart'; import 'package:pub_semver/pub_semver.dart'; +import '../model/hook.dart'; import '../model/hook_config.dart'; import '../model/resource_identifiers.dart'; import '../utils/map.dart'; From c33d5dd7ffe1e2e527f7714692662181f870f6cb Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 15 Apr 2024 15:02:10 +0200 Subject: [PATCH 150/187] Fix linking id check --- .../lib/src/build_runner/build_runner.dart | 13 ++++++++----- .../test/build_runner/link_test.dart | 2 ++ .../test_data/complex_link/bin/complex_link.dart | 4 +++- .../test_data/complex_link/hook/link.dart | 4 +--- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 902d68b87..4e258539b 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -291,7 +291,7 @@ class NativeAssetsBuildRunner { } Future<_PackageBuildRecord> _buildPackage( - Hook step, + Hook hook, HookConfigImpl config, Uri packageConfigUri, Uri workingDirectory, @@ -349,10 +349,13 @@ ${result.stdout} final buildOutput = HookOutputImpl.readFromFile(file: config.outputFile) ?? HookOutputImpl(); - success &= validateAssetsPackage( - buildOutput.assets, - config.packageName, - ); + //As a link.dart can pipe through assets from other packages. + if (hook == Hook.build) { + success &= validateAssetsPackage( + buildOutput.assets, + config.packageName, + ); + } return (buildOutput, success); } on FormatException catch (e) { logger.severe(''' diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart index 0a018d57f..8bb198d05 100644 --- a/pkgs/native_assets_builder/test/build_runner/link_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -61,6 +61,7 @@ void main() async { logger, dartExecutable, ); + expect(buildResult.success, true); expect(buildResult.assets.length, 2); final linkResult = await link( @@ -69,6 +70,7 @@ void main() async { dartExecutable, buildResult: buildResult, ); + expect(linkResult.success, true); const assetsLeft = 2 + 2 - 1; expect(linkResult.assets.length, assetsLeft); }); diff --git a/pkgs/native_assets_builder/test_data/complex_link/bin/complex_link.dart b/pkgs/native_assets_builder/test_data/complex_link/bin/complex_link.dart index 9f5b97af6..03fdefaba 100644 --- a/pkgs/native_assets_builder/test_data/complex_link/bin/complex_link.dart +++ b/pkgs/native_assets_builder/test_data/complex_link/bin/complex_link.dart @@ -2,6 +2,8 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'package:complex_link_helper/complex_link_helper.dart'; + void main() { - print('Tada!'); + someMethod(); } diff --git a/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart b/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart index a1ad40ef6..a468d44a2 100644 --- a/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart @@ -7,8 +7,6 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { await link( args, - (config, output) async => output.addAssets(shake(config.assets)), + (config, output) async => output.addAssets(config.assets.skip(1)), ); } - -List shake(List assets) => assets.skip(1).toList(); From 95a6479fef35daf9246f91c74a8978bbe5172b69 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 15 Apr 2024 16:48:49 +0200 Subject: [PATCH 151/187] Copy over more files --- pkgs/native_assets_builder/test_data/manifest.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/native_assets_builder/test_data/manifest.yaml b/pkgs/native_assets_builder/test_data/manifest.yaml index 1ee4bdc89..1568424fe 100644 --- a/pkgs/native_assets_builder/test_data/manifest.yaml +++ b/pkgs/native_assets_builder/test_data/manifest.yaml @@ -45,11 +45,13 @@ - wrong_namespace_asset/hook/build.dart - wrong_namespace_asset/pubspec.yaml - complex_link/pubspec.yaml +- complex_link/bin/complex_link.dart - complex_link/hook/build.dart - complex_link/hook/link.dart - complex_link/assets/data_0.json - complex_link/assets/data_1.json - complex_link_helper/pubspec.yaml +- complex_link_helper/lib/complex_link_helper.dart - complex_link_helper/hook/build.dart - complex_link_helper/assets/data_helper_0.json - complex_link_helper/assets/data_helper_1.json From 53ab489b4a4e65ba19234145263d75bd45b6dd14 Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 16 Apr 2024 10:16:26 +0200 Subject: [PATCH 152/187] Changes as per review --- pkgs/native_assets_builder/CHANGELOG.md | 2 +- .../lib/src/build_runner/build_planner.dart | 4 +- .../lib/src/build_runner/build_runner.dart | 131 +++++++++++------- .../{forge_result.dart => hook_result.dart} | 7 +- .../src/package_layout/package_layout.dart | 7 +- .../test/build_runner/link_test.dart | 33 +++-- .../test_data/complex_link/hook/build.dart | 2 +- .../test_data/complex_link/hook/link.dart | 5 +- .../complex_link_helper/hook/build.dart | 2 +- .../lib/complex_link_helper.dart | 2 +- .../simple_link/bin/simple_link.dart | 2 +- .../test_data/simple_link/hook/build.dart | 2 +- .../test_data/simple_link/hook/link.dart | 2 +- .../treeshaking_native_assets/hook/link.dart | 8 +- .../treeshaking_native_assets_bindings.dart | 4 +- pkgs/native_assets_cli/example/README.md | 6 +- .../link/package_with_assets/hook/build.dart | 2 +- .../link/package_with_assets/hook/link.dart | 2 +- .../lib/package_with_assets.dart | 5 +- .../lib/src/api/build_config.dart | 81 ----------- .../lib/src/api/build_output.dart | 13 +- .../lib/src/api/hook_config.dart | 2 +- .../lib/src/api/link_config.dart | 20 +-- .../lib/src/model/hook_output.dart | 6 +- .../lib/src/model/resource_identifiers.dart | 2 +- 25 files changed, 156 insertions(+), 196 deletions(-) rename pkgs/native_assets_builder/lib/src/model/{forge_result.dart => hook_result.dart} (86%) diff --git a/pkgs/native_assets_builder/CHANGELOG.md b/pkgs/native_assets_builder/CHANGELOG.md index 9c6f5f389..5e00b7615 100644 --- a/pkgs/native_assets_builder/CHANGELOG.md +++ b/pkgs/native_assets_builder/CHANGELOG.md @@ -1,7 +1,7 @@ ## 0.7.0-wip - Fix test. -- Add support for `link.dart`. +- Add support for `hook/link.dart`. ## 0.6.0 diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart index cff3f8331..e6e129518 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_planner.dart @@ -83,7 +83,9 @@ class NativeAssetsBuildPlanner { } } -/// A graph of package dependencies, encoded as package name -> list of package +/// A graph of package dependencies. +/// +/// This is encoded as a mapping from package name to list of package /// dependencies. class PackageGraph { final Map> map; diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 4e258539b..8425b32ce 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -11,7 +11,7 @@ import 'package:package_config/package_config.dart'; import '../model/build_result.dart'; import '../model/dry_run_result.dart'; -import '../model/forge_result.dart'; +import '../model/hook_result.dart'; import '../model/link_result.dart'; import '../package_layout/package_layout.dart'; import '../utils/run_process.dart'; @@ -125,9 +125,12 @@ class NativeAssetsBuildRunner { assert(hook == Hook.link || buildResult == null); packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory); - final packagesWithBuild = await packageLayout.packagesWithAssets(hook); + final packagesWithAssets = await packageLayout.packagesWithAssets(hook); final (buildPlan, packageGraph, planSuccess) = await _plannedPackages( - packagesWithBuild, packageLayout, runPackageName); + packagesWithAssets, + packageLayout, + runPackageName, + ); final hookResult = HookResult.failure(); if (!planSuccess) { return hookResult; @@ -140,33 +143,23 @@ class NativeAssetsBuildRunner { packageName: package.name, targetMetadata: metadata, ); - final buildConfig = await _cliConfig( - packageName: package.name, - packageRoot: packageLayout.packageRoot(package.name), - target: target, - buildMode: buildMode, - linkMode: linkModePreference, - buildParentDir: packageLayout.dartToolNativeAssetsBuilder, - dependencyMetadata: dependencyMetadata, - cCompilerConfig: cCompilerConfig, - targetIOSSdk: targetIOSSdk, - targetAndroidNdkApi: targetAndroidNdkApi, - supportedAssetTypes: supportedAssetTypes, - hook: hook, + final config = await _cliConfig( + package, + packageLayout, + target, + buildMode, + linkModePreference, + dependencyMetadata, + cCompilerConfig, + targetIOSSdk, + targetAndroidNdkApi, + supportedAssetTypes, + hook, + resourceIdentifiers, + buildResult, ); - final HookConfigImpl config; - if (hook == Hook.link) { - config = LinkConfigImpl.fromValues( - resourceIdentifierUri: resourceIdentifiers, - buildConfig: buildConfig, - assetsForLinking: - buildResult!.assetsForLinking[buildConfig.packageName] ?? [], - ); - } else { - config = buildConfig; - } - final (buildOutput, packageSuccess) = await _buildPackageCached( + final (buildOutput, packageSuccess) = await _runHookForPackageCached( hook, config, packageLayout.packageConfigUri, @@ -183,6 +176,47 @@ class NativeAssetsBuildRunner { return hookResult.withSuccess(success); } + Future _cliConfig( + Package package, + PackageLayout packageLayout, + Target target, + BuildModeImpl buildMode, + LinkModePreferenceImpl linkModePreference, + DependencyMetadata? dependencyMetadata, + CCompilerConfigImpl? cCompilerConfig, + IOSSdkImpl? targetIOSSdk, + int? targetAndroidNdkApi, + Iterable? supportedAssetTypes, + Hook hook, + Uri? resourceIdentifiers, + BuildResult? buildResult, + ) async { + final buildConfig = await _buildConfig( + packageName: package.name, + packageRoot: packageLayout.packageRoot(package.name), + target: target, + buildMode: buildMode, + linkMode: linkModePreference, + buildParentDir: packageLayout.dartToolNativeAssetsBuilder, + dependencyMetadata: dependencyMetadata, + cCompilerConfig: cCompilerConfig, + targetIOSSdk: targetIOSSdk, + targetAndroidNdkApi: targetAndroidNdkApi, + supportedAssetTypes: supportedAssetTypes, + hook: hook, + ); + if (hook == Hook.link) { + return LinkConfigImpl.fromValues( + resourceIdentifierUri: resourceIdentifiers, + buildConfig: buildConfig, + assetsForLinking: + buildResult!.assetsForLinking[buildConfig.packageName] ?? [], + ); + } else { + return buildConfig; + } + } + /// [workingDirectory] is expected to contain `.dart_tool`. /// /// This method is invoked by launchers such as dartdev (for `dart run`) and @@ -207,9 +241,9 @@ class NativeAssetsBuildRunner { packageLayout, runPackageName, ); - final buildResult = HookResult.failure(); + final hookResult = HookResult.failure(); if (!planSuccess) { - return buildResult; + return hookResult; } var success = true; for (final package in buildPlan) { @@ -221,7 +255,7 @@ class NativeAssetsBuildRunner { buildParentDir: packageLayout.dartToolNativeAssetsBuilder, supportedAssetTypes: supportedAssetTypes, ); - final (buildOutput, packageSuccess) = await _buildPackage( + final (buildOutput, packageSuccess) = await _runHookForPackage( Hook.build, config, packageLayout.packageConfigUri, @@ -234,27 +268,27 @@ class NativeAssetsBuildRunner { case NativeCodeAssetImpl _: if (asset.architecture != null) { // Backwards compatibility, if an architecture is provided use it. - buildResult.assets.add(asset); + hookResult.assets.add(asset); } else { // Dry run does not report architecture. Dart VM branches on OS // and Target when looking up assets, so populate assets for all // architectures. for (final architecture in asset.os.architectures) { - buildResult.assets + hookResult.assets .add(asset.copyWith(architecture: architecture)); } } case DataAssetImpl _: - buildResult.assets.add(asset); + hookResult.assets.add(asset); } } success &= packageSuccess; } - return buildResult.withSuccess(success); + return hookResult.withSuccess(success); } - Future<_PackageBuildRecord> _buildPackageCached( - Hook step, + Future<_PackageBuildRecord> _runHookForPackageCached( + Hook hook, HookConfigImpl config, Uri packageConfigUri, Uri workingDirectory, @@ -266,22 +300,23 @@ class NativeAssetsBuildRunner { await Directory.fromUri(outDir).create(recursive: true); } - final buildOutput = HookOutputImpl.readFromFile(file: config.outputFile); - if (buildOutput != null) { - final lastBuilt = buildOutput.timestamp.roundDownToSeconds(); - final lastChange = await buildOutput.dependenciesModel.lastModified(); + final hookOutput = HookOutputImpl.readFromFile(file: config.outputFile); + if (hookOutput != null) { + final lastBuilt = hookOutput.timestamp.roundDownToSeconds(); + final lastChange = await hookOutput.dependenciesModel.lastModified(); if (lastBuilt.isAfter(lastChange)) { - logger.info('Skipping build for ${config.packageName} in $outDir. ' - 'Last build on $lastBuilt, last input change on $lastChange.'); + logger + .info('Skipping ${hook.name} for ${config.packageName} in $outDir. ' + 'Last build on $lastBuilt, last input change on $lastChange.'); // All build flags go into [outDir]. Therefore we do not have to check // here whether the config is equal. - return (buildOutput, true); + return (hookOutput, true); } } - return await _buildPackage( - step, + return await _runHookForPackage( + hook, config, packageConfigUri, workingDirectory, @@ -290,7 +325,7 @@ class NativeAssetsBuildRunner { ); } - Future<_PackageBuildRecord> _buildPackage( + Future<_PackageBuildRecord> _runHookForPackage( Hook hook, HookConfigImpl config, Uri packageConfigUri, @@ -389,7 +424,7 @@ Contents: ${File.fromUri(config.outputFile).readAsStringSync()}. } } - static Future _cliConfig({ + static Future _buildConfig({ required String packageName, required Uri packageRoot, required Target target, diff --git a/pkgs/native_assets_builder/lib/src/model/forge_result.dart b/pkgs/native_assets_builder/lib/src/model/hook_result.dart similarity index 86% rename from pkgs/native_assets_builder/lib/src/model/forge_result.dart rename to pkgs/native_assets_builder/lib/src/model/hook_result.dart index d257f2658..1aed91f2b 100644 --- a/pkgs/native_assets_builder/lib/src/model/forge_result.dart +++ b/pkgs/native_assets_builder/lib/src/model/hook_result.dart @@ -43,10 +43,11 @@ final class HookResult implements BuildResult, DryRunResult, LinkResult { assetsForLinking, buildOutput.assetsForLinking, value: (assets1, assets2) { - if (assets1.any((asset) => assets2.contains(asset)) || - assets2.any((asset) => assets1.contains(asset))) { + final twoInOne = assets1.where((asset) => assets2.contains(asset)); + final oneInTwo = assets2.where((asset) => assets1.contains(asset)); + if (twoInOne.isNotEmpty || oneInTwo.isNotEmpty) { throw ArgumentError( - 'Found assets with same ID in $assets1 and $assets2'); + 'Found assets with same IDs, ${[...oneInTwo, ...twoInOne]}'); } return [ ...assets1, diff --git a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart index 740e8c45a..85cbf1ccf 100644 --- a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart +++ b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart @@ -95,15 +95,14 @@ class PackageLayout { // the protocol version pre 1.2.0 on some future version.) Future> packagesWithAssets(Hook hook) async => switch (hook) { Hook.build => _packagesWithBuildAssets ??= - await _packagesWithAssets(hook), - Hook.link => _packagesWithLinkAssets ??= - await _packagesWithAssets(hook), + await _packagesWithHook(hook), + Hook.link => _packagesWithLinkAssets ??= await _packagesWithHook(hook), }; List? _packagesWithBuildAssets; List? _packagesWithLinkAssets; - Future> _packagesWithAssets(Hook hook) async { + Future> _packagesWithHook(Hook hook) async { final result = []; for (final package in packageConfig.packages) { final packageRoot = package.root; diff --git a/pkgs/native_assets_builder/test/build_runner/link_test.dart b/pkgs/native_assets_builder/test/build_runner/link_test.dart index 8bb198d05..fdd8e1aa7 100644 --- a/pkgs/native_assets_builder/test/build_runner/link_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/link_test.dart @@ -1,7 +1,9 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'package:native_assets_cli/native_assets_cli.dart' as cli; +import 'package:native_assets_cli/src/api/asset.dart'; import 'package:test/test.dart'; import '../helpers.dart'; @@ -47,14 +49,22 @@ void main() async { timeout: longTimeout, () async { await inTempDir((tempUri) async { + // From package:complex_link_helper + const builtHelperAssets = ['data_helper_0', 'data_helper_1']; + const helperAssetsForLinking = ['data_helper_2', 'data_helper_3']; + // From package:complex_link + const mainAssetsForLinking = ['data_0', 'data_1']; + final assetsForLinking = [ + ...helperAssetsForLinking, + ...mainAssetsForLinking, + ]; + final linkedAssets = assetsForLinking.skip(1); + await copyTestProjects(targetUri: tempUri); final packageUri = tempUri.resolve('complex_link/'); // First, run `pub get`, we need pub to resolve our dependencies. - await runPubGet( - workingDirectory: packageUri, - logger: logger, - ); + await runPubGet(workingDirectory: packageUri, logger: logger); final buildResult = await build( packageUri, @@ -62,7 +72,11 @@ void main() async { dartExecutable, ); expect(buildResult.success, true); - expect(buildResult.assets.length, 2); + expect(_getNames(buildResult.assets), orderedEquals(builtHelperAssets)); + expect( + _getNames(buildResult.assetsForLinking['complex_link']!), + orderedEquals(assetsForLinking), + ); final linkResult = await link( packageUri, @@ -71,9 +85,12 @@ void main() async { buildResult: buildResult, ); expect(linkResult.success, true); - const assetsLeft = 2 + 2 - 1; - expect(linkResult.assets.length, assetsLeft); + + expect(_getNames(linkResult.assets), orderedEquals(linkedAssets)); }); }, ); } + +Iterable _getNames(List assets) => + assets.whereType().map((asset) => asset.name); diff --git a/pkgs/native_assets_builder/test_data/complex_link/hook/build.dart b/pkgs/native_assets_builder/test_data/complex_link/hook/build.dart index 17e528ac4..6c693ec5f 100644 --- a/pkgs/native_assets_builder/test_data/complex_link/hook/build.dart +++ b/pkgs/native_assets_builder/test_data/complex_link/hook/build.dart @@ -1,4 +1,4 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. diff --git a/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart b/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart index a468d44a2..fc6abe456 100644 --- a/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart @@ -7,6 +7,9 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { await link( args, - (config, output) async => output.addAssets(config.assets.skip(1)), + (config, output) async => output.addAssets(treeshake(config.assets)), ); } + +Iterable treeshake(List assets) => + assets.where((asset) => !asset.id.endsWith('data_helper_2')); diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/hook/build.dart b/pkgs/native_assets_builder/test_data/complex_link_helper/hook/build.dart index 3245391fd..95ba7e0fa 100644 --- a/pkgs/native_assets_builder/test_data/complex_link_helper/hook/build.dart +++ b/pkgs/native_assets_builder/test_data/complex_link_helper/hook/build.dart @@ -1,4 +1,4 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/lib/complex_link_helper.dart b/pkgs/native_assets_builder/test_data/complex_link_helper/lib/complex_link_helper.dart index cd0ca7f9e..826bbf169 100644 --- a/pkgs/native_assets_builder/test_data/complex_link_helper/lib/complex_link_helper.dart +++ b/pkgs/native_assets_builder/test_data/complex_link_helper/lib/complex_link_helper.dart @@ -1,4 +1,4 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. diff --git a/pkgs/native_assets_builder/test_data/simple_link/bin/simple_link.dart b/pkgs/native_assets_builder/test_data/simple_link/bin/simple_link.dart index 8adceb64b..9f5b97af6 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/bin/simple_link.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/bin/simple_link.dart @@ -1,4 +1,4 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. diff --git a/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart b/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart index 2f19866cd..aa25818d3 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/hook/build.dart @@ -1,4 +1,4 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. diff --git a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart index 2e7327a8b..7a6a4d3e3 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart @@ -1,4 +1,4 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart index 0228b4dc0..a2f806a3f 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart @@ -12,10 +12,10 @@ void main(List arguments) async { await link(arguments, (config, output) async { final usedSymbols = config.resources.map((resource) => resource.metadata.toString()); - final dynamicLibrary = config.assets.firstWhere( - (asset) => asset.id.endsWith('src/${packageName}_bindings.dart')); - final staticLibrary = - config.assets.firstWhere((asset) => asset.id.endsWith('staticlib')); + final dynamicLibrary = config.assets.firstWhere((asset) => + asset.id == 'package:$packageName/src/${packageName}_bindings.dart'); + final staticLibrary = config.assets + .firstWhere((asset) => asset.id == 'package:$packageName/staticlib'); final linkerScript = await _writeLinkerScript(usedSymbols); await _treeshakeStaticLibrary( diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets_bindings.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets_bindings.dart index dcf55de33..9ee4e62eb 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets_bindings.dart +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets_bindings.dart @@ -4,13 +4,13 @@ import 'dart:ffi' as ffi; -@ffi.Native(symbol: 'add') +@ffi.Native() external int add( int a, int b, ); -@ffi.Native(symbol: 'multiply') +@ffi.Native() external int multiply( int a, int b, diff --git a/pkgs/native_assets_cli/example/README.md b/pkgs/native_assets_cli/example/README.md index 1a75c763d..b24ec948e 100644 --- a/pkgs/native_assets_cli/example/README.md +++ b/pkgs/native_assets_cli/example/README.md @@ -1,6 +1,6 @@ These are examples for using the hooks defined in `package:native_assets_cli`. -* [build/](build/) contains examples on how to use `build.dart` to build and - bundle code assets, such as C libraries, into Dart applications. +* [build/](build/) contains examples on how to use `hook/build.dart` to build + and bundle code assets, such as C libraries, into Dart applications. * [link/](link/) contains examples on how to treeshake unused assets from a Dart - application using the `link.dart` hook. \ No newline at end of file + application using the `hook/link.dart` script. \ No newline at end of file diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/hook/build.dart b/pkgs/native_assets_cli/example/link/package_with_assets/hook/build.dart index 40c4abdea..ed19aa01a 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/hook/build.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/hook/build.dart @@ -1,4 +1,4 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart index 6f0197739..0e651bf6f 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart @@ -1,4 +1,4 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/lib/package_with_assets.dart b/pkgs/native_assets_cli/example/link/package_with_assets/lib/package_with_assets.dart index 439430dde..4317fb29d 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/lib/package_with_assets.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/lib/package_with_assets.dart @@ -4,9 +4,10 @@ import 'package:meta/meta.dart'; -//TODO: Actually use the assets. +//TODO: Actually use the assets, needs the AssetBundle interface for Dart. See +//also https://github.com/dart-lang/sdk/issues/54003. @ResourceIdentifier('used_asset') String someMethod() => 'Using used_asset'; @ResourceIdentifier('unused_asset') -String someOtherMethod() => 'Using un_used_asset'; +String someOtherMethod() => 'Using unused_asset'; diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index 457ff5791..6efb13d88 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -36,56 +36,6 @@ part 'c_compiler_config.dart'; /// run with specific commandline arguments, which [BuildConfig] can parse and /// provide more convenient access to. abstract final class BuildConfig implements HookConfig { - /// The directory in which all output and intermediate artifacts should be - /// placed. - @override - Uri get outputDirectory; - - /// The name of the package the assets are built for. - @override - String get packageName; - - /// The root of the package the assets are built for. - /// - /// Often a package's assets are built because a package is a dependency of - /// another. For this it is convenient to know the packageRoot. - @override - Uri get packageRoot; - - /// The architecture being compiled for. - /// - /// Not specified (`null`) during a [dryRun]. - @override - Architecture? get targetArchitecture; - - /// The operating system being compiled for. - @override - OS get targetOS; - - /// When compiling for iOS, whether to target device or simulator. - /// - /// Not available if [targetOS] is [OS.iOS]. Will throw a [StateError] if - /// accessed during a [dryRun]. - /// - /// Not available during a [dryRun]. Will throw a [StateError] if accessed - /// during a [dryRun]. - @override - IOSSdk get targetIOSSdk; - - /// When compiling for Android, the minimum Android SDK API version to that - /// the compiled code will be compatible with. - /// - /// Required when [targetOS] equals [OS.android]. - /// - /// Not available during a [dryRun]. Will throw a [StateError] if accessed - /// during a [dryRun]. - /// - /// For more information about the Android API version, refer to - /// [`minSdkVersion`](https://developer.android.com/ndk/guides/sdk-versions#minsdkversion) - /// in the Android documentation. - @override - int? get targetAndroidNdkApi; - /// The preferred [LinkMode] method for [NativeCodeAsset]s. LinkModePreference get linkModePreference; @@ -99,37 +49,6 @@ abstract final class BuildConfig implements HookConfig { /// during a [dryRun]. Object? metadatum(String packageName, String key); - /// The configuration for invoking the C compiler. - /// - /// Not available during a [dryRun]. Will throw a [StateError] if accessed - /// during a [dryRun]. - @override - CCompilerConfig get cCompiler; - - /// Whether this run is a dry-run, which doesn't build anything. - /// - /// A dry-run only reports information about which assets a build would - /// create, but doesn't actually create files. - @override - bool get dryRun; - - /// The [BuildMode] that the code should be compiled in. - /// - /// Currently [BuildMode.debug] and [BuildMode.release] are the only modes. - /// - /// Not available during a [dryRun]. Will throw a [StateError] if accessed - /// during a [dryRun]. - @override - BuildMode get buildMode; - - /// The asset types that the invoker of this build supports. - /// - /// Currently known values: - /// * [NativeCodeAsset.type] - /// * [DataAsset.type] - @override - Iterable get supportedAssetTypes; - /// The version of [BuildConfig]. /// /// The build config is used in the protocol between the Dart and Flutter SDKs diff --git a/pkgs/native_assets_cli/lib/src/api/build_output.dart b/pkgs/native_assets_cli/lib/src/api/build_output.dart index f81c51ba6..593faf421 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_output.dart @@ -47,8 +47,8 @@ abstract final class BuildOutput { /// The assets produced by this build which should be linked. /// /// Every key in the map is a package name. These assets in the values are not - /// bundled with the application, but are sent to the linking script of the - /// package specified in the key, which can decide if they are bundled or not. + /// bundled with the application, but are sent to the link hook of the package + /// specified in the key, which can decide if they are bundled or not. /// /// In dry runs, the assets for all [Architecture]s for the [OS] specified in /// the dry run must be provided. @@ -99,16 +99,15 @@ abstract final class BuildOutput { /// Adds [Asset]s produced by this build or dry run. /// /// If the [linkInPackage] argument is specified, the asset will not be - /// bundled during the build step, but sent as input to the linking script - /// of the specified package, where it can be further processed and possibly - /// bundled. + /// bundled during the build step, but sent as input to the link hook of the + /// specified package, where it can be further processed and possibly bundled. void addAsset(Asset asset, {String? linkInPackage}); /// Adds [Asset]s produced by this build or dry run. /// /// If the [linkInPackage] argument is specified, the assets will not be - /// bundled during the build step, but sent as input to the linking script - /// of the specified package, where they can be further processed and possibly + /// bundled during the build step, but sent as input to the link hook of the + /// specified package, where they can be further processed and possibly /// bundled. void addAssets(Iterable assets, {String? linkInPackage}); diff --git a/pkgs/native_assets_cli/lib/src/api/hook_config.dart b/pkgs/native_assets_cli/lib/src/api/hook_config.dart index 498a0070f..7785d9589 100644 --- a/pkgs/native_assets_cli/lib/src/api/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/hook_config.dart @@ -78,7 +78,7 @@ abstract class HookConfig { /// during a [dryRun]. BuildMode get buildMode; - /// The asset types that the invoker of this build supports. + /// The asset types that the invoker of this hook supports. /// /// Currently known values: /// * [NativeCodeAsset.type] diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 427d55c33..5a3e3da1f 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -22,28 +22,12 @@ import 'resource.dart'; part '../model/link_config.dart'; -/// The input to the linking script. +/// The configuration for a link hook (`hook/link.dart`) invocation. /// /// It consists of a subset of the fields from the [BuildConfig] already passed -/// to the build script, the [assets] from the build step, and the [resources] +/// to the build hook, the [assets] from the build step, and the [resources] /// generated during the kernel compilation. abstract class LinkConfig implements HookConfig { - /// The directory in which all output and intermediate artifacts should be - /// placed. - @override - Uri get outputDirectory; - - /// The name of the package the assets are linked for. - @override - String get packageName; - - /// The root of the package the assets are linked for. - /// - /// Often a package's assets are built because a package is a dependency of - /// another. For this it is convenient to know the packageRoot. - @override - Uri get packageRoot; - /// The list of assets to be linked. These are the assets generated by a /// `build.dart` script destined for this packages `link.dart`. List get assets; diff --git a/pkgs/native_assets_cli/lib/src/model/hook_output.dart b/pkgs/native_assets_cli/lib/src/model/hook_output.dart index 3adab8bcf..fab3faa0b 100644 --- a/pkgs/native_assets_cli/lib/src/model/hook_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook_output.dart @@ -120,9 +120,9 @@ final class HookOutputImpl implements BuildOutput, LinkOutput { } final linkMinVersion = Version(1, 3, 0); if (_assetsForLinking.isNotEmpty && version < linkMinVersion) { - throw UnsupportedError('Please update your Dart SDK to link assets in ' - '`link.dart` scripts. Your current version is $version, but this ' - 'feature requires $linkMinVersion'); + throw UnsupportedError('Please update your Dart or Flutter SDK to link ' + 'assets in `link.dart` scripts. Your current version is $version, ' + 'but this feature requires $linkMinVersion'); } return { _timestampKey: timestamp.toString(), diff --git a/pkgs/native_assets_cli/lib/src/model/resource_identifiers.dart b/pkgs/native_assets_cli/lib/src/model/resource_identifiers.dart index da509e8c1..0ed06d619 100644 --- a/pkgs/native_assets_cli/lib/src/model/resource_identifiers.dart +++ b/pkgs/native_assets_cli/lib/src/model/resource_identifiers.dart @@ -145,7 +145,7 @@ class ResourceFile { } @override - int get hashCode => part.hashCode ^ references.hashCode; + int get hashCode => 95911 ^ part.hashCode ^ references.hashCode; } class ResourceReference { From c24e42257db57c5a25f9111a3c78e0688cc94eff Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 16 Apr 2024 10:46:50 +0200 Subject: [PATCH 153/187] Unify `configFile` --- .../lib/src/model/build_config.dart | 12 ++++++------ pkgs/native_assets_cli/lib/src/model/hook.dart | 12 +++++++----- .../native_assets_cli/lib/src/model/hook_config.dart | 10 ++++++++-- .../native_assets_cli/lib/src/model/link_config.dart | 9 +++------ 4 files changed, 24 insertions(+), 19 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index 5620ab49c..e2866984a 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -6,13 +6,16 @@ part of '../api/build_config.dart'; final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { @override + Hook get hook => Hook.build; + + @override + //TODO: Should be removed once migration to `hook/` is complete. Uri get script { - final hookScript = - packageRoot.resolve('hook/').resolve(Hook.build.scriptName); + final hookScript = packageRoot.resolve('hook/').resolve(hook.scriptName); if (File.fromUri(hookScript).existsSync()) { return hookScript; } else { - return packageRoot.resolve(Hook.build.scriptName); + return packageRoot.resolve(hook.scriptName); } } @@ -20,9 +23,6 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { String get outputName => version > Version(1, 1, 0) ? 'build_output.json' : 'build_output.yaml'; - @override - Uri get configFile => outputDirectory.resolve('../config.json'); - /// The folder in which all output and intermediate artifacts should be /// placed. @override diff --git a/pkgs/native_assets_cli/lib/src/model/hook.dart b/pkgs/native_assets_cli/lib/src/model/hook.dart index 12e82fd47..28859e8b3 100644 --- a/pkgs/native_assets_cli/lib/src/model/hook.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook.dart @@ -4,15 +4,17 @@ /// The two types of scripts which are hooked into the compilation process. /// -/// The `build.dart` script runs before, and the `link.dart` script after -/// compilation. +/// The `build.dart` hook runs before, and the `link.dart` hook after +/// compilation. This enum holds static information about these hooks. enum Hook { - link('link'), - build('build'); + link('link', 'link_config'), + build('build', 'config'); final String _scriptName; + final String _configName; String get scriptName => '$_scriptName.dart'; + String get configName => '$_configName.json'; - const Hook(this._scriptName); + const Hook(this._scriptName, this._configName); } diff --git a/pkgs/native_assets_cli/lib/src/model/hook_config.dart b/pkgs/native_assets_cli/lib/src/model/hook_config.dart index 498e77bad..6e8e25fe2 100644 --- a/pkgs/native_assets_cli/lib/src/model/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook_config.dart @@ -4,14 +4,20 @@ import 'package:pub_semver/pub_semver.dart'; +import 'hook.dart'; + abstract class HookConfigImpl { - Uri get configFile; + Hook get hook; + + Uri get configFile => outputDirectory.resolve('../${hook.configName}'); Uri get outputFile => outputDirectory.resolve(outputName); Uri get outputDirectory; - Uri get script; + // This is currently overriden by [BuildConfig], do account for older versions + // still using a top-level build.dart. + Uri get script => packageRoot.resolve('hook/').resolve(hook.scriptName); String toJsonString(); diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 9d0ea8dde..45d81472b 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -10,6 +10,9 @@ part of '../api/link_config.dart'; /// [assets] from the build step, and the [resources] generated during the /// kernel compilation. class LinkConfigImpl extends HookConfigImpl implements LinkConfig { + @override + Hook get hook => Hook.link; + @override final List assets; @@ -28,9 +31,6 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { }) : _buildConfig = buildConfig, resources = fromIdentifiers(resourceIdentifiers); - @override - Uri get configFile => outputDirectory.resolve('../link_config.json'); - @override Uri get outputDirectory => _buildConfig.outputDirectory; @@ -43,9 +43,6 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { @override Uri get packageRoot => _buildConfig.packageRoot; - @override - Uri get script => packageRoot.resolve('hook/').resolve(Hook.link.scriptName); - @override String toJsonString() => const JsonEncoder.withIndent(' ').convert(_args.toJson()); From 725bdd77e724278b52bc4c65bf1e4d9cabad6ba1 Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 16 Apr 2024 15:58:21 +0200 Subject: [PATCH 154/187] Make resources nullable --- .../treeshaking_native_assets/hook/link.dart | 22 ++++++++++--------- .../link/package_with_assets/hook/link.dart | 6 +++-- pkgs/native_assets_cli/lib/src/api/link.dart | 3 ++- .../lib/src/api/link_config.dart | 4 +++- .../lib/src/model/link_config.dart | 6 ++--- 5 files changed, 24 insertions(+), 17 deletions(-) diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart index a2f806a3f..3bdbc1521 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart @@ -11,21 +11,23 @@ const packageName = 'treeshaking_native_assets'; void main(List arguments) async { await link(arguments, (config, output) async { final usedSymbols = - config.resources.map((resource) => resource.metadata.toString()); + config.resources?.map((resource) => resource.metadata.toString()); final dynamicLibrary = config.assets.firstWhere((asset) => asset.id == 'package:$packageName/src/${packageName}_bindings.dart'); final staticLibrary = config.assets .firstWhere((asset) => asset.id == 'package:$packageName/staticlib'); - final linkerScript = await _writeLinkerScript(usedSymbols); - await _treeshakeStaticLibrary( - usedSymbols, - linkerScript, - dynamicLibrary, - staticLibrary, - ); - output.addAsset(dynamicLibrary); - output.addDependency(config.packageRoot.resolve('hook/link.dart')); + if (usedSymbols != null) { + final linkerScript = await _writeLinkerScript(usedSymbols); + await _treeshakeStaticLibrary( + usedSymbols, + linkerScript, + dynamicLibrary, + staticLibrary, + ); + output.addAsset(dynamicLibrary); + output.addDependency(config.packageRoot.resolve('hook/link.dart')); + } }); } diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart index 0e651bf6f..76ab4210d 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart @@ -7,8 +7,10 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { await link(args, (config, output) async { final assetsWithResource = config.assets.whereType().where( - (asset) => config.resources - .any((resource) => resource.metadata == asset.name)); + (asset) => + config.resources + ?.any((resource) => resource.metadata == asset.name) ?? + true); output.addAssets(assetsWithResource); }); } diff --git a/pkgs/native_assets_cli/lib/src/api/link.dart b/pkgs/native_assets_cli/lib/src/api/link.dart index 87a899f9d..88fbcedc1 100644 --- a/pkgs/native_assets_cli/lib/src/api/link.dart +++ b/pkgs/native_assets_cli/lib/src/api/link.dart @@ -17,7 +17,8 @@ import 'link_config.dart'; /// /// As the linking runs after kernel compilation, you can use treeshaking /// information provided through [LinkConfig.resources] to decide which assets -/// to include. +/// to include. The resources are only collected in AOT mode, therefore the +/// field is null in JIT mode. /// /// /// ```dart diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 5a3e3da1f..2f1c5950e 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -35,7 +35,9 @@ abstract class LinkConfig implements HookConfig { /// A collection of methods annotated with `@ResourceIdentifier`, which are /// called in the tree-shaken Dart code. This information can be used to /// dispose unused [assets]. - List get resources; + /// + /// This is `null` in JIT mode, where no resources are collected. + List? get resources; /// Generate the [LinkConfig] from the input arguments to the linking script. factory LinkConfig.fromArguments(List arguments) => diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 45d81472b..b6f0b7f51 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -19,7 +19,7 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { final BuildConfigImpl _buildConfig; @override - final List resources; + final List? resources; final _LinkConfigArgs _args; @@ -99,8 +99,8 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { static Version latestVersion = Version(1, 0, 0); } -List fromIdentifiers(ResourceIdentifiers? resourceIdentifiers) => - (resourceIdentifiers?.identifiers ?? []) +List? fromIdentifiers(ResourceIdentifiers? resourceIdentifiers) => + resourceIdentifiers?.identifiers .map((e) => Resource(name: e.name, metadata: e.id)) .toList(); From 4903e373557602ef2df26a2076e831f1dee4dcc2 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 17 Apr 2024 15:09:47 +0200 Subject: [PATCH 155/187] Only expose iterable --- pkgs/native_assets_cli/lib/src/api/link_config.dart | 4 ++-- pkgs/native_assets_cli/lib/src/model/link_config.dart | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 2f1c5950e..ee34a8e1d 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -30,14 +30,14 @@ part '../model/link_config.dart'; abstract class LinkConfig implements HookConfig { /// The list of assets to be linked. These are the assets generated by a /// `build.dart` script destined for this packages `link.dart`. - List get assets; + Iterable get assets; /// A collection of methods annotated with `@ResourceIdentifier`, which are /// called in the tree-shaken Dart code. This information can be used to /// dispose unused [assets]. /// /// This is `null` in JIT mode, where no resources are collected. - List? get resources; + Iterable? get resources; /// Generate the [LinkConfig] from the input arguments to the linking script. factory LinkConfig.fromArguments(List arguments) => diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index b6f0b7f51..239b43e75 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -14,12 +14,12 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { Hook get hook => Hook.link; @override - final List assets; + final Iterable assets; final BuildConfigImpl _buildConfig; @override - final List? resources; + final Iterable? resources; final _LinkConfigArgs _args; From b9e6c404c45fc958cd9793ac2c6168ec15eacc3c Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 17 Apr 2024 15:29:21 +0200 Subject: [PATCH 156/187] Make HookConfig implement the API --- .../lib/native_assets_cli_internal.dart | 2 +- pkgs/native_assets_cli/lib/src/api/build_config.dart | 1 - pkgs/native_assets_cli/lib/src/api/build_output.dart | 2 +- pkgs/native_assets_cli/lib/src/api/hook_config.dart | 5 +++++ pkgs/native_assets_cli/lib/src/api/link_config.dart | 1 - pkgs/native_assets_cli/lib/src/model/hook_config.dart | 9 +++++---- 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart index 37f726a06..90fb1bc15 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart @@ -31,6 +31,7 @@ export 'src/api/asset.dart' export 'src/api/build_config.dart' show BuildConfigImpl, CCompilerConfigImpl; export 'src/api/build_mode.dart' show BuildModeImpl; export 'src/api/build_output.dart' show HookOutputImpl; +export 'src/api/hook_config.dart' show HookConfigImpl; export 'src/api/ios_sdk.dart' show IOSSdkImpl; export 'src/api/link_config.dart' show LinkConfigImpl; export 'src/api/link_mode_preference.dart' show LinkModePreferenceImpl; @@ -38,7 +39,6 @@ export 'src/api/os.dart' show OSImpl; export 'src/api/resource.dart'; export 'src/model/dependencies.dart'; export 'src/model/hook.dart'; -export 'src/model/hook_config.dart' show HookConfigImpl; export 'src/model/metadata.dart'; export 'src/model/resource_identifiers.dart'; export 'src/model/target.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index 6efb13d88..f75ca8d5d 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -11,7 +11,6 @@ import 'package:crypto/crypto.dart'; import 'package:pub_semver/pub_semver.dart'; import '../model/hook.dart'; -import '../model/hook_config.dart'; import '../model/metadata.dart'; import '../model/target.dart'; import '../utils/json.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/build_output.dart b/pkgs/native_assets_cli/lib/src/api/build_output.dart index 593faf421..20aab1a8f 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_output.dart @@ -10,7 +10,6 @@ import 'package:pub_semver/pub_semver.dart'; import 'package:yaml/yaml.dart' show loadYaml; import '../model/dependencies.dart'; -import '../model/hook_config.dart'; import '../model/metadata.dart'; import '../utils/datetime.dart'; import '../utils/file.dart'; @@ -19,6 +18,7 @@ import '../utils/map.dart'; import 'architecture.dart'; import 'asset.dart'; import 'build_config.dart'; +import 'hook_config.dart'; import 'os.dart'; part '../model/hook_output.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/hook_config.dart b/pkgs/native_assets_cli/lib/src/api/hook_config.dart index 7785d9589..ebf9f00d3 100644 --- a/pkgs/native_assets_cli/lib/src/api/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/hook_config.dart @@ -2,6 +2,9 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'package:pub_semver/pub_semver.dart'; + +import '../model/hook.dart'; import 'architecture.dart'; import 'asset.dart'; import 'build_config.dart'; @@ -10,6 +13,8 @@ import 'ios_sdk.dart'; import 'link_config.dart'; import 'os.dart'; +part '../model/hook_config.dart'; + /// The shared properties of a [LinkConfig] and a [BuildConfig]. /// /// This abstraction makes it easier to design APIs intended for both kinds of diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index ee34a8e1d..455fc879e 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -8,7 +8,6 @@ import 'package:args/args.dart'; import 'package:pub_semver/pub_semver.dart'; import '../model/hook.dart'; -import '../model/hook_config.dart'; import '../model/resource_identifiers.dart'; import '../utils/map.dart'; import 'architecture.dart'; diff --git a/pkgs/native_assets_cli/lib/src/model/hook_config.dart b/pkgs/native_assets_cli/lib/src/model/hook_config.dart index 6e8e25fe2..573d052bc 100644 --- a/pkgs/native_assets_cli/lib/src/model/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook_config.dart @@ -2,17 +2,16 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:pub_semver/pub_semver.dart'; +part of '../api/hook_config.dart'; -import 'hook.dart'; - -abstract class HookConfigImpl { +abstract class HookConfigImpl implements HookConfig { Hook get hook; Uri get configFile => outputDirectory.resolve('../${hook.configName}'); Uri get outputFile => outputDirectory.resolve(outputName); + @override Uri get outputDirectory; // This is currently overriden by [BuildConfig], do account for older versions @@ -21,8 +20,10 @@ abstract class HookConfigImpl { String toJsonString(); + @override String get packageName; + @override Uri get packageRoot; String get outputName; From 54d4d4c779fec534acc3ccc7e2424cac0210fb64 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 17 Apr 2024 16:09:47 +0200 Subject: [PATCH 157/187] Fix testdata --- .../native_assets_builder/test_data/complex_link/hook/link.dart | 2 +- pkgs/native_assets_builder/test_data/simple_link/hook/link.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart b/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart index fc6abe456..501438d21 100644 --- a/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/complex_link/hook/link.dart @@ -11,5 +11,5 @@ void main(List args) async { ); } -Iterable treeshake(List assets) => +Iterable treeshake(Iterable assets) => assets.where((asset) => !asset.id.endsWith('data_helper_2')); diff --git a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart index 7a6a4d3e3..4353c0a43 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart @@ -11,4 +11,4 @@ void main(List args) async { ); } -List shake(List assets) => assets.skip(2).toList(); +List shake(Iterable assets) => assets.skip(2).toList(); From 451fcd8d5892c111c9efdfc4b02259477ef45365 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 17 Apr 2024 16:09:59 +0200 Subject: [PATCH 158/187] Inline linkconfigargs --- .../lib/src/build_runner/build_runner.dart | 5 +- .../lib/src/api/hook_config.dart | 4 +- .../lib/src/api/link_config.dart | 4 +- .../lib/src/model/asset.dart | 2 +- .../lib/src/model/build_config.dart | 64 +++++----------- .../lib/src/model/hook_config.dart | 40 +++++++++- .../lib/src/model/link_config.dart | 76 +++++-------------- 7 files changed, 86 insertions(+), 109 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 8425b32ce..8872bac71 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -206,11 +206,10 @@ class NativeAssetsBuildRunner { hook: hook, ); if (hook == Hook.link) { - return LinkConfigImpl.fromValues( + return LinkConfigImpl( resourceIdentifierUri: resourceIdentifiers, buildConfig: buildConfig, - assetsForLinking: - buildResult!.assetsForLinking[buildConfig.packageName] ?? [], + assets: buildResult!.assetsForLinking[buildConfig.packageName] ?? [], ); } else { return buildConfig; diff --git a/pkgs/native_assets_cli/lib/src/api/hook_config.dart b/pkgs/native_assets_cli/lib/src/api/hook_config.dart index ebf9f00d3..818473ed0 100644 --- a/pkgs/native_assets_cli/lib/src/api/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/hook_config.dart @@ -2,6 +2,8 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'dart:convert'; + import 'package:pub_semver/pub_semver.dart'; import '../model/hook.dart'; @@ -48,7 +50,7 @@ abstract class HookConfig { /// /// Not available during a [dryRun]. Will throw a [StateError] if accessed /// during a [dryRun]. - IOSSdk get targetIOSSdk; + IOSSdk? get targetIOSSdk; /// When compiling for Android, the minimum Android SDK API version to that /// the compiled code will be compatible with. diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 455fc879e..63f62aa09 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -47,10 +47,10 @@ abstract class LinkConfig implements HookConfig { required BuildConfig buildConfig, required List assetsForLinking, }) => - LinkConfigImpl.fromValues( + LinkConfigImpl( resourceIdentifierUri: resourceIdentifierUri, buildConfig: buildConfig as BuildConfigImpl, - assetsForLinking: assetsForLinking.cast(), + assets: assetsForLinking.cast(), ); /// The version of [BuildConfig]. diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index 6df49381f..0c98f3b07 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -27,7 +27,7 @@ abstract final class AssetImpl implements Asset { } static List> listToJson( - List assets, Version version) => + Iterable assets, Version version) => [ for (final asset in assets) asset.toJson(version), ]; diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index e2866984a..f90912a51 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -281,14 +281,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { return BuildConfigImpl.fromConfig(config); } - static const outDirConfigKey = 'out_dir'; - static const packageNameConfigKey = 'package_name'; - static const packageRootConfigKey = 'package_root'; static const dependencyMetadataConfigKey = 'dependency_metadata'; - static const _versionKey = 'version'; - static const targetAndroidNdkApiConfigKey = 'target_android_ndk_api'; - static const dryRunConfigKey = 'dry_run'; - static const supportedAssetTypesKey = 'supported_asset_types'; List _readFieldsFromConfig() { var osSet = false; @@ -313,11 +306,13 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { _version = version; }, (config) => _config = config, - (config) => _dryRun = config.optionalBool(dryRunConfigKey), - (config) => _outDir = config.path(outDirConfigKey, mustExist: true), - (config) => _packageName = config.string(packageNameConfigKey), + (config) => _dryRun = config.optionalBool(HookConfigImpl.dryRunConfigKey), + (config) => _outDir = + config.path(HookConfigImpl.outDirConfigKey, mustExist: true), (config) => - _packageRoot = config.path(packageRootConfigKey, mustExist: true), + _packageName = config.string(HookConfigImpl.packageNameConfigKey), + (config) => _packageRoot = + config.path(HookConfigImpl.packageRootConfigKey, mustExist: true), (config) { if (dryRun) { _throwIfNotNullInDryRun(BuildModeImpl.configKey); @@ -375,10 +370,11 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { }, (config) { if (dryRun) { - _throwIfNotNullInDryRun(targetAndroidNdkApiConfigKey); + _throwIfNotNullInDryRun( + HookConfigImpl.targetAndroidNdkApiConfigKey); } else { _targetAndroidNdkApi = (osSet && _targetOS == OSImpl.android) - ? config.int(targetAndroidNdkApiConfigKey) + ? config.int(HookConfigImpl.targetAndroidNdkApiConfigKey) : null; } }, @@ -447,7 +443,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { _dependencyMetadata = _readDependencyMetadataFromConfig(config); }, (config) => _supportedAssetTypes = - config.optionalStringList(supportedAssetTypesKey) ?? + config.optionalStringList(HookConfigImpl.supportedAssetTypesKey) ?? [NativeCodeAsset.type], ]; } @@ -481,43 +477,23 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { static BuildConfigImpl fromJson(Map buildConfigJson) => BuildConfigImpl.fromConfig(Config(fileParsed: buildConfigJson)); + @override Map toJson() { - late Map cCompilerJson; - if (!dryRun) { - cCompilerJson = _cCompiler.toJson(); - } - + final json = super.toJson(); return { - outDirConfigKey: _outDir.toFilePath(), - packageNameConfigKey: _packageName, - packageRootConfigKey: _packageRoot.toFilePath(), - OSImpl.configKey: _targetOS.toString(), + ...json, LinkModePreferenceImpl.configKey: _linkModePreference.toString(), if (_supportedAssetTypes.isNotEmpty) - supportedAssetTypesKey: _supportedAssetTypes, - _versionKey: version.toString(), - if (dryRun) dryRunConfigKey: dryRun, - if (!dryRun) ...{ - BuildModeImpl.configKey: _buildMode.toString(), - ArchitectureImpl.configKey: _targetArchitecture.toString(), - if (_targetIOSSdk != null) - IOSSdkImpl.configKey: _targetIOSSdk.toString(), - if (_targetAndroidNdkApi != null) - targetAndroidNdkApiConfigKey: _targetAndroidNdkApi, - if (cCompilerJson.isNotEmpty) - CCompilerConfigImpl.configKey: cCompilerJson, - if (_dependencyMetadata != null && _dependencyMetadata.isNotEmpty) - dependencyMetadataConfigKey: { - for (final entry in _dependencyMetadata.entries) - entry.key: entry.value.toJson(), - }, - }, + if (!dryRun) ...{ + if (_dependencyMetadata != null && _dependencyMetadata.isNotEmpty) + dependencyMetadataConfigKey: { + for (final entry in _dependencyMetadata.entries) + entry.key: entry.value.toJson(), + }, + }, }.sortOnKey(); } - @override - String toJsonString() => const JsonEncoder.withIndent(' ').convert(toJson()); - @override bool operator ==(Object other) { if (other is! BuildConfigImpl) { diff --git a/pkgs/native_assets_cli/lib/src/model/hook_config.dart b/pkgs/native_assets_cli/lib/src/model/hook_config.dart index 573d052bc..77cfaf20a 100644 --- a/pkgs/native_assets_cli/lib/src/model/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook_config.dart @@ -18,8 +18,6 @@ abstract class HookConfigImpl implements HookConfig { // still using a top-level build.dart. Uri get script => packageRoot.resolve('hook/').resolve(hook.scriptName); - String toJsonString(); - @override String get packageName; @@ -29,4 +27,42 @@ abstract class HookConfigImpl implements HookConfig { String get outputName; Version get version; + + static const outDirConfigKey = 'out_dir'; + static const packageNameConfigKey = 'package_name'; + static const packageRootConfigKey = 'package_root'; + static const dependencyMetadataConfigKey = 'dependency_metadata'; + static const _versionKey = 'version'; + static const targetAndroidNdkApiConfigKey = 'target_android_ndk_api'; + static const dryRunConfigKey = 'dry_run'; + static const supportedAssetTypesKey = 'supported_asset_types'; + + Map toJson() { + late Map cCompilerJson; + if (!dryRun) { + cCompilerJson = (cCompiler as CCompilerConfigImpl).toJson(); + } + + return { + outDirConfigKey: outputDirectory.toFilePath(), + packageNameConfigKey: packageName, + packageRootConfigKey: packageRoot.toFilePath(), + OSImpl.configKey: targetOS.toString(), + if (supportedAssetTypes.isNotEmpty) + supportedAssetTypesKey: supportedAssetTypes, + _versionKey: version.toString(), + if (dryRun) dryRunConfigKey: dryRun, + if (!dryRun) ...{ + BuildModeImpl.configKey: buildMode.toString(), + ArchitectureImpl.configKey: targetArchitecture.toString(), + if (targetIOSSdk != null) IOSSdkImpl.configKey: targetIOSSdk.toString(), + if (targetAndroidNdkApi != null) + targetAndroidNdkApiConfigKey: targetAndroidNdkApi!, + if (cCompilerJson.isNotEmpty) + CCompilerConfigImpl.configKey: cCompilerJson, + }, + }; + } + + String toJsonString() => const JsonEncoder.withIndent(' ').convert(toJson()); } diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 239b43e75..038a2b068 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -21,15 +21,15 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { @override final Iterable? resources; - final _LinkConfigArgs _args; - - LinkConfigImpl._( - this._args, { + LinkConfigImpl({ required this.assets, required BuildConfigImpl buildConfig, - required ResourceIdentifiers? resourceIdentifiers, + required this.resourceIdentifierUri, }) : _buildConfig = buildConfig, - resources = fromIdentifiers(resourceIdentifiers); + resources = resourceIdentifierUri != null + ? fromIdentifiers(ResourceIdentifiers.fromFile( + resourceIdentifierUri.toFilePath())) + : null; @override Uri get outputDirectory => _buildConfig.outputDirectory; @@ -43,27 +43,9 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { @override Uri get packageRoot => _buildConfig.packageRoot; - @override - String toJsonString() => - const JsonEncoder.withIndent(' ').convert(_args.toJson()); - @override Version get version => _buildConfig.version; - static LinkConfig fromArguments(List arguments) => - _LinkConfigArgs.fromArguments(arguments).toLinkConfig(); - - factory LinkConfigImpl.fromValues({ - required Uri? resourceIdentifierUri, - required BuildConfigImpl buildConfig, - required List assetsForLinking, - }) => - _LinkConfigArgs( - assetsForLinking: assetsForLinking, - buildConfig: buildConfig, - resourceIdentifierUri: resourceIdentifierUri, - ).toLinkConfig(); - @override BuildMode get buildMode => _buildConfig.buildMode; @@ -97,29 +79,14 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { /// proper error messages rather than just fail to parse the JSON /// representation in the protocol. static Version latestVersion = Version(1, 0, 0); -} - -List? fromIdentifiers(ResourceIdentifiers? resourceIdentifiers) => - resourceIdentifiers?.identifiers - .map((e) => Resource(name: e.name, metadata: e.id)) - .toList(); -class _LinkConfigArgs { final Uri? resourceIdentifierUri; - final BuildConfigImpl buildConfig; - final List assetsForLinking; static const resourceIdentifierKey = 'resource_identifiers'; static const buildConfigKey = 'build_config'; static const assetsKey = 'assets'; - _LinkConfigArgs({ - required this.resourceIdentifierUri, - required this.buildConfig, - required this.assetsForLinking, - }); - - factory _LinkConfigArgs.fromArguments(List arguments) { + static LinkConfig fromArguments(List arguments) { final argParser = ArgParser()..addOption('config'); final results = argParser.parse(arguments); @@ -128,10 +95,10 @@ class _LinkConfigArgs { final linkConfigJson = jsonDecode(linkConfigContents) as Map; - return _LinkConfigArgs.fromJson(linkConfigJson); + return _fromJson(linkConfigJson); } - factory _LinkConfigArgs.fromJson(Map linkConfigJson) { + static LinkConfigImpl _fromJson(Map linkConfigJson) { final resourcesPath = linkConfigJson[resourceIdentifierKey] as String?; final buildConfigJson = linkConfigJson[buildConfigKey] as Map; @@ -139,27 +106,24 @@ class _LinkConfigArgs { if (assetList == null) { throw ArgumentError('Expected to find the assetList in $linkConfigJson'); } - return _LinkConfigArgs( + return LinkConfigImpl( + buildConfig: BuildConfigImpl.fromJson(buildConfigJson), + assets: AssetImpl.listFromJson(assetList), resourceIdentifierUri: resourcesPath != null ? Uri.file(resourcesPath) : null, - buildConfig: BuildConfigImpl.fromJson(buildConfigJson), - assetsForLinking: AssetImpl.listFromJson(assetList), ); } - LinkConfigImpl toLinkConfig() => LinkConfigImpl._( - this, - buildConfig: buildConfig, - resourceIdentifiers: resourceIdentifierUri != null - ? ResourceIdentifiers.fromFile(resourceIdentifierUri!.toFilePath()) - : null, - assets: assetsForLinking, - ); - + @override Map toJson() => { if (resourceIdentifierUri != null) resourceIdentifierKey: resourceIdentifierUri!.toFilePath(), - buildConfigKey: buildConfig.toJson(), - assetsKey: AssetImpl.listToJson(assetsForLinking, buildConfig.version), + buildConfigKey: _buildConfig.toJson(), + assetsKey: AssetImpl.listToJson(assets, _buildConfig.version), }.sortOnKey(); } + +List? fromIdentifiers(ResourceIdentifiers? resourceIdentifiers) => + resourceIdentifiers?.identifiers + .map((e) => Resource(name: e.name, metadata: e.id)) + .toList(); From 986b9c7be0bf0163fc5f3b36394b43de6495223c Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 17 Apr 2024 16:10:14 +0200 Subject: [PATCH 159/187] Revert "Inline linkconfigargs" This reverts commit 451fcd8d5892c111c9efdfc4b02259477ef45365. --- .../lib/src/build_runner/build_runner.dart | 5 +- .../lib/src/api/hook_config.dart | 4 +- .../lib/src/api/link_config.dart | 4 +- .../lib/src/model/asset.dart | 2 +- .../lib/src/model/build_config.dart | 64 +++++++++++----- .../lib/src/model/hook_config.dart | 40 +--------- .../lib/src/model/link_config.dart | 76 ++++++++++++++----- 7 files changed, 109 insertions(+), 86 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 8872bac71..8425b32ce 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -206,10 +206,11 @@ class NativeAssetsBuildRunner { hook: hook, ); if (hook == Hook.link) { - return LinkConfigImpl( + return LinkConfigImpl.fromValues( resourceIdentifierUri: resourceIdentifiers, buildConfig: buildConfig, - assets: buildResult!.assetsForLinking[buildConfig.packageName] ?? [], + assetsForLinking: + buildResult!.assetsForLinking[buildConfig.packageName] ?? [], ); } else { return buildConfig; diff --git a/pkgs/native_assets_cli/lib/src/api/hook_config.dart b/pkgs/native_assets_cli/lib/src/api/hook_config.dart index 818473ed0..ebf9f00d3 100644 --- a/pkgs/native_assets_cli/lib/src/api/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/hook_config.dart @@ -2,8 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'dart:convert'; - import 'package:pub_semver/pub_semver.dart'; import '../model/hook.dart'; @@ -50,7 +48,7 @@ abstract class HookConfig { /// /// Not available during a [dryRun]. Will throw a [StateError] if accessed /// during a [dryRun]. - IOSSdk? get targetIOSSdk; + IOSSdk get targetIOSSdk; /// When compiling for Android, the minimum Android SDK API version to that /// the compiled code will be compatible with. diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 63f62aa09..455fc879e 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -47,10 +47,10 @@ abstract class LinkConfig implements HookConfig { required BuildConfig buildConfig, required List assetsForLinking, }) => - LinkConfigImpl( + LinkConfigImpl.fromValues( resourceIdentifierUri: resourceIdentifierUri, buildConfig: buildConfig as BuildConfigImpl, - assets: assetsForLinking.cast(), + assetsForLinking: assetsForLinking.cast(), ); /// The version of [BuildConfig]. diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index 0c98f3b07..6df49381f 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -27,7 +27,7 @@ abstract final class AssetImpl implements Asset { } static List> listToJson( - Iterable assets, Version version) => + List assets, Version version) => [ for (final asset in assets) asset.toJson(version), ]; diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index f90912a51..e2866984a 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -281,7 +281,14 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { return BuildConfigImpl.fromConfig(config); } + static const outDirConfigKey = 'out_dir'; + static const packageNameConfigKey = 'package_name'; + static const packageRootConfigKey = 'package_root'; static const dependencyMetadataConfigKey = 'dependency_metadata'; + static const _versionKey = 'version'; + static const targetAndroidNdkApiConfigKey = 'target_android_ndk_api'; + static const dryRunConfigKey = 'dry_run'; + static const supportedAssetTypesKey = 'supported_asset_types'; List _readFieldsFromConfig() { var osSet = false; @@ -306,13 +313,11 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { _version = version; }, (config) => _config = config, - (config) => _dryRun = config.optionalBool(HookConfigImpl.dryRunConfigKey), - (config) => _outDir = - config.path(HookConfigImpl.outDirConfigKey, mustExist: true), + (config) => _dryRun = config.optionalBool(dryRunConfigKey), + (config) => _outDir = config.path(outDirConfigKey, mustExist: true), + (config) => _packageName = config.string(packageNameConfigKey), (config) => - _packageName = config.string(HookConfigImpl.packageNameConfigKey), - (config) => _packageRoot = - config.path(HookConfigImpl.packageRootConfigKey, mustExist: true), + _packageRoot = config.path(packageRootConfigKey, mustExist: true), (config) { if (dryRun) { _throwIfNotNullInDryRun(BuildModeImpl.configKey); @@ -370,11 +375,10 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { }, (config) { if (dryRun) { - _throwIfNotNullInDryRun( - HookConfigImpl.targetAndroidNdkApiConfigKey); + _throwIfNotNullInDryRun(targetAndroidNdkApiConfigKey); } else { _targetAndroidNdkApi = (osSet && _targetOS == OSImpl.android) - ? config.int(HookConfigImpl.targetAndroidNdkApiConfigKey) + ? config.int(targetAndroidNdkApiConfigKey) : null; } }, @@ -443,7 +447,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { _dependencyMetadata = _readDependencyMetadataFromConfig(config); }, (config) => _supportedAssetTypes = - config.optionalStringList(HookConfigImpl.supportedAssetTypesKey) ?? + config.optionalStringList(supportedAssetTypesKey) ?? [NativeCodeAsset.type], ]; } @@ -477,23 +481,43 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { static BuildConfigImpl fromJson(Map buildConfigJson) => BuildConfigImpl.fromConfig(Config(fileParsed: buildConfigJson)); - @override Map toJson() { - final json = super.toJson(); + late Map cCompilerJson; + if (!dryRun) { + cCompilerJson = _cCompiler.toJson(); + } + return { - ...json, + outDirConfigKey: _outDir.toFilePath(), + packageNameConfigKey: _packageName, + packageRootConfigKey: _packageRoot.toFilePath(), + OSImpl.configKey: _targetOS.toString(), LinkModePreferenceImpl.configKey: _linkModePreference.toString(), if (_supportedAssetTypes.isNotEmpty) - if (!dryRun) ...{ - if (_dependencyMetadata != null && _dependencyMetadata.isNotEmpty) - dependencyMetadataConfigKey: { - for (final entry in _dependencyMetadata.entries) - entry.key: entry.value.toJson(), - }, - }, + supportedAssetTypesKey: _supportedAssetTypes, + _versionKey: version.toString(), + if (dryRun) dryRunConfigKey: dryRun, + if (!dryRun) ...{ + BuildModeImpl.configKey: _buildMode.toString(), + ArchitectureImpl.configKey: _targetArchitecture.toString(), + if (_targetIOSSdk != null) + IOSSdkImpl.configKey: _targetIOSSdk.toString(), + if (_targetAndroidNdkApi != null) + targetAndroidNdkApiConfigKey: _targetAndroidNdkApi, + if (cCompilerJson.isNotEmpty) + CCompilerConfigImpl.configKey: cCompilerJson, + if (_dependencyMetadata != null && _dependencyMetadata.isNotEmpty) + dependencyMetadataConfigKey: { + for (final entry in _dependencyMetadata.entries) + entry.key: entry.value.toJson(), + }, + }, }.sortOnKey(); } + @override + String toJsonString() => const JsonEncoder.withIndent(' ').convert(toJson()); + @override bool operator ==(Object other) { if (other is! BuildConfigImpl) { diff --git a/pkgs/native_assets_cli/lib/src/model/hook_config.dart b/pkgs/native_assets_cli/lib/src/model/hook_config.dart index 77cfaf20a..573d052bc 100644 --- a/pkgs/native_assets_cli/lib/src/model/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook_config.dart @@ -18,6 +18,8 @@ abstract class HookConfigImpl implements HookConfig { // still using a top-level build.dart. Uri get script => packageRoot.resolve('hook/').resolve(hook.scriptName); + String toJsonString(); + @override String get packageName; @@ -27,42 +29,4 @@ abstract class HookConfigImpl implements HookConfig { String get outputName; Version get version; - - static const outDirConfigKey = 'out_dir'; - static const packageNameConfigKey = 'package_name'; - static const packageRootConfigKey = 'package_root'; - static const dependencyMetadataConfigKey = 'dependency_metadata'; - static const _versionKey = 'version'; - static const targetAndroidNdkApiConfigKey = 'target_android_ndk_api'; - static const dryRunConfigKey = 'dry_run'; - static const supportedAssetTypesKey = 'supported_asset_types'; - - Map toJson() { - late Map cCompilerJson; - if (!dryRun) { - cCompilerJson = (cCompiler as CCompilerConfigImpl).toJson(); - } - - return { - outDirConfigKey: outputDirectory.toFilePath(), - packageNameConfigKey: packageName, - packageRootConfigKey: packageRoot.toFilePath(), - OSImpl.configKey: targetOS.toString(), - if (supportedAssetTypes.isNotEmpty) - supportedAssetTypesKey: supportedAssetTypes, - _versionKey: version.toString(), - if (dryRun) dryRunConfigKey: dryRun, - if (!dryRun) ...{ - BuildModeImpl.configKey: buildMode.toString(), - ArchitectureImpl.configKey: targetArchitecture.toString(), - if (targetIOSSdk != null) IOSSdkImpl.configKey: targetIOSSdk.toString(), - if (targetAndroidNdkApi != null) - targetAndroidNdkApiConfigKey: targetAndroidNdkApi!, - if (cCompilerJson.isNotEmpty) - CCompilerConfigImpl.configKey: cCompilerJson, - }, - }; - } - - String toJsonString() => const JsonEncoder.withIndent(' ').convert(toJson()); } diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 038a2b068..239b43e75 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -21,15 +21,15 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { @override final Iterable? resources; - LinkConfigImpl({ + final _LinkConfigArgs _args; + + LinkConfigImpl._( + this._args, { required this.assets, required BuildConfigImpl buildConfig, - required this.resourceIdentifierUri, + required ResourceIdentifiers? resourceIdentifiers, }) : _buildConfig = buildConfig, - resources = resourceIdentifierUri != null - ? fromIdentifiers(ResourceIdentifiers.fromFile( - resourceIdentifierUri.toFilePath())) - : null; + resources = fromIdentifiers(resourceIdentifiers); @override Uri get outputDirectory => _buildConfig.outputDirectory; @@ -43,9 +43,27 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { @override Uri get packageRoot => _buildConfig.packageRoot; + @override + String toJsonString() => + const JsonEncoder.withIndent(' ').convert(_args.toJson()); + @override Version get version => _buildConfig.version; + static LinkConfig fromArguments(List arguments) => + _LinkConfigArgs.fromArguments(arguments).toLinkConfig(); + + factory LinkConfigImpl.fromValues({ + required Uri? resourceIdentifierUri, + required BuildConfigImpl buildConfig, + required List assetsForLinking, + }) => + _LinkConfigArgs( + assetsForLinking: assetsForLinking, + buildConfig: buildConfig, + resourceIdentifierUri: resourceIdentifierUri, + ).toLinkConfig(); + @override BuildMode get buildMode => _buildConfig.buildMode; @@ -79,14 +97,29 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { /// proper error messages rather than just fail to parse the JSON /// representation in the protocol. static Version latestVersion = Version(1, 0, 0); +} + +List? fromIdentifiers(ResourceIdentifiers? resourceIdentifiers) => + resourceIdentifiers?.identifiers + .map((e) => Resource(name: e.name, metadata: e.id)) + .toList(); +class _LinkConfigArgs { final Uri? resourceIdentifierUri; + final BuildConfigImpl buildConfig; + final List assetsForLinking; static const resourceIdentifierKey = 'resource_identifiers'; static const buildConfigKey = 'build_config'; static const assetsKey = 'assets'; - static LinkConfig fromArguments(List arguments) { + _LinkConfigArgs({ + required this.resourceIdentifierUri, + required this.buildConfig, + required this.assetsForLinking, + }); + + factory _LinkConfigArgs.fromArguments(List arguments) { final argParser = ArgParser()..addOption('config'); final results = argParser.parse(arguments); @@ -95,10 +128,10 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { final linkConfigJson = jsonDecode(linkConfigContents) as Map; - return _fromJson(linkConfigJson); + return _LinkConfigArgs.fromJson(linkConfigJson); } - static LinkConfigImpl _fromJson(Map linkConfigJson) { + factory _LinkConfigArgs.fromJson(Map linkConfigJson) { final resourcesPath = linkConfigJson[resourceIdentifierKey] as String?; final buildConfigJson = linkConfigJson[buildConfigKey] as Map; @@ -106,24 +139,27 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { if (assetList == null) { throw ArgumentError('Expected to find the assetList in $linkConfigJson'); } - return LinkConfigImpl( - buildConfig: BuildConfigImpl.fromJson(buildConfigJson), - assets: AssetImpl.listFromJson(assetList), + return _LinkConfigArgs( resourceIdentifierUri: resourcesPath != null ? Uri.file(resourcesPath) : null, + buildConfig: BuildConfigImpl.fromJson(buildConfigJson), + assetsForLinking: AssetImpl.listFromJson(assetList), ); } - @override + LinkConfigImpl toLinkConfig() => LinkConfigImpl._( + this, + buildConfig: buildConfig, + resourceIdentifiers: resourceIdentifierUri != null + ? ResourceIdentifiers.fromFile(resourceIdentifierUri!.toFilePath()) + : null, + assets: assetsForLinking, + ); + Map toJson() => { if (resourceIdentifierUri != null) resourceIdentifierKey: resourceIdentifierUri!.toFilePath(), - buildConfigKey: _buildConfig.toJson(), - assetsKey: AssetImpl.listToJson(assets, _buildConfig.version), + buildConfigKey: buildConfig.toJson(), + assetsKey: AssetImpl.listToJson(assetsForLinking, buildConfig.version), }.sortOnKey(); } - -List? fromIdentifiers(ResourceIdentifiers? resourceIdentifiers) => - resourceIdentifiers?.identifiers - .map((e) => Resource(name: e.name, metadata: e.id)) - .toList(); From 6d1a7ac147c6672a6f1cff669b38135084bdb460 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 17 Apr 2024 16:35:27 +0200 Subject: [PATCH 160/187] Rename resources --- .../test_data/treeshaking_native_assets/hook/link.dart | 4 ++-- .../example/link/package_with_assets/hook/link.dart | 2 +- pkgs/native_assets_cli/lib/src/api/link.dart | 2 +- pkgs/native_assets_cli/lib/src/api/link_config.dart | 6 +++--- pkgs/native_assets_cli/lib/src/model/link_config.dart | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart index 3bdbc1521..ec99b275e 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart @@ -10,8 +10,8 @@ const packageName = 'treeshaking_native_assets'; void main(List arguments) async { await link(arguments, (config, output) async { - final usedSymbols = - config.resources?.map((resource) => resource.metadata.toString()); + final usedSymbols = config.treeshakingInformation + ?.map((resource) => resource.metadata.toString()); final dynamicLibrary = config.assets.firstWhere((asset) => asset.id == 'package:$packageName/src/${packageName}_bindings.dart'); final staticLibrary = config.assets diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart index 76ab4210d..216558347 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart @@ -8,7 +8,7 @@ void main(List args) async { await link(args, (config, output) async { final assetsWithResource = config.assets.whereType().where( (asset) => - config.resources + config.treeshakingInformation ?.any((resource) => resource.metadata == asset.name) ?? true); output.addAssets(assetsWithResource); diff --git a/pkgs/native_assets_cli/lib/src/api/link.dart b/pkgs/native_assets_cli/lib/src/api/link.dart index 88fbcedc1..23dd6c9ec 100644 --- a/pkgs/native_assets_cli/lib/src/api/link.dart +++ b/pkgs/native_assets_cli/lib/src/api/link.dart @@ -16,7 +16,7 @@ import 'link_config.dart'; /// application if included in the [LinkOutput]. /// /// As the linking runs after kernel compilation, you can use treeshaking -/// information provided through [LinkConfig.resources] to decide which assets +/// information provided through [LinkConfig.treeshakingInformation] to decide which assets /// to include. The resources are only collected in AOT mode, therefore the /// field is null in JIT mode. /// diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 455fc879e..9ae724acd 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -24,8 +24,8 @@ part '../model/link_config.dart'; /// The configuration for a link hook (`hook/link.dart`) invocation. /// /// It consists of a subset of the fields from the [BuildConfig] already passed -/// to the build hook, the [assets] from the build step, and the [resources] -/// generated during the kernel compilation. +/// to the build hook, the [assets] from the build step, and the +/// [treeshakingInformation] generated during the kernel compilation. abstract class LinkConfig implements HookConfig { /// The list of assets to be linked. These are the assets generated by a /// `build.dart` script destined for this packages `link.dart`. @@ -36,7 +36,7 @@ abstract class LinkConfig implements HookConfig { /// dispose unused [assets]. /// /// This is `null` in JIT mode, where no resources are collected. - Iterable? get resources; + Iterable? get treeshakingInformation; /// Generate the [LinkConfig] from the input arguments to the linking script. factory LinkConfig.fromArguments(List arguments) => diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 239b43e75..f1eed4748 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -7,7 +7,7 @@ part of '../api/link_config.dart'; /// The input to the linking script. /// /// It consists of the [_buildConfig] already passed to the build script, the -/// [assets] from the build step, and the [resources] generated during the +/// [assets] from the build step, and the [treeshakingInformation] generated during the /// kernel compilation. class LinkConfigImpl extends HookConfigImpl implements LinkConfig { @override @@ -19,7 +19,7 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { final BuildConfigImpl _buildConfig; @override - final Iterable? resources; + final Iterable? treeshakingInformation; final _LinkConfigArgs _args; @@ -29,7 +29,7 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { required BuildConfigImpl buildConfig, required ResourceIdentifiers? resourceIdentifiers, }) : _buildConfig = buildConfig, - resources = fromIdentifiers(resourceIdentifiers); + treeshakingInformation = fromIdentifiers(resourceIdentifiers); @override Uri get outputDirectory => _buildConfig.outputDirectory; From 851578500804a545c788212d7a9419b0dff5b208 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 17 Apr 2024 16:40:38 +0200 Subject: [PATCH 161/187] Format docs --- pkgs/native_assets_cli/lib/src/api/link.dart | 6 +++--- pkgs/native_assets_cli/lib/src/model/link_config.dart | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/api/link.dart b/pkgs/native_assets_cli/lib/src/api/link.dart index 23dd6c9ec..91416d7db 100644 --- a/pkgs/native_assets_cli/lib/src/api/link.dart +++ b/pkgs/native_assets_cli/lib/src/api/link.dart @@ -16,9 +16,9 @@ import 'link_config.dart'; /// application if included in the [LinkOutput]. /// /// As the linking runs after kernel compilation, you can use treeshaking -/// information provided through [LinkConfig.treeshakingInformation] to decide which assets -/// to include. The resources are only collected in AOT mode, therefore the -/// field is null in JIT mode. +/// information provided through [LinkConfig.treeshakingInformation] to decide +/// which assets to include. The resources are only collected in AOT mode, +/// therefore the field is null in JIT mode. /// /// /// ```dart diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index f1eed4748..84925293c 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -7,8 +7,8 @@ part of '../api/link_config.dart'; /// The input to the linking script. /// /// It consists of the [_buildConfig] already passed to the build script, the -/// [assets] from the build step, and the [treeshakingInformation] generated during the -/// kernel compilation. +/// [assets] from the build step, and the [treeshakingInformation] generated +/// during the kernel compilation. class LinkConfigImpl extends HookConfigImpl implements LinkConfig { @override Hook get hook => Hook.link; From c07cf26f902c3230fd8733361f838b5b407b3371 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 17 Apr 2024 17:40:16 +0200 Subject: [PATCH 162/187] Reduce config usage --- .../lib/src/api/build_config.dart | 6 +- .../lib/src/api/hook_config.dart | 2 +- .../lib/src/model/build_config.dart | 14 +-- .../test/api/build_config_test.dart | 13 ++- pkgs/native_assets_cli/test/helpers.dart | 19 ++++ .../test/model/build_config_test.dart | 91 ++++++++----------- 6 files changed, 72 insertions(+), 73 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index f75ca8d5d..7505e85aa 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -77,11 +77,7 @@ abstract final class BuildConfig implements HookConfig { Map? environment, Uri? workingDirectory, }) => - BuildConfigImpl.fromArguments( - arguments, - environment: environment, - workingDirectory: workingDirectory, - ); + BuildConfigImpl.fromArguments(arguments); /// Constructs a config for a non-dry run by providing values for each field. /// diff --git a/pkgs/native_assets_cli/lib/src/api/hook_config.dart b/pkgs/native_assets_cli/lib/src/api/hook_config.dart index ebf9f00d3..0df6405ef 100644 --- a/pkgs/native_assets_cli/lib/src/api/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/hook_config.dart @@ -48,7 +48,7 @@ abstract class HookConfig { /// /// Not available during a [dryRun]. Will throw a [StateError] if accessed /// during a [dryRun]. - IOSSdk get targetIOSSdk; + IOSSdk? get targetIOSSdk; /// When compiling for Android, the minimum Android SDK API version to that /// the compiled code will be compatible with. diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index e2866984a..65d38d78c 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -142,9 +142,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { .._dryRun = false .._supportedAssetTypes = _supportedAssetTypesBackwardsCompatibility(supportedAssetTypes); - final parsedConfigFile = nonValidated.toJson(); - final config = Config(fileParsed: parsedConfigFile); - return BuildConfigImpl.fromConfig(config); + return BuildConfigImpl.fromJson(nonValidated.toJson()); } factory BuildConfigImpl.dryRun({ @@ -167,9 +165,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { .._dryRun = true .._supportedAssetTypes = _supportedAssetTypesBackwardsCompatibility(supportedAssetTypes); - final parsedConfigFile = nonValidated.toJson(); - final config = Config(fileParsed: parsedConfigFile); - return BuildConfigImpl.fromConfig(config); + return BuildConfigImpl.fromJson(nonValidated.toJson()); } /// Constructs a checksum for a [BuildConfigImpl] based on the fields of a @@ -245,7 +241,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { /// representation in the protocol. static Version latestVersion = Version(1, 3, 0); - factory BuildConfigImpl.fromConfig(Config config) { + factory BuildConfigImpl._fromConfig(Config config) { final result = BuildConfigImpl._().._cCompiler = CCompilerConfigImpl._(); final configExceptions = []; for (final f in result._readFieldsFromConfig()) { @@ -278,7 +274,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { environment: environment, workingDirectory: workingDirectory, ); - return BuildConfigImpl.fromConfig(config); + return BuildConfigImpl._fromConfig(config); } static const outDirConfigKey = 'out_dir'; @@ -479,7 +475,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { } static BuildConfigImpl fromJson(Map buildConfigJson) => - BuildConfigImpl.fromConfig(Config(fileParsed: buildConfigJson)); + BuildConfigImpl._fromConfig(Config(fileParsed: buildConfigJson)); Map toJson() { late Map cCompilerJson; diff --git a/pkgs/native_assets_cli/test/api/build_config_test.dart b/pkgs/native_assets_cli/test/api/build_config_test.dart index ec58b0ecd..23dad7ae8 100644 --- a/pkgs/native_assets_cli/test/api/build_config_test.dart +++ b/pkgs/native_assets_cli/test/api/build_config_test.dart @@ -4,7 +4,6 @@ import 'dart:io'; -import 'package:cli_config/cli_config.dart'; import 'package:native_assets_cli/native_assets_cli.dart'; import 'package:native_assets_cli/src/api/build_config.dart'; import 'package:test/test.dart'; @@ -107,7 +106,7 @@ void main() async { linkModePreference: LinkModePreference.preferStatic, ); - final config = Config(fileParsed: { + final config = { 'build_mode': 'release', 'dry_run': false, 'link_mode_preference': 'prefer-static', @@ -118,9 +117,9 @@ void main() async { 'target_architecture': 'arm64', 'target_os': 'android', 'version': BuildOutput.latestVersion.toString(), - }); + }; - final fromConfig = BuildConfigImpl.fromConfig(config); + final fromConfig = BuildConfigImpl.fromJson(config); expect(fromConfig, equals(buildConfig2)); }); @@ -134,7 +133,7 @@ void main() async { supportedAssetTypes: [NativeCodeAsset.type], ); - final config = Config(fileParsed: { + final config = { 'dry_run': true, 'link_mode_preference': 'prefer-static', 'out_dir': outDirUri.toFilePath(), @@ -142,9 +141,9 @@ void main() async { 'package_root': packageRootUri.toFilePath(), 'target_os': 'android', 'version': BuildOutput.latestVersion.toString(), - }); + }; - final fromConfig = BuildConfigImpl.fromConfig(config); + final fromConfig = BuildConfigImpl.fromJson(config); expect(fromConfig, equals(buildConfig2)); }); diff --git a/pkgs/native_assets_cli/test/helpers.dart b/pkgs/native_assets_cli/test/helpers.dart index 739f71695..830ed9d37 100644 --- a/pkgs/native_assets_cli/test/helpers.dart +++ b/pkgs/native_assets_cli/test/helpers.dart @@ -157,3 +157,22 @@ String yamlEncode(Object yamlEncoding) { ); return editor.toString(); } + +dynamic yamlDecode(String yaml) { + final value = loadYaml(yaml); + return yamlToDart(value); +} + +dynamic yamlToDart(dynamic value) { + if (value is YamlMap) { + final entries = >[]; + for (final key in value.keys) { + entries.add(MapEntry(key as String, yamlToDart(value[key]))); + } + return Map.fromEntries(entries); + } else if (value is YamlList) { + return List.from(value.map(yamlToDart)); + } else { + return value; + } +} diff --git a/pkgs/native_assets_cli/test/model/build_config_test.dart b/pkgs/native_assets_cli/test/model/build_config_test.dart index c766bd1f2..f084a1173 100644 --- a/pkgs/native_assets_cli/test/model/build_config_test.dart +++ b/pkgs/native_assets_cli/test/model/build_config_test.dart @@ -2,10 +2,8 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'dart:convert'; import 'dart:io'; -import 'package:cli_config/cli_config.dart'; import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:native_assets_cli/src/api/asset.dart'; import 'package:test/test.dart'; @@ -107,7 +105,7 @@ void main() async { linkModePreference: LinkModePreferenceImpl.preferStatic, ); - final config = Config(fileParsed: { + final config = { 'build_mode': 'release', 'dry_run': false, 'link_mode_preference': 'prefer-static', @@ -118,9 +116,9 @@ void main() async { 'target_architecture': 'arm64', 'target_os': 'android', 'version': HookOutputImpl.latestVersion.toString(), - }); + }; - final fromConfig = BuildConfigImpl.fromConfig(config); + final fromConfig = BuildConfigImpl.fromJson(config); expect(fromConfig, equals(buildConfig2)); }); @@ -133,7 +131,7 @@ void main() async { linkModePreference: LinkModePreferenceImpl.preferStatic, ); - final config = Config(fileParsed: { + final config = { 'dry_run': true, 'link_mode_preference': 'prefer-static', 'out_dir': outDirUri.toFilePath(), @@ -141,9 +139,9 @@ void main() async { 'package_root': packageRootUri.toFilePath(), 'target_os': 'android', 'version': HookOutputImpl.latestVersion.toString(), - }); + }; - final fromConfig = BuildConfigImpl.fromConfig(config); + final fromConfig = BuildConfigImpl.fromJson(config); expect(fromConfig, equals(buildConfig2)); }); @@ -164,8 +162,7 @@ void main() async { ); final configFile = buildConfig1.toJson(); - final config = Config(fileParsed: configFile); - final fromConfig = BuildConfigImpl.fromConfig(config); + final fromConfig = BuildConfigImpl.fromJson(configFile); expect(fromConfig, equals(buildConfig1)); }); @@ -267,9 +264,7 @@ void main() async { equals(expectedJson), ); - final buildConfig2 = BuildConfigImpl.fromConfig( - Config.fromConfigFileContents(fileContents: jsonEncode(jsonObject)), - ); + final buildConfig2 = BuildConfigImpl.fromJson(jsonObject); expect(buildConfig2, buildConfig1); }); @@ -320,17 +315,14 @@ version: 1.0.0'''; }, ); - final buildConfig2 = BuildConfigImpl.fromConfig( - Config.fromConfigFileContents( - fileContents: yamlString, - ), - ); + final buildConfig2 = BuildConfigImpl.fromJson( + yamlDecode(yamlString) as Map); expect(buildConfig2, buildConfig1); }); test('BuildConfig FormatExceptions', () { expect( - () => BuildConfigImpl.fromConfig(Config(fileParsed: {})), + () => BuildConfigImpl.fromJson({}), throwsA(predicate( (e) => e is FormatException && @@ -340,7 +332,7 @@ version: 1.0.0'''; )), ); expect( - () => BuildConfigImpl.fromConfig(Config(fileParsed: { + () => BuildConfigImpl.fromJson({ 'version': BuildConfigImpl.latestVersion.toString(), 'package_name': packageName, 'package_root': packageRootUri.toFilePath(), @@ -348,7 +340,7 @@ version: 1.0.0'''; 'target_os': 'android', 'target_android_ndk_api': 30, 'link_mode_preference': 'prefer-static', - })), + }), throwsA(predicate( (e) => e is FormatException && @@ -358,7 +350,7 @@ version: 1.0.0'''; )), ); expect( - () => BuildConfigImpl.fromConfig(Config(fileParsed: { + () => BuildConfigImpl.fromJson({ 'version': BuildConfigImpl.latestVersion.toString(), 'out_dir': outDirUri.toFilePath(), 'package_name': packageName, @@ -371,7 +363,7 @@ version: 1.0.0'''; 'bar': {'key': 'value'}, 'foo': [], }, - })), + }), throwsA(predicate( (e) => e is FormatException && @@ -382,7 +374,7 @@ version: 1.0.0'''; )), ); expect( - () => BuildConfigImpl.fromConfig(Config(fileParsed: { + () => BuildConfigImpl.fromJson({ 'out_dir': outDirUri.toFilePath(), 'version': BuildConfigImpl.latestVersion.toString(), 'package_name': packageName, @@ -390,7 +382,7 @@ version: 1.0.0'''; 'target_architecture': 'arm64', 'target_os': 'android', 'link_mode_preference': 'prefer-static', - })), + }), throwsA(predicate( (e) => e is FormatException && @@ -403,12 +395,12 @@ version: 1.0.0'''; test('FormatExceptions contain full stack trace of wrapped exception', () { try { - BuildConfigImpl.fromConfig(Config(fileParsed: { + BuildConfigImpl.fromJson({ 'out_dir': outDirUri.toFilePath(), 'package_root': packageRootUri.toFilePath(), 'target': [1, 2, 3, 4, 5], 'link_mode_preference': 'prefer-static', - })); + }); } on FormatException catch (e) { expect(e.toString(), stringContainsInOrder(['Config.string'])); } @@ -447,10 +439,8 @@ version: 1.0.0'''; final configUri = tempUri.resolve('config.yaml'); final configFile = File.fromUri(configUri); await configFile.writeAsString(configFileContents); - final buildConfig2 = BuildConfigImpl.fromArguments( - ['--config', configUri.toFilePath()], - environment: {}, // Don't inherit the test environment. - ); + final buildConfig2 = + BuildConfigImpl.fromArguments(['--config', configUri.toFilePath()]); expect(buildConfig2, buildConfig); }); @@ -499,24 +489,23 @@ version: 1.0.0'''; ); final configFile = buildConfig1.toJson(); - final config = Config(fileParsed: configFile); - final fromConfig = BuildConfigImpl.fromConfig(config); + final fromConfig = BuildConfigImpl.fromJson(configFile); expect(fromConfig, equals(buildConfig1)); }); for (final version in ['9001.0.0', '0.0.1']) { test('BuildConfig version $version', () { final outDir = outDirUri; - final config = Config(fileParsed: { + final config = { 'link_mode_preference': 'prefer-static', 'out_dir': outDir.toFilePath(), 'package_root': tempUri.toFilePath(), 'target_os': 'linux', 'target_architecture': 'x64', 'version': version, - }); + }; expect( - () => BuildConfigImpl.fromConfig(config), + () => BuildConfigImpl.fromJson(config), throwsA(predicate( (e) => e is FormatException && @@ -599,7 +588,7 @@ version: 1.0.0'''; test('BuildConfig invalid target os architecture combination', () { final outDir = outDirUri; - final config = Config(fileParsed: { + final config = { 'link_mode_preference': 'prefer-static', 'out_dir': outDir.toFilePath(), 'package_name': packageName, @@ -608,9 +597,9 @@ version: 1.0.0'''; 'target_architecture': 'arm', 'build_mode': 'debug', 'version': BuildConfigImpl.latestVersion.toString(), - }); + }; expect( - () => BuildConfigImpl.fromConfig(config), + () => BuildConfigImpl.fromJson(config), throwsA(predicate( (e) => e is FormatException && e.message.contains('arm'), )), @@ -619,7 +608,7 @@ version: 1.0.0'''; test('BuildConfig dry_run access invalid args', () { final outDir = outDirUri; - final config = Config(fileParsed: { + final config = { 'link_mode_preference': 'prefer-static', 'out_dir': outDir.toFilePath(), 'package_name': packageName, @@ -629,9 +618,9 @@ version: 1.0.0'''; 'build_mode': 'debug', 'dry_run': true, 'version': BuildConfigImpl.latestVersion.toString(), - }); + }; expect( - () => BuildConfigImpl.fromConfig(config), + () => BuildConfigImpl.fromJson(config), throwsA(predicate( (e) => e is FormatException && e.message.contains('In Flutter projects'), @@ -641,7 +630,7 @@ version: 1.0.0'''; test('BuildConfig dry_run access invalid args', () { final outDir = outDirUri; - final config = Config(fileParsed: { + final config = { 'link_mode_preference': 'prefer-static', 'out_dir': outDir.toFilePath(), 'package_name': packageName, @@ -649,8 +638,8 @@ version: 1.0.0'''; 'target_os': 'android', 'dry_run': true, 'version': BuildConfigImpl.latestVersion.toString(), - }); - final buildConfig = BuildConfigImpl.fromConfig(config); + }; + final buildConfig = BuildConfigImpl.fromJson(config); expect( () => buildConfig.targetAndroidNdkApi, throwsA(predicate( @@ -661,7 +650,7 @@ version: 1.0.0'''; test('BuildConfig dry_run target arch', () { final outDir = outDirUri; - final config = Config(fileParsed: { + final config = { 'link_mode_preference': 'prefer-static', 'out_dir': outDir.toFilePath(), 'package_name': packageName, @@ -669,8 +658,8 @@ version: 1.0.0'''; 'target_os': 'windows', 'dry_run': true, 'version': BuildConfigImpl.latestVersion.toString(), - }); - final buildConfig = BuildConfigImpl.fromConfig(config); + }; + final buildConfig = BuildConfigImpl.fromJson(config); expect(buildConfig.targetArchitecture, isNull); }); @@ -687,7 +676,7 @@ version: 1.0.0'''; }); test('invalid architecture', () { - final config = Config(fileParsed: { + final config = { 'build_mode': 'release', 'dry_run': false, 'link_mode_preference': 'prefer-static', @@ -698,9 +687,9 @@ version: 1.0.0'''; 'target_architecture': 'invalid_architecture', 'target_os': 'android', 'version': HookOutputImpl.latestVersion.toString(), - }); + }; expect( - () => BuildConfigImpl.fromConfig(config), + () => BuildConfigImpl.fromJson(config), throwsFormatException, ); }); From e569edb9f13cb186180886edd2bfab8166621399 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 17 Apr 2024 19:40:18 +0200 Subject: [PATCH 163/187] Fixing up buildconfig --- .../lib/src/build_runner/build_runner.dart | 101 ++-- .../lib/src/api/build_config.dart | 4 +- .../lib/src/api/hook_config.dart | 5 +- .../lib/src/api/link_config.dart | 4 - .../lib/src/model/build_config.dart | 538 ++++++++---------- .../lib/src/model/hook_config.dart | 99 +++- .../lib/src/model/link_config.dart | 137 ++--- 7 files changed, 439 insertions(+), 449 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 8425b32ce..6db959754 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -191,29 +191,57 @@ class NativeAssetsBuildRunner { Uri? resourceIdentifiers, BuildResult? buildResult, ) async { - final buildConfig = await _buildConfig( + final buildDirName = BuildConfigImpl.checksum( packageName: package.name, - packageRoot: packageLayout.packageRoot(package.name), - target: target, + packageRoot: package.root, + targetOS: target.os, + targetArchitecture: target.architecture, buildMode: buildMode, - linkMode: linkModePreference, - buildParentDir: packageLayout.dartToolNativeAssetsBuilder, - dependencyMetadata: dependencyMetadata, - cCompilerConfig: cCompilerConfig, + linkModePreference: linkModePreference, targetIOSSdk: targetIOSSdk, + cCompiler: cCompilerConfig, + dependencyMetadata: dependencyMetadata, targetAndroidNdkApi: targetAndroidNdkApi, supportedAssetTypes: supportedAssetTypes, hook: hook, ); + final outDirUri = + packageLayout.dartToolNativeAssetsBuilder.resolve('$buildDirName/out/'); + final outDir = Directory.fromUri(outDirUri); + if (!await outDir.exists()) { + // TODO(https://dartbug.com/50565): Purge old or unused folders. + await outDir.create(recursive: true); + } + if (hook == Hook.link) { - return LinkConfigImpl.fromValues( + return LinkConfigImpl( + outputDirectory: outDirUri, + packageName: package.name, + packageRoot: package.root, + targetOS: target.os, + targetArchitecture: target.architecture, + buildMode: buildMode, + targetIOSSdk: targetIOSSdk, + cCompiler: cCompilerConfig, + targetAndroidNdkApi: targetAndroidNdkApi, resourceIdentifierUri: resourceIdentifiers, - buildConfig: buildConfig, - assetsForLinking: - buildResult!.assetsForLinking[buildConfig.packageName] ?? [], + assets: buildResult!.assetsForLinking[package.name] ?? [], + supportedAssetTypes: supportedAssetTypes, ); } else { - return buildConfig; + return BuildConfigImpl( + outputDirectory: outDirUri, + packageName: package.name, + packageRoot: package.root, + targetOS: target.os, + targetArchitecture: target.architecture, + buildMode: buildMode, + linkMode: linkModePreference, + targetIOSSdk: targetIOSSdk, + cCompiler: cCompilerConfig, + dependencyMetadata: dependencyMetadata, + targetAndroidNdkApi: targetAndroidNdkApi, + ); } } @@ -424,55 +452,6 @@ Contents: ${File.fromUri(config.outputFile).readAsStringSync()}. } } - static Future _buildConfig({ - required String packageName, - required Uri packageRoot, - required Target target, - IOSSdkImpl? targetIOSSdk, - int? targetAndroidNdkApi, - required BuildModeImpl buildMode, - required LinkModePreferenceImpl linkMode, - required Uri buildParentDir, - CCompilerConfigImpl? cCompilerConfig, - DependencyMetadata? dependencyMetadata, - Iterable? supportedAssetTypes, - required Hook hook, - }) async { - final buildDirName = BuildConfigImpl.checksum( - packageName: packageName, - packageRoot: packageRoot, - targetOS: target.os, - targetArchitecture: target.architecture, - buildMode: buildMode, - linkModePreference: linkMode, - targetIOSSdk: targetIOSSdk, - cCompiler: cCompilerConfig, - dependencyMetadata: dependencyMetadata, - targetAndroidNdkApi: targetAndroidNdkApi, - supportedAssetTypes: supportedAssetTypes, - hook: hook, - ); - final outDirUri = buildParentDir.resolve('$buildDirName/out/'); - final outDir = Directory.fromUri(outDirUri); - if (!await outDir.exists()) { - // TODO(https://dartbug.com/50565): Purge old or unused folders. - await outDir.create(recursive: true); - } - return BuildConfigImpl( - outDir: outDirUri, - packageName: packageName, - packageRoot: packageRoot, - targetOS: target.os, - targetArchitecture: target.architecture, - buildMode: buildMode, - linkModePreference: linkMode, - targetIOSSdk: targetIOSSdk, - cCompiler: cCompilerConfig, - dependencyMetadata: dependencyMetadata, - targetAndroidNdkApi: targetAndroidNdkApi, - ); - } - static Future _cliConfigDryRun({ required String packageName, required Uri packageRoot, diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index 7505e85aa..f67ccad96 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -10,9 +10,7 @@ import 'package:collection/collection.dart'; import 'package:crypto/crypto.dart'; import 'package:pub_semver/pub_semver.dart'; -import '../model/hook.dart'; -import '../model/metadata.dart'; -import '../model/target.dart'; +import '../../native_assets_cli_internal.dart'; import '../utils/json.dart'; import '../utils/map.dart'; import 'architecture.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/hook_config.dart b/pkgs/native_assets_cli/lib/src/api/hook_config.dart index 0df6405ef..102012522 100644 --- a/pkgs/native_assets_cli/lib/src/api/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/hook_config.dart @@ -5,6 +5,7 @@ import 'package:pub_semver/pub_semver.dart'; import '../model/hook.dart'; +import '../utils/map.dart'; import 'architecture.dart'; import 'asset.dart'; import 'build_config.dart'; @@ -39,7 +40,7 @@ abstract class HookConfig { Architecture? get targetArchitecture; /// The operating system being compiled for. - OS get targetOS; + OS? get targetOS; /// When compiling for iOS, whether to target device or simulator. /// @@ -81,7 +82,7 @@ abstract class HookConfig { /// /// Not available during a [dryRun]. Will throw a [StateError] if accessed /// during a [dryRun]. - BuildMode get buildMode; + BuildMode? get buildMode; /// The asset types that the invoker of this hook supports. /// diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 9ae724acd..619796c5d 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -10,13 +10,9 @@ import 'package:pub_semver/pub_semver.dart'; import '../model/hook.dart'; import '../model/resource_identifiers.dart'; import '../utils/map.dart'; -import 'architecture.dart'; import 'asset.dart'; import 'build_config.dart'; -import 'build_mode.dart'; import 'hook_config.dart'; -import 'ios_sdk.dart'; -import 'os.dart'; import 'resource.dart'; part '../model/link_config.dart'; diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index 65d38d78c..f68847920 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -23,52 +23,26 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { String get outputName => version > Version(1, 1, 0) ? 'build_output.json' : 'build_output.yaml'; - /// The folder in which all output and intermediate artifacts should be - /// placed. - @override - Uri get outputDirectory => _outDir; - late final Uri _outDir; - - @override - String get packageName => _packageName; - late final String _packageName; - - @override - Uri get packageRoot => _packageRoot; - late final Uri _packageRoot; - - @override - ArchitectureImpl? get targetArchitecture => _targetArchitecture; - late final ArchitectureImpl? _targetArchitecture; - - @override - OSImpl get targetOS => _targetOS; - late final OSImpl _targetOS; - @override IOSSdkImpl get targetIOSSdk { _ensureNotDryRun(); - if (_targetOS != OS.iOS) { + if (targetOS != OS.iOS) { throw StateError( 'This field is not available in if targetOS is not OS.iOS.', ); } - return _targetIOSSdk!; + return super.targetIOSSdk!; } - late final IOSSdkImpl? _targetIOSSdk; - @override int? get targetAndroidNdkApi { _ensureNotDryRun(); - return _targetAndroidNdkApi; + return super.targetAndroidNdkApi; } - late final int? _targetAndroidNdkApi; - @override LinkModePreferenceImpl get linkModePreference => _linkModePreference; - late final LinkModePreferenceImpl _linkModePreference; + final LinkModePreferenceImpl _linkModePreference; @override Object? metadatum(String packageName, String key) { @@ -76,38 +50,20 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { return _dependencyMetadata?[packageName]?.metadata[key]; } - late final Map? _dependencyMetadata; + final Map? _dependencyMetadata; @override CCompilerConfigImpl get cCompiler { _ensureNotDryRun(); - return _cCompiler; + return super.cCompiler; } - late final CCompilerConfigImpl _cCompiler; - - @override - bool get dryRun => _dryRun ?? false; - late final bool? _dryRun; - @override BuildModeImpl get buildMode { _ensureNotDryRun(); - return _buildMode; + return super.buildMode!; } - late final BuildModeImpl _buildMode; - - @override - Iterable get supportedAssetTypes => _supportedAssetTypes; - - late final List _supportedAssetTypes; - - @override - Version get version => _version; - - late final Version _version; - Config get config => _config; late final Config _config; @@ -125,25 +81,24 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { Map? dependencyMetadata, Iterable? supportedAssetTypes, Version? version, - }) { - final nonValidated = BuildConfigImpl._() - .._version = version ?? latestVersion - .._outDir = outDir - .._packageName = packageName - .._packageRoot = packageRoot - .._buildMode = buildMode - .._targetArchitecture = targetArchitecture - .._targetOS = targetOS - .._targetIOSSdk = targetIOSSdk - .._targetAndroidNdkApi = targetAndroidNdkApi - .._cCompiler = cCompiler ?? CCompilerConfigImpl() - .._linkModePreference = linkModePreference - .._dependencyMetadata = dependencyMetadata - .._dryRun = false - .._supportedAssetTypes = - _supportedAssetTypesBackwardsCompatibility(supportedAssetTypes); - return BuildConfigImpl.fromJson(nonValidated.toJson()); - } + }) => + BuildConfigImpl._( + version: version ?? latestVersion, + outputDirectory: outDir, + packageName: packageName, + packageRoot: packageRoot, + buildMode: buildMode, + targetArchitecture: targetArchitecture, + targetOS: targetOS, + targetIOSSdk: targetIOSSdk, + targetAndroidNdkApi: targetAndroidNdkApi, + cCompiler: cCompiler ?? CCompilerConfigImpl(), + linkMode: linkModePreference, + dependencyMetadata: dependencyMetadata, + dryRun: false, + supportedAssetTypes: + _supportedAssetTypesBackwardsCompatibility(supportedAssetTypes), + ); factory BuildConfigImpl.dryRun({ required Uri outDir, @@ -152,21 +107,20 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { required OSImpl targetOS, required LinkModePreferenceImpl linkModePreference, Iterable? supportedAssetTypes, - }) { - final nonValidated = BuildConfigImpl._() - .._version = latestVersion - .._outDir = outDir - .._packageName = packageName - .._packageRoot = packageRoot - .._targetOS = targetOS - .._targetArchitecture = null - .._linkModePreference = linkModePreference - .._cCompiler = CCompilerConfigImpl() - .._dryRun = true - .._supportedAssetTypes = - _supportedAssetTypesBackwardsCompatibility(supportedAssetTypes); - return BuildConfigImpl.fromJson(nonValidated.toJson()); - } + }) => + BuildConfigImpl._( + version: latestVersion, + outputDirectory: outDir, + packageName: packageName, + packageRoot: packageRoot, + targetArchitecture: null, + targetOS: targetOS, + cCompiler: CCompilerConfigImpl(), + linkMode: linkModePreference, + dryRun: true, + supportedAssetTypes: + _supportedAssetTypesBackwardsCompatibility(supportedAssetTypes), + ); /// Constructs a checksum for a [BuildConfigImpl] based on the fields of a /// buildconfig that influence the build. @@ -229,7 +183,29 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { if (supportedAssetTypes == null) NativeCodeAsset.type, ]; - BuildConfigImpl._(); + BuildConfigImpl._({ + required super.outputDirectory, + required super.packageName, + required super.packageRoot, + Version? version, + super.buildMode, + required super.cCompiler, + required Iterable supportedAssetTypes, + super.targetAndroidNdkApi, + required super.targetArchitecture, + super.targetIOSSdk, + required super.targetOS, + required LinkModePreferenceImpl linkMode, + Map? dependencyMetadata, + required super.dryRun, + }) : _linkModePreference = linkMode, + _dependencyMetadata = dependencyMetadata, + super( + hook: Hook.build, + version: version ?? latestVersion, + supportedAssetTypes: + _supportedAssetTypesBackwardsCompatibility(supportedAssetTypes), + ); /// The version of [BuildConfigImpl]. /// @@ -242,23 +218,14 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { static Version latestVersion = Version(1, 3, 0); factory BuildConfigImpl._fromConfig(Config config) { - final result = BuildConfigImpl._().._cCompiler = CCompilerConfigImpl._(); - final configExceptions = []; - for (final f in result._readFieldsFromConfig()) { - try { - f(config); - } on FormatException catch (e, st) { - configExceptions.add(e); - configExceptions.add(st); - } - } - - if (configExceptions.isNotEmpty) { + final result = _readFieldsFromConfig(config); + final configErrorMessages = []; + if (configErrorMessages.isNotEmpty) { throw FormatException('BuildConfig is not in the right format. ' - 'FormatExceptions: $configExceptions'); + 'FormatExceptions: $configErrorMessages'); } - return result; + return result.$1!; } static BuildConfigImpl fromArguments( @@ -277,178 +244,187 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { return BuildConfigImpl._fromConfig(config); } - static const outDirConfigKey = 'out_dir'; - static const packageNameConfigKey = 'package_name'; - static const packageRootConfigKey = 'package_root'; static const dependencyMetadataConfigKey = 'dependency_metadata'; - static const _versionKey = 'version'; - static const targetAndroidNdkApiConfigKey = 'target_android_ndk_api'; - static const dryRunConfigKey = 'dry_run'; - static const supportedAssetTypesKey = 'supported_asset_types'; - List _readFieldsFromConfig() { + static (BuildConfigImpl?, List) _readFieldsFromConfig(Config config) { + final errors = []; + var osSet = false; var ccSet = false; - return [ - (config) { - final version = Version.parse(config.string('version')); - if (version.major > latestVersion.major) { - throw FormatException( - 'The config version $version is newer than this ' - 'package:native_assets_cli config version $latestVersion, ' - 'please update native_assets_cli.', - ); - } - if (version.major < latestVersion.major) { - throw FormatException( - 'The config version $version is newer than this ' - 'package:native_assets_cli config version $latestVersion, ' - 'please update the Dart or Flutter SDK.', - ); - } - _version = version; - }, - (config) => _config = config, - (config) => _dryRun = config.optionalBool(dryRunConfigKey), - (config) => _outDir = config.path(outDirConfigKey, mustExist: true), - (config) => _packageName = config.string(packageNameConfigKey), - (config) => - _packageRoot = config.path(packageRootConfigKey, mustExist: true), - (config) { - if (dryRun) { - _throwIfNotNullInDryRun(BuildModeImpl.configKey); - } else { - _buildMode = BuildModeImpl.fromString( - config.string( - BuildModeImpl.configKey, - validValues: BuildModeImpl.values.map((e) => '$e'), - ), - ); - } - }, - (config) { - _targetOS = OSImpl.fromString( - config.string( - OSImpl.configKey, - validValues: OSImpl.values.map((e) => '$e'), - ), - ); - osSet = true; - }, - (config) { - if (dryRun) { - _throwIfNotNullInDryRun(ArchitectureImpl.configKey); - _targetArchitecture = null; - } else { - final validArchitectures = [ - if (!osSet) - ...ArchitectureImpl.values - else - for (final target in Target.values) - if (target.os == _targetOS) target.architecture - ]; - _targetArchitecture = ArchitectureImpl.fromString( - config.string( - ArchitectureImpl.configKey, - validValues: validArchitectures.map((e) => '$e'), - ), - ); - } - }, - (config) { - if (dryRun) { - _throwIfNotNullInDryRun(IOSSdkImpl.configKey); - } else { - _targetIOSSdk = (osSet && _targetOS == OSImpl.iOS) - ? IOSSdkImpl.fromString( - config.string( - IOSSdkImpl.configKey, - validValues: IOSSdkImpl.values.map((e) => '$e'), - ), - ) - : null; - } - }, - (config) { - if (dryRun) { - _throwIfNotNullInDryRun(targetAndroidNdkApiConfigKey); - } else { - _targetAndroidNdkApi = (osSet && _targetOS == OSImpl.android) - ? config.int(targetAndroidNdkApiConfigKey) - : null; - } - }, - (config) { - if (dryRun) { - _throwIfNotNullInDryRun(CCompilerConfigImpl.arConfigKeyFull); - } else { - cCompiler._archiver = config.optionalPath( - CCompilerConfigImpl.arConfigKeyFull, - mustExist: true, - ); - } - }, - (config) { - if (dryRun) { - _throwIfNotNullInDryRun(CCompilerConfigImpl.ccConfigKeyFull); - } else { - cCompiler._compiler = config.optionalPath( - CCompilerConfigImpl.ccConfigKeyFull, - mustExist: true, - ); - ccSet = true; - } - }, - (config) { - if (dryRun) { - _throwIfNotNullInDryRun(CCompilerConfigImpl.ccConfigKeyFull); - } else { - cCompiler._linker = config.optionalPath( - CCompilerConfigImpl.ldConfigKeyFull, - mustExist: true, - ); - } - }, - (config) { - if (dryRun) { - _throwIfNotNullInDryRun(CCompilerConfigImpl.ccConfigKeyFull); - } else { - cCompiler._envScript = (ccSet && - cCompiler.compiler != null && - cCompiler.compiler!.toFilePath().endsWith('cl.exe')) - ? config.path(CCompilerConfigImpl.envScriptConfigKeyFull, - mustExist: true) - : null; - } - }, - (config) { - if (dryRun) { - _throwIfNotNullInDryRun(CCompilerConfigImpl.ccConfigKeyFull); - } else { - cCompiler._envScriptArgs = config.optionalStringList( - CCompilerConfigImpl.envScriptArgsConfigKeyFull, - splitEnvironmentPattern: ' ', - ); - } - }, - (config) { - _linkModePreference = LinkModePreferenceImpl.fromString( - config.string( - LinkModePreferenceImpl.configKey, - validValues: LinkModePreferenceImpl.values.map((e) => '$e'), - ), - ); - }, - (config) { - _dependencyMetadata = _readDependencyMetadataFromConfig(config); - }, - (config) => _supportedAssetTypes = - config.optionalStringList(supportedAssetTypesKey) ?? - [NativeCodeAsset.type], - ]; + final versionString = config.optionalString('version'); + if (versionString == null) { + errors.add('Missing version'); + return (null, errors); + } + final version = Version.parse(versionString); + if (version.major > latestVersion.major) { + errors.add( + 'The config version $version is newer than this ' + 'package:native_assets_cli config version $latestVersion, ' + 'please update native_assets_cli.', + ); + } + if (version.major < latestVersion.major) { + errors.add( + 'The config version $version is newer than this ' + 'package:native_assets_cli config version $latestVersion, ' + 'please update the Dart or Flutter SDK.', + ); + } + final dryRun = config.optionalBool(HookConfigImpl.dryRunConfigKey) ?? false; + final outDir = config.path(HookConfigImpl.outDirConfigKey, mustExist: true); + final packageName = config.string(HookConfigImpl.packageNameConfigKey); + + final packageRoot = + config.path(HookConfigImpl.packageRootConfigKey, mustExist: true); + BuildModeImpl? buildMode; + if (dryRun) { + _throwIfNotNullInDryRun(config, BuildModeImpl.configKey); + } else { + buildMode = BuildModeImpl.fromString( + config.string( + BuildModeImpl.configKey, + validValues: BuildModeImpl.values.map((e) => '$e'), + ), + ); + } + + OSImpl? targetOS; + final osString = config.optionalString( + OSImpl.configKey, + validValues: OSImpl.values.map((e) => '$e'), + ); + if (osString != null) { + osSet = true; + targetOS = OSImpl.fromString(osString); + } else { + targetOS = null; + } + + ArchitectureImpl? targetArchitecture; + if (dryRun) { + _throwIfNotNullInDryRun(config, ArchitectureImpl.configKey); + targetArchitecture = null; + } else { + final validArchitectures = [ + if (!osSet) + ...ArchitectureImpl.values + else + for (final target in Target.values) + if (target.os == targetOS) target.architecture + ]; + targetArchitecture = ArchitectureImpl.fromString( + config.string( + ArchitectureImpl.configKey, + validValues: validArchitectures.map((e) => '$e'), + ), + ); + } + IOSSdkImpl? targetIOSSdk; + if (dryRun) { + _throwIfNotNullInDryRun(config, IOSSdkImpl.configKey); + } else { + targetIOSSdk = (osSet && targetOS == OSImpl.iOS) + ? IOSSdkImpl.fromString( + config.string( + IOSSdkImpl.configKey, + validValues: IOSSdkImpl.values.map((e) => '$e'), + ), + ) + : null; + } + int? targetAndroidNdkApi; + if (dryRun) { + _throwIfNotNullInDryRun( + config, HookConfigImpl.targetAndroidNdkApiConfigKey); + } else { + targetAndroidNdkApi = (osSet && targetOS == OSImpl.android) + ? config.int(HookConfigImpl.targetAndroidNdkApiConfigKey) + : null; + } + final cCompiler = CCompilerConfigImpl(); + if (dryRun) { + _throwIfNotNullInDryRun(config, CCompilerConfigImpl.arConfigKeyFull); + } else { + cCompiler._archiver = config.optionalPath( + CCompilerConfigImpl.arConfigKeyFull, + mustExist: true, + ); + } + + if (dryRun) { + _throwIfNotNullInDryRun(config, CCompilerConfigImpl.ccConfigKeyFull); + } else { + cCompiler._compiler = config.optionalPath( + CCompilerConfigImpl.ccConfigKeyFull, + mustExist: true, + ); + ccSet = true; + } + + if (dryRun) { + _throwIfNotNullInDryRun(config, CCompilerConfigImpl.ccConfigKeyFull); + } else { + cCompiler._linker = config.optionalPath( + CCompilerConfigImpl.ldConfigKeyFull, + mustExist: true, + ); + } + + if (dryRun) { + _throwIfNotNullInDryRun(config, CCompilerConfigImpl.ccConfigKeyFull); + } else { + cCompiler._envScript = (ccSet && + cCompiler.compiler != null && + cCompiler.compiler!.toFilePath().endsWith('cl.exe')) + ? config.path(CCompilerConfigImpl.envScriptConfigKeyFull, + mustExist: true) + : null; + } + + if (dryRun) { + _throwIfNotNullInDryRun(config, CCompilerConfigImpl.ccConfigKeyFull); + } else { + cCompiler._envScriptArgs = config.optionalStringList( + CCompilerConfigImpl.envScriptArgsConfigKeyFull, + splitEnvironmentPattern: ' ', + ); + } + + final linkModePreference = LinkModePreferenceImpl.fromString( + config.string( + LinkModePreferenceImpl.configKey, + validValues: LinkModePreferenceImpl.values.map((e) => '$e'), + ), + ); + + final dependencyMetadata = _readDependencyMetadataFromConfig(config); + final supportedAssetTypes = + config.optionalStringList(HookConfigImpl.supportedAssetTypesKey) ?? + [NativeCodeAsset.type]; + + return ( + BuildConfigImpl._( + outputDirectory: outDir, + packageName: packageName, + packageRoot: packageRoot, + buildMode: buildMode!, + cCompiler: cCompiler, + supportedAssetTypes: supportedAssetTypes, + targetAndroidNdkApi: targetAndroidNdkApi, + targetArchitecture: targetArchitecture, + targetIOSSdk: targetIOSSdk, + targetOS: targetOS, + linkMode: linkModePreference, + dependencyMetadata: dependencyMetadata, + dryRun: dryRun, + ), + errors, + ); } - Map? _readDependencyMetadataFromConfig(Config config) { + static Map? _readDependencyMetadataFromConfig( + Config config) { final fileValue = config.valueOf?>(dependencyMetadataConfigKey); if (fileValue == null) { @@ -477,31 +453,13 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { static BuildConfigImpl fromJson(Map buildConfigJson) => BuildConfigImpl._fromConfig(Config(fileParsed: buildConfigJson)); + @override Map toJson() { - late Map cCompilerJson; - if (!dryRun) { - cCompilerJson = _cCompiler.toJson(); - } - + final json = super.toJson(); return { - outDirConfigKey: _outDir.toFilePath(), - packageNameConfigKey: _packageName, - packageRootConfigKey: _packageRoot.toFilePath(), - OSImpl.configKey: _targetOS.toString(), + ...json, LinkModePreferenceImpl.configKey: _linkModePreference.toString(), - if (_supportedAssetTypes.isNotEmpty) - supportedAssetTypesKey: _supportedAssetTypes, - _versionKey: version.toString(), - if (dryRun) dryRunConfigKey: dryRun, if (!dryRun) ...{ - BuildModeImpl.configKey: _buildMode.toString(), - ArchitectureImpl.configKey: _targetArchitecture.toString(), - if (_targetIOSSdk != null) - IOSSdkImpl.configKey: _targetIOSSdk.toString(), - if (_targetAndroidNdkApi != null) - targetAndroidNdkApiConfigKey: _targetAndroidNdkApi, - if (cCompilerJson.isNotEmpty) - CCompilerConfigImpl.configKey: cCompilerJson, if (_dependencyMetadata != null && _dependencyMetadata.isNotEmpty) dependencyMetadataConfigKey: { for (final entry in _dependencyMetadata.entries) @@ -526,7 +484,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { if (other.targetOS != targetOS) return false; if (other.linkModePreference != linkModePreference) return false; if (!const DeepCollectionEquality() - .equals(other._supportedAssetTypes, _supportedAssetTypes)) return false; + .equals(other.supportedAssetTypes, supportedAssetTypes)) return false; if (!dryRun) { if (other.buildMode != buildMode) return false; if (other.targetArchitecture != targetArchitecture) return false; @@ -549,7 +507,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { targetOS, linkModePreference, dryRun, - const DeepCollectionEquality().hash(_supportedAssetTypes), + const DeepCollectionEquality().hash(supportedAssetTypes), if (!dryRun) ...[ buildMode, const DeepCollectionEquality().hash(_dependencyMetadata), @@ -572,7 +530,7 @@ can _only_ depend on OS.'''); } } - void _throwIfNotNullInDryRun(String key) { + static void _throwIfNotNullInDryRun(Config config, String key) { final object = config.valueOf(key); if (object != null) { throw const FormatException('''This field is not available in dry runs. diff --git a/pkgs/native_assets_cli/lib/src/model/hook_config.dart b/pkgs/native_assets_cli/lib/src/model/hook_config.dart index 573d052bc..4cf95e4ee 100644 --- a/pkgs/native_assets_cli/lib/src/model/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook_config.dart @@ -5,28 +5,105 @@ part of '../api/hook_config.dart'; abstract class HookConfigImpl implements HookConfig { - Hook get hook; + final Hook hook; - Uri get configFile => outputDirectory.resolve('../${hook.configName}'); + /// The folder in which all output and intermediate artifacts should be + /// placed. + @override + final Uri outputDirectory; - Uri get outputFile => outputDirectory.resolve(outputName); + @override + final String packageName; @override - Uri get outputDirectory; + final Uri packageRoot; - // This is currently overriden by [BuildConfig], do account for older versions - // still using a top-level build.dart. - Uri get script => packageRoot.resolve('hook/').resolve(hook.scriptName); + final Version version; - String toJsonString(); + @override + final BuildModeImpl? buildMode; + + @override + final CCompilerConfigImpl cCompiler; + + @override + final bool dryRun; + + @override + final Iterable supportedAssetTypes; + + @override + final int? targetAndroidNdkApi; + + @override + final ArchitectureImpl? targetArchitecture; @override - String get packageName; + final IOSSdkImpl? targetIOSSdk; @override - Uri get packageRoot; + final OSImpl? targetOS; String get outputName; - Version get version; + HookConfigImpl({ + required this.hook, + required this.outputDirectory, + required this.packageName, + required this.packageRoot, + required this.version, + required this.buildMode, + required CCompilerConfigImpl? cCompiler, + required this.dryRun, + required this.supportedAssetTypes, + required this.targetAndroidNdkApi, + required this.targetArchitecture, + required this.targetIOSSdk, + required this.targetOS, + }) : cCompiler = cCompiler ?? CCompilerConfigImpl(); + + Uri get configFile => outputDirectory.resolve('../${hook.configName}'); + + Uri get outputFile => outputDirectory.resolve(outputName); + + // This is currently overriden by [BuildConfig], do account for older versions + // still using a top-level build.dart. + Uri get script => packageRoot.resolve('hook/').resolve(hook.scriptName); + + String toJsonString(); + + static const outDirConfigKey = 'out_dir'; + static const packageNameConfigKey = 'package_name'; + static const packageRootConfigKey = 'package_root'; + static const _versionKey = 'version'; + static const targetAndroidNdkApiConfigKey = 'target_android_ndk_api'; + static const dryRunConfigKey = 'dry_run'; + static const supportedAssetTypesKey = 'supported_asset_types'; + + Map toJson() { + late Map cCompilerJson; + if (!dryRun) { + cCompilerJson = cCompiler.toJson(); + } + + return { + outDirConfigKey: outputDirectory.toFilePath(), + packageNameConfigKey: packageName, + packageRootConfigKey: packageRoot.toFilePath(), + OSImpl.configKey: targetOS.toString(), + if (supportedAssetTypes.isNotEmpty) + supportedAssetTypesKey: supportedAssetTypes, + _versionKey: version.toString(), + if (dryRun) dryRunConfigKey: dryRun, + if (!dryRun) ...{ + BuildModeImpl.configKey: buildMode!.toString(), + ArchitectureImpl.configKey: targetArchitecture.toString(), + if (targetIOSSdk != null) IOSSdkImpl.configKey: targetIOSSdk.toString(), + if (targetAndroidNdkApi != null) + targetAndroidNdkApiConfigKey: targetAndroidNdkApi!, + if (cCompilerJson.isNotEmpty) + CCompilerConfigImpl.configKey: cCompilerJson, + }, + }.sortOnKey(); + } } diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 84925293c..f87a6aa60 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -4,55 +4,33 @@ part of '../api/link_config.dart'; +List? fromIdentifiers(ResourceIdentifiers? resourceIdentifiers) => + resourceIdentifiers?.identifiers + .map((e) => Resource(name: e.name, metadata: e.id)) + .toList(); + /// The input to the linking script. /// /// It consists of the [_buildConfig] already passed to the build script, the /// [assets] from the build step, and the [treeshakingInformation] generated /// during the kernel compilation. class LinkConfigImpl extends HookConfigImpl implements LinkConfig { - @override - Hook get hook => Hook.link; + /// The version of [BuildConfigImpl]. + /// + /// This class is used in the protocol between the Dart and Flutter SDKs + /// and packages through build hook invocations. + /// + /// If we ever were to make breaking changes, it would be useful to give + /// proper error messages rather than just fail to parse the JSON + /// representation in the protocol. + static Version latestVersion = Version(1, 0, 0); @override final Iterable assets; - final BuildConfigImpl _buildConfig; - @override final Iterable? treeshakingInformation; - final _LinkConfigArgs _args; - - LinkConfigImpl._( - this._args, { - required this.assets, - required BuildConfigImpl buildConfig, - required ResourceIdentifiers? resourceIdentifiers, - }) : _buildConfig = buildConfig, - treeshakingInformation = fromIdentifiers(resourceIdentifiers); - - @override - Uri get outputDirectory => _buildConfig.outputDirectory; - - @override - String get outputName => 'link_output.json'; - - @override - String get packageName => _buildConfig.packageName; - - @override - Uri get packageRoot => _buildConfig.packageRoot; - - @override - String toJsonString() => - const JsonEncoder.withIndent(' ').convert(_args.toJson()); - - @override - Version get version => _buildConfig.version; - - static LinkConfig fromArguments(List arguments) => - _LinkConfigArgs.fromArguments(arguments).toLinkConfig(); - factory LinkConfigImpl.fromValues({ required Uri? resourceIdentifierUri, required BuildConfigImpl buildConfig, @@ -64,55 +42,58 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { resourceIdentifierUri: resourceIdentifierUri, ).toLinkConfig(); - @override - BuildMode get buildMode => _buildConfig.buildMode; - - @override - CCompilerConfig get cCompiler => _buildConfig.cCompiler; - - @override - bool get dryRun => _buildConfig.dryRun; - - @override - Iterable get supportedAssetTypes => _buildConfig.supportedAssetTypes; - - @override - int? get targetAndroidNdkApi => _buildConfig.targetAndroidNdkApi; + LinkConfigImpl({ + required this.assets, + required Uri? resourceIdentifierUri, + required super.outputDirectory, + required super.packageName, + required super.packageRoot, + Version? version, + required super.buildMode, + required super.cCompiler, + Iterable? supportedAssetTypes, + required super.targetAndroidNdkApi, + required super.targetArchitecture, + required super.targetIOSSdk, + required super.targetOS, + }) : treeshakingInformation = resourceIdentifierUri != null + ? fromIdentifiers(ResourceIdentifiers.fromFile( + resourceIdentifierUri.toFilePath())) + : null, + super( + hook: Hook.link, + version: version ?? latestVersion, + dryRun: false, + supportedAssetTypes: supportedAssetTypes ?? + [ + NativeCodeAsset.type, + DataAsset.type, + ], + ); @override - Architecture? get targetArchitecture => _buildConfig.targetArchitecture; + Hook get hook => Hook.link; @override - IOSSdk get targetIOSSdk => _buildConfig.targetIOSSdk; + String get outputName => 'link_output.json'; @override - OS get targetOS => _buildConfig.targetOS; + String toJsonString() => + const JsonEncoder.withIndent(' ').convert(_args.toJson()); - /// The version of [BuildConfigImpl]. - /// - /// This class is used in the protocol between the Dart and Flutter SDKs - /// and packages through build hook invocations. - /// - /// If we ever were to make breaking changes, it would be useful to give - /// proper error messages rather than just fail to parse the JSON - /// representation in the protocol. - static Version latestVersion = Version(1, 0, 0); + static LinkConfig fromArguments(List arguments) => + _LinkConfigArgs.fromArguments(arguments).toLinkConfig(); } -List? fromIdentifiers(ResourceIdentifiers? resourceIdentifiers) => - resourceIdentifiers?.identifiers - .map((e) => Resource(name: e.name, metadata: e.id)) - .toList(); - class _LinkConfigArgs { - final Uri? resourceIdentifierUri; - final BuildConfigImpl buildConfig; - final List assetsForLinking; - static const resourceIdentifierKey = 'resource_identifiers'; static const buildConfigKey = 'build_config'; static const assetsKey = 'assets'; + final Uri? resourceIdentifierUri; + final BuildConfigImpl buildConfig; + final List assetsForLinking; + _LinkConfigArgs({ required this.resourceIdentifierUri, required this.buildConfig, @@ -147,6 +128,13 @@ class _LinkConfigArgs { ); } + Map toJson() => { + if (resourceIdentifierUri != null) + resourceIdentifierKey: resourceIdentifierUri!.toFilePath(), + buildConfigKey: buildConfig.toJson(), + assetsKey: AssetImpl.listToJson(assetsForLinking, buildConfig.version), + }.sortOnKey(); + LinkConfigImpl toLinkConfig() => LinkConfigImpl._( this, buildConfig: buildConfig, @@ -155,11 +143,4 @@ class _LinkConfigArgs { : null, assets: assetsForLinking, ); - - Map toJson() => { - if (resourceIdentifierUri != null) - resourceIdentifierKey: resourceIdentifierUri!.toFilePath(), - buildConfigKey: buildConfig.toJson(), - assetsKey: AssetImpl.listToJson(assetsForLinking, buildConfig.version), - }.sortOnKey(); } From 4a5ad337224cc1751f62811dc10892e2c01db85c Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 17 Apr 2024 19:41:07 +0200 Subject: [PATCH 164/187] Fix args --- .../lib/src/build_runner/build_runner.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 6db959754..ef08a09b9 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -230,13 +230,13 @@ class NativeAssetsBuildRunner { ); } else { return BuildConfigImpl( - outputDirectory: outDirUri, + outDir: outDirUri, packageName: package.name, packageRoot: package.root, targetOS: target.os, targetArchitecture: target.architecture, buildMode: buildMode, - linkMode: linkModePreference, + linkModePreference: linkModePreference, targetIOSSdk: targetIOSSdk, cCompiler: cCompilerConfig, dependencyMetadata: dependencyMetadata, From 74c74719b0a03ad11bc2eb48d3d326d7722dd425 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Apr 2024 10:57:17 +0200 Subject: [PATCH 165/187] Add tests --- .../lib/src/build_runner/build_runner.dart | 6 +- .../lib/src/api/build_config.dart | 8 +- .../lib/src/api/hook_config.dart | 11 +- .../lib/src/api/link_config.dart | 63 ++- .../lib/src/model/asset.dart | 2 +- .../lib/src/model/build_config.dart | 513 ++++-------------- .../lib/src/model/hook_config.dart | 376 ++++++++++++- .../lib/src/model/link_config.dart | 188 ++++--- .../test/api/build_config_test.dart | 2 +- .../test/api/link_config_test.dart | 174 ++++++ .../test/api/resource_data.dart | 6 + .../test/api/resource_test.dart | 9 +- .../test/model/build_config_test.dart | 147 +---- .../test/model/build_output_test.dart | 4 +- .../test/model/checksum_test.dart | 84 +++ .../test/model/link_config_test.dart | 488 +++++++++++++++++ .../test/cbuilder/cbuilder_test.dart | 2 +- 17 files changed, 1412 insertions(+), 671 deletions(-) create mode 100644 pkgs/native_assets_cli/test/api/link_config_test.dart create mode 100644 pkgs/native_assets_cli/test/model/checksum_test.dart create mode 100644 pkgs/native_assets_cli/test/model/link_config_test.dart diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index ef08a09b9..5726c3c9f 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -191,7 +191,7 @@ class NativeAssetsBuildRunner { Uri? resourceIdentifiers, BuildResult? buildResult, ) async { - final buildDirName = BuildConfigImpl.checksum( + final buildDirName = HookConfigImpl.checksum( packageName: package.name, packageRoot: package.root, targetOS: target.os, @@ -230,7 +230,7 @@ class NativeAssetsBuildRunner { ); } else { return BuildConfigImpl( - outDir: outDirUri, + outputDirectory: outDirUri, packageName: package.name, packageRoot: package.root, targetOS: target.os, @@ -467,7 +467,7 @@ Contents: ${File.fromUri(config.outputFile).readAsStringSync()}. await outDir.create(recursive: true); } return BuildConfigImpl.dryRun( - outDir: outDirUri, + outputDirectory: outDirUri, packageName: packageName, packageRoot: packageRoot, targetOS: targetOS, diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index f67ccad96..2f588d016 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -103,7 +103,7 @@ abstract final class BuildConfig implements HookConfig { Iterable? supportedAssetTypes, }) => BuildConfigImpl( - outDir: outputDirectory, + outputDirectory: outputDirectory, packageName: packageName, packageRoot: packageRoot, buildMode: buildMode as BuildModeImpl, @@ -118,7 +118,7 @@ abstract final class BuildConfig implements HookConfig { for (final entry in dependencyMetadata.entries) entry.key: Metadata(entry.value.cast()) } - : {}, + : null, supportedAssetTypes: supportedAssetTypes, ); @@ -130,7 +130,7 @@ abstract final class BuildConfig implements HookConfig { /// /// For the documentation of the parameters, see the equally named fields. factory BuildConfig.dryRun({ - required Uri outDir, + required Uri outputDirectory, required String packageName, required Uri packageRoot, required OS targetOS, @@ -138,7 +138,7 @@ abstract final class BuildConfig implements HookConfig { Iterable? supportedAssetTypes, }) => BuildConfigImpl.dryRun( - outDir: outDir, + outputDirectory: outputDirectory, packageName: packageName, packageRoot: packageRoot, targetOS: targetOS as OSImpl, diff --git a/pkgs/native_assets_cli/lib/src/api/hook_config.dart b/pkgs/native_assets_cli/lib/src/api/hook_config.dart index 102012522..8423340c6 100644 --- a/pkgs/native_assets_cli/lib/src/api/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/hook_config.dart @@ -2,9 +2,14 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'dart:convert'; + +import 'package:cli_config/cli_config.dart'; +import 'package:collection/collection.dart'; +import 'package:crypto/crypto.dart'; import 'package:pub_semver/pub_semver.dart'; -import '../model/hook.dart'; +import '../../native_assets_cli_internal.dart'; import '../utils/map.dart'; import 'architecture.dart'; import 'asset.dart'; @@ -40,7 +45,7 @@ abstract class HookConfig { Architecture? get targetArchitecture; /// The operating system being compiled for. - OS? get targetOS; + OS get targetOS; /// When compiling for iOS, whether to target device or simulator. /// @@ -82,7 +87,7 @@ abstract class HookConfig { /// /// Not available during a [dryRun]. Will throw a [StateError] if accessed /// during a [dryRun]. - BuildMode? get buildMode; + BuildMode get buildMode; /// The asset types that the invoker of this hook supports. /// diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 619796c5d..313aaeb88 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -5,14 +5,20 @@ import 'dart:convert'; import 'dart:io'; import 'package:args/args.dart'; +import 'package:cli_config/cli_config.dart'; +import 'package:collection/collection.dart'; import 'package:pub_semver/pub_semver.dart'; import '../model/hook.dart'; import '../model/resource_identifiers.dart'; import '../utils/map.dart'; +import 'architecture.dart'; import 'asset.dart'; import 'build_config.dart'; +import 'build_mode.dart'; import 'hook_config.dart'; +import 'ios_sdk.dart'; +import 'os.dart'; import 'resource.dart'; part '../model/link_config.dart'; @@ -38,15 +44,58 @@ abstract class LinkConfig implements HookConfig { factory LinkConfig.fromArguments(List arguments) => LinkConfigImpl.fromArguments(arguments); - factory LinkConfig({ - required Uri? resourceIdentifierUri, - required BuildConfig buildConfig, - required List assetsForLinking, + factory LinkConfig.build({ + required Uri outputDirectory, + required String packageName, + required Uri packageRoot, + Architecture? targetArchitecture, + required OS targetOS, + IOSSdk? targetIOSSdk, + CCompilerConfig? cCompiler, + BuildMode? buildMode, + List? supportedAssetTypes, + int? targetAndroidNdkApi, + required Iterable assets, + Uri? resourceIdentifierUri, + bool? dryRun, + Version? version, }) => - LinkConfigImpl.fromValues( + LinkConfigImpl( + assets: assets.cast(), resourceIdentifierUri: resourceIdentifierUri, - buildConfig: buildConfig as BuildConfigImpl, - assetsForLinking: assetsForLinking.cast(), + outputDirectory: outputDirectory, + packageName: packageName, + packageRoot: packageRoot, + buildMode: buildMode as BuildModeImpl, + cCompiler: cCompiler as CCompilerConfigImpl?, + targetAndroidNdkApi: targetAndroidNdkApi, + targetArchitecture: targetArchitecture as ArchitectureImpl?, + targetIOSSdk: targetIOSSdk as IOSSdkImpl?, + targetOS: targetOS as OSImpl, + dryRun: dryRun, + supportedAssetTypes: supportedAssetTypes, + version: version, + ); + + factory LinkConfig.dryRun({ + required Uri outputDirectory, + required String packageName, + required Uri packageRoot, + required OS targetOS, + List? supportedAssetTypes, + required Iterable assets, + Uri? resourceIdentifierUri, + Version? version, + }) => + LinkConfigImpl.dryRun( + assets: assets.cast(), + resourceIdentifierUri: resourceIdentifierUri, + outputDirectory: outputDirectory, + packageName: packageName, + packageRoot: packageRoot, + targetOS: targetOS as OSImpl, + supportedAssetTypes: supportedAssetTypes, + version: version, ); /// The version of [BuildConfig]. diff --git a/pkgs/native_assets_cli/lib/src/model/asset.dart b/pkgs/native_assets_cli/lib/src/model/asset.dart index 6df49381f..0c98f3b07 100644 --- a/pkgs/native_assets_cli/lib/src/model/asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/asset.dart @@ -27,7 +27,7 @@ abstract final class AssetImpl implements Asset { } static List> listToJson( - List assets, Version version) => + Iterable assets, Version version) => [ for (final asset in assets) asset.toJson(version), ]; diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index f68847920..bd5521918 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -24,182 +24,37 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { version > Version(1, 1, 0) ? 'build_output.json' : 'build_output.yaml'; @override - IOSSdkImpl get targetIOSSdk { - _ensureNotDryRun(); - if (targetOS != OS.iOS) { - throw StateError( - 'This field is not available in if targetOS is not OS.iOS.', - ); - } - return super.targetIOSSdk!; - } - - @override - int? get targetAndroidNdkApi { - _ensureNotDryRun(); - return super.targetAndroidNdkApi; - } - - @override - LinkModePreferenceImpl get linkModePreference => _linkModePreference; - final LinkModePreferenceImpl _linkModePreference; + final LinkModePreferenceImpl linkModePreference; @override Object? metadatum(String packageName, String key) { - _ensureNotDryRun(); + HookConfigImpl.ensureNotDryRun(dryRun); return _dependencyMetadata?[packageName]?.metadata[key]; } final Map? _dependencyMetadata; - @override - CCompilerConfigImpl get cCompiler { - _ensureNotDryRun(); - return super.cCompiler; - } - - @override - BuildModeImpl get buildMode { - _ensureNotDryRun(); - return super.buildMode!; - } - - Config get config => _config; - late final Config _config; - - factory BuildConfigImpl({ - required Uri outDir, - required String packageName, - required Uri packageRoot, - required BuildModeImpl buildMode, - required ArchitectureImpl targetArchitecture, - required OSImpl targetOS, - IOSSdkImpl? targetIOSSdk, - int? targetAndroidNdkApi, - CCompilerConfigImpl? cCompiler, - required LinkModePreferenceImpl linkModePreference, - Map? dependencyMetadata, - Iterable? supportedAssetTypes, - Version? version, - }) => - BuildConfigImpl._( - version: version ?? latestVersion, - outputDirectory: outDir, - packageName: packageName, - packageRoot: packageRoot, - buildMode: buildMode, - targetArchitecture: targetArchitecture, - targetOS: targetOS, - targetIOSSdk: targetIOSSdk, - targetAndroidNdkApi: targetAndroidNdkApi, - cCompiler: cCompiler ?? CCompilerConfigImpl(), - linkMode: linkModePreference, - dependencyMetadata: dependencyMetadata, - dryRun: false, - supportedAssetTypes: - _supportedAssetTypesBackwardsCompatibility(supportedAssetTypes), - ); - - factory BuildConfigImpl.dryRun({ - required Uri outDir, - required String packageName, - required Uri packageRoot, - required OSImpl targetOS, - required LinkModePreferenceImpl linkModePreference, - Iterable? supportedAssetTypes, - }) => - BuildConfigImpl._( - version: latestVersion, - outputDirectory: outDir, - packageName: packageName, - packageRoot: packageRoot, - targetArchitecture: null, - targetOS: targetOS, - cCompiler: CCompilerConfigImpl(), - linkMode: linkModePreference, - dryRun: true, - supportedAssetTypes: - _supportedAssetTypesBackwardsCompatibility(supportedAssetTypes), - ); - - /// Constructs a checksum for a [BuildConfigImpl] based on the fields of a - /// buildconfig that influence the build. - /// - /// This can be used for an [outputDirectory], but should not be used for - /// dry-runs. - /// - /// In particular, it only takes the package name from [packageRoot], so that - /// the hash is equal across checkouts and ignores [outputDirectory] itself. - static String checksum({ - required String packageName, - required Uri packageRoot, - required ArchitectureImpl targetArchitecture, - required OSImpl targetOS, - required BuildModeImpl buildMode, - IOSSdkImpl? targetIOSSdk, - int? targetAndroidNdkApi, - CCompilerConfigImpl? cCompiler, - required LinkModePreferenceImpl linkModePreference, - Map? dependencyMetadata, - Iterable? supportedAssetTypes, - Version? version, - required Hook hook, - }) { - final input = [ - version ?? latestVersion, - packageName, - targetArchitecture.toString(), - targetOS.toString(), - targetIOSSdk.toString(), - targetAndroidNdkApi.toString(), - buildMode.toString(), - linkModePreference.toString(), - cCompiler?.archiver.toString(), - cCompiler?.compiler.toString(), - cCompiler?.envScript.toString(), - cCompiler?.envScriptArgs.toString(), - cCompiler?.linker.toString(), - if (dependencyMetadata != null) - for (final entry in dependencyMetadata.entries) ...[ - entry.key, - json.encode(entry.value.toJson()), - ], - ..._supportedAssetTypesBackwardsCompatibility(supportedAssetTypes), - hook.name, - ].join('###'); - final sha256String = sha256.convert(utf8.encode(input)).toString(); - // 256 bit hashes lead to 64 hex character strings. - // To avoid overflowing file paths limits, only use 32. - // Using 16 hex characters would also be unlikely to have collisions. - const nameLength = 32; - return sha256String.substring(0, nameLength); - } - static List _supportedAssetTypesBackwardsCompatibility( Iterable? supportedAssetTypes, ) => - [ - ...?supportedAssetTypes, - if (supportedAssetTypes == null) NativeCodeAsset.type, - ]; + supportedAssetTypes?.toList() ?? [NativeCodeAsset.type]; - BuildConfigImpl._({ + BuildConfigImpl({ required super.outputDirectory, required super.packageName, required super.packageRoot, Version? version, super.buildMode, - required super.cCompiler, - required Iterable supportedAssetTypes, + super.cCompiler, + Iterable? supportedAssetTypes, super.targetAndroidNdkApi, required super.targetArchitecture, super.targetIOSSdk, required super.targetOS, - required LinkModePreferenceImpl linkMode, + required this.linkModePreference, Map? dependencyMetadata, - required super.dryRun, - }) : _linkModePreference = linkMode, - _dependencyMetadata = dependencyMetadata, + super.dryRun, + }) : _dependencyMetadata = dependencyMetadata, super( hook: Hook.build, version: version ?? latestVersion, @@ -207,6 +62,21 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { _supportedAssetTypesBackwardsCompatibility(supportedAssetTypes), ); + BuildConfigImpl.dryRun({ + required super.outputDirectory, + required super.packageName, + required super.packageRoot, + required super.targetOS, + required this.linkModePreference, + Iterable? supportedAssetTypes, + }) : _dependencyMetadata = null, + super.dryRun( + hook: Hook.build, + version: latestVersion, + supportedAssetTypes: + _supportedAssetTypesBackwardsCompatibility(supportedAssetTypes), + ); + /// The version of [BuildConfigImpl]. /// /// This class is used in the protocol between the Dart and Flutter SDKs @@ -217,16 +87,8 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { /// representation in the protocol. static Version latestVersion = Version(1, 3, 0); - factory BuildConfigImpl._fromConfig(Config config) { - final result = _readFieldsFromConfig(config); - final configErrorMessages = []; - if (configErrorMessages.isNotEmpty) { - throw FormatException('BuildConfig is not in the right format. ' - 'FormatExceptions: $configErrorMessages'); - } - - return result.$1!; - } + factory BuildConfigImpl._fromConfig(Config config) => + _readFieldsFromConfig(config); static BuildConfigImpl fromArguments( List args, { @@ -246,182 +108,41 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { static const dependencyMetadataConfigKey = 'dependency_metadata'; - static (BuildConfigImpl?, List) _readFieldsFromConfig(Config config) { - final errors = []; - - var osSet = false; - var ccSet = false; - final versionString = config.optionalString('version'); - if (versionString == null) { - errors.add('Missing version'); - return (null, errors); - } - final version = Version.parse(versionString); - if (version.major > latestVersion.major) { - errors.add( - 'The config version $version is newer than this ' - 'package:native_assets_cli config version $latestVersion, ' - 'please update native_assets_cli.', - ); - } - if (version.major < latestVersion.major) { - errors.add( - 'The config version $version is newer than this ' - 'package:native_assets_cli config version $latestVersion, ' - 'please update the Dart or Flutter SDK.', - ); - } - final dryRun = config.optionalBool(HookConfigImpl.dryRunConfigKey) ?? false; - final outDir = config.path(HookConfigImpl.outDirConfigKey, mustExist: true); - final packageName = config.string(HookConfigImpl.packageNameConfigKey); - - final packageRoot = - config.path(HookConfigImpl.packageRootConfigKey, mustExist: true); - BuildModeImpl? buildMode; - if (dryRun) { - _throwIfNotNullInDryRun(config, BuildModeImpl.configKey); - } else { - buildMode = BuildModeImpl.fromString( - config.string( - BuildModeImpl.configKey, - validValues: BuildModeImpl.values.map((e) => '$e'), - ), - ); - } - - OSImpl? targetOS; - final osString = config.optionalString( - OSImpl.configKey, - validValues: OSImpl.values.map((e) => '$e'), + static BuildConfigImpl _readFieldsFromConfig(Config config) { + final dryRun = HookConfigImpl.parseDryRun(config) ?? false; + final targetOS = HookConfigImpl.parseTargetOS(config); + return BuildConfigImpl( + outputDirectory: HookConfigImpl.parseOutDir(config), + packageName: HookConfigImpl.parsePackageName(config), + packageRoot: HookConfigImpl.parsePackageRoot(config), + buildMode: HookConfigImpl.parseBuildMode(config, dryRun), + targetOS: targetOS, + targetArchitecture: + HookConfigImpl.parseTargetArchitecture(config, dryRun, targetOS), + linkModePreference: parseLinkModePreference(config), + dependencyMetadata: parseDependencyMetadata(config), + version: HookConfigImpl.parseVersion(config, latestVersion), + cCompiler: HookConfigImpl.parseCCompiler(config, dryRun), + supportedAssetTypes: HookConfigImpl.parseSupportedAssetTypes(config), + targetAndroidNdkApi: + HookConfigImpl.parseTargetAndroidNdkApi(config, dryRun, targetOS), + targetIOSSdk: HookConfigImpl.parseTargetIOSSdk(config, dryRun, targetOS), + dryRun: dryRun, ); - if (osString != null) { - osSet = true; - targetOS = OSImpl.fromString(osString); - } else { - targetOS = null; - } + } - ArchitectureImpl? targetArchitecture; - if (dryRun) { - _throwIfNotNullInDryRun(config, ArchitectureImpl.configKey); - targetArchitecture = null; - } else { - final validArchitectures = [ - if (!osSet) - ...ArchitectureImpl.values - else - for (final target in Target.values) - if (target.os == targetOS) target.architecture - ]; - targetArchitecture = ArchitectureImpl.fromString( + static LinkModePreferenceImpl parseLinkModePreference(Config config) => + LinkModePreferenceImpl.fromString( config.string( - ArchitectureImpl.configKey, - validValues: validArchitectures.map((e) => '$e'), + LinkModePreferenceImpl.configKey, + validValues: LinkModePreferenceImpl.values.map( + (e) => e.toString(), + ), ), ); - } - IOSSdkImpl? targetIOSSdk; - if (dryRun) { - _throwIfNotNullInDryRun(config, IOSSdkImpl.configKey); - } else { - targetIOSSdk = (osSet && targetOS == OSImpl.iOS) - ? IOSSdkImpl.fromString( - config.string( - IOSSdkImpl.configKey, - validValues: IOSSdkImpl.values.map((e) => '$e'), - ), - ) - : null; - } - int? targetAndroidNdkApi; - if (dryRun) { - _throwIfNotNullInDryRun( - config, HookConfigImpl.targetAndroidNdkApiConfigKey); - } else { - targetAndroidNdkApi = (osSet && targetOS == OSImpl.android) - ? config.int(HookConfigImpl.targetAndroidNdkApiConfigKey) - : null; - } - final cCompiler = CCompilerConfigImpl(); - if (dryRun) { - _throwIfNotNullInDryRun(config, CCompilerConfigImpl.arConfigKeyFull); - } else { - cCompiler._archiver = config.optionalPath( - CCompilerConfigImpl.arConfigKeyFull, - mustExist: true, - ); - } - - if (dryRun) { - _throwIfNotNullInDryRun(config, CCompilerConfigImpl.ccConfigKeyFull); - } else { - cCompiler._compiler = config.optionalPath( - CCompilerConfigImpl.ccConfigKeyFull, - mustExist: true, - ); - ccSet = true; - } - - if (dryRun) { - _throwIfNotNullInDryRun(config, CCompilerConfigImpl.ccConfigKeyFull); - } else { - cCompiler._linker = config.optionalPath( - CCompilerConfigImpl.ldConfigKeyFull, - mustExist: true, - ); - } - - if (dryRun) { - _throwIfNotNullInDryRun(config, CCompilerConfigImpl.ccConfigKeyFull); - } else { - cCompiler._envScript = (ccSet && - cCompiler.compiler != null && - cCompiler.compiler!.toFilePath().endsWith('cl.exe')) - ? config.path(CCompilerConfigImpl.envScriptConfigKeyFull, - mustExist: true) - : null; - } - - if (dryRun) { - _throwIfNotNullInDryRun(config, CCompilerConfigImpl.ccConfigKeyFull); - } else { - cCompiler._envScriptArgs = config.optionalStringList( - CCompilerConfigImpl.envScriptArgsConfigKeyFull, - splitEnvironmentPattern: ' ', - ); - } - - final linkModePreference = LinkModePreferenceImpl.fromString( - config.string( - LinkModePreferenceImpl.configKey, - validValues: LinkModePreferenceImpl.values.map((e) => '$e'), - ), - ); - - final dependencyMetadata = _readDependencyMetadataFromConfig(config); - final supportedAssetTypes = - config.optionalStringList(HookConfigImpl.supportedAssetTypesKey) ?? - [NativeCodeAsset.type]; - return ( - BuildConfigImpl._( - outputDirectory: outDir, - packageName: packageName, - packageRoot: packageRoot, - buildMode: buildMode!, - cCompiler: cCompiler, - supportedAssetTypes: supportedAssetTypes, - targetAndroidNdkApi: targetAndroidNdkApi, - targetArchitecture: targetArchitecture, - targetIOSSdk: targetIOSSdk, - targetOS: targetOS, - linkMode: linkModePreference, - dependencyMetadata: dependencyMetadata, - dryRun: dryRun, - ), - errors, - ); - } + static Map? parseDependencyMetadata(Config config) => + _readDependencyMetadataFromConfig(config); static Map? _readDependencyMetadataFromConfig( Config config) { @@ -430,113 +151,69 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { if (fileValue == null) { return null; } - final result = {}; - for (final entry in fileValue.entries) { - final packageName = as(entry.key); - final defines = entry.value; - if (defines is! Map) { - throw FormatException("Unexpected value '$defines' for key " - "'$dependencyMetadataConfigKey.$packageName' in config file. " - 'Expected a Map.'); - } - final packageResult = {}; - for (final entry2 in defines.entries) { - final key = as(entry2.key); - final value = as(entry2.value); - packageResult[key] = value; - } - result[packageName] = Metadata(packageResult.sortOnKey()); - } - return result.sortOnKey(); + return fileValue + .map((key, defines) => MapEntry(as(key), defines)) + .map( + (packageName, defines) { + if (defines is! Map) { + throw FormatException("Unexpected value '$defines' for key " + "'$dependencyMetadataConfigKey.$packageName' in config file. " + 'Expected a Map.'); + } + return MapEntry( + packageName, + Metadata(defines + .map((key, value) => MapEntry(as(key), as(value))) + .sortOnKey()), + ); + }, + ).sortOnKey(); } static BuildConfigImpl fromJson(Map buildConfigJson) => BuildConfigImpl._fromConfig(Config(fileParsed: buildConfigJson)); @override - Map toJson() { - final json = super.toJson(); - return { - ...json, - LinkModePreferenceImpl.configKey: _linkModePreference.toString(), - if (!dryRun) ...{ - if (_dependencyMetadata != null && _dependencyMetadata.isNotEmpty) - dependencyMetadataConfigKey: { - for (final entry in _dependencyMetadata.entries) - entry.key: entry.value.toJson(), - }, - }, - }.sortOnKey(); - } - - @override - String toJsonString() => const JsonEncoder.withIndent(' ').convert(toJson()); + Map toJson() => { + ...hookToJson(), + LinkModePreferenceImpl.configKey: linkModePreference.toString(), + if (!dryRun) ...{ + if (_dependencyMetadata != null && _dependencyMetadata.isNotEmpty) + dependencyMetadataConfigKey: _dependencyMetadata.map( + (packageName, metadata) => + MapEntry(packageName, metadata.toJson()), + ), + }, + }.sortOnKey(); @override bool operator ==(Object other) { + if (super != other) { + return false; + } if (other is! BuildConfigImpl) { return false; } - if (other.outputDirectory != outputDirectory) return false; - if (other.packageName != packageName) return false; - if (other.packageRoot != packageRoot) return false; - if (other.dryRun != dryRun) return false; - if (other.targetOS != targetOS) return false; - if (other.linkModePreference != linkModePreference) return false; - if (!const DeepCollectionEquality() - .equals(other.supportedAssetTypes, supportedAssetTypes)) return false; - if (!dryRun) { - if (other.buildMode != buildMode) return false; - if (other.targetArchitecture != targetArchitecture) return false; - if (targetOS == OS.iOS && other.targetIOSSdk != targetIOSSdk) { - return false; - } - if (other.targetAndroidNdkApi != targetAndroidNdkApi) return false; - if (other.cCompiler != cCompiler) return false; - if (!const DeepCollectionEquality() - .equals(other._dependencyMetadata, _dependencyMetadata)) return false; + if (other.linkModePreference != linkModePreference) { + return false; + } + if (!dryRun && + !const DeepCollectionEquality() + .equals(other._dependencyMetadata, _dependencyMetadata)) { + return false; } return true; } @override int get hashCode => Object.hashAll([ - outputDirectory, - packageName, - packageRoot, - targetOS, + super.hashCode, linkModePreference, - dryRun, - const DeepCollectionEquality().hash(supportedAssetTypes), if (!dryRun) ...[ - buildMode, const DeepCollectionEquality().hash(_dependencyMetadata), - targetArchitecture, - if (targetOS == OS.iOS) targetIOSSdk, - targetAndroidNdkApi, - cCompiler, ], ]); @override - String toString() => 'BuildConfig.build(${toJson()})'; - - void _ensureNotDryRun() { - if (dryRun) { - throw StateError('''This field is not available in dry runs. -In Flutter projects, native builds are generated per OS which target multiple -architectures, build modes, etc. Therefore, the list of native assets produced -can _only_ depend on OS.'''); - } - } - - static void _throwIfNotNullInDryRun(Config config, String key) { - final object = config.valueOf(key); - if (object != null) { - throw const FormatException('''This field is not available in dry runs. -In Flutter projects, native builds are generated per OS which target multiple -architectures, build modes, etc. Therefore, the list of native assets produced -can _only_ depend on OS.'''); - } - } + String toString() => 'BuildConfig(${toJson()})'; } diff --git a/pkgs/native_assets_cli/lib/src/model/hook_config.dart b/pkgs/native_assets_cli/lib/src/model/hook_config.dart index 4cf95e4ee..5f1c81e54 100644 --- a/pkgs/native_assets_cli/lib/src/model/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook_config.dart @@ -20,11 +20,21 @@ abstract class HookConfigImpl implements HookConfig { final Version version; + final BuildModeImpl? _buildMode; + @override - final BuildModeImpl? buildMode; + BuildModeImpl get buildMode { + ensureNotDryRun(dryRun); + return _buildMode!; + } + + final CCompilerConfigImpl _cCompiler; @override - final CCompilerConfigImpl cCompiler; + CCompilerConfigImpl get cCompiler { + ensureNotDryRun(dryRun); + return _cCompiler; + } @override final bool dryRun; @@ -32,17 +42,32 @@ abstract class HookConfigImpl implements HookConfig { @override final Iterable supportedAssetTypes; + final int? _targetAndroidNdkApi; + @override - final int? targetAndroidNdkApi; + int? get targetAndroidNdkApi { + ensureNotDryRun(dryRun); + return _targetAndroidNdkApi; + } @override final ArchitectureImpl? targetArchitecture; + final IOSSdkImpl? _targetIOSSdk; + @override - final IOSSdkImpl? targetIOSSdk; + IOSSdkImpl? get targetIOSSdk { + ensureNotDryRun(dryRun); + if (targetOS != OS.iOS) { + throw StateError( + 'This field is not available in if targetOS is not OS.iOS.', + ); + } + return _targetIOSSdk; + } @override - final OSImpl? targetOS; + final OSImpl targetOS; String get outputName; @@ -52,15 +77,34 @@ abstract class HookConfigImpl implements HookConfig { required this.packageName, required this.packageRoot, required this.version, - required this.buildMode, + required BuildModeImpl? buildMode, required CCompilerConfigImpl? cCompiler, - required this.dryRun, required this.supportedAssetTypes, - required this.targetAndroidNdkApi, + required int? targetAndroidNdkApi, required this.targetArchitecture, - required this.targetIOSSdk, + required IOSSdkImpl? targetIOSSdk, required this.targetOS, - }) : cCompiler = cCompiler ?? CCompilerConfigImpl(); + bool? dryRun, + }) : _targetAndroidNdkApi = targetAndroidNdkApi, + _targetIOSSdk = targetIOSSdk, + _buildMode = buildMode, + _cCompiler = cCompiler ?? CCompilerConfigImpl(), + dryRun = dryRun ?? false; + + HookConfigImpl.dryRun({ + required this.hook, + required this.outputDirectory, + required this.packageName, + required this.packageRoot, + required this.version, + required this.supportedAssetTypes, + required this.targetOS, + }) : _cCompiler = CCompilerConfigImpl(), + dryRun = true, + targetArchitecture = null, + _buildMode = null, + _targetAndroidNdkApi = null, + _targetIOSSdk = null; Uri get configFile => outputDirectory.resolve('../${hook.configName}'); @@ -70,7 +114,7 @@ abstract class HookConfigImpl implements HookConfig { // still using a top-level build.dart. Uri get script => packageRoot.resolve('hook/').resolve(hook.scriptName); - String toJsonString(); + String toJsonString() => const JsonEncoder.withIndent(' ').convert(toJson()); static const outDirConfigKey = 'out_dir'; static const packageNameConfigKey = 'package_name'; @@ -80,7 +124,9 @@ abstract class HookConfigImpl implements HookConfig { static const dryRunConfigKey = 'dry_run'; static const supportedAssetTypesKey = 'supported_asset_types'; - Map toJson() { + Map toJson(); + + Map hookToJson() { late Map cCompilerJson; if (!dryRun) { cCompilerJson = cCompiler.toJson(); @@ -96,9 +142,10 @@ abstract class HookConfigImpl implements HookConfig { _versionKey: version.toString(), if (dryRun) dryRunConfigKey: dryRun, if (!dryRun) ...{ - BuildModeImpl.configKey: buildMode!.toString(), + BuildModeImpl.configKey: buildMode.toString(), ArchitectureImpl.configKey: targetArchitecture.toString(), - if (targetIOSSdk != null) IOSSdkImpl.configKey: targetIOSSdk.toString(), + if (targetOS == OS.iOS && targetIOSSdk != null) + IOSSdkImpl.configKey: targetIOSSdk.toString(), if (targetAndroidNdkApi != null) targetAndroidNdkApiConfigKey: targetAndroidNdkApi!, if (cCompilerJson.isNotEmpty) @@ -106,4 +153,305 @@ abstract class HookConfigImpl implements HookConfig { }, }.sortOnKey(); } + + static Version parseVersion(Config config, Version latestVersion) { + final version = Version.parse(config.string('version')); + if (version.major > latestVersion.major) { + throw FormatException( + 'The config version $version is newer than this ' + 'package:native_assets_cli config version $latestVersion, ' + 'please update native_assets_cli.', + ); + } + if (version.major < latestVersion.major) { + throw FormatException( + 'The config version $version is newer than this ' + 'package:native_assets_cli config version $latestVersion, ' + 'please update the Dart or Flutter SDK.', + ); + } + return version; + } + + static bool? parseDryRun(Config config) => + config.optionalBool(dryRunConfigKey); + + static Uri parseOutDir(Config config) => + config.path(outDirConfigKey, mustExist: true); + + static String parsePackageName(Config config) => + config.string(packageNameConfigKey); + + static Uri parsePackageRoot(Config config) => + config.path(packageRootConfigKey, mustExist: true); + + static BuildModeImpl? parseBuildMode(Config config, bool dryRun) { + if (dryRun) { + _throwIfNotNullInDryRun(config, BuildModeImpl.configKey); + return null; + } else { + return BuildModeImpl.fromString( + config.string( + BuildModeImpl.configKey, + validValues: BuildModeImpl.values.map((e) => '$e'), + ), + ); + } + } + + static OSImpl parseTargetOS(Config config) => OSImpl.fromString( + config.string( + OSImpl.configKey, + validValues: OSImpl.values.map((e) => '$e'), + ), + ); + static ArchitectureImpl? parseTargetArchitecture( + Config config, + bool dryRun, + OSImpl? targetOS, + ) { + if (dryRun) { + _throwIfNotNullInDryRun(config, ArchitectureImpl.configKey); + return null; + } else { + final validArchitectures = [ + if (targetOS == null) + ...ArchitectureImpl.values + else + for (final target in Target.values) + if (target.os == targetOS) target.architecture + ]; + return ArchitectureImpl.fromString( + config.string( + ArchitectureImpl.configKey, + validValues: validArchitectures.map((e) => '$e'), + ), + ); + } + } + + static IOSSdkImpl? parseTargetIOSSdk( + Config config, bool dryRun, OSImpl? targetOS) { + if (dryRun) { + _throwIfNotNullInDryRun(config, IOSSdkImpl.configKey); + return null; + } else { + return targetOS == OSImpl.iOS + ? IOSSdkImpl.fromString( + config.string( + IOSSdkImpl.configKey, + validValues: IOSSdkImpl.values.map((e) => '$e'), + ), + ) + : null; + } + } + + static int? parseTargetAndroidNdkApi( + Config config, + bool dryRun, + OSImpl? targetOS, + ) { + if (dryRun) { + _throwIfNotNullInDryRun(config, targetAndroidNdkApiConfigKey); + return null; + } else { + return (targetOS == OSImpl.android) + ? config.int(targetAndroidNdkApiConfigKey) + : null; + } + } + + static Uri? _parseArchiver(Config config, bool dryRun) { + if (dryRun) { + _throwIfNotNullInDryRun(config, CCompilerConfigImpl.arConfigKeyFull); + return null; + } else { + return config.optionalPath( + CCompilerConfigImpl.arConfigKeyFull, + mustExist: true, + ); + } + } + + static Uri? _parseCompiler(Config config, bool dryRun) { + if (dryRun) { + _throwIfNotNullInDryRun(config, CCompilerConfigImpl.ccConfigKeyFull); + return null; + } else { + return config.optionalPath( + CCompilerConfigImpl.ccConfigKeyFull, + mustExist: true, + ); + } + } + + static Uri? _parseLinker(Config config, bool dryRun) { + if (dryRun) { + _throwIfNotNullInDryRun(config, CCompilerConfigImpl.ccConfigKeyFull); + return null; + } else { + return config.optionalPath( + CCompilerConfigImpl.ldConfigKeyFull, + mustExist: true, + ); + } + } + + static Uri? _parseEnvScript(Config config, bool dryRun, Uri? compiler) { + if (dryRun) { + _throwIfNotNullInDryRun(config, CCompilerConfigImpl.ccConfigKeyFull); + return null; + } else { + return (compiler != null && compiler.toFilePath().endsWith('cl.exe')) + ? config.path(CCompilerConfigImpl.envScriptConfigKeyFull, + mustExist: true) + : null; + } + } + + static List? _parseEnvScriptArgs(Config config, bool dryRun) { + if (dryRun) { + _throwIfNotNullInDryRun(config, CCompilerConfigImpl.ccConfigKeyFull); + return null; + } else { + return config.optionalStringList( + CCompilerConfigImpl.envScriptArgsConfigKeyFull, + splitEnvironmentPattern: ' ', + ); + } + } + + static List parseSupportedAssetTypes(Config config) => + config.optionalStringList(supportedAssetTypesKey) ?? + [NativeCodeAsset.type]; + + static CCompilerConfigImpl parseCCompiler(Config config, bool dryRun) { + final parseCompiler = _parseCompiler(config, dryRun); + final cCompiler = CCompilerConfigImpl( + archiver: _parseArchiver(config, dryRun), + compiler: parseCompiler, + envScript: _parseEnvScript(config, dryRun, parseCompiler), + envScriptArgs: _parseEnvScriptArgs(config, dryRun), + linker: _parseLinker(config, dryRun), + ); + return cCompiler; + } + + static void _throwIfNotNullInDryRun(Config config, String key) { + final object = config.valueOf(key); + if (object != null) { + throw const FormatException('''This field is not available in dry runs. +In Flutter projects, native builds are generated per OS which target multiple +architectures, build modes, etc. Therefore, the list of native assets produced +can _only_ depend on OS.'''); + } + } + + static void ensureNotDryRun(bool dryRun) { + if (dryRun) { + throw StateError('''This field is not available in dry runs. +In Flutter projects, native builds are generated per OS which target multiple +architectures, build modes, etc. Therefore, the list of native assets produced +can _only_ depend on OS.'''); + } + } + + @override + bool operator ==(Object other) { + if (other is! HookConfigImpl) { + return false; + } + if (other.outputDirectory != outputDirectory) return false; + if (other.packageName != packageName) return false; + if (other.packageRoot != packageRoot) return false; + if (other.dryRun != dryRun) return false; + if (other.targetOS != targetOS) return false; + if (!const DeepCollectionEquality() + .equals(other.supportedAssetTypes, supportedAssetTypes)) return false; + if (!dryRun) { + if (other.buildMode != buildMode) return false; + if (other.targetArchitecture != targetArchitecture) return false; + if (targetOS == OS.iOS && other.targetIOSSdk != targetIOSSdk) { + return false; + } + if (other.targetAndroidNdkApi != targetAndroidNdkApi) return false; + if (other.cCompiler != cCompiler) return false; + } + return true; + } + + @override + int get hashCode => Object.hashAll([ + outputDirectory, + packageName, + packageRoot, + targetOS, + dryRun, + if (!dryRun) ...[ + buildMode, + targetArchitecture, + if (targetOS == OS.iOS) targetIOSSdk, + targetAndroidNdkApi, + cCompiler, + ], + ]); + + /// Constructs a checksum for a [BuildConfigImpl] based on the fields of a + /// buildconfig that influence the build. + /// + /// This can be used for an [outputDirectory], but should not be used for + /// dry-runs. + /// + /// In particular, it only takes the package name from [packageRoot], so that + /// the hash is equal across checkouts and ignores [outputDirectory] itself. + static String checksum({ + required String packageName, + required Uri packageRoot, + required ArchitectureImpl targetArchitecture, + required OSImpl targetOS, + required BuildModeImpl buildMode, + IOSSdkImpl? targetIOSSdk, + int? targetAndroidNdkApi, + CCompilerConfigImpl? cCompiler, + required LinkModePreferenceImpl linkModePreference, + Map? dependencyMetadata, + Iterable? supportedAssetTypes, + Version? version, + required Hook hook, + }) { + final input = [ + version ?? latestVersion(hook), + packageName, + targetArchitecture.toString(), + targetOS.toString(), + targetIOSSdk.toString(), + targetAndroidNdkApi.toString(), + buildMode.toString(), + linkModePreference.toString(), + cCompiler?.archiver.toString(), + cCompiler?.compiler.toString(), + cCompiler?.envScript.toString(), + cCompiler?.envScriptArgs.toString(), + cCompiler?.linker.toString(), + if (dependencyMetadata != null) + for (final entry in dependencyMetadata.entries) ...[ + entry.key, + json.encode(entry.value.toJson()), + ], + ...supportedAssetTypes ?? [NativeCodeAsset.type], + hook.name, + ].join('###'); + final sha256String = sha256.convert(utf8.encode(input)).toString(); + // 256 bit hashes lead to 64 hex character strings. + // To avoid overflowing file paths limits, only use 32. + // Using 16 hex characters would also be unlikely to have collisions. + const nameLength = 32; + return sha256String.substring(0, nameLength); + } + + static Version latestVersion(Hook hook) => switch (hook) { + Hook.link => LinkConfigImpl.latestVersion, + Hook.build => BuildConfigImpl.latestVersion, + }; } diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index f87a6aa60..40cb7fad8 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -4,16 +4,16 @@ part of '../api/link_config.dart'; -List? fromIdentifiers(ResourceIdentifiers? resourceIdentifiers) => - resourceIdentifiers?.identifiers +List? fromIdentifiers(ResourceIdentifiers resourceIdentifiers) => + resourceIdentifiers.identifiers .map((e) => Resource(name: e.name, metadata: e.id)) .toList(); /// The input to the linking script. /// -/// It consists of the [_buildConfig] already passed to the build script, the -/// [assets] from the build step, and the [treeshakingInformation] generated -/// during the kernel compilation. +/// It consists of the fields inherited from the [HookConfig], the [assets] from +/// the build step, and the [treeshakingInformation] generated during the kernel +/// compilation. class LinkConfigImpl extends HookConfigImpl implements LinkConfig { /// The version of [BuildConfigImpl]. /// @@ -25,82 +25,82 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { /// representation in the protocol. static Version latestVersion = Version(1, 0, 0); + static const resourceIdentifierKey = 'resource_identifiers'; + + static const assetsKey = 'assets'; + @override final Iterable assets; + Iterable? _treeshakingInformation; + @override - final Iterable? treeshakingInformation; - - factory LinkConfigImpl.fromValues({ - required Uri? resourceIdentifierUri, - required BuildConfigImpl buildConfig, - required List assetsForLinking, - }) => - _LinkConfigArgs( - assetsForLinking: assetsForLinking, - buildConfig: buildConfig, - resourceIdentifierUri: resourceIdentifierUri, - ).toLinkConfig(); + Iterable? get treeshakingInformation { + if (_resourceIdentifierUri != null && _treeshakingInformation == null) { + _treeshakingInformation = fromIdentifiers( + ResourceIdentifiers.fromFile(_resourceIdentifierUri.toFilePath())); + } + return _treeshakingInformation; + } + + final Uri? _resourceIdentifierUri; LinkConfigImpl({ required this.assets, - required Uri? resourceIdentifierUri, + Uri? resourceIdentifierUri, required super.outputDirectory, required super.packageName, required super.packageRoot, Version? version, required super.buildMode, - required super.cCompiler, + super.cCompiler, Iterable? supportedAssetTypes, - required super.targetAndroidNdkApi, - required super.targetArchitecture, - required super.targetIOSSdk, + super.targetAndroidNdkApi, + super.targetArchitecture, + super.targetIOSSdk, required super.targetOS, - }) : treeshakingInformation = resourceIdentifierUri != null + super.dryRun, + }) : _resourceIdentifierUri = resourceIdentifierUri, + super( + hook: Hook.link, + version: version ?? latestVersion, + supportedAssetTypes: supportedAssetTypes ?? [NativeCodeAsset.type], + ); + + LinkConfigImpl.dryRun({ + required this.assets, + Uri? resourceIdentifierUri, + required super.outputDirectory, + required super.packageName, + required super.packageRoot, + Version? version, + Iterable? supportedAssetTypes, + required super.targetOS, + }) : _resourceIdentifierUri = resourceIdentifierUri, + _treeshakingInformation = resourceIdentifierUri != null ? fromIdentifiers(ResourceIdentifiers.fromFile( resourceIdentifierUri.toFilePath())) : null, - super( + super.dryRun( hook: Hook.link, version: version ?? latestVersion, - dryRun: false, - supportedAssetTypes: supportedAssetTypes ?? - [ - NativeCodeAsset.type, - DataAsset.type, - ], + supportedAssetTypes: supportedAssetTypes ?? [NativeCodeAsset.type], ); @override Hook get hook => Hook.link; - @override String get outputName => 'link_output.json'; @override - String toJsonString() => - const JsonEncoder.withIndent(' ').convert(_args.toJson()); - - static LinkConfig fromArguments(List arguments) => - _LinkConfigArgs.fromArguments(arguments).toLinkConfig(); -} - -class _LinkConfigArgs { - static const resourceIdentifierKey = 'resource_identifiers'; - static const buildConfigKey = 'build_config'; - static const assetsKey = 'assets'; - - final Uri? resourceIdentifierUri; - final BuildConfigImpl buildConfig; - final List assetsForLinking; - - _LinkConfigArgs({ - required this.resourceIdentifierUri, - required this.buildConfig, - required this.assetsForLinking, - }); + Map toJson() => { + ...hookToJson(), + if (_resourceIdentifierUri != null) + resourceIdentifierKey: _resourceIdentifierUri.toFilePath(), + assetsKey: AssetImpl.listToJson(assets, version), + }.sortOnKey(); - factory _LinkConfigArgs.fromArguments(List arguments) { + static LinkConfig fromArguments(List arguments) { final argParser = ArgParser()..addOption('config'); final results = argParser.parse(arguments); @@ -109,38 +109,64 @@ class _LinkConfigArgs { final linkConfigJson = jsonDecode(linkConfigContents) as Map; - return _LinkConfigArgs.fromJson(linkConfigJson); + return fromJson(linkConfigJson); } - factory _LinkConfigArgs.fromJson(Map linkConfigJson) { - final resourcesPath = linkConfigJson[resourceIdentifierKey] as String?; - final buildConfigJson = - linkConfigJson[buildConfigKey] as Map; - final assetList = linkConfigJson[assetsKey] as List?; - if (assetList == null) { - throw ArgumentError('Expected to find the assetList in $linkConfigJson'); - } - return _LinkConfigArgs( - resourceIdentifierUri: - resourcesPath != null ? Uri.file(resourcesPath) : null, - buildConfig: BuildConfigImpl.fromJson(buildConfigJson), - assetsForLinking: AssetImpl.listFromJson(assetList), + static LinkConfigImpl fromJson(Map linkConfigJson) { + final config = + Config.fromConfigFileContents(fileContents: jsonEncode(linkConfigJson)); + final dryRun = HookConfigImpl.parseDryRun(config) ?? false; + final targetOS = HookConfigImpl.parseTargetOS(config); + return LinkConfigImpl( + outputDirectory: HookConfigImpl.parseOutDir(config), + packageName: HookConfigImpl.parsePackageName(config), + packageRoot: HookConfigImpl.parsePackageRoot(config), + buildMode: HookConfigImpl.parseBuildMode(config, dryRun), + targetOS: targetOS, + targetArchitecture: + HookConfigImpl.parseTargetArchitecture(config, dryRun, targetOS), + version: HookConfigImpl.parseVersion(config, latestVersion), + cCompiler: HookConfigImpl.parseCCompiler(config, dryRun), + supportedAssetTypes: HookConfigImpl.parseSupportedAssetTypes(config), + targetAndroidNdkApi: + HookConfigImpl.parseTargetAndroidNdkApi(config, dryRun, targetOS), + targetIOSSdk: HookConfigImpl.parseTargetIOSSdk(config, dryRun, targetOS), + assets: parseAssets(config), + resourceIdentifierUri: parseResourceIdentifier(config), + dryRun: dryRun, ); } - Map toJson() => { - if (resourceIdentifierUri != null) - resourceIdentifierKey: resourceIdentifierUri!.toFilePath(), - buildConfigKey: buildConfig.toJson(), - assetsKey: AssetImpl.listToJson(assetsForLinking, buildConfig.version), - }.sortOnKey(); + static Uri? parseResourceIdentifier(Config config) => + config.optionalPath(resourceIdentifierKey); - LinkConfigImpl toLinkConfig() => LinkConfigImpl._( - this, - buildConfig: buildConfig, - resourceIdentifiers: resourceIdentifierUri != null - ? ResourceIdentifiers.fromFile(resourceIdentifierUri!.toFilePath()) - : null, - assets: assetsForLinking, - ); + static List parseAssets(Config config) => + AssetImpl.listFromJson(config.valueOf(assetsKey)); + + @override + bool operator ==(Object other) { + if (super != other) { + return false; + } + if (other is! LinkConfigImpl) { + return false; + } + if (other._resourceIdentifierUri != _resourceIdentifierUri) { + return false; + } + if (!const DeepCollectionEquality().equals(other.assets, assets)) { + return false; + } + return true; + } + + @override + int get hashCode => Object.hashAll([ + super.hashCode, + _resourceIdentifierUri, + const DeepCollectionEquality().hash(assets), + ]); + + @override + String toString() => 'LinkConfig(${toJson()})'; } diff --git a/pkgs/native_assets_cli/test/api/build_config_test.dart b/pkgs/native_assets_cli/test/api/build_config_test.dart index 23dad7ae8..88f5724fe 100644 --- a/pkgs/native_assets_cli/test/api/build_config_test.dart +++ b/pkgs/native_assets_cli/test/api/build_config_test.dart @@ -125,7 +125,7 @@ void main() async { test('BuildConfig.dryRun', () { final buildConfig2 = BuildConfig.dryRun( - outDir: outDirUri, + outputDirectory: outDirUri, packageName: packageName, packageRoot: packageRootUri, targetOS: OS.android, diff --git a/pkgs/native_assets_cli/test/api/link_config_test.dart b/pkgs/native_assets_cli/test/api/link_config_test.dart new file mode 100644 index 000000000..a6bf8038c --- /dev/null +++ b/pkgs/native_assets_cli/test/api/link_config_test.dart @@ -0,0 +1,174 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:io'; + +import 'package:native_assets_cli/native_assets_cli.dart'; +import 'package:native_assets_cli/src/api/link_config.dart'; +import 'package:test/test.dart'; + +void main() async { + late Uri tempUri; + late Uri outDirUri; + late Uri outDir2Uri; + late String packageName; + late Uri packageRootUri; + late Uri fakeClang; + late Uri fakeLd; + late Uri fakeAr; + late Uri fakeCl; + late Uri fakeVcVars; + + setUp(() async { + tempUri = (await Directory.systemTemp.createTemp()).uri; + outDirUri = tempUri.resolve('out1/'); + await Directory.fromUri(outDirUri).create(); + outDir2Uri = tempUri.resolve('out2/'); + packageName = 'my_package'; + await Directory.fromUri(outDir2Uri).create(); + packageRootUri = tempUri.resolve('$packageName/'); + await Directory.fromUri(packageRootUri).create(); + fakeClang = tempUri.resolve('fake_clang'); + await File.fromUri(fakeClang).create(); + fakeLd = tempUri.resolve('fake_ld'); + await File.fromUri(fakeLd).create(); + fakeAr = tempUri.resolve('fake_ar'); + await File.fromUri(fakeAr).create(); + fakeCl = tempUri.resolve('cl.exe'); + await File.fromUri(fakeCl).create(); + fakeVcVars = tempUri.resolve('vcvarsall.bat'); + await File.fromUri(fakeVcVars).create(); + }); + + tearDown(() async { + await Directory.fromUri(tempUri).delete(recursive: true); + }); + + test('LinkConfig ==', () { + final config1 = LinkConfig.build( + outputDirectory: outDirUri, + packageName: packageName, + packageRoot: tempUri, + targetArchitecture: Architecture.arm64, + targetOS: OS.iOS, + targetIOSSdk: IOSSdk.iPhoneOS, + cCompiler: CCompilerConfig( + compiler: fakeClang, + linker: fakeLd, + archiver: fakeAr, + ), + buildMode: BuildMode.release, + supportedAssetTypes: [NativeCodeAsset.type], + assets: [], + ); + + final config2 = LinkConfig.build( + outputDirectory: outDir2Uri, + packageName: packageName, + packageRoot: tempUri, + targetArchitecture: Architecture.arm64, + targetOS: OS.android, + targetAndroidNdkApi: 30, + buildMode: BuildMode.release, + supportedAssetTypes: [NativeCodeAsset.type], + assets: [], + ); + + expect(config1, equals(config1)); + expect(config1 == config2, false); + expect(config1.outputDirectory != config2.outputDirectory, true); + expect(config1.packageRoot, config2.packageRoot); + expect(config1.targetArchitecture == config2.targetArchitecture, true); + expect(config1.targetOS != config2.targetOS, true); + expect(config1.targetIOSSdk, IOSSdk.iPhoneOS); + expect(() => config2.targetIOSSdk, throwsStateError); + expect(config1.cCompiler.compiler != config2.cCompiler.compiler, true); + expect(config1.cCompiler.linker != config2.cCompiler.linker, true); + expect(config1.cCompiler.archiver != config2.cCompiler.archiver, true); + expect(config1.cCompiler.envScript == config2.cCompiler.envScript, true); + expect(config1.cCompiler.envScriptArgs == config2.cCompiler.envScriptArgs, + true); + expect(config1.cCompiler != config2.cCompiler, true); + expect(config1.supportedAssetTypes, config2.supportedAssetTypes); + }); + + test('LinkConfig fromConfig', () { + final linkConfig2 = LinkConfig.build( + outputDirectory: outDirUri, + packageName: packageName, + packageRoot: packageRootUri, + targetArchitecture: Architecture.arm64, + targetOS: OS.android, + targetAndroidNdkApi: 30, + buildMode: BuildMode.release, + assets: [], + ); + + final config = { + 'build_mode': 'release', + 'dry_run': false, + 'link_mode_preference': 'prefer-static', + 'out_dir': outDirUri.toFilePath(), + 'package_name': packageName, + 'package_root': packageRootUri.toFilePath(), + 'target_android_ndk_api': 30, + 'target_architecture': 'arm64', + 'target_os': 'android', + 'version': BuildOutput.latestVersion.toString(), + 'assets': [], + }; + + final fromConfig = LinkConfigImpl.fromJson(config); + expect(fromConfig, equals(linkConfig2)); + }); + + test('LinkConfig.dryRun', () { + final linkConfig2 = LinkConfig.dryRun( + outputDirectory: outDirUri, + packageName: packageName, + packageRoot: packageRootUri, + targetOS: OS.android, + supportedAssetTypes: [NativeCodeAsset.type], + assets: [], + ); + + final config = { + 'dry_run': true, + 'link_mode_preference': 'prefer-static', + 'out_dir': outDirUri.toFilePath(), + 'package_name': packageName, + 'package_root': packageRootUri.toFilePath(), + 'target_os': 'android', + 'version': BuildOutput.latestVersion.toString(), + 'assets': [], + }; + + final fromConfig = LinkConfigImpl.fromJson(config); + expect(fromConfig, equals(linkConfig2)); + }); + + test('LinkConfig fromArgs', () async { + final linkConfig = LinkConfig.build( + outputDirectory: outDirUri, + packageName: packageName, + packageRoot: tempUri, + targetArchitecture: Architecture.arm64, + targetOS: OS.android, + targetAndroidNdkApi: 30, + buildMode: BuildMode.release, + assets: [], + ); + final configFileContents = (linkConfig as LinkConfigImpl).toJsonString(); + final configUri = tempUri.resolve('config.json'); + final configFile = File.fromUri(configUri); + await configFile.writeAsString(configFileContents); + final linkConfigFromArgs = + LinkConfig.fromArguments(['--config', configUri.toFilePath()]); + expect(linkConfigFromArgs, linkConfig); + }); + + test('LinkConfig.version', () { + LinkConfig.latestVersion.toString(); + }); +} diff --git a/pkgs/native_assets_cli/test/api/resource_data.dart b/pkgs/native_assets_cli/test/api/resource_data.dart index b83351e19..23d3076ad 100644 --- a/pkgs/native_assets_cli/test/api/resource_data.dart +++ b/pkgs/native_assets_cli/test/api/resource_data.dart @@ -2,8 +2,14 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'package:native_assets_cli/src/api/resource.dart'; import 'package:native_assets_cli/src/model/resource_identifiers.dart'; +final resourceList = [ + Resource(name: 'methodName1', metadata: 'someMetadata'), + Resource(name: 'methodName2', metadata: 'someOtherMetadata'), +]; + const resourceFile = '''{ "_comment": "Resources referenced by annotated resource identifiers", "AppTag": "TBD", diff --git a/pkgs/native_assets_cli/test/api/resource_test.dart b/pkgs/native_assets_cli/test/api/resource_test.dart index cb1a8dfc3..c06c08890 100644 --- a/pkgs/native_assets_cli/test/api/resource_test.dart +++ b/pkgs/native_assets_cli/test/api/resource_test.dart @@ -2,7 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:native_assets_cli/native_assets_cli.dart'; import 'package:native_assets_cli/src/api/link_config.dart'; import 'package:test/test.dart'; @@ -10,12 +9,6 @@ import 'resource_data.dart'; void main() { test('Parse resource identifiers', () { - expect( - fromIdentifiers(resourceIdentifiers), - [ - Resource(name: 'methodName1', metadata: 'someMetadata'), - Resource(name: 'methodName2', metadata: 'someOtherMetadata'), - ], - ); + expect(fromIdentifiers(resourceIdentifiers), resourceList); }); } diff --git a/pkgs/native_assets_cli/test/model/build_config_test.dart b/pkgs/native_assets_cli/test/model/build_config_test.dart index f084a1173..10f7f0cb5 100644 --- a/pkgs/native_assets_cli/test/model/build_config_test.dart +++ b/pkgs/native_assets_cli/test/model/build_config_test.dart @@ -11,10 +11,10 @@ import 'package:test/test.dart'; import '../helpers.dart'; void main() async { + const packageName = 'my_package'; late Uri tempUri; late Uri outDirUri; late Uri outDir2Uri; - late String packageName; late Uri packageRootUri; late Uri fakeClang; late Uri fakeLd; @@ -27,7 +27,6 @@ void main() async { outDirUri = tempUri.resolve('out1/'); await Directory.fromUri(outDirUri).create(); outDir2Uri = tempUri.resolve('out2/'); - packageName = 'my_package'; await Directory.fromUri(outDir2Uri).create(); packageRootUri = tempUri.resolve('$packageName/'); await Directory.fromUri(packageRootUri).create(); @@ -49,7 +48,7 @@ void main() async { test('BuildConfig ==', () { final config1 = BuildConfigImpl( - outDir: outDirUri, + outputDirectory: outDirUri, packageName: packageName, packageRoot: tempUri, targetArchitecture: ArchitectureImpl.arm64, @@ -65,7 +64,7 @@ void main() async { ); final config2 = BuildConfigImpl( - outDir: outDir2Uri, + outputDirectory: outDir2Uri, packageName: packageName, packageRoot: tempUri, targetArchitecture: ArchitectureImpl.arm64, @@ -95,7 +94,7 @@ void main() async { test('BuildConfig fromConfig', () { final buildConfig2 = BuildConfigImpl( - outDir: outDirUri, + outputDirectory: outDirUri, packageName: packageName, packageRoot: packageRootUri, targetArchitecture: ArchitectureImpl.arm64, @@ -124,7 +123,7 @@ void main() async { test('BuildConfig.dryRun', () { final buildConfig2 = BuildConfigImpl.dryRun( - outDir: outDirUri, + outputDirectory: outDirUri, packageName: packageName, packageRoot: packageRootUri, targetOS: OSImpl.android, @@ -147,7 +146,7 @@ void main() async { test('BuildConfig toJson fromConfig', () { final buildConfig1 = BuildConfigImpl( - outDir: outDirUri, + outputDirectory: outDirUri, packageName: packageName, packageRoot: packageRootUri, targetArchitecture: ArchitectureImpl.arm64, @@ -168,7 +167,7 @@ void main() async { test('BuildConfig == dependency metadata', () { final buildConfig1 = BuildConfigImpl( - outDir: outDirUri, + outputDirectory: outDirUri, packageName: packageName, packageRoot: tempUri, targetArchitecture: ArchitectureImpl.arm64, @@ -188,7 +187,7 @@ void main() async { ); final buildConfig2 = BuildConfigImpl( - outDir: outDirUri, + outputDirectory: outDirUri, packageName: packageName, packageRoot: tempUri, targetArchitecture: ArchitectureImpl.arm64, @@ -214,7 +213,7 @@ void main() async { test('BuildConfig toJson fromJson', () { final outDir = outDirUri; final buildConfig1 = BuildConfigImpl( - outDir: outDir, + outputDirectory: outDir, packageName: packageName, packageRoot: tempUri, targetArchitecture: ArchitectureImpl.arm64, @@ -291,7 +290,7 @@ target_ios_sdk: iphoneos target_os: ios version: 1.0.0'''; final buildConfig1 = BuildConfigImpl( - outDir: outDir, + outputDirectory: outDir, packageName: packageName, packageRoot: tempUri, targetArchitecture: ArchitectureImpl.arm64, @@ -327,7 +326,7 @@ version: 1.0.0'''; (e) => e is FormatException && e.message.contains( - 'No value was provided for required key: build_mode', + 'No value was provided for required key: target_os', ), )), ); @@ -359,6 +358,7 @@ version: 1.0.0'''; 'target_os': 'android', 'target_android_ndk_api': 30, 'link_mode_preference': 'prefer-static', + 'build_mode': BuildModeImpl.release.name, 'dependency_metadata': { 'bar': {'key': 'value'}, 'foo': [], @@ -382,6 +382,7 @@ version: 1.0.0'''; 'target_architecture': 'arm64', 'target_os': 'android', 'link_mode_preference': 'prefer-static', + 'build_mode': BuildModeImpl.release.name, }), throwsA(predicate( (e) => @@ -393,22 +394,9 @@ version: 1.0.0'''; ); }); - test('FormatExceptions contain full stack trace of wrapped exception', () { - try { - BuildConfigImpl.fromJson({ - 'out_dir': outDirUri.toFilePath(), - 'package_root': packageRootUri.toFilePath(), - 'target': [1, 2, 3, 4, 5], - 'link_mode_preference': 'prefer-static', - }); - } on FormatException catch (e) { - expect(e.toString(), stringContainsInOrder(['Config.string'])); - } - }); - test('BuildConfig toString', () { final config = BuildConfigImpl( - outDir: outDirUri, + outputDirectory: outDirUri, packageName: packageName, packageRoot: tempUri, targetArchitecture: ArchitectureImpl.arm64, @@ -426,7 +414,7 @@ version: 1.0.0'''; test('BuildConfig fromArgs', () async { final buildConfig = BuildConfigImpl( - outDir: outDirUri, + outputDirectory: outDirUri, packageName: packageName, packageRoot: tempUri, targetArchitecture: ArchitectureImpl.arm64, @@ -444,37 +432,9 @@ version: 1.0.0'''; expect(buildConfig2, buildConfig); }); - test('dependency metadata via config accessor', () { - final buildConfig1 = BuildConfigImpl( - outDir: outDirUri, - packageName: packageName, - packageRoot: tempUri, - targetArchitecture: ArchitectureImpl.arm64, - targetOS: OSImpl.android, - targetAndroidNdkApi: 30, - buildMode: BuildModeImpl.release, - linkModePreference: LinkModePreferenceImpl.preferStatic, - dependencyMetadata: { - 'bar': const Metadata({ - 'key': {'key2': 'value'}, - }), - }, - ); - // Useful for doing `path(..., exists: true)`. - expect( - buildConfig1.config.string([ - BuildConfigImpl.dependencyMetadataConfigKey, - 'bar', - 'key', - 'key2' - ].join('.')), - 'value', - ); - }); - test('envScript', () { final buildConfig1 = BuildConfigImpl( - outDir: outDirUri, + outputDirectory: outDirUri, packageName: packageName, packageRoot: packageRootUri, targetArchitecture: ArchitectureImpl.x64, @@ -501,8 +461,9 @@ version: 1.0.0'''; 'out_dir': outDir.toFilePath(), 'package_root': tempUri.toFilePath(), 'target_os': 'linux', - 'target_architecture': 'x64', 'version': version, + 'package_name': packageName, + 'dry_run': true, }; expect( () => BuildConfigImpl.fromJson(config), @@ -516,76 +477,6 @@ version: 1.0.0'''; }); } - test('checksum', () async { - await inTempDir((tempUri) async { - final nativeAddUri = tempUri.resolve('native_add/'); - final fakeClangUri = tempUri.resolve('fake_clang'); - await File.fromUri(fakeClangUri).create(); - - final name1 = BuildConfigImpl.checksum( - packageName: packageName, - packageRoot: nativeAddUri, - targetArchitecture: ArchitectureImpl.x64, - targetOS: OSImpl.linux, - buildMode: BuildModeImpl.release, - linkModePreference: LinkModePreferenceImpl.dynamic, - supportedAssetTypes: [NativeCodeAsset.type], - hook: Hook.build, - ); - - // Using the checksum for a build folder should be stable. - expect(name1, 'b6170f6f00000d3766b01cea7637b607'); - - // Build folder different due to metadata. - final name2 = BuildConfigImpl.checksum( - packageName: packageName, - packageRoot: nativeAddUri, - targetArchitecture: ArchitectureImpl.x64, - targetOS: OSImpl.linux, - buildMode: BuildModeImpl.release, - linkModePreference: LinkModePreferenceImpl.dynamic, - dependencyMetadata: { - 'foo': const Metadata({'key': 'value'}) - }, - hook: Hook.build, - ); - printOnFailure([name1, name2].toString()); - expect(name1 != name2, true); - - // Build folder different due to cc. - final name3 = BuildConfigImpl.checksum( - packageName: packageName, - packageRoot: nativeAddUri, - targetArchitecture: ArchitectureImpl.x64, - targetOS: OSImpl.linux, - buildMode: BuildModeImpl.release, - linkModePreference: LinkModePreferenceImpl.dynamic, - cCompiler: CCompilerConfigImpl( - compiler: fakeClangUri, - ), - hook: Hook.build, - ); - printOnFailure([name1, name3].toString()); - expect(name1 != name3, true); - - // Build folder different due to hook. - final name4 = BuildConfigImpl.checksum( - packageName: packageName, - packageRoot: nativeAddUri, - targetArchitecture: ArchitectureImpl.x64, - targetOS: OSImpl.linux, - buildMode: BuildModeImpl.release, - linkModePreference: LinkModePreferenceImpl.dynamic, - cCompiler: CCompilerConfigImpl( - compiler: fakeClangUri, - ), - hook: Hook.link, - ); - printOnFailure([name1, name4].toString()); - expect(name1 != name4, true); - }); - }); - test('BuildConfig invalid target os architecture combination', () { final outDir = outDirUri; final config = { @@ -666,7 +557,7 @@ version: 1.0.0'''; test('BuildConfig dry_run toString', () { final buildConfig = BuildConfigImpl.dryRun( packageName: packageName, - outDir: outDirUri, + outputDirectory: outDirUri, packageRoot: tempUri, targetOS: OSImpl.windows, linkModePreference: LinkModePreferenceImpl.dynamic, diff --git a/pkgs/native_assets_cli/test/model/build_output_test.dart b/pkgs/native_assets_cli/test/model/build_output_test.dart index bd7ef2950..0a2aa3089 100644 --- a/pkgs/native_assets_cli/test/model/build_output_test.dart +++ b/pkgs/native_assets_cli/test/model/build_output_test.dart @@ -206,7 +206,7 @@ version: 1.0.0'''; await Directory.fromUri(outDir).create(); await Directory.fromUri(packageRoot).create(); final config = BuildConfigImpl( - outDir: outDir, + outputDirectory: outDir, packageName: 'dontcare', packageRoot: packageRoot, buildMode: BuildModeImpl.debug, @@ -226,7 +226,7 @@ version: 1.0.0'''; await Directory.fromUri(outDir).create(); await Directory.fromUri(packageRoot).create(); final config = BuildConfigImpl( - outDir: outDir, + outputDirectory: outDir, packageName: 'dontcare', packageRoot: packageRoot, buildMode: BuildModeImpl.debug, diff --git a/pkgs/native_assets_cli/test/model/checksum_test.dart b/pkgs/native_assets_cli/test/model/checksum_test.dart new file mode 100644 index 000000000..6b9ba5be7 --- /dev/null +++ b/pkgs/native_assets_cli/test/model/checksum_test.dart @@ -0,0 +1,84 @@ +import 'dart:io'; + +import 'package:native_assets_cli/native_assets_cli_internal.dart'; +import 'package:native_assets_cli/src/api/asset.dart'; +import 'package:test/test.dart'; + +import '../helpers.dart'; + +void main() { + const packageName = 'my_package'; + test('checksum', () async { + await inTempDir((tempUri) async { + final nativeAddUri = tempUri.resolve('native_add/'); + final fakeClangUri = tempUri.resolve('fake_clang'); + await File.fromUri(fakeClangUri).create(); + + final name1 = HookConfigImpl.checksum( + packageName: packageName, + packageRoot: nativeAddUri, + targetArchitecture: ArchitectureImpl.x64, + targetOS: OSImpl.linux, + buildMode: BuildModeImpl.release, + linkModePreference: LinkModePreferenceImpl.dynamic, + supportedAssetTypes: [NativeCodeAsset.type], + hook: Hook.build, + version: BuildConfigImpl.latestVersion, + ); + + // Using the checksum for a build folder should be stable. + expect(name1, 'b6170f6f00000d3766b01cea7637b607'); + + // Build folder different due to metadata. + final name2 = HookConfigImpl.checksum( + packageName: packageName, + packageRoot: nativeAddUri, + targetArchitecture: ArchitectureImpl.x64, + targetOS: OSImpl.linux, + buildMode: BuildModeImpl.release, + linkModePreference: LinkModePreferenceImpl.dynamic, + dependencyMetadata: { + 'foo': const Metadata({'key': 'value'}) + }, + hook: Hook.build, + version: BuildConfigImpl.latestVersion, + ); + printOnFailure([name1, name2].toString()); + expect(name1 != name2, true); + + // Build folder different due to cc. + final name3 = HookConfigImpl.checksum( + packageName: packageName, + packageRoot: nativeAddUri, + targetArchitecture: ArchitectureImpl.x64, + targetOS: OSImpl.linux, + buildMode: BuildModeImpl.release, + linkModePreference: LinkModePreferenceImpl.dynamic, + cCompiler: CCompilerConfigImpl( + compiler: fakeClangUri, + ), + hook: Hook.build, + version: BuildConfigImpl.latestVersion, + ); + printOnFailure([name1, name3].toString()); + expect(name1 != name3, true); + + // Build folder different due to hook. + final name4 = HookConfigImpl.checksum( + packageName: packageName, + packageRoot: nativeAddUri, + targetArchitecture: ArchitectureImpl.x64, + targetOS: OSImpl.linux, + buildMode: BuildModeImpl.release, + linkModePreference: LinkModePreferenceImpl.dynamic, + cCompiler: CCompilerConfigImpl( + compiler: fakeClangUri, + ), + hook: Hook.link, + version: BuildConfigImpl.latestVersion, + ); + printOnFailure([name1, name4].toString()); + expect(name1 != name4, true); + }); + }); +} diff --git a/pkgs/native_assets_cli/test/model/link_config_test.dart b/pkgs/native_assets_cli/test/model/link_config_test.dart new file mode 100644 index 000000000..8dfce18d9 --- /dev/null +++ b/pkgs/native_assets_cli/test/model/link_config_test.dart @@ -0,0 +1,488 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:convert'; +import 'dart:io'; + +import 'package:native_assets_cli/native_assets_cli.dart'; +import 'package:native_assets_cli/native_assets_cli_internal.dart'; +import 'package:native_assets_cli/src/api/asset.dart'; +import 'package:test/test.dart'; + +import '../api/resource_data.dart'; + +void main() async { + late Uri tempUri; + late Uri outDirUri; + late Uri outDir2Uri; + const packageName = 'my_package'; + late Uri packageRootUri; + late Uri fakeClang; + late Uri fakeLd; + late Uri fakeAr; + late Uri fakeCl; + late Uri fakeVcVars; + late Uri resources; + final assets = [ + DataAsset( + package: packageName, + name: 'name', + file: Uri.file('nonexistent'), + ), + NativeCodeAsset( + package: packageName, + name: 'name2', + linkMode: DynamicLoadingBundled(), + os: OS.android, + file: Uri.file('not there'), + architecture: Architecture.riscv64, + ) + ].cast(); + + setUp(() async { + tempUri = (await Directory.systemTemp.createTemp()).uri; + outDirUri = tempUri.resolve('out1/'); + await Directory.fromUri(outDirUri).create(); + outDir2Uri = tempUri.resolve('out2/'); + await Directory.fromUri(outDir2Uri).create(); + packageRootUri = tempUri.resolve('$packageName/'); + await Directory.fromUri(packageRootUri).create(); + fakeClang = tempUri.resolve('fake_clang'); + await File.fromUri(fakeClang).create(); + fakeLd = tempUri.resolve('fake_ld'); + await File.fromUri(fakeLd).create(); + fakeAr = tempUri.resolve('fake_ar'); + await File.fromUri(fakeAr).create(); + fakeCl = tempUri.resolve('cl.exe'); + await File.fromUri(fakeCl).create(); + fakeVcVars = tempUri.resolve('vcvarsall.bat'); + await File.fromUri(fakeVcVars).create(); + resources = tempUri.resolve('resources.json'); + final file = File.fromUri(resources)..createSync(); + file.writeAsStringSync(jsonEncode(resourceIdentifiers)); + }); + + tearDown(() async { + await Directory.fromUri(tempUri).delete(recursive: true); + }); + + test('LinkConfig ==', () { + final config1 = LinkConfigImpl( + outputDirectory: outDirUri, + packageName: packageName, + packageRoot: tempUri, + targetArchitecture: ArchitectureImpl.arm64, + targetOS: OSImpl.iOS, + targetIOSSdk: IOSSdkImpl.iPhoneOS, + cCompiler: CCompilerConfigImpl( + compiler: fakeClang, + linker: fakeLd, + archiver: fakeAr, + ), + buildMode: BuildModeImpl.release, + assets: assets, + resourceIdentifierUri: resources, + ); + + final config2 = LinkConfigImpl( + outputDirectory: outDir2Uri, + packageName: packageName, + packageRoot: tempUri, + targetArchitecture: ArchitectureImpl.arm64, + targetOS: OSImpl.android, + targetAndroidNdkApi: 30, + buildMode: BuildModeImpl.release, + assets: [], + resourceIdentifierUri: null, + ); + + expect(config1, equals(config1)); + expect(config1 == config2, false); + expect(config1.outputDirectory != config2.outputDirectory, true); + expect(config1.packageRoot, config2.packageRoot); + expect(config1.targetArchitecture == config2.targetArchitecture, true); + expect(config1.targetOS != config2.targetOS, true); + expect(config1.targetIOSSdk, IOSSdkImpl.iPhoneOS); + expect(() => config2.targetIOSSdk, throwsStateError); + expect(config1.cCompiler.compiler != config2.cCompiler.compiler, true); + expect(config1.cCompiler.linker != config2.cCompiler.linker, true); + expect(config1.cCompiler.archiver != config2.cCompiler.archiver, true); + expect(config1.cCompiler.envScript == config2.cCompiler.envScript, true); + expect(config1.cCompiler.envScriptArgs == config2.cCompiler.envScriptArgs, + true); + expect(config1.cCompiler != config2.cCompiler, true); + expect(config1.assets != config2.assets, true); + expect( + config1.treeshakingInformation != config2.treeshakingInformation, true); + }); + + test('LinkConfig fromConfig', () { + final buildConfig2 = LinkConfigImpl( + outputDirectory: outDirUri, + packageName: packageName, + packageRoot: packageRootUri, + targetArchitecture: ArchitectureImpl.arm64, + targetOS: OSImpl.android, + targetAndroidNdkApi: 30, + buildMode: BuildModeImpl.release, + assets: assets, + ); + + final config = { + 'build_mode': 'release', + 'dry_run': false, + 'link_mode_preference': 'prefer-static', + 'out_dir': outDirUri.toFilePath(), + 'package_name': packageName, + 'package_root': packageRootUri.toFilePath(), + 'target_android_ndk_api': 30, + 'target_architecture': 'arm64', + 'target_os': 'android', + 'version': HookOutputImpl.latestVersion.toString(), + 'assets': AssetImpl.listToJson(assets, HookOutputImpl.latestVersion), + }; + + final fromConfig = LinkConfigImpl.fromJson(config); + expect(fromConfig, equals(buildConfig2)); + }); + + test('LinkConfig.dryRun', () { + final buildConfig2 = LinkConfigImpl.dryRun( + outputDirectory: outDirUri, + packageName: packageName, + packageRoot: packageRootUri, + targetOS: OSImpl.android, + assets: [], + ); + + final config = { + 'dry_run': true, + 'link_mode_preference': 'prefer-static', + 'out_dir': outDirUri.toFilePath(), + 'package_name': packageName, + 'package_root': packageRootUri.toFilePath(), + 'target_os': 'android', + 'version': HookOutputImpl.latestVersion.toString(), + 'assets': [], + }; + + final fromConfig = LinkConfigImpl.fromJson(config); + expect(fromConfig, equals(buildConfig2)); + }); + + test('LinkConfig toJson fromConfig', () { + final buildConfig1 = LinkConfigImpl( + outputDirectory: outDirUri, + packageName: packageName, + packageRoot: packageRootUri, + targetArchitecture: ArchitectureImpl.arm64, + targetOS: OSImpl.iOS, + targetIOSSdk: IOSSdkImpl.iPhoneOS, + cCompiler: CCompilerConfigImpl( + compiler: fakeClang, + linker: fakeLd, + ), + buildMode: BuildModeImpl.release, + assets: assets, + ); + + final configFile = buildConfig1.toJson(); + final fromConfig = LinkConfigImpl.fromJson(configFile); + expect(fromConfig, equals(buildConfig1)); + }); + test('LinkConfig fetch treeshaking information', () { + final buildConfig1 = LinkConfigImpl( + outputDirectory: outDirUri, + packageName: packageName, + packageRoot: packageRootUri, + targetArchitecture: ArchitectureImpl.arm64, + targetOS: OSImpl.iOS, + targetIOSSdk: IOSSdkImpl.iPhoneOS, + cCompiler: CCompilerConfigImpl( + compiler: fakeClang, + linker: fakeLd, + ), + buildMode: BuildModeImpl.release, + assets: assets, + resourceIdentifierUri: resources, + ); + expect(buildConfig1.treeshakingInformation, resourceList); + }); + + test('LinkConfig toJson fromJson', () { + final outDir = outDirUri; + final buildConfig1 = LinkConfigImpl( + outputDirectory: outDir, + packageName: packageName, + packageRoot: tempUri, + targetArchitecture: ArchitectureImpl.arm64, + targetOS: OSImpl.iOS, + targetIOSSdk: IOSSdkImpl.iPhoneOS, + cCompiler: CCompilerConfigImpl( + compiler: fakeClang, + linker: fakeLd, + ), + buildMode: BuildModeImpl.release, + assets: assets, + ); + + final jsonObject = buildConfig1.toJson(); + final expectedJson = { + 'assets': AssetImpl.listToJson(assets, LinkConfigImpl.latestVersion), + 'build_mode': 'release', + 'c_compiler': {'cc': fakeClang.toFilePath(), 'ld': fakeLd.toFilePath()}, + 'out_dir': outDir.toFilePath(), + 'package_name': packageName, + 'package_root': tempUri.toFilePath(), + 'supported_asset_types': [NativeCodeAsset.type], + 'target_architecture': 'arm64', + 'target_ios_sdk': 'iphoneos', + 'target_os': 'ios', + 'version': '${LinkConfigImpl.latestVersion}', + }; + expect(jsonObject, equals(expectedJson)); + + final buildConfig2 = LinkConfigImpl.fromJson(jsonObject); + expect(buildConfig2, buildConfig1); + }); + + test('LinkConfig FormatExceptions', () { + expect( + () => LinkConfigImpl.fromJson({}), + throwsA(predicate( + (e) => + e is FormatException && + e.message + .contains('No value was provided for required key: target_os'), + )), + ); + expect( + () => LinkConfigImpl.fromJson({ + 'version': LinkConfigImpl.latestVersion.toString(), + 'package_name': packageName, + 'package_root': packageRootUri.toFilePath(), + 'target_architecture': 'arm64', + 'target_os': 'android', + 'target_android_ndk_api': 30, + 'assets': [], + }), + throwsA(predicate( + (e) => + e is FormatException && + e.message.contains( + 'No value was provided for required key: out_dir', + ), + )), + ); + expect( + () => LinkConfigImpl.fromJson({ + 'version': LinkConfigImpl.latestVersion.toString(), + 'out_dir': outDirUri.toFilePath(), + 'package_name': packageName, + 'package_root': packageRootUri.toFilePath(), + 'target_architecture': 'arm64', + 'target_os': 'android', + 'target_android_ndk_api': 30, + 'build_mode': BuildModeImpl.release.name, + 'assets': 'astring', + }), + throwsA(predicate( + (e) => + e is FormatException && + e.message.contains( + "Unexpected value 'astring' for key '.assets' in config file. " + 'Expected a List?.', + ), + )), + ); + expect( + () => LinkConfigImpl.fromJson({ + 'out_dir': outDirUri.toFilePath(), + 'version': LinkConfigImpl.latestVersion.toString(), + 'package_name': packageName, + 'package_root': packageRootUri.toFilePath(), + 'target_architecture': 'arm64', + 'target_os': 'android', + 'build_mode': BuildModeImpl.release.name, + }), + throwsA(predicate( + (e) => + e is FormatException && + e.message.contains( + 'No value was provided for required key: target_android_ndk_api', + ), + )), + ); + }); + + test('LinkConfig toString', () { + final config = LinkConfigImpl( + outputDirectory: outDirUri, + packageName: packageName, + packageRoot: tempUri, + targetArchitecture: ArchitectureImpl.arm64, + targetOS: OSImpl.iOS, + targetIOSSdk: IOSSdkImpl.iPhoneOS, + cCompiler: CCompilerConfigImpl( + compiler: fakeClang, + linker: fakeLd, + ), + buildMode: BuildModeImpl.release, + assets: assets, + ); + expect(config.toString(), isNotEmpty); + }); + + test('LinkConfig fromArgs', () async { + final buildConfig = LinkConfigImpl( + outputDirectory: outDirUri, + packageName: packageName, + packageRoot: tempUri, + targetArchitecture: ArchitectureImpl.arm64, + targetOS: OSImpl.android, + targetAndroidNdkApi: 30, + buildMode: BuildModeImpl.release, + assets: assets, + resourceIdentifierUri: resources, + ); + final configFileContents = buildConfig.toJsonString(); + final configUri = tempUri.resolve('link_config.json'); + final configFile = File.fromUri(configUri); + await configFile.writeAsString(configFileContents); + final buildConfig2 = + LinkConfigImpl.fromArguments(['--config', configUri.toFilePath()]); + expect(buildConfig2, buildConfig); + }); + + for (final version in ['9001.0.0', '0.0.1']) { + test('LinkConfig version $version', () { + final outDir = outDirUri; + final config = { + 'link_mode_preference': 'prefer-static', + 'out_dir': outDir.toFilePath(), + 'package_root': tempUri.toFilePath(), + 'target_os': 'linux', + 'version': version, + 'package_name': packageName, + 'dry_run': true, + }; + expect( + () => LinkConfigImpl.fromJson(config), + throwsA(predicate( + (e) => + e is FormatException && + e.message.contains(version) && + e.message.contains(LinkConfigImpl.latestVersion.toString()), + )), + ); + }); + } + + test('LinkConfig invalid target os architecture combination', () { + final outDir = outDirUri; + final config = { + 'link_mode_preference': 'prefer-static', + 'out_dir': outDir.toFilePath(), + 'package_name': packageName, + 'package_root': tempUri.toFilePath(), + 'target_os': 'windows', + 'target_architecture': 'arm', + 'build_mode': 'debug', + 'version': LinkConfigImpl.latestVersion.toString(), + }; + expect( + () => LinkConfigImpl.fromJson(config), + throwsA(predicate( + (e) => e is FormatException && e.message.contains('arm'), + )), + ); + }); + + test('LinkConfig dry_run access invalid args', () { + final outDir = outDirUri; + final config = { + 'link_mode_preference': 'prefer-static', + 'out_dir': outDir.toFilePath(), + 'package_name': packageName, + 'package_root': tempUri.toFilePath(), + 'target_os': 'windows', + 'target_architecture': 'arm64', + 'build_mode': 'debug', + 'dry_run': true, + 'version': LinkConfigImpl.latestVersion.toString(), + }; + expect( + () => LinkConfigImpl.fromJson(config), + throwsA(predicate( + (e) => + e is FormatException && e.message.contains('In Flutter projects'), + )), + ); + }); + + test('LinkConfig dry_run access invalid args', () { + final outDir = outDirUri; + final config = { + 'link_mode_preference': 'prefer-static', + 'out_dir': outDir.toFilePath(), + 'package_name': packageName, + 'package_root': tempUri.toFilePath(), + 'target_os': 'android', + 'dry_run': true, + 'version': LinkConfigImpl.latestVersion.toString(), + }; + final buildConfig = LinkConfigImpl.fromJson(config); + expect( + () => buildConfig.targetAndroidNdkApi, + throwsA(predicate( + (e) => e is StateError && e.message.contains('In Flutter projects'), + )), + ); + }); + + test('LinkConfig dry_run target arch', () { + final outDir = outDirUri; + final config = { + 'link_mode_preference': 'prefer-static', + 'out_dir': outDir.toFilePath(), + 'package_name': packageName, + 'package_root': tempUri.toFilePath(), + 'target_os': 'windows', + 'dry_run': true, + 'version': LinkConfigImpl.latestVersion.toString(), + }; + final buildConfig = LinkConfigImpl.fromJson(config); + expect(buildConfig.targetArchitecture, isNull); + }); + + test('LinkConfig dry_run toString', () { + final buildConfig = LinkConfigImpl.dryRun( + packageName: packageName, + outputDirectory: outDirUri, + packageRoot: tempUri, + targetOS: OSImpl.windows, + assets: assets, + ); + expect(buildConfig.toJsonString(), isNotEmpty); + }); + + test('invalid architecture', () { + final config = { + 'build_mode': 'release', + 'dry_run': false, + 'link_mode_preference': 'prefer-static', + 'out_dir': outDirUri.toFilePath(), + 'package_name': packageName, + 'package_root': packageRootUri.toFilePath(), + 'target_android_ndk_api': 30, + 'target_architecture': 'invalid_architecture', + 'target_os': 'android', + 'version': HookOutputImpl.latestVersion.toString(), + }; + expect( + () => LinkConfigImpl.fromJson(config), + throwsFormatException, + ); + }); +} diff --git a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_test.dart b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_test.dart index 3d0e15d5c..b40e73a2a 100644 --- a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_test.dart +++ b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_test.dart @@ -117,7 +117,7 @@ void main() { final buildConfig = dryRun ? BuildConfig.dryRun( - outDir: tempUri, + outputDirectory: tempUri, packageName: name, packageRoot: tempUri, targetOS: OS.current, From 61e70dc85d8072ff2d2e37169ace459cae3e59c1 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Apr 2024 11:02:12 +0200 Subject: [PATCH 166/187] Fix analyze issues --- pkgs/native_assets_cli/lib/src/api/build_config.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index 2f588d016..baef7958e 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -2,12 +2,10 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'dart:convert'; import 'dart:io'; import 'package:cli_config/cli_config.dart'; import 'package:collection/collection.dart'; -import 'package:crypto/crypto.dart'; import 'package:pub_semver/pub_semver.dart'; import '../../native_assets_cli_internal.dart'; From 2b1237372c6debb17fcdba4bf1f7bae28b62125e Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 19 Apr 2024 11:03:37 +0200 Subject: [PATCH 167/187] Fix imports --- pkgs/native_assets_cli/lib/src/api/build_config.dart | 3 ++- pkgs/native_assets_cli/lib/src/api/hook_config.dart | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index baef7958e..a695dc1a0 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -8,7 +8,8 @@ import 'package:cli_config/cli_config.dart'; import 'package:collection/collection.dart'; import 'package:pub_semver/pub_semver.dart'; -import '../../native_assets_cli_internal.dart'; +import '../model/hook.dart'; +import '../model/metadata.dart'; import '../utils/json.dart'; import '../utils/map.dart'; import 'architecture.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/hook_config.dart b/pkgs/native_assets_cli/lib/src/api/hook_config.dart index 8423340c6..3f7a07f00 100644 --- a/pkgs/native_assets_cli/lib/src/api/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/hook_config.dart @@ -9,7 +9,9 @@ import 'package:collection/collection.dart'; import 'package:crypto/crypto.dart'; import 'package:pub_semver/pub_semver.dart'; -import '../../native_assets_cli_internal.dart'; +import '../model/hook.dart'; +import '../model/metadata.dart'; +import '../model/target.dart'; import '../utils/map.dart'; import 'architecture.dart'; import 'asset.dart'; @@ -17,6 +19,7 @@ import 'build_config.dart'; import 'build_mode.dart'; import 'ios_sdk.dart'; import 'link_config.dart'; +import 'link_mode_preference.dart'; import 'os.dart'; part '../model/hook_config.dart'; From 542466a056236e21492138c28b6cfec87363a01f Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 25 Apr 2024 15:54:09 +0200 Subject: [PATCH 168/187] Add some debugging info to exceptions --- .../lib/src/model/data_asset.dart | 6 +++--- .../lib/src/model/hook_output.dart | 13 +++++++------ .../lib/src/model/native_code_asset.dart | 16 ++++++++-------- pkgs/native_assets_cli/lib/src/utils/json.dart | 11 +++++++++++ 4 files changed, 29 insertions(+), 17 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/model/data_asset.dart b/pkgs/native_assets_cli/lib/src/model/data_asset.dart index 02f0d7172..9a05e7c97 100644 --- a/pkgs/native_assets_cli/lib/src/model/data_asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/data_asset.dart @@ -25,9 +25,9 @@ final class DataAssetImpl implements DataAsset, AssetImpl { factory DataAssetImpl.fromJson(Map jsonMap) => DataAssetImpl( - name: as(jsonMap[_nameKey]), - package: as(jsonMap[_packageKey]), - file: Uri(path: as(jsonMap[_fileKey])), + name: get(jsonMap, _nameKey), + package: get(jsonMap, _packageKey), + file: Uri(path: get(jsonMap, _fileKey)), ); @override diff --git a/pkgs/native_assets_cli/lib/src/model/hook_output.dart b/pkgs/native_assets_cli/lib/src/model/hook_output.dart index fab3faa0b..b61fbfb75 100644 --- a/pkgs/native_assets_cli/lib/src/model/hook_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook_output.dart @@ -69,7 +69,7 @@ final class HookOutputImpl implements BuildOutput, LinkOutput { } factory HookOutputImpl.fromJson(Map jsonMap) { - final outputVersion = Version.parse(as(jsonMap['version'])); + final outputVersion = Version.parse(get(jsonMap, 'version')); if (outputVersion.major > latestVersion.major) { throw FormatException( 'The output version $outputVersion is newer than the ' @@ -85,15 +85,16 @@ final class HookOutputImpl implements BuildOutput, LinkOutput { ); } return HookOutputImpl( - timestamp: DateTime.parse(as(jsonMap[_timestampKey])), - assets: AssetImpl.listFromJson(as?>(jsonMap[_assetsKey])), - assetsForLinking: as?>(jsonMap[_assetsForLinkingKey]) + timestamp: DateTime.parse(get(jsonMap, _timestampKey)), + assets: AssetImpl.listFromJson(get?>(jsonMap, _assetsKey)), + assetsForLinking: get?>( + jsonMap, _assetsForLinkingKey) ?.map((packageName, assets) => MapEntry( packageName, AssetImpl.listFromJson(as>(assets)))), dependencies: - Dependencies.fromJson(as?>(jsonMap[_dependenciesKey])), + Dependencies.fromJson(get?>(jsonMap, _dependenciesKey)), metadata: - Metadata.fromJson(as?>(jsonMap[_metadataKey])), + Metadata.fromJson(get?>(jsonMap, _metadataKey)), ); } diff --git a/pkgs/native_assets_cli/lib/src/model/native_code_asset.dart b/pkgs/native_assets_cli/lib/src/model/native_code_asset.dart index a1c6811bc..9863303ba 100644 --- a/pkgs/native_assets_cli/lib/src/model/native_code_asset.dart +++ b/pkgs/native_assets_cli/lib/src/model/native_code_asset.dart @@ -49,8 +49,8 @@ abstract final class LinkModeImpl implements LinkMode { /// v1.1.0 and newer. factory LinkModeImpl.fromJson(Map jsonMap) { - final type = as(jsonMap[_typeKey]); - final uriString = as(jsonMap[_uriKey]); + final type = get(jsonMap, _typeKey); + final uriString = get(jsonMap, _uriKey); final uri = uriString != null ? Uri(path: uriString) : null; return LinkModeImpl(type, uri); } @@ -244,7 +244,7 @@ final class NativeCodeAssetImpl implements NativeCodeAsset, AssetImpl { linkMode = StaticLinkingImpl(); } else { assert(linkModeJson == DynamicLoadingImpl._typeValueV1_0_0); - final pathJson = as>(jsonMap[_pathKey]); + final pathJson = get>(jsonMap, _pathKey); final type = as(pathJson[DynamicLoadingImpl._pathTypeKeyV1_0_0]); final uriString = as(pathJson[DynamicLoadingImpl._uriKey]); @@ -256,7 +256,7 @@ final class NativeCodeAssetImpl implements NativeCodeAsset, AssetImpl { linkMode = LinkModeImpl.fromJson(as>(linkModeJson)); } - final fileString = as(jsonMap[_fileKey]); + final fileString = get(jsonMap, _fileKey); final Uri? file; if (fileString != null) { file = Uri(path: fileString); @@ -270,7 +270,7 @@ final class NativeCodeAssetImpl implements NativeCodeAsset, AssetImpl { } else { file = null; } - final targetString = as(jsonMap[_targetKey]); + final targetString = get(jsonMap, _targetKey); final ArchitectureImpl? architecture; final OSImpl os; if (targetString != null) { @@ -279,8 +279,8 @@ final class NativeCodeAssetImpl implements NativeCodeAsset, AssetImpl { os = target.os; architecture = target.architecture; } else { - os = OSImpl.fromString(as(jsonMap[_osKey])); - final architectureString = as(jsonMap[_architectureKey]); + os = OSImpl.fromString(get(jsonMap, _osKey)); + final architectureString = get(jsonMap, _architectureKey); if (architectureString != null) { architecture = ArchitectureImpl.fromString(architectureString); } else { @@ -289,7 +289,7 @@ final class NativeCodeAssetImpl implements NativeCodeAsset, AssetImpl { } return NativeCodeAssetImpl( - id: as(jsonMap[_idKey]), + id: get(jsonMap, _idKey), os: os, architecture: architecture, linkMode: linkMode, diff --git a/pkgs/native_assets_cli/lib/src/utils/json.dart b/pkgs/native_assets_cli/lib/src/utils/json.dart index 57a1520b7..096c7edf9 100644 --- a/pkgs/native_assets_cli/lib/src/utils/json.dart +++ b/pkgs/native_assets_cli/lib/src/utils/json.dart @@ -12,6 +12,17 @@ T as(Object? object) { ); } +T get(Map map, String key) { + final object = map[key]; + if (object is T) { + return object; + } + throw FormatException( + "Unexpected value '$object' of type ${object.runtimeType} in JSON for key " + '$key. Expected a $T.', + ); +} + extension MapCast on Map { Map formatCast() => { for (final e in entries) as(e.key): as(e.value), From 334a6cec43b8acd9a7f45bd2cccb01fd276b03fb Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 2 May 2024 16:12:42 +0200 Subject: [PATCH 169/187] Add linkModePreference to link config as well --- .../test_data/simple_link/hook/link.dart | 2 +- .../lib/src/api/build_config.dart | 9 +++++---- .../lib/src/api/hook_config.dart | 3 +++ .../lib/src/api/link_config.dart | 5 +++++ .../lib/src/model/build_config.dart | 19 +++---------------- .../lib/src/model/hook_config.dart | 13 +++++++++++++ .../lib/src/model/link_config.dart | 3 +++ 7 files changed, 33 insertions(+), 21 deletions(-) diff --git a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart index 4353c0a43..1c019fcee 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/simple_link/hook/link.dart @@ -11,4 +11,4 @@ void main(List args) async { ); } -List shake(Iterable assets) => assets.skip(2).toList(); +Iterable shake(Iterable assets) => assets.skip(2); diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index a695dc1a0..48f4e0284 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -32,9 +32,6 @@ part 'c_compiler_config.dart'; /// run with specific commandline arguments, which [BuildConfig] can parse and /// provide more convenient access to. abstract final class BuildConfig implements HookConfig { - /// The preferred [LinkMode] method for [NativeCodeAsset]s. - LinkModePreference get linkModePreference; - /// Metadata from a direct dependency. /// /// The [packageName] of is the package name of the direct dependency. @@ -74,7 +71,11 @@ abstract final class BuildConfig implements HookConfig { Map? environment, Uri? workingDirectory, }) => - BuildConfigImpl.fromArguments(arguments); + BuildConfigImpl.fromArguments( + arguments, + environment: environment, + workingDirectory: workingDirectory, + ); /// Constructs a config for a non-dry run by providing values for each field. /// diff --git a/pkgs/native_assets_cli/lib/src/api/hook_config.dart b/pkgs/native_assets_cli/lib/src/api/hook_config.dart index 3f7a07f00..4935b19e0 100644 --- a/pkgs/native_assets_cli/lib/src/api/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/hook_config.dart @@ -98,4 +98,7 @@ abstract class HookConfig { /// * [NativeCodeAsset.type] /// * [DataAsset.type] Iterable get supportedAssetTypes; + + /// The preferred [LinkMode] method for [NativeCodeAsset]s. + LinkModePreference get linkModePreference; } diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 313aaeb88..909b96e0c 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -18,6 +18,7 @@ import 'build_config.dart'; import 'build_mode.dart'; import 'hook_config.dart'; import 'ios_sdk.dart'; +import 'link_mode_preference.dart'; import 'os.dart'; import 'resource.dart'; @@ -57,6 +58,7 @@ abstract class LinkConfig implements HookConfig { int? targetAndroidNdkApi, required Iterable assets, Uri? resourceIdentifierUri, + required LinkModePreference linkModePreference, bool? dryRun, Version? version, }) => @@ -73,6 +75,7 @@ abstract class LinkConfig implements HookConfig { targetIOSSdk: targetIOSSdk as IOSSdkImpl?, targetOS: targetOS as OSImpl, dryRun: dryRun, + linkModePreference: linkModePreference as LinkModePreferenceImpl, supportedAssetTypes: supportedAssetTypes, version: version, ); @@ -85,6 +88,7 @@ abstract class LinkConfig implements HookConfig { List? supportedAssetTypes, required Iterable assets, Uri? resourceIdentifierUri, + required LinkModePreference linkModePreference, Version? version, }) => LinkConfigImpl.dryRun( @@ -95,6 +99,7 @@ abstract class LinkConfig implements HookConfig { packageRoot: packageRoot, targetOS: targetOS as OSImpl, supportedAssetTypes: supportedAssetTypes, + linkModePreference: linkModePreference as LinkModePreferenceImpl, version: version, ); diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index bd5521918..fbece8806 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -23,9 +23,6 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { String get outputName => version > Version(1, 1, 0) ? 'build_output.json' : 'build_output.yaml'; - @override - final LinkModePreferenceImpl linkModePreference; - @override Object? metadatum(String packageName, String key) { HookConfigImpl.ensureNotDryRun(dryRun); @@ -51,7 +48,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { required super.targetArchitecture, super.targetIOSSdk, required super.targetOS, - required this.linkModePreference, + required super.linkModePreference, Map? dependencyMetadata, super.dryRun, }) : _dependencyMetadata = dependencyMetadata, @@ -67,7 +64,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { required super.packageName, required super.packageRoot, required super.targetOS, - required this.linkModePreference, + required super.linkModePreference, Iterable? supportedAssetTypes, }) : _dependencyMetadata = null, super.dryRun( @@ -119,7 +116,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { targetOS: targetOS, targetArchitecture: HookConfigImpl.parseTargetArchitecture(config, dryRun, targetOS), - linkModePreference: parseLinkModePreference(config), + linkModePreference: HookConfigImpl.parseLinkModePreference(config), dependencyMetadata: parseDependencyMetadata(config), version: HookConfigImpl.parseVersion(config, latestVersion), cCompiler: HookConfigImpl.parseCCompiler(config, dryRun), @@ -131,16 +128,6 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { ); } - static LinkModePreferenceImpl parseLinkModePreference(Config config) => - LinkModePreferenceImpl.fromString( - config.string( - LinkModePreferenceImpl.configKey, - validValues: LinkModePreferenceImpl.values.map( - (e) => e.toString(), - ), - ), - ); - static Map? parseDependencyMetadata(Config config) => _readDependencyMetadataFromConfig(config); diff --git a/pkgs/native_assets_cli/lib/src/model/hook_config.dart b/pkgs/native_assets_cli/lib/src/model/hook_config.dart index 5f1c81e54..8e4806d7f 100644 --- a/pkgs/native_assets_cli/lib/src/model/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook_config.dart @@ -44,6 +44,9 @@ abstract class HookConfigImpl implements HookConfig { final int? _targetAndroidNdkApi; + @override + final LinkModePreferenceImpl linkModePreference; + @override int? get targetAndroidNdkApi { ensureNotDryRun(dryRun); @@ -83,6 +86,7 @@ abstract class HookConfigImpl implements HookConfig { required int? targetAndroidNdkApi, required this.targetArchitecture, required IOSSdkImpl? targetIOSSdk, + required this.linkModePreference, required this.targetOS, bool? dryRun, }) : _targetAndroidNdkApi = targetAndroidNdkApi, @@ -98,6 +102,7 @@ abstract class HookConfigImpl implements HookConfig { required this.packageRoot, required this.version, required this.supportedAssetTypes, + required this.linkModePreference, required this.targetOS, }) : _cCompiler = CCompilerConfigImpl(), dryRun = true, @@ -199,6 +204,14 @@ abstract class HookConfigImpl implements HookConfig { } } + static LinkModePreferenceImpl parseLinkModePreference(Config config) => + LinkModePreferenceImpl.fromString( + config.string( + LinkModePreferenceImpl.configKey, + validValues: LinkModePreferenceImpl.values.map((e) => e.toString()), + ), + ); + static OSImpl parseTargetOS(Config config) => OSImpl.fromString( config.string( OSImpl.configKey, diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 40cb7fad8..095581d7b 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -59,6 +59,7 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { super.targetArchitecture, super.targetIOSSdk, required super.targetOS, + required super.linkModePreference, super.dryRun, }) : _resourceIdentifierUri = resourceIdentifierUri, super( @@ -75,6 +76,7 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { required super.packageRoot, Version? version, Iterable? supportedAssetTypes, + required super.linkModePreference, required super.targetOS, }) : _resourceIdentifierUri = resourceIdentifierUri, _treeshakingInformation = resourceIdentifierUri != null @@ -125,6 +127,7 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { targetOS: targetOS, targetArchitecture: HookConfigImpl.parseTargetArchitecture(config, dryRun, targetOS), + linkModePreference: HookConfigImpl.parseLinkModePreference(config), version: HookConfigImpl.parseVersion(config, latestVersion), cCompiler: HookConfigImpl.parseCCompiler(config, dryRun), supportedAssetTypes: HookConfigImpl.parseSupportedAssetTypes(config), From e21c5f003fda4308a8e5e4b8df92b9feb6cc61b0 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 2 May 2024 16:21:31 +0200 Subject: [PATCH 170/187] More changes as per review --- .../lib/src/api/build_config.dart | 2 +- .../lib/src/api/link_config.dart | 5 ++-- .../lib/src/model/build_config.dart | 16 ++-------- .../lib/src/model/hook_config.dart | 17 +++++++---- .../lib/src/model/hook_output.dart | 4 +-- .../lib/src/model/link_config.dart | 16 ++-------- .../test/api/link_config_test.dart | 5 ++++ .../test/example/local_asset_test.dart | 2 +- .../test/example/native_add_library_test.dart | 2 +- .../test/model/build_config_test.dart | 18 +++++------ .../test/model/checksum_test.dart | 8 ++--- .../test/model/link_config_test.dart | 30 ++++++++++++------- 12 files changed, 63 insertions(+), 62 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/api/build_config.dart b/pkgs/native_assets_cli/lib/src/api/build_config.dart index 48f4e0284..3d1fa965b 100644 --- a/pkgs/native_assets_cli/lib/src/api/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/build_config.dart @@ -50,7 +50,7 @@ abstract final class BuildConfig implements HookConfig { /// We're trying to avoid breaking changes. However, in the case that we have /// to, the major version mismatch between the Dart or Flutter SDK and build /// hook (`hook/build.dart`) will lead to a nice error message. - static Version get latestVersion => BuildConfigImpl.latestVersion; + static Version get latestVersion => HookConfigImpl.latestVersion; /// Constructs a config by parsing CLI arguments and loading the config file. /// diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 909b96e0c..4b071e51d 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -38,7 +38,8 @@ abstract class LinkConfig implements HookConfig { /// called in the tree-shaken Dart code. This information can be used to /// dispose unused [assets]. /// - /// This is `null` in JIT mode, where no resources are collected. + /// This is `null` in JIT mode, where no resources are collected, or in a dry + /// run. Iterable? get treeshakingInformation; /// Generate the [LinkConfig] from the input arguments to the linking script. @@ -111,5 +112,5 @@ abstract class LinkConfig implements HookConfig { /// We're trying to avoid breaking changes. However, in the case that we have /// to, the major version mismatch between the Dart or Flutter SDK and build /// hook (`hook/build.dart`) will lead to a nice error message. - static Version get latestVersion => LinkConfigImpl.latestVersion; + static Version get latestVersion => HookConfigImpl.latestVersion; } diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index fbece8806..a0390ec71 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -54,7 +54,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { }) : _dependencyMetadata = dependencyMetadata, super( hook: Hook.build, - version: version ?? latestVersion, + version: version ?? HookConfigImpl.latestVersion, supportedAssetTypes: _supportedAssetTypesBackwardsCompatibility(supportedAssetTypes), ); @@ -69,21 +69,11 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { }) : _dependencyMetadata = null, super.dryRun( hook: Hook.build, - version: latestVersion, + version: HookConfigImpl.latestVersion, supportedAssetTypes: _supportedAssetTypesBackwardsCompatibility(supportedAssetTypes), ); - /// The version of [BuildConfigImpl]. - /// - /// This class is used in the protocol between the Dart and Flutter SDKs - /// and packages through build hook invocations. - /// - /// If we ever were to make breaking changes, it would be useful to give - /// proper error messages rather than just fail to parse the JSON - /// representation in the protocol. - static Version latestVersion = Version(1, 3, 0); - factory BuildConfigImpl._fromConfig(Config config) => _readFieldsFromConfig(config); @@ -118,7 +108,7 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { HookConfigImpl.parseTargetArchitecture(config, dryRun, targetOS), linkModePreference: HookConfigImpl.parseLinkModePreference(config), dependencyMetadata: parseDependencyMetadata(config), - version: HookConfigImpl.parseVersion(config, latestVersion), + version: HookConfigImpl.parseVersion(config), cCompiler: HookConfigImpl.parseCCompiler(config, dryRun), supportedAssetTypes: HookConfigImpl.parseSupportedAssetTypes(config), targetAndroidNdkApi: diff --git a/pkgs/native_assets_cli/lib/src/model/hook_config.dart b/pkgs/native_assets_cli/lib/src/model/hook_config.dart index 8e4806d7f..3206e824b 100644 --- a/pkgs/native_assets_cli/lib/src/model/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook_config.dart @@ -159,7 +159,7 @@ abstract class HookConfigImpl implements HookConfig { }.sortOnKey(); } - static Version parseVersion(Config config, Version latestVersion) { + static Version parseVersion(Config config) { final version = Version.parse(config.string('version')); if (version.major > latestVersion.major) { throw FormatException( @@ -434,7 +434,7 @@ can _only_ depend on OS.'''); required Hook hook, }) { final input = [ - version ?? latestVersion(hook), + version ?? latestVersion, packageName, targetArchitecture.toString(), targetOS.toString(), @@ -463,8 +463,13 @@ can _only_ depend on OS.'''); return sha256String.substring(0, nameLength); } - static Version latestVersion(Hook hook) => switch (hook) { - Hook.link => LinkConfigImpl.latestVersion, - Hook.build => BuildConfigImpl.latestVersion, - }; + /// The version of [HookConfigImpl]. + /// + /// This class is used in the protocol between the Dart and Flutter SDKs + /// and packages through build hook invocations. + /// + /// If we ever were to make breaking changes, it would be useful to give + /// proper error messages rather than just fail to parse the JSON + /// representation in the protocol. + static Version latestVersion = Version(1, 3, 0); } diff --git a/pkgs/native_assets_cli/lib/src/model/hook_output.dart b/pkgs/native_assets_cli/lib/src/model/hook_output.dart index b61fbfb75..c8ddfe3c2 100644 --- a/pkgs/native_assets_cli/lib/src/model/hook_output.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook_output.dart @@ -158,7 +158,7 @@ final class HookOutputImpl implements BuildOutput, LinkOutput { /// version of the Dart or Flutter SDK. When there is a need to split the /// versions of BuildConfig and BuildOutput, the BuildConfig should start /// passing the highest supported version of BuildOutput. - static Version latestVersion = BuildConfigImpl.latestVersion; + static Version latestVersion = HookConfigImpl.latestVersion; /// Writes the JSON file from [file]. static HookOutputImpl? readFromFile({required Uri file}) { @@ -179,7 +179,7 @@ final class HookOutputImpl implements BuildOutput, LinkOutput { } @override - String toString() => toJsonString(BuildConfigImpl.latestVersion); + String toString() => toJsonString(HookConfigImpl.latestVersion); @override bool operator ==(Object other) { diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 095581d7b..00b021e43 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -15,16 +15,6 @@ List? fromIdentifiers(ResourceIdentifiers resourceIdentifiers) => /// the build step, and the [treeshakingInformation] generated during the kernel /// compilation. class LinkConfigImpl extends HookConfigImpl implements LinkConfig { - /// The version of [BuildConfigImpl]. - /// - /// This class is used in the protocol between the Dart and Flutter SDKs - /// and packages through build hook invocations. - /// - /// If we ever were to make breaking changes, it would be useful to give - /// proper error messages rather than just fail to parse the JSON - /// representation in the protocol. - static Version latestVersion = Version(1, 0, 0); - static const resourceIdentifierKey = 'resource_identifiers'; static const assetsKey = 'assets'; @@ -64,7 +54,7 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { }) : _resourceIdentifierUri = resourceIdentifierUri, super( hook: Hook.link, - version: version ?? latestVersion, + version: version ?? HookConfigImpl.latestVersion, supportedAssetTypes: supportedAssetTypes ?? [NativeCodeAsset.type], ); @@ -85,7 +75,7 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { : null, super.dryRun( hook: Hook.link, - version: version ?? latestVersion, + version: version ?? HookConfigImpl.latestVersion, supportedAssetTypes: supportedAssetTypes ?? [NativeCodeAsset.type], ); @@ -128,7 +118,7 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { targetArchitecture: HookConfigImpl.parseTargetArchitecture(config, dryRun, targetOS), linkModePreference: HookConfigImpl.parseLinkModePreference(config), - version: HookConfigImpl.parseVersion(config, latestVersion), + version: HookConfigImpl.parseVersion(config), cCompiler: HookConfigImpl.parseCCompiler(config, dryRun), supportedAssetTypes: HookConfigImpl.parseSupportedAssetTypes(config), targetAndroidNdkApi: diff --git a/pkgs/native_assets_cli/test/api/link_config_test.dart b/pkgs/native_assets_cli/test/api/link_config_test.dart index a6bf8038c..831278f75 100644 --- a/pkgs/native_assets_cli/test/api/link_config_test.dart +++ b/pkgs/native_assets_cli/test/api/link_config_test.dart @@ -61,6 +61,7 @@ void main() async { buildMode: BuildMode.release, supportedAssetTypes: [NativeCodeAsset.type], assets: [], + linkModePreference: LinkModePreference.preferStatic, ); final config2 = LinkConfig.build( @@ -73,6 +74,7 @@ void main() async { buildMode: BuildMode.release, supportedAssetTypes: [NativeCodeAsset.type], assets: [], + linkModePreference: LinkModePreference.preferStatic, ); expect(config1, equals(config1)); @@ -103,6 +105,7 @@ void main() async { targetAndroidNdkApi: 30, buildMode: BuildMode.release, assets: [], + linkModePreference: LinkModePreference.preferStatic, ); final config = { @@ -131,6 +134,7 @@ void main() async { targetOS: OS.android, supportedAssetTypes: [NativeCodeAsset.type], assets: [], + linkModePreference: LinkModePreference.preferStatic, ); final config = { @@ -158,6 +162,7 @@ void main() async { targetAndroidNdkApi: 30, buildMode: BuildMode.release, assets: [], + linkModePreference: LinkModePreference.preferStatic, ); final configFileContents = (linkConfig as LinkConfigImpl).toJsonString(); final configUri = tempUri.resolve('config.json'); diff --git a/pkgs/native_assets_cli/test/example/local_asset_test.dart b/pkgs/native_assets_cli/test/example/local_asset_test.dart index ce484b754..8f07c0387 100644 --- a/pkgs/native_assets_cli/test/example/local_asset_test.dart +++ b/pkgs/native_assets_cli/test/example/local_asset_test.dart @@ -43,7 +43,7 @@ void main() async { '-Dpackage_name=$name', '-Dpackage_root=${testPackageUri.toFilePath()}', '-Dtarget_os=${OSImpl.current}', - '-Dversion=${BuildConfigImpl.latestVersion}', + '-Dversion=${HookConfigImpl.latestVersion}', '-Dlink_mode_preference=dynamic', '-Ddry_run=$dryRun', if (!dryRun) ...[ diff --git a/pkgs/native_assets_cli/test/example/native_add_library_test.dart b/pkgs/native_assets_cli/test/example/native_add_library_test.dart index 6f3c17a67..263872d5f 100644 --- a/pkgs/native_assets_cli/test/example/native_add_library_test.dart +++ b/pkgs/native_assets_cli/test/example/native_add_library_test.dart @@ -43,7 +43,7 @@ void main() async { '-Dpackage_name=$name', '-Dpackage_root=${testPackageUri.toFilePath()}', '-Dtarget_os=${OSImpl.current}', - '-Dversion=${BuildConfigImpl.latestVersion}', + '-Dversion=${HookConfigImpl.latestVersion}', '-Dlink_mode_preference=dynamic', '-Ddry_run=$dryRun', if (!dryRun) ...[ diff --git a/pkgs/native_assets_cli/test/model/build_config_test.dart b/pkgs/native_assets_cli/test/model/build_config_test.dart index 10f7f0cb5..eb8b6c3a3 100644 --- a/pkgs/native_assets_cli/test/model/build_config_test.dart +++ b/pkgs/native_assets_cli/test/model/build_config_test.dart @@ -256,7 +256,7 @@ void main() async { 'target_architecture': 'arm64', 'target_ios_sdk': 'iphoneos', 'target_os': 'ios', - 'version': '${BuildConfigImpl.latestVersion}' + 'version': '${HookConfigImpl.latestVersion}' }; expect( jsonObject, @@ -332,7 +332,7 @@ version: 1.0.0'''; ); expect( () => BuildConfigImpl.fromJson({ - 'version': BuildConfigImpl.latestVersion.toString(), + 'version': HookConfigImpl.latestVersion.toString(), 'package_name': packageName, 'package_root': packageRootUri.toFilePath(), 'target_architecture': 'arm64', @@ -350,7 +350,7 @@ version: 1.0.0'''; ); expect( () => BuildConfigImpl.fromJson({ - 'version': BuildConfigImpl.latestVersion.toString(), + 'version': HookConfigImpl.latestVersion.toString(), 'out_dir': outDirUri.toFilePath(), 'package_name': packageName, 'package_root': packageRootUri.toFilePath(), @@ -376,7 +376,7 @@ version: 1.0.0'''; expect( () => BuildConfigImpl.fromJson({ 'out_dir': outDirUri.toFilePath(), - 'version': BuildConfigImpl.latestVersion.toString(), + 'version': HookConfigImpl.latestVersion.toString(), 'package_name': packageName, 'package_root': packageRootUri.toFilePath(), 'target_architecture': 'arm64', @@ -471,7 +471,7 @@ version: 1.0.0'''; (e) => e is FormatException && e.message.contains(version) && - e.message.contains(BuildConfigImpl.latestVersion.toString()), + e.message.contains(HookConfigImpl.latestVersion.toString()), )), ); }); @@ -487,7 +487,7 @@ version: 1.0.0'''; 'target_os': 'windows', 'target_architecture': 'arm', 'build_mode': 'debug', - 'version': BuildConfigImpl.latestVersion.toString(), + 'version': HookConfigImpl.latestVersion.toString(), }; expect( () => BuildConfigImpl.fromJson(config), @@ -508,7 +508,7 @@ version: 1.0.0'''; 'target_architecture': 'arm64', 'build_mode': 'debug', 'dry_run': true, - 'version': BuildConfigImpl.latestVersion.toString(), + 'version': HookConfigImpl.latestVersion.toString(), }; expect( () => BuildConfigImpl.fromJson(config), @@ -528,7 +528,7 @@ version: 1.0.0'''; 'package_root': tempUri.toFilePath(), 'target_os': 'android', 'dry_run': true, - 'version': BuildConfigImpl.latestVersion.toString(), + 'version': HookConfigImpl.latestVersion.toString(), }; final buildConfig = BuildConfigImpl.fromJson(config); expect( @@ -548,7 +548,7 @@ version: 1.0.0'''; 'package_root': tempUri.toFilePath(), 'target_os': 'windows', 'dry_run': true, - 'version': BuildConfigImpl.latestVersion.toString(), + 'version': HookConfigImpl.latestVersion.toString(), }; final buildConfig = BuildConfigImpl.fromJson(config); expect(buildConfig.targetArchitecture, isNull); diff --git a/pkgs/native_assets_cli/test/model/checksum_test.dart b/pkgs/native_assets_cli/test/model/checksum_test.dart index 6b9ba5be7..0aa92f235 100644 --- a/pkgs/native_assets_cli/test/model/checksum_test.dart +++ b/pkgs/native_assets_cli/test/model/checksum_test.dart @@ -23,7 +23,7 @@ void main() { linkModePreference: LinkModePreferenceImpl.dynamic, supportedAssetTypes: [NativeCodeAsset.type], hook: Hook.build, - version: BuildConfigImpl.latestVersion, + version: HookConfigImpl.latestVersion, ); // Using the checksum for a build folder should be stable. @@ -41,7 +41,7 @@ void main() { 'foo': const Metadata({'key': 'value'}) }, hook: Hook.build, - version: BuildConfigImpl.latestVersion, + version: HookConfigImpl.latestVersion, ); printOnFailure([name1, name2].toString()); expect(name1 != name2, true); @@ -58,7 +58,7 @@ void main() { compiler: fakeClangUri, ), hook: Hook.build, - version: BuildConfigImpl.latestVersion, + version: HookConfigImpl.latestVersion, ); printOnFailure([name1, name3].toString()); expect(name1 != name3, true); @@ -75,7 +75,7 @@ void main() { compiler: fakeClangUri, ), hook: Hook.link, - version: BuildConfigImpl.latestVersion, + version: HookConfigImpl.latestVersion, ); printOnFailure([name1, name4].toString()); expect(name1 != name4, true); diff --git a/pkgs/native_assets_cli/test/model/link_config_test.dart b/pkgs/native_assets_cli/test/model/link_config_test.dart index 8dfce18d9..e94fe93c7 100644 --- a/pkgs/native_assets_cli/test/model/link_config_test.dart +++ b/pkgs/native_assets_cli/test/model/link_config_test.dart @@ -83,6 +83,7 @@ void main() async { buildMode: BuildModeImpl.release, assets: assets, resourceIdentifierUri: resources, + linkModePreference: LinkModePreferenceImpl.preferStatic, ); final config2 = LinkConfigImpl( @@ -95,6 +96,7 @@ void main() async { buildMode: BuildModeImpl.release, assets: [], resourceIdentifierUri: null, + linkModePreference: LinkModePreferenceImpl.preferStatic, ); expect(config1, equals(config1)); @@ -127,6 +129,7 @@ void main() async { targetAndroidNdkApi: 30, buildMode: BuildModeImpl.release, assets: assets, + linkModePreference: LinkModePreferenceImpl.preferStatic, ); final config = { @@ -154,6 +157,7 @@ void main() async { packageRoot: packageRootUri, targetOS: OSImpl.android, assets: [], + linkModePreference: LinkModePreferenceImpl.preferStatic, ); final config = { @@ -185,6 +189,7 @@ void main() async { ), buildMode: BuildModeImpl.release, assets: assets, + linkModePreference: LinkModePreferenceImpl.preferStatic, ); final configFile = buildConfig1.toJson(); @@ -206,6 +211,7 @@ void main() async { buildMode: BuildModeImpl.release, assets: assets, resourceIdentifierUri: resources, + linkModePreference: LinkModePreferenceImpl.preferStatic, ); expect(buildConfig1.treeshakingInformation, resourceList); }); @@ -225,11 +231,12 @@ void main() async { ), buildMode: BuildModeImpl.release, assets: assets, + linkModePreference: LinkModePreferenceImpl.preferStatic, ); final jsonObject = buildConfig1.toJson(); final expectedJson = { - 'assets': AssetImpl.listToJson(assets, LinkConfigImpl.latestVersion), + 'assets': AssetImpl.listToJson(assets, HookConfigImpl.latestVersion), 'build_mode': 'release', 'c_compiler': {'cc': fakeClang.toFilePath(), 'ld': fakeLd.toFilePath()}, 'out_dir': outDir.toFilePath(), @@ -239,7 +246,7 @@ void main() async { 'target_architecture': 'arm64', 'target_ios_sdk': 'iphoneos', 'target_os': 'ios', - 'version': '${LinkConfigImpl.latestVersion}', + 'version': '${HookConfigImpl.latestVersion}', }; expect(jsonObject, equals(expectedJson)); @@ -259,7 +266,7 @@ void main() async { ); expect( () => LinkConfigImpl.fromJson({ - 'version': LinkConfigImpl.latestVersion.toString(), + 'version': HookConfigImpl.latestVersion.toString(), 'package_name': packageName, 'package_root': packageRootUri.toFilePath(), 'target_architecture': 'arm64', @@ -277,7 +284,7 @@ void main() async { ); expect( () => LinkConfigImpl.fromJson({ - 'version': LinkConfigImpl.latestVersion.toString(), + 'version': HookConfigImpl.latestVersion.toString(), 'out_dir': outDirUri.toFilePath(), 'package_name': packageName, 'package_root': packageRootUri.toFilePath(), @@ -299,7 +306,7 @@ void main() async { expect( () => LinkConfigImpl.fromJson({ 'out_dir': outDirUri.toFilePath(), - 'version': LinkConfigImpl.latestVersion.toString(), + 'version': HookConfigImpl.latestVersion.toString(), 'package_name': packageName, 'package_root': packageRootUri.toFilePath(), 'target_architecture': 'arm64', @@ -330,6 +337,7 @@ void main() async { ), buildMode: BuildModeImpl.release, assets: assets, + linkModePreference: LinkModePreferenceImpl.preferStatic, ); expect(config.toString(), isNotEmpty); }); @@ -345,6 +353,7 @@ void main() async { buildMode: BuildModeImpl.release, assets: assets, resourceIdentifierUri: resources, + linkModePreference: LinkModePreferenceImpl.preferStatic, ); final configFileContents = buildConfig.toJsonString(); final configUri = tempUri.resolve('link_config.json'); @@ -373,7 +382,7 @@ void main() async { (e) => e is FormatException && e.message.contains(version) && - e.message.contains(LinkConfigImpl.latestVersion.toString()), + e.message.contains(HookConfigImpl.latestVersion.toString()), )), ); }); @@ -389,7 +398,7 @@ void main() async { 'target_os': 'windows', 'target_architecture': 'arm', 'build_mode': 'debug', - 'version': LinkConfigImpl.latestVersion.toString(), + 'version': HookConfigImpl.latestVersion.toString(), }; expect( () => LinkConfigImpl.fromJson(config), @@ -410,7 +419,7 @@ void main() async { 'target_architecture': 'arm64', 'build_mode': 'debug', 'dry_run': true, - 'version': LinkConfigImpl.latestVersion.toString(), + 'version': HookConfigImpl.latestVersion.toString(), }; expect( () => LinkConfigImpl.fromJson(config), @@ -430,7 +439,7 @@ void main() async { 'package_root': tempUri.toFilePath(), 'target_os': 'android', 'dry_run': true, - 'version': LinkConfigImpl.latestVersion.toString(), + 'version': HookConfigImpl.latestVersion.toString(), }; final buildConfig = LinkConfigImpl.fromJson(config); expect( @@ -450,7 +459,7 @@ void main() async { 'package_root': tempUri.toFilePath(), 'target_os': 'windows', 'dry_run': true, - 'version': LinkConfigImpl.latestVersion.toString(), + 'version': HookConfigImpl.latestVersion.toString(), }; final buildConfig = LinkConfigImpl.fromJson(config); expect(buildConfig.targetArchitecture, isNull); @@ -463,6 +472,7 @@ void main() async { packageRoot: tempUri, targetOS: OSImpl.windows, assets: assets, + linkModePreference: LinkModePreferenceImpl.preferStatic, ); expect(buildConfig.toJsonString(), isNotEmpty); }); From 9b4855ffe7d035726cee648139f7fcf886b1e3bf Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 2 May 2024 16:24:54 +0200 Subject: [PATCH 171/187] Add version to linkoutput --- pkgs/native_assets_cli/lib/src/api/link.dart | 4 ++-- pkgs/native_assets_cli/lib/src/api/link_output.dart | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/api/link.dart b/pkgs/native_assets_cli/lib/src/api/link.dart index 91416d7db..816655b60 100644 --- a/pkgs/native_assets_cli/lib/src/api/link.dart +++ b/pkgs/native_assets_cli/lib/src/api/link.dart @@ -36,7 +36,7 @@ import 'link_config.dart'; /// ``` Future link( List arguments, - Future Function(LinkConfig config, LinkOutput output) builder, + Future Function(LinkConfig config, LinkOutput output) linker, ) async { final config = LinkConfig.fromArguments(arguments) as LinkConfigImpl; @@ -47,6 +47,6 @@ Future link( final linkOutput = HookOutputImpl( dependencies: Dependencies(builtAssetsFiles), ); - await builder(config, linkOutput); + await linker(config, linkOutput); await linkOutput.writeToFile(config: config); } diff --git a/pkgs/native_assets_cli/lib/src/api/link_output.dart b/pkgs/native_assets_cli/lib/src/api/link_output.dart index ec2c29dbc..6e7bd996d 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_output.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_output.dart @@ -52,4 +52,10 @@ abstract final class LinkOutput { dependencies: dependencies, timestamp: timestamp, ); + + /// The version of [LinkOutput]. + /// + /// The link output is used in the protocol between the Dart and Flutter SDKs + /// and packages through build hook invocations. + static Version get latestVersion => HookOutputImpl.latestVersion; } From ed4628b9b7a0e67515a756ff4be32ccd1e28934d Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 2 May 2024 16:31:48 +0200 Subject: [PATCH 172/187] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 95d226d290d4d5c583c4e45b04048442f244c656 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu May 2 08:38:22 2024 +0000 Bump actions/checkout from 4.1.2 to 4.1.4 (#1113) Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.2 to 4.1.4.
Release notes

Sourced from actions/checkout's releases.

v4.1.4

What's Changed

Full Changelog: https://github.com/actions/checkout/compare/v4.1.3...v4.1.4

v4.1.3

What's Changed

Full Changelog: https://github.com/actions/checkout/compare/v4.1.2...v4.1.3

Changelog

Sourced from actions/checkout's changelog.

Changelog

v4.1.4

v4.1.3

v4.1.2

v4.1.1

v4.1.0

v4.0.0

v3.6.0

v3.5.3

v3.5.2

v3.5.1

v3.5.0

v3.4.0

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=4.1.2&new-version=4.1.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
commit 326f9b4b3f89b97d40379fbadcb49659df5544c7 Author: Hossein Yousefi Date: Thu May 2 10:26:20 2024 +0200 [jnigen] [jni] 0.9.0 (#1110) * Refactor JArray * Merge internal.c to dartjni.c commit 3519c6fcefb229c291203bb35cc70e768d429732 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu May 2 08:18:16 2024 +0000 Bump dart-lang/setup-dart from 1.6.2 to 1.6.4 (#1112) Bumps [dart-lang/setup-dart](https://github.com/dart-lang/setup-dart) from 1.6.2 to 1.6.4.
Release notes

Sourced from dart-lang/setup-dart's releases.

v1.6.4

  • Rebuild JS code to include changes from v1.6.3

v1.6.3

Changelog

Sourced from dart-lang/setup-dart's changelog.

v1.6.4

  • Rebuild JS code.

v1.6.3

v1.6.2

v1.6.1

  • Updated the google storage url for main channel releases.

v1.6.0

  • Enable provisioning of the latest Dart SDK patch release by specifying just the major and minor version (e.g. 3.2).

v1.5.1

  • No longer test the setup-dart action on pre-2.12 SDKs.
  • Upgrade JS interop code to use extension types (the new name for inline classes).
  • The upcoming rename of the be channel to main is now supported with forward compatibility that switches when the rename happens.

v1.5.0

  • Re-wrote the implementation of the action into Dart.
  • Auto-detect the platform architecture (x64, ia32, arm, arm64).
  • Improved the caching and download resilience of the sdk.
  • Added a new action output: dart-version - the installed version of the sdk.

v1.4.0

  • Automatically create OIDC token for pub.dev.
  • Add a reusable workflow for publishing.

v1.3.0

  • The install location of the Dart SDK is now available

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dart-lang/setup-dart&package-manager=github_actions&previous-version=1.6.2&new-version=1.6.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
commit bf9dce2d54c297e2151fa849c6146e14851d1598 Author: Daco Harkes Date: Thu May 2 10:00:26 2024 +0200 [infra] Fix CI (#1114) commit 2eef97f7a67da5575c31d9f16fcc32ae8508965e Author: Daco Harkes Date: Thu May 2 08:25:27 2024 +0200 [infra] Swap weekly bot to x64 (#1116) commit 6a9282c7e2abd5d5ad89a2de1eb985ee9fc63262 Author: Liam Appelbe Date: Sun Apr 28 17:53:34 2024 -0700 Delete the Dart functions associated with closure blocks (#1100) * ObjC example, and infra for shipping native code with plugin * Fix the block leak * Mostly working * Fix analysis * Fix analysis * Fix example linker error * fmt * Daco's comments * Fix NSData commit 042af360a7e0d3ee01b6c7b09507721d2a90cbdf Author: Brian Quinlan Date: Thu Apr 25 16:31:03 2024 -0700 Add helper methods for NSData (#1104) commit 3bc1eb806d13dd0b8f82018f5c6ed9644ed70662 Author: Hossein Yousefi Date: Thu Apr 25 12:15:56 2024 +0200 [jnigen] Fix summarizer and improve errors (#1103) Close #877 commit 880ca3033e9d68ed9faae0d8d727506d8ef7de7c Author: Hossein Yousefi Date: Wed Apr 24 12:04:36 2024 +0200 [jnigen] Add `getRange` method to `JArray` and change the dart equivalent type for `JArray` to `int` (#1095) * Close #990 * Convert the return type of `operator []` of `JArray` to `int`, to be more consistent with the `getRange` return type. Similarly `operator []=` gets an `int` now * Remove some unused functions in `dartjni.c` * Use `.asTypedList(len).setRange` in `setRange` to be more efficient * Close #1097 – Improve the performance of`JArray`'s `operator []=` commit d7d9229aeb0ba16c73d1fadf73c5ec80511e74f1 Author: Hossein Yousefi Date: Tue Apr 23 17:50:31 2024 +0200 [ffi] Fix `MallocAllocator` doc (#1096) commit 2393cca5197efa30e0b58febf6a4aea29d542359 Author: Hossein Yousefi Date: Thu Apr 18 11:33:06 2024 +0200 [jnigen] Remove C-based bindings (#1091) commit 0f41ebbbb4923a056b18b81f84df30d4c89026df Author: Liam Appelbe Date: Wed Apr 17 16:26:46 2024 -0700 [ffigen] Move core ObjC classes to package:objective_c (#1088) * Move core ObjC classes to package:objective_c * Fix formatting and analysis * Fix analysis * Fix analysis * Fix analysis and add tests * Fix pub get failure * More tests and coverage * Fix path * Fix permissions * Fix coverage * Debugging coverage * Fix analysis * Still debugging coverage * Fix analysis * Debug coverage * Remove coverage debugging * Daco's comments commit e88a6a8fa3a280abf5ba43f73f9086398195792a Author: Hossein Yousefi Date: Wed Apr 17 11:53:36 2024 +0200 Use varargs for dartonly method calls (#1090) commit ffc493da2e357887922a5f5ff887f0f2e1e3d2c7 Author: Liam Appelbe Date: Fri Apr 12 10:09:55 2024 +1200 package:objective_c (#1061) * Initial commit of package:objective_c * Fix some of the PR health warnings * Remove the objective_c dep from ffigen. Need to separate those tests * Disable analysis and move tests * Fix tests * Workflows * Fix analysis * Fix analysis * Fix analysis * Fix analysis * Fix analysis * Fix analysis * Fix tests * Fix tests and address comments * Improve ffigen's CHANGELOG entry * Gather objective_c coverage during ffigen tests * Daco's comments * Move objc_msgSend into package:objective_c * Changelog * Fix analysis * Update changelog --- .github/ISSUE_TEMPLATE/objective_c.md | 6 + .github/labeler.yml | 4 + .github/workflows/ffi.yaml | 8 +- .github/workflows/ffigen.yml | 51 +- .github/workflows/ffigen_weekly.yml | 11 +- .github/workflows/health.yaml | 1 - ...health_jnigen.yaml => health_flutter.yaml} | 2 + .github/workflows/jnigen.yaml | 32 +- .github/workflows/native.yaml | 8 +- .github/workflows/native_toolchain_c.yaml | 4 +- .github/workflows/objective_c.yaml | 79 + README.md | 1 + pkgs/ffi/lib/src/allocation.dart | 4 +- pkgs/ffigen/.gitignore | 2 + pkgs/ffigen/CHANGELOG.md | 23 + pkgs/ffigen/analysis_options.yaml | 8 +- .../objective_c/avf_audio_bindings.dart | 102301 +++++---------- pkgs/ffigen/example/objective_c/config.yaml | 4 + .../example/objective_c/play_audio.dart | 9 +- pkgs/ffigen/example/objective_c/pubspec.yaml | 5 + pkgs/ffigen/example/swift/config.yaml | 4 + pkgs/ffigen/example/swift/example.dart | 4 +- pkgs/ffigen/example/swift/pubspec.yaml | 5 + .../example/swift/swift_api_bindings.dart | 98338 +++++--------- pkgs/ffigen/ffigen.schema.json | 3 + .../lib/src/code_generator/enum_class.dart | 2 +- pkgs/ffigen/lib/src/code_generator/func.dart | 6 +- .../lib/src/code_generator/imports.dart | 28 +- .../lib/src/code_generator/library.dart | 9 +- .../lib/src/code_generator/native_type.dart | 2 +- .../lib/src/code_generator/objc_block.dart | 83 +- .../objc_built_in_functions.dart | 498 +- .../src/code_generator/objc_interface.dart | 152 +- .../lib/src/code_generator/objc_nullable.dart | 4 +- .../lib/src/code_generator/pointer.dart | 9 +- pkgs/ffigen/lib/src/code_generator/type.dart | 13 +- .../lib/src/code_generator/typealias.dart | 13 +- pkgs/ffigen/lib/src/code_generator/utils.dart | 22 + .../ffigen/lib/src/code_generator/writer.dart | 21 +- .../lib/src/config_provider/config.dart | 15 + .../lib/src/config_provider/spec_utils.dart | 6 +- pkgs/ffigen/lib/src/executables/ffigen.dart | 11 +- pkgs/ffigen/lib/src/header_parser/data.dart | 3 +- pkgs/ffigen/lib/src/header_parser/parser.dart | 11 +- .../sub_parsers/objc_block_parser.dart | 1 - pkgs/ffigen/lib/src/strings.dart | 1 + pkgs/ffigen/pubspec.yaml | 26 +- .../objective_c_example_test.dart | 12 +- .../example_tests/swift_example_test.dart | 8 +- .../automated_ref_count_config.yaml | 2 +- .../automated_ref_count_test.dart | 75 +- .../native_objc_test/bad_method_config.yaml | 2 +- .../native_objc_test/bad_method_test.dart | 9 +- .../test/native_objc_test/block_config.yaml | 2 +- .../test/native_objc_test/block_test.dart | 143 +- .../test/native_objc_test/cast_config.yaml | 2 +- .../test/native_objc_test/cast_test.dart | 22 +- .../native_objc_test/category_config.yaml | 2 +- .../test/native_objc_test/category_test.dart | 7 +- .../failed_to_load_config.yaml | 2 +- .../native_objc_test/failed_to_load_test.dart | 14 +- .../native_objc_test/forward_decl_config.yaml | 2 +- .../native_objc_test/forward_decl_test.dart | 9 +- .../inherited_instancetype_config.yaml | 2 +- .../inherited_instancetype_test.dart | 13 +- .../native_objc_test/is_instance_config.yaml | 2 +- .../native_objc_test/is_instance_test.dart | 16 +- .../test/native_objc_test/method_config.yaml | 2 +- .../test/native_objc_test/method_test.dart | 15 +- .../native_objc_test/native_objc_config.yaml | 2 +- .../native_objc_test/native_objc_test.dart | 16 +- .../native_objc_test/nullable_config.yaml | 2 +- .../nullable_inheritance_config.yaml | 2 +- .../nullable_inheritance_test.dart | 14 +- .../test/native_objc_test/nullable_test.dart | 28 +- .../native_objc_test/property_config.yaml | 2 +- .../test/native_objc_test/property_test.dart | 13 +- .../test/native_objc_test/rename_config.yaml | 2 +- .../test/native_objc_test/rename_test.dart | 7 +- pkgs/ffigen/test/native_objc_test/setup.dart | 20 +- .../native_objc_test/static_func_config.yaml | 2 +- .../static_func_native_config.yaml | 2 +- .../static_func_native_test.dart | 43 +- .../native_objc_test/static_func_test.dart | 27 +- .../test/native_objc_test/string_config.yaml | 2 +- .../test/native_objc_test/string_test.dart | 18 +- .../native_objc_test/swift_class_config.yaml | 2 +- .../native_objc_test/swift_class_test.dart | 7 +- .../test/native_objc_test/typedef_config.yaml | 2 +- .../test/native_objc_test/typedef_test.dart | 8 +- pkgs/ffigen/test/native_objc_test/util.dart | 13 +- pkgs/ffigen/test/regen.dart | 4 + pkgs/ffigen/tool/coverage.sh | 4 +- pkgs/jni/CHANGELOG.md | 10 + pkgs/jni/example/pubspec.lock | 2 +- pkgs/jni/ffigen.yaml | 6 +- pkgs/jni/lib/src/jarray.dart | 245 +- pkgs/jni/lib/src/jni.dart | 3 + .../third_party/global_env_extensions.dart | 46 + .../third_party/jni_bindings_generated.dart | 48 + pkgs/jni/pubspec.yaml | 2 +- pkgs/jni/src/CMakeLists.txt | 1 - pkgs/jni/src/dartjni.c | 306 + pkgs/jni/src/dartjni.h | 61 +- pkgs/jni/src/internal.c | 248 - pkgs/jni/src/internal.h | 40 - pkgs/jni/src/third_party/global_jni_env.c | 334 +- pkgs/jni/src/third_party/global_jni_env.h | 187 +- pkgs/jni/test/jarray_test.dart | 119 +- .../tool/wrapper_generators/ffigen_util.dart | 3 + .../generate_c_extensions.dart | 75 +- pkgs/jnigen/CHANGELOG.md | 9 +- pkgs/jnigen/README.md | 112 +- .../android/app/build.gradle | 5 - .../integration_test/.gitignore | 1 - .../integration_test/runtime_test.dart | 25 + pkgs/jnigen/cmake/CMakeLists.txt.tmpl | 32 - pkgs/jnigen/cmake/README.md | 3 - pkgs/jnigen/example/in_app_java/README.md | 34 +- .../in_app_java/android/app/build.gradle | 6 - pkgs/jnigen/example/in_app_java/jnigen.yaml | 3 - .../in_app_java/lib/android_utils.dart | 2917 +- .../src/android_utils/.clang-format | 15 - .../src/android_utils/CMakeLists.txt | 32 - .../src/android_utils/android_utils.c | 2581 - .../in_app_java/src/android_utils/dartjni.h | 383 - .../kotlin_plugin/android/build.gradle | 15 - pkgs/jnigen/example/kotlin_plugin/jnigen.yaml | 5 - .../kotlin_plugin/lib/kotlin_bindings.dart | 52 +- .../example/kotlin_plugin/src/.clang-format | 15 - .../example/kotlin_plugin/src/CMakeLists.txt | 32 - .../example/kotlin_plugin/src/dartjni.h | 383 - .../src/kotlin_plugin_bindings.c | 50 - .../notification_plugin/android/build.gradle | 15 - .../example/notification_plugin/jnigen.yaml | 3 - .../lib/notifications.dart | 68 +- .../notification_plugin/src/.clang-format | 15 - .../notification_plugin/src/CMakeLists.txt | 32 - .../example/notification_plugin/src/dartjni.h | 383 - .../src/notification_plugin.c | 61 - .../pdfbox_plugin/android/build.gradle | 15 - pkgs/jnigen/example/pdfbox_plugin/jnigen.yaml | 12 - .../lib/src/third_party/_init.dart | 25 - .../org/apache/pdfbox/pdmodel/PDDocument.dart | 1528 +- .../pdfbox/pdmodel/PDDocumentInformation.dart | 602 +- .../apache/pdfbox/text/PDFTextStripper.dart | 1777 +- .../pdfbox_plugin/linux/CMakeLists.txt | 14 - .../example/pdfbox_plugin/src/CMakeLists.txt | 32 - .../src/third_party/.clang-format | 15 - .../pdfbox_plugin/src/third_party/dartjni.h | 383 - .../src/third_party/pdfbox_plugin.c | 2872 - .../pdfbox_plugin/windows/CMakeLists.txt | 14 - .../apisummarizer/SummarizerOptions.java | 14 +- pkgs/jnigen/lib/src/bindings/c_generator.dart | 386 - .../lib/src/bindings/dart_generator.dart | 235 +- pkgs/jnigen/lib/src/config/config_types.dart | 72 +- pkgs/jnigen/lib/src/generate_bindings.dart | 6 - pkgs/jnigen/lib/src/summary/summary.dart | 6 +- pkgs/jnigen/pubspec.yaml | 2 +- pkgs/jnigen/test/.gitignore | 2 - pkgs/jnigen/test/config_test.dart | 17 +- .../test/jackson_core_test/generate.dart | 16 +- .../generated_files_test.dart | 13 +- .../jnigen/test/jackson_core_test/jnigen.yaml | 6 +- .../runtime_test_registrant.dart | 2 +- .../fasterxml/jackson/core/JsonFactory.dart | 1353 +- .../fasterxml/jackson/core/JsonParser.dart | 1791 +- .../com/fasterxml/jackson/core/JsonToken.dart | 167 +- .../com/fasterxml/jackson/core/_package.dart | 0 .../c_based/c_bindings/.clang-format | 15 - .../c_based/c_bindings/CMakeLists.txt | 32 - .../third_party/c_based/c_bindings/dartjni.h | 383 - .../c_based/c_bindings/jackson_core.c | 3744 - .../c_based/dart_bindings/_init.dart | 24 - .../fasterxml/jackson/core/JsonFactory.dart | 2013 - .../fasterxml/jackson/core/JsonParser.dart | 2853 - .../com/fasterxml/jackson/core/JsonToken.dart | 240 - .../com/fasterxml/jackson/core/_package.dart | 3 - .../dart_bindings => bindings}/kotlin.dart | 50 +- .../c_based/c_bindings/.clang-format | 15 - .../c_based/c_bindings/CMakeLists.txt | 32 - .../kotlin_test/c_based/c_bindings/dartjni.h | 383 - .../kotlin_test/c_based/c_bindings/kotlin.c | 76 - .../c_based/dart_bindings/kotlin.dart | 133 - pkgs/jnigen/test/kotlin_test/generate.dart | 14 +- .../kotlin_test/generated_files_test.dart | 18 +- .../kotlin_test/runtime_test_registrant.dart | 2 +- pkgs/jnigen/test/runtime_test.dart | 21 + .../simple_package.dart | 2048 +- .../c_based/c_bindings/.clang-format | 15 - .../c_based/c_bindings/CMakeLists.txt | 32 - .../c_based/c_bindings/dartjni.h | 383 - .../c_based/c_bindings/simple_package.c | 2991 - .../c_based/dart_bindings/simple_package.dart | 4202 - .../test/simple_package_test/generate.dart | 14 +- .../generated_files_test.dart | 15 +- .../runtime_test_registrant.dart | 2 +- .../test/test_util/bindings_test_setup.dart | 8 - pkgs/jnigen/test/test_util/summary_util.dart | 1 - pkgs/jnigen/test/test_util/test_util.dart | 51 +- pkgs/jnigen/tool/generate_runtime_tests.dart | 182 - pkgs/jnigen/tool/pr_checks.dart | 180 - .../test_data/dart_app/bin/dart_app.dart | 4 +- pkgs/objective_c/.gitignore | 30 + pkgs/objective_c/.metadata | 33 + pkgs/objective_c/CHANGELOG.md | 8 + pkgs/objective_c/LICENSE | 27 + pkgs/objective_c/README.md | 4 + pkgs/objective_c/analysis_options.yaml | 8 + pkgs/objective_c/example/.gitignore | 43 + pkgs/objective_c/example/README.md | 3 + .../objective_c/example/analysis_options.yaml | 6 + pkgs/objective_c/example/ios/.gitignore | 34 + .../ios/Flutter/AppFrameworkInfo.plist | 26 + .../example/ios/Flutter/Debug.xcconfig | 2 + .../example/ios/Flutter/Release.xcconfig | 2 + pkgs/objective_c/example/ios/Podfile | 44 + pkgs/objective_c/example/ios/Podfile.lock | 22 + .../ios/Runner.xcodeproj/project.pbxproj | 728 + .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../example/ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 + .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 295 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 450 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 282 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 462 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 704 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 586 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 1674 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 762 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 1226 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 1418 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + .../Runner/Base.lproj/LaunchScreen.storyboard | 37 + .../ios/Runner/Base.lproj/Main.storyboard | 26 + .../objective_c/example/ios/Runner/Info.plist | 49 + .../ios/Runner/Runner-Bridging-Header.h | 1 + .../example/ios/RunnerTests/RunnerTests.swift | 12 + pkgs/objective_c/example/lib/main.dart | 37 + pkgs/objective_c/example/macos/.gitignore | 7 + .../macos/Flutter/Flutter-Debug.xcconfig | 2 + .../macos/Flutter/Flutter-Release.xcconfig | 2 + .../Flutter/GeneratedPluginRegistrant.swift | 10 + pkgs/objective_c/example/macos/Podfile | 43 + .../macos/Runner.xcodeproj/project.pbxproj | 705 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 + .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../example/macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 + .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes .../macos/Runner/Base.lproj/MainMenu.xib | 343 + .../macos/Runner/Configs/AppInfo.xcconfig | 14 + .../macos/Runner/Configs/Debug.xcconfig | 2 + .../macos/Runner/Configs/Release.xcconfig | 2 + .../macos/Runner/Configs/Warnings.xcconfig | 13 + .../macos/Runner/DebugProfile.entitlements | 12 + .../example/macos/Runner/Info.plist | 32 + .../macos/Runner/MainFlutterWindow.swift | 15 + .../example/macos/Runner/Release.entitlements | 8 + .../macos/RunnerTests/RunnerTests.swift | 12 + pkgs/objective_c/example/pubspec.lock | 236 + pkgs/objective_c/example/pubspec.yaml | 27 + pkgs/objective_c/ffigen_c.yaml | 54 + pkgs/objective_c/ffigen_objc.yaml | 56 + pkgs/objective_c/ios/Classes/objective_c.c | 8 + pkgs/objective_c/ios/objective_c.podspec | 28 + pkgs/objective_c/lib/objective_c.dart | 48 + .../lib/src/c_bindings_generated.dart | 141 + pkgs/objective_c/lib/src/internal.dart | 211 + pkgs/objective_c/lib/src/ns_data.dart | 50 + pkgs/objective_c/lib/src/ns_string.dart | 9 + .../src/objective_c_bindings_generated.dart | 15706 +++ pkgs/objective_c/macos/Classes/objective_c.c | 8 + pkgs/objective_c/macos/objective_c.podspec | 27 + pkgs/objective_c/pubspec.yaml | 44 + pkgs/objective_c/src/CMakeLists.txt | 20 + pkgs/objective_c/src/foundation.h | 19 + pkgs/objective_c/src/include/BUILD.gn | 23 + .../src/include/analyze_snapshot_api.h | 30 + .../objective_c/src/include/bin/dart_io_api.h | 69 + pkgs/objective_c/src/include/dart_api.h | 4097 + pkgs/objective_c/src/include/dart_api_dl.c | 79 + pkgs/objective_c/src/include/dart_api_dl.h | 165 + .../src/include/dart_embedder_api.h | 105 + .../objective_c/src/include/dart_native_api.h | 207 + pkgs/objective_c/src/include/dart_tools_api.h | 627 + pkgs/objective_c/src/include/dart_version.h | 16 + .../src/include/internal/dart_api_dl_impl.h | 21 + pkgs/objective_c/src/objective_c.c | 13 + pkgs/objective_c/src/objective_c.h | 13 + .../src/objective_c_runtime_functions.h | 31 + .../src/objective_c_runtime_types.h | 38 + pkgs/objective_c/test/generate_code_test.dart | 37 + .../test/interface_lists_test.dart | 53 + pkgs/objective_c/test/nsdata_test.dart | 93 + pkgs/objective_c/test/nsstring_test.dart | 34 + pkgs/objective_c/test/setup.dart | 46 + pkgs/objective_c/tool/coverage.sh | 15 + pkgs/objective_c/tool/data/extra_methods.dart | 20 + pkgs/objective_c/tool/generate_code.dart | 75 + 323 files changed, 100142 insertions(+), 168406 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/objective_c.md rename .github/workflows/{health_jnigen.yaml => health_flutter.yaml} (90%) create mode 100644 .github/workflows/objective_c.yaml delete mode 100644 pkgs/jni/src/internal.c delete mode 100644 pkgs/jni/src/internal.h delete mode 100644 pkgs/jnigen/android_test_runner/integration_test/.gitignore create mode 100644 pkgs/jnigen/android_test_runner/integration_test/runtime_test.dart delete mode 100644 pkgs/jnigen/cmake/CMakeLists.txt.tmpl delete mode 100644 pkgs/jnigen/cmake/README.md delete mode 100644 pkgs/jnigen/example/in_app_java/src/android_utils/.clang-format delete mode 100644 pkgs/jnigen/example/in_app_java/src/android_utils/CMakeLists.txt delete mode 100644 pkgs/jnigen/example/in_app_java/src/android_utils/android_utils.c delete mode 100644 pkgs/jnigen/example/in_app_java/src/android_utils/dartjni.h delete mode 100644 pkgs/jnigen/example/kotlin_plugin/src/.clang-format delete mode 100644 pkgs/jnigen/example/kotlin_plugin/src/CMakeLists.txt delete mode 100644 pkgs/jnigen/example/kotlin_plugin/src/dartjni.h delete mode 100644 pkgs/jnigen/example/kotlin_plugin/src/kotlin_plugin_bindings.c delete mode 100644 pkgs/jnigen/example/notification_plugin/src/.clang-format delete mode 100644 pkgs/jnigen/example/notification_plugin/src/CMakeLists.txt delete mode 100644 pkgs/jnigen/example/notification_plugin/src/dartjni.h delete mode 100644 pkgs/jnigen/example/notification_plugin/src/notification_plugin.c delete mode 100644 pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/_init.dart delete mode 100644 pkgs/jnigen/example/pdfbox_plugin/src/CMakeLists.txt delete mode 100644 pkgs/jnigen/example/pdfbox_plugin/src/third_party/.clang-format delete mode 100644 pkgs/jnigen/example/pdfbox_plugin/src/third_party/dartjni.h delete mode 100644 pkgs/jnigen/example/pdfbox_plugin/src/third_party/pdfbox_plugin.c delete mode 100644 pkgs/jnigen/lib/src/bindings/c_generator.dart rename pkgs/jnigen/test/jackson_core_test/third_party/{dart_only/dart_bindings => bindings}/com/fasterxml/jackson/core/JsonFactory.dart (55%) rename pkgs/jnigen/test/jackson_core_test/third_party/{dart_only/dart_bindings => bindings}/com/fasterxml/jackson/core/JsonParser.dart (60%) rename pkgs/jnigen/test/jackson_core_test/third_party/{dart_only/dart_bindings => bindings}/com/fasterxml/jackson/core/JsonToken.dart (54%) rename pkgs/jnigen/test/jackson_core_test/third_party/{c_based/dart_bindings => bindings}/com/fasterxml/jackson/core/_package.dart (100%) delete mode 100644 pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/.clang-format delete mode 100644 pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/CMakeLists.txt delete mode 100644 pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/dartjni.h delete mode 100644 pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/jackson_core.c delete mode 100644 pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/_init.dart delete mode 100644 pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/JsonFactory.dart delete mode 100644 pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/JsonParser.dart delete mode 100644 pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/JsonToken.dart delete mode 100644 pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/_package.dart rename pkgs/jnigen/test/kotlin_test/{dart_only/dart_bindings => bindings}/kotlin.dart (68%) delete mode 100644 pkgs/jnigen/test/kotlin_test/c_based/c_bindings/.clang-format delete mode 100644 pkgs/jnigen/test/kotlin_test/c_based/c_bindings/CMakeLists.txt delete mode 100644 pkgs/jnigen/test/kotlin_test/c_based/c_bindings/dartjni.h delete mode 100644 pkgs/jnigen/test/kotlin_test/c_based/c_bindings/kotlin.c delete mode 100644 pkgs/jnigen/test/kotlin_test/c_based/dart_bindings/kotlin.dart create mode 100644 pkgs/jnigen/test/runtime_test.dart rename pkgs/jnigen/test/simple_package_test/{dart_only/dart_bindings => bindings}/simple_package.dart (59%) delete mode 100644 pkgs/jnigen/test/simple_package_test/c_based/c_bindings/.clang-format delete mode 100644 pkgs/jnigen/test/simple_package_test/c_based/c_bindings/CMakeLists.txt delete mode 100644 pkgs/jnigen/test/simple_package_test/c_based/c_bindings/dartjni.h delete mode 100644 pkgs/jnigen/test/simple_package_test/c_based/c_bindings/simple_package.c delete mode 100644 pkgs/jnigen/test/simple_package_test/c_based/dart_bindings/simple_package.dart delete mode 100644 pkgs/jnigen/tool/generate_runtime_tests.dart delete mode 100644 pkgs/jnigen/tool/pr_checks.dart create mode 100644 pkgs/objective_c/.gitignore create mode 100644 pkgs/objective_c/.metadata create mode 100644 pkgs/objective_c/CHANGELOG.md create mode 100644 pkgs/objective_c/LICENSE create mode 100644 pkgs/objective_c/README.md create mode 100644 pkgs/objective_c/analysis_options.yaml create mode 100644 pkgs/objective_c/example/.gitignore create mode 100644 pkgs/objective_c/example/README.md create mode 100644 pkgs/objective_c/example/analysis_options.yaml create mode 100644 pkgs/objective_c/example/ios/.gitignore create mode 100644 pkgs/objective_c/example/ios/Flutter/AppFrameworkInfo.plist create mode 100644 pkgs/objective_c/example/ios/Flutter/Debug.xcconfig create mode 100644 pkgs/objective_c/example/ios/Flutter/Release.xcconfig create mode 100644 pkgs/objective_c/example/ios/Podfile create mode 100644 pkgs/objective_c/example/ios/Podfile.lock create mode 100644 pkgs/objective_c/example/ios/Runner.xcodeproj/project.pbxproj create mode 100644 pkgs/objective_c/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 pkgs/objective_c/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 pkgs/objective_c/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 pkgs/objective_c/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 pkgs/objective_c/example/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 pkgs/objective_c/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 pkgs/objective_c/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 pkgs/objective_c/example/ios/Runner/AppDelegate.swift create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 pkgs/objective_c/example/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 pkgs/objective_c/example/ios/Runner/Base.lproj/Main.storyboard create mode 100644 pkgs/objective_c/example/ios/Runner/Info.plist create mode 100644 pkgs/objective_c/example/ios/Runner/Runner-Bridging-Header.h create mode 100644 pkgs/objective_c/example/ios/RunnerTests/RunnerTests.swift create mode 100644 pkgs/objective_c/example/lib/main.dart create mode 100644 pkgs/objective_c/example/macos/.gitignore create mode 100644 pkgs/objective_c/example/macos/Flutter/Flutter-Debug.xcconfig create mode 100644 pkgs/objective_c/example/macos/Flutter/Flutter-Release.xcconfig create mode 100644 pkgs/objective_c/example/macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 pkgs/objective_c/example/macos/Podfile create mode 100644 pkgs/objective_c/example/macos/Runner.xcodeproj/project.pbxproj create mode 100644 pkgs/objective_c/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 pkgs/objective_c/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 pkgs/objective_c/example/macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 pkgs/objective_c/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 pkgs/objective_c/example/macos/Runner/AppDelegate.swift create mode 100644 pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 pkgs/objective_c/example/macos/Runner/Base.lproj/MainMenu.xib create mode 100644 pkgs/objective_c/example/macos/Runner/Configs/AppInfo.xcconfig create mode 100644 pkgs/objective_c/example/macos/Runner/Configs/Debug.xcconfig create mode 100644 pkgs/objective_c/example/macos/Runner/Configs/Release.xcconfig create mode 100644 pkgs/objective_c/example/macos/Runner/Configs/Warnings.xcconfig create mode 100644 pkgs/objective_c/example/macos/Runner/DebugProfile.entitlements create mode 100644 pkgs/objective_c/example/macos/Runner/Info.plist create mode 100644 pkgs/objective_c/example/macos/Runner/MainFlutterWindow.swift create mode 100644 pkgs/objective_c/example/macos/Runner/Release.entitlements create mode 100644 pkgs/objective_c/example/macos/RunnerTests/RunnerTests.swift create mode 100644 pkgs/objective_c/example/pubspec.lock create mode 100644 pkgs/objective_c/example/pubspec.yaml create mode 100644 pkgs/objective_c/ffigen_c.yaml create mode 100644 pkgs/objective_c/ffigen_objc.yaml create mode 100644 pkgs/objective_c/ios/Classes/objective_c.c create mode 100644 pkgs/objective_c/ios/objective_c.podspec create mode 100644 pkgs/objective_c/lib/objective_c.dart create mode 100644 pkgs/objective_c/lib/src/c_bindings_generated.dart create mode 100644 pkgs/objective_c/lib/src/internal.dart create mode 100644 pkgs/objective_c/lib/src/ns_data.dart create mode 100644 pkgs/objective_c/lib/src/ns_string.dart create mode 100644 pkgs/objective_c/lib/src/objective_c_bindings_generated.dart create mode 100644 pkgs/objective_c/macos/Classes/objective_c.c create mode 100644 pkgs/objective_c/macos/objective_c.podspec create mode 100644 pkgs/objective_c/pubspec.yaml create mode 100644 pkgs/objective_c/src/CMakeLists.txt create mode 100644 pkgs/objective_c/src/foundation.h create mode 100644 pkgs/objective_c/src/include/BUILD.gn create mode 100644 pkgs/objective_c/src/include/analyze_snapshot_api.h create mode 100644 pkgs/objective_c/src/include/bin/dart_io_api.h create mode 100644 pkgs/objective_c/src/include/dart_api.h create mode 100644 pkgs/objective_c/src/include/dart_api_dl.c create mode 100644 pkgs/objective_c/src/include/dart_api_dl.h create mode 100644 pkgs/objective_c/src/include/dart_embedder_api.h create mode 100644 pkgs/objective_c/src/include/dart_native_api.h create mode 100644 pkgs/objective_c/src/include/dart_tools_api.h create mode 100644 pkgs/objective_c/src/include/dart_version.h create mode 100644 pkgs/objective_c/src/include/internal/dart_api_dl_impl.h create mode 100644 pkgs/objective_c/src/objective_c.c create mode 100644 pkgs/objective_c/src/objective_c.h create mode 100644 pkgs/objective_c/src/objective_c_runtime_functions.h create mode 100644 pkgs/objective_c/src/objective_c_runtime_types.h create mode 100644 pkgs/objective_c/test/generate_code_test.dart create mode 100644 pkgs/objective_c/test/interface_lists_test.dart create mode 100644 pkgs/objective_c/test/nsdata_test.dart create mode 100644 pkgs/objective_c/test/nsstring_test.dart create mode 100644 pkgs/objective_c/test/setup.dart create mode 100755 pkgs/objective_c/tool/coverage.sh create mode 100644 pkgs/objective_c/tool/data/extra_methods.dart create mode 100644 pkgs/objective_c/tool/generate_code.dart diff --git a/.github/ISSUE_TEMPLATE/objective_c.md b/.github/ISSUE_TEMPLATE/objective_c.md new file mode 100644 index 000000000..63039fbd6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/objective_c.md @@ -0,0 +1,6 @@ +--- +name: "package:objective_c" +about: "Create a bug or file a feature request against package:objective_c." +labels: "package:objective_c" +--- + diff --git a/.github/labeler.yml b/.github/labeler.yml index 2d7ab38a7..f67662f37 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -27,3 +27,7 @@ 'package:native_toolchain_c': - changed-files: - any-glob-to-any-file: 'pkgs/native_toolchain_c/**' + +'package:objective_c': + - changed-files: + - any-glob-to-any-file: 'pkgs/objective_c/**' diff --git a/.github/workflows/ffi.yaml b/.github/workflows/ffi.yaml index b84b5c6bb..54e94dca3 100644 --- a/.github/workflows/ffi.yaml +++ b/.github/workflows/ffi.yaml @@ -31,8 +31,8 @@ jobs: matrix: sdk: [dev] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 - - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b + - uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 with: sdk: ${{ matrix.sdk }} - id: install @@ -61,8 +61,8 @@ jobs: os: [ubuntu-latest] sdk: [beta, dev] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 - - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b + - uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 with: sdk: ${{ matrix.sdk }} - id: install diff --git a/.github/workflows/ffigen.yml b/.github/workflows/ffigen.yml index 3ae5f5c09..156724952 100644 --- a/.github/workflows/ffigen.yml +++ b/.github/workflows/ffigen.yml @@ -1,17 +1,20 @@ name: ffigen on: - # Run on PRs and pushes to the default branch. + # Run on PRs and pushes to the default branch, in either the ffigen directory, + # or the objective_c directory. push: branches: [main, stable] paths: - '.github/workflows/ffigen.yml' - 'pkgs/ffigen/**' + - 'pkgs/objective_c/**' pull_request: branches: [main, stable] paths: - '.github/workflows/ffigen.yml' - 'pkgs/ffigen/**' + - 'pkgs/objective_c/**' schedule: - cron: "0 0 * * 0" @@ -27,25 +30,22 @@ jobs: working-directory: pkgs/ffigen/ strategy: fail-fast: false - matrix: - sdk: [dev] -# sdk: [3.3.0] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 - - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b + - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 with: - sdk: ${{ matrix.sdk }} + flutter-version: 3.19.0 + channel: 'stable' - id: install name: Install dependencies - run: dart pub get && dart pub get --directory="example/shared_bindings" + run: flutter pub get && flutter pub get --directory="example/shared_bindings" - name: Check formatting run: dart format --output=none --set-exit-if-changed . if: always() && steps.install.outcome == 'success' - name: Build test dylib and bindings run: dart test/setup.dart - name: Analyze code - run: dart analyze --fatal-infos - if: always() && steps.install.outcome == 'success' + run: flutter analyze --fatal-infos test-linux: needs: analyze @@ -54,12 +54,13 @@ jobs: run: working-directory: pkgs/ffigen/ steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 - - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b + - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 with: - sdk: dev #3.3.0 + flutter-version: 3.19.0 + channel: 'stable' - name: Install dependencies - run: dart pub get + run: flutter pub get - name: Install libclang-14-dev run: sudo apt-get install libclang-14-dev - name: Build test dylib and bindings @@ -75,12 +76,13 @@ jobs: run: working-directory: pkgs/ffigen/ steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 - - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b + - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 with: - sdk: dev #3.3.0 + flutter-version: 3.19.0 + channel: 'stable' - name: Install dependencies - run: dart pub get + run: flutter pub get - name: Build test dylib and bindings run: dart test/setup.dart - name: Run VM tests @@ -97,7 +99,7 @@ jobs: - name: Upload coverage uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 with: - carryforward: "jnigen_tests,jni_tests,native_assets_builder_macos,native_assets_builder_ubuntu,native_assets_builder_windows,native_assets_cli_macos,native_assets_cli_ubuntu,native_assets_cli_windows,native_toolchain_c_macos,native_toolchain_c_ubuntu,native_toolchain_c_windows" + carryforward: "objective_c_tests,ffigen_macos,jnigen_tests,jni_tests,native_assets_builder_macos,native_assets_builder_ubuntu,native_assets_builder_windows,native_assets_cli_macos,native_assets_cli_ubuntu,native_assets_cli_windows,native_toolchain_c_macos,native_toolchain_c_ubuntu,native_toolchain_c_windows" github-token: ${{ secrets.GITHUB_TOKEN }} parallel-finished: true @@ -108,12 +110,13 @@ jobs: run: working-directory: pkgs/ffigen/ steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 - - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b + - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 with: - sdk: dev #3.3.0 + flutter-version: 3.19.0 + channel: 'stable' - name: Install dependencies - run: dart pub get + run: flutter pub get - name: Build test dylib and bindings run: dart test/setup.dart - name: Run VM tests @@ -136,7 +139,7 @@ jobs: run: working-directory: pkgs/ffigen/ steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 with: channel: "master" diff --git a/.github/workflows/ffigen_weekly.yml b/.github/workflows/ffigen_weekly.yml index e56b14645..f710761b2 100644 --- a/.github/workflows/ffigen_weekly.yml +++ b/.github/workflows/ffigen_weekly.yml @@ -14,17 +14,18 @@ env: jobs: # Keep in sync with ffigen.yaml:test-mac test-mac-arm64: - runs-on: 'macos-latest-xlarge' # Arm64. + runs-on: 'macos-14-large' # x64 defaults: run: working-directory: pkgs/ffigen/ steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 - - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b + - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 with: - sdk: dev #3.3.0 + flutter-version: 3.19.0 + channel: 'stable' - name: Install dependencies - run: dart pub get + run: flutter pub get - name: Build test dylib and bindings run: dart test/setup.dart - name: Run VM tests diff --git a/.github/workflows/health.yaml b/.github/workflows/health.yaml index c6c5dd041..02f09862f 100644 --- a/.github/workflows/health.yaml +++ b/.github/workflows/health.yaml @@ -5,7 +5,6 @@ on: # Remove paths after https://github.com/bmw-tech/dart_apitool/issues/177 is addressed. paths: - "pkgs/ffi/**" - - "pkgs/ffigen/**" - "pkgs/native_assets_builder/**" - "pkgs/native_assets_cli/**" - "pkgs/native_toolchain_c/**" diff --git a/.github/workflows/health_jnigen.yaml b/.github/workflows/health_flutter.yaml similarity index 90% rename from .github/workflows/health_jnigen.yaml rename to .github/workflows/health_flutter.yaml index 7d20e2e46..6432947d0 100644 --- a/.github/workflows/health_jnigen.yaml +++ b/.github/workflows/health_flutter.yaml @@ -4,8 +4,10 @@ on: branches: [ main ] # Merge back into health.yaml after https://github.com/bmw-tech/dart_apitool/issues/177 is addressed. paths: + - "pkgs/ffigen/**" - "pkgs/jni/**" - "pkgs/jnigen/**" + - "pkgs/objective_c/**" types: [opened, synchronize, reopened, labeled, unlabeled] jobs: health: diff --git a/.github/workflows/jnigen.yaml b/.github/workflows/jnigen.yaml index 05d68af04..77269acb2 100644 --- a/.github/workflows/jnigen.yaml +++ b/.github/workflows/jnigen.yaml @@ -40,7 +40,7 @@ jobs: matrix: sdk: [stable] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 with: channel: ${{ matrix.sdk }} @@ -75,7 +75,7 @@ jobs: os: [ubuntu-latest] sdk: [stable, beta] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 with: channel: ${{ matrix.sdk }} @@ -105,8 +105,6 @@ jobs: working-directory: ./pkgs/jnigen/java - name: Build summarizer run: dart run jnigen:setup - - name: Generate runtime tests - run: dart run tool/generate_runtime_tests.dart - name: Run VM tests run: dart test --test-randomize-ordering-seed random - name: Install coverage @@ -128,7 +126,7 @@ jobs: run: working-directory: ./pkgs/jni steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 with: channel: 'stable' @@ -166,7 +164,7 @@ jobs: run: working-directory: ./pkgs/jni steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 with: channel: 'stable' @@ -215,7 +213,7 @@ jobs: run: working-directory: ./pkgs/jni steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 with: channel: 'stable' @@ -237,7 +235,7 @@ jobs: run: working-directory: ./pkgs/jnigen steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b - name: Setup clang uses: egor-tensin/setup-clang@ef434b41eb33a70396fb336b1bae39c76d740c3d with: @@ -258,8 +256,6 @@ jobs: - run: dart run jnigen:setup - name: Build summarizer run: dart run jnigen:setup - - name: Generate runtime tests - run: dart run tool/generate_runtime_tests.dart - name: Run tests run: dart test --test-randomize-ordering-seed random @@ -270,7 +266,7 @@ jobs: run: working-directory: ./pkgs/jni steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 with: channel: 'stable' @@ -291,7 +287,7 @@ jobs: run: working-directory: ./pkgs/jnigen steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b - name: Setup clang format uses: ConorMacBride/install-package@3e7ad059e07782ee54fa35f827df52aae0626f30 with: @@ -309,8 +305,6 @@ jobs: - run: dart pub get - name: Build summarizer run: dart run jnigen:setup - - name: Generate runtime tests - run: dart run tool/generate_runtime_tests.dart - name: Run tests run: dart test --test-randomize-ordering-seed random @@ -320,7 +314,7 @@ jobs: run: working-directory: ./pkgs/jni/example steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 with: channel: 'stable' @@ -344,7 +338,7 @@ jobs: run: working-directory: ./pkgs/jni/example steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 with: channel: 'stable' @@ -364,7 +358,7 @@ jobs: run: working-directory: ./pkgs/jni/example steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b - uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 with: distribution: 'zulu' @@ -383,7 +377,7 @@ jobs: run: working-directory: ./pkgs/jnigen/example/pdfbox_plugin steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 with: channel: 'stable' @@ -424,6 +418,6 @@ jobs: - name: Coveralls finished uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 with: - carryforward: "ffigen_macos,native_assets_builder_macos,native_assets_builder_ubuntu,native_assets_builder_windows,native_assets_cli_macos,native_assets_cli_ubuntu,native_assets_cli_windows,native_toolchain_c_macos,native_toolchain_c_ubuntu,native_toolchain_c_windows" + carryforward: "objective_c_tests,ffigen_macos,jnigen_tests,jni_tests,native_assets_builder_macos,native_assets_builder_ubuntu,native_assets_builder_windows,native_assets_cli_macos,native_assets_cli_ubuntu,native_assets_cli_windows,native_toolchain_c_macos,native_toolchain_c_ubuntu,native_toolchain_c_windows" github-token: ${{ secrets.github_token }} parallel-finished: true diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml index 750af4d4f..b91573b67 100644 --- a/.github/workflows/native.yaml +++ b/.github/workflows/native.yaml @@ -49,16 +49,16 @@ jobs: working-directory: pkgs/${{ matrix.package }} steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b - - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 + - uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 with: sdk: ${{ matrix.sdk }} - uses: nttld/setup-ndk@6a7e9c5494a25c4842ca1011f710300132eacd94 with: ndk-version: r26b - if: ${{ matrix.sdk == 'stable' }} + if: ${{ matrix.sdk == 'stable' && matrix.os != 'macos' }} - run: dart pub get @@ -172,6 +172,6 @@ jobs: - name: Upload coverage uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 with: - carryforward: "ffigen_macos,jnigen_tests,jni_tests" + carryforward: "objective_c_tests,ffigen_macos,jnigen_tests,jni_tests,native_assets_builder_macos,native_assets_builder_ubuntu,native_assets_builder_windows,native_assets_cli_macos,native_assets_cli_ubuntu,native_assets_cli_windows,native_toolchain_c_macos,native_toolchain_c_ubuntu,native_toolchain_c_windows" github-token: ${{ secrets.GITHUB_TOKEN }} parallel-finished: true diff --git a/.github/workflows/native_toolchain_c.yaml b/.github/workflows/native_toolchain_c.yaml index 6d29af594..bc6923440 100644 --- a/.github/workflows/native_toolchain_c.yaml +++ b/.github/workflows/native_toolchain_c.yaml @@ -32,9 +32,9 @@ jobs: working-directory: pkgs/${{ matrix.package }} steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b - - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 + - uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 with: sdk: ${{ matrix.sdk }} diff --git a/.github/workflows/objective_c.yaml b/.github/workflows/objective_c.yaml new file mode 100644 index 000000000..df3249288 --- /dev/null +++ b/.github/workflows/objective_c.yaml @@ -0,0 +1,79 @@ +name: objective_c + +on: + # Run on PRs and pushes to the default branch. + push: + branches: [main, stable] + paths: + - '.github/workflows/objective_c.yml' + - 'pkgs/objective_c/**' + pull_request: + branches: [main, stable] + paths: + - '.github/workflows/objective_c.yml' + - 'pkgs/objective_c/**' + schedule: + - cron: "0 0 * * 0" + +env: + PUB_ENVIRONMENT: bot.github + +jobs: + # Check code formatting and static analysis. + analyze: + runs-on: macos-latest + defaults: + run: + working-directory: pkgs/objective_c/ + strategy: + fail-fast: false + steps: + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b + - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 + with: + flutter-version: 3.19.0 + channel: 'stable' + - id: install + name: Install dependencies + run: flutter pub get + - name: Check formatting + run: dart format --output=none --set-exit-if-changed . + if: always() && steps.install.outcome == 'success' + - name: Analyze code + run: flutter analyze --fatal-infos + if: always() && steps.install.outcome == 'success' + + test-mac: + needs: analyze + runs-on: 'macos-latest' + defaults: + run: + working-directory: pkgs/objective_c/ + steps: + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b + - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 + with: + flutter-version: 3.19.0 + channel: 'stable' + - name: Install dependencies + run: flutter pub get + - name: Build test dylib + # TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + run: dart test/setup.dart + - name: Run VM tests + run: dart test + - name: Collect coverage + run: ./tool/coverage.sh + - name: Upload coverage + uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 + with: + flag-name: objective_c_tests + github-token: ${{ secrets.GITHUB_TOKEN }} + parallel: true + path-to-lcov: pkgs/objective_c/lcov.info + - name: Upload coverage + uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 + with: + carryforward: "objective_c_tests,ffigen_macos,jnigen_tests,jni_tests,native_assets_builder_macos,native_assets_builder_ubuntu,native_assets_builder_windows,native_assets_cli_macos,native_assets_cli_ubuntu,native_assets_cli_windows,native_toolchain_c_macos,native_toolchain_c_ubuntu,native_toolchain_c_windows" + github-token: ${{ secrets.GITHUB_TOKEN }} + parallel-finished: true diff --git a/README.md b/README.md index 499f061ff..d68ce3ad2 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ building and bundling. | --- | --- | --- | | [ffi](pkgs/ffi/) | Utilities for working with Foreign Function Interface (FFI) code. | [![pub package](https://img.shields.io/pub/v/ffi.svg)](https://pub.dev/packages/ffi) | | [ffigen](pkgs/ffigen/) | Generator for FFI bindings, using LibClang to parse C, Objective-C, and Swift files. | [![pub package](https://img.shields.io/pub/v/ffigen.svg)](https://pub.dev/packages/ffigen) | +| [objective_c](pkgs/objective_c/) | A library to access Objective C from Flutter that acts as a support library for package:ffigen. | [![pub package](https://img.shields.io/pub/v/objective_c.svg)](https://pub.dev/packages/objective_c) | | [jni](pkgs/jni/) | A library to access JNI from Dart and Flutter that acts as a support library for `package:jnigen`. | [![pub package](https://img.shields.io/pub/v/jni.svg)](https://pub.dev/packages/jni) | | [jnigen](pkgs/jnigen/) | A Dart bindings generator for Java and Kotlin that uses JNI under the hood to interop with Java virtual machine. | [![pub package](https://img.shields.io/pub/v/jnigen.svg)](https://pub.dev/packages/jnigen) | | [native_assets_builder](pkgs/native_assets_builder/) | This package is the backend that invokes build hooks. | [![pub package](https://img.shields.io/pub/v/native_assets_builder.svg)](https://pub.dev/packages/native_assets_builder) | diff --git a/pkgs/ffi/lib/src/allocation.dart b/pkgs/ffi/lib/src/allocation.dart index 42021458a..5611b647d 100644 --- a/pkgs/ffi/lib/src/allocation.dart +++ b/pkgs/ffi/lib/src/allocation.dart @@ -40,11 +40,11 @@ final WinCoTaskMemFree winCoTaskMemFree = winCoTaskMemFreePointer.asFunction(); /// Manages memory on the native heap. /// -/// Does not initialize newly allocated memory to zero. Use [_CallocAllocator] +/// Does not initialize newly allocated memory to zero. Use [CallocAllocator] /// for zero-initialized memory on allocation. /// /// For POSIX-based systems, this uses `malloc` and `free`. On Windows, it uses -/// `CoTaskMemAlloc`. +/// `CoTaskMemAlloc` and `CoTaskMemFree`. final class MallocAllocator implements Allocator { const MallocAllocator._(); diff --git a/pkgs/ffigen/.gitignore b/pkgs/ffigen/.gitignore index d9616e8fa..e1f3703d7 100644 --- a/pkgs/ffigen/.gitignore +++ b/pkgs/ffigen/.gitignore @@ -4,6 +4,8 @@ .dart_tool/ .packages pubspec.lock +.flutter-plugins +.flutter-plugins-dependencies # IDE and debugger files. .clangd diff --git a/pkgs/ffigen/CHANGELOG.md b/pkgs/ffigen/CHANGELOG.md index 400332646..2c5010d9a 100644 --- a/pkgs/ffigen/CHANGELOG.md +++ b/pkgs/ffigen/CHANGELOG.md @@ -6,6 +6,29 @@ - Add `retainAndReturnPointer` method to ObjC objects and blocks, and add `castFromPointer` method to blocks. - Add `-Wno-nullability-completeness` as default compiler option for MacOS. +- __Breaking change__: Use `package:objective_c` in ObjC bindings. + - ObjC packages will have a flutter dependency (until + https://github.com/dart-lang/native/issues/1068 is fixed). + - Core classes such as `NSString` have been moved intpu `package:objective_c`. + - ObjC class methods don't need the ubiquitous `lib` argument anymore. In + fact, ffigen won't even generate the native library class (unless it needs + to bind top level functions without using `@Native`). It is still necessary + to `DynamicLibrary.open` the dylib though, to load the classes and methods. + - Adapting to this change: + - Update ffigen and re-run the code generation. If the generated code no + longer contains the native library class, it means it isn't needed + anymore. So `final lib = FooNativeLib(DynamicLibrary.open('foo.dylib'));` + must be changed to `DynamicLibrary.open('foo.dylib');`. + - Regardless of whether the native library class still exists, delete the + `lib` parameter from all ObjC object constructors and static method calls + and block constructors. + - If core ObjC classes such as `NSString` are being used, + `package:objective_c` must be imported, as they won't be exported by the + generated bindings. +- Add --[no-]format option to ffigen command line, which controls whether the + formatting step happens. Defaults to true. +- Delete Dart functions associated with ObjC closure blocks when the block is + destroyed. Fixes https://github.com/dart-lang/native/issues/204 ## 11.0.0 diff --git a/pkgs/ffigen/analysis_options.yaml b/pkgs/ffigen/analysis_options.yaml index 0ba641e24..eb3d90860 100644 --- a/pkgs/ffigen/analysis_options.yaml +++ b/pkgs/ffigen/analysis_options.yaml @@ -9,8 +9,12 @@ analyzer: todo: ignore exclude: - 'test/**_expected*' - # Goldens cannot be generated outside MacOS causing analysis errors. - - test/native_objc_test/** + + # Exclude anything that uses package:objective_c, due to flutter dependency. + # https://github.com/dart-lang/native/issues/1068 + - example/objective_c/** + - example/swift/** + - test_flutter/native_objc_test/** language: strict-casts: true strict-inference: true diff --git a/pkgs/ffigen/example/objective_c/avf_audio_bindings.dart b/pkgs/ffigen/example/objective_c/avf_audio_bindings.dart index 0d598f1df..401633303 100644 --- a/pkgs/ffigen/example/objective_c/avf_audio_bindings.dart +++ b/pkgs/ffigen/example/objective_c/avf_audio_bindings.dart @@ -1,55717 +1,6307 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field, void_checks, annotate_overrides, no_leading_underscores_for_local_identifiers, library_private_types_in_public_api // AUTO GENERATED FILE, DO NOT EDIT. -// -// Generated by `package:ffigen`. -// ignore_for_file: type=lint -import 'dart:ffi' as ffi; -import 'package:ffi/ffi.dart' as pkg_ffi; - -/// Bindings for AVFAudio. -class AVFAudio { - /// Holds the symbol lookup function. - final ffi.Pointer Function(String symbolName) - _lookup; - - /// The symbols are looked up in [dynamicLibrary]. - AVFAudio(ffi.DynamicLibrary dynamicLibrary) : _lookup = dynamicLibrary.lookup; - - /// The symbols are looked up with [lookup]. - AVFAudio.fromLookup( - ffi.Pointer Function(String symbolName) - lookup) - : _lookup = lookup; - - ffi.Pointer _registerName1(String name) { - final cstr = name.toNativeUtf8(); - final sel = _sel_registerName(cstr.cast()); - pkg_ffi.calloc.free(cstr); - return sel; - } - - ffi.Pointer _sel_registerName( - ffi.Pointer str, - ) { - return __sel_registerName( - str, - ); - } - - late final __sel_registerNamePtr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer)>>('sel_registerName'); - late final __sel_registerName = __sel_registerNamePtr - .asFunction Function(ffi.Pointer)>(); - - ffi.Pointer _getClass1(String name) { - final cstr = name.toNativeUtf8(); - final clazz = _objc_getClass(cstr.cast()); - pkg_ffi.calloc.free(cstr); - if (clazz == ffi.nullptr) { - throw Exception('Failed to load Objective-C class: $name'); - } - return clazz; - } - - ffi.Pointer _objc_getClass( - ffi.Pointer str, - ) { - return __objc_getClass( - str, - ); - } - - late final __objc_getClassPtr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer)>>('objc_getClass'); - late final __objc_getClass = __objc_getClassPtr - .asFunction Function(ffi.Pointer)>(); - - ffi.Pointer _objc_retain( - ffi.Pointer value, - ) { - return __objc_retain( - value, - ); - } - - late final __objc_retainPtr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer)>>('objc_retain'); - late final __objc_retain = __objc_retainPtr - .asFunction Function(ffi.Pointer)>(); - - void _objc_release( - ffi.Pointer value, - ) { - return __objc_release( - value, - ); - } - - late final __objc_releasePtr = - _lookup)>>( - 'objc_release'); - late final __objc_release = - __objc_releasePtr.asFunction)>(); - - late final _objc_releaseFinalizer2 = - ffi.NativeFinalizer(__objc_releasePtr.cast()); - late final _class_NSObject1 = _getClass1("NSObject"); - late final _sel_load1 = _registerName1("load"); - void _objc_msgSend_1( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1( - obj, - sel, - ); - } - - late final __objc_msgSend_1Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1 = __objc_msgSend_1Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initialize1 = _registerName1("initialize"); - late final _sel_init1 = _registerName1("init"); - instancetype _objc_msgSend_2( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_2( - obj, - sel, - ); - } - - late final __objc_msgSend_2Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_2 = __objc_msgSend_2Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_new1 = _registerName1("new"); - late final _sel_allocWithZone_1 = _registerName1("allocWithZone:"); - instancetype _objc_msgSend_3( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_NSZone> zone, - ) { - return __objc_msgSend_3( - obj, - sel, - zone, - ); - } - - late final __objc_msgSend_3Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_NSZone>)>>('objc_msgSend'); - late final __objc_msgSend_3 = __objc_msgSend_3Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_NSZone>)>(); - - late final _sel_alloc1 = _registerName1("alloc"); - late final _sel_dealloc1 = _registerName1("dealloc"); - late final _sel_finalize1 = _registerName1("finalize"); - late final _sel_copy1 = _registerName1("copy"); - late final _sel_mutableCopy1 = _registerName1("mutableCopy"); - late final _sel_copyWithZone_1 = _registerName1("copyWithZone:"); - late final _sel_mutableCopyWithZone_1 = - _registerName1("mutableCopyWithZone:"); - late final _sel_instancesRespondToSelector_1 = - _registerName1("instancesRespondToSelector:"); - bool _objc_msgSend_4( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ) { - return __objc_msgSend_4( - obj, - sel, - aSelector, - ); - } - - late final __objc_msgSend_4Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_4 = __objc_msgSend_4Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - bool _objc_msgSend_0( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer clazz, - ) { - return __objc_msgSend_0( - obj, - sel, - clazz, - ); - } - - late final __objc_msgSend_0Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_0 = __objc_msgSend_0Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isKindOfClass_1 = _registerName1("isKindOfClass:"); - late final _class_Protocol1 = _getClass1("Protocol"); - late final _sel_conformsToProtocol_1 = _registerName1("conformsToProtocol:"); - bool _objc_msgSend_5( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer protocol, - ) { - return __objc_msgSend_5( - obj, - sel, - protocol, - ); - } - - late final __objc_msgSend_5Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_5 = __objc_msgSend_5Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_methodForSelector_1 = _registerName1("methodForSelector:"); - ffi.Pointer> _objc_msgSend_6( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ) { - return __objc_msgSend_6( - obj, - sel, - aSelector, - ); - } - - late final __objc_msgSend_6Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer> Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_6 = __objc_msgSend_6Ptr.asFunction< - ffi.Pointer> Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_instanceMethodForSelector_1 = - _registerName1("instanceMethodForSelector:"); - late final _sel_doesNotRecognizeSelector_1 = - _registerName1("doesNotRecognizeSelector:"); - void _objc_msgSend_7( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ) { - return __objc_msgSend_7( - obj, - sel, - aSelector, - ); - } - - late final __objc_msgSend_7Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_7 = __objc_msgSend_7Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_forwardingTargetForSelector_1 = - _registerName1("forwardingTargetForSelector:"); - ffi.Pointer _objc_msgSend_8( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ) { - return __objc_msgSend_8( - obj, - sel, - aSelector, - ); - } - - late final __objc_msgSend_8Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_8 = __objc_msgSend_8Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSInvocation1 = _getClass1("NSInvocation"); - late final _class_NSMethodSignature1 = _getClass1("NSMethodSignature"); - late final _sel_signatureWithObjCTypes_1 = - _registerName1("signatureWithObjCTypes:"); - ffi.Pointer _objc_msgSend_9( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer types, - ) { - return __objc_msgSend_9( - obj, - sel, - types, - ); - } - - late final __objc_msgSend_9Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_9 = __objc_msgSend_9Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_numberOfArguments1 = _registerName1("numberOfArguments"); - int _objc_msgSend_10( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_10( - obj, - sel, - ); - } - - late final __objc_msgSend_10Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_10 = __objc_msgSend_10Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_getArgumentTypeAtIndex_1 = - _registerName1("getArgumentTypeAtIndex:"); - ffi.Pointer _objc_msgSend_11( - ffi.Pointer obj, - ffi.Pointer sel, - int idx, - ) { - return __objc_msgSend_11( - obj, - sel, - idx, - ); - } - - late final __objc_msgSend_11Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_11 = __objc_msgSend_11Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_frameLength1 = _registerName1("frameLength"); - late final _sel_isOneway1 = _registerName1("isOneway"); - bool _objc_msgSend_12( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_12( - obj, - sel, - ); - } - - late final __objc_msgSend_12Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_12 = __objc_msgSend_12Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_methodReturnType1 = _registerName1("methodReturnType"); - ffi.Pointer _objc_msgSend_13( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_13( - obj, - sel, - ); - } - - late final __objc_msgSend_13Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_13 = __objc_msgSend_13Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_methodReturnLength1 = _registerName1("methodReturnLength"); - late final _sel_cancelPreviousPerformRequestsWithTarget_selector_object_1 = - _registerName1( - "cancelPreviousPerformRequestsWithTarget:selector:object:"); - void _objc_msgSend_14( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aTarget, - ffi.Pointer aSelector, - ffi.Pointer anArgument, - ) { - return __objc_msgSend_14( - obj, - sel, - aTarget, - aSelector, - anArgument, - ); - } - - late final __objc_msgSend_14Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_14 = __objc_msgSend_14Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_cancelPreviousPerformRequestsWithTarget_1 = - _registerName1("cancelPreviousPerformRequestsWithTarget:"); - void _objc_msgSend_15( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aTarget, - ) { - return __objc_msgSend_15( - obj, - sel, - aTarget, - ); - } - - late final __objc_msgSend_15Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_15 = __objc_msgSend_15Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_accessInstanceVariablesDirectly1 = - _registerName1("accessInstanceVariablesDirectly"); - late final _sel_useStoredAccessor1 = _registerName1("useStoredAccessor"); - late final _class_NSSet1 = _getClass1("NSSet"); - late final _sel_count1 = _registerName1("count"); - late final _sel_member_1 = _registerName1("member:"); - ffi.Pointer _objc_msgSend_16( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer object, - ) { - return __objc_msgSend_16( - obj, - sel, - object, - ); - } - - late final __objc_msgSend_16Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_16 = __objc_msgSend_16Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSEnumerator1 = _getClass1("NSEnumerator"); - late final _sel_nextObject1 = _registerName1("nextObject"); - ffi.Pointer _objc_msgSend_17( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_17( - obj, - sel, - ); - } - - late final __objc_msgSend_17Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_17 = __objc_msgSend_17Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_allObjects1 = _registerName1("allObjects"); - late final _class_NSString1 = _getClass1("NSString"); - late final _sel_length1 = _registerName1("length"); - late final _sel_characterAtIndex_1 = _registerName1("characterAtIndex:"); - int _objc_msgSend_18( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_18( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_18Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedShort Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_18 = __objc_msgSend_18Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _class_NSCoder1 = _getClass1("NSCoder"); - late final _sel_encodeValueOfObjCType_at_1 = - _registerName1("encodeValueOfObjCType:at:"); - void _objc_msgSend_19( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer type, - ffi.Pointer addr, - ) { - return __objc_msgSend_19( - obj, - sel, - type, - addr, - ); - } - - late final __objc_msgSend_19Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_19 = __objc_msgSend_19Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSData1 = _getClass1("NSData"); - late final _sel_bytes1 = _registerName1("bytes"); - ffi.Pointer _objc_msgSend_20( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_20( - obj, - sel, - ); - } - - late final __objc_msgSend_20Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_20 = __objc_msgSend_20Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_description1 = _registerName1("description"); - ffi.Pointer _objc_msgSend_21( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_21( - obj, - sel, - ); - } - - late final __objc_msgSend_21Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_21 = __objc_msgSend_21Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_getBytes_length_1 = _registerName1("getBytes:length:"); - void _objc_msgSend_22( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - int length, - ) { - return __objc_msgSend_22( - obj, - sel, - buffer, - length, - ); - } - - late final __objc_msgSend_22Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_22 = __objc_msgSend_22Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_getBytes_range_1 = _registerName1("getBytes:range:"); - void _objc_msgSend_23( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - _NSRange range, - ) { - return __objc_msgSend_23( - obj, - sel, - buffer, - range, - ); - } - - late final __objc_msgSend_23Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_23 = __objc_msgSend_23Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - late final _sel_isEqualToData_1 = _registerName1("isEqualToData:"); - bool _objc_msgSend_24( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_24( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_24Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_24 = __objc_msgSend_24Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_subdataWithRange_1 = _registerName1("subdataWithRange:"); - ffi.Pointer _objc_msgSend_25( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_25( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_25Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_25 = __objc_msgSend_25Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_writeToFile_atomically_1 = - _registerName1("writeToFile:atomically:"); - bool _objc_msgSend_26( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool useAuxiliaryFile, - ) { - return __objc_msgSend_26( - obj, - sel, - path, - useAuxiliaryFile, - ); - } - - late final __objc_msgSend_26Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_26 = __objc_msgSend_26Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _class_NSURL1 = _getClass1("NSURL"); - late final _sel_initWithScheme_host_path_1 = - _registerName1("initWithScheme:host:path:"); - instancetype _objc_msgSend_27( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer scheme, - ffi.Pointer host, - ffi.Pointer path, - ) { - return __objc_msgSend_27( - obj, - sel, - scheme, - host, - path, - ); - } - - late final __objc_msgSend_27Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_27 = __objc_msgSend_27Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initFileURLWithPath_isDirectory_relativeToURL_1 = - _registerName1("initFileURLWithPath:isDirectory:relativeToURL:"); - instancetype _objc_msgSend_28( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool isDir, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_28( - obj, - sel, - path, - isDir, - baseURL, - ); - } - - late final __objc_msgSend_28Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_28 = __objc_msgSend_28Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool, ffi.Pointer)>(); - - late final _sel_initFileURLWithPath_relativeToURL_1 = - _registerName1("initFileURLWithPath:relativeToURL:"); - instancetype _objc_msgSend_29( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_29( - obj, - sel, - path, - baseURL, - ); - } - - late final __objc_msgSend_29Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_29 = __objc_msgSend_29Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initFileURLWithPath_isDirectory_1 = - _registerName1("initFileURLWithPath:isDirectory:"); - instancetype _objc_msgSend_30( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool isDir, - ) { - return __objc_msgSend_30( - obj, - sel, - path, - isDir, - ); - } - - late final __objc_msgSend_30Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_30 = __objc_msgSend_30Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_initFileURLWithPath_1 = - _registerName1("initFileURLWithPath:"); - instancetype _objc_msgSend_31( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_31( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_31Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_31 = __objc_msgSend_31Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_fileURLWithPath_isDirectory_relativeToURL_1 = - _registerName1("fileURLWithPath:isDirectory:relativeToURL:"); - ffi.Pointer _objc_msgSend_32( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool isDir, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_32( - obj, - sel, - path, - isDir, - baseURL, - ); - } - - late final __objc_msgSend_32Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_32 = __objc_msgSend_32Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer)>(); - - late final _sel_fileURLWithPath_relativeToURL_1 = - _registerName1("fileURLWithPath:relativeToURL:"); - ffi.Pointer _objc_msgSend_33( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_33( - obj, - sel, - path, - baseURL, - ); - } - - late final __objc_msgSend_33Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_33 = __objc_msgSend_33Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_fileURLWithPath_isDirectory_1 = - _registerName1("fileURLWithPath:isDirectory:"); - ffi.Pointer _objc_msgSend_34( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool isDir, - ) { - return __objc_msgSend_34( - obj, - sel, - path, - isDir, - ); - } - - late final __objc_msgSend_34Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_34 = __objc_msgSend_34Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_fileURLWithPath_1 = _registerName1("fileURLWithPath:"); - ffi.Pointer _objc_msgSend_35( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_35( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_35Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_35 = __objc_msgSend_35Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1 = - _registerName1( - "initFileURLWithFileSystemRepresentation:isDirectory:relativeToURL:"); - instancetype _objc_msgSend_36( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool isDir, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_36( - obj, - sel, - path, - isDir, - baseURL, - ); - } - - late final __objc_msgSend_36Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_36 = __objc_msgSend_36Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool, ffi.Pointer)>(); - - late final _sel_fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1 = - _registerName1( - "fileURLWithFileSystemRepresentation:isDirectory:relativeToURL:"); - ffi.Pointer _objc_msgSend_37( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool isDir, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_37( - obj, - sel, - path, - isDir, - baseURL, - ); - } - - late final __objc_msgSend_37Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_37 = __objc_msgSend_37Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer)>(); - - late final _sel_initWithString_1 = _registerName1("initWithString:"); - instancetype _objc_msgSend_38( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer URLString, - ) { - return __objc_msgSend_38( - obj, - sel, - URLString, - ); - } - - late final __objc_msgSend_38Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_38 = __objc_msgSend_38Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithString_relativeToURL_1 = - _registerName1("initWithString:relativeToURL:"); - instancetype _objc_msgSend_39( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer URLString, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_39( - obj, - sel, - URLString, - baseURL, - ); - } - - late final __objc_msgSend_39Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_39 = __objc_msgSend_39Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_URLWithString_1 = _registerName1("URLWithString:"); - late final _sel_URLWithString_relativeToURL_1 = - _registerName1("URLWithString:relativeToURL:"); - late final _sel_initWithString_encodingInvalidCharacters_1 = - _registerName1("initWithString:encodingInvalidCharacters:"); - instancetype _objc_msgSend_40( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer URLString, - bool encodingInvalidCharacters, - ) { - return __objc_msgSend_40( - obj, - sel, - URLString, - encodingInvalidCharacters, - ); - } - - late final __objc_msgSend_40Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_40 = __objc_msgSend_40Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_URLWithString_encodingInvalidCharacters_1 = - _registerName1("URLWithString:encodingInvalidCharacters:"); - late final _sel_initWithDataRepresentation_relativeToURL_1 = - _registerName1("initWithDataRepresentation:relativeToURL:"); - instancetype _objc_msgSend_41( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_41( - obj, - sel, - data, - baseURL, - ); - } - - late final __objc_msgSend_41Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_41 = __objc_msgSend_41Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_URLWithDataRepresentation_relativeToURL_1 = - _registerName1("URLWithDataRepresentation:relativeToURL:"); - ffi.Pointer _objc_msgSend_42( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_42( - obj, - sel, - data, - baseURL, - ); - } - - late final __objc_msgSend_42Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_42 = __objc_msgSend_42Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initAbsoluteURLWithDataRepresentation_relativeToURL_1 = - _registerName1("initAbsoluteURLWithDataRepresentation:relativeToURL:"); - late final _sel_absoluteURLWithDataRepresentation_relativeToURL_1 = - _registerName1("absoluteURLWithDataRepresentation:relativeToURL:"); - late final _sel_dataRepresentation1 = _registerName1("dataRepresentation"); - ffi.Pointer _objc_msgSend_43( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_43( - obj, - sel, - ); - } - - late final __objc_msgSend_43Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_43 = __objc_msgSend_43Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_absoluteString1 = _registerName1("absoluteString"); - ffi.Pointer _objc_msgSend_44( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_44( - obj, - sel, - ); - } - - late final __objc_msgSend_44Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_44 = __objc_msgSend_44Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_relativeString1 = _registerName1("relativeString"); - late final _sel_baseURL1 = _registerName1("baseURL"); - ffi.Pointer _objc_msgSend_45( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_45( - obj, - sel, - ); - } - - late final __objc_msgSend_45Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_45 = __objc_msgSend_45Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_absoluteURL1 = _registerName1("absoluteURL"); - late final _sel_scheme1 = _registerName1("scheme"); - late final _sel_resourceSpecifier1 = _registerName1("resourceSpecifier"); - late final _sel_host1 = _registerName1("host"); - late final _class_NSNumber1 = _getClass1("NSNumber"); - late final _class_NSValue1 = _getClass1("NSValue"); - late final _sel_getValue_size_1 = _registerName1("getValue:size:"); - late final _sel_objCType1 = _registerName1("objCType"); - late final _sel_initWithBytes_objCType_1 = - _registerName1("initWithBytes:objCType:"); - instancetype _objc_msgSend_46( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer type, - ) { - return __objc_msgSend_46( - obj, - sel, - value, - type, - ); - } - - late final __objc_msgSend_46Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_46 = __objc_msgSend_46Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithCoder_1 = _registerName1("initWithCoder:"); - instancetype _objc_msgSend_47( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer coder, - ) { - return __objc_msgSend_47( - obj, - sel, - coder, - ); - } - - late final __objc_msgSend_47Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_47 = __objc_msgSend_47Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_valueWithBytes_objCType_1 = - _registerName1("valueWithBytes:objCType:"); - ffi.Pointer _objc_msgSend_48( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer type, - ) { - return __objc_msgSend_48( - obj, - sel, - value, - type, - ); - } - - late final __objc_msgSend_48Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_48 = __objc_msgSend_48Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_value_withObjCType_1 = _registerName1("value:withObjCType:"); - late final _sel_valueWithNonretainedObject_1 = - _registerName1("valueWithNonretainedObject:"); - ffi.Pointer _objc_msgSend_49( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - ) { - return __objc_msgSend_49( - obj, - sel, - anObject, - ); - } - - late final __objc_msgSend_49Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_49 = __objc_msgSend_49Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_nonretainedObjectValue1 = - _registerName1("nonretainedObjectValue"); - late final _sel_valueWithPointer_1 = _registerName1("valueWithPointer:"); - ffi.Pointer _objc_msgSend_50( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer pointer, - ) { - return __objc_msgSend_50( - obj, - sel, - pointer, - ); - } - - late final __objc_msgSend_50Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_50 = __objc_msgSend_50Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_pointerValue1 = _registerName1("pointerValue"); - late final _sel_isEqualToValue_1 = _registerName1("isEqualToValue:"); - bool _objc_msgSend_51( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_51( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_51Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_51 = __objc_msgSend_51Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_getValue_1 = _registerName1("getValue:"); - void _objc_msgSend_52( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_52( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_52Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_52 = __objc_msgSend_52Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_valueWithRange_1 = _registerName1("valueWithRange:"); - ffi.Pointer _objc_msgSend_53( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_53( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_53Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_53 = __objc_msgSend_53Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_rangeValue1 = _registerName1("rangeValue"); - late final _objc_msgSend_useVariants1 = ffi.Abi.current() == ffi.Abi.iosX64 || - ffi.Abi.current() == ffi.Abi.macosX64; - _NSRange _objc_msgSend_54( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_54( - obj, - sel, - ); - } - - late final __objc_msgSend_54Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_54 = __objc_msgSend_54Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_54_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_54_stret( - stret, - obj, - sel, - ); - } - - late final __objc_msgSend_54_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_54_stret = __objc_msgSend_54_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_valueWithPoint_1 = _registerName1("valueWithPoint:"); - ffi.Pointer _objc_msgSend_55( - ffi.Pointer obj, - ffi.Pointer sel, - CGPoint point, - ) { - return __objc_msgSend_55( - obj, - sel, - point, - ); - } - - late final __objc_msgSend_55Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, CGPoint)>>('objc_msgSend'); - late final __objc_msgSend_55 = __objc_msgSend_55Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, CGPoint)>(); - - late final _sel_valueWithSize_1 = _registerName1("valueWithSize:"); - ffi.Pointer _objc_msgSend_56( - ffi.Pointer obj, - ffi.Pointer sel, - CGSize size, - ) { - return __objc_msgSend_56( - obj, - sel, - size, - ); - } - - late final __objc_msgSend_56Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, CGSize)>>('objc_msgSend'); - late final __objc_msgSend_56 = __objc_msgSend_56Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, CGSize)>(); - - late final _sel_valueWithRect_1 = _registerName1("valueWithRect:"); - ffi.Pointer _objc_msgSend_57( - ffi.Pointer obj, - ffi.Pointer sel, - CGRect rect, - ) { - return __objc_msgSend_57( - obj, - sel, - rect, - ); - } - - late final __objc_msgSend_57Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, CGRect)>>('objc_msgSend'); - late final __objc_msgSend_57 = __objc_msgSend_57Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, CGRect)>(); - - late final _sel_valueWithEdgeInsets_1 = - _registerName1("valueWithEdgeInsets:"); - ffi.Pointer _objc_msgSend_58( - ffi.Pointer obj, - ffi.Pointer sel, - NSEdgeInsets insets, - ) { - return __objc_msgSend_58( - obj, - sel, - insets, - ); - } - - late final __objc_msgSend_58Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, NSEdgeInsets)>>('objc_msgSend'); - late final __objc_msgSend_58 = __objc_msgSend_58Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, NSEdgeInsets)>(); - - late final _sel_pointValue1 = _registerName1("pointValue"); - CGPoint _objc_msgSend_59( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_59( - obj, - sel, - ); - } - - late final __objc_msgSend_59Ptr = _lookup< - ffi.NativeFunction< - CGPoint Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_59 = __objc_msgSend_59Ptr.asFunction< - CGPoint Function(ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_59_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_59_stret( - stret, - obj, - sel, - ); - } - - late final __objc_msgSend_59_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_59_stret = __objc_msgSend_59_stretPtr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_sizeValue1 = _registerName1("sizeValue"); - CGSize _objc_msgSend_60( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_60( - obj, - sel, - ); - } - - late final __objc_msgSend_60Ptr = _lookup< - ffi.NativeFunction< - CGSize Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_60 = __objc_msgSend_60Ptr.asFunction< - CGSize Function(ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_60_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_60_stret( - stret, - obj, - sel, - ); - } - - late final __objc_msgSend_60_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_60_stret = __objc_msgSend_60_stretPtr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_rectValue1 = _registerName1("rectValue"); - CGRect _objc_msgSend_61( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_61( - obj, - sel, - ); - } - - late final __objc_msgSend_61Ptr = _lookup< - ffi.NativeFunction< - CGRect Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_61 = __objc_msgSend_61Ptr.asFunction< - CGRect Function(ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_61_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_61_stret( - stret, - obj, - sel, - ); - } - - late final __objc_msgSend_61_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_61_stret = __objc_msgSend_61_stretPtr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_edgeInsetsValue1 = _registerName1("edgeInsetsValue"); - NSEdgeInsets _objc_msgSend_62( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_62( - obj, - sel, - ); - } - - late final __objc_msgSend_62Ptr = _lookup< - ffi.NativeFunction< - NSEdgeInsets Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_62 = __objc_msgSend_62Ptr.asFunction< - NSEdgeInsets Function(ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_62_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_62_stret( - stret, - obj, - sel, - ); - } - - late final __objc_msgSend_62_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_62_stret = __objc_msgSend_62_stretPtr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_keyPathsForValuesAffectingValueForKey_1 = - _registerName1("keyPathsForValuesAffectingValueForKey:"); - ffi.Pointer _objc_msgSend_63( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_63( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_63Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_63 = __objc_msgSend_63Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_automaticallyNotifiesObserversForKey_1 = - _registerName1("automaticallyNotifiesObserversForKey:"); - bool _objc_msgSend_64( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_64( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_64Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_64 = __objc_msgSend_64Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSArray1 = _getClass1("NSArray"); - late final _sel_objectAtIndex_1 = _registerName1("objectAtIndex:"); - ffi.Pointer _objc_msgSend_65( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_65( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_65Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_65 = __objc_msgSend_65Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithObjects_count_1 = - _registerName1("initWithObjects:count:"); - instancetype _objc_msgSend_66( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> objects, - int cnt, - ) { - return __objc_msgSend_66( - obj, - sel, - objects, - cnt, - ); - } - - late final __objc_msgSend_66Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_66 = __objc_msgSend_66Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>, int)>(); - - late final _sel_arrayByAddingObject_1 = - _registerName1("arrayByAddingObject:"); - ffi.Pointer _objc_msgSend_67( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - ) { - return __objc_msgSend_67( - obj, - sel, - anObject, - ); - } - - late final __objc_msgSend_67Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_67 = __objc_msgSend_67Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_arrayByAddingObjectsFromArray_1 = - _registerName1("arrayByAddingObjectsFromArray:"); - ffi.Pointer _objc_msgSend_68( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherArray, - ) { - return __objc_msgSend_68( - obj, - sel, - otherArray, - ); - } - - late final __objc_msgSend_68Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_68 = __objc_msgSend_68Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_componentsJoinedByString_1 = - _registerName1("componentsJoinedByString:"); - ffi.Pointer _objc_msgSend_69( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer separator, - ) { - return __objc_msgSend_69( - obj, - sel, - separator, - ); - } - - late final __objc_msgSend_69Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_69 = __objc_msgSend_69Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_containsObject_1 = _registerName1("containsObject:"); - late final _sel_descriptionWithLocale_1 = - _registerName1("descriptionWithLocale:"); - ffi.Pointer _objc_msgSend_70( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer locale, - ) { - return __objc_msgSend_70( - obj, - sel, - locale, - ); - } - - late final __objc_msgSend_70Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_70 = __objc_msgSend_70Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_descriptionWithLocale_indent_1 = - _registerName1("descriptionWithLocale:indent:"); - ffi.Pointer _objc_msgSend_71( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer locale, - int level, - ) { - return __objc_msgSend_71( - obj, - sel, - locale, - level, - ); - } - - late final __objc_msgSend_71Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_71 = __objc_msgSend_71Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_firstObjectCommonWithArray_1 = - _registerName1("firstObjectCommonWithArray:"); - ffi.Pointer _objc_msgSend_72( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherArray, - ) { - return __objc_msgSend_72( - obj, - sel, - otherArray, - ); - } - - late final __objc_msgSend_72Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_72 = __objc_msgSend_72Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_getObjects_range_1 = _registerName1("getObjects:range:"); - void _objc_msgSend_73( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> objects, - _NSRange range, - ) { - return __objc_msgSend_73( - obj, - sel, - objects, - range, - ); - } - - late final __objc_msgSend_73Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_73 = __objc_msgSend_73Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>, _NSRange)>(); - - late final _sel_indexOfObject_1 = _registerName1("indexOfObject:"); - int _objc_msgSend_74( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - ) { - return __objc_msgSend_74( - obj, - sel, - anObject, - ); - } - - late final __objc_msgSend_74Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_74 = __objc_msgSend_74Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_indexOfObject_inRange_1 = - _registerName1("indexOfObject:inRange:"); - int _objc_msgSend_75( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - _NSRange range, - ) { - return __objc_msgSend_75( - obj, - sel, - anObject, - range, - ); - } - - late final __objc_msgSend_75Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_75 = __objc_msgSend_75Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - late final _sel_indexOfObjectIdenticalTo_1 = - _registerName1("indexOfObjectIdenticalTo:"); - late final _sel_indexOfObjectIdenticalTo_inRange_1 = - _registerName1("indexOfObjectIdenticalTo:inRange:"); - late final _sel_isEqualToArray_1 = _registerName1("isEqualToArray:"); - bool _objc_msgSend_76( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherArray, - ) { - return __objc_msgSend_76( - obj, - sel, - otherArray, - ); - } - - late final __objc_msgSend_76Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_76 = __objc_msgSend_76Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_firstObject1 = _registerName1("firstObject"); - late final _sel_lastObject1 = _registerName1("lastObject"); - late final _sel_objectEnumerator1 = _registerName1("objectEnumerator"); - ffi.Pointer _objc_msgSend_77( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_77( - obj, - sel, - ); - } - - late final __objc_msgSend_77Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_77 = __objc_msgSend_77Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_reverseObjectEnumerator1 = - _registerName1("reverseObjectEnumerator"); - late final _sel_sortedArrayHint1 = _registerName1("sortedArrayHint"); - late final _sel_sortedArrayUsingFunction_context_1 = - _registerName1("sortedArrayUsingFunction:context:"); - ffi.Pointer _objc_msgSend_78( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>> - comparator, - ffi.Pointer context, - ) { - return __objc_msgSend_78( - obj, - sel, - comparator, - context, - ); - } - - late final __objc_msgSend_78Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_78 = __objc_msgSend_78Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>, - ffi.Pointer)>(); - - late final _sel_sortedArrayUsingFunction_context_hint_1 = - _registerName1("sortedArrayUsingFunction:context:hint:"); - ffi.Pointer _objc_msgSend_79( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>> - comparator, - ffi.Pointer context, - ffi.Pointer hint, - ) { - return __objc_msgSend_79( - obj, - sel, - comparator, - context, - hint, - ); - } - - late final __objc_msgSend_79Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_79 = __objc_msgSend_79Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_sortedArrayUsingSelector_1 = - _registerName1("sortedArrayUsingSelector:"); - ffi.Pointer _objc_msgSend_80( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer comparator, - ) { - return __objc_msgSend_80( - obj, - sel, - comparator, - ); - } - - late final __objc_msgSend_80Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_80 = __objc_msgSend_80Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_subarrayWithRange_1 = _registerName1("subarrayWithRange:"); - ffi.Pointer _objc_msgSend_81( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_81( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_81Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_81 = __objc_msgSend_81Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _class_NSError1 = _getClass1("NSError"); - late final _sel_initWithDomain_code_userInfo_1 = - _registerName1("initWithDomain:code:userInfo:"); - instancetype _objc_msgSend_82( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer domain, - int code, - ffi.Pointer dict, - ) { - return __objc_msgSend_82( - obj, - sel, - domain, - code, - dict, - ); - } - - late final __objc_msgSend_82Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_82 = __objc_msgSend_82Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_errorWithDomain_code_userInfo_1 = - _registerName1("errorWithDomain:code:userInfo:"); - late final _sel_domain1 = _registerName1("domain"); - late final _sel_code1 = _registerName1("code"); - int _objc_msgSend_83( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_83( - obj, - sel, - ); - } - - late final __objc_msgSend_83Ptr = _lookup< - ffi.NativeFunction< - ffi.Long Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_83 = __objc_msgSend_83Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_userInfo1 = _registerName1("userInfo"); - late final _sel_localizedDescription1 = - _registerName1("localizedDescription"); - late final _sel_localizedFailureReason1 = - _registerName1("localizedFailureReason"); - late final _sel_localizedRecoverySuggestion1 = - _registerName1("localizedRecoverySuggestion"); - late final _sel_localizedRecoveryOptions1 = - _registerName1("localizedRecoveryOptions"); - ffi.Pointer _objc_msgSend_84( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_84( - obj, - sel, - ); - } - - late final __objc_msgSend_84Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_84 = __objc_msgSend_84Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_recoveryAttempter1 = _registerName1("recoveryAttempter"); - late final _sel_helpAnchor1 = _registerName1("helpAnchor"); - late final _sel_underlyingErrors1 = _registerName1("underlyingErrors"); - ffi.Pointer _objc_msgSend_85( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_85( - obj, - sel, - ); - } - - late final __objc_msgSend_85Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_85 = __objc_msgSend_85Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - ffi.Pointer<_ObjCBlockDesc> _newBlockDesc1() { - final d = - pkg_ffi.calloc.allocate<_ObjCBlockDesc>(ffi.sizeOf<_ObjCBlockDesc>()); - d.ref.reserved = 0; - d.ref.size = ffi.sizeOf<_ObjCBlock>(); - d.ref.copy_helper = ffi.nullptr; - d.ref.dispose_helper = ffi.nullptr; - d.ref.signature = ffi.nullptr; - return d; - } - - late final _objc_block_desc1 = _newBlockDesc1(); - late final _objc_concrete_global_block1 = - _lookup('_NSConcreteGlobalBlock'); - ffi.Pointer<_ObjCBlock> _newBlock1( - ffi.Pointer invoke, ffi.Pointer target) { - final b = pkg_ffi.calloc.allocate<_ObjCBlock>(ffi.sizeOf<_ObjCBlock>()); - b.ref.isa = _objc_concrete_global_block1; - b.ref.flags = 0; - b.ref.reserved = 0; - b.ref.invoke = invoke; - b.ref.target = target; - b.ref.descriptor = _objc_block_desc1; - final copy = _Block_copy(b.cast()).cast<_ObjCBlock>(); - pkg_ffi.calloc.free(b); - return copy; - } - - ffi.Pointer _Block_copy( - ffi.Pointer value, - ) { - return __Block_copy( - value, - ); - } - - late final __Block_copyPtr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer)>>('_Block_copy'); - late final __Block_copy = __Block_copyPtr - .asFunction Function(ffi.Pointer)>(); - - void _Block_release( - ffi.Pointer value, - ) { - return __Block_release( - value, - ); - } - - late final __Block_releasePtr = - _lookup)>>( - '_Block_release'); - late final __Block_release = - __Block_releasePtr.asFunction)>(); - - late final _objc_releaseFinalizer11 = - ffi.NativeFinalizer(__Block_releasePtr.cast()); - late final _sel_setUserInfoValueProviderForDomain_provider_1 = - _registerName1("setUserInfoValueProviderForDomain:provider:"); - void _objc_msgSend_86( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer errorDomain, - ffi.Pointer<_ObjCBlock> provider, - ) { - return __objc_msgSend_86( - obj, - sel, - errorDomain, - provider, - ); - } - - late final __objc_msgSend_86Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_86 = __objc_msgSend_86Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_userInfoValueProviderForDomain_1 = - _registerName1("userInfoValueProviderForDomain:"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_87( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer err, - ffi.Pointer userInfoKey, - ffi.Pointer errorDomain, - ) { - return __objc_msgSend_87( - obj, - sel, - err, - userInfoKey, - errorDomain, - ); - } - - late final __objc_msgSend_87Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_87 = __objc_msgSend_87Ptr.asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setKeys_triggerChangeNotificationsForDependentKey_1 = - _registerName1("setKeys:triggerChangeNotificationsForDependentKey:"); - void _objc_msgSend_88( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keys, - ffi.Pointer dependentKey, - ) { - return __objc_msgSend_88( - obj, - sel, - keys, - dependentKey, - ); - } - - late final __objc_msgSend_88Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_88 = __objc_msgSend_88Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_classFallbacksForKeyedArchiver1 = - _registerName1("classFallbacksForKeyedArchiver"); - late final _sel_classForKeyedUnarchiver1 = - _registerName1("classForKeyedUnarchiver"); - late final _sel_writeToURL_error_1 = _registerName1("writeToURL:error:"); - bool _objc_msgSend_89( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer> error, - ) { - return __objc_msgSend_89( - obj, - sel, - url, - error, - ); - } - - late final __objc_msgSend_89Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_89 = __objc_msgSend_89Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_makeObjectsPerformSelector_1 = - _registerName1("makeObjectsPerformSelector:"); - late final _sel_makeObjectsPerformSelector_withObject_1 = - _registerName1("makeObjectsPerformSelector:withObject:"); - void _objc_msgSend_90( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer argument, - ) { - return __objc_msgSend_90( - obj, - sel, - aSelector, - argument, - ); - } - - late final __objc_msgSend_90Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_90 = __objc_msgSend_90Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSIndexSet1 = _getClass1("NSIndexSet"); - late final _sel_indexSet1 = _registerName1("indexSet"); - late final _sel_indexSetWithIndex_1 = _registerName1("indexSetWithIndex:"); - late final _sel_indexSetWithIndexesInRange_1 = - _registerName1("indexSetWithIndexesInRange:"); - instancetype _objc_msgSend_91( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_91( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_91Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_91 = __objc_msgSend_91Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_initWithIndexesInRange_1 = - _registerName1("initWithIndexesInRange:"); - late final _sel_initWithIndexSet_1 = _registerName1("initWithIndexSet:"); - instancetype _objc_msgSend_92( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexSet, - ) { - return __objc_msgSend_92( - obj, - sel, - indexSet, - ); - } - - late final __objc_msgSend_92Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_92 = __objc_msgSend_92Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithIndex_1 = _registerName1("initWithIndex:"); - late final _sel_isEqualToIndexSet_1 = _registerName1("isEqualToIndexSet:"); - bool _objc_msgSend_93( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexSet, - ) { - return __objc_msgSend_93( - obj, - sel, - indexSet, - ); - } - - late final __objc_msgSend_93Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_93 = __objc_msgSend_93Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_firstIndex1 = _registerName1("firstIndex"); - late final _sel_lastIndex1 = _registerName1("lastIndex"); - late final _sel_indexGreaterThanIndex_1 = - _registerName1("indexGreaterThanIndex:"); - int _objc_msgSend_94( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_94( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_94Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_94 = __objc_msgSend_94Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_indexLessThanIndex_1 = _registerName1("indexLessThanIndex:"); - late final _sel_indexGreaterThanOrEqualToIndex_1 = - _registerName1("indexGreaterThanOrEqualToIndex:"); - late final _sel_indexLessThanOrEqualToIndex_1 = - _registerName1("indexLessThanOrEqualToIndex:"); - late final _sel_getIndexes_maxCount_inIndexRange_1 = - _registerName1("getIndexes:maxCount:inIndexRange:"); - int _objc_msgSend_95( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexBuffer, - int bufferSize, - ffi.Pointer<_NSRange> range, - ) { - return __objc_msgSend_95( - obj, - sel, - indexBuffer, - bufferSize, - range, - ); - } - - late final __objc_msgSend_95Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_NSRange>)>>('objc_msgSend'); - late final __objc_msgSend_95 = __objc_msgSend_95Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_NSRange>)>(); - - late final _sel_countOfIndexesInRange_1 = - _registerName1("countOfIndexesInRange:"); - int _objc_msgSend_96( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_96( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_96Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_96 = __objc_msgSend_96Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_containsIndex_1 = _registerName1("containsIndex:"); - bool _objc_msgSend_97( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_97( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_97Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_97 = __objc_msgSend_97Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_containsIndexesInRange_1 = - _registerName1("containsIndexesInRange:"); - bool _objc_msgSend_98( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_98( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_98Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_98 = __objc_msgSend_98Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_containsIndexes_1 = _registerName1("containsIndexes:"); - late final _sel_intersectsIndexesInRange_1 = - _registerName1("intersectsIndexesInRange:"); - late final _sel_enumerateIndexesUsingBlock_1 = - _registerName1("enumerateIndexesUsingBlock:"); - void _objc_msgSend_99( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_99( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_99Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_99 = __objc_msgSend_99Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateIndexesWithOptions_usingBlock_1 = - _registerName1("enumerateIndexesWithOptions:usingBlock:"); - void _objc_msgSend_100( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_100( - obj, - sel, - opts, - block, - ); - } - - late final __objc_msgSend_100Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_100 = __objc_msgSend_100Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateIndexesInRange_options_usingBlock_1 = - _registerName1("enumerateIndexesInRange:options:usingBlock:"); - void _objc_msgSend_101( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_101( - obj, - sel, - range, - opts, - block, - ); - } - - late final __objc_msgSend_101Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_101 = __objc_msgSend_101Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexPassingTest_1 = _registerName1("indexPassingTest:"); - int _objc_msgSend_102( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_102( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_102Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_102 = __objc_msgSend_102Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexWithOptions_passingTest_1 = - _registerName1("indexWithOptions:passingTest:"); - int _objc_msgSend_103( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_103( - obj, - sel, - opts, - predicate, - ); - } - - late final __objc_msgSend_103Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_103 = __objc_msgSend_103Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexInRange_options_passingTest_1 = - _registerName1("indexInRange:options:passingTest:"); - int _objc_msgSend_104( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_104( - obj, - sel, - range, - opts, - predicate, - ); - } - - late final __objc_msgSend_104Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_104 = __objc_msgSend_104Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, _NSRange, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexesPassingTest_1 = _registerName1("indexesPassingTest:"); - ffi.Pointer _objc_msgSend_105( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_105( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_105Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_105 = __objc_msgSend_105Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexesWithOptions_passingTest_1 = - _registerName1("indexesWithOptions:passingTest:"); - ffi.Pointer _objc_msgSend_106( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_106( - obj, - sel, - opts, - predicate, - ); - } - - late final __objc_msgSend_106Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_106 = __objc_msgSend_106Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexesInRange_options_passingTest_1 = - _registerName1("indexesInRange:options:passingTest:"); - ffi.Pointer _objc_msgSend_107( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_107( - obj, - sel, - range, - opts, - predicate, - ); - } - - late final __objc_msgSend_107Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_107 = __objc_msgSend_107Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateRangesUsingBlock_1 = - _registerName1("enumerateRangesUsingBlock:"); - void _objc_msgSend_108( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_108( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_108Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_108 = __objc_msgSend_108Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateRangesWithOptions_usingBlock_1 = - _registerName1("enumerateRangesWithOptions:usingBlock:"); - void _objc_msgSend_109( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_109( - obj, - sel, - opts, - block, - ); - } - - late final __objc_msgSend_109Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_109 = __objc_msgSend_109Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateRangesInRange_options_usingBlock_1 = - _registerName1("enumerateRangesInRange:options:usingBlock:"); - void _objc_msgSend_110( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_110( - obj, - sel, - range, - opts, - block, - ); - } - - late final __objc_msgSend_110Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_110 = __objc_msgSend_110Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_objectsAtIndexes_1 = _registerName1("objectsAtIndexes:"); - ffi.Pointer _objc_msgSend_111( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexes, - ) { - return __objc_msgSend_111( - obj, - sel, - indexes, - ); - } - - late final __objc_msgSend_111Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_111 = __objc_msgSend_111Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_objectAtIndexedSubscript_1 = - _registerName1("objectAtIndexedSubscript:"); - late final _sel_enumerateObjectsUsingBlock_1 = - _registerName1("enumerateObjectsUsingBlock:"); - void _objc_msgSend_112( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_112( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_112Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_112 = __objc_msgSend_112Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateObjectsWithOptions_usingBlock_1 = - _registerName1("enumerateObjectsWithOptions:usingBlock:"); - void _objc_msgSend_113( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_113( - obj, - sel, - opts, - block, - ); - } - - late final __objc_msgSend_113Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_113 = __objc_msgSend_113Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateObjectsAtIndexes_options_usingBlock_1 = - _registerName1("enumerateObjectsAtIndexes:options:usingBlock:"); - void _objc_msgSend_114( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer s, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_114( - obj, - sel, - s, - opts, - block, - ); - } - - late final __objc_msgSend_114Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_114 = __objc_msgSend_114Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexOfObjectPassingTest_1 = - _registerName1("indexOfObjectPassingTest:"); - int _objc_msgSend_115( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_115( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_115Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_115 = __objc_msgSend_115Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexOfObjectWithOptions_passingTest_1 = - _registerName1("indexOfObjectWithOptions:passingTest:"); - int _objc_msgSend_116( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_116( - obj, - sel, - opts, - predicate, - ); - } - - late final __objc_msgSend_116Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_116 = __objc_msgSend_116Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexOfObjectAtIndexes_options_passingTest_1 = - _registerName1("indexOfObjectAtIndexes:options:passingTest:"); - int _objc_msgSend_117( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer s, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_117( - obj, - sel, - s, - opts, - predicate, - ); - } - - late final __objc_msgSend_117Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_117 = __objc_msgSend_117Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexesOfObjectsPassingTest_1 = - _registerName1("indexesOfObjectsPassingTest:"); - ffi.Pointer _objc_msgSend_118( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_118( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_118Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_118 = __objc_msgSend_118Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexesOfObjectsWithOptions_passingTest_1 = - _registerName1("indexesOfObjectsWithOptions:passingTest:"); - ffi.Pointer _objc_msgSend_119( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_119( - obj, - sel, - opts, - predicate, - ); - } - - late final __objc_msgSend_119Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_119 = __objc_msgSend_119Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexesOfObjectsAtIndexes_options_passingTest_1 = - _registerName1("indexesOfObjectsAtIndexes:options:passingTest:"); - ffi.Pointer _objc_msgSend_120( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer s, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_120( - obj, - sel, - s, - opts, - predicate, - ); - } - - late final __objc_msgSend_120Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_120 = __objc_msgSend_120Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_sortedArrayUsingComparator_1 = - _registerName1("sortedArrayUsingComparator:"); - ffi.Pointer _objc_msgSend_121( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> cmptr, - ) { - return __objc_msgSend_121( - obj, - sel, - cmptr, - ); - } - - late final __objc_msgSend_121Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_121 = __objc_msgSend_121Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_sortedArrayWithOptions_usingComparator_1 = - _registerName1("sortedArrayWithOptions:usingComparator:"); - ffi.Pointer _objc_msgSend_122( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> cmptr, - ) { - return __objc_msgSend_122( - obj, - sel, - opts, - cmptr, - ); - } - - late final __objc_msgSend_122Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_122 = __objc_msgSend_122Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexOfObject_inSortedRange_options_usingComparator_1 = - _registerName1("indexOfObject:inSortedRange:options:usingComparator:"); - int _objc_msgSend_123( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer obj1, - _NSRange r, - int opts, - ffi.Pointer<_ObjCBlock> cmp, - ) { - return __objc_msgSend_123( - obj, - sel, - obj1, - r, - opts, - cmp, - ); - } - - late final __objc_msgSend_123Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_123 = __objc_msgSend_123Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_array1 = _registerName1("array"); - late final _sel_arrayWithObject_1 = _registerName1("arrayWithObject:"); - instancetype _objc_msgSend_124( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - ) { - return __objc_msgSend_124( - obj, - sel, - anObject, - ); - } - - late final __objc_msgSend_124Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_124 = __objc_msgSend_124Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_arrayWithObjects_count_1 = - _registerName1("arrayWithObjects:count:"); - late final _sel_arrayWithObjects_1 = _registerName1("arrayWithObjects:"); - late final _sel_arrayWithArray_1 = _registerName1("arrayWithArray:"); - instancetype _objc_msgSend_125( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer array, - ) { - return __objc_msgSend_125( - obj, - sel, - array, - ); - } - - late final __objc_msgSend_125Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_125 = __objc_msgSend_125Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithObjects_1 = _registerName1("initWithObjects:"); - late final _sel_initWithArray_1 = _registerName1("initWithArray:"); - late final _sel_initWithArray_copyItems_1 = - _registerName1("initWithArray:copyItems:"); - instancetype _objc_msgSend_126( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer array, - bool flag, - ) { - return __objc_msgSend_126( - obj, - sel, - array, - flag, - ); - } - - late final __objc_msgSend_126Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_126 = __objc_msgSend_126Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_initWithContentsOfURL_error_1 = - _registerName1("initWithContentsOfURL:error:"); - ffi.Pointer _objc_msgSend_127( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer> error, - ) { - return __objc_msgSend_127( - obj, - sel, - url, - error, - ); - } - - late final __objc_msgSend_127Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_127 = __objc_msgSend_127Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_arrayWithContentsOfURL_error_1 = - _registerName1("arrayWithContentsOfURL:error:"); - late final _sel_differenceFromArray_withOptions_usingEquivalenceTest_1 = - _registerName1("differenceFromArray:withOptions:usingEquivalenceTest:"); - ffi.Pointer _objc_msgSend_128( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - int options, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_128( - obj, - sel, - other, - options, - block, - ); - } - - late final __objc_msgSend_128Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_128 = __objc_msgSend_128Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_differenceFromArray_withOptions_1 = - _registerName1("differenceFromArray:withOptions:"); - ffi.Pointer _objc_msgSend_129( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - int options, - ) { - return __objc_msgSend_129( - obj, - sel, - other, - options, - ); - } - - late final __objc_msgSend_129Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_129 = __objc_msgSend_129Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_differenceFromArray_1 = - _registerName1("differenceFromArray:"); - late final _sel_arrayByApplyingDifference_1 = - _registerName1("arrayByApplyingDifference:"); - ffi.Pointer _objc_msgSend_130( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer difference, - ) { - return __objc_msgSend_130( - obj, - sel, - difference, - ); - } - - late final __objc_msgSend_130Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_130 = __objc_msgSend_130Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_getObjects_1 = _registerName1("getObjects:"); - void _objc_msgSend_131( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> objects, - ) { - return __objc_msgSend_131( - obj, - sel, - objects, - ); - } - - late final __objc_msgSend_131Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_131 = __objc_msgSend_131Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_arrayWithContentsOfFile_1 = - _registerName1("arrayWithContentsOfFile:"); - ffi.Pointer _objc_msgSend_132( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_132( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_132Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_132 = __objc_msgSend_132Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_arrayWithContentsOfURL_1 = - _registerName1("arrayWithContentsOfURL:"); - ffi.Pointer _objc_msgSend_133( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_133( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_133Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_133 = __objc_msgSend_133Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithContentsOfFile_1 = - _registerName1("initWithContentsOfFile:"); - late final _sel_initWithContentsOfURL_1 = - _registerName1("initWithContentsOfURL:"); - late final _sel_writeToURL_atomically_1 = - _registerName1("writeToURL:atomically:"); - bool _objc_msgSend_134( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - bool atomically, - ) { - return __objc_msgSend_134( - obj, - sel, - url, - atomically, - ); - } - - late final __objc_msgSend_134Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_134 = __objc_msgSend_134Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_pathsMatchingExtensions_1 = - _registerName1("pathsMatchingExtensions:"); - late final _sel_valueForKey_1 = _registerName1("valueForKey:"); - late final _sel_setValue_forKey_1 = _registerName1("setValue:forKey:"); - void _objc_msgSend_135( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer key, - ) { - return __objc_msgSend_135( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_135Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_135 = __objc_msgSend_135Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addObserver_toObjectsAtIndexes_forKeyPath_options_context_1 = - _registerName1( - "addObserver:toObjectsAtIndexes:forKeyPath:options:context:"); - void _objc_msgSend_136( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer observer, - ffi.Pointer indexes, - ffi.Pointer keyPath, - int options, - ffi.Pointer context, - ) { - return __objc_msgSend_136( - obj, - sel, - observer, - indexes, - keyPath, - options, - context, - ); - } - - late final __objc_msgSend_136Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_136 = __objc_msgSend_136Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer)>(); - - late final _sel_removeObserver_fromObjectsAtIndexes_forKeyPath_context_1 = - _registerName1("removeObserver:fromObjectsAtIndexes:forKeyPath:context:"); - void _objc_msgSend_137( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer observer, - ffi.Pointer indexes, - ffi.Pointer keyPath, - ffi.Pointer context, - ) { - return __objc_msgSend_137( - obj, - sel, - observer, - indexes, - keyPath, - context, - ); - } - - late final __objc_msgSend_137Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_137 = __objc_msgSend_137Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeObserver_fromObjectsAtIndexes_forKeyPath_1 = - _registerName1("removeObserver:fromObjectsAtIndexes:forKeyPath:"); - void _objc_msgSend_138( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer observer, - ffi.Pointer indexes, - ffi.Pointer keyPath, - ) { - return __objc_msgSend_138( - obj, - sel, - observer, - indexes, - keyPath, - ); - } - - late final __objc_msgSend_138Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_138 = __objc_msgSend_138Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_addObserver_forKeyPath_options_context_1 = - _registerName1("addObserver:forKeyPath:options:context:"); - void _objc_msgSend_139( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer observer, - ffi.Pointer keyPath, - int options, - ffi.Pointer context, - ) { - return __objc_msgSend_139( - obj, - sel, - observer, - keyPath, - options, - context, - ); - } - - late final __objc_msgSend_139Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_139 = __objc_msgSend_139Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer)>(); - - late final _sel_removeObserver_forKeyPath_context_1 = - _registerName1("removeObserver:forKeyPath:context:"); - void _objc_msgSend_140( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer observer, - ffi.Pointer keyPath, - ffi.Pointer context, - ) { - return __objc_msgSend_140( - obj, - sel, - observer, - keyPath, - context, - ); - } - - late final __objc_msgSend_140Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_140 = __objc_msgSend_140Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeObserver_forKeyPath_1 = - _registerName1("removeObserver:forKeyPath:"); - void _objc_msgSend_141( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer observer, - ffi.Pointer keyPath, - ) { - return __objc_msgSend_141( - obj, - sel, - observer, - keyPath, - ); - } - - late final __objc_msgSend_141Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_141 = __objc_msgSend_141Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_sortedArrayUsingDescriptors_1 = - _registerName1("sortedArrayUsingDescriptors:"); - late final _class_NSPredicate1 = _getClass1("NSPredicate"); - late final _sel_predicateWithFormat_argumentArray_1 = - _registerName1("predicateWithFormat:argumentArray:"); - ffi.Pointer _objc_msgSend_142( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer predicateFormat, - ffi.Pointer arguments, - ) { - return __objc_msgSend_142( - obj, - sel, - predicateFormat, - arguments, - ); - } - - late final __objc_msgSend_142Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_142 = __objc_msgSend_142Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_predicateWithFormat_1 = - _registerName1("predicateWithFormat:"); - ffi.Pointer _objc_msgSend_143( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer predicateFormat, - ) { - return __objc_msgSend_143( - obj, - sel, - predicateFormat, - ); - } - - late final __objc_msgSend_143Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_143 = __objc_msgSend_143Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_predicateWithFormat_arguments_1 = - _registerName1("predicateWithFormat:arguments:"); - ffi.Pointer _objc_msgSend_144( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer predicateFormat, - ffi.Pointer<__va_list_tag> argList, - ) { - return __objc_msgSend_144( - obj, - sel, - predicateFormat, - argList, - ); - } - - late final __objc_msgSend_144Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); - late final __objc_msgSend_144 = __objc_msgSend_144Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>(); - - late final _sel_predicateFromMetadataQueryString_1 = - _registerName1("predicateFromMetadataQueryString:"); - ffi.Pointer _objc_msgSend_145( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer queryString, - ) { - return __objc_msgSend_145( - obj, - sel, - queryString, - ); - } - - late final __objc_msgSend_145Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_145 = __objc_msgSend_145Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_predicateWithValue_1 = _registerName1("predicateWithValue:"); - ffi.Pointer _objc_msgSend_146( - ffi.Pointer obj, - ffi.Pointer sel, - bool value, - ) { - return __objc_msgSend_146( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_146Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_146 = __objc_msgSend_146Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _class_NSDictionary1 = _getClass1("NSDictionary"); - late final _sel_objectForKey_1 = _registerName1("objectForKey:"); - late final _sel_keyEnumerator1 = _registerName1("keyEnumerator"); - late final _sel_initWithObjects_forKeys_count_1 = - _registerName1("initWithObjects:forKeys:count:"); - instancetype _objc_msgSend_147( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> objects, - ffi.Pointer> keys, - int cnt, - ) { - return __objc_msgSend_147( - obj, - sel, - objects, - keys, - cnt, - ); - } - - late final __objc_msgSend_147Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_147 = __objc_msgSend_147Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>, - int)>(); - - late final _sel_allKeys1 = _registerName1("allKeys"); - late final _sel_allKeysForObject_1 = _registerName1("allKeysForObject:"); - late final _sel_allValues1 = _registerName1("allValues"); - late final _sel_descriptionInStringsFileFormat1 = - _registerName1("descriptionInStringsFileFormat"); - late final _sel_isEqualToDictionary_1 = - _registerName1("isEqualToDictionary:"); - bool _objc_msgSend_148( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherDictionary, - ) { - return __objc_msgSend_148( - obj, - sel, - otherDictionary, - ); - } - - late final __objc_msgSend_148Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_148 = __objc_msgSend_148Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_objectsForKeys_notFoundMarker_1 = - _registerName1("objectsForKeys:notFoundMarker:"); - ffi.Pointer _objc_msgSend_149( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keys, - ffi.Pointer marker, - ) { - return __objc_msgSend_149( - obj, - sel, - keys, - marker, - ); - } - - late final __objc_msgSend_149Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_149 = __objc_msgSend_149Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_keysSortedByValueUsingSelector_1 = - _registerName1("keysSortedByValueUsingSelector:"); - late final _sel_getObjects_andKeys_count_1 = - _registerName1("getObjects:andKeys:count:"); - void _objc_msgSend_150( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> objects, - ffi.Pointer> keys, - int count, - ) { - return __objc_msgSend_150( - obj, - sel, - objects, - keys, - count, - ); - } - - late final __objc_msgSend_150Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_150 = __objc_msgSend_150Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>, - int)>(); - - late final _sel_objectForKeyedSubscript_1 = - _registerName1("objectForKeyedSubscript:"); - late final _sel_enumerateKeysAndObjectsUsingBlock_1 = - _registerName1("enumerateKeysAndObjectsUsingBlock:"); - void _objc_msgSend_151( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_151( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_151Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_151 = __objc_msgSend_151Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateKeysAndObjectsWithOptions_usingBlock_1 = - _registerName1("enumerateKeysAndObjectsWithOptions:usingBlock:"); - void _objc_msgSend_152( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_152( - obj, - sel, - opts, - block, - ); - } - - late final __objc_msgSend_152Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_152 = __objc_msgSend_152Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_keysSortedByValueUsingComparator_1 = - _registerName1("keysSortedByValueUsingComparator:"); - late final _sel_keysSortedByValueWithOptions_usingComparator_1 = - _registerName1("keysSortedByValueWithOptions:usingComparator:"); - late final _sel_keysOfEntriesPassingTest_1 = - _registerName1("keysOfEntriesPassingTest:"); - ffi.Pointer _objc_msgSend_153( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_153( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_153Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_153 = __objc_msgSend_153Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_keysOfEntriesWithOptions_passingTest_1 = - _registerName1("keysOfEntriesWithOptions:passingTest:"); - ffi.Pointer _objc_msgSend_154( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_154( - obj, - sel, - opts, - predicate, - ); - } - - late final __objc_msgSend_154Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_154 = __objc_msgSend_154Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_getObjects_andKeys_1 = _registerName1("getObjects:andKeys:"); - void _objc_msgSend_155( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> objects, - ffi.Pointer> keys, - ) { - return __objc_msgSend_155( - obj, - sel, - objects, - keys, - ); - } - - late final __objc_msgSend_155Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_155 = __objc_msgSend_155Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_dictionaryWithContentsOfFile_1 = - _registerName1("dictionaryWithContentsOfFile:"); - ffi.Pointer _objc_msgSend_156( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_156( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_156Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_156 = __objc_msgSend_156Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dictionaryWithContentsOfURL_1 = - _registerName1("dictionaryWithContentsOfURL:"); - ffi.Pointer _objc_msgSend_157( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_157( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_157Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_157 = __objc_msgSend_157Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dictionary1 = _registerName1("dictionary"); - late final _sel_dictionaryWithObject_forKey_1 = - _registerName1("dictionaryWithObject:forKey:"); - instancetype _objc_msgSend_158( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer object, - ffi.Pointer key, - ) { - return __objc_msgSend_158( - obj, - sel, - object, - key, - ); - } - - late final __objc_msgSend_158Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_158 = __objc_msgSend_158Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dictionaryWithObjects_forKeys_count_1 = - _registerName1("dictionaryWithObjects:forKeys:count:"); - late final _sel_dictionaryWithObjectsAndKeys_1 = - _registerName1("dictionaryWithObjectsAndKeys:"); - late final _sel_dictionaryWithDictionary_1 = - _registerName1("dictionaryWithDictionary:"); - instancetype _objc_msgSend_159( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer dict, - ) { - return __objc_msgSend_159( - obj, - sel, - dict, - ); - } - - late final __objc_msgSend_159Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_159 = __objc_msgSend_159Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_dictionaryWithObjects_forKeys_1 = - _registerName1("dictionaryWithObjects:forKeys:"); - instancetype _objc_msgSend_160( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer objects, - ffi.Pointer keys, - ) { - return __objc_msgSend_160( - obj, - sel, - objects, - keys, - ); - } - - late final __objc_msgSend_160Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_160 = __objc_msgSend_160Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithObjectsAndKeys_1 = - _registerName1("initWithObjectsAndKeys:"); - late final _sel_initWithDictionary_1 = _registerName1("initWithDictionary:"); - late final _sel_initWithDictionary_copyItems_1 = - _registerName1("initWithDictionary:copyItems:"); - instancetype _objc_msgSend_161( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherDictionary, - bool flag, - ) { - return __objc_msgSend_161( - obj, - sel, - otherDictionary, - flag, - ); - } - - late final __objc_msgSend_161Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_161 = __objc_msgSend_161Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_initWithObjects_forKeys_1 = - _registerName1("initWithObjects:forKeys:"); - ffi.Pointer _objc_msgSend_162( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer> error, - ) { - return __objc_msgSend_162( - obj, - sel, - url, - error, - ); - } - - late final __objc_msgSend_162Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_162 = __objc_msgSend_162Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_dictionaryWithContentsOfURL_error_1 = - _registerName1("dictionaryWithContentsOfURL:error:"); - late final _sel_sharedKeySetForKeys_1 = - _registerName1("sharedKeySetForKeys:"); - late final _sel_countByEnumeratingWithState_objects_count_1 = - _registerName1("countByEnumeratingWithState:objects:count:"); - int _objc_msgSend_163( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer state, - ffi.Pointer> buffer, - int len, - ) { - return __objc_msgSend_163( - obj, - sel, - state, - buffer, - len, - ); - } - - late final __objc_msgSend_163Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_163 = __objc_msgSend_163Ptr.asFunction< - int Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - int)>(); - - late final _sel_fileSize1 = _registerName1("fileSize"); - int _objc_msgSend_164( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_164( - obj, - sel, - ); - } - - late final __objc_msgSend_164Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLongLong Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_164 = __objc_msgSend_164Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSDate1 = _getClass1("NSDate"); - late final _sel_timeIntervalSinceReferenceDate1 = - _registerName1("timeIntervalSinceReferenceDate"); - double _objc_msgSend_165( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_165( - obj, - sel, - ); - } - - late final __objc_msgSend_165Ptr = _lookup< - ffi.NativeFunction< - ffi.Double Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_165 = __objc_msgSend_165Ptr.asFunction< - double Function(ffi.Pointer, ffi.Pointer)>(); - - double _objc_msgSend_165_fpret( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_165_fpret( - obj, - sel, - ); - } - - late final __objc_msgSend_165_fpretPtr = _lookup< - ffi.NativeFunction< - ffi.Double Function(ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_fpret'); - late final __objc_msgSend_165_fpret = __objc_msgSend_165_fpretPtr.asFunction< - double Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithTimeIntervalSinceReferenceDate_1 = - _registerName1("initWithTimeIntervalSinceReferenceDate:"); - instancetype _objc_msgSend_166( - ffi.Pointer obj, - ffi.Pointer sel, - double ti, - ) { - return __objc_msgSend_166( - obj, - sel, - ti, - ); - } - - late final __objc_msgSend_166Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_166 = __objc_msgSend_166Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_timeIntervalSinceDate_1 = - _registerName1("timeIntervalSinceDate:"); - double _objc_msgSend_167( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anotherDate, - ) { - return __objc_msgSend_167( - obj, - sel, - anotherDate, - ); - } - - late final __objc_msgSend_167Ptr = _lookup< - ffi.NativeFunction< - ffi.Double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_167 = __objc_msgSend_167Ptr.asFunction< - double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - double _objc_msgSend_167_fpret( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anotherDate, - ) { - return __objc_msgSend_167_fpret( - obj, - sel, - anotherDate, - ); - } - - late final __objc_msgSend_167_fpretPtr = _lookup< - ffi.NativeFunction< - ffi.Double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_fpret'); - late final __objc_msgSend_167_fpret = __objc_msgSend_167_fpretPtr.asFunction< - double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_timeIntervalSinceNow1 = - _registerName1("timeIntervalSinceNow"); - late final _sel_timeIntervalSince19701 = - _registerName1("timeIntervalSince1970"); - late final _sel_addTimeInterval_1 = _registerName1("addTimeInterval:"); - late final _sel_dateByAddingTimeInterval_1 = - _registerName1("dateByAddingTimeInterval:"); - late final _sel_earlierDate_1 = _registerName1("earlierDate:"); - ffi.Pointer _objc_msgSend_168( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anotherDate, - ) { - return __objc_msgSend_168( - obj, - sel, - anotherDate, - ); - } - - late final __objc_msgSend_168Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_168 = __objc_msgSend_168Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_laterDate_1 = _registerName1("laterDate:"); - late final _sel_compare_1 = _registerName1("compare:"); - int _objc_msgSend_169( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_169( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_169Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_169 = __objc_msgSend_169Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isEqualToDate_1 = _registerName1("isEqualToDate:"); - bool _objc_msgSend_170( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherDate, - ) { - return __objc_msgSend_170( - obj, - sel, - otherDate, - ); - } - - late final __objc_msgSend_170Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_170 = __objc_msgSend_170Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_date1 = _registerName1("date"); - late final _sel_dateWithTimeIntervalSinceNow_1 = - _registerName1("dateWithTimeIntervalSinceNow:"); - late final _sel_dateWithTimeIntervalSinceReferenceDate_1 = - _registerName1("dateWithTimeIntervalSinceReferenceDate:"); - late final _sel_dateWithTimeIntervalSince1970_1 = - _registerName1("dateWithTimeIntervalSince1970:"); - late final _sel_dateWithTimeInterval_sinceDate_1 = - _registerName1("dateWithTimeInterval:sinceDate:"); - instancetype _objc_msgSend_171( - ffi.Pointer obj, - ffi.Pointer sel, - double secsToBeAdded, - ffi.Pointer date, - ) { - return __objc_msgSend_171( - obj, - sel, - secsToBeAdded, - date, - ); - } - - late final __objc_msgSend_171Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Double, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_171 = __objc_msgSend_171Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - double, ffi.Pointer)>(); - - late final _sel_distantFuture1 = _registerName1("distantFuture"); - ffi.Pointer _objc_msgSend_172( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_172( - obj, - sel, - ); - } - - late final __objc_msgSend_172Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_172 = __objc_msgSend_172Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_distantPast1 = _registerName1("distantPast"); - late final _sel_now1 = _registerName1("now"); - late final _sel_initWithTimeIntervalSinceNow_1 = - _registerName1("initWithTimeIntervalSinceNow:"); - late final _sel_initWithTimeIntervalSince1970_1 = - _registerName1("initWithTimeIntervalSince1970:"); - late final _sel_initWithTimeInterval_sinceDate_1 = - _registerName1("initWithTimeInterval:sinceDate:"); - late final _sel_dateWithNaturalLanguageString_locale_1 = - _registerName1("dateWithNaturalLanguageString:locale:"); - ffi.Pointer _objc_msgSend_173( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - ffi.Pointer locale, - ) { - return __objc_msgSend_173( - obj, - sel, - string, - locale, - ); - } - - late final __objc_msgSend_173Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_173 = __objc_msgSend_173Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_dateWithNaturalLanguageString_1 = - _registerName1("dateWithNaturalLanguageString:"); - late final _sel_dateWithString_1 = _registerName1("dateWithString:"); - late final _class_NSCalendarDate1 = _getClass1("NSCalendarDate"); - late final _sel_calendarDate1 = _registerName1("calendarDate"); - late final _sel_dateWithString_calendarFormat_locale_1 = - _registerName1("dateWithString:calendarFormat:locale:"); - ffi.Pointer _objc_msgSend_174( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer description, - ffi.Pointer format, - ffi.Pointer locale, - ) { - return __objc_msgSend_174( - obj, - sel, - description, - format, - locale, - ); - } - - late final __objc_msgSend_174Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_174 = __objc_msgSend_174Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_dateWithString_calendarFormat_1 = - _registerName1("dateWithString:calendarFormat:"); - ffi.Pointer _objc_msgSend_175( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer description, - ffi.Pointer format, - ) { - return __objc_msgSend_175( - obj, - sel, - description, - format, - ); - } - - late final __objc_msgSend_175Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_175 = __objc_msgSend_175Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSTimeZone1 = _getClass1("NSTimeZone"); - late final _sel_name1 = _registerName1("name"); - late final _sel_data1 = _registerName1("data"); - late final _sel_secondsFromGMTForDate_1 = - _registerName1("secondsFromGMTForDate:"); - int _objc_msgSend_176( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aDate, - ) { - return __objc_msgSend_176( - obj, - sel, - aDate, - ); - } - - late final __objc_msgSend_176Ptr = _lookup< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_176 = __objc_msgSend_176Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_abbreviationForDate_1 = - _registerName1("abbreviationForDate:"); - ffi.Pointer _objc_msgSend_177( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aDate, - ) { - return __objc_msgSend_177( - obj, - sel, - aDate, - ); - } - - late final __objc_msgSend_177Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_177 = __objc_msgSend_177Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isDaylightSavingTimeForDate_1 = - _registerName1("isDaylightSavingTimeForDate:"); - late final _sel_daylightSavingTimeOffsetForDate_1 = - _registerName1("daylightSavingTimeOffsetForDate:"); - late final _sel_nextDaylightSavingTimeTransitionAfterDate_1 = - _registerName1("nextDaylightSavingTimeTransitionAfterDate:"); - ffi.Pointer _objc_msgSend_178( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aDate, - ) { - return __objc_msgSend_178( - obj, - sel, - aDate, - ); - } - - late final __objc_msgSend_178Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_178 = __objc_msgSend_178Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_systemTimeZone1 = _registerName1("systemTimeZone"); - ffi.Pointer _objc_msgSend_179( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_179( - obj, - sel, - ); - } - - late final __objc_msgSend_179Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_179 = __objc_msgSend_179Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_resetSystemTimeZone1 = _registerName1("resetSystemTimeZone"); - late final _sel_defaultTimeZone1 = _registerName1("defaultTimeZone"); - late final _sel_setDefaultTimeZone_1 = _registerName1("setDefaultTimeZone:"); - void _objc_msgSend_180( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_180( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_180Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_180 = __objc_msgSend_180Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_localTimeZone1 = _registerName1("localTimeZone"); - late final _sel_knownTimeZoneNames1 = _registerName1("knownTimeZoneNames"); - late final _sel_abbreviationDictionary1 = - _registerName1("abbreviationDictionary"); - ffi.Pointer _objc_msgSend_181( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_181( - obj, - sel, - ); - } - - late final __objc_msgSend_181Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_181 = __objc_msgSend_181Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setAbbreviationDictionary_1 = - _registerName1("setAbbreviationDictionary:"); - void _objc_msgSend_182( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_182( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_182Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_182 = __objc_msgSend_182Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_timeZoneDataVersion1 = _registerName1("timeZoneDataVersion"); - late final _sel_secondsFromGMT1 = _registerName1("secondsFromGMT"); - late final _sel_abbreviation1 = _registerName1("abbreviation"); - late final _sel_isDaylightSavingTime1 = - _registerName1("isDaylightSavingTime"); - late final _sel_daylightSavingTimeOffset1 = - _registerName1("daylightSavingTimeOffset"); - late final _sel_nextDaylightSavingTimeTransition1 = - _registerName1("nextDaylightSavingTimeTransition"); - ffi.Pointer _objc_msgSend_183( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_183( - obj, - sel, - ); - } - - late final __objc_msgSend_183Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_183 = __objc_msgSend_183Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isEqualToTimeZone_1 = _registerName1("isEqualToTimeZone:"); - bool _objc_msgSend_184( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aTimeZone, - ) { - return __objc_msgSend_184( - obj, - sel, - aTimeZone, - ); - } - - late final __objc_msgSend_184Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_184 = __objc_msgSend_184Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSLocale1 = _getClass1("NSLocale"); - late final _sel_displayNameForKey_value_1 = - _registerName1("displayNameForKey:value:"); - ffi.Pointer _objc_msgSend_185( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer value, - ) { - return __objc_msgSend_185( - obj, - sel, - key, - value, - ); - } - - late final __objc_msgSend_185Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_185 = __objc_msgSend_185Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithLocaleIdentifier_1 = - _registerName1("initWithLocaleIdentifier:"); - late final _sel_localeIdentifier1 = _registerName1("localeIdentifier"); - late final _sel_localizedStringForLocaleIdentifier_1 = - _registerName1("localizedStringForLocaleIdentifier:"); - late final _sel_languageCode1 = _registerName1("languageCode"); - late final _sel_localizedStringForLanguageCode_1 = - _registerName1("localizedStringForLanguageCode:"); - ffi.Pointer _objc_msgSend_186( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer languageCode, - ) { - return __objc_msgSend_186( - obj, - sel, - languageCode, - ); - } - - late final __objc_msgSend_186Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_186 = __objc_msgSend_186Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_languageIdentifier1 = _registerName1("languageIdentifier"); - late final _sel_countryCode1 = _registerName1("countryCode"); - late final _sel_localizedStringForCountryCode_1 = - _registerName1("localizedStringForCountryCode:"); - late final _sel_regionCode1 = _registerName1("regionCode"); - late final _sel_scriptCode1 = _registerName1("scriptCode"); - late final _sel_localizedStringForScriptCode_1 = - _registerName1("localizedStringForScriptCode:"); - late final _sel_variantCode1 = _registerName1("variantCode"); - late final _sel_localizedStringForVariantCode_1 = - _registerName1("localizedStringForVariantCode:"); - late final _class_NSCharacterSet1 = _getClass1("NSCharacterSet"); - late final _sel_controlCharacterSet1 = _registerName1("controlCharacterSet"); - ffi.Pointer _objc_msgSend_187( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_187( - obj, - sel, - ); - } - - late final __objc_msgSend_187Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_187 = __objc_msgSend_187Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_whitespaceCharacterSet1 = - _registerName1("whitespaceCharacterSet"); - late final _sel_whitespaceAndNewlineCharacterSet1 = - _registerName1("whitespaceAndNewlineCharacterSet"); - late final _sel_decimalDigitCharacterSet1 = - _registerName1("decimalDigitCharacterSet"); - late final _sel_letterCharacterSet1 = _registerName1("letterCharacterSet"); - late final _sel_lowercaseLetterCharacterSet1 = - _registerName1("lowercaseLetterCharacterSet"); - late final _sel_uppercaseLetterCharacterSet1 = - _registerName1("uppercaseLetterCharacterSet"); - late final _sel_nonBaseCharacterSet1 = _registerName1("nonBaseCharacterSet"); - late final _sel_alphanumericCharacterSet1 = - _registerName1("alphanumericCharacterSet"); - late final _sel_decomposableCharacterSet1 = - _registerName1("decomposableCharacterSet"); - late final _sel_illegalCharacterSet1 = _registerName1("illegalCharacterSet"); - late final _sel_punctuationCharacterSet1 = - _registerName1("punctuationCharacterSet"); - late final _sel_capitalizedLetterCharacterSet1 = - _registerName1("capitalizedLetterCharacterSet"); - late final _sel_symbolCharacterSet1 = _registerName1("symbolCharacterSet"); - late final _sel_newlineCharacterSet1 = _registerName1("newlineCharacterSet"); - late final _sel_characterSetWithRange_1 = - _registerName1("characterSetWithRange:"); - ffi.Pointer _objc_msgSend_188( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange aRange, - ) { - return __objc_msgSend_188( - obj, - sel, - aRange, - ); - } - - late final __objc_msgSend_188Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_188 = __objc_msgSend_188Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_characterSetWithCharactersInString_1 = - _registerName1("characterSetWithCharactersInString:"); - ffi.Pointer _objc_msgSend_189( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aString, - ) { - return __objc_msgSend_189( - obj, - sel, - aString, - ); - } - - late final __objc_msgSend_189Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_189 = __objc_msgSend_189Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_characterSetWithBitmapRepresentation_1 = - _registerName1("characterSetWithBitmapRepresentation:"); - ffi.Pointer _objc_msgSend_190( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ) { - return __objc_msgSend_190( - obj, - sel, - data, - ); - } - - late final __objc_msgSend_190Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_190 = __objc_msgSend_190Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_characterSetWithContentsOfFile_1 = - _registerName1("characterSetWithContentsOfFile:"); - ffi.Pointer _objc_msgSend_191( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer fName, - ) { - return __objc_msgSend_191( - obj, - sel, - fName, - ); - } - - late final __objc_msgSend_191Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_191 = __objc_msgSend_191Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - instancetype _objc_msgSend_192( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer coder, - ) { - return __objc_msgSend_192( - obj, - sel, - coder, - ); - } - - late final __objc_msgSend_192Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_192 = __objc_msgSend_192Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_characterIsMember_1 = _registerName1("characterIsMember:"); - bool _objc_msgSend_193( - ffi.Pointer obj, - ffi.Pointer sel, - int aCharacter, - ) { - return __objc_msgSend_193( - obj, - sel, - aCharacter, - ); - } - - late final __objc_msgSend_193Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedShort)>>('objc_msgSend'); - late final __objc_msgSend_193 = __objc_msgSend_193Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_bitmapRepresentation1 = - _registerName1("bitmapRepresentation"); - late final _sel_invertedSet1 = _registerName1("invertedSet"); - late final _sel_longCharacterIsMember_1 = - _registerName1("longCharacterIsMember:"); - bool _objc_msgSend_194( - ffi.Pointer obj, - ffi.Pointer sel, - int theLongChar, - ) { - return __objc_msgSend_194( - obj, - sel, - theLongChar, - ); - } - - late final __objc_msgSend_194Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_194 = __objc_msgSend_194Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_isSupersetOfSet_1 = _registerName1("isSupersetOfSet:"); - bool _objc_msgSend_195( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer theOtherSet, - ) { - return __objc_msgSend_195( - obj, - sel, - theOtherSet, - ); - } - - late final __objc_msgSend_195Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_195 = __objc_msgSend_195Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_hasMemberInPlane_1 = _registerName1("hasMemberInPlane:"); - bool _objc_msgSend_196( - ffi.Pointer obj, - ffi.Pointer sel, - int thePlane, - ) { - return __objc_msgSend_196( - obj, - sel, - thePlane, - ); - } - - late final __objc_msgSend_196Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Uint8)>>('objc_msgSend'); - late final __objc_msgSend_196 = __objc_msgSend_196Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_URLUserAllowedCharacterSet1 = - _registerName1("URLUserAllowedCharacterSet"); - late final _sel_URLPasswordAllowedCharacterSet1 = - _registerName1("URLPasswordAllowedCharacterSet"); - late final _sel_URLHostAllowedCharacterSet1 = - _registerName1("URLHostAllowedCharacterSet"); - late final _sel_URLPathAllowedCharacterSet1 = - _registerName1("URLPathAllowedCharacterSet"); - late final _sel_URLQueryAllowedCharacterSet1 = - _registerName1("URLQueryAllowedCharacterSet"); - late final _sel_URLFragmentAllowedCharacterSet1 = - _registerName1("URLFragmentAllowedCharacterSet"); - late final _sel_exemplarCharacterSet1 = - _registerName1("exemplarCharacterSet"); - late final _sel_calendarIdentifier1 = _registerName1("calendarIdentifier"); - late final _sel_localizedStringForCalendarIdentifier_1 = - _registerName1("localizedStringForCalendarIdentifier:"); - late final _sel_collationIdentifier1 = _registerName1("collationIdentifier"); - late final _sel_localizedStringForCollationIdentifier_1 = - _registerName1("localizedStringForCollationIdentifier:"); - late final _sel_usesMetricSystem1 = _registerName1("usesMetricSystem"); - late final _sel_decimalSeparator1 = _registerName1("decimalSeparator"); - late final _sel_groupingSeparator1 = _registerName1("groupingSeparator"); - late final _sel_currencySymbol1 = _registerName1("currencySymbol"); - late final _sel_currencyCode1 = _registerName1("currencyCode"); - late final _sel_localizedStringForCurrencyCode_1 = - _registerName1("localizedStringForCurrencyCode:"); - late final _sel_collatorIdentifier1 = _registerName1("collatorIdentifier"); - late final _sel_localizedStringForCollatorIdentifier_1 = - _registerName1("localizedStringForCollatorIdentifier:"); - late final _sel_quotationBeginDelimiter1 = - _registerName1("quotationBeginDelimiter"); - late final _sel_quotationEndDelimiter1 = - _registerName1("quotationEndDelimiter"); - late final _sel_alternateQuotationBeginDelimiter1 = - _registerName1("alternateQuotationBeginDelimiter"); - late final _sel_alternateQuotationEndDelimiter1 = - _registerName1("alternateQuotationEndDelimiter"); - late final _sel_autoupdatingCurrentLocale1 = - _registerName1("autoupdatingCurrentLocale"); - ffi.Pointer _objc_msgSend_197( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_197( - obj, - sel, - ); - } - - late final __objc_msgSend_197Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_197 = __objc_msgSend_197Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_currentLocale1 = _registerName1("currentLocale"); - late final _sel_systemLocale1 = _registerName1("systemLocale"); - late final _sel_localeWithLocaleIdentifier_1 = - _registerName1("localeWithLocaleIdentifier:"); - late final _sel_availableLocaleIdentifiers1 = - _registerName1("availableLocaleIdentifiers"); - late final _sel_ISOLanguageCodes1 = _registerName1("ISOLanguageCodes"); - late final _sel_ISOCountryCodes1 = _registerName1("ISOCountryCodes"); - late final _sel_ISOCurrencyCodes1 = _registerName1("ISOCurrencyCodes"); - late final _sel_commonISOCurrencyCodes1 = - _registerName1("commonISOCurrencyCodes"); - late final _sel_preferredLanguages1 = _registerName1("preferredLanguages"); - late final _sel_componentsFromLocaleIdentifier_1 = - _registerName1("componentsFromLocaleIdentifier:"); - ffi.Pointer _objc_msgSend_198( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - ) { - return __objc_msgSend_198( - obj, - sel, - string, - ); - } - - late final __objc_msgSend_198Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_198 = __objc_msgSend_198Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_localeIdentifierFromComponents_1 = - _registerName1("localeIdentifierFromComponents:"); - ffi.Pointer _objc_msgSend_199( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer dict, - ) { - return __objc_msgSend_199( - obj, - sel, - dict, - ); - } - - late final __objc_msgSend_199Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_199 = __objc_msgSend_199Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_canonicalLocaleIdentifierFromString_1 = - _registerName1("canonicalLocaleIdentifierFromString:"); - late final _sel_canonicalLanguageIdentifierFromString_1 = - _registerName1("canonicalLanguageIdentifierFromString:"); - late final _sel_localeIdentifierFromWindowsLocaleCode_1 = - _registerName1("localeIdentifierFromWindowsLocaleCode:"); - ffi.Pointer _objc_msgSend_200( - ffi.Pointer obj, - ffi.Pointer sel, - int lcid, - ) { - return __objc_msgSend_200( - obj, - sel, - lcid, - ); - } - - late final __objc_msgSend_200Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Uint32)>>('objc_msgSend'); - late final __objc_msgSend_200 = __objc_msgSend_200Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_windowsLocaleCodeFromLocaleIdentifier_1 = - _registerName1("windowsLocaleCodeFromLocaleIdentifier:"); - int _objc_msgSend_201( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer localeIdentifier, - ) { - return __objc_msgSend_201( - obj, - sel, - localeIdentifier, - ); - } - - late final __objc_msgSend_201Ptr = _lookup< - ffi.NativeFunction< - ffi.Uint32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_201 = __objc_msgSend_201Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_characterDirectionForLanguage_1 = - _registerName1("characterDirectionForLanguage:"); - int _objc_msgSend_202( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer isoLangCode, - ) { - return __objc_msgSend_202( - obj, - sel, - isoLangCode, - ); - } - - late final __objc_msgSend_202Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_202 = __objc_msgSend_202Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_lineDirectionForLanguage_1 = - _registerName1("lineDirectionForLanguage:"); - late final _sel_localizedName_locale_1 = - _registerName1("localizedName:locale:"); - ffi.Pointer _objc_msgSend_203( - ffi.Pointer obj, - ffi.Pointer sel, - int style, - ffi.Pointer locale, - ) { - return __objc_msgSend_203( - obj, - sel, - style, - locale, - ); - } - - late final __objc_msgSend_203Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_203 = __objc_msgSend_203Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_timeZoneWithName_1 = _registerName1("timeZoneWithName:"); - late final _sel_timeZoneWithName_data_1 = - _registerName1("timeZoneWithName:data:"); - instancetype _objc_msgSend_204( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer tzName, - ffi.Pointer aData, - ) { - return __objc_msgSend_204( - obj, - sel, - tzName, - aData, - ); - } - - late final __objc_msgSend_204Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_204 = __objc_msgSend_204Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithName_1 = _registerName1("initWithName:"); - late final _sel_initWithName_data_1 = _registerName1("initWithName:data:"); - late final _sel_timeZoneForSecondsFromGMT_1 = - _registerName1("timeZoneForSecondsFromGMT:"); - instancetype _objc_msgSend_205( - ffi.Pointer obj, - ffi.Pointer sel, - int seconds, - ) { - return __objc_msgSend_205( - obj, - sel, - seconds, - ); - } - - late final __objc_msgSend_205Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_205 = __objc_msgSend_205Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_timeZoneWithAbbreviation_1 = - _registerName1("timeZoneWithAbbreviation:"); - late final _sel_dateWithYear_month_day_hour_minute_second_timeZone_1 = - _registerName1("dateWithYear:month:day:hour:minute:second:timeZone:"); - ffi.Pointer _objc_msgSend_206( - ffi.Pointer obj, - ffi.Pointer sel, - int year, - int month, - int day, - int hour, - int minute, - int second, - ffi.Pointer aTimeZone, - ) { - return __objc_msgSend_206( - obj, - sel, - year, - month, - day, - hour, - minute, - second, - aTimeZone, - ); - } - - late final __objc_msgSend_206Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_206 = __objc_msgSend_206Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - int, - int, - int, - int, - int, - int, - ffi.Pointer)>(); - - late final _sel_dateByAddingYears_months_days_hours_minutes_seconds_1 = - _registerName1("dateByAddingYears:months:days:hours:minutes:seconds:"); - ffi.Pointer _objc_msgSend_207( - ffi.Pointer obj, - ffi.Pointer sel, - int year, - int month, - int day, - int hour, - int minute, - int second, - ) { - return __objc_msgSend_207( - obj, - sel, - year, - month, - day, - hour, - minute, - second, - ); - } - - late final __objc_msgSend_207Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_207 = __objc_msgSend_207Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, int, int, int, int, int)>(); - - late final _sel_dayOfCommonEra1 = _registerName1("dayOfCommonEra"); - late final _sel_dayOfMonth1 = _registerName1("dayOfMonth"); - late final _sel_dayOfWeek1 = _registerName1("dayOfWeek"); - late final _sel_dayOfYear1 = _registerName1("dayOfYear"); - late final _sel_hourOfDay1 = _registerName1("hourOfDay"); - late final _sel_minuteOfHour1 = _registerName1("minuteOfHour"); - late final _sel_monthOfYear1 = _registerName1("monthOfYear"); - late final _sel_secondOfMinute1 = _registerName1("secondOfMinute"); - late final _sel_yearOfCommonEra1 = _registerName1("yearOfCommonEra"); - late final _sel_calendarFormat1 = _registerName1("calendarFormat"); - late final _sel_descriptionWithCalendarFormat_locale_1 = - _registerName1("descriptionWithCalendarFormat:locale:"); - ffi.Pointer _objc_msgSend_208( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer locale, - ) { - return __objc_msgSend_208( - obj, - sel, - format, - locale, - ); - } - - late final __objc_msgSend_208Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_208 = __objc_msgSend_208Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_descriptionWithCalendarFormat_1 = - _registerName1("descriptionWithCalendarFormat:"); - late final _sel_timeZone1 = _registerName1("timeZone"); - late final _sel_initWithString_calendarFormat_locale_1 = - _registerName1("initWithString:calendarFormat:locale:"); - late final _sel_initWithString_calendarFormat_1 = - _registerName1("initWithString:calendarFormat:"); - late final _sel_initWithYear_month_day_hour_minute_second_timeZone_1 = - _registerName1("initWithYear:month:day:hour:minute:second:timeZone:"); - late final _sel_setCalendarFormat_1 = _registerName1("setCalendarFormat:"); - void _objc_msgSend_209( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ) { - return __objc_msgSend_209( - obj, - sel, - format, - ); - } - - late final __objc_msgSend_209Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_209 = __objc_msgSend_209Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setTimeZone_1 = _registerName1("setTimeZone:"); - void _objc_msgSend_210( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aTimeZone, - ) { - return __objc_msgSend_210( - obj, - sel, - aTimeZone, - ); - } - - late final __objc_msgSend_210Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_210 = __objc_msgSend_210Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_years_months_days_hours_minutes_seconds_sinceDate_1 = - _registerName1("years:months:days:hours:minutes:seconds:sinceDate:"); - void _objc_msgSend_211( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer yp, - ffi.Pointer mop, - ffi.Pointer dp, - ffi.Pointer hp, - ffi.Pointer mip, - ffi.Pointer sp, - ffi.Pointer date, - ) { - return __objc_msgSend_211( - obj, - sel, - yp, - mop, - dp, - hp, - mip, - sp, - date, - ); - } - - late final __objc_msgSend_211Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_211 = __objc_msgSend_211Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_dateWithCalendarFormat_timeZone_1 = - _registerName1("dateWithCalendarFormat:timeZone:"); - ffi.Pointer _objc_msgSend_212( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer aTimeZone, - ) { - return __objc_msgSend_212( - obj, - sel, - format, - aTimeZone, - ); - } - - late final __objc_msgSend_212Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_212 = __objc_msgSend_212Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_descriptionWithCalendarFormat_timeZone_locale_1 = - _registerName1("descriptionWithCalendarFormat:timeZone:locale:"); - ffi.Pointer _objc_msgSend_213( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer aTimeZone, - ffi.Pointer locale, - ) { - return __objc_msgSend_213( - obj, - sel, - format, - aTimeZone, - locale, - ); - } - - late final __objc_msgSend_213Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_213 = __objc_msgSend_213Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_fileModificationDate1 = - _registerName1("fileModificationDate"); - late final _sel_fileType1 = _registerName1("fileType"); - late final _sel_filePosixPermissions1 = - _registerName1("filePosixPermissions"); - late final _sel_fileOwnerAccountName1 = - _registerName1("fileOwnerAccountName"); - late final _sel_fileGroupOwnerAccountName1 = - _registerName1("fileGroupOwnerAccountName"); - late final _sel_fileSystemNumber1 = _registerName1("fileSystemNumber"); - late final _sel_fileSystemFileNumber1 = - _registerName1("fileSystemFileNumber"); - late final _sel_fileExtensionHidden1 = _registerName1("fileExtensionHidden"); - late final _sel_fileHFSCreatorCode1 = _registerName1("fileHFSCreatorCode"); - int _objc_msgSend_214( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_214( - obj, - sel, - ); - } - - late final __objc_msgSend_214Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedInt Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_214 = __objc_msgSend_214Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_fileHFSTypeCode1 = _registerName1("fileHFSTypeCode"); - late final _sel_fileIsImmutable1 = _registerName1("fileIsImmutable"); - late final _sel_fileIsAppendOnly1 = _registerName1("fileIsAppendOnly"); - late final _sel_fileCreationDate1 = _registerName1("fileCreationDate"); - late final _sel_fileOwnerAccountID1 = _registerName1("fileOwnerAccountID"); - ffi.Pointer _objc_msgSend_215( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_215( - obj, - sel, - ); - } - - late final __objc_msgSend_215Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_215 = __objc_msgSend_215Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_fileGroupOwnerAccountID1 = - _registerName1("fileGroupOwnerAccountID"); - late final _sel_predicateWithBlock_1 = _registerName1("predicateWithBlock:"); - ffi.Pointer _objc_msgSend_216( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_216( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_216Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_216 = __objc_msgSend_216Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_predicateFormat1 = _registerName1("predicateFormat"); - late final _sel_predicateWithSubstitutionVariables_1 = - _registerName1("predicateWithSubstitutionVariables:"); - late final _sel_evaluateWithObject_1 = _registerName1("evaluateWithObject:"); - bool _objc_msgSend_217( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer object, - ) { - return __objc_msgSend_217( - obj, - sel, - object, - ); - } - - late final __objc_msgSend_217Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_217 = __objc_msgSend_217Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_evaluateWithObject_substitutionVariables_1 = - _registerName1("evaluateWithObject:substitutionVariables:"); - bool _objc_msgSend_218( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer object, - ffi.Pointer bindings, - ) { - return __objc_msgSend_218( - obj, - sel, - object, - bindings, - ); - } - - late final __objc_msgSend_218Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_218 = __objc_msgSend_218Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_allowEvaluation1 = _registerName1("allowEvaluation"); - late final _sel_filteredArrayUsingPredicate_1 = - _registerName1("filteredArrayUsingPredicate:"); - ffi.Pointer _objc_msgSend_219( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer predicate, - ) { - return __objc_msgSend_219( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_219Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_219 = __objc_msgSend_219Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithChar_1 = _registerName1("initWithChar:"); - ffi.Pointer _objc_msgSend_220( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_220( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_220Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Char)>>('objc_msgSend'); - late final __objc_msgSend_220 = __objc_msgSend_220Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithUnsignedChar_1 = - _registerName1("initWithUnsignedChar:"); - ffi.Pointer _objc_msgSend_221( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_221( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_221Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedChar)>>('objc_msgSend'); - late final __objc_msgSend_221 = __objc_msgSend_221Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithShort_1 = _registerName1("initWithShort:"); - ffi.Pointer _objc_msgSend_222( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_222( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_222Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Short)>>('objc_msgSend'); - late final __objc_msgSend_222 = __objc_msgSend_222Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithUnsignedShort_1 = - _registerName1("initWithUnsignedShort:"); - ffi.Pointer _objc_msgSend_223( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_223( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_223Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedShort)>>('objc_msgSend'); - late final __objc_msgSend_223 = __objc_msgSend_223Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithInt_1 = _registerName1("initWithInt:"); - ffi.Pointer _objc_msgSend_224( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_224( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_224Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int)>>('objc_msgSend'); - late final __objc_msgSend_224 = __objc_msgSend_224Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithUnsignedInt_1 = - _registerName1("initWithUnsignedInt:"); - ffi.Pointer _objc_msgSend_225( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_225( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_225Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_225 = __objc_msgSend_225Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithLong_1 = _registerName1("initWithLong:"); - ffi.Pointer _objc_msgSend_226( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_226( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_226Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_226 = __objc_msgSend_226Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithUnsignedLong_1 = - _registerName1("initWithUnsignedLong:"); - ffi.Pointer _objc_msgSend_227( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_227( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_227Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_227 = __objc_msgSend_227Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithLongLong_1 = _registerName1("initWithLongLong:"); - ffi.Pointer _objc_msgSend_228( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_228( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_228Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.LongLong)>>('objc_msgSend'); - late final __objc_msgSend_228 = __objc_msgSend_228Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithUnsignedLongLong_1 = - _registerName1("initWithUnsignedLongLong:"); - ffi.Pointer _objc_msgSend_229( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_229( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_229Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLongLong)>>('objc_msgSend'); - late final __objc_msgSend_229 = __objc_msgSend_229Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithFloat_1 = _registerName1("initWithFloat:"); - ffi.Pointer _objc_msgSend_230( - ffi.Pointer obj, - ffi.Pointer sel, - double value, - ) { - return __objc_msgSend_230( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_230Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Float)>>('objc_msgSend'); - late final __objc_msgSend_230 = __objc_msgSend_230Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_initWithDouble_1 = _registerName1("initWithDouble:"); - ffi.Pointer _objc_msgSend_231( - ffi.Pointer obj, - ffi.Pointer sel, - double value, - ) { - return __objc_msgSend_231( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_231Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_231 = __objc_msgSend_231Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_initWithBool_1 = _registerName1("initWithBool:"); - ffi.Pointer _objc_msgSend_232( - ffi.Pointer obj, - ffi.Pointer sel, - bool value, - ) { - return __objc_msgSend_232( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_232Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_232 = __objc_msgSend_232Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_initWithInteger_1 = _registerName1("initWithInteger:"); - late final _sel_initWithUnsignedInteger_1 = - _registerName1("initWithUnsignedInteger:"); - late final _sel_charValue1 = _registerName1("charValue"); - int _objc_msgSend_233( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_233( - obj, - sel, - ); - } - - late final __objc_msgSend_233Ptr = _lookup< - ffi.NativeFunction< - ffi.Char Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_233 = __objc_msgSend_233Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_unsignedCharValue1 = _registerName1("unsignedCharValue"); - int _objc_msgSend_234( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_234( - obj, - sel, - ); - } - - late final __objc_msgSend_234Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedChar Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_234 = __objc_msgSend_234Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_shortValue1 = _registerName1("shortValue"); - int _objc_msgSend_235( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_235( - obj, - sel, - ); - } - - late final __objc_msgSend_235Ptr = _lookup< - ffi.NativeFunction< - ffi.Short Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_235 = __objc_msgSend_235Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_unsignedShortValue1 = _registerName1("unsignedShortValue"); - int _objc_msgSend_236( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_236( - obj, - sel, - ); - } - - late final __objc_msgSend_236Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedShort Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_236 = __objc_msgSend_236Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_intValue1 = _registerName1("intValue"); - int _objc_msgSend_237( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_237( - obj, - sel, - ); - } - - late final __objc_msgSend_237Ptr = _lookup< - ffi.NativeFunction< - ffi.Int Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_237 = __objc_msgSend_237Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_unsignedIntValue1 = _registerName1("unsignedIntValue"); - late final _sel_longValue1 = _registerName1("longValue"); - late final _sel_unsignedLongValue1 = _registerName1("unsignedLongValue"); - late final _sel_longLongValue1 = _registerName1("longLongValue"); - int _objc_msgSend_238( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_238( - obj, - sel, - ); - } - - late final __objc_msgSend_238Ptr = _lookup< - ffi.NativeFunction< - ffi.LongLong Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_238 = __objc_msgSend_238Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_unsignedLongLongValue1 = - _registerName1("unsignedLongLongValue"); - late final _sel_floatValue1 = _registerName1("floatValue"); - double _objc_msgSend_239( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_239( - obj, - sel, - ); - } - - late final __objc_msgSend_239Ptr = _lookup< - ffi.NativeFunction< - ffi.Float Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_239 = __objc_msgSend_239Ptr.asFunction< - double Function(ffi.Pointer, ffi.Pointer)>(); - - double _objc_msgSend_239_fpret( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_239_fpret( - obj, - sel, - ); - } - - late final __objc_msgSend_239_fpretPtr = _lookup< - ffi.NativeFunction< - ffi.Float Function(ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_fpret'); - late final __objc_msgSend_239_fpret = __objc_msgSend_239_fpretPtr.asFunction< - double Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_doubleValue1 = _registerName1("doubleValue"); - late final _sel_boolValue1 = _registerName1("boolValue"); - late final _sel_integerValue1 = _registerName1("integerValue"); - late final _sel_unsignedIntegerValue1 = - _registerName1("unsignedIntegerValue"); - late final _sel_stringValue1 = _registerName1("stringValue"); - int _objc_msgSend_240( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherNumber, - ) { - return __objc_msgSend_240( - obj, - sel, - otherNumber, - ); - } - - late final __objc_msgSend_240Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_240 = __objc_msgSend_240Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isEqualToNumber_1 = _registerName1("isEqualToNumber:"); - bool _objc_msgSend_241( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer number, - ) { - return __objc_msgSend_241( - obj, - sel, - number, - ); - } - - late final __objc_msgSend_241Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_241 = __objc_msgSend_241Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_numberWithChar_1 = _registerName1("numberWithChar:"); - late final _sel_numberWithUnsignedChar_1 = - _registerName1("numberWithUnsignedChar:"); - late final _sel_numberWithShort_1 = _registerName1("numberWithShort:"); - late final _sel_numberWithUnsignedShort_1 = - _registerName1("numberWithUnsignedShort:"); - late final _sel_numberWithInt_1 = _registerName1("numberWithInt:"); - late final _sel_numberWithUnsignedInt_1 = - _registerName1("numberWithUnsignedInt:"); - late final _sel_numberWithLong_1 = _registerName1("numberWithLong:"); - late final _sel_numberWithUnsignedLong_1 = - _registerName1("numberWithUnsignedLong:"); - late final _sel_numberWithLongLong_1 = _registerName1("numberWithLongLong:"); - late final _sel_numberWithUnsignedLongLong_1 = - _registerName1("numberWithUnsignedLongLong:"); - late final _sel_numberWithFloat_1 = _registerName1("numberWithFloat:"); - late final _sel_numberWithDouble_1 = _registerName1("numberWithDouble:"); - late final _sel_numberWithBool_1 = _registerName1("numberWithBool:"); - late final _sel_numberWithInteger_1 = _registerName1("numberWithInteger:"); - late final _sel_numberWithUnsignedInteger_1 = - _registerName1("numberWithUnsignedInteger:"); - late final _sel_port1 = _registerName1("port"); - late final _sel_user1 = _registerName1("user"); - late final _sel_password1 = _registerName1("password"); - late final _sel_path1 = _registerName1("path"); - late final _sel_fragment1 = _registerName1("fragment"); - late final _sel_parameterString1 = _registerName1("parameterString"); - late final _sel_query1 = _registerName1("query"); - late final _sel_relativePath1 = _registerName1("relativePath"); - late final _sel_hasDirectoryPath1 = _registerName1("hasDirectoryPath"); - late final _sel_getFileSystemRepresentation_maxLength_1 = - _registerName1("getFileSystemRepresentation:maxLength:"); - bool _objc_msgSend_242( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - int maxBufferLength, - ) { - return __objc_msgSend_242( - obj, - sel, - buffer, - maxBufferLength, - ); - } - - late final __objc_msgSend_242Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_242 = __objc_msgSend_242Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_fileSystemRepresentation1 = - _registerName1("fileSystemRepresentation"); - late final _sel_isFileURL1 = _registerName1("isFileURL"); - late final _sel_standardizedURL1 = _registerName1("standardizedURL"); - late final _sel_isFileReferenceURL1 = _registerName1("isFileReferenceURL"); - late final _sel_fileReferenceURL1 = _registerName1("fileReferenceURL"); - late final _sel_filePathURL1 = _registerName1("filePathURL"); - late final _sel_getResourceValue_forKey_error_1 = - _registerName1("getResourceValue:forKey:error:"); - bool _objc_msgSend_243( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> value, - ffi.Pointer key, - ffi.Pointer> error, - ) { - return __objc_msgSend_243( - obj, - sel, - value, - key, - error, - ); - } - - late final __objc_msgSend_243Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_243 = __objc_msgSend_243Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_resourceValuesForKeys_error_1 = - _registerName1("resourceValuesForKeys:error:"); - ffi.Pointer _objc_msgSend_244( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keys, - ffi.Pointer> error, - ) { - return __objc_msgSend_244( - obj, - sel, - keys, - error, - ); - } - - late final __objc_msgSend_244Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_244 = __objc_msgSend_244Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_setResourceValue_forKey_error_1 = - _registerName1("setResourceValue:forKey:error:"); - bool _objc_msgSend_245( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer key, - ffi.Pointer> error, - ) { - return __objc_msgSend_245( - obj, - sel, - value, - key, - error, - ); - } - - late final __objc_msgSend_245Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_245 = __objc_msgSend_245Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_setResourceValues_error_1 = - _registerName1("setResourceValues:error:"); - bool _objc_msgSend_246( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keyedValues, - ffi.Pointer> error, - ) { - return __objc_msgSend_246( - obj, - sel, - keyedValues, - error, - ); - } - - late final __objc_msgSend_246Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_246 = __objc_msgSend_246Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_removeCachedResourceValueForKey_1 = - _registerName1("removeCachedResourceValueForKey:"); - void _objc_msgSend_247( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_247( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_247Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_247 = __objc_msgSend_247Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeAllCachedResourceValues1 = - _registerName1("removeAllCachedResourceValues"); - late final _sel_setTemporaryResourceValue_forKey_1 = - _registerName1("setTemporaryResourceValue:forKey:"); - late final _sel_bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_1 = - _registerName1( - "bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:"); - ffi.Pointer _objc_msgSend_248( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ffi.Pointer keys, - ffi.Pointer relativeURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_248( - obj, - sel, - options, - keys, - relativeURL, - error, - ); - } - - late final __objc_msgSend_248Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_248 = __objc_msgSend_248Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1 = - _registerName1( - "initByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:"); - instancetype _objc_msgSend_249( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bookmarkData, - int options, - ffi.Pointer relativeURL, - ffi.Pointer isStale, - ffi.Pointer> error, - ) { - return __objc_msgSend_249( - obj, - sel, - bookmarkData, - options, - relativeURL, - isStale, - error, - ); - } - - late final __objc_msgSend_249Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_249 = __objc_msgSend_249Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1 = - _registerName1( - "URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:"); - late final _sel_resourceValuesForKeys_fromBookmarkData_1 = - _registerName1("resourceValuesForKeys:fromBookmarkData:"); - ffi.Pointer _objc_msgSend_250( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keys, - ffi.Pointer bookmarkData, - ) { - return __objc_msgSend_250( - obj, - sel, - keys, - bookmarkData, - ); - } - - late final __objc_msgSend_250Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_250 = __objc_msgSend_250Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_writeBookmarkData_toURL_options_error_1 = - _registerName1("writeBookmarkData:toURL:options:error:"); - bool _objc_msgSend_251( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bookmarkData, - ffi.Pointer bookmarkFileURL, - int options, - ffi.Pointer> error, - ) { - return __objc_msgSend_251( - obj, - sel, - bookmarkData, - bookmarkFileURL, - options, - error, - ); - } - - late final __objc_msgSend_251Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_251 = __objc_msgSend_251Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_bookmarkDataWithContentsOfURL_error_1 = - _registerName1("bookmarkDataWithContentsOfURL:error:"); - ffi.Pointer _objc_msgSend_252( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bookmarkFileURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_252( - obj, - sel, - bookmarkFileURL, - error, - ); - } - - late final __objc_msgSend_252Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_252 = __objc_msgSend_252Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_URLByResolvingAliasFileAtURL_options_error_1 = - _registerName1("URLByResolvingAliasFileAtURL:options:error:"); - instancetype _objc_msgSend_253( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int options, - ffi.Pointer> error, - ) { - return __objc_msgSend_253( - obj, - sel, - url, - options, - error, - ); - } - - late final __objc_msgSend_253Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_253 = __objc_msgSend_253Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_startAccessingSecurityScopedResource1 = - _registerName1("startAccessingSecurityScopedResource"); - late final _sel_stopAccessingSecurityScopedResource1 = - _registerName1("stopAccessingSecurityScopedResource"); - late final _sel_getPromisedItemResourceValue_forKey_error_1 = - _registerName1("getPromisedItemResourceValue:forKey:error:"); - late final _sel_promisedItemResourceValuesForKeys_error_1 = - _registerName1("promisedItemResourceValuesForKeys:error:"); - ffi.Pointer _objc_msgSend_254( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keys, - ffi.Pointer> error, - ) { - return __objc_msgSend_254( - obj, - sel, - keys, - error, - ); - } - - late final __objc_msgSend_254Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_254 = __objc_msgSend_254Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_checkPromisedItemIsReachableAndReturnError_1 = - _registerName1("checkPromisedItemIsReachableAndReturnError:"); - bool _objc_msgSend_255( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> error, - ) { - return __objc_msgSend_255( - obj, - sel, - error, - ); - } - - late final __objc_msgSend_255Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_255 = __objc_msgSend_255Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_fileURLWithPathComponents_1 = - _registerName1("fileURLWithPathComponents:"); - ffi.Pointer _objc_msgSend_256( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer components, - ) { - return __objc_msgSend_256( - obj, - sel, - components, - ); - } - - late final __objc_msgSend_256Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_256 = __objc_msgSend_256Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_pathComponents1 = _registerName1("pathComponents"); - late final _sel_lastPathComponent1 = _registerName1("lastPathComponent"); - late final _sel_pathExtension1 = _registerName1("pathExtension"); - late final _sel_URLByAppendingPathComponent_1 = - _registerName1("URLByAppendingPathComponent:"); - ffi.Pointer _objc_msgSend_257( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer pathComponent, - ) { - return __objc_msgSend_257( - obj, - sel, - pathComponent, - ); - } - - late final __objc_msgSend_257Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_257 = __objc_msgSend_257Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_URLByAppendingPathComponent_isDirectory_1 = - _registerName1("URLByAppendingPathComponent:isDirectory:"); - ffi.Pointer _objc_msgSend_258( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer pathComponent, - bool isDirectory, - ) { - return __objc_msgSend_258( - obj, - sel, - pathComponent, - isDirectory, - ); - } - - late final __objc_msgSend_258Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_258 = __objc_msgSend_258Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_URLByDeletingLastPathComponent1 = - _registerName1("URLByDeletingLastPathComponent"); - late final _sel_URLByAppendingPathExtension_1 = - _registerName1("URLByAppendingPathExtension:"); - late final _sel_URLByDeletingPathExtension1 = - _registerName1("URLByDeletingPathExtension"); - late final _sel_checkResourceIsReachableAndReturnError_1 = - _registerName1("checkResourceIsReachableAndReturnError:"); - late final _sel_URLByStandardizingPath1 = - _registerName1("URLByStandardizingPath"); - late final _sel_URLByResolvingSymlinksInPath1 = - _registerName1("URLByResolvingSymlinksInPath"); - late final _sel_resourceDataUsingCache_1 = - _registerName1("resourceDataUsingCache:"); - ffi.Pointer _objc_msgSend_259( - ffi.Pointer obj, - ffi.Pointer sel, - bool shouldUseCache, - ) { - return __objc_msgSend_259( - obj, - sel, - shouldUseCache, - ); - } - - late final __objc_msgSend_259Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_259 = __objc_msgSend_259Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_loadResourceDataNotifyingClient_usingCache_1 = - _registerName1("loadResourceDataNotifyingClient:usingCache:"); - void _objc_msgSend_260( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer client, - bool shouldUseCache, - ) { - return __objc_msgSend_260( - obj, - sel, - client, - shouldUseCache, - ); - } - - late final __objc_msgSend_260Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_260 = __objc_msgSend_260Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_propertyForKey_1 = _registerName1("propertyForKey:"); - late final _sel_setResourceData_1 = _registerName1("setResourceData:"); - late final _sel_setProperty_forKey_1 = _registerName1("setProperty:forKey:"); - bool _objc_msgSend_261( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer property, - ffi.Pointer propertyKey, - ) { - return __objc_msgSend_261( - obj, - sel, - property, - propertyKey, - ); - } - - late final __objc_msgSend_261Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_261 = __objc_msgSend_261Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSURLHandle1 = _getClass1("NSURLHandle"); - late final _sel_registerURLHandleClass_1 = - _registerName1("registerURLHandleClass:"); - late final _sel_URLHandleClassForURL_1 = - _registerName1("URLHandleClassForURL:"); - ffi.Pointer _objc_msgSend_262( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anURL, - ) { - return __objc_msgSend_262( - obj, - sel, - anURL, - ); - } - - late final __objc_msgSend_262Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_262 = __objc_msgSend_262Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_status1 = _registerName1("status"); - int _objc_msgSend_263( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_263( - obj, - sel, - ); - } - - late final __objc_msgSend_263Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_263 = __objc_msgSend_263Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_failureReason1 = _registerName1("failureReason"); - late final _sel_addClient_1 = _registerName1("addClient:"); - late final _sel_removeClient_1 = _registerName1("removeClient:"); - late final _sel_loadInBackground1 = _registerName1("loadInBackground"); - late final _sel_cancelLoadInBackground1 = - _registerName1("cancelLoadInBackground"); - late final _sel_resourceData1 = _registerName1("resourceData"); - late final _sel_availableResourceData1 = - _registerName1("availableResourceData"); - late final _sel_expectedResourceDataSize1 = - _registerName1("expectedResourceDataSize"); - late final _sel_flushCachedData1 = _registerName1("flushCachedData"); - late final _sel_backgroundLoadDidFailWithReason_1 = - _registerName1("backgroundLoadDidFailWithReason:"); - late final _sel_didLoadBytes_loadComplete_1 = - _registerName1("didLoadBytes:loadComplete:"); - void _objc_msgSend_264( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer newBytes, - bool yorn, - ) { - return __objc_msgSend_264( - obj, - sel, - newBytes, - yorn, - ); - } - - late final __objc_msgSend_264Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_264 = __objc_msgSend_264Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_canInitWithURL_1 = _registerName1("canInitWithURL:"); - bool _objc_msgSend_265( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anURL, - ) { - return __objc_msgSend_265( - obj, - sel, - anURL, - ); - } - - late final __objc_msgSend_265Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_265 = __objc_msgSend_265Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_cachedHandleForURL_1 = _registerName1("cachedHandleForURL:"); - ffi.Pointer _objc_msgSend_266( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anURL, - ) { - return __objc_msgSend_266( - obj, - sel, - anURL, - ); - } - - late final __objc_msgSend_266Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_266 = __objc_msgSend_266Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithURL_cached_1 = _registerName1("initWithURL:cached:"); - ffi.Pointer _objc_msgSend_267( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anURL, - bool willCache, - ) { - return __objc_msgSend_267( - obj, - sel, - anURL, - willCache, - ); - } - - late final __objc_msgSend_267Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_267 = __objc_msgSend_267Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_propertyForKeyIfAvailable_1 = - _registerName1("propertyForKeyIfAvailable:"); - late final _sel_writeProperty_forKey_1 = - _registerName1("writeProperty:forKey:"); - late final _sel_writeData_1 = _registerName1("writeData:"); - late final _sel_loadInForeground1 = _registerName1("loadInForeground"); - late final _sel_beginLoadInBackground1 = - _registerName1("beginLoadInBackground"); - late final _sel_endLoadInBackground1 = _registerName1("endLoadInBackground"); - late final _sel_URLHandleUsingCache_1 = - _registerName1("URLHandleUsingCache:"); - ffi.Pointer _objc_msgSend_268( - ffi.Pointer obj, - ffi.Pointer sel, - bool shouldUseCache, - ) { - return __objc_msgSend_268( - obj, - sel, - shouldUseCache, - ); - } - - late final __objc_msgSend_268Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_268 = __objc_msgSend_268Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_writeToFile_options_error_1 = - _registerName1("writeToFile:options:error:"); - bool _objc_msgSend_269( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - int writeOptionsMask, - ffi.Pointer> errorPtr, - ) { - return __objc_msgSend_269( - obj, - sel, - path, - writeOptionsMask, - errorPtr, - ); - } - - late final __objc_msgSend_269Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_269 = __objc_msgSend_269Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_writeToURL_options_error_1 = - _registerName1("writeToURL:options:error:"); - bool _objc_msgSend_270( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int writeOptionsMask, - ffi.Pointer> errorPtr, - ) { - return __objc_msgSend_270( - obj, - sel, - url, - writeOptionsMask, - errorPtr, - ); - } - - late final __objc_msgSend_270Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_270 = __objc_msgSend_270Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_rangeOfData_options_range_1 = - _registerName1("rangeOfData:options:range:"); - _NSRange _objc_msgSend_271( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer dataToFind, - int mask, - _NSRange searchRange, - ) { - return __objc_msgSend_271( - obj, - sel, - dataToFind, - mask, - searchRange, - ); - } - - late final __objc_msgSend_271Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_271 = __objc_msgSend_271Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange)>(); - - void _objc_msgSend_271_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer dataToFind, - int mask, - _NSRange searchRange, - ) { - return __objc_msgSend_271_stret( - stret, - obj, - sel, - dataToFind, - mask, - searchRange, - ); - } - - late final __objc_msgSend_271_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend_stret'); - late final __objc_msgSend_271_stret = __objc_msgSend_271_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - - late final _sel_enumerateByteRangesUsingBlock_1 = - _registerName1("enumerateByteRangesUsingBlock:"); - void _objc_msgSend_272( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_272( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_272Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_272 = __objc_msgSend_272Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_dataWithBytes_length_1 = - _registerName1("dataWithBytes:length:"); - instancetype _objc_msgSend_273( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int length, - ) { - return __objc_msgSend_273( - obj, - sel, - bytes, - length, - ); - } - - late final __objc_msgSend_273Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_273 = __objc_msgSend_273Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_dataWithBytesNoCopy_length_1 = - _registerName1("dataWithBytesNoCopy:length:"); - late final _sel_dataWithBytesNoCopy_length_freeWhenDone_1 = - _registerName1("dataWithBytesNoCopy:length:freeWhenDone:"); - instancetype _objc_msgSend_274( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int length, - bool b, - ) { - return __objc_msgSend_274( - obj, - sel, - bytes, - length, - b, - ); - } - - late final __objc_msgSend_274Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_274 = __objc_msgSend_274Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, bool)>(); - - late final _sel_dataWithContentsOfFile_options_error_1 = - _registerName1("dataWithContentsOfFile:options:error:"); - instancetype _objc_msgSend_275( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - int readOptionsMask, - ffi.Pointer> errorPtr, - ) { - return __objc_msgSend_275( - obj, - sel, - path, - readOptionsMask, - errorPtr, - ); - } - - late final __objc_msgSend_275Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_275 = __objc_msgSend_275Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_dataWithContentsOfURL_options_error_1 = - _registerName1("dataWithContentsOfURL:options:error:"); - instancetype _objc_msgSend_276( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int readOptionsMask, - ffi.Pointer> errorPtr, - ) { - return __objc_msgSend_276( - obj, - sel, - url, - readOptionsMask, - errorPtr, - ); - } - - late final __objc_msgSend_276Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_276 = __objc_msgSend_276Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_dataWithContentsOfFile_1 = - _registerName1("dataWithContentsOfFile:"); - late final _sel_dataWithContentsOfURL_1 = - _registerName1("dataWithContentsOfURL:"); - instancetype _objc_msgSend_277( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_277( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_277Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_277 = __objc_msgSend_277Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithBytes_length_1 = - _registerName1("initWithBytes:length:"); - late final _sel_initWithBytesNoCopy_length_1 = - _registerName1("initWithBytesNoCopy:length:"); - late final _sel_initWithBytesNoCopy_length_freeWhenDone_1 = - _registerName1("initWithBytesNoCopy:length:freeWhenDone:"); - late final _sel_initWithBytesNoCopy_length_deallocator_1 = - _registerName1("initWithBytesNoCopy:length:deallocator:"); - instancetype _objc_msgSend_278( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int length, - ffi.Pointer<_ObjCBlock> deallocator, - ) { - return __objc_msgSend_278( - obj, - sel, - bytes, - length, - deallocator, - ); - } - - late final __objc_msgSend_278Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_278 = __objc_msgSend_278Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_initWithContentsOfFile_options_error_1 = - _registerName1("initWithContentsOfFile:options:error:"); - late final _sel_initWithContentsOfURL_options_error_1 = - _registerName1("initWithContentsOfURL:options:error:"); - late final _sel_initWithData_1 = _registerName1("initWithData:"); - instancetype _objc_msgSend_279( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ) { - return __objc_msgSend_279( - obj, - sel, - data, - ); - } - - late final __objc_msgSend_279Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_279 = __objc_msgSend_279Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_dataWithData_1 = _registerName1("dataWithData:"); - late final _sel_initWithBase64EncodedString_options_1 = - _registerName1("initWithBase64EncodedString:options:"); - instancetype _objc_msgSend_280( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer base64String, - int options, - ) { - return __objc_msgSend_280( - obj, - sel, - base64String, - options, - ); - } - - late final __objc_msgSend_280Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_280 = __objc_msgSend_280Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_base64EncodedStringWithOptions_1 = - _registerName1("base64EncodedStringWithOptions:"); - ffi.Pointer _objc_msgSend_281( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_281( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_281Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_281 = __objc_msgSend_281Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithBase64EncodedData_options_1 = - _registerName1("initWithBase64EncodedData:options:"); - instancetype _objc_msgSend_282( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer base64Data, - int options, - ) { - return __objc_msgSend_282( - obj, - sel, - base64Data, - options, - ); - } - - late final __objc_msgSend_282Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_282 = __objc_msgSend_282Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_base64EncodedDataWithOptions_1 = - _registerName1("base64EncodedDataWithOptions:"); - ffi.Pointer _objc_msgSend_283( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_283( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_283Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_283 = __objc_msgSend_283Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_decompressedDataUsingAlgorithm_error_1 = - _registerName1("decompressedDataUsingAlgorithm:error:"); - instancetype _objc_msgSend_284( - ffi.Pointer obj, - ffi.Pointer sel, - int algorithm, - ffi.Pointer> error, - ) { - return __objc_msgSend_284( - obj, - sel, - algorithm, - error, - ); - } - - late final __objc_msgSend_284Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_284 = __objc_msgSend_284Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer>)>(); - - late final _sel_compressedDataUsingAlgorithm_error_1 = - _registerName1("compressedDataUsingAlgorithm:error:"); - late final _sel_getBytes_1 = _registerName1("getBytes:"); - late final _sel_dataWithContentsOfMappedFile_1 = - _registerName1("dataWithContentsOfMappedFile:"); - late final _sel_initWithContentsOfMappedFile_1 = - _registerName1("initWithContentsOfMappedFile:"); - late final _sel_initWithBase64Encoding_1 = - _registerName1("initWithBase64Encoding:"); - late final _sel_base64Encoding1 = _registerName1("base64Encoding"); - late final _sel_encodeDataObject_1 = _registerName1("encodeDataObject:"); - void _objc_msgSend_285( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ) { - return __objc_msgSend_285( - obj, - sel, - data, - ); - } - - late final __objc_msgSend_285Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_285 = __objc_msgSend_285Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeDataObject1 = _registerName1("decodeDataObject"); - ffi.Pointer _objc_msgSend_286( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_286( - obj, - sel, - ); - } - - late final __objc_msgSend_286Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_286 = __objc_msgSend_286Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_decodeValueOfObjCType_at_size_1 = - _registerName1("decodeValueOfObjCType:at:size:"); - void _objc_msgSend_287( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer type, - ffi.Pointer data, - int size, - ) { - return __objc_msgSend_287( - obj, - sel, - type, - data, - size, - ); - } - - late final __objc_msgSend_287Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_287 = __objc_msgSend_287Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_versionForClassName_1 = - _registerName1("versionForClassName:"); - int _objc_msgSend_288( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer className, - ) { - return __objc_msgSend_288( - obj, - sel, - className, - ); - } - - late final __objc_msgSend_288Ptr = _lookup< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_288 = __objc_msgSend_288Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_encodeObject_1 = _registerName1("encodeObject:"); - void _objc_msgSend_289( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer object, - ) { - return __objc_msgSend_289( - obj, - sel, - object, - ); - } - - late final __objc_msgSend_289Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_289 = __objc_msgSend_289Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_encodeRootObject_1 = _registerName1("encodeRootObject:"); - late final _sel_encodeBycopyObject_1 = _registerName1("encodeBycopyObject:"); - late final _sel_encodeByrefObject_1 = _registerName1("encodeByrefObject:"); - late final _sel_encodeConditionalObject_1 = - _registerName1("encodeConditionalObject:"); - late final _sel_encodeValuesOfObjCTypes_1 = - _registerName1("encodeValuesOfObjCTypes:"); - void _objc_msgSend_290( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer types, - ) { - return __objc_msgSend_290( - obj, - sel, - types, - ); - } - - late final __objc_msgSend_290Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_290 = __objc_msgSend_290Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_encodeArrayOfObjCType_count_at_1 = - _registerName1("encodeArrayOfObjCType:count:at:"); - void _objc_msgSend_291( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer type, - int count, - ffi.Pointer array, - ) { - return __objc_msgSend_291( - obj, - sel, - type, - count, - array, - ); - } - - late final __objc_msgSend_291Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_291 = __objc_msgSend_291Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_encodeBytes_length_1 = _registerName1("encodeBytes:length:"); - late final _sel_decodeObject1 = _registerName1("decodeObject"); - late final _sel_decodeTopLevelObjectAndReturnError_1 = - _registerName1("decodeTopLevelObjectAndReturnError:"); - ffi.Pointer _objc_msgSend_292( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> error, - ) { - return __objc_msgSend_292( - obj, - sel, - error, - ); - } - - late final __objc_msgSend_292Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_292 = __objc_msgSend_292Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_decodeValuesOfObjCTypes_1 = - _registerName1("decodeValuesOfObjCTypes:"); - late final _sel_decodeArrayOfObjCType_count_at_1 = - _registerName1("decodeArrayOfObjCType:count:at:"); - late final _sel_decodeBytesWithReturnedLength_1 = - _registerName1("decodeBytesWithReturnedLength:"); - ffi.Pointer _objc_msgSend_293( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer lengthp, - ) { - return __objc_msgSend_293( - obj, - sel, - lengthp, - ); - } - - late final __objc_msgSend_293Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_293 = __objc_msgSend_293Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_encodePropertyList_1 = _registerName1("encodePropertyList:"); - late final _sel_decodePropertyList1 = _registerName1("decodePropertyList"); - late final _sel_setObjectZone_1 = _registerName1("setObjectZone:"); - void _objc_msgSend_294( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_NSZone> zone, - ) { - return __objc_msgSend_294( - obj, - sel, - zone, - ); - } - - late final __objc_msgSend_294Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_NSZone>)>>('objc_msgSend'); - late final __objc_msgSend_294 = __objc_msgSend_294Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_NSZone>)>(); - - late final _sel_objectZone1 = _registerName1("objectZone"); - ffi.Pointer<_NSZone> _objc_msgSend_295( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_295( - obj, - sel, - ); - } - - late final __objc_msgSend_295Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<_NSZone> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_295 = __objc_msgSend_295Ptr.asFunction< - ffi.Pointer<_NSZone> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_systemVersion1 = _registerName1("systemVersion"); - late final _sel_allowsKeyedCoding1 = _registerName1("allowsKeyedCoding"); - late final _sel_encodeObject_forKey_1 = - _registerName1("encodeObject:forKey:"); - late final _sel_encodeConditionalObject_forKey_1 = - _registerName1("encodeConditionalObject:forKey:"); - late final _sel_encodeBool_forKey_1 = _registerName1("encodeBool:forKey:"); - void _objc_msgSend_296( - ffi.Pointer obj, - ffi.Pointer sel, - bool value, - ffi.Pointer key, - ) { - return __objc_msgSend_296( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_296Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Bool, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_296 = __objc_msgSend_296Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, bool, - ffi.Pointer)>(); - - late final _sel_encodeInt_forKey_1 = _registerName1("encodeInt:forKey:"); - void _objc_msgSend_297( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ffi.Pointer key, - ) { - return __objc_msgSend_297( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_297Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_297 = __objc_msgSend_297Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_encodeInt32_forKey_1 = _registerName1("encodeInt32:forKey:"); - void _objc_msgSend_298( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ffi.Pointer key, - ) { - return __objc_msgSend_298( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_298Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_298 = __objc_msgSend_298Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_encodeInt64_forKey_1 = _registerName1("encodeInt64:forKey:"); - void _objc_msgSend_299( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ffi.Pointer key, - ) { - return __objc_msgSend_299( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_299Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int64, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_299 = __objc_msgSend_299Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_encodeFloat_forKey_1 = _registerName1("encodeFloat:forKey:"); - void _objc_msgSend_300( - ffi.Pointer obj, - ffi.Pointer sel, - double value, - ffi.Pointer key, - ) { - return __objc_msgSend_300( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_300Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Float, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_300 = __objc_msgSend_300Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, double, - ffi.Pointer)>(); - - late final _sel_encodeDouble_forKey_1 = - _registerName1("encodeDouble:forKey:"); - void _objc_msgSend_301( - ffi.Pointer obj, - ffi.Pointer sel, - double value, - ffi.Pointer key, - ) { - return __objc_msgSend_301( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_301Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Double, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_301 = __objc_msgSend_301Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, double, - ffi.Pointer)>(); - - late final _sel_encodeBytes_length_forKey_1 = - _registerName1("encodeBytes:length:forKey:"); - void _objc_msgSend_302( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int length, - ffi.Pointer key, - ) { - return __objc_msgSend_302( - obj, - sel, - bytes, - length, - key, - ); - } - - late final __objc_msgSend_302Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_302 = __objc_msgSend_302Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_containsValueForKey_1 = - _registerName1("containsValueForKey:"); - late final _sel_decodeObjectForKey_1 = _registerName1("decodeObjectForKey:"); - late final _sel_decodeTopLevelObjectForKey_error_1 = - _registerName1("decodeTopLevelObjectForKey:error:"); - ffi.Pointer _objc_msgSend_303( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer> error, - ) { - return __objc_msgSend_303( - obj, - sel, - key, - error, - ); - } - - late final __objc_msgSend_303Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_303 = __objc_msgSend_303Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_decodeBoolForKey_1 = _registerName1("decodeBoolForKey:"); - late final _sel_decodeIntForKey_1 = _registerName1("decodeIntForKey:"); - int _objc_msgSend_304( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_304( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_304Ptr = _lookup< - ffi.NativeFunction< - ffi.Int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_304 = __objc_msgSend_304Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeInt32ForKey_1 = _registerName1("decodeInt32ForKey:"); - int _objc_msgSend_305( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_305( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_305Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_305 = __objc_msgSend_305Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeInt64ForKey_1 = _registerName1("decodeInt64ForKey:"); - int _objc_msgSend_306( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_306( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_306Ptr = _lookup< - ffi.NativeFunction< - ffi.Int64 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_306 = __objc_msgSend_306Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeFloatForKey_1 = _registerName1("decodeFloatForKey:"); - double _objc_msgSend_307( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_307( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_307Ptr = _lookup< - ffi.NativeFunction< - ffi.Float Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_307 = __objc_msgSend_307Ptr.asFunction< - double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - double _objc_msgSend_307_fpret( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_307_fpret( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_307_fpretPtr = _lookup< - ffi.NativeFunction< - ffi.Float Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_fpret'); - late final __objc_msgSend_307_fpret = __objc_msgSend_307_fpretPtr.asFunction< - double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeDoubleForKey_1 = _registerName1("decodeDoubleForKey:"); - double _objc_msgSend_308( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_308( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_308Ptr = _lookup< - ffi.NativeFunction< - ffi.Double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_308 = __objc_msgSend_308Ptr.asFunction< - double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - double _objc_msgSend_308_fpret( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_308_fpret( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_308_fpretPtr = _lookup< - ffi.NativeFunction< - ffi.Double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_fpret'); - late final __objc_msgSend_308_fpret = __objc_msgSend_308_fpretPtr.asFunction< - double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeBytesForKey_returnedLength_1 = - _registerName1("decodeBytesForKey:returnedLength:"); - ffi.Pointer _objc_msgSend_309( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer lengthp, - ) { - return __objc_msgSend_309( - obj, - sel, - key, - lengthp, - ); - } - - late final __objc_msgSend_309Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_309 = __objc_msgSend_309Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_encodeInteger_forKey_1 = - _registerName1("encodeInteger:forKey:"); - void _objc_msgSend_310( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ffi.Pointer key, - ) { - return __objc_msgSend_310( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_310Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Long, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_310 = __objc_msgSend_310Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_decodeIntegerForKey_1 = - _registerName1("decodeIntegerForKey:"); - late final _sel_requiresSecureCoding1 = - _registerName1("requiresSecureCoding"); - late final _sel_decodeObjectOfClass_forKey_1 = - _registerName1("decodeObjectOfClass:forKey:"); - ffi.Pointer _objc_msgSend_311( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aClass, - ffi.Pointer key, - ) { - return __objc_msgSend_311( - obj, - sel, - aClass, - key, - ); - } - - late final __objc_msgSend_311Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_311 = __objc_msgSend_311Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeTopLevelObjectOfClass_forKey_error_1 = - _registerName1("decodeTopLevelObjectOfClass:forKey:error:"); - ffi.Pointer _objc_msgSend_312( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aClass, - ffi.Pointer key, - ffi.Pointer> error, - ) { - return __objc_msgSend_312( - obj, - sel, - aClass, - key, - error, - ); - } - - late final __objc_msgSend_312Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_312 = __objc_msgSend_312Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_decodeArrayOfObjectsOfClass_forKey_1 = - _registerName1("decodeArrayOfObjectsOfClass:forKey:"); - ffi.Pointer _objc_msgSend_313( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer cls, - ffi.Pointer key, - ) { - return __objc_msgSend_313( - obj, - sel, - cls, - key, - ); - } - - late final __objc_msgSend_313Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_313 = __objc_msgSend_313Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeDictionaryWithKeysOfClass_objectsOfClass_forKey_1 = - _registerName1("decodeDictionaryWithKeysOfClass:objectsOfClass:forKey:"); - ffi.Pointer _objc_msgSend_314( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keyCls, - ffi.Pointer objectCls, - ffi.Pointer key, - ) { - return __objc_msgSend_314( - obj, - sel, - keyCls, - objectCls, - key, - ); - } - - late final __objc_msgSend_314Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_314 = __objc_msgSend_314Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeObjectOfClasses_forKey_1 = - _registerName1("decodeObjectOfClasses:forKey:"); - ffi.Pointer _objc_msgSend_315( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer classes, - ffi.Pointer key, - ) { - return __objc_msgSend_315( - obj, - sel, - classes, - key, - ); - } - - late final __objc_msgSend_315Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_315 = __objc_msgSend_315Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeTopLevelObjectOfClasses_forKey_error_1 = - _registerName1("decodeTopLevelObjectOfClasses:forKey:error:"); - ffi.Pointer _objc_msgSend_316( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer classes, - ffi.Pointer key, - ffi.Pointer> error, - ) { - return __objc_msgSend_316( - obj, - sel, - classes, - key, - error, - ); - } - - late final __objc_msgSend_316Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_316 = __objc_msgSend_316Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_decodeArrayOfObjectsOfClasses_forKey_1 = - _registerName1("decodeArrayOfObjectsOfClasses:forKey:"); - ffi.Pointer _objc_msgSend_317( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer classes, - ffi.Pointer key, - ) { - return __objc_msgSend_317( - obj, - sel, - classes, - key, - ); - } - - late final __objc_msgSend_317Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_317 = __objc_msgSend_317Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeDictionaryWithKeysOfClasses_objectsOfClasses_forKey_1 = - _registerName1( - "decodeDictionaryWithKeysOfClasses:objectsOfClasses:forKey:"); - ffi.Pointer _objc_msgSend_318( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keyClasses, - ffi.Pointer objectClasses, - ffi.Pointer key, - ) { - return __objc_msgSend_318( - obj, - sel, - keyClasses, - objectClasses, - key, - ); - } - - late final __objc_msgSend_318Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_318 = __objc_msgSend_318Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodePropertyListForKey_1 = - _registerName1("decodePropertyListForKey:"); - late final _sel_allowedClasses1 = _registerName1("allowedClasses"); - ffi.Pointer _objc_msgSend_319( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_319( - obj, - sel, - ); - } - - late final __objc_msgSend_319Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_319 = __objc_msgSend_319Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_failWithError_1 = _registerName1("failWithError:"); - void _objc_msgSend_320( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer error, - ) { - return __objc_msgSend_320( - obj, - sel, - error, - ); - } - - late final __objc_msgSend_320Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_320 = __objc_msgSend_320Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodingFailurePolicy1 = - _registerName1("decodingFailurePolicy"); - int _objc_msgSend_321( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_321( - obj, - sel, - ); - } - - late final __objc_msgSend_321Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_321 = __objc_msgSend_321Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_error1 = _registerName1("error"); - ffi.Pointer _objc_msgSend_322( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_322( - obj, - sel, - ); - } - - late final __objc_msgSend_322Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_322 = __objc_msgSend_322Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_encodeNXObject_1 = _registerName1("encodeNXObject:"); - late final _sel_decodeNXObject1 = _registerName1("decodeNXObject"); - late final _sel_decodeValueOfObjCType_at_1 = - _registerName1("decodeValueOfObjCType:at:"); - late final _sel_encodePoint_1 = _registerName1("encodePoint:"); - void _objc_msgSend_323( - ffi.Pointer obj, - ffi.Pointer sel, - CGPoint point, - ) { - return __objc_msgSend_323( - obj, - sel, - point, - ); - } - - late final __objc_msgSend_323Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - CGPoint)>>('objc_msgSend'); - late final __objc_msgSend_323 = __objc_msgSend_323Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, CGPoint)>(); - - late final _sel_decodePoint1 = _registerName1("decodePoint"); - late final _sel_encodeSize_1 = _registerName1("encodeSize:"); - void _objc_msgSend_324( - ffi.Pointer obj, - ffi.Pointer sel, - CGSize size, - ) { - return __objc_msgSend_324( - obj, - sel, - size, - ); - } - - late final __objc_msgSend_324Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - CGSize)>>('objc_msgSend'); - late final __objc_msgSend_324 = __objc_msgSend_324Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, CGSize)>(); - - late final _sel_decodeSize1 = _registerName1("decodeSize"); - late final _sel_encodeRect_1 = _registerName1("encodeRect:"); - void _objc_msgSend_325( - ffi.Pointer obj, - ffi.Pointer sel, - CGRect rect, - ) { - return __objc_msgSend_325( - obj, - sel, - rect, - ); - } - - late final __objc_msgSend_325Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - CGRect)>>('objc_msgSend'); - late final __objc_msgSend_325 = __objc_msgSend_325Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, CGRect)>(); - - late final _sel_decodeRect1 = _registerName1("decodeRect"); - late final _sel_encodePoint_forKey_1 = _registerName1("encodePoint:forKey:"); - void _objc_msgSend_326( - ffi.Pointer obj, - ffi.Pointer sel, - CGPoint point, - ffi.Pointer key, - ) { - return __objc_msgSend_326( - obj, - sel, - point, - key, - ); - } - - late final __objc_msgSend_326Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - CGPoint, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_326 = __objc_msgSend_326Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, CGPoint, - ffi.Pointer)>(); - - late final _sel_encodeSize_forKey_1 = _registerName1("encodeSize:forKey:"); - void _objc_msgSend_327( - ffi.Pointer obj, - ffi.Pointer sel, - CGSize size, - ffi.Pointer key, - ) { - return __objc_msgSend_327( - obj, - sel, - size, - key, - ); - } - - late final __objc_msgSend_327Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - CGSize, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_327 = __objc_msgSend_327Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, CGSize, - ffi.Pointer)>(); - - late final _sel_encodeRect_forKey_1 = _registerName1("encodeRect:forKey:"); - void _objc_msgSend_328( - ffi.Pointer obj, - ffi.Pointer sel, - CGRect rect, - ffi.Pointer key, - ) { - return __objc_msgSend_328( - obj, - sel, - rect, - key, - ); - } - - late final __objc_msgSend_328Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - CGRect, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_328 = __objc_msgSend_328Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, CGRect, - ffi.Pointer)>(); - - late final _sel_decodePointForKey_1 = _registerName1("decodePointForKey:"); - CGPoint _objc_msgSend_329( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_329( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_329Ptr = _lookup< - ffi.NativeFunction< - CGPoint Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_329 = __objc_msgSend_329Ptr.asFunction< - CGPoint Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - void _objc_msgSend_329_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_329_stret( - stret, - obj, - sel, - key, - ); - } - - late final __objc_msgSend_329_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_329_stret = __objc_msgSend_329_stretPtr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_decodeSizeForKey_1 = _registerName1("decodeSizeForKey:"); - CGSize _objc_msgSend_330( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_330( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_330Ptr = _lookup< - ffi.NativeFunction< - CGSize Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_330 = __objc_msgSend_330Ptr.asFunction< - CGSize Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - void _objc_msgSend_330_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_330_stret( - stret, - obj, - sel, - key, - ); - } - - late final __objc_msgSend_330_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_330_stret = __objc_msgSend_330_stretPtr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_decodeRectForKey_1 = _registerName1("decodeRectForKey:"); - CGRect _objc_msgSend_331( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_331( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_331Ptr = _lookup< - ffi.NativeFunction< - CGRect Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_331 = __objc_msgSend_331Ptr.asFunction< - CGRect Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - void _objc_msgSend_331_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_331_stret( - stret, - obj, - sel, - key, - ); - } - - late final __objc_msgSend_331_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_331_stret = __objc_msgSend_331_stretPtr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_substringFromIndex_1 = _registerName1("substringFromIndex:"); - ffi.Pointer _objc_msgSend_332( - ffi.Pointer obj, - ffi.Pointer sel, - int from, - ) { - return __objc_msgSend_332( - obj, - sel, - from, - ); - } - - late final __objc_msgSend_332Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_332 = __objc_msgSend_332Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_substringToIndex_1 = _registerName1("substringToIndex:"); - late final _sel_substringWithRange_1 = _registerName1("substringWithRange:"); - ffi.Pointer _objc_msgSend_333( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_333( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_333Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_333 = __objc_msgSend_333Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_getCharacters_range_1 = - _registerName1("getCharacters:range:"); - void _objc_msgSend_334( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - _NSRange range, - ) { - return __objc_msgSend_334( - obj, - sel, - buffer, - range, - ); - } - - late final __objc_msgSend_334Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_334 = __objc_msgSend_334Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - int _objc_msgSend_335( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - ) { - return __objc_msgSend_335( - obj, - sel, - string, - ); - } - - late final __objc_msgSend_335Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_335 = __objc_msgSend_335Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_compare_options_1 = _registerName1("compare:options:"); - int _objc_msgSend_336( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int mask, - ) { - return __objc_msgSend_336( - obj, - sel, - string, - mask, - ); - } - - late final __objc_msgSend_336Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_336 = __objc_msgSend_336Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_compare_options_range_1 = - _registerName1("compare:options:range:"); - int _objc_msgSend_337( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int mask, - _NSRange rangeOfReceiverToCompare, - ) { - return __objc_msgSend_337( - obj, - sel, - string, - mask, - rangeOfReceiverToCompare, - ); - } - - late final __objc_msgSend_337Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_337 = __objc_msgSend_337Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange)>(); - - late final _sel_compare_options_range_locale_1 = - _registerName1("compare:options:range:locale:"); - int _objc_msgSend_338( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int mask, - _NSRange rangeOfReceiverToCompare, - ffi.Pointer locale, - ) { - return __objc_msgSend_338( - obj, - sel, - string, - mask, - rangeOfReceiverToCompare, - locale, - ); - } - - late final __objc_msgSend_338Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_338 = __objc_msgSend_338Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange, ffi.Pointer)>(); - - late final _sel_caseInsensitiveCompare_1 = - _registerName1("caseInsensitiveCompare:"); - late final _sel_localizedCompare_1 = _registerName1("localizedCompare:"); - late final _sel_localizedCaseInsensitiveCompare_1 = - _registerName1("localizedCaseInsensitiveCompare:"); - late final _sel_localizedStandardCompare_1 = - _registerName1("localizedStandardCompare:"); - late final _sel_isEqualToString_1 = _registerName1("isEqualToString:"); - late final _sel_hasPrefix_1 = _registerName1("hasPrefix:"); - late final _sel_hasSuffix_1 = _registerName1("hasSuffix:"); - late final _sel_commonPrefixWithString_options_1 = - _registerName1("commonPrefixWithString:options:"); - ffi.Pointer _objc_msgSend_339( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer str, - int mask, - ) { - return __objc_msgSend_339( - obj, - sel, - str, - mask, - ); - } - - late final __objc_msgSend_339Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_339 = __objc_msgSend_339Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_containsString_1 = _registerName1("containsString:"); - late final _sel_localizedCaseInsensitiveContainsString_1 = - _registerName1("localizedCaseInsensitiveContainsString:"); - late final _sel_localizedStandardContainsString_1 = - _registerName1("localizedStandardContainsString:"); - late final _sel_localizedStandardRangeOfString_1 = - _registerName1("localizedStandardRangeOfString:"); - _NSRange _objc_msgSend_340( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer str, - ) { - return __objc_msgSend_340( - obj, - sel, - str, - ); - } - - late final __objc_msgSend_340Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_340 = __objc_msgSend_340Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - void _objc_msgSend_340_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer str, - ) { - return __objc_msgSend_340_stret( - stret, - obj, - sel, - str, - ); - } - - late final __objc_msgSend_340_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_340_stret = __objc_msgSend_340_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_rangeOfString_1 = _registerName1("rangeOfString:"); - late final _sel_rangeOfString_options_1 = - _registerName1("rangeOfString:options:"); - _NSRange _objc_msgSend_341( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchString, - int mask, - ) { - return __objc_msgSend_341( - obj, - sel, - searchString, - mask, - ); - } - - late final __objc_msgSend_341Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_341 = __objc_msgSend_341Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - void _objc_msgSend_341_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchString, - int mask, - ) { - return __objc_msgSend_341_stret( - stret, - obj, - sel, - searchString, - mask, - ); - } - - late final __objc_msgSend_341_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend_stret'); - late final __objc_msgSend_341_stret = __objc_msgSend_341_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_rangeOfString_options_range_1 = - _registerName1("rangeOfString:options:range:"); - _NSRange _objc_msgSend_342( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchString, - int mask, - _NSRange rangeOfReceiverToSearch, - ) { - return __objc_msgSend_342( - obj, - sel, - searchString, - mask, - rangeOfReceiverToSearch, - ); - } - - late final __objc_msgSend_342Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_342 = __objc_msgSend_342Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange)>(); - - void _objc_msgSend_342_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchString, - int mask, - _NSRange rangeOfReceiverToSearch, - ) { - return __objc_msgSend_342_stret( - stret, - obj, - sel, - searchString, - mask, - rangeOfReceiverToSearch, - ); - } - - late final __objc_msgSend_342_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend_stret'); - late final __objc_msgSend_342_stret = __objc_msgSend_342_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - - late final _sel_rangeOfString_options_range_locale_1 = - _registerName1("rangeOfString:options:range:locale:"); - _NSRange _objc_msgSend_343( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchString, - int mask, - _NSRange rangeOfReceiverToSearch, - ffi.Pointer locale, - ) { - return __objc_msgSend_343( - obj, - sel, - searchString, - mask, - rangeOfReceiverToSearch, - locale, - ); - } - - late final __objc_msgSend_343Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_343 = __objc_msgSend_343Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange, ffi.Pointer)>(); - - void _objc_msgSend_343_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchString, - int mask, - _NSRange rangeOfReceiverToSearch, - ffi.Pointer locale, - ) { - return __objc_msgSend_343_stret( - stret, - obj, - sel, - searchString, - mask, - rangeOfReceiverToSearch, - locale, - ); - } - - late final __objc_msgSend_343_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_343_stret = __objc_msgSend_343_stretPtr.asFunction< - void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - _NSRange, - ffi.Pointer)>(); - - late final _sel_rangeOfCharacterFromSet_1 = - _registerName1("rangeOfCharacterFromSet:"); - _NSRange _objc_msgSend_344( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchSet, - ) { - return __objc_msgSend_344( - obj, - sel, - searchSet, - ); - } - - late final __objc_msgSend_344Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_344 = __objc_msgSend_344Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - void _objc_msgSend_344_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchSet, - ) { - return __objc_msgSend_344_stret( - stret, - obj, - sel, - searchSet, - ); - } - - late final __objc_msgSend_344_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_344_stret = __objc_msgSend_344_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_rangeOfCharacterFromSet_options_1 = - _registerName1("rangeOfCharacterFromSet:options:"); - _NSRange _objc_msgSend_345( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchSet, - int mask, - ) { - return __objc_msgSend_345( - obj, - sel, - searchSet, - mask, - ); - } - - late final __objc_msgSend_345Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_345 = __objc_msgSend_345Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - void _objc_msgSend_345_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchSet, - int mask, - ) { - return __objc_msgSend_345_stret( - stret, - obj, - sel, - searchSet, - mask, - ); - } - - late final __objc_msgSend_345_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend_stret'); - late final __objc_msgSend_345_stret = __objc_msgSend_345_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_rangeOfCharacterFromSet_options_range_1 = - _registerName1("rangeOfCharacterFromSet:options:range:"); - _NSRange _objc_msgSend_346( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchSet, - int mask, - _NSRange rangeOfReceiverToSearch, - ) { - return __objc_msgSend_346( - obj, - sel, - searchSet, - mask, - rangeOfReceiverToSearch, - ); - } - - late final __objc_msgSend_346Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_346 = __objc_msgSend_346Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange)>(); - - void _objc_msgSend_346_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchSet, - int mask, - _NSRange rangeOfReceiverToSearch, - ) { - return __objc_msgSend_346_stret( - stret, - obj, - sel, - searchSet, - mask, - rangeOfReceiverToSearch, - ); - } - - late final __objc_msgSend_346_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend_stret'); - late final __objc_msgSend_346_stret = __objc_msgSend_346_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - - late final _sel_rangeOfComposedCharacterSequenceAtIndex_1 = - _registerName1("rangeOfComposedCharacterSequenceAtIndex:"); - _NSRange _objc_msgSend_347( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_347( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_347Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_347 = __objc_msgSend_347Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, int)>(); - - void _objc_msgSend_347_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_347_stret( - stret, - obj, - sel, - index, - ); - } - - late final __objc_msgSend_347_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend_stret'); - late final __objc_msgSend_347_stret = __objc_msgSend_347_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_rangeOfComposedCharacterSequencesForRange_1 = - _registerName1("rangeOfComposedCharacterSequencesForRange:"); - _NSRange _objc_msgSend_348( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_348( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_348Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_348 = __objc_msgSend_348Ptr.asFunction< - _NSRange Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - void _objc_msgSend_348_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_348_stret( - stret, - obj, - sel, - range, - ); - } - - late final __objc_msgSend_348_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend_stret'); - late final __objc_msgSend_348_stret = __objc_msgSend_348_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - late final _sel_stringByAppendingString_1 = - _registerName1("stringByAppendingString:"); - late final _sel_stringByAppendingFormat_1 = - _registerName1("stringByAppendingFormat:"); - late final _sel_uppercaseString1 = _registerName1("uppercaseString"); - late final _sel_lowercaseString1 = _registerName1("lowercaseString"); - late final _sel_capitalizedString1 = _registerName1("capitalizedString"); - late final _sel_localizedUppercaseString1 = - _registerName1("localizedUppercaseString"); - late final _sel_localizedLowercaseString1 = - _registerName1("localizedLowercaseString"); - late final _sel_localizedCapitalizedString1 = - _registerName1("localizedCapitalizedString"); - late final _sel_uppercaseStringWithLocale_1 = - _registerName1("uppercaseStringWithLocale:"); - ffi.Pointer _objc_msgSend_349( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer locale, - ) { - return __objc_msgSend_349( - obj, - sel, - locale, - ); - } - - late final __objc_msgSend_349Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_349 = __objc_msgSend_349Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_lowercaseStringWithLocale_1 = - _registerName1("lowercaseStringWithLocale:"); - late final _sel_capitalizedStringWithLocale_1 = - _registerName1("capitalizedStringWithLocale:"); - late final _sel_getLineStart_end_contentsEnd_forRange_1 = - _registerName1("getLineStart:end:contentsEnd:forRange:"); - void _objc_msgSend_350( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer startPtr, - ffi.Pointer lineEndPtr, - ffi.Pointer contentsEndPtr, - _NSRange range, - ) { - return __objc_msgSend_350( - obj, - sel, - startPtr, - lineEndPtr, - contentsEndPtr, - range, - ); - } - - late final __objc_msgSend_350Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_350 = __objc_msgSend_350Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - _NSRange)>(); - - late final _sel_lineRangeForRange_1 = _registerName1("lineRangeForRange:"); - late final _sel_getParagraphStart_end_contentsEnd_forRange_1 = - _registerName1("getParagraphStart:end:contentsEnd:forRange:"); - late final _sel_paragraphRangeForRange_1 = - _registerName1("paragraphRangeForRange:"); - late final _sel_enumerateSubstringsInRange_options_usingBlock_1 = - _registerName1("enumerateSubstringsInRange:options:usingBlock:"); - void _objc_msgSend_351( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_351( - obj, - sel, - range, - opts, - block, - ); - } - - late final __objc_msgSend_351Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_351 = __objc_msgSend_351Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateLinesUsingBlock_1 = - _registerName1("enumerateLinesUsingBlock:"); - void _objc_msgSend_352( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_352( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_352Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_352 = __objc_msgSend_352Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_UTF8String1 = _registerName1("UTF8String"); - late final _sel_fastestEncoding1 = _registerName1("fastestEncoding"); - late final _sel_smallestEncoding1 = _registerName1("smallestEncoding"); - late final _sel_dataUsingEncoding_allowLossyConversion_1 = - _registerName1("dataUsingEncoding:allowLossyConversion:"); - ffi.Pointer _objc_msgSend_353( - ffi.Pointer obj, - ffi.Pointer sel, - int encoding, - bool lossy, - ) { - return __objc_msgSend_353( - obj, - sel, - encoding, - lossy, - ); - } - - late final __objc_msgSend_353Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_353 = __objc_msgSend_353Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int, bool)>(); - - late final _sel_dataUsingEncoding_1 = _registerName1("dataUsingEncoding:"); - ffi.Pointer _objc_msgSend_354( - ffi.Pointer obj, - ffi.Pointer sel, - int encoding, - ) { - return __objc_msgSend_354( - obj, - sel, - encoding, - ); - } - - late final __objc_msgSend_354Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_354 = __objc_msgSend_354Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_canBeConvertedToEncoding_1 = - _registerName1("canBeConvertedToEncoding:"); - late final _sel_cStringUsingEncoding_1 = - _registerName1("cStringUsingEncoding:"); - late final _sel_getCString_maxLength_encoding_1 = - _registerName1("getCString:maxLength:encoding:"); - bool _objc_msgSend_355( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - int maxBufferCount, - int encoding, - ) { - return __objc_msgSend_355( - obj, - sel, - buffer, - maxBufferCount, - encoding, - ); - } - - late final __objc_msgSend_355Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_355 = __objc_msgSend_355Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, int)>(); - - late final _sel_getBytes_maxLength_usedLength_encoding_options_range_remainingRange_1 = - _registerName1( - "getBytes:maxLength:usedLength:encoding:options:range:remainingRange:"); - bool _objc_msgSend_356( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - int maxBufferCount, - ffi.Pointer usedBufferCount, - int encoding, - int options, - _NSRange range, - ffi.Pointer<_NSRange> leftover, - ) { - return __objc_msgSend_356( - obj, - sel, - buffer, - maxBufferCount, - usedBufferCount, - encoding, - options, - range, - leftover, - ); - } - - late final __objc_msgSend_356Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Int32, - _NSRange, - ffi.Pointer<_NSRange>)>>('objc_msgSend'); - late final __objc_msgSend_356 = __objc_msgSend_356Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - int, - int, - _NSRange, - ffi.Pointer<_NSRange>)>(); - - late final _sel_maximumLengthOfBytesUsingEncoding_1 = - _registerName1("maximumLengthOfBytesUsingEncoding:"); - late final _sel_lengthOfBytesUsingEncoding_1 = - _registerName1("lengthOfBytesUsingEncoding:"); - late final _sel_availableStringEncodings1 = - _registerName1("availableStringEncodings"); - ffi.Pointer _objc_msgSend_357( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_357( - obj, - sel, - ); - } - - late final __objc_msgSend_357Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_357 = __objc_msgSend_357Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_localizedNameOfStringEncoding_1 = - _registerName1("localizedNameOfStringEncoding:"); - late final _sel_defaultCStringEncoding1 = - _registerName1("defaultCStringEncoding"); - late final _sel_decomposedStringWithCanonicalMapping1 = - _registerName1("decomposedStringWithCanonicalMapping"); - late final _sel_precomposedStringWithCanonicalMapping1 = - _registerName1("precomposedStringWithCanonicalMapping"); - late final _sel_decomposedStringWithCompatibilityMapping1 = - _registerName1("decomposedStringWithCompatibilityMapping"); - late final _sel_precomposedStringWithCompatibilityMapping1 = - _registerName1("precomposedStringWithCompatibilityMapping"); - late final _sel_componentsSeparatedByString_1 = - _registerName1("componentsSeparatedByString:"); - ffi.Pointer _objc_msgSend_358( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer separator, - ) { - return __objc_msgSend_358( - obj, - sel, - separator, - ); - } - - late final __objc_msgSend_358Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_358 = __objc_msgSend_358Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_componentsSeparatedByCharactersInSet_1 = - _registerName1("componentsSeparatedByCharactersInSet:"); - ffi.Pointer _objc_msgSend_359( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer separator, - ) { - return __objc_msgSend_359( - obj, - sel, - separator, - ); - } - - late final __objc_msgSend_359Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_359 = __objc_msgSend_359Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_stringByTrimmingCharactersInSet_1 = - _registerName1("stringByTrimmingCharactersInSet:"); - ffi.Pointer _objc_msgSend_360( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer set1, - ) { - return __objc_msgSend_360( - obj, - sel, - set1, - ); - } - - late final __objc_msgSend_360Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_360 = __objc_msgSend_360Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_stringByPaddingToLength_withString_startingAtIndex_1 = - _registerName1("stringByPaddingToLength:withString:startingAtIndex:"); - ffi.Pointer _objc_msgSend_361( - ffi.Pointer obj, - ffi.Pointer sel, - int newLength, - ffi.Pointer padString, - int padIndex, - ) { - return __objc_msgSend_361( - obj, - sel, - newLength, - padString, - padIndex, - ); - } - - late final __objc_msgSend_361Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_361 = __objc_msgSend_361Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer, int)>(); - - late final _sel_stringByFoldingWithOptions_locale_1 = - _registerName1("stringByFoldingWithOptions:locale:"); - ffi.Pointer _objc_msgSend_362( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ffi.Pointer locale, - ) { - return __objc_msgSend_362( - obj, - sel, - options, - locale, - ); - } - - late final __objc_msgSend_362Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_362 = __objc_msgSend_362Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_stringByReplacingOccurrencesOfString_withString_options_range_1 = - _registerName1( - "stringByReplacingOccurrencesOfString:withString:options:range:"); - ffi.Pointer _objc_msgSend_363( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer target, - ffi.Pointer replacement, - int options, - _NSRange searchRange, - ) { - return __objc_msgSend_363( - obj, - sel, - target, - replacement, - options, - searchRange, - ); - } - - late final __objc_msgSend_363Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_363 = __objc_msgSend_363Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - _NSRange)>(); - - late final _sel_stringByReplacingOccurrencesOfString_withString_1 = - _registerName1("stringByReplacingOccurrencesOfString:withString:"); - ffi.Pointer _objc_msgSend_364( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer target, - ffi.Pointer replacement, - ) { - return __objc_msgSend_364( - obj, - sel, - target, - replacement, - ); - } - - late final __objc_msgSend_364Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_364 = __objc_msgSend_364Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_stringByReplacingCharactersInRange_withString_1 = - _registerName1("stringByReplacingCharactersInRange:withString:"); - ffi.Pointer _objc_msgSend_365( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer replacement, - ) { - return __objc_msgSend_365( - obj, - sel, - range, - replacement, - ); - } - - late final __objc_msgSend_365Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_365 = __objc_msgSend_365Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); - - late final _sel_stringByApplyingTransform_reverse_1 = - _registerName1("stringByApplyingTransform:reverse:"); - ffi.Pointer _objc_msgSend_366( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer transform, - bool reverse, - ) { - return __objc_msgSend_366( - obj, - sel, - transform, - reverse, - ); - } - - late final __objc_msgSend_366Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_366 = __objc_msgSend_366Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_writeToURL_atomically_encoding_error_1 = - _registerName1("writeToURL:atomically:encoding:error:"); - bool _objc_msgSend_367( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - bool useAuxiliaryFile, - int enc, - ffi.Pointer> error, - ) { - return __objc_msgSend_367( - obj, - sel, - url, - useAuxiliaryFile, - enc, - error, - ); - } - - late final __objc_msgSend_367Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.UnsignedLong, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_367 = __objc_msgSend_367Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - int, - ffi.Pointer>)>(); - - late final _sel_writeToFile_atomically_encoding_error_1 = - _registerName1("writeToFile:atomically:encoding:error:"); - bool _objc_msgSend_368( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool useAuxiliaryFile, - int enc, - ffi.Pointer> error, - ) { - return __objc_msgSend_368( - obj, - sel, - path, - useAuxiliaryFile, - enc, - error, - ); - } - - late final __objc_msgSend_368Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.UnsignedLong, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_368 = __objc_msgSend_368Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - int, - ffi.Pointer>)>(); - - late final _sel_hash1 = _registerName1("hash"); - late final _sel_initWithCharactersNoCopy_length_freeWhenDone_1 = - _registerName1("initWithCharactersNoCopy:length:freeWhenDone:"); - instancetype _objc_msgSend_369( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer characters, - int length, - bool freeBuffer, - ) { - return __objc_msgSend_369( - obj, - sel, - characters, - length, - freeBuffer, - ); - } - - late final __objc_msgSend_369Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_369 = __objc_msgSend_369Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, bool)>(); - - late final _sel_initWithCharactersNoCopy_length_deallocator_1 = - _registerName1("initWithCharactersNoCopy:length:deallocator:"); - instancetype _objc_msgSend_370( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer chars, - int len, - ffi.Pointer<_ObjCBlock> deallocator, - ) { - return __objc_msgSend_370( - obj, - sel, - chars, - len, - deallocator, - ); - } - - late final __objc_msgSend_370Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_370 = __objc_msgSend_370Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_initWithCharacters_length_1 = - _registerName1("initWithCharacters:length:"); - instancetype _objc_msgSend_371( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer characters, - int length, - ) { - return __objc_msgSend_371( - obj, - sel, - characters, - length, - ); - } - - late final __objc_msgSend_371Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_371 = __objc_msgSend_371Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_initWithUTF8String_1 = _registerName1("initWithUTF8String:"); - instancetype _objc_msgSend_372( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer nullTerminatedCString, - ) { - return __objc_msgSend_372( - obj, - sel, - nullTerminatedCString, - ); - } - - late final __objc_msgSend_372Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_372 = __objc_msgSend_372Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithFormat_1 = _registerName1("initWithFormat:"); - late final _sel_initWithFormat_arguments_1 = - _registerName1("initWithFormat:arguments:"); - instancetype _objc_msgSend_373( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer<__va_list_tag> argList, - ) { - return __objc_msgSend_373( - obj, - sel, - format, - argList, - ); - } - - late final __objc_msgSend_373Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); - late final __objc_msgSend_373 = __objc_msgSend_373Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<__va_list_tag>)>(); - - late final _sel_initWithFormat_locale_1 = - _registerName1("initWithFormat:locale:"); - instancetype _objc_msgSend_374( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer locale, - ) { - return __objc_msgSend_374( - obj, - sel, - format, - locale, - ); - } - - late final __objc_msgSend_374Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_374 = __objc_msgSend_374Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithFormat_locale_arguments_1 = - _registerName1("initWithFormat:locale:arguments:"); - instancetype _objc_msgSend_375( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer locale, - ffi.Pointer<__va_list_tag> argList, - ) { - return __objc_msgSend_375( - obj, - sel, - format, - locale, - argList, - ); - } - - late final __objc_msgSend_375Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); - late final __objc_msgSend_375 = __objc_msgSend_375Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>(); - - late final _sel_initWithValidatedFormat_validFormatSpecifiers_error_1 = - _registerName1("initWithValidatedFormat:validFormatSpecifiers:error:"); - instancetype _objc_msgSend_376( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer validFormatSpecifiers, - ffi.Pointer> error, - ) { - return __objc_msgSend_376( - obj, - sel, - format, - validFormatSpecifiers, - error, - ); - } - - late final __objc_msgSend_376Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_376 = __objc_msgSend_376Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_1 = - _registerName1( - "initWithValidatedFormat:validFormatSpecifiers:locale:error:"); - instancetype _objc_msgSend_377( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer validFormatSpecifiers, - ffi.Pointer locale, - ffi.Pointer> error, - ) { - return __objc_msgSend_377( - obj, - sel, - format, - validFormatSpecifiers, - locale, - error, - ); - } - - late final __objc_msgSend_377Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_377 = __objc_msgSend_377Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_1 = - _registerName1( - "initWithValidatedFormat:validFormatSpecifiers:arguments:error:"); - instancetype _objc_msgSend_378( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer validFormatSpecifiers, - ffi.Pointer<__va_list_tag> argList, - ffi.Pointer> error, - ) { - return __objc_msgSend_378( - obj, - sel, - format, - validFormatSpecifiers, - argList, - error, - ); - } - - late final __objc_msgSend_378Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_378 = __objc_msgSend_378Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>, - ffi.Pointer>)>(); - - late final _sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_1 = - _registerName1( - "initWithValidatedFormat:validFormatSpecifiers:locale:arguments:error:"); - instancetype _objc_msgSend_379( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer validFormatSpecifiers, - ffi.Pointer locale, - ffi.Pointer<__va_list_tag> argList, - ffi.Pointer> error, - ) { - return __objc_msgSend_379( - obj, - sel, - format, - validFormatSpecifiers, - locale, - argList, - error, - ); - } - - late final __objc_msgSend_379Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_379 = __objc_msgSend_379Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>, - ffi.Pointer>)>(); - - late final _sel_initWithData_encoding_1 = - _registerName1("initWithData:encoding:"); - instancetype _objc_msgSend_380( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - int encoding, - ) { - return __objc_msgSend_380( - obj, - sel, - data, - encoding, - ); - } - - late final __objc_msgSend_380Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_380 = __objc_msgSend_380Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_initWithBytes_length_encoding_1 = - _registerName1("initWithBytes:length:encoding:"); - instancetype _objc_msgSend_381( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int len, - int encoding, - ) { - return __objc_msgSend_381( - obj, - sel, - bytes, - len, - encoding, - ); - } - - late final __objc_msgSend_381Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_381 = __objc_msgSend_381Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, int)>(); - - late final _sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1 = - _registerName1("initWithBytesNoCopy:length:encoding:freeWhenDone:"); - instancetype _objc_msgSend_382( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int len, - int encoding, - bool freeBuffer, - ) { - return __objc_msgSend_382( - obj, - sel, - bytes, - len, - encoding, - freeBuffer, - ); - } - - late final __objc_msgSend_382Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_382 = __objc_msgSend_382Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, int, bool)>(); - - late final _sel_initWithBytesNoCopy_length_encoding_deallocator_1 = - _registerName1("initWithBytesNoCopy:length:encoding:deallocator:"); - instancetype _objc_msgSend_383( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int len, - int encoding, - ffi.Pointer<_ObjCBlock> deallocator, - ) { - return __objc_msgSend_383( - obj, - sel, - bytes, - len, - encoding, - deallocator, - ); - } - - late final __objc_msgSend_383Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_383 = __objc_msgSend_383Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_string1 = _registerName1("string"); - late final _sel_stringWithString_1 = _registerName1("stringWithString:"); - late final _sel_stringWithCharacters_length_1 = - _registerName1("stringWithCharacters:length:"); - late final _sel_stringWithUTF8String_1 = - _registerName1("stringWithUTF8String:"); - late final _sel_stringWithFormat_1 = _registerName1("stringWithFormat:"); - late final _sel_localizedStringWithFormat_1 = - _registerName1("localizedStringWithFormat:"); - late final _sel_stringWithValidatedFormat_validFormatSpecifiers_error_1 = - _registerName1("stringWithValidatedFormat:validFormatSpecifiers:error:"); - late final _sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_1 = - _registerName1( - "localizedStringWithValidatedFormat:validFormatSpecifiers:error:"); - late final _sel_initWithCString_encoding_1 = - _registerName1("initWithCString:encoding:"); - instancetype _objc_msgSend_384( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer nullTerminatedCString, - int encoding, - ) { - return __objc_msgSend_384( - obj, - sel, - nullTerminatedCString, - encoding, - ); - } - - late final __objc_msgSend_384Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_384 = __objc_msgSend_384Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_stringWithCString_encoding_1 = - _registerName1("stringWithCString:encoding:"); - late final _sel_initWithContentsOfURL_encoding_error_1 = - _registerName1("initWithContentsOfURL:encoding:error:"); - instancetype _objc_msgSend_385( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int enc, - ffi.Pointer> error, - ) { - return __objc_msgSend_385( - obj, - sel, - url, - enc, - error, - ); - } - - late final __objc_msgSend_385Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_385 = __objc_msgSend_385Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_initWithContentsOfFile_encoding_error_1 = - _registerName1("initWithContentsOfFile:encoding:error:"); - instancetype _objc_msgSend_386( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - int enc, - ffi.Pointer> error, - ) { - return __objc_msgSend_386( - obj, - sel, - path, - enc, - error, - ); - } - - late final __objc_msgSend_386Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_386 = __objc_msgSend_386Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_stringWithContentsOfURL_encoding_error_1 = - _registerName1("stringWithContentsOfURL:encoding:error:"); - late final _sel_stringWithContentsOfFile_encoding_error_1 = - _registerName1("stringWithContentsOfFile:encoding:error:"); - late final _sel_initWithContentsOfURL_usedEncoding_error_1 = - _registerName1("initWithContentsOfURL:usedEncoding:error:"); - instancetype _objc_msgSend_387( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer enc, - ffi.Pointer> error, - ) { - return __objc_msgSend_387( - obj, - sel, - url, - enc, - error, - ); - } - - late final __objc_msgSend_387Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_387 = __objc_msgSend_387Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_initWithContentsOfFile_usedEncoding_error_1 = - _registerName1("initWithContentsOfFile:usedEncoding:error:"); - instancetype _objc_msgSend_388( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer enc, - ffi.Pointer> error, - ) { - return __objc_msgSend_388( - obj, - sel, - path, - enc, - error, - ); - } - - late final __objc_msgSend_388Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_388 = __objc_msgSend_388Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_stringWithContentsOfURL_usedEncoding_error_1 = - _registerName1("stringWithContentsOfURL:usedEncoding:error:"); - late final _sel_stringWithContentsOfFile_usedEncoding_error_1 = - _registerName1("stringWithContentsOfFile:usedEncoding:error:"); - late final _sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1 = - _registerName1( - "stringEncodingForData:encodingOptions:convertedString:usedLossyConversion:"); - int _objc_msgSend_389( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ffi.Pointer opts, - ffi.Pointer> string, - ffi.Pointer usedLossyConversion, - ) { - return __objc_msgSend_389( - obj, - sel, - data, - opts, - string, - usedLossyConversion, - ); - } - - late final __objc_msgSend_389Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_389 = __objc_msgSend_389Ptr.asFunction< - int Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer)>(); - - late final _sel_propertyList1 = _registerName1("propertyList"); - late final _sel_propertyListFromStringsFileFormat1 = - _registerName1("propertyListFromStringsFileFormat"); - ffi.Pointer _objc_msgSend_390( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_390( - obj, - sel, - ); - } - - late final __objc_msgSend_390Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_390 = __objc_msgSend_390Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_cString1 = _registerName1("cString"); - late final _sel_lossyCString1 = _registerName1("lossyCString"); - late final _sel_cStringLength1 = _registerName1("cStringLength"); - late final _sel_getCString_1 = _registerName1("getCString:"); - late final _sel_getCString_maxLength_1 = - _registerName1("getCString:maxLength:"); - void _objc_msgSend_391( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int maxLength, - ) { - return __objc_msgSend_391( - obj, - sel, - bytes, - maxLength, - ); - } - - late final __objc_msgSend_391Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_391 = __objc_msgSend_391Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_getCString_maxLength_range_remainingRange_1 = - _registerName1("getCString:maxLength:range:remainingRange:"); - void _objc_msgSend_392( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int maxLength, - _NSRange aRange, - ffi.Pointer<_NSRange> leftoverRange, - ) { - return __objc_msgSend_392( - obj, - sel, - bytes, - maxLength, - aRange, - leftoverRange, - ); - } - - late final __objc_msgSend_392Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - _NSRange, - ffi.Pointer<_NSRange>)>>('objc_msgSend'); - late final __objc_msgSend_392 = __objc_msgSend_392Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange, ffi.Pointer<_NSRange>)>(); - - late final _sel_stringWithContentsOfFile_1 = - _registerName1("stringWithContentsOfFile:"); - late final _sel_stringWithContentsOfURL_1 = - _registerName1("stringWithContentsOfURL:"); - late final _sel_initWithCStringNoCopy_length_freeWhenDone_1 = - _registerName1("initWithCStringNoCopy:length:freeWhenDone:"); - ffi.Pointer _objc_msgSend_393( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int length, - bool freeBuffer, - ) { - return __objc_msgSend_393( - obj, - sel, - bytes, - length, - freeBuffer, - ); - } - - late final __objc_msgSend_393Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_393 = __objc_msgSend_393Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, bool)>(); - - late final _sel_initWithCString_length_1 = - _registerName1("initWithCString:length:"); - late final _sel_initWithCString_1 = _registerName1("initWithCString:"); - late final _sel_stringWithCString_length_1 = - _registerName1("stringWithCString:length:"); - late final _sel_stringWithCString_1 = _registerName1("stringWithCString:"); - late final _sel_getCharacters_1 = _registerName1("getCharacters:"); - void _objc_msgSend_394( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - ) { - return __objc_msgSend_394( - obj, - sel, - buffer, - ); - } - - late final __objc_msgSend_394Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_394 = __objc_msgSend_394Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_variantFittingPresentationWidth_1 = - _registerName1("variantFittingPresentationWidth:"); - ffi.Pointer _objc_msgSend_395( - ffi.Pointer obj, - ffi.Pointer sel, - int width, - ) { - return __objc_msgSend_395( - obj, - sel, - width, - ); - } - - late final __objc_msgSend_395Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_395 = __objc_msgSend_395Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_pathWithComponents_1 = _registerName1("pathWithComponents:"); - ffi.Pointer _objc_msgSend_396( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer components, - ) { - return __objc_msgSend_396( - obj, - sel, - components, - ); - } - - late final __objc_msgSend_396Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_396 = __objc_msgSend_396Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isAbsolutePath1 = _registerName1("isAbsolutePath"); - late final _sel_stringByDeletingLastPathComponent1 = - _registerName1("stringByDeletingLastPathComponent"); - late final _sel_stringByAppendingPathComponent_1 = - _registerName1("stringByAppendingPathComponent:"); - late final _sel_stringByDeletingPathExtension1 = - _registerName1("stringByDeletingPathExtension"); - late final _sel_stringByAppendingPathExtension_1 = - _registerName1("stringByAppendingPathExtension:"); - late final _sel_stringByAbbreviatingWithTildeInPath1 = - _registerName1("stringByAbbreviatingWithTildeInPath"); - late final _sel_stringByExpandingTildeInPath1 = - _registerName1("stringByExpandingTildeInPath"); - late final _sel_stringByStandardizingPath1 = - _registerName1("stringByStandardizingPath"); - late final _sel_stringByResolvingSymlinksInPath1 = - _registerName1("stringByResolvingSymlinksInPath"); - late final _sel_stringsByAppendingPaths_1 = - _registerName1("stringsByAppendingPaths:"); - late final _sel_completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_1 = - _registerName1( - "completePathIntoString:caseSensitive:matchesIntoArray:filterTypes:"); - int _objc_msgSend_397( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> outputName, - bool flag, - ffi.Pointer> outputArray, - ffi.Pointer filterTypes, - ) { - return __objc_msgSend_397( - obj, - sel, - outputName, - flag, - outputArray, - filterTypes, - ); - } - - late final __objc_msgSend_397Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Bool, - ffi.Pointer>, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_397 = __objc_msgSend_397Ptr.asFunction< - int Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - bool, - ffi.Pointer>, - ffi.Pointer)>(); - - late final _sel_stringByAddingPercentEncodingWithAllowedCharacters_1 = - _registerName1("stringByAddingPercentEncodingWithAllowedCharacters:"); - ffi.Pointer _objc_msgSend_398( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer allowedCharacters, - ) { - return __objc_msgSend_398( - obj, - sel, - allowedCharacters, - ); - } - - late final __objc_msgSend_398Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_398 = __objc_msgSend_398Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_stringByRemovingPercentEncoding1 = - _registerName1("stringByRemovingPercentEncoding"); - late final _sel_stringByAddingPercentEscapesUsingEncoding_1 = - _registerName1("stringByAddingPercentEscapesUsingEncoding:"); - ffi.Pointer _objc_msgSend_399( - ffi.Pointer obj, - ffi.Pointer sel, - int enc, - ) { - return __objc_msgSend_399( - obj, - sel, - enc, - ); - } - - late final __objc_msgSend_399Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_399 = __objc_msgSend_399Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_stringByReplacingPercentEscapesUsingEncoding_1 = - _registerName1("stringByReplacingPercentEscapesUsingEncoding:"); - late final _class_NSOrthography1 = _getClass1("NSOrthography"); - late final _sel_dominantScript1 = _registerName1("dominantScript"); - late final _sel_languageMap1 = _registerName1("languageMap"); - late final _sel_initWithDominantScript_languageMap_1 = - _registerName1("initWithDominantScript:languageMap:"); - instancetype _objc_msgSend_400( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer script, - ffi.Pointer map, - ) { - return __objc_msgSend_400( - obj, - sel, - script, - map, - ); - } - - late final __objc_msgSend_400Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_400 = __objc_msgSend_400Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_languagesForScript_1 = _registerName1("languagesForScript:"); - late final _sel_dominantLanguageForScript_1 = - _registerName1("dominantLanguageForScript:"); - late final _sel_dominantLanguage1 = _registerName1("dominantLanguage"); - late final _sel_allScripts1 = _registerName1("allScripts"); - late final _sel_allLanguages1 = _registerName1("allLanguages"); - late final _sel_defaultOrthographyForLanguage_1 = - _registerName1("defaultOrthographyForLanguage:"); - late final _sel_orthographyWithDominantScript_languageMap_1 = - _registerName1("orthographyWithDominantScript:languageMap:"); - late final _sel_linguisticTagsInRange_scheme_options_orthography_tokenRanges_1 = - _registerName1( - "linguisticTagsInRange:scheme:options:orthography:tokenRanges:"); - ffi.Pointer _objc_msgSend_401( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer scheme, - int options, - ffi.Pointer orthography, - ffi.Pointer> tokenRanges, - ) { - return __objc_msgSend_401( - obj, - sel, - range, - scheme, - options, - orthography, - tokenRanges, - ); - } - - late final __objc_msgSend_401Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_401 = __objc_msgSend_401Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_enumerateLinguisticTagsInRange_scheme_options_orthography_usingBlock_1 = - _registerName1( - "enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock:"); - void _objc_msgSend_402( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer scheme, - int options, - ffi.Pointer orthography, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_402( - obj, - sel, - range, - scheme, - options, - orthography, - block, - ); - } - - late final __objc_msgSend_402Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_402 = __objc_msgSend_402Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_anyObject1 = _registerName1("anyObject"); - late final _sel_intersectsSet_1 = _registerName1("intersectsSet:"); - bool _objc_msgSend_403( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherSet, - ) { - return __objc_msgSend_403( - obj, - sel, - otherSet, - ); - } - - late final __objc_msgSend_403Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_403 = __objc_msgSend_403Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isEqualToSet_1 = _registerName1("isEqualToSet:"); - late final _sel_isSubsetOfSet_1 = _registerName1("isSubsetOfSet:"); - late final _sel_setByAddingObject_1 = _registerName1("setByAddingObject:"); - ffi.Pointer _objc_msgSend_404( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - ) { - return __objc_msgSend_404( - obj, - sel, - anObject, - ); - } - - late final __objc_msgSend_404Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_404 = __objc_msgSend_404Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setByAddingObjectsFromSet_1 = - _registerName1("setByAddingObjectsFromSet:"); - ffi.Pointer _objc_msgSend_405( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_405( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_405Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_405 = __objc_msgSend_405Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setByAddingObjectsFromArray_1 = - _registerName1("setByAddingObjectsFromArray:"); - ffi.Pointer _objc_msgSend_406( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_406( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_406Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_406 = __objc_msgSend_406Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_407( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_407( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_407Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_407 = __objc_msgSend_407Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - void _objc_msgSend_408( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_408( - obj, - sel, - opts, - block, - ); - } - - late final __objc_msgSend_408Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_408 = __objc_msgSend_408Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_objectsPassingTest_1 = _registerName1("objectsPassingTest:"); - ffi.Pointer _objc_msgSend_409( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_409( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_409Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_409 = __objc_msgSend_409Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_objectsWithOptions_passingTest_1 = - _registerName1("objectsWithOptions:passingTest:"); - ffi.Pointer _objc_msgSend_410( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_410( - obj, - sel, - opts, - predicate, - ); - } - - late final __objc_msgSend_410Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_410 = __objc_msgSend_410Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_set1 = _registerName1("set"); - late final _sel_setWithObject_1 = _registerName1("setWithObject:"); - late final _sel_setWithObjects_count_1 = - _registerName1("setWithObjects:count:"); - late final _sel_setWithObjects_1 = _registerName1("setWithObjects:"); - late final _sel_setWithSet_1 = _registerName1("setWithSet:"); - instancetype _objc_msgSend_411( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer set1, - ) { - return __objc_msgSend_411( - obj, - sel, - set1, - ); - } - - late final __objc_msgSend_411Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_411 = __objc_msgSend_411Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setWithArray_1 = _registerName1("setWithArray:"); - late final _sel_initWithSet_1 = _registerName1("initWithSet:"); - late final _sel_initWithSet_copyItems_1 = - _registerName1("initWithSet:copyItems:"); - instancetype _objc_msgSend_412( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer set1, - bool flag, - ) { - return __objc_msgSend_412( - obj, - sel, - set1, - flag, - ); - } - - late final __objc_msgSend_412Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_412 = __objc_msgSend_412Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_filteredSetUsingPredicate_1 = - _registerName1("filteredSetUsingPredicate:"); - ffi.Pointer _objc_msgSend_413( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer predicate, - ) { - return __objc_msgSend_413( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_413Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_413 = __objc_msgSend_413Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_invocationWithMethodSignature_1 = - _registerName1("invocationWithMethodSignature:"); - ffi.Pointer _objc_msgSend_414( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer sig, - ) { - return __objc_msgSend_414( - obj, - sel, - sig, - ); - } - - late final __objc_msgSend_414Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_414 = __objc_msgSend_414Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_methodSignature1 = _registerName1("methodSignature"); - ffi.Pointer _objc_msgSend_415( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_415( - obj, - sel, - ); - } - - late final __objc_msgSend_415Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_415 = __objc_msgSend_415Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_retainArguments1 = _registerName1("retainArguments"); - late final _sel_argumentsRetained1 = _registerName1("argumentsRetained"); - late final _sel_target1 = _registerName1("target"); - late final _sel_setTarget_1 = _registerName1("setTarget:"); - void _objc_msgSend_416( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_416( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_416Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_416 = __objc_msgSend_416Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_selector1 = _registerName1("selector"); - ffi.Pointer _objc_msgSend_417( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_417( - obj, - sel, - ); - } - - late final __objc_msgSend_417Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_417 = __objc_msgSend_417Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setSelector_1 = _registerName1("setSelector:"); - void _objc_msgSend_418( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_418( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_418Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_418 = __objc_msgSend_418Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_getReturnValue_1 = _registerName1("getReturnValue:"); - late final _sel_setReturnValue_1 = _registerName1("setReturnValue:"); - late final _sel_getArgument_atIndex_1 = - _registerName1("getArgument:atIndex:"); - void _objc_msgSend_419( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer argumentLocation, - int idx, - ) { - return __objc_msgSend_419( - obj, - sel, - argumentLocation, - idx, - ); - } - - late final __objc_msgSend_419Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_419 = __objc_msgSend_419Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_setArgument_atIndex_1 = - _registerName1("setArgument:atIndex:"); - late final _sel_invoke1 = _registerName1("invoke"); - late final _sel_invokeWithTarget_1 = _registerName1("invokeWithTarget:"); - late final _sel_invokeUsingIMP_1 = _registerName1("invokeUsingIMP:"); - void _objc_msgSend_420( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> imp, - ) { - return __objc_msgSend_420( - obj, - sel, - imp, - ); - } - - late final __objc_msgSend_420Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>>( - 'objc_msgSend'); - late final __objc_msgSend_420 = __objc_msgSend_420Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_forwardInvocation_1 = _registerName1("forwardInvocation:"); - void _objc_msgSend_421( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anInvocation, - ) { - return __objc_msgSend_421( - obj, - sel, - anInvocation, - ); - } - - late final __objc_msgSend_421Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_421 = __objc_msgSend_421Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_methodSignatureForSelector_1 = - _registerName1("methodSignatureForSelector:"); - ffi.Pointer _objc_msgSend_422( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ) { - return __objc_msgSend_422( - obj, - sel, - aSelector, - ); - } - - late final __objc_msgSend_422Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_422 = __objc_msgSend_422Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_instanceMethodSignatureForSelector_1 = - _registerName1("instanceMethodSignatureForSelector:"); - late final _sel_allowsWeakReference1 = _registerName1("allowsWeakReference"); - late final _sel_retainWeakReference1 = _registerName1("retainWeakReference"); - late final _sel_isSubclassOfClass_1 = _registerName1("isSubclassOfClass:"); - late final _sel_resolveClassMethod_1 = _registerName1("resolveClassMethod:"); - late final _sel_resolveInstanceMethod_1 = - _registerName1("resolveInstanceMethod:"); - late final _sel_superclass1 = _registerName1("superclass"); - late final _sel_class1 = _registerName1("class"); - late final _sel_debugDescription1 = _registerName1("debugDescription"); - late final _sel_version1 = _registerName1("version"); - late final _sel_setVersion_1 = _registerName1("setVersion:"); - void _objc_msgSend_423( - ffi.Pointer obj, - ffi.Pointer sel, - int aVersion, - ) { - return __objc_msgSend_423( - obj, - sel, - aVersion, - ); - } - - late final __objc_msgSend_423Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_423 = __objc_msgSend_423Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_classForCoder1 = _registerName1("classForCoder"); - late final _sel_replacementObjectForCoder_1 = - _registerName1("replacementObjectForCoder:"); - late final _sel_awakeAfterUsingCoder_1 = - _registerName1("awakeAfterUsingCoder:"); - late final _sel_poseAsClass_1 = _registerName1("poseAsClass:"); - late final _sel_autoContentAccessingProxy1 = - _registerName1("autoContentAccessingProxy"); - late final _sel_attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_1 = - _registerName1( - "attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:"); - void _objc_msgSend_424( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer error, - int recoveryOptionIndex, - ffi.Pointer delegate, - ffi.Pointer didRecoverSelector, - ffi.Pointer contextInfo, - ) { - return __objc_msgSend_424( - obj, - sel, - error, - recoveryOptionIndex, - delegate, - didRecoverSelector, - contextInfo, - ); - } - - late final __objc_msgSend_424Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_424 = __objc_msgSend_424Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_attemptRecoveryFromError_optionIndex_1 = - _registerName1("attemptRecoveryFromError:optionIndex:"); - bool _objc_msgSend_425( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer error, - int recoveryOptionIndex, - ) { - return __objc_msgSend_425( - obj, - sel, - error, - recoveryOptionIndex, - ); - } - - late final __objc_msgSend_425Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_425 = __objc_msgSend_425Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_performSelector_withObject_afterDelay_inModes_1 = - _registerName1("performSelector:withObject:afterDelay:inModes:"); - void _objc_msgSend_426( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer anArgument, - double delay, - ffi.Pointer modes, - ) { - return __objc_msgSend_426( - obj, - sel, - aSelector, - anArgument, - delay, - modes, - ); - } - - late final __objc_msgSend_426Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Double, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_426 = __objc_msgSend_426Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - double, - ffi.Pointer)>(); - - late final _sel_performSelector_withObject_afterDelay_1 = - _registerName1("performSelector:withObject:afterDelay:"); - void _objc_msgSend_427( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer anArgument, - double delay, - ) { - return __objc_msgSend_427( - obj, - sel, - aSelector, - anArgument, - delay, - ); - } - - late final __objc_msgSend_427Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_427 = __objc_msgSend_427Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_URL_resourceDataDidBecomeAvailable_1 = - _registerName1("URL:resourceDataDidBecomeAvailable:"); - void _objc_msgSend_428( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer sender, - ffi.Pointer newBytes, - ) { - return __objc_msgSend_428( - obj, - sel, - sender, - newBytes, - ); - } - - late final __objc_msgSend_428Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_428 = __objc_msgSend_428Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_URLResourceDidFinishLoading_1 = - _registerName1("URLResourceDidFinishLoading:"); - void _objc_msgSend_429( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer sender, - ) { - return __objc_msgSend_429( - obj, - sel, - sender, - ); - } - - late final __objc_msgSend_429Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_429 = __objc_msgSend_429Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLResourceDidCancelLoading_1 = - _registerName1("URLResourceDidCancelLoading:"); - late final _sel_URL_resourceDidFailLoadingWithReason_1 = - _registerName1("URL:resourceDidFailLoadingWithReason:"); - void _objc_msgSend_430( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer sender, - ffi.Pointer reason, - ) { - return __objc_msgSend_430( - obj, - sel, - sender, - reason, - ); - } - - late final __objc_msgSend_430Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_430 = __objc_msgSend_430Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSFileManager1 = _getClass1("NSFileManager"); - late final _sel_defaultManager1 = _registerName1("defaultManager"); - ffi.Pointer _objc_msgSend_431( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_431( - obj, - sel, - ); - } - - late final __objc_msgSend_431Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_431 = __objc_msgSend_431Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_mountedVolumeURLsIncludingResourceValuesForKeys_options_1 = - _registerName1( - "mountedVolumeURLsIncludingResourceValuesForKeys:options:"); - ffi.Pointer _objc_msgSend_432( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer propertyKeys, - int options, - ) { - return __objc_msgSend_432( - obj, - sel, - propertyKeys, - options, - ); - } - - late final __objc_msgSend_432Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_432 = __objc_msgSend_432Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_unmountVolumeAtURL_options_completionHandler_1 = - _registerName1("unmountVolumeAtURL:options:completionHandler:"); - void _objc_msgSend_433( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int mask, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_433( - obj, - sel, - url, - mask, - completionHandler, - ); - } - - late final __objc_msgSend_433Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_433 = __objc_msgSend_433Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_1 = - _registerName1( - "contentsOfDirectoryAtURL:includingPropertiesForKeys:options:error:"); - ffi.Pointer _objc_msgSend_434( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer keys, - int mask, - ffi.Pointer> error, - ) { - return __objc_msgSend_434( - obj, - sel, - url, - keys, - mask, - error, - ); - } - - late final __objc_msgSend_434Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_434 = __objc_msgSend_434Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_URLsForDirectory_inDomains_1 = - _registerName1("URLsForDirectory:inDomains:"); - ffi.Pointer _objc_msgSend_435( - ffi.Pointer obj, - ffi.Pointer sel, - int directory, - int domainMask, - ) { - return __objc_msgSend_435( - obj, - sel, - directory, - domainMask, - ); - } - - late final __objc_msgSend_435Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_435 = __objc_msgSend_435Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int, int)>(); - - late final _sel_URLForDirectory_inDomain_appropriateForURL_create_error_1 = - _registerName1( - "URLForDirectory:inDomain:appropriateForURL:create:error:"); - ffi.Pointer _objc_msgSend_436( - ffi.Pointer obj, - ffi.Pointer sel, - int directory, - int domain, - ffi.Pointer url, - bool shouldCreate, - ffi.Pointer> error, - ) { - return __objc_msgSend_436( - obj, - sel, - directory, - domain, - url, - shouldCreate, - error, - ); - } - - late final __objc_msgSend_436Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Pointer, - ffi.Bool, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_436 = __objc_msgSend_436Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - int, - int, - ffi.Pointer, - bool, - ffi.Pointer>)>(); - - late final _sel_getRelationship_ofDirectoryAtURL_toItemAtURL_error_1 = - _registerName1("getRelationship:ofDirectoryAtURL:toItemAtURL:error:"); - bool _objc_msgSend_437( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer outRelationship, - ffi.Pointer directoryURL, - ffi.Pointer otherURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_437( - obj, - sel, - outRelationship, - directoryURL, - otherURL, - error, - ); - } - - late final __objc_msgSend_437Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_437 = __objc_msgSend_437Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_getRelationship_ofDirectory_inDomain_toItemAtURL_error_1 = - _registerName1("getRelationship:ofDirectory:inDomain:toItemAtURL:error:"); - bool _objc_msgSend_438( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer outRelationship, - int directory, - int domainMask, - ffi.Pointer url, - ffi.Pointer> error, - ) { - return __objc_msgSend_438( - obj, - sel, - outRelationship, - directory, - domainMask, - url, - error, - ); - } - - late final __objc_msgSend_438Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_438 = __objc_msgSend_438Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - int, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_createDirectoryAtURL_withIntermediateDirectories_attributes_error_1 = - _registerName1( - "createDirectoryAtURL:withIntermediateDirectories:attributes:error:"); - bool _objc_msgSend_439( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - bool createIntermediates, - ffi.Pointer attributes, - ffi.Pointer> error, - ) { - return __objc_msgSend_439( - obj, - sel, - url, - createIntermediates, - attributes, - error, - ); - } - - late final __objc_msgSend_439Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_439 = __objc_msgSend_439Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_createSymbolicLinkAtURL_withDestinationURL_error_1 = - _registerName1("createSymbolicLinkAtURL:withDestinationURL:error:"); - bool _objc_msgSend_440( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer destURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_440( - obj, - sel, - url, - destURL, - error, - ); - } - - late final __objc_msgSend_440Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_440 = __objc_msgSend_440Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_delegate1 = _registerName1("delegate"); - late final _sel_setDelegate_1 = _registerName1("setDelegate:"); - late final _sel_setAttributes_ofItemAtPath_error_1 = - _registerName1("setAttributes:ofItemAtPath:error:"); - bool _objc_msgSend_441( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attributes, - ffi.Pointer path, - ffi.Pointer> error, - ) { - return __objc_msgSend_441( - obj, - sel, - attributes, - path, - error, - ); - } - - late final __objc_msgSend_441Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_441 = __objc_msgSend_441Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_createDirectoryAtPath_withIntermediateDirectories_attributes_error_1 = - _registerName1( - "createDirectoryAtPath:withIntermediateDirectories:attributes:error:"); - bool _objc_msgSend_442( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool createIntermediates, - ffi.Pointer attributes, - ffi.Pointer> error, - ) { - return __objc_msgSend_442( - obj, - sel, - path, - createIntermediates, - attributes, - error, - ); - } - - late final __objc_msgSend_442Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_442 = __objc_msgSend_442Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_contentsOfDirectoryAtPath_error_1 = - _registerName1("contentsOfDirectoryAtPath:error:"); - ffi.Pointer _objc_msgSend_443( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer> error, - ) { - return __objc_msgSend_443( - obj, - sel, - path, - error, - ); - } - - late final __objc_msgSend_443Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_443 = __objc_msgSend_443Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_subpathsOfDirectoryAtPath_error_1 = - _registerName1("subpathsOfDirectoryAtPath:error:"); - late final _sel_attributesOfItemAtPath_error_1 = - _registerName1("attributesOfItemAtPath:error:"); - ffi.Pointer _objc_msgSend_444( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer> error, - ) { - return __objc_msgSend_444( - obj, - sel, - path, - error, - ); - } - - late final __objc_msgSend_444Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_444 = __objc_msgSend_444Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_attributesOfFileSystemForPath_error_1 = - _registerName1("attributesOfFileSystemForPath:error:"); - late final _sel_createSymbolicLinkAtPath_withDestinationPath_error_1 = - _registerName1("createSymbolicLinkAtPath:withDestinationPath:error:"); - bool _objc_msgSend_445( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer destPath, - ffi.Pointer> error, - ) { - return __objc_msgSend_445( - obj, - sel, - path, - destPath, - error, - ); - } - - late final __objc_msgSend_445Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_445 = __objc_msgSend_445Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_destinationOfSymbolicLinkAtPath_error_1 = - _registerName1("destinationOfSymbolicLinkAtPath:error:"); - ffi.Pointer _objc_msgSend_446( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer> error, - ) { - return __objc_msgSend_446( - obj, - sel, - path, - error, - ); - } - - late final __objc_msgSend_446Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_446 = __objc_msgSend_446Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_copyItemAtPath_toPath_error_1 = - _registerName1("copyItemAtPath:toPath:error:"); - late final _sel_moveItemAtPath_toPath_error_1 = - _registerName1("moveItemAtPath:toPath:error:"); - late final _sel_linkItemAtPath_toPath_error_1 = - _registerName1("linkItemAtPath:toPath:error:"); - late final _sel_removeItemAtPath_error_1 = - _registerName1("removeItemAtPath:error:"); - bool _objc_msgSend_447( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer> error, - ) { - return __objc_msgSend_447( - obj, - sel, - path, - error, - ); - } - - late final __objc_msgSend_447Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_447 = __objc_msgSend_447Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_copyItemAtURL_toURL_error_1 = - _registerName1("copyItemAtURL:toURL:error:"); - late final _sel_moveItemAtURL_toURL_error_1 = - _registerName1("moveItemAtURL:toURL:error:"); - late final _sel_linkItemAtURL_toURL_error_1 = - _registerName1("linkItemAtURL:toURL:error:"); - late final _sel_removeItemAtURL_error_1 = - _registerName1("removeItemAtURL:error:"); - late final _sel_trashItemAtURL_resultingItemURL_error_1 = - _registerName1("trashItemAtURL:resultingItemURL:error:"); - bool _objc_msgSend_448( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer> outResultingURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_448( - obj, - sel, - url, - outResultingURL, - error, - ); - } - - late final __objc_msgSend_448Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_448 = __objc_msgSend_448Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_fileAttributesAtPath_traverseLink_1 = - _registerName1("fileAttributesAtPath:traverseLink:"); - ffi.Pointer _objc_msgSend_449( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool yorn, - ) { - return __objc_msgSend_449( - obj, - sel, - path, - yorn, - ); - } - - late final __objc_msgSend_449Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_449 = __objc_msgSend_449Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_changeFileAttributes_atPath_1 = - _registerName1("changeFileAttributes:atPath:"); - bool _objc_msgSend_450( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attributes, - ffi.Pointer path, - ) { - return __objc_msgSend_450( - obj, - sel, - attributes, - path, - ); - } - - late final __objc_msgSend_450Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_450 = __objc_msgSend_450Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_directoryContentsAtPath_1 = - _registerName1("directoryContentsAtPath:"); - late final _sel_fileSystemAttributesAtPath_1 = - _registerName1("fileSystemAttributesAtPath:"); - late final _sel_pathContentOfSymbolicLinkAtPath_1 = - _registerName1("pathContentOfSymbolicLinkAtPath:"); - late final _sel_createSymbolicLinkAtPath_pathContent_1 = - _registerName1("createSymbolicLinkAtPath:pathContent:"); - bool _objc_msgSend_451( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer otherpath, - ) { - return __objc_msgSend_451( - obj, - sel, - path, - otherpath, - ); - } - - late final __objc_msgSend_451Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_451 = __objc_msgSend_451Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_createDirectoryAtPath_attributes_1 = - _registerName1("createDirectoryAtPath:attributes:"); - bool _objc_msgSend_452( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer attributes, - ) { - return __objc_msgSend_452( - obj, - sel, - path, - attributes, - ); - } - - late final __objc_msgSend_452Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_452 = __objc_msgSend_452Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_linkPath_toPath_handler_1 = - _registerName1("linkPath:toPath:handler:"); - bool _objc_msgSend_453( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer src, - ffi.Pointer dest, - ffi.Pointer handler, - ) { - return __objc_msgSend_453( - obj, - sel, - src, - dest, - handler, - ); - } - - late final __objc_msgSend_453Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_453 = __objc_msgSend_453Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_copyPath_toPath_handler_1 = - _registerName1("copyPath:toPath:handler:"); - late final _sel_movePath_toPath_handler_1 = - _registerName1("movePath:toPath:handler:"); - late final _sel_removeFileAtPath_handler_1 = - _registerName1("removeFileAtPath:handler:"); - bool _objc_msgSend_454( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer handler, - ) { - return __objc_msgSend_454( - obj, - sel, - path, - handler, - ); - } - - late final __objc_msgSend_454Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_454 = __objc_msgSend_454Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_currentDirectoryPath1 = - _registerName1("currentDirectoryPath"); - late final _sel_changeCurrentDirectoryPath_1 = - _registerName1("changeCurrentDirectoryPath:"); - late final _sel_fileExistsAtPath_1 = _registerName1("fileExistsAtPath:"); - late final _sel_fileExistsAtPath_isDirectory_1 = - _registerName1("fileExistsAtPath:isDirectory:"); - bool _objc_msgSend_455( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer isDirectory, - ) { - return __objc_msgSend_455( - obj, - sel, - path, - isDirectory, - ); - } - - late final __objc_msgSend_455Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_455 = __objc_msgSend_455Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isReadableFileAtPath_1 = - _registerName1("isReadableFileAtPath:"); - late final _sel_isWritableFileAtPath_1 = - _registerName1("isWritableFileAtPath:"); - late final _sel_isExecutableFileAtPath_1 = - _registerName1("isExecutableFileAtPath:"); - late final _sel_isDeletableFileAtPath_1 = - _registerName1("isDeletableFileAtPath:"); - late final _sel_contentsEqualAtPath_andPath_1 = - _registerName1("contentsEqualAtPath:andPath:"); - late final _sel_displayNameAtPath_1 = _registerName1("displayNameAtPath:"); - late final _sel_componentsToDisplayForPath_1 = - _registerName1("componentsToDisplayForPath:"); - late final _sel_enumeratorAtPath_1 = _registerName1("enumeratorAtPath:"); - late final _sel_enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_1 = - _registerName1( - "enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:"); - ffi.Pointer _objc_msgSend_456( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer keys, - int mask, - ffi.Pointer<_ObjCBlock> handler, - ) { - return __objc_msgSend_456( - obj, - sel, - url, - keys, - mask, - handler, - ); - } - - late final __objc_msgSend_456Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_456 = __objc_msgSend_456Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_subpathsAtPath_1 = _registerName1("subpathsAtPath:"); - late final _sel_contentsAtPath_1 = _registerName1("contentsAtPath:"); - ffi.Pointer _objc_msgSend_457( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_457( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_457Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_457 = __objc_msgSend_457Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_createFileAtPath_contents_attributes_1 = - _registerName1("createFileAtPath:contents:attributes:"); - bool _objc_msgSend_458( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer data, - ffi.Pointer attr, - ) { - return __objc_msgSend_458( - obj, - sel, - path, - data, - attr, - ); - } - - late final __objc_msgSend_458Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_458 = __objc_msgSend_458Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_fileSystemRepresentationWithPath_1 = - _registerName1("fileSystemRepresentationWithPath:"); - ffi.Pointer _objc_msgSend_459( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_459( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_459Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_459 = __objc_msgSend_459Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_stringWithFileSystemRepresentation_length_1 = - _registerName1("stringWithFileSystemRepresentation:length:"); - ffi.Pointer _objc_msgSend_460( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer str, - int len, - ) { - return __objc_msgSend_460( - obj, - sel, - str, - len, - ); - } - - late final __objc_msgSend_460Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_460 = __objc_msgSend_460Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_1 = - _registerName1( - "replaceItemAtURL:withItemAtURL:backupItemName:options:resultingItemURL:error:"); - bool _objc_msgSend_461( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer originalItemURL, - ffi.Pointer newItemURL, - ffi.Pointer backupItemName, - int options, - ffi.Pointer> resultingURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_461( - obj, - sel, - originalItemURL, - newItemURL, - backupItemName, - options, - resultingURL, - error, - ); - } - - late final __objc_msgSend_461Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_461 = __objc_msgSend_461Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_setUbiquitous_itemAtURL_destinationURL_error_1 = - _registerName1("setUbiquitous:itemAtURL:destinationURL:error:"); - bool _objc_msgSend_462( - ffi.Pointer obj, - ffi.Pointer sel, - bool flag, - ffi.Pointer url, - ffi.Pointer destinationURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_462( - obj, - sel, - flag, - url, - destinationURL, - error, - ); - } - - late final __objc_msgSend_462Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_462 = __objc_msgSend_462Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_isUbiquitousItemAtURL_1 = - _registerName1("isUbiquitousItemAtURL:"); - late final _sel_startDownloadingUbiquitousItemAtURL_error_1 = - _registerName1("startDownloadingUbiquitousItemAtURL:error:"); - late final _sel_evictUbiquitousItemAtURL_error_1 = - _registerName1("evictUbiquitousItemAtURL:error:"); - late final _sel_URLForUbiquityContainerIdentifier_1 = - _registerName1("URLForUbiquityContainerIdentifier:"); - ffi.Pointer _objc_msgSend_463( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer containerIdentifier, - ) { - return __objc_msgSend_463( - obj, - sel, - containerIdentifier, - ); - } - - late final __objc_msgSend_463Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_463 = __objc_msgSend_463Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_URLForPublishingUbiquitousItemAtURL_expirationDate_error_1 = - _registerName1( - "URLForPublishingUbiquitousItemAtURL:expirationDate:error:"); - ffi.Pointer _objc_msgSend_464( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer> outDate, - ffi.Pointer> error, - ) { - return __objc_msgSend_464( - obj, - sel, - url, - outDate, - error, - ); - } - - late final __objc_msgSend_464Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_464 = __objc_msgSend_464Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_ubiquityIdentityToken1 = - _registerName1("ubiquityIdentityToken"); - late final _sel_getFileProviderServicesForItemAtURL_completionHandler_1 = - _registerName1("getFileProviderServicesForItemAtURL:completionHandler:"); - void _objc_msgSend_465( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_465( - obj, - sel, - url, - completionHandler, - ); - } - - late final __objc_msgSend_465Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_465 = __objc_msgSend_465Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_containerURLForSecurityApplicationGroupIdentifier_1 = - _registerName1("containerURLForSecurityApplicationGroupIdentifier:"); - late final _sel_homeDirectoryForCurrentUser1 = - _registerName1("homeDirectoryForCurrentUser"); - ffi.Pointer _objc_msgSend_466( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_466( - obj, - sel, - ); - } - - late final __objc_msgSend_466Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_466 = __objc_msgSend_466Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_temporaryDirectory1 = _registerName1("temporaryDirectory"); - late final _sel_homeDirectoryForUser_1 = - _registerName1("homeDirectoryForUser:"); - late final _sel_fileManager_shouldProceedAfterError_1 = - _registerName1("fileManager:shouldProceedAfterError:"); - bool _objc_msgSend_467( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer fm, - ffi.Pointer errorInfo, - ) { - return __objc_msgSend_467( - obj, - sel, - fm, - errorInfo, - ); - } - - late final __objc_msgSend_467Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_467 = __objc_msgSend_467Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_fileManager_willProcessPath_1 = - _registerName1("fileManager:willProcessPath:"); - void _objc_msgSend_468( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer fm, - ffi.Pointer path, - ) { - return __objc_msgSend_468( - obj, - sel, - fm, - path, - ); - } - - late final __objc_msgSend_468Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_468 = __objc_msgSend_468Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_validateValue_forKey_error_1 = - _registerName1("validateValue:forKey:error:"); - late final _class_NSMutableArray1 = _getClass1("NSMutableArray"); - late final _sel_addObject_1 = _registerName1("addObject:"); - late final _sel_insertObject_atIndex_1 = - _registerName1("insertObject:atIndex:"); - void _objc_msgSend_469( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - int index, - ) { - return __objc_msgSend_469( - obj, - sel, - anObject, - index, - ); - } - - late final __objc_msgSend_469Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_469 = __objc_msgSend_469Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_removeLastObject1 = _registerName1("removeLastObject"); - late final _sel_removeObjectAtIndex_1 = - _registerName1("removeObjectAtIndex:"); - void _objc_msgSend_470( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_470( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_470Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_470 = __objc_msgSend_470Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_replaceObjectAtIndex_withObject_1 = - _registerName1("replaceObjectAtIndex:withObject:"); - void _objc_msgSend_471( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ffi.Pointer anObject, - ) { - return __objc_msgSend_471( - obj, - sel, - index, - anObject, - ); - } - - late final __objc_msgSend_471Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_471 = __objc_msgSend_471Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_initWithCapacity_1 = _registerName1("initWithCapacity:"); - late final _sel_addObjectsFromArray_1 = - _registerName1("addObjectsFromArray:"); - void _objc_msgSend_472( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherArray, - ) { - return __objc_msgSend_472( - obj, - sel, - otherArray, - ); - } - - late final __objc_msgSend_472Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_472 = __objc_msgSend_472Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_exchangeObjectAtIndex_withObjectAtIndex_1 = - _registerName1("exchangeObjectAtIndex:withObjectAtIndex:"); - void _objc_msgSend_473( - ffi.Pointer obj, - ffi.Pointer sel, - int idx1, - int idx2, - ) { - return __objc_msgSend_473( - obj, - sel, - idx1, - idx2, - ); - } - - late final __objc_msgSend_473Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_473 = __objc_msgSend_473Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, int)>(); - - late final _sel_removeAllObjects1 = _registerName1("removeAllObjects"); - late final _sel_removeObject_inRange_1 = - _registerName1("removeObject:inRange:"); - void _objc_msgSend_474( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - _NSRange range, - ) { - return __objc_msgSend_474( - obj, - sel, - anObject, - range, - ); - } - - late final __objc_msgSend_474Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_474 = __objc_msgSend_474Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - late final _sel_removeObject_1 = _registerName1("removeObject:"); - late final _sel_removeObjectIdenticalTo_inRange_1 = - _registerName1("removeObjectIdenticalTo:inRange:"); - late final _sel_removeObjectIdenticalTo_1 = - _registerName1("removeObjectIdenticalTo:"); - late final _sel_removeObjectsFromIndices_numIndices_1 = - _registerName1("removeObjectsFromIndices:numIndices:"); - void _objc_msgSend_475( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indices, - int cnt, - ) { - return __objc_msgSend_475( - obj, - sel, - indices, - cnt, - ); - } - - late final __objc_msgSend_475Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_475 = __objc_msgSend_475Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_removeObjectsInArray_1 = - _registerName1("removeObjectsInArray:"); - late final _sel_removeObjectsInRange_1 = - _registerName1("removeObjectsInRange:"); - void _objc_msgSend_476( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_476( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_476Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_476 = __objc_msgSend_476Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_replaceObjectsInRange_withObjectsFromArray_range_1 = - _registerName1("replaceObjectsInRange:withObjectsFromArray:range:"); - void _objc_msgSend_477( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer otherArray, - _NSRange otherRange, - ) { - return __objc_msgSend_477( - obj, - sel, - range, - otherArray, - otherRange, - ); - } - - late final __objc_msgSend_477Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_477 = __objc_msgSend_477Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - ffi.Pointer, _NSRange)>(); - - late final _sel_replaceObjectsInRange_withObjectsFromArray_1 = - _registerName1("replaceObjectsInRange:withObjectsFromArray:"); - void _objc_msgSend_478( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer otherArray, - ) { - return __objc_msgSend_478( - obj, - sel, - range, - otherArray, - ); - } - - late final __objc_msgSend_478Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_478 = __objc_msgSend_478Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - ffi.Pointer)>(); - - late final _sel_setArray_1 = _registerName1("setArray:"); - late final _sel_sortUsingFunction_context_1 = - _registerName1("sortUsingFunction:context:"); - void _objc_msgSend_479( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>> - compare, - ffi.Pointer context, - ) { - return __objc_msgSend_479( - obj, - sel, - compare, - context, - ); - } - - late final __objc_msgSend_479Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_479 = __objc_msgSend_479Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>, - ffi.Pointer)>(); - - late final _sel_sortUsingSelector_1 = _registerName1("sortUsingSelector:"); - late final _sel_insertObjects_atIndexes_1 = - _registerName1("insertObjects:atIndexes:"); - void _objc_msgSend_480( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer objects, - ffi.Pointer indexes, - ) { - return __objc_msgSend_480( - obj, - sel, - objects, - indexes, - ); - } - - late final __objc_msgSend_480Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_480 = __objc_msgSend_480Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_removeObjectsAtIndexes_1 = - _registerName1("removeObjectsAtIndexes:"); - void _objc_msgSend_481( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexes, - ) { - return __objc_msgSend_481( - obj, - sel, - indexes, - ); - } - - late final __objc_msgSend_481Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_481 = __objc_msgSend_481Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_replaceObjectsAtIndexes_withObjects_1 = - _registerName1("replaceObjectsAtIndexes:withObjects:"); - void _objc_msgSend_482( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexes, - ffi.Pointer objects, - ) { - return __objc_msgSend_482( - obj, - sel, - indexes, - objects, - ); - } - - late final __objc_msgSend_482Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_482 = __objc_msgSend_482Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setObject_atIndexedSubscript_1 = - _registerName1("setObject:atIndexedSubscript:"); - late final _sel_sortUsingComparator_1 = - _registerName1("sortUsingComparator:"); - void _objc_msgSend_483( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> cmptr, - ) { - return __objc_msgSend_483( - obj, - sel, - cmptr, - ); - } - - late final __objc_msgSend_483Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_483 = __objc_msgSend_483Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_sortWithOptions_usingComparator_1 = - _registerName1("sortWithOptions:usingComparator:"); - void _objc_msgSend_484( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> cmptr, - ) { - return __objc_msgSend_484( - obj, - sel, - opts, - cmptr, - ); - } - - late final __objc_msgSend_484Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_484 = __objc_msgSend_484Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_arrayWithCapacity_1 = _registerName1("arrayWithCapacity:"); - ffi.Pointer _objc_msgSend_485( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_485( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_485Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_485 = __objc_msgSend_485Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - ffi.Pointer _objc_msgSend_486( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_486( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_486Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_486 = __objc_msgSend_486Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_applyDifference_1 = _registerName1("applyDifference:"); - late final _sel_sortUsingDescriptors_1 = - _registerName1("sortUsingDescriptors:"); - late final _sel_filterUsingPredicate_1 = - _registerName1("filterUsingPredicate:"); - void _objc_msgSend_487( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer predicate, - ) { - return __objc_msgSend_487( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_487Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_487 = __objc_msgSend_487Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_mutableArrayValueForKey_1 = - _registerName1("mutableArrayValueForKey:"); - ffi.Pointer _objc_msgSend_488( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_488( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_488Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_488 = __objc_msgSend_488Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSMutableOrderedSet1 = _getClass1("NSMutableOrderedSet"); - late final _class_NSOrderedSet1 = _getClass1("NSOrderedSet"); - late final _sel_isEqualToOrderedSet_1 = - _registerName1("isEqualToOrderedSet:"); - bool _objc_msgSend_489( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_489( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_489Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_489 = __objc_msgSend_489Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_intersectsOrderedSet_1 = - _registerName1("intersectsOrderedSet:"); - late final _sel_isSubsetOfOrderedSet_1 = - _registerName1("isSubsetOfOrderedSet:"); - late final _sel_reversedOrderedSet1 = _registerName1("reversedOrderedSet"); - ffi.Pointer _objc_msgSend_490( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_490( - obj, - sel, - ); - } - - late final __objc_msgSend_490Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_490 = __objc_msgSend_490Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - ffi.Pointer _objc_msgSend_491( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_491( - obj, - sel, - ); - } - - late final __objc_msgSend_491Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_491 = __objc_msgSend_491Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_orderedSet1 = _registerName1("orderedSet"); - late final _sel_orderedSetWithObject_1 = - _registerName1("orderedSetWithObject:"); - late final _sel_orderedSetWithObjects_count_1 = - _registerName1("orderedSetWithObjects:count:"); - late final _sel_orderedSetWithObjects_1 = - _registerName1("orderedSetWithObjects:"); - late final _sel_orderedSetWithOrderedSet_1 = - _registerName1("orderedSetWithOrderedSet:"); - instancetype _objc_msgSend_492( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer set1, - ) { - return __objc_msgSend_492( - obj, - sel, - set1, - ); - } - - late final __objc_msgSend_492Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_492 = __objc_msgSend_492Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_orderedSetWithOrderedSet_range_copyItems_1 = - _registerName1("orderedSetWithOrderedSet:range:copyItems:"); - instancetype _objc_msgSend_493( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer set1, - _NSRange range, - bool flag, - ) { - return __objc_msgSend_493( - obj, - sel, - set1, - range, - flag, - ); - } - - late final __objc_msgSend_493Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_493 = __objc_msgSend_493Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange, bool)>(); - - late final _sel_orderedSetWithArray_1 = - _registerName1("orderedSetWithArray:"); - late final _sel_orderedSetWithArray_range_copyItems_1 = - _registerName1("orderedSetWithArray:range:copyItems:"); - instancetype _objc_msgSend_494( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer array, - _NSRange range, - bool flag, - ) { - return __objc_msgSend_494( - obj, - sel, - array, - range, - flag, - ); - } - - late final __objc_msgSend_494Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_494 = __objc_msgSend_494Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange, bool)>(); - - late final _sel_orderedSetWithSet_1 = _registerName1("orderedSetWithSet:"); - late final _sel_orderedSetWithSet_copyItems_1 = - _registerName1("orderedSetWithSet:copyItems:"); - late final _sel_initWithObject_1 = _registerName1("initWithObject:"); - late final _sel_initWithOrderedSet_1 = _registerName1("initWithOrderedSet:"); - late final _sel_initWithOrderedSet_copyItems_1 = - _registerName1("initWithOrderedSet:copyItems:"); - instancetype _objc_msgSend_495( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer set1, - bool flag, - ) { - return __objc_msgSend_495( - obj, - sel, - set1, - flag, - ); - } - - late final __objc_msgSend_495Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_495 = __objc_msgSend_495Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_initWithOrderedSet_range_copyItems_1 = - _registerName1("initWithOrderedSet:range:copyItems:"); - late final _sel_initWithArray_range_copyItems_1 = - _registerName1("initWithArray:range:copyItems:"); - late final _sel_differenceFromOrderedSet_withOptions_usingEquivalenceTest_1 = - _registerName1( - "differenceFromOrderedSet:withOptions:usingEquivalenceTest:"); - ffi.Pointer _objc_msgSend_496( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - int options, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_496( - obj, - sel, - other, - options, - block, - ); - } - - late final __objc_msgSend_496Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_496 = __objc_msgSend_496Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_differenceFromOrderedSet_withOptions_1 = - _registerName1("differenceFromOrderedSet:withOptions:"); - ffi.Pointer _objc_msgSend_497( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - int options, - ) { - return __objc_msgSend_497( - obj, - sel, - other, - options, - ); - } - - late final __objc_msgSend_497Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_497 = __objc_msgSend_497Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_differenceFromOrderedSet_1 = - _registerName1("differenceFromOrderedSet:"); - late final _sel_orderedSetByApplyingDifference_1 = - _registerName1("orderedSetByApplyingDifference:"); - ffi.Pointer _objc_msgSend_498( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer difference, - ) { - return __objc_msgSend_498( - obj, - sel, - difference, - ); - } - - late final __objc_msgSend_498Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_498 = __objc_msgSend_498Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_filteredOrderedSetUsingPredicate_1 = - _registerName1("filteredOrderedSetUsingPredicate:"); - ffi.Pointer _objc_msgSend_499( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer p, - ) { - return __objc_msgSend_499( - obj, - sel, - p, - ); - } - - late final __objc_msgSend_499Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_499 = __objc_msgSend_499Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addObjects_count_1 = _registerName1("addObjects:count:"); - void _objc_msgSend_500( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> objects, - int count, - ) { - return __objc_msgSend_500( - obj, - sel, - objects, - count, - ); - } - - late final __objc_msgSend_500Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_500 = __objc_msgSend_500Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>, int)>(); - - late final _sel_moveObjectsAtIndexes_toIndex_1 = - _registerName1("moveObjectsAtIndexes:toIndex:"); - void _objc_msgSend_501( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexes, - int idx, - ) { - return __objc_msgSend_501( - obj, - sel, - indexes, - idx, - ); - } - - late final __objc_msgSend_501Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_501 = __objc_msgSend_501Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_setObject_atIndex_1 = _registerName1("setObject:atIndex:"); - late final _sel_replaceObjectsInRange_withObjects_count_1 = - _registerName1("replaceObjectsInRange:withObjects:count:"); - void _objc_msgSend_502( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer> objects, - int count, - ) { - return __objc_msgSend_502( - obj, - sel, - range, - objects, - count, - ); - } - - late final __objc_msgSend_502Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer>, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_502 = __objc_msgSend_502Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - ffi.Pointer>, int)>(); - - late final _sel_intersectOrderedSet_1 = - _registerName1("intersectOrderedSet:"); - void _objc_msgSend_503( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_503( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_503Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_503 = __objc_msgSend_503Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_minusOrderedSet_1 = _registerName1("minusOrderedSet:"); - late final _sel_unionOrderedSet_1 = _registerName1("unionOrderedSet:"); - late final _sel_intersectSet_1 = _registerName1("intersectSet:"); - void _objc_msgSend_504( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_504( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_504Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_504 = __objc_msgSend_504Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_minusSet_1 = _registerName1("minusSet:"); - late final _sel_unionSet_1 = _registerName1("unionSet:"); - late final _sel_sortRange_options_usingComparator_1 = - _registerName1("sortRange:options:usingComparator:"); - void _objc_msgSend_505( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - int opts, - ffi.Pointer<_ObjCBlock> cmptr, - ) { - return __objc_msgSend_505( - obj, - sel, - range, - opts, - cmptr, - ); - } - - late final __objc_msgSend_505Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_505 = __objc_msgSend_505Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_orderedSetWithCapacity_1 = - _registerName1("orderedSetWithCapacity:"); - late final _sel_mutableOrderedSetValueForKey_1 = - _registerName1("mutableOrderedSetValueForKey:"); - ffi.Pointer _objc_msgSend_506( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_506( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_506Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_506 = __objc_msgSend_506Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSMutableSet1 = _getClass1("NSMutableSet"); - late final _sel_setSet_1 = _registerName1("setSet:"); - late final _sel_setWithCapacity_1 = _registerName1("setWithCapacity:"); - late final _sel_mutableSetValueForKey_1 = - _registerName1("mutableSetValueForKey:"); - ffi.Pointer _objc_msgSend_507( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_507( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_507Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_507 = __objc_msgSend_507Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_valueForKeyPath_1 = _registerName1("valueForKeyPath:"); - late final _sel_setValue_forKeyPath_1 = - _registerName1("setValue:forKeyPath:"); - late final _sel_validateValue_forKeyPath_error_1 = - _registerName1("validateValue:forKeyPath:error:"); - late final _sel_mutableArrayValueForKeyPath_1 = - _registerName1("mutableArrayValueForKeyPath:"); - late final _sel_mutableOrderedSetValueForKeyPath_1 = - _registerName1("mutableOrderedSetValueForKeyPath:"); - late final _sel_mutableSetValueForKeyPath_1 = - _registerName1("mutableSetValueForKeyPath:"); - late final _sel_valueForUndefinedKey_1 = - _registerName1("valueForUndefinedKey:"); - late final _sel_setValue_forUndefinedKey_1 = - _registerName1("setValue:forUndefinedKey:"); - late final _sel_setNilValueForKey_1 = _registerName1("setNilValueForKey:"); - late final _sel_dictionaryWithValuesForKeys_1 = - _registerName1("dictionaryWithValuesForKeys:"); - ffi.Pointer _objc_msgSend_508( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keys, - ) { - return __objc_msgSend_508( - obj, - sel, - keys, - ); - } - - late final __objc_msgSend_508Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_508 = __objc_msgSend_508Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setValuesForKeysWithDictionary_1 = - _registerName1("setValuesForKeysWithDictionary:"); - void _objc_msgSend_509( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keyedValues, - ) { - return __objc_msgSend_509( - obj, - sel, - keyedValues, - ); - } - - late final __objc_msgSend_509Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_509 = __objc_msgSend_509Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_storedValueForKey_1 = _registerName1("storedValueForKey:"); - late final _sel_takeStoredValue_forKey_1 = - _registerName1("takeStoredValue:forKey:"); - late final _sel_takeValue_forKey_1 = _registerName1("takeValue:forKey:"); - late final _sel_takeValue_forKeyPath_1 = - _registerName1("takeValue:forKeyPath:"); - late final _sel_handleQueryWithUnboundKey_1 = - _registerName1("handleQueryWithUnboundKey:"); - late final _sel_handleTakeValue_forUnboundKey_1 = - _registerName1("handleTakeValue:forUnboundKey:"); - late final _sel_unableToSetNilForKey_1 = - _registerName1("unableToSetNilForKey:"); - late final _sel_valuesForKeys_1 = _registerName1("valuesForKeys:"); - late final _sel_takeValuesFromDictionary_1 = - _registerName1("takeValuesFromDictionary:"); - late final _sel_observeValueForKeyPath_ofObject_change_context_1 = - _registerName1("observeValueForKeyPath:ofObject:change:context:"); - void _objc_msgSend_510( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keyPath, - ffi.Pointer object, - ffi.Pointer change, - ffi.Pointer context, - ) { - return __objc_msgSend_510( - obj, - sel, - keyPath, - object, - change, - context, - ); - } - - late final __objc_msgSend_510Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_510 = __objc_msgSend_510Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_willChangeValueForKey_1 = - _registerName1("willChangeValueForKey:"); - late final _sel_didChangeValueForKey_1 = - _registerName1("didChangeValueForKey:"); - late final _sel_willChange_valuesAtIndexes_forKey_1 = - _registerName1("willChange:valuesAtIndexes:forKey:"); - void _objc_msgSend_511( - ffi.Pointer obj, - ffi.Pointer sel, - int changeKind, - ffi.Pointer indexes, - ffi.Pointer key, - ) { - return __objc_msgSend_511( - obj, - sel, - changeKind, - indexes, - key, - ); - } - - late final __objc_msgSend_511Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_511 = __objc_msgSend_511Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_didChange_valuesAtIndexes_forKey_1 = - _registerName1("didChange:valuesAtIndexes:forKey:"); - late final _sel_willChangeValueForKey_withSetMutation_usingObjects_1 = - _registerName1("willChangeValueForKey:withSetMutation:usingObjects:"); - void _objc_msgSend_512( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - int mutationKind, - ffi.Pointer objects, - ) { - return __objc_msgSend_512( - obj, - sel, - key, - mutationKind, - objects, - ); - } - - late final __objc_msgSend_512Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_512 = __objc_msgSend_512Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_didChangeValueForKey_withSetMutation_usingObjects_1 = - _registerName1("didChangeValueForKey:withSetMutation:usingObjects:"); - late final _sel_observationInfo1 = _registerName1("observationInfo"); - late final _sel_setObservationInfo_1 = _registerName1("setObservationInfo:"); - void _objc_msgSend_513( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_513( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_513Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_513 = __objc_msgSend_513Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_classForKeyedArchiver1 = - _registerName1("classForKeyedArchiver"); - late final _class_NSKeyedArchiver1 = _getClass1("NSKeyedArchiver"); - late final _sel_initRequiringSecureCoding_1 = - _registerName1("initRequiringSecureCoding:"); - instancetype _objc_msgSend_514( - ffi.Pointer obj, - ffi.Pointer sel, - bool requiresSecureCoding, - ) { - return __objc_msgSend_514( - obj, - sel, - requiresSecureCoding, - ); - } - - late final __objc_msgSend_514Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_514 = __objc_msgSend_514Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_archivedDataWithRootObject_requiringSecureCoding_error_1 = - _registerName1("archivedDataWithRootObject:requiringSecureCoding:error:"); - ffi.Pointer _objc_msgSend_515( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer object, - bool requiresSecureCoding, - ffi.Pointer> error, - ) { - return __objc_msgSend_515( - obj, - sel, - object, - requiresSecureCoding, - error, - ); - } - - late final __objc_msgSend_515Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_515 = __objc_msgSend_515Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer>)>(); - - late final _class_NSMutableData1 = _getClass1("NSMutableData"); - late final _sel_mutableBytes1 = _registerName1("mutableBytes"); - late final _sel_setLength_1 = _registerName1("setLength:"); - void _objc_msgSend_516( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_516( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_516Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_516 = __objc_msgSend_516Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_appendBytes_length_1 = _registerName1("appendBytes:length:"); - late final _sel_appendData_1 = _registerName1("appendData:"); - late final _sel_increaseLengthBy_1 = _registerName1("increaseLengthBy:"); - late final _sel_replaceBytesInRange_withBytes_1 = - _registerName1("replaceBytesInRange:withBytes:"); - void _objc_msgSend_517( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer bytes, - ) { - return __objc_msgSend_517( - obj, - sel, - range, - bytes, - ); - } - - late final __objc_msgSend_517Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_517 = __objc_msgSend_517Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - ffi.Pointer)>(); - - late final _sel_resetBytesInRange_1 = _registerName1("resetBytesInRange:"); - late final _sel_setData_1 = _registerName1("setData:"); - late final _sel_replaceBytesInRange_withBytes_length_1 = - _registerName1("replaceBytesInRange:withBytes:length:"); - void _objc_msgSend_518( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer replacementBytes, - int replacementLength, - ) { - return __objc_msgSend_518( - obj, - sel, - range, - replacementBytes, - replacementLength, - ); - } - - late final __objc_msgSend_518Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_518 = __objc_msgSend_518Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - ffi.Pointer, int)>(); - - late final _sel_dataWithCapacity_1 = _registerName1("dataWithCapacity:"); - instancetype _objc_msgSend_519( - ffi.Pointer obj, - ffi.Pointer sel, - int aNumItems, - ) { - return __objc_msgSend_519( - obj, - sel, - aNumItems, - ); - } - - late final __objc_msgSend_519Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_519 = __objc_msgSend_519Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_dataWithLength_1 = _registerName1("dataWithLength:"); - late final _sel_initWithLength_1 = _registerName1("initWithLength:"); - late final _sel_decompressUsingAlgorithm_error_1 = - _registerName1("decompressUsingAlgorithm:error:"); - bool _objc_msgSend_520( - ffi.Pointer obj, - ffi.Pointer sel, - int algorithm, - ffi.Pointer> error, - ) { - return __objc_msgSend_520( - obj, - sel, - algorithm, - error, - ); - } - - late final __objc_msgSend_520Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_520 = __objc_msgSend_520Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer>)>(); - - late final _sel_compressUsingAlgorithm_error_1 = - _registerName1("compressUsingAlgorithm:error:"); - late final _sel_initForWritingWithMutableData_1 = - _registerName1("initForWritingWithMutableData:"); - instancetype _objc_msgSend_521( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ) { - return __objc_msgSend_521( - obj, - sel, - data, - ); - } - - late final __objc_msgSend_521Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_521 = __objc_msgSend_521Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_archivedDataWithRootObject_1 = - _registerName1("archivedDataWithRootObject:"); - ffi.Pointer _objc_msgSend_522( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer rootObject, - ) { - return __objc_msgSend_522( - obj, - sel, - rootObject, - ); - } - - late final __objc_msgSend_522Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_522 = __objc_msgSend_522Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_archiveRootObject_toFile_1 = - _registerName1("archiveRootObject:toFile:"); - late final _sel_outputFormat1 = _registerName1("outputFormat"); - int _objc_msgSend_523( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_523( - obj, - sel, - ); - } - - late final __objc_msgSend_523Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_523 = __objc_msgSend_523Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setOutputFormat_1 = _registerName1("setOutputFormat:"); - void _objc_msgSend_524( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_524( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_524Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_524 = __objc_msgSend_524Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_encodedData1 = _registerName1("encodedData"); - late final _sel_finishEncoding1 = _registerName1("finishEncoding"); - late final _sel_setClassName_forClass_1 = - _registerName1("setClassName:forClass:"); - void _objc_msgSend_525( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer codedName, - ffi.Pointer cls, - ) { - return __objc_msgSend_525( - obj, - sel, - codedName, - cls, - ); - } - - late final __objc_msgSend_525Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_525 = __objc_msgSend_525Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_classNameForClass_1 = _registerName1("classNameForClass:"); - ffi.Pointer _objc_msgSend_526( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer cls, - ) { - return __objc_msgSend_526( - obj, - sel, - cls, - ); - } - - late final __objc_msgSend_526Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_526 = __objc_msgSend_526Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setRequiresSecureCoding_1 = - _registerName1("setRequiresSecureCoding:"); - void _objc_msgSend_527( - ffi.Pointer obj, - ffi.Pointer sel, - bool value, - ) { - return __objc_msgSend_527( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_527Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_527 = __objc_msgSend_527Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_replacementObjectForKeyedArchiver_1 = - _registerName1("replacementObjectForKeyedArchiver:"); - ffi.Pointer _objc_msgSend_528( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer archiver, - ) { - return __objc_msgSend_528( - obj, - sel, - archiver, - ); - } - - late final __objc_msgSend_528Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_528 = __objc_msgSend_528Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_performSelectorOnMainThread_withObject_waitUntilDone_modes_1 = - _registerName1( - "performSelectorOnMainThread:withObject:waitUntilDone:modes:"); - void _objc_msgSend_529( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer arg, - bool wait, - ffi.Pointer array, - ) { - return __objc_msgSend_529( - obj, - sel, - aSelector, - arg, - wait, - array, - ); - } - - late final __objc_msgSend_529Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_529 = __objc_msgSend_529Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer)>(); - - late final _sel_performSelectorOnMainThread_withObject_waitUntilDone_1 = - _registerName1("performSelectorOnMainThread:withObject:waitUntilDone:"); - void _objc_msgSend_530( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer arg, - bool wait, - ) { - return __objc_msgSend_530( - obj, - sel, - aSelector, - arg, - wait, - ); - } - - late final __objc_msgSend_530Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_530 = __objc_msgSend_530Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _class_NSThread1 = _getClass1("NSThread"); - late final _sel_currentThread1 = _registerName1("currentThread"); - ffi.Pointer _objc_msgSend_531( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_531( - obj, - sel, - ); - } - - late final __objc_msgSend_531Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_531 = __objc_msgSend_531Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_detachNewThreadWithBlock_1 = - _registerName1("detachNewThreadWithBlock:"); - void _objc_msgSend_532( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_532( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_532Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_532 = __objc_msgSend_532Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_detachNewThreadSelector_toTarget_withObject_1 = - _registerName1("detachNewThreadSelector:toTarget:withObject:"); - void _objc_msgSend_533( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer selector, - ffi.Pointer target, - ffi.Pointer argument, - ) { - return __objc_msgSend_533( - obj, - sel, - selector, - target, - argument, - ); - } - - late final __objc_msgSend_533Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_533 = __objc_msgSend_533Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isMultiThreaded1 = _registerName1("isMultiThreaded"); - late final _class_NSMutableDictionary1 = _getClass1("NSMutableDictionary"); - late final _sel_removeObjectForKey_1 = _registerName1("removeObjectForKey:"); - late final _sel_setObject_forKey_1 = _registerName1("setObject:forKey:"); - void _objc_msgSend_534( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - ffi.Pointer aKey, - ) { - return __objc_msgSend_534( - obj, - sel, - anObject, - aKey, - ); - } - - late final __objc_msgSend_534Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_534 = __objc_msgSend_534Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addEntriesFromDictionary_1 = - _registerName1("addEntriesFromDictionary:"); - late final _sel_removeObjectsForKeys_1 = - _registerName1("removeObjectsForKeys:"); - late final _sel_setDictionary_1 = _registerName1("setDictionary:"); - late final _sel_setObject_forKeyedSubscript_1 = - _registerName1("setObject:forKeyedSubscript:"); - void _objc_msgSend_535( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer obj1, - ffi.Pointer key, - ) { - return __objc_msgSend_535( - obj, - sel, - obj1, - key, - ); - } - - late final __objc_msgSend_535Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_535 = __objc_msgSend_535Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dictionaryWithCapacity_1 = - _registerName1("dictionaryWithCapacity:"); - ffi.Pointer _objc_msgSend_536( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_536( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_536Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_536 = __objc_msgSend_536Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - ffi.Pointer _objc_msgSend_537( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_537( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_537Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_537 = __objc_msgSend_537Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dictionaryWithSharedKeySet_1 = - _registerName1("dictionaryWithSharedKeySet:"); - ffi.Pointer _objc_msgSend_538( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keyset, - ) { - return __objc_msgSend_538( - obj, - sel, - keyset, - ); - } - - late final __objc_msgSend_538Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_538 = __objc_msgSend_538Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_threadDictionary1 = _registerName1("threadDictionary"); - ffi.Pointer _objc_msgSend_539( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_539( - obj, - sel, - ); - } - - late final __objc_msgSend_539Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_539 = __objc_msgSend_539Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_sleepUntilDate_1 = _registerName1("sleepUntilDate:"); - void _objc_msgSend_540( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - ) { - return __objc_msgSend_540( - obj, - sel, - date, - ); - } - - late final __objc_msgSend_540Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_540 = __objc_msgSend_540Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_sleepForTimeInterval_1 = - _registerName1("sleepForTimeInterval:"); - void _objc_msgSend_541( - ffi.Pointer obj, - ffi.Pointer sel, - double ti, - ) { - return __objc_msgSend_541( - obj, - sel, - ti, - ); - } - - late final __objc_msgSend_541Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_541 = __objc_msgSend_541Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_exit1 = _registerName1("exit"); - late final _sel_threadPriority1 = _registerName1("threadPriority"); - late final _sel_setThreadPriority_1 = _registerName1("setThreadPriority:"); - void _objc_msgSend_542( - ffi.Pointer obj, - ffi.Pointer sel, - double value, - ) { - return __objc_msgSend_542( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_542Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_542 = __objc_msgSend_542Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_qualityOfService1 = _registerName1("qualityOfService"); - int _objc_msgSend_543( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_543( - obj, - sel, - ); - } - - late final __objc_msgSend_543Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_543 = __objc_msgSend_543Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setQualityOfService_1 = - _registerName1("setQualityOfService:"); - void _objc_msgSend_544( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_544( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_544Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_544 = __objc_msgSend_544Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_callStackReturnAddresses1 = - _registerName1("callStackReturnAddresses"); - late final _sel_callStackSymbols1 = _registerName1("callStackSymbols"); - late final _sel_setName_1 = _registerName1("setName:"); - void _objc_msgSend_545( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_545( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_545Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_545 = __objc_msgSend_545Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_stackSize1 = _registerName1("stackSize"); - late final _sel_setStackSize_1 = _registerName1("setStackSize:"); - late final _sel_isMainThread1 = _registerName1("isMainThread"); - late final _sel_mainThread1 = _registerName1("mainThread"); - late final _sel_initWithTarget_selector_object_1 = - _registerName1("initWithTarget:selector:object:"); - instancetype _objc_msgSend_546( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer target, - ffi.Pointer selector, - ffi.Pointer argument, - ) { - return __objc_msgSend_546( - obj, - sel, - target, - selector, - argument, - ); - } - - late final __objc_msgSend_546Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_546 = __objc_msgSend_546Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithBlock_1 = _registerName1("initWithBlock:"); - instancetype _objc_msgSend_547( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_547( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_547Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_547 = __objc_msgSend_547Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_isExecuting1 = _registerName1("isExecuting"); - late final _sel_isFinished1 = _registerName1("isFinished"); - late final _sel_isCancelled1 = _registerName1("isCancelled"); - late final _sel_cancel1 = _registerName1("cancel"); - late final _sel_start1 = _registerName1("start"); - late final _sel_main1 = _registerName1("main"); - late final _sel_performSelector_onThread_withObject_waitUntilDone_modes_1 = - _registerName1( - "performSelector:onThread:withObject:waitUntilDone:modes:"); - void _objc_msgSend_548( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer thr, - ffi.Pointer arg, - bool wait, - ffi.Pointer array, - ) { - return __objc_msgSend_548( - obj, - sel, - aSelector, - thr, - arg, - wait, - array, - ); - } - - late final __objc_msgSend_548Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_548 = __objc_msgSend_548Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer)>(); - - late final _sel_performSelector_onThread_withObject_waitUntilDone_1 = - _registerName1("performSelector:onThread:withObject:waitUntilDone:"); - void _objc_msgSend_549( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer thr, - ffi.Pointer arg, - bool wait, - ) { - return __objc_msgSend_549( - obj, - sel, - aSelector, - thr, - arg, - wait, - ); - } - - late final __objc_msgSend_549Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_549 = __objc_msgSend_549Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool)>(); - - late final _sel_performSelectorInBackground_withObject_1 = - _registerName1("performSelectorInBackground:withObject:"); - late final _sel_classForArchiver1 = _registerName1("classForArchiver"); - late final _class_NSArchiver1 = _getClass1("NSArchiver"); - late final _sel_archiverData1 = _registerName1("archiverData"); - ffi.Pointer _objc_msgSend_550( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_550( - obj, - sel, - ); - } - - late final __objc_msgSend_550Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_550 = __objc_msgSend_550Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_encodeClassName_intoClassName_1 = - _registerName1("encodeClassName:intoClassName:"); - void _objc_msgSend_551( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer trueName, - ffi.Pointer inArchiveName, - ) { - return __objc_msgSend_551( - obj, - sel, - trueName, - inArchiveName, - ); - } - - late final __objc_msgSend_551Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_551 = __objc_msgSend_551Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_classNameEncodedForTrueClassName_1 = - _registerName1("classNameEncodedForTrueClassName:"); - late final _sel_replaceObject_withObject_1 = - _registerName1("replaceObject:withObject:"); - late final _sel_replacementObjectForArchiver_1 = - _registerName1("replacementObjectForArchiver:"); - ffi.Pointer _objc_msgSend_552( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer archiver, - ) { - return __objc_msgSend_552( - obj, - sel, - archiver, - ); - } - - late final __objc_msgSend_552Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_552 = __objc_msgSend_552Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_classForPortCoder1 = _registerName1("classForPortCoder"); - late final _class_NSPortCoder1 = _getClass1("NSPortCoder"); - late final _sel_isBycopy1 = _registerName1("isBycopy"); - late final _sel_isByref1 = _registerName1("isByref"); - late final _class_NSPort1 = _getClass1("NSPort"); - ffi.Pointer _objc_msgSend_553( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_553( - obj, - sel, - ); - } - - late final __objc_msgSend_553Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_553 = __objc_msgSend_553Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_invalidate1 = _registerName1("invalidate"); - late final _sel_isValid1 = _registerName1("isValid"); - late final _class_NSRunLoop1 = _getClass1("NSRunLoop"); - late final _sel_currentRunLoop1 = _registerName1("currentRunLoop"); - ffi.Pointer _objc_msgSend_554( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_554( - obj, - sel, - ); - } - - late final __objc_msgSend_554Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_554 = __objc_msgSend_554Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_mainRunLoop1 = _registerName1("mainRunLoop"); - late final _sel_currentMode1 = _registerName1("currentMode"); - late final _sel_getCFRunLoop1 = _registerName1("getCFRunLoop"); - ffi.Pointer<__CFRunLoop> _objc_msgSend_555( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_555( - obj, - sel, - ); - } - - late final __objc_msgSend_555Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<__CFRunLoop> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_555 = __objc_msgSend_555Ptr.asFunction< - ffi.Pointer<__CFRunLoop> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSTimer1 = _getClass1("NSTimer"); - late final _sel_timerWithTimeInterval_invocation_repeats_1 = - _registerName1("timerWithTimeInterval:invocation:repeats:"); - ffi.Pointer _objc_msgSend_556( - ffi.Pointer obj, - ffi.Pointer sel, - double ti, - ffi.Pointer invocation, - bool yesOrNo, - ) { - return __objc_msgSend_556( - obj, - sel, - ti, - invocation, - yesOrNo, - ); - } - - late final __objc_msgSend_556Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Double, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_556 = __objc_msgSend_556Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, double, ffi.Pointer, bool)>(); - - late final _sel_scheduledTimerWithTimeInterval_invocation_repeats_1 = - _registerName1("scheduledTimerWithTimeInterval:invocation:repeats:"); - late final _sel_timerWithTimeInterval_target_selector_userInfo_repeats_1 = - _registerName1("timerWithTimeInterval:target:selector:userInfo:repeats:"); - ffi.Pointer _objc_msgSend_557( - ffi.Pointer obj, - ffi.Pointer sel, - double ti, - ffi.Pointer aTarget, - ffi.Pointer aSelector, - ffi.Pointer userInfo, - bool yesOrNo, - ) { - return __objc_msgSend_557( - obj, - sel, - ti, - aTarget, - aSelector, - userInfo, - yesOrNo, - ); - } - - late final __objc_msgSend_557Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Double, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_557 = __objc_msgSend_557Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - double, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool)>(); - - late final _sel_scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_1 = - _registerName1( - "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:"); - late final _sel_timerWithTimeInterval_repeats_block_1 = - _registerName1("timerWithTimeInterval:repeats:block:"); - ffi.Pointer _objc_msgSend_558( - ffi.Pointer obj, - ffi.Pointer sel, - double interval, - bool repeats, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_558( - obj, - sel, - interval, - repeats, - block, - ); - } - - late final __objc_msgSend_558Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Double, - ffi.Bool, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_558 = __objc_msgSend_558Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, double, bool, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_scheduledTimerWithTimeInterval_repeats_block_1 = - _registerName1("scheduledTimerWithTimeInterval:repeats:block:"); - late final _sel_initWithFireDate_interval_repeats_block_1 = - _registerName1("initWithFireDate:interval:repeats:block:"); - instancetype _objc_msgSend_559( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - double interval, - bool repeats, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_559( - obj, - sel, - date, - interval, - repeats, - block, - ); - } - - late final __objc_msgSend_559Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Double, - ffi.Bool, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_559 = __objc_msgSend_559Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, double, bool, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_initWithFireDate_interval_target_selector_userInfo_repeats_1 = - _registerName1( - "initWithFireDate:interval:target:selector:userInfo:repeats:"); - instancetype _objc_msgSend_560( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - double ti, - ffi.Pointer t, - ffi.Pointer s, - ffi.Pointer ui, - bool rep, - ) { - return __objc_msgSend_560( - obj, - sel, - date, - ti, - t, - s, - ui, - rep, - ); - } - - late final __objc_msgSend_560Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Double, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_560 = __objc_msgSend_560Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - double, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool)>(); - - late final _sel_fire1 = _registerName1("fire"); - late final _sel_fireDate1 = _registerName1("fireDate"); - late final _sel_setFireDate_1 = _registerName1("setFireDate:"); - void _objc_msgSend_561( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_561( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_561Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_561 = __objc_msgSend_561Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_timeInterval1 = _registerName1("timeInterval"); - late final _sel_tolerance1 = _registerName1("tolerance"); - late final _sel_setTolerance_1 = _registerName1("setTolerance:"); - late final _sel_addTimer_forMode_1 = _registerName1("addTimer:forMode:"); - void _objc_msgSend_562( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer timer, - ffi.Pointer mode, - ) { - return __objc_msgSend_562( - obj, - sel, - timer, - mode, - ); - } - - late final __objc_msgSend_562Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_562 = __objc_msgSend_562Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addPort_forMode_1 = _registerName1("addPort:forMode:"); - void _objc_msgSend_563( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aPort, - ffi.Pointer mode, - ) { - return __objc_msgSend_563( - obj, - sel, - aPort, - mode, - ); - } - - late final __objc_msgSend_563Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_563 = __objc_msgSend_563Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_removePort_forMode_1 = _registerName1("removePort:forMode:"); - late final _sel_limitDateForMode_1 = _registerName1("limitDateForMode:"); - ffi.Pointer _objc_msgSend_564( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer mode, - ) { - return __objc_msgSend_564( - obj, - sel, - mode, - ); - } - - late final __objc_msgSend_564Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_564 = __objc_msgSend_564Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_acceptInputForMode_beforeDate_1 = - _registerName1("acceptInputForMode:beforeDate:"); - void _objc_msgSend_565( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer mode, - ffi.Pointer limitDate, - ) { - return __objc_msgSend_565( - obj, - sel, - mode, - limitDate, - ); - } - - late final __objc_msgSend_565Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_565 = __objc_msgSend_565Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_run1 = _registerName1("run"); - late final _sel_runUntilDate_1 = _registerName1("runUntilDate:"); - late final _sel_runMode_beforeDate_1 = _registerName1("runMode:beforeDate:"); - bool _objc_msgSend_566( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer mode, - ffi.Pointer limitDate, - ) { - return __objc_msgSend_566( - obj, - sel, - mode, - limitDate, - ); - } - - late final __objc_msgSend_566Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_566 = __objc_msgSend_566Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_configureAsServer1 = _registerName1("configureAsServer"); - late final _sel_performInModes_block_1 = - _registerName1("performInModes:block:"); - void _objc_msgSend_567( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer modes, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_567( - obj, - sel, - modes, - block, - ); - } - - late final __objc_msgSend_567Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_567 = __objc_msgSend_567Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_performBlock_1 = _registerName1("performBlock:"); - late final _sel_performSelector_target_argument_order_modes_1 = - _registerName1("performSelector:target:argument:order:modes:"); - void _objc_msgSend_568( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer target, - ffi.Pointer arg, - int order, - ffi.Pointer modes, - ) { - return __objc_msgSend_568( - obj, - sel, - aSelector, - target, - arg, - order, - modes, - ); - } - - late final __objc_msgSend_568Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_568 = __objc_msgSend_568Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer)>(); - - late final _sel_cancelPerformSelector_target_argument_1 = - _registerName1("cancelPerformSelector:target:argument:"); - late final _sel_cancelPerformSelectorsWithTarget_1 = - _registerName1("cancelPerformSelectorsWithTarget:"); - late final _sel_scheduleInRunLoop_forMode_1 = - _registerName1("scheduleInRunLoop:forMode:"); - void _objc_msgSend_569( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer runLoop, - ffi.Pointer mode, - ) { - return __objc_msgSend_569( - obj, - sel, - runLoop, - mode, - ); - } - - late final __objc_msgSend_569Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_569 = __objc_msgSend_569Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_removeFromRunLoop_forMode_1 = - _registerName1("removeFromRunLoop:forMode:"); - late final _sel_reservedSpaceLength1 = _registerName1("reservedSpaceLength"); - late final _sel_sendBeforeDate_components_from_reserved_1 = - _registerName1("sendBeforeDate:components:from:reserved:"); - bool _objc_msgSend_570( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer limitDate, - ffi.Pointer components, - ffi.Pointer receivePort, - int headerSpaceReserved, - ) { - return __objc_msgSend_570( - obj, - sel, - limitDate, - components, - receivePort, - headerSpaceReserved, - ); - } - - late final __objc_msgSend_570Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_570 = __objc_msgSend_570Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _sel_sendBeforeDate_msgid_components_from_reserved_1 = - _registerName1("sendBeforeDate:msgid:components:from:reserved:"); - bool _objc_msgSend_571( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer limitDate, - int msgID, - ffi.Pointer components, - ffi.Pointer receivePort, - int headerSpaceReserved, - ) { - return __objc_msgSend_571( - obj, - sel, - limitDate, - msgID, - components, - receivePort, - headerSpaceReserved, - ); - } - - late final __objc_msgSend_571Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_571 = __objc_msgSend_571Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _class_NSConnection1 = _getClass1("NSConnection"); - late final _sel_statistics1 = _registerName1("statistics"); - late final _sel_allConnections1 = _registerName1("allConnections"); - late final _sel_defaultConnection1 = _registerName1("defaultConnection"); - ffi.Pointer _objc_msgSend_572( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_572( - obj, - sel, - ); - } - - late final __objc_msgSend_572Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_572 = __objc_msgSend_572Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_connectionWithRegisteredName_host_1 = - _registerName1("connectionWithRegisteredName:host:"); - instancetype _objc_msgSend_573( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer hostName, - ) { - return __objc_msgSend_573( - obj, - sel, - name, - hostName, - ); - } - - late final __objc_msgSend_573Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_573 = __objc_msgSend_573Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSPortNameServer1 = _getClass1("NSPortNameServer"); - late final _sel_systemDefaultPortNameServer1 = - _registerName1("systemDefaultPortNameServer"); - ffi.Pointer _objc_msgSend_574( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_574( - obj, - sel, - ); - } - - late final __objc_msgSend_574Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_574 = __objc_msgSend_574Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_portForName_1 = _registerName1("portForName:"); - ffi.Pointer _objc_msgSend_575( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ) { - return __objc_msgSend_575( - obj, - sel, - name, - ); - } - - late final __objc_msgSend_575Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_575 = __objc_msgSend_575Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_portForName_host_1 = _registerName1("portForName:host:"); - ffi.Pointer _objc_msgSend_576( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer host, - ) { - return __objc_msgSend_576( - obj, - sel, - name, - host, - ); - } - - late final __objc_msgSend_576Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_576 = __objc_msgSend_576Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_registerPort_name_1 = _registerName1("registerPort:name:"); - bool _objc_msgSend_577( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer port, - ffi.Pointer name, - ) { - return __objc_msgSend_577( - obj, - sel, - port, - name, - ); - } - - late final __objc_msgSend_577Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_577 = __objc_msgSend_577Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_removePortForName_1 = _registerName1("removePortForName:"); - late final _sel_connectionWithRegisteredName_host_usingNameServer_1 = - _registerName1("connectionWithRegisteredName:host:usingNameServer:"); - instancetype _objc_msgSend_578( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer hostName, - ffi.Pointer server, - ) { - return __objc_msgSend_578( - obj, - sel, - name, - hostName, - server, - ); - } - - late final __objc_msgSend_578Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_578 = __objc_msgSend_578Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSDistantObject1 = _getClass1("NSDistantObject"); - late final _class_NSProxy1 = _getClass1("NSProxy"); - ffi.Pointer _objc_msgSend_579( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer sel1, - ) { - return __objc_msgSend_579( - obj, - sel, - sel1, - ); - } - - late final __objc_msgSend_579Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_579 = __objc_msgSend_579Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_respondsToSelector_1 = _registerName1("respondsToSelector:"); - late final _sel_proxyWithTarget_connection_1 = - _registerName1("proxyWithTarget:connection:"); - ffi.Pointer _objc_msgSend_580( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer target, - ffi.Pointer connection, - ) { - return __objc_msgSend_580( - obj, - sel, - target, - connection, - ); - } - - late final __objc_msgSend_580Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_580 = __objc_msgSend_580Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithTarget_connection_1 = - _registerName1("initWithTarget:connection:"); - late final _sel_proxyWithLocal_connection_1 = - _registerName1("proxyWithLocal:connection:"); - ffi.Pointer _objc_msgSend_581( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer target, - ffi.Pointer connection, - ) { - return __objc_msgSend_581( - obj, - sel, - target, - connection, - ); - } - - late final __objc_msgSend_581Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_581 = __objc_msgSend_581Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithLocal_connection_1 = - _registerName1("initWithLocal:connection:"); - late final _sel_setProtocolForProxy_1 = - _registerName1("setProtocolForProxy:"); - void _objc_msgSend_582( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer proto, - ) { - return __objc_msgSend_582( - obj, - sel, - proto, - ); - } - - late final __objc_msgSend_582Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_582 = __objc_msgSend_582Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_connectionForProxy1 = _registerName1("connectionForProxy"); - late final _sel_rootProxyForConnectionWithRegisteredName_host_1 = - _registerName1("rootProxyForConnectionWithRegisteredName:host:"); - ffi.Pointer _objc_msgSend_583( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer hostName, - ) { - return __objc_msgSend_583( - obj, - sel, - name, - hostName, - ); - } - - late final __objc_msgSend_583Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_583 = __objc_msgSend_583Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_rootProxyForConnectionWithRegisteredName_host_usingNameServer_1 = - _registerName1( - "rootProxyForConnectionWithRegisteredName:host:usingNameServer:"); - ffi.Pointer _objc_msgSend_584( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer hostName, - ffi.Pointer server, - ) { - return __objc_msgSend_584( - obj, - sel, - name, - hostName, - server, - ); - } - - late final __objc_msgSend_584Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_584 = __objc_msgSend_584Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_serviceConnectionWithName_rootObject_usingNameServer_1 = - _registerName1("serviceConnectionWithName:rootObject:usingNameServer:"); - instancetype _objc_msgSend_585( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer root, - ffi.Pointer server, - ) { - return __objc_msgSend_585( - obj, - sel, - name, - root, - server, - ); - } - - late final __objc_msgSend_585Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_585 = __objc_msgSend_585Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_serviceConnectionWithName_rootObject_1 = - _registerName1("serviceConnectionWithName:rootObject:"); - instancetype _objc_msgSend_586( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer root, - ) { - return __objc_msgSend_586( - obj, - sel, - name, - root, - ); - } - - late final __objc_msgSend_586Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_586 = __objc_msgSend_586Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_requestTimeout1 = _registerName1("requestTimeout"); - late final _sel_setRequestTimeout_1 = _registerName1("setRequestTimeout:"); - late final _sel_replyTimeout1 = _registerName1("replyTimeout"); - late final _sel_setReplyTimeout_1 = _registerName1("setReplyTimeout:"); - late final _sel_rootObject1 = _registerName1("rootObject"); - late final _sel_setRootObject_1 = _registerName1("setRootObject:"); - late final _sel_independentConversationQueueing1 = - _registerName1("independentConversationQueueing"); - late final _sel_setIndependentConversationQueueing_1 = - _registerName1("setIndependentConversationQueueing:"); - late final _sel_rootProxy1 = _registerName1("rootProxy"); - ffi.Pointer _objc_msgSend_587( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_587( - obj, - sel, - ); - } - - late final __objc_msgSend_587Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_587 = __objc_msgSend_587Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addRequestMode_1 = _registerName1("addRequestMode:"); - late final _sel_removeRequestMode_1 = _registerName1("removeRequestMode:"); - late final _sel_requestModes1 = _registerName1("requestModes"); - late final _sel_registerName_1 = _registerName1("registerName:"); - bool _objc_msgSend_588( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ) { - return __objc_msgSend_588( - obj, - sel, - name, - ); - } - - late final __objc_msgSend_588Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_588 = __objc_msgSend_588Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_registerName_withNameServer_1 = - _registerName1("registerName:withNameServer:"); - bool _objc_msgSend_589( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer server, - ) { - return __objc_msgSend_589( - obj, - sel, - name, - server, - ); - } - - late final __objc_msgSend_589Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_589 = __objc_msgSend_589Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_connectionWithReceivePort_sendPort_1 = - _registerName1("connectionWithReceivePort:sendPort:"); - instancetype _objc_msgSend_590( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer receivePort, - ffi.Pointer sendPort, - ) { - return __objc_msgSend_590( - obj, - sel, - receivePort, - sendPort, - ); - } - - late final __objc_msgSend_590Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_590 = __objc_msgSend_590Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_currentConversation1 = _registerName1("currentConversation"); - late final _sel_initWithReceivePort_sendPort_1 = - _registerName1("initWithReceivePort:sendPort:"); - late final _sel_sendPort1 = _registerName1("sendPort"); - late final _sel_receivePort1 = _registerName1("receivePort"); - late final _sel_enableMultipleThreads1 = - _registerName1("enableMultipleThreads"); - late final _sel_multipleThreadsEnabled1 = - _registerName1("multipleThreadsEnabled"); - late final _sel_addRunLoop_1 = _registerName1("addRunLoop:"); - void _objc_msgSend_591( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer runloop, - ) { - return __objc_msgSend_591( - obj, - sel, - runloop, - ); - } - - late final __objc_msgSend_591Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_591 = __objc_msgSend_591Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeRunLoop_1 = _registerName1("removeRunLoop:"); - late final _sel_runInNewThread1 = _registerName1("runInNewThread"); - late final _sel_remoteObjects1 = _registerName1("remoteObjects"); - late final _sel_localObjects1 = _registerName1("localObjects"); - late final _sel_dispatchWithComponents_1 = - _registerName1("dispatchWithComponents:"); - late final _sel_addConnection_toRunLoop_forMode_1 = - _registerName1("addConnection:toRunLoop:forMode:"); - void _objc_msgSend_592( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer conn, - ffi.Pointer runLoop, - ffi.Pointer mode, - ) { - return __objc_msgSend_592( - obj, - sel, - conn, - runLoop, - mode, - ); - } - - late final __objc_msgSend_592Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_592 = __objc_msgSend_592Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeConnection_fromRunLoop_forMode_1 = - _registerName1("removeConnection:fromRunLoop:forMode:"); - late final _sel_encodePortObject_1 = _registerName1("encodePortObject:"); - void _objc_msgSend_593( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aport, - ) { - return __objc_msgSend_593( - obj, - sel, - aport, - ); - } - - late final __objc_msgSend_593Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_593 = __objc_msgSend_593Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodePortObject1 = _registerName1("decodePortObject"); - ffi.Pointer _objc_msgSend_594( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_594( - obj, - sel, - ); - } - - late final __objc_msgSend_594Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_594 = __objc_msgSend_594Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_connection1 = _registerName1("connection"); - ffi.Pointer _objc_msgSend_595( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_595( - obj, - sel, - ); - } - - late final __objc_msgSend_595Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_595 = __objc_msgSend_595Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_portCoderWithReceivePort_sendPort_components_1 = - _registerName1("portCoderWithReceivePort:sendPort:components:"); - ffi.Pointer _objc_msgSend_596( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer rcvPort, - ffi.Pointer sndPort, - ffi.Pointer comps, - ) { - return __objc_msgSend_596( - obj, - sel, - rcvPort, - sndPort, - comps, - ); - } - - late final __objc_msgSend_596Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_596 = __objc_msgSend_596Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithReceivePort_sendPort_components_1 = - _registerName1("initWithReceivePort:sendPort:components:"); - late final _sel_dispatch1 = _registerName1("dispatch"); - late final _sel_replacementObjectForPortCoder_1 = - _registerName1("replacementObjectForPortCoder:"); - ffi.Pointer _objc_msgSend_597( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer coder, - ) { - return __objc_msgSend_597( - obj, - sel, - coder, - ); - } - - late final __objc_msgSend_597Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_597 = __objc_msgSend_597Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSClassDescription1 = _getClass1("NSClassDescription"); - late final _sel_registerClassDescription_forClass_1 = - _registerName1("registerClassDescription:forClass:"); - void _objc_msgSend_598( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer description, - ffi.Pointer aClass, - ) { - return __objc_msgSend_598( - obj, - sel, - description, - aClass, - ); - } - - late final __objc_msgSend_598Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_598 = __objc_msgSend_598Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_invalidateClassDescriptionCache1 = - _registerName1("invalidateClassDescriptionCache"); - late final _sel_classDescriptionForClass_1 = - _registerName1("classDescriptionForClass:"); - ffi.Pointer _objc_msgSend_599( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aClass, - ) { - return __objc_msgSend_599( - obj, - sel, - aClass, - ); - } - - late final __objc_msgSend_599Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_599 = __objc_msgSend_599Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_attributeKeys1 = _registerName1("attributeKeys"); - late final _sel_toOneRelationshipKeys1 = - _registerName1("toOneRelationshipKeys"); - late final _sel_toManyRelationshipKeys1 = - _registerName1("toManyRelationshipKeys"); - late final _sel_inverseForRelationshipKey_1 = - _registerName1("inverseForRelationshipKey:"); - late final _sel_classDescription1 = _registerName1("classDescription"); - ffi.Pointer _objc_msgSend_600( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_600( - obj, - sel, - ); - } - - late final __objc_msgSend_600Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_600 = __objc_msgSend_600Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSScriptObjectSpecifier1 = - _getClass1("NSScriptObjectSpecifier"); - late final _class_NSAppleEventDescriptor1 = - _getClass1("NSAppleEventDescriptor"); - late final _sel_nullDescriptor1 = _registerName1("nullDescriptor"); - ffi.Pointer _objc_msgSend_601( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_601( - obj, - sel, - ); - } - - late final __objc_msgSend_601Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_601 = __objc_msgSend_601Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_descriptorWithDescriptorType_bytes_length_1 = - _registerName1("descriptorWithDescriptorType:bytes:length:"); - ffi.Pointer _objc_msgSend_602( - ffi.Pointer obj, - ffi.Pointer sel, - int descriptorType, - ffi.Pointer bytes, - int byteCount, - ) { - return __objc_msgSend_602( - obj, - sel, - descriptorType, - bytes, - byteCount, - ); - } - - late final __objc_msgSend_602Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedInt, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_602 = __objc_msgSend_602Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer, int)>(); - - late final _sel_descriptorWithDescriptorType_data_1 = - _registerName1("descriptorWithDescriptorType:data:"); - ffi.Pointer _objc_msgSend_603( - ffi.Pointer obj, - ffi.Pointer sel, - int descriptorType, - ffi.Pointer data, - ) { - return __objc_msgSend_603( - obj, - sel, - descriptorType, - data, - ); - } - - late final __objc_msgSend_603Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedInt, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_603 = __objc_msgSend_603Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_descriptorWithBoolean_1 = - _registerName1("descriptorWithBoolean:"); - ffi.Pointer _objc_msgSend_604( - ffi.Pointer obj, - ffi.Pointer sel, - int boolean, - ) { - return __objc_msgSend_604( - obj, - sel, - boolean, - ); - } - - late final __objc_msgSend_604Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedChar)>>('objc_msgSend'); - late final __objc_msgSend_604 = __objc_msgSend_604Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_descriptorWithEnumCode_1 = - _registerName1("descriptorWithEnumCode:"); - ffi.Pointer _objc_msgSend_605( - ffi.Pointer obj, - ffi.Pointer sel, - int enumerator, - ) { - return __objc_msgSend_605( - obj, - sel, - enumerator, - ); - } - - late final __objc_msgSend_605Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_605 = __objc_msgSend_605Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_descriptorWithInt32_1 = - _registerName1("descriptorWithInt32:"); - ffi.Pointer _objc_msgSend_606( - ffi.Pointer obj, - ffi.Pointer sel, - int signedInt, - ) { - return __objc_msgSend_606( - obj, - sel, - signedInt, - ); - } - - late final __objc_msgSend_606Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int)>>('objc_msgSend'); - late final __objc_msgSend_606 = __objc_msgSend_606Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_descriptorWithDouble_1 = - _registerName1("descriptorWithDouble:"); - ffi.Pointer _objc_msgSend_607( - ffi.Pointer obj, - ffi.Pointer sel, - double doubleValue, - ) { - return __objc_msgSend_607( - obj, - sel, - doubleValue, - ); - } - - late final __objc_msgSend_607Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_607 = __objc_msgSend_607Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_descriptorWithTypeCode_1 = - _registerName1("descriptorWithTypeCode:"); - late final _sel_descriptorWithString_1 = - _registerName1("descriptorWithString:"); - ffi.Pointer _objc_msgSend_608( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - ) { - return __objc_msgSend_608( - obj, - sel, - string, - ); - } - - late final __objc_msgSend_608Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_608 = __objc_msgSend_608Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_descriptorWithDate_1 = _registerName1("descriptorWithDate:"); - ffi.Pointer _objc_msgSend_609( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - ) { - return __objc_msgSend_609( - obj, - sel, - date, - ); - } - - late final __objc_msgSend_609Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_609 = __objc_msgSend_609Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_descriptorWithFileURL_1 = - _registerName1("descriptorWithFileURL:"); - ffi.Pointer _objc_msgSend_610( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer fileURL, - ) { - return __objc_msgSend_610( - obj, - sel, - fileURL, - ); - } - - late final __objc_msgSend_610Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_610 = __objc_msgSend_610Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_1 = - _registerName1( - "appleEventWithEventClass:eventID:targetDescriptor:returnID:transactionID:"); - ffi.Pointer _objc_msgSend_611( - ffi.Pointer obj, - ffi.Pointer sel, - int eventClass, - int eventID, - ffi.Pointer targetDescriptor, - int returnID, - int transactionID, - ) { - return __objc_msgSend_611( - obj, - sel, - eventClass, - eventID, - targetDescriptor, - returnID, - transactionID, - ); - } - - late final __objc_msgSend_611Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedInt, - ffi.UnsignedInt, - ffi.Pointer, - ffi.Short, - ffi.Int)>>('objc_msgSend'); - late final __objc_msgSend_611 = __objc_msgSend_611Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, int, ffi.Pointer, int, int)>(); - - late final _sel_listDescriptor1 = _registerName1("listDescriptor"); - late final _sel_recordDescriptor1 = _registerName1("recordDescriptor"); - late final _sel_currentProcessDescriptor1 = - _registerName1("currentProcessDescriptor"); - late final _sel_descriptorWithProcessIdentifier_1 = - _registerName1("descriptorWithProcessIdentifier:"); - late final _sel_descriptorWithBundleIdentifier_1 = - _registerName1("descriptorWithBundleIdentifier:"); - late final _sel_descriptorWithApplicationURL_1 = - _registerName1("descriptorWithApplicationURL:"); - late final _sel_initWithAEDescNoCopy_1 = - _registerName1("initWithAEDescNoCopy:"); - instancetype _objc_msgSend_612( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aeDesc, - ) { - return __objc_msgSend_612( - obj, - sel, - aeDesc, - ); - } - - late final __objc_msgSend_612Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_612 = __objc_msgSend_612Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithDescriptorType_bytes_length_1 = - _registerName1("initWithDescriptorType:bytes:length:"); - instancetype _objc_msgSend_613( - ffi.Pointer obj, - ffi.Pointer sel, - int descriptorType, - ffi.Pointer bytes, - int byteCount, - ) { - return __objc_msgSend_613( - obj, - sel, - descriptorType, - bytes, - byteCount, - ); - } - - late final __objc_msgSend_613Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedInt, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_613 = __objc_msgSend_613Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer, int)>(); - - late final _sel_initWithDescriptorType_data_1 = - _registerName1("initWithDescriptorType:data:"); - instancetype _objc_msgSend_614( - ffi.Pointer obj, - ffi.Pointer sel, - int descriptorType, - ffi.Pointer data, - ) { - return __objc_msgSend_614( - obj, - sel, - descriptorType, - data, - ); - } - - late final __objc_msgSend_614Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedInt, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_614 = __objc_msgSend_614Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_initWithEventClass_eventID_targetDescriptor_returnID_transactionID_1 = - _registerName1( - "initWithEventClass:eventID:targetDescriptor:returnID:transactionID:"); - instancetype _objc_msgSend_615( - ffi.Pointer obj, - ffi.Pointer sel, - int eventClass, - int eventID, - ffi.Pointer targetDescriptor, - int returnID, - int transactionID, - ) { - return __objc_msgSend_615( - obj, - sel, - eventClass, - eventID, - targetDescriptor, - returnID, - transactionID, - ); - } - - late final __objc_msgSend_615Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedInt, - ffi.UnsignedInt, - ffi.Pointer, - ffi.Short, - ffi.Int)>>('objc_msgSend'); - late final __objc_msgSend_615 = __objc_msgSend_615Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - int, ffi.Pointer, int, int)>(); - - late final _sel_initListDescriptor1 = _registerName1("initListDescriptor"); - late final _sel_initRecordDescriptor1 = - _registerName1("initRecordDescriptor"); - late final _sel_aeDesc1 = _registerName1("aeDesc"); - ffi.Pointer _objc_msgSend_616( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_616( - obj, - sel, - ); - } - - late final __objc_msgSend_616Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_616 = __objc_msgSend_616Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_descriptorType1 = _registerName1("descriptorType"); - late final _sel_booleanValue1 = _registerName1("booleanValue"); - late final _sel_enumCodeValue1 = _registerName1("enumCodeValue"); - late final _sel_int32Value1 = _registerName1("int32Value"); - late final _sel_typeCodeValue1 = _registerName1("typeCodeValue"); - late final _sel_dateValue1 = _registerName1("dateValue"); - late final _sel_fileURLValue1 = _registerName1("fileURLValue"); - late final _sel_eventClass1 = _registerName1("eventClass"); - late final _sel_eventID1 = _registerName1("eventID"); - late final _sel_returnID1 = _registerName1("returnID"); - late final _sel_transactionID1 = _registerName1("transactionID"); - late final _sel_setParamDescriptor_forKeyword_1 = - _registerName1("setParamDescriptor:forKeyword:"); - void _objc_msgSend_617( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer descriptor, - int keyword, - ) { - return __objc_msgSend_617( - obj, - sel, - descriptor, - keyword, - ); - } - - late final __objc_msgSend_617Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_617 = __objc_msgSend_617Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_paramDescriptorForKeyword_1 = - _registerName1("paramDescriptorForKeyword:"); - ffi.Pointer _objc_msgSend_618( - ffi.Pointer obj, - ffi.Pointer sel, - int keyword, - ) { - return __objc_msgSend_618( - obj, - sel, - keyword, - ); - } - - late final __objc_msgSend_618Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_618 = __objc_msgSend_618Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_removeParamDescriptorWithKeyword_1 = - _registerName1("removeParamDescriptorWithKeyword:"); - void _objc_msgSend_619( - ffi.Pointer obj, - ffi.Pointer sel, - int keyword, - ) { - return __objc_msgSend_619( - obj, - sel, - keyword, - ); - } - - late final __objc_msgSend_619Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_619 = __objc_msgSend_619Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_setAttributeDescriptor_forKeyword_1 = - _registerName1("setAttributeDescriptor:forKeyword:"); - late final _sel_attributeDescriptorForKeyword_1 = - _registerName1("attributeDescriptorForKeyword:"); - late final _sel_sendEventWithOptions_timeout_error_1 = - _registerName1("sendEventWithOptions:timeout:error:"); - ffi.Pointer _objc_msgSend_620( - ffi.Pointer obj, - ffi.Pointer sel, - int sendOptions, - double timeoutInSeconds, - ffi.Pointer> error, - ) { - return __objc_msgSend_620( - obj, - sel, - sendOptions, - timeoutInSeconds, - error, - ); - } - - late final __objc_msgSend_620Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Double, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_620 = __objc_msgSend_620Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - int, - double, - ffi.Pointer>)>(); - - late final _sel_isRecordDescriptor1 = _registerName1("isRecordDescriptor"); - late final _sel_numberOfItems1 = _registerName1("numberOfItems"); - late final _sel_insertDescriptor_atIndex_1 = - _registerName1("insertDescriptor:atIndex:"); - void _objc_msgSend_621( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer descriptor, - int index, - ) { - return __objc_msgSend_621( - obj, - sel, - descriptor, - index, - ); - } - - late final __objc_msgSend_621Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_621 = __objc_msgSend_621Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_descriptorAtIndex_1 = _registerName1("descriptorAtIndex:"); - ffi.Pointer _objc_msgSend_622( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_622( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_622Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_622 = __objc_msgSend_622Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_removeDescriptorAtIndex_1 = - _registerName1("removeDescriptorAtIndex:"); - late final _sel_setDescriptor_forKeyword_1 = - _registerName1("setDescriptor:forKeyword:"); - late final _sel_descriptorForKeyword_1 = - _registerName1("descriptorForKeyword:"); - late final _sel_removeDescriptorWithKeyword_1 = - _registerName1("removeDescriptorWithKeyword:"); - late final _sel_keywordForDescriptorAtIndex_1 = - _registerName1("keywordForDescriptorAtIndex:"); - int _objc_msgSend_623( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_623( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_623Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedInt Function(ffi.Pointer, - ffi.Pointer, ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_623 = __objc_msgSend_623Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_coerceToDescriptorType_1 = - _registerName1("coerceToDescriptorType:"); - late final _sel_objectSpecifierWithDescriptor_1 = - _registerName1("objectSpecifierWithDescriptor:"); - ffi.Pointer _objc_msgSend_624( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer descriptor, - ) { - return __objc_msgSend_624( - obj, - sel, - descriptor, - ); - } - - late final __objc_msgSend_624Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_624 = __objc_msgSend_624Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithContainerSpecifier_key_1 = - _registerName1("initWithContainerSpecifier:key:"); - instancetype _objc_msgSend_625( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer container, - ffi.Pointer property, - ) { - return __objc_msgSend_625( - obj, - sel, - container, - property, - ); - } - - late final __objc_msgSend_625Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_625 = __objc_msgSend_625Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSScriptClassDescription1 = - _getClass1("NSScriptClassDescription"); - ffi.Pointer _objc_msgSend_626( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aClass, - ) { - return __objc_msgSend_626( - obj, - sel, - aClass, - ); - } - - late final __objc_msgSend_626Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_626 = __objc_msgSend_626Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithSuiteName_className_dictionary_1 = - _registerName1("initWithSuiteName:className:dictionary:"); - instancetype _objc_msgSend_627( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer suiteName, - ffi.Pointer className, - ffi.Pointer classDeclaration, - ) { - return __objc_msgSend_627( - obj, - sel, - suiteName, - className, - classDeclaration, - ); - } - - late final __objc_msgSend_627Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_627 = __objc_msgSend_627Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_suiteName1 = _registerName1("suiteName"); - late final _sel_className1 = _registerName1("className"); - late final _sel_implementationClassName1 = - _registerName1("implementationClassName"); - late final _sel_superclassDescription1 = - _registerName1("superclassDescription"); - ffi.Pointer _objc_msgSend_628( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_628( - obj, - sel, - ); - } - - late final __objc_msgSend_628Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_628 = __objc_msgSend_628Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_appleEventCode1 = _registerName1("appleEventCode"); - late final _sel_matchesAppleEventCode_1 = - _registerName1("matchesAppleEventCode:"); - late final _class_NSScriptCommandDescription1 = - _getClass1("NSScriptCommandDescription"); - late final _sel_initWithSuiteName_commandName_dictionary_1 = - _registerName1("initWithSuiteName:commandName:dictionary:"); - late final _sel_commandName1 = _registerName1("commandName"); - late final _sel_appleEventClassCode1 = _registerName1("appleEventClassCode"); - late final _sel_commandClassName1 = _registerName1("commandClassName"); - late final _sel_returnType1 = _registerName1("returnType"); - late final _sel_appleEventCodeForReturnType1 = - _registerName1("appleEventCodeForReturnType"); - late final _sel_argumentNames1 = _registerName1("argumentNames"); - late final _sel_typeForArgumentWithName_1 = - _registerName1("typeForArgumentWithName:"); - late final _sel_appleEventCodeForArgumentWithName_1 = - _registerName1("appleEventCodeForArgumentWithName:"); - int _objc_msgSend_629( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer argumentName, - ) { - return __objc_msgSend_629( - obj, - sel, - argumentName, - ); - } - - late final __objc_msgSend_629Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedInt Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_629 = __objc_msgSend_629Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isOptionalArgumentWithName_1 = - _registerName1("isOptionalArgumentWithName:"); - late final _class_NSScriptCommand1 = _getClass1("NSScriptCommand"); - late final _sel_initWithCommandDescription_1 = - _registerName1("initWithCommandDescription:"); - instancetype _objc_msgSend_630( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer commandDef, - ) { - return __objc_msgSend_630( - obj, - sel, - commandDef, - ); - } - - late final __objc_msgSend_630Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_630 = __objc_msgSend_630Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_commandDescription1 = _registerName1("commandDescription"); - ffi.Pointer _objc_msgSend_631( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_631( - obj, - sel, - ); - } - - late final __objc_msgSend_631Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_631 = __objc_msgSend_631Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_directParameter1 = _registerName1("directParameter"); - late final _sel_setDirectParameter_1 = _registerName1("setDirectParameter:"); - late final _sel_receiversSpecifier1 = _registerName1("receiversSpecifier"); - ffi.Pointer _objc_msgSend_632( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_632( - obj, - sel, - ); - } - - late final __objc_msgSend_632Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_632 = __objc_msgSend_632Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setReceiversSpecifier_1 = - _registerName1("setReceiversSpecifier:"); - void _objc_msgSend_633( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_633( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_633Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_633 = __objc_msgSend_633Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_evaluatedReceivers1 = _registerName1("evaluatedReceivers"); - late final _sel_arguments1 = _registerName1("arguments"); - late final _sel_setArguments_1 = _registerName1("setArguments:"); - void _objc_msgSend_634( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_634( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_634Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_634 = __objc_msgSend_634Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_evaluatedArguments1 = _registerName1("evaluatedArguments"); - late final _sel_isWellFormed1 = _registerName1("isWellFormed"); - late final _sel_performDefaultImplementation1 = - _registerName1("performDefaultImplementation"); - late final _sel_executeCommand1 = _registerName1("executeCommand"); - late final _sel_scriptErrorNumber1 = _registerName1("scriptErrorNumber"); - late final _sel_setScriptErrorNumber_1 = - _registerName1("setScriptErrorNumber:"); - void _objc_msgSend_635( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_635( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_635Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_635 = __objc_msgSend_635Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_scriptErrorOffendingObjectDescriptor1 = - _registerName1("scriptErrorOffendingObjectDescriptor"); - ffi.Pointer _objc_msgSend_636( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_636( - obj, - sel, - ); - } - - late final __objc_msgSend_636Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_636 = __objc_msgSend_636Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setScriptErrorOffendingObjectDescriptor_1 = - _registerName1("setScriptErrorOffendingObjectDescriptor:"); - void _objc_msgSend_637( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_637( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_637Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_637 = __objc_msgSend_637Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scriptErrorExpectedTypeDescriptor1 = - _registerName1("scriptErrorExpectedTypeDescriptor"); - late final _sel_setScriptErrorExpectedTypeDescriptor_1 = - _registerName1("setScriptErrorExpectedTypeDescriptor:"); - late final _sel_scriptErrorString1 = _registerName1("scriptErrorString"); - late final _sel_setScriptErrorString_1 = - _registerName1("setScriptErrorString:"); - late final _sel_currentCommand1 = _registerName1("currentCommand"); - ffi.Pointer _objc_msgSend_638( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_638( - obj, - sel, - ); - } - - late final __objc_msgSend_638Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_638 = __objc_msgSend_638Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_appleEvent1 = _registerName1("appleEvent"); - late final _sel_suspendExecution1 = _registerName1("suspendExecution"); - late final _sel_resumeExecutionWithResult_1 = - _registerName1("resumeExecutionWithResult:"); - late final _sel_createCommandInstance1 = - _registerName1("createCommandInstance"); - ffi.Pointer _objc_msgSend_639( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_639( - obj, - sel, - ); - } - - late final __objc_msgSend_639Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_639 = __objc_msgSend_639Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_createCommandInstanceWithZone_1 = - _registerName1("createCommandInstanceWithZone:"); - ffi.Pointer _objc_msgSend_640( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_NSZone> zone, - ) { - return __objc_msgSend_640( - obj, - sel, - zone, - ); - } - - late final __objc_msgSend_640Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_NSZone>)>>('objc_msgSend'); - late final __objc_msgSend_640 = __objc_msgSend_640Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_NSZone>)>(); - - late final _sel_supportsCommand_1 = _registerName1("supportsCommand:"); - bool _objc_msgSend_641( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer commandDescription, - ) { - return __objc_msgSend_641( - obj, - sel, - commandDescription, - ); - } - - late final __objc_msgSend_641Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_641 = __objc_msgSend_641Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_selectorForCommand_1 = _registerName1("selectorForCommand:"); - ffi.Pointer _objc_msgSend_642( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer commandDescription, - ) { - return __objc_msgSend_642( - obj, - sel, - commandDescription, - ); - } - - late final __objc_msgSend_642Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_642 = __objc_msgSend_642Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_typeForKey_1 = _registerName1("typeForKey:"); - late final _sel_classDescriptionForKey_1 = - _registerName1("classDescriptionForKey:"); - ffi.Pointer _objc_msgSend_643( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_643( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_643Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_643 = __objc_msgSend_643Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_appleEventCodeForKey_1 = - _registerName1("appleEventCodeForKey:"); - late final _sel_keyWithAppleEventCode_1 = - _registerName1("keyWithAppleEventCode:"); - ffi.Pointer _objc_msgSend_644( - ffi.Pointer obj, - ffi.Pointer sel, - int appleEventCode, - ) { - return __objc_msgSend_644( - obj, - sel, - appleEventCode, - ); - } - - late final __objc_msgSend_644Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_644 = __objc_msgSend_644Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_defaultSubcontainerAttributeKey1 = - _registerName1("defaultSubcontainerAttributeKey"); - late final _sel_isLocationRequiredToCreateForKey_1 = - _registerName1("isLocationRequiredToCreateForKey:"); - late final _sel_hasPropertyForKey_1 = _registerName1("hasPropertyForKey:"); - late final _sel_hasOrderedToManyRelationshipForKey_1 = - _registerName1("hasOrderedToManyRelationshipForKey:"); - late final _sel_hasReadablePropertyForKey_1 = - _registerName1("hasReadablePropertyForKey:"); - late final _sel_hasWritablePropertyForKey_1 = - _registerName1("hasWritablePropertyForKey:"); - late final _sel_isReadOnlyKey_1 = _registerName1("isReadOnlyKey:"); - late final _sel_initWithContainerClassDescription_containerSpecifier_key_1 = - _registerName1( - "initWithContainerClassDescription:containerSpecifier:key:"); - instancetype _objc_msgSend_645( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer classDesc, - ffi.Pointer container, - ffi.Pointer property, - ) { - return __objc_msgSend_645( - obj, - sel, - classDesc, - container, - property, - ); - } - - late final __objc_msgSend_645Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_645 = __objc_msgSend_645Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_childSpecifier1 = _registerName1("childSpecifier"); - late final _sel_setChildSpecifier_1 = _registerName1("setChildSpecifier:"); - late final _sel_containerSpecifier1 = _registerName1("containerSpecifier"); - late final _sel_setContainerSpecifier_1 = - _registerName1("setContainerSpecifier:"); - late final _sel_containerIsObjectBeingTested1 = - _registerName1("containerIsObjectBeingTested"); - late final _sel_setContainerIsObjectBeingTested_1 = - _registerName1("setContainerIsObjectBeingTested:"); - late final _sel_containerIsRangeContainerObject1 = - _registerName1("containerIsRangeContainerObject"); - late final _sel_setContainerIsRangeContainerObject_1 = - _registerName1("setContainerIsRangeContainerObject:"); - late final _sel_key1 = _registerName1("key"); - late final _sel_setKey_1 = _registerName1("setKey:"); - void _objc_msgSend_646( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_646( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_646Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_646 = __objc_msgSend_646Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_containerClassDescription1 = - _registerName1("containerClassDescription"); - late final _sel_setContainerClassDescription_1 = - _registerName1("setContainerClassDescription:"); - void _objc_msgSend_647( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_647( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_647Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_647 = __objc_msgSend_647Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_keyClassDescription1 = _registerName1("keyClassDescription"); - late final _sel_indicesOfObjectsByEvaluatingWithContainer_count_1 = - _registerName1("indicesOfObjectsByEvaluatingWithContainer:count:"); - ffi.Pointer _objc_msgSend_648( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer container, - ffi.Pointer count, - ) { - return __objc_msgSend_648( - obj, - sel, - container, - count, - ); - } - - late final __objc_msgSend_648Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_648 = __objc_msgSend_648Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_objectsByEvaluatingWithContainers_1 = - _registerName1("objectsByEvaluatingWithContainers:"); - late final _sel_objectsByEvaluatingSpecifier1 = - _registerName1("objectsByEvaluatingSpecifier"); - late final _sel_evaluationErrorNumber1 = - _registerName1("evaluationErrorNumber"); - late final _sel_setEvaluationErrorNumber_1 = - _registerName1("setEvaluationErrorNumber:"); - late final _sel_evaluationErrorSpecifier1 = - _registerName1("evaluationErrorSpecifier"); - late final _sel_descriptor1 = _registerName1("descriptor"); - late final _sel_scriptingValueForSpecifier_1 = - _registerName1("scriptingValueForSpecifier:"); - ffi.Pointer _objc_msgSend_649( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer objectSpecifier, - ) { - return __objc_msgSend_649( - obj, - sel, - objectSpecifier, - ); - } - - late final __objc_msgSend_649Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_649 = __objc_msgSend_649Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_scriptingProperties1 = _registerName1("scriptingProperties"); - late final _sel_setScriptingProperties_1 = - _registerName1("setScriptingProperties:"); - late final _sel_copyScriptingValue_forKey_withProperties_1 = - _registerName1("copyScriptingValue:forKey:withProperties:"); - ffi.Pointer _objc_msgSend_650( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer key, - ffi.Pointer properties, - ) { - return __objc_msgSend_650( - obj, - sel, - value, - key, - properties, - ); - } - - late final __objc_msgSend_650Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_650 = __objc_msgSend_650Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_newScriptingObjectOfClass_forValueForKey_withContentsValue_properties_1 = - _registerName1( - "newScriptingObjectOfClass:forValueForKey:withContentsValue:properties:"); - ffi.Pointer _objc_msgSend_651( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer objectClass, - ffi.Pointer key, - ffi.Pointer contentsValue, - ffi.Pointer properties, - ) { - return __objc_msgSend_651( - obj, - sel, - objectClass, - key, - contentsValue, - properties, - ); - } - - late final __objc_msgSend_651Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_651 = __objc_msgSend_651Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_classCode1 = _registerName1("classCode"); - late final _sel_valueAtIndex_inPropertyWithKey_1 = - _registerName1("valueAtIndex:inPropertyWithKey:"); - ffi.Pointer _objc_msgSend_652( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ffi.Pointer key, - ) { - return __objc_msgSend_652( - obj, - sel, - index, - key, - ); - } - - late final __objc_msgSend_652Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_652 = __objc_msgSend_652Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_valueWithName_inPropertyWithKey_1 = - _registerName1("valueWithName:inPropertyWithKey:"); - late final _sel_valueWithUniqueID_inPropertyWithKey_1 = - _registerName1("valueWithUniqueID:inPropertyWithKey:"); - late final _sel_insertValue_atIndex_inPropertyWithKey_1 = - _registerName1("insertValue:atIndex:inPropertyWithKey:"); - void _objc_msgSend_653( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - int index, - ffi.Pointer key, - ) { - return __objc_msgSend_653( - obj, - sel, - value, - index, - key, - ); - } - - late final __objc_msgSend_653Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_653 = __objc_msgSend_653Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_removeValueAtIndex_fromPropertyWithKey_1 = - _registerName1("removeValueAtIndex:fromPropertyWithKey:"); - void _objc_msgSend_654( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ffi.Pointer key, - ) { - return __objc_msgSend_654( - obj, - sel, - index, - key, - ); - } - - late final __objc_msgSend_654Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_654 = __objc_msgSend_654Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_replaceValueAtIndex_inPropertyWithKey_withValue_1 = - _registerName1("replaceValueAtIndex:inPropertyWithKey:withValue:"); - void _objc_msgSend_655( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ffi.Pointer key, - ffi.Pointer value, - ) { - return __objc_msgSend_655( - obj, - sel, - index, - key, - value, - ); - } - - late final __objc_msgSend_655Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_655 = __objc_msgSend_655Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_insertValue_inPropertyWithKey_1 = - _registerName1("insertValue:inPropertyWithKey:"); - void _objc_msgSend_656( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer key, - ) { - return __objc_msgSend_656( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_656Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_656 = __objc_msgSend_656Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_coerceValue_forKey_1 = _registerName1("coerceValue:forKey:"); - ffi.Pointer _objc_msgSend_657( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer key, - ) { - return __objc_msgSend_657( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_657Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_657 = __objc_msgSend_657Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_objectSpecifier1 = _registerName1("objectSpecifier"); - late final _sel_indicesOfObjectsByEvaluatingObjectSpecifier_1 = - _registerName1("indicesOfObjectsByEvaluatingObjectSpecifier:"); - ffi.Pointer _objc_msgSend_658( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer specifier, - ) { - return __objc_msgSend_658( - obj, - sel, - specifier, - ); - } - - late final __objc_msgSend_658Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_658 = __objc_msgSend_658Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isEqualTo_1 = _registerName1("isEqualTo:"); - late final _sel_isLessThanOrEqualTo_1 = - _registerName1("isLessThanOrEqualTo:"); - late final _sel_isLessThan_1 = _registerName1("isLessThan:"); - late final _sel_isGreaterThanOrEqualTo_1 = - _registerName1("isGreaterThanOrEqualTo:"); - late final _sel_isGreaterThan_1 = _registerName1("isGreaterThan:"); - late final _sel_isNotEqualTo_1 = _registerName1("isNotEqualTo:"); - late final _sel_doesContain_1 = _registerName1("doesContain:"); - late final _sel_isLike_1 = _registerName1("isLike:"); - late final _sel_isCaseInsensitiveLike_1 = - _registerName1("isCaseInsensitiveLike:"); - late final _sel_scriptingIsEqualTo_1 = _registerName1("scriptingIsEqualTo:"); - late final _sel_scriptingIsLessThanOrEqualTo_1 = - _registerName1("scriptingIsLessThanOrEqualTo:"); - late final _sel_scriptingIsLessThan_1 = - _registerName1("scriptingIsLessThan:"); - late final _sel_scriptingIsGreaterThanOrEqualTo_1 = - _registerName1("scriptingIsGreaterThanOrEqualTo:"); - late final _sel_scriptingIsGreaterThan_1 = - _registerName1("scriptingIsGreaterThan:"); - late final _sel_scriptingBeginsWith_1 = - _registerName1("scriptingBeginsWith:"); - late final _sel_scriptingEndsWith_1 = _registerName1("scriptingEndsWith:"); - late final _sel_scriptingContains_1 = _registerName1("scriptingContains:"); - late final _class_NSItemProvider1 = _getClass1("NSItemProvider"); - late final _class_NSProgress1 = _getClass1("NSProgress"); - late final _sel_currentProgress1 = _registerName1("currentProgress"); - ffi.Pointer _objc_msgSend_659( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_659( - obj, - sel, - ); - } - - late final __objc_msgSend_659Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_659 = __objc_msgSend_659Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_progressWithTotalUnitCount_1 = - _registerName1("progressWithTotalUnitCount:"); - ffi.Pointer _objc_msgSend_660( - ffi.Pointer obj, - ffi.Pointer sel, - int unitCount, - ) { - return __objc_msgSend_660( - obj, - sel, - unitCount, - ); - } - - late final __objc_msgSend_660Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int64)>>('objc_msgSend'); - late final __objc_msgSend_660 = __objc_msgSend_660Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_discreteProgressWithTotalUnitCount_1 = - _registerName1("discreteProgressWithTotalUnitCount:"); - late final _sel_progressWithTotalUnitCount_parent_pendingUnitCount_1 = - _registerName1("progressWithTotalUnitCount:parent:pendingUnitCount:"); - ffi.Pointer _objc_msgSend_661( - ffi.Pointer obj, - ffi.Pointer sel, - int unitCount, - ffi.Pointer parent, - int portionOfParentTotalUnitCount, - ) { - return __objc_msgSend_661( - obj, - sel, - unitCount, - parent, - portionOfParentTotalUnitCount, - ); - } - - late final __objc_msgSend_661Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int64, - ffi.Pointer, - ffi.Int64)>>('objc_msgSend'); - late final __objc_msgSend_661 = __objc_msgSend_661Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer, int)>(); - - late final _sel_initWithParent_userInfo_1 = - _registerName1("initWithParent:userInfo:"); - instancetype _objc_msgSend_662( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer parentProgressOrNil, - ffi.Pointer userInfoOrNil, - ) { - return __objc_msgSend_662( - obj, - sel, - parentProgressOrNil, - userInfoOrNil, - ); - } - - late final __objc_msgSend_662Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_662 = __objc_msgSend_662Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_becomeCurrentWithPendingUnitCount_1 = - _registerName1("becomeCurrentWithPendingUnitCount:"); - void _objc_msgSend_663( - ffi.Pointer obj, - ffi.Pointer sel, - int unitCount, - ) { - return __objc_msgSend_663( - obj, - sel, - unitCount, - ); - } - - late final __objc_msgSend_663Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int64)>>('objc_msgSend'); - late final __objc_msgSend_663 = __objc_msgSend_663Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_performAsCurrentWithPendingUnitCount_usingBlock_1 = - _registerName1("performAsCurrentWithPendingUnitCount:usingBlock:"); - void _objc_msgSend_664( - ffi.Pointer obj, - ffi.Pointer sel, - int unitCount, - ffi.Pointer<_ObjCBlock> work, - ) { - return __objc_msgSend_664( - obj, - sel, - unitCount, - work, - ); - } - - late final __objc_msgSend_664Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int64, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_664 = __objc_msgSend_664Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_resignCurrent1 = _registerName1("resignCurrent"); - late final _sel_addChild_withPendingUnitCount_1 = - _registerName1("addChild:withPendingUnitCount:"); - void _objc_msgSend_665( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer child, - int inUnitCount, - ) { - return __objc_msgSend_665( - obj, - sel, - child, - inUnitCount, - ); - } - - late final __objc_msgSend_665Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int64)>>('objc_msgSend'); - late final __objc_msgSend_665 = __objc_msgSend_665Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_totalUnitCount1 = _registerName1("totalUnitCount"); - int _objc_msgSend_666( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_666( - obj, - sel, - ); - } - - late final __objc_msgSend_666Ptr = _lookup< - ffi.NativeFunction< - ffi.Int64 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_666 = __objc_msgSend_666Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setTotalUnitCount_1 = _registerName1("setTotalUnitCount:"); - void _objc_msgSend_667( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_667( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_667Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int64)>>('objc_msgSend'); - late final __objc_msgSend_667 = __objc_msgSend_667Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_completedUnitCount1 = _registerName1("completedUnitCount"); - late final _sel_setCompletedUnitCount_1 = - _registerName1("setCompletedUnitCount:"); - late final _sel_setLocalizedDescription_1 = - _registerName1("setLocalizedDescription:"); - late final _sel_localizedAdditionalDescription1 = - _registerName1("localizedAdditionalDescription"); - late final _sel_setLocalizedAdditionalDescription_1 = - _registerName1("setLocalizedAdditionalDescription:"); - late final _sel_isCancellable1 = _registerName1("isCancellable"); - late final _sel_setCancellable_1 = _registerName1("setCancellable:"); - late final _sel_isPausable1 = _registerName1("isPausable"); - late final _sel_setPausable_1 = _registerName1("setPausable:"); - late final _sel_isPaused1 = _registerName1("isPaused"); - late final _sel_cancellationHandler1 = _registerName1("cancellationHandler"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_668( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_668( - obj, - sel, - ); - } - - late final __objc_msgSend_668Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_668 = __objc_msgSend_668Ptr.asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setCancellationHandler_1 = - _registerName1("setCancellationHandler:"); - void _objc_msgSend_669( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> value, - ) { - return __objc_msgSend_669( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_669Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_669 = __objc_msgSend_669Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_pausingHandler1 = _registerName1("pausingHandler"); - late final _sel_setPausingHandler_1 = _registerName1("setPausingHandler:"); - late final _sel_resumingHandler1 = _registerName1("resumingHandler"); - late final _sel_setResumingHandler_1 = _registerName1("setResumingHandler:"); - late final _sel_setUserInfoObject_forKey_1 = - _registerName1("setUserInfoObject:forKey:"); - late final _sel_isIndeterminate1 = _registerName1("isIndeterminate"); - late final _sel_fractionCompleted1 = _registerName1("fractionCompleted"); - late final _sel_pause1 = _registerName1("pause"); - late final _sel_resume1 = _registerName1("resume"); - late final _sel_kind1 = _registerName1("kind"); - late final _sel_setKind_1 = _registerName1("setKind:"); - late final _sel_estimatedTimeRemaining1 = - _registerName1("estimatedTimeRemaining"); - late final _sel_setEstimatedTimeRemaining_1 = - _registerName1("setEstimatedTimeRemaining:"); - void _objc_msgSend_670( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_670( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_670Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_670 = __objc_msgSend_670Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_throughput1 = _registerName1("throughput"); - late final _sel_setThroughput_1 = _registerName1("setThroughput:"); - late final _sel_fileOperationKind1 = _registerName1("fileOperationKind"); - late final _sel_setFileOperationKind_1 = - _registerName1("setFileOperationKind:"); - late final _sel_fileURL1 = _registerName1("fileURL"); - late final _sel_setFileURL_1 = _registerName1("setFileURL:"); - void _objc_msgSend_671( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_671( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_671Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_671 = __objc_msgSend_671Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_fileTotalCount1 = _registerName1("fileTotalCount"); - late final _sel_setFileTotalCount_1 = _registerName1("setFileTotalCount:"); - late final _sel_fileCompletedCount1 = _registerName1("fileCompletedCount"); - late final _sel_setFileCompletedCount_1 = - _registerName1("setFileCompletedCount:"); - late final _sel_publish1 = _registerName1("publish"); - late final _sel_unpublish1 = _registerName1("unpublish"); - late final _sel_addSubscriberForFileURL_withPublishingHandler_1 = - _registerName1("addSubscriberForFileURL:withPublishingHandler:"); - ffi.Pointer _objc_msgSend_672( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer<_ObjCBlock> publishingHandler, - ) { - return __objc_msgSend_672( - obj, - sel, - url, - publishingHandler, - ); - } - - late final __objc_msgSend_672Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_672 = __objc_msgSend_672Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_removeSubscriber_1 = _registerName1("removeSubscriber:"); - late final _sel_isOld1 = _registerName1("isOld"); - late final _sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_1 = - _registerName1( - "registerDataRepresentationForTypeIdentifier:visibility:loadHandler:"); - void _objc_msgSend_673( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - int visibility, - ffi.Pointer<_ObjCBlock> loadHandler, - ) { - return __objc_msgSend_673( - obj, - sel, - typeIdentifier, - visibility, - loadHandler, - ); - } - - late final __objc_msgSend_673Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_673 = __objc_msgSend_673Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_1 = - _registerName1( - "registerFileRepresentationForTypeIdentifier:fileOptions:visibility:loadHandler:"); - void _objc_msgSend_674( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - int fileOptions, - int visibility, - ffi.Pointer<_ObjCBlock> loadHandler, - ) { - return __objc_msgSend_674( - obj, - sel, - typeIdentifier, - fileOptions, - visibility, - loadHandler, - ); - } - - late final __objc_msgSend_674Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_674 = __objc_msgSend_674Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_registeredTypeIdentifiers1 = - _registerName1("registeredTypeIdentifiers"); - late final _sel_registeredTypeIdentifiersWithFileOptions_1 = - _registerName1("registeredTypeIdentifiersWithFileOptions:"); - ffi.Pointer _objc_msgSend_675( - ffi.Pointer obj, - ffi.Pointer sel, - int fileOptions, - ) { - return __objc_msgSend_675( - obj, - sel, - fileOptions, - ); - } - - late final __objc_msgSend_675Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_675 = __objc_msgSend_675Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_hasItemConformingToTypeIdentifier_1 = - _registerName1("hasItemConformingToTypeIdentifier:"); - late final _sel_hasRepresentationConformingToTypeIdentifier_fileOptions_1 = - _registerName1( - "hasRepresentationConformingToTypeIdentifier:fileOptions:"); - bool _objc_msgSend_676( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - int fileOptions, - ) { - return __objc_msgSend_676( - obj, - sel, - typeIdentifier, - fileOptions, - ); - } - - late final __objc_msgSend_676Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_676 = __objc_msgSend_676Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_loadDataRepresentationForTypeIdentifier_completionHandler_1 = - _registerName1( - "loadDataRepresentationForTypeIdentifier:completionHandler:"); - ffi.Pointer _objc_msgSend_677( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_677( - obj, - sel, - typeIdentifier, - completionHandler, - ); - } - - late final __objc_msgSend_677Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_677 = __objc_msgSend_677Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_loadFileRepresentationForTypeIdentifier_completionHandler_1 = - _registerName1( - "loadFileRepresentationForTypeIdentifier:completionHandler:"); - ffi.Pointer _objc_msgSend_678( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_678( - obj, - sel, - typeIdentifier, - completionHandler, - ); - } - - late final __objc_msgSend_678Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_678 = __objc_msgSend_678Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_1 = - _registerName1( - "loadInPlaceFileRepresentationForTypeIdentifier:completionHandler:"); - ffi.Pointer _objc_msgSend_679( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_679( - obj, - sel, - typeIdentifier, - completionHandler, - ); - } - - late final __objc_msgSend_679Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_679 = __objc_msgSend_679Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_suggestedName1 = _registerName1("suggestedName"); - late final _sel_setSuggestedName_1 = _registerName1("setSuggestedName:"); - late final _sel_registerObject_visibility_1 = - _registerName1("registerObject:visibility:"); - void _objc_msgSend_680( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer object, - int visibility, - ) { - return __objc_msgSend_680( - obj, - sel, - object, - visibility, - ); - } - - late final __objc_msgSend_680Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_680 = __objc_msgSend_680Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_registerObjectOfClass_visibility_loadHandler_1 = - _registerName1("registerObjectOfClass:visibility:loadHandler:"); - void _objc_msgSend_681( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aClass, - int visibility, - ffi.Pointer<_ObjCBlock> loadHandler, - ) { - return __objc_msgSend_681( - obj, - sel, - aClass, - visibility, - loadHandler, - ); - } - - late final __objc_msgSend_681Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_681 = __objc_msgSend_681Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_canLoadObjectOfClass_1 = - _registerName1("canLoadObjectOfClass:"); - late final _sel_loadObjectOfClass_completionHandler_1 = - _registerName1("loadObjectOfClass:completionHandler:"); - ffi.Pointer _objc_msgSend_682( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aClass, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_682( - obj, - sel, - aClass, - completionHandler, - ); - } - - late final __objc_msgSend_682Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_682 = __objc_msgSend_682Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_initWithItem_typeIdentifier_1 = - _registerName1("initWithItem:typeIdentifier:"); - instancetype _objc_msgSend_683( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer item, - ffi.Pointer typeIdentifier, - ) { - return __objc_msgSend_683( - obj, - sel, - item, - typeIdentifier, - ); - } - - late final __objc_msgSend_683Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_683 = __objc_msgSend_683Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_registerItemForTypeIdentifier_loadHandler_1 = - _registerName1("registerItemForTypeIdentifier:loadHandler:"); - void _objc_msgSend_684( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - ffi.Pointer<_ObjCBlock> loadHandler, - ) { - return __objc_msgSend_684( - obj, - sel, - typeIdentifier, - loadHandler, - ); - } - - late final __objc_msgSend_684Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_684 = __objc_msgSend_684Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_loadItemForTypeIdentifier_options_completionHandler_1 = - _registerName1("loadItemForTypeIdentifier:options:completionHandler:"); - void _objc_msgSend_685( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - ffi.Pointer options, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_685( - obj, - sel, - typeIdentifier, - options, - completionHandler, - ); - } - - late final __objc_msgSend_685Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_685 = __objc_msgSend_685Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_previewImageHandler1 = _registerName1("previewImageHandler"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_686( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_686( - obj, - sel, - ); - } - - late final __objc_msgSend_686Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_686 = __objc_msgSend_686Ptr.asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setPreviewImageHandler_1 = - _registerName1("setPreviewImageHandler:"); - void _objc_msgSend_687( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> value, - ) { - return __objc_msgSend_687( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_687Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_687 = __objc_msgSend_687Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_loadPreviewImageWithOptions_completionHandler_1 = - _registerName1("loadPreviewImageWithOptions:completionHandler:"); - void _objc_msgSend_688( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer options, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_688( - obj, - sel, - options, - completionHandler, - ); - } - - late final __objc_msgSend_688Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_688 = __objc_msgSend_688Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _class_NSMutableString1 = _getClass1("NSMutableString"); - late final _sel_replaceCharactersInRange_withString_1 = - _registerName1("replaceCharactersInRange:withString:"); - void _objc_msgSend_689( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer aString, - ) { - return __objc_msgSend_689( - obj, - sel, - range, - aString, - ); - } - - late final __objc_msgSend_689Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_689 = __objc_msgSend_689Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - ffi.Pointer)>(); - - late final _sel_insertString_atIndex_1 = - _registerName1("insertString:atIndex:"); - void _objc_msgSend_690( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aString, - int loc, - ) { - return __objc_msgSend_690( - obj, - sel, - aString, - loc, - ); - } - - late final __objc_msgSend_690Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_690 = __objc_msgSend_690Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_deleteCharactersInRange_1 = - _registerName1("deleteCharactersInRange:"); - late final _sel_appendString_1 = _registerName1("appendString:"); - late final _sel_appendFormat_1 = _registerName1("appendFormat:"); - late final _sel_setString_1 = _registerName1("setString:"); - late final _sel_replaceOccurrencesOfString_withString_options_range_1 = - _registerName1("replaceOccurrencesOfString:withString:options:range:"); - int _objc_msgSend_691( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer target, - ffi.Pointer replacement, - int options, - _NSRange searchRange, - ) { - return __objc_msgSend_691( - obj, - sel, - target, - replacement, - options, - searchRange, - ); - } - - late final __objc_msgSend_691Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_691 = __objc_msgSend_691Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - - late final _sel_applyTransform_reverse_range_updatedRange_1 = - _registerName1("applyTransform:reverse:range:updatedRange:"); - bool _objc_msgSend_692( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer transform, - bool reverse, - _NSRange range, - ffi.Pointer<_NSRange> resultingRange, - ) { - return __objc_msgSend_692( - obj, - sel, - transform, - reverse, - range, - resultingRange, - ); - } - - late final __objc_msgSend_692Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - _NSRange, - ffi.Pointer<_NSRange>)>>('objc_msgSend'); - late final __objc_msgSend_692 = __objc_msgSend_692Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool, _NSRange, ffi.Pointer<_NSRange>)>(); - - ffi.Pointer _objc_msgSend_693( - ffi.Pointer obj, - ffi.Pointer sel, - int capacity, - ) { - return __objc_msgSend_693( - obj, - sel, - capacity, - ); - } - - late final __objc_msgSend_693Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_693 = __objc_msgSend_693Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_stringWithCapacity_1 = _registerName1("stringWithCapacity:"); - late final _class_NSNotification1 = _getClass1("NSNotification"); - late final _sel_object1 = _registerName1("object"); - late final _sel_initWithName_object_userInfo_1 = - _registerName1("initWithName:object:userInfo:"); - instancetype _objc_msgSend_694( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer object, - ffi.Pointer userInfo, - ) { - return __objc_msgSend_694( - obj, - sel, - name, - object, - userInfo, - ); - } - - late final __objc_msgSend_694Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_694 = __objc_msgSend_694Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_notificationWithName_object_1 = - _registerName1("notificationWithName:object:"); - late final _sel_notificationWithName_object_userInfo_1 = - _registerName1("notificationWithName:object:userInfo:"); - late final _class_NSBundle1 = _getClass1("NSBundle"); - late final _sel_mainBundle1 = _registerName1("mainBundle"); - ffi.Pointer _objc_msgSend_695( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_695( - obj, - sel, - ); - } - - late final __objc_msgSend_695Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_695 = __objc_msgSend_695Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_bundleWithPath_1 = _registerName1("bundleWithPath:"); - late final _sel_initWithPath_1 = _registerName1("initWithPath:"); - late final _sel_bundleWithURL_1 = _registerName1("bundleWithURL:"); - late final _sel_initWithURL_1 = _registerName1("initWithURL:"); - late final _sel_bundleForClass_1 = _registerName1("bundleForClass:"); - ffi.Pointer _objc_msgSend_696( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aClass, - ) { - return __objc_msgSend_696( - obj, - sel, - aClass, - ); - } - - late final __objc_msgSend_696Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_696 = __objc_msgSend_696Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_bundleWithIdentifier_1 = - _registerName1("bundleWithIdentifier:"); - ffi.Pointer _objc_msgSend_697( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer identifier, - ) { - return __objc_msgSend_697( - obj, - sel, - identifier, - ); - } - - late final __objc_msgSend_697Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_697 = __objc_msgSend_697Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_allBundles1 = _registerName1("allBundles"); - late final _sel_allFrameworks1 = _registerName1("allFrameworks"); - late final _sel_isLoaded1 = _registerName1("isLoaded"); - late final _sel_unload1 = _registerName1("unload"); - late final _sel_preflightAndReturnError_1 = - _registerName1("preflightAndReturnError:"); - late final _sel_loadAndReturnError_1 = _registerName1("loadAndReturnError:"); - late final _sel_bundleURL1 = _registerName1("bundleURL"); - late final _sel_resourceURL1 = _registerName1("resourceURL"); - late final _sel_executableURL1 = _registerName1("executableURL"); - late final _sel_URLForAuxiliaryExecutable_1 = - _registerName1("URLForAuxiliaryExecutable:"); - late final _sel_privateFrameworksURL1 = - _registerName1("privateFrameworksURL"); - late final _sel_sharedFrameworksURL1 = _registerName1("sharedFrameworksURL"); - late final _sel_sharedSupportURL1 = _registerName1("sharedSupportURL"); - late final _sel_builtInPlugInsURL1 = _registerName1("builtInPlugInsURL"); - late final _sel_appStoreReceiptURL1 = _registerName1("appStoreReceiptURL"); - late final _sel_bundlePath1 = _registerName1("bundlePath"); - late final _sel_resourcePath1 = _registerName1("resourcePath"); - late final _sel_executablePath1 = _registerName1("executablePath"); - late final _sel_pathForAuxiliaryExecutable_1 = - _registerName1("pathForAuxiliaryExecutable:"); - late final _sel_privateFrameworksPath1 = - _registerName1("privateFrameworksPath"); - late final _sel_sharedFrameworksPath1 = - _registerName1("sharedFrameworksPath"); - late final _sel_sharedSupportPath1 = _registerName1("sharedSupportPath"); - late final _sel_builtInPlugInsPath1 = _registerName1("builtInPlugInsPath"); - late final _sel_URLForResource_withExtension_subdirectory_inBundleWithURL_1 = - _registerName1( - "URLForResource:withExtension:subdirectory:inBundleWithURL:"); - ffi.Pointer _objc_msgSend_698( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer bundleURL, - ) { - return __objc_msgSend_698( - obj, - sel, - name, - ext, - subpath, - bundleURL, - ); - } - - late final __objc_msgSend_698Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_698 = __objc_msgSend_698Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLsForResourcesWithExtension_subdirectory_inBundleWithURL_1 = - _registerName1( - "URLsForResourcesWithExtension:subdirectory:inBundleWithURL:"); - ffi.Pointer _objc_msgSend_699( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer bundleURL, - ) { - return __objc_msgSend_699( - obj, - sel, - ext, - subpath, - bundleURL, - ); - } - - late final __objc_msgSend_699Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_699 = __objc_msgSend_699Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLForResource_withExtension_1 = - _registerName1("URLForResource:withExtension:"); - ffi.Pointer _objc_msgSend_700( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ) { - return __objc_msgSend_700( - obj, - sel, - name, - ext, - ); - } - - late final __objc_msgSend_700Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_700 = __objc_msgSend_700Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLForResource_withExtension_subdirectory_1 = - _registerName1("URLForResource:withExtension:subdirectory:"); - ffi.Pointer _objc_msgSend_701( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ffi.Pointer subpath, - ) { - return __objc_msgSend_701( - obj, - sel, - name, - ext, - subpath, - ); - } - - late final __objc_msgSend_701Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_701 = __objc_msgSend_701Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLForResource_withExtension_subdirectory_localization_1 = - _registerName1("URLForResource:withExtension:subdirectory:localization:"); - ffi.Pointer _objc_msgSend_702( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer localizationName, - ) { - return __objc_msgSend_702( - obj, - sel, - name, - ext, - subpath, - localizationName, - ); - } - - late final __objc_msgSend_702Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_702 = __objc_msgSend_702Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLsForResourcesWithExtension_subdirectory_1 = - _registerName1("URLsForResourcesWithExtension:subdirectory:"); - ffi.Pointer _objc_msgSend_703( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer ext, - ffi.Pointer subpath, - ) { - return __objc_msgSend_703( - obj, - sel, - ext, - subpath, - ); - } - - late final __objc_msgSend_703Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_703 = __objc_msgSend_703Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLsForResourcesWithExtension_subdirectory_localization_1 = - _registerName1( - "URLsForResourcesWithExtension:subdirectory:localization:"); - ffi.Pointer _objc_msgSend_704( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer localizationName, - ) { - return __objc_msgSend_704( - obj, - sel, - ext, - subpath, - localizationName, - ); - } - - late final __objc_msgSend_704Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_704 = __objc_msgSend_704Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_pathForResource_ofType_inDirectory_1 = - _registerName1("pathForResource:ofType:inDirectory:"); - ffi.Pointer _objc_msgSend_705( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ffi.Pointer bundlePath, - ) { - return __objc_msgSend_705( - obj, - sel, - name, - ext, - bundlePath, - ); - } - - late final __objc_msgSend_705Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_705 = __objc_msgSend_705Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_pathsForResourcesOfType_inDirectory_1 = - _registerName1("pathsForResourcesOfType:inDirectory:"); - ffi.Pointer _objc_msgSend_706( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer ext, - ffi.Pointer bundlePath, - ) { - return __objc_msgSend_706( - obj, - sel, - ext, - bundlePath, - ); - } - - late final __objc_msgSend_706Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_706 = __objc_msgSend_706Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_pathForResource_ofType_1 = - _registerName1("pathForResource:ofType:"); - ffi.Pointer _objc_msgSend_707( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ) { - return __objc_msgSend_707( - obj, - sel, - name, - ext, - ); - } - - late final __objc_msgSend_707Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_707 = __objc_msgSend_707Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_pathForResource_ofType_inDirectory_forLocalization_1 = - _registerName1("pathForResource:ofType:inDirectory:forLocalization:"); - ffi.Pointer _objc_msgSend_708( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer localizationName, - ) { - return __objc_msgSend_708( - obj, - sel, - name, - ext, - subpath, - localizationName, - ); - } - - late final __objc_msgSend_708Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_708 = __objc_msgSend_708Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_pathsForResourcesOfType_inDirectory_forLocalization_1 = - _registerName1("pathsForResourcesOfType:inDirectory:forLocalization:"); - ffi.Pointer _objc_msgSend_709( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer localizationName, - ) { - return __objc_msgSend_709( - obj, - sel, - ext, - subpath, - localizationName, - ); - } - - late final __objc_msgSend_709Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_709 = __objc_msgSend_709Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_localizedStringForKey_value_table_1 = - _registerName1("localizedStringForKey:value:table:"); - ffi.Pointer _objc_msgSend_710( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer value, - ffi.Pointer tableName, - ) { - return __objc_msgSend_710( - obj, - sel, - key, - value, - tableName, - ); - } - - late final __objc_msgSend_710Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_710 = __objc_msgSend_710Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSAttributedString1 = _getClass1("NSAttributedString"); - late final _sel_attributesAtIndex_effectiveRange_1 = - _registerName1("attributesAtIndex:effectiveRange:"); - ffi.Pointer _objc_msgSend_711( - ffi.Pointer obj, - ffi.Pointer sel, - int location, - ffi.Pointer<_NSRange> range, - ) { - return __objc_msgSend_711( - obj, - sel, - location, - range, - ); - } - - late final __objc_msgSend_711Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_NSRange>)>>('objc_msgSend'); - late final __objc_msgSend_711 = __objc_msgSend_711Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_NSRange>)>(); - - late final _sel_attribute_atIndex_effectiveRange_1 = - _registerName1("attribute:atIndex:effectiveRange:"); - ffi.Pointer _objc_msgSend_712( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrName, - int location, - ffi.Pointer<_NSRange> range, - ) { - return __objc_msgSend_712( - obj, - sel, - attrName, - location, - range, - ); - } - - late final __objc_msgSend_712Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_NSRange>)>>('objc_msgSend'); - late final __objc_msgSend_712 = __objc_msgSend_712Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer<_NSRange>)>(); - - late final _sel_attributedSubstringFromRange_1 = - _registerName1("attributedSubstringFromRange:"); - ffi.Pointer _objc_msgSend_713( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_713( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_713Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_713 = __objc_msgSend_713Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_attributesAtIndex_longestEffectiveRange_inRange_1 = - _registerName1("attributesAtIndex:longestEffectiveRange:inRange:"); - ffi.Pointer _objc_msgSend_714( - ffi.Pointer obj, - ffi.Pointer sel, - int location, - ffi.Pointer<_NSRange> range, - _NSRange rangeLimit, - ) { - return __objc_msgSend_714( - obj, - sel, - location, - range, - rangeLimit, - ); - } - - late final __objc_msgSend_714Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_NSRange>, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_714 = __objc_msgSend_714Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_NSRange>, _NSRange)>(); - - late final _sel_attribute_atIndex_longestEffectiveRange_inRange_1 = - _registerName1("attribute:atIndex:longestEffectiveRange:inRange:"); - ffi.Pointer _objc_msgSend_715( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrName, - int location, - ffi.Pointer<_NSRange> range, - _NSRange rangeLimit, - ) { - return __objc_msgSend_715( - obj, - sel, - attrName, - location, - range, - rangeLimit, - ); - } - - late final __objc_msgSend_715Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_NSRange>, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_715 = __objc_msgSend_715Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer<_NSRange>, - _NSRange)>(); - - late final _sel_isEqualToAttributedString_1 = - _registerName1("isEqualToAttributedString:"); - bool _objc_msgSend_716( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_716( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_716Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_716 = __objc_msgSend_716Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithString_attributes_1 = - _registerName1("initWithString:attributes:"); - instancetype _objc_msgSend_717( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer str, - ffi.Pointer attrs, - ) { - return __objc_msgSend_717( - obj, - sel, - str, - attrs, - ); - } - - late final __objc_msgSend_717Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_717 = __objc_msgSend_717Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithAttributedString_1 = - _registerName1("initWithAttributedString:"); - instancetype _objc_msgSend_718( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrStr, - ) { - return __objc_msgSend_718( - obj, - sel, - attrStr, - ); - } - - late final __objc_msgSend_718Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_718 = __objc_msgSend_718Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_enumerateAttributesInRange_options_usingBlock_1 = - _registerName1("enumerateAttributesInRange:options:usingBlock:"); - void _objc_msgSend_719( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange enumerationRange, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_719( - obj, - sel, - enumerationRange, - opts, - block, - ); - } - - late final __objc_msgSend_719Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_719 = __objc_msgSend_719Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateAttribute_inRange_options_usingBlock_1 = - _registerName1("enumerateAttribute:inRange:options:usingBlock:"); - void _objc_msgSend_720( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrName, - _NSRange enumerationRange, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_720( - obj, - sel, - attrName, - enumerationRange, - opts, - block, - ); - } - - late final __objc_msgSend_720Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_720 = __objc_msgSend_720Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _class_NSAttributedStringMarkdownParsingOptions1 = - _getClass1("NSAttributedStringMarkdownParsingOptions"); - late final _sel_allowsExtendedAttributes1 = - _registerName1("allowsExtendedAttributes"); - late final _sel_setAllowsExtendedAttributes_1 = - _registerName1("setAllowsExtendedAttributes:"); - late final _sel_interpretedSyntax1 = _registerName1("interpretedSyntax"); - int _objc_msgSend_721( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_721( - obj, - sel, - ); - } - - late final __objc_msgSend_721Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_721 = __objc_msgSend_721Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setInterpretedSyntax_1 = - _registerName1("setInterpretedSyntax:"); - void _objc_msgSend_722( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_722( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_722Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_722 = __objc_msgSend_722Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_failurePolicy1 = _registerName1("failurePolicy"); - int _objc_msgSend_723( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_723( - obj, - sel, - ); - } - - late final __objc_msgSend_723Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_723 = __objc_msgSend_723Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setFailurePolicy_1 = _registerName1("setFailurePolicy:"); - void _objc_msgSend_724( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_724( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_724Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_724 = __objc_msgSend_724Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_setLanguageCode_1 = _registerName1("setLanguageCode:"); - late final _sel_appliesSourcePositionAttributes1 = - _registerName1("appliesSourcePositionAttributes"); - late final _sel_setAppliesSourcePositionAttributes_1 = - _registerName1("setAppliesSourcePositionAttributes:"); - late final _sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_1 = - _registerName1( - "initWithContentsOfMarkdownFileAtURL:options:baseURL:error:"); - instancetype _objc_msgSend_725( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer markdownFile, - ffi.Pointer options, - ffi.Pointer baseURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_725( - obj, - sel, - markdownFile, - options, - baseURL, - error, - ); - } - - late final __objc_msgSend_725Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_725 = __objc_msgSend_725Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_initWithMarkdown_options_baseURL_error_1 = - _registerName1("initWithMarkdown:options:baseURL:error:"); - instancetype _objc_msgSend_726( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer markdown, - ffi.Pointer options, - ffi.Pointer baseURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_726( - obj, - sel, - markdown, - options, - baseURL, - error, - ); - } - - late final __objc_msgSend_726Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_726 = __objc_msgSend_726Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_initWithMarkdownString_options_baseURL_error_1 = - _registerName1("initWithMarkdownString:options:baseURL:error:"); - instancetype _objc_msgSend_727( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer markdownString, - ffi.Pointer options, - ffi.Pointer baseURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_727( - obj, - sel, - markdownString, - options, - baseURL, - error, - ); - } - - late final __objc_msgSend_727Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_727 = __objc_msgSend_727Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_initWithFormat_options_locale_1 = - _registerName1("initWithFormat:options:locale:"); - instancetype _objc_msgSend_728( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - int options, - ffi.Pointer locale, - ) { - return __objc_msgSend_728( - obj, - sel, - format, - options, - locale, - ); - } - - late final __objc_msgSend_728Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_728 = __objc_msgSend_728Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_initWithFormat_options_locale_arguments_1 = - _registerName1("initWithFormat:options:locale:arguments:"); - instancetype _objc_msgSend_729( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - int options, - ffi.Pointer locale, - ffi.Pointer<__va_list_tag> arguments, - ) { - return __objc_msgSend_729( - obj, - sel, - format, - options, - locale, - arguments, - ); - } - - late final __objc_msgSend_729Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); - late final __objc_msgSend_729 = __objc_msgSend_729Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>(); - - late final _sel_localizedAttributedStringWithFormat_1 = - _registerName1("localizedAttributedStringWithFormat:"); - late final _sel_localizedAttributedStringWithFormat_options_1 = - _registerName1("localizedAttributedStringWithFormat:options:"); - instancetype _objc_msgSend_730( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - int options, - ) { - return __objc_msgSend_730( - obj, - sel, - format, - options, - ); - } - - late final __objc_msgSend_730Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_730 = __objc_msgSend_730Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_initWithFormat_options_locale_context_1 = - _registerName1("initWithFormat:options:locale:context:"); - instancetype _objc_msgSend_731( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - int options, - ffi.Pointer locale, - ffi.Pointer context, - ) { - return __objc_msgSend_731( - obj, - sel, - format, - options, - locale, - context, - ); - } - - late final __objc_msgSend_731Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_731 = __objc_msgSend_731Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithFormat_options_locale_context_arguments_1 = - _registerName1("initWithFormat:options:locale:context:arguments:"); - instancetype _objc_msgSend_732( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - int options, - ffi.Pointer locale, - ffi.Pointer context, - ffi.Pointer<__va_list_tag> arguments, - ) { - return __objc_msgSend_732( - obj, - sel, - format, - options, - locale, - context, - arguments, - ); - } - - late final __objc_msgSend_732Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); - late final __objc_msgSend_732 = __objc_msgSend_732Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>(); - - late final _sel_localizedAttributedStringWithFormat_context_1 = - _registerName1("localizedAttributedStringWithFormat:context:"); - instancetype _objc_msgSend_733( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer context, - ) { - return __objc_msgSend_733( - obj, - sel, - format, - context, - ); - } - - late final __objc_msgSend_733Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_733 = __objc_msgSend_733Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_localizedAttributedStringWithFormat_options_context_1 = - _registerName1("localizedAttributedStringWithFormat:options:context:"); - instancetype _objc_msgSend_734( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - int options, - ffi.Pointer context, - ) { - return __objc_msgSend_734( - obj, - sel, - format, - options, - context, - ); - } - - late final __objc_msgSend_734Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_734 = __objc_msgSend_734Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_attributedStringByInflectingString1 = - _registerName1("attributedStringByInflectingString"); - ffi.Pointer _objc_msgSend_735( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_735( - obj, - sel, - ); - } - - late final __objc_msgSend_735Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_735 = __objc_msgSend_735Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_localizedAttributedStringForKey_value_table_1 = - _registerName1("localizedAttributedStringForKey:value:table:"); - ffi.Pointer _objc_msgSend_736( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer value, - ffi.Pointer tableName, - ) { - return __objc_msgSend_736( - obj, - sel, - key, - value, - tableName, - ); - } - - late final __objc_msgSend_736Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_736 = __objc_msgSend_736Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_bundleIdentifier1 = _registerName1("bundleIdentifier"); - late final _sel_infoDictionary1 = _registerName1("infoDictionary"); - late final _sel_localizedInfoDictionary1 = - _registerName1("localizedInfoDictionary"); - late final _sel_objectForInfoDictionaryKey_1 = - _registerName1("objectForInfoDictionaryKey:"); - late final _sel_classNamed_1 = _registerName1("classNamed:"); - late final _sel_principalClass1 = _registerName1("principalClass"); - late final _sel_preferredLocalizations1 = - _registerName1("preferredLocalizations"); - late final _sel_localizations1 = _registerName1("localizations"); - late final _sel_developmentLocalization1 = - _registerName1("developmentLocalization"); - late final _sel_preferredLocalizationsFromArray_1 = - _registerName1("preferredLocalizationsFromArray:"); - late final _sel_preferredLocalizationsFromArray_forPreferences_1 = - _registerName1("preferredLocalizationsFromArray:forPreferences:"); - ffi.Pointer _objc_msgSend_737( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer localizationsArray, - ffi.Pointer preferencesArray, - ) { - return __objc_msgSend_737( - obj, - sel, - localizationsArray, - preferencesArray, - ); - } - - late final __objc_msgSend_737Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_737 = __objc_msgSend_737Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_executableArchitectures1 = - _registerName1("executableArchitectures"); - late final _sel_setPreservationPriority_forTags_1 = - _registerName1("setPreservationPriority:forTags:"); - void _objc_msgSend_738( - ffi.Pointer obj, - ffi.Pointer sel, - double priority, - ffi.Pointer tags, - ) { - return __objc_msgSend_738( - obj, - sel, - priority, - tags, - ); - } - - late final __objc_msgSend_738Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Double, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_738 = __objc_msgSend_738Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, double, - ffi.Pointer)>(); - - late final _sel_preservationPriorityForTag_1 = - _registerName1("preservationPriorityForTag:"); - late final _class_NSMutableAttributedString1 = - _getClass1("NSMutableAttributedString"); - late final _sel_setAttributes_range_1 = - _registerName1("setAttributes:range:"); - void _objc_msgSend_739( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrs, - _NSRange range, - ) { - return __objc_msgSend_739( - obj, - sel, - attrs, - range, - ); - } - - late final __objc_msgSend_739Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_739 = __objc_msgSend_739Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - late final _sel_mutableString1 = _registerName1("mutableString"); - ffi.Pointer _objc_msgSend_740( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_740( - obj, - sel, - ); - } - - late final __objc_msgSend_740Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_740 = __objc_msgSend_740Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addAttribute_value_range_1 = - _registerName1("addAttribute:value:range:"); - void _objc_msgSend_741( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer value, - _NSRange range, - ) { - return __objc_msgSend_741( - obj, - sel, - name, - value, - range, - ); - } - - late final __objc_msgSend_741Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_741 = __objc_msgSend_741Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_addAttributes_range_1 = - _registerName1("addAttributes:range:"); - void _objc_msgSend_742( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrs, - _NSRange range, - ) { - return __objc_msgSend_742( - obj, - sel, - attrs, - range, - ); - } - - late final __objc_msgSend_742Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_742 = __objc_msgSend_742Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - late final _sel_removeAttribute_range_1 = - _registerName1("removeAttribute:range:"); - void _objc_msgSend_743( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - _NSRange range, - ) { - return __objc_msgSend_743( - obj, - sel, - name, - range, - ); - } - - late final __objc_msgSend_743Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_743 = __objc_msgSend_743Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - late final _sel_replaceCharactersInRange_withAttributedString_1 = - _registerName1("replaceCharactersInRange:withAttributedString:"); - void _objc_msgSend_744( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer attrString, - ) { - return __objc_msgSend_744( - obj, - sel, - range, - attrString, - ); - } - - late final __objc_msgSend_744Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_744 = __objc_msgSend_744Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - ffi.Pointer)>(); - - late final _sel_insertAttributedString_atIndex_1 = - _registerName1("insertAttributedString:atIndex:"); - void _objc_msgSend_745( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrString, - int loc, - ) { - return __objc_msgSend_745( - obj, - sel, - attrString, - loc, - ); - } - - late final __objc_msgSend_745Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_745 = __objc_msgSend_745Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_appendAttributedString_1 = - _registerName1("appendAttributedString:"); - void _objc_msgSend_746( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrString, - ) { - return __objc_msgSend_746( - obj, - sel, - attrString, - ); - } - - late final __objc_msgSend_746Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_746 = __objc_msgSend_746Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setAttributedString_1 = - _registerName1("setAttributedString:"); - late final _sel_beginEditing1 = _registerName1("beginEditing"); - late final _sel_endEditing1 = _registerName1("endEditing"); - late final _sel_appendLocalizedFormat_1 = - _registerName1("appendLocalizedFormat:"); - late final _class_NSDateFormatter1 = _getClass1("NSDateFormatter"); - late final _class_NSFormatter1 = _getClass1("NSFormatter"); - late final _sel_stringForObjectValue_1 = - _registerName1("stringForObjectValue:"); - ffi.Pointer _objc_msgSend_747( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer obj1, - ) { - return __objc_msgSend_747( - obj, - sel, - obj1, - ); - } - - late final __objc_msgSend_747Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_747 = __objc_msgSend_747Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_attributedStringForObjectValue_withDefaultAttributes_1 = - _registerName1("attributedStringForObjectValue:withDefaultAttributes:"); - ffi.Pointer _objc_msgSend_748( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer obj1, - ffi.Pointer attrs, - ) { - return __objc_msgSend_748( - obj, - sel, - obj1, - attrs, - ); - } - - late final __objc_msgSend_748Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_748 = __objc_msgSend_748Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_editingStringForObjectValue_1 = - _registerName1("editingStringForObjectValue:"); - late final _sel_getObjectValue_forString_errorDescription_1 = - _registerName1("getObjectValue:forString:errorDescription:"); - bool _objc_msgSend_749( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> obj1, - ffi.Pointer string, - ffi.Pointer> error, - ) { - return __objc_msgSend_749( - obj, - sel, - obj1, - string, - error, - ); - } - - late final __objc_msgSend_749Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_749 = __objc_msgSend_749Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_isPartialStringValid_newEditingString_errorDescription_1 = - _registerName1("isPartialStringValid:newEditingString:errorDescription:"); - bool _objc_msgSend_750( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer partialString, - ffi.Pointer> newString, - ffi.Pointer> error, - ) { - return __objc_msgSend_750( - obj, - sel, - partialString, - newString, - error, - ); - } - - late final __objc_msgSend_750Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_750 = __objc_msgSend_750Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_1 = - _registerName1( - "isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:"); - bool _objc_msgSend_751( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> partialStringPtr, - ffi.Pointer<_NSRange> proposedSelRangePtr, - ffi.Pointer origString, - _NSRange origSelRange, - ffi.Pointer> error, - ) { - return __objc_msgSend_751( - obj, - sel, - partialStringPtr, - proposedSelRangePtr, - origString, - origSelRange, - error, - ); - } - - late final __objc_msgSend_751Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer<_NSRange>, - ffi.Pointer, - _NSRange, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_751 = __objc_msgSend_751Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer<_NSRange>, - ffi.Pointer, - _NSRange, - ffi.Pointer>)>(); - - late final _sel_formattingContext1 = _registerName1("formattingContext"); - int _objc_msgSend_752( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_752( - obj, - sel, - ); - } - - late final __objc_msgSend_752Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_752 = __objc_msgSend_752Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setFormattingContext_1 = - _registerName1("setFormattingContext:"); - void _objc_msgSend_753( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_753( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_753Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_753 = __objc_msgSend_753Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_getObjectValue_forString_range_error_1 = - _registerName1("getObjectValue:forString:range:error:"); - bool _objc_msgSend_754( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> obj1, - ffi.Pointer string, - ffi.Pointer<_NSRange> rangep, - ffi.Pointer> error, - ) { - return __objc_msgSend_754( - obj, - sel, - obj1, - string, - rangep, - error, - ); - } - - late final __objc_msgSend_754Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer<_NSRange>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_754 = __objc_msgSend_754Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer<_NSRange>, - ffi.Pointer>)>(); - - late final _sel_stringFromDate_1 = _registerName1("stringFromDate:"); - ffi.Pointer _objc_msgSend_755( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - ) { - return __objc_msgSend_755( - obj, - sel, - date, - ); - } - - late final __objc_msgSend_755Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_755 = __objc_msgSend_755Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dateFromString_1 = _registerName1("dateFromString:"); - late final _sel_localizedStringFromDate_dateStyle_timeStyle_1 = - _registerName1("localizedStringFromDate:dateStyle:timeStyle:"); - ffi.Pointer _objc_msgSend_756( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - int dstyle, - int tstyle, - ) { - return __objc_msgSend_756( - obj, - sel, - date, - dstyle, - tstyle, - ); - } - - late final __objc_msgSend_756Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_756 = __objc_msgSend_756Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, int)>(); - - late final _sel_dateFormatFromTemplate_options_locale_1 = - _registerName1("dateFormatFromTemplate:options:locale:"); - ffi.Pointer _objc_msgSend_757( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer tmplate, - int opts, - ffi.Pointer locale, - ) { - return __objc_msgSend_757( - obj, - sel, - tmplate, - opts, - locale, - ); - } - - late final __objc_msgSend_757Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_757 = __objc_msgSend_757Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer)>(); - - late final _sel_defaultFormatterBehavior1 = - _registerName1("defaultFormatterBehavior"); - int _objc_msgSend_758( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_758( - obj, - sel, - ); - } - - late final __objc_msgSend_758Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_758 = __objc_msgSend_758Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDefaultFormatterBehavior_1 = - _registerName1("setDefaultFormatterBehavior:"); - void _objc_msgSend_759( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_759( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_759Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_759 = __objc_msgSend_759Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_setLocalizedDateFormatFromTemplate_1 = - _registerName1("setLocalizedDateFormatFromTemplate:"); - late final _sel_dateFormat1 = _registerName1("dateFormat"); - late final _sel_setDateFormat_1 = _registerName1("setDateFormat:"); - late final _sel_dateStyle1 = _registerName1("dateStyle"); - int _objc_msgSend_760( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_760( - obj, - sel, - ); - } - - late final __objc_msgSend_760Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_760 = __objc_msgSend_760Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDateStyle_1 = _registerName1("setDateStyle:"); - void _objc_msgSend_761( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_761( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_761Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_761 = __objc_msgSend_761Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_timeStyle1 = _registerName1("timeStyle"); - late final _sel_setTimeStyle_1 = _registerName1("setTimeStyle:"); - late final _sel_locale1 = _registerName1("locale"); - late final _sel_setLocale_1 = _registerName1("setLocale:"); - void _objc_msgSend_762( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_762( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_762Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_762 = __objc_msgSend_762Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_generatesCalendarDates1 = - _registerName1("generatesCalendarDates"); - late final _sel_setGeneratesCalendarDates_1 = - _registerName1("setGeneratesCalendarDates:"); - late final _sel_formatterBehavior1 = _registerName1("formatterBehavior"); - late final _sel_setFormatterBehavior_1 = - _registerName1("setFormatterBehavior:"); - late final _class_NSCalendar1 = _getClass1("NSCalendar"); - late final _sel_currentCalendar1 = _registerName1("currentCalendar"); - ffi.Pointer _objc_msgSend_763( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_763( - obj, - sel, - ); - } - - late final __objc_msgSend_763Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_763 = __objc_msgSend_763Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_autoupdatingCurrentCalendar1 = - _registerName1("autoupdatingCurrentCalendar"); - late final _sel_calendarWithIdentifier_1 = - _registerName1("calendarWithIdentifier:"); - ffi.Pointer _objc_msgSend_764( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer calendarIdentifierConstant, - ) { - return __objc_msgSend_764( - obj, - sel, - calendarIdentifierConstant, - ); - } - - late final __objc_msgSend_764Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_764 = __objc_msgSend_764Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithCalendarIdentifier_1 = - _registerName1("initWithCalendarIdentifier:"); - ffi.Pointer _objc_msgSend_765( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_765( - obj, - sel, - ); - } - - late final __objc_msgSend_765Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_765 = __objc_msgSend_765Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_766( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_766( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_766Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_766 = __objc_msgSend_766Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_firstWeekday1 = _registerName1("firstWeekday"); - late final _sel_setFirstWeekday_1 = _registerName1("setFirstWeekday:"); - late final _sel_minimumDaysInFirstWeek1 = - _registerName1("minimumDaysInFirstWeek"); - late final _sel_setMinimumDaysInFirstWeek_1 = - _registerName1("setMinimumDaysInFirstWeek:"); - late final _sel_eraSymbols1 = _registerName1("eraSymbols"); - late final _sel_longEraSymbols1 = _registerName1("longEraSymbols"); - late final _sel_monthSymbols1 = _registerName1("monthSymbols"); - late final _sel_shortMonthSymbols1 = _registerName1("shortMonthSymbols"); - late final _sel_veryShortMonthSymbols1 = - _registerName1("veryShortMonthSymbols"); - late final _sel_standaloneMonthSymbols1 = - _registerName1("standaloneMonthSymbols"); - late final _sel_shortStandaloneMonthSymbols1 = - _registerName1("shortStandaloneMonthSymbols"); - late final _sel_veryShortStandaloneMonthSymbols1 = - _registerName1("veryShortStandaloneMonthSymbols"); - late final _sel_weekdaySymbols1 = _registerName1("weekdaySymbols"); - late final _sel_shortWeekdaySymbols1 = _registerName1("shortWeekdaySymbols"); - late final _sel_veryShortWeekdaySymbols1 = - _registerName1("veryShortWeekdaySymbols"); - late final _sel_standaloneWeekdaySymbols1 = - _registerName1("standaloneWeekdaySymbols"); - late final _sel_shortStandaloneWeekdaySymbols1 = - _registerName1("shortStandaloneWeekdaySymbols"); - late final _sel_veryShortStandaloneWeekdaySymbols1 = - _registerName1("veryShortStandaloneWeekdaySymbols"); - late final _sel_quarterSymbols1 = _registerName1("quarterSymbols"); - late final _sel_shortQuarterSymbols1 = _registerName1("shortQuarterSymbols"); - late final _sel_standaloneQuarterSymbols1 = - _registerName1("standaloneQuarterSymbols"); - late final _sel_shortStandaloneQuarterSymbols1 = - _registerName1("shortStandaloneQuarterSymbols"); - late final _sel_AMSymbol1 = _registerName1("AMSymbol"); - late final _sel_PMSymbol1 = _registerName1("PMSymbol"); - late final _sel_minimumRangeOfUnit_1 = _registerName1("minimumRangeOfUnit:"); - _NSRange _objc_msgSend_767( - ffi.Pointer obj, - ffi.Pointer sel, - int unit, - ) { - return __objc_msgSend_767( - obj, - sel, - unit, - ); - } - - late final __objc_msgSend_767Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_767 = __objc_msgSend_767Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, int)>(); - - void _objc_msgSend_767_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - int unit, - ) { - return __objc_msgSend_767_stret( - stret, - obj, - sel, - unit, - ); - } - - late final __objc_msgSend_767_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend_stret'); - late final __objc_msgSend_767_stret = __objc_msgSend_767_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_maximumRangeOfUnit_1 = _registerName1("maximumRangeOfUnit:"); - late final _sel_rangeOfUnit_inUnit_forDate_1 = - _registerName1("rangeOfUnit:inUnit:forDate:"); - _NSRange _objc_msgSend_768( - ffi.Pointer obj, - ffi.Pointer sel, - int smaller, - int larger, - ffi.Pointer date, - ) { - return __objc_msgSend_768( - obj, - sel, - smaller, - larger, - date, - ); - } - - late final __objc_msgSend_768Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Int32, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_768 = __objc_msgSend_768Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, int, int, - ffi.Pointer)>(); - - void _objc_msgSend_768_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - int smaller, - int larger, - ffi.Pointer date, - ) { - return __objc_msgSend_768_stret( - stret, - obj, - sel, - smaller, - larger, - date, - ); - } - - late final __objc_msgSend_768_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_768_stret = __objc_msgSend_768_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, int, int, ffi.Pointer)>(); - - late final _sel_ordinalityOfUnit_inUnit_forDate_1 = - _registerName1("ordinalityOfUnit:inUnit:forDate:"); - int _objc_msgSend_769( - ffi.Pointer obj, - ffi.Pointer sel, - int smaller, - int larger, - ffi.Pointer date, - ) { - return __objc_msgSend_769( - obj, - sel, - smaller, - larger, - date, - ); - } - - late final __objc_msgSend_769Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_769 = __objc_msgSend_769Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int, int, - ffi.Pointer)>(); - - late final _sel_rangeOfUnit_startDate_interval_forDate_1 = - _registerName1("rangeOfUnit:startDate:interval:forDate:"); - bool _objc_msgSend_770( - ffi.Pointer obj, - ffi.Pointer sel, - int unit, - ffi.Pointer> datep, - ffi.Pointer tip, - ffi.Pointer date, - ) { - return __objc_msgSend_770( - obj, - sel, - unit, - datep, - tip, - date, - ); - } - - late final __objc_msgSend_770Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_770 = __objc_msgSend_770Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSDateComponents1 = _getClass1("NSDateComponents"); - late final _sel_calendar1 = _registerName1("calendar"); - ffi.Pointer _objc_msgSend_771( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_771( - obj, - sel, - ); - } - - late final __objc_msgSend_771Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_771 = __objc_msgSend_771Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setCalendar_1 = _registerName1("setCalendar:"); - void _objc_msgSend_772( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_772( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_772Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_772 = __objc_msgSend_772Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - ffi.Pointer _objc_msgSend_773( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_773( - obj, - sel, - ); - } - - late final __objc_msgSend_773Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_773 = __objc_msgSend_773Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_774( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_774( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_774Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_774 = __objc_msgSend_774Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_era1 = _registerName1("era"); - late final _sel_setEra_1 = _registerName1("setEra:"); - late final _sel_year1 = _registerName1("year"); - late final _sel_setYear_1 = _registerName1("setYear:"); - late final _sel_month1 = _registerName1("month"); - late final _sel_setMonth_1 = _registerName1("setMonth:"); - late final _sel_day1 = _registerName1("day"); - late final _sel_setDay_1 = _registerName1("setDay:"); - late final _sel_hour1 = _registerName1("hour"); - late final _sel_setHour_1 = _registerName1("setHour:"); - late final _sel_minute1 = _registerName1("minute"); - late final _sel_setMinute_1 = _registerName1("setMinute:"); - late final _sel_second1 = _registerName1("second"); - late final _sel_setSecond_1 = _registerName1("setSecond:"); - late final _sel_nanosecond1 = _registerName1("nanosecond"); - late final _sel_setNanosecond_1 = _registerName1("setNanosecond:"); - late final _sel_weekday1 = _registerName1("weekday"); - late final _sel_setWeekday_1 = _registerName1("setWeekday:"); - late final _sel_weekdayOrdinal1 = _registerName1("weekdayOrdinal"); - late final _sel_setWeekdayOrdinal_1 = _registerName1("setWeekdayOrdinal:"); - late final _sel_quarter1 = _registerName1("quarter"); - late final _sel_setQuarter_1 = _registerName1("setQuarter:"); - late final _sel_weekOfMonth1 = _registerName1("weekOfMonth"); - late final _sel_setWeekOfMonth_1 = _registerName1("setWeekOfMonth:"); - late final _sel_weekOfYear1 = _registerName1("weekOfYear"); - late final _sel_setWeekOfYear_1 = _registerName1("setWeekOfYear:"); - late final _sel_yearForWeekOfYear1 = _registerName1("yearForWeekOfYear"); - late final _sel_setYearForWeekOfYear_1 = - _registerName1("setYearForWeekOfYear:"); - late final _sel_isLeapMonth1 = _registerName1("isLeapMonth"); - late final _sel_setLeapMonth_1 = _registerName1("setLeapMonth:"); - late final _sel_week1 = _registerName1("week"); - late final _sel_setWeek_1 = _registerName1("setWeek:"); - late final _sel_setValue_forComponent_1 = - _registerName1("setValue:forComponent:"); - void _objc_msgSend_775( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - int unit, - ) { - return __objc_msgSend_775( - obj, - sel, - value, - unit, - ); - } - - late final __objc_msgSend_775Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Long, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_775 = __objc_msgSend_775Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, int)>(); - - late final _sel_valueForComponent_1 = _registerName1("valueForComponent:"); - int _objc_msgSend_776( - ffi.Pointer obj, - ffi.Pointer sel, - int unit, - ) { - return __objc_msgSend_776( - obj, - sel, - unit, - ); - } - - late final __objc_msgSend_776Ptr = _lookup< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_776 = __objc_msgSend_776Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_isValidDate1 = _registerName1("isValidDate"); - late final _sel_isValidDateInCalendar_1 = - _registerName1("isValidDateInCalendar:"); - bool _objc_msgSend_777( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer calendar, - ) { - return __objc_msgSend_777( - obj, - sel, - calendar, - ); - } - - late final __objc_msgSend_777Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_777 = __objc_msgSend_777Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_dateFromComponents_1 = _registerName1("dateFromComponents:"); - ffi.Pointer _objc_msgSend_778( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer comps, - ) { - return __objc_msgSend_778( - obj, - sel, - comps, - ); - } - - late final __objc_msgSend_778Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_778 = __objc_msgSend_778Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_components_fromDate_1 = - _registerName1("components:fromDate:"); - ffi.Pointer _objc_msgSend_779( - ffi.Pointer obj, - ffi.Pointer sel, - int unitFlags, - ffi.Pointer date, - ) { - return __objc_msgSend_779( - obj, - sel, - unitFlags, - date, - ); - } - - late final __objc_msgSend_779Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_779 = __objc_msgSend_779Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_dateByAddingComponents_toDate_options_1 = - _registerName1("dateByAddingComponents:toDate:options:"); - ffi.Pointer _objc_msgSend_780( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer comps, - ffi.Pointer date, - int opts, - ) { - return __objc_msgSend_780( - obj, - sel, - comps, - date, - opts, - ); - } - - late final __objc_msgSend_780Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_780 = __objc_msgSend_780Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _sel_components_fromDate_toDate_options_1 = - _registerName1("components:fromDate:toDate:options:"); - ffi.Pointer _objc_msgSend_781( - ffi.Pointer obj, - ffi.Pointer sel, - int unitFlags, - ffi.Pointer startingDate, - ffi.Pointer resultDate, - int opts, - ) { - return __objc_msgSend_781( - obj, - sel, - unitFlags, - startingDate, - resultDate, - opts, - ); - } - - late final __objc_msgSend_781Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_781 = __objc_msgSend_781Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _sel_getEra_year_month_day_fromDate_1 = - _registerName1("getEra:year:month:day:fromDate:"); - void _objc_msgSend_782( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer eraValuePointer, - ffi.Pointer yearValuePointer, - ffi.Pointer monthValuePointer, - ffi.Pointer dayValuePointer, - ffi.Pointer date, - ) { - return __objc_msgSend_782( - obj, - sel, - eraValuePointer, - yearValuePointer, - monthValuePointer, - dayValuePointer, - date, - ); - } - - late final __objc_msgSend_782Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_782 = __objc_msgSend_782Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_1 = - _registerName1("getEra:yearForWeekOfYear:weekOfYear:weekday:fromDate:"); - late final _sel_getHour_minute_second_nanosecond_fromDate_1 = - _registerName1("getHour:minute:second:nanosecond:fromDate:"); - late final _sel_component_fromDate_1 = _registerName1("component:fromDate:"); - int _objc_msgSend_783( - ffi.Pointer obj, - ffi.Pointer sel, - int unit, - ffi.Pointer date, - ) { - return __objc_msgSend_783( - obj, - sel, - unit, - date, - ); - } - - late final __objc_msgSend_783Ptr = _lookup< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_783 = __objc_msgSend_783Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_dateWithEra_year_month_day_hour_minute_second_nanosecond_1 = - _registerName1( - "dateWithEra:year:month:day:hour:minute:second:nanosecond:"); - ffi.Pointer _objc_msgSend_784( - ffi.Pointer obj, - ffi.Pointer sel, - int eraValue, - int yearValue, - int monthValue, - int dayValue, - int hourValue, - int minuteValue, - int secondValue, - int nanosecondValue, - ) { - return __objc_msgSend_784( - obj, - sel, - eraValue, - yearValue, - monthValue, - dayValue, - hourValue, - minuteValue, - secondValue, - nanosecondValue, - ); - } - - late final __objc_msgSend_784Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_784 = __objc_msgSend_784Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, int, int, int, int, int, int, int)>(); - - late final _sel_dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_1 = - _registerName1( - "dateWithEra:yearForWeekOfYear:weekOfYear:weekday:hour:minute:second:nanosecond:"); - late final _sel_startOfDayForDate_1 = _registerName1("startOfDayForDate:"); - late final _sel_componentsInTimeZone_fromDate_1 = - _registerName1("componentsInTimeZone:fromDate:"); - ffi.Pointer _objc_msgSend_785( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer timezone, - ffi.Pointer date, - ) { - return __objc_msgSend_785( - obj, - sel, - timezone, - date, - ); - } - - late final __objc_msgSend_785Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_785 = __objc_msgSend_785Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_compareDate_toDate_toUnitGranularity_1 = - _registerName1("compareDate:toDate:toUnitGranularity:"); - int _objc_msgSend_786( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date1, - ffi.Pointer date2, - int unit, - ) { - return __objc_msgSend_786( - obj, - sel, - date1, - date2, - unit, - ); - } - - late final __objc_msgSend_786Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_786 = __objc_msgSend_786Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_isDate_equalToDate_toUnitGranularity_1 = - _registerName1("isDate:equalToDate:toUnitGranularity:"); - bool _objc_msgSend_787( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date1, - ffi.Pointer date2, - int unit, - ) { - return __objc_msgSend_787( - obj, - sel, - date1, - date2, - unit, - ); - } - - late final __objc_msgSend_787Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_787 = __objc_msgSend_787Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_isDate_inSameDayAsDate_1 = - _registerName1("isDate:inSameDayAsDate:"); - bool _objc_msgSend_788( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date1, - ffi.Pointer date2, - ) { - return __objc_msgSend_788( - obj, - sel, - date1, - date2, - ); - } - - late final __objc_msgSend_788Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_788 = __objc_msgSend_788Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isDateInToday_1 = _registerName1("isDateInToday:"); - late final _sel_isDateInYesterday_1 = _registerName1("isDateInYesterday:"); - late final _sel_isDateInTomorrow_1 = _registerName1("isDateInTomorrow:"); - late final _sel_isDateInWeekend_1 = _registerName1("isDateInWeekend:"); - late final _sel_rangeOfWeekendStartDate_interval_containingDate_1 = - _registerName1("rangeOfWeekendStartDate:interval:containingDate:"); - bool _objc_msgSend_789( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> datep, - ffi.Pointer tip, - ffi.Pointer date, - ) { - return __objc_msgSend_789( - obj, - sel, - datep, - tip, - date, - ); - } - - late final __objc_msgSend_789Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_789 = __objc_msgSend_789Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_nextWeekendStartDate_interval_options_afterDate_1 = - _registerName1("nextWeekendStartDate:interval:options:afterDate:"); - bool _objc_msgSend_790( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> datep, - ffi.Pointer tip, - int options, - ffi.Pointer date, - ) { - return __objc_msgSend_790( - obj, - sel, - datep, - tip, - options, - date, - ); - } - - late final __objc_msgSend_790Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_790 = __objc_msgSend_790Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - int, - ffi.Pointer)>(); - - late final _sel_components_fromDateComponents_toDateComponents_options_1 = - _registerName1("components:fromDateComponents:toDateComponents:options:"); - ffi.Pointer _objc_msgSend_791( - ffi.Pointer obj, - ffi.Pointer sel, - int unitFlags, - ffi.Pointer startingDateComp, - ffi.Pointer resultDateComp, - int options, - ) { - return __objc_msgSend_791( - obj, - sel, - unitFlags, - startingDateComp, - resultDateComp, - options, - ); - } - - late final __objc_msgSend_791Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_791 = __objc_msgSend_791Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _sel_dateByAddingUnit_value_toDate_options_1 = - _registerName1("dateByAddingUnit:value:toDate:options:"); - ffi.Pointer _objc_msgSend_792( - ffi.Pointer obj, - ffi.Pointer sel, - int unit, - int value, - ffi.Pointer date, - int options, - ) { - return __objc_msgSend_792( - obj, - sel, - unit, - value, - date, - options, - ); - } - - late final __objc_msgSend_792Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Long, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_792 = __objc_msgSend_792Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, int, ffi.Pointer, int)>(); - - late final _sel_enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_1 = - _registerName1( - "enumerateDatesStartingAfterDate:matchingComponents:options:usingBlock:"); - void _objc_msgSend_793( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer start, - ffi.Pointer comps, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_793( - obj, - sel, - start, - comps, - opts, - block, - ); - } - - late final __objc_msgSend_793Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_793 = __objc_msgSend_793Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_nextDateAfterDate_matchingComponents_options_1 = - _registerName1("nextDateAfterDate:matchingComponents:options:"); - ffi.Pointer _objc_msgSend_794( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - ffi.Pointer comps, - int options, - ) { - return __objc_msgSend_794( - obj, - sel, - date, - comps, - options, - ); - } - - late final __objc_msgSend_794Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_794 = __objc_msgSend_794Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _sel_nextDateAfterDate_matchingUnit_value_options_1 = - _registerName1("nextDateAfterDate:matchingUnit:value:options:"); - ffi.Pointer _objc_msgSend_795( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - int unit, - int value, - int options, - ) { - return __objc_msgSend_795( - obj, - sel, - date, - unit, - value, - options, - ); - } - - late final __objc_msgSend_795Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Long, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_795 = __objc_msgSend_795Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, int, int)>(); - - late final _sel_nextDateAfterDate_matchingHour_minute_second_options_1 = - _registerName1("nextDateAfterDate:matchingHour:minute:second:options:"); - ffi.Pointer _objc_msgSend_796( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - int hourValue, - int minuteValue, - int secondValue, - int options, - ) { - return __objc_msgSend_796( - obj, - sel, - date, - hourValue, - minuteValue, - secondValue, - options, - ); - } - - late final __objc_msgSend_796Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_796 = __objc_msgSend_796Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, int, int, int)>(); - - late final _sel_dateBySettingUnit_value_ofDate_options_1 = - _registerName1("dateBySettingUnit:value:ofDate:options:"); - late final _sel_dateBySettingHour_minute_second_ofDate_options_1 = - _registerName1("dateBySettingHour:minute:second:ofDate:options:"); - ffi.Pointer _objc_msgSend_797( - ffi.Pointer obj, - ffi.Pointer sel, - int h, - int m, - int s, - ffi.Pointer date, - int opts, - ) { - return __objc_msgSend_797( - obj, - sel, - h, - m, - s, - date, - opts, - ); - } - - late final __objc_msgSend_797Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_797 = __objc_msgSend_797Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, int, int, ffi.Pointer, int)>(); - - late final _sel_date_matchesComponents_1 = - _registerName1("date:matchesComponents:"); - bool _objc_msgSend_798( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - ffi.Pointer components, - ) { - return __objc_msgSend_798( - obj, - sel, - date, - components, - ); - } - - late final __objc_msgSend_798Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_798 = __objc_msgSend_798Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_799( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_799( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_799Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_799 = __objc_msgSend_799Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isLenient1 = _registerName1("isLenient"); - late final _sel_setLenient_1 = _registerName1("setLenient:"); - late final _sel_twoDigitStartDate1 = _registerName1("twoDigitStartDate"); - late final _sel_setTwoDigitStartDate_1 = - _registerName1("setTwoDigitStartDate:"); - void _objc_msgSend_800( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_800( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_800Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_800 = __objc_msgSend_800Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_defaultDate1 = _registerName1("defaultDate"); - late final _sel_setDefaultDate_1 = _registerName1("setDefaultDate:"); - late final _sel_setEraSymbols_1 = _registerName1("setEraSymbols:"); - void _objc_msgSend_801( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_801( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_801Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_801 = __objc_msgSend_801Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setMonthSymbols_1 = _registerName1("setMonthSymbols:"); - late final _sel_setShortMonthSymbols_1 = - _registerName1("setShortMonthSymbols:"); - late final _sel_setWeekdaySymbols_1 = _registerName1("setWeekdaySymbols:"); - late final _sel_setShortWeekdaySymbols_1 = - _registerName1("setShortWeekdaySymbols:"); - late final _sel_setAMSymbol_1 = _registerName1("setAMSymbol:"); - late final _sel_setPMSymbol_1 = _registerName1("setPMSymbol:"); - late final _sel_setLongEraSymbols_1 = _registerName1("setLongEraSymbols:"); - late final _sel_setVeryShortMonthSymbols_1 = - _registerName1("setVeryShortMonthSymbols:"); - late final _sel_setStandaloneMonthSymbols_1 = - _registerName1("setStandaloneMonthSymbols:"); - late final _sel_setShortStandaloneMonthSymbols_1 = - _registerName1("setShortStandaloneMonthSymbols:"); - late final _sel_setVeryShortStandaloneMonthSymbols_1 = - _registerName1("setVeryShortStandaloneMonthSymbols:"); - late final _sel_setVeryShortWeekdaySymbols_1 = - _registerName1("setVeryShortWeekdaySymbols:"); - late final _sel_setStandaloneWeekdaySymbols_1 = - _registerName1("setStandaloneWeekdaySymbols:"); - late final _sel_setShortStandaloneWeekdaySymbols_1 = - _registerName1("setShortStandaloneWeekdaySymbols:"); - late final _sel_setVeryShortStandaloneWeekdaySymbols_1 = - _registerName1("setVeryShortStandaloneWeekdaySymbols:"); - late final _sel_setQuarterSymbols_1 = _registerName1("setQuarterSymbols:"); - late final _sel_setShortQuarterSymbols_1 = - _registerName1("setShortQuarterSymbols:"); - late final _sel_setStandaloneQuarterSymbols_1 = - _registerName1("setStandaloneQuarterSymbols:"); - late final _sel_setShortStandaloneQuarterSymbols_1 = - _registerName1("setShortStandaloneQuarterSymbols:"); - late final _sel_gregorianStartDate1 = _registerName1("gregorianStartDate"); - late final _sel_setGregorianStartDate_1 = - _registerName1("setGregorianStartDate:"); - late final _sel_doesRelativeDateFormatting1 = - _registerName1("doesRelativeDateFormatting"); - late final _sel_setDoesRelativeDateFormatting_1 = - _registerName1("setDoesRelativeDateFormatting:"); - late final _sel_initWithDateFormat_allowNaturalLanguage_1 = - _registerName1("initWithDateFormat:allowNaturalLanguage:"); - late final _sel_allowsNaturalLanguage1 = - _registerName1("allowsNaturalLanguage"); - late final _class_NSNumberFormatter1 = _getClass1("NSNumberFormatter"); - late final _sel_stringFromNumber_1 = _registerName1("stringFromNumber:"); - ffi.Pointer _objc_msgSend_802( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer number, - ) { - return __objc_msgSend_802( - obj, - sel, - number, - ); - } - - late final __objc_msgSend_802Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_802 = __objc_msgSend_802Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_numberFromString_1 = _registerName1("numberFromString:"); - ffi.Pointer _objc_msgSend_803( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - ) { - return __objc_msgSend_803( - obj, - sel, - string, - ); - } - - late final __objc_msgSend_803Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_803 = __objc_msgSend_803Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_localizedStringFromNumber_numberStyle_1 = - _registerName1("localizedStringFromNumber:numberStyle:"); - ffi.Pointer _objc_msgSend_804( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer num, - int nstyle, - ) { - return __objc_msgSend_804( - obj, - sel, - num, - nstyle, - ); - } - - late final __objc_msgSend_804Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_804 = __objc_msgSend_804Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - int _objc_msgSend_805( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_805( - obj, - sel, - ); - } - - late final __objc_msgSend_805Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_805 = __objc_msgSend_805Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_806( - ffi.Pointer obj, - ffi.Pointer sel, - int behavior, - ) { - return __objc_msgSend_806( - obj, - sel, - behavior, - ); - } - - late final __objc_msgSend_806Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_806 = __objc_msgSend_806Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_numberStyle1 = _registerName1("numberStyle"); - int _objc_msgSend_807( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_807( - obj, - sel, - ); - } - - late final __objc_msgSend_807Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_807 = __objc_msgSend_807Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setNumberStyle_1 = _registerName1("setNumberStyle:"); - void _objc_msgSend_808( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_808( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_808Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_808 = __objc_msgSend_808Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_generatesDecimalNumbers1 = - _registerName1("generatesDecimalNumbers"); - late final _sel_setGeneratesDecimalNumbers_1 = - _registerName1("setGeneratesDecimalNumbers:"); - void _objc_msgSend_809( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_809( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_809Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_809 = __objc_msgSend_809Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_negativeFormat1 = _registerName1("negativeFormat"); - late final _sel_setNegativeFormat_1 = _registerName1("setNegativeFormat:"); - late final _sel_textAttributesForNegativeValues1 = - _registerName1("textAttributesForNegativeValues"); - late final _sel_setTextAttributesForNegativeValues_1 = - _registerName1("setTextAttributesForNegativeValues:"); - late final _sel_positiveFormat1 = _registerName1("positiveFormat"); - late final _sel_setPositiveFormat_1 = _registerName1("setPositiveFormat:"); - late final _sel_textAttributesForPositiveValues1 = - _registerName1("textAttributesForPositiveValues"); - late final _sel_setTextAttributesForPositiveValues_1 = - _registerName1("setTextAttributesForPositiveValues:"); - late final _sel_allowsFloats1 = _registerName1("allowsFloats"); - late final _sel_setAllowsFloats_1 = _registerName1("setAllowsFloats:"); - late final _sel_setDecimalSeparator_1 = - _registerName1("setDecimalSeparator:"); - late final _sel_alwaysShowsDecimalSeparator1 = - _registerName1("alwaysShowsDecimalSeparator"); - late final _sel_setAlwaysShowsDecimalSeparator_1 = - _registerName1("setAlwaysShowsDecimalSeparator:"); - late final _sel_currencyDecimalSeparator1 = - _registerName1("currencyDecimalSeparator"); - late final _sel_setCurrencyDecimalSeparator_1 = - _registerName1("setCurrencyDecimalSeparator:"); - late final _sel_usesGroupingSeparator1 = - _registerName1("usesGroupingSeparator"); - late final _sel_setUsesGroupingSeparator_1 = - _registerName1("setUsesGroupingSeparator:"); - late final _sel_setGroupingSeparator_1 = - _registerName1("setGroupingSeparator:"); - late final _sel_zeroSymbol1 = _registerName1("zeroSymbol"); - late final _sel_setZeroSymbol_1 = _registerName1("setZeroSymbol:"); - late final _sel_textAttributesForZero1 = - _registerName1("textAttributesForZero"); - late final _sel_setTextAttributesForZero_1 = - _registerName1("setTextAttributesForZero:"); - late final _sel_nilSymbol1 = _registerName1("nilSymbol"); - late final _sel_setNilSymbol_1 = _registerName1("setNilSymbol:"); - late final _sel_textAttributesForNil1 = - _registerName1("textAttributesForNil"); - late final _sel_setTextAttributesForNil_1 = - _registerName1("setTextAttributesForNil:"); - late final _sel_notANumberSymbol1 = _registerName1("notANumberSymbol"); - late final _sel_setNotANumberSymbol_1 = - _registerName1("setNotANumberSymbol:"); - late final _sel_textAttributesForNotANumber1 = - _registerName1("textAttributesForNotANumber"); - late final _sel_setTextAttributesForNotANumber_1 = - _registerName1("setTextAttributesForNotANumber:"); - late final _sel_positiveInfinitySymbol1 = - _registerName1("positiveInfinitySymbol"); - late final _sel_setPositiveInfinitySymbol_1 = - _registerName1("setPositiveInfinitySymbol:"); - late final _sel_textAttributesForPositiveInfinity1 = - _registerName1("textAttributesForPositiveInfinity"); - late final _sel_setTextAttributesForPositiveInfinity_1 = - _registerName1("setTextAttributesForPositiveInfinity:"); - late final _sel_negativeInfinitySymbol1 = - _registerName1("negativeInfinitySymbol"); - late final _sel_setNegativeInfinitySymbol_1 = - _registerName1("setNegativeInfinitySymbol:"); - late final _sel_textAttributesForNegativeInfinity1 = - _registerName1("textAttributesForNegativeInfinity"); - late final _sel_setTextAttributesForNegativeInfinity_1 = - _registerName1("setTextAttributesForNegativeInfinity:"); - late final _sel_positivePrefix1 = _registerName1("positivePrefix"); - late final _sel_setPositivePrefix_1 = _registerName1("setPositivePrefix:"); - late final _sel_positiveSuffix1 = _registerName1("positiveSuffix"); - late final _sel_setPositiveSuffix_1 = _registerName1("setPositiveSuffix:"); - late final _sel_negativePrefix1 = _registerName1("negativePrefix"); - late final _sel_setNegativePrefix_1 = _registerName1("setNegativePrefix:"); - late final _sel_negativeSuffix1 = _registerName1("negativeSuffix"); - late final _sel_setNegativeSuffix_1 = _registerName1("setNegativeSuffix:"); - late final _sel_setCurrencyCode_1 = _registerName1("setCurrencyCode:"); - late final _sel_setCurrencySymbol_1 = _registerName1("setCurrencySymbol:"); - late final _sel_internationalCurrencySymbol1 = - _registerName1("internationalCurrencySymbol"); - late final _sel_setInternationalCurrencySymbol_1 = - _registerName1("setInternationalCurrencySymbol:"); - late final _sel_percentSymbol1 = _registerName1("percentSymbol"); - late final _sel_setPercentSymbol_1 = _registerName1("setPercentSymbol:"); - late final _sel_perMillSymbol1 = _registerName1("perMillSymbol"); - late final _sel_setPerMillSymbol_1 = _registerName1("setPerMillSymbol:"); - late final _sel_minusSign1 = _registerName1("minusSign"); - late final _sel_setMinusSign_1 = _registerName1("setMinusSign:"); - late final _sel_plusSign1 = _registerName1("plusSign"); - late final _sel_setPlusSign_1 = _registerName1("setPlusSign:"); - late final _sel_exponentSymbol1 = _registerName1("exponentSymbol"); - late final _sel_setExponentSymbol_1 = _registerName1("setExponentSymbol:"); - late final _sel_groupingSize1 = _registerName1("groupingSize"); - late final _sel_setGroupingSize_1 = _registerName1("setGroupingSize:"); - late final _sel_secondaryGroupingSize1 = - _registerName1("secondaryGroupingSize"); - late final _sel_setSecondaryGroupingSize_1 = - _registerName1("setSecondaryGroupingSize:"); - late final _sel_multiplier1 = _registerName1("multiplier"); - late final _sel_setMultiplier_1 = _registerName1("setMultiplier:"); - late final _sel_formatWidth1 = _registerName1("formatWidth"); - late final _sel_setFormatWidth_1 = _registerName1("setFormatWidth:"); - late final _sel_paddingCharacter1 = _registerName1("paddingCharacter"); - late final _sel_setPaddingCharacter_1 = - _registerName1("setPaddingCharacter:"); - late final _sel_paddingPosition1 = _registerName1("paddingPosition"); - int _objc_msgSend_810( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_810( - obj, - sel, - ); - } - - late final __objc_msgSend_810Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_810 = __objc_msgSend_810Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setPaddingPosition_1 = _registerName1("setPaddingPosition:"); - void _objc_msgSend_811( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_811( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_811Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_811 = __objc_msgSend_811Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_roundingMode1 = _registerName1("roundingMode"); - int _objc_msgSend_812( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_812( - obj, - sel, - ); - } - - late final __objc_msgSend_812Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_812 = __objc_msgSend_812Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setRoundingMode_1 = _registerName1("setRoundingMode:"); - void _objc_msgSend_813( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_813( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_813Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_813 = __objc_msgSend_813Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_roundingIncrement1 = _registerName1("roundingIncrement"); - ffi.Pointer _objc_msgSend_814( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_814( - obj, - sel, - ); - } - - late final __objc_msgSend_814Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_814 = __objc_msgSend_814Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setRoundingIncrement_1 = - _registerName1("setRoundingIncrement:"); - void _objc_msgSend_815( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_815( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_815Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_815 = __objc_msgSend_815Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_minimumIntegerDigits1 = - _registerName1("minimumIntegerDigits"); - late final _sel_setMinimumIntegerDigits_1 = - _registerName1("setMinimumIntegerDigits:"); - late final _sel_maximumIntegerDigits1 = - _registerName1("maximumIntegerDigits"); - late final _sel_setMaximumIntegerDigits_1 = - _registerName1("setMaximumIntegerDigits:"); - late final _sel_minimumFractionDigits1 = - _registerName1("minimumFractionDigits"); - late final _sel_setMinimumFractionDigits_1 = - _registerName1("setMinimumFractionDigits:"); - late final _sel_maximumFractionDigits1 = - _registerName1("maximumFractionDigits"); - late final _sel_setMaximumFractionDigits_1 = - _registerName1("setMaximumFractionDigits:"); - late final _sel_minimum1 = _registerName1("minimum"); - late final _sel_setMinimum_1 = _registerName1("setMinimum:"); - late final _sel_maximum1 = _registerName1("maximum"); - late final _sel_setMaximum_1 = _registerName1("setMaximum:"); - late final _sel_currencyGroupingSeparator1 = - _registerName1("currencyGroupingSeparator"); - late final _sel_setCurrencyGroupingSeparator_1 = - _registerName1("setCurrencyGroupingSeparator:"); - late final _sel_usesSignificantDigits1 = - _registerName1("usesSignificantDigits"); - late final _sel_setUsesSignificantDigits_1 = - _registerName1("setUsesSignificantDigits:"); - late final _sel_minimumSignificantDigits1 = - _registerName1("minimumSignificantDigits"); - late final _sel_setMinimumSignificantDigits_1 = - _registerName1("setMinimumSignificantDigits:"); - late final _sel_maximumSignificantDigits1 = - _registerName1("maximumSignificantDigits"); - late final _sel_setMaximumSignificantDigits_1 = - _registerName1("setMaximumSignificantDigits:"); - late final _sel_isPartialStringValidationEnabled1 = - _registerName1("isPartialStringValidationEnabled"); - late final _sel_setPartialStringValidationEnabled_1 = - _registerName1("setPartialStringValidationEnabled:"); - late final _sel_hasThousandSeparators1 = - _registerName1("hasThousandSeparators"); - late final _sel_setHasThousandSeparators_1 = - _registerName1("setHasThousandSeparators:"); - late final _sel_thousandSeparator1 = _registerName1("thousandSeparator"); - late final _sel_setThousandSeparator_1 = - _registerName1("setThousandSeparator:"); - late final _sel_localizesFormat1 = _registerName1("localizesFormat"); - late final _sel_setLocalizesFormat_1 = _registerName1("setLocalizesFormat:"); - late final _sel_format1 = _registerName1("format"); - late final _sel_setFormat_1 = _registerName1("setFormat:"); - late final _sel_attributedStringForZero1 = - _registerName1("attributedStringForZero"); - late final _sel_setAttributedStringForZero_1 = - _registerName1("setAttributedStringForZero:"); - void _objc_msgSend_816( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_816( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_816Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_816 = __objc_msgSend_816Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_attributedStringForNil1 = - _registerName1("attributedStringForNil"); - late final _sel_setAttributedStringForNil_1 = - _registerName1("setAttributedStringForNil:"); - late final _sel_attributedStringForNotANumber1 = - _registerName1("attributedStringForNotANumber"); - late final _sel_setAttributedStringForNotANumber_1 = - _registerName1("setAttributedStringForNotANumber:"); - late final _class_NSDecimalNumberHandler1 = - _getClass1("NSDecimalNumberHandler"); - late final _sel_defaultDecimalNumberHandler1 = - _registerName1("defaultDecimalNumberHandler"); - ffi.Pointer _objc_msgSend_817( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_817( - obj, - sel, - ); - } - - late final __objc_msgSend_817Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_817 = __objc_msgSend_817Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1 = - _registerName1( - "initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:"); - instancetype _objc_msgSend_818( - ffi.Pointer obj, - ffi.Pointer sel, - int roundingMode, - int scale, - bool exact, - bool overflow, - bool underflow, - bool divideByZero, - ) { - return __objc_msgSend_818( - obj, - sel, - roundingMode, - scale, - exact, - overflow, - underflow, - divideByZero, - ); - } - - late final __objc_msgSend_818Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Short, - ffi.Bool, - ffi.Bool, - ffi.Bool, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_818 = __objc_msgSend_818Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - int, bool, bool, bool, bool)>(); - - late final _sel_decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1 = - _registerName1( - "decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:"); - late final _sel_roundingBehavior1 = _registerName1("roundingBehavior"); - late final _sel_setRoundingBehavior_1 = - _registerName1("setRoundingBehavior:"); - void _objc_msgSend_819( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_819( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_819Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_819 = __objc_msgSend_819Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSScanner1 = _getClass1("NSScanner"); - late final _sel_scanLocation1 = _registerName1("scanLocation"); - late final _sel_setScanLocation_1 = _registerName1("setScanLocation:"); - late final _sel_charactersToBeSkipped1 = - _registerName1("charactersToBeSkipped"); - ffi.Pointer _objc_msgSend_820( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_820( - obj, - sel, - ); - } - - late final __objc_msgSend_820Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_820 = __objc_msgSend_820Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setCharactersToBeSkipped_1 = - _registerName1("setCharactersToBeSkipped:"); - void _objc_msgSend_821( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_821( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_821Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_821 = __objc_msgSend_821Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_caseSensitive1 = _registerName1("caseSensitive"); - late final _sel_setCaseSensitive_1 = _registerName1("setCaseSensitive:"); - late final _sel_scanInt_1 = _registerName1("scanInt:"); - bool _objc_msgSend_822( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ) { - return __objc_msgSend_822( - obj, - sel, - result, - ); - } - - late final __objc_msgSend_822Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_822 = __objc_msgSend_822Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scanInteger_1 = _registerName1("scanInteger:"); - bool _objc_msgSend_823( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ) { - return __objc_msgSend_823( - obj, - sel, - result, - ); - } - - late final __objc_msgSend_823Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_823 = __objc_msgSend_823Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scanLongLong_1 = _registerName1("scanLongLong:"); - bool _objc_msgSend_824( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ) { - return __objc_msgSend_824( - obj, - sel, - result, - ); - } - - late final __objc_msgSend_824Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_824 = __objc_msgSend_824Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scanUnsignedLongLong_1 = - _registerName1("scanUnsignedLongLong:"); - bool _objc_msgSend_825( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ) { - return __objc_msgSend_825( - obj, - sel, - result, - ); - } - - late final __objc_msgSend_825Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_825 = __objc_msgSend_825Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scanFloat_1 = _registerName1("scanFloat:"); - bool _objc_msgSend_826( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ) { - return __objc_msgSend_826( - obj, - sel, - result, - ); - } - - late final __objc_msgSend_826Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_826 = __objc_msgSend_826Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scanDouble_1 = _registerName1("scanDouble:"); - bool _objc_msgSend_827( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ) { - return __objc_msgSend_827( - obj, - sel, - result, - ); - } - - late final __objc_msgSend_827Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_827 = __objc_msgSend_827Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scanHexInt_1 = _registerName1("scanHexInt:"); - bool _objc_msgSend_828( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ) { - return __objc_msgSend_828( - obj, - sel, - result, - ); - } - - late final __objc_msgSend_828Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_828 = __objc_msgSend_828Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scanHexLongLong_1 = _registerName1("scanHexLongLong:"); - late final _sel_scanHexFloat_1 = _registerName1("scanHexFloat:"); - late final _sel_scanHexDouble_1 = _registerName1("scanHexDouble:"); - late final _sel_scanString_intoString_1 = - _registerName1("scanString:intoString:"); - bool _objc_msgSend_829( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - ffi.Pointer> result, - ) { - return __objc_msgSend_829( - obj, - sel, - string, - result, - ); - } - - late final __objc_msgSend_829Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_829 = __objc_msgSend_829Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_scanCharactersFromSet_intoString_1 = - _registerName1("scanCharactersFromSet:intoString:"); - bool _objc_msgSend_830( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer set1, - ffi.Pointer> result, - ) { - return __objc_msgSend_830( - obj, - sel, - set1, - result, - ); - } - - late final __objc_msgSend_830Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_830 = __objc_msgSend_830Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_scanUpToString_intoString_1 = - _registerName1("scanUpToString:intoString:"); - late final _sel_scanUpToCharactersFromSet_intoString_1 = - _registerName1("scanUpToCharactersFromSet:intoString:"); - late final _sel_isAtEnd1 = _registerName1("isAtEnd"); - late final _sel_scannerWithString_1 = _registerName1("scannerWithString:"); - late final _sel_localizedScannerWithString_1 = - _registerName1("localizedScannerWithString:"); - late final _sel_scanDecimal_1 = _registerName1("scanDecimal:"); - bool _objc_msgSend_831( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer dcm, - ) { - return __objc_msgSend_831( - obj, - sel, - dcm, - ); - } - - late final __objc_msgSend_831Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_831 = __objc_msgSend_831Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSException1 = _getClass1("NSException"); - late final _sel_exceptionWithName_reason_userInfo_1 = - _registerName1("exceptionWithName:reason:userInfo:"); - ffi.Pointer _objc_msgSend_832( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer reason, - ffi.Pointer userInfo, - ) { - return __objc_msgSend_832( - obj, - sel, - name, - reason, - userInfo, - ); - } - - late final __objc_msgSend_832Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_832 = __objc_msgSend_832Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithName_reason_userInfo_1 = - _registerName1("initWithName:reason:userInfo:"); - instancetype _objc_msgSend_833( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aName, - ffi.Pointer aReason, - ffi.Pointer aUserInfo, - ) { - return __objc_msgSend_833( - obj, - sel, - aName, - aReason, - aUserInfo, - ); - } - - late final __objc_msgSend_833Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_833 = __objc_msgSend_833Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_reason1 = _registerName1("reason"); - late final _sel_raise1 = _registerName1("raise"); - late final _sel_raise_format_1 = _registerName1("raise:format:"); - late final _sel_raise_format_arguments_1 = - _registerName1("raise:format:arguments:"); - void _objc_msgSend_834( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer format, - ffi.Pointer<__va_list_tag> argList, - ) { - return __objc_msgSend_834( - obj, - sel, - name, - format, - argList, - ); - } - - late final __objc_msgSend_834Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); - late final __objc_msgSend_834 = __objc_msgSend_834Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>(); - - late final _class_NSFileHandle1 = _getClass1("NSFileHandle"); - late final _sel_availableData1 = _registerName1("availableData"); - late final _sel_initWithFileDescriptor_closeOnDealloc_1 = - _registerName1("initWithFileDescriptor:closeOnDealloc:"); - instancetype _objc_msgSend_835( - ffi.Pointer obj, - ffi.Pointer sel, - int fd, - bool closeopt, - ) { - return __objc_msgSend_835( - obj, - sel, - fd, - closeopt, - ); - } - - late final __objc_msgSend_835Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_835 = __objc_msgSend_835Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int, bool)>(); - - late final _sel_readDataToEndOfFileAndReturnError_1 = - _registerName1("readDataToEndOfFileAndReturnError:"); - ffi.Pointer _objc_msgSend_836( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> error, - ) { - return __objc_msgSend_836( - obj, - sel, - error, - ); - } - - late final __objc_msgSend_836Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_836 = __objc_msgSend_836Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_readDataUpToLength_error_1 = - _registerName1("readDataUpToLength:error:"); - ffi.Pointer _objc_msgSend_837( - ffi.Pointer obj, - ffi.Pointer sel, - int length, - ffi.Pointer> error, - ) { - return __objc_msgSend_837( - obj, - sel, - length, - error, - ); - } - - late final __objc_msgSend_837Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_837 = __objc_msgSend_837Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer>)>(); - - late final _sel_writeData_error_1 = _registerName1("writeData:error:"); - bool _objc_msgSend_838( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ffi.Pointer> error, - ) { - return __objc_msgSend_838( - obj, - sel, - data, - error, - ); - } - - late final __objc_msgSend_838Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_838 = __objc_msgSend_838Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_getOffset_error_1 = _registerName1("getOffset:error:"); - bool _objc_msgSend_839( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer offsetInFile, - ffi.Pointer> error, - ) { - return __objc_msgSend_839( - obj, - sel, - offsetInFile, - error, - ); - } - - late final __objc_msgSend_839Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_839 = __objc_msgSend_839Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_seekToEndReturningOffset_error_1 = - _registerName1("seekToEndReturningOffset:error:"); - late final _sel_seekToOffset_error_1 = _registerName1("seekToOffset:error:"); - bool _objc_msgSend_840( - ffi.Pointer obj, - ffi.Pointer sel, - int offset, - ffi.Pointer> error, - ) { - return __objc_msgSend_840( - obj, - sel, - offset, - error, - ); - } - - late final __objc_msgSend_840Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLongLong, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_840 = __objc_msgSend_840Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer>)>(); - - late final _sel_truncateAtOffset_error_1 = - _registerName1("truncateAtOffset:error:"); - late final _sel_synchronizeAndReturnError_1 = - _registerName1("synchronizeAndReturnError:"); - late final _sel_closeAndReturnError_1 = - _registerName1("closeAndReturnError:"); - late final _sel_fileHandleWithStandardInput1 = - _registerName1("fileHandleWithStandardInput"); - ffi.Pointer _objc_msgSend_841( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_841( - obj, - sel, - ); - } - - late final __objc_msgSend_841Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_841 = __objc_msgSend_841Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_fileHandleWithStandardOutput1 = - _registerName1("fileHandleWithStandardOutput"); - late final _sel_fileHandleWithStandardError1 = - _registerName1("fileHandleWithStandardError"); - late final _sel_fileHandleWithNullDevice1 = - _registerName1("fileHandleWithNullDevice"); - late final _sel_fileHandleForReadingAtPath_1 = - _registerName1("fileHandleForReadingAtPath:"); - late final _sel_fileHandleForWritingAtPath_1 = - _registerName1("fileHandleForWritingAtPath:"); - late final _sel_fileHandleForUpdatingAtPath_1 = - _registerName1("fileHandleForUpdatingAtPath:"); - late final _sel_fileHandleForReadingFromURL_error_1 = - _registerName1("fileHandleForReadingFromURL:error:"); - instancetype _objc_msgSend_842( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer> error, - ) { - return __objc_msgSend_842( - obj, - sel, - url, - error, - ); - } - - late final __objc_msgSend_842Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_842 = __objc_msgSend_842Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_fileHandleForWritingToURL_error_1 = - _registerName1("fileHandleForWritingToURL:error:"); - late final _sel_fileHandleForUpdatingURL_error_1 = - _registerName1("fileHandleForUpdatingURL:error:"); - late final _sel_readInBackgroundAndNotifyForModes_1 = - _registerName1("readInBackgroundAndNotifyForModes:"); - void _objc_msgSend_843( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer modes, - ) { - return __objc_msgSend_843( - obj, - sel, - modes, - ); - } - - late final __objc_msgSend_843Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_843 = __objc_msgSend_843Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_readInBackgroundAndNotify1 = - _registerName1("readInBackgroundAndNotify"); - late final _sel_readToEndOfFileInBackgroundAndNotifyForModes_1 = - _registerName1("readToEndOfFileInBackgroundAndNotifyForModes:"); - late final _sel_readToEndOfFileInBackgroundAndNotify1 = - _registerName1("readToEndOfFileInBackgroundAndNotify"); - late final _sel_acceptConnectionInBackgroundAndNotifyForModes_1 = - _registerName1("acceptConnectionInBackgroundAndNotifyForModes:"); - late final _sel_acceptConnectionInBackgroundAndNotify1 = - _registerName1("acceptConnectionInBackgroundAndNotify"); - late final _sel_waitForDataInBackgroundAndNotifyForModes_1 = - _registerName1("waitForDataInBackgroundAndNotifyForModes:"); - late final _sel_waitForDataInBackgroundAndNotify1 = - _registerName1("waitForDataInBackgroundAndNotify"); - late final _sel_readabilityHandler1 = _registerName1("readabilityHandler"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_844( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_844( - obj, - sel, - ); - } - - late final __objc_msgSend_844Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_844 = __objc_msgSend_844Ptr.asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setReadabilityHandler_1 = - _registerName1("setReadabilityHandler:"); - void _objc_msgSend_845( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> value, - ) { - return __objc_msgSend_845( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_845Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_845 = __objc_msgSend_845Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_writeabilityHandler1 = _registerName1("writeabilityHandler"); - late final _sel_setWriteabilityHandler_1 = - _registerName1("setWriteabilityHandler:"); - late final _sel_initWithFileDescriptor_1 = - _registerName1("initWithFileDescriptor:"); - instancetype _objc_msgSend_846( - ffi.Pointer obj, - ffi.Pointer sel, - int fd, - ) { - return __objc_msgSend_846( - obj, - sel, - fd, - ); - } - - late final __objc_msgSend_846Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int)>>('objc_msgSend'); - late final __objc_msgSend_846 = __objc_msgSend_846Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_fileDescriptor1 = _registerName1("fileDescriptor"); - late final _sel_readDataToEndOfFile1 = _registerName1("readDataToEndOfFile"); - late final _sel_readDataOfLength_1 = _registerName1("readDataOfLength:"); - ffi.Pointer _objc_msgSend_847( - ffi.Pointer obj, - ffi.Pointer sel, - int length, - ) { - return __objc_msgSend_847( - obj, - sel, - length, - ); - } - - late final __objc_msgSend_847Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_847 = __objc_msgSend_847Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_offsetInFile1 = _registerName1("offsetInFile"); - late final _sel_seekToEndOfFile1 = _registerName1("seekToEndOfFile"); - late final _sel_seekToFileOffset_1 = _registerName1("seekToFileOffset:"); - void _objc_msgSend_848( - ffi.Pointer obj, - ffi.Pointer sel, - int offset, - ) { - return __objc_msgSend_848( - obj, - sel, - offset, - ); - } - - late final __objc_msgSend_848Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLongLong)>>('objc_msgSend'); - late final __objc_msgSend_848 = __objc_msgSend_848Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_truncateFileAtOffset_1 = - _registerName1("truncateFileAtOffset:"); - late final _sel_synchronizeFile1 = _registerName1("synchronizeFile"); - late final _sel_closeFile1 = _registerName1("closeFile"); - late final _class_NSHTTPCookieStorage1 = _getClass1("NSHTTPCookieStorage"); - late final _sel_sharedHTTPCookieStorage1 = - _registerName1("sharedHTTPCookieStorage"); - ffi.Pointer _objc_msgSend_849( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_849( - obj, - sel, - ); - } - - late final __objc_msgSend_849Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_849 = __objc_msgSend_849Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_sharedCookieStorageForGroupContainerIdentifier_1 = - _registerName1("sharedCookieStorageForGroupContainerIdentifier:"); - ffi.Pointer _objc_msgSend_850( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer identifier, - ) { - return __objc_msgSend_850( - obj, - sel, - identifier, - ); - } - - late final __objc_msgSend_850Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_850 = __objc_msgSend_850Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_cookies1 = _registerName1("cookies"); - late final _class_NSHTTPCookie1 = _getClass1("NSHTTPCookie"); - late final _sel_initWithProperties_1 = _registerName1("initWithProperties:"); - instancetype _objc_msgSend_851( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer properties, - ) { - return __objc_msgSend_851( - obj, - sel, - properties, - ); - } - - late final __objc_msgSend_851Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_851 = __objc_msgSend_851Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_cookieWithProperties_1 = - _registerName1("cookieWithProperties:"); - ffi.Pointer _objc_msgSend_852( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer properties, - ) { - return __objc_msgSend_852( - obj, - sel, - properties, - ); - } - - late final __objc_msgSend_852Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_852 = __objc_msgSend_852Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_requestHeaderFieldsWithCookies_1 = - _registerName1("requestHeaderFieldsWithCookies:"); - late final _sel_cookiesWithResponseHeaderFields_forURL_1 = - _registerName1("cookiesWithResponseHeaderFields:forURL:"); - ffi.Pointer _objc_msgSend_853( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer headerFields, - ffi.Pointer URL, - ) { - return __objc_msgSend_853( - obj, - sel, - headerFields, - URL, - ); - } - - late final __objc_msgSend_853Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_853 = __objc_msgSend_853Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_properties1 = _registerName1("properties"); - late final _sel_value1 = _registerName1("value"); - late final _sel_expiresDate1 = _registerName1("expiresDate"); - late final _sel_isSessionOnly1 = _registerName1("isSessionOnly"); - late final _sel_isSecure1 = _registerName1("isSecure"); - late final _sel_isHTTPOnly1 = _registerName1("isHTTPOnly"); - late final _sel_comment1 = _registerName1("comment"); - late final _sel_commentURL1 = _registerName1("commentURL"); - late final _sel_portList1 = _registerName1("portList"); - late final _sel_sameSitePolicy1 = _registerName1("sameSitePolicy"); - late final _sel_setCookie_1 = _registerName1("setCookie:"); - void _objc_msgSend_854( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer cookie, - ) { - return __objc_msgSend_854( - obj, - sel, - cookie, - ); - } - - late final __objc_msgSend_854Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_854 = __objc_msgSend_854Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_deleteCookie_1 = _registerName1("deleteCookie:"); - late final _sel_removeCookiesSinceDate_1 = - _registerName1("removeCookiesSinceDate:"); - late final _sel_cookiesForURL_1 = _registerName1("cookiesForURL:"); - late final _sel_setCookies_forURL_mainDocumentURL_1 = - _registerName1("setCookies:forURL:mainDocumentURL:"); - void _objc_msgSend_855( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer cookies, - ffi.Pointer URL, - ffi.Pointer mainDocumentURL, - ) { - return __objc_msgSend_855( - obj, - sel, - cookies, - URL, - mainDocumentURL, - ); - } - - late final __objc_msgSend_855Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_855 = __objc_msgSend_855Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_cookieAcceptPolicy1 = _registerName1("cookieAcceptPolicy"); - int _objc_msgSend_856( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_856( - obj, - sel, - ); - } - - late final __objc_msgSend_856Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_856 = __objc_msgSend_856Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setCookieAcceptPolicy_1 = - _registerName1("setCookieAcceptPolicy:"); - void _objc_msgSend_857( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_857( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_857Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_857 = __objc_msgSend_857Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_sortedCookiesUsingDescriptors_1 = - _registerName1("sortedCookiesUsingDescriptors:"); - late final _class_NSURLSessionTask1 = _getClass1("NSURLSessionTask"); - late final _sel_taskIdentifier1 = _registerName1("taskIdentifier"); - late final _class_NSURLRequest1 = _getClass1("NSURLRequest"); - late final _sel_requestWithURL_1 = _registerName1("requestWithURL:"); - late final _sel_supportsSecureCoding1 = - _registerName1("supportsSecureCoding"); - late final _sel_requestWithURL_cachePolicy_timeoutInterval_1 = - _registerName1("requestWithURL:cachePolicy:timeoutInterval:"); - instancetype _objc_msgSend_858( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer URL, - int cachePolicy, - double timeoutInterval, - ) { - return __objc_msgSend_858( - obj, - sel, - URL, - cachePolicy, - timeoutInterval, - ); - } - - late final __objc_msgSend_858Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32, ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_858 = __objc_msgSend_858Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, double)>(); - - late final _sel_initWithURL_cachePolicy_timeoutInterval_1 = - _registerName1("initWithURL:cachePolicy:timeoutInterval:"); - late final _sel_URL1 = _registerName1("URL"); - late final _sel_cachePolicy1 = _registerName1("cachePolicy"); - int _objc_msgSend_859( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_859( - obj, - sel, - ); - } - - late final __objc_msgSend_859Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_859 = __objc_msgSend_859Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_timeoutInterval1 = _registerName1("timeoutInterval"); - late final _sel_mainDocumentURL1 = _registerName1("mainDocumentURL"); - late final _sel_networkServiceType1 = _registerName1("networkServiceType"); - int _objc_msgSend_860( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_860( - obj, - sel, - ); - } - - late final __objc_msgSend_860Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_860 = __objc_msgSend_860Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_allowsCellularAccess1 = - _registerName1("allowsCellularAccess"); - late final _sel_allowsExpensiveNetworkAccess1 = - _registerName1("allowsExpensiveNetworkAccess"); - late final _sel_allowsConstrainedNetworkAccess1 = - _registerName1("allowsConstrainedNetworkAccess"); - late final _sel_assumesHTTP3Capable1 = _registerName1("assumesHTTP3Capable"); - late final _sel_attribution1 = _registerName1("attribution"); - int _objc_msgSend_861( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_861( - obj, - sel, - ); - } - - late final __objc_msgSend_861Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_861 = __objc_msgSend_861Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_requiresDNSSECValidation1 = - _registerName1("requiresDNSSECValidation"); - late final _sel_HTTPMethod1 = _registerName1("HTTPMethod"); - late final _sel_allHTTPHeaderFields1 = _registerName1("allHTTPHeaderFields"); - late final _sel_valueForHTTPHeaderField_1 = - _registerName1("valueForHTTPHeaderField:"); - late final _sel_HTTPBody1 = _registerName1("HTTPBody"); - late final _class_NSInputStream1 = _getClass1("NSInputStream"); - late final _class_NSStream1 = _getClass1("NSStream"); - late final _sel_open1 = _registerName1("open"); - late final _sel_close1 = _registerName1("close"); - bool _objc_msgSend_862( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer property, - ffi.Pointer key, - ) { - return __objc_msgSend_862( - obj, - sel, - property, - key, - ); - } - - late final __objc_msgSend_862Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_862 = __objc_msgSend_862Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_streamStatus1 = _registerName1("streamStatus"); - int _objc_msgSend_863( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_863( - obj, - sel, - ); - } - - late final __objc_msgSend_863Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_863 = __objc_msgSend_863Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_streamError1 = _registerName1("streamError"); - late final _class_NSOutputStream1 = _getClass1("NSOutputStream"); - late final _sel_write_maxLength_1 = _registerName1("write:maxLength:"); - int _objc_msgSend_864( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - int len, - ) { - return __objc_msgSend_864( - obj, - sel, - buffer, - len, - ); - } - - late final __objc_msgSend_864Ptr = _lookup< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_864 = __objc_msgSend_864Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_hasSpaceAvailable1 = _registerName1("hasSpaceAvailable"); - late final _sel_initToMemory1 = _registerName1("initToMemory"); - late final _sel_initToBuffer_capacity_1 = - _registerName1("initToBuffer:capacity:"); - instancetype _objc_msgSend_865( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - int capacity, - ) { - return __objc_msgSend_865( - obj, - sel, - buffer, - capacity, - ); - } - - late final __objc_msgSend_865Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_865 = __objc_msgSend_865Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_initWithURL_append_1 = _registerName1("initWithURL:append:"); - instancetype _objc_msgSend_866( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - bool shouldAppend, - ) { - return __objc_msgSend_866( - obj, - sel, - url, - shouldAppend, - ); - } - - late final __objc_msgSend_866Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_866 = __objc_msgSend_866Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_initToFileAtPath_append_1 = - _registerName1("initToFileAtPath:append:"); - late final _sel_outputStreamToMemory1 = - _registerName1("outputStreamToMemory"); - late final _sel_outputStreamToBuffer_capacity_1 = - _registerName1("outputStreamToBuffer:capacity:"); - late final _sel_outputStreamToFileAtPath_append_1 = - _registerName1("outputStreamToFileAtPath:append:"); - late final _sel_outputStreamWithURL_append_1 = - _registerName1("outputStreamWithURL:append:"); - late final _sel_getStreamsToHostWithName_port_inputStream_outputStream_1 = - _registerName1("getStreamsToHostWithName:port:inputStream:outputStream:"); - void _objc_msgSend_867( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer hostname, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream, - ) { - return __objc_msgSend_867( - obj, - sel, - hostname, - port, - inputStream, - outputStream, - ); - } - - late final __objc_msgSend_867Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_867 = __objc_msgSend_867Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _class_NSHost1 = _getClass1("NSHost"); - late final _sel_currentHost1 = _registerName1("currentHost"); - late final _sel_hostWithName_1 = _registerName1("hostWithName:"); - instancetype _objc_msgSend_868( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ) { - return __objc_msgSend_868( - obj, - sel, - name, - ); - } - - late final __objc_msgSend_868Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_868 = __objc_msgSend_868Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_hostWithAddress_1 = _registerName1("hostWithAddress:"); - late final _sel_isEqualToHost_1 = _registerName1("isEqualToHost:"); - bool _objc_msgSend_869( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aHost, - ) { - return __objc_msgSend_869( - obj, - sel, - aHost, - ); - } - - late final __objc_msgSend_869Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_869 = __objc_msgSend_869Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_names1 = _registerName1("names"); - late final _sel_address1 = _registerName1("address"); - late final _sel_addresses1 = _registerName1("addresses"); - late final _sel_localizedName1 = _registerName1("localizedName"); - late final _sel_setHostCacheEnabled_1 = - _registerName1("setHostCacheEnabled:"); - void _objc_msgSend_870( - ffi.Pointer obj, - ffi.Pointer sel, - bool flag, - ) { - return __objc_msgSend_870( - obj, - sel, - flag, - ); - } - - late final __objc_msgSend_870Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_870 = __objc_msgSend_870Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_isHostCacheEnabled1 = _registerName1("isHostCacheEnabled"); - late final _sel_flushHostCache1 = _registerName1("flushHostCache"); - late final _sel_getStreamsToHost_port_inputStream_outputStream_1 = - _registerName1("getStreamsToHost:port:inputStream:outputStream:"); - void _objc_msgSend_871( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer host, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream, - ) { - return __objc_msgSend_871( - obj, - sel, - host, - port, - inputStream, - outputStream, - ); - } - - late final __objc_msgSend_871Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_871 = __objc_msgSend_871Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1 = - _registerName1("getBoundStreamsWithBufferSize:inputStream:outputStream:"); - void _objc_msgSend_872( - ffi.Pointer obj, - ffi.Pointer sel, - int bufferSize, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream, - ) { - return __objc_msgSend_872( - obj, - sel, - bufferSize, - inputStream, - outputStream, - ); - } - - late final __objc_msgSend_872Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_872 = __objc_msgSend_872Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_read_maxLength_1 = _registerName1("read:maxLength:"); - late final _sel_getBuffer_length_1 = _registerName1("getBuffer:length:"); - bool _objc_msgSend_873( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> buffer, - ffi.Pointer len, - ) { - return __objc_msgSend_873( - obj, - sel, - buffer, - len, - ); - } - - late final __objc_msgSend_873Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_873 = __objc_msgSend_873Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer)>(); - - late final _sel_hasBytesAvailable1 = _registerName1("hasBytesAvailable"); - late final _sel_initWithFileAtPath_1 = _registerName1("initWithFileAtPath:"); - late final _sel_inputStreamWithData_1 = - _registerName1("inputStreamWithData:"); - instancetype _objc_msgSend_874( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ) { - return __objc_msgSend_874( - obj, - sel, - data, - ); - } - - late final __objc_msgSend_874Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_874 = __objc_msgSend_874Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_inputStreamWithFileAtPath_1 = - _registerName1("inputStreamWithFileAtPath:"); - late final _sel_inputStreamWithURL_1 = _registerName1("inputStreamWithURL:"); - late final _sel_HTTPBodyStream1 = _registerName1("HTTPBodyStream"); - ffi.Pointer _objc_msgSend_875( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_875( - obj, - sel, - ); - } - - late final __objc_msgSend_875Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_875 = __objc_msgSend_875Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_HTTPShouldHandleCookies1 = - _registerName1("HTTPShouldHandleCookies"); - late final _sel_HTTPShouldUsePipelining1 = - _registerName1("HTTPShouldUsePipelining"); - late final _sel_originalRequest1 = _registerName1("originalRequest"); - ffi.Pointer _objc_msgSend_876( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_876( - obj, - sel, - ); - } - - late final __objc_msgSend_876Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_876 = __objc_msgSend_876Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_currentRequest1 = _registerName1("currentRequest"); - late final _class_NSURLResponse1 = _getClass1("NSURLResponse"); - late final _sel_initWithURL_MIMEType_expectedContentLength_textEncodingName_1 = - _registerName1( - "initWithURL:MIMEType:expectedContentLength:textEncodingName:"); - instancetype _objc_msgSend_877( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer URL, - ffi.Pointer MIMEType, - int length, - ffi.Pointer name, - ) { - return __objc_msgSend_877( - obj, - sel, - URL, - MIMEType, - length, - name, - ); - } - - late final __objc_msgSend_877Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_877 = __objc_msgSend_877Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer)>(); - - late final _sel_MIMEType1 = _registerName1("MIMEType"); - late final _sel_expectedContentLength1 = - _registerName1("expectedContentLength"); - late final _sel_textEncodingName1 = _registerName1("textEncodingName"); - late final _sel_suggestedFilename1 = _registerName1("suggestedFilename"); - late final _sel_response1 = _registerName1("response"); - ffi.Pointer _objc_msgSend_878( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_878( - obj, - sel, - ); - } - - late final __objc_msgSend_878Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_878 = __objc_msgSend_878Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_progress1 = _registerName1("progress"); - ffi.Pointer _objc_msgSend_879( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_879( - obj, - sel, - ); - } - - late final __objc_msgSend_879Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_879 = __objc_msgSend_879Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_earliestBeginDate1 = _registerName1("earliestBeginDate"); - late final _sel_setEarliestBeginDate_1 = - _registerName1("setEarliestBeginDate:"); - late final _sel_countOfBytesClientExpectsToSend1 = - _registerName1("countOfBytesClientExpectsToSend"); - late final _sel_setCountOfBytesClientExpectsToSend_1 = - _registerName1("setCountOfBytesClientExpectsToSend:"); - late final _sel_countOfBytesClientExpectsToReceive1 = - _registerName1("countOfBytesClientExpectsToReceive"); - late final _sel_setCountOfBytesClientExpectsToReceive_1 = - _registerName1("setCountOfBytesClientExpectsToReceive:"); - late final _sel_countOfBytesSent1 = _registerName1("countOfBytesSent"); - late final _sel_countOfBytesReceived1 = - _registerName1("countOfBytesReceived"); - late final _sel_countOfBytesExpectedToSend1 = - _registerName1("countOfBytesExpectedToSend"); - late final _sel_countOfBytesExpectedToReceive1 = - _registerName1("countOfBytesExpectedToReceive"); - late final _sel_taskDescription1 = _registerName1("taskDescription"); - late final _sel_setTaskDescription_1 = _registerName1("setTaskDescription:"); - late final _sel_state1 = _registerName1("state"); - int _objc_msgSend_880( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_880( - obj, - sel, - ); - } - - late final __objc_msgSend_880Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_880 = __objc_msgSend_880Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_suspend1 = _registerName1("suspend"); - late final _sel_priority1 = _registerName1("priority"); - late final _sel_setPriority_1 = _registerName1("setPriority:"); - void _objc_msgSend_881( - ffi.Pointer obj, - ffi.Pointer sel, - double value, - ) { - return __objc_msgSend_881( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_881Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Float)>>('objc_msgSend'); - late final __objc_msgSend_881 = __objc_msgSend_881Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_prefersIncrementalDelivery1 = - _registerName1("prefersIncrementalDelivery"); - late final _sel_setPrefersIncrementalDelivery_1 = - _registerName1("setPrefersIncrementalDelivery:"); - late final _sel_storeCookies_forTask_1 = - _registerName1("storeCookies:forTask:"); - void _objc_msgSend_882( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer cookies, - ffi.Pointer task, - ) { - return __objc_msgSend_882( - obj, - sel, - cookies, - task, - ); - } - - late final __objc_msgSend_882Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_882 = __objc_msgSend_882Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_getCookiesForTask_completionHandler_1 = - _registerName1("getCookiesForTask:completionHandler:"); - void _objc_msgSend_883( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer task, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_883( - obj, - sel, - task, - completionHandler, - ); - } - - late final __objc_msgSend_883Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_883 = __objc_msgSend_883Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _class_NSIndexPath1 = _getClass1("NSIndexPath"); - late final _sel_indexPathWithIndex_1 = _registerName1("indexPathWithIndex:"); - late final _sel_indexPathWithIndexes_length_1 = - _registerName1("indexPathWithIndexes:length:"); - instancetype _objc_msgSend_884( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexes, - int length, - ) { - return __objc_msgSend_884( - obj, - sel, - indexes, - length, - ); - } - - late final __objc_msgSend_884Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_884 = __objc_msgSend_884Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_initWithIndexes_length_1 = - _registerName1("initWithIndexes:length:"); - late final _sel_indexPathByAddingIndex_1 = - _registerName1("indexPathByAddingIndex:"); - ffi.Pointer _objc_msgSend_885( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_885( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_885Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_885 = __objc_msgSend_885Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_indexPathByRemovingLastIndex1 = - _registerName1("indexPathByRemovingLastIndex"); - ffi.Pointer _objc_msgSend_886( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_886( - obj, - sel, - ); - } - - late final __objc_msgSend_886Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_886 = __objc_msgSend_886Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_indexAtPosition_1 = _registerName1("indexAtPosition:"); - late final _sel_getIndexes_range_1 = _registerName1("getIndexes:range:"); - void _objc_msgSend_887( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexes, - _NSRange positionRange, - ) { - return __objc_msgSend_887( - obj, - sel, - indexes, - positionRange, - ); - } - - late final __objc_msgSend_887Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_887 = __objc_msgSend_887Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - int _objc_msgSend_888( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherObject, - ) { - return __objc_msgSend_888( - obj, - sel, - otherObject, - ); - } - - late final __objc_msgSend_888Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_888 = __objc_msgSend_888Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_getIndexes_1 = _registerName1("getIndexes:"); - void _objc_msgSend_889( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexes, - ) { - return __objc_msgSend_889( - obj, - sel, - indexes, - ); - } - - late final __objc_msgSend_889Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_889 = __objc_msgSend_889Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSInflectionRule1 = _getClass1("NSInflectionRule"); - late final _sel_automaticRule1 = _registerName1("automaticRule"); - ffi.Pointer _objc_msgSend_890( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_890( - obj, - sel, - ); - } - - late final __objc_msgSend_890Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_890 = __objc_msgSend_890Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_canInflectLanguage_1 = _registerName1("canInflectLanguage:"); - late final _sel_canInflectPreferredLocalization1 = - _registerName1("canInflectPreferredLocalization"); - late final _class_NSMorphology1 = _getClass1("NSMorphology"); - late final _sel_grammaticalGender1 = _registerName1("grammaticalGender"); - int _objc_msgSend_891( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_891( - obj, - sel, - ); - } - - late final __objc_msgSend_891Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_891 = __objc_msgSend_891Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setGrammaticalGender_1 = - _registerName1("setGrammaticalGender:"); - void _objc_msgSend_892( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_892( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_892Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_892 = __objc_msgSend_892Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_partOfSpeech1 = _registerName1("partOfSpeech"); - int _objc_msgSend_893( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_893( - obj, - sel, - ); - } - - late final __objc_msgSend_893Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_893 = __objc_msgSend_893Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setPartOfSpeech_1 = _registerName1("setPartOfSpeech:"); - void _objc_msgSend_894( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_894( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_894Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_894 = __objc_msgSend_894Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_number1 = _registerName1("number"); - int _objc_msgSend_895( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_895( - obj, - sel, - ); - } - - late final __objc_msgSend_895Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_895 = __objc_msgSend_895Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setNumber_1 = _registerName1("setNumber:"); - void _objc_msgSend_896( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_896( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_896Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_896 = __objc_msgSend_896Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_grammaticalCase1 = _registerName1("grammaticalCase"); - int _objc_msgSend_897( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_897( - obj, - sel, - ); - } - - late final __objc_msgSend_897Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_897 = __objc_msgSend_897Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setGrammaticalCase_1 = _registerName1("setGrammaticalCase:"); - void _objc_msgSend_898( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_898( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_898Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_898 = __objc_msgSend_898Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_determination1 = _registerName1("determination"); - int _objc_msgSend_899( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_899( - obj, - sel, - ); - } - - late final __objc_msgSend_899Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_899 = __objc_msgSend_899Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDetermination_1 = _registerName1("setDetermination:"); - void _objc_msgSend_900( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_900( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_900Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_900 = __objc_msgSend_900Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_grammaticalPerson1 = _registerName1("grammaticalPerson"); - int _objc_msgSend_901( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_901( - obj, - sel, - ); - } - - late final __objc_msgSend_901Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_901 = __objc_msgSend_901Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setGrammaticalPerson_1 = - _registerName1("setGrammaticalPerson:"); - void _objc_msgSend_902( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_902( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_902Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_902 = __objc_msgSend_902Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_pronounType1 = _registerName1("pronounType"); - int _objc_msgSend_903( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_903( - obj, - sel, - ); - } - - late final __objc_msgSend_903Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_903 = __objc_msgSend_903Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setPronounType_1 = _registerName1("setPronounType:"); - void _objc_msgSend_904( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_904( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_904Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_904 = __objc_msgSend_904Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_definiteness1 = _registerName1("definiteness"); - int _objc_msgSend_905( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_905( - obj, - sel, - ); - } - - late final __objc_msgSend_905Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_905 = __objc_msgSend_905Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDefiniteness_1 = _registerName1("setDefiniteness:"); - void _objc_msgSend_906( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_906( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_906Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_906 = __objc_msgSend_906Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _class_NSMorphologyCustomPronoun1 = - _getClass1("NSMorphologyCustomPronoun"); - late final _sel_isSupportedForLanguage_1 = - _registerName1("isSupportedForLanguage:"); - late final _sel_requiredKeysForLanguage_1 = - _registerName1("requiredKeysForLanguage:"); - late final _sel_subjectForm1 = _registerName1("subjectForm"); - late final _sel_setSubjectForm_1 = _registerName1("setSubjectForm:"); - late final _sel_objectForm1 = _registerName1("objectForm"); - late final _sel_setObjectForm_1 = _registerName1("setObjectForm:"); - late final _sel_possessiveForm1 = _registerName1("possessiveForm"); - late final _sel_setPossessiveForm_1 = _registerName1("setPossessiveForm:"); - late final _sel_possessiveAdjectiveForm1 = - _registerName1("possessiveAdjectiveForm"); - late final _sel_setPossessiveAdjectiveForm_1 = - _registerName1("setPossessiveAdjectiveForm:"); - late final _sel_reflexiveForm1 = _registerName1("reflexiveForm"); - late final _sel_setReflexiveForm_1 = _registerName1("setReflexiveForm:"); - late final _sel_customPronounForLanguage_1 = - _registerName1("customPronounForLanguage:"); - ffi.Pointer _objc_msgSend_907( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer language, - ) { - return __objc_msgSend_907( - obj, - sel, - language, - ); - } - - late final __objc_msgSend_907Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_907 = __objc_msgSend_907Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setCustomPronoun_forLanguage_error_1 = - _registerName1("setCustomPronoun:forLanguage:error:"); - bool _objc_msgSend_908( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer features, - ffi.Pointer language, - ffi.Pointer> error, - ) { - return __objc_msgSend_908( - obj, - sel, - features, - language, - error, - ); - } - - late final __objc_msgSend_908Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_908 = __objc_msgSend_908Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_isUnspecified1 = _registerName1("isUnspecified"); - late final _sel_userMorphology1 = _registerName1("userMorphology"); - ffi.Pointer _objc_msgSend_909( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_909( - obj, - sel, - ); - } - - late final __objc_msgSend_909Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_909 = __objc_msgSend_909Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSOperationQueue1 = _getClass1("NSOperationQueue"); - late final _class_NSOperation1 = _getClass1("NSOperation"); - late final _sel_isConcurrent1 = _registerName1("isConcurrent"); - late final _sel_isAsynchronous1 = _registerName1("isAsynchronous"); - late final _sel_isReady1 = _registerName1("isReady"); - late final _sel_addDependency_1 = _registerName1("addDependency:"); - void _objc_msgSend_910( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer op, - ) { - return __objc_msgSend_910( - obj, - sel, - op, - ); - } - - late final __objc_msgSend_910Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_910 = __objc_msgSend_910Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeDependency_1 = _registerName1("removeDependency:"); - late final _sel_dependencies1 = _registerName1("dependencies"); - late final _sel_queuePriority1 = _registerName1("queuePriority"); - int _objc_msgSend_911( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_911( - obj, - sel, - ); - } - - late final __objc_msgSend_911Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_911 = __objc_msgSend_911Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setQueuePriority_1 = _registerName1("setQueuePriority:"); - void _objc_msgSend_912( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_912( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_912Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_912 = __objc_msgSend_912Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_completionBlock1 = _registerName1("completionBlock"); - late final _sel_setCompletionBlock_1 = _registerName1("setCompletionBlock:"); - late final _sel_waitUntilFinished1 = _registerName1("waitUntilFinished"); - late final _sel_addOperation_1 = _registerName1("addOperation:"); - late final _sel_addOperations_waitUntilFinished_1 = - _registerName1("addOperations:waitUntilFinished:"); - void _objc_msgSend_913( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer ops, - bool wait, - ) { - return __objc_msgSend_913( - obj, - sel, - ops, - wait, - ); - } - - late final __objc_msgSend_913Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_913 = __objc_msgSend_913Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_addOperationWithBlock_1 = - _registerName1("addOperationWithBlock:"); - late final _sel_addBarrierBlock_1 = _registerName1("addBarrierBlock:"); - late final _sel_maxConcurrentOperationCount1 = - _registerName1("maxConcurrentOperationCount"); - late final _sel_setMaxConcurrentOperationCount_1 = - _registerName1("setMaxConcurrentOperationCount:"); - late final _sel_isSuspended1 = _registerName1("isSuspended"); - late final _sel_setSuspended_1 = _registerName1("setSuspended:"); - late final _sel_underlyingQueue1 = _registerName1("underlyingQueue"); - ffi.Pointer _objc_msgSend_914( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_914( - obj, - sel, - ); - } - - late final __objc_msgSend_914Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_914 = __objc_msgSend_914Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setUnderlyingQueue_1 = _registerName1("setUnderlyingQueue:"); - void _objc_msgSend_915( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_915( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_915Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_915 = __objc_msgSend_915Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_cancelAllOperations1 = _registerName1("cancelAllOperations"); - late final _sel_waitUntilAllOperationsAreFinished1 = - _registerName1("waitUntilAllOperationsAreFinished"); - late final _sel_currentQueue1 = _registerName1("currentQueue"); - ffi.Pointer _objc_msgSend_916( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_916( - obj, - sel, - ); - } - - late final __objc_msgSend_916Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_916 = __objc_msgSend_916Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_mainQueue1 = _registerName1("mainQueue"); - ffi.Pointer _objc_msgSend_917( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_917( - obj, - sel, - ); - } - - late final __objc_msgSend_917Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_917 = __objc_msgSend_917Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_operations1 = _registerName1("operations"); - late final _sel_operationCount1 = _registerName1("operationCount"); - late final _class_NSPointerArray1 = _getClass1("NSPointerArray"); - late final _sel_initWithOptions_1 = _registerName1("initWithOptions:"); - instancetype _objc_msgSend_918( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_918( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_918Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_918 = __objc_msgSend_918Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _class_NSPointerFunctions1 = _getClass1("NSPointerFunctions"); - late final _sel_pointerFunctionsWithOptions_1 = - _registerName1("pointerFunctionsWithOptions:"); - ffi.Pointer _objc_msgSend_919( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_919( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_919Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_919 = __objc_msgSend_919Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_hashFunction1 = _registerName1("hashFunction"); - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - _objc_msgSend_920( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_920( - obj, - sel, - ); - } - - late final __objc_msgSend_920Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); - late final __objc_msgSend_920 = __objc_msgSend_920Ptr.asFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setHashFunction_1 = _registerName1("setHashFunction:"); - void _objc_msgSend_921( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value, - ) { - return __objc_msgSend_921( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_921Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>>( - 'objc_msgSend'); - late final __objc_msgSend_921 = __objc_msgSend_921Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>(); - - late final _sel_isEqualFunction1 = _registerName1("isEqualFunction"); - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - _objc_msgSend_922( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_922( - obj, - sel, - ); - } - - late final __objc_msgSend_922Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); - late final __objc_msgSend_922 = __objc_msgSend_922Ptr.asFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setIsEqualFunction_1 = _registerName1("setIsEqualFunction:"); - void _objc_msgSend_923( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value, - ) { - return __objc_msgSend_923( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_923Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>>( - 'objc_msgSend'); - late final __objc_msgSend_923 = __objc_msgSend_923Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>(); - - late final _sel_sizeFunction1 = _registerName1("sizeFunction"); - ffi.Pointer< - ffi.NativeFunction)>> - _objc_msgSend_924( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_924( - obj, - sel, - ); - } - - late final __objc_msgSend_924Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); - late final __objc_msgSend_924 = __objc_msgSend_924Ptr.asFunction< - ffi.Pointer< - ffi - .NativeFunction)>> - Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setSizeFunction_1 = _registerName1("setSizeFunction:"); - void _objc_msgSend_925( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi - .NativeFunction)>> - value, - ) { - return __objc_msgSend_925( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_925Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>('objc_msgSend'); - late final __objc_msgSend_925 = __objc_msgSend_925Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>(); - - late final _sel_descriptionFunction1 = _registerName1("descriptionFunction"); - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>> - _objc_msgSend_926( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_926( - obj, - sel, - ); - } - - late final __objc_msgSend_926Ptr = - _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); - late final __objc_msgSend_926 = __objc_msgSend_926Ptr.asFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>> - Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDescriptionFunction_1 = - _registerName1("setDescriptionFunction:"); - void _objc_msgSend_927( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>> - value, - ) { - return __objc_msgSend_927( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_927Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer)>>)>>('objc_msgSend'); - late final __objc_msgSend_927 = __objc_msgSend_927Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>>)>(); - - late final _sel_relinquishFunction1 = _registerName1("relinquishFunction"); - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - _objc_msgSend_928( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_928( - obj, - sel, - ); - } - - late final __objc_msgSend_928Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); - late final __objc_msgSend_928 = __objc_msgSend_928Ptr.asFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setRelinquishFunction_1 = - _registerName1("setRelinquishFunction:"); - void _objc_msgSend_929( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value, - ) { - return __objc_msgSend_929( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_929Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>>( - 'objc_msgSend'); - late final __objc_msgSend_929 = __objc_msgSend_929Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>(); - - late final _sel_acquireFunction1 = _registerName1("acquireFunction"); - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>, - ffi.Bool)>> _objc_msgSend_930( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_930( - obj, - sel, - ); - } - - late final __objc_msgSend_930Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>, - ffi.Bool)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); - late final __objc_msgSend_930 = __objc_msgSend_930Ptr.asFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>, - ffi.Bool)>> - Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setAcquireFunction_1 = _registerName1("setAcquireFunction:"); - void _objc_msgSend_931( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>, - ffi.Bool)>> - value, - ) { - return __objc_msgSend_931( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_931Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>, - ffi.Bool)>>)>>('objc_msgSend'); - late final __objc_msgSend_931 = __objc_msgSend_931Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>, - ffi.Bool)>>)>(); - - late final _sel_usesStrongWriteBarrier1 = - _registerName1("usesStrongWriteBarrier"); - late final _sel_setUsesStrongWriteBarrier_1 = - _registerName1("setUsesStrongWriteBarrier:"); - late final _sel_usesWeakReadAndWriteBarriers1 = - _registerName1("usesWeakReadAndWriteBarriers"); - late final _sel_setUsesWeakReadAndWriteBarriers_1 = - _registerName1("setUsesWeakReadAndWriteBarriers:"); - late final _sel_initWithPointerFunctions_1 = - _registerName1("initWithPointerFunctions:"); - instancetype _objc_msgSend_932( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer functions, - ) { - return __objc_msgSend_932( - obj, - sel, - functions, - ); - } - - late final __objc_msgSend_932Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_932 = __objc_msgSend_932Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_pointerArrayWithOptions_1 = - _registerName1("pointerArrayWithOptions:"); - ffi.Pointer _objc_msgSend_933( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_933( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_933Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_933 = __objc_msgSend_933Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_pointerArrayWithPointerFunctions_1 = - _registerName1("pointerArrayWithPointerFunctions:"); - ffi.Pointer _objc_msgSend_934( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer functions, - ) { - return __objc_msgSend_934( - obj, - sel, - functions, - ); - } - - late final __objc_msgSend_934Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_934 = __objc_msgSend_934Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_pointerFunctions1 = _registerName1("pointerFunctions"); - ffi.Pointer _objc_msgSend_935( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_935( - obj, - sel, - ); - } - - late final __objc_msgSend_935Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_935 = __objc_msgSend_935Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_pointerAtIndex_1 = _registerName1("pointerAtIndex:"); - ffi.Pointer _objc_msgSend_936( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_936( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_936Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_936 = __objc_msgSend_936Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_addPointer_1 = _registerName1("addPointer:"); - late final _sel_removePointerAtIndex_1 = - _registerName1("removePointerAtIndex:"); - late final _sel_insertPointer_atIndex_1 = - _registerName1("insertPointer:atIndex:"); - late final _sel_replacePointerAtIndex_withPointer_1 = - _registerName1("replacePointerAtIndex:withPointer:"); - void _objc_msgSend_937( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ffi.Pointer item, - ) { - return __objc_msgSend_937( - obj, - sel, - index, - item, - ); - } - - late final __objc_msgSend_937Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_937 = __objc_msgSend_937Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_compact1 = _registerName1("compact"); - late final _sel_setCount_1 = _registerName1("setCount:"); - late final _sel_pointerArrayWithStrongObjects1 = - _registerName1("pointerArrayWithStrongObjects"); - late final _sel_pointerArrayWithWeakObjects1 = - _registerName1("pointerArrayWithWeakObjects"); - late final _sel_strongObjectsPointerArray1 = - _registerName1("strongObjectsPointerArray"); - ffi.Pointer _objc_msgSend_938( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_938( - obj, - sel, - ); - } - - late final __objc_msgSend_938Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_938 = __objc_msgSend_938Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_weakObjectsPointerArray1 = - _registerName1("weakObjectsPointerArray"); - late final _class_NSProcessInfo1 = _getClass1("NSProcessInfo"); - late final _sel_processInfo1 = _registerName1("processInfo"); - ffi.Pointer _objc_msgSend_939( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_939( - obj, - sel, - ); - } - - late final __objc_msgSend_939Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_939 = __objc_msgSend_939Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_environment1 = _registerName1("environment"); - late final _sel_hostName1 = _registerName1("hostName"); - late final _sel_processName1 = _registerName1("processName"); - late final _sel_setProcessName_1 = _registerName1("setProcessName:"); - late final _sel_processIdentifier1 = _registerName1("processIdentifier"); - late final _sel_globallyUniqueString1 = - _registerName1("globallyUniqueString"); - late final _sel_operatingSystem1 = _registerName1("operatingSystem"); - late final _sel_operatingSystemName1 = _registerName1("operatingSystemName"); - late final _sel_operatingSystemVersionString1 = - _registerName1("operatingSystemVersionString"); - late final _sel_operatingSystemVersion1 = - _registerName1("operatingSystemVersion"); - NSOperatingSystemVersion _objc_msgSend_940( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_940( - obj, - sel, - ); - } - - late final __objc_msgSend_940Ptr = _lookup< - ffi.NativeFunction< - NSOperatingSystemVersion Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_940 = __objc_msgSend_940Ptr.asFunction< - NSOperatingSystemVersion Function( - ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_940_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_940_stret( - stret, - obj, - sel, - ); - } - - late final __objc_msgSend_940_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_940_stret = __objc_msgSend_940_stretPtr.asFunction< - void Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_processorCount1 = _registerName1("processorCount"); - late final _sel_activeProcessorCount1 = - _registerName1("activeProcessorCount"); - late final _sel_physicalMemory1 = _registerName1("physicalMemory"); - late final _sel_isOperatingSystemAtLeastVersion_1 = - _registerName1("isOperatingSystemAtLeastVersion:"); - bool _objc_msgSend_941( - ffi.Pointer obj, - ffi.Pointer sel, - NSOperatingSystemVersion version, - ) { - return __objc_msgSend_941( - obj, - sel, - version, - ); - } - - late final __objc_msgSend_941Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - NSOperatingSystemVersion)>>('objc_msgSend'); - late final __objc_msgSend_941 = __objc_msgSend_941Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - NSOperatingSystemVersion)>(); - - late final _sel_systemUptime1 = _registerName1("systemUptime"); - late final _sel_disableSuddenTermination1 = - _registerName1("disableSuddenTermination"); - late final _sel_enableSuddenTermination1 = - _registerName1("enableSuddenTermination"); - late final _sel_disableAutomaticTermination_1 = - _registerName1("disableAutomaticTermination:"); - late final _sel_enableAutomaticTermination_1 = - _registerName1("enableAutomaticTermination:"); - late final _sel_automaticTerminationSupportEnabled1 = - _registerName1("automaticTerminationSupportEnabled"); - late final _sel_setAutomaticTerminationSupportEnabled_1 = - _registerName1("setAutomaticTerminationSupportEnabled:"); - late final _sel_beginActivityWithOptions_reason_1 = - _registerName1("beginActivityWithOptions:reason:"); - ffi.Pointer _objc_msgSend_942( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ffi.Pointer reason, - ) { - return __objc_msgSend_942( - obj, - sel, - options, - reason, - ); - } - - late final __objc_msgSend_942Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_942 = __objc_msgSend_942Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_endActivity_1 = _registerName1("endActivity:"); - late final _sel_performActivityWithOptions_reason_usingBlock_1 = - _registerName1("performActivityWithOptions:reason:usingBlock:"); - void _objc_msgSend_943( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ffi.Pointer reason, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_943( - obj, - sel, - options, - reason, - block, - ); - } - - late final __objc_msgSend_943Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_943 = __objc_msgSend_943Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_performExpiringActivityWithReason_usingBlock_1 = - _registerName1("performExpiringActivityWithReason:usingBlock:"); - void _objc_msgSend_944( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer reason, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_944( - obj, - sel, - reason, - block, - ); - } - - late final __objc_msgSend_944Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_944 = __objc_msgSend_944Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_userName1 = _registerName1("userName"); - late final _sel_fullUserName1 = _registerName1("fullUserName"); - late final _sel_thermalState1 = _registerName1("thermalState"); - int _objc_msgSend_945( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_945( - obj, - sel, - ); - } - - late final __objc_msgSend_945Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_945 = __objc_msgSend_945Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isLowPowerModeEnabled1 = - _registerName1("isLowPowerModeEnabled"); - late final _sel_isMacCatalystApp1 = _registerName1("isMacCatalystApp"); - late final _sel_isiOSAppOnMac1 = _registerName1("isiOSAppOnMac"); - late final _class_NSTextCheckingResult1 = _getClass1("NSTextCheckingResult"); - late final _sel_resultType1 = _registerName1("resultType"); - int _objc_msgSend_946( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_946( - obj, - sel, - ); - } - - late final __objc_msgSend_946Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_946 = __objc_msgSend_946Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_range1 = _registerName1("range"); - late final _sel_orthography1 = _registerName1("orthography"); - ffi.Pointer _objc_msgSend_947( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_947( - obj, - sel, - ); - } - - late final __objc_msgSend_947Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_947 = __objc_msgSend_947Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_grammarDetails1 = _registerName1("grammarDetails"); - late final _sel_duration1 = _registerName1("duration"); - late final _sel_components1 = _registerName1("components"); - late final _sel_replacementString1 = _registerName1("replacementString"); - late final _sel_alternativeStrings1 = _registerName1("alternativeStrings"); - late final _class_NSRegularExpression1 = _getClass1("NSRegularExpression"); - late final _sel_regularExpressionWithPattern_options_error_1 = - _registerName1("regularExpressionWithPattern:options:error:"); - ffi.Pointer _objc_msgSend_948( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer pattern, - int options, - ffi.Pointer> error, - ) { - return __objc_msgSend_948( - obj, - sel, - pattern, - options, - error, - ); - } - - late final __objc_msgSend_948Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_948 = __objc_msgSend_948Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_initWithPattern_options_error_1 = - _registerName1("initWithPattern:options:error:"); - instancetype _objc_msgSend_949( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer pattern, - int options, - ffi.Pointer> error, - ) { - return __objc_msgSend_949( - obj, - sel, - pattern, - options, - error, - ); - } - - late final __objc_msgSend_949Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_949 = __objc_msgSend_949Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_pattern1 = _registerName1("pattern"); - late final _sel_options1 = _registerName1("options"); - int _objc_msgSend_950( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_950( - obj, - sel, - ); - } - - late final __objc_msgSend_950Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_950 = __objc_msgSend_950Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_numberOfCaptureGroups1 = - _registerName1("numberOfCaptureGroups"); - late final _sel_escapedPatternForString_1 = - _registerName1("escapedPatternForString:"); - late final _sel_enumerateMatchesInString_options_range_usingBlock_1 = - _registerName1("enumerateMatchesInString:options:range:usingBlock:"); - void _objc_msgSend_951( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_951( - obj, - sel, - string, - options, - range, - block, - ); - } - - late final __objc_msgSend_951Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_951 = __objc_msgSend_951Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_matchesInString_options_range_1 = - _registerName1("matchesInString:options:range:"); - ffi.Pointer _objc_msgSend_952( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ) { - return __objc_msgSend_952( - obj, - sel, - string, - options, - range, - ); - } - - late final __objc_msgSend_952Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_952 = __objc_msgSend_952Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - - late final _sel_numberOfMatchesInString_options_range_1 = - _registerName1("numberOfMatchesInString:options:range:"); - int _objc_msgSend_953( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ) { - return __objc_msgSend_953( - obj, - sel, - string, - options, - range, - ); - } - - late final __objc_msgSend_953Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_953 = __objc_msgSend_953Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange)>(); - - late final _sel_firstMatchInString_options_range_1 = - _registerName1("firstMatchInString:options:range:"); - ffi.Pointer _objc_msgSend_954( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ) { - return __objc_msgSend_954( - obj, - sel, - string, - options, - range, - ); - } - - late final __objc_msgSend_954Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_954 = __objc_msgSend_954Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - - late final _sel_rangeOfFirstMatchInString_options_range_1 = - _registerName1("rangeOfFirstMatchInString:options:range:"); - _NSRange _objc_msgSend_955( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ) { - return __objc_msgSend_955( - obj, - sel, - string, - options, - range, - ); - } - - late final __objc_msgSend_955Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_955 = __objc_msgSend_955Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange)>(); - - void _objc_msgSend_955_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ) { - return __objc_msgSend_955_stret( - stret, - obj, - sel, - string, - options, - range, - ); - } - - late final __objc_msgSend_955_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend_stret'); - late final __objc_msgSend_955_stret = __objc_msgSend_955_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - - late final _sel_stringByReplacingMatchesInString_options_range_withTemplate_1 = - _registerName1( - "stringByReplacingMatchesInString:options:range:withTemplate:"); - ffi.Pointer _objc_msgSend_956( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ffi.Pointer templ, - ) { - return __objc_msgSend_956( - obj, - sel, - string, - options, - range, - templ, - ); - } - - late final __objc_msgSend_956Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_956 = __objc_msgSend_956Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - _NSRange, - ffi.Pointer)>(); - - late final _sel_replaceMatchesInString_options_range_withTemplate_1 = - _registerName1("replaceMatchesInString:options:range:withTemplate:"); - int _objc_msgSend_957( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ffi.Pointer templ, - ) { - return __objc_msgSend_957( - obj, - sel, - string, - options, - range, - templ, - ); - } - - late final __objc_msgSend_957Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_957 = __objc_msgSend_957Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange, ffi.Pointer)>(); - - late final _sel_replacementStringForResult_inString_offset_template_1 = - _registerName1("replacementStringForResult:inString:offset:template:"); - ffi.Pointer _objc_msgSend_958( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ffi.Pointer string, - int offset, - ffi.Pointer templ, - ) { - return __objc_msgSend_958( - obj, - sel, - result, - string, - offset, - templ, - ); - } - - late final __objc_msgSend_958Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_958 = __objc_msgSend_958Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer)>(); - - late final _sel_escapedTemplateForString_1 = - _registerName1("escapedTemplateForString:"); - late final _sel_regularExpression1 = _registerName1("regularExpression"); - ffi.Pointer _objc_msgSend_959( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_959( - obj, - sel, - ); - } - - late final __objc_msgSend_959Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_959 = __objc_msgSend_959Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_phoneNumber1 = _registerName1("phoneNumber"); - late final _sel_numberOfRanges1 = _registerName1("numberOfRanges"); - late final _sel_rangeAtIndex_1 = _registerName1("rangeAtIndex:"); - late final _sel_rangeWithName_1 = _registerName1("rangeWithName:"); - late final _sel_resultByAdjustingRangesWithOffset_1 = - _registerName1("resultByAdjustingRangesWithOffset:"); - ffi.Pointer _objc_msgSend_960( - ffi.Pointer obj, - ffi.Pointer sel, - int offset, - ) { - return __objc_msgSend_960( - obj, - sel, - offset, - ); - } - - late final __objc_msgSend_960Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_960 = __objc_msgSend_960Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_addressComponents1 = _registerName1("addressComponents"); - late final _sel_orthographyCheckingResultWithRange_orthography_1 = - _registerName1("orthographyCheckingResultWithRange:orthography:"); - ffi.Pointer _objc_msgSend_961( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer orthography, - ) { - return __objc_msgSend_961( - obj, - sel, - range, - orthography, - ); - } - - late final __objc_msgSend_961Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_961 = __objc_msgSend_961Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); - - late final _sel_spellCheckingResultWithRange_1 = - _registerName1("spellCheckingResultWithRange:"); - ffi.Pointer _objc_msgSend_962( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_962( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_962Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_962 = __objc_msgSend_962Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_grammarCheckingResultWithRange_details_1 = - _registerName1("grammarCheckingResultWithRange:details:"); - ffi.Pointer _objc_msgSend_963( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer details, - ) { - return __objc_msgSend_963( - obj, - sel, - range, - details, - ); - } - - late final __objc_msgSend_963Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_963 = __objc_msgSend_963Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); - - late final _sel_dateCheckingResultWithRange_date_1 = - _registerName1("dateCheckingResultWithRange:date:"); - ffi.Pointer _objc_msgSend_964( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer date, - ) { - return __objc_msgSend_964( - obj, - sel, - range, - date, - ); - } - - late final __objc_msgSend_964Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_964 = __objc_msgSend_964Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); - - late final _sel_dateCheckingResultWithRange_date_timeZone_duration_1 = - _registerName1("dateCheckingResultWithRange:date:timeZone:duration:"); - ffi.Pointer _objc_msgSend_965( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer date, - ffi.Pointer timeZone, - double duration, - ) { - return __objc_msgSend_965( - obj, - sel, - range, - date, - timeZone, - duration, - ); - } - - late final __objc_msgSend_965Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - ffi.Pointer, - ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_965 = __objc_msgSend_965Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - ffi.Pointer, - double)>(); - - late final _sel_addressCheckingResultWithRange_components_1 = - _registerName1("addressCheckingResultWithRange:components:"); - ffi.Pointer _objc_msgSend_966( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer components, - ) { - return __objc_msgSend_966( - obj, - sel, - range, - components, - ); - } - - late final __objc_msgSend_966Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_966 = __objc_msgSend_966Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); - - late final _sel_linkCheckingResultWithRange_URL_1 = - _registerName1("linkCheckingResultWithRange:URL:"); - ffi.Pointer _objc_msgSend_967( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer url, - ) { - return __objc_msgSend_967( - obj, - sel, - range, - url, - ); - } - - late final __objc_msgSend_967Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_967 = __objc_msgSend_967Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); - - late final _sel_quoteCheckingResultWithRange_replacementString_1 = - _registerName1("quoteCheckingResultWithRange:replacementString:"); - ffi.Pointer _objc_msgSend_968( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer replacementString, - ) { - return __objc_msgSend_968( - obj, - sel, - range, - replacementString, - ); - } - - late final __objc_msgSend_968Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_968 = __objc_msgSend_968Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); - - late final _sel_dashCheckingResultWithRange_replacementString_1 = - _registerName1("dashCheckingResultWithRange:replacementString:"); - late final _sel_replacementCheckingResultWithRange_replacementString_1 = - _registerName1("replacementCheckingResultWithRange:replacementString:"); - late final _sel_correctionCheckingResultWithRange_replacementString_1 = - _registerName1("correctionCheckingResultWithRange:replacementString:"); - late final _sel_correctionCheckingResultWithRange_replacementString_alternativeStrings_1 = - _registerName1( - "correctionCheckingResultWithRange:replacementString:alternativeStrings:"); - ffi.Pointer _objc_msgSend_969( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer replacementString, - ffi.Pointer alternativeStrings, - ) { - return __objc_msgSend_969( - obj, - sel, - range, - replacementString, - alternativeStrings, - ); - } - - late final __objc_msgSend_969Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_969 = __objc_msgSend_969Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_regularExpressionCheckingResultWithRanges_count_regularExpression_1 = - _registerName1( - "regularExpressionCheckingResultWithRanges:count:regularExpression:"); - ffi.Pointer _objc_msgSend_970( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_NSRange> ranges, - int count, - ffi.Pointer regularExpression, - ) { - return __objc_msgSend_970( - obj, - sel, - ranges, - count, - regularExpression, - ); - } - - late final __objc_msgSend_970Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_NSRange>, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_970 = __objc_msgSend_970Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_NSRange>, - int, - ffi.Pointer)>(); - - late final _sel_phoneNumberCheckingResultWithRange_phoneNumber_1 = - _registerName1("phoneNumberCheckingResultWithRange:phoneNumber:"); - late final _sel_transitInformationCheckingResultWithRange_components_1 = - _registerName1("transitInformationCheckingResultWithRange:components:"); - late final _class_NSURLCache1 = _getClass1("NSURLCache"); - late final _sel_sharedURLCache1 = _registerName1("sharedURLCache"); - ffi.Pointer _objc_msgSend_971( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_971( - obj, - sel, - ); - } - - late final __objc_msgSend_971Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_971 = __objc_msgSend_971Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setSharedURLCache_1 = _registerName1("setSharedURLCache:"); - void _objc_msgSend_972( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_972( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_972Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_972 = __objc_msgSend_972Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithMemoryCapacity_diskCapacity_diskPath_1 = - _registerName1("initWithMemoryCapacity:diskCapacity:diskPath:"); - instancetype _objc_msgSend_973( - ffi.Pointer obj, - ffi.Pointer sel, - int memoryCapacity, - int diskCapacity, - ffi.Pointer path, - ) { - return __objc_msgSend_973( - obj, - sel, - memoryCapacity, - diskCapacity, - path, - ); - } - - late final __objc_msgSend_973Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_973 = __objc_msgSend_973Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - int, ffi.Pointer)>(); - - late final _sel_initWithMemoryCapacity_diskCapacity_directoryURL_1 = - _registerName1("initWithMemoryCapacity:diskCapacity:directoryURL:"); - instancetype _objc_msgSend_974( - ffi.Pointer obj, - ffi.Pointer sel, - int memoryCapacity, - int diskCapacity, - ffi.Pointer directoryURL, - ) { - return __objc_msgSend_974( - obj, - sel, - memoryCapacity, - diskCapacity, - directoryURL, - ); - } - - late final __objc_msgSend_974Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_974 = __objc_msgSend_974Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - int, ffi.Pointer)>(); - - late final _class_NSCachedURLResponse1 = _getClass1("NSCachedURLResponse"); - late final _sel_initWithResponse_data_1 = - _registerName1("initWithResponse:data:"); - instancetype _objc_msgSend_975( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer response, - ffi.Pointer data, - ) { - return __objc_msgSend_975( - obj, - sel, - response, - data, - ); - } - - late final __objc_msgSend_975Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_975 = __objc_msgSend_975Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithResponse_data_userInfo_storagePolicy_1 = - _registerName1("initWithResponse:data:userInfo:storagePolicy:"); - instancetype _objc_msgSend_976( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer response, - ffi.Pointer data, - ffi.Pointer userInfo, - int storagePolicy, - ) { - return __objc_msgSend_976( - obj, - sel, - response, - data, - userInfo, - storagePolicy, - ); - } - - late final __objc_msgSend_976Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_976 = __objc_msgSend_976Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int)>(); - - ffi.Pointer _objc_msgSend_977( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_977( - obj, - sel, - ); - } - - late final __objc_msgSend_977Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_977 = __objc_msgSend_977Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_storagePolicy1 = _registerName1("storagePolicy"); - int _objc_msgSend_978( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_978( - obj, - sel, - ); - } - - late final __objc_msgSend_978Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_978 = __objc_msgSend_978Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_cachedResponseForRequest_1 = - _registerName1("cachedResponseForRequest:"); - ffi.Pointer _objc_msgSend_979( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_979( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_979Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_979 = __objc_msgSend_979Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_storeCachedResponse_forRequest_1 = - _registerName1("storeCachedResponse:forRequest:"); - void _objc_msgSend_980( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer cachedResponse, - ffi.Pointer request, - ) { - return __objc_msgSend_980( - obj, - sel, - cachedResponse, - request, - ); - } - - late final __objc_msgSend_980Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_980 = __objc_msgSend_980Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_removeCachedResponseForRequest_1 = - _registerName1("removeCachedResponseForRequest:"); - void _objc_msgSend_981( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_981( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_981Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_981 = __objc_msgSend_981Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeAllCachedResponses1 = - _registerName1("removeAllCachedResponses"); - late final _sel_removeCachedResponsesSinceDate_1 = - _registerName1("removeCachedResponsesSinceDate:"); - late final _sel_memoryCapacity1 = _registerName1("memoryCapacity"); - late final _sel_setMemoryCapacity_1 = _registerName1("setMemoryCapacity:"); - late final _sel_diskCapacity1 = _registerName1("diskCapacity"); - late final _sel_setDiskCapacity_1 = _registerName1("setDiskCapacity:"); - late final _sel_currentMemoryUsage1 = _registerName1("currentMemoryUsage"); - late final _sel_currentDiskUsage1 = _registerName1("currentDiskUsage"); - late final _class_NSURLSessionDataTask1 = _getClass1("NSURLSessionDataTask"); - late final _sel_storeCachedResponse_forDataTask_1 = - _registerName1("storeCachedResponse:forDataTask:"); - void _objc_msgSend_982( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer cachedResponse, - ffi.Pointer dataTask, - ) { - return __objc_msgSend_982( - obj, - sel, - cachedResponse, - dataTask, - ); - } - - late final __objc_msgSend_982Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_982 = __objc_msgSend_982Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_getCachedResponseForDataTask_completionHandler_1 = - _registerName1("getCachedResponseForDataTask:completionHandler:"); - void _objc_msgSend_983( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer dataTask, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_983( - obj, - sel, - dataTask, - completionHandler, - ); - } - - late final __objc_msgSend_983Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_983 = __objc_msgSend_983Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_removeCachedResponseForDataTask_1 = - _registerName1("removeCachedResponseForDataTask:"); - void _objc_msgSend_984( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer dataTask, - ) { - return __objc_msgSend_984( - obj, - sel, - dataTask, - ); - } - - late final __objc_msgSend_984Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_984 = __objc_msgSend_984Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSURLConnection1 = _getClass1("NSURLConnection"); - late final _sel_initWithRequest_delegate_startImmediately_1 = - _registerName1("initWithRequest:delegate:startImmediately:"); - instancetype _objc_msgSend_985( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer delegate, - bool startImmediately, - ) { - return __objc_msgSend_985( - obj, - sel, - request, - delegate, - startImmediately, - ); - } - - late final __objc_msgSend_985Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_985 = __objc_msgSend_985Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_initWithRequest_delegate_1 = - _registerName1("initWithRequest:delegate:"); - instancetype _objc_msgSend_986( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer delegate, - ) { - return __objc_msgSend_986( - obj, - sel, - request, - delegate, - ); - } - - late final __objc_msgSend_986Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_986 = __objc_msgSend_986Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_connectionWithRequest_delegate_1 = - _registerName1("connectionWithRequest:delegate:"); - ffi.Pointer _objc_msgSend_987( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer delegate, - ) { - return __objc_msgSend_987( - obj, - sel, - request, - delegate, - ); - } - - late final __objc_msgSend_987Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_987 = __objc_msgSend_987Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - ffi.Pointer _objc_msgSend_988( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_988( - obj, - sel, - ); - } - - late final __objc_msgSend_988Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_988 = __objc_msgSend_988Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_unscheduleFromRunLoop_forMode_1 = - _registerName1("unscheduleFromRunLoop:forMode:"); - late final _sel_setDelegateQueue_1 = _registerName1("setDelegateQueue:"); - void _objc_msgSend_989( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer queue, - ) { - return __objc_msgSend_989( - obj, - sel, - queue, - ); - } - - late final __objc_msgSend_989Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_989 = __objc_msgSend_989Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_canHandleRequest_1 = _registerName1("canHandleRequest:"); - bool _objc_msgSend_990( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_990( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_990Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_990 = __objc_msgSend_990Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_sendSynchronousRequest_returningResponse_error_1 = - _registerName1("sendSynchronousRequest:returningResponse:error:"); - ffi.Pointer _objc_msgSend_991( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer> response, - ffi.Pointer> error, - ) { - return __objc_msgSend_991( - obj, - sel, - request, - response, - error, - ); - } - - late final __objc_msgSend_991Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_991 = __objc_msgSend_991Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_sendAsynchronousRequest_queue_completionHandler_1 = - _registerName1("sendAsynchronousRequest:queue:completionHandler:"); - void _objc_msgSend_992( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer queue, - ffi.Pointer<_ObjCBlock> handler, - ) { - return __objc_msgSend_992( - obj, - sel, - request, - queue, - handler, - ); - } - - late final __objc_msgSend_992Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_992 = __objc_msgSend_992Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _class_NSURLCredential1 = _getClass1("NSURLCredential"); - late final _sel_persistence1 = _registerName1("persistence"); - int _objc_msgSend_993( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_993( - obj, - sel, - ); - } - - late final __objc_msgSend_993Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_993 = __objc_msgSend_993Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithUser_password_persistence_1 = - _registerName1("initWithUser:password:persistence:"); - instancetype _objc_msgSend_994( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer user, - ffi.Pointer password, - int persistence, - ) { - return __objc_msgSend_994( - obj, - sel, - user, - password, - persistence, - ); - } - - late final __objc_msgSend_994Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_994 = __objc_msgSend_994Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_credentialWithUser_password_persistence_1 = - _registerName1("credentialWithUser:password:persistence:"); - ffi.Pointer _objc_msgSend_995( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer user, - ffi.Pointer password, - int persistence, - ) { - return __objc_msgSend_995( - obj, - sel, - user, - password, - persistence, - ); - } - - late final __objc_msgSend_995Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_995 = __objc_msgSend_995Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _sel_hasPassword1 = _registerName1("hasPassword"); - late final _sel_initWithIdentity_certificates_persistence_1 = - _registerName1("initWithIdentity:certificates:persistence:"); - instancetype _objc_msgSend_996( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<__SecIdentity> identity, - ffi.Pointer certArray, - int persistence, - ) { - return __objc_msgSend_996( - obj, - sel, - identity, - certArray, - persistence, - ); - } - - late final __objc_msgSend_996Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__SecIdentity>, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_996 = __objc_msgSend_996Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<__SecIdentity>, ffi.Pointer, int)>(); - - late final _sel_credentialWithIdentity_certificates_persistence_1 = - _registerName1("credentialWithIdentity:certificates:persistence:"); - ffi.Pointer _objc_msgSend_997( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<__SecIdentity> identity, - ffi.Pointer certArray, - int persistence, - ) { - return __objc_msgSend_997( - obj, - sel, - identity, - certArray, - persistence, - ); - } - - late final __objc_msgSend_997Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__SecIdentity>, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_997 = __objc_msgSend_997Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__SecIdentity>, - ffi.Pointer, - int)>(); - - late final _sel_identity1 = _registerName1("identity"); - ffi.Pointer<__SecIdentity> _objc_msgSend_998( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_998( - obj, - sel, - ); - } - - late final __objc_msgSend_998Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<__SecIdentity> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_998 = __objc_msgSend_998Ptr.asFunction< - ffi.Pointer<__SecIdentity> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_certificates1 = _registerName1("certificates"); - late final _sel_initWithTrust_1 = _registerName1("initWithTrust:"); - instancetype _objc_msgSend_999( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<__SecTrust> trust, - ) { - return __objc_msgSend_999( - obj, - sel, - trust, - ); - } - - late final __objc_msgSend_999Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<__SecTrust>)>>('objc_msgSend'); - late final __objc_msgSend_999 = __objc_msgSend_999Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<__SecTrust>)>(); - - late final _sel_credentialForTrust_1 = _registerName1("credentialForTrust:"); - ffi.Pointer _objc_msgSend_1000( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<__SecTrust> trust, - ) { - return __objc_msgSend_1000( - obj, - sel, - trust, - ); - } - - late final __objc_msgSend_1000Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<__SecTrust>)>>('objc_msgSend'); - late final __objc_msgSend_1000 = __objc_msgSend_1000Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<__SecTrust>)>(); - - late final _class_NSURLProtectionSpace1 = _getClass1("NSURLProtectionSpace"); - late final _sel_initWithHost_port_protocol_realm_authenticationMethod_1 = - _registerName1("initWithHost:port:protocol:realm:authenticationMethod:"); - instancetype _objc_msgSend_1001( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer host, - int port, - ffi.Pointer protocol, - ffi.Pointer realm, - ffi.Pointer authenticationMethod, - ) { - return __objc_msgSend_1001( - obj, - sel, - host, - port, - protocol, - realm, - authenticationMethod, - ); - } - - late final __objc_msgSend_1001Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1001 = __objc_msgSend_1001Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithProxyHost_port_type_realm_authenticationMethod_1 = - _registerName1("initWithProxyHost:port:type:realm:authenticationMethod:"); - late final _sel_realm1 = _registerName1("realm"); - late final _sel_receivesCredentialSecurely1 = - _registerName1("receivesCredentialSecurely"); - late final _sel_isProxy1 = _registerName1("isProxy"); - late final _sel_proxyType1 = _registerName1("proxyType"); - late final _sel_protocol1 = _registerName1("protocol"); - late final _sel_authenticationMethod1 = - _registerName1("authenticationMethod"); - late final _sel_distinguishedNames1 = _registerName1("distinguishedNames"); - late final _sel_serverTrust1 = _registerName1("serverTrust"); - ffi.Pointer<__SecTrust> _objc_msgSend_1002( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1002( - obj, - sel, - ); - } - - late final __objc_msgSend_1002Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<__SecTrust> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1002 = __objc_msgSend_1002Ptr.asFunction< - ffi.Pointer<__SecTrust> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSURLCredentialStorage1 = - _getClass1("NSURLCredentialStorage"); - late final _sel_sharedCredentialStorage1 = - _registerName1("sharedCredentialStorage"); - ffi.Pointer _objc_msgSend_1003( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1003( - obj, - sel, - ); - } - - late final __objc_msgSend_1003Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1003 = __objc_msgSend_1003Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_credentialsForProtectionSpace_1 = - _registerName1("credentialsForProtectionSpace:"); - ffi.Pointer _objc_msgSend_1004( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer space, - ) { - return __objc_msgSend_1004( - obj, - sel, - space, - ); - } - - late final __objc_msgSend_1004Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1004 = __objc_msgSend_1004Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_allCredentials1 = _registerName1("allCredentials"); - late final _sel_setCredential_forProtectionSpace_1 = - _registerName1("setCredential:forProtectionSpace:"); - void _objc_msgSend_1005( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer credential, - ffi.Pointer space, - ) { - return __objc_msgSend_1005( - obj, - sel, - credential, - space, - ); - } - - late final __objc_msgSend_1005Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1005 = __objc_msgSend_1005Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_removeCredential_forProtectionSpace_1 = - _registerName1("removeCredential:forProtectionSpace:"); - late final _sel_removeCredential_forProtectionSpace_options_1 = - _registerName1("removeCredential:forProtectionSpace:options:"); - void _objc_msgSend_1006( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer credential, - ffi.Pointer space, - ffi.Pointer options, - ) { - return __objc_msgSend_1006( - obj, - sel, - credential, - space, - options, - ); - } - - late final __objc_msgSend_1006Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1006 = __objc_msgSend_1006Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_defaultCredentialForProtectionSpace_1 = - _registerName1("defaultCredentialForProtectionSpace:"); - ffi.Pointer _objc_msgSend_1007( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer space, - ) { - return __objc_msgSend_1007( - obj, - sel, - space, - ); - } - - late final __objc_msgSend_1007Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1007 = __objc_msgSend_1007Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDefaultCredential_forProtectionSpace_1 = - _registerName1("setDefaultCredential:forProtectionSpace:"); - late final _sel_getCredentialsForProtectionSpace_task_completionHandler_1 = - _registerName1( - "getCredentialsForProtectionSpace:task:completionHandler:"); - void _objc_msgSend_1008( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer protectionSpace, - ffi.Pointer task, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1008( - obj, - sel, - protectionSpace, - task, - completionHandler, - ); - } - - late final __objc_msgSend_1008Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1008 = __objc_msgSend_1008Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_setCredential_forProtectionSpace_task_1 = - _registerName1("setCredential:forProtectionSpace:task:"); - void _objc_msgSend_1009( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer credential, - ffi.Pointer protectionSpace, - ffi.Pointer task, - ) { - return __objc_msgSend_1009( - obj, - sel, - credential, - protectionSpace, - task, - ); - } - - late final __objc_msgSend_1009Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1009 = __objc_msgSend_1009Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeCredential_forProtectionSpace_options_task_1 = - _registerName1("removeCredential:forProtectionSpace:options:task:"); - void _objc_msgSend_1010( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer credential, - ffi.Pointer protectionSpace, - ffi.Pointer options, - ffi.Pointer task, - ) { - return __objc_msgSend_1010( - obj, - sel, - credential, - protectionSpace, - options, - task, - ); - } - - late final __objc_msgSend_1010Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1010 = __objc_msgSend_1010Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_getDefaultCredentialForProtectionSpace_task_completionHandler_1 = - _registerName1( - "getDefaultCredentialForProtectionSpace:task:completionHandler:"); - void _objc_msgSend_1011( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer space, - ffi.Pointer task, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1011( - obj, - sel, - space, - task, - completionHandler, - ); - } - - late final __objc_msgSend_1011Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1011 = __objc_msgSend_1011Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_setDefaultCredential_forProtectionSpace_task_1 = - _registerName1("setDefaultCredential:forProtectionSpace:task:"); - late final _class_NSURLProtocol1 = _getClass1("NSURLProtocol"); - late final _sel_initWithRequest_cachedResponse_client_1 = - _registerName1("initWithRequest:cachedResponse:client:"); - instancetype _objc_msgSend_1012( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer cachedResponse, - ffi.Pointer client, - ) { - return __objc_msgSend_1012( - obj, - sel, - request, - cachedResponse, - client, - ); - } - - late final __objc_msgSend_1012Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1012 = __objc_msgSend_1012Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_client1 = _registerName1("client"); - late final _sel_request1 = _registerName1("request"); - late final _sel_cachedResponse1 = _registerName1("cachedResponse"); - ffi.Pointer _objc_msgSend_1013( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1013( - obj, - sel, - ); - } - - late final __objc_msgSend_1013Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1013 = __objc_msgSend_1013Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_canInitWithRequest_1 = _registerName1("canInitWithRequest:"); - late final _sel_canonicalRequestForRequest_1 = - _registerName1("canonicalRequestForRequest:"); - ffi.Pointer _objc_msgSend_1014( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_1014( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_1014Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1014 = __objc_msgSend_1014Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_requestIsCacheEquivalent_toRequest_1 = - _registerName1("requestIsCacheEquivalent:toRequest:"); - bool _objc_msgSend_1015( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer a, - ffi.Pointer b, - ) { - return __objc_msgSend_1015( - obj, - sel, - a, - b, - ); - } - - late final __objc_msgSend_1015Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1015 = __objc_msgSend_1015Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_startLoading1 = _registerName1("startLoading"); - late final _sel_stopLoading1 = _registerName1("stopLoading"); - late final _sel_propertyForKey_inRequest_1 = - _registerName1("propertyForKey:inRequest:"); - ffi.Pointer _objc_msgSend_1016( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer request, - ) { - return __objc_msgSend_1016( - obj, - sel, - key, - request, - ); - } - - late final __objc_msgSend_1016Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1016 = __objc_msgSend_1016Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSMutableURLRequest1 = _getClass1("NSMutableURLRequest"); - late final _sel_setURL_1 = _registerName1("setURL:"); - late final _sel_setCachePolicy_1 = _registerName1("setCachePolicy:"); - void _objc_msgSend_1017( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1017( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1017Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1017 = __objc_msgSend_1017Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_setTimeoutInterval_1 = _registerName1("setTimeoutInterval:"); - late final _sel_setMainDocumentURL_1 = _registerName1("setMainDocumentURL:"); - late final _sel_setNetworkServiceType_1 = - _registerName1("setNetworkServiceType:"); - void _objc_msgSend_1018( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1018( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1018Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1018 = __objc_msgSend_1018Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_setAllowsCellularAccess_1 = - _registerName1("setAllowsCellularAccess:"); - late final _sel_setAllowsExpensiveNetworkAccess_1 = - _registerName1("setAllowsExpensiveNetworkAccess:"); - late final _sel_setAllowsConstrainedNetworkAccess_1 = - _registerName1("setAllowsConstrainedNetworkAccess:"); - late final _sel_setAssumesHTTP3Capable_1 = - _registerName1("setAssumesHTTP3Capable:"); - late final _sel_setAttribution_1 = _registerName1("setAttribution:"); - void _objc_msgSend_1019( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1019( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1019Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1019 = __objc_msgSend_1019Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_setRequiresDNSSECValidation_1 = - _registerName1("setRequiresDNSSECValidation:"); - late final _sel_setHTTPMethod_1 = _registerName1("setHTTPMethod:"); - late final _sel_setAllHTTPHeaderFields_1 = - _registerName1("setAllHTTPHeaderFields:"); - late final _sel_setValue_forHTTPHeaderField_1 = - _registerName1("setValue:forHTTPHeaderField:"); - void _objc_msgSend_1020( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer field, - ) { - return __objc_msgSend_1020( - obj, - sel, - value, - field, - ); - } - - late final __objc_msgSend_1020Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1020 = __objc_msgSend_1020Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addValue_forHTTPHeaderField_1 = - _registerName1("addValue:forHTTPHeaderField:"); - late final _sel_setHTTPBody_1 = _registerName1("setHTTPBody:"); - void _objc_msgSend_1021( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1021( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1021Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1021 = __objc_msgSend_1021Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setHTTPBodyStream_1 = _registerName1("setHTTPBodyStream:"); - void _objc_msgSend_1022( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1022( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1022Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1022 = __objc_msgSend_1022Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setHTTPShouldHandleCookies_1 = - _registerName1("setHTTPShouldHandleCookies:"); - late final _sel_setHTTPShouldUsePipelining_1 = - _registerName1("setHTTPShouldUsePipelining:"); - late final _sel_setProperty_forKey_inRequest_1 = - _registerName1("setProperty:forKey:inRequest:"); - void _objc_msgSend_1023( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer key, - ffi.Pointer request, - ) { - return __objc_msgSend_1023( - obj, - sel, - value, - key, - request, - ); - } - - late final __objc_msgSend_1023Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1023 = __objc_msgSend_1023Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removePropertyForKey_inRequest_1 = - _registerName1("removePropertyForKey:inRequest:"); - void _objc_msgSend_1024( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer request, - ) { - return __objc_msgSend_1024( - obj, - sel, - key, - request, - ); - } - - late final __objc_msgSend_1024Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1024 = __objc_msgSend_1024Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_registerClass_1 = _registerName1("registerClass:"); - late final _sel_unregisterClass_1 = _registerName1("unregisterClass:"); - late final _sel_canInitWithTask_1 = _registerName1("canInitWithTask:"); - bool _objc_msgSend_1025( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer task, - ) { - return __objc_msgSend_1025( - obj, - sel, - task, - ); - } - - late final __objc_msgSend_1025Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1025 = __objc_msgSend_1025Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithTask_cachedResponse_client_1 = - _registerName1("initWithTask:cachedResponse:client:"); - instancetype _objc_msgSend_1026( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer task, - ffi.Pointer cachedResponse, - ffi.Pointer client, - ) { - return __objc_msgSend_1026( - obj, - sel, - task, - cachedResponse, - client, - ); - } - - late final __objc_msgSend_1026Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1026 = __objc_msgSend_1026Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_task1 = _registerName1("task"); - ffi.Pointer _objc_msgSend_1027( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1027( - obj, - sel, - ); - } - - late final __objc_msgSend_1027Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1027 = __objc_msgSend_1027Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSXMLParser1 = _getClass1("NSXMLParser"); - late final _sel_initWithStream_1 = _registerName1("initWithStream:"); - instancetype _objc_msgSend_1028( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer stream, - ) { - return __objc_msgSend_1028( - obj, - sel, - stream, - ); - } - - late final __objc_msgSend_1028Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1028 = __objc_msgSend_1028Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_shouldProcessNamespaces1 = - _registerName1("shouldProcessNamespaces"); - late final _sel_setShouldProcessNamespaces_1 = - _registerName1("setShouldProcessNamespaces:"); - late final _sel_shouldReportNamespacePrefixes1 = - _registerName1("shouldReportNamespacePrefixes"); - late final _sel_setShouldReportNamespacePrefixes_1 = - _registerName1("setShouldReportNamespacePrefixes:"); - late final _sel_externalEntityResolvingPolicy1 = - _registerName1("externalEntityResolvingPolicy"); - int _objc_msgSend_1029( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1029( - obj, - sel, - ); - } - - late final __objc_msgSend_1029Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1029 = __objc_msgSend_1029Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setExternalEntityResolvingPolicy_1 = - _registerName1("setExternalEntityResolvingPolicy:"); - void _objc_msgSend_1030( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1030( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1030Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1030 = __objc_msgSend_1030Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_allowedExternalEntityURLs1 = - _registerName1("allowedExternalEntityURLs"); - late final _sel_setAllowedExternalEntityURLs_1 = - _registerName1("setAllowedExternalEntityURLs:"); - void _objc_msgSend_1031( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1031( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1031Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1031 = __objc_msgSend_1031Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_parse1 = _registerName1("parse"); - late final _sel_abortParsing1 = _registerName1("abortParsing"); - late final _sel_parserError1 = _registerName1("parserError"); - late final _sel_shouldResolveExternalEntities1 = - _registerName1("shouldResolveExternalEntities"); - late final _sel_setShouldResolveExternalEntities_1 = - _registerName1("setShouldResolveExternalEntities:"); - late final _sel_publicID1 = _registerName1("publicID"); - late final _sel_systemID1 = _registerName1("systemID"); - late final _sel_lineNumber1 = _registerName1("lineNumber"); - late final _sel_columnNumber1 = _registerName1("columnNumber"); - late final _class_NSFileWrapper1 = _getClass1("NSFileWrapper"); - late final _sel_initWithURL_options_error_1 = - _registerName1("initWithURL:options:error:"); - instancetype _objc_msgSend_1032( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int options, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1032( - obj, - sel, - url, - options, - outError, - ); - } - - late final __objc_msgSend_1032Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1032 = __objc_msgSend_1032Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_initDirectoryWithFileWrappers_1 = - _registerName1("initDirectoryWithFileWrappers:"); - late final _sel_initRegularFileWithContents_1 = - _registerName1("initRegularFileWithContents:"); - late final _sel_initSymbolicLinkWithDestinationURL_1 = - _registerName1("initSymbolicLinkWithDestinationURL:"); - late final _sel_initWithSerializedRepresentation_1 = - _registerName1("initWithSerializedRepresentation:"); - late final _sel_isDirectory1 = _registerName1("isDirectory"); - late final _sel_isRegularFile1 = _registerName1("isRegularFile"); - late final _sel_isSymbolicLink1 = _registerName1("isSymbolicLink"); - late final _sel_preferredFilename1 = _registerName1("preferredFilename"); - late final _sel_setPreferredFilename_1 = - _registerName1("setPreferredFilename:"); - late final _sel_filename1 = _registerName1("filename"); - late final _sel_setFilename_1 = _registerName1("setFilename:"); - late final _sel_fileAttributes1 = _registerName1("fileAttributes"); - late final _sel_setFileAttributes_1 = _registerName1("setFileAttributes:"); - late final _sel_matchesContentsOfURL_1 = - _registerName1("matchesContentsOfURL:"); - late final _sel_readFromURL_options_error_1 = - _registerName1("readFromURL:options:error:"); - bool _objc_msgSend_1033( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int options, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1033( - obj, - sel, - url, - options, - outError, - ); - } - - late final __objc_msgSend_1033Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1033 = __objc_msgSend_1033Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_writeToURL_options_originalContentsURL_error_1 = - _registerName1("writeToURL:options:originalContentsURL:error:"); - bool _objc_msgSend_1034( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int options, - ffi.Pointer originalContentsURL, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1034( - obj, - sel, - url, - options, - originalContentsURL, - outError, - ); - } - - late final __objc_msgSend_1034Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1034 = __objc_msgSend_1034Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_serializedRepresentation1 = - _registerName1("serializedRepresentation"); - late final _sel_addFileWrapper_1 = _registerName1("addFileWrapper:"); - ffi.Pointer _objc_msgSend_1035( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer child, - ) { - return __objc_msgSend_1035( - obj, - sel, - child, - ); - } - - late final __objc_msgSend_1035Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1035 = __objc_msgSend_1035Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addRegularFileWithContents_preferredFilename_1 = - _registerName1("addRegularFileWithContents:preferredFilename:"); - ffi.Pointer _objc_msgSend_1036( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ffi.Pointer fileName, - ) { - return __objc_msgSend_1036( - obj, - sel, - data, - fileName, - ); - } - - late final __objc_msgSend_1036Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1036 = __objc_msgSend_1036Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeFileWrapper_1 = _registerName1("removeFileWrapper:"); - void _objc_msgSend_1037( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer child, - ) { - return __objc_msgSend_1037( - obj, - sel, - child, - ); - } - - late final __objc_msgSend_1037Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1037 = __objc_msgSend_1037Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_fileWrappers1 = _registerName1("fileWrappers"); - late final _sel_keyForFileWrapper_1 = _registerName1("keyForFileWrapper:"); - ffi.Pointer _objc_msgSend_1038( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer child, - ) { - return __objc_msgSend_1038( - obj, - sel, - child, - ); - } - - late final __objc_msgSend_1038Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1038 = __objc_msgSend_1038Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_regularFileContents1 = _registerName1("regularFileContents"); - late final _sel_symbolicLinkDestinationURL1 = - _registerName1("symbolicLinkDestinationURL"); - late final _sel_initSymbolicLinkWithDestination_1 = - _registerName1("initSymbolicLinkWithDestination:"); - late final _sel_needsToBeUpdatedFromPath_1 = - _registerName1("needsToBeUpdatedFromPath:"); - late final _sel_updateFromPath_1 = _registerName1("updateFromPath:"); - late final _sel_writeToFile_atomically_updateFilenames_1 = - _registerName1("writeToFile:atomically:updateFilenames:"); - bool _objc_msgSend_1039( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool atomicFlag, - bool updateFilenamesFlag, - ) { - return __objc_msgSend_1039( - obj, - sel, - path, - atomicFlag, - updateFilenamesFlag, - ); - } - - late final __objc_msgSend_1039Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_1039 = __objc_msgSend_1039Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool, bool)>(); - - late final _sel_addFileWithPath_1 = _registerName1("addFileWithPath:"); - late final _sel_addSymbolicLinkWithDestination_preferredFilename_1 = - _registerName1("addSymbolicLinkWithDestination:preferredFilename:"); - late final _sel_symbolicLinkDestination1 = - _registerName1("symbolicLinkDestination"); - late final _class_NSURLSession1 = _getClass1("NSURLSession"); - late final _sel_sharedSession1 = _registerName1("sharedSession"); - ffi.Pointer _objc_msgSend_1040( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1040( - obj, - sel, - ); - } - - late final __objc_msgSend_1040Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1040 = __objc_msgSend_1040Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSURLSessionConfiguration1 = - _getClass1("NSURLSessionConfiguration"); - late final _sel_defaultSessionConfiguration1 = - _registerName1("defaultSessionConfiguration"); - ffi.Pointer _objc_msgSend_1041( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1041( - obj, - sel, - ); - } - - late final __objc_msgSend_1041Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1041 = __objc_msgSend_1041Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_ephemeralSessionConfiguration1 = - _registerName1("ephemeralSessionConfiguration"); - late final _sel_backgroundSessionConfigurationWithIdentifier_1 = - _registerName1("backgroundSessionConfigurationWithIdentifier:"); - ffi.Pointer _objc_msgSend_1042( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer identifier, - ) { - return __objc_msgSend_1042( - obj, - sel, - identifier, - ); - } - - late final __objc_msgSend_1042Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1042 = __objc_msgSend_1042Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_identifier1 = _registerName1("identifier"); - late final _sel_requestCachePolicy1 = _registerName1("requestCachePolicy"); - late final _sel_setRequestCachePolicy_1 = - _registerName1("setRequestCachePolicy:"); - late final _sel_timeoutIntervalForRequest1 = - _registerName1("timeoutIntervalForRequest"); - late final _sel_setTimeoutIntervalForRequest_1 = - _registerName1("setTimeoutIntervalForRequest:"); - late final _sel_timeoutIntervalForResource1 = - _registerName1("timeoutIntervalForResource"); - late final _sel_setTimeoutIntervalForResource_1 = - _registerName1("setTimeoutIntervalForResource:"); - late final _sel_waitsForConnectivity1 = - _registerName1("waitsForConnectivity"); - late final _sel_setWaitsForConnectivity_1 = - _registerName1("setWaitsForConnectivity:"); - late final _sel_isDiscretionary1 = _registerName1("isDiscretionary"); - late final _sel_setDiscretionary_1 = _registerName1("setDiscretionary:"); - late final _sel_sharedContainerIdentifier1 = - _registerName1("sharedContainerIdentifier"); - late final _sel_setSharedContainerIdentifier_1 = - _registerName1("setSharedContainerIdentifier:"); - late final _sel_sessionSendsLaunchEvents1 = - _registerName1("sessionSendsLaunchEvents"); - late final _sel_setSessionSendsLaunchEvents_1 = - _registerName1("setSessionSendsLaunchEvents:"); - late final _sel_connectionProxyDictionary1 = - _registerName1("connectionProxyDictionary"); - late final _sel_setConnectionProxyDictionary_1 = - _registerName1("setConnectionProxyDictionary:"); - late final _sel_TLSMinimumSupportedProtocol1 = - _registerName1("TLSMinimumSupportedProtocol"); - int _objc_msgSend_1043( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1043( - obj, - sel, - ); - } - - late final __objc_msgSend_1043Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1043 = __objc_msgSend_1043Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setTLSMinimumSupportedProtocol_1 = - _registerName1("setTLSMinimumSupportedProtocol:"); - void _objc_msgSend_1044( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1044( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1044Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1044 = __objc_msgSend_1044Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_TLSMaximumSupportedProtocol1 = - _registerName1("TLSMaximumSupportedProtocol"); - late final _sel_setTLSMaximumSupportedProtocol_1 = - _registerName1("setTLSMaximumSupportedProtocol:"); - late final _sel_TLSMinimumSupportedProtocolVersion1 = - _registerName1("TLSMinimumSupportedProtocolVersion"); - int _objc_msgSend_1045( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1045( - obj, - sel, - ); - } - - late final __objc_msgSend_1045Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1045 = __objc_msgSend_1045Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setTLSMinimumSupportedProtocolVersion_1 = - _registerName1("setTLSMinimumSupportedProtocolVersion:"); - void _objc_msgSend_1046( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1046( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1046Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1046 = __objc_msgSend_1046Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_TLSMaximumSupportedProtocolVersion1 = - _registerName1("TLSMaximumSupportedProtocolVersion"); - late final _sel_setTLSMaximumSupportedProtocolVersion_1 = - _registerName1("setTLSMaximumSupportedProtocolVersion:"); - late final _sel_HTTPShouldSetCookies1 = - _registerName1("HTTPShouldSetCookies"); - late final _sel_setHTTPShouldSetCookies_1 = - _registerName1("setHTTPShouldSetCookies:"); - late final _sel_HTTPCookieAcceptPolicy1 = - _registerName1("HTTPCookieAcceptPolicy"); - late final _sel_setHTTPCookieAcceptPolicy_1 = - _registerName1("setHTTPCookieAcceptPolicy:"); - late final _sel_HTTPAdditionalHeaders1 = - _registerName1("HTTPAdditionalHeaders"); - late final _sel_setHTTPAdditionalHeaders_1 = - _registerName1("setHTTPAdditionalHeaders:"); - late final _sel_HTTPMaximumConnectionsPerHost1 = - _registerName1("HTTPMaximumConnectionsPerHost"); - late final _sel_setHTTPMaximumConnectionsPerHost_1 = - _registerName1("setHTTPMaximumConnectionsPerHost:"); - late final _sel_HTTPCookieStorage1 = _registerName1("HTTPCookieStorage"); - ffi.Pointer _objc_msgSend_1047( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1047( - obj, - sel, - ); - } - - late final __objc_msgSend_1047Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1047 = __objc_msgSend_1047Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setHTTPCookieStorage_1 = - _registerName1("setHTTPCookieStorage:"); - void _objc_msgSend_1048( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1048( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1048Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1048 = __objc_msgSend_1048Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLCredentialStorage1 = - _registerName1("URLCredentialStorage"); - ffi.Pointer _objc_msgSend_1049( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1049( - obj, - sel, - ); - } - - late final __objc_msgSend_1049Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1049 = __objc_msgSend_1049Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setURLCredentialStorage_1 = - _registerName1("setURLCredentialStorage:"); - void _objc_msgSend_1050( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1050( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1050Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1050 = __objc_msgSend_1050Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLCache1 = _registerName1("URLCache"); - ffi.Pointer _objc_msgSend_1051( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1051( - obj, - sel, - ); - } - - late final __objc_msgSend_1051Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1051 = __objc_msgSend_1051Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setURLCache_1 = _registerName1("setURLCache:"); - void _objc_msgSend_1052( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1052( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1052Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1052 = __objc_msgSend_1052Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_shouldUseExtendedBackgroundIdleMode1 = - _registerName1("shouldUseExtendedBackgroundIdleMode"); - late final _sel_setShouldUseExtendedBackgroundIdleMode_1 = - _registerName1("setShouldUseExtendedBackgroundIdleMode:"); - late final _sel_protocolClasses1 = _registerName1("protocolClasses"); - late final _sel_setProtocolClasses_1 = _registerName1("setProtocolClasses:"); - void _objc_msgSend_1053( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1053( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1053Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1053 = __objc_msgSend_1053Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_multipathServiceType1 = - _registerName1("multipathServiceType"); - int _objc_msgSend_1054( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1054( - obj, - sel, - ); - } - - late final __objc_msgSend_1054Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1054 = __objc_msgSend_1054Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setMultipathServiceType_1 = - _registerName1("setMultipathServiceType:"); - void _objc_msgSend_1055( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1055( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1055Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1055 = __objc_msgSend_1055Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_backgroundSessionConfiguration_1 = - _registerName1("backgroundSessionConfiguration:"); - late final _sel_sessionWithConfiguration_1 = - _registerName1("sessionWithConfiguration:"); - ffi.Pointer _objc_msgSend_1056( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer configuration, - ) { - return __objc_msgSend_1056( - obj, - sel, - configuration, - ); - } - - late final __objc_msgSend_1056Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1056 = __objc_msgSend_1056Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_sessionWithConfiguration_delegate_delegateQueue_1 = - _registerName1("sessionWithConfiguration:delegate:delegateQueue:"); - ffi.Pointer _objc_msgSend_1057( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer configuration, - ffi.Pointer delegate, - ffi.Pointer queue, - ) { - return __objc_msgSend_1057( - obj, - sel, - configuration, - delegate, - queue, - ); - } - - late final __objc_msgSend_1057Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1057 = __objc_msgSend_1057Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_delegateQueue1 = _registerName1("delegateQueue"); - late final _sel_configuration1 = _registerName1("configuration"); - late final _sel_sessionDescription1 = _registerName1("sessionDescription"); - late final _sel_setSessionDescription_1 = - _registerName1("setSessionDescription:"); - late final _sel_finishTasksAndInvalidate1 = - _registerName1("finishTasksAndInvalidate"); - late final _sel_invalidateAndCancel1 = _registerName1("invalidateAndCancel"); - late final _sel_resetWithCompletionHandler_1 = - _registerName1("resetWithCompletionHandler:"); - late final _sel_flushWithCompletionHandler_1 = - _registerName1("flushWithCompletionHandler:"); - late final _sel_getTasksWithCompletionHandler_1 = - _registerName1("getTasksWithCompletionHandler:"); - void _objc_msgSend_1058( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1058( - obj, - sel, - completionHandler, - ); - } - - late final __objc_msgSend_1058Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1058 = __objc_msgSend_1058Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_getAllTasksWithCompletionHandler_1 = - _registerName1("getAllTasksWithCompletionHandler:"); - void _objc_msgSend_1059( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1059( - obj, - sel, - completionHandler, - ); - } - - late final __objc_msgSend_1059Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1059 = __objc_msgSend_1059Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_dataTaskWithRequest_1 = - _registerName1("dataTaskWithRequest:"); - ffi.Pointer _objc_msgSend_1060( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_1060( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_1060Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1060 = __objc_msgSend_1060Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dataTaskWithURL_1 = _registerName1("dataTaskWithURL:"); - ffi.Pointer _objc_msgSend_1061( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_1061( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_1061Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1061 = __objc_msgSend_1061Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSURLSessionUploadTask1 = - _getClass1("NSURLSessionUploadTask"); - late final _sel_cancelByProducingResumeData_1 = - _registerName1("cancelByProducingResumeData:"); - void _objc_msgSend_1062( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1062( - obj, - sel, - completionHandler, - ); - } - - late final __objc_msgSend_1062Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1062 = __objc_msgSend_1062Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_uploadTaskWithRequest_fromFile_1 = - _registerName1("uploadTaskWithRequest:fromFile:"); - ffi.Pointer _objc_msgSend_1063( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer fileURL, - ) { - return __objc_msgSend_1063( - obj, - sel, - request, - fileURL, - ); - } - - late final __objc_msgSend_1063Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1063 = __objc_msgSend_1063Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_uploadTaskWithRequest_fromData_1 = - _registerName1("uploadTaskWithRequest:fromData:"); - ffi.Pointer _objc_msgSend_1064( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer bodyData, - ) { - return __objc_msgSend_1064( - obj, - sel, - request, - bodyData, - ); - } - - late final __objc_msgSend_1064Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1064 = __objc_msgSend_1064Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_uploadTaskWithResumeData_1 = - _registerName1("uploadTaskWithResumeData:"); - ffi.Pointer _objc_msgSend_1065( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer resumeData, - ) { - return __objc_msgSend_1065( - obj, - sel, - resumeData, - ); - } - - late final __objc_msgSend_1065Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1065 = __objc_msgSend_1065Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_uploadTaskWithStreamedRequest_1 = - _registerName1("uploadTaskWithStreamedRequest:"); - ffi.Pointer _objc_msgSend_1066( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_1066( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_1066Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1066 = __objc_msgSend_1066Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSURLSessionDownloadTask1 = - _getClass1("NSURLSessionDownloadTask"); - late final _sel_downloadTaskWithRequest_1 = - _registerName1("downloadTaskWithRequest:"); - ffi.Pointer _objc_msgSend_1067( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_1067( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_1067Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1067 = __objc_msgSend_1067Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_downloadTaskWithURL_1 = - _registerName1("downloadTaskWithURL:"); - ffi.Pointer _objc_msgSend_1068( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_1068( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_1068Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1068 = __objc_msgSend_1068Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_downloadTaskWithResumeData_1 = - _registerName1("downloadTaskWithResumeData:"); - ffi.Pointer _objc_msgSend_1069( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer resumeData, - ) { - return __objc_msgSend_1069( - obj, - sel, - resumeData, - ); - } - - late final __objc_msgSend_1069Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1069 = __objc_msgSend_1069Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSURLSessionStreamTask1 = - _getClass1("NSURLSessionStreamTask"); - late final _sel_readDataOfMinLength_maxLength_timeout_completionHandler_1 = - _registerName1( - "readDataOfMinLength:maxLength:timeout:completionHandler:"); - void _objc_msgSend_1070( - ffi.Pointer obj, - ffi.Pointer sel, - int minBytes, - int maxBytes, - double timeout, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1070( - obj, - sel, - minBytes, - maxBytes, - timeout, - completionHandler, - ); - } - - late final __objc_msgSend_1070Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.Double, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1070 = __objc_msgSend_1070Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, int, - double, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_writeData_timeout_completionHandler_1 = - _registerName1("writeData:timeout:completionHandler:"); - void _objc_msgSend_1071( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - double timeout, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1071( - obj, - sel, - data, - timeout, - completionHandler, - ); - } - - late final __objc_msgSend_1071Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Double, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1071 = __objc_msgSend_1071Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, double, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_captureStreams1 = _registerName1("captureStreams"); - late final _sel_closeWrite1 = _registerName1("closeWrite"); - late final _sel_closeRead1 = _registerName1("closeRead"); - late final _sel_startSecureConnection1 = - _registerName1("startSecureConnection"); - late final _sel_stopSecureConnection1 = - _registerName1("stopSecureConnection"); - late final _sel_streamTaskWithHostName_port_1 = - _registerName1("streamTaskWithHostName:port:"); - ffi.Pointer _objc_msgSend_1072( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer hostname, - int port, - ) { - return __objc_msgSend_1072( - obj, - sel, - hostname, - port, - ); - } - - late final __objc_msgSend_1072Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_1072 = __objc_msgSend_1072Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _class_NSNetService1 = _getClass1("NSNetService"); - late final _sel_initWithDomain_type_name_port_1 = - _registerName1("initWithDomain:type:name:port:"); - instancetype _objc_msgSend_1073( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer domain, - ffi.Pointer type, - ffi.Pointer name, - int port, - ) { - return __objc_msgSend_1073( - obj, - sel, - domain, - type, - name, - port, - ); - } - - late final __objc_msgSend_1073Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int)>>('objc_msgSend'); - late final __objc_msgSend_1073 = __objc_msgSend_1073Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _sel_initWithDomain_type_name_1 = - _registerName1("initWithDomain:type:name:"); - instancetype _objc_msgSend_1074( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer domain, - ffi.Pointer type, - ffi.Pointer name, - ) { - return __objc_msgSend_1074( - obj, - sel, - domain, - type, - name, - ); - } - - late final __objc_msgSend_1074Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1074 = __objc_msgSend_1074Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_includesPeerToPeer1 = _registerName1("includesPeerToPeer"); - late final _sel_setIncludesPeerToPeer_1 = - _registerName1("setIncludesPeerToPeer:"); - late final _sel_type1 = _registerName1("type"); - late final _sel_publishWithOptions_1 = _registerName1("publishWithOptions:"); - void _objc_msgSend_1075( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_1075( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_1075Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1075 = __objc_msgSend_1075Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_resolve1 = _registerName1("resolve"); - late final _sel_stop1 = _registerName1("stop"); - late final _sel_dictionaryFromTXTRecordData_1 = - _registerName1("dictionaryFromTXTRecordData:"); - ffi.Pointer _objc_msgSend_1076( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer txtData, - ) { - return __objc_msgSend_1076( - obj, - sel, - txtData, - ); - } - - late final __objc_msgSend_1076Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1076 = __objc_msgSend_1076Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dataFromTXTRecordDictionary_1 = - _registerName1("dataFromTXTRecordDictionary:"); - ffi.Pointer _objc_msgSend_1077( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer txtDictionary, - ) { - return __objc_msgSend_1077( - obj, - sel, - txtDictionary, - ); - } - - late final __objc_msgSend_1077Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1077 = __objc_msgSend_1077Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_resolveWithTimeout_1 = _registerName1("resolveWithTimeout:"); - late final _sel_getInputStream_outputStream_1 = - _registerName1("getInputStream:outputStream:"); - bool _objc_msgSend_1078( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream, - ) { - return __objc_msgSend_1078( - obj, - sel, - inputStream, - outputStream, - ); - } - - late final __objc_msgSend_1078Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1078 = __objc_msgSend_1078Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_setTXTRecordData_1 = _registerName1("setTXTRecordData:"); - bool _objc_msgSend_1079( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer recordData, - ) { - return __objc_msgSend_1079( - obj, - sel, - recordData, - ); - } - - late final __objc_msgSend_1079Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1079 = __objc_msgSend_1079Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_TXTRecordData1 = _registerName1("TXTRecordData"); - late final _sel_startMonitoring1 = _registerName1("startMonitoring"); - late final _sel_stopMonitoring1 = _registerName1("stopMonitoring"); - late final _sel_streamTaskWithNetService_1 = - _registerName1("streamTaskWithNetService:"); - ffi.Pointer _objc_msgSend_1080( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer service, - ) { - return __objc_msgSend_1080( - obj, - sel, - service, - ); - } - - late final __objc_msgSend_1080Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1080 = __objc_msgSend_1080Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSURLSessionWebSocketTask1 = - _getClass1("NSURLSessionWebSocketTask"); - late final _class_NSURLSessionWebSocketMessage1 = - _getClass1("NSURLSessionWebSocketMessage"); - int _objc_msgSend_1081( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1081( - obj, - sel, - ); - } - - late final __objc_msgSend_1081Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1081 = __objc_msgSend_1081Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_sendMessage_completionHandler_1 = - _registerName1("sendMessage:completionHandler:"); - void _objc_msgSend_1082( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer message, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1082( - obj, - sel, - message, - completionHandler, - ); - } - - late final __objc_msgSend_1082Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1082 = __objc_msgSend_1082Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_receiveMessageWithCompletionHandler_1 = - _registerName1("receiveMessageWithCompletionHandler:"); - void _objc_msgSend_1083( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1083( - obj, - sel, - completionHandler, - ); - } - - late final __objc_msgSend_1083Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1083 = __objc_msgSend_1083Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_sendPingWithPongReceiveHandler_1 = - _registerName1("sendPingWithPongReceiveHandler:"); - void _objc_msgSend_1084( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> pongReceiveHandler, - ) { - return __objc_msgSend_1084( - obj, - sel, - pongReceiveHandler, - ); - } - - late final __objc_msgSend_1084Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1084 = __objc_msgSend_1084Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_cancelWithCloseCode_reason_1 = - _registerName1("cancelWithCloseCode:reason:"); - void _objc_msgSend_1085( - ffi.Pointer obj, - ffi.Pointer sel, - int closeCode, - ffi.Pointer reason, - ) { - return __objc_msgSend_1085( - obj, - sel, - closeCode, - reason, - ); - } - - late final __objc_msgSend_1085Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1085 = __objc_msgSend_1085Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_maximumMessageSize1 = _registerName1("maximumMessageSize"); - late final _sel_setMaximumMessageSize_1 = - _registerName1("setMaximumMessageSize:"); - late final _sel_closeCode1 = _registerName1("closeCode"); - int _objc_msgSend_1086( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1086( - obj, - sel, - ); - } - - late final __objc_msgSend_1086Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1086 = __objc_msgSend_1086Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_closeReason1 = _registerName1("closeReason"); - late final _sel_webSocketTaskWithURL_1 = - _registerName1("webSocketTaskWithURL:"); - ffi.Pointer _objc_msgSend_1087( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_1087( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_1087Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1087 = __objc_msgSend_1087Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_webSocketTaskWithURL_protocols_1 = - _registerName1("webSocketTaskWithURL:protocols:"); - ffi.Pointer _objc_msgSend_1088( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer protocols, - ) { - return __objc_msgSend_1088( - obj, - sel, - url, - protocols, - ); - } - - late final __objc_msgSend_1088Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1088 = __objc_msgSend_1088Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_webSocketTaskWithRequest_1 = - _registerName1("webSocketTaskWithRequest:"); - ffi.Pointer _objc_msgSend_1089( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_1089( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_1089Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1089 = __objc_msgSend_1089Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dataTaskWithRequest_completionHandler_1 = - _registerName1("dataTaskWithRequest:completionHandler:"); - ffi.Pointer _objc_msgSend_1090( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1090( - obj, - sel, - request, - completionHandler, - ); - } - - late final __objc_msgSend_1090Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1090 = __objc_msgSend_1090Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_dataTaskWithURL_completionHandler_1 = - _registerName1("dataTaskWithURL:completionHandler:"); - ffi.Pointer _objc_msgSend_1091( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1091( - obj, - sel, - url, - completionHandler, - ); - } - - late final __objc_msgSend_1091Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1091 = __objc_msgSend_1091Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_uploadTaskWithRequest_fromFile_completionHandler_1 = - _registerName1("uploadTaskWithRequest:fromFile:completionHandler:"); - ffi.Pointer _objc_msgSend_1092( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer fileURL, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1092( - obj, - sel, - request, - fileURL, - completionHandler, - ); - } - - late final __objc_msgSend_1092Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1092 = __objc_msgSend_1092Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_uploadTaskWithRequest_fromData_completionHandler_1 = - _registerName1("uploadTaskWithRequest:fromData:completionHandler:"); - ffi.Pointer _objc_msgSend_1093( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer bodyData, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1093( - obj, - sel, - request, - bodyData, - completionHandler, - ); - } - - late final __objc_msgSend_1093Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1093 = __objc_msgSend_1093Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_uploadTaskWithResumeData_completionHandler_1 = - _registerName1("uploadTaskWithResumeData:completionHandler:"); - ffi.Pointer _objc_msgSend_1094( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer resumeData, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1094( - obj, - sel, - resumeData, - completionHandler, - ); - } - - late final __objc_msgSend_1094Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1094 = __objc_msgSend_1094Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_downloadTaskWithRequest_completionHandler_1 = - _registerName1("downloadTaskWithRequest:completionHandler:"); - ffi.Pointer _objc_msgSend_1095( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1095( - obj, - sel, - request, - completionHandler, - ); - } - - late final __objc_msgSend_1095Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1095 = __objc_msgSend_1095Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_downloadTaskWithURL_completionHandler_1 = - _registerName1("downloadTaskWithURL:completionHandler:"); - ffi.Pointer _objc_msgSend_1096( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1096( - obj, - sel, - url, - completionHandler, - ); - } - - late final __objc_msgSend_1096Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1096 = __objc_msgSend_1096Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_downloadTaskWithResumeData_completionHandler_1 = - _registerName1("downloadTaskWithResumeData:completionHandler:"); - ffi.Pointer _objc_msgSend_1097( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer resumeData, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1097( - obj, - sel, - resumeData, - completionHandler, - ); - } - - late final __objc_msgSend_1097Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1097 = __objc_msgSend_1097Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _class_NSProtocolChecker1 = _getClass1("NSProtocolChecker"); - ffi.Pointer _objc_msgSend_1098( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1098( - obj, - sel, - ); - } - - late final __objc_msgSend_1098Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1098 = __objc_msgSend_1098Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - ffi.Pointer _objc_msgSend_1099( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1099( - obj, - sel, - ); - } - - late final __objc_msgSend_1099Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1099 = __objc_msgSend_1099Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_protocolCheckerWithTarget_protocol_1 = - _registerName1("protocolCheckerWithTarget:protocol:"); - instancetype _objc_msgSend_1100( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - ffi.Pointer aProtocol, - ) { - return __objc_msgSend_1100( - obj, - sel, - anObject, - aProtocol, - ); - } - - late final __objc_msgSend_1100Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1100 = __objc_msgSend_1100Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithTarget_protocol_1 = - _registerName1("initWithTarget:protocol:"); - late final _class_NSTask1 = _getClass1("NSTask"); - late final _sel_setExecutableURL_1 = _registerName1("setExecutableURL:"); - late final _sel_setEnvironment_1 = _registerName1("setEnvironment:"); - late final _sel_currentDirectoryURL1 = _registerName1("currentDirectoryURL"); - late final _sel_setCurrentDirectoryURL_1 = - _registerName1("setCurrentDirectoryURL:"); - late final _sel_launchRequirementData1 = - _registerName1("launchRequirementData"); - late final _sel_setLaunchRequirementData_1 = - _registerName1("setLaunchRequirementData:"); - late final _sel_standardInput1 = _registerName1("standardInput"); - late final _sel_setStandardInput_1 = _registerName1("setStandardInput:"); - late final _sel_standardOutput1 = _registerName1("standardOutput"); - late final _sel_setStandardOutput_1 = _registerName1("setStandardOutput:"); - late final _sel_standardError1 = _registerName1("standardError"); - late final _sel_setStandardError_1 = _registerName1("setStandardError:"); - late final _sel_launchAndReturnError_1 = - _registerName1("launchAndReturnError:"); - late final _sel_interrupt1 = _registerName1("interrupt"); - late final _sel_terminate1 = _registerName1("terminate"); - late final _sel_isRunning1 = _registerName1("isRunning"); - late final _sel_terminationStatus1 = _registerName1("terminationStatus"); - late final _sel_terminationReason1 = _registerName1("terminationReason"); - int _objc_msgSend_1101( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1101( - obj, - sel, - ); - } - - late final __objc_msgSend_1101Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1101 = __objc_msgSend_1101Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_terminationHandler1 = _registerName1("terminationHandler"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_1102( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1102( - obj, - sel, - ); - } - - late final __objc_msgSend_1102Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1102 = __objc_msgSend_1102Ptr.asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setTerminationHandler_1 = - _registerName1("setTerminationHandler:"); - void _objc_msgSend_1103( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> value, - ) { - return __objc_msgSend_1103( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1103Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1103 = __objc_msgSend_1103Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_launchedTaskWithExecutableURL_arguments_error_terminationHandler_1 = - _registerName1( - "launchedTaskWithExecutableURL:arguments:error:terminationHandler:"); - ffi.Pointer _objc_msgSend_1104( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer arguments, - ffi.Pointer> error, - ffi.Pointer<_ObjCBlock> terminationHandler, - ) { - return __objc_msgSend_1104( - obj, - sel, - url, - arguments, - error, - terminationHandler, - ); - } - - late final __objc_msgSend_1104Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1104 = __objc_msgSend_1104Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_waitUntilExit1 = _registerName1("waitUntilExit"); - late final _sel_launchPath1 = _registerName1("launchPath"); - late final _sel_setLaunchPath_1 = _registerName1("setLaunchPath:"); - late final _sel_setCurrentDirectoryPath_1 = - _registerName1("setCurrentDirectoryPath:"); - late final _sel_launch1 = _registerName1("launch"); - late final _sel_launchedTaskWithLaunchPath_arguments_1 = - _registerName1("launchedTaskWithLaunchPath:arguments:"); - ffi.Pointer _objc_msgSend_1105( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer arguments, - ) { - return __objc_msgSend_1105( - obj, - sel, - path, - arguments, - ); - } - - late final __objc_msgSend_1105Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1105 = __objc_msgSend_1105Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSXMLElement1 = _getClass1("NSXMLElement"); - late final _class_NSXMLNode1 = _getClass1("NSXMLNode"); - late final _sel_initWithKind_1 = _registerName1("initWithKind:"); - instancetype _objc_msgSend_1106( - ffi.Pointer obj, - ffi.Pointer sel, - int kind, - ) { - return __objc_msgSend_1106( - obj, - sel, - kind, - ); - } - - late final __objc_msgSend_1106Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1106 = __objc_msgSend_1106Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithKind_options_1 = - _registerName1("initWithKind:options:"); - instancetype _objc_msgSend_1107( - ffi.Pointer obj, - ffi.Pointer sel, - int kind, - int options, - ) { - return __objc_msgSend_1107( - obj, - sel, - kind, - options, - ); - } - - late final __objc_msgSend_1107Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1107 = __objc_msgSend_1107Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int, int)>(); - - late final _sel_document1 = _registerName1("document"); - late final _sel_documentWithRootElement_1 = - _registerName1("documentWithRootElement:"); - ffi.Pointer _objc_msgSend_1108( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer element, - ) { - return __objc_msgSend_1108( - obj, - sel, - element, - ); - } - - late final __objc_msgSend_1108Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1108 = __objc_msgSend_1108Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_elementWithName_1 = _registerName1("elementWithName:"); - late final _sel_elementWithName_URI_1 = - _registerName1("elementWithName:URI:"); - ffi.Pointer _objc_msgSend_1109( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer URI, - ) { - return __objc_msgSend_1109( - obj, - sel, - name, - URI, - ); - } - - late final __objc_msgSend_1109Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1109 = __objc_msgSend_1109Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_elementWithName_stringValue_1 = - _registerName1("elementWithName:stringValue:"); - late final _sel_elementWithName_children_attributes_1 = - _registerName1("elementWithName:children:attributes:"); - ffi.Pointer _objc_msgSend_1110( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer children, - ffi.Pointer attributes, - ) { - return __objc_msgSend_1110( - obj, - sel, - name, - children, - attributes, - ); - } - - late final __objc_msgSend_1110Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1110 = __objc_msgSend_1110Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_attributeWithName_stringValue_1 = - _registerName1("attributeWithName:stringValue:"); - late final _sel_attributeWithName_URI_stringValue_1 = - _registerName1("attributeWithName:URI:stringValue:"); - late final _sel_namespaceWithName_stringValue_1 = - _registerName1("namespaceWithName:stringValue:"); - late final _sel_processingInstructionWithName_stringValue_1 = - _registerName1("processingInstructionWithName:stringValue:"); - late final _sel_commentWithStringValue_1 = - _registerName1("commentWithStringValue:"); - late final _sel_textWithStringValue_1 = - _registerName1("textWithStringValue:"); - late final _sel_DTDNodeWithXMLString_1 = - _registerName1("DTDNodeWithXMLString:"); - int _objc_msgSend_1111( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1111( - obj, - sel, - ); - } - - late final __objc_msgSend_1111Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1111 = __objc_msgSend_1111Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_objectValue1 = _registerName1("objectValue"); - late final _sel_setObjectValue_1 = _registerName1("setObjectValue:"); - late final _sel_setStringValue_1 = _registerName1("setStringValue:"); - late final _sel_setStringValue_resolvingEntities_1 = - _registerName1("setStringValue:resolvingEntities:"); - void _objc_msgSend_1112( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - bool resolve, - ) { - return __objc_msgSend_1112( - obj, - sel, - string, - resolve, - ); - } - - late final __objc_msgSend_1112Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_1112 = __objc_msgSend_1112Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_index1 = _registerName1("index"); - late final _sel_level1 = _registerName1("level"); - late final _class_NSXMLDocument1 = _getClass1("NSXMLDocument"); - late final _sel_initWithXMLString_options_error_1 = - _registerName1("initWithXMLString:options:error:"); - instancetype _objc_msgSend_1113( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int mask, - ffi.Pointer> error, - ) { - return __objc_msgSend_1113( - obj, - sel, - string, - mask, - error, - ); - } - - late final __objc_msgSend_1113Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1113 = __objc_msgSend_1113Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - instancetype _objc_msgSend_1114( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int mask, - ffi.Pointer> error, - ) { - return __objc_msgSend_1114( - obj, - sel, - url, - mask, - error, - ); - } - - late final __objc_msgSend_1114Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1114 = __objc_msgSend_1114Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_initWithData_options_error_1 = - _registerName1("initWithData:options:error:"); - instancetype _objc_msgSend_1115( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - int mask, - ffi.Pointer> error, - ) { - return __objc_msgSend_1115( - obj, - sel, - data, - mask, - error, - ); - } - - late final __objc_msgSend_1115Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1115 = __objc_msgSend_1115Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_initWithRootElement_1 = - _registerName1("initWithRootElement:"); - instancetype _objc_msgSend_1116( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer element, - ) { - return __objc_msgSend_1116( - obj, - sel, - element, - ); - } - - late final __objc_msgSend_1116Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1116 = __objc_msgSend_1116Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_replacementClassForClass_1 = - _registerName1("replacementClassForClass:"); - late final _sel_characterEncoding1 = _registerName1("characterEncoding"); - late final _sel_setCharacterEncoding_1 = - _registerName1("setCharacterEncoding:"); - late final _sel_isStandalone1 = _registerName1("isStandalone"); - late final _sel_setStandalone_1 = _registerName1("setStandalone:"); - late final _sel_documentContentKind1 = _registerName1("documentContentKind"); - int _objc_msgSend_1117( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1117( - obj, - sel, - ); - } - - late final __objc_msgSend_1117Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1117 = __objc_msgSend_1117Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDocumentContentKind_1 = - _registerName1("setDocumentContentKind:"); - void _objc_msgSend_1118( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1118( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1118Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1118 = __objc_msgSend_1118Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_setMIMEType_1 = _registerName1("setMIMEType:"); - late final _class_NSXMLDTD1 = _getClass1("NSXMLDTD"); - late final _sel_setPublicID_1 = _registerName1("setPublicID:"); - late final _sel_setSystemID_1 = _registerName1("setSystemID:"); - late final _sel_insertChild_atIndex_1 = - _registerName1("insertChild:atIndex:"); - void _objc_msgSend_1119( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer child, - int index, - ) { - return __objc_msgSend_1119( - obj, - sel, - child, - index, - ); - } - - late final __objc_msgSend_1119Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_1119 = __objc_msgSend_1119Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_insertChildren_atIndex_1 = - _registerName1("insertChildren:atIndex:"); - void _objc_msgSend_1120( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer children, - int index, - ) { - return __objc_msgSend_1120( - obj, - sel, - children, - index, - ); - } - - late final __objc_msgSend_1120Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_1120 = __objc_msgSend_1120Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_removeChildAtIndex_1 = _registerName1("removeChildAtIndex:"); - late final _sel_setChildren_1 = _registerName1("setChildren:"); - late final _sel_addChild_1 = _registerName1("addChild:"); - void _objc_msgSend_1121( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer child, - ) { - return __objc_msgSend_1121( - obj, - sel, - child, - ); - } - - late final __objc_msgSend_1121Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1121 = __objc_msgSend_1121Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_replaceChildAtIndex_withNode_1 = - _registerName1("replaceChildAtIndex:withNode:"); - void _objc_msgSend_1122( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ffi.Pointer node, - ) { - return __objc_msgSend_1122( - obj, - sel, - index, - node, - ); - } - - late final __objc_msgSend_1122Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1122 = __objc_msgSend_1122Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _class_NSXMLDTDNode1 = _getClass1("NSXMLDTDNode"); - late final _sel_initWithXMLString_1 = _registerName1("initWithXMLString:"); - late final _sel_DTDKind1 = _registerName1("DTDKind"); - int _objc_msgSend_1123( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1123( - obj, - sel, - ); - } - - late final __objc_msgSend_1123Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1123 = __objc_msgSend_1123Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDTDKind_1 = _registerName1("setDTDKind:"); - void _objc_msgSend_1124( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1124( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1124Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1124 = __objc_msgSend_1124Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_isExternal1 = _registerName1("isExternal"); - late final _sel_notationName1 = _registerName1("notationName"); - late final _sel_setNotationName_1 = _registerName1("setNotationName:"); - late final _sel_localNameForName_1 = _registerName1("localNameForName:"); - late final _sel_prefixForName_1 = _registerName1("prefixForName:"); - late final _sel_predefinedNamespaceForPrefix_1 = - _registerName1("predefinedNamespaceForPrefix:"); - ffi.Pointer _objc_msgSend_1125( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ) { - return __objc_msgSend_1125( - obj, - sel, - name, - ); - } - - late final __objc_msgSend_1125Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1125 = __objc_msgSend_1125Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_entityDeclarationForName_1 = - _registerName1("entityDeclarationForName:"); - ffi.Pointer _objc_msgSend_1126( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ) { - return __objc_msgSend_1126( - obj, - sel, - name, - ); - } - - late final __objc_msgSend_1126Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1126 = __objc_msgSend_1126Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_notationDeclarationForName_1 = - _registerName1("notationDeclarationForName:"); - late final _sel_elementDeclarationForName_1 = - _registerName1("elementDeclarationForName:"); - late final _sel_attributeDeclarationForName_elementName_1 = - _registerName1("attributeDeclarationForName:elementName:"); - ffi.Pointer _objc_msgSend_1127( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer elementName, - ) { - return __objc_msgSend_1127( - obj, - sel, - name, - elementName, - ); - } - - late final __objc_msgSend_1127Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1127 = __objc_msgSend_1127Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_predefinedEntityDeclarationForName_1 = - _registerName1("predefinedEntityDeclarationForName:"); - late final _sel_DTD1 = _registerName1("DTD"); - ffi.Pointer _objc_msgSend_1128( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1128( - obj, - sel, - ); - } - - late final __objc_msgSend_1128Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1128 = __objc_msgSend_1128Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDTD_1 = _registerName1("setDTD:"); - void _objc_msgSend_1129( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1129( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1129Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1129 = __objc_msgSend_1129Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setRootElement_1 = _registerName1("setRootElement:"); - void _objc_msgSend_1130( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer root, - ) { - return __objc_msgSend_1130( - obj, - sel, - root, - ); - } - - late final __objc_msgSend_1130Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1130 = __objc_msgSend_1130Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_rootElement1 = _registerName1("rootElement"); - ffi.Pointer _objc_msgSend_1131( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1131( - obj, - sel, - ); - } - - late final __objc_msgSend_1131Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1131 = __objc_msgSend_1131Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_XMLData1 = _registerName1("XMLData"); - late final _sel_XMLDataWithOptions_1 = _registerName1("XMLDataWithOptions:"); - ffi.Pointer _objc_msgSend_1132( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_1132( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_1132Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1132 = __objc_msgSend_1132Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_objectByApplyingXSLT_arguments_error_1 = - _registerName1("objectByApplyingXSLT:arguments:error:"); - ffi.Pointer _objc_msgSend_1133( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer xslt, - ffi.Pointer arguments, - ffi.Pointer> error, - ) { - return __objc_msgSend_1133( - obj, - sel, - xslt, - arguments, - error, - ); - } - - late final __objc_msgSend_1133Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1133 = __objc_msgSend_1133Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_objectByApplyingXSLTString_arguments_error_1 = - _registerName1("objectByApplyingXSLTString:arguments:error:"); - ffi.Pointer _objc_msgSend_1134( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer xslt, - ffi.Pointer arguments, - ffi.Pointer> error, - ) { - return __objc_msgSend_1134( - obj, - sel, - xslt, - arguments, - error, - ); - } - - late final __objc_msgSend_1134Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1134 = __objc_msgSend_1134Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_objectByApplyingXSLTAtURL_arguments_error_1 = - _registerName1("objectByApplyingXSLTAtURL:arguments:error:"); - ffi.Pointer _objc_msgSend_1135( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer xsltURL, - ffi.Pointer argument, - ffi.Pointer> error, - ) { - return __objc_msgSend_1135( - obj, - sel, - xsltURL, - argument, - error, - ); - } - - late final __objc_msgSend_1135Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1135 = __objc_msgSend_1135Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_validateAndReturnError_1 = - _registerName1("validateAndReturnError:"); - late final _sel_rootDocument1 = _registerName1("rootDocument"); - ffi.Pointer _objc_msgSend_1136( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1136( - obj, - sel, - ); - } - - late final __objc_msgSend_1136Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1136 = __objc_msgSend_1136Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_parent1 = _registerName1("parent"); - ffi.Pointer _objc_msgSend_1137( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1137( - obj, - sel, - ); - } - - late final __objc_msgSend_1137Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1137 = __objc_msgSend_1137Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_childCount1 = _registerName1("childCount"); - late final _sel_children1 = _registerName1("children"); - late final _sel_childAtIndex_1 = _registerName1("childAtIndex:"); - ffi.Pointer _objc_msgSend_1138( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_1138( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_1138Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_1138 = __objc_msgSend_1138Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_previousSibling1 = _registerName1("previousSibling"); - late final _sel_nextSibling1 = _registerName1("nextSibling"); - late final _sel_previousNode1 = _registerName1("previousNode"); - late final _sel_nextNode1 = _registerName1("nextNode"); - late final _sel_detach1 = _registerName1("detach"); - late final _sel_XPath1 = _registerName1("XPath"); - late final _sel_localName1 = _registerName1("localName"); - late final _sel_prefix1 = _registerName1("prefix"); - late final _sel_URI1 = _registerName1("URI"); - late final _sel_setURI_1 = _registerName1("setURI:"); - late final _sel_XMLString1 = _registerName1("XMLString"); - late final _sel_XMLStringWithOptions_1 = - _registerName1("XMLStringWithOptions:"); - ffi.Pointer _objc_msgSend_1139( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_1139( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_1139Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1139 = __objc_msgSend_1139Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_canonicalXMLStringPreservingComments_1 = - _registerName1("canonicalXMLStringPreservingComments:"); - ffi.Pointer _objc_msgSend_1140( - ffi.Pointer obj, - ffi.Pointer sel, - bool comments, - ) { - return __objc_msgSend_1140( - obj, - sel, - comments, - ); - } - - late final __objc_msgSend_1140Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_1140 = __objc_msgSend_1140Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_nodesForXPath_error_1 = - _registerName1("nodesForXPath:error:"); - late final _sel_objectsForXQuery_constants_error_1 = - _registerName1("objectsForXQuery:constants:error:"); - ffi.Pointer _objc_msgSend_1141( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer xquery, - ffi.Pointer constants, - ffi.Pointer> error, - ) { - return __objc_msgSend_1141( - obj, - sel, - xquery, - constants, - error, - ); - } - - late final __objc_msgSend_1141Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1141 = __objc_msgSend_1141Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_objectsForXQuery_error_1 = - _registerName1("objectsForXQuery:error:"); - late final _sel_initWithName_URI_1 = _registerName1("initWithName:URI:"); - instancetype _objc_msgSend_1142( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer URI, - ) { - return __objc_msgSend_1142( - obj, - sel, - name, - URI, - ); - } - - late final __objc_msgSend_1142Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1142 = __objc_msgSend_1142Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithName_stringValue_1 = - _registerName1("initWithName:stringValue:"); - late final _sel_initWithXMLString_error_1 = - _registerName1("initWithXMLString:error:"); - late final _sel_elementsForName_1 = _registerName1("elementsForName:"); - late final _sel_elementsForLocalName_URI_1 = - _registerName1("elementsForLocalName:URI:"); - ffi.Pointer _objc_msgSend_1143( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer localName, - ffi.Pointer URI, - ) { - return __objc_msgSend_1143( - obj, - sel, - localName, - URI, - ); - } - - late final __objc_msgSend_1143Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1143 = __objc_msgSend_1143Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_addAttribute_1 = _registerName1("addAttribute:"); - late final _sel_removeAttributeForName_1 = - _registerName1("removeAttributeForName:"); - late final _sel_attributes1 = _registerName1("attributes"); - late final _sel_setAttributes_1 = _registerName1("setAttributes:"); - late final _sel_setAttributesWithDictionary_1 = - _registerName1("setAttributesWithDictionary:"); - late final _sel_attributeForName_1 = _registerName1("attributeForName:"); - late final _sel_attributeForLocalName_URI_1 = - _registerName1("attributeForLocalName:URI:"); - ffi.Pointer _objc_msgSend_1144( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer localName, - ffi.Pointer URI, - ) { - return __objc_msgSend_1144( - obj, - sel, - localName, - URI, - ); - } - - late final __objc_msgSend_1144Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1144 = __objc_msgSend_1144Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_addNamespace_1 = _registerName1("addNamespace:"); - late final _sel_removeNamespaceForPrefix_1 = - _registerName1("removeNamespaceForPrefix:"); - late final _sel_namespaces1 = _registerName1("namespaces"); - late final _sel_setNamespaces_1 = _registerName1("setNamespaces:"); - late final _sel_namespaceForPrefix_1 = _registerName1("namespaceForPrefix:"); - late final _sel_resolveNamespaceForName_1 = - _registerName1("resolveNamespaceForName:"); - late final _sel_resolvePrefixForNamespaceURI_1 = - _registerName1("resolvePrefixForNamespaceURI:"); - late final _sel_normalizeAdjacentTextNodesPreservingCDATA_1 = - _registerName1("normalizeAdjacentTextNodesPreservingCDATA:"); - late final _sel_setAttributesAsDictionary_1 = - _registerName1("setAttributesAsDictionary:"); - late final _class_AVAudioSession1 = _getClass1("AVAudioSession"); - late final _sel_sharedInstance1 = _registerName1("sharedInstance"); - ffi.Pointer _objc_msgSend_1145( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1145( - obj, - sel, - ); - } - - late final __objc_msgSend_1145Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1145 = __objc_msgSend_1145Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_availableCategories1 = _registerName1("availableCategories"); - late final _sel_setCategory_error_1 = _registerName1("setCategory:error:"); - late final _sel_setCategory_withOptions_error_1 = - _registerName1("setCategory:withOptions:error:"); - bool _objc_msgSend_1146( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer category, - int options, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1146( - obj, - sel, - category, - options, - outError, - ); - } - - late final __objc_msgSend_1146Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1146 = __objc_msgSend_1146Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_setCategory_mode_options_error_1 = - _registerName1("setCategory:mode:options:error:"); - bool _objc_msgSend_1147( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer category, - ffi.Pointer mode, - int options, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1147( - obj, - sel, - category, - mode, - options, - outError, - ); - } - - late final __objc_msgSend_1147Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1147 = __objc_msgSend_1147Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_setCategory_mode_routeSharingPolicy_options_error_1 = - _registerName1("setCategory:mode:routeSharingPolicy:options:error:"); - bool _objc_msgSend_1148( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer category, - ffi.Pointer mode, - int policy, - int options, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1148( - obj, - sel, - category, - mode, - policy, - options, - outError, - ); - } - - late final __objc_msgSend_1148Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1148 = __objc_msgSend_1148Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - int, - ffi.Pointer>)>(); - - late final _sel_category1 = _registerName1("category"); - late final _sel_categoryOptions1 = _registerName1("categoryOptions"); - int _objc_msgSend_1149( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1149( - obj, - sel, - ); - } - - late final __objc_msgSend_1149Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1149 = __objc_msgSend_1149Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_routeSharingPolicy1 = _registerName1("routeSharingPolicy"); - int _objc_msgSend_1150( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1150( - obj, - sel, - ); - } - - late final __objc_msgSend_1150Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1150 = __objc_msgSend_1150Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_availableModes1 = _registerName1("availableModes"); - late final _sel_setMode_error_1 = _registerName1("setMode:error:"); - late final _sel_mode1 = _registerName1("mode"); - late final _sel_setAllowHapticsAndSystemSoundsDuringRecording_error_1 = - _registerName1("setAllowHapticsAndSystemSoundsDuringRecording:error:"); - bool _objc_msgSend_1151( - ffi.Pointer obj, - ffi.Pointer sel, - bool inValue, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1151( - obj, - sel, - inValue, - outError, - ); - } - - late final __objc_msgSend_1151Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Bool, ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1151 = __objc_msgSend_1151Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, bool, - ffi.Pointer>)>(); - - late final _sel_allowHapticsAndSystemSoundsDuringRecording1 = - _registerName1("allowHapticsAndSystemSoundsDuringRecording"); - late final _sel_recordPermission1 = _registerName1("recordPermission"); - int _objc_msgSend_1152( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1152( - obj, - sel, - ); - } - - late final __objc_msgSend_1152Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1152 = __objc_msgSend_1152Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_requestRecordPermission_1 = - _registerName1("requestRecordPermission:"); - void _objc_msgSend_1153( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> response, - ) { - return __objc_msgSend_1153( - obj, - sel, - response, - ); - } - - late final __objc_msgSend_1153Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1153 = __objc_msgSend_1153Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_overrideOutputAudioPort_error_1 = - _registerName1("overrideOutputAudioPort:error:"); - bool _objc_msgSend_1154( - ffi.Pointer obj, - ffi.Pointer sel, - int portOverride, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1154( - obj, - sel, - portOverride, - outError, - ); - } - - late final __objc_msgSend_1154Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1154 = __objc_msgSend_1154Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer>)>(); - - late final _class_AVAudioSessionPortDescription1 = - _getClass1("AVAudioSessionPortDescription"); - late final _sel_portType1 = _registerName1("portType"); - late final _sel_portName1 = _registerName1("portName"); - late final _sel_UID1 = _registerName1("UID"); - late final _sel_hasHardwareVoiceCallProcessing1 = - _registerName1("hasHardwareVoiceCallProcessing"); - late final _sel_isSpatialAudioEnabled1 = - _registerName1("isSpatialAudioEnabled"); - late final _sel_channels1 = _registerName1("channels"); - late final _sel_dataSources1 = _registerName1("dataSources"); - late final _class_AVAudioSessionDataSourceDescription1 = - _getClass1("AVAudioSessionDataSourceDescription"); - late final _sel_dataSourceID1 = _registerName1("dataSourceID"); - late final _sel_dataSourceName1 = _registerName1("dataSourceName"); - late final _sel_location1 = _registerName1("location"); - late final _sel_orientation1 = _registerName1("orientation"); - late final _sel_supportedPolarPatterns1 = - _registerName1("supportedPolarPatterns"); - late final _sel_selectedPolarPattern1 = - _registerName1("selectedPolarPattern"); - late final _sel_preferredPolarPattern1 = - _registerName1("preferredPolarPattern"); - late final _sel_setPreferredPolarPattern_error_1 = - _registerName1("setPreferredPolarPattern:error:"); - bool _objc_msgSend_1155( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer pattern, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1155( - obj, - sel, - pattern, - outError, - ); - } - - late final __objc_msgSend_1155Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1155 = __objc_msgSend_1155Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_selectedDataSource1 = _registerName1("selectedDataSource"); - ffi.Pointer _objc_msgSend_1156( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1156( - obj, - sel, - ); - } - - late final __objc_msgSend_1156Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1156 = __objc_msgSend_1156Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_preferredDataSource1 = _registerName1("preferredDataSource"); - late final _sel_setPreferredDataSource_error_1 = - _registerName1("setPreferredDataSource:error:"); - bool _objc_msgSend_1157( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer dataSource, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1157( - obj, - sel, - dataSource, - outError, - ); - } - - late final __objc_msgSend_1157Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1157 = __objc_msgSend_1157Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_setPreferredInput_error_1 = - _registerName1("setPreferredInput:error:"); - bool _objc_msgSend_1158( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer inPort, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1158( - obj, - sel, - inPort, - outError, - ); - } - - late final __objc_msgSend_1158Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1158 = __objc_msgSend_1158Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_preferredInput1 = _registerName1("preferredInput"); - ffi.Pointer _objc_msgSend_1159( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1159( - obj, - sel, - ); - } - - late final __objc_msgSend_1159Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1159 = __objc_msgSend_1159Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setPrefersNoInterruptionsFromSystemAlerts_error_1 = - _registerName1("setPrefersNoInterruptionsFromSystemAlerts:error:"); - late final _sel_prefersNoInterruptionsFromSystemAlerts1 = - _registerName1("prefersNoInterruptionsFromSystemAlerts"); - late final _sel_renderingMode1 = _registerName1("renderingMode"); - int _objc_msgSend_1160( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1160( - obj, - sel, - ); - } - - late final __objc_msgSend_1160Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1160 = __objc_msgSend_1160Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setActive_error_1 = _registerName1("setActive:error:"); - late final _sel_setActive_withOptions_error_1 = - _registerName1("setActive:withOptions:error:"); - bool _objc_msgSend_1161( - ffi.Pointer obj, - ffi.Pointer sel, - bool active, - int options, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1161( - obj, - sel, - active, - options, - outError, - ); - } - - late final __objc_msgSend_1161Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1161 = __objc_msgSend_1161Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, bool, int, - ffi.Pointer>)>(); - - late final _sel_activateWithOptions_completionHandler_1 = - _registerName1("activateWithOptions:completionHandler:"); - void _objc_msgSend_1162( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ffi.Pointer<_ObjCBlock> handler, - ) { - return __objc_msgSend_1162( - obj, - sel, - options, - handler, - ); - } - - late final __objc_msgSend_1162Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1162 = __objc_msgSend_1162Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_setPreferredSampleRate_error_1 = - _registerName1("setPreferredSampleRate:error:"); - bool _objc_msgSend_1163( - ffi.Pointer obj, - ffi.Pointer sel, - double sampleRate, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1163( - obj, - sel, - sampleRate, - outError, - ); - } - - late final __objc_msgSend_1163Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Double, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1163 = __objc_msgSend_1163Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, double, - ffi.Pointer>)>(); - - late final _sel_preferredSampleRate1 = _registerName1("preferredSampleRate"); - late final _sel_setPreferredIOBufferDuration_error_1 = - _registerName1("setPreferredIOBufferDuration:error:"); - late final _sel_preferredIOBufferDuration1 = - _registerName1("preferredIOBufferDuration"); - late final _sel_setPreferredInputNumberOfChannels_error_1 = - _registerName1("setPreferredInputNumberOfChannels:error:"); - bool _objc_msgSend_1164( - ffi.Pointer obj, - ffi.Pointer sel, - int count, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1164( - obj, - sel, - count, - outError, - ); - } - - late final __objc_msgSend_1164Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Long, ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1164 = __objc_msgSend_1164Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer>)>(); - - late final _sel_preferredInputNumberOfChannels1 = - _registerName1("preferredInputNumberOfChannels"); - late final _sel_setPreferredOutputNumberOfChannels_error_1 = - _registerName1("setPreferredOutputNumberOfChannels:error:"); - late final _sel_preferredOutputNumberOfChannels1 = - _registerName1("preferredOutputNumberOfChannels"); - late final _sel_setPreferredInputOrientation_error_1 = - _registerName1("setPreferredInputOrientation:error:"); - bool _objc_msgSend_1165( - ffi.Pointer obj, - ffi.Pointer sel, - int orientation, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1165( - obj, - sel, - orientation, - outError, - ); - } - - late final __objc_msgSend_1165Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1165 = __objc_msgSend_1165Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer>)>(); - - late final _sel_preferredInputOrientation1 = - _registerName1("preferredInputOrientation"); - int _objc_msgSend_1166( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1166( - obj, - sel, - ); - } - - late final __objc_msgSend_1166Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1166 = __objc_msgSend_1166Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_inputOrientation1 = _registerName1("inputOrientation"); - late final _sel_maximumInputNumberOfChannels1 = - _registerName1("maximumInputNumberOfChannels"); - late final _sel_maximumOutputNumberOfChannels1 = - _registerName1("maximumOutputNumberOfChannels"); - late final _sel_setInputGain_error_1 = _registerName1("setInputGain:error:"); - bool _objc_msgSend_1167( - ffi.Pointer obj, - ffi.Pointer sel, - double gain, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1167( - obj, - sel, - gain, - outError, - ); - } - - late final __objc_msgSend_1167Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Float, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1167 = __objc_msgSend_1167Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, double, - ffi.Pointer>)>(); - - late final _sel_inputGain1 = _registerName1("inputGain"); - late final _sel_isInputGainSettable1 = _registerName1("isInputGainSettable"); - late final _sel_isInputAvailable1 = _registerName1("isInputAvailable"); - late final _sel_inputDataSources1 = _registerName1("inputDataSources"); - late final _sel_inputDataSource1 = _registerName1("inputDataSource"); - late final _sel_setInputDataSource_error_1 = - _registerName1("setInputDataSource:error:"); - late final _sel_outputDataSources1 = _registerName1("outputDataSources"); - late final _sel_outputDataSource1 = _registerName1("outputDataSource"); - late final _sel_setOutputDataSource_error_1 = - _registerName1("setOutputDataSource:error:"); - late final _sel_sampleRate1 = _registerName1("sampleRate"); - late final _sel_inputNumberOfChannels1 = - _registerName1("inputNumberOfChannels"); - late final _sel_outputNumberOfChannels1 = - _registerName1("outputNumberOfChannels"); - late final _sel_inputLatency1 = _registerName1("inputLatency"); - late final _sel_outputLatency1 = _registerName1("outputLatency"); - late final _sel_IOBufferDuration1 = _registerName1("IOBufferDuration"); - late final _sel_supportedOutputChannelLayouts1 = - _registerName1("supportedOutputChannelLayouts"); - late final _sel_isOtherAudioPlaying1 = _registerName1("isOtherAudioPlaying"); - late final _sel_secondaryAudioShouldBeSilencedHint1 = - _registerName1("secondaryAudioShouldBeSilencedHint"); - late final _sel_outputVolume1 = _registerName1("outputVolume"); - late final _sel_promptStyle1 = _registerName1("promptStyle"); - int _objc_msgSend_1168( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1168( - obj, - sel, - ); - } - - late final __objc_msgSend_1168Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1168 = __objc_msgSend_1168Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_availableInputs1 = _registerName1("availableInputs"); - late final _class_AVAudioSessionRouteDescription1 = - _getClass1("AVAudioSessionRouteDescription"); - late final _sel_inputs1 = _registerName1("inputs"); - late final _sel_outputs1 = _registerName1("outputs"); - late final _sel_currentRoute1 = _registerName1("currentRoute"); - ffi.Pointer _objc_msgSend_1169( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1169( - obj, - sel, - ); - } - - late final __objc_msgSend_1169Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1169 = __objc_msgSend_1169Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setAggregatedIOPreference_error_1 = - _registerName1("setAggregatedIOPreference:error:"); - bool _objc_msgSend_1170( - ffi.Pointer obj, - ffi.Pointer sel, - int inIOType, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1170( - obj, - sel, - inIOType, - outError, - ); - } - - late final __objc_msgSend_1170Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1170 = __objc_msgSend_1170Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer>)>(); - - late final _sel_setSupportsMultichannelContent_error_1 = - _registerName1("setSupportsMultichannelContent:error:"); - late final _sel_supportsMultichannelContent1 = - _registerName1("supportsMultichannelContent"); - late final _sel_setPrefersInterruptionOnRouteDisconnect_error_1 = - _registerName1("setPrefersInterruptionOnRouteDisconnect:error:"); - late final _sel_prefersInterruptionOnRouteDisconnect1 = - _registerName1("prefersInterruptionOnRouteDisconnect"); - late final _sel_setActive_withFlags_error_1 = - _registerName1("setActive:withFlags:error:"); - bool _objc_msgSend_1171( - ffi.Pointer obj, - ffi.Pointer sel, - bool active, - int flags, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1171( - obj, - sel, - active, - flags, - outError, - ); - } - - late final __objc_msgSend_1171Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Long, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1171 = __objc_msgSend_1171Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, bool, int, - ffi.Pointer>)>(); - - late final _sel_inputIsAvailable1 = _registerName1("inputIsAvailable"); - late final _sel_currentHardwareSampleRate1 = - _registerName1("currentHardwareSampleRate"); - late final _sel_currentHardwareInputNumberOfChannels1 = - _registerName1("currentHardwareInputNumberOfChannels"); - late final _sel_currentHardwareOutputNumberOfChannels1 = - _registerName1("currentHardwareOutputNumberOfChannels"); - late final _sel_setPreferredHardwareSampleRate_error_1 = - _registerName1("setPreferredHardwareSampleRate:error:"); - late final _sel_preferredHardwareSampleRate1 = - _registerName1("preferredHardwareSampleRate"); - late final _class_AVAudioPlayer1 = _getClass1("AVAudioPlayer"); - late final _sel_initWithData_error_1 = _registerName1("initWithData:error:"); - instancetype _objc_msgSend_1172( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1172( - obj, - sel, - data, - outError, - ); - } - - late final __objc_msgSend_1172Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1172 = __objc_msgSend_1172Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_initWithContentsOfURL_fileTypeHint_error_1 = - _registerName1("initWithContentsOfURL:fileTypeHint:error:"); - instancetype _objc_msgSend_1173( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer utiString, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1173( - obj, - sel, - url, - utiString, - outError, - ); - } - - late final __objc_msgSend_1173Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1173 = __objc_msgSend_1173Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_initWithData_fileTypeHint_error_1 = - _registerName1("initWithData:fileTypeHint:error:"); - instancetype _objc_msgSend_1174( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ffi.Pointer utiString, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1174( - obj, - sel, - data, - utiString, - outError, - ); - } - - late final __objc_msgSend_1174Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1174 = __objc_msgSend_1174Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_prepareToPlay1 = _registerName1("prepareToPlay"); - late final _sel_play1 = _registerName1("play"); - late final _sel_playAtTime_1 = _registerName1("playAtTime:"); - bool _objc_msgSend_1175( - ffi.Pointer obj, - ffi.Pointer sel, - double time, - ) { - return __objc_msgSend_1175( - obj, - sel, - time, - ); - } - - late final __objc_msgSend_1175Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_1175 = __objc_msgSend_1175Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_isPlaying1 = _registerName1("isPlaying"); - late final _sel_numberOfChannels1 = _registerName1("numberOfChannels"); - late final _sel_currentDevice1 = _registerName1("currentDevice"); - late final _sel_setCurrentDevice_1 = _registerName1("setCurrentDevice:"); - late final _sel_url1 = _registerName1("url"); - late final _sel_pan1 = _registerName1("pan"); - late final _sel_setPan_1 = _registerName1("setPan:"); - late final _sel_volume1 = _registerName1("volume"); - late final _sel_setVolume_1 = _registerName1("setVolume:"); - late final _sel_setVolume_fadeDuration_1 = - _registerName1("setVolume:fadeDuration:"); - void _objc_msgSend_1176( - ffi.Pointer obj, - ffi.Pointer sel, - double volume, - double duration, - ) { - return __objc_msgSend_1176( - obj, - sel, - volume, - duration, - ); - } - - late final __objc_msgSend_1176Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Float, ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_1176 = __objc_msgSend_1176Ptr.asFunction< - void Function( - ffi.Pointer, ffi.Pointer, double, double)>(); - - late final _sel_enableRate1 = _registerName1("enableRate"); - late final _sel_setEnableRate_1 = _registerName1("setEnableRate:"); - late final _sel_rate1 = _registerName1("rate"); - late final _sel_setRate_1 = _registerName1("setRate:"); - late final _sel_currentTime1 = _registerName1("currentTime"); - late final _sel_setCurrentTime_1 = _registerName1("setCurrentTime:"); - late final _sel_deviceCurrentTime1 = _registerName1("deviceCurrentTime"); - late final _sel_numberOfLoops1 = _registerName1("numberOfLoops"); - late final _sel_setNumberOfLoops_1 = _registerName1("setNumberOfLoops:"); - late final _sel_settings1 = _registerName1("settings"); - late final _class_AVAudioFormat1 = _getClass1("AVAudioFormat"); - late final _sel_initWithStreamDescription_1 = - _registerName1("initWithStreamDescription:"); - instancetype _objc_msgSend_1177( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer asbd, - ) { - return __objc_msgSend_1177( - obj, - sel, - asbd, - ); - } - - late final __objc_msgSend_1177Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1177 = __objc_msgSend_1177Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _class_AVAudioChannelLayout1 = _getClass1("AVAudioChannelLayout"); - late final _sel_initWithLayoutTag_1 = _registerName1("initWithLayoutTag:"); - instancetype _objc_msgSend_1178( - ffi.Pointer obj, - ffi.Pointer sel, - int layoutTag, - ) { - return __objc_msgSend_1178( - obj, - sel, - layoutTag, - ); - } - - late final __objc_msgSend_1178Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_1178 = __objc_msgSend_1178Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithLayout_1 = _registerName1("initWithLayout:"); - instancetype _objc_msgSend_1179( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer layout, - ) { - return __objc_msgSend_1179( - obj, - sel, - layout, - ); - } - - late final __objc_msgSend_1179Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1179 = __objc_msgSend_1179Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isEqual_1 = _registerName1("isEqual:"); - late final _sel_layoutWithLayoutTag_1 = - _registerName1("layoutWithLayoutTag:"); - instancetype _objc_msgSend_1180( - ffi.Pointer obj, - ffi.Pointer sel, - int layoutTag, - ) { - return __objc_msgSend_1180( - obj, - sel, - layoutTag, - ); - } - - late final __objc_msgSend_1180Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_1180 = __objc_msgSend_1180Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_layoutWithLayout_1 = _registerName1("layoutWithLayout:"); - late final _sel_layoutTag1 = _registerName1("layoutTag"); - late final _sel_layout1 = _registerName1("layout"); - ffi.Pointer _objc_msgSend_1181( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1181( - obj, - sel, - ); - } - - late final __objc_msgSend_1181Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1181 = __objc_msgSend_1181Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_channelCount1 = _registerName1("channelCount"); - int _objc_msgSend_1182( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1182( - obj, - sel, - ); - } - - late final __objc_msgSend_1182Ptr = _lookup< - ffi.NativeFunction< - ffi.Uint32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1182 = __objc_msgSend_1182Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithStreamDescription_channelLayout_1 = - _registerName1("initWithStreamDescription:channelLayout:"); - instancetype _objc_msgSend_1183( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer asbd, - ffi.Pointer layout, - ) { - return __objc_msgSend_1183( - obj, - sel, - asbd, - layout, - ); - } - - late final __objc_msgSend_1183Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1183 = __objc_msgSend_1183Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initStandardFormatWithSampleRate_channels_1 = - _registerName1("initStandardFormatWithSampleRate:channels:"); - instancetype _objc_msgSend_1184( - ffi.Pointer obj, - ffi.Pointer sel, - double sampleRate, - int channels, - ) { - return __objc_msgSend_1184( - obj, - sel, - sampleRate, - channels, - ); - } - - late final __objc_msgSend_1184Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Double, ffi.Uint32)>>('objc_msgSend'); - late final __objc_msgSend_1184 = __objc_msgSend_1184Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, double, int)>(); - - late final _sel_initStandardFormatWithSampleRate_channelLayout_1 = - _registerName1("initStandardFormatWithSampleRate:channelLayout:"); - instancetype _objc_msgSend_1185( - ffi.Pointer obj, - ffi.Pointer sel, - double sampleRate, - ffi.Pointer layout, - ) { - return __objc_msgSend_1185( - obj, - sel, - sampleRate, - layout, - ); - } - - late final __objc_msgSend_1185Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Double, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1185 = __objc_msgSend_1185Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - double, ffi.Pointer)>(); - - late final _sel_initWithCommonFormat_sampleRate_channels_interleaved_1 = - _registerName1("initWithCommonFormat:sampleRate:channels:interleaved:"); - instancetype _objc_msgSend_1186( - ffi.Pointer obj, - ffi.Pointer sel, - int format, - double sampleRate, - int channels, - bool interleaved, - ) { - return __objc_msgSend_1186( - obj, - sel, - format, - sampleRate, - channels, - interleaved, - ); - } - - late final __objc_msgSend_1186Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Double, ffi.Uint32, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_1186 = __objc_msgSend_1186Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - double, int, bool)>(); - - late final _sel_initWithCommonFormat_sampleRate_interleaved_channelLayout_1 = - _registerName1( - "initWithCommonFormat:sampleRate:interleaved:channelLayout:"); - instancetype _objc_msgSend_1187( - ffi.Pointer obj, - ffi.Pointer sel, - int format, - double sampleRate, - bool interleaved, - ffi.Pointer layout, - ) { - return __objc_msgSend_1187( - obj, - sel, - format, - sampleRate, - interleaved, - layout, - ); - } - - late final __objc_msgSend_1187Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Double, - ffi.Bool, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1187 = __objc_msgSend_1187Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - double, bool, ffi.Pointer)>(); - - late final _sel_initWithSettings_1 = _registerName1("initWithSettings:"); - late final _sel_initWithCMAudioFormatDescription_1 = - _registerName1("initWithCMAudioFormatDescription:"); - instancetype _objc_msgSend_1188( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer formatDescription, - ) { - return __objc_msgSend_1188( - obj, - sel, - formatDescription, - ); - } - - late final __objc_msgSend_1188Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1188 = __objc_msgSend_1188Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isStandard1 = _registerName1("isStandard"); - late final _sel_commonFormat1 = _registerName1("commonFormat"); - int _objc_msgSend_1189( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1189( - obj, - sel, - ); - } - - late final __objc_msgSend_1189Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1189 = __objc_msgSend_1189Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isInterleaved1 = _registerName1("isInterleaved"); - late final _sel_streamDescription1 = _registerName1("streamDescription"); - ffi.Pointer _objc_msgSend_1190( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1190( - obj, - sel, - ); - } - - late final __objc_msgSend_1190Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1190 = __objc_msgSend_1190Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_channelLayout1 = _registerName1("channelLayout"); - ffi.Pointer _objc_msgSend_1191( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1191( - obj, - sel, - ); - } - - late final __objc_msgSend_1191Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1191 = __objc_msgSend_1191Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_magicCookie1 = _registerName1("magicCookie"); - late final _sel_setMagicCookie_1 = _registerName1("setMagicCookie:"); - late final _sel_formatDescription1 = _registerName1("formatDescription"); - ffi.Pointer _objc_msgSend_1192( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1192( - obj, - sel, - ); - } - - late final __objc_msgSend_1192Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1192 = __objc_msgSend_1192Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - ffi.Pointer _objc_msgSend_1193( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1193( - obj, - sel, - ); - } - - late final __objc_msgSend_1193Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1193 = __objc_msgSend_1193Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isMeteringEnabled1 = _registerName1("isMeteringEnabled"); - late final _sel_setMeteringEnabled_1 = _registerName1("setMeteringEnabled:"); - late final _sel_updateMeters1 = _registerName1("updateMeters"); - late final _sel_peakPowerForChannel_1 = - _registerName1("peakPowerForChannel:"); - double _objc_msgSend_1194( - ffi.Pointer obj, - ffi.Pointer sel, - int channelNumber, - ) { - return __objc_msgSend_1194( - obj, - sel, - channelNumber, - ); - } - - late final __objc_msgSend_1194Ptr = _lookup< - ffi.NativeFunction< - ffi.Float Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_1194 = __objc_msgSend_1194Ptr.asFunction< - double Function(ffi.Pointer, ffi.Pointer, int)>(); - - double _objc_msgSend_1194_fpret( - ffi.Pointer obj, - ffi.Pointer sel, - int channelNumber, - ) { - return __objc_msgSend_1194_fpret( - obj, - sel, - channelNumber, - ); - } - - late final __objc_msgSend_1194_fpretPtr = _lookup< - ffi.NativeFunction< - ffi.Float Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend_fpret'); - late final __objc_msgSend_1194_fpret = - __objc_msgSend_1194_fpretPtr.asFunction< - double Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_averagePowerForChannel_1 = - _registerName1("averagePowerForChannel:"); - late final _sel_channelAssignments1 = _registerName1("channelAssignments"); - late final _sel_setChannelAssignments_1 = - _registerName1("setChannelAssignments:"); -} - -class _ObjCWrapper implements ffi.Finalizable { - final ffi.Pointer _id; - final AVFAudio _lib; - bool _pendingRelease; - - _ObjCWrapper._(this._id, this._lib, - {bool retain = false, bool release = false}) - : _pendingRelease = release { - if (retain) { - _lib._objc_retain(_id.cast()); - } - if (release) { - _lib._objc_releaseFinalizer2.attach(this, _id.cast(), detach: this); - } - } - - /// Releases the reference to the underlying ObjC object held by this wrapper. - /// Throws a StateError if this wrapper doesn't currently hold a reference. - void release() { - if (_pendingRelease) { - _pendingRelease = false; - _lib._objc_release(_id.cast()); - _lib._objc_releaseFinalizer2.detach(this); - } else { - throw StateError( - 'Released an ObjC object that was unowned or already released.'); - } - } - - @override - bool operator ==(Object other) { - return other is _ObjCWrapper && _id == other._id; - } - - @override - int get hashCode => _id.hashCode; - - /// Return a pointer to this object. - ffi.Pointer get pointer => _id; - - ffi.Pointer retainAndReturnPointer() { - _lib._objc_retain(_id.cast()); - return _id; - } -} - -class NSObject extends _ObjCWrapper { - NSObject._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSObject] that points to the same underlying object as [other]. - static NSObject castFrom(T other) { - return NSObject._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSObject] that wraps the given raw object pointer. - static NSObject castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSObject._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSObject]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSObject1); - } - - static void load(AVFAudio _lib) { - _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_load1); - } - - static void initialize(AVFAudio _lib) { - _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_initialize1); - } - - NSObject init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_new1); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static NSObject allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSObject1, _lib._sel_allocWithZone_1, zone); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static NSObject alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_alloc1); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - void dealloc() { - _lib._objc_msgSend_1(_id, _lib._sel_dealloc1); - } - - void finalize() { - _lib._objc_msgSend_1(_id, _lib._sel_finalize1); - } - - NSObject copy() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_copy1); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - NSObject mutableCopy() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_mutableCopy1); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static NSObject copyWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSObject1, _lib._sel_copyWithZone_1, zone); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static NSObject mutableCopyWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSObject1, _lib._sel_mutableCopyWithZone_1, zone); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static bool instancesRespondToSelector_( - AVFAudio _lib, ffi.Pointer aSelector) { - return _lib._objc_msgSend_4(_lib._class_NSObject1, - _lib._sel_instancesRespondToSelector_1, aSelector); - } - - static bool conformsToProtocol_(AVFAudio _lib, Protocol protocol) { - return _lib._objc_msgSend_5( - _lib._class_NSObject1, _lib._sel_conformsToProtocol_1, protocol._id); - } - - ffi.Pointer> methodForSelector_( - ffi.Pointer aSelector) { - return _lib._objc_msgSend_6(_id, _lib._sel_methodForSelector_1, aSelector); - } - - static ffi.Pointer> - instanceMethodForSelector_( - AVFAudio _lib, ffi.Pointer aSelector) { - return _lib._objc_msgSend_6(_lib._class_NSObject1, - _lib._sel_instanceMethodForSelector_1, aSelector); - } - - void doesNotRecognizeSelector_(ffi.Pointer aSelector) { - _lib._objc_msgSend_7(_id, _lib._sel_doesNotRecognizeSelector_1, aSelector); - } - - NSObject forwardingTargetForSelector_(ffi.Pointer aSelector) { - final _ret = _lib._objc_msgSend_8( - _id, _lib._sel_forwardingTargetForSelector_1, aSelector); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void forwardInvocation_(NSInvocation anInvocation) { - _lib._objc_msgSend_421( - _id, _lib._sel_forwardInvocation_1, anInvocation._id); - } - - NSMethodSignature methodSignatureForSelector_( - ffi.Pointer aSelector) { - final _ret = _lib._objc_msgSend_422( - _id, _lib._sel_methodSignatureForSelector_1, aSelector); - return NSMethodSignature._(_ret, _lib, retain: true, release: true); - } - - static NSMethodSignature instanceMethodSignatureForSelector_( - AVFAudio _lib, ffi.Pointer aSelector) { - final _ret = _lib._objc_msgSend_422(_lib._class_NSObject1, - _lib._sel_instanceMethodSignatureForSelector_1, aSelector); - return NSMethodSignature._(_ret, _lib, retain: true, release: true); - } - - bool allowsWeakReference() { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsWeakReference1); - } - - bool retainWeakReference() { - return _lib._objc_msgSend_12(_id, _lib._sel_retainWeakReference1); - } - - static bool isSubclassOfClass_(AVFAudio _lib, NSObject aClass) { - return _lib._objc_msgSend_0( - _lib._class_NSObject1, _lib._sel_isSubclassOfClass_1, aClass._id); - } - - static bool resolveClassMethod_(AVFAudio _lib, ffi.Pointer sel) { - return _lib._objc_msgSend_4( - _lib._class_NSObject1, _lib._sel_resolveClassMethod_1, sel); - } - - static bool resolveInstanceMethod_(AVFAudio _lib, ffi.Pointer sel) { - return _lib._objc_msgSend_4( - _lib._class_NSObject1, _lib._sel_resolveInstanceMethod_1, sel); - } - - static int hash(AVFAudio _lib) { - return _lib._objc_msgSend_10(_lib._class_NSObject1, _lib._sel_hash1); - } - - static NSObject superclass(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_superclass1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject class1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_class1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSString description(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_21(_lib._class_NSObject1, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString debugDescription(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_21( - _lib._class_NSObject1, _lib._sel_debugDescription1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static int version(AVFAudio _lib) { - return _lib._objc_msgSend_83(_lib._class_NSObject1, _lib._sel_version1); - } - - static void setVersion_(AVFAudio _lib, int aVersion) { - _lib._objc_msgSend_423( - _lib._class_NSObject1, _lib._sel_setVersion_1, aVersion); - } - - NSObject get classForCoder { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_classForCoder1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? replacementObjectForCoder_(NSCoder coder) { - final _ret = _lib._objc_msgSend_47( - _id, _lib._sel_replacementObjectForCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? awakeAfterUsingCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_awakeAfterUsingCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: false, release: true); - } - - static void poseAsClass_(AVFAudio _lib, NSObject aClass) { - _lib._objc_msgSend_15( - _lib._class_NSObject1, _lib._sel_poseAsClass_1, aClass._id); - } - - NSObject get autoContentAccessingProxy { - final _ret = - _lib._objc_msgSend_2(_id, _lib._sel_autoContentAccessingProxy1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void - attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_( - NSError error, - int recoveryOptionIndex, - NSObject? delegate, - ffi.Pointer didRecoverSelector, - ffi.Pointer contextInfo) { - _lib._objc_msgSend_424( - _id, - _lib._sel_attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_1, - error._id, - recoveryOptionIndex, - delegate?._id ?? ffi.nullptr, - didRecoverSelector, - contextInfo); - } - - bool attemptRecoveryFromError_optionIndex_( - NSError error, int recoveryOptionIndex) { - return _lib._objc_msgSend_425( - _id, - _lib._sel_attemptRecoveryFromError_optionIndex_1, - error._id, - recoveryOptionIndex); - } - - void performSelector_withObject_afterDelay_inModes_( - ffi.Pointer aSelector, - NSObject? anArgument, - double delay, - NSArray modes) { - _lib._objc_msgSend_426( - _id, - _lib._sel_performSelector_withObject_afterDelay_inModes_1, - aSelector, - anArgument?._id ?? ffi.nullptr, - delay, - modes._id); - } - - void performSelector_withObject_afterDelay_( - ffi.Pointer aSelector, NSObject? anArgument, double delay) { - _lib._objc_msgSend_427( - _id, - _lib._sel_performSelector_withObject_afterDelay_1, - aSelector, - anArgument?._id ?? ffi.nullptr, - delay); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSObject1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSObject1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - void URL_resourceDataDidBecomeAvailable_(NSURL sender, NSData newBytes) { - _lib._objc_msgSend_428(_id, _lib._sel_URL_resourceDataDidBecomeAvailable_1, - sender._id, newBytes._id); - } - - void URLResourceDidFinishLoading_(NSURL sender) { - _lib._objc_msgSend_429( - _id, _lib._sel_URLResourceDidFinishLoading_1, sender._id); - } - - void URLResourceDidCancelLoading_(NSURL sender) { - _lib._objc_msgSend_429( - _id, _lib._sel_URLResourceDidCancelLoading_1, sender._id); - } - - void URL_resourceDidFailLoadingWithReason_(NSURL sender, NSString reason) { - _lib._objc_msgSend_430( - _id, - _lib._sel_URL_resourceDidFailLoadingWithReason_1, - sender._id, - reason._id); - } - - bool fileManager_shouldProceedAfterError_( - NSFileManager fm, NSDictionary errorInfo) { - return _lib._objc_msgSend_467(_id, - _lib._sel_fileManager_shouldProceedAfterError_1, fm._id, errorInfo._id); - } - - void fileManager_willProcessPath_(NSFileManager fm, NSString path) { - _lib._objc_msgSend_468( - _id, _lib._sel_fileManager_willProcessPath_1, fm._id, path._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSObject1, _lib._sel_accessInstanceVariablesDirectly1); - } - - NSObject? valueForKey_(NSString key) { - final _ret = _lib._objc_msgSend_38(_id, _lib._sel_valueForKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void setValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135( - _id, _lib._sel_setValue_forKey_1, value?._id ?? ffi.nullptr, key._id); - } - - bool validateValue_forKey_error_(ffi.Pointer> ioValue, - NSString inKey, ffi.Pointer> outError) { - return _lib._objc_msgSend_243(_id, _lib._sel_validateValue_forKey_error_1, - ioValue, inKey._id, outError); - } - - NSMutableArray mutableArrayValueForKey_(NSString key) { - final _ret = _lib._objc_msgSend_488( - _id, _lib._sel_mutableArrayValueForKey_1, key._id); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - NSMutableOrderedSet mutableOrderedSetValueForKey_(NSString key) { - final _ret = _lib._objc_msgSend_506( - _id, _lib._sel_mutableOrderedSetValueForKey_1, key._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSMutableSet mutableSetValueForKey_(NSString key) { - final _ret = - _lib._objc_msgSend_507(_id, _lib._sel_mutableSetValueForKey_1, key._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - NSObject? valueForKeyPath_(NSString keyPath) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_valueForKeyPath_1, keyPath._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void setValue_forKeyPath_(NSObject? value, NSString keyPath) { - _lib._objc_msgSend_135(_id, _lib._sel_setValue_forKeyPath_1, - value?._id ?? ffi.nullptr, keyPath._id); - } - - bool validateValue_forKeyPath_error_( - ffi.Pointer> ioValue, - NSString inKeyPath, - ffi.Pointer> outError) { - return _lib._objc_msgSend_243( - _id, - _lib._sel_validateValue_forKeyPath_error_1, - ioValue, - inKeyPath._id, - outError); - } - - NSMutableArray mutableArrayValueForKeyPath_(NSString keyPath) { - final _ret = _lib._objc_msgSend_488( - _id, _lib._sel_mutableArrayValueForKeyPath_1, keyPath._id); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - NSMutableOrderedSet mutableOrderedSetValueForKeyPath_(NSString keyPath) { - final _ret = _lib._objc_msgSend_506( - _id, _lib._sel_mutableOrderedSetValueForKeyPath_1, keyPath._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSMutableSet mutableSetValueForKeyPath_(NSString keyPath) { - final _ret = _lib._objc_msgSend_507( - _id, _lib._sel_mutableSetValueForKeyPath_1, keyPath._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - NSObject? valueForUndefinedKey_(NSString key) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_valueForUndefinedKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void setValue_forUndefinedKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_setValue_forUndefinedKey_1, - value?._id ?? ffi.nullptr, key._id); - } - - void setNilValueForKey_(NSString key) { - _lib._objc_msgSend_247(_id, _lib._sel_setNilValueForKey_1, key._id); - } - - NSDictionary dictionaryWithValuesForKeys_(NSArray keys) { - final _ret = _lib._objc_msgSend_508( - _id, _lib._sel_dictionaryWithValuesForKeys_1, keys._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - void setValuesForKeysWithDictionary_(NSDictionary keyedValues) { - _lib._objc_msgSend_509( - _id, _lib._sel_setValuesForKeysWithDictionary_1, keyedValues._id); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSObject1, _lib._sel_useStoredAccessor1); - } - - NSObject? storedValueForKey_(NSString key) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_storedValueForKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void takeStoredValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_takeStoredValue_forKey_1, - value?._id ?? ffi.nullptr, key._id); - } - - void takeValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135( - _id, _lib._sel_takeValue_forKey_1, value?._id ?? ffi.nullptr, key._id); - } - - void takeValue_forKeyPath_(NSObject? value, NSString keyPath) { - _lib._objc_msgSend_135(_id, _lib._sel_takeValue_forKeyPath_1, - value?._id ?? ffi.nullptr, keyPath._id); - } - - NSObject? handleQueryWithUnboundKey_(NSString key) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_handleQueryWithUnboundKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void handleTakeValue_forUnboundKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_handleTakeValue_forUnboundKey_1, - value?._id ?? ffi.nullptr, key._id); - } - - void unableToSetNilForKey_(NSString key) { - _lib._objc_msgSend_247(_id, _lib._sel_unableToSetNilForKey_1, key._id); - } - - NSDictionary valuesForKeys_(NSArray keys) { - final _ret = - _lib._objc_msgSend_508(_id, _lib._sel_valuesForKeys_1, keys._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - void takeValuesFromDictionary_(NSDictionary properties) { - _lib._objc_msgSend_509( - _id, _lib._sel_takeValuesFromDictionary_1, properties._id); - } - - void observeValueForKeyPath_ofObject_change_context_(NSString? keyPath, - NSObject? object, NSDictionary? change, ffi.Pointer context) { - _lib._objc_msgSend_510( - _id, - _lib._sel_observeValueForKeyPath_ofObject_change_context_1, - keyPath?._id ?? ffi.nullptr, - object?._id ?? ffi.nullptr, - change?._id ?? ffi.nullptr, - context); - } - - void addObserver_forKeyPath_options_context_(NSObject observer, - NSString keyPath, int options, ffi.Pointer context) { - _lib._objc_msgSend_139( - _id, - _lib._sel_addObserver_forKeyPath_options_context_1, - observer._id, - keyPath._id, - options, - context); - } - - void removeObserver_forKeyPath_context_( - NSObject observer, NSString keyPath, ffi.Pointer context) { - _lib._objc_msgSend_140(_id, _lib._sel_removeObserver_forKeyPath_context_1, - observer._id, keyPath._id, context); - } - - void removeObserver_forKeyPath_(NSObject observer, NSString keyPath) { - _lib._objc_msgSend_141( - _id, _lib._sel_removeObserver_forKeyPath_1, observer._id, keyPath._id); - } - - void willChangeValueForKey_(NSString key) { - _lib._objc_msgSend_247(_id, _lib._sel_willChangeValueForKey_1, key._id); - } - - void didChangeValueForKey_(NSString key) { - _lib._objc_msgSend_247(_id, _lib._sel_didChangeValueForKey_1, key._id); - } - - void willChange_valuesAtIndexes_forKey_( - int changeKind, NSIndexSet indexes, NSString key) { - _lib._objc_msgSend_511(_id, _lib._sel_willChange_valuesAtIndexes_forKey_1, - changeKind, indexes._id, key._id); - } - - void didChange_valuesAtIndexes_forKey_( - int changeKind, NSIndexSet indexes, NSString key) { - _lib._objc_msgSend_511(_id, _lib._sel_didChange_valuesAtIndexes_forKey_1, - changeKind, indexes._id, key._id); - } - - void willChangeValueForKey_withSetMutation_usingObjects_( - NSString key, int mutationKind, NSSet objects) { - _lib._objc_msgSend_512( - _id, - _lib._sel_willChangeValueForKey_withSetMutation_usingObjects_1, - key._id, - mutationKind, - objects._id); - } - - void didChangeValueForKey_withSetMutation_usingObjects_( - NSString key, int mutationKind, NSSet objects) { - _lib._objc_msgSend_512( - _id, - _lib._sel_didChangeValueForKey_withSetMutation_usingObjects_1, - key._id, - mutationKind, - objects._id); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSObject1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSObject1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - ffi.Pointer get observationInfo { - return _lib._objc_msgSend_20(_id, _lib._sel_observationInfo1); - } - - set observationInfo(ffi.Pointer value) { - return _lib._objc_msgSend_513(_id, _lib._sel_setObservationInfo_1, value); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSObject1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - NSObject? get classForKeyedArchiver { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_classForKeyedArchiver1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? replacementObjectForKeyedArchiver_(NSKeyedArchiver archiver) { - final _ret = _lib._objc_msgSend_528( - _id, _lib._sel_replacementObjectForKeyedArchiver_1, archiver._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSObject1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSObject1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void performSelectorOnMainThread_withObject_waitUntilDone_modes_( - ffi.Pointer aSelector, - NSObject? arg, - bool wait, - NSArray? array) { - _lib._objc_msgSend_529( - _id, - _lib._sel_performSelectorOnMainThread_withObject_waitUntilDone_modes_1, - aSelector, - arg?._id ?? ffi.nullptr, - wait, - array?._id ?? ffi.nullptr); - } - - void performSelectorOnMainThread_withObject_waitUntilDone_( - ffi.Pointer aSelector, NSObject? arg, bool wait) { - _lib._objc_msgSend_530( - _id, - _lib._sel_performSelectorOnMainThread_withObject_waitUntilDone_1, - aSelector, - arg?._id ?? ffi.nullptr, - wait); - } - - void performSelector_onThread_withObject_waitUntilDone_modes_( - ffi.Pointer aSelector, - NSThread thr, - NSObject? arg, - bool wait, - NSArray? array) { - _lib._objc_msgSend_548( - _id, - _lib._sel_performSelector_onThread_withObject_waitUntilDone_modes_1, - aSelector, - thr._id, - arg?._id ?? ffi.nullptr, - wait, - array?._id ?? ffi.nullptr); - } - - void performSelector_onThread_withObject_waitUntilDone_( - ffi.Pointer aSelector, NSThread thr, NSObject? arg, bool wait) { - _lib._objc_msgSend_549( - _id, - _lib._sel_performSelector_onThread_withObject_waitUntilDone_1, - aSelector, - thr._id, - arg?._id ?? ffi.nullptr, - wait); - } - - void performSelectorInBackground_withObject_( - ffi.Pointer aSelector, NSObject? arg) { - _lib._objc_msgSend_90( - _id, - _lib._sel_performSelectorInBackground_withObject_1, - aSelector, - arg?._id ?? ffi.nullptr); - } - - NSObject? get classForArchiver { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_classForArchiver1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? replacementObjectForArchiver_(NSArchiver archiver) { - final _ret = _lib._objc_msgSend_552( - _id, _lib._sel_replacementObjectForArchiver_1, archiver._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject get classForPortCoder { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_classForPortCoder1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? replacementObjectForPortCoder_(NSPortCoder coder) { - final _ret = _lib._objc_msgSend_597( - _id, _lib._sel_replacementObjectForPortCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSClassDescription get classDescription { - final _ret = _lib._objc_msgSend_600(_id, _lib._sel_classDescription1); - return NSClassDescription._(_ret, _lib, retain: true, release: true); - } - - NSArray get attributeKeys { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_attributeKeys1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray get toOneRelationshipKeys { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_toOneRelationshipKeys1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray get toManyRelationshipKeys { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_toManyRelationshipKeys1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString? inverseForRelationshipKey_(NSString relationshipKey) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_inverseForRelationshipKey_1, relationshipKey._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSObject? scriptingValueForSpecifier_( - NSScriptObjectSpecifier objectSpecifier) { - final _ret = _lib._objc_msgSend_649( - _id, _lib._sel_scriptingValueForSpecifier_1, objectSpecifier._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? get scriptingProperties { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_scriptingProperties1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - set scriptingProperties(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, _lib._sel_setScriptingProperties_1, value?._id ?? ffi.nullptr); - } - - NSObject? copyScriptingValue_forKey_withProperties_( - NSObject value, NSString key, NSDictionary properties) { - final _ret = _lib._objc_msgSend_650( - _id, - _lib._sel_copyScriptingValue_forKey_withProperties_1, - value._id, - key._id, - properties._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: false, release: true); - } - - NSObject? - newScriptingObjectOfClass_forValueForKey_withContentsValue_properties_( - NSObject objectClass, - NSString key, - NSObject? contentsValue, - NSDictionary properties) { - final _ret = _lib._objc_msgSend_651( - _id, - _lib._sel_newScriptingObjectOfClass_forValueForKey_withContentsValue_properties_1, - objectClass._id, - key._id, - contentsValue?._id ?? ffi.nullptr, - properties._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: false, release: true); - } - - int get classCode { - return _lib._objc_msgSend_214(_id, _lib._sel_classCode1); - } - - NSString? get className { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_className1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSObject? valueAtIndex_inPropertyWithKey_(int index, NSString key) { - final _ret = _lib._objc_msgSend_652( - _id, _lib._sel_valueAtIndex_inPropertyWithKey_1, index, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? valueWithName_inPropertyWithKey_(NSString name, NSString key) { - final _ret = _lib._objc_msgSend_175( - _id, _lib._sel_valueWithName_inPropertyWithKey_1, name._id, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? valueWithUniqueID_inPropertyWithKey_( - NSObject uniqueID, NSString key) { - final _ret = _lib._objc_msgSend_311(_id, - _lib._sel_valueWithUniqueID_inPropertyWithKey_1, uniqueID._id, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void insertValue_atIndex_inPropertyWithKey_( - NSObject value, int index, NSString key) { - _lib._objc_msgSend_653( - _id, - _lib._sel_insertValue_atIndex_inPropertyWithKey_1, - value._id, - index, - key._id); - } - - void removeValueAtIndex_fromPropertyWithKey_(int index, NSString key) { - _lib._objc_msgSend_654(_id, - _lib._sel_removeValueAtIndex_fromPropertyWithKey_1, index, key._id); - } - - void replaceValueAtIndex_inPropertyWithKey_withValue_( - int index, NSString key, NSObject value) { - _lib._objc_msgSend_655( - _id, - _lib._sel_replaceValueAtIndex_inPropertyWithKey_withValue_1, - index, - key._id, - value._id); - } - - void insertValue_inPropertyWithKey_(NSObject value, NSString key) { - _lib._objc_msgSend_656( - _id, _lib._sel_insertValue_inPropertyWithKey_1, value._id, key._id); - } - - NSObject? coerceValue_forKey_(NSObject? value, NSString key) { - final _ret = _lib._objc_msgSend_657(_id, _lib._sel_coerceValue_forKey_1, - value?._id ?? ffi.nullptr, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSScriptObjectSpecifier? get objectSpecifier { - final _ret = _lib._objc_msgSend_632(_id, _lib._sel_objectSpecifier1); - return _ret.address == 0 - ? null - : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); - } - - NSArray? indicesOfObjectsByEvaluatingObjectSpecifier_( - NSScriptObjectSpecifier specifier) { - final _ret = _lib._objc_msgSend_658(_id, - _lib._sel_indicesOfObjectsByEvaluatingObjectSpecifier_1, specifier._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - bool isEqualTo_(NSObject? object) { - return _lib._objc_msgSend_217( - _id, _lib._sel_isEqualTo_1, object?._id ?? ffi.nullptr); - } - - bool isLessThanOrEqualTo_(NSObject? object) { - return _lib._objc_msgSend_217( - _id, _lib._sel_isLessThanOrEqualTo_1, object?._id ?? ffi.nullptr); - } - - bool isLessThan_(NSObject? object) { - return _lib._objc_msgSend_217( - _id, _lib._sel_isLessThan_1, object?._id ?? ffi.nullptr); - } - - bool isGreaterThanOrEqualTo_(NSObject? object) { - return _lib._objc_msgSend_217( - _id, _lib._sel_isGreaterThanOrEqualTo_1, object?._id ?? ffi.nullptr); - } - - bool isGreaterThan_(NSObject? object) { - return _lib._objc_msgSend_217( - _id, _lib._sel_isGreaterThan_1, object?._id ?? ffi.nullptr); - } - - bool isNotEqualTo_(NSObject? object) { - return _lib._objc_msgSend_217( - _id, _lib._sel_isNotEqualTo_1, object?._id ?? ffi.nullptr); - } - - bool doesContain_(NSObject object) { - return _lib._objc_msgSend_0(_id, _lib._sel_doesContain_1, object._id); - } - - bool isLike_(NSString object) { - return _lib._objc_msgSend_64(_id, _lib._sel_isLike_1, object._id); - } - - bool isCaseInsensitiveLike_(NSString object) { - return _lib._objc_msgSend_64( - _id, _lib._sel_isCaseInsensitiveLike_1, object._id); - } - - bool scriptingIsEqualTo_(NSObject object) { - return _lib._objc_msgSend_0( - _id, _lib._sel_scriptingIsEqualTo_1, object._id); - } - - bool scriptingIsLessThanOrEqualTo_(NSObject object) { - return _lib._objc_msgSend_0( - _id, _lib._sel_scriptingIsLessThanOrEqualTo_1, object._id); - } - - bool scriptingIsLessThan_(NSObject object) { - return _lib._objc_msgSend_0( - _id, _lib._sel_scriptingIsLessThan_1, object._id); - } - - bool scriptingIsGreaterThanOrEqualTo_(NSObject object) { - return _lib._objc_msgSend_0( - _id, _lib._sel_scriptingIsGreaterThanOrEqualTo_1, object._id); - } - - bool scriptingIsGreaterThan_(NSObject object) { - return _lib._objc_msgSend_0( - _id, _lib._sel_scriptingIsGreaterThan_1, object._id); - } - - bool scriptingBeginsWith_(NSObject object) { - return _lib._objc_msgSend_0( - _id, _lib._sel_scriptingBeginsWith_1, object._id); - } - - bool scriptingEndsWith_(NSObject object) { - return _lib._objc_msgSend_0(_id, _lib._sel_scriptingEndsWith_1, object._id); - } - - bool scriptingContains_(NSObject object) { - return _lib._objc_msgSend_0(_id, _lib._sel_scriptingContains_1, object._id); - } -} - -final class ObjCSel extends ffi.Opaque {} - -final class ObjCObject extends ffi.Opaque {} - -typedef instancetype = ffi.Pointer; -typedef Dartinstancetype = NSObject; - -final class _NSZone extends ffi.Opaque {} - -class Protocol extends _ObjCWrapper { - Protocol._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [Protocol] that points to the same underlying object as [other]. - static Protocol castFrom(T other) { - return Protocol._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [Protocol] that wraps the given raw object pointer. - static Protocol castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return Protocol._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [Protocol]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_Protocol1); - } -} - -class NSInvocation extends NSObject { - NSInvocation._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSInvocation] that points to the same underlying object as [other]. - static NSInvocation castFrom(T other) { - return NSInvocation._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSInvocation] that wraps the given raw object pointer. - static NSInvocation castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSInvocation._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSInvocation]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSInvocation1); - } - - static NSInvocation invocationWithMethodSignature_( - AVFAudio _lib, NSMethodSignature sig) { - final _ret = _lib._objc_msgSend_414(_lib._class_NSInvocation1, - _lib._sel_invocationWithMethodSignature_1, sig._id); - return NSInvocation._(_ret, _lib, retain: true, release: true); - } - - NSMethodSignature get methodSignature { - final _ret = _lib._objc_msgSend_415(_id, _lib._sel_methodSignature1); - return NSMethodSignature._(_ret, _lib, retain: true, release: true); - } - - void retainArguments() { - _lib._objc_msgSend_1(_id, _lib._sel_retainArguments1); - } - - bool get argumentsRetained { - return _lib._objc_msgSend_12(_id, _lib._sel_argumentsRetained1); - } - - NSObject? get target { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_target1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - set target(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setTarget_1, value?._id ?? ffi.nullptr); - } - - ffi.Pointer get selector { - return _lib._objc_msgSend_417(_id, _lib._sel_selector1); - } - - set selector(ffi.Pointer value) { - return _lib._objc_msgSend_418(_id, _lib._sel_setSelector_1, value); - } - - void getReturnValue_(ffi.Pointer retLoc) { - _lib._objc_msgSend_52(_id, _lib._sel_getReturnValue_1, retLoc); - } - - void setReturnValue_(ffi.Pointer retLoc) { - _lib._objc_msgSend_52(_id, _lib._sel_setReturnValue_1, retLoc); - } - - void getArgument_atIndex_(ffi.Pointer argumentLocation, int idx) { - _lib._objc_msgSend_419( - _id, _lib._sel_getArgument_atIndex_1, argumentLocation, idx); - } - - void setArgument_atIndex_(ffi.Pointer argumentLocation, int idx) { - _lib._objc_msgSend_419( - _id, _lib._sel_setArgument_atIndex_1, argumentLocation, idx); - } - - void invoke() { - _lib._objc_msgSend_1(_id, _lib._sel_invoke1); - } - - void invokeWithTarget_(NSObject target) { - _lib._objc_msgSend_15(_id, _lib._sel_invokeWithTarget_1, target._id); - } - - void invokeUsingIMP_( - ffi.Pointer> imp) { - _lib._objc_msgSend_420(_id, _lib._sel_invokeUsingIMP_1, imp); - } - - @override - NSInvocation init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSInvocation._(_ret, _lib, retain: true, release: true); - } - - static NSInvocation new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSInvocation1, _lib._sel_new1); - return NSInvocation._(_ret, _lib, retain: false, release: true); - } - - static NSInvocation allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSInvocation1, _lib._sel_allocWithZone_1, zone); - return NSInvocation._(_ret, _lib, retain: false, release: true); - } - - static NSInvocation alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSInvocation1, _lib._sel_alloc1); - return NSInvocation._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSInvocation1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSInvocation1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSInvocation1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSInvocation1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSInvocation1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSInvocation1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSInvocation1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSInvocation1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSInvocation1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSMethodSignature extends NSObject { - NSMethodSignature._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSMethodSignature] that points to the same underlying object as [other]. - static NSMethodSignature castFrom(T other) { - return NSMethodSignature._(other._id, other._lib, - retain: true, release: true); - } - - /// Returns a [NSMethodSignature] that wraps the given raw object pointer. - static NSMethodSignature castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMethodSignature._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSMethodSignature]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMethodSignature1); - } - - static NSMethodSignature? signatureWithObjCTypes_( - AVFAudio _lib, ffi.Pointer types) { - final _ret = _lib._objc_msgSend_9(_lib._class_NSMethodSignature1, - _lib._sel_signatureWithObjCTypes_1, types); - return _ret.address == 0 - ? null - : NSMethodSignature._(_ret, _lib, retain: true, release: true); - } - - int get numberOfArguments { - return _lib._objc_msgSend_10(_id, _lib._sel_numberOfArguments1); - } - - ffi.Pointer getArgumentTypeAtIndex_(int idx) { - return _lib._objc_msgSend_11(_id, _lib._sel_getArgumentTypeAtIndex_1, idx); - } - - int get frameLength { - return _lib._objc_msgSend_10(_id, _lib._sel_frameLength1); - } - - bool isOneway() { - return _lib._objc_msgSend_12(_id, _lib._sel_isOneway1); - } - - ffi.Pointer get methodReturnType { - return _lib._objc_msgSend_13(_id, _lib._sel_methodReturnType1); - } - - int get methodReturnLength { - return _lib._objc_msgSend_10(_id, _lib._sel_methodReturnLength1); - } - - @override - NSMethodSignature init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMethodSignature._(_ret, _lib, retain: true, release: true); - } - - static NSMethodSignature new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMethodSignature1, _lib._sel_new1); - return NSMethodSignature._(_ret, _lib, retain: false, release: true); - } - - static NSMethodSignature allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMethodSignature1, _lib._sel_allocWithZone_1, zone); - return NSMethodSignature._(_ret, _lib, retain: false, release: true); - } - - static NSMethodSignature alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMethodSignature1, _lib._sel_alloc1); - return NSMethodSignature._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMethodSignature1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMethodSignature1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMethodSignature1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMethodSignature1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMethodSignature1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMethodSignature1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMethodSignature1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSMethodSignature1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMethodSignature1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSSet extends NSObject { - NSSet._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSSet] that points to the same underlying object as [other]. - static NSSet castFrom(T other) { - return NSSet._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSSet] that wraps the given raw object pointer. - static NSSet castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSSet._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSSet]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSSet1); - } - - int get count { - return _lib._objc_msgSend_10(_id, _lib._sel_count1); - } - - NSObject? member_(NSObject object) { - final _ret = _lib._objc_msgSend_16(_id, _lib._sel_member_1, object._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSEnumerator objectEnumerator() { - final _ret = _lib._objc_msgSend_77(_id, _lib._sel_objectEnumerator1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - @override - NSSet init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet initWithObjects_count_( - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _id, _lib._sel_initWithObjects_count_1, objects, cnt); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSSet._(_ret, _lib, retain: true, release: true); - } - - NSArray get allObjects { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_allObjects1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject? anyObject() { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_anyObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - bool containsObject_(NSObject anObject) { - return _lib._objc_msgSend_0(_id, _lib._sel_containsObject_1, anObject._id); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_(NSObject? locale) { - final _ret = _lib._objc_msgSend_70( - _id, _lib._sel_descriptionWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - bool intersectsSet_(NSSet otherSet) { - return _lib._objc_msgSend_403(_id, _lib._sel_intersectsSet_1, otherSet._id); - } - - bool isEqualToSet_(NSSet otherSet) { - return _lib._objc_msgSend_403(_id, _lib._sel_isEqualToSet_1, otherSet._id); - } - - bool isSubsetOfSet_(NSSet otherSet) { - return _lib._objc_msgSend_403(_id, _lib._sel_isSubsetOfSet_1, otherSet._id); - } - - void makeObjectsPerformSelector_(ffi.Pointer aSelector) { - _lib._objc_msgSend_7( - _id, _lib._sel_makeObjectsPerformSelector_1, aSelector); - } - - void makeObjectsPerformSelector_withObject_( - ffi.Pointer aSelector, NSObject? argument) { - _lib._objc_msgSend_90( - _id, - _lib._sel_makeObjectsPerformSelector_withObject_1, - aSelector, - argument?._id ?? ffi.nullptr); - } - - NSSet setByAddingObject_(NSObject anObject) { - final _ret = _lib._objc_msgSend_404( - _id, _lib._sel_setByAddingObject_1, anObject._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet setByAddingObjectsFromSet_(NSSet other) { - final _ret = _lib._objc_msgSend_405( - _id, _lib._sel_setByAddingObjectsFromSet_1, other._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet setByAddingObjectsFromArray_(NSArray other) { - final _ret = _lib._objc_msgSend_406( - _id, _lib._sel_setByAddingObjectsFromArray_1, other._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - void enumerateObjectsUsingBlock_(ObjCBlock_ffiVoid_ObjCObject_bool block) { - _lib._objc_msgSend_407( - _id, _lib._sel_enumerateObjectsUsingBlock_1, block._id); - } - - void enumerateObjectsWithOptions_usingBlock_( - int opts, ObjCBlock_ffiVoid_ObjCObject_bool block) { - _lib._objc_msgSend_408(_id, - _lib._sel_enumerateObjectsWithOptions_usingBlock_1, opts, block._id); - } - - NSSet objectsPassingTest_(ObjCBlock_bool_ObjCObject_bool predicate) { - final _ret = _lib._objc_msgSend_409( - _id, _lib._sel_objectsPassingTest_1, predicate._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet objectsWithOptions_passingTest_( - int opts, ObjCBlock_bool_ObjCObject_bool predicate) { - final _ret = _lib._objc_msgSend_410( - _id, _lib._sel_objectsWithOptions_passingTest_1, opts, predicate._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static NSSet set1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSSet1, _lib._sel_set1); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static NSSet setWithObject_(AVFAudio _lib, NSObject object) { - final _ret = _lib._objc_msgSend_124( - _lib._class_NSSet1, _lib._sel_setWithObject_1, object._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static NSSet setWithObjects_count_( - AVFAudio _lib, ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _lib._class_NSSet1, _lib._sel_setWithObjects_count_1, objects, cnt); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static NSSet setWithObjects_(AVFAudio _lib, NSObject firstObj) { - final _ret = _lib._objc_msgSend_124( - _lib._class_NSSet1, _lib._sel_setWithObjects_1, firstObj._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static NSSet setWithSet_(AVFAudio _lib, NSSet set) { - final _ret = _lib._objc_msgSend_411( - _lib._class_NSSet1, _lib._sel_setWithSet_1, set._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static NSSet setWithArray_(AVFAudio _lib, NSArray array) { - final _ret = _lib._objc_msgSend_125( - _lib._class_NSSet1, _lib._sel_setWithArray_1, array._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet initWithObjects_(NSObject firstObj) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObjects_1, firstObj._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet initWithSet_(NSSet set) { - final _ret = _lib._objc_msgSend_411(_id, _lib._sel_initWithSet_1, set._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet initWithSet_copyItems_(NSSet set, bool flag) { - final _ret = _lib._objc_msgSend_412( - _id, _lib._sel_initWithSet_copyItems_1, set._id, flag); - return NSSet._(_ret, _lib, retain: false, release: true); - } - - NSSet initWithArray_(NSArray array) { - final _ret = - _lib._objc_msgSend_125(_id, _lib._sel_initWithArray_1, array._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSObject valueForKey_(NSString key) { - final _ret = _lib._objc_msgSend_31(_id, _lib._sel_valueForKey_1, key._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - void setValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135( - _id, _lib._sel_setValue_forKey_1, value?._id ?? ffi.nullptr, key._id); - } - - @override - void addObserver_forKeyPath_options_context_(NSObject observer, - NSString keyPath, int options, ffi.Pointer context) { - _lib._objc_msgSend_139( - _id, - _lib._sel_addObserver_forKeyPath_options_context_1, - observer._id, - keyPath._id, - options, - context); - } - - @override - void removeObserver_forKeyPath_context_( - NSObject observer, NSString keyPath, ffi.Pointer context) { - _lib._objc_msgSend_140(_id, _lib._sel_removeObserver_forKeyPath_context_1, - observer._id, keyPath._id, context); - } - - @override - void removeObserver_forKeyPath_(NSObject observer, NSString keyPath) { - _lib._objc_msgSend_141( - _id, _lib._sel_removeObserver_forKeyPath_1, observer._id, keyPath._id); - } - - NSArray sortedArrayUsingDescriptors_(NSArray sortDescriptors) { - final _ret = _lib._objc_msgSend_68( - _id, _lib._sel_sortedArrayUsingDescriptors_1, sortDescriptors._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSSet filteredSetUsingPredicate_(NSPredicate predicate) { - final _ret = _lib._objc_msgSend_413( - _id, _lib._sel_filteredSetUsingPredicate_1, predicate._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static NSSet new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSSet1, _lib._sel_new1); - return NSSet._(_ret, _lib, retain: false, release: true); - } - - static NSSet allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSSet1, _lib._sel_allocWithZone_1, zone); - return NSSet._(_ret, _lib, retain: false, release: true); - } - - static NSSet alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSSet1, _lib._sel_alloc1); - return NSSet._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSSet1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSSet1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSSet1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSSet1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSSet1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSSet1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSSet1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSEnumerator extends NSObject { - NSEnumerator._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSEnumerator] that points to the same underlying object as [other]. - static NSEnumerator castFrom(T other) { - return NSEnumerator._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSEnumerator] that wraps the given raw object pointer. - static NSEnumerator castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSEnumerator._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSEnumerator]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSEnumerator1); - } - - NSObject? nextObject() { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_nextObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject get allObjects { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_allObjects1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - NSEnumerator init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - static NSEnumerator new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSEnumerator1, _lib._sel_new1); - return NSEnumerator._(_ret, _lib, retain: false, release: true); - } - - static NSEnumerator allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSEnumerator1, _lib._sel_allocWithZone_1, zone); - return NSEnumerator._(_ret, _lib, retain: false, release: true); - } - - static NSEnumerator alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSEnumerator1, _lib._sel_alloc1); - return NSEnumerator._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSEnumerator1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSEnumerator1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSEnumerator1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSEnumerator1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSEnumerator1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSEnumerator1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSEnumerator1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSEnumerator1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSEnumerator1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSString extends NSObject { - NSString._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSString] that points to the same underlying object as [other]. - static NSString castFrom(T other) { - return NSString._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSString] that wraps the given raw object pointer. - static NSString castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSString._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSString]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSString1); - } - - factory NSString(AVFAudio _lib, String str) { - final cstr = str.toNativeUtf16(); - final nsstr = stringWithCharacters_length_(_lib, cstr.cast(), str.length); - pkg_ffi.calloc.free(cstr); - return nsstr; - } - - @override - String toString() { - final data = - dataUsingEncoding_(0x94000100 /* NSUTF16LittleEndianStringEncoding */); - return data!.bytes.cast().toDartString(length: length); - } - - int get length { - return _lib._objc_msgSend_10(_id, _lib._sel_length1); - } - - int characterAtIndex_(int index) { - return _lib._objc_msgSend_18(_id, _lib._sel_characterAtIndex_1, index); - } - - @override - NSString init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString substringFromIndex_(int from) { - final _ret = - _lib._objc_msgSend_332(_id, _lib._sel_substringFromIndex_1, from); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString substringToIndex_(int to) { - final _ret = _lib._objc_msgSend_332(_id, _lib._sel_substringToIndex_1, to); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString substringWithRange_(_NSRange range) { - final _ret = - _lib._objc_msgSend_333(_id, _lib._sel_substringWithRange_1, range); - return NSString._(_ret, _lib, retain: true, release: true); - } - - void getCharacters_range_( - ffi.Pointer buffer, _NSRange range) { - _lib._objc_msgSend_334(_id, _lib._sel_getCharacters_range_1, buffer, range); - } - - int compare_(NSString string) { - return _lib._objc_msgSend_335(_id, _lib._sel_compare_1, string._id); - } - - int compare_options_(NSString string, int mask) { - return _lib._objc_msgSend_336( - _id, _lib._sel_compare_options_1, string._id, mask); - } - - int compare_options_range_( - NSString string, int mask, _NSRange rangeOfReceiverToCompare) { - return _lib._objc_msgSend_337(_id, _lib._sel_compare_options_range_1, - string._id, mask, rangeOfReceiverToCompare); - } - - int compare_options_range_locale_(NSString string, int mask, - _NSRange rangeOfReceiverToCompare, NSObject? locale) { - return _lib._objc_msgSend_338(_id, _lib._sel_compare_options_range_locale_1, - string._id, mask, rangeOfReceiverToCompare, locale?._id ?? ffi.nullptr); - } - - int caseInsensitiveCompare_(NSString string) { - return _lib._objc_msgSend_335( - _id, _lib._sel_caseInsensitiveCompare_1, string._id); - } - - int localizedCompare_(NSString string) { - return _lib._objc_msgSend_335( - _id, _lib._sel_localizedCompare_1, string._id); - } - - int localizedCaseInsensitiveCompare_(NSString string) { - return _lib._objc_msgSend_335( - _id, _lib._sel_localizedCaseInsensitiveCompare_1, string._id); - } - - int localizedStandardCompare_(NSString string) { - return _lib._objc_msgSend_335( - _id, _lib._sel_localizedStandardCompare_1, string._id); - } - - bool isEqualToString_(NSString aString) { - return _lib._objc_msgSend_64(_id, _lib._sel_isEqualToString_1, aString._id); - } - - bool hasPrefix_(NSString str) { - return _lib._objc_msgSend_64(_id, _lib._sel_hasPrefix_1, str._id); - } - - bool hasSuffix_(NSString str) { - return _lib._objc_msgSend_64(_id, _lib._sel_hasSuffix_1, str._id); - } - - NSString commonPrefixWithString_options_(NSString str, int mask) { - final _ret = _lib._objc_msgSend_339( - _id, _lib._sel_commonPrefixWithString_options_1, str._id, mask); - return NSString._(_ret, _lib, retain: true, release: true); - } - - bool containsString_(NSString str) { - return _lib._objc_msgSend_64(_id, _lib._sel_containsString_1, str._id); - } - - bool localizedCaseInsensitiveContainsString_(NSString str) { - return _lib._objc_msgSend_64( - _id, _lib._sel_localizedCaseInsensitiveContainsString_1, str._id); - } - - bool localizedStandardContainsString_(NSString str) { - return _lib._objc_msgSend_64( - _id, _lib._sel_localizedStandardContainsString_1, str._id); - } - - void localizedStandardRangeOfString_( - ffi.Pointer<_NSRange> stret, NSString str) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_340_stret( - stret, _id, _lib._sel_localizedStandardRangeOfString_1, str._id) - : stret.ref = _lib._objc_msgSend_340( - _id, _lib._sel_localizedStandardRangeOfString_1, str._id); - } - - void rangeOfString_(ffi.Pointer<_NSRange> stret, NSString searchString) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_340_stret( - stret, _id, _lib._sel_rangeOfString_1, searchString._id) - : stret.ref = _lib._objc_msgSend_340( - _id, _lib._sel_rangeOfString_1, searchString._id); - } - - void rangeOfString_options_( - ffi.Pointer<_NSRange> stret, NSString searchString, int mask) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_341_stret(stret, _id, - _lib._sel_rangeOfString_options_1, searchString._id, mask) - : stret.ref = _lib._objc_msgSend_341( - _id, _lib._sel_rangeOfString_options_1, searchString._id, mask); - } - - void rangeOfString_options_range_(ffi.Pointer<_NSRange> stret, - NSString searchString, int mask, _NSRange rangeOfReceiverToSearch) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_342_stret( - stret, - _id, - _lib._sel_rangeOfString_options_range_1, - searchString._id, - mask, - rangeOfReceiverToSearch) - : stret.ref = _lib._objc_msgSend_342( - _id, - _lib._sel_rangeOfString_options_range_1, - searchString._id, - mask, - rangeOfReceiverToSearch); - } - - void rangeOfString_options_range_locale_( - ffi.Pointer<_NSRange> stret, - NSString searchString, - int mask, - _NSRange rangeOfReceiverToSearch, - NSLocale? locale) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_343_stret( - stret, - _id, - _lib._sel_rangeOfString_options_range_locale_1, - searchString._id, - mask, - rangeOfReceiverToSearch, - locale?._id ?? ffi.nullptr) - : stret.ref = _lib._objc_msgSend_343( - _id, - _lib._sel_rangeOfString_options_range_locale_1, - searchString._id, - mask, - rangeOfReceiverToSearch, - locale?._id ?? ffi.nullptr); - } - - void rangeOfCharacterFromSet_( - ffi.Pointer<_NSRange> stret, NSCharacterSet searchSet) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_344_stret( - stret, _id, _lib._sel_rangeOfCharacterFromSet_1, searchSet._id) - : stret.ref = _lib._objc_msgSend_344( - _id, _lib._sel_rangeOfCharacterFromSet_1, searchSet._id); - } - - void rangeOfCharacterFromSet_options_( - ffi.Pointer<_NSRange> stret, NSCharacterSet searchSet, int mask) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_345_stret(stret, _id, - _lib._sel_rangeOfCharacterFromSet_options_1, searchSet._id, mask) - : stret.ref = _lib._objc_msgSend_345(_id, - _lib._sel_rangeOfCharacterFromSet_options_1, searchSet._id, mask); - } - - void rangeOfCharacterFromSet_options_range_(ffi.Pointer<_NSRange> stret, - NSCharacterSet searchSet, int mask, _NSRange rangeOfReceiverToSearch) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_346_stret( - stret, - _id, - _lib._sel_rangeOfCharacterFromSet_options_range_1, - searchSet._id, - mask, - rangeOfReceiverToSearch) - : stret.ref = _lib._objc_msgSend_346( - _id, - _lib._sel_rangeOfCharacterFromSet_options_range_1, - searchSet._id, - mask, - rangeOfReceiverToSearch); - } - - void rangeOfComposedCharacterSequenceAtIndex_( - ffi.Pointer<_NSRange> stret, int index) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_347_stret(stret, _id, - _lib._sel_rangeOfComposedCharacterSequenceAtIndex_1, index) - : stret.ref = _lib._objc_msgSend_347( - _id, _lib._sel_rangeOfComposedCharacterSequenceAtIndex_1, index); - } - - void rangeOfComposedCharacterSequencesForRange_( - ffi.Pointer<_NSRange> stret, _NSRange range) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_348_stret(stret, _id, - _lib._sel_rangeOfComposedCharacterSequencesForRange_1, range) - : stret.ref = _lib._objc_msgSend_348( - _id, _lib._sel_rangeOfComposedCharacterSequencesForRange_1, range); - } - - NSString stringByAppendingString_(NSString aString) { - final _ret = _lib._objc_msgSend_69( - _id, _lib._sel_stringByAppendingString_1, aString._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString stringByAppendingFormat_(NSString format) { - final _ret = _lib._objc_msgSend_69( - _id, _lib._sel_stringByAppendingFormat_1, format._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - double get doubleValue { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_doubleValue1) - : _lib._objc_msgSend_165(_id, _lib._sel_doubleValue1); - } - - double get floatValue { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_239_fpret(_id, _lib._sel_floatValue1) - : _lib._objc_msgSend_239(_id, _lib._sel_floatValue1); - } - - int get intValue { - return _lib._objc_msgSend_237(_id, _lib._sel_intValue1); - } - - int get integerValue { - return _lib._objc_msgSend_83(_id, _lib._sel_integerValue1); - } - - int get longLongValue { - return _lib._objc_msgSend_238(_id, _lib._sel_longLongValue1); - } - - bool get boolValue { - return _lib._objc_msgSend_12(_id, _lib._sel_boolValue1); - } - - NSString get uppercaseString { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_uppercaseString1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get lowercaseString { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_lowercaseString1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get capitalizedString { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_capitalizedString1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get localizedUppercaseString { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_localizedUppercaseString1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get localizedLowercaseString { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_localizedLowercaseString1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get localizedCapitalizedString { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_localizedCapitalizedString1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString uppercaseStringWithLocale_(NSLocale? locale) { - final _ret = _lib._objc_msgSend_349( - _id, _lib._sel_uppercaseStringWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString lowercaseStringWithLocale_(NSLocale? locale) { - final _ret = _lib._objc_msgSend_349( - _id, _lib._sel_lowercaseStringWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString capitalizedStringWithLocale_(NSLocale? locale) { - final _ret = _lib._objc_msgSend_349(_id, - _lib._sel_capitalizedStringWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - void getLineStart_end_contentsEnd_forRange_( - ffi.Pointer startPtr, - ffi.Pointer lineEndPtr, - ffi.Pointer contentsEndPtr, - _NSRange range) { - _lib._objc_msgSend_350( - _id, - _lib._sel_getLineStart_end_contentsEnd_forRange_1, - startPtr, - lineEndPtr, - contentsEndPtr, - range); - } - - void lineRangeForRange_(ffi.Pointer<_NSRange> stret, _NSRange range) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_348_stret( - stret, _id, _lib._sel_lineRangeForRange_1, range) - : stret.ref = - _lib._objc_msgSend_348(_id, _lib._sel_lineRangeForRange_1, range); - } - - void getParagraphStart_end_contentsEnd_forRange_( - ffi.Pointer startPtr, - ffi.Pointer parEndPtr, - ffi.Pointer contentsEndPtr, - _NSRange range) { - _lib._objc_msgSend_350( - _id, - _lib._sel_getParagraphStart_end_contentsEnd_forRange_1, - startPtr, - parEndPtr, - contentsEndPtr, - range); - } - - void paragraphRangeForRange_(ffi.Pointer<_NSRange> stret, _NSRange range) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_348_stret( - stret, _id, _lib._sel_paragraphRangeForRange_1, range) - : stret.ref = _lib._objc_msgSend_348( - _id, _lib._sel_paragraphRangeForRange_1, range); - } - - void enumerateSubstringsInRange_options_usingBlock_(_NSRange range, int opts, - ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool block) { - _lib._objc_msgSend_351( - _id, - _lib._sel_enumerateSubstringsInRange_options_usingBlock_1, - range, - opts, - block._id); - } - - void enumerateLinesUsingBlock_(ObjCBlock_ffiVoid_NSString_bool block) { - _lib._objc_msgSend_352( - _id, _lib._sel_enumerateLinesUsingBlock_1, block._id); - } - - ffi.Pointer get UTF8String { - return _lib._objc_msgSend_13(_id, _lib._sel_UTF8String1); - } - - int get fastestEncoding { - return _lib._objc_msgSend_10(_id, _lib._sel_fastestEncoding1); - } - - int get smallestEncoding { - return _lib._objc_msgSend_10(_id, _lib._sel_smallestEncoding1); - } - - NSData? dataUsingEncoding_allowLossyConversion_(int encoding, bool lossy) { - final _ret = _lib._objc_msgSend_353(_id, - _lib._sel_dataUsingEncoding_allowLossyConversion_1, encoding, lossy); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData? dataUsingEncoding_(int encoding) { - final _ret = - _lib._objc_msgSend_354(_id, _lib._sel_dataUsingEncoding_1, encoding); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - bool canBeConvertedToEncoding_(int encoding) { - return _lib._objc_msgSend_97( - _id, _lib._sel_canBeConvertedToEncoding_1, encoding); - } - - ffi.Pointer cStringUsingEncoding_(int encoding) { - return _lib._objc_msgSend_11( - _id, _lib._sel_cStringUsingEncoding_1, encoding); - } - - bool getCString_maxLength_encoding_( - ffi.Pointer buffer, int maxBufferCount, int encoding) { - return _lib._objc_msgSend_355( - _id, - _lib._sel_getCString_maxLength_encoding_1, - buffer, - maxBufferCount, - encoding); - } - - bool getBytes_maxLength_usedLength_encoding_options_range_remainingRange_( - ffi.Pointer buffer, - int maxBufferCount, - ffi.Pointer usedBufferCount, - int encoding, - int options, - _NSRange range, - ffi.Pointer<_NSRange> leftover) { - return _lib._objc_msgSend_356( - _id, - _lib._sel_getBytes_maxLength_usedLength_encoding_options_range_remainingRange_1, - buffer, - maxBufferCount, - usedBufferCount, - encoding, - options, - range, - leftover); - } - - int maximumLengthOfBytesUsingEncoding_(int enc) { - return _lib._objc_msgSend_94( - _id, _lib._sel_maximumLengthOfBytesUsingEncoding_1, enc); - } - - int lengthOfBytesUsingEncoding_(int enc) { - return _lib._objc_msgSend_94( - _id, _lib._sel_lengthOfBytesUsingEncoding_1, enc); - } - - static ffi.Pointer getAvailableStringEncodings( - AVFAudio _lib) { - return _lib._objc_msgSend_357( - _lib._class_NSString1, _lib._sel_availableStringEncodings1); - } - - static NSString localizedNameOfStringEncoding_(AVFAudio _lib, int encoding) { - final _ret = _lib._objc_msgSend_332(_lib._class_NSString1, - _lib._sel_localizedNameOfStringEncoding_1, encoding); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static int getDefaultCStringEncoding(AVFAudio _lib) { - return _lib._objc_msgSend_10( - _lib._class_NSString1, _lib._sel_defaultCStringEncoding1); - } - - NSString get decomposedStringWithCanonicalMapping { - final _ret = _lib._objc_msgSend_21( - _id, _lib._sel_decomposedStringWithCanonicalMapping1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get precomposedStringWithCanonicalMapping { - final _ret = _lib._objc_msgSend_21( - _id, _lib._sel_precomposedStringWithCanonicalMapping1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get decomposedStringWithCompatibilityMapping { - final _ret = _lib._objc_msgSend_21( - _id, _lib._sel_decomposedStringWithCompatibilityMapping1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get precomposedStringWithCompatibilityMapping { - final _ret = _lib._objc_msgSend_21( - _id, _lib._sel_precomposedStringWithCompatibilityMapping1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray componentsSeparatedByString_(NSString separator) { - final _ret = _lib._objc_msgSend_358( - _id, _lib._sel_componentsSeparatedByString_1, separator._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray componentsSeparatedByCharactersInSet_(NSCharacterSet separator) { - final _ret = _lib._objc_msgSend_359( - _id, _lib._sel_componentsSeparatedByCharactersInSet_1, separator._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString stringByTrimmingCharactersInSet_(NSCharacterSet set) { - final _ret = _lib._objc_msgSend_360( - _id, _lib._sel_stringByTrimmingCharactersInSet_1, set._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString stringByPaddingToLength_withString_startingAtIndex_( - int newLength, NSString padString, int padIndex) { - final _ret = _lib._objc_msgSend_361( - _id, - _lib._sel_stringByPaddingToLength_withString_startingAtIndex_1, - newLength, - padString._id, - padIndex); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString stringByFoldingWithOptions_locale_(int options, NSLocale? locale) { - final _ret = _lib._objc_msgSend_362( - _id, - _lib._sel_stringByFoldingWithOptions_locale_1, - options, - locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString stringByReplacingOccurrencesOfString_withString_options_range_( - NSString target, - NSString replacement, - int options, - _NSRange searchRange) { - final _ret = _lib._objc_msgSend_363( - _id, - _lib._sel_stringByReplacingOccurrencesOfString_withString_options_range_1, - target._id, - replacement._id, - options, - searchRange); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString stringByReplacingOccurrencesOfString_withString_( - NSString target, NSString replacement) { - final _ret = _lib._objc_msgSend_364( - _id, - _lib._sel_stringByReplacingOccurrencesOfString_withString_1, - target._id, - replacement._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString stringByReplacingCharactersInRange_withString_( - _NSRange range, NSString replacement) { - final _ret = _lib._objc_msgSend_365( - _id, - _lib._sel_stringByReplacingCharactersInRange_withString_1, - range, - replacement._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? stringByApplyingTransform_reverse_( - NSString transform, bool reverse) { - final _ret = _lib._objc_msgSend_366(_id, - _lib._sel_stringByApplyingTransform_reverse_1, transform._id, reverse); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - bool writeToURL_atomically_encoding_error_(NSURL url, bool useAuxiliaryFile, - int enc, ffi.Pointer> error) { - return _lib._objc_msgSend_367( - _id, - _lib._sel_writeToURL_atomically_encoding_error_1, - url._id, - useAuxiliaryFile, - enc, - error); - } - - bool writeToFile_atomically_encoding_error_( - NSString path, - bool useAuxiliaryFile, - int enc, - ffi.Pointer> error) { - return _lib._objc_msgSend_368( - _id, - _lib._sel_writeToFile_atomically_encoding_error_1, - path._id, - useAuxiliaryFile, - enc, - error); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - int get hash { - return _lib._objc_msgSend_10(_id, _lib._sel_hash1); - } - - NSString initWithCharactersNoCopy_length_freeWhenDone_( - ffi.Pointer characters, int length, bool freeBuffer) { - final _ret = _lib._objc_msgSend_369( - _id, - _lib._sel_initWithCharactersNoCopy_length_freeWhenDone_1, - characters, - length, - freeBuffer); - return NSString._(_ret, _lib, retain: false, release: true); - } - - NSString initWithCharactersNoCopy_length_deallocator_( - ffi.Pointer chars, - int len, - ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong? deallocator) { - final _ret = _lib._objc_msgSend_370( - _id, - _lib._sel_initWithCharactersNoCopy_length_deallocator_1, - chars, - len, - deallocator?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: false, release: true); - } - - NSString initWithCharacters_length_( - ffi.Pointer characters, int length) { - final _ret = _lib._objc_msgSend_371( - _id, _lib._sel_initWithCharacters_length_1, characters, length); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithUTF8String_(ffi.Pointer nullTerminatedCString) { - final _ret = _lib._objc_msgSend_372( - _id, _lib._sel_initWithUTF8String_1, nullTerminatedCString); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString initWithString_(NSString aString) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithString_1, aString._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString initWithFormat_(NSString format) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithFormat_1, format._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString initWithFormat_arguments_( - NSString format, ffi.Pointer<__va_list_tag> argList) { - final _ret = _lib._objc_msgSend_373( - _id, _lib._sel_initWithFormat_arguments_1, format._id, argList); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString initWithFormat_locale_(NSString format, NSObject? locale) { - final _ret = _lib._objc_msgSend_374(_id, _lib._sel_initWithFormat_locale_1, - format._id, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString initWithFormat_locale_arguments_( - NSString format, NSObject? locale, ffi.Pointer<__va_list_tag> argList) { - final _ret = _lib._objc_msgSend_375( - _id, - _lib._sel_initWithFormat_locale_arguments_1, - format._id, - locale?._id ?? ffi.nullptr, - argList); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithValidatedFormat_validFormatSpecifiers_error_( - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_376( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_error_1, - format._id, - validFormatSpecifiers._id, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithValidatedFormat_validFormatSpecifiers_locale_error_( - NSString format, - NSString validFormatSpecifiers, - NSObject? locale, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_377( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_1, - format._id, - validFormatSpecifiers._id, - locale?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithValidatedFormat_validFormatSpecifiers_arguments_error_( - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer<__va_list_tag> argList, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_378( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_1, - format._id, - validFormatSpecifiers._id, - argList, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? - initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_( - NSString format, - NSString validFormatSpecifiers, - NSObject? locale, - ffi.Pointer<__va_list_tag> argList, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_379( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_1, - format._id, - validFormatSpecifiers._id, - locale?._id ?? ffi.nullptr, - argList, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithData_encoding_(NSData data, int encoding) { - final _ret = _lib._objc_msgSend_380( - _id, _lib._sel_initWithData_encoding_1, data._id, encoding); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithBytes_length_encoding_( - ffi.Pointer bytes, int len, int encoding) { - final _ret = _lib._objc_msgSend_381( - _id, _lib._sel_initWithBytes_length_encoding_1, bytes, len, encoding); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithBytesNoCopy_length_encoding_freeWhenDone_( - ffi.Pointer bytes, int len, int encoding, bool freeBuffer) { - final _ret = _lib._objc_msgSend_382( - _id, - _lib._sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1, - bytes, - len, - encoding, - freeBuffer); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: false, release: true); - } - - NSString? initWithBytesNoCopy_length_encoding_deallocator_( - ffi.Pointer bytes, - int len, - int encoding, - ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { - final _ret = _lib._objc_msgSend_383( - _id, - _lib._sel_initWithBytesNoCopy_length_encoding_deallocator_1, - bytes, - len, - encoding, - deallocator?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: false, release: true); - } - - static NSString string(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSString1, _lib._sel_string1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString stringWithString_(AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSString1, _lib._sel_stringWithString_1, string._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString stringWithCharacters_length_( - AVFAudio _lib, ffi.Pointer characters, int length) { - final _ret = _lib._objc_msgSend_371(_lib._class_NSString1, - _lib._sel_stringWithCharacters_length_1, characters, length); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? stringWithUTF8String_( - AVFAudio _lib, ffi.Pointer nullTerminatedCString) { - final _ret = _lib._objc_msgSend_372(_lib._class_NSString1, - _lib._sel_stringWithUTF8String_1, nullTerminatedCString); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString stringWithFormat_(AVFAudio _lib, NSString format) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSString1, _lib._sel_stringWithFormat_1, format._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString localizedStringWithFormat_(AVFAudio _lib, NSString format) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSString1, - _lib._sel_localizedStringWithFormat_1, format._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? stringWithValidatedFormat_validFormatSpecifiers_error_( - AVFAudio _lib, - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_376( - _lib._class_NSString1, - _lib._sel_stringWithValidatedFormat_validFormatSpecifiers_error_1, - format._id, - validFormatSpecifiers._id, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? - localizedStringWithValidatedFormat_validFormatSpecifiers_error_( - AVFAudio _lib, - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_376( - _lib._class_NSString1, - _lib._sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_1, - format._id, - validFormatSpecifiers._id, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithCString_encoding_( - ffi.Pointer nullTerminatedCString, int encoding) { - final _ret = _lib._objc_msgSend_384(_id, - _lib._sel_initWithCString_encoding_1, nullTerminatedCString, encoding); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? stringWithCString_encoding_( - AVFAudio _lib, ffi.Pointer cString, int enc) { - final _ret = _lib._objc_msgSend_384(_lib._class_NSString1, - _lib._sel_stringWithCString_encoding_1, cString, enc); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithContentsOfURL_encoding_error_( - NSURL url, int enc, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_385(_id, - _lib._sel_initWithContentsOfURL_encoding_error_1, url._id, enc, error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithContentsOfFile_encoding_error_( - NSString path, int enc, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_386( - _id, - _lib._sel_initWithContentsOfFile_encoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? stringWithContentsOfURL_encoding_error_(AVFAudio _lib, - NSURL url, int enc, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_385( - _lib._class_NSString1, - _lib._sel_stringWithContentsOfURL_encoding_error_1, - url._id, - enc, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? stringWithContentsOfFile_encoding_error_(AVFAudio _lib, - NSString path, int enc, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_386( - _lib._class_NSString1, - _lib._sel_stringWithContentsOfFile_encoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithContentsOfURL_usedEncoding_error_( - NSURL url, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_387( - _id, - _lib._sel_initWithContentsOfURL_usedEncoding_error_1, - url._id, - enc, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithContentsOfFile_usedEncoding_error_( - NSString path, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_388( - _id, - _lib._sel_initWithContentsOfFile_usedEncoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? stringWithContentsOfURL_usedEncoding_error_( - AVFAudio _lib, - NSURL url, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_387( - _lib._class_NSString1, - _lib._sel_stringWithContentsOfURL_usedEncoding_error_1, - url._id, - enc, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? stringWithContentsOfFile_usedEncoding_error_( - AVFAudio _lib, - NSString path, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_388( - _lib._class_NSString1, - _lib._sel_stringWithContentsOfFile_usedEncoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static int - stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_( - AVFAudio _lib, - NSData data, - NSDictionary? opts, - ffi.Pointer> string, - ffi.Pointer usedLossyConversion) { - return _lib._objc_msgSend_389( - _lib._class_NSString1, - _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1, - data._id, - opts?._id ?? ffi.nullptr, - string, - usedLossyConversion); - } - - NSObject propertyList() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_propertyList1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? propertyListFromStringsFileFormat() { - final _ret = _lib._objc_msgSend_390( - _id, _lib._sel_propertyListFromStringsFileFormat1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - ffi.Pointer cString() { - return _lib._objc_msgSend_13(_id, _lib._sel_cString1); - } - - ffi.Pointer lossyCString() { - return _lib._objc_msgSend_13(_id, _lib._sel_lossyCString1); - } - - int cStringLength() { - return _lib._objc_msgSend_10(_id, _lib._sel_cStringLength1); - } - - void getCString_(ffi.Pointer bytes) { - _lib._objc_msgSend_290(_id, _lib._sel_getCString_1, bytes); - } - - void getCString_maxLength_(ffi.Pointer bytes, int maxLength) { - _lib._objc_msgSend_391( - _id, _lib._sel_getCString_maxLength_1, bytes, maxLength); - } - - void getCString_maxLength_range_remainingRange_(ffi.Pointer bytes, - int maxLength, _NSRange aRange, ffi.Pointer<_NSRange> leftoverRange) { - _lib._objc_msgSend_392( - _id, - _lib._sel_getCString_maxLength_range_remainingRange_1, - bytes, - maxLength, - aRange, - leftoverRange); - } - - bool writeToFile_atomically_(NSString path, bool useAuxiliaryFile) { - return _lib._objc_msgSend_26( - _id, _lib._sel_writeToFile_atomically_1, path._id, useAuxiliaryFile); - } - - bool writeToURL_atomically_(NSURL url, bool atomically) { - return _lib._objc_msgSend_134( - _id, _lib._sel_writeToURL_atomically_1, url._id, atomically); - } - - NSObject? initWithContentsOfFile_(NSString path) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_initWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_277(_id, _lib._sel_initWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? stringWithContentsOfFile_(AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_38( - _lib._class_NSString1, _lib._sel_stringWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? stringWithContentsOfURL_(AVFAudio _lib, NSURL url) { - final _ret = _lib._objc_msgSend_277( - _lib._class_NSString1, _lib._sel_stringWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithCStringNoCopy_length_freeWhenDone_( - ffi.Pointer bytes, int length, bool freeBuffer) { - final _ret = _lib._objc_msgSend_393( - _id, - _lib._sel_initWithCStringNoCopy_length_freeWhenDone_1, - bytes, - length, - freeBuffer); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: false, release: true); - } - - NSObject? initWithCString_length_(ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_384( - _id, _lib._sel_initWithCString_length_1, bytes, length); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithCString_(ffi.Pointer bytes) { - final _ret = - _lib._objc_msgSend_372(_id, _lib._sel_initWithCString_1, bytes); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? stringWithCString_length_( - AVFAudio _lib, ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_384(_lib._class_NSString1, - _lib._sel_stringWithCString_length_1, bytes, length); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? stringWithCString_( - AVFAudio _lib, ffi.Pointer bytes) { - final _ret = _lib._objc_msgSend_372( - _lib._class_NSString1, _lib._sel_stringWithCString_1, bytes); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void getCharacters_(ffi.Pointer buffer) { - _lib._objc_msgSend_394(_id, _lib._sel_getCharacters_1, buffer); - } - - NSString variantFittingPresentationWidth_(int width) { - final _ret = _lib._objc_msgSend_395( - _id, _lib._sel_variantFittingPresentationWidth_1, width); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString pathWithComponents_(AVFAudio _lib, NSArray components) { - final _ret = _lib._objc_msgSend_396( - _lib._class_NSString1, _lib._sel_pathWithComponents_1, components._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray get pathComponents { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_pathComponents1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - bool get absolutePath { - return _lib._objc_msgSend_12(_id, _lib._sel_isAbsolutePath1); - } - - NSString get lastPathComponent { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_lastPathComponent1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get stringByDeletingLastPathComponent { - final _ret = _lib._objc_msgSend_21( - _id, _lib._sel_stringByDeletingLastPathComponent1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString stringByAppendingPathComponent_(NSString str) { - final _ret = _lib._objc_msgSend_69( - _id, _lib._sel_stringByAppendingPathComponent_1, str._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get pathExtension { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_pathExtension1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get stringByDeletingPathExtension { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_stringByDeletingPathExtension1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? stringByAppendingPathExtension_(NSString str) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_stringByAppendingPathExtension_1, str._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get stringByAbbreviatingWithTildeInPath { - final _ret = _lib._objc_msgSend_21( - _id, _lib._sel_stringByAbbreviatingWithTildeInPath1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get stringByExpandingTildeInPath { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_stringByExpandingTildeInPath1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get stringByStandardizingPath { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_stringByStandardizingPath1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get stringByResolvingSymlinksInPath { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_stringByResolvingSymlinksInPath1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray stringsByAppendingPaths_(NSArray paths) { - final _ret = _lib._objc_msgSend_68( - _id, _lib._sel_stringsByAppendingPaths_1, paths._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - int completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_( - ffi.Pointer> outputName, - bool flag, - ffi.Pointer> outputArray, - NSArray? filterTypes) { - return _lib._objc_msgSend_397( - _id, - _lib._sel_completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_1, - outputName, - flag, - outputArray, - filterTypes?._id ?? ffi.nullptr); - } - - ffi.Pointer get fileSystemRepresentation { - return _lib._objc_msgSend_13(_id, _lib._sel_fileSystemRepresentation1); - } - - bool getFileSystemRepresentation_maxLength_( - ffi.Pointer cname, int max) { - return _lib._objc_msgSend_242( - _id, _lib._sel_getFileSystemRepresentation_maxLength_1, cname, max); - } - - NSString? stringByAddingPercentEncodingWithAllowedCharacters_( - NSCharacterSet allowedCharacters) { - final _ret = _lib._objc_msgSend_398( - _id, - _lib._sel_stringByAddingPercentEncodingWithAllowedCharacters_1, - allowedCharacters._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get stringByRemovingPercentEncoding { - final _ret = - _lib._objc_msgSend_44(_id, _lib._sel_stringByRemovingPercentEncoding1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? stringByAddingPercentEscapesUsingEncoding_(int enc) { - final _ret = _lib._objc_msgSend_399( - _id, _lib._sel_stringByAddingPercentEscapesUsingEncoding_1, enc); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? stringByReplacingPercentEscapesUsingEncoding_(int enc) { - final _ret = _lib._objc_msgSend_399( - _id, _lib._sel_stringByReplacingPercentEscapesUsingEncoding_1, enc); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray linguisticTagsInRange_scheme_options_orthography_tokenRanges_( - _NSRange range, - NSString scheme, - int options, - NSOrthography? orthography, - ffi.Pointer> tokenRanges) { - final _ret = _lib._objc_msgSend_401( - _id, - _lib._sel_linguisticTagsInRange_scheme_options_orthography_tokenRanges_1, - range, - scheme._id, - options, - orthography?._id ?? ffi.nullptr, - tokenRanges); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - void enumerateLinguisticTagsInRange_scheme_options_orthography_usingBlock_( - _NSRange range, - NSString scheme, - int options, - NSOrthography? orthography, - ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool block) { - _lib._objc_msgSend_402( - _id, - _lib._sel_enumerateLinguisticTagsInRange_scheme_options_orthography_usingBlock_1, - range, - scheme._id, - options, - orthography?._id ?? ffi.nullptr, - block._id); - } - - static NSString new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSString1, _lib._sel_new1); - return NSString._(_ret, _lib, retain: false, release: true); - } - - static NSString allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSString1, _lib._sel_allocWithZone_1, zone); - return NSString._(_ret, _lib, retain: false, release: true); - } - - static NSString alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSString1, _lib._sel_alloc1); - return NSString._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSString1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSString1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSString1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSString1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSString1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSString1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSString1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -extension StringToNSString on String { - NSString toNSString(AVFAudio lib) => NSString(lib, this); -} - -class NSCoder extends NSObject { - NSCoder._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSCoder] that points to the same underlying object as [other]. - static NSCoder castFrom(T other) { - return NSCoder._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSCoder] that wraps the given raw object pointer. - static NSCoder castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSCoder._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSCoder]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSCoder1); - } - - void encodeValueOfObjCType_at_( - ffi.Pointer type, ffi.Pointer addr) { - _lib._objc_msgSend_19( - _id, _lib._sel_encodeValueOfObjCType_at_1, type, addr); - } - - void encodeDataObject_(NSData data) { - _lib._objc_msgSend_285(_id, _lib._sel_encodeDataObject_1, data._id); - } - - NSData? decodeDataObject() { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_decodeDataObject1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - void decodeValueOfObjCType_at_size_( - ffi.Pointer type, ffi.Pointer data, int size) { - _lib._objc_msgSend_287( - _id, _lib._sel_decodeValueOfObjCType_at_size_1, type, data, size); - } - - int versionForClassName_(NSString className) { - return _lib._objc_msgSend_288( - _id, _lib._sel_versionForClassName_1, className._id); - } - - void encodeObject_(NSObject? object) { - _lib._objc_msgSend_289( - _id, _lib._sel_encodeObject_1, object?._id ?? ffi.nullptr); - } - - void encodeRootObject_(NSObject rootObject) { - _lib._objc_msgSend_15(_id, _lib._sel_encodeRootObject_1, rootObject._id); - } - - void encodeBycopyObject_(NSObject? anObject) { - _lib._objc_msgSend_289( - _id, _lib._sel_encodeBycopyObject_1, anObject?._id ?? ffi.nullptr); - } - - void encodeByrefObject_(NSObject? anObject) { - _lib._objc_msgSend_289( - _id, _lib._sel_encodeByrefObject_1, anObject?._id ?? ffi.nullptr); - } - - void encodeConditionalObject_(NSObject? object) { - _lib._objc_msgSend_289( - _id, _lib._sel_encodeConditionalObject_1, object?._id ?? ffi.nullptr); - } - - void encodeValuesOfObjCTypes_(ffi.Pointer types) { - _lib._objc_msgSend_290(_id, _lib._sel_encodeValuesOfObjCTypes_1, types); - } - - void encodeArrayOfObjCType_count_at_( - ffi.Pointer type, int count, ffi.Pointer array) { - _lib._objc_msgSend_291( - _id, _lib._sel_encodeArrayOfObjCType_count_at_1, type, count, array); - } - - void encodeBytes_length_(ffi.Pointer byteaddr, int length) { - _lib._objc_msgSend_22( - _id, _lib._sel_encodeBytes_length_1, byteaddr, length); - } - - NSObject? decodeObject() { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_decodeObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? decodeTopLevelObjectAndReturnError_( - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_292( - _id, _lib._sel_decodeTopLevelObjectAndReturnError_1, error); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void decodeValuesOfObjCTypes_(ffi.Pointer types) { - _lib._objc_msgSend_290(_id, _lib._sel_decodeValuesOfObjCTypes_1, types); - } - - void decodeArrayOfObjCType_count_at_( - ffi.Pointer itemType, int count, ffi.Pointer array) { - _lib._objc_msgSend_291(_id, _lib._sel_decodeArrayOfObjCType_count_at_1, - itemType, count, array); - } - - ffi.Pointer decodeBytesWithReturnedLength_( - ffi.Pointer lengthp) { - return _lib._objc_msgSend_293( - _id, _lib._sel_decodeBytesWithReturnedLength_1, lengthp); - } - - void encodePropertyList_(NSObject aPropertyList) { - _lib._objc_msgSend_15( - _id, _lib._sel_encodePropertyList_1, aPropertyList._id); - } - - NSObject? decodePropertyList() { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_decodePropertyList1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void setObjectZone_(ffi.Pointer<_NSZone> zone) { - _lib._objc_msgSend_294(_id, _lib._sel_setObjectZone_1, zone); - } - - ffi.Pointer<_NSZone> objectZone() { - return _lib._objc_msgSend_295(_id, _lib._sel_objectZone1); - } - - int get systemVersion { - return _lib._objc_msgSend_214(_id, _lib._sel_systemVersion1); - } - - bool get allowsKeyedCoding { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsKeyedCoding1); - } - - void encodeObject_forKey_(NSObject? object, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_encodeObject_forKey_1, - object?._id ?? ffi.nullptr, key._id); - } - - void encodeConditionalObject_forKey_(NSObject? object, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_encodeConditionalObject_forKey_1, - object?._id ?? ffi.nullptr, key._id); - } - - void encodeBool_forKey_(bool value, NSString key) { - _lib._objc_msgSend_296(_id, _lib._sel_encodeBool_forKey_1, value, key._id); - } - - void encodeInt_forKey_(int value, NSString key) { - _lib._objc_msgSend_297(_id, _lib._sel_encodeInt_forKey_1, value, key._id); - } - - void encodeInt32_forKey_(int value, NSString key) { - _lib._objc_msgSend_298(_id, _lib._sel_encodeInt32_forKey_1, value, key._id); - } - - void encodeInt64_forKey_(int value, NSString key) { - _lib._objc_msgSend_299(_id, _lib._sel_encodeInt64_forKey_1, value, key._id); - } - - void encodeFloat_forKey_(double value, NSString key) { - _lib._objc_msgSend_300(_id, _lib._sel_encodeFloat_forKey_1, value, key._id); - } - - void encodeDouble_forKey_(double value, NSString key) { - _lib._objc_msgSend_301( - _id, _lib._sel_encodeDouble_forKey_1, value, key._id); - } - - void encodeBytes_length_forKey_( - ffi.Pointer bytes, int length, NSString key) { - _lib._objc_msgSend_302( - _id, _lib._sel_encodeBytes_length_forKey_1, bytes, length, key._id); - } - - bool containsValueForKey_(NSString key) { - return _lib._objc_msgSend_64(_id, _lib._sel_containsValueForKey_1, key._id); - } - - NSObject? decodeObjectForKey_(NSString key) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_decodeObjectForKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? decodeTopLevelObjectForKey_error_( - NSString key, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_303( - _id, _lib._sel_decodeTopLevelObjectForKey_error_1, key._id, error); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - bool decodeBoolForKey_(NSString key) { - return _lib._objc_msgSend_64(_id, _lib._sel_decodeBoolForKey_1, key._id); - } - - int decodeIntForKey_(NSString key) { - return _lib._objc_msgSend_304(_id, _lib._sel_decodeIntForKey_1, key._id); - } - - int decodeInt32ForKey_(NSString key) { - return _lib._objc_msgSend_305(_id, _lib._sel_decodeInt32ForKey_1, key._id); - } - - int decodeInt64ForKey_(NSString key) { - return _lib._objc_msgSend_306(_id, _lib._sel_decodeInt64ForKey_1, key._id); - } - - double decodeFloatForKey_(NSString key) { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_307_fpret( - _id, _lib._sel_decodeFloatForKey_1, key._id) - : _lib._objc_msgSend_307(_id, _lib._sel_decodeFloatForKey_1, key._id); - } - - double decodeDoubleForKey_(NSString key) { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_308_fpret( - _id, _lib._sel_decodeDoubleForKey_1, key._id) - : _lib._objc_msgSend_308(_id, _lib._sel_decodeDoubleForKey_1, key._id); - } - - ffi.Pointer decodeBytesForKey_returnedLength_( - NSString key, ffi.Pointer lengthp) { - return _lib._objc_msgSend_309( - _id, _lib._sel_decodeBytesForKey_returnedLength_1, key._id, lengthp); - } - - void encodeInteger_forKey_(int value, NSString key) { - _lib._objc_msgSend_310( - _id, _lib._sel_encodeInteger_forKey_1, value, key._id); - } - - int decodeIntegerForKey_(NSString key) { - return _lib._objc_msgSend_288( - _id, _lib._sel_decodeIntegerForKey_1, key._id); - } - - bool get requiresSecureCoding { - return _lib._objc_msgSend_12(_id, _lib._sel_requiresSecureCoding1); - } - - NSObject? decodeObjectOfClass_forKey_(NSObject aClass, NSString key) { - final _ret = _lib._objc_msgSend_311( - _id, _lib._sel_decodeObjectOfClass_forKey_1, aClass._id, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? decodeTopLevelObjectOfClass_forKey_error_(NSObject aClass, - NSString key, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_312( - _id, - _lib._sel_decodeTopLevelObjectOfClass_forKey_error_1, - aClass._id, - key._id, - error); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSArray? decodeArrayOfObjectsOfClass_forKey_(NSObject cls, NSString key) { - final _ret = _lib._objc_msgSend_313( - _id, _lib._sel_decodeArrayOfObjectsOfClass_forKey_1, cls._id, key._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? decodeDictionaryWithKeysOfClass_objectsOfClass_forKey_( - NSObject keyCls, NSObject objectCls, NSString key) { - final _ret = _lib._objc_msgSend_314( - _id, - _lib._sel_decodeDictionaryWithKeysOfClass_objectsOfClass_forKey_1, - keyCls._id, - objectCls._id, - key._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSObject? decodeObjectOfClasses_forKey_(NSSet? classes, NSString key) { - final _ret = _lib._objc_msgSend_315( - _id, - _lib._sel_decodeObjectOfClasses_forKey_1, - classes?._id ?? ffi.nullptr, - key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? decodeTopLevelObjectOfClasses_forKey_error_(NSSet? classes, - NSString key, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_316( - _id, - _lib._sel_decodeTopLevelObjectOfClasses_forKey_error_1, - classes?._id ?? ffi.nullptr, - key._id, - error); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSArray? decodeArrayOfObjectsOfClasses_forKey_(NSSet classes, NSString key) { - final _ret = _lib._objc_msgSend_317(_id, - _lib._sel_decodeArrayOfObjectsOfClasses_forKey_1, classes._id, key._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? decodeDictionaryWithKeysOfClasses_objectsOfClasses_forKey_( - NSSet keyClasses, NSSet objectClasses, NSString key) { - final _ret = _lib._objc_msgSend_318( - _id, - _lib._sel_decodeDictionaryWithKeysOfClasses_objectsOfClasses_forKey_1, - keyClasses._id, - objectClasses._id, - key._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSObject? decodePropertyListForKey_(NSString key) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_decodePropertyListForKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSSet? get allowedClasses { - final _ret = _lib._objc_msgSend_319(_id, _lib._sel_allowedClasses1); - return _ret.address == 0 - ? null - : NSSet._(_ret, _lib, retain: true, release: true); - } - - void failWithError_(NSError error) { - _lib._objc_msgSend_320(_id, _lib._sel_failWithError_1, error._id); - } - - int get decodingFailurePolicy { - return _lib._objc_msgSend_321(_id, _lib._sel_decodingFailurePolicy1); - } - - NSError? get error { - final _ret = _lib._objc_msgSend_322(_id, _lib._sel_error1); - return _ret.address == 0 - ? null - : NSError._(_ret, _lib, retain: true, release: true); - } - - void encodeNXObject_(NSObject object) { - _lib._objc_msgSend_15(_id, _lib._sel_encodeNXObject_1, object._id); - } - - NSObject? decodeNXObject() { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_decodeNXObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void decodeValueOfObjCType_at_( - ffi.Pointer type, ffi.Pointer data) { - _lib._objc_msgSend_19( - _id, _lib._sel_decodeValueOfObjCType_at_1, type, data); - } - - void encodePoint_(CGPoint point) { - _lib._objc_msgSend_323(_id, _lib._sel_encodePoint_1, point); - } - - void decodePoint(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_59_stret(stret, _id, _lib._sel_decodePoint1) - : stret.ref = _lib._objc_msgSend_59(_id, _lib._sel_decodePoint1); - } - - void encodeSize_(CGSize size) { - _lib._objc_msgSend_324(_id, _lib._sel_encodeSize_1, size); - } - - void decodeSize(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_60_stret(stret, _id, _lib._sel_decodeSize1) - : stret.ref = _lib._objc_msgSend_60(_id, _lib._sel_decodeSize1); - } - - void encodeRect_(CGRect rect) { - _lib._objc_msgSend_325(_id, _lib._sel_encodeRect_1, rect); - } - - void decodeRect(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_61_stret(stret, _id, _lib._sel_decodeRect1) - : stret.ref = _lib._objc_msgSend_61(_id, _lib._sel_decodeRect1); - } - - void encodePoint_forKey_(CGPoint point, NSString key) { - _lib._objc_msgSend_326(_id, _lib._sel_encodePoint_forKey_1, point, key._id); - } - - void encodeSize_forKey_(CGSize size, NSString key) { - _lib._objc_msgSend_327(_id, _lib._sel_encodeSize_forKey_1, size, key._id); - } - - void encodeRect_forKey_(CGRect rect, NSString key) { - _lib._objc_msgSend_328(_id, _lib._sel_encodeRect_forKey_1, rect, key._id); - } - - void decodePointForKey_(ffi.Pointer stret, NSString key) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_329_stret( - stret, _id, _lib._sel_decodePointForKey_1, key._id) - : stret.ref = - _lib._objc_msgSend_329(_id, _lib._sel_decodePointForKey_1, key._id); - } - - void decodeSizeForKey_(ffi.Pointer stret, NSString key) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_330_stret( - stret, _id, _lib._sel_decodeSizeForKey_1, key._id) - : stret.ref = - _lib._objc_msgSend_330(_id, _lib._sel_decodeSizeForKey_1, key._id); - } - - void decodeRectForKey_(ffi.Pointer stret, NSString key) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_331_stret( - stret, _id, _lib._sel_decodeRectForKey_1, key._id) - : stret.ref = - _lib._objc_msgSend_331(_id, _lib._sel_decodeRectForKey_1, key._id); - } - - @override - NSCoder init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSCoder._(_ret, _lib, retain: true, release: true); - } - - static NSCoder new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSCoder1, _lib._sel_new1); - return NSCoder._(_ret, _lib, retain: false, release: true); - } - - static NSCoder allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSCoder1, _lib._sel_allocWithZone_1, zone); - return NSCoder._(_ret, _lib, retain: false, release: true); - } - - static NSCoder alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSCoder1, _lib._sel_alloc1); - return NSCoder._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSCoder1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSCoder1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSCoder1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSCoder1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSCoder1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSCoder1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSCoder1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSCoder1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSCoder1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSData extends NSObject { - NSData._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSData] that points to the same underlying object as [other]. - static NSData castFrom(T other) { - return NSData._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSData] that wraps the given raw object pointer. - static NSData castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSData._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSData]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSData1); - } - - int get length { - return _lib._objc_msgSend_10(_id, _lib._sel_length1); - } - - ffi.Pointer get bytes { - return _lib._objc_msgSend_20(_id, _lib._sel_bytes1); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - void getBytes_length_(ffi.Pointer buffer, int length) { - _lib._objc_msgSend_22(_id, _lib._sel_getBytes_length_1, buffer, length); - } - - void getBytes_range_(ffi.Pointer buffer, _NSRange range) { - _lib._objc_msgSend_23(_id, _lib._sel_getBytes_range_1, buffer, range); - } - - bool isEqualToData_(NSData other) { - return _lib._objc_msgSend_24(_id, _lib._sel_isEqualToData_1, other._id); - } - - NSData subdataWithRange_(_NSRange range) { - final _ret = - _lib._objc_msgSend_25(_id, _lib._sel_subdataWithRange_1, range); - return NSData._(_ret, _lib, retain: true, release: true); - } - - bool writeToFile_atomically_(NSString path, bool useAuxiliaryFile) { - return _lib._objc_msgSend_26( - _id, _lib._sel_writeToFile_atomically_1, path._id, useAuxiliaryFile); - } - - bool writeToURL_atomically_(NSURL url, bool atomically) { - return _lib._objc_msgSend_134( - _id, _lib._sel_writeToURL_atomically_1, url._id, atomically); - } - - bool writeToFile_options_error_(NSString path, int writeOptionsMask, - ffi.Pointer> errorPtr) { - return _lib._objc_msgSend_269(_id, _lib._sel_writeToFile_options_error_1, - path._id, writeOptionsMask, errorPtr); - } - - bool writeToURL_options_error_(NSURL url, int writeOptionsMask, - ffi.Pointer> errorPtr) { - return _lib._objc_msgSend_270(_id, _lib._sel_writeToURL_options_error_1, - url._id, writeOptionsMask, errorPtr); - } - - void rangeOfData_options_range_(ffi.Pointer<_NSRange> stret, - NSData dataToFind, int mask, _NSRange searchRange) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_271_stret( - stret, - _id, - _lib._sel_rangeOfData_options_range_1, - dataToFind._id, - mask, - searchRange) - : stret.ref = _lib._objc_msgSend_271( - _id, - _lib._sel_rangeOfData_options_range_1, - dataToFind._id, - mask, - searchRange); - } - - void enumerateByteRangesUsingBlock_( - ObjCBlock_ffiVoid_ffiVoid_NSRange_bool block) { - _lib._objc_msgSend_272( - _id, _lib._sel_enumerateByteRangesUsingBlock_1, block._id); - } - - static NSData data(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSData1, _lib._sel_data1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - static NSData dataWithBytes_length_( - AVFAudio _lib, ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273( - _lib._class_NSData1, _lib._sel_dataWithBytes_length_1, bytes, length); - return NSData._(_ret, _lib, retain: true, release: true); - } - - static NSData dataWithBytesNoCopy_length_( - AVFAudio _lib, ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273(_lib._class_NSData1, - _lib._sel_dataWithBytesNoCopy_length_1, bytes, length); - return NSData._(_ret, _lib, retain: false, release: true); - } - - static NSData dataWithBytesNoCopy_length_freeWhenDone_( - AVFAudio _lib, ffi.Pointer bytes, int length, bool b) { - final _ret = _lib._objc_msgSend_274(_lib._class_NSData1, - _lib._sel_dataWithBytesNoCopy_length_freeWhenDone_1, bytes, length, b); - return NSData._(_ret, _lib, retain: false, release: true); - } - - static NSData? dataWithContentsOfFile_options_error_( - AVFAudio _lib, - NSString path, - int readOptionsMask, - ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_275( - _lib._class_NSData1, - _lib._sel_dataWithContentsOfFile_options_error_1, - path._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - static NSData? dataWithContentsOfURL_options_error_(AVFAudio _lib, NSURL url, - int readOptionsMask, ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_276( - _lib._class_NSData1, - _lib._sel_dataWithContentsOfURL_options_error_1, - url._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - static NSData? dataWithContentsOfFile_(AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_38( - _lib._class_NSData1, _lib._sel_dataWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - static NSData? dataWithContentsOfURL_(AVFAudio _lib, NSURL url) { - final _ret = _lib._objc_msgSend_277( - _lib._class_NSData1, _lib._sel_dataWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData initWithBytes_length_(ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273( - _id, _lib._sel_initWithBytes_length_1, bytes, length); - return NSData._(_ret, _lib, retain: true, release: true); - } - - NSData initWithBytesNoCopy_length_(ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273( - _id, _lib._sel_initWithBytesNoCopy_length_1, bytes, length); - return NSData._(_ret, _lib, retain: false, release: true); - } - - NSData initWithBytesNoCopy_length_freeWhenDone_( - ffi.Pointer bytes, int length, bool b) { - final _ret = _lib._objc_msgSend_274(_id, - _lib._sel_initWithBytesNoCopy_length_freeWhenDone_1, bytes, length, b); - return NSData._(_ret, _lib, retain: false, release: true); - } - - NSData initWithBytesNoCopy_length_deallocator_(ffi.Pointer bytes, - int length, ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { - final _ret = _lib._objc_msgSend_278( - _id, - _lib._sel_initWithBytesNoCopy_length_deallocator_1, - bytes, - length, - deallocator?._id ?? ffi.nullptr); - return NSData._(_ret, _lib, retain: false, release: true); - } - - NSData? initWithContentsOfFile_options_error_(NSString path, - int readOptionsMask, ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_275( - _id, - _lib._sel_initWithContentsOfFile_options_error_1, - path._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData? initWithContentsOfURL_options_error_(NSURL url, int readOptionsMask, - ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_276( - _id, - _lib._sel_initWithContentsOfURL_options_error_1, - url._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData? initWithContentsOfFile_(NSString path) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_initWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_277(_id, _lib._sel_initWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData initWithData_(NSData data) { - final _ret = - _lib._objc_msgSend_279(_id, _lib._sel_initWithData_1, data._id); - return NSData._(_ret, _lib, retain: true, release: true); - } - - static NSData dataWithData_(AVFAudio _lib, NSData data) { - final _ret = _lib._objc_msgSend_279( - _lib._class_NSData1, _lib._sel_dataWithData_1, data._id); - return NSData._(_ret, _lib, retain: true, release: true); - } - - NSData? initWithBase64EncodedString_options_( - NSString base64String, int options) { - final _ret = _lib._objc_msgSend_280( - _id, - _lib._sel_initWithBase64EncodedString_options_1, - base64String._id, - options); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSString base64EncodedStringWithOptions_(int options) { - final _ret = _lib._objc_msgSend_281( - _id, _lib._sel_base64EncodedStringWithOptions_1, options); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSData? initWithBase64EncodedData_options_(NSData base64Data, int options) { - final _ret = _lib._objc_msgSend_282(_id, - _lib._sel_initWithBase64EncodedData_options_1, base64Data._id, options); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData base64EncodedDataWithOptions_(int options) { - final _ret = _lib._objc_msgSend_283( - _id, _lib._sel_base64EncodedDataWithOptions_1, options); - return NSData._(_ret, _lib, retain: true, release: true); - } - - NSData? decompressedDataUsingAlgorithm_error_( - int algorithm, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_284(_id, - _lib._sel_decompressedDataUsingAlgorithm_error_1, algorithm, error); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData? compressedDataUsingAlgorithm_error_( - int algorithm, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_284( - _id, _lib._sel_compressedDataUsingAlgorithm_error_1, algorithm, error); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - void getBytes_(ffi.Pointer buffer) { - _lib._objc_msgSend_52(_id, _lib._sel_getBytes_1, buffer); - } - - static NSObject? dataWithContentsOfMappedFile_(AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSData1, - _lib._sel_dataWithContentsOfMappedFile_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithContentsOfMappedFile_(NSString path) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_initWithContentsOfMappedFile_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithBase64Encoding_(NSString base64String) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_initWithBase64Encoding_1, base64String._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSString base64Encoding() { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_base64Encoding1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - @override - NSData init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - static NSData new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSData1, _lib._sel_new1); - return NSData._(_ret, _lib, retain: false, release: true); - } - - static NSData allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSData1, _lib._sel_allocWithZone_1, zone); - return NSData._(_ret, _lib, retain: false, release: true); - } - - static NSData alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSData1, _lib._sel_alloc1); - return NSData._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSData1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSData1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSData1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSData1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSData1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSData1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSData1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSData1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSData1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -final class _NSRange extends ffi.Struct { - @ffi.UnsignedLong() - external int location; - - @ffi.UnsignedLong() - external int length; -} - -class NSURL extends NSObject { - NSURL._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSURL] that points to the same underlying object as [other]. - static NSURL castFrom(T other) { - return NSURL._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSURL] that wraps the given raw object pointer. - static NSURL castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURL._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSURL]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURL1); - } - - NSURL? initWithScheme_host_path_( - NSString scheme, NSString? host, NSString path) { - final _ret = _lib._objc_msgSend_27( - _id, - _lib._sel_initWithScheme_host_path_1, - scheme._id, - host?._id ?? ffi.nullptr, - path._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL initFileURLWithPath_isDirectory_relativeToURL_( - NSString path, bool isDir, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_28( - _id, - _lib._sel_initFileURLWithPath_isDirectory_relativeToURL_1, - path._id, - isDir, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL initFileURLWithPath_relativeToURL_(NSString path, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_29( - _id, - _lib._sel_initFileURLWithPath_relativeToURL_1, - path._id, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL initFileURLWithPath_isDirectory_(NSString path, bool isDir) { - final _ret = _lib._objc_msgSend_30( - _id, _lib._sel_initFileURLWithPath_isDirectory_1, path._id, isDir); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL initFileURLWithPath_(NSString path) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initFileURLWithPath_1, path._id); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL fileURLWithPath_isDirectory_relativeToURL_( - AVFAudio _lib, NSString path, bool isDir, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_32( - _lib._class_NSURL1, - _lib._sel_fileURLWithPath_isDirectory_relativeToURL_1, - path._id, - isDir, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL fileURLWithPath_relativeToURL_( - AVFAudio _lib, NSString path, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_33( - _lib._class_NSURL1, - _lib._sel_fileURLWithPath_relativeToURL_1, - path._id, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL fileURLWithPath_isDirectory_( - AVFAudio _lib, NSString path, bool isDir) { - final _ret = _lib._objc_msgSend_34(_lib._class_NSURL1, - _lib._sel_fileURLWithPath_isDirectory_1, path._id, isDir); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL fileURLWithPath_(AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_35( - _lib._class_NSURL1, _lib._sel_fileURLWithPath_1, path._id); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_( - ffi.Pointer path, bool isDir, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_36( - _id, - _lib._sel_initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1, - path, - isDir, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_( - AVFAudio _lib, ffi.Pointer path, bool isDir, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_37( - _lib._class_NSURL1, - _lib._sel_fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1, - path, - isDir, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? initWithString_(NSString URLString) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_initWithString_1, URLString._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? initWithString_relativeToURL_(NSString URLString, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_39( - _id, - _lib._sel_initWithString_relativeToURL_1, - URLString._id, - baseURL?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL? URLWithString_(AVFAudio _lib, NSString URLString) { - final _ret = _lib._objc_msgSend_38( - _lib._class_NSURL1, _lib._sel_URLWithString_1, URLString._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL? URLWithString_relativeToURL_( - AVFAudio _lib, NSString URLString, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_39( - _lib._class_NSURL1, - _lib._sel_URLWithString_relativeToURL_1, - URLString._id, - baseURL?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? initWithString_encodingInvalidCharacters_( - NSString URLString, bool encodingInvalidCharacters) { - final _ret = _lib._objc_msgSend_40( - _id, - _lib._sel_initWithString_encodingInvalidCharacters_1, - URLString._id, - encodingInvalidCharacters); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL? URLWithString_encodingInvalidCharacters_( - AVFAudio _lib, NSString URLString, bool encodingInvalidCharacters) { - final _ret = _lib._objc_msgSend_40( - _lib._class_NSURL1, - _lib._sel_URLWithString_encodingInvalidCharacters_1, - URLString._id, - encodingInvalidCharacters); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL initWithDataRepresentation_relativeToURL_(NSData data, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_41( - _id, - _lib._sel_initWithDataRepresentation_relativeToURL_1, - data._id, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL URLWithDataRepresentation_relativeToURL_( - AVFAudio _lib, NSData data, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_42( - _lib._class_NSURL1, - _lib._sel_URLWithDataRepresentation_relativeToURL_1, - data._id, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL initAbsoluteURLWithDataRepresentation_relativeToURL_( - NSData data, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_41( - _id, - _lib._sel_initAbsoluteURLWithDataRepresentation_relativeToURL_1, - data._id, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL absoluteURLWithDataRepresentation_relativeToURL_( - AVFAudio _lib, NSData data, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_42( - _lib._class_NSURL1, - _lib._sel_absoluteURLWithDataRepresentation_relativeToURL_1, - data._id, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSData get dataRepresentation { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_dataRepresentation1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - NSString? get absoluteString { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_absoluteString1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get relativeString { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_relativeString1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSURL? get baseURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_baseURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? get absoluteURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_absoluteURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSString? get scheme { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_scheme1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get resourceSpecifier { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_resourceSpecifier1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get host { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_host1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSNumber? get port { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_port1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSString? get user { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_user1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get password { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_password1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get path { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_path1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get fragment { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_fragment1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get parameterString { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_parameterString1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get query { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_query1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get relativePath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_relativePath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - bool get hasDirectoryPath { - return _lib._objc_msgSend_12(_id, _lib._sel_hasDirectoryPath1); - } - - bool getFileSystemRepresentation_maxLength_( - ffi.Pointer buffer, int maxBufferLength) { - return _lib._objc_msgSend_242( - _id, - _lib._sel_getFileSystemRepresentation_maxLength_1, - buffer, - maxBufferLength); - } - - ffi.Pointer get fileSystemRepresentation { - return _lib._objc_msgSend_13(_id, _lib._sel_fileSystemRepresentation1); - } - - bool get fileURL { - return _lib._objc_msgSend_12(_id, _lib._sel_isFileURL1); - } - - NSURL? get standardizedURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_standardizedURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - bool isFileReferenceURL() { - return _lib._objc_msgSend_12(_id, _lib._sel_isFileReferenceURL1); - } - - NSURL? fileReferenceURL() { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_fileReferenceURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? get filePathURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_filePathURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - bool getResourceValue_forKey_error_( - ffi.Pointer> value, - NSString key, - ffi.Pointer> error) { - return _lib._objc_msgSend_243( - _id, _lib._sel_getResourceValue_forKey_error_1, value, key._id, error); - } - - NSObject? resourceValuesForKeys_error_( - NSArray keys, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_244( - _id, _lib._sel_resourceValuesForKeys_error_1, keys._id, error); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - bool setResourceValue_forKey_error_(NSObject? value, NSString key, - ffi.Pointer> error) { - return _lib._objc_msgSend_245( - _id, - _lib._sel_setResourceValue_forKey_error_1, - value?._id ?? ffi.nullptr, - key._id, - error); - } - - bool setResourceValues_error_( - NSObject keyedValues, ffi.Pointer> error) { - return _lib._objc_msgSend_246( - _id, _lib._sel_setResourceValues_error_1, keyedValues._id, error); - } - - void removeCachedResourceValueForKey_(NSString key) { - _lib._objc_msgSend_247( - _id, _lib._sel_removeCachedResourceValueForKey_1, key._id); - } - - void removeAllCachedResourceValues() { - _lib._objc_msgSend_1(_id, _lib._sel_removeAllCachedResourceValues1); - } - - void setTemporaryResourceValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_setTemporaryResourceValue_forKey_1, - value?._id ?? ffi.nullptr, key._id); - } - - NSData? - bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_( - int options, - NSArray? keys, - NSURL? relativeURL, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_248( - _id, - _lib._sel_bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_1, - options, - keys?._id ?? ffi.nullptr, - relativeURL?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSURL? - initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_( - NSData bookmarkData, - int options, - NSURL? relativeURL, - ffi.Pointer isStale, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_249( - _id, - _lib._sel_initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1, - bookmarkData._id, - options, - relativeURL?._id ?? ffi.nullptr, - isStale, - error); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL? - URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_( - AVFAudio _lib, - NSData bookmarkData, - int options, - NSURL? relativeURL, - ffi.Pointer isStale, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_249( - _lib._class_NSURL1, - _lib._sel_URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1, - bookmarkData._id, - options, - relativeURL?._id ?? ffi.nullptr, - isStale, - error); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSObject? resourceValuesForKeys_fromBookmarkData_( - AVFAudio _lib, NSArray keys, NSData bookmarkData) { - final _ret = _lib._objc_msgSend_250( - _lib._class_NSURL1, - _lib._sel_resourceValuesForKeys_fromBookmarkData_1, - keys._id, - bookmarkData._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static bool writeBookmarkData_toURL_options_error_( - AVFAudio _lib, - NSData bookmarkData, - NSURL bookmarkFileURL, - int options, - ffi.Pointer> error) { - return _lib._objc_msgSend_251( - _lib._class_NSURL1, - _lib._sel_writeBookmarkData_toURL_options_error_1, - bookmarkData._id, - bookmarkFileURL._id, - options, - error); - } - - static NSData? bookmarkDataWithContentsOfURL_error_(AVFAudio _lib, - NSURL bookmarkFileURL, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_252( - _lib._class_NSURL1, - _lib._sel_bookmarkDataWithContentsOfURL_error_1, - bookmarkFileURL._id, - error); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - static NSURL? URLByResolvingAliasFileAtURL_options_error_(AVFAudio _lib, - NSURL url, int options, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_253( - _lib._class_NSURL1, - _lib._sel_URLByResolvingAliasFileAtURL_options_error_1, - url._id, - options, - error); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - bool startAccessingSecurityScopedResource() { - return _lib._objc_msgSend_12( - _id, _lib._sel_startAccessingSecurityScopedResource1); - } - - void stopAccessingSecurityScopedResource() { - _lib._objc_msgSend_1(_id, _lib._sel_stopAccessingSecurityScopedResource1); - } - - bool getPromisedItemResourceValue_forKey_error_( - ffi.Pointer> value, - NSString key, - ffi.Pointer> error) { - return _lib._objc_msgSend_243( - _id, - _lib._sel_getPromisedItemResourceValue_forKey_error_1, - value, - key._id, - error); - } - - NSDictionary? promisedItemResourceValuesForKeys_error_( - NSArray keys, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_254(_id, - _lib._sel_promisedItemResourceValuesForKeys_error_1, keys._id, error); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - bool checkPromisedItemIsReachableAndReturnError_( - ffi.Pointer> error) { - return _lib._objc_msgSend_255( - _id, _lib._sel_checkPromisedItemIsReachableAndReturnError_1, error); - } - - static NSURL? fileURLWithPathComponents_(AVFAudio _lib, NSArray components) { - final _ret = _lib._objc_msgSend_256(_lib._class_NSURL1, - _lib._sel_fileURLWithPathComponents_1, components._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSArray? get pathComponents { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_pathComponents1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString? get lastPathComponent { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_lastPathComponent1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get pathExtension { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_pathExtension1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSURL? URLByAppendingPathComponent_(NSString pathComponent) { - final _ret = _lib._objc_msgSend_257( - _id, _lib._sel_URLByAppendingPathComponent_1, pathComponent._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? URLByAppendingPathComponent_isDirectory_( - NSString pathComponent, bool isDirectory) { - final _ret = _lib._objc_msgSend_258( - _id, - _lib._sel_URLByAppendingPathComponent_isDirectory_1, - pathComponent._id, - isDirectory); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? get URLByDeletingLastPathComponent { - final _ret = - _lib._objc_msgSend_45(_id, _lib._sel_URLByDeletingLastPathComponent1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? URLByAppendingPathExtension_(NSString pathExtension) { - final _ret = _lib._objc_msgSend_257( - _id, _lib._sel_URLByAppendingPathExtension_1, pathExtension._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? get URLByDeletingPathExtension { - final _ret = - _lib._objc_msgSend_45(_id, _lib._sel_URLByDeletingPathExtension1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - bool checkResourceIsReachableAndReturnError_( - ffi.Pointer> error) { - return _lib._objc_msgSend_255( - _id, _lib._sel_checkResourceIsReachableAndReturnError_1, error); - } - - NSURL? get URLByStandardizingPath { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_URLByStandardizingPath1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? get URLByResolvingSymlinksInPath { - final _ret = - _lib._objc_msgSend_45(_id, _lib._sel_URLByResolvingSymlinksInPath1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSData? resourceDataUsingCache_(bool shouldUseCache) { - final _ret = _lib._objc_msgSend_259( - _id, _lib._sel_resourceDataUsingCache_1, shouldUseCache); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - void loadResourceDataNotifyingClient_usingCache_( - NSObject client, bool shouldUseCache) { - _lib._objc_msgSend_260( - _id, - _lib._sel_loadResourceDataNotifyingClient_usingCache_1, - client._id, - shouldUseCache); - } - - NSObject? propertyForKey_(NSString propertyKey) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_propertyForKey_1, propertyKey._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - bool setResourceData_(NSData data) { - return _lib._objc_msgSend_24(_id, _lib._sel_setResourceData_1, data._id); - } - - bool setProperty_forKey_(NSObject property, NSString propertyKey) { - return _lib._objc_msgSend_261( - _id, _lib._sel_setProperty_forKey_1, property._id, propertyKey._id); - } - - NSURLHandle? URLHandleUsingCache_(bool shouldUseCache) { - final _ret = _lib._objc_msgSend_268( - _id, _lib._sel_URLHandleUsingCache_1, shouldUseCache); - return _ret.address == 0 - ? null - : NSURLHandle._(_ret, _lib, retain: true, release: true); - } - - @override - NSURL init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURL1, _lib._sel_new1); - return NSURL._(_ret, _lib, retain: false, release: true); - } - - static NSURL allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURL1, _lib._sel_allocWithZone_1, zone); - return NSURL._(_ret, _lib, retain: false, release: true); - } - - static NSURL alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURL1, _lib._sel_alloc1); - return NSURL._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURL1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURL1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURL1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURL1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURL1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURL1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURL1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURL1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURL1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSNumber extends NSValue { - NSNumber._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSNumber] that points to the same underlying object as [other]. - static NSNumber castFrom(T other) { - return NSNumber._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSNumber] that wraps the given raw object pointer. - static NSNumber castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSNumber._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSNumber]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSNumber1); - } - - @override - NSNumber? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithChar_(int value) { - final _ret = _lib._objc_msgSend_220(_id, _lib._sel_initWithChar_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithUnsignedChar_(int value) { - final _ret = - _lib._objc_msgSend_221(_id, _lib._sel_initWithUnsignedChar_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithShort_(int value) { - final _ret = _lib._objc_msgSend_222(_id, _lib._sel_initWithShort_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithUnsignedShort_(int value) { - final _ret = - _lib._objc_msgSend_223(_id, _lib._sel_initWithUnsignedShort_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithInt_(int value) { - final _ret = _lib._objc_msgSend_224(_id, _lib._sel_initWithInt_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithUnsignedInt_(int value) { - final _ret = - _lib._objc_msgSend_225(_id, _lib._sel_initWithUnsignedInt_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithLong_(int value) { - final _ret = _lib._objc_msgSend_226(_id, _lib._sel_initWithLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithUnsignedLong_(int value) { - final _ret = - _lib._objc_msgSend_227(_id, _lib._sel_initWithUnsignedLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithLongLong_(int value) { - final _ret = - _lib._objc_msgSend_228(_id, _lib._sel_initWithLongLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithUnsignedLongLong_(int value) { - final _ret = _lib._objc_msgSend_229( - _id, _lib._sel_initWithUnsignedLongLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithFloat_(double value) { - final _ret = _lib._objc_msgSend_230(_id, _lib._sel_initWithFloat_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithDouble_(double value) { - final _ret = _lib._objc_msgSend_231(_id, _lib._sel_initWithDouble_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithBool_(bool value) { - final _ret = _lib._objc_msgSend_232(_id, _lib._sel_initWithBool_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithInteger_(int value) { - final _ret = - _lib._objc_msgSend_226(_id, _lib._sel_initWithInteger_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithUnsignedInteger_(int value) { - final _ret = - _lib._objc_msgSend_227(_id, _lib._sel_initWithUnsignedInteger_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - int get charValue { - return _lib._objc_msgSend_233(_id, _lib._sel_charValue1); - } - - int get unsignedCharValue { - return _lib._objc_msgSend_234(_id, _lib._sel_unsignedCharValue1); - } - - int get shortValue { - return _lib._objc_msgSend_235(_id, _lib._sel_shortValue1); - } - - int get unsignedShortValue { - return _lib._objc_msgSend_236(_id, _lib._sel_unsignedShortValue1); - } - - int get intValue { - return _lib._objc_msgSend_237(_id, _lib._sel_intValue1); - } - - int get unsignedIntValue { - return _lib._objc_msgSend_214(_id, _lib._sel_unsignedIntValue1); - } - - int get longValue { - return _lib._objc_msgSend_83(_id, _lib._sel_longValue1); - } - - int get unsignedLongValue { - return _lib._objc_msgSend_10(_id, _lib._sel_unsignedLongValue1); - } - - int get longLongValue { - return _lib._objc_msgSend_238(_id, _lib._sel_longLongValue1); - } - - int get unsignedLongLongValue { - return _lib._objc_msgSend_164(_id, _lib._sel_unsignedLongLongValue1); - } - - double get floatValue { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_239_fpret(_id, _lib._sel_floatValue1) - : _lib._objc_msgSend_239(_id, _lib._sel_floatValue1); - } - - double get doubleValue { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_doubleValue1) - : _lib._objc_msgSend_165(_id, _lib._sel_doubleValue1); - } - - bool get boolValue { - return _lib._objc_msgSend_12(_id, _lib._sel_boolValue1); - } - - int get integerValue { - return _lib._objc_msgSend_83(_id, _lib._sel_integerValue1); - } - - int get unsignedIntegerValue { - return _lib._objc_msgSend_10(_id, _lib._sel_unsignedIntegerValue1); - } - - NSString get stringValue { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_stringValue1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - int compare_(NSNumber otherNumber) { - return _lib._objc_msgSend_240(_id, _lib._sel_compare_1, otherNumber._id); - } - - bool isEqualToNumber_(NSNumber number) { - return _lib._objc_msgSend_241(_id, _lib._sel_isEqualToNumber_1, number._id); - } - - NSString descriptionWithLocale_(NSObject? locale) { - final _ret = _lib._objc_msgSend_70( - _id, _lib._sel_descriptionWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithChar_(AVFAudio _lib, int value) { - final _ret = _lib._objc_msgSend_220( - _lib._class_NSNumber1, _lib._sel_numberWithChar_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithUnsignedChar_(AVFAudio _lib, int value) { - final _ret = _lib._objc_msgSend_221( - _lib._class_NSNumber1, _lib._sel_numberWithUnsignedChar_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithShort_(AVFAudio _lib, int value) { - final _ret = _lib._objc_msgSend_222( - _lib._class_NSNumber1, _lib._sel_numberWithShort_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithUnsignedShort_(AVFAudio _lib, int value) { - final _ret = _lib._objc_msgSend_223( - _lib._class_NSNumber1, _lib._sel_numberWithUnsignedShort_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithInt_(AVFAudio _lib, int value) { - final _ret = _lib._objc_msgSend_224( - _lib._class_NSNumber1, _lib._sel_numberWithInt_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithUnsignedInt_(AVFAudio _lib, int value) { - final _ret = _lib._objc_msgSend_225( - _lib._class_NSNumber1, _lib._sel_numberWithUnsignedInt_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithLong_(AVFAudio _lib, int value) { - final _ret = _lib._objc_msgSend_226( - _lib._class_NSNumber1, _lib._sel_numberWithLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithUnsignedLong_(AVFAudio _lib, int value) { - final _ret = _lib._objc_msgSend_227( - _lib._class_NSNumber1, _lib._sel_numberWithUnsignedLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithLongLong_(AVFAudio _lib, int value) { - final _ret = _lib._objc_msgSend_228( - _lib._class_NSNumber1, _lib._sel_numberWithLongLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithUnsignedLongLong_(AVFAudio _lib, int value) { - final _ret = _lib._objc_msgSend_229( - _lib._class_NSNumber1, _lib._sel_numberWithUnsignedLongLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithFloat_(AVFAudio _lib, double value) { - final _ret = _lib._objc_msgSend_230( - _lib._class_NSNumber1, _lib._sel_numberWithFloat_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithDouble_(AVFAudio _lib, double value) { - final _ret = _lib._objc_msgSend_231( - _lib._class_NSNumber1, _lib._sel_numberWithDouble_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithBool_(AVFAudio _lib, bool value) { - final _ret = _lib._objc_msgSend_232( - _lib._class_NSNumber1, _lib._sel_numberWithBool_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithInteger_(AVFAudio _lib, int value) { - final _ret = _lib._objc_msgSend_226( - _lib._class_NSNumber1, _lib._sel_numberWithInteger_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithUnsignedInteger_(AVFAudio _lib, int value) { - final _ret = _lib._objc_msgSend_227( - _lib._class_NSNumber1, _lib._sel_numberWithUnsignedInteger_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - @override - NSNumber initWithBytes_objCType_( - ffi.Pointer value, ffi.Pointer type) { - final _ret = _lib._objc_msgSend_46( - _id, _lib._sel_initWithBytes_objCType_1, value, type); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithBytes_objCType_( - AVFAudio _lib, ffi.Pointer value, ffi.Pointer type) { - final _ret = _lib._objc_msgSend_48(_lib._class_NSNumber1, - _lib._sel_valueWithBytes_objCType_1, value, type); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue value_withObjCType_( - AVFAudio _lib, ffi.Pointer value, ffi.Pointer type) { - final _ret = _lib._objc_msgSend_48( - _lib._class_NSNumber1, _lib._sel_value_withObjCType_1, value, type); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithNonretainedObject_( - AVFAudio _lib, NSObject? anObject) { - final _ret = _lib._objc_msgSend_49(_lib._class_NSNumber1, - _lib._sel_valueWithNonretainedObject_1, anObject?._id ?? ffi.nullptr); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithPointer_( - AVFAudio _lib, ffi.Pointer pointer) { - final _ret = _lib._objc_msgSend_50( - _lib._class_NSNumber1, _lib._sel_valueWithPointer_1, pointer); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithRange_(AVFAudio _lib, _NSRange range) { - final _ret = _lib._objc_msgSend_53( - _lib._class_NSNumber1, _lib._sel_valueWithRange_1, range); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithPoint_(AVFAudio _lib, CGPoint point) { - final _ret = _lib._objc_msgSend_55( - _lib._class_NSNumber1, _lib._sel_valueWithPoint_1, point); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithSize_(AVFAudio _lib, CGSize size) { - final _ret = _lib._objc_msgSend_56( - _lib._class_NSNumber1, _lib._sel_valueWithSize_1, size); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithRect_(AVFAudio _lib, CGRect rect) { - final _ret = _lib._objc_msgSend_57( - _lib._class_NSNumber1, _lib._sel_valueWithRect_1, rect); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithEdgeInsets_(AVFAudio _lib, NSEdgeInsets insets) { - final _ret = _lib._objc_msgSend_58( - _lib._class_NSNumber1, _lib._sel_valueWithEdgeInsets_1, insets); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - @override - NSNumber init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSNumber1, _lib._sel_new1); - return NSNumber._(_ret, _lib, retain: false, release: true); - } - - static NSNumber allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSNumber1, _lib._sel_allocWithZone_1, zone); - return NSNumber._(_ret, _lib, retain: false, release: true); - } - - static NSNumber alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSNumber1, _lib._sel_alloc1); - return NSNumber._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSNumber1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSNumber1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSNumber1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSNumber1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSNumber1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSNumber1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSNumber1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSNumber1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSNumber1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSValue extends NSObject { - NSValue._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSValue] that points to the same underlying object as [other]. - static NSValue castFrom(T other) { - return NSValue._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSValue] that wraps the given raw object pointer. - static NSValue castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSValue._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSValue]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSValue1); - } - - void getValue_size_(ffi.Pointer value, int size) { - _lib._objc_msgSend_22(_id, _lib._sel_getValue_size_1, value, size); - } - - ffi.Pointer get objCType { - return _lib._objc_msgSend_13(_id, _lib._sel_objCType1); - } - - NSValue initWithBytes_objCType_( - ffi.Pointer value, ffi.Pointer type) { - final _ret = _lib._objc_msgSend_46( - _id, _lib._sel_initWithBytes_objCType_1, value, type); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - NSValue? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithBytes_objCType_( - AVFAudio _lib, ffi.Pointer value, ffi.Pointer type) { - final _ret = _lib._objc_msgSend_48( - _lib._class_NSValue1, _lib._sel_valueWithBytes_objCType_1, value, type); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue value_withObjCType_( - AVFAudio _lib, ffi.Pointer value, ffi.Pointer type) { - final _ret = _lib._objc_msgSend_48( - _lib._class_NSValue1, _lib._sel_value_withObjCType_1, value, type); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithNonretainedObject_( - AVFAudio _lib, NSObject? anObject) { - final _ret = _lib._objc_msgSend_49(_lib._class_NSValue1, - _lib._sel_valueWithNonretainedObject_1, anObject?._id ?? ffi.nullptr); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - NSObject? get nonretainedObjectValue { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_nonretainedObjectValue1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithPointer_( - AVFAudio _lib, ffi.Pointer pointer) { - final _ret = _lib._objc_msgSend_50( - _lib._class_NSValue1, _lib._sel_valueWithPointer_1, pointer); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - ffi.Pointer get pointerValue { - return _lib._objc_msgSend_20(_id, _lib._sel_pointerValue1); - } - - bool isEqualToValue_(NSValue value) { - return _lib._objc_msgSend_51(_id, _lib._sel_isEqualToValue_1, value._id); - } - - void getValue_(ffi.Pointer value) { - _lib._objc_msgSend_52(_id, _lib._sel_getValue_1, value); - } - - static NSValue valueWithRange_(AVFAudio _lib, _NSRange range) { - final _ret = _lib._objc_msgSend_53( - _lib._class_NSValue1, _lib._sel_valueWithRange_1, range); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - void getRangeValue(ffi.Pointer<_NSRange> stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_54_stret(stret, _id, _lib._sel_rangeValue1) - : stret.ref = _lib._objc_msgSend_54(_id, _lib._sel_rangeValue1); - } - - static NSValue valueWithPoint_(AVFAudio _lib, CGPoint point) { - final _ret = _lib._objc_msgSend_55( - _lib._class_NSValue1, _lib._sel_valueWithPoint_1, point); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithSize_(AVFAudio _lib, CGSize size) { - final _ret = _lib._objc_msgSend_56( - _lib._class_NSValue1, _lib._sel_valueWithSize_1, size); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithRect_(AVFAudio _lib, CGRect rect) { - final _ret = _lib._objc_msgSend_57( - _lib._class_NSValue1, _lib._sel_valueWithRect_1, rect); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithEdgeInsets_(AVFAudio _lib, NSEdgeInsets insets) { - final _ret = _lib._objc_msgSend_58( - _lib._class_NSValue1, _lib._sel_valueWithEdgeInsets_1, insets); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - void getPointValue(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_59_stret(stret, _id, _lib._sel_pointValue1) - : stret.ref = _lib._objc_msgSend_59(_id, _lib._sel_pointValue1); - } - - void getSizeValue(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_60_stret(stret, _id, _lib._sel_sizeValue1) - : stret.ref = _lib._objc_msgSend_60(_id, _lib._sel_sizeValue1); - } - - void getRectValue(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_61_stret(stret, _id, _lib._sel_rectValue1) - : stret.ref = _lib._objc_msgSend_61(_id, _lib._sel_rectValue1); - } - - void getEdgeInsetsValue(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_62_stret(stret, _id, _lib._sel_edgeInsetsValue1) - : stret.ref = _lib._objc_msgSend_62(_id, _lib._sel_edgeInsetsValue1); - } - - @override - NSValue init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSValue1, _lib._sel_new1); - return NSValue._(_ret, _lib, retain: false, release: true); - } - - static NSValue allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSValue1, _lib._sel_allocWithZone_1, zone); - return NSValue._(_ret, _lib, retain: false, release: true); - } - - static NSValue alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSValue1, _lib._sel_alloc1); - return NSValue._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSValue1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSValue1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSValue1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSValue1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSValue1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSValue1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSValue1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSValue1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSValue1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -final class CGPoint extends ffi.Struct { - @ffi.Double() - external double x; - - @ffi.Double() - external double y; -} - -final class CGSize extends ffi.Struct { - @ffi.Double() - external double width; - - @ffi.Double() - external double height; -} - -final class CGRect extends ffi.Struct { - external CGPoint origin; - - external CGSize size; -} - -final class NSEdgeInsets extends ffi.Struct { - @ffi.Double() - external double top; - - @ffi.Double() - external double left; - - @ffi.Double() - external double bottom; - - @ffi.Double() - external double right; -} - -class NSArray extends NSObject { - NSArray._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSArray] that points to the same underlying object as [other]. - static NSArray castFrom(T other) { - return NSArray._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSArray] that wraps the given raw object pointer. - static NSArray castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSArray._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSArray]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSArray1); - } - - int get count { - return _lib._objc_msgSend_10(_id, _lib._sel_count1); - } - - NSObject objectAtIndex_(int index) { - final _ret = _lib._objc_msgSend_65(_id, _lib._sel_objectAtIndex_1, index); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - NSArray init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray initWithObjects_count_( - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _id, _lib._sel_initWithObjects_count_1, objects, cnt); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray arrayByAddingObject_(NSObject anObject) { - final _ret = _lib._objc_msgSend_67( - _id, _lib._sel_arrayByAddingObject_1, anObject._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray arrayByAddingObjectsFromArray_(NSArray otherArray) { - final _ret = _lib._objc_msgSend_68( - _id, _lib._sel_arrayByAddingObjectsFromArray_1, otherArray._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString componentsJoinedByString_(NSString separator) { - final _ret = _lib._objc_msgSend_69( - _id, _lib._sel_componentsJoinedByString_1, separator._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - bool containsObject_(NSObject anObject) { - return _lib._objc_msgSend_0(_id, _lib._sel_containsObject_1, anObject._id); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_(NSObject? locale) { - final _ret = _lib._objc_msgSend_70( - _id, _lib._sel_descriptionWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_indent_(NSObject? locale, int level) { - final _ret = _lib._objc_msgSend_71( - _id, - _lib._sel_descriptionWithLocale_indent_1, - locale?._id ?? ffi.nullptr, - level); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSObject? firstObjectCommonWithArray_(NSArray otherArray) { - final _ret = _lib._objc_msgSend_72( - _id, _lib._sel_firstObjectCommonWithArray_1, otherArray._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void getObjects_range_( - ffi.Pointer> objects, _NSRange range) { - _lib._objc_msgSend_73(_id, _lib._sel_getObjects_range_1, objects, range); - } - - int indexOfObject_(NSObject anObject) { - return _lib._objc_msgSend_74(_id, _lib._sel_indexOfObject_1, anObject._id); - } - - int indexOfObject_inRange_(NSObject anObject, _NSRange range) { - return _lib._objc_msgSend_75( - _id, _lib._sel_indexOfObject_inRange_1, anObject._id, range); - } - - int indexOfObjectIdenticalTo_(NSObject anObject) { - return _lib._objc_msgSend_74( - _id, _lib._sel_indexOfObjectIdenticalTo_1, anObject._id); - } - - int indexOfObjectIdenticalTo_inRange_(NSObject anObject, _NSRange range) { - return _lib._objc_msgSend_75( - _id, _lib._sel_indexOfObjectIdenticalTo_inRange_1, anObject._id, range); - } - - bool isEqualToArray_(NSArray otherArray) { - return _lib._objc_msgSend_76( - _id, _lib._sel_isEqualToArray_1, otherArray._id); - } - - NSObject? get firstObject { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_firstObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? get lastObject { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_lastObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSEnumerator objectEnumerator() { - final _ret = _lib._objc_msgSend_77(_id, _lib._sel_objectEnumerator1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - NSEnumerator reverseObjectEnumerator() { - final _ret = _lib._objc_msgSend_77(_id, _lib._sel_reverseObjectEnumerator1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - NSData get sortedArrayHint { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_sortedArrayHint1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - NSArray sortedArrayUsingFunction_context_( - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>> - comparator, - ffi.Pointer context) { - final _ret = _lib._objc_msgSend_78( - _id, _lib._sel_sortedArrayUsingFunction_context_1, comparator, context); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray sortedArrayUsingFunction_context_hint_( - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>> - comparator, - ffi.Pointer context, - NSData? hint) { - final _ret = _lib._objc_msgSend_79( - _id, - _lib._sel_sortedArrayUsingFunction_context_hint_1, - comparator, - context, - hint?._id ?? ffi.nullptr); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray sortedArrayUsingSelector_(ffi.Pointer comparator) { - final _ret = _lib._objc_msgSend_80( - _id, _lib._sel_sortedArrayUsingSelector_1, comparator); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray subarrayWithRange_(_NSRange range) { - final _ret = - _lib._objc_msgSend_81(_id, _lib._sel_subarrayWithRange_1, range); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - bool writeToURL_error_( - NSURL url, ffi.Pointer> error) { - return _lib._objc_msgSend_89( - _id, _lib._sel_writeToURL_error_1, url._id, error); - } - - void makeObjectsPerformSelector_(ffi.Pointer aSelector) { - _lib._objc_msgSend_7( - _id, _lib._sel_makeObjectsPerformSelector_1, aSelector); - } - - void makeObjectsPerformSelector_withObject_( - ffi.Pointer aSelector, NSObject? argument) { - _lib._objc_msgSend_90( - _id, - _lib._sel_makeObjectsPerformSelector_withObject_1, - aSelector, - argument?._id ?? ffi.nullptr); - } - - NSArray objectsAtIndexes_(NSIndexSet indexes) { - final _ret = - _lib._objc_msgSend_111(_id, _lib._sel_objectsAtIndexes_1, indexes._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject objectAtIndexedSubscript_(int idx) { - final _ret = - _lib._objc_msgSend_65(_id, _lib._sel_objectAtIndexedSubscript_1, idx); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void enumerateObjectsUsingBlock_( - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_112( - _id, _lib._sel_enumerateObjectsUsingBlock_1, block._id); - } - - void enumerateObjectsWithOptions_usingBlock_( - int opts, ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_113(_id, - _lib._sel_enumerateObjectsWithOptions_usingBlock_1, opts, block._id); - } - - void enumerateObjectsAtIndexes_options_usingBlock_(NSIndexSet s, int opts, - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_114( - _id, - _lib._sel_enumerateObjectsAtIndexes_options_usingBlock_1, - s._id, - opts, - block._id); - } - - int indexOfObjectPassingTest_( - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_115( - _id, _lib._sel_indexOfObjectPassingTest_1, predicate._id); - } - - int indexOfObjectWithOptions_passingTest_( - int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_116(_id, - _lib._sel_indexOfObjectWithOptions_passingTest_1, opts, predicate._id); - } - - int indexOfObjectAtIndexes_options_passingTest_(NSIndexSet s, int opts, - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_117( - _id, - _lib._sel_indexOfObjectAtIndexes_options_passingTest_1, - s._id, - opts, - predicate._id); - } - - NSIndexSet indexesOfObjectsPassingTest_( - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_118( - _id, _lib._sel_indexesOfObjectsPassingTest_1, predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet indexesOfObjectsWithOptions_passingTest_( - int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_119( - _id, - _lib._sel_indexesOfObjectsWithOptions_passingTest_1, - opts, - predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet indexesOfObjectsAtIndexes_options_passingTest_(NSIndexSet s, - int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_120( - _id, - _lib._sel_indexesOfObjectsAtIndexes_options_passingTest_1, - s._id, - opts, - predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSArray sortedArrayUsingComparator_( - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - final _ret = _lib._objc_msgSend_121( - _id, _lib._sel_sortedArrayUsingComparator_1, cmptr._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray sortedArrayWithOptions_usingComparator_( - int opts, ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - final _ret = _lib._objc_msgSend_122(_id, - _lib._sel_sortedArrayWithOptions_usingComparator_1, opts, cmptr._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - int indexOfObject_inSortedRange_options_usingComparator_( - NSObject obj, - _NSRange r, - int opts, - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmp) { - return _lib._objc_msgSend_123( - _id, - _lib._sel_indexOfObject_inSortedRange_options_usingComparator_1, - obj._id, - r, - opts, - cmp._id); - } - - static NSArray array(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSArray1, _lib._sel_array1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray arrayWithObject_(AVFAudio _lib, NSObject anObject) { - final _ret = _lib._objc_msgSend_124( - _lib._class_NSArray1, _lib._sel_arrayWithObject_1, anObject._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray arrayWithObjects_count_( - AVFAudio _lib, ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _lib._class_NSArray1, _lib._sel_arrayWithObjects_count_1, objects, cnt); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray arrayWithObjects_(AVFAudio _lib, NSObject firstObj) { - final _ret = _lib._objc_msgSend_124( - _lib._class_NSArray1, _lib._sel_arrayWithObjects_1, firstObj._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray arrayWithArray_(AVFAudio _lib, NSArray array) { - final _ret = _lib._objc_msgSend_125( - _lib._class_NSArray1, _lib._sel_arrayWithArray_1, array._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray initWithObjects_(NSObject firstObj) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObjects_1, firstObj._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray initWithArray_(NSArray array) { - final _ret = - _lib._objc_msgSend_125(_id, _lib._sel_initWithArray_1, array._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray initWithArray_copyItems_(NSArray array, bool flag) { - final _ret = _lib._objc_msgSend_126( - _id, _lib._sel_initWithArray_copyItems_1, array._id, flag); - return NSArray._(_ret, _lib, retain: false, release: true); - } - - NSArray? initWithContentsOfURL_error_( - NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_127( - _id, _lib._sel_initWithContentsOfURL_error_1, url._id, error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray? arrayWithContentsOfURL_error_( - AVFAudio _lib, NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_127(_lib._class_NSArray1, - _lib._sel_arrayWithContentsOfURL_error_1, url._id, error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject differenceFromArray_withOptions_usingEquivalenceTest_( - NSArray other, int options, ObjCBlock_bool_ObjCObject_ObjCObject block) { - final _ret = _lib._objc_msgSend_128( - _id, - _lib._sel_differenceFromArray_withOptions_usingEquivalenceTest_1, - other._id, - options, - block._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject differenceFromArray_withOptions_(NSArray other, int options) { - final _ret = _lib._objc_msgSend_129( - _id, _lib._sel_differenceFromArray_withOptions_1, other._id, options); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject differenceFromArray_(NSArray other) { - final _ret = - _lib._objc_msgSend_125(_id, _lib._sel_differenceFromArray_1, other._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSArray? arrayByApplyingDifference_(NSObject difference) { - final _ret = _lib._objc_msgSend_130( - _id, _lib._sel_arrayByApplyingDifference_1, difference._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - void getObjects_(ffi.Pointer> objects) { - _lib._objc_msgSend_131(_id, _lib._sel_getObjects_1, objects); - } - - static NSArray? arrayWithContentsOfFile_(AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_132( - _lib._class_NSArray1, _lib._sel_arrayWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray? arrayWithContentsOfURL_(AVFAudio _lib, NSURL url) { - final _ret = _lib._objc_msgSend_133( - _lib._class_NSArray1, _lib._sel_arrayWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray? initWithContentsOfFile_(NSString path) { - final _ret = _lib._objc_msgSend_132( - _id, _lib._sel_initWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_133(_id, _lib._sel_initWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - bool writeToFile_atomically_(NSString path, bool useAuxiliaryFile) { - return _lib._objc_msgSend_26( - _id, _lib._sel_writeToFile_atomically_1, path._id, useAuxiliaryFile); - } - - bool writeToURL_atomically_(NSURL url, bool atomically) { - return _lib._objc_msgSend_134( - _id, _lib._sel_writeToURL_atomically_1, url._id, atomically); - } - - NSArray pathsMatchingExtensions_(NSArray filterTypes) { - final _ret = _lib._objc_msgSend_68( - _id, _lib._sel_pathsMatchingExtensions_1, filterTypes._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject valueForKey_(NSString key) { - final _ret = _lib._objc_msgSend_31(_id, _lib._sel_valueForKey_1, key._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - void setValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135( - _id, _lib._sel_setValue_forKey_1, value?._id ?? ffi.nullptr, key._id); - } - - void addObserver_toObjectsAtIndexes_forKeyPath_options_context_( - NSObject observer, - NSIndexSet indexes, - NSString keyPath, - int options, - ffi.Pointer context) { - _lib._objc_msgSend_136( - _id, - _lib._sel_addObserver_toObjectsAtIndexes_forKeyPath_options_context_1, - observer._id, - indexes._id, - keyPath._id, - options, - context); - } - - void removeObserver_fromObjectsAtIndexes_forKeyPath_context_( - NSObject observer, - NSIndexSet indexes, - NSString keyPath, - ffi.Pointer context) { - _lib._objc_msgSend_137( - _id, - _lib._sel_removeObserver_fromObjectsAtIndexes_forKeyPath_context_1, - observer._id, - indexes._id, - keyPath._id, - context); - } - - void removeObserver_fromObjectsAtIndexes_forKeyPath_( - NSObject observer, NSIndexSet indexes, NSString keyPath) { - _lib._objc_msgSend_138( - _id, - _lib._sel_removeObserver_fromObjectsAtIndexes_forKeyPath_1, - observer._id, - indexes._id, - keyPath._id); - } - - @override - void addObserver_forKeyPath_options_context_(NSObject observer, - NSString keyPath, int options, ffi.Pointer context) { - _lib._objc_msgSend_139( - _id, - _lib._sel_addObserver_forKeyPath_options_context_1, - observer._id, - keyPath._id, - options, - context); - } - - @override - void removeObserver_forKeyPath_context_( - NSObject observer, NSString keyPath, ffi.Pointer context) { - _lib._objc_msgSend_140(_id, _lib._sel_removeObserver_forKeyPath_context_1, - observer._id, keyPath._id, context); - } - - @override - void removeObserver_forKeyPath_(NSObject observer, NSString keyPath) { - _lib._objc_msgSend_141( - _id, _lib._sel_removeObserver_forKeyPath_1, observer._id, keyPath._id); - } - - NSArray sortedArrayUsingDescriptors_(NSArray sortDescriptors) { - final _ret = _lib._objc_msgSend_68( - _id, _lib._sel_sortedArrayUsingDescriptors_1, sortDescriptors._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray filteredArrayUsingPredicate_(NSPredicate predicate) { - final _ret = _lib._objc_msgSend_219( - _id, _lib._sel_filteredArrayUsingPredicate_1, predicate._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSArray1, _lib._sel_new1); - return NSArray._(_ret, _lib, retain: false, release: true); - } - - static NSArray allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSArray1, _lib._sel_allocWithZone_1, zone); - return NSArray._(_ret, _lib, retain: false, release: true); - } - - static NSArray alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSArray1, _lib._sel_alloc1); - return NSArray._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSArray1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSArray1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSArray1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSArray1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSArray1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSArray1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSArray1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSArray1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSArray1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSError extends NSObject { - NSError._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSError] that points to the same underlying object as [other]. - static NSError castFrom(T other) { - return NSError._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSError] that wraps the given raw object pointer. - static NSError castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSError._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSError]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSError1); - } - - NSError initWithDomain_code_userInfo_( - NSString domain, int code, NSObject? dict) { - final _ret = _lib._objc_msgSend_82( - _id, - _lib._sel_initWithDomain_code_userInfo_1, - domain._id, - code, - dict?._id ?? ffi.nullptr); - return NSError._(_ret, _lib, retain: true, release: true); - } - - static NSError errorWithDomain_code_userInfo_( - AVFAudio _lib, NSString domain, int code, NSObject? dict) { - final _ret = _lib._objc_msgSend_82( - _lib._class_NSError1, - _lib._sel_errorWithDomain_code_userInfo_1, - domain._id, - code, - dict?._id ?? ffi.nullptr); - return NSError._(_ret, _lib, retain: true, release: true); - } - - NSString get domain { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_domain1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - int get code { - return _lib._objc_msgSend_83(_id, _lib._sel_code1); - } - - NSObject get userInfo { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_userInfo1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSString get localizedDescription { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_localizedDescription1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get localizedFailureReason { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_localizedFailureReason1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get localizedRecoverySuggestion { - final _ret = - _lib._objc_msgSend_44(_id, _lib._sel_localizedRecoverySuggestion1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray? get localizedRecoveryOptions { - final _ret = - _lib._objc_msgSend_84(_id, _lib._sel_localizedRecoveryOptions1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject? get recoveryAttempter { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_recoveryAttempter1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSString? get helpAnchor { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_helpAnchor1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray get underlyingErrors { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_underlyingErrors1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static void setUserInfoValueProviderForDomain_provider_(AVFAudio _lib, - NSString errorDomain, ObjCBlock_ObjCObject_NSError_NSString? provider) { - _lib._objc_msgSend_86( - _lib._class_NSError1, - _lib._sel_setUserInfoValueProviderForDomain_provider_1, - errorDomain._id, - provider?._id ?? ffi.nullptr); - } - - static ObjCBlock_ObjCObject_NSError_NSString? userInfoValueProviderForDomain_( - AVFAudio _lib, NSError err, NSString userInfoKey, NSString errorDomain) { - final _ret = _lib._objc_msgSend_87( - _lib._class_NSError1, - _lib._sel_userInfoValueProviderForDomain_1, - err._id, - userInfoKey._id, - errorDomain._id); - return _ret.address == 0 - ? null - : ObjCBlock_ObjCObject_NSError_NSString._(_ret, _lib, - retain: true, release: true); - } - - @override - NSError init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSError._(_ret, _lib, retain: true, release: true); - } - - static NSError new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSError1, _lib._sel_new1); - return NSError._(_ret, _lib, retain: false, release: true); - } - - static NSError allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSError1, _lib._sel_allocWithZone_1, zone); - return NSError._(_ret, _lib, retain: false, release: true); - } - - static NSError alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSError1, _lib._sel_alloc1); - return NSError._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSError1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSError1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSError1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSError1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSError1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSError1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSError1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSError1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSError1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class _ObjCBlockBase implements ffi.Finalizable { - final ffi.Pointer<_ObjCBlock> _id; - final AVFAudio _lib; - bool _pendingRelease; - - _ObjCBlockBase._(this._id, this._lib, - {bool retain = false, bool release = false}) - : _pendingRelease = release { - if (retain) { - _lib._Block_copy(_id.cast()); - } - if (release) { - _lib._objc_releaseFinalizer11.attach(this, _id.cast(), detach: this); - } - } - - /// Releases the reference to the underlying ObjC block held by this wrapper. - /// Throws a StateError if this wrapper doesn't currently hold a reference. - void release() { - if (_pendingRelease) { - _pendingRelease = false; - _lib._Block_release(_id.cast()); - _lib._objc_releaseFinalizer11.detach(this); - } else { - throw StateError( - 'Released an ObjC block that was unowned or already released.'); - } - } - - @override - bool operator ==(Object other) { - return other is _ObjCBlockBase && _id == other._id; - } - - @override - int get hashCode => _id.hashCode; - - /// Return a pointer to this object. - ffi.Pointer<_ObjCBlock> get pointer => _id; - - ffi.Pointer<_ObjCBlock> retainAndReturnPointer() { - _lib._Block_copy(_id.cast()); - return _id; - } -} - -ffi.Pointer _ObjCBlock_ObjCObject_NSError_NSString_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ObjCObject_NSError_NSString_closureRegistry = Function( - ffi.Pointer, ffi.Pointer)>{}; -int _ObjCBlock_ObjCObject_NSError_NSString_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ObjCObject_NSError_NSString_registerClosure( - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer) - fn) { - final id = ++_ObjCBlock_ObjCObject_NSError_NSString_closureRegistryIndex; - _ObjCBlock_ObjCObject_NSError_NSString_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -ffi.Pointer - _ObjCBlock_ObjCObject_NSError_NSString_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ObjCObject_NSError_NSString_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_ObjCObject_NSError_NSString extends _ObjCBlockBase { - ObjCBlock_ObjCObject_NSError_NSString._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ObjCObject_NSError_NSString castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ObjCObject_NSError_NSString._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ObjCObject_NSError_NSString.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ObjCObject_NSError_NSString_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ObjCObject_NSError_NSString.fromFunction( - AVFAudio lib, NSObject? Function(NSError, NSString) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ObjCObject_NSError_NSString_closureTrampoline) - .cast(), - _ObjCBlock_ObjCObject_NSError_NSString_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => - fn(NSError._(arg0, lib, retain: true, release: true), NSString._(arg1, lib, retain: true, release: true)) - ?.retainAndReturnPointer() ?? - ffi.nullptr)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - NSObject? call(NSError arg0, NSString arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, ffi.Pointer)>() - (_id, arg0._id, arg1._id) - .address == - 0 - ? null - : NSObject._( - _id.ref.invoke - .cast Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, ffi.Pointer arg1)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, ffi.Pointer)>()(_id, arg0._id, arg1._id), - _lib, - retain: false, - release: true); -} - -final class _ObjCBlockDesc extends ffi.Struct { - @ffi.UnsignedLong() - external int reserved; - - @ffi.UnsignedLong() - external int size; - - external ffi.Pointer copy_helper; - - external ffi.Pointer dispose_helper; - - external ffi.Pointer signature; -} - -final class _ObjCBlock extends ffi.Struct { - external ffi.Pointer isa; - - @ffi.Int() - external int flags; - - @ffi.Int() - external int reserved; - - external ffi.Pointer invoke; - - external ffi.Pointer<_ObjCBlockDesc> descriptor; - - external ffi.Pointer target; -} - -class NSIndexSet extends NSObject { - NSIndexSet._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSIndexSet] that points to the same underlying object as [other]. - static NSIndexSet castFrom(T other) { - return NSIndexSet._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSIndexSet] that wraps the given raw object pointer. - static NSIndexSet castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSIndexSet._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSIndexSet]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSIndexSet1); - } - - static NSIndexSet indexSet(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSIndexSet1, _lib._sel_indexSet1); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - static NSIndexSet indexSetWithIndex_(AVFAudio _lib, int value) { - final _ret = _lib._objc_msgSend_65( - _lib._class_NSIndexSet1, _lib._sel_indexSetWithIndex_1, value); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - static NSIndexSet indexSetWithIndexesInRange_(AVFAudio _lib, _NSRange range) { - final _ret = _lib._objc_msgSend_91( - _lib._class_NSIndexSet1, _lib._sel_indexSetWithIndexesInRange_1, range); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet initWithIndexesInRange_(_NSRange range) { - final _ret = - _lib._objc_msgSend_91(_id, _lib._sel_initWithIndexesInRange_1, range); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet initWithIndexSet_(NSIndexSet indexSet) { - final _ret = - _lib._objc_msgSend_92(_id, _lib._sel_initWithIndexSet_1, indexSet._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet initWithIndex_(int value) { - final _ret = _lib._objc_msgSend_65(_id, _lib._sel_initWithIndex_1, value); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - bool isEqualToIndexSet_(NSIndexSet indexSet) { - return _lib._objc_msgSend_93( - _id, _lib._sel_isEqualToIndexSet_1, indexSet._id); - } - - int get count { - return _lib._objc_msgSend_10(_id, _lib._sel_count1); - } - - int get firstIndex { - return _lib._objc_msgSend_10(_id, _lib._sel_firstIndex1); - } - - int get lastIndex { - return _lib._objc_msgSend_10(_id, _lib._sel_lastIndex1); - } - - int indexGreaterThanIndex_(int value) { - return _lib._objc_msgSend_94(_id, _lib._sel_indexGreaterThanIndex_1, value); - } - - int indexLessThanIndex_(int value) { - return _lib._objc_msgSend_94(_id, _lib._sel_indexLessThanIndex_1, value); - } - - int indexGreaterThanOrEqualToIndex_(int value) { - return _lib._objc_msgSend_94( - _id, _lib._sel_indexGreaterThanOrEqualToIndex_1, value); - } - - int indexLessThanOrEqualToIndex_(int value) { - return _lib._objc_msgSend_94( - _id, _lib._sel_indexLessThanOrEqualToIndex_1, value); - } - - int getIndexes_maxCount_inIndexRange_( - ffi.Pointer indexBuffer, - int bufferSize, - ffi.Pointer<_NSRange> range) { - return _lib._objc_msgSend_95( - _id, - _lib._sel_getIndexes_maxCount_inIndexRange_1, - indexBuffer, - bufferSize, - range); - } - - int countOfIndexesInRange_(_NSRange range) { - return _lib._objc_msgSend_96(_id, _lib._sel_countOfIndexesInRange_1, range); - } - - bool containsIndex_(int value) { - return _lib._objc_msgSend_97(_id, _lib._sel_containsIndex_1, value); - } - - bool containsIndexesInRange_(_NSRange range) { - return _lib._objc_msgSend_98( - _id, _lib._sel_containsIndexesInRange_1, range); - } - - bool containsIndexes_(NSIndexSet indexSet) { - return _lib._objc_msgSend_93( - _id, _lib._sel_containsIndexes_1, indexSet._id); - } - - bool intersectsIndexesInRange_(_NSRange range) { - return _lib._objc_msgSend_98( - _id, _lib._sel_intersectsIndexesInRange_1, range); - } - - void enumerateIndexesUsingBlock_( - ObjCBlock_ffiVoid_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_99( - _id, _lib._sel_enumerateIndexesUsingBlock_1, block._id); - } - - void enumerateIndexesWithOptions_usingBlock_( - int opts, ObjCBlock_ffiVoid_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_100(_id, - _lib._sel_enumerateIndexesWithOptions_usingBlock_1, opts, block._id); - } - - void enumerateIndexesInRange_options_usingBlock_( - _NSRange range, int opts, ObjCBlock_ffiVoid_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_101( - _id, - _lib._sel_enumerateIndexesInRange_options_usingBlock_1, - range, - opts, - block._id); - } - - int indexPassingTest_(ObjCBlock_bool_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_102( - _id, _lib._sel_indexPassingTest_1, predicate._id); - } - - int indexWithOptions_passingTest_( - int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_103( - _id, _lib._sel_indexWithOptions_passingTest_1, opts, predicate._id); - } - - int indexInRange_options_passingTest_( - _NSRange range, int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_104( - _id, - _lib._sel_indexInRange_options_passingTest_1, - range, - opts, - predicate._id); - } - - NSIndexSet indexesPassingTest_( - ObjCBlock_bool_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_105( - _id, _lib._sel_indexesPassingTest_1, predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet indexesWithOptions_passingTest_( - int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_106( - _id, _lib._sel_indexesWithOptions_passingTest_1, opts, predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet indexesInRange_options_passingTest_( - _NSRange range, int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_107( - _id, - _lib._sel_indexesInRange_options_passingTest_1, - range, - opts, - predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - void enumerateRangesUsingBlock_(ObjCBlock_ffiVoid_NSRange_bool block) { - _lib._objc_msgSend_108( - _id, _lib._sel_enumerateRangesUsingBlock_1, block._id); - } - - void enumerateRangesWithOptions_usingBlock_( - int opts, ObjCBlock_ffiVoid_NSRange_bool block) { - _lib._objc_msgSend_109(_id, - _lib._sel_enumerateRangesWithOptions_usingBlock_1, opts, block._id); - } - - void enumerateRangesInRange_options_usingBlock_( - _NSRange range, int opts, ObjCBlock_ffiVoid_NSRange_bool block) { - _lib._objc_msgSend_110( - _id, - _lib._sel_enumerateRangesInRange_options_usingBlock_1, - range, - opts, - block._id); - } - - @override - NSIndexSet init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - static NSIndexSet new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSIndexSet1, _lib._sel_new1); - return NSIndexSet._(_ret, _lib, retain: false, release: true); - } - - static NSIndexSet allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSIndexSet1, _lib._sel_allocWithZone_1, zone); - return NSIndexSet._(_ret, _lib, retain: false, release: true); - } - - static NSIndexSet alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSIndexSet1, _lib._sel_alloc1); - return NSIndexSet._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSIndexSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSIndexSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSIndexSet1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSIndexSet1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSIndexSet1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSIndexSet1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSIndexSet1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSIndexSet1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSIndexSet1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -void _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() - .asFunction)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_registerClosure( - void Function(int, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_ffiVoid_ffiUnsignedLong_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ffiUnsignedLong_bool._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ffiUnsignedLong_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ffiUnsignedLong_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiUnsignedLong_bool.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.UnsignedLong arg0, ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.UnsignedLong, ffi.Pointer)>( - _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiUnsignedLong_bool.fromFunction( - AVFAudio lib, void Function(int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.UnsignedLong, ffi.Pointer)>( - _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_registerClosure( - (int arg0, ffi.Pointer arg1) => fn(arg0, arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ffiUnsignedLong_bool.listener( - AVFAudio lib, void Function(int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.UnsignedLong, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_registerClosure( - (int arg0, ffi.Pointer arg1) => fn(arg0, arg1))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.UnsignedLong, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(int arg0, ffi.Pointer arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, int, - ffi.Pointer)>()(_id, arg0, arg1); -} - -abstract class NSEnumerationOptions { - static const int NSEnumerationConcurrent = 1; - static const int NSEnumerationReverse = 2; -} - -bool _ObjCBlock_bool_ffiUnsignedLong_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Bool Function( - ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() - .asFunction)>()(arg0, arg1); -final _ObjCBlock_bool_ffiUnsignedLong_bool_closureRegistry = - )>{}; -int _ObjCBlock_bool_ffiUnsignedLong_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_bool_ffiUnsignedLong_bool_registerClosure( - bool Function(int, ffi.Pointer) fn) { - final id = ++_ObjCBlock_bool_ffiUnsignedLong_bool_closureRegistryIndex; - _ObjCBlock_bool_ffiUnsignedLong_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -bool _ObjCBlock_bool_ffiUnsignedLong_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer arg1) => - _ObjCBlock_bool_ffiUnsignedLong_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_bool_ffiUnsignedLong_bool extends _ObjCBlockBase { - ObjCBlock_bool_ffiUnsignedLong_bool._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_bool_ffiUnsignedLong_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_bool_ffiUnsignedLong_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ffiUnsignedLong_bool.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi - .NativeFunction< - ffi.Bool Function( - ffi.UnsignedLong arg0, ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function(ffi.Pointer<_ObjCBlock>, - ffi.UnsignedLong, ffi.Pointer)>( - _ObjCBlock_bool_ffiUnsignedLong_bool_fnPtrTrampoline, - false) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ffiUnsignedLong_bool.fromFunction( - AVFAudio lib, bool Function(int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function(ffi.Pointer<_ObjCBlock>, - ffi.UnsignedLong, ffi.Pointer)>( - _ObjCBlock_bool_ffiUnsignedLong_bool_closureTrampoline, - false) - .cast(), - _ObjCBlock_bool_ffiUnsignedLong_bool_registerClosure( - (int arg0, ffi.Pointer arg1) => fn(arg0, arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - bool call(int arg0, ffi.Pointer arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer<_ObjCBlock> block, - ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer<_ObjCBlock>, int, - ffi.Pointer)>()(_id, arg0, arg1); -} - -void _ObjCBlock_ffiVoid_NSRange_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - _NSRange arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(_NSRange arg0, ffi.Pointer arg1)>>() - .asFunction< - void Function(_NSRange, ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_NSRange_bool_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSRange_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSRange_bool_registerClosure( - void Function(_NSRange, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSRange_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSRange_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSRange_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - _NSRange arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_NSRange_bool_closureRegistry[block.ref.target.address]!( - arg0, arg1); - -class ObjCBlock_ffiVoid_NSRange_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSRange_bool._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSRange_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSRange_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSRange_bool.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(_NSRange arg0, ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSRange_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSRange_bool.fromFunction( - AVFAudio lib, void Function(_NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSRange_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSRange_bool_registerClosure( - (_NSRange arg0, ffi.Pointer arg1) => - fn(arg0, arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSRange_bool.listener( - AVFAudio lib, void Function(_NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, _NSRange, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSRange_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSRange_bool_registerClosure( - (_NSRange arg0, ffi.Pointer arg1) => - fn(arg0, arg1))), - lib); - static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, _NSRange, ffi.Pointer)>? - _dartFuncListenerTrampoline; - - void call(_NSRange arg0, ffi.Pointer arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, _NSRange arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, _NSRange, - ffi.Pointer)>()(_id, arg0, arg1); -} - -void _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.UnsignedLong arg1, ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, int, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureRegistry = - , int, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_registerClosure( - void Function(ffi.Pointer, int, ffi.Pointer) fn) { - final id = - ++_ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); - -class ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.UnsignedLong arg1, ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool.fromFunction( - AVFAudio lib, void Function(NSObject, int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_registerClosure( - (ffi.Pointer arg0, int arg1, - ffi.Pointer arg2) => - fn(NSObject._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool.listener( - AVFAudio lib, void Function(NSObject, int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_registerClosure( - (ffi.Pointer arg0, int arg1, - ffi.Pointer arg2) => - fn(NSObject._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); - static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSObject arg0, int arg1, ffi.Pointer arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.UnsignedLong arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - int, ffi.Pointer)>()(_id, arg0._id, arg1, arg2); -} - -bool _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.UnsignedLong arg1, ffi.Pointer arg2)>>() - .asFunction< - bool Function(ffi.Pointer, int, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureRegistry = - , int, ffi.Pointer)>{}; -int _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_registerClosure( - bool Function(ffi.Pointer, int, ffi.Pointer) fn) { - final id = - ++_ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureRegistryIndex; - _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -bool _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1, - ffi.Pointer arg2) => - _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); - -class ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool extends _ObjCBlockBase { - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.UnsignedLong arg1, ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline, - false) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool.fromFunction( - AVFAudio lib, bool Function(NSObject, int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureTrampoline, false) - .cast(), - _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_registerClosure( - (ffi.Pointer arg0, int arg1, - ffi.Pointer arg2) => - fn(NSObject._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - bool call(NSObject arg0, int arg1, ffi.Pointer arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.UnsignedLong arg1, - ffi.Pointer arg2)>>() - .asFunction< - bool Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - int, ffi.Pointer)>()(_id, arg0._id, arg1, arg2); -} - -int _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - int Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureRegistryIndex = - 0; -ffi.Pointer - _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_registerClosure( - int Function(ffi.Pointer, ffi.Pointer) fn) { - final id = - ++_ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureRegistryIndex; - _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -int _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject - extends _ObjCBlockBase { - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Int32 Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_fnPtrTrampoline, - 0) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject.fromFunction( - AVFAudio lib, int Function(NSObject, NSObject) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Int32 Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureTrampoline, 0) - .cast(), - _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - NSObject._(arg0, lib, retain: true, release: true), - NSObject._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - int call(NSObject arg0, NSObject arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - int Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1._id); -} - -abstract class NSComparisonResult { - static const int NSOrderedAscending = -1; - static const int NSOrderedSame = 0; - static const int NSOrderedDescending = 1; -} - -abstract class NSSortOptions { - static const int NSSortConcurrent = 1; - static const int NSSortStable = 16; -} - -abstract class NSBinarySearchingOptions { - static const int NSBinarySearchingFirstEqual = 256; - static const int NSBinarySearchingLastEqual = 512; - static const int NSBinarySearchingInsertionIndex = 1024; -} - -abstract class NSOrderedCollectionDifferenceCalculationOptions { - static const int NSOrderedCollectionDifferenceCalculationOmitInsertedObjects = - 1; - static const int NSOrderedCollectionDifferenceCalculationOmitRemovedObjects = - 2; - static const int NSOrderedCollectionDifferenceCalculationInferMoves = 4; -} - -bool _ObjCBlock_bool_ObjCObject_ObjCObject_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_bool_ObjCObject_ObjCObject_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_bool_ObjCObject_ObjCObject_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_bool_ObjCObject_ObjCObject_registerClosure( - bool Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_bool_ObjCObject_ObjCObject_closureRegistryIndex; - _ObjCBlock_bool_ObjCObject_ObjCObject_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -bool _ObjCBlock_bool_ObjCObject_ObjCObject_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_bool_ObjCObject_ObjCObject_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_bool_ObjCObject_ObjCObject extends _ObjCBlockBase { - ObjCBlock_bool_ObjCObject_ObjCObject._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_bool_ObjCObject_ObjCObject castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_bool_ObjCObject_ObjCObject._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_ObjCObject.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi - .NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib - ._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_ObjCObject_fnPtrTrampoline, - false) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_ObjCObject.fromFunction( - AVFAudio lib, bool Function(NSObject, NSObject) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_ObjCObject_closureTrampoline, - false) - .cast(), - _ObjCBlock_bool_ObjCObject_ObjCObject_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => - fn(NSObject._(arg0, lib, retain: true, release: true), NSObject._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - bool call(NSObject arg0, NSObject arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1._id); -} - -abstract class NSKeyValueObservingOptions { - static const int NSKeyValueObservingOptionNew = 1; - static const int NSKeyValueObservingOptionOld = 2; - static const int NSKeyValueObservingOptionInitial = 4; - static const int NSKeyValueObservingOptionPrior = 8; -} - -class NSPredicate extends NSObject { - NSPredicate._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSPredicate] that points to the same underlying object as [other]. - static NSPredicate castFrom(T other) { - return NSPredicate._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSPredicate] that wraps the given raw object pointer. - static NSPredicate castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSPredicate._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSPredicate]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSPredicate1); - } - - static NSPredicate predicateWithFormat_argumentArray_( - AVFAudio _lib, NSString predicateFormat, NSArray? arguments) { - final _ret = _lib._objc_msgSend_142( - _lib._class_NSPredicate1, - _lib._sel_predicateWithFormat_argumentArray_1, - predicateFormat._id, - arguments?._id ?? ffi.nullptr); - return NSPredicate._(_ret, _lib, retain: true, release: true); - } - - static NSPredicate predicateWithFormat_( - AVFAudio _lib, NSString predicateFormat) { - final _ret = _lib._objc_msgSend_143(_lib._class_NSPredicate1, - _lib._sel_predicateWithFormat_1, predicateFormat._id); - return NSPredicate._(_ret, _lib, retain: true, release: true); - } - - static NSPredicate predicateWithFormat_arguments_(AVFAudio _lib, - NSString predicateFormat, ffi.Pointer<__va_list_tag> argList) { - final _ret = _lib._objc_msgSend_144( - _lib._class_NSPredicate1, - _lib._sel_predicateWithFormat_arguments_1, - predicateFormat._id, - argList); - return NSPredicate._(_ret, _lib, retain: true, release: true); - } - - static NSPredicate? predicateFromMetadataQueryString_( - AVFAudio _lib, NSString queryString) { - final _ret = _lib._objc_msgSend_145(_lib._class_NSPredicate1, - _lib._sel_predicateFromMetadataQueryString_1, queryString._id); - return _ret.address == 0 - ? null - : NSPredicate._(_ret, _lib, retain: true, release: true); - } - - static NSPredicate predicateWithValue_(AVFAudio _lib, bool value) { - final _ret = _lib._objc_msgSend_146( - _lib._class_NSPredicate1, _lib._sel_predicateWithValue_1, value); - return NSPredicate._(_ret, _lib, retain: true, release: true); - } - - static NSPredicate predicateWithBlock_( - AVFAudio _lib, ObjCBlock_bool_ObjCObject_NSDictionary block) { - final _ret = _lib._objc_msgSend_216( - _lib._class_NSPredicate1, _lib._sel_predicateWithBlock_1, block._id); - return NSPredicate._(_ret, _lib, retain: true, release: true); - } - - NSString get predicateFormat { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_predicateFormat1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSPredicate predicateWithSubstitutionVariables_(NSDictionary variables) { - final _ret = _lib._objc_msgSend_159( - _id, _lib._sel_predicateWithSubstitutionVariables_1, variables._id); - return NSPredicate._(_ret, _lib, retain: true, release: true); - } - - bool evaluateWithObject_(NSObject? object) { - return _lib._objc_msgSend_217( - _id, _lib._sel_evaluateWithObject_1, object?._id ?? ffi.nullptr); - } - - bool evaluateWithObject_substitutionVariables_( - NSObject? object, NSDictionary? bindings) { - return _lib._objc_msgSend_218( - _id, - _lib._sel_evaluateWithObject_substitutionVariables_1, - object?._id ?? ffi.nullptr, - bindings?._id ?? ffi.nullptr); - } - - void allowEvaluation() { - _lib._objc_msgSend_1(_id, _lib._sel_allowEvaluation1); - } - - @override - NSPredicate init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSPredicate._(_ret, _lib, retain: true, release: true); - } - - static NSPredicate new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSPredicate1, _lib._sel_new1); - return NSPredicate._(_ret, _lib, retain: false, release: true); - } - - static NSPredicate allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSPredicate1, _lib._sel_allocWithZone_1, zone); - return NSPredicate._(_ret, _lib, retain: false, release: true); - } - - static NSPredicate alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPredicate1, _lib._sel_alloc1); - return NSPredicate._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSPredicate1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSPredicate1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPredicate1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPredicate1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSPredicate1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSPredicate1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSPredicate1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSPredicate1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPredicate1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -final class __va_list_tag extends ffi.Struct { - @ffi.UnsignedInt() - external int gp_offset; - - @ffi.UnsignedInt() - external int fp_offset; - - external ffi.Pointer overflow_arg_area; - - external ffi.Pointer reg_save_area; -} - -bool _ObjCBlock_bool_ObjCObject_NSDictionary_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_bool_ObjCObject_NSDictionary_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_bool_ObjCObject_NSDictionary_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_bool_ObjCObject_NSDictionary_registerClosure( - bool Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_bool_ObjCObject_NSDictionary_closureRegistryIndex; - _ObjCBlock_bool_ObjCObject_NSDictionary_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -bool _ObjCBlock_bool_ObjCObject_NSDictionary_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_bool_ObjCObject_NSDictionary_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_bool_ObjCObject_NSDictionary extends _ObjCBlockBase { - ObjCBlock_bool_ObjCObject_NSDictionary._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_bool_ObjCObject_NSDictionary castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_bool_ObjCObject_NSDictionary._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_NSDictionary.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_NSDictionary_fnPtrTrampoline, - false) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_NSDictionary.fromFunction( - AVFAudio lib, bool Function(NSObject?, NSDictionary?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= - ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_NSDictionary_closureTrampoline, false) - .cast(), - _ObjCBlock_bool_ObjCObject_NSDictionary_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSObject._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSDictionary._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - bool call(NSObject? arg0, NSDictionary? arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1?._id ?? ffi.nullptr); -} - -class NSDictionary extends NSObject { - NSDictionary._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSDictionary] that points to the same underlying object as [other]. - static NSDictionary castFrom(T other) { - return NSDictionary._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSDictionary] that wraps the given raw object pointer. - static NSDictionary castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSDictionary._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSDictionary]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSDictionary1); - } - - int get count { - return _lib._objc_msgSend_10(_id, _lib._sel_count1); - } - - NSObject? objectForKey_(NSObject aKey) { - final _ret = _lib._objc_msgSend_16(_id, _lib._sel_objectForKey_1, aKey._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSEnumerator keyEnumerator() { - final _ret = _lib._objc_msgSend_77(_id, _lib._sel_keyEnumerator1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - @override - NSDictionary init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary initWithObjects_forKeys_count_( - ffi.Pointer> objects, - ffi.Pointer> keys, - int cnt) { - final _ret = _lib._objc_msgSend_147( - _id, _lib._sel_initWithObjects_forKeys_count_1, objects, keys, cnt); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSArray get allKeys { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_allKeys1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray allKeysForObject_(NSObject anObject) { - final _ret = - _lib._objc_msgSend_67(_id, _lib._sel_allKeysForObject_1, anObject._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray get allValues { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_allValues1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get descriptionInStringsFileFormat { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_descriptionInStringsFileFormat1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_(NSObject? locale) { - final _ret = _lib._objc_msgSend_70( - _id, _lib._sel_descriptionWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_indent_(NSObject? locale, int level) { - final _ret = _lib._objc_msgSend_71( - _id, - _lib._sel_descriptionWithLocale_indent_1, - locale?._id ?? ffi.nullptr, - level); - return NSString._(_ret, _lib, retain: true, release: true); - } - - bool isEqualToDictionary_(NSDictionary otherDictionary) { - return _lib._objc_msgSend_148( - _id, _lib._sel_isEqualToDictionary_1, otherDictionary._id); - } - - NSEnumerator objectEnumerator() { - final _ret = _lib._objc_msgSend_77(_id, _lib._sel_objectEnumerator1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - NSArray objectsForKeys_notFoundMarker_(NSArray keys, NSObject marker) { - final _ret = _lib._objc_msgSend_149( - _id, _lib._sel_objectsForKeys_notFoundMarker_1, keys._id, marker._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - bool writeToURL_error_( - NSURL url, ffi.Pointer> error) { - return _lib._objc_msgSend_89( - _id, _lib._sel_writeToURL_error_1, url._id, error); - } - - NSArray keysSortedByValueUsingSelector_(ffi.Pointer comparator) { - final _ret = _lib._objc_msgSend_80( - _id, _lib._sel_keysSortedByValueUsingSelector_1, comparator); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - void getObjects_andKeys_count_(ffi.Pointer> objects, - ffi.Pointer> keys, int count) { - _lib._objc_msgSend_150( - _id, _lib._sel_getObjects_andKeys_count_1, objects, keys, count); - } - - NSObject? objectForKeyedSubscript_(NSObject key) { - final _ret = _lib._objc_msgSend_16( - _id, _lib._sel_objectForKeyedSubscript_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void enumerateKeysAndObjectsUsingBlock_( - ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool block) { - _lib._objc_msgSend_151( - _id, _lib._sel_enumerateKeysAndObjectsUsingBlock_1, block._id); - } - - void enumerateKeysAndObjectsWithOptions_usingBlock_( - int opts, ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool block) { - _lib._objc_msgSend_152( - _id, - _lib._sel_enumerateKeysAndObjectsWithOptions_usingBlock_1, - opts, - block._id); - } - - NSArray keysSortedByValueUsingComparator_( - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - final _ret = _lib._objc_msgSend_121( - _id, _lib._sel_keysSortedByValueUsingComparator_1, cmptr._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray keysSortedByValueWithOptions_usingComparator_( - int opts, ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - final _ret = _lib._objc_msgSend_122( - _id, - _lib._sel_keysSortedByValueWithOptions_usingComparator_1, - opts, - cmptr._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject keysOfEntriesPassingTest_( - ObjCBlock_bool_ObjCObject_ObjCObject_bool predicate) { - final _ret = _lib._objc_msgSend_153( - _id, _lib._sel_keysOfEntriesPassingTest_1, predicate._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject keysOfEntriesWithOptions_passingTest_( - int opts, ObjCBlock_bool_ObjCObject_ObjCObject_bool predicate) { - final _ret = _lib._objc_msgSend_154(_id, - _lib._sel_keysOfEntriesWithOptions_passingTest_1, opts, predicate._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void getObjects_andKeys_(ffi.Pointer> objects, - ffi.Pointer> keys) { - _lib._objc_msgSend_155(_id, _lib._sel_getObjects_andKeys_1, objects, keys); - } - - static NSDictionary? dictionaryWithContentsOfFile_( - AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_156(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary? dictionaryWithContentsOfURL_(AVFAudio _lib, NSURL url) { - final _ret = _lib._objc_msgSend_157(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? initWithContentsOfFile_(NSString path) { - final _ret = _lib._objc_msgSend_156( - _id, _lib._sel_initWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_157(_id, _lib._sel_initWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - bool writeToFile_atomically_(NSString path, bool useAuxiliaryFile) { - return _lib._objc_msgSend_26( - _id, _lib._sel_writeToFile_atomically_1, path._id, useAuxiliaryFile); - } - - bool writeToURL_atomically_(NSURL url, bool atomically) { - return _lib._objc_msgSend_134( - _id, _lib._sel_writeToURL_atomically_1, url._id, atomically); - } - - static NSDictionary dictionary(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSDictionary1, _lib._sel_dictionary1); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary dictionaryWithObject_forKey_( - AVFAudio _lib, NSObject object, NSObject key) { - final _ret = _lib._objc_msgSend_158(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithObject_forKey_1, object._id, key._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary dictionaryWithObjects_forKeys_count_( - AVFAudio _lib, - ffi.Pointer> objects, - ffi.Pointer> keys, - int cnt) { - final _ret = _lib._objc_msgSend_147(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithObjects_forKeys_count_1, objects, keys, cnt); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary dictionaryWithObjectsAndKeys_( - AVFAudio _lib, NSObject firstObject) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithObjectsAndKeys_1, firstObject._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary dictionaryWithDictionary_( - AVFAudio _lib, NSDictionary dict) { - final _ret = _lib._objc_msgSend_159(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithDictionary_1, dict._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary dictionaryWithObjects_forKeys_( - AVFAudio _lib, NSArray objects, NSArray keys) { - final _ret = _lib._objc_msgSend_160(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithObjects_forKeys_1, objects._id, keys._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary initWithObjectsAndKeys_(NSObject firstObject) { - final _ret = _lib._objc_msgSend_124( - _id, _lib._sel_initWithObjectsAndKeys_1, firstObject._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary initWithDictionary_(NSDictionary otherDictionary) { - final _ret = _lib._objc_msgSend_159( - _id, _lib._sel_initWithDictionary_1, otherDictionary._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary initWithDictionary_copyItems_( - NSDictionary otherDictionary, bool flag) { - final _ret = _lib._objc_msgSend_161(_id, - _lib._sel_initWithDictionary_copyItems_1, otherDictionary._id, flag); - return NSDictionary._(_ret, _lib, retain: false, release: true); - } - - NSDictionary initWithObjects_forKeys_(NSArray objects, NSArray keys) { - final _ret = _lib._objc_msgSend_160( - _id, _lib._sel_initWithObjects_forKeys_1, objects._id, keys._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? initWithContentsOfURL_error_( - NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_162( - _id, _lib._sel_initWithContentsOfURL_error_1, url._id, error); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary? dictionaryWithContentsOfURL_error_( - AVFAudio _lib, NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_162(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithContentsOfURL_error_1, url._id, error); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSObject sharedKeySetForKeys_(AVFAudio _lib, NSArray keys) { - final _ret = _lib._objc_msgSend_125( - _lib._class_NSDictionary1, _lib._sel_sharedKeySetForKeys_1, keys._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - int countByEnumeratingWithState_objects_count_( - ffi.Pointer state, - ffi.Pointer> buffer, - int len) { - return _lib._objc_msgSend_163( - _id, - _lib._sel_countByEnumeratingWithState_objects_count_1, - state, - buffer, - len); - } - - int fileSize() { - return _lib._objc_msgSend_164(_id, _lib._sel_fileSize1); - } - - NSDate? fileModificationDate() { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_fileModificationDate1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } - - NSString? fileType() { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_fileType1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - int filePosixPermissions() { - return _lib._objc_msgSend_10(_id, _lib._sel_filePosixPermissions1); - } - - NSString? fileOwnerAccountName() { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_fileOwnerAccountName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? fileGroupOwnerAccountName() { - final _ret = - _lib._objc_msgSend_44(_id, _lib._sel_fileGroupOwnerAccountName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - int fileSystemNumber() { - return _lib._objc_msgSend_83(_id, _lib._sel_fileSystemNumber1); - } - - int fileSystemFileNumber() { - return _lib._objc_msgSend_10(_id, _lib._sel_fileSystemFileNumber1); - } - - bool fileExtensionHidden() { - return _lib._objc_msgSend_12(_id, _lib._sel_fileExtensionHidden1); - } - - int fileHFSCreatorCode() { - return _lib._objc_msgSend_214(_id, _lib._sel_fileHFSCreatorCode1); - } - - int fileHFSTypeCode() { - return _lib._objc_msgSend_214(_id, _lib._sel_fileHFSTypeCode1); - } - - bool fileIsImmutable() { - return _lib._objc_msgSend_12(_id, _lib._sel_fileIsImmutable1); - } - - bool fileIsAppendOnly() { - return _lib._objc_msgSend_12(_id, _lib._sel_fileIsAppendOnly1); - } - - NSDate? fileCreationDate() { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_fileCreationDate1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } - - NSNumber? fileOwnerAccountID() { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_fileOwnerAccountID1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber? fileGroupOwnerAccountID() { - final _ret = - _lib._objc_msgSend_215(_id, _lib._sel_fileGroupOwnerAccountID1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - @override - NSObject? valueForKey_(NSString key) { - final _ret = _lib._objc_msgSend_38(_id, _lib._sel_valueForKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSDictionary1, _lib._sel_new1); - return NSDictionary._(_ret, _lib, retain: false, release: true); - } - - static NSDictionary allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSDictionary1, _lib._sel_allocWithZone_1, zone); - return NSDictionary._(_ret, _lib, retain: false, release: true); - } - - static NSDictionary alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSDictionary1, _lib._sel_alloc1); - return NSDictionary._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSDictionary1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSDictionary1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSDictionary1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSDictionary1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSDictionary1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSDictionary1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSDictionary1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSDictionary1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSDictionary1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -void _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureRegistry = , ffi.Pointer, - ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_registerClosure( - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer) - fn) { - final id = - ++_ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); - -class ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool.fromFunction( - AVFAudio lib, void Function(NSObject, NSObject, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) => - fn(NSObject._(arg0, lib, retain: true, release: true), NSObject._(arg1, lib, retain: true, release: true), arg2))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool.listener( - AVFAudio lib, void Function(NSObject, NSObject, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2) => fn( - NSObject._(arg0, lib, retain: true, release: true), - NSObject._(arg1, lib, retain: true, release: true), - arg2))), - lib); - static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSObject arg0, NSObject arg1, ffi.Pointer arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1._id, arg2); -} - -bool _ObjCBlock_bool_ObjCObject_ObjCObject_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureRegistry = , ffi.Pointer, - ffi.Pointer)>{}; -int _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_bool_ObjCObject_ObjCObject_bool_registerClosure( - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer) - fn) { - final id = ++_ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureRegistryIndex; - _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -bool _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); - -class ObjCBlock_bool_ObjCObject_ObjCObject_bool extends _ObjCBlockBase { - ObjCBlock_bool_ObjCObject_ObjCObject_bool._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_bool_ObjCObject_ObjCObject_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_bool_ObjCObject_ObjCObject_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_ObjCObject_bool.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_ObjCObject_bool_fnPtrTrampoline, - false) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_ObjCObject_bool.fromFunction( - AVFAudio lib, bool Function(NSObject, NSObject, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureTrampoline, false) - .cast(), - _ObjCBlock_bool_ObjCObject_ObjCObject_bool_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) => - fn(NSObject._(arg0, lib, retain: true, release: true), NSObject._(arg1, lib, retain: true, release: true), arg2))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - bool call(NSObject arg0, NSObject arg1, ffi.Pointer arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1._id, arg2); -} - -final class NSFastEnumerationState extends ffi.Struct { - @ffi.UnsignedLong() - external int state; - - external ffi.Pointer> itemsPtr; - - external ffi.Pointer mutationsPtr; - - @ffi.Array.multi([5]) - external ffi.Array extra; -} - -class NSDate extends NSObject { - NSDate._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSDate] that points to the same underlying object as [other]. - static NSDate castFrom(T other) { - return NSDate._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSDate] that wraps the given raw object pointer. - static NSDate castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSDate._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSDate]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSDate1); - } - - double get timeIntervalSinceReferenceDate { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret( - _id, _lib._sel_timeIntervalSinceReferenceDate1) - : _lib._objc_msgSend_165( - _id, _lib._sel_timeIntervalSinceReferenceDate1); - } - - @override - NSDate init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - NSDate initWithTimeIntervalSinceReferenceDate_(double ti) { - final _ret = _lib._objc_msgSend_166( - _id, _lib._sel_initWithTimeIntervalSinceReferenceDate_1, ti); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - NSDate? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } - - double timeIntervalSinceDate_(NSDate anotherDate) { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_167_fpret( - _id, _lib._sel_timeIntervalSinceDate_1, anotherDate._id) - : _lib._objc_msgSend_167( - _id, _lib._sel_timeIntervalSinceDate_1, anotherDate._id); - } - - double get timeIntervalSinceNow { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_timeIntervalSinceNow1) - : _lib._objc_msgSend_165(_id, _lib._sel_timeIntervalSinceNow1); - } - - double get timeIntervalSince1970 { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_timeIntervalSince19701) - : _lib._objc_msgSend_165(_id, _lib._sel_timeIntervalSince19701); - } - - NSObject addTimeInterval_(double seconds) { - final _ret = - _lib._objc_msgSend_166(_id, _lib._sel_addTimeInterval_1, seconds); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSDate dateByAddingTimeInterval_(double ti) { - final _ret = - _lib._objc_msgSend_166(_id, _lib._sel_dateByAddingTimeInterval_1, ti); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - NSDate earlierDate_(NSDate anotherDate) { - final _ret = - _lib._objc_msgSend_168(_id, _lib._sel_earlierDate_1, anotherDate._id); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - NSDate laterDate_(NSDate anotherDate) { - final _ret = - _lib._objc_msgSend_168(_id, _lib._sel_laterDate_1, anotherDate._id); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - int compare_(NSDate other) { - return _lib._objc_msgSend_169(_id, _lib._sel_compare_1, other._id); - } - - bool isEqualToDate_(NSDate otherDate) { - return _lib._objc_msgSend_170( - _id, _lib._sel_isEqualToDate_1, otherDate._id); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_(NSObject? locale) { - final _ret = _lib._objc_msgSend_70( - _id, _lib._sel_descriptionWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSDate date(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSDate1, _lib._sel_date1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate dateWithTimeIntervalSinceNow_(AVFAudio _lib, double secs) { - final _ret = _lib._objc_msgSend_166( - _lib._class_NSDate1, _lib._sel_dateWithTimeIntervalSinceNow_1, secs); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate dateWithTimeIntervalSinceReferenceDate_( - AVFAudio _lib, double ti) { - final _ret = _lib._objc_msgSend_166(_lib._class_NSDate1, - _lib._sel_dateWithTimeIntervalSinceReferenceDate_1, ti); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate dateWithTimeIntervalSince1970_(AVFAudio _lib, double secs) { - final _ret = _lib._objc_msgSend_166( - _lib._class_NSDate1, _lib._sel_dateWithTimeIntervalSince1970_1, secs); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate dateWithTimeInterval_sinceDate_( - AVFAudio _lib, double secsToBeAdded, NSDate date) { - final _ret = _lib._objc_msgSend_171(_lib._class_NSDate1, - _lib._sel_dateWithTimeInterval_sinceDate_1, secsToBeAdded, date._id); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate getDistantFuture(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_172(_lib._class_NSDate1, _lib._sel_distantFuture1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate getDistantPast(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_172(_lib._class_NSDate1, _lib._sel_distantPast1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate getNow(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_172(_lib._class_NSDate1, _lib._sel_now1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - NSDate initWithTimeIntervalSinceNow_(double secs) { - final _ret = _lib._objc_msgSend_166( - _id, _lib._sel_initWithTimeIntervalSinceNow_1, secs); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - NSDate initWithTimeIntervalSince1970_(double secs) { - final _ret = _lib._objc_msgSend_166( - _id, _lib._sel_initWithTimeIntervalSince1970_1, secs); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - NSDate initWithTimeInterval_sinceDate_(double secsToBeAdded, NSDate date) { - final _ret = _lib._objc_msgSend_171(_id, - _lib._sel_initWithTimeInterval_sinceDate_1, secsToBeAdded, date._id); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSObject? dateWithNaturalLanguageString_locale_( - AVFAudio _lib, NSString string, NSObject? locale) { - final _ret = _lib._objc_msgSend_173( - _lib._class_NSDate1, - _lib._sel_dateWithNaturalLanguageString_locale_1, - string._id, - locale?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? dateWithNaturalLanguageString_( - AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSDate1, - _lib._sel_dateWithNaturalLanguageString_1, string._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject dateWithString_(AVFAudio _lib, NSString aString) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSDate1, _lib._sel_dateWithString_1, aString._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSCalendarDate dateWithCalendarFormat_timeZone_( - NSString? format, NSTimeZone? aTimeZone) { - final _ret = _lib._objc_msgSend_212( - _id, - _lib._sel_dateWithCalendarFormat_timeZone_1, - format?._id ?? ffi.nullptr, - aTimeZone?._id ?? ffi.nullptr); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - NSString? descriptionWithCalendarFormat_timeZone_locale_( - NSString? format, NSTimeZone? aTimeZone, NSObject? locale) { - final _ret = _lib._objc_msgSend_213( - _id, - _lib._sel_descriptionWithCalendarFormat_timeZone_locale_1, - format?._id ?? ffi.nullptr, - aTimeZone?._id ?? ffi.nullptr, - locale?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithString_(NSString description) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_initWithString_1, description._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSDate new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSDate1, _lib._sel_new1); - return NSDate._(_ret, _lib, retain: false, release: true); - } - - static NSDate allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSDate1, _lib._sel_allocWithZone_1, zone); - return NSDate._(_ret, _lib, retain: false, release: true); - } - - static NSDate alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSDate1, _lib._sel_alloc1); - return NSDate._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSDate1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSDate1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSDate1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSDate1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSDate1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSDate1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSDate1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSDate1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSDate1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSCalendarDate extends NSDate { - NSCalendarDate._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSCalendarDate] that points to the same underlying object as [other]. - static NSCalendarDate castFrom(T other) { - return NSCalendarDate._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSCalendarDate] that wraps the given raw object pointer. - static NSCalendarDate castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSCalendarDate._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSCalendarDate]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSCalendarDate1); - } - - static NSObject calendarDate(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSCalendarDate1, _lib._sel_calendarDate1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? dateWithString_calendarFormat_locale_( - AVFAudio _lib, NSString description, NSString format, NSObject? locale) { - final _ret = _lib._objc_msgSend_174( - _lib._class_NSCalendarDate1, - _lib._sel_dateWithString_calendarFormat_locale_1, - description._id, - format._id, - locale?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? dateWithString_calendarFormat_( - AVFAudio _lib, NSString description, NSString format) { - final _ret = _lib._objc_msgSend_175(_lib._class_NSCalendarDate1, - _lib._sel_dateWithString_calendarFormat_1, description._id, format._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject dateWithYear_month_day_hour_minute_second_timeZone_( - AVFAudio _lib, - int year, - int month, - int day, - int hour, - int minute, - int second, - NSTimeZone? aTimeZone) { - final _ret = _lib._objc_msgSend_206( - _lib._class_NSCalendarDate1, - _lib._sel_dateWithYear_month_day_hour_minute_second_timeZone_1, - year, - month, - day, - hour, - minute, - second, - aTimeZone?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSCalendarDate dateByAddingYears_months_days_hours_minutes_seconds_( - int year, int month, int day, int hour, int minute, int second) { - final _ret = _lib._objc_msgSend_207( - _id, - _lib._sel_dateByAddingYears_months_days_hours_minutes_seconds_1, - year, - month, - day, - hour, - minute, - second); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - int dayOfCommonEra() { - return _lib._objc_msgSend_83(_id, _lib._sel_dayOfCommonEra1); - } - - int dayOfMonth() { - return _lib._objc_msgSend_83(_id, _lib._sel_dayOfMonth1); - } - - int dayOfWeek() { - return _lib._objc_msgSend_83(_id, _lib._sel_dayOfWeek1); - } - - int dayOfYear() { - return _lib._objc_msgSend_83(_id, _lib._sel_dayOfYear1); - } - - int hourOfDay() { - return _lib._objc_msgSend_83(_id, _lib._sel_hourOfDay1); - } - - int minuteOfHour() { - return _lib._objc_msgSend_83(_id, _lib._sel_minuteOfHour1); - } - - int monthOfYear() { - return _lib._objc_msgSend_83(_id, _lib._sel_monthOfYear1); - } - - int secondOfMinute() { - return _lib._objc_msgSend_83(_id, _lib._sel_secondOfMinute1); - } - - int yearOfCommonEra() { - return _lib._objc_msgSend_83(_id, _lib._sel_yearOfCommonEra1); - } - - NSString calendarFormat() { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_calendarFormat1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithCalendarFormat_locale_( - NSString format, NSObject? locale) { - final _ret = _lib._objc_msgSend_208( - _id, - _lib._sel_descriptionWithCalendarFormat_locale_1, - format._id, - locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithCalendarFormat_(NSString format) { - final _ret = _lib._objc_msgSend_69( - _id, _lib._sel_descriptionWithCalendarFormat_1, format._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - @override - NSString descriptionWithLocale_(NSObject? locale) { - final _ret = _lib._objc_msgSend_70( - _id, _lib._sel_descriptionWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSTimeZone timeZone() { - final _ret = _lib._objc_msgSend_179(_id, _lib._sel_timeZone1); - return NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithString_calendarFormat_locale_( - NSString description, NSString format, NSObject? locale) { - final _ret = _lib._objc_msgSend_174( - _id, - _lib._sel_initWithString_calendarFormat_locale_1, - description._id, - format._id, - locale?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithString_calendarFormat_( - NSString description, NSString format) { - final _ret = _lib._objc_msgSend_175(_id, - _lib._sel_initWithString_calendarFormat_1, description._id, format._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - NSObject? initWithString_(NSString description) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_initWithString_1, description._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject initWithYear_month_day_hour_minute_second_timeZone_( - int year, - int month, - int day, - int hour, - int minute, - int second, - NSTimeZone? aTimeZone) { - final _ret = _lib._objc_msgSend_206( - _id, - _lib._sel_initWithYear_month_day_hour_minute_second_timeZone_1, - year, - month, - day, - hour, - minute, - second, - aTimeZone?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void setCalendarFormat_(NSString? format) { - _lib._objc_msgSend_209( - _id, _lib._sel_setCalendarFormat_1, format?._id ?? ffi.nullptr); - } - - void setTimeZone_(NSTimeZone? aTimeZone) { - _lib._objc_msgSend_210( - _id, _lib._sel_setTimeZone_1, aTimeZone?._id ?? ffi.nullptr); - } - - void years_months_days_hours_minutes_seconds_sinceDate_( - ffi.Pointer yp, - ffi.Pointer mop, - ffi.Pointer dp, - ffi.Pointer hp, - ffi.Pointer mip, - ffi.Pointer sp, - NSCalendarDate date) { - _lib._objc_msgSend_211( - _id, - _lib._sel_years_months_days_hours_minutes_seconds_sinceDate_1, - yp, - mop, - dp, - hp, - mip, - sp, - date._id); - } - - static NSDate getDistantFuture(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_172( - _lib._class_NSCalendarDate1, _lib._sel_distantFuture1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate getDistantPast(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_172( - _lib._class_NSCalendarDate1, _lib._sel_distantPast1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - @override - NSCalendarDate init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - @override - NSCalendarDate initWithTimeIntervalSinceReferenceDate_(double ti) { - final _ret = _lib._objc_msgSend_166( - _id, _lib._sel_initWithTimeIntervalSinceReferenceDate_1, ti); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - @override - NSCalendarDate? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - @override - NSCalendarDate dateByAddingTimeInterval_(double ti) { - final _ret = - _lib._objc_msgSend_166(_id, _lib._sel_dateByAddingTimeInterval_1, ti); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - static NSCalendarDate date(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSCalendarDate1, _lib._sel_date1); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - static NSCalendarDate dateWithTimeIntervalSinceNow_( - AVFAudio _lib, double secs) { - final _ret = _lib._objc_msgSend_166(_lib._class_NSCalendarDate1, - _lib._sel_dateWithTimeIntervalSinceNow_1, secs); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - static NSCalendarDate dateWithTimeIntervalSinceReferenceDate_( - AVFAudio _lib, double ti) { - final _ret = _lib._objc_msgSend_166(_lib._class_NSCalendarDate1, - _lib._sel_dateWithTimeIntervalSinceReferenceDate_1, ti); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - static NSCalendarDate dateWithTimeIntervalSince1970_( - AVFAudio _lib, double secs) { - final _ret = _lib._objc_msgSend_166(_lib._class_NSCalendarDate1, - _lib._sel_dateWithTimeIntervalSince1970_1, secs); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - static NSCalendarDate dateWithTimeInterval_sinceDate_( - AVFAudio _lib, double secsToBeAdded, NSDate date) { - final _ret = _lib._objc_msgSend_171(_lib._class_NSCalendarDate1, - _lib._sel_dateWithTimeInterval_sinceDate_1, secsToBeAdded, date._id); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate getNow(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_172(_lib._class_NSCalendarDate1, _lib._sel_now1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - @override - NSCalendarDate initWithTimeIntervalSinceNow_(double secs) { - final _ret = _lib._objc_msgSend_166( - _id, _lib._sel_initWithTimeIntervalSinceNow_1, secs); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - @override - NSCalendarDate initWithTimeIntervalSince1970_(double secs) { - final _ret = _lib._objc_msgSend_166( - _id, _lib._sel_initWithTimeIntervalSince1970_1, secs); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - @override - NSCalendarDate initWithTimeInterval_sinceDate_( - double secsToBeAdded, NSDate date) { - final _ret = _lib._objc_msgSend_171(_id, - _lib._sel_initWithTimeInterval_sinceDate_1, secsToBeAdded, date._id); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - static NSObject? dateWithNaturalLanguageString_locale_( - AVFAudio _lib, NSString string, NSObject? locale) { - final _ret = _lib._objc_msgSend_173( - _lib._class_NSCalendarDate1, - _lib._sel_dateWithNaturalLanguageString_locale_1, - string._id, - locale?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? dateWithNaturalLanguageString_( - AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSCalendarDate1, - _lib._sel_dateWithNaturalLanguageString_1, string._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject dateWithString_(AVFAudio _lib, NSString aString) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSCalendarDate1, _lib._sel_dateWithString_1, aString._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSCalendarDate new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSCalendarDate1, _lib._sel_new1); - return NSCalendarDate._(_ret, _lib, retain: false, release: true); - } - - static NSCalendarDate allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSCalendarDate1, _lib._sel_allocWithZone_1, zone); - return NSCalendarDate._(_ret, _lib, retain: false, release: true); - } - - static NSCalendarDate alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSCalendarDate1, _lib._sel_alloc1); - return NSCalendarDate._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSCalendarDate1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSCalendarDate1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSCalendarDate1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSCalendarDate1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSCalendarDate1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSCalendarDate1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSCalendarDate1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSCalendarDate1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSCalendarDate1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSTimeZone extends NSObject { - NSTimeZone._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSTimeZone] that points to the same underlying object as [other]. - static NSTimeZone castFrom(T other) { - return NSTimeZone._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSTimeZone] that wraps the given raw object pointer. - static NSTimeZone castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSTimeZone._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSTimeZone]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSTimeZone1); - } - - NSString get name { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_name1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSData get data { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_data1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - int secondsFromGMTForDate_(NSDate aDate) { - return _lib._objc_msgSend_176( - _id, _lib._sel_secondsFromGMTForDate_1, aDate._id); - } - - NSString? abbreviationForDate_(NSDate aDate) { - final _ret = - _lib._objc_msgSend_177(_id, _lib._sel_abbreviationForDate_1, aDate._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - bool isDaylightSavingTimeForDate_(NSDate aDate) { - return _lib._objc_msgSend_170( - _id, _lib._sel_isDaylightSavingTimeForDate_1, aDate._id); - } - - double daylightSavingTimeOffsetForDate_(NSDate aDate) { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_167_fpret( - _id, _lib._sel_daylightSavingTimeOffsetForDate_1, aDate._id) - : _lib._objc_msgSend_167( - _id, _lib._sel_daylightSavingTimeOffsetForDate_1, aDate._id); - } - - NSDate? nextDaylightSavingTimeTransitionAfterDate_(NSDate aDate) { - final _ret = _lib._objc_msgSend_178( - _id, _lib._sel_nextDaylightSavingTimeTransitionAfterDate_1, aDate._id); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSTimeZone getSystemTimeZone(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_179( - _lib._class_NSTimeZone1, _lib._sel_systemTimeZone1); - return NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - static void resetSystemTimeZone(AVFAudio _lib) { - _lib._objc_msgSend_1( - _lib._class_NSTimeZone1, _lib._sel_resetSystemTimeZone1); - } - - static NSTimeZone getDefaultTimeZone(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_179( - _lib._class_NSTimeZone1, _lib._sel_defaultTimeZone1); - return NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - static void setDefaultTimeZone(AVFAudio _lib, NSTimeZone value) { - return _lib._objc_msgSend_180( - _lib._class_NSTimeZone1, _lib._sel_setDefaultTimeZone_1, value._id); - } - - static NSTimeZone getLocalTimeZone(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_179( - _lib._class_NSTimeZone1, _lib._sel_localTimeZone1); - return NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - static NSArray getKnownTimeZoneNames(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSTimeZone1, _lib._sel_knownTimeZoneNames1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary getAbbreviationDictionary(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_181( - _lib._class_NSTimeZone1, _lib._sel_abbreviationDictionary1); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static void setAbbreviationDictionary(AVFAudio _lib, NSDictionary value) { - return _lib._objc_msgSend_182(_lib._class_NSTimeZone1, - _lib._sel_setAbbreviationDictionary_1, value._id); - } - - static NSString getTimeZoneDataVersion(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_21( - _lib._class_NSTimeZone1, _lib._sel_timeZoneDataVersion1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - int get secondsFromGMT { - return _lib._objc_msgSend_83(_id, _lib._sel_secondsFromGMT1); - } - - NSString? get abbreviation { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_abbreviation1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - bool get daylightSavingTime { - return _lib._objc_msgSend_12(_id, _lib._sel_isDaylightSavingTime1); - } - - double get daylightSavingTimeOffset { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_daylightSavingTimeOffset1) - : _lib._objc_msgSend_165(_id, _lib._sel_daylightSavingTimeOffset1); - } - - NSDate? get nextDaylightSavingTimeTransition { - final _ret = _lib._objc_msgSend_183( - _id, _lib._sel_nextDaylightSavingTimeTransition1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - bool isEqualToTimeZone_(NSTimeZone aTimeZone) { - return _lib._objc_msgSend_184( - _id, _lib._sel_isEqualToTimeZone_1, aTimeZone._id); - } - - NSString? localizedName_locale_(int style, NSLocale? locale) { - final _ret = _lib._objc_msgSend_203(_id, _lib._sel_localizedName_locale_1, - style, locale?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSTimeZone? timeZoneWithName_(AVFAudio _lib, NSString tzName) { - final _ret = _lib._objc_msgSend_38( - _lib._class_NSTimeZone1, _lib._sel_timeZoneWithName_1, tzName._id); - return _ret.address == 0 - ? null - : NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - static NSTimeZone? timeZoneWithName_data_( - AVFAudio _lib, NSString tzName, NSData? aData) { - final _ret = _lib._objc_msgSend_204( - _lib._class_NSTimeZone1, - _lib._sel_timeZoneWithName_data_1, - tzName._id, - aData?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - NSTimeZone? initWithName_(NSString tzName) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_initWithName_1, tzName._id); - return _ret.address == 0 - ? null - : NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - NSTimeZone? initWithName_data_(NSString tzName, NSData? aData) { - final _ret = _lib._objc_msgSend_204(_id, _lib._sel_initWithName_data_1, - tzName._id, aData?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - static NSTimeZone timeZoneForSecondsFromGMT_(AVFAudio _lib, int seconds) { - final _ret = _lib._objc_msgSend_205(_lib._class_NSTimeZone1, - _lib._sel_timeZoneForSecondsFromGMT_1, seconds); - return NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - static NSTimeZone? timeZoneWithAbbreviation_( - AVFAudio _lib, NSString abbreviation) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSTimeZone1, - _lib._sel_timeZoneWithAbbreviation_1, abbreviation._id); - return _ret.address == 0 - ? null - : NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - @override - NSTimeZone init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - static NSTimeZone new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSTimeZone1, _lib._sel_new1); - return NSTimeZone._(_ret, _lib, retain: false, release: true); - } - - static NSTimeZone allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSTimeZone1, _lib._sel_allocWithZone_1, zone); - return NSTimeZone._(_ret, _lib, retain: false, release: true); - } - - static NSTimeZone alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSTimeZone1, _lib._sel_alloc1); - return NSTimeZone._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSTimeZone1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSTimeZone1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSTimeZone1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSTimeZone1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSTimeZone1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSTimeZone1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSTimeZone1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSTimeZone1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSTimeZone1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSTimeZoneNameStyle { - static const int NSTimeZoneNameStyleStandard = 0; - static const int NSTimeZoneNameStyleShortStandard = 1; - static const int NSTimeZoneNameStyleDaylightSaving = 2; - static const int NSTimeZoneNameStyleShortDaylightSaving = 3; - static const int NSTimeZoneNameStyleGeneric = 4; - static const int NSTimeZoneNameStyleShortGeneric = 5; -} - -class NSLocale extends NSObject { - NSLocale._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSLocale] that points to the same underlying object as [other]. - static NSLocale castFrom(T other) { - return NSLocale._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSLocale] that wraps the given raw object pointer. - static NSLocale castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSLocale._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSLocale]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSLocale1); - } - - NSObject? objectForKey_(NSString key) { - final _ret = _lib._objc_msgSend_38(_id, _lib._sel_objectForKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSString? displayNameForKey_value_(NSString key, NSObject value) { - final _ret = _lib._objc_msgSend_185( - _id, _lib._sel_displayNameForKey_value_1, key._id, value._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSLocale initWithLocaleIdentifier_(NSString string) { - final _ret = _lib._objc_msgSend_31( - _id, _lib._sel_initWithLocaleIdentifier_1, string._id); - return NSLocale._(_ret, _lib, retain: true, release: true); - } - - NSLocale? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSLocale._(_ret, _lib, retain: true, release: true); - } - - NSString get localeIdentifier { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_localeIdentifier1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString localizedStringForLocaleIdentifier_(NSString localeIdentifier) { - final _ret = _lib._objc_msgSend_69(_id, - _lib._sel_localizedStringForLocaleIdentifier_1, localeIdentifier._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get languageCode { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_languageCode1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForLanguageCode_(NSString languageCode) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_localizedStringForLanguageCode_1, languageCode._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get languageIdentifier { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_languageIdentifier1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get countryCode { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_countryCode1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForCountryCode_(NSString countryCode) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_localizedStringForCountryCode_1, countryCode._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get regionCode { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_regionCode1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get scriptCode { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_scriptCode1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForScriptCode_(NSString scriptCode) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_localizedStringForScriptCode_1, scriptCode._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get variantCode { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_variantCode1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForVariantCode_(NSString variantCode) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_localizedStringForVariantCode_1, variantCode._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSCharacterSet get exemplarCharacterSet { - final _ret = _lib._objc_msgSend_187(_id, _lib._sel_exemplarCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - NSString get calendarIdentifier { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_calendarIdentifier1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForCalendarIdentifier_(NSString calendarIdentifier) { - final _ret = _lib._objc_msgSend_186( - _id, - _lib._sel_localizedStringForCalendarIdentifier_1, - calendarIdentifier._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get collationIdentifier { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_collationIdentifier1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForCollationIdentifier_( - NSString collationIdentifier) { - final _ret = _lib._objc_msgSend_186( - _id, - _lib._sel_localizedStringForCollationIdentifier_1, - collationIdentifier._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - bool get usesMetricSystem { - return _lib._objc_msgSend_12(_id, _lib._sel_usesMetricSystem1); - } - - NSString get decimalSeparator { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_decimalSeparator1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get groupingSeparator { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_groupingSeparator1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get currencySymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_currencySymbol1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get currencyCode { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_currencyCode1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForCurrencyCode_(NSString currencyCode) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_localizedStringForCurrencyCode_1, currencyCode._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get collatorIdentifier { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_collatorIdentifier1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForCollatorIdentifier_(NSString collatorIdentifier) { - final _ret = _lib._objc_msgSend_186( - _id, - _lib._sel_localizedStringForCollatorIdentifier_1, - collatorIdentifier._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get quotationBeginDelimiter { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_quotationBeginDelimiter1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get quotationEndDelimiter { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_quotationEndDelimiter1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get alternateQuotationBeginDelimiter { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_alternateQuotationBeginDelimiter1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get alternateQuotationEndDelimiter { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_alternateQuotationEndDelimiter1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSLocale getAutoupdatingCurrentLocale(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_197( - _lib._class_NSLocale1, _lib._sel_autoupdatingCurrentLocale1); - return NSLocale._(_ret, _lib, retain: true, release: true); - } - - static NSLocale getCurrentLocale(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_197(_lib._class_NSLocale1, _lib._sel_currentLocale1); - return NSLocale._(_ret, _lib, retain: true, release: true); - } - - static NSLocale getSystemLocale(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_197(_lib._class_NSLocale1, _lib._sel_systemLocale1); - return NSLocale._(_ret, _lib, retain: true, release: true); - } - - static NSLocale localeWithLocaleIdentifier_(AVFAudio _lib, NSString ident) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSLocale1, - _lib._sel_localeWithLocaleIdentifier_1, ident._id); - return NSLocale._(_ret, _lib, retain: true, release: true); - } - - @override - NSLocale init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSLocale._(_ret, _lib, retain: true, release: true); - } - - static NSArray getAvailableLocaleIdentifiers(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSLocale1, _lib._sel_availableLocaleIdentifiers1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray getISOLanguageCodes(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSLocale1, _lib._sel_ISOLanguageCodes1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray getISOCountryCodes(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSLocale1, _lib._sel_ISOCountryCodes1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray getISOCurrencyCodes(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSLocale1, _lib._sel_ISOCurrencyCodes1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray getCommonISOCurrencyCodes(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSLocale1, _lib._sel_commonISOCurrencyCodes1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray getPreferredLanguages(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSLocale1, _lib._sel_preferredLanguages1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary componentsFromLocaleIdentifier_( - AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_198(_lib._class_NSLocale1, - _lib._sel_componentsFromLocaleIdentifier_1, string._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSString localeIdentifierFromComponents_( - AVFAudio _lib, NSDictionary dict) { - final _ret = _lib._objc_msgSend_199(_lib._class_NSLocale1, - _lib._sel_localeIdentifierFromComponents_1, dict._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString canonicalLocaleIdentifierFromString_( - AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_69(_lib._class_NSLocale1, - _lib._sel_canonicalLocaleIdentifierFromString_1, string._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString canonicalLanguageIdentifierFromString_( - AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_69(_lib._class_NSLocale1, - _lib._sel_canonicalLanguageIdentifierFromString_1, string._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? localeIdentifierFromWindowsLocaleCode_( - AVFAudio _lib, int lcid) { - final _ret = _lib._objc_msgSend_200(_lib._class_NSLocale1, - _lib._sel_localeIdentifierFromWindowsLocaleCode_1, lcid); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static int windowsLocaleCodeFromLocaleIdentifier_( - AVFAudio _lib, NSString localeIdentifier) { - return _lib._objc_msgSend_201( - _lib._class_NSLocale1, - _lib._sel_windowsLocaleCodeFromLocaleIdentifier_1, - localeIdentifier._id); - } - - static int characterDirectionForLanguage_( - AVFAudio _lib, NSString isoLangCode) { - return _lib._objc_msgSend_202(_lib._class_NSLocale1, - _lib._sel_characterDirectionForLanguage_1, isoLangCode._id); - } - - static int lineDirectionForLanguage_(AVFAudio _lib, NSString isoLangCode) { - return _lib._objc_msgSend_202(_lib._class_NSLocale1, - _lib._sel_lineDirectionForLanguage_1, isoLangCode._id); - } - - static NSLocale new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSLocale1, _lib._sel_new1); - return NSLocale._(_ret, _lib, retain: false, release: true); - } - - static NSLocale allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSLocale1, _lib._sel_allocWithZone_1, zone); - return NSLocale._(_ret, _lib, retain: false, release: true); - } - - static NSLocale alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSLocale1, _lib._sel_alloc1); - return NSLocale._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSLocale1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSLocale1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSLocale1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSLocale1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSLocale1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSLocale1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSLocale1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSLocale1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSLocale1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSCharacterSet extends NSObject { - NSCharacterSet._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSCharacterSet] that points to the same underlying object as [other]. - static NSCharacterSet castFrom(T other) { - return NSCharacterSet._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSCharacterSet] that wraps the given raw object pointer. - static NSCharacterSet castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSCharacterSet._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSCharacterSet]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSCharacterSet1); - } - - static NSCharacterSet getControlCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_controlCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getWhitespaceCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_whitespaceCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getWhitespaceAndNewlineCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187(_lib._class_NSCharacterSet1, - _lib._sel_whitespaceAndNewlineCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getDecimalDigitCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_decimalDigitCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getLetterCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_letterCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getLowercaseLetterCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_lowercaseLetterCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getUppercaseLetterCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_uppercaseLetterCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getNonBaseCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_nonBaseCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getAlphanumericCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_alphanumericCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getDecomposableCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_decomposableCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getIllegalCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_illegalCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getPunctuationCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_punctuationCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getCapitalizedLetterCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_capitalizedLetterCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getSymbolCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_symbolCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getNewlineCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_newlineCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: false, release: true); - } - - static NSCharacterSet characterSetWithRange_(AVFAudio _lib, _NSRange aRange) { - final _ret = _lib._objc_msgSend_188( - _lib._class_NSCharacterSet1, _lib._sel_characterSetWithRange_1, aRange); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet characterSetWithCharactersInString_( - AVFAudio _lib, NSString aString) { - final _ret = _lib._objc_msgSend_189(_lib._class_NSCharacterSet1, - _lib._sel_characterSetWithCharactersInString_1, aString._id); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet characterSetWithBitmapRepresentation_( - AVFAudio _lib, NSData data) { - final _ret = _lib._objc_msgSend_190(_lib._class_NSCharacterSet1, - _lib._sel_characterSetWithBitmapRepresentation_1, data._id); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet? characterSetWithContentsOfFile_( - AVFAudio _lib, NSString fName) { - final _ret = _lib._objc_msgSend_191(_lib._class_NSCharacterSet1, - _lib._sel_characterSetWithContentsOfFile_1, fName._id); - return _ret.address == 0 - ? null - : NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - NSCharacterSet initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_192(_id, _lib._sel_initWithCoder_1, coder._id); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - bool characterIsMember_(int aCharacter) { - return _lib._objc_msgSend_193( - _id, _lib._sel_characterIsMember_1, aCharacter); - } - - NSData get bitmapRepresentation { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_bitmapRepresentation1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - NSCharacterSet get invertedSet { - final _ret = _lib._objc_msgSend_187(_id, _lib._sel_invertedSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - bool longCharacterIsMember_(int theLongChar) { - return _lib._objc_msgSend_194( - _id, _lib._sel_longCharacterIsMember_1, theLongChar); - } - - bool isSupersetOfSet_(NSCharacterSet theOtherSet) { - return _lib._objc_msgSend_195( - _id, _lib._sel_isSupersetOfSet_1, theOtherSet._id); - } - - bool hasMemberInPlane_(int thePlane) { - return _lib._objc_msgSend_196(_id, _lib._sel_hasMemberInPlane_1, thePlane); - } - - static NSCharacterSet getURLUserAllowedCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_URLUserAllowedCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getURLPasswordAllowedCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_URLPasswordAllowedCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getURLHostAllowedCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_URLHostAllowedCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getURLPathAllowedCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_URLPathAllowedCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getURLQueryAllowedCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_URLQueryAllowedCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getURLFragmentAllowedCharacterSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_URLFragmentAllowedCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSCharacterSet init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSCharacterSet1, _lib._sel_new1); - return NSCharacterSet._(_ret, _lib, retain: false, release: true); - } - - static NSCharacterSet allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSCharacterSet1, _lib._sel_allocWithZone_1, zone); - return NSCharacterSet._(_ret, _lib, retain: false, release: true); - } - - static NSCharacterSet alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSCharacterSet1, _lib._sel_alloc1); - return NSCharacterSet._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSCharacterSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSCharacterSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSCharacterSet1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSCharacterSet1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSCharacterSet1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSCharacterSet1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSCharacterSet1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSCharacterSet1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSCharacterSet1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSLocaleLanguageDirection { - static const int NSLocaleLanguageDirectionUnknown = 0; - static const int NSLocaleLanguageDirectionLeftToRight = 1; - static const int NSLocaleLanguageDirectionRightToLeft = 2; - static const int NSLocaleLanguageDirectionTopToBottom = 3; - static const int NSLocaleLanguageDirectionBottomToTop = 4; -} - -abstract class NSURLBookmarkCreationOptions { - static const int NSURLBookmarkCreationPreferFileIDResolution = 256; - static const int NSURLBookmarkCreationMinimalBookmark = 512; - static const int NSURLBookmarkCreationSuitableForBookmarkFile = 1024; - static const int NSURLBookmarkCreationWithSecurityScope = 2048; - static const int NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess = 4096; - static const int NSURLBookmarkCreationWithoutImplicitSecurityScope = - 536870912; -} - -abstract class NSURLBookmarkResolutionOptions { - static const int NSURLBookmarkResolutionWithoutUI = 256; - static const int NSURLBookmarkResolutionWithoutMounting = 512; - static const int NSURLBookmarkResolutionWithSecurityScope = 1024; - static const int NSURLBookmarkResolutionWithoutImplicitStartAccessing = 32768; -} - -class NSURLHandle extends NSObject { - NSURLHandle._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSURLHandle] that points to the same underlying object as [other]. - static NSURLHandle castFrom(T other) { - return NSURLHandle._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSURLHandle] that wraps the given raw object pointer. - static NSURLHandle castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLHandle._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSURLHandle]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLHandle1); - } - - static void registerURLHandleClass_( - AVFAudio _lib, NSObject anURLHandleSubclass) { - _lib._objc_msgSend_15(_lib._class_NSURLHandle1, - _lib._sel_registerURLHandleClass_1, anURLHandleSubclass._id); - } - - static NSObject URLHandleClassForURL_(AVFAudio _lib, NSURL anURL) { - final _ret = _lib._objc_msgSend_262( - _lib._class_NSURLHandle1, _lib._sel_URLHandleClassForURL_1, anURL._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - int status() { - return _lib._objc_msgSend_263(_id, _lib._sel_status1); - } - - NSString failureReason() { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_failureReason1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - void addClient_(NSObject client) { - _lib._objc_msgSend_15(_id, _lib._sel_addClient_1, client._id); - } - - void removeClient_(NSObject client) { - _lib._objc_msgSend_15(_id, _lib._sel_removeClient_1, client._id); - } - - void loadInBackground() { - _lib._objc_msgSend_1(_id, _lib._sel_loadInBackground1); - } - - void cancelLoadInBackground() { - _lib._objc_msgSend_1(_id, _lib._sel_cancelLoadInBackground1); - } - - NSData resourceData() { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_resourceData1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - NSData availableResourceData() { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_availableResourceData1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - int expectedResourceDataSize() { - return _lib._objc_msgSend_238(_id, _lib._sel_expectedResourceDataSize1); - } - - void flushCachedData() { - _lib._objc_msgSend_1(_id, _lib._sel_flushCachedData1); - } - - void backgroundLoadDidFailWithReason_(NSString reason) { - _lib._objc_msgSend_247( - _id, _lib._sel_backgroundLoadDidFailWithReason_1, reason._id); - } - - void didLoadBytes_loadComplete_(NSData newBytes, bool yorn) { - _lib._objc_msgSend_264( - _id, _lib._sel_didLoadBytes_loadComplete_1, newBytes._id, yorn); - } - - static bool canInitWithURL_(AVFAudio _lib, NSURL anURL) { - return _lib._objc_msgSend_265( - _lib._class_NSURLHandle1, _lib._sel_canInitWithURL_1, anURL._id); - } - - static NSURLHandle cachedHandleForURL_(AVFAudio _lib, NSURL anURL) { - final _ret = _lib._objc_msgSend_266( - _lib._class_NSURLHandle1, _lib._sel_cachedHandleForURL_1, anURL._id); - return NSURLHandle._(_ret, _lib, retain: true, release: true); - } - - NSObject initWithURL_cached_(NSURL anURL, bool willCache) { - final _ret = _lib._objc_msgSend_267( - _id, _lib._sel_initWithURL_cached_1, anURL._id, willCache); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject propertyForKey_(NSString propertyKey) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_propertyForKey_1, propertyKey._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject propertyForKeyIfAvailable_(NSString propertyKey) { - final _ret = _lib._objc_msgSend_31( - _id, _lib._sel_propertyForKeyIfAvailable_1, propertyKey._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - bool writeProperty_forKey_(NSObject propertyValue, NSString propertyKey) { - return _lib._objc_msgSend_261(_id, _lib._sel_writeProperty_forKey_1, - propertyValue._id, propertyKey._id); - } - - bool writeData_(NSData data) { - return _lib._objc_msgSend_24(_id, _lib._sel_writeData_1, data._id); - } - - NSData loadInForeground() { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_loadInForeground1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - void beginLoadInBackground() { - _lib._objc_msgSend_1(_id, _lib._sel_beginLoadInBackground1); - } - - void endLoadInBackground() { - _lib._objc_msgSend_1(_id, _lib._sel_endLoadInBackground1); - } - - @override - NSURLHandle init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLHandle._(_ret, _lib, retain: true, release: true); - } - - static NSURLHandle new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLHandle1, _lib._sel_new1); - return NSURLHandle._(_ret, _lib, retain: false, release: true); - } - - static NSURLHandle allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLHandle1, _lib._sel_allocWithZone_1, zone); - return NSURLHandle._(_ret, _lib, retain: false, release: true); - } - - static NSURLHandle alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLHandle1, _lib._sel_alloc1); - return NSURLHandle._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLHandle1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLHandle1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLHandle1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLHandle1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLHandle1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLHandle1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLHandle1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURLHandle1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLHandle1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSURLHandleStatus { - static const int NSURLHandleNotLoaded = 0; - static const int NSURLHandleLoadSucceeded = 1; - static const int NSURLHandleLoadInProgress = 2; - static const int NSURLHandleLoadFailed = 3; -} - -abstract class NSDataWritingOptions { - static const int NSDataWritingAtomic = 1; - static const int NSDataWritingWithoutOverwriting = 2; - static const int NSDataWritingFileProtectionNone = 268435456; - static const int NSDataWritingFileProtectionComplete = 536870912; - static const int NSDataWritingFileProtectionCompleteUnlessOpen = 805306368; - static const int - NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication = - 1073741824; - static const int NSDataWritingFileProtectionCompleteWhenUserInactive = - 1342177280; - static const int NSDataWritingFileProtectionMask = 4026531840; - static const int NSAtomicWrite = 1; -} - -abstract class NSDataSearchOptions { - static const int NSDataSearchBackwards = 1; - static const int NSDataSearchAnchored = 2; -} - -void _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, _NSRange, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureRegistry = , _NSRange, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_registerClosure( - void Function(ffi.Pointer, _NSRange, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); - -class ObjCBlock_ffiVoid_ffiVoid_NSRange_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ffiVoid_NSRange_bool._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ffiVoid_NSRange_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ffiVoid_NSRange_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiVoid_NSRange_bool.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiVoid_NSRange_bool.fromFunction(AVFAudio lib, - void Function(ffi.Pointer, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2) => - fn(arg0, arg1, arg2))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ffiVoid_NSRange_bool.listener(AVFAudio lib, - void Function(ffi.Pointer, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2) => - fn(arg0, arg1, arg2))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - _NSRange, ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - _NSRange, ffi.Pointer)>()(_id, arg0, arg1, arg2); -} - -abstract class NSDataReadingOptions { - static const int NSDataReadingMappedIfSafe = 1; - static const int NSDataReadingUncached = 2; - static const int NSDataReadingMappedAlways = 8; - static const int NSDataReadingMapped = 1; - static const int NSMappedRead = 1; - static const int NSUncachedRead = 2; -} - -void _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, int arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, ffi.UnsignedLong arg1)>>() - .asFunction, int)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistry = - , int)>{}; -int _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_registerClosure( - void Function(ffi.Pointer, int) fn) { - final id = ++_ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistryIndex; - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, int arg1) => - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, ffi.UnsignedLong arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer, ffi.UnsignedLong)>( - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong.fromFunction( - AVFAudio lib, void Function(ffi.Pointer, int) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer, ffi.UnsignedLong)>( - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_registerClosure( - (ffi.Pointer arg0, int arg1) => fn(arg0, arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong.listener( - AVFAudio lib, void Function(ffi.Pointer, int) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong)>.listener( - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_registerClosure( - (ffi.Pointer arg0, int arg1) => fn(arg0, arg1))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.UnsignedLong)>? _dartFuncListenerTrampoline; - - void call(ffi.Pointer arg0, int arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, ffi.UnsignedLong arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - int)>()(_id, arg0, arg1); -} - -abstract class NSDataBase64DecodingOptions { - static const int NSDataBase64DecodingIgnoreUnknownCharacters = 1; -} - -abstract class NSDataBase64EncodingOptions { - static const int NSDataBase64Encoding64CharacterLineLength = 1; - static const int NSDataBase64Encoding76CharacterLineLength = 2; - static const int NSDataBase64EncodingEndLineWithCarriageReturn = 16; - static const int NSDataBase64EncodingEndLineWithLineFeed = 32; -} - -abstract class NSDataCompressionAlgorithm { - static const int NSDataCompressionAlgorithmLZFSE = 0; - static const int NSDataCompressionAlgorithmLZ4 = 1; - static const int NSDataCompressionAlgorithmLZMA = 2; - static const int NSDataCompressionAlgorithmZlib = 3; -} - -abstract class NSDecodingFailurePolicy { - static const int NSDecodingFailurePolicyRaiseException = 0; - static const int NSDecodingFailurePolicySetErrorAndReturn = 1; -} - -abstract class NSStringCompareOptions { - static const int NSCaseInsensitiveSearch = 1; - static const int NSLiteralSearch = 2; - static const int NSBackwardsSearch = 4; - static const int NSAnchoredSearch = 8; - static const int NSNumericSearch = 64; - static const int NSDiacriticInsensitiveSearch = 128; - static const int NSWidthInsensitiveSearch = 256; - static const int NSForcedOrderingSearch = 512; - static const int NSRegularExpressionSearch = 1024; -} - -abstract class NSStringEnumerationOptions { - static const int NSStringEnumerationByLines = 0; - static const int NSStringEnumerationByParagraphs = 1; - static const int NSStringEnumerationByComposedCharacterSequences = 2; - static const int NSStringEnumerationByWords = 3; - static const int NSStringEnumerationBySentences = 4; - static const int NSStringEnumerationByCaretPositions = 5; - static const int NSStringEnumerationByDeletionClusters = 6; - static const int NSStringEnumerationReverse = 256; - static const int NSStringEnumerationSubstringNotRequired = 512; - static const int NSStringEnumerationLocalized = 1024; -} - -void _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - _NSRange arg2, - ffi.Pointer arg3) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - _NSRange arg2, ffi.Pointer arg3)>>() - .asFunction< - void Function(ffi.Pointer, _NSRange, _NSRange, - ffi.Pointer)>()(arg0, arg1, arg2, arg3); -final _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistry = , _NSRange, _NSRange, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_registerClosure( - void Function(ffi.Pointer, _NSRange, _NSRange, - ffi.Pointer) - fn) { - final id = - ++_ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - _NSRange arg2, - ffi.Pointer arg3) => - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2, arg3); - -class ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - _NSRange arg2, ffi.Pointer arg3)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool.fromFunction(AVFAudio lib, - void Function(NSString?, _NSRange, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, _NSRange arg2, - ffi.Pointer arg3) => - fn(arg0.address == 0 ? null : NSString._(arg0, lib, retain: true, release: true), arg1, arg2, arg3))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool.listener(AVFAudio lib, - void Function(NSString?, _NSRange, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - _NSRange, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, _NSRange arg2, - ffi.Pointer arg3) => - fn(arg0.address == 0 ? null : NSString._(arg0, lib, retain: true, release: true), arg1, arg2, arg3))), - lib); - static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - _NSRange, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSString? arg0, _NSRange arg1, _NSRange arg2, - ffi.Pointer arg3) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - _NSRange arg2, - ffi.Pointer arg3)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - _NSRange, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1, arg2, arg3); -} - -void _ObjCBlock_ffiVoid_NSString_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function( - ffi.Pointer, ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_NSString_bool_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSString_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSString_bool_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSString_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSString_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSString_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_NSString_bool_closureRegistry[block.ref.target.address]!( - arg0, arg1); - -class ObjCBlock_ffiVoid_NSString_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSString_bool._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSString_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSString_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSString_bool.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib - ._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSString_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSString_bool.fromFunction( - AVFAudio lib, void Function(NSString, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSString_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSString_bool_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - NSString._(arg0, lib, retain: true, release: true), - arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSString_bool.listener( - AVFAudio lib, void Function(NSString, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSString_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSString_bool_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => - fn(NSString._(arg0, lib, retain: true, release: true), - arg1))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSString arg0, ffi.Pointer arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1); -} - -abstract class NSStringEncodingConversionOptions { - static const int NSStringEncodingConversionAllowLossy = 1; - static const int NSStringEncodingConversionExternalRepresentation = 2; -} - -void _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.UnsignedLong arg1)>>() - .asFunction, int)>()( - arg0, arg1); -final _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistry = - , int)>{}; -int _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistryIndex = - 0; -ffi.Pointer - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_registerClosure( - void Function(ffi.Pointer, int) fn) { - final id = - ++_ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistryIndex; - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1) => - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong - extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.UnsignedLong arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong)>( - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong.fromFunction( - AVFAudio lib, void Function(ffi.Pointer, int) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong)>( - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_registerClosure( - (ffi.Pointer arg0, int arg1) => - fn(arg0, arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong.listener( - AVFAudio lib, void Function(ffi.Pointer, int) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong)>.listener( - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_registerClosure( - (ffi.Pointer arg0, int arg1) => - fn(arg0, arg1))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.UnsignedLong)>? _dartFuncListenerTrampoline; - - void call(ffi.Pointer arg0, int arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.UnsignedLong arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - int)>()(_id, arg0, arg1); -} - -abstract class NSLinguisticTaggerOptions { - static const int NSLinguisticTaggerOmitWords = 1; - static const int NSLinguisticTaggerOmitPunctuation = 2; - static const int NSLinguisticTaggerOmitWhitespace = 4; - static const int NSLinguisticTaggerOmitOther = 8; - static const int NSLinguisticTaggerJoinNames = 16; -} - -class NSOrthography extends NSObject { - NSOrthography._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSOrthography] that points to the same underlying object as [other]. - static NSOrthography castFrom(T other) { - return NSOrthography._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSOrthography] that wraps the given raw object pointer. - static NSOrthography castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSOrthography._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSOrthography]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSOrthography1); - } - - NSString get dominantScript { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_dominantScript1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSDictionary get languageMap { - final _ret = _lib._objc_msgSend_181(_id, _lib._sel_languageMap1); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSOrthography initWithDominantScript_languageMap_( - NSString script, NSDictionary map) { - final _ret = _lib._objc_msgSend_400(_id, - _lib._sel_initWithDominantScript_languageMap_1, script._id, map._id); - return NSOrthography._(_ret, _lib, retain: true, release: true); - } - - NSOrthography? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSOrthography._(_ret, _lib, retain: true, release: true); - } - - NSArray? languagesForScript_(NSString script) { - final _ret = - _lib._objc_msgSend_132(_id, _lib._sel_languagesForScript_1, script._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString? dominantLanguageForScript_(NSString script) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_dominantLanguageForScript_1, script._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get dominantLanguage { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_dominantLanguage1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray get allScripts { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_allScripts1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray get allLanguages { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_allLanguages1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSOrthography defaultOrthographyForLanguage_( - AVFAudio _lib, NSString language) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSOrthography1, - _lib._sel_defaultOrthographyForLanguage_1, language._id); - return NSOrthography._(_ret, _lib, retain: true, release: true); - } - - static NSOrthography orthographyWithDominantScript_languageMap_( - AVFAudio _lib, NSString script, NSDictionary map) { - final _ret = _lib._objc_msgSend_400( - _lib._class_NSOrthography1, - _lib._sel_orthographyWithDominantScript_languageMap_1, - script._id, - map._id); - return NSOrthography._(_ret, _lib, retain: true, release: true); - } - - @override - NSOrthography init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSOrthography._(_ret, _lib, retain: true, release: true); - } - - static NSOrthography new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOrthography1, _lib._sel_new1); - return NSOrthography._(_ret, _lib, retain: false, release: true); - } - - static NSOrthography allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSOrthography1, _lib._sel_allocWithZone_1, zone); - return NSOrthography._(_ret, _lib, retain: false, release: true); - } - - static NSOrthography alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOrthography1, _lib._sel_alloc1); - return NSOrthography._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSOrthography1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSOrthography1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOrthography1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOrthography1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSOrthography1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSOrthography1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSOrthography1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSOrthography1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSOrthography1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -void _ObjCBlock_ffiVoid_ObjCObject_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function( - ffi.Pointer, ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_ObjCObject_bool_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ObjCObject_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_ObjCObject_bool_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_ObjCObject_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_ObjCObject_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_ObjCObject_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_ObjCObject_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_ffiVoid_ObjCObject_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ObjCObject_bool._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ObjCObject_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ObjCObject_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_bool.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib - ._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_bool.fromFunction( - AVFAudio lib, void Function(NSObject, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_bool_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - NSObject._(arg0, lib, retain: true, release: true), - arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ObjCObject_bool.listener( - AVFAudio lib, void Function(NSObject, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ObjCObject_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_bool_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => - fn(NSObject._(arg0, lib, retain: true, release: true), - arg1))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSObject arg0, ffi.Pointer arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1); -} - -bool _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - bool Function( - ffi.Pointer, ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_bool_ObjCObject_bool_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_bool_ObjCObject_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_bool_ObjCObject_bool_registerClosure( - bool Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_bool_ObjCObject_bool_closureRegistryIndex; - _ObjCBlock_bool_ObjCObject_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -bool _ObjCBlock_bool_ObjCObject_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_bool_ObjCObject_bool_closureRegistry[block.ref.target.address]!( - arg0, arg1); - -class ObjCBlock_bool_ObjCObject_bool extends _ObjCBlockBase { - ObjCBlock_bool_ObjCObject_bool._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_bool_ObjCObject_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_bool_ObjCObject_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_bool.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline, false) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_bool.fromFunction( - AVFAudio lib, bool Function(NSObject, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_bool_closureTrampoline, false) - .cast(), - _ObjCBlock_bool_ObjCObject_bool_registerClosure( - (ffi.Pointer arg0, - ffi.Pointer arg1) => - fn(NSObject._(arg0, lib, retain: true, release: true), arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - bool call(NSObject arg0, ffi.Pointer arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1); -} - -class NSFileManager extends NSObject { - NSFileManager._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSFileManager] that points to the same underlying object as [other]. - static NSFileManager castFrom(T other) { - return NSFileManager._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSFileManager] that wraps the given raw object pointer. - static NSFileManager castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSFileManager._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSFileManager]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSFileManager1); - } - - static NSFileManager getDefaultManager(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_431( - _lib._class_NSFileManager1, _lib._sel_defaultManager1); - return NSFileManager._(_ret, _lib, retain: true, release: true); - } - - NSArray? mountedVolumeURLsIncludingResourceValuesForKeys_options_( - NSArray? propertyKeys, int options) { - final _ret = _lib._objc_msgSend_432( - _id, - _lib._sel_mountedVolumeURLsIncludingResourceValuesForKeys_options_1, - propertyKeys?._id ?? ffi.nullptr, - options); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - void unmountVolumeAtURL_options_completionHandler_( - NSURL url, int mask, ObjCBlock_ffiVoid_NSError completionHandler) { - _lib._objc_msgSend_433( - _id, - _lib._sel_unmountVolumeAtURL_options_completionHandler_1, - url._id, - mask, - completionHandler._id); - } - - NSArray? contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_( - NSURL url, - NSArray? keys, - int mask, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_434( - _id, - _lib._sel_contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_1, - url._id, - keys?._id ?? ffi.nullptr, - mask, - error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray URLsForDirectory_inDomains_(int directory, int domainMask) { - final _ret = _lib._objc_msgSend_435( - _id, _lib._sel_URLsForDirectory_inDomains_1, directory, domainMask); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSURL? URLForDirectory_inDomain_appropriateForURL_create_error_( - int directory, - int domain, - NSURL? url, - bool shouldCreate, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_436( - _id, - _lib._sel_URLForDirectory_inDomain_appropriateForURL_create_error_1, - directory, - domain, - url?._id ?? ffi.nullptr, - shouldCreate, - error); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - bool getRelationship_ofDirectoryAtURL_toItemAtURL_error_( - ffi.Pointer outRelationship, - NSURL directoryURL, - NSURL otherURL, - ffi.Pointer> error) { - return _lib._objc_msgSend_437( - _id, - _lib._sel_getRelationship_ofDirectoryAtURL_toItemAtURL_error_1, - outRelationship, - directoryURL._id, - otherURL._id, - error); - } - - bool getRelationship_ofDirectory_inDomain_toItemAtURL_error_( - ffi.Pointer outRelationship, - int directory, - int domainMask, - NSURL url, - ffi.Pointer> error) { - return _lib._objc_msgSend_438( - _id, - _lib._sel_getRelationship_ofDirectory_inDomain_toItemAtURL_error_1, - outRelationship, - directory, - domainMask, - url._id, - error); - } - - bool createDirectoryAtURL_withIntermediateDirectories_attributes_error_( - NSURL url, - bool createIntermediates, - NSDictionary? attributes, - ffi.Pointer> error) { - return _lib._objc_msgSend_439( - _id, - _lib._sel_createDirectoryAtURL_withIntermediateDirectories_attributes_error_1, - url._id, - createIntermediates, - attributes?._id ?? ffi.nullptr, - error); - } - - bool createSymbolicLinkAtURL_withDestinationURL_error_( - NSURL url, NSURL destURL, ffi.Pointer> error) { - return _lib._objc_msgSend_440( - _id, - _lib._sel_createSymbolicLinkAtURL_withDestinationURL_error_1, - url._id, - destURL._id, - error); - } - - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); - } - - bool setAttributes_ofItemAtPath_error_(NSDictionary attributes, NSString path, - ffi.Pointer> error) { - return _lib._objc_msgSend_441( - _id, - _lib._sel_setAttributes_ofItemAtPath_error_1, - attributes._id, - path._id, - error); - } - - bool createDirectoryAtPath_withIntermediateDirectories_attributes_error_( - NSString path, - bool createIntermediates, - NSDictionary? attributes, - ffi.Pointer> error) { - return _lib._objc_msgSend_442( - _id, - _lib._sel_createDirectoryAtPath_withIntermediateDirectories_attributes_error_1, - path._id, - createIntermediates, - attributes?._id ?? ffi.nullptr, - error); - } - - NSArray? contentsOfDirectoryAtPath_error_( - NSString path, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_443( - _id, _lib._sel_contentsOfDirectoryAtPath_error_1, path._id, error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray? subpathsOfDirectoryAtPath_error_( - NSString path, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_443( - _id, _lib._sel_subpathsOfDirectoryAtPath_error_1, path._id, error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? attributesOfItemAtPath_error_( - NSString path, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_444( - _id, _lib._sel_attributesOfItemAtPath_error_1, path._id, error); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? attributesOfFileSystemForPath_error_( - NSString path, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_444( - _id, _lib._sel_attributesOfFileSystemForPath_error_1, path._id, error); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - bool createSymbolicLinkAtPath_withDestinationPath_error_(NSString path, - NSString destPath, ffi.Pointer> error) { - return _lib._objc_msgSend_445( - _id, - _lib._sel_createSymbolicLinkAtPath_withDestinationPath_error_1, - path._id, - destPath._id, - error); - } - - NSString? destinationOfSymbolicLinkAtPath_error_( - NSString path, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_446(_id, - _lib._sel_destinationOfSymbolicLinkAtPath_error_1, path._id, error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - bool copyItemAtPath_toPath_error_(NSString srcPath, NSString dstPath, - ffi.Pointer> error) { - return _lib._objc_msgSend_445(_id, _lib._sel_copyItemAtPath_toPath_error_1, - srcPath._id, dstPath._id, error); - } - - bool moveItemAtPath_toPath_error_(NSString srcPath, NSString dstPath, - ffi.Pointer> error) { - return _lib._objc_msgSend_445(_id, _lib._sel_moveItemAtPath_toPath_error_1, - srcPath._id, dstPath._id, error); - } - - bool linkItemAtPath_toPath_error_(NSString srcPath, NSString dstPath, - ffi.Pointer> error) { - return _lib._objc_msgSend_445(_id, _lib._sel_linkItemAtPath_toPath_error_1, - srcPath._id, dstPath._id, error); - } - - bool removeItemAtPath_error_( - NSString path, ffi.Pointer> error) { - return _lib._objc_msgSend_447( - _id, _lib._sel_removeItemAtPath_error_1, path._id, error); - } - - bool copyItemAtURL_toURL_error_( - NSURL srcURL, NSURL dstURL, ffi.Pointer> error) { - return _lib._objc_msgSend_440(_id, _lib._sel_copyItemAtURL_toURL_error_1, - srcURL._id, dstURL._id, error); - } - - bool moveItemAtURL_toURL_error_( - NSURL srcURL, NSURL dstURL, ffi.Pointer> error) { - return _lib._objc_msgSend_440(_id, _lib._sel_moveItemAtURL_toURL_error_1, - srcURL._id, dstURL._id, error); - } - - bool linkItemAtURL_toURL_error_( - NSURL srcURL, NSURL dstURL, ffi.Pointer> error) { - return _lib._objc_msgSend_440(_id, _lib._sel_linkItemAtURL_toURL_error_1, - srcURL._id, dstURL._id, error); - } - - bool removeItemAtURL_error_( - NSURL URL, ffi.Pointer> error) { - return _lib._objc_msgSend_89( - _id, _lib._sel_removeItemAtURL_error_1, URL._id, error); - } - - bool trashItemAtURL_resultingItemURL_error_( - NSURL url, - ffi.Pointer> outResultingURL, - ffi.Pointer> error) { - return _lib._objc_msgSend_448( - _id, - _lib._sel_trashItemAtURL_resultingItemURL_error_1, - url._id, - outResultingURL, - error); - } - - NSDictionary? fileAttributesAtPath_traverseLink_(NSString path, bool yorn) { - final _ret = _lib._objc_msgSend_449( - _id, _lib._sel_fileAttributesAtPath_traverseLink_1, path._id, yorn); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - bool changeFileAttributes_atPath_(NSDictionary attributes, NSString path) { - return _lib._objc_msgSend_450( - _id, _lib._sel_changeFileAttributes_atPath_1, attributes._id, path._id); - } - - NSArray? directoryContentsAtPath_(NSString path) { - final _ret = _lib._objc_msgSend_132( - _id, _lib._sel_directoryContentsAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? fileSystemAttributesAtPath_(NSString path) { - final _ret = _lib._objc_msgSend_156( - _id, _lib._sel_fileSystemAttributesAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSString? pathContentOfSymbolicLinkAtPath_(NSString path) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_pathContentOfSymbolicLinkAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - bool createSymbolicLinkAtPath_pathContent_( - NSString path, NSString otherpath) { - return _lib._objc_msgSend_451( - _id, - _lib._sel_createSymbolicLinkAtPath_pathContent_1, - path._id, - otherpath._id); - } - - bool createDirectoryAtPath_attributes_( - NSString path, NSDictionary attributes) { - return _lib._objc_msgSend_452(_id, - _lib._sel_createDirectoryAtPath_attributes_1, path._id, attributes._id); - } - - bool linkPath_toPath_handler_( - NSString src, NSString dest, NSObject? handler) { - return _lib._objc_msgSend_453(_id, _lib._sel_linkPath_toPath_handler_1, - src._id, dest._id, handler?._id ?? ffi.nullptr); - } - - bool copyPath_toPath_handler_( - NSString src, NSString dest, NSObject? handler) { - return _lib._objc_msgSend_453(_id, _lib._sel_copyPath_toPath_handler_1, - src._id, dest._id, handler?._id ?? ffi.nullptr); - } - - bool movePath_toPath_handler_( - NSString src, NSString dest, NSObject? handler) { - return _lib._objc_msgSend_453(_id, _lib._sel_movePath_toPath_handler_1, - src._id, dest._id, handler?._id ?? ffi.nullptr); - } - - bool removeFileAtPath_handler_(NSString path, NSObject? handler) { - return _lib._objc_msgSend_454(_id, _lib._sel_removeFileAtPath_handler_1, - path._id, handler?._id ?? ffi.nullptr); - } - - NSString get currentDirectoryPath { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_currentDirectoryPath1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - bool changeCurrentDirectoryPath_(NSString path) { - return _lib._objc_msgSend_64( - _id, _lib._sel_changeCurrentDirectoryPath_1, path._id); - } - - bool fileExistsAtPath_(NSString path) { - return _lib._objc_msgSend_64(_id, _lib._sel_fileExistsAtPath_1, path._id); - } - - bool fileExistsAtPath_isDirectory_( - NSString path, ffi.Pointer isDirectory) { - return _lib._objc_msgSend_455( - _id, _lib._sel_fileExistsAtPath_isDirectory_1, path._id, isDirectory); - } - - bool isReadableFileAtPath_(NSString path) { - return _lib._objc_msgSend_64( - _id, _lib._sel_isReadableFileAtPath_1, path._id); - } - - bool isWritableFileAtPath_(NSString path) { - return _lib._objc_msgSend_64( - _id, _lib._sel_isWritableFileAtPath_1, path._id); - } - - bool isExecutableFileAtPath_(NSString path) { - return _lib._objc_msgSend_64( - _id, _lib._sel_isExecutableFileAtPath_1, path._id); - } - - bool isDeletableFileAtPath_(NSString path) { - return _lib._objc_msgSend_64( - _id, _lib._sel_isDeletableFileAtPath_1, path._id); - } - - bool contentsEqualAtPath_andPath_(NSString path1, NSString path2) { - return _lib._objc_msgSend_451( - _id, _lib._sel_contentsEqualAtPath_andPath_1, path1._id, path2._id); - } - - NSString displayNameAtPath_(NSString path) { - final _ret = - _lib._objc_msgSend_69(_id, _lib._sel_displayNameAtPath_1, path._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray? componentsToDisplayForPath_(NSString path) { - final _ret = _lib._objc_msgSend_132( - _id, _lib._sel_componentsToDisplayForPath_1, path._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject? enumeratorAtPath_(NSString path) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_enumeratorAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_( - NSURL url, - NSArray? keys, - int mask, - ObjCBlock_bool_NSURL_NSError? handler) { - final _ret = _lib._objc_msgSend_456( - _id, - _lib._sel_enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_1, - url._id, - keys?._id ?? ffi.nullptr, - mask, - handler?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSArray? subpathsAtPath_(NSString path) { - final _ret = - _lib._objc_msgSend_132(_id, _lib._sel_subpathsAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSData? contentsAtPath_(NSString path) { - final _ret = - _lib._objc_msgSend_457(_id, _lib._sel_contentsAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - bool createFileAtPath_contents_attributes_( - NSString path, NSData? data, NSDictionary? attr) { - return _lib._objc_msgSend_458( - _id, - _lib._sel_createFileAtPath_contents_attributes_1, - path._id, - data?._id ?? ffi.nullptr, - attr?._id ?? ffi.nullptr); - } - - ffi.Pointer fileSystemRepresentationWithPath_(NSString path) { - return _lib._objc_msgSend_459( - _id, _lib._sel_fileSystemRepresentationWithPath_1, path._id); - } - - NSString stringWithFileSystemRepresentation_length_( - ffi.Pointer str, int len) { - final _ret = _lib._objc_msgSend_460( - _id, _lib._sel_stringWithFileSystemRepresentation_length_1, str, len); - return NSString._(_ret, _lib, retain: true, release: true); - } - - bool - replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_( - NSURL originalItemURL, - NSURL newItemURL, - NSString? backupItemName, - int options, - ffi.Pointer> resultingURL, - ffi.Pointer> error) { - return _lib._objc_msgSend_461( - _id, - _lib._sel_replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_1, - originalItemURL._id, - newItemURL._id, - backupItemName?._id ?? ffi.nullptr, - options, - resultingURL, - error); - } - - bool setUbiquitous_itemAtURL_destinationURL_error_(bool flag, NSURL url, - NSURL destinationURL, ffi.Pointer> error) { - return _lib._objc_msgSend_462( - _id, - _lib._sel_setUbiquitous_itemAtURL_destinationURL_error_1, - flag, - url._id, - destinationURL._id, - error); - } - - bool isUbiquitousItemAtURL_(NSURL url) { - return _lib._objc_msgSend_265( - _id, _lib._sel_isUbiquitousItemAtURL_1, url._id); - } - - bool startDownloadingUbiquitousItemAtURL_error_( - NSURL url, ffi.Pointer> error) { - return _lib._objc_msgSend_89(_id, - _lib._sel_startDownloadingUbiquitousItemAtURL_error_1, url._id, error); - } - - bool evictUbiquitousItemAtURL_error_( - NSURL url, ffi.Pointer> error) { - return _lib._objc_msgSend_89( - _id, _lib._sel_evictUbiquitousItemAtURL_error_1, url._id, error); - } - - NSURL? URLForUbiquityContainerIdentifier_(NSString? containerIdentifier) { - final _ret = _lib._objc_msgSend_463( - _id, - _lib._sel_URLForUbiquityContainerIdentifier_1, - containerIdentifier?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? URLForPublishingUbiquitousItemAtURL_expirationDate_error_( - NSURL url, - ffi.Pointer> outDate, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_464( - _id, - _lib._sel_URLForPublishingUbiquitousItemAtURL_expirationDate_error_1, - url._id, - outDate, - error); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSObject? get ubiquityIdentityToken { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_ubiquityIdentityToken1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void getFileProviderServicesForItemAtURL_completionHandler_( - NSURL url, ObjCBlock_ffiVoid_NSDictionary_NSError completionHandler) { - _lib._objc_msgSend_465( - _id, - _lib._sel_getFileProviderServicesForItemAtURL_completionHandler_1, - url._id, - completionHandler._id); - } - - NSURL? containerURLForSecurityApplicationGroupIdentifier_( - NSString groupIdentifier) { - final _ret = _lib._objc_msgSend_257( - _id, - _lib._sel_containerURLForSecurityApplicationGroupIdentifier_1, - groupIdentifier._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL get homeDirectoryForCurrentUser { - final _ret = - _lib._objc_msgSend_466(_id, _lib._sel_homeDirectoryForCurrentUser1); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL get temporaryDirectory { - final _ret = _lib._objc_msgSend_466(_id, _lib._sel_temporaryDirectory1); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? homeDirectoryForUser_(NSString userName) { - final _ret = _lib._objc_msgSend_257( - _id, _lib._sel_homeDirectoryForUser_1, userName._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - @override - NSFileManager init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSFileManager._(_ret, _lib, retain: true, release: true); - } - - static NSFileManager new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFileManager1, _lib._sel_new1); - return NSFileManager._(_ret, _lib, retain: false, release: true); - } - - static NSFileManager allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSFileManager1, _lib._sel_allocWithZone_1, zone); - return NSFileManager._(_ret, _lib, retain: false, release: true); - } - - static NSFileManager alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFileManager1, _lib._sel_alloc1); - return NSFileManager._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSFileManager1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSFileManager1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFileManager1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFileManager1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSFileManager1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSFileManager1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSFileManager1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSFileManager1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSFileManager1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSVolumeEnumerationOptions { - static const int NSVolumeEnumerationSkipHiddenVolumes = 2; - static const int NSVolumeEnumerationProduceFileReferenceURLs = 4; -} - -abstract class NSFileManagerUnmountOptions { - static const int NSFileManagerUnmountAllPartitionsAndEjectDisk = 1; - static const int NSFileManagerUnmountWithoutUI = 2; -} - -void _ObjCBlock_ffiVoid_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSError_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSError_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSError_closureRegistry[block.ref.target.address]!(arg0); - -class ObjCBlock_ffiVoid_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSError._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSError._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSError.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi - .NativeFunction arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSError.fromFunction( - AVFAudio lib, void Function(NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSError_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSError._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSError.listener(AVFAudio lib, void Function(NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSError_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSError._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; - - void call(NSError? arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0?._id ?? ffi.nullptr); -} - -abstract class NSDirectoryEnumerationOptions { - static const int NSDirectoryEnumerationSkipsSubdirectoryDescendants = 1; - static const int NSDirectoryEnumerationSkipsPackageDescendants = 2; - static const int NSDirectoryEnumerationSkipsHiddenFiles = 4; - static const int NSDirectoryEnumerationIncludesDirectoriesPostOrder = 8; - static const int NSDirectoryEnumerationProducesRelativePathURLs = 16; -} - -abstract class NSSearchPathDirectory { - static const int NSApplicationDirectory = 1; - static const int NSDemoApplicationDirectory = 2; - static const int NSDeveloperApplicationDirectory = 3; - static const int NSAdminApplicationDirectory = 4; - static const int NSLibraryDirectory = 5; - static const int NSDeveloperDirectory = 6; - static const int NSUserDirectory = 7; - static const int NSDocumentationDirectory = 8; - static const int NSDocumentDirectory = 9; - static const int NSCoreServiceDirectory = 10; - static const int NSAutosavedInformationDirectory = 11; - static const int NSDesktopDirectory = 12; - static const int NSCachesDirectory = 13; - static const int NSApplicationSupportDirectory = 14; - static const int NSDownloadsDirectory = 15; - static const int NSInputMethodsDirectory = 16; - static const int NSMoviesDirectory = 17; - static const int NSMusicDirectory = 18; - static const int NSPicturesDirectory = 19; - static const int NSPrinterDescriptionDirectory = 20; - static const int NSSharedPublicDirectory = 21; - static const int NSPreferencePanesDirectory = 22; - static const int NSApplicationScriptsDirectory = 23; - static const int NSItemReplacementDirectory = 99; - static const int NSAllApplicationsDirectory = 100; - static const int NSAllLibrariesDirectory = 101; - static const int NSTrashDirectory = 102; -} - -abstract class NSSearchPathDomainMask { - static const int NSUserDomainMask = 1; - static const int NSLocalDomainMask = 2; - static const int NSNetworkDomainMask = 4; - static const int NSSystemDomainMask = 8; - static const int NSAllDomainsMask = 65535; -} - -abstract class NSURLRelationship { - static const int NSURLRelationshipContains = 0; - static const int NSURLRelationshipSame = 1; - static const int NSURLRelationshipOther = 2; -} - -bool _ObjCBlock_bool_NSURL_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_bool_NSURL_NSError_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_bool_NSURL_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_bool_NSURL_NSError_registerClosure( - bool Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_bool_NSURL_NSError_closureRegistryIndex; - _ObjCBlock_bool_NSURL_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -bool _ObjCBlock_bool_NSURL_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_bool_NSURL_NSError_closureRegistry[block.ref.target.address]!( - arg0, arg1); - -class ObjCBlock_bool_NSURL_NSError extends _ObjCBlockBase { - ObjCBlock_bool_NSURL_NSError._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_bool_NSURL_NSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_bool_NSURL_NSError._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_NSURL_NSError.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer arg0, ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_NSURL_NSError_fnPtrTrampoline, false) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_NSURL_NSError.fromFunction(AVFAudio lib, bool Function(NSURL, NSError) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_bool_NSURL_NSError_closureTrampoline, false) - .cast(), - _ObjCBlock_bool_NSURL_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - NSURL._(arg0, lib, retain: true, release: true), - NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - bool call(NSURL arg0, NSError arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1._id); -} - -abstract class NSFileManagerItemReplacementOptions { - static const int NSFileManagerItemReplacementUsingNewMetadataOnly = 1; - static const int NSFileManagerItemReplacementWithoutDeletingBackupItem = 2; -} - -void _ObjCBlock_ffiVoid_NSDictionary_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSDictionary_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSDictionary_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_ffiVoid_NSDictionary_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSDictionary_NSError._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSDictionary_NSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSDictionary_NSError._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSDictionary_NSError.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDictionary_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSDictionary_NSError.fromFunction( - AVFAudio lib, void Function(NSDictionary?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDictionary_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSDictionary_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 ? null : NSDictionary._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSDictionary_NSError.listener( - AVFAudio lib, void Function(NSDictionary?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi - .NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSDictionary_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSDictionary_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSDictionary._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSDictionary? arg0, NSError? arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1?._id ?? ffi.nullptr); -} - -class NSMutableArray extends NSArray { - NSMutableArray._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSMutableArray] that points to the same underlying object as [other]. - static NSMutableArray castFrom(T other) { - return NSMutableArray._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSMutableArray] that wraps the given raw object pointer. - static NSMutableArray castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableArray._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSMutableArray]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMutableArray1); - } - - void addObject_(NSObject anObject) { - _lib._objc_msgSend_15(_id, _lib._sel_addObject_1, anObject._id); - } - - void insertObject_atIndex_(NSObject anObject, int index) { - _lib._objc_msgSend_469( - _id, _lib._sel_insertObject_atIndex_1, anObject._id, index); - } - - void removeLastObject() { - _lib._objc_msgSend_1(_id, _lib._sel_removeLastObject1); - } - - void removeObjectAtIndex_(int index) { - _lib._objc_msgSend_470(_id, _lib._sel_removeObjectAtIndex_1, index); - } - - void replaceObjectAtIndex_withObject_(int index, NSObject anObject) { - _lib._objc_msgSend_471( - _id, _lib._sel_replaceObjectAtIndex_withObject_1, index, anObject._id); - } - - @override - NSMutableArray init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - NSMutableArray initWithCapacity_(int numItems) { - final _ret = - _lib._objc_msgSend_65(_id, _lib._sel_initWithCapacity_1, numItems); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableArray? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - void addObjectsFromArray_(NSArray otherArray) { - _lib._objc_msgSend_472( - _id, _lib._sel_addObjectsFromArray_1, otherArray._id); - } - - void exchangeObjectAtIndex_withObjectAtIndex_(int idx1, int idx2) { - _lib._objc_msgSend_473( - _id, _lib._sel_exchangeObjectAtIndex_withObjectAtIndex_1, idx1, idx2); - } - - void removeAllObjects() { - _lib._objc_msgSend_1(_id, _lib._sel_removeAllObjects1); - } - - void removeObject_inRange_(NSObject anObject, _NSRange range) { - _lib._objc_msgSend_474( - _id, _lib._sel_removeObject_inRange_1, anObject._id, range); - } - - void removeObject_(NSObject anObject) { - _lib._objc_msgSend_15(_id, _lib._sel_removeObject_1, anObject._id); - } - - void removeObjectIdenticalTo_inRange_(NSObject anObject, _NSRange range) { - _lib._objc_msgSend_474( - _id, _lib._sel_removeObjectIdenticalTo_inRange_1, anObject._id, range); - } - - void removeObjectIdenticalTo_(NSObject anObject) { - _lib._objc_msgSend_15( - _id, _lib._sel_removeObjectIdenticalTo_1, anObject._id); - } - - void removeObjectsFromIndices_numIndices_( - ffi.Pointer indices, int cnt) { - _lib._objc_msgSend_475( - _id, _lib._sel_removeObjectsFromIndices_numIndices_1, indices, cnt); - } - - void removeObjectsInArray_(NSArray otherArray) { - _lib._objc_msgSend_472( - _id, _lib._sel_removeObjectsInArray_1, otherArray._id); - } - - void removeObjectsInRange_(_NSRange range) { - _lib._objc_msgSend_476(_id, _lib._sel_removeObjectsInRange_1, range); - } - - void replaceObjectsInRange_withObjectsFromArray_range_( - _NSRange range, NSArray otherArray, _NSRange otherRange) { - _lib._objc_msgSend_477( - _id, - _lib._sel_replaceObjectsInRange_withObjectsFromArray_range_1, - range, - otherArray._id, - otherRange); - } - - void replaceObjectsInRange_withObjectsFromArray_( - _NSRange range, NSArray otherArray) { - _lib._objc_msgSend_478( - _id, - _lib._sel_replaceObjectsInRange_withObjectsFromArray_1, - range, - otherArray._id); - } - - void setArray_(NSArray otherArray) { - _lib._objc_msgSend_472(_id, _lib._sel_setArray_1, otherArray._id); - } - - void sortUsingFunction_context_( - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>> - compare, - ffi.Pointer context) { - _lib._objc_msgSend_479( - _id, _lib._sel_sortUsingFunction_context_1, compare, context); - } - - void sortUsingSelector_(ffi.Pointer comparator) { - _lib._objc_msgSend_7(_id, _lib._sel_sortUsingSelector_1, comparator); - } - - void insertObjects_atIndexes_(NSArray objects, NSIndexSet indexes) { - _lib._objc_msgSend_480( - _id, _lib._sel_insertObjects_atIndexes_1, objects._id, indexes._id); - } - - void removeObjectsAtIndexes_(NSIndexSet indexes) { - _lib._objc_msgSend_481( - _id, _lib._sel_removeObjectsAtIndexes_1, indexes._id); - } - - void replaceObjectsAtIndexes_withObjects_( - NSIndexSet indexes, NSArray objects) { - _lib._objc_msgSend_482(_id, _lib._sel_replaceObjectsAtIndexes_withObjects_1, - indexes._id, objects._id); - } - - void setObject_atIndexedSubscript_(NSObject obj, int idx) { - _lib._objc_msgSend_469( - _id, _lib._sel_setObject_atIndexedSubscript_1, obj._id, idx); - } - - void sortUsingComparator_( - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - _lib._objc_msgSend_483(_id, _lib._sel_sortUsingComparator_1, cmptr._id); - } - - void sortWithOptions_usingComparator_( - int opts, ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - _lib._objc_msgSend_484( - _id, _lib._sel_sortWithOptions_usingComparator_1, opts, cmptr._id); - } - - static NSMutableArray arrayWithCapacity_(AVFAudio _lib, int numItems) { - final _ret = _lib._objc_msgSend_65( - _lib._class_NSMutableArray1, _lib._sel_arrayWithCapacity_1, numItems); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray? arrayWithContentsOfFile_( - AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_485(_lib._class_NSMutableArray1, - _lib._sel_arrayWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray? arrayWithContentsOfURL_(AVFAudio _lib, NSURL url) { - final _ret = _lib._objc_msgSend_486(_lib._class_NSMutableArray1, - _lib._sel_arrayWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - NSMutableArray? initWithContentsOfFile_(NSString path) { - final _ret = _lib._objc_msgSend_485( - _id, _lib._sel_initWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - NSMutableArray? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_486(_id, _lib._sel_initWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - void applyDifference_(NSObject difference) { - _lib._objc_msgSend_15(_id, _lib._sel_applyDifference_1, difference._id); - } - - void sortUsingDescriptors_(NSArray sortDescriptors) { - _lib._objc_msgSend_472( - _id, _lib._sel_sortUsingDescriptors_1, sortDescriptors._id); - } - - void filterUsingPredicate_(NSPredicate predicate) { - _lib._objc_msgSend_487( - _id, _lib._sel_filterUsingPredicate_1, predicate._id); - } - - @override - NSMutableArray initWithObjects_count_( - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _id, _lib._sel_initWithObjects_count_1, objects, cnt); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray array(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableArray1, _lib._sel_array1); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray arrayWithObject_(AVFAudio _lib, NSObject anObject) { - final _ret = _lib._objc_msgSend_124( - _lib._class_NSMutableArray1, _lib._sel_arrayWithObject_1, anObject._id); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray arrayWithObjects_count_( - AVFAudio _lib, ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66(_lib._class_NSMutableArray1, - _lib._sel_arrayWithObjects_count_1, objects, cnt); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray arrayWithObjects_(AVFAudio _lib, NSObject firstObj) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSMutableArray1, - _lib._sel_arrayWithObjects_1, firstObj._id); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray arrayWithArray_(AVFAudio _lib, NSArray array) { - final _ret = _lib._objc_msgSend_125( - _lib._class_NSMutableArray1, _lib._sel_arrayWithArray_1, array._id); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableArray initWithObjects_(NSObject firstObj) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObjects_1, firstObj._id); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableArray initWithArray_(NSArray array) { - final _ret = - _lib._objc_msgSend_125(_id, _lib._sel_initWithArray_1, array._id); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableArray initWithArray_copyItems_(NSArray array, bool flag) { - final _ret = _lib._objc_msgSend_126( - _id, _lib._sel_initWithArray_copyItems_1, array._id, flag); - return NSMutableArray._(_ret, _lib, retain: false, release: true); - } - - static NSArray? arrayWithContentsOfURL_error_( - AVFAudio _lib, NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_127(_lib._class_NSMutableArray1, - _lib._sel_arrayWithContentsOfURL_error_1, url._id, error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableArray1, _lib._sel_new1); - return NSMutableArray._(_ret, _lib, retain: false, release: true); - } - - static NSMutableArray allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMutableArray1, _lib._sel_allocWithZone_1, zone); - return NSMutableArray._(_ret, _lib, retain: false, release: true); - } - - static NSMutableArray alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableArray1, _lib._sel_alloc1); - return NSMutableArray._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableArray1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableArray1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMutableArray1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableArray1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableArray1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableArray1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableArray1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSMutableArray1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableArray1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSMutableOrderedSet extends NSOrderedSet { - NSMutableOrderedSet._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSMutableOrderedSet] that points to the same underlying object as [other]. - static NSMutableOrderedSet castFrom(T other) { - return NSMutableOrderedSet._(other._id, other._lib, - retain: true, release: true); - } - - /// Returns a [NSMutableOrderedSet] that wraps the given raw object pointer. - static NSMutableOrderedSet castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableOrderedSet._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSMutableOrderedSet]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMutableOrderedSet1); - } - - void insertObject_atIndex_(NSObject object, int idx) { - _lib._objc_msgSend_469( - _id, _lib._sel_insertObject_atIndex_1, object._id, idx); - } - - void removeObjectAtIndex_(int idx) { - _lib._objc_msgSend_470(_id, _lib._sel_removeObjectAtIndex_1, idx); - } - - void replaceObjectAtIndex_withObject_(int idx, NSObject object) { - _lib._objc_msgSend_471( - _id, _lib._sel_replaceObjectAtIndex_withObject_1, idx, object._id); - } - - @override - NSMutableOrderedSet? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableOrderedSet init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSMutableOrderedSet initWithCapacity_(int numItems) { - final _ret = - _lib._objc_msgSend_65(_id, _lib._sel_initWithCapacity_1, numItems); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - void addObject_(NSObject object) { - _lib._objc_msgSend_15(_id, _lib._sel_addObject_1, object._id); - } - - void addObjects_count_( - ffi.Pointer> objects, int count) { - _lib._objc_msgSend_500(_id, _lib._sel_addObjects_count_1, objects, count); - } - - void addObjectsFromArray_(NSArray array) { - _lib._objc_msgSend_472(_id, _lib._sel_addObjectsFromArray_1, array._id); - } - - void exchangeObjectAtIndex_withObjectAtIndex_(int idx1, int idx2) { - _lib._objc_msgSend_473( - _id, _lib._sel_exchangeObjectAtIndex_withObjectAtIndex_1, idx1, idx2); - } - - void moveObjectsAtIndexes_toIndex_(NSIndexSet indexes, int idx) { - _lib._objc_msgSend_501( - _id, _lib._sel_moveObjectsAtIndexes_toIndex_1, indexes._id, idx); - } - - void insertObjects_atIndexes_(NSArray objects, NSIndexSet indexes) { - _lib._objc_msgSend_480( - _id, _lib._sel_insertObjects_atIndexes_1, objects._id, indexes._id); - } - - void setObject_atIndex_(NSObject obj, int idx) { - _lib._objc_msgSend_469(_id, _lib._sel_setObject_atIndex_1, obj._id, idx); - } - - void setObject_atIndexedSubscript_(NSObject obj, int idx) { - _lib._objc_msgSend_469( - _id, _lib._sel_setObject_atIndexedSubscript_1, obj._id, idx); - } - - void replaceObjectsInRange_withObjects_count_( - _NSRange range, ffi.Pointer> objects, int count) { - _lib._objc_msgSend_502( - _id, - _lib._sel_replaceObjectsInRange_withObjects_count_1, - range, - objects, - count); - } - - void replaceObjectsAtIndexes_withObjects_( - NSIndexSet indexes, NSArray objects) { - _lib._objc_msgSend_482(_id, _lib._sel_replaceObjectsAtIndexes_withObjects_1, - indexes._id, objects._id); - } - - void removeObjectsInRange_(_NSRange range) { - _lib._objc_msgSend_476(_id, _lib._sel_removeObjectsInRange_1, range); - } - - void removeObjectsAtIndexes_(NSIndexSet indexes) { - _lib._objc_msgSend_481( - _id, _lib._sel_removeObjectsAtIndexes_1, indexes._id); - } - - void removeAllObjects() { - _lib._objc_msgSend_1(_id, _lib._sel_removeAllObjects1); - } - - void removeObject_(NSObject object) { - _lib._objc_msgSend_15(_id, _lib._sel_removeObject_1, object._id); - } - - void removeObjectsInArray_(NSArray array) { - _lib._objc_msgSend_472(_id, _lib._sel_removeObjectsInArray_1, array._id); - } - - void intersectOrderedSet_(NSOrderedSet other) { - _lib._objc_msgSend_503(_id, _lib._sel_intersectOrderedSet_1, other._id); - } - - void minusOrderedSet_(NSOrderedSet other) { - _lib._objc_msgSend_503(_id, _lib._sel_minusOrderedSet_1, other._id); - } - - void unionOrderedSet_(NSOrderedSet other) { - _lib._objc_msgSend_503(_id, _lib._sel_unionOrderedSet_1, other._id); - } - - void intersectSet_(NSSet other) { - _lib._objc_msgSend_504(_id, _lib._sel_intersectSet_1, other._id); - } - - void minusSet_(NSSet other) { - _lib._objc_msgSend_504(_id, _lib._sel_minusSet_1, other._id); - } - - void unionSet_(NSSet other) { - _lib._objc_msgSend_504(_id, _lib._sel_unionSet_1, other._id); - } - - void sortUsingComparator_( - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - _lib._objc_msgSend_483(_id, _lib._sel_sortUsingComparator_1, cmptr._id); - } - - void sortWithOptions_usingComparator_( - int opts, ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - _lib._objc_msgSend_484( - _id, _lib._sel_sortWithOptions_usingComparator_1, opts, cmptr._id); - } - - void sortRange_options_usingComparator_(_NSRange range, int opts, - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - _lib._objc_msgSend_505(_id, _lib._sel_sortRange_options_usingComparator_1, - range, opts, cmptr._id); - } - - static NSMutableOrderedSet orderedSetWithCapacity_( - AVFAudio _lib, int numItems) { - final _ret = _lib._objc_msgSend_65(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithCapacity_1, numItems); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - void applyDifference_(NSObject difference) { - _lib._objc_msgSend_15(_id, _lib._sel_applyDifference_1, difference._id); - } - - void sortUsingDescriptors_(NSArray sortDescriptors) { - _lib._objc_msgSend_472( - _id, _lib._sel_sortUsingDescriptors_1, sortDescriptors._id); - } - - void filterUsingPredicate_(NSPredicate p) { - _lib._objc_msgSend_487(_id, _lib._sel_filterUsingPredicate_1, p._id); - } - - @override - NSMutableOrderedSet initWithObjects_count_( - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _id, _lib._sel_initWithObjects_count_1, objects, cnt); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSet(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableOrderedSet1, _lib._sel_orderedSet1); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSetWithObject_( - AVFAudio _lib, NSObject object) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithObject_1, object._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSetWithObjects_count_( - AVFAudio _lib, ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithObjects_count_1, objects, cnt); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSetWithObjects_( - AVFAudio _lib, NSObject firstObj) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithObjects_1, firstObj._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSetWithOrderedSet_( - AVFAudio _lib, NSOrderedSet set) { - final _ret = _lib._objc_msgSend_492(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithOrderedSet_1, set._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSetWithOrderedSet_range_copyItems_( - AVFAudio _lib, NSOrderedSet set, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_493( - _lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithOrderedSet_range_copyItems_1, - set._id, - range, - flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSMutableOrderedSet orderedSetWithArray_( - AVFAudio _lib, NSArray array) { - final _ret = _lib._objc_msgSend_125(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithArray_1, array._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSetWithArray_range_copyItems_( - AVFAudio _lib, NSArray array, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_494( - _lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithArray_range_copyItems_1, - array._id, - range, - flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSMutableOrderedSet orderedSetWithSet_(AVFAudio _lib, NSSet set) { - final _ret = _lib._objc_msgSend_411(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithSet_1, set._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSetWithSet_copyItems_( - AVFAudio _lib, NSSet set, bool flag) { - final _ret = _lib._objc_msgSend_412(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithSet_copyItems_1, set._id, flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableOrderedSet initWithObject_(NSObject object) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObject_1, object._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableOrderedSet initWithObjects_(NSObject firstObj) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObjects_1, firstObj._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableOrderedSet initWithOrderedSet_(NSOrderedSet set) { - final _ret = - _lib._objc_msgSend_492(_id, _lib._sel_initWithOrderedSet_1, set._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableOrderedSet initWithOrderedSet_copyItems_( - NSOrderedSet set, bool flag) { - final _ret = _lib._objc_msgSend_495( - _id, _lib._sel_initWithOrderedSet_copyItems_1, set._id, flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableOrderedSet initWithOrderedSet_range_copyItems_( - NSOrderedSet set, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_493(_id, - _lib._sel_initWithOrderedSet_range_copyItems_1, set._id, range, flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableOrderedSet initWithArray_(NSArray array) { - final _ret = - _lib._objc_msgSend_125(_id, _lib._sel_initWithArray_1, array._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableOrderedSet initWithArray_copyItems_(NSArray set, bool flag) { - final _ret = _lib._objc_msgSend_126( - _id, _lib._sel_initWithArray_copyItems_1, set._id, flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableOrderedSet initWithArray_range_copyItems_( - NSArray set, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_494( - _id, _lib._sel_initWithArray_range_copyItems_1, set._id, range, flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableOrderedSet initWithSet_(NSSet set) { - final _ret = _lib._objc_msgSend_411(_id, _lib._sel_initWithSet_1, set._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableOrderedSet initWithSet_copyItems_(NSSet set, bool flag) { - final _ret = _lib._objc_msgSend_412( - _id, _lib._sel_initWithSet_copyItems_1, set._id, flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSMutableOrderedSet new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableOrderedSet1, _lib._sel_new1); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSMutableOrderedSet allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMutableOrderedSet1, _lib._sel_allocWithZone_1, zone); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSMutableOrderedSet alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableOrderedSet1, _lib._sel_alloc1); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableOrderedSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableOrderedSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMutableOrderedSet1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableOrderedSet1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableOrderedSet1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableOrderedSet1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableOrderedSet1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSMutableOrderedSet1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableOrderedSet1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSOrderedSet extends NSObject { - NSOrderedSet._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSOrderedSet] that points to the same underlying object as [other]. - static NSOrderedSet castFrom(T other) { - return NSOrderedSet._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSOrderedSet] that wraps the given raw object pointer. - static NSOrderedSet castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSOrderedSet._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSOrderedSet]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSOrderedSet1); - } - - int get count { - return _lib._objc_msgSend_10(_id, _lib._sel_count1); - } - - NSObject objectAtIndex_(int idx) { - final _ret = _lib._objc_msgSend_65(_id, _lib._sel_objectAtIndex_1, idx); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - int indexOfObject_(NSObject object) { - return _lib._objc_msgSend_74(_id, _lib._sel_indexOfObject_1, object._id); - } - - @override - NSOrderedSet init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet initWithObjects_count_( - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _id, _lib._sel_initWithObjects_count_1, objects, cnt); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - void getObjects_range_( - ffi.Pointer> objects, _NSRange range) { - _lib._objc_msgSend_73(_id, _lib._sel_getObjects_range_1, objects, range); - } - - NSArray objectsAtIndexes_(NSIndexSet indexes) { - final _ret = - _lib._objc_msgSend_111(_id, _lib._sel_objectsAtIndexes_1, indexes._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject? get firstObject { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_firstObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? get lastObject { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_lastObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - bool isEqualToOrderedSet_(NSOrderedSet other) { - return _lib._objc_msgSend_489( - _id, _lib._sel_isEqualToOrderedSet_1, other._id); - } - - bool containsObject_(NSObject object) { - return _lib._objc_msgSend_0(_id, _lib._sel_containsObject_1, object._id); - } - - bool intersectsOrderedSet_(NSOrderedSet other) { - return _lib._objc_msgSend_489( - _id, _lib._sel_intersectsOrderedSet_1, other._id); - } - - bool intersectsSet_(NSSet set) { - return _lib._objc_msgSend_403(_id, _lib._sel_intersectsSet_1, set._id); - } - - bool isSubsetOfOrderedSet_(NSOrderedSet other) { - return _lib._objc_msgSend_489( - _id, _lib._sel_isSubsetOfOrderedSet_1, other._id); - } - - bool isSubsetOfSet_(NSSet set) { - return _lib._objc_msgSend_403(_id, _lib._sel_isSubsetOfSet_1, set._id); - } - - NSObject objectAtIndexedSubscript_(int idx) { - final _ret = - _lib._objc_msgSend_65(_id, _lib._sel_objectAtIndexedSubscript_1, idx); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSEnumerator objectEnumerator() { - final _ret = _lib._objc_msgSend_77(_id, _lib._sel_objectEnumerator1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - NSEnumerator reverseObjectEnumerator() { - final _ret = _lib._objc_msgSend_77(_id, _lib._sel_reverseObjectEnumerator1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet get reversedOrderedSet { - final _ret = _lib._objc_msgSend_490(_id, _lib._sel_reversedOrderedSet1); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSArray get array { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_array1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSSet get set1 { - final _ret = _lib._objc_msgSend_491(_id, _lib._sel_set1); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - void enumerateObjectsUsingBlock_( - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_112( - _id, _lib._sel_enumerateObjectsUsingBlock_1, block._id); - } - - void enumerateObjectsWithOptions_usingBlock_( - int opts, ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_113(_id, - _lib._sel_enumerateObjectsWithOptions_usingBlock_1, opts, block._id); - } - - void enumerateObjectsAtIndexes_options_usingBlock_(NSIndexSet s, int opts, - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_114( - _id, - _lib._sel_enumerateObjectsAtIndexes_options_usingBlock_1, - s._id, - opts, - block._id); - } - - int indexOfObjectPassingTest_( - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_115( - _id, _lib._sel_indexOfObjectPassingTest_1, predicate._id); - } - - int indexOfObjectWithOptions_passingTest_( - int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_116(_id, - _lib._sel_indexOfObjectWithOptions_passingTest_1, opts, predicate._id); - } - - int indexOfObjectAtIndexes_options_passingTest_(NSIndexSet s, int opts, - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_117( - _id, - _lib._sel_indexOfObjectAtIndexes_options_passingTest_1, - s._id, - opts, - predicate._id); - } - - NSIndexSet indexesOfObjectsPassingTest_( - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_118( - _id, _lib._sel_indexesOfObjectsPassingTest_1, predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet indexesOfObjectsWithOptions_passingTest_( - int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_119( - _id, - _lib._sel_indexesOfObjectsWithOptions_passingTest_1, - opts, - predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet indexesOfObjectsAtIndexes_options_passingTest_(NSIndexSet s, - int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_120( - _id, - _lib._sel_indexesOfObjectsAtIndexes_options_passingTest_1, - s._id, - opts, - predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - int indexOfObject_inSortedRange_options_usingComparator_( - NSObject object, - _NSRange range, - int opts, - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmp) { - return _lib._objc_msgSend_123( - _id, - _lib._sel_indexOfObject_inSortedRange_options_usingComparator_1, - object._id, - range, - opts, - cmp._id); - } - - NSArray sortedArrayUsingComparator_( - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - final _ret = _lib._objc_msgSend_121( - _id, _lib._sel_sortedArrayUsingComparator_1, cmptr._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray sortedArrayWithOptions_usingComparator_( - int opts, ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - final _ret = _lib._objc_msgSend_122(_id, - _lib._sel_sortedArrayWithOptions_usingComparator_1, opts, cmptr._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_(NSObject? locale) { - final _ret = _lib._objc_msgSend_70( - _id, _lib._sel_descriptionWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_indent_(NSObject? locale, int level) { - final _ret = _lib._objc_msgSend_71( - _id, - _lib._sel_descriptionWithLocale_indent_1, - locale?._id ?? ffi.nullptr, - level); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSet(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOrderedSet1, _lib._sel_orderedSet1); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSetWithObject_(AVFAudio _lib, NSObject object) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSOrderedSet1, - _lib._sel_orderedSetWithObject_1, object._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSetWithObjects_count_( - AVFAudio _lib, ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66(_lib._class_NSOrderedSet1, - _lib._sel_orderedSetWithObjects_count_1, objects, cnt); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSetWithObjects_(AVFAudio _lib, NSObject firstObj) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSOrderedSet1, - _lib._sel_orderedSetWithObjects_1, firstObj._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSetWithOrderedSet_( - AVFAudio _lib, NSOrderedSet set) { - final _ret = _lib._objc_msgSend_492(_lib._class_NSOrderedSet1, - _lib._sel_orderedSetWithOrderedSet_1, set._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSetWithOrderedSet_range_copyItems_( - AVFAudio _lib, NSOrderedSet set, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_493( - _lib._class_NSOrderedSet1, - _lib._sel_orderedSetWithOrderedSet_range_copyItems_1, - set._id, - range, - flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSOrderedSet orderedSetWithArray_(AVFAudio _lib, NSArray array) { - final _ret = _lib._objc_msgSend_125( - _lib._class_NSOrderedSet1, _lib._sel_orderedSetWithArray_1, array._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSetWithArray_range_copyItems_( - AVFAudio _lib, NSArray array, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_494( - _lib._class_NSOrderedSet1, - _lib._sel_orderedSetWithArray_range_copyItems_1, - array._id, - range, - flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSOrderedSet orderedSetWithSet_(AVFAudio _lib, NSSet set) { - final _ret = _lib._objc_msgSend_411( - _lib._class_NSOrderedSet1, _lib._sel_orderedSetWithSet_1, set._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSetWithSet_copyItems_( - AVFAudio _lib, NSSet set, bool flag) { - final _ret = _lib._objc_msgSend_412(_lib._class_NSOrderedSet1, - _lib._sel_orderedSetWithSet_copyItems_1, set._id, flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - NSOrderedSet initWithObject_(NSObject object) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObject_1, object._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet initWithObjects_(NSObject firstObj) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObjects_1, firstObj._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet initWithOrderedSet_(NSOrderedSet set) { - final _ret = - _lib._objc_msgSend_492(_id, _lib._sel_initWithOrderedSet_1, set._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet initWithOrderedSet_copyItems_(NSOrderedSet set, bool flag) { - final _ret = _lib._objc_msgSend_495( - _id, _lib._sel_initWithOrderedSet_copyItems_1, set._id, flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - NSOrderedSet initWithOrderedSet_range_copyItems_( - NSOrderedSet set, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_493(_id, - _lib._sel_initWithOrderedSet_range_copyItems_1, set._id, range, flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - NSOrderedSet initWithArray_(NSArray array) { - final _ret = - _lib._objc_msgSend_125(_id, _lib._sel_initWithArray_1, array._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet initWithArray_copyItems_(NSArray set, bool flag) { - final _ret = _lib._objc_msgSend_126( - _id, _lib._sel_initWithArray_copyItems_1, set._id, flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - NSOrderedSet initWithArray_range_copyItems_( - NSArray set, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_494( - _id, _lib._sel_initWithArray_range_copyItems_1, set._id, range, flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - NSOrderedSet initWithSet_(NSSet set) { - final _ret = _lib._objc_msgSend_411(_id, _lib._sel_initWithSet_1, set._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet initWithSet_copyItems_(NSSet set, bool flag) { - final _ret = _lib._objc_msgSend_412( - _id, _lib._sel_initWithSet_copyItems_1, set._id, flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - NSObject differenceFromOrderedSet_withOptions_usingEquivalenceTest_( - NSOrderedSet other, - int options, - ObjCBlock_bool_ObjCObject_ObjCObject block) { - final _ret = _lib._objc_msgSend_496( - _id, - _lib._sel_differenceFromOrderedSet_withOptions_usingEquivalenceTest_1, - other._id, - options, - block._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject differenceFromOrderedSet_withOptions_( - NSOrderedSet other, int options) { - final _ret = _lib._objc_msgSend_497(_id, - _lib._sel_differenceFromOrderedSet_withOptions_1, other._id, options); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject differenceFromOrderedSet_(NSOrderedSet other) { - final _ret = _lib._objc_msgSend_492( - _id, _lib._sel_differenceFromOrderedSet_1, other._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet? orderedSetByApplyingDifference_(NSObject difference) { - final _ret = _lib._objc_msgSend_498( - _id, _lib._sel_orderedSetByApplyingDifference_1, difference._id); - return _ret.address == 0 - ? null - : NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSObject valueForKey_(NSString key) { - final _ret = _lib._objc_msgSend_31(_id, _lib._sel_valueForKey_1, key._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - void setValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135( - _id, _lib._sel_setValue_forKey_1, value?._id ?? ffi.nullptr, key._id); - } - - @override - void addObserver_forKeyPath_options_context_(NSObject observer, - NSString keyPath, int options, ffi.Pointer context) { - _lib._objc_msgSend_139( - _id, - _lib._sel_addObserver_forKeyPath_options_context_1, - observer._id, - keyPath._id, - options, - context); - } - - @override - void removeObserver_forKeyPath_context_( - NSObject observer, NSString keyPath, ffi.Pointer context) { - _lib._objc_msgSend_140(_id, _lib._sel_removeObserver_forKeyPath_context_1, - observer._id, keyPath._id, context); - } - - @override - void removeObserver_forKeyPath_(NSObject observer, NSString keyPath) { - _lib._objc_msgSend_141( - _id, _lib._sel_removeObserver_forKeyPath_1, observer._id, keyPath._id); - } - - NSArray sortedArrayUsingDescriptors_(NSArray sortDescriptors) { - final _ret = _lib._objc_msgSend_68( - _id, _lib._sel_sortedArrayUsingDescriptors_1, sortDescriptors._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet filteredOrderedSetUsingPredicate_(NSPredicate p) { - final _ret = _lib._objc_msgSend_499( - _id, _lib._sel_filteredOrderedSetUsingPredicate_1, p._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOrderedSet1, _lib._sel_new1); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSOrderedSet allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSOrderedSet1, _lib._sel_allocWithZone_1, zone); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSOrderedSet alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOrderedSet1, _lib._sel_alloc1); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSOrderedSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSOrderedSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOrderedSet1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOrderedSet1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSOrderedSet1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSOrderedSet1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSOrderedSet1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSOrderedSet1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSOrderedSet1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSMutableSet extends NSSet { - NSMutableSet._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSMutableSet] that points to the same underlying object as [other]. - static NSMutableSet castFrom(T other) { - return NSMutableSet._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSMutableSet] that wraps the given raw object pointer. - static NSMutableSet castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableSet._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSMutableSet]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSMutableSet1); - } - - void addObject_(NSObject object) { - _lib._objc_msgSend_15(_id, _lib._sel_addObject_1, object._id); - } - - void removeObject_(NSObject object) { - _lib._objc_msgSend_15(_id, _lib._sel_removeObject_1, object._id); - } - - @override - NSMutableSet? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableSet init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - NSMutableSet initWithCapacity_(int numItems) { - final _ret = - _lib._objc_msgSend_65(_id, _lib._sel_initWithCapacity_1, numItems); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - void addObjectsFromArray_(NSArray array) { - _lib._objc_msgSend_472(_id, _lib._sel_addObjectsFromArray_1, array._id); - } - - void intersectSet_(NSSet otherSet) { - _lib._objc_msgSend_504(_id, _lib._sel_intersectSet_1, otherSet._id); - } - - void minusSet_(NSSet otherSet) { - _lib._objc_msgSend_504(_id, _lib._sel_minusSet_1, otherSet._id); - } - - void removeAllObjects() { - _lib._objc_msgSend_1(_id, _lib._sel_removeAllObjects1); - } - - void unionSet_(NSSet otherSet) { - _lib._objc_msgSend_504(_id, _lib._sel_unionSet_1, otherSet._id); - } - - void setSet_(NSSet otherSet) { - _lib._objc_msgSend_504(_id, _lib._sel_setSet_1, otherSet._id); - } - - static NSMutableSet setWithCapacity_(AVFAudio _lib, int numItems) { - final _ret = _lib._objc_msgSend_65( - _lib._class_NSMutableSet1, _lib._sel_setWithCapacity_1, numItems); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - void filterUsingPredicate_(NSPredicate predicate) { - _lib._objc_msgSend_487( - _id, _lib._sel_filterUsingPredicate_1, predicate._id); - } - - @override - NSMutableSet initWithObjects_count_( - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _id, _lib._sel_initWithObjects_count_1, objects, cnt); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableSet set1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableSet1, _lib._sel_set1); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableSet setWithObject_(AVFAudio _lib, NSObject object) { - final _ret = _lib._objc_msgSend_124( - _lib._class_NSMutableSet1, _lib._sel_setWithObject_1, object._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableSet setWithObjects_count_( - AVFAudio _lib, ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66(_lib._class_NSMutableSet1, - _lib._sel_setWithObjects_count_1, objects, cnt); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableSet setWithObjects_(AVFAudio _lib, NSObject firstObj) { - final _ret = _lib._objc_msgSend_124( - _lib._class_NSMutableSet1, _lib._sel_setWithObjects_1, firstObj._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableSet setWithSet_(AVFAudio _lib, NSSet set) { - final _ret = _lib._objc_msgSend_411( - _lib._class_NSMutableSet1, _lib._sel_setWithSet_1, set._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableSet setWithArray_(AVFAudio _lib, NSArray array) { - final _ret = _lib._objc_msgSend_125( - _lib._class_NSMutableSet1, _lib._sel_setWithArray_1, array._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableSet initWithObjects_(NSObject firstObj) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObjects_1, firstObj._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableSet initWithSet_(NSSet set) { - final _ret = _lib._objc_msgSend_411(_id, _lib._sel_initWithSet_1, set._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableSet initWithSet_copyItems_(NSSet set, bool flag) { - final _ret = _lib._objc_msgSend_412( - _id, _lib._sel_initWithSet_copyItems_1, set._id, flag); - return NSMutableSet._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableSet initWithArray_(NSArray array) { - final _ret = - _lib._objc_msgSend_125(_id, _lib._sel_initWithArray_1, array._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableSet new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableSet1, _lib._sel_new1); - return NSMutableSet._(_ret, _lib, retain: false, release: true); - } - - static NSMutableSet allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMutableSet1, _lib._sel_allocWithZone_1, zone); - return NSMutableSet._(_ret, _lib, retain: false, release: true); - } - - static NSMutableSet alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableSet1, _lib._sel_alloc1); - return NSMutableSet._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableSet1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableSet1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableSet1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableSet1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableSet1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSMutableSet1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableSet1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSKeyValueChange { - static const int NSKeyValueChangeSetting = 1; - static const int NSKeyValueChangeInsertion = 2; - static const int NSKeyValueChangeRemoval = 3; - static const int NSKeyValueChangeReplacement = 4; -} - -abstract class NSKeyValueSetMutationKind { - static const int NSKeyValueUnionSetMutation = 1; - static const int NSKeyValueMinusSetMutation = 2; - static const int NSKeyValueIntersectSetMutation = 3; - static const int NSKeyValueSetSetMutation = 4; -} - -class NSKeyedArchiver extends NSCoder { - NSKeyedArchiver._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSKeyedArchiver] that points to the same underlying object as [other]. - static NSKeyedArchiver castFrom(T other) { - return NSKeyedArchiver._(other._id, other._lib, - retain: true, release: true); - } - - /// Returns a [NSKeyedArchiver] that wraps the given raw object pointer. - static NSKeyedArchiver castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSKeyedArchiver._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSKeyedArchiver]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSKeyedArchiver1); - } - - NSKeyedArchiver initRequiringSecureCoding_(bool requiresSecureCoding) { - final _ret = _lib._objc_msgSend_514( - _id, _lib._sel_initRequiringSecureCoding_1, requiresSecureCoding); - return NSKeyedArchiver._(_ret, _lib, retain: true, release: true); - } - - static NSData? archivedDataWithRootObject_requiringSecureCoding_error_( - AVFAudio _lib, - NSObject object, - bool requiresSecureCoding, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_515( - _lib._class_NSKeyedArchiver1, - _lib._sel_archivedDataWithRootObject_requiringSecureCoding_error_1, - object._id, - requiresSecureCoding, - error); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - @override - NSKeyedArchiver init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSKeyedArchiver._(_ret, _lib, retain: true, release: true); - } - - NSKeyedArchiver initForWritingWithMutableData_(NSMutableData data) { - final _ret = _lib._objc_msgSend_521( - _id, _lib._sel_initForWritingWithMutableData_1, data._id); - return NSKeyedArchiver._(_ret, _lib, retain: true, release: true); - } - - static NSData archivedDataWithRootObject_( - AVFAudio _lib, NSObject rootObject) { - final _ret = _lib._objc_msgSend_522(_lib._class_NSKeyedArchiver1, - _lib._sel_archivedDataWithRootObject_1, rootObject._id); - return NSData._(_ret, _lib, retain: true, release: true); - } - - static bool archiveRootObject_toFile_( - AVFAudio _lib, NSObject rootObject, NSString path) { - return _lib._objc_msgSend_261(_lib._class_NSKeyedArchiver1, - _lib._sel_archiveRootObject_toFile_1, rootObject._id, path._id); - } - - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); - } - - int get outputFormat { - return _lib._objc_msgSend_523(_id, _lib._sel_outputFormat1); - } - - set outputFormat(int value) { - return _lib._objc_msgSend_524(_id, _lib._sel_setOutputFormat_1, value); - } - - NSData get encodedData { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_encodedData1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - void finishEncoding() { - _lib._objc_msgSend_1(_id, _lib._sel_finishEncoding1); - } - - static void setClassName_forClass_( - AVFAudio _lib, NSString? codedName, NSObject cls) { - _lib._objc_msgSend_525( - _lib._class_NSKeyedArchiver1, - _lib._sel_setClassName_forClass_1, - codedName?._id ?? ffi.nullptr, - cls._id); - } - - static NSString? classNameForClass_(AVFAudio _lib, NSObject cls) { - final _ret = _lib._objc_msgSend_526( - _lib._class_NSKeyedArchiver1, _lib._sel_classNameForClass_1, cls._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - @override - void encodeObject_forKey_(NSObject? object, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_encodeObject_forKey_1, - object?._id ?? ffi.nullptr, key._id); - } - - @override - void encodeConditionalObject_forKey_(NSObject? object, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_encodeConditionalObject_forKey_1, - object?._id ?? ffi.nullptr, key._id); - } - - @override - void encodeBool_forKey_(bool value, NSString key) { - _lib._objc_msgSend_296(_id, _lib._sel_encodeBool_forKey_1, value, key._id); - } - - @override - void encodeInt_forKey_(int value, NSString key) { - _lib._objc_msgSend_297(_id, _lib._sel_encodeInt_forKey_1, value, key._id); - } - - @override - void encodeInt32_forKey_(int value, NSString key) { - _lib._objc_msgSend_298(_id, _lib._sel_encodeInt32_forKey_1, value, key._id); - } - - @override - void encodeInt64_forKey_(int value, NSString key) { - _lib._objc_msgSend_299(_id, _lib._sel_encodeInt64_forKey_1, value, key._id); - } - - @override - void encodeFloat_forKey_(double value, NSString key) { - _lib._objc_msgSend_300(_id, _lib._sel_encodeFloat_forKey_1, value, key._id); - } - - @override - void encodeDouble_forKey_(double value, NSString key) { - _lib._objc_msgSend_301( - _id, _lib._sel_encodeDouble_forKey_1, value, key._id); - } - - @override - void encodeBytes_length_forKey_( - ffi.Pointer bytes, int length, NSString key) { - _lib._objc_msgSend_302( - _id, _lib._sel_encodeBytes_length_forKey_1, bytes, length, key._id); - } - - @override - bool get requiresSecureCoding { - return _lib._objc_msgSend_12(_id, _lib._sel_requiresSecureCoding1); - } - - set requiresSecureCoding(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setRequiresSecureCoding_1, value); - } - - static NSKeyedArchiver new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSKeyedArchiver1, _lib._sel_new1); - return NSKeyedArchiver._(_ret, _lib, retain: false, release: true); - } - - static NSKeyedArchiver allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSKeyedArchiver1, _lib._sel_allocWithZone_1, zone); - return NSKeyedArchiver._(_ret, _lib, retain: false, release: true); - } - - static NSKeyedArchiver alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSKeyedArchiver1, _lib._sel_alloc1); - return NSKeyedArchiver._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSKeyedArchiver1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSKeyedArchiver1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSKeyedArchiver1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSKeyedArchiver1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSKeyedArchiver1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSKeyedArchiver1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSKeyedArchiver1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSKeyedArchiver1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSKeyedArchiver1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSMutableData extends NSData { - NSMutableData._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSMutableData] that points to the same underlying object as [other]. - static NSMutableData castFrom(T other) { - return NSMutableData._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSMutableData] that wraps the given raw object pointer. - static NSMutableData castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableData._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSMutableData]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSMutableData1); - } - - ffi.Pointer get mutableBytes { - return _lib._objc_msgSend_20(_id, _lib._sel_mutableBytes1); - } - - @override - int get length { - return _lib._objc_msgSend_10(_id, _lib._sel_length1); - } - - set length(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setLength_1, value); - } - - void appendBytes_length_(ffi.Pointer bytes, int length) { - _lib._objc_msgSend_22(_id, _lib._sel_appendBytes_length_1, bytes, length); - } - - void appendData_(NSData other) { - _lib._objc_msgSend_285(_id, _lib._sel_appendData_1, other._id); - } - - void increaseLengthBy_(int extraLength) { - _lib._objc_msgSend_470(_id, _lib._sel_increaseLengthBy_1, extraLength); - } - - void replaceBytesInRange_withBytes_( - _NSRange range, ffi.Pointer bytes) { - _lib._objc_msgSend_517( - _id, _lib._sel_replaceBytesInRange_withBytes_1, range, bytes); - } - - void resetBytesInRange_(_NSRange range) { - _lib._objc_msgSend_476(_id, _lib._sel_resetBytesInRange_1, range); - } - - void setData_(NSData data) { - _lib._objc_msgSend_285(_id, _lib._sel_setData_1, data._id); - } - - void replaceBytesInRange_withBytes_length_(_NSRange range, - ffi.Pointer replacementBytes, int replacementLength) { - _lib._objc_msgSend_518( - _id, - _lib._sel_replaceBytesInRange_withBytes_length_1, - range, - replacementBytes, - replacementLength); - } - - static NSMutableData? dataWithCapacity_(AVFAudio _lib, int aNumItems) { - final _ret = _lib._objc_msgSend_519( - _lib._class_NSMutableData1, _lib._sel_dataWithCapacity_1, aNumItems); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData? dataWithLength_(AVFAudio _lib, int length) { - final _ret = _lib._objc_msgSend_519( - _lib._class_NSMutableData1, _lib._sel_dataWithLength_1, length); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - NSMutableData? initWithCapacity_(int capacity) { - final _ret = - _lib._objc_msgSend_519(_id, _lib._sel_initWithCapacity_1, capacity); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - NSMutableData? initWithLength_(int length) { - final _ret = - _lib._objc_msgSend_519(_id, _lib._sel_initWithLength_1, length); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - bool decompressUsingAlgorithm_error_( - int algorithm, ffi.Pointer> error) { - return _lib._objc_msgSend_520( - _id, _lib._sel_decompressUsingAlgorithm_error_1, algorithm, error); - } - - bool compressUsingAlgorithm_error_( - int algorithm, ffi.Pointer> error) { - return _lib._objc_msgSend_520( - _id, _lib._sel_compressUsingAlgorithm_error_1, algorithm, error); - } - - static NSMutableData data(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableData1, _lib._sel_data1); - return NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData dataWithBytes_length_( - AVFAudio _lib, ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273(_lib._class_NSMutableData1, - _lib._sel_dataWithBytes_length_1, bytes, length); - return NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData dataWithBytesNoCopy_length_( - AVFAudio _lib, ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273(_lib._class_NSMutableData1, - _lib._sel_dataWithBytesNoCopy_length_1, bytes, length); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - static NSMutableData dataWithBytesNoCopy_length_freeWhenDone_( - AVFAudio _lib, ffi.Pointer bytes, int length, bool b) { - final _ret = _lib._objc_msgSend_274(_lib._class_NSMutableData1, - _lib._sel_dataWithBytesNoCopy_length_freeWhenDone_1, bytes, length, b); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - static NSMutableData? dataWithContentsOfFile_options_error_( - AVFAudio _lib, - NSString path, - int readOptionsMask, - ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_275( - _lib._class_NSMutableData1, - _lib._sel_dataWithContentsOfFile_options_error_1, - path._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData? dataWithContentsOfURL_options_error_( - AVFAudio _lib, - NSURL url, - int readOptionsMask, - ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_276( - _lib._class_NSMutableData1, - _lib._sel_dataWithContentsOfURL_options_error_1, - url._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData? dataWithContentsOfFile_(AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSMutableData1, - _lib._sel_dataWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData? dataWithContentsOfURL_(AVFAudio _lib, NSURL url) { - final _ret = _lib._objc_msgSend_277( - _lib._class_NSMutableData1, _lib._sel_dataWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData initWithBytes_length_(ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273( - _id, _lib._sel_initWithBytes_length_1, bytes, length); - return NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData initWithBytesNoCopy_length_( - ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273( - _id, _lib._sel_initWithBytesNoCopy_length_1, bytes, length); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableData initWithBytesNoCopy_length_freeWhenDone_( - ffi.Pointer bytes, int length, bool b) { - final _ret = _lib._objc_msgSend_274(_id, - _lib._sel_initWithBytesNoCopy_length_freeWhenDone_1, bytes, length, b); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableData initWithBytesNoCopy_length_deallocator_( - ffi.Pointer bytes, - int length, - ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { - final _ret = _lib._objc_msgSend_278( - _id, - _lib._sel_initWithBytesNoCopy_length_deallocator_1, - bytes, - length, - deallocator?._id ?? ffi.nullptr); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableData? initWithContentsOfFile_options_error_(NSString path, - int readOptionsMask, ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_275( - _id, - _lib._sel_initWithContentsOfFile_options_error_1, - path._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData? initWithContentsOfURL_options_error_(NSURL url, - int readOptionsMask, ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_276( - _id, - _lib._sel_initWithContentsOfURL_options_error_1, - url._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData? initWithContentsOfFile_(NSString path) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_initWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_277(_id, _lib._sel_initWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData initWithData_(NSData data) { - final _ret = - _lib._objc_msgSend_279(_id, _lib._sel_initWithData_1, data._id); - return NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData dataWithData_(AVFAudio _lib, NSData data) { - final _ret = _lib._objc_msgSend_279( - _lib._class_NSMutableData1, _lib._sel_dataWithData_1, data._id); - return NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData? initWithBase64EncodedString_options_( - NSString base64String, int options) { - final _ret = _lib._objc_msgSend_280( - _id, - _lib._sel_initWithBase64EncodedString_options_1, - base64String._id, - options); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData? initWithBase64EncodedData_options_( - NSData base64Data, int options) { - final _ret = _lib._objc_msgSend_282(_id, - _lib._sel_initWithBase64EncodedData_options_1, base64Data._id, options); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData? decompressedDataUsingAlgorithm_error_( - int algorithm, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_284(_id, - _lib._sel_decompressedDataUsingAlgorithm_error_1, algorithm, error); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData? compressedDataUsingAlgorithm_error_( - int algorithm, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_284( - _id, _lib._sel_compressedDataUsingAlgorithm_error_1, algorithm, error); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSObject? dataWithContentsOfMappedFile_(AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSMutableData1, - _lib._sel_dataWithContentsOfMappedFile_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableData1, _lib._sel_new1); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - static NSMutableData allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMutableData1, _lib._sel_allocWithZone_1, zone); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - static NSMutableData alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableData1, _lib._sel_alloc1); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableData1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableData1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableData1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableData1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableData1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableData1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableData1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSMutableData1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableData1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSPropertyListFormat { - static const int NSPropertyListOpenStepFormat = 1; - static const int NSPropertyListXMLFormat_v1_0 = 100; - static const int NSPropertyListBinaryFormat_v1_0 = 200; -} - -class NSThread extends NSObject { - NSThread._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSThread] that points to the same underlying object as [other]. - static NSThread castFrom(T other) { - return NSThread._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSThread] that wraps the given raw object pointer. - static NSThread castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSThread._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSThread]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSThread1); - } - - static NSThread getCurrentThread(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_531(_lib._class_NSThread1, _lib._sel_currentThread1); - return NSThread._(_ret, _lib, retain: true, release: true); - } - - static void detachNewThreadWithBlock_( - AVFAudio _lib, ObjCBlock_ffiVoid block) { - _lib._objc_msgSend_532( - _lib._class_NSThread1, _lib._sel_detachNewThreadWithBlock_1, block._id); - } - - static void detachNewThreadSelector_toTarget_withObject_(AVFAudio _lib, - ffi.Pointer selector, NSObject target, NSObject? argument) { - _lib._objc_msgSend_533( - _lib._class_NSThread1, - _lib._sel_detachNewThreadSelector_toTarget_withObject_1, - selector, - target._id, - argument?._id ?? ffi.nullptr); - } - - static bool isMultiThreaded(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSThread1, _lib._sel_isMultiThreaded1); - } - - NSMutableDictionary get threadDictionary { - final _ret = _lib._objc_msgSend_539(_id, _lib._sel_threadDictionary1); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static void sleepUntilDate_(AVFAudio _lib, NSDate date) { - _lib._objc_msgSend_540( - _lib._class_NSThread1, _lib._sel_sleepUntilDate_1, date._id); - } - - static void sleepForTimeInterval_(AVFAudio _lib, double ti) { - _lib._objc_msgSend_541( - _lib._class_NSThread1, _lib._sel_sleepForTimeInterval_1, ti); - } - - static void exit(AVFAudio _lib) { - _lib._objc_msgSend_1(_lib._class_NSThread1, _lib._sel_exit1); - } - - double get threadPriority { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_threadPriority1) - : _lib._objc_msgSend_165(_id, _lib._sel_threadPriority1); - } - - set threadPriority(double value) { - return _lib._objc_msgSend_542(_id, _lib._sel_setThreadPriority_1, value); - } - - int get qualityOfService { - return _lib._objc_msgSend_543(_id, _lib._sel_qualityOfService1); - } - - set qualityOfService(int value) { - return _lib._objc_msgSend_544(_id, _lib._sel_setQualityOfService_1, value); - } - - static NSArray getCallStackReturnAddresses(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSThread1, _lib._sel_callStackReturnAddresses1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray getCallStackSymbols(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSThread1, _lib._sel_callStackSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString? get name { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_name1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - set name(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); - } - - int get stackSize { - return _lib._objc_msgSend_10(_id, _lib._sel_stackSize1); - } - - set stackSize(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setStackSize_1, value); - } - - bool get isMainThread { - return _lib._objc_msgSend_12(_id, _lib._sel_isMainThread1); - } - - static NSThread getMainThread(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_531(_lib._class_NSThread1, _lib._sel_mainThread1); - return NSThread._(_ret, _lib, retain: true, release: true); - } - - @override - NSThread init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSThread._(_ret, _lib, retain: true, release: true); - } - - NSThread initWithTarget_selector_object_( - NSObject target, ffi.Pointer selector, NSObject? argument) { - final _ret = _lib._objc_msgSend_546( - _id, - _lib._sel_initWithTarget_selector_object_1, - target._id, - selector, - argument?._id ?? ffi.nullptr); - return NSThread._(_ret, _lib, retain: true, release: true); - } - - NSThread initWithBlock_(ObjCBlock_ffiVoid block) { - final _ret = - _lib._objc_msgSend_547(_id, _lib._sel_initWithBlock_1, block._id); - return NSThread._(_ret, _lib, retain: true, release: true); - } - - bool get executing { - return _lib._objc_msgSend_12(_id, _lib._sel_isExecuting1); - } - - bool get finished { - return _lib._objc_msgSend_12(_id, _lib._sel_isFinished1); - } - - bool get cancelled { - return _lib._objc_msgSend_12(_id, _lib._sel_isCancelled1); - } - - void cancel() { - _lib._objc_msgSend_1(_id, _lib._sel_cancel1); - } - - void start() { - _lib._objc_msgSend_1(_id, _lib._sel_start1); - } - - void main() { - _lib._objc_msgSend_1(_id, _lib._sel_main1); - } - - static NSThread new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSThread1, _lib._sel_new1); - return NSThread._(_ret, _lib, retain: false, release: true); - } - - static NSThread allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSThread1, _lib._sel_allocWithZone_1, zone); - return NSThread._(_ret, _lib, retain: false, release: true); - } - - static NSThread alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSThread1, _lib._sel_alloc1); - return NSThread._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSThread1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSThread1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSThread1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSThread1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSThread1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSThread1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSThread1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSThread1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSThread1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -void _ObjCBlock_ffiVoid_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, -) => - block.ref.target - .cast>() - .asFunction()(); -final _ObjCBlock_ffiVoid_closureRegistry = {}; -int _ObjCBlock_ffiVoid_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_registerClosure(void Function() fn) { - final id = ++_ObjCBlock_ffiVoid_closureRegistryIndex; - _ObjCBlock_ffiVoid_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, -) => - _ObjCBlock_ffiVoid_closureRegistry[block.ref.target.address]!(); - -class ObjCBlock_ffiVoid extends _ObjCBlockBase { - ObjCBlock_ffiVoid._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid._(pointer, lib, retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid.fromFunctionPointer( - AVFAudio lib, ffi.Pointer> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_ffiVoid_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid.fromFunction(AVFAudio lib, void Function() fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_ffiVoid_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_registerClosure(() => fn())), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid.listener(AVFAudio lib, void Function() fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>)>.listener( - _ObjCBlock_ffiVoid_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_registerClosure(() => fn())), - lib); - static ffi.NativeCallable)>? - _dartFuncListenerTrampoline; - - void call() => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block)>>() - .asFunction)>()( - _id, - ); -} - -class NSMutableDictionary extends NSDictionary { - NSMutableDictionary._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSMutableDictionary] that points to the same underlying object as [other]. - static NSMutableDictionary castFrom(T other) { - return NSMutableDictionary._(other._id, other._lib, - retain: true, release: true); - } - - /// Returns a [NSMutableDictionary] that wraps the given raw object pointer. - static NSMutableDictionary castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableDictionary._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSMutableDictionary]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMutableDictionary1); - } - - void removeObjectForKey_(NSObject aKey) { - _lib._objc_msgSend_15(_id, _lib._sel_removeObjectForKey_1, aKey._id); - } - - void setObject_forKey_(NSObject anObject, NSObject aKey) { - _lib._objc_msgSend_534( - _id, _lib._sel_setObject_forKey_1, anObject._id, aKey._id); - } - - @override - NSMutableDictionary init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - NSMutableDictionary initWithCapacity_(int numItems) { - final _ret = - _lib._objc_msgSend_65(_id, _lib._sel_initWithCapacity_1, numItems); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableDictionary? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - void addEntriesFromDictionary_(NSDictionary otherDictionary) { - _lib._objc_msgSend_509( - _id, _lib._sel_addEntriesFromDictionary_1, otherDictionary._id); - } - - void removeAllObjects() { - _lib._objc_msgSend_1(_id, _lib._sel_removeAllObjects1); - } - - void removeObjectsForKeys_(NSArray keyArray) { - _lib._objc_msgSend_472(_id, _lib._sel_removeObjectsForKeys_1, keyArray._id); - } - - void setDictionary_(NSDictionary otherDictionary) { - _lib._objc_msgSend_509(_id, _lib._sel_setDictionary_1, otherDictionary._id); - } - - void setObject_forKeyedSubscript_(NSObject? obj, NSObject key) { - _lib._objc_msgSend_535(_id, _lib._sel_setObject_forKeyedSubscript_1, - obj?._id ?? ffi.nullptr, key._id); - } - - static NSMutableDictionary dictionaryWithCapacity_( - AVFAudio _lib, int numItems) { - final _ret = _lib._objc_msgSend_65(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithCapacity_1, numItems); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary? dictionaryWithContentsOfFile_( - AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_536(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary? dictionaryWithContentsOfURL_( - AVFAudio _lib, NSURL url) { - final _ret = _lib._objc_msgSend_537(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - NSMutableDictionary? initWithContentsOfFile_(NSString path) { - final _ret = _lib._objc_msgSend_536( - _id, _lib._sel_initWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - NSMutableDictionary? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_537(_id, _lib._sel_initWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary dictionaryWithSharedKeySet_( - AVFAudio _lib, NSObject keyset) { - final _ret = _lib._objc_msgSend_538(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithSharedKeySet_1, keyset._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - void setValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135( - _id, _lib._sel_setValue_forKey_1, value?._id ?? ffi.nullptr, key._id); - } - - @override - NSMutableDictionary initWithObjects_forKeys_count_( - ffi.Pointer> objects, - ffi.Pointer> keys, - int cnt) { - final _ret = _lib._objc_msgSend_147( - _id, _lib._sel_initWithObjects_forKeys_count_1, objects, keys, cnt); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary dictionary(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableDictionary1, _lib._sel_dictionary1); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary dictionaryWithObject_forKey_( - AVFAudio _lib, NSObject object, NSObject key) { - final _ret = _lib._objc_msgSend_158(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithObject_forKey_1, object._id, key._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary dictionaryWithObjects_forKeys_count_( - AVFAudio _lib, - ffi.Pointer> objects, - ffi.Pointer> keys, - int cnt) { - final _ret = _lib._objc_msgSend_147(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithObjects_forKeys_count_1, objects, keys, cnt); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary dictionaryWithObjectsAndKeys_( - AVFAudio _lib, NSObject firstObject) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithObjectsAndKeys_1, firstObject._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary dictionaryWithDictionary_( - AVFAudio _lib, NSDictionary dict) { - final _ret = _lib._objc_msgSend_159(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithDictionary_1, dict._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary dictionaryWithObjects_forKeys_( - AVFAudio _lib, NSArray objects, NSArray keys) { - final _ret = _lib._objc_msgSend_160(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithObjects_forKeys_1, objects._id, keys._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableDictionary initWithObjectsAndKeys_(NSObject firstObject) { - final _ret = _lib._objc_msgSend_124( - _id, _lib._sel_initWithObjectsAndKeys_1, firstObject._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableDictionary initWithDictionary_(NSDictionary otherDictionary) { - final _ret = _lib._objc_msgSend_159( - _id, _lib._sel_initWithDictionary_1, otherDictionary._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableDictionary initWithDictionary_copyItems_( - NSDictionary otherDictionary, bool flag) { - final _ret = _lib._objc_msgSend_161(_id, - _lib._sel_initWithDictionary_copyItems_1, otherDictionary._id, flag); - return NSMutableDictionary._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableDictionary initWithObjects_forKeys_(NSArray objects, NSArray keys) { - final _ret = _lib._objc_msgSend_160( - _id, _lib._sel_initWithObjects_forKeys_1, objects._id, keys._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary? dictionaryWithContentsOfURL_error_( - AVFAudio _lib, NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_162(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithContentsOfURL_error_1, url._id, error); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSObject sharedKeySetForKeys_(AVFAudio _lib, NSArray keys) { - final _ret = _lib._objc_msgSend_125(_lib._class_NSMutableDictionary1, - _lib._sel_sharedKeySetForKeys_1, keys._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableDictionary1, _lib._sel_new1); - return NSMutableDictionary._(_ret, _lib, retain: false, release: true); - } - - static NSMutableDictionary allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMutableDictionary1, _lib._sel_allocWithZone_1, zone); - return NSMutableDictionary._(_ret, _lib, retain: false, release: true); - } - - static NSMutableDictionary alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableDictionary1, _lib._sel_alloc1); - return NSMutableDictionary._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableDictionary1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableDictionary1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMutableDictionary1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableDictionary1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableDictionary1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableDictionary1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableDictionary1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSMutableDictionary1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableDictionary1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSQualityOfService { - static const int NSQualityOfServiceUserInteractive = 33; - static const int NSQualityOfServiceUserInitiated = 25; - static const int NSQualityOfServiceUtility = 17; - static const int NSQualityOfServiceBackground = 9; - static const int NSQualityOfServiceDefault = -1; -} - -class NSArchiver extends NSCoder { - NSArchiver._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSArchiver] that points to the same underlying object as [other]. - static NSArchiver castFrom(T other) { - return NSArchiver._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSArchiver] that wraps the given raw object pointer. - static NSArchiver castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSArchiver._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSArchiver]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSArchiver1); - } - - NSArchiver initForWritingWithMutableData_(NSMutableData mdata) { - final _ret = _lib._objc_msgSend_521( - _id, _lib._sel_initForWritingWithMutableData_1, mdata._id); - return NSArchiver._(_ret, _lib, retain: true, release: true); - } - - NSMutableData get archiverData { - final _ret = _lib._objc_msgSend_550(_id, _lib._sel_archiverData1); - return NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - void encodeRootObject_(NSObject rootObject) { - _lib._objc_msgSend_15(_id, _lib._sel_encodeRootObject_1, rootObject._id); - } - - @override - void encodeConditionalObject_(NSObject? object) { - _lib._objc_msgSend_289( - _id, _lib._sel_encodeConditionalObject_1, object?._id ?? ffi.nullptr); - } - - static NSData archivedDataWithRootObject_( - AVFAudio _lib, NSObject rootObject) { - final _ret = _lib._objc_msgSend_522(_lib._class_NSArchiver1, - _lib._sel_archivedDataWithRootObject_1, rootObject._id); - return NSData._(_ret, _lib, retain: true, release: true); - } - - static bool archiveRootObject_toFile_( - AVFAudio _lib, NSObject rootObject, NSString path) { - return _lib._objc_msgSend_261(_lib._class_NSArchiver1, - _lib._sel_archiveRootObject_toFile_1, rootObject._id, path._id); - } - - void encodeClassName_intoClassName_( - NSString trueName, NSString inArchiveName) { - _lib._objc_msgSend_551(_id, _lib._sel_encodeClassName_intoClassName_1, - trueName._id, inArchiveName._id); - } - - NSString? classNameEncodedForTrueClassName_(NSString trueName) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_classNameEncodedForTrueClassName_1, trueName._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - void replaceObject_withObject_(NSObject object, NSObject newObject) { - _lib._objc_msgSend_534( - _id, _lib._sel_replaceObject_withObject_1, object._id, newObject._id); - } - - @override - NSArchiver init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSArchiver._(_ret, _lib, retain: true, release: true); - } - - static NSArchiver new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSArchiver1, _lib._sel_new1); - return NSArchiver._(_ret, _lib, retain: false, release: true); - } - - static NSArchiver allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSArchiver1, _lib._sel_allocWithZone_1, zone); - return NSArchiver._(_ret, _lib, retain: false, release: true); - } - - static NSArchiver alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSArchiver1, _lib._sel_alloc1); - return NSArchiver._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSArchiver1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSArchiver1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSArchiver1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSArchiver1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSArchiver1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSArchiver1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSArchiver1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSArchiver1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSArchiver1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSPortCoder extends NSCoder { - NSPortCoder._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSPortCoder] that points to the same underlying object as [other]. - static NSPortCoder castFrom(T other) { - return NSPortCoder._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSPortCoder] that wraps the given raw object pointer. - static NSPortCoder castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSPortCoder._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSPortCoder]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSPortCoder1); - } - - bool isBycopy() { - return _lib._objc_msgSend_12(_id, _lib._sel_isBycopy1); - } - - bool isByref() { - return _lib._objc_msgSend_12(_id, _lib._sel_isByref1); - } - - void encodePortObject_(NSPort aport) { - _lib._objc_msgSend_593(_id, _lib._sel_encodePortObject_1, aport._id); - } - - NSPort? decodePortObject() { - final _ret = _lib._objc_msgSend_594(_id, _lib._sel_decodePortObject1); - return _ret.address == 0 - ? null - : NSPort._(_ret, _lib, retain: true, release: true); - } - - NSConnection? connection() { - final _ret = _lib._objc_msgSend_595(_id, _lib._sel_connection1); - return _ret.address == 0 - ? null - : NSConnection._(_ret, _lib, retain: true, release: true); - } - - static NSObject portCoderWithReceivePort_sendPort_components_( - AVFAudio _lib, NSPort? rcvPort, NSPort? sndPort, NSArray? comps) { - final _ret = _lib._objc_msgSend_596( - _lib._class_NSPortCoder1, - _lib._sel_portCoderWithReceivePort_sendPort_components_1, - rcvPort?._id ?? ffi.nullptr, - sndPort?._id ?? ffi.nullptr, - comps?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject initWithReceivePort_sendPort_components_( - NSPort? rcvPort, NSPort? sndPort, NSArray? comps) { - final _ret = _lib._objc_msgSend_596( - _id, - _lib._sel_initWithReceivePort_sendPort_components_1, - rcvPort?._id ?? ffi.nullptr, - sndPort?._id ?? ffi.nullptr, - comps?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void dispatch() { - _lib._objc_msgSend_1(_id, _lib._sel_dispatch1); - } - - @override - NSPortCoder init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSPortCoder._(_ret, _lib, retain: true, release: true); - } - - static NSPortCoder new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSPortCoder1, _lib._sel_new1); - return NSPortCoder._(_ret, _lib, retain: false, release: true); - } - - static NSPortCoder allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSPortCoder1, _lib._sel_allocWithZone_1, zone); - return NSPortCoder._(_ret, _lib, retain: false, release: true); - } - - static NSPortCoder alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPortCoder1, _lib._sel_alloc1); - return NSPortCoder._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSPortCoder1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSPortCoder1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPortCoder1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPortCoder1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSPortCoder1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSPortCoder1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSPortCoder1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSPortCoder1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPortCoder1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSPort extends NSObject { - NSPort._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSPort] that points to the same underlying object as [other]. - static NSPort castFrom(T other) { - return NSPort._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSPort] that wraps the given raw object pointer. - static NSPort castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSPort._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSPort]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSPort1); - } - - static NSPort port(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_553(_lib._class_NSPort1, _lib._sel_port1); - return NSPort._(_ret, _lib, retain: true, release: true); - } - - void invalidate() { - _lib._objc_msgSend_1(_id, _lib._sel_invalidate1); - } - - bool get valid { - return _lib._objc_msgSend_12(_id, _lib._sel_isValid1); - } - - void setDelegate_(NSObject? anObject) { - _lib._objc_msgSend_289( - _id, _lib._sel_setDelegate_1, anObject?._id ?? ffi.nullptr); - } - - NSObject? delegate() { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void scheduleInRunLoop_forMode_(NSRunLoop runLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_scheduleInRunLoop_forMode_1, runLoop._id, mode._id); - } - - void removeFromRunLoop_forMode_(NSRunLoop runLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_removeFromRunLoop_forMode_1, runLoop._id, mode._id); - } - - int get reservedSpaceLength { - return _lib._objc_msgSend_10(_id, _lib._sel_reservedSpaceLength1); - } - - bool sendBeforeDate_components_from_reserved_( - NSDate limitDate, - NSMutableArray? components, - NSPort? receivePort, - int headerSpaceReserved) { - return _lib._objc_msgSend_570( - _id, - _lib._sel_sendBeforeDate_components_from_reserved_1, - limitDate._id, - components?._id ?? ffi.nullptr, - receivePort?._id ?? ffi.nullptr, - headerSpaceReserved); - } - - bool sendBeforeDate_msgid_components_from_reserved_( - NSDate limitDate, - int msgID, - NSMutableArray? components, - NSPort? receivePort, - int headerSpaceReserved) { - return _lib._objc_msgSend_571( - _id, - _lib._sel_sendBeforeDate_msgid_components_from_reserved_1, - limitDate._id, - msgID, - components?._id ?? ffi.nullptr, - receivePort?._id ?? ffi.nullptr, - headerSpaceReserved); - } - - void addConnection_toRunLoop_forMode_( - NSConnection conn, NSRunLoop runLoop, NSString mode) { - _lib._objc_msgSend_592(_id, _lib._sel_addConnection_toRunLoop_forMode_1, - conn._id, runLoop._id, mode._id); - } - - void removeConnection_fromRunLoop_forMode_( - NSConnection conn, NSRunLoop runLoop, NSString mode) { - _lib._objc_msgSend_592( - _id, - _lib._sel_removeConnection_fromRunLoop_forMode_1, - conn._id, - runLoop._id, - mode._id); - } - - @override - NSPort init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSPort._(_ret, _lib, retain: true, release: true); - } - - static NSPort new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSPort1, _lib._sel_new1); - return NSPort._(_ret, _lib, retain: false, release: true); - } - - static NSPort allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSPort1, _lib._sel_allocWithZone_1, zone); - return NSPort._(_ret, _lib, retain: false, release: true); - } - - static NSPort alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSPort1, _lib._sel_alloc1); - return NSPort._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSPort1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSPort1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPort1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPort1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSPort1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSPort1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSPort1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSPort1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPort1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSRunLoop extends NSObject { - NSRunLoop._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSRunLoop] that points to the same underlying object as [other]. - static NSRunLoop castFrom(T other) { - return NSRunLoop._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSRunLoop] that wraps the given raw object pointer. - static NSRunLoop castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSRunLoop._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSRunLoop]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSRunLoop1); - } - - static NSRunLoop getCurrentRunLoop(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_554( - _lib._class_NSRunLoop1, _lib._sel_currentRunLoop1); - return NSRunLoop._(_ret, _lib, retain: true, release: true); - } - - static NSRunLoop getMainRunLoop(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_554(_lib._class_NSRunLoop1, _lib._sel_mainRunLoop1); - return NSRunLoop._(_ret, _lib, retain: true, release: true); - } - - NSString? get currentMode { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_currentMode1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - ffi.Pointer<__CFRunLoop> getCFRunLoop() { - return _lib._objc_msgSend_555(_id, _lib._sel_getCFRunLoop1); - } - - void addTimer_forMode_(NSTimer timer, NSString mode) { - _lib._objc_msgSend_562( - _id, _lib._sel_addTimer_forMode_1, timer._id, mode._id); - } - - void addPort_forMode_(NSPort aPort, NSString mode) { - _lib._objc_msgSend_563( - _id, _lib._sel_addPort_forMode_1, aPort._id, mode._id); - } - - void removePort_forMode_(NSPort aPort, NSString mode) { - _lib._objc_msgSend_563( - _id, _lib._sel_removePort_forMode_1, aPort._id, mode._id); - } - - NSDate? limitDateForMode_(NSString mode) { - final _ret = - _lib._objc_msgSend_564(_id, _lib._sel_limitDateForMode_1, mode._id); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } - - void acceptInputForMode_beforeDate_(NSString mode, NSDate limitDate) { - _lib._objc_msgSend_565(_id, _lib._sel_acceptInputForMode_beforeDate_1, - mode._id, limitDate._id); - } - - void run() { - _lib._objc_msgSend_1(_id, _lib._sel_run1); - } - - void runUntilDate_(NSDate limitDate) { - _lib._objc_msgSend_540(_id, _lib._sel_runUntilDate_1, limitDate._id); - } - - bool runMode_beforeDate_(NSString mode, NSDate limitDate) { - return _lib._objc_msgSend_566( - _id, _lib._sel_runMode_beforeDate_1, mode._id, limitDate._id); - } - - void configureAsServer() { - _lib._objc_msgSend_1(_id, _lib._sel_configureAsServer1); - } - - void performInModes_block_(NSArray modes, ObjCBlock_ffiVoid block) { - _lib._objc_msgSend_567( - _id, _lib._sel_performInModes_block_1, modes._id, block._id); - } - - void performBlock_(ObjCBlock_ffiVoid block) { - _lib._objc_msgSend_532(_id, _lib._sel_performBlock_1, block._id); - } - - void performSelector_target_argument_order_modes_( - ffi.Pointer aSelector, - NSObject target, - NSObject? arg, - int order, - NSArray modes) { - _lib._objc_msgSend_568( - _id, - _lib._sel_performSelector_target_argument_order_modes_1, - aSelector, - target._id, - arg?._id ?? ffi.nullptr, - order, - modes._id); - } - - void cancelPerformSelector_target_argument_( - ffi.Pointer aSelector, NSObject target, NSObject? arg) { - _lib._objc_msgSend_533( - _id, - _lib._sel_cancelPerformSelector_target_argument_1, - aSelector, - target._id, - arg?._id ?? ffi.nullptr); - } - - void cancelPerformSelectorsWithTarget_(NSObject target) { - _lib._objc_msgSend_15( - _id, _lib._sel_cancelPerformSelectorsWithTarget_1, target._id); - } - - @override - NSRunLoop init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSRunLoop._(_ret, _lib, retain: true, release: true); - } - - static NSRunLoop new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSRunLoop1, _lib._sel_new1); - return NSRunLoop._(_ret, _lib, retain: false, release: true); - } - - static NSRunLoop allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSRunLoop1, _lib._sel_allocWithZone_1, zone); - return NSRunLoop._(_ret, _lib, retain: false, release: true); - } - - static NSRunLoop alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSRunLoop1, _lib._sel_alloc1); - return NSRunLoop._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSRunLoop1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSRunLoop1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSRunLoop1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSRunLoop1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSRunLoop1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSRunLoop1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSRunLoop1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSRunLoop1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSRunLoop1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -final class __CFRunLoop extends ffi.Opaque {} - -class NSTimer extends NSObject { - NSTimer._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSTimer] that points to the same underlying object as [other]. - static NSTimer castFrom(T other) { - return NSTimer._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSTimer] that wraps the given raw object pointer. - static NSTimer castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSTimer._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSTimer]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSTimer1); - } - - static NSTimer timerWithTimeInterval_invocation_repeats_( - AVFAudio _lib, double ti, NSInvocation invocation, bool yesOrNo) { - final _ret = _lib._objc_msgSend_556( - _lib._class_NSTimer1, - _lib._sel_timerWithTimeInterval_invocation_repeats_1, - ti, - invocation._id, - yesOrNo); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - static NSTimer scheduledTimerWithTimeInterval_invocation_repeats_( - AVFAudio _lib, double ti, NSInvocation invocation, bool yesOrNo) { - final _ret = _lib._objc_msgSend_556( - _lib._class_NSTimer1, - _lib._sel_scheduledTimerWithTimeInterval_invocation_repeats_1, - ti, - invocation._id, - yesOrNo); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - static NSTimer timerWithTimeInterval_target_selector_userInfo_repeats_( - AVFAudio _lib, - double ti, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? userInfo, - bool yesOrNo) { - final _ret = _lib._objc_msgSend_557( - _lib._class_NSTimer1, - _lib._sel_timerWithTimeInterval_target_selector_userInfo_repeats_1, - ti, - aTarget._id, - aSelector, - userInfo?._id ?? ffi.nullptr, - yesOrNo); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - static NSTimer - scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_( - AVFAudio _lib, - double ti, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? userInfo, - bool yesOrNo) { - final _ret = _lib._objc_msgSend_557( - _lib._class_NSTimer1, - _lib._sel_scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_1, - ti, - aTarget._id, - aSelector, - userInfo?._id ?? ffi.nullptr, - yesOrNo); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - static NSTimer timerWithTimeInterval_repeats_block_(AVFAudio _lib, - double interval, bool repeats, ObjCBlock_ffiVoid_NSTimer block) { - final _ret = _lib._objc_msgSend_558( - _lib._class_NSTimer1, - _lib._sel_timerWithTimeInterval_repeats_block_1, - interval, - repeats, - block._id); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - static NSTimer scheduledTimerWithTimeInterval_repeats_block_(AVFAudio _lib, - double interval, bool repeats, ObjCBlock_ffiVoid_NSTimer block) { - final _ret = _lib._objc_msgSend_558( - _lib._class_NSTimer1, - _lib._sel_scheduledTimerWithTimeInterval_repeats_block_1, - interval, - repeats, - block._id); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - NSTimer initWithFireDate_interval_repeats_block_(NSDate date, double interval, - bool repeats, ObjCBlock_ffiVoid_NSTimer block) { - final _ret = _lib._objc_msgSend_559( - _id, - _lib._sel_initWithFireDate_interval_repeats_block_1, - date._id, - interval, - repeats, - block._id); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - NSTimer initWithFireDate_interval_target_selector_userInfo_repeats_( - NSDate date, - double ti, - NSObject t, - ffi.Pointer s, - NSObject? ui, - bool rep) { - final _ret = _lib._objc_msgSend_560( - _id, - _lib._sel_initWithFireDate_interval_target_selector_userInfo_repeats_1, - date._id, - ti, - t._id, - s, - ui?._id ?? ffi.nullptr, - rep); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - void fire() { - _lib._objc_msgSend_1(_id, _lib._sel_fire1); - } - - NSDate get fireDate { - final _ret = _lib._objc_msgSend_172(_id, _lib._sel_fireDate1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - set fireDate(NSDate value) { - return _lib._objc_msgSend_561(_id, _lib._sel_setFireDate_1, value._id); - } - - double get timeInterval { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_timeInterval1) - : _lib._objc_msgSend_165(_id, _lib._sel_timeInterval1); - } - - double get tolerance { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_tolerance1) - : _lib._objc_msgSend_165(_id, _lib._sel_tolerance1); - } - - set tolerance(double value) { - return _lib._objc_msgSend_542(_id, _lib._sel_setTolerance_1, value); - } - - void invalidate() { - _lib._objc_msgSend_1(_id, _lib._sel_invalidate1); - } - - bool get valid { - return _lib._objc_msgSend_12(_id, _lib._sel_isValid1); - } - - NSObject? get userInfo { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_userInfo1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - NSTimer init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - static NSTimer new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSTimer1, _lib._sel_new1); - return NSTimer._(_ret, _lib, retain: false, release: true); - } - - static NSTimer allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSTimer1, _lib._sel_allocWithZone_1, zone); - return NSTimer._(_ret, _lib, retain: false, release: true); - } - - static NSTimer alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSTimer1, _lib._sel_alloc1); - return NSTimer._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSTimer1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSTimer1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSTimer1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSTimer1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSTimer1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSTimer1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSTimer1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSTimer1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSTimer1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -void _ObjCBlock_ffiVoid_NSTimer_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSTimer_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSTimer_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSTimer_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSTimer_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSTimer_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSTimer_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSTimer_closureRegistry[block.ref.target.address]!(arg0); - -class ObjCBlock_ffiVoid_NSTimer extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSTimer._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSTimer castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSTimer._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSTimer.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi - .NativeFunction arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSTimer_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSTimer.fromFunction( - AVFAudio lib, void Function(NSTimer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSTimer_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSTimer_registerClosure( - (ffi.Pointer arg0) => - fn(NSTimer._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSTimer.listener(AVFAudio lib, void Function(NSTimer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSTimer_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSTimer_registerClosure( - (ffi.Pointer arg0) => - fn(NSTimer._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; +// +// Generated by `package:ffigen`. +// ignore_for_file: type=lint +import 'package:ffi/ffi.dart' as pkg_ffi; +import 'package:objective_c/objective_c.dart' as objc; +import 'dart:ffi' as ffi; - void call(NSTimer arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0._id); +abstract class NSBinarySearchingOptions { + static const int NSBinarySearchingFirstEqual = 256; + static const int NSBinarySearchingLastEqual = 512; + static const int NSBinarySearchingInsertionIndex = 1024; } -class NSConnection extends NSObject { - NSConnection._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSConnection] that points to the same underlying object as [other]. - static NSConnection castFrom(T other) { - return NSConnection._(other._id, other._lib, retain: true, release: true); - } +abstract class NSStringEnumerationOptions { + static const int NSStringEnumerationByLines = 0; + static const int NSStringEnumerationByParagraphs = 1; + static const int NSStringEnumerationByComposedCharacterSequences = 2; + static const int NSStringEnumerationByWords = 3; + static const int NSStringEnumerationBySentences = 4; + static const int NSStringEnumerationByCaretPositions = 5; + static const int NSStringEnumerationByDeletionClusters = 6; + static const int NSStringEnumerationReverse = 256; + static const int NSStringEnumerationSubstringNotRequired = 512; + static const int NSStringEnumerationLocalized = 1024; +} - /// Returns a [NSConnection] that wraps the given raw object pointer. - static NSConnection castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSConnection._(other, lib, retain: retain, release: release); - } +class NSBundle extends objc.NSObject { + NSBundle._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns whether [obj] is an instance of [NSConnection]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSConnection1); - } + /// Constructs a [NSBundle] that points to the same underlying object as [other]. + NSBundle.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSDictionary get statistics { - final _ret = _lib._objc_msgSend_181(_id, _lib._sel_statistics1); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSBundle] that wraps the given raw object pointer. + NSBundle.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static NSArray allConnections(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSConnection1, _lib._sel_allConnections1); - return NSArray._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSBundle]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSBundle); } - static NSConnection defaultConnection(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_572( - _lib._class_NSConnection1, _lib._sel_defaultConnection1); - return NSConnection._(_ret, _lib, retain: true, release: true); + static NSBundle getMainBundle() { + final _ret = _objc_msgSend_1(_class_NSBundle, _sel_mainBundle); + return NSBundle.castFromPointer(_ret, retain: true, release: true); } - static NSConnection? connectionWithRegisteredName_host_( - AVFAudio _lib, NSString name, NSString? hostName) { - final _ret = _lib._objc_msgSend_573( - _lib._class_NSConnection1, - _lib._sel_connectionWithRegisteredName_host_1, - name._id, - hostName?._id ?? ffi.nullptr); + static NSBundle? bundleWithPath_(objc.NSString path) { + final _ret = + _objc_msgSend_2(_class_NSBundle, _sel_bundleWithPath_, path.pointer); return _ret.address == 0 ? null - : NSConnection._(_ret, _lib, retain: true, release: true); + : NSBundle.castFromPointer(_ret, retain: true, release: true); } - static NSConnection? connectionWithRegisteredName_host_usingNameServer_( - AVFAudio _lib, - NSString name, - NSString? hostName, - NSPortNameServer server) { - final _ret = _lib._objc_msgSend_578( - _lib._class_NSConnection1, - _lib._sel_connectionWithRegisteredName_host_usingNameServer_1, - name._id, - hostName?._id ?? ffi.nullptr, - server._id); + NSBundle? initWithPath_(objc.NSString path) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_initWithPath_, path.pointer); return _ret.address == 0 ? null - : NSConnection._(_ret, _lib, retain: true, release: true); + : NSBundle.castFromPointer(_ret, retain: true, release: true); } - static NSDistantObject? rootProxyForConnectionWithRegisteredName_host_( - AVFAudio _lib, NSString name, NSString? hostName) { - final _ret = _lib._objc_msgSend_583( - _lib._class_NSConnection1, - _lib._sel_rootProxyForConnectionWithRegisteredName_host_1, - name._id, - hostName?._id ?? ffi.nullptr); + static NSBundle? bundleWithURL_(objc.NSURL url) { + final _ret = + _objc_msgSend_3(_class_NSBundle, _sel_bundleWithURL_, url.pointer); return _ret.address == 0 ? null - : NSDistantObject._(_ret, _lib, retain: true, release: true); + : NSBundle.castFromPointer(_ret, retain: true, release: true); } - static NSDistantObject? - rootProxyForConnectionWithRegisteredName_host_usingNameServer_( - AVFAudio _lib, - NSString name, - NSString? hostName, - NSPortNameServer server) { - final _ret = _lib._objc_msgSend_584( - _lib._class_NSConnection1, - _lib._sel_rootProxyForConnectionWithRegisteredName_host_usingNameServer_1, - name._id, - hostName?._id ?? ffi.nullptr, - server._id); + NSBundle? initWithURL_(objc.NSURL url) { + final _ret = _objc_msgSend_3(this.pointer, _sel_initWithURL_, url.pointer); return _ret.address == 0 ? null - : NSDistantObject._(_ret, _lib, retain: true, release: true); + : NSBundle.castFromPointer(_ret, retain: true, release: true); } - static NSConnection? serviceConnectionWithName_rootObject_usingNameServer_( - AVFAudio _lib, NSString name, NSObject root, NSPortNameServer server) { - final _ret = _lib._objc_msgSend_585( - _lib._class_NSConnection1, - _lib._sel_serviceConnectionWithName_rootObject_usingNameServer_1, - name._id, - root._id, - server._id); - return _ret.address == 0 - ? null - : NSConnection._(_ret, _lib, retain: true, release: true); + static NSBundle bundleForClass_(objc.NSObject aClass) { + final _ret = + _objc_msgSend_4(_class_NSBundle, _sel_bundleForClass_, aClass.pointer); + return NSBundle.castFromPointer(_ret, retain: true, release: true); } - static NSConnection? serviceConnectionWithName_rootObject_( - AVFAudio _lib, NSString name, NSObject root) { - final _ret = _lib._objc_msgSend_586(_lib._class_NSConnection1, - _lib._sel_serviceConnectionWithName_rootObject_1, name._id, root._id); + static NSBundle? bundleWithIdentifier_(objc.NSString identifier) { + final _ret = _objc_msgSend_5( + _class_NSBundle, _sel_bundleWithIdentifier_, identifier.pointer); return _ret.address == 0 ? null - : NSConnection._(_ret, _lib, retain: true, release: true); + : NSBundle.castFromPointer(_ret, retain: true, release: true); } - double get requestTimeout { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_requestTimeout1) - : _lib._objc_msgSend_165(_id, _lib._sel_requestTimeout1); + static objc.NSArray getAllBundles() { + final _ret = _objc_msgSend_6(_class_NSBundle, _sel_allBundles); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set requestTimeout(double value) { - return _lib._objc_msgSend_542(_id, _lib._sel_setRequestTimeout_1, value); + static objc.NSArray getAllFrameworks() { + final _ret = _objc_msgSend_6(_class_NSBundle, _sel_allFrameworks); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - double get replyTimeout { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_replyTimeout1) - : _lib._objc_msgSend_165(_id, _lib._sel_replyTimeout1); + bool load() { + return _objc_msgSend_7(this.pointer, _sel_load); } - set replyTimeout(double value) { - return _lib._objc_msgSend_542(_id, _lib._sel_setReplyTimeout_1, value); + bool get loaded { + return _objc_msgSend_7(this.pointer, _sel_isLoaded); } - NSObject? get rootObject { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_rootObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + bool unload() { + return _objc_msgSend_7(this.pointer, _sel_unload); } - set rootObject(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setRootObject_1, value?._id ?? ffi.nullptr); + bool preflightAndReturnError_( + ffi.Pointer> error) { + return _objc_msgSend_8(this.pointer, _sel_preflightAndReturnError_, error); } - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + bool loadAndReturnError_(ffi.Pointer> error) { + return _objc_msgSend_8(this.pointer, _sel_loadAndReturnError_, error); } - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + objc.NSURL get bundleURL { + final _ret = _objc_msgSend_9(this.pointer, _sel_bundleURL); + return objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - bool get independentConversationQueueing { - return _lib._objc_msgSend_12( - _id, _lib._sel_independentConversationQueueing1); + objc.NSURL? get resourceURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_resourceURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - set independentConversationQueueing(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setIndependentConversationQueueing_1, value); + objc.NSURL? get executableURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_executableURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - bool get valid { - return _lib._objc_msgSend_12(_id, _lib._sel_isValid1); + objc.NSURL? URLForAuxiliaryExecutable_(objc.NSString executableName) { + final _ret = _objc_msgSend_11( + this.pointer, _sel_URLForAuxiliaryExecutable_, executableName.pointer); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - NSDistantObject get rootProxy { - final _ret = _lib._objc_msgSend_587(_id, _lib._sel_rootProxy1); - return NSDistantObject._(_ret, _lib, retain: true, release: true); + objc.NSURL? get privateFrameworksURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_privateFrameworksURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - void invalidate() { - _lib._objc_msgSend_1(_id, _lib._sel_invalidate1); + objc.NSURL? get sharedFrameworksURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_sharedFrameworksURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - void addRequestMode_(NSString rmode) { - _lib._objc_msgSend_247(_id, _lib._sel_addRequestMode_1, rmode._id); + objc.NSURL? get sharedSupportURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_sharedSupportURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - void removeRequestMode_(NSString rmode) { - _lib._objc_msgSend_247(_id, _lib._sel_removeRequestMode_1, rmode._id); + objc.NSURL? get builtInPlugInsURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_builtInPlugInsURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - NSArray get requestModes { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_requestModes1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSURL? get appStoreReceiptURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_appStoreReceiptURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - bool registerName_(NSString? name) { - return _lib._objc_msgSend_588( - _id, _lib._sel_registerName_1, name?._id ?? ffi.nullptr); + objc.NSString get bundlePath { + final _ret = _objc_msgSend_12(this.pointer, _sel_bundlePath); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool registerName_withNameServer_(NSString? name, NSPortNameServer server) { - return _lib._objc_msgSend_589(_id, _lib._sel_registerName_withNameServer_1, - name?._id ?? ffi.nullptr, server._id); + objc.NSString? get resourcePath { + final _ret = _objc_msgSend_13(this.pointer, _sel_resourcePath); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSConnection? connectionWithReceivePort_sendPort_( - AVFAudio _lib, NSPort? receivePort, NSPort? sendPort) { - final _ret = _lib._objc_msgSend_590( - _lib._class_NSConnection1, - _lib._sel_connectionWithReceivePort_sendPort_1, - receivePort?._id ?? ffi.nullptr, - sendPort?._id ?? ffi.nullptr); + objc.NSString? get executablePath { + final _ret = _objc_msgSend_13(this.pointer, _sel_executablePath); return _ret.address == 0 ? null - : NSConnection._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject? currentConversation(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_17( - _lib._class_NSConnection1, _lib._sel_currentConversation1); + objc.NSString? pathForAuxiliaryExecutable_(objc.NSString executableName) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_pathForAuxiliaryExecutable_, executableName.pointer); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSConnection? initWithReceivePort_sendPort_( - NSPort? receivePort, NSPort? sendPort) { - final _ret = _lib._objc_msgSend_590( - _id, - _lib._sel_initWithReceivePort_sendPort_1, - receivePort?._id ?? ffi.nullptr, - sendPort?._id ?? ffi.nullptr); + objc.NSString? get privateFrameworksPath { + final _ret = _objc_msgSend_13(this.pointer, _sel_privateFrameworksPath); return _ret.address == 0 ? null - : NSConnection._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSPort get sendPort { - final _ret = _lib._objc_msgSend_553(_id, _lib._sel_sendPort1); - return NSPort._(_ret, _lib, retain: true, release: true); + objc.NSString? get sharedFrameworksPath { + final _ret = _objc_msgSend_13(this.pointer, _sel_sharedFrameworksPath); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSPort get receivePort { - final _ret = _lib._objc_msgSend_553(_id, _lib._sel_receivePort1); - return NSPort._(_ret, _lib, retain: true, release: true); + objc.NSString? get sharedSupportPath { + final _ret = _objc_msgSend_13(this.pointer, _sel_sharedSupportPath); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void enableMultipleThreads() { - _lib._objc_msgSend_1(_id, _lib._sel_enableMultipleThreads1); + objc.NSString? get builtInPlugInsPath { + final _ret = _objc_msgSend_13(this.pointer, _sel_builtInPlugInsPath); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool get multipleThreadsEnabled { - return _lib._objc_msgSend_12(_id, _lib._sel_multipleThreadsEnabled1); + static objc.NSURL? URLForResource_withExtension_subdirectory_inBundleWithURL_( + objc.NSString? name, + objc.NSString? ext, + objc.NSString? subpath, + objc.NSURL bundleURL) { + final _ret = _objc_msgSend_15( + _class_NSBundle, + _sel_URLForResource_withExtension_subdirectory_inBundleWithURL_, + name?.pointer ?? ffi.nullptr, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr, + bundleURL.pointer); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - void addRunLoop_(NSRunLoop runloop) { - _lib._objc_msgSend_591(_id, _lib._sel_addRunLoop_1, runloop._id); + static objc.NSArray? + URLsForResourcesWithExtension_subdirectory_inBundleWithURL_( + objc.NSString? ext, objc.NSString? subpath, objc.NSURL bundleURL) { + final _ret = _objc_msgSend_16( + _class_NSBundle, + _sel_URLsForResourcesWithExtension_subdirectory_inBundleWithURL_, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr, + bundleURL.pointer); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void removeRunLoop_(NSRunLoop runloop) { - _lib._objc_msgSend_591(_id, _lib._sel_removeRunLoop_1, runloop._id); + objc.NSURL? URLForResource_withExtension_( + objc.NSString? name, objc.NSString? ext) { + final _ret = _objc_msgSend_17( + this.pointer, + _sel_URLForResource_withExtension_, + name?.pointer ?? ffi.nullptr, + ext?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - void runInNewThread() { - _lib._objc_msgSend_1(_id, _lib._sel_runInNewThread1); + objc.NSURL? URLForResource_withExtension_subdirectory_( + objc.NSString? name, objc.NSString? ext, objc.NSString? subpath) { + final _ret = _objc_msgSend_18( + this.pointer, + _sel_URLForResource_withExtension_subdirectory_, + name?.pointer ?? ffi.nullptr, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - NSArray get remoteObjects { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_remoteObjects1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSURL? URLForResource_withExtension_subdirectory_localization_( + objc.NSString? name, + objc.NSString? ext, + objc.NSString? subpath, + objc.NSString? localizationName) { + final _ret = _objc_msgSend_19( + this.pointer, + _sel_URLForResource_withExtension_subdirectory_localization_, + name?.pointer ?? ffi.nullptr, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr, + localizationName?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - NSArray get localObjects { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_localObjects1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSArray? URLsForResourcesWithExtension_subdirectory_( + objc.NSString? ext, objc.NSString? subpath) { + final _ret = _objc_msgSend_20( + this.pointer, + _sel_URLsForResourcesWithExtension_subdirectory_, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void dispatchWithComponents_(NSArray components) { - _lib._objc_msgSend_472( - _id, _lib._sel_dispatchWithComponents_1, components._id); + objc.NSArray? URLsForResourcesWithExtension_subdirectory_localization_( + objc.NSString? ext, + objc.NSString? subpath, + objc.NSString? localizationName) { + final _ret = _objc_msgSend_21( + this.pointer, + _sel_URLsForResourcesWithExtension_subdirectory_localization_, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr, + localizationName?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - @override - NSConnection init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSConnection._(_ret, _lib, retain: true, release: true); + static objc.NSString? pathForResource_ofType_inDirectory_( + objc.NSString? name, objc.NSString? ext, objc.NSString bundlePath) { + final _ret = _objc_msgSend_22( + _class_NSBundle, + _sel_pathForResource_ofType_inDirectory_, + name?.pointer ?? ffi.nullptr, + ext?.pointer ?? ffi.nullptr, + bundlePath.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSConnection new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSConnection1, _lib._sel_new1); - return NSConnection._(_ret, _lib, retain: false, release: true); + static objc.NSArray pathsForResourcesOfType_inDirectory_( + objc.NSString? ext, objc.NSString bundlePath) { + final _ret = _objc_msgSend_23( + _class_NSBundle, + _sel_pathsForResourcesOfType_inDirectory_, + ext?.pointer ?? ffi.nullptr, + bundlePath.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSConnection allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSConnection1, _lib._sel_allocWithZone_1, zone); - return NSConnection._(_ret, _lib, retain: false, release: true); + objc.NSString? pathForResource_ofType_( + objc.NSString? name, objc.NSString? ext) { + final _ret = _objc_msgSend_24(this.pointer, _sel_pathForResource_ofType_, + name?.pointer ?? ffi.nullptr, ext?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSConnection alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSConnection1, _lib._sel_alloc1); - return NSConnection._(_ret, _lib, retain: false, release: true); + objc.NSString? pathForResource_ofType_inDirectory_forLocalization_( + objc.NSString? name, + objc.NSString? ext, + objc.NSString? subpath, + objc.NSString? localizationName) { + final _ret = _objc_msgSend_25( + this.pointer, + _sel_pathForResource_ofType_inDirectory_forLocalization_, + name?.pointer ?? ffi.nullptr, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr, + localizationName?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSConnection1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + objc.NSArray pathsForResourcesOfType_inDirectory_forLocalization_( + objc.NSString? ext, + objc.NSString? subpath, + objc.NSString? localizationName) { + final _ret = _objc_msgSend_26( + this.pointer, + _sel_pathsForResourcesOfType_inDirectory_forLocalization_, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr, + localizationName?.pointer ?? ffi.nullptr); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSConnection1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + objc.NSString localizedStringForKey_value_table_( + objc.NSString key, objc.NSString? value, objc.NSString? tableName) { + final _ret = _objc_msgSend_27( + this.pointer, + _sel_localizedStringForKey_value_table_, + key.pointer, + value?.pointer ?? ffi.nullptr, + tableName?.pointer ?? ffi.nullptr); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSConnection1, _lib._sel_accessInstanceVariablesDirectly1); + NSAttributedString localizedAttributedStringForKey_value_table_( + objc.NSString key, objc.NSString? value, objc.NSString? tableName) { + final _ret = _objc_msgSend_64( + this.pointer, + _sel_localizedAttributedStringForKey_value_table_, + key.pointer, + value?.pointer ?? ffi.nullptr, + tableName?.pointer ?? ffi.nullptr); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSConnection1, _lib._sel_useStoredAccessor1); + objc.NSString? get bundleIdentifier { + final _ret = _objc_msgSend_13(this.pointer, _sel_bundleIdentifier); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSConnection1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSDictionary? get infoDictionary { + final _ret = _objc_msgSend_65(this.pointer, _sel_infoDictionary); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSConnection1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + objc.NSDictionary? get localizedInfoDictionary { + final _ret = _objc_msgSend_65(this.pointer, _sel_localizedInfoDictionary); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSConnection1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSObject? objectForInfoDictionaryKey_(objc.NSString key) { + final _ret = _objc_msgSend_2( + this.pointer, _sel_objectForInfoDictionaryKey_, key.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSConnection1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSObject? classNamed_(objc.NSString className) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_classNamed_, className.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSConnection1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSObject? get principalClass { + final _ret = _objc_msgSend_66(this.pointer, _sel_principalClass); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } -} - -class NSPortNameServer extends NSObject { - NSPortNameServer._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSPortNameServer] that points to the same underlying object as [other]. - static NSPortNameServer castFrom(T other) { - return NSPortNameServer._(other._id, other._lib, - retain: true, release: true); + objc.NSArray get preferredLocalizations { + final _ret = _objc_msgSend_6(this.pointer, _sel_preferredLocalizations); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSPortNameServer] that wraps the given raw object pointer. - static NSPortNameServer castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSPortNameServer._(other, lib, retain: retain, release: release); + objc.NSArray get localizations { + final _ret = _objc_msgSend_6(this.pointer, _sel_localizations); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSPortNameServer]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSPortNameServer1); + objc.NSString? get developmentLocalization { + final _ret = _objc_msgSend_13(this.pointer, _sel_developmentLocalization); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSPortNameServer systemDefaultPortNameServer(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_574( - _lib._class_NSPortNameServer1, _lib._sel_systemDefaultPortNameServer1); - return NSPortNameServer._(_ret, _lib, retain: true, release: true); + static objc.NSArray preferredLocalizationsFromArray_( + objc.NSArray localizationsArray) { + final _ret = _objc_msgSend_67(_class_NSBundle, + _sel_preferredLocalizationsFromArray_, localizationsArray.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSPort? portForName_(NSString name) { - final _ret = _lib._objc_msgSend_575(_id, _lib._sel_portForName_1, name._id); - return _ret.address == 0 - ? null - : NSPort._(_ret, _lib, retain: true, release: true); + static objc.NSArray preferredLocalizationsFromArray_forPreferences_( + objc.NSArray localizationsArray, objc.NSArray? preferencesArray) { + final _ret = _objc_msgSend_68( + _class_NSBundle, + _sel_preferredLocalizationsFromArray_forPreferences_, + localizationsArray.pointer, + preferencesArray?.pointer ?? ffi.nullptr); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSPort? portForName_host_(NSString name, NSString? host) { - final _ret = _lib._objc_msgSend_576( - _id, _lib._sel_portForName_host_1, name._id, host?._id ?? ffi.nullptr); + objc.NSArray? get executableArchitectures { + final _ret = _objc_msgSend_69(this.pointer, _sel_executableArchitectures); return _ret.address == 0 ? null - : NSPort._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool registerPort_name_(NSPort port, NSString name) { - return _lib._objc_msgSend_577( - _id, _lib._sel_registerPort_name_1, port._id, name._id); + void setPreservationPriority_forTags_(double priority, objc.NSSet tags) { + _objc_msgSend_70(this.pointer, _sel_setPreservationPriority_forTags_, + priority, tags.pointer); } - bool removePortForName_(NSString name) { - return _lib._objc_msgSend_64(_id, _lib._sel_removePortForName_1, name._id); + double preservationPriorityForTag_(objc.NSString tag) { + return objc.useMsgSendVariants + ? _objc_msgSend_71Fpret( + this.pointer, _sel_preservationPriorityForTag_, tag.pointer) + : _objc_msgSend_71( + this.pointer, _sel_preservationPriorityForTag_, tag.pointer); } @override - NSPortNameServer init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSPortNameServer._(_ret, _lib, retain: true, release: true); + NSBundle init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSBundle.castFromPointer(_ret, retain: true, release: true); } - static NSPortNameServer new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPortNameServer1, _lib._sel_new1); - return NSPortNameServer._(_ret, _lib, retain: false, release: true); + static NSBundle new1() { + final _ret = _objc_msgSend_40(_class_NSBundle, _sel_new); + return NSBundle.castFromPointer(_ret, retain: false, release: true); } - static NSPortNameServer allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSPortNameServer1, _lib._sel_allocWithZone_1, zone); - return NSPortNameServer._(_ret, _lib, retain: false, release: true); + static NSBundle allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSBundle, _sel_allocWithZone_, zone); + return NSBundle.castFromPointer(_ret, retain: false, release: true); } - static NSPortNameServer alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPortNameServer1, _lib._sel_alloc1); - return NSPortNameServer._(_ret, _lib, retain: false, release: true); + static NSBundle alloc() { + final _ret = _objc_msgSend_40(_class_NSBundle, _sel_alloc); + return NSBundle.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSPortNameServer1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSBundle, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSPortNameServer1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSBundle, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSPortNameServer1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSBundle, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPortNameServer1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSBundle, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSPortNameServer1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSBundle, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSPortNameServer1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSBundle, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSPortNameServer1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSPortNameServer1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSBundle, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSBundle, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSBundle, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSBundle = objc.getClass("NSBundle"); +late final _sel_mainBundle = objc.registerName("mainBundle"); +final _objc_msgSend_1 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +typedef instancetype = ffi.Pointer; +typedef Dartinstancetype = objc.NSObject; +late final _sel_bundleWithPath_ = objc.registerName("bundleWithPath:"); +final _objc_msgSend_2 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithPath_ = objc.registerName("initWithPath:"); +late final _sel_bundleWithURL_ = objc.registerName("bundleWithURL:"); +final _objc_msgSend_3 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithURL_ = objc.registerName("initWithURL:"); +late final _sel_bundleForClass_ = objc.registerName("bundleForClass:"); +final _objc_msgSend_4 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_bundleWithIdentifier_ = + objc.registerName("bundleWithIdentifier:"); +final _objc_msgSend_5 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_allBundles = objc.registerName("allBundles"); +final _objc_msgSend_6 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_allFrameworks = objc.registerName("allFrameworks"); +late final _sel_load = objc.registerName("load"); +final _objc_msgSend_7 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isLoaded = objc.registerName("isLoaded"); +late final _sel_unload = objc.registerName("unload"); +late final _sel_preflightAndReturnError_ = + objc.registerName("preflightAndReturnError:"); +final _objc_msgSend_8 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_loadAndReturnError_ = objc.registerName("loadAndReturnError:"); +late final _sel_bundleURL = objc.registerName("bundleURL"); +final _objc_msgSend_9 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_resourceURL = objc.registerName("resourceURL"); +final _objc_msgSend_10 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_executableURL = objc.registerName("executableURL"); +late final _sel_URLForAuxiliaryExecutable_ = + objc.registerName("URLForAuxiliaryExecutable:"); +final _objc_msgSend_11 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_privateFrameworksURL = + objc.registerName("privateFrameworksURL"); +late final _sel_sharedFrameworksURL = objc.registerName("sharedFrameworksURL"); +late final _sel_sharedSupportURL = objc.registerName("sharedSupportURL"); +late final _sel_builtInPlugInsURL = objc.registerName("builtInPlugInsURL"); +late final _sel_appStoreReceiptURL = objc.registerName("appStoreReceiptURL"); +late final _sel_bundlePath = objc.registerName("bundlePath"); +final _objc_msgSend_12 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_resourcePath = objc.registerName("resourcePath"); +final _objc_msgSend_13 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_executablePath = objc.registerName("executablePath"); +late final _sel_pathForAuxiliaryExecutable_ = + objc.registerName("pathForAuxiliaryExecutable:"); +final _objc_msgSend_14 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_privateFrameworksPath = + objc.registerName("privateFrameworksPath"); +late final _sel_sharedFrameworksPath = + objc.registerName("sharedFrameworksPath"); +late final _sel_sharedSupportPath = objc.registerName("sharedSupportPath"); +late final _sel_builtInPlugInsPath = objc.registerName("builtInPlugInsPath"); +late final _sel_URLForResource_withExtension_subdirectory_inBundleWithURL_ = + objc.registerName( + "URLForResource:withExtension:subdirectory:inBundleWithURL:"); +final _objc_msgSend_15 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_URLsForResourcesWithExtension_subdirectory_inBundleWithURL_ = + objc.registerName( + "URLsForResourcesWithExtension:subdirectory:inBundleWithURL:"); +final _objc_msgSend_16 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_URLForResource_withExtension_ = + objc.registerName("URLForResource:withExtension:"); +final _objc_msgSend_17 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_URLForResource_withExtension_subdirectory_ = + objc.registerName("URLForResource:withExtension:subdirectory:"); +final _objc_msgSend_18 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_URLForResource_withExtension_subdirectory_localization_ = objc + .registerName("URLForResource:withExtension:subdirectory:localization:"); +final _objc_msgSend_19 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_URLsForResourcesWithExtension_subdirectory_ = + objc.registerName("URLsForResourcesWithExtension:subdirectory:"); +final _objc_msgSend_20 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_URLsForResourcesWithExtension_subdirectory_localization_ = objc + .registerName("URLsForResourcesWithExtension:subdirectory:localization:"); +final _objc_msgSend_21 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_pathForResource_ofType_inDirectory_ = + objc.registerName("pathForResource:ofType:inDirectory:"); +final _objc_msgSend_22 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_pathsForResourcesOfType_inDirectory_ = + objc.registerName("pathsForResourcesOfType:inDirectory:"); +final _objc_msgSend_23 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_pathForResource_ofType_ = + objc.registerName("pathForResource:ofType:"); +final _objc_msgSend_24 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_pathForResource_ofType_inDirectory_forLocalization_ = + objc.registerName("pathForResource:ofType:inDirectory:forLocalization:"); +final _objc_msgSend_25 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_pathsForResourcesOfType_inDirectory_forLocalization_ = + objc.registerName("pathsForResourcesOfType:inDirectory:forLocalization:"); +final _objc_msgSend_26 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_localizedStringForKey_value_table_ = + objc.registerName("localizedStringForKey:value:table:"); +final _objc_msgSend_27 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSAttributedString extends objc.NSObject { + NSAttributedString._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPortNameServer1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} + /// Constructs a [NSAttributedString] that points to the same underlying object as [other]. + NSAttributedString.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); -class NSDistantObject extends NSProxy { - NSDistantObject._(ffi.Pointer id, AVFAudio lib, + /// Constructs a [NSAttributedString] that wraps the given raw object pointer. + NSAttributedString.castFromPointer(ffi.Pointer other, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : this._(other, retain: retain, release: release); - /// Returns a [NSDistantObject] that points to the same underlying object as [other]. - static NSDistantObject castFrom(T other) { - return NSDistantObject._(other._id, other._lib, - retain: true, release: true); + /// Returns whether [obj] is an instance of [NSAttributedString]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSAttributedString); } - /// Returns a [NSDistantObject] that wraps the given raw object pointer. - static NSDistantObject castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSDistantObject._(other, lib, retain: retain, release: release); + objc.NSString get string { + final _ret = _objc_msgSend_12(this.pointer, _sel_string); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSDistantObject]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSDistantObject1); + objc.NSDictionary attributesAtIndex_effectiveRange_( + int location, ffi.Pointer<_NSRange> range) { + final _ret = _objc_msgSend_28( + this.pointer, _sel_attributesAtIndex_effectiveRange_, location, range); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSObject? proxyWithTarget_connection_( - AVFAudio _lib, NSObject target, NSConnection connection) { - final _ret = _lib._objc_msgSend_580(_lib._class_NSDistantObject1, - _lib._sel_proxyWithTarget_connection_1, target._id, connection._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + int get length { + return _objc_msgSend_29(this.pointer, _sel_length); } - NSDistantObject? initWithTarget_connection_( - NSObject target, NSConnection connection) { - final _ret = _lib._objc_msgSend_580( - _id, _lib._sel_initWithTarget_connection_1, target._id, connection._id); + objc.NSObject? attribute_atIndex_effectiveRange_( + objc.NSString attrName, int location, ffi.Pointer<_NSRange> range) { + final _ret = _objc_msgSend_30( + this.pointer, + _sel_attribute_atIndex_effectiveRange_, + attrName.pointer, + location, + range); return _ret.address == 0 ? null - : NSDistantObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject proxyWithLocal_connection_( - AVFAudio _lib, NSObject target, NSConnection connection) { - final _ret = _lib._objc_msgSend_581(_lib._class_NSDistantObject1, - _lib._sel_proxyWithLocal_connection_1, target._id, connection._id); - return NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSDistantObject initWithLocal_connection_( - NSObject target, NSConnection connection) { - final _ret = _lib._objc_msgSend_581( - _id, _lib._sel_initWithLocal_connection_1, target._id, connection._id); - return NSDistantObject._(_ret, _lib, retain: true, release: true); + NSAttributedString attributedSubstringFromRange_(_NSRange range) { + final _ret = _objc_msgSend_31( + this.pointer, _sel_attributedSubstringFromRange_, range); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSDistantObject? initWithCoder_(NSCoder inCoder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, inCoder._id); + objc.NSDictionary attributesAtIndex_longestEffectiveRange_inRange_( + int location, ffi.Pointer<_NSRange> range, _NSRange rangeLimit) { + final _ret = _objc_msgSend_32( + this.pointer, + _sel_attributesAtIndex_longestEffectiveRange_inRange_, + location, + range, + rangeLimit); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + objc.NSObject? attribute_atIndex_longestEffectiveRange_inRange_( + objc.NSString attrName, + int location, + ffi.Pointer<_NSRange> range, + _NSRange rangeLimit) { + final _ret = _objc_msgSend_33( + this.pointer, + _sel_attribute_atIndex_longestEffectiveRange_inRange_, + attrName.pointer, + location, + range, + rangeLimit); return _ret.address == 0 ? null - : NSDistantObject._(_ret, _lib, retain: true, release: true); - } - - void setProtocolForProxy_(Protocol? proto) { - _lib._objc_msgSend_582( - _id, _lib._sel_setProtocolForProxy_1, proto?._id ?? ffi.nullptr); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSConnection get connectionForProxy { - final _ret = _lib._objc_msgSend_572(_id, _lib._sel_connectionForProxy1); - return NSConnection._(_ret, _lib, retain: true, release: true); + bool isEqualToAttributedString_(NSAttributedString other) { + return _objc_msgSend_34( + this.pointer, _sel_isEqualToAttributedString_, other.pointer); } - static NSObject alloc(AVFAudio _lib) { + NSAttributedString initWithString_(objc.NSString str) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSDistantObject1, _lib._sel_alloc1); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static bool respondsToSelector_( - AVFAudio _lib, ffi.Pointer aSelector) { - return _lib._objc_msgSend_4(_lib._class_NSDistantObject1, - _lib._sel_respondsToSelector_1, aSelector); - } -} - -class NSProxy extends _ObjCWrapper { - NSProxy._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSProxy] that points to the same underlying object as [other]. - static NSProxy castFrom(T other) { - return NSProxy._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSProxy] that wraps the given raw object pointer. - static NSProxy castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSProxy._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSProxy]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSProxy1); + _objc_msgSend_35(this.pointer, _sel_initWithString_, str.pointer); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static NSObject alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSProxy1, _lib._sel_alloc1); - return NSObject._(_ret, _lib, retain: false, release: true); + NSAttributedString initWithString_attributes_( + objc.NSString str, objc.NSDictionary? attrs) { + final _ret = _objc_msgSend_36(this.pointer, _sel_initWithString_attributes_, + str.pointer, attrs?.pointer ?? ffi.nullptr); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static NSObject allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSProxy1, _lib._sel_allocWithZone_1, zone); - return NSObject._(_ret, _lib, retain: false, release: true); + NSAttributedString initWithAttributedString_(NSAttributedString attrStr) { + final _ret = _objc_msgSend_37( + this.pointer, _sel_initWithAttributedString_, attrStr.pointer); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static NSObject class1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSProxy1, _lib._sel_class1); - return NSObject._(_ret, _lib, retain: true, release: true); + void enumerateAttributesInRange_options_usingBlock_(_NSRange enumerationRange, + int opts, ObjCBlock_ffiVoid_NSDictionary_NSRange_bool block) { + _objc_msgSend_38( + this.pointer, + _sel_enumerateAttributesInRange_options_usingBlock_, + enumerationRange, + opts, + block.pointer); } - void forwardInvocation_(NSInvocation invocation) { - _lib._objc_msgSend_421(_id, _lib._sel_forwardInvocation_1, invocation._id); + void enumerateAttribute_inRange_options_usingBlock_( + objc.NSString attrName, + _NSRange enumerationRange, + int opts, + ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool block) { + _objc_msgSend_39( + this.pointer, + _sel_enumerateAttribute_inRange_options_usingBlock_, + attrName.pointer, + enumerationRange, + opts, + block.pointer); } - NSMethodSignature? methodSignatureForSelector_(ffi.Pointer sel) { - final _ret = _lib._objc_msgSend_579( - _id, _lib._sel_methodSignatureForSelector_1, sel); + NSAttributedString? + initWithContentsOfMarkdownFileAtURL_options_baseURL_error_( + objc.NSURL markdownFile, + NSAttributedStringMarkdownParsingOptions? options, + objc.NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _objc_msgSend_53( + this.pointer, + _sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_, + markdownFile.pointer, + options?.pointer ?? ffi.nullptr, + baseURL?.pointer ?? ffi.nullptr, + error); return _ret.address == 0 ? null - : NSMethodSignature._(_ret, _lib, retain: true, release: true); - } - - void dealloc() { - _lib._objc_msgSend_1(_id, _lib._sel_dealloc1); + : NSAttributedString.castFromPointer(_ret, retain: true, release: true); } - void finalize() { - _lib._objc_msgSend_1(_id, _lib._sel_finalize1); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get debugDescription { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_debugDescription1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static bool respondsToSelector_( - AVFAudio _lib, ffi.Pointer aSelector) { - return _lib._objc_msgSend_4( - _lib._class_NSProxy1, _lib._sel_respondsToSelector_1, aSelector); - } - - bool allowsWeakReference() { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsWeakReference1); + NSAttributedString? initWithMarkdown_options_baseURL_error_( + objc.NSData markdown, + NSAttributedStringMarkdownParsingOptions? options, + objc.NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _objc_msgSend_54( + this.pointer, + _sel_initWithMarkdown_options_baseURL_error_, + markdown.pointer, + options?.pointer ?? ffi.nullptr, + baseURL?.pointer ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : NSAttributedString.castFromPointer(_ret, retain: true, release: true); } - bool retainWeakReference() { - return _lib._objc_msgSend_12(_id, _lib._sel_retainWeakReference1); + NSAttributedString? initWithMarkdownString_options_baseURL_error_( + objc.NSString markdownString, + NSAttributedStringMarkdownParsingOptions? options, + objc.NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _objc_msgSend_55( + this.pointer, + _sel_initWithMarkdownString_options_baseURL_error_, + markdownString.pointer, + options?.pointer ?? ffi.nullptr, + baseURL?.pointer ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : NSAttributedString.castFromPointer(_ret, retain: true, release: true); } -} - -class NSClassDescription extends NSObject { - NSClassDescription._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSClassDescription] that points to the same underlying object as [other]. - static NSClassDescription castFrom(T other) { - return NSClassDescription._(other._id, other._lib, + NSAttributedString initWithFormat_options_locale_( + NSAttributedString format, int options, objc.NSLocale? locale) { + final _ret = _objc_msgSend_56( + this.pointer, + _sel_initWithFormat_options_locale_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr); + return NSAttributedString.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSClassDescription] that wraps the given raw object pointer. - static NSClassDescription castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSClassDescription._(other, lib, retain: retain, release: release); + NSAttributedString initWithFormat_options_locale_arguments_( + NSAttributedString format, + int options, + objc.NSLocale? locale, + ffi.Pointer<__va_list_tag> arguments) { + final _ret = _objc_msgSend_57( + this.pointer, + _sel_initWithFormat_options_locale_arguments_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr, + arguments); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSClassDescription]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSClassDescription1); + static NSAttributedString localizedAttributedStringWithFormat_( + NSAttributedString format) { + final _ret = _objc_msgSend_37(_class_NSAttributedString, + _sel_localizedAttributedStringWithFormat_, format.pointer); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static void registerClassDescription_forClass_( - AVFAudio _lib, NSClassDescription description, NSObject aClass) { - _lib._objc_msgSend_598( - _lib._class_NSClassDescription1, - _lib._sel_registerClassDescription_forClass_1, - description._id, - aClass._id); + static NSAttributedString localizedAttributedStringWithFormat_options_( + NSAttributedString format, int options) { + final _ret = _objc_msgSend_58( + _class_NSAttributedString, + _sel_localizedAttributedStringWithFormat_options_, + format.pointer, + options); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static void invalidateClassDescriptionCache(AVFAudio _lib) { - _lib._objc_msgSend_1(_lib._class_NSClassDescription1, - _lib._sel_invalidateClassDescriptionCache1); + NSAttributedString initWithFormat_options_locale_context_( + NSAttributedString format, + int options, + objc.NSLocale? locale, + objc.NSDictionary context) { + final _ret = _objc_msgSend_59( + this.pointer, + _sel_initWithFormat_options_locale_context_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr, + context.pointer); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static NSClassDescription? classDescriptionForClass_( - AVFAudio _lib, NSObject aClass) { - final _ret = _lib._objc_msgSend_599(_lib._class_NSClassDescription1, - _lib._sel_classDescriptionForClass_1, aClass._id); - return _ret.address == 0 - ? null - : NSClassDescription._(_ret, _lib, retain: true, release: true); + NSAttributedString initWithFormat_options_locale_context_arguments_( + NSAttributedString format, + int options, + objc.NSLocale? locale, + objc.NSDictionary context, + ffi.Pointer<__va_list_tag> arguments) { + final _ret = _objc_msgSend_60( + this.pointer, + _sel_initWithFormat_options_locale_context_arguments_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr, + context.pointer, + arguments); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - @override - NSArray get attributeKeys { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_attributeKeys1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSAttributedString localizedAttributedStringWithFormat_context_( + NSAttributedString format, objc.NSDictionary context) { + final _ret = _objc_msgSend_61( + _class_NSAttributedString, + _sel_localizedAttributedStringWithFormat_context_, + format.pointer, + context.pointer); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - @override - NSArray get toOneRelationshipKeys { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_toOneRelationshipKeys1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSAttributedString + localizedAttributedStringWithFormat_options_context_( + NSAttributedString format, int options, objc.NSDictionary context) { + final _ret = _objc_msgSend_62( + _class_NSAttributedString, + _sel_localizedAttributedStringWithFormat_options_context_, + format.pointer, + options, + context.pointer); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - @override - NSArray get toManyRelationshipKeys { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_toManyRelationshipKeys1); - return NSArray._(_ret, _lib, retain: true, release: true); + NSAttributedString attributedStringByInflectingString() { + final _ret = + _objc_msgSend_63(this.pointer, _sel_attributedStringByInflectingString); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } @override - NSString? inverseForRelationshipKey_(NSString relationshipKey) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_inverseForRelationshipKey_1, relationshipKey._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + NSAttributedString init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - @override - NSClassDescription init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSClassDescription._(_ret, _lib, retain: true, release: true); + static NSAttributedString new1() { + final _ret = _objc_msgSend_40(_class_NSAttributedString, _sel_new); + return NSAttributedString.castFromPointer(_ret, + retain: false, release: true); } - static NSClassDescription new1(AVFAudio _lib) { + static NSAttributedString allocWithZone_(ffi.Pointer<_NSZone> zone) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSClassDescription1, _lib._sel_new1); - return NSClassDescription._(_ret, _lib, retain: false, release: true); - } - - static NSClassDescription allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSClassDescription1, _lib._sel_allocWithZone_1, zone); - return NSClassDescription._(_ret, _lib, retain: false, release: true); + _objc_msgSend_47(_class_NSAttributedString, _sel_allocWithZone_, zone); + return NSAttributedString.castFromPointer(_ret, + retain: false, release: true); } - static NSClassDescription alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSClassDescription1, _lib._sel_alloc1); - return NSClassDescription._(_ret, _lib, retain: false, release: true); + static NSAttributedString alloc() { + final _ret = _objc_msgSend_40(_class_NSAttributedString, _sel_alloc); + return NSAttributedString.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSClassDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSAttributedString, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSClassDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSAttributedString, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSClassDescription1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSAttributedString, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSClassDescription1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSAttributedString, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSClassDescription1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSAttributedString, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSClassDescription1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSAttributedString, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSClassDescription1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSAttributedString, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSClassDescription1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSAttributedString, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSClassDescription1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSAttributedString, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -class NSScriptObjectSpecifier extends NSObject { - NSScriptObjectSpecifier._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); +late final _class_NSAttributedString = objc.getClass("NSAttributedString"); +late final _sel_string = objc.registerName("string"); - /// Returns a [NSScriptObjectSpecifier] that points to the same underlying object as [other]. - static NSScriptObjectSpecifier castFrom(T other) { - return NSScriptObjectSpecifier._(other._id, other._lib, - retain: true, release: true); - } +final class _NSRange extends ffi.Struct { + @ffi.UnsignedLong() + external int location; - /// Returns a [NSScriptObjectSpecifier] that wraps the given raw object pointer. - static NSScriptObjectSpecifier castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSScriptObjectSpecifier._(other, lib, - retain: retain, release: release); - } + @ffi.UnsignedLong() + external int length; +} - /// Returns whether [obj] is an instance of [NSScriptObjectSpecifier]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSScriptObjectSpecifier1); - } +late final _sel_attributesAtIndex_effectiveRange_ = + objc.registerName("attributesAtIndex:effectiveRange:"); +final _objc_msgSend_28 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_NSRange>)>(); +late final _sel_length = objc.registerName("length"); +final _objc_msgSend_29 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_attribute_atIndex_effectiveRange_ = + objc.registerName("attribute:atIndex:effectiveRange:"); +final _objc_msgSend_30 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_NSRange>)>(); +late final _sel_attributedSubstringFromRange_ = + objc.registerName("attributedSubstringFromRange:"); +final _objc_msgSend_31 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_attributesAtIndex_longestEffectiveRange_inRange_ = + objc.registerName("attributesAtIndex:longestEffectiveRange:inRange:"); +final _objc_msgSend_32 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>, + _NSRange)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_NSRange>, + _NSRange)>(); +late final _sel_attribute_atIndex_longestEffectiveRange_inRange_ = + objc.registerName("attribute:atIndex:longestEffectiveRange:inRange:"); +final _objc_msgSend_33 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>, + _NSRange)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_NSRange>, + _NSRange)>(); +late final _sel_isEqualToAttributedString_ = + objc.registerName("isEqualToAttributedString:"); +final _objc_msgSend_34 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithString_ = objc.registerName("initWithString:"); +final _objc_msgSend_35 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithString_attributes_ = + objc.registerName("initWithString:attributes:"); +final _objc_msgSend_36 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithAttributedString_ = + objc.registerName("initWithAttributedString:"); +final _objc_msgSend_37 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - static NSScriptObjectSpecifier? objectSpecifierWithDescriptor_( - AVFAudio _lib, NSAppleEventDescriptor descriptor) { - final _ret = _lib._objc_msgSend_624(_lib._class_NSScriptObjectSpecifier1, - _lib._sel_objectSpecifierWithDescriptor_1, descriptor._id); - return _ret.address == 0 - ? null - : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); - } +abstract class NSAttributedStringEnumerationOptions { + static const int NSAttributedStringEnumerationReverse = 2; + static const int + NSAttributedStringEnumerationLongestEffectiveRangeNotRequired = 1048576; +} - NSScriptObjectSpecifier initWithContainerSpecifier_key_( - NSScriptObjectSpecifier container, NSString property) { - final _ret = _lib._objc_msgSend_625( - _id, - _lib._sel_initWithContainerSpecifier_key_1, - container._id, - property._id); - return NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); - } +void _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + _NSRange arg1, ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer, _NSRange, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistry = , _NSRange, ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_registerClosure( + void Function( + ffi.Pointer, _NSRange, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - NSScriptObjectSpecifier - initWithContainerClassDescription_containerSpecifier_key_( - NSScriptClassDescription classDesc, - NSScriptObjectSpecifier? container, - NSString property) { - final _ret = _lib._objc_msgSend_645( - _id, - _lib._sel_initWithContainerClassDescription_containerSpecifier_key_1, - classDesc._id, - container?._id ?? ffi.nullptr, - property._id); - return NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); - } +void _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); - NSScriptObjectSpecifier? initWithCoder_(NSCoder inCoder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, inCoder._id); - return _ret.address == 0 - ? null - : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); - } +class ObjCBlock_ffiVoid_NSDictionary_NSRange_bool extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSDictionary_NSRange_bool._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); - NSScriptObjectSpecifier? get childSpecifier { - final _ret = _lib._objc_msgSend_632(_id, _lib._sel_childSpecifier1); - return _ret.address == 0 - ? null - : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSDictionary_NSRange_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSDictionary_NSRange_bool._(pointer, + retain: retain, release: release); } - set childSpecifier(NSScriptObjectSpecifier? value) { - return _lib._objc_msgSend_633( - _id, _lib._sel_setChildSpecifier_1, value?._id ?? ffi.nullptr); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSDictionary_NSRange_bool.fromFunctionPointer( + ffi.Pointer< + ffi + .NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + _NSRange arg1, ffi.Pointer arg2)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - NSScriptObjectSpecifier? get containerSpecifier { - final _ret = _lib._objc_msgSend_632(_id, _lib._sel_containerSpecifier1); - return _ret.address == 0 - ? null - : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSDictionary_NSRange_bool.fromFunction( + void Function(objc.NSDictionary, _NSRange, ffi.Pointer) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_registerClosure( + (ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2) => + fn(objc.NSDictionary.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.Pointer? _dartFuncTrampoline; - set containerSpecifier(NSScriptObjectSpecifier? value) { - return _lib._objc_msgSend_633( - _id, _lib._sel_setContainerSpecifier_1, value?._id ?? ffi.nullptr); - } + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSDictionary_NSRange_bool.listener( + void Function(objc.NSDictionary, _NSRange, ffi.Pointer) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_registerClosure( + (ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2) => + fn(objc.NSDictionary.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>? _dartFuncListenerTrampoline; - bool get containerIsObjectBeingTested { - return _lib._objc_msgSend_12(_id, _lib._sel_containerIsObjectBeingTested1); - } + void call( + objc.NSDictionary arg0, _NSRange arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>()(pointer, arg0.pointer, arg1, arg2); +} + +late final _sel_enumerateAttributesInRange_options_usingBlock_ = + objc.registerName("enumerateAttributesInRange:options:usingBlock:"); +final _objc_msgSend_38 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + int, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + _NSRange arg1, ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer, _NSRange, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureRegistry = , _NSRange, ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_registerClosure( + void Function( + ffi.Pointer, _NSRange, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - set containerIsObjectBeingTested(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setContainerIsObjectBeingTested_1, value); - } +void _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); - bool get containerIsRangeContainerObject { - return _lib._objc_msgSend_12( - _id, _lib._sel_containerIsRangeContainerObject1); - } +class ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); - set containerIsRangeContainerObject(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setContainerIsRangeContainerObject_1, value); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool._(pointer, + retain: retain, release: release); } - NSString get key { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_key1); - return NSString._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + _NSRange arg1, ffi.Pointer arg2)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - set key(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setKey_1, value._id); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool.fromFunction( + void Function(objc.NSObject?, _NSRange, ffi.Pointer) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_registerClosure( + (ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2) => + fn(arg0.address == 0 ? null : objc.NSObject.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.Pointer? _dartFuncTrampoline; - NSScriptClassDescription? get containerClassDescription { - final _ret = - _lib._objc_msgSend_628(_id, _lib._sel_containerClassDescription1); - return _ret.address == 0 - ? null - : NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool.listener( + void Function(objc.NSObject?, _NSRange, ffi.Pointer) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_registerClosure( + (ffi.Pointer arg0, _NSRange arg1, ffi.Pointer arg2) => + fn(arg0.address == 0 ? null : objc.NSObject.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(objc.NSObject? arg0, _NSRange arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1, arg2); +} + +late final _sel_enumerateAttribute_inRange_options_usingBlock_ = + objc.registerName("enumerateAttribute:inRange:options:usingBlock:"); +final _objc_msgSend_39 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + int, + ffi.Pointer)>(); + +class NSAttributedStringMarkdownParsingOptions extends objc.NSObject { + NSAttributedStringMarkdownParsingOptions._( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSAttributedStringMarkdownParsingOptions] that points to the same underlying object as [other]. + NSAttributedStringMarkdownParsingOptions.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSAttributedStringMarkdownParsingOptions] that wraps the given raw object pointer. + NSAttributedStringMarkdownParsingOptions.castFromPointer( + ffi.Pointer other, + {bool retain = false, + bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSAttributedStringMarkdownParsingOptions]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, + _class_NSAttributedStringMarkdownParsingOptions); } - set containerClassDescription(NSScriptClassDescription? value) { - return _lib._objc_msgSend_647(_id, _lib._sel_setContainerClassDescription_1, - value?._id ?? ffi.nullptr); + @override + NSAttributedStringMarkdownParsingOptions init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSAttributedStringMarkdownParsingOptions.castFromPointer(_ret, + retain: true, release: true); } - NSScriptClassDescription? get keyClassDescription { - final _ret = _lib._objc_msgSend_628(_id, _lib._sel_keyClassDescription1); - return _ret.address == 0 - ? null - : NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + bool get allowsExtendedAttributes { + return _objc_msgSend_7(this.pointer, _sel_allowsExtendedAttributes); } - ffi.Pointer indicesOfObjectsByEvaluatingWithContainer_count_( - NSObject container, ffi.Pointer count) { - return _lib._objc_msgSend_648( - _id, - _lib._sel_indicesOfObjectsByEvaluatingWithContainer_count_1, - container._id, - count); + set allowsExtendedAttributes(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAllowsExtendedAttributes_, value); } - NSObject? objectsByEvaluatingWithContainers_(NSObject containers) { - final _ret = _lib._objc_msgSend_16( - _id, _lib._sel_objectsByEvaluatingWithContainers_1, containers._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + int get interpretedSyntax { + return _objc_msgSend_42(this.pointer, _sel_interpretedSyntax); } - NSObject? get objectsByEvaluatingSpecifier { - final _ret = - _lib._objc_msgSend_17(_id, _lib._sel_objectsByEvaluatingSpecifier1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + set interpretedSyntax(int value) { + return _objc_msgSend_43(this.pointer, _sel_setInterpretedSyntax_, value); } - int get evaluationErrorNumber { - return _lib._objc_msgSend_83(_id, _lib._sel_evaluationErrorNumber1); + int get failurePolicy { + return _objc_msgSend_44(this.pointer, _sel_failurePolicy); } - set evaluationErrorNumber(int value) { - return _lib._objc_msgSend_635( - _id, _lib._sel_setEvaluationErrorNumber_1, value); + set failurePolicy(int value) { + return _objc_msgSend_45(this.pointer, _sel_setFailurePolicy_, value); } - NSScriptObjectSpecifier? get evaluationErrorSpecifier { - final _ret = - _lib._objc_msgSend_632(_id, _lib._sel_evaluationErrorSpecifier1); + objc.NSString? get languageCode { + final _ret = _objc_msgSend_13(this.pointer, _sel_languageCode); return _ret.address == 0 ? null - : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSAppleEventDescriptor? get descriptor { - final _ret = _lib._objc_msgSend_636(_id, _lib._sel_descriptor1); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + set languageCode(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setLanguageCode_, value?.pointer ?? ffi.nullptr); } - @override - NSScriptObjectSpecifier init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + bool get appliesSourcePositionAttributes { + return _objc_msgSend_7(this.pointer, _sel_appliesSourcePositionAttributes); + } + + set appliesSourcePositionAttributes(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAppliesSourcePositionAttributes_, value); } - static NSScriptObjectSpecifier new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScriptObjectSpecifier1, _lib._sel_new1); - return NSScriptObjectSpecifier._(_ret, _lib, retain: false, release: true); + static NSAttributedStringMarkdownParsingOptions new1() { + final _ret = _objc_msgSend_40( + _class_NSAttributedStringMarkdownParsingOptions, _sel_new); + return NSAttributedStringMarkdownParsingOptions.castFromPointer(_ret, + retain: false, release: true); } - static NSScriptObjectSpecifier allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSScriptObjectSpecifier1, _lib._sel_allocWithZone_1, zone); - return NSScriptObjectSpecifier._(_ret, _lib, retain: false, release: true); + static NSAttributedStringMarkdownParsingOptions allocWithZone_( + ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSAttributedStringMarkdownParsingOptions, + _sel_allocWithZone_, + zone); + return NSAttributedStringMarkdownParsingOptions.castFromPointer(_ret, + retain: false, release: true); } - static NSScriptObjectSpecifier alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScriptObjectSpecifier1, _lib._sel_alloc1); - return NSScriptObjectSpecifier._(_ret, _lib, retain: false, release: true); + static NSAttributedStringMarkdownParsingOptions alloc() { + final _ret = _objc_msgSend_40( + _class_NSAttributedStringMarkdownParsingOptions, _sel_alloc); + return NSAttributedStringMarkdownParsingOptions.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSScriptObjectSpecifier1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSAttributedStringMarkdownParsingOptions, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSScriptObjectSpecifier1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSAttributedStringMarkdownParsingOptions, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSScriptObjectSpecifier1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7(_class_NSAttributedStringMarkdownParsingOptions, + _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSScriptObjectSpecifier1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSAttributedStringMarkdownParsingOptions, + _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSScriptObjectSpecifier1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50( + _class_NSAttributedStringMarkdownParsingOptions, + _sel_keyPathsForValuesAffectingValueForKey_, + key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSScriptObjectSpecifier1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSAttributedStringMarkdownParsingOptions, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSScriptObjectSpecifier1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSAttributedStringMarkdownParsingOptions, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSAttributedStringMarkdownParsingOptions, + _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSAttributedStringMarkdownParsingOptions, + _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSAttributedStringMarkdownParsingOptions = + objc.getClass("NSAttributedStringMarkdownParsingOptions"); +late final _sel_init = objc.registerName("init"); +final _objc_msgSend_40 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_allowsExtendedAttributes = + objc.registerName("allowsExtendedAttributes"); +late final _sel_setAllowsExtendedAttributes_ = + objc.registerName("setAllowsExtendedAttributes:"); +final _objc_msgSend_41 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, bool)>(); - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSScriptObjectSpecifier1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } +abstract class NSAttributedStringMarkdownInterpretedSyntax { + static const int NSAttributedStringMarkdownInterpretedSyntaxFull = 0; + static const int NSAttributedStringMarkdownInterpretedSyntaxInlineOnly = 1; + static const int + NSAttributedStringMarkdownInterpretedSyntaxInlineOnlyPreservingWhitespace = + 2; +} - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSScriptObjectSpecifier1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } +late final _sel_interpretedSyntax = objc.registerName("interpretedSyntax"); +final _objc_msgSend_42 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setInterpretedSyntax_ = + objc.registerName("setInterpretedSyntax:"); +final _objc_msgSend_43 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); + +abstract class NSAttributedStringMarkdownParsingFailurePolicy { + static const int NSAttributedStringMarkdownParsingFailureReturnError = 0; + static const int + NSAttributedStringMarkdownParsingFailureReturnPartiallyParsedIfPossible = + 1; } -class NSAppleEventDescriptor extends NSObject { - NSAppleEventDescriptor._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); +late final _sel_failurePolicy = objc.registerName("failurePolicy"); +final _objc_msgSend_44 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setFailurePolicy_ = objc.registerName("setFailurePolicy:"); +final _objc_msgSend_45 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_languageCode = objc.registerName("languageCode"); +late final _sel_setLanguageCode_ = objc.registerName("setLanguageCode:"); +final _objc_msgSend_46 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_appliesSourcePositionAttributes = + objc.registerName("appliesSourcePositionAttributes"); +late final _sel_setAppliesSourcePositionAttributes_ = + objc.registerName("setAppliesSourcePositionAttributes:"); +late final _sel_new = objc.registerName("new"); - /// Returns a [NSAppleEventDescriptor] that points to the same underlying object as [other]. - static NSAppleEventDescriptor castFrom(T other) { - return NSAppleEventDescriptor._(other._id, other._lib, - retain: true, release: true); - } +final class _NSZone extends ffi.Opaque {} - /// Returns a [NSAppleEventDescriptor] that wraps the given raw object pointer. - static NSAppleEventDescriptor castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSAppleEventDescriptor._(other, lib, - retain: retain, release: release); - } +late final _sel_allocWithZone_ = objc.registerName("allocWithZone:"); +final _objc_msgSend_47 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_NSZone>)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_NSZone>)>(); +late final _sel_alloc = objc.registerName("alloc"); +late final _sel_cancelPreviousPerformRequestsWithTarget_selector_object_ = objc + .registerName("cancelPreviousPerformRequestsWithTarget:selector:object:"); +final _objc_msgSend_48 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_cancelPreviousPerformRequestsWithTarget_ = + objc.registerName("cancelPreviousPerformRequestsWithTarget:"); +final _objc_msgSend_49 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_accessInstanceVariablesDirectly = + objc.registerName("accessInstanceVariablesDirectly"); +late final _sel_useStoredAccessor = objc.registerName("useStoredAccessor"); +late final _sel_keyPathsForValuesAffectingValueForKey_ = + objc.registerName("keyPathsForValuesAffectingValueForKey:"); +final _objc_msgSend_50 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_automaticallyNotifiesObserversForKey_ = + objc.registerName("automaticallyNotifiesObserversForKey:"); +final _objc_msgSend_51 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setKeys_triggerChangeNotificationsForDependentKey_ = + objc.registerName("setKeys:triggerChangeNotificationsForDependentKey:"); +final _objc_msgSend_52 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_classFallbacksForKeyedArchiver = + objc.registerName("classFallbacksForKeyedArchiver"); +late final _sel_classForKeyedUnarchiver = + objc.registerName("classForKeyedUnarchiver"); +final _objc_msgSend_0 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isKindOfClass_ = objc.registerName("isKindOfClass:"); +late final _sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_ = + objc.registerName( + "initWithContentsOfMarkdownFileAtURL:options:baseURL:error:"); +final _objc_msgSend_53 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_initWithMarkdown_options_baseURL_error_ = + objc.registerName("initWithMarkdown:options:baseURL:error:"); +final _objc_msgSend_54 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_initWithMarkdownString_options_baseURL_error_ = + objc.registerName("initWithMarkdownString:options:baseURL:error:"); +final _objc_msgSend_55 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); - /// Returns whether [obj] is an instance of [NSAppleEventDescriptor]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSAppleEventDescriptor1); - } +abstract class NSAttributedStringFormattingOptions { + static const int + NSAttributedStringFormattingInsertArgumentAttributesWithoutMerging = 1; + static const int NSAttributedStringFormattingApplyReplacementIndexAttribute = + 2; +} - static NSAppleEventDescriptor nullDescriptor(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_601( - _lib._class_NSAppleEventDescriptor1, _lib._sel_nullDescriptor1); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); - } +late final _sel_initWithFormat_options_locale_ = + objc.registerName("initWithFormat:options:locale:"); +final _objc_msgSend_56 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); - static NSAppleEventDescriptor? descriptorWithDescriptorType_bytes_length_( - AVFAudio _lib, - int descriptorType, - ffi.Pointer bytes, - int byteCount) { - final _ret = _lib._objc_msgSend_602( - _lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithDescriptorType_bytes_length_1, - descriptorType, - bytes, - byteCount); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); +final class __va_list_tag extends ffi.Struct { + @ffi.UnsignedInt() + external int gp_offset; + + @ffi.UnsignedInt() + external int fp_offset; + + external ffi.Pointer overflow_arg_area; + + external ffi.Pointer reg_save_area; +} + +late final _sel_initWithFormat_options_locale_arguments_ = + objc.registerName("initWithFormat:options:locale:arguments:"); +final _objc_msgSend_57 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>(); +late final _sel_localizedAttributedStringWithFormat_ = + objc.registerName("localizedAttributedStringWithFormat:"); +late final _sel_localizedAttributedStringWithFormat_options_ = + objc.registerName("localizedAttributedStringWithFormat:options:"); +final _objc_msgSend_58 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_initWithFormat_options_locale_context_ = + objc.registerName("initWithFormat:options:locale:context:"); +final _objc_msgSend_59 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithFormat_options_locale_context_arguments_ = + objc.registerName("initWithFormat:options:locale:context:arguments:"); +final _objc_msgSend_60 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>(); +late final _sel_localizedAttributedStringWithFormat_context_ = + objc.registerName("localizedAttributedStringWithFormat:context:"); +final _objc_msgSend_61 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_localizedAttributedStringWithFormat_options_context_ = + objc.registerName("localizedAttributedStringWithFormat:options:context:"); +final _objc_msgSend_62 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_attributedStringByInflectingString = + objc.registerName("attributedStringByInflectingString"); +final _objc_msgSend_63 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_localizedAttributedStringForKey_value_table_ = + objc.registerName("localizedAttributedStringForKey:value:table:"); +final _objc_msgSend_64 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_bundleIdentifier = objc.registerName("bundleIdentifier"); +late final _sel_infoDictionary = objc.registerName("infoDictionary"); +final _objc_msgSend_65 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_localizedInfoDictionary = + objc.registerName("localizedInfoDictionary"); +late final _sel_objectForInfoDictionaryKey_ = + objc.registerName("objectForInfoDictionaryKey:"); +late final _sel_classNamed_ = objc.registerName("classNamed:"); +late final _sel_principalClass = objc.registerName("principalClass"); +final _objc_msgSend_66 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_preferredLocalizations = + objc.registerName("preferredLocalizations"); +late final _sel_localizations = objc.registerName("localizations"); +late final _sel_developmentLocalization = + objc.registerName("developmentLocalization"); +late final _sel_preferredLocalizationsFromArray_ = + objc.registerName("preferredLocalizationsFromArray:"); +final _objc_msgSend_67 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_preferredLocalizationsFromArray_forPreferences_ = + objc.registerName("preferredLocalizationsFromArray:forPreferences:"); +final _objc_msgSend_68 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_executableArchitectures = + objc.registerName("executableArchitectures"); +final _objc_msgSend_69 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setPreservationPriority_forTags_ = + objc.registerName("setPreservationPriority:forTags:"); +final _objc_msgSend_70 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer)>(); +late final _sel_preservationPriorityForTag_ = + objc.registerName("preservationPriorityForTag:"); +final _objc_msgSend_71 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Double Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_71Fpret = objc.msgSendFpretPointer + .cast< + ffi.NativeFunction< + ffi.Double Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSMutableAttributedString extends NSAttributedString { + NSMutableAttributedString._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSMutableAttributedString] that points to the same underlying object as [other]. + NSMutableAttributedString.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSMutableAttributedString] that wraps the given raw object pointer. + NSMutableAttributedString.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSMutableAttributedString]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMutableAttributedString); } - static NSAppleEventDescriptor? descriptorWithDescriptorType_data_( - AVFAudio _lib, int descriptorType, NSData? data) { - final _ret = _lib._objc_msgSend_603( - _lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithDescriptorType_data_1, - descriptorType, - data?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void replaceCharactersInRange_withString_(_NSRange range, objc.NSString str) { + _objc_msgSend_72(this.pointer, _sel_replaceCharactersInRange_withString_, + range, str.pointer); } - static NSAppleEventDescriptor descriptorWithBoolean_( - AVFAudio _lib, int boolean) { - final _ret = _lib._objc_msgSend_604(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithBoolean_1, boolean); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void setAttributes_range_(objc.NSDictionary? attrs, _NSRange range) { + _objc_msgSend_73(this.pointer, _sel_setAttributes_range_, + attrs?.pointer ?? ffi.nullptr, range); } - static NSAppleEventDescriptor descriptorWithEnumCode_( - AVFAudio _lib, int enumerator) { - final _ret = _lib._objc_msgSend_605(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithEnumCode_1, enumerator); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + objc.NSMutableString get mutableString { + final _ret = _objc_msgSend_74(this.pointer, _sel_mutableString); + return objc.NSMutableString.castFromPointer(_ret, + retain: true, release: true); } - static NSAppleEventDescriptor descriptorWithInt32_( - AVFAudio _lib, int signedInt) { - final _ret = _lib._objc_msgSend_606(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithInt32_1, signedInt); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void addAttribute_value_range_( + objc.NSString name, objc.NSObject value, _NSRange range) { + _objc_msgSend_75(this.pointer, _sel_addAttribute_value_range_, name.pointer, + value.pointer, range); } - static NSAppleEventDescriptor descriptorWithDouble_( - AVFAudio _lib, double doubleValue) { - final _ret = _lib._objc_msgSend_607(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithDouble_1, doubleValue); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void addAttributes_range_(objc.NSDictionary attrs, _NSRange range) { + _objc_msgSend_76( + this.pointer, _sel_addAttributes_range_, attrs.pointer, range); } - static NSAppleEventDescriptor descriptorWithTypeCode_( - AVFAudio _lib, int typeCode) { - final _ret = _lib._objc_msgSend_605(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithTypeCode_1, typeCode); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void removeAttribute_range_(objc.NSString name, _NSRange range) { + _objc_msgSend_77( + this.pointer, _sel_removeAttribute_range_, name.pointer, range); } - static NSAppleEventDescriptor descriptorWithString_( - AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_608(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithString_1, string._id); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void replaceCharactersInRange_withAttributedString_( + _NSRange range, NSAttributedString attrString) { + _objc_msgSend_78( + this.pointer, + _sel_replaceCharactersInRange_withAttributedString_, + range, + attrString.pointer); } - static NSAppleEventDescriptor descriptorWithDate_( - AVFAudio _lib, NSDate date) { - final _ret = _lib._objc_msgSend_609(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithDate_1, date._id); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void insertAttributedString_atIndex_(NSAttributedString attrString, int loc) { + _objc_msgSend_79(this.pointer, _sel_insertAttributedString_atIndex_, + attrString.pointer, loc); } - static NSAppleEventDescriptor descriptorWithFileURL_( - AVFAudio _lib, NSURL fileURL) { - final _ret = _lib._objc_msgSend_610(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithFileURL_1, fileURL._id); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void appendAttributedString_(NSAttributedString attrString) { + _objc_msgSend_80( + this.pointer, _sel_appendAttributedString_, attrString.pointer); } - static NSAppleEventDescriptor - appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_( - AVFAudio _lib, - int eventClass, - int eventID, - NSAppleEventDescriptor? targetDescriptor, - int returnID, - int transactionID) { - final _ret = _lib._objc_msgSend_611( - _lib._class_NSAppleEventDescriptor1, - _lib._sel_appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_1, - eventClass, - eventID, - targetDescriptor?._id ?? ffi.nullptr, - returnID, - transactionID); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void deleteCharactersInRange_(_NSRange range) { + _objc_msgSend_81(this.pointer, _sel_deleteCharactersInRange_, range); } - static NSAppleEventDescriptor listDescriptor(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_601( - _lib._class_NSAppleEventDescriptor1, _lib._sel_listDescriptor1); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void setAttributedString_(NSAttributedString attrString) { + _objc_msgSend_80( + this.pointer, _sel_setAttributedString_, attrString.pointer); } - static NSAppleEventDescriptor recordDescriptor(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_601( - _lib._class_NSAppleEventDescriptor1, _lib._sel_recordDescriptor1); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void beginEditing() { + _objc_msgSend_82(this.pointer, _sel_beginEditing); } - static NSAppleEventDescriptor currentProcessDescriptor(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_601(_lib._class_NSAppleEventDescriptor1, - _lib._sel_currentProcessDescriptor1); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void endEditing() { + _objc_msgSend_82(this.pointer, _sel_endEditing); } - static NSAppleEventDescriptor descriptorWithProcessIdentifier_( - AVFAudio _lib, int processIdentifier) { - final _ret = _lib._objc_msgSend_606(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithProcessIdentifier_1, processIdentifier); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void appendLocalizedFormat_(NSAttributedString format) { + _objc_msgSend_80(this.pointer, _sel_appendLocalizedFormat_, format.pointer); } - static NSAppleEventDescriptor descriptorWithBundleIdentifier_( - AVFAudio _lib, NSString bundleIdentifier) { - final _ret = _lib._objc_msgSend_608(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithBundleIdentifier_1, bundleIdentifier._id); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + @override + NSMutableAttributedString initWithString_(objc.NSString str) { + final _ret = + _objc_msgSend_35(this.pointer, _sel_initWithString_, str.pointer); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static NSAppleEventDescriptor descriptorWithApplicationURL_( - AVFAudio _lib, NSURL applicationURL) { - final _ret = _lib._objc_msgSend_610(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithApplicationURL_1, applicationURL._id); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + @override + NSMutableAttributedString initWithString_attributes_( + objc.NSString str, objc.NSDictionary? attrs) { + final _ret = _objc_msgSend_36(this.pointer, _sel_initWithString_attributes_, + str.pointer, attrs?.pointer ?? ffi.nullptr); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSAppleEventDescriptor initWithAEDescNoCopy_(ffi.Pointer aeDesc) { - final _ret = - _lib._objc_msgSend_612(_id, _lib._sel_initWithAEDescNoCopy_1, aeDesc); - return NSAppleEventDescriptor._(_ret, _lib, retain: false, release: true); + @override + NSMutableAttributedString initWithAttributedString_( + NSAttributedString attrStr) { + final _ret = _objc_msgSend_37( + this.pointer, _sel_initWithAttributedString_, attrStr.pointer); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSAppleEventDescriptor? initWithDescriptorType_bytes_length_( - int descriptorType, ffi.Pointer bytes, int byteCount) { - final _ret = _lib._objc_msgSend_613( - _id, - _lib._sel_initWithDescriptorType_bytes_length_1, - descriptorType, - bytes, - byteCount); + @override + NSMutableAttributedString? + initWithContentsOfMarkdownFileAtURL_options_baseURL_error_( + objc.NSURL markdownFile, + NSAttributedStringMarkdownParsingOptions? options, + objc.NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _objc_msgSend_53( + this.pointer, + _sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_, + markdownFile.pointer, + options?.pointer ?? ffi.nullptr, + baseURL?.pointer ?? ffi.nullptr, + error); return _ret.address == 0 ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + : NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSAppleEventDescriptor? initWithDescriptorType_data_( - int descriptorType, NSData? data) { - final _ret = _lib._objc_msgSend_614( - _id, - _lib._sel_initWithDescriptorType_data_1, - descriptorType, - data?._id ?? ffi.nullptr); + @override + NSMutableAttributedString? initWithMarkdown_options_baseURL_error_( + objc.NSData markdown, + NSAttributedStringMarkdownParsingOptions? options, + objc.NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _objc_msgSend_54( + this.pointer, + _sel_initWithMarkdown_options_baseURL_error_, + markdown.pointer, + options?.pointer ?? ffi.nullptr, + baseURL?.pointer ?? ffi.nullptr, + error); return _ret.address == 0 ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); - } - - NSAppleEventDescriptor - initWithEventClass_eventID_targetDescriptor_returnID_transactionID_( - int eventClass, - int eventID, - NSAppleEventDescriptor? targetDescriptor, - int returnID, - int transactionID) { - final _ret = _lib._objc_msgSend_615( - _id, - _lib._sel_initWithEventClass_eventID_targetDescriptor_returnID_transactionID_1, - eventClass, - eventID, - targetDescriptor?._id ?? ffi.nullptr, - returnID, - transactionID); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); - } - - NSAppleEventDescriptor initListDescriptor() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_initListDescriptor1); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + : NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSAppleEventDescriptor initRecordDescriptor() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_initRecordDescriptor1); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + @override + NSMutableAttributedString? initWithMarkdownString_options_baseURL_error_( + objc.NSString markdownString, + NSAttributedStringMarkdownParsingOptions? options, + objc.NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _objc_msgSend_55( + this.pointer, + _sel_initWithMarkdownString_options_baseURL_error_, + markdownString.pointer, + options?.pointer ?? ffi.nullptr, + baseURL?.pointer ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - ffi.Pointer get aeDesc { - return _lib._objc_msgSend_616(_id, _lib._sel_aeDesc1); + @override + NSMutableAttributedString initWithFormat_options_locale_( + NSAttributedString format, int options, objc.NSLocale? locale) { + final _ret = _objc_msgSend_56( + this.pointer, + _sel_initWithFormat_options_locale_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - int get descriptorType { - return _lib._objc_msgSend_214(_id, _lib._sel_descriptorType1); + @override + NSMutableAttributedString initWithFormat_options_locale_arguments_( + NSAttributedString format, + int options, + objc.NSLocale? locale, + ffi.Pointer<__va_list_tag> arguments) { + final _ret = _objc_msgSend_57( + this.pointer, + _sel_initWithFormat_options_locale_arguments_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr, + arguments); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSData get data { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_data1); - return NSData._(_ret, _lib, retain: true, release: true); + static NSMutableAttributedString localizedAttributedStringWithFormat_( + NSAttributedString format) { + final _ret = _objc_msgSend_37(_class_NSMutableAttributedString, + _sel_localizedAttributedStringWithFormat_, format.pointer); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - int get booleanValue { - return _lib._objc_msgSend_234(_id, _lib._sel_booleanValue1); + static NSMutableAttributedString localizedAttributedStringWithFormat_options_( + NSAttributedString format, int options) { + final _ret = _objc_msgSend_58( + _class_NSMutableAttributedString, + _sel_localizedAttributedStringWithFormat_options_, + format.pointer, + options); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - int get enumCodeValue { - return _lib._objc_msgSend_214(_id, _lib._sel_enumCodeValue1); + @override + NSMutableAttributedString initWithFormat_options_locale_context_( + NSAttributedString format, + int options, + objc.NSLocale? locale, + objc.NSDictionary context) { + final _ret = _objc_msgSend_59( + this.pointer, + _sel_initWithFormat_options_locale_context_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr, + context.pointer); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - int get int32Value { - return _lib._objc_msgSend_237(_id, _lib._sel_int32Value1); + @override + NSMutableAttributedString initWithFormat_options_locale_context_arguments_( + NSAttributedString format, + int options, + objc.NSLocale? locale, + objc.NSDictionary context, + ffi.Pointer<__va_list_tag> arguments) { + final _ret = _objc_msgSend_60( + this.pointer, + _sel_initWithFormat_options_locale_context_arguments_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr, + context.pointer, + arguments); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - double get doubleValue { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_doubleValue1) - : _lib._objc_msgSend_165(_id, _lib._sel_doubleValue1); + static NSMutableAttributedString localizedAttributedStringWithFormat_context_( + NSAttributedString format, objc.NSDictionary context) { + final _ret = _objc_msgSend_61( + _class_NSMutableAttributedString, + _sel_localizedAttributedStringWithFormat_context_, + format.pointer, + context.pointer); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - int get typeCodeValue { - return _lib._objc_msgSend_214(_id, _lib._sel_typeCodeValue1); + static NSMutableAttributedString + localizedAttributedStringWithFormat_options_context_( + NSAttributedString format, int options, objc.NSDictionary context) { + final _ret = _objc_msgSend_62( + _class_NSMutableAttributedString, + _sel_localizedAttributedStringWithFormat_options_context_, + format.pointer, + options, + context.pointer); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSString? get stringValue { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_stringValue1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + @override + NSMutableAttributedString init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSDate? get dateValue { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_dateValue1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + static NSMutableAttributedString new1() { + final _ret = _objc_msgSend_40(_class_NSMutableAttributedString, _sel_new); + return NSMutableAttributedString.castFromPointer(_ret, + retain: false, release: true); } - NSURL? get fileURLValue { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_fileURLValue1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static NSMutableAttributedString allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSMutableAttributedString, _sel_allocWithZone_, zone); + return NSMutableAttributedString.castFromPointer(_ret, + retain: false, release: true); } - int get eventClass { - return _lib._objc_msgSend_214(_id, _lib._sel_eventClass1); + static NSMutableAttributedString alloc() { + final _ret = _objc_msgSend_40(_class_NSMutableAttributedString, _sel_alloc); + return NSMutableAttributedString.castFromPointer(_ret, + retain: false, release: true); } - int get eventID { - return _lib._objc_msgSend_214(_id, _lib._sel_eventID1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSMutableAttributedString, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - int get returnID { - return _lib._objc_msgSend_235(_id, _lib._sel_returnID1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSMutableAttributedString, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - int get transactionID { - return _lib._objc_msgSend_237(_id, _lib._sel_transactionID1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSMutableAttributedString, _sel_accessInstanceVariablesDirectly); } - void setParamDescriptor_forKeyword_( - NSAppleEventDescriptor descriptor, int keyword) { - _lib._objc_msgSend_617(_id, _lib._sel_setParamDescriptor_forKeyword_1, - descriptor._id, keyword); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSMutableAttributedString, _sel_useStoredAccessor); } - NSAppleEventDescriptor? paramDescriptorForKeyword_(int keyword) { - final _ret = _lib._objc_msgSend_618( - _id, _lib._sel_paramDescriptorForKeyword_1, keyword); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSMutableAttributedString, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - void removeParamDescriptorWithKeyword_(int keyword) { - _lib._objc_msgSend_619( - _id, _lib._sel_removeParamDescriptorWithKeyword_1, keyword); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSMutableAttributedString, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - void setAttributeDescriptor_forKeyword_( - NSAppleEventDescriptor descriptor, int keyword) { - _lib._objc_msgSend_617(_id, _lib._sel_setAttributeDescriptor_forKeyword_1, - descriptor._id, keyword); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSMutableAttributedString, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSMutableAttributedString, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSMutableAttributedString, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSMutableAttributedString = + objc.getClass("NSMutableAttributedString"); +late final _sel_replaceCharactersInRange_withString_ = + objc.registerName("replaceCharactersInRange:withString:"); +final _objc_msgSend_72 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_setAttributes_range_ = + objc.registerName("setAttributes:range:"); +final _objc_msgSend_73 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>(); +late final _sel_mutableString = objc.registerName("mutableString"); +final _objc_msgSend_74 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_addAttribute_value_range_ = + objc.registerName("addAttribute:value:range:"); +final _objc_msgSend_75 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>(); +late final _sel_addAttributes_range_ = + objc.registerName("addAttributes:range:"); +final _objc_msgSend_76 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>(); +late final _sel_removeAttribute_range_ = + objc.registerName("removeAttribute:range:"); +final _objc_msgSend_77 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>(); +late final _sel_replaceCharactersInRange_withAttributedString_ = + objc.registerName("replaceCharactersInRange:withAttributedString:"); +final _objc_msgSend_78 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_insertAttributedString_atIndex_ = + objc.registerName("insertAttributedString:atIndex:"); +final _objc_msgSend_79 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_appendAttributedString_ = + objc.registerName("appendAttributedString:"); +final _objc_msgSend_80 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_deleteCharactersInRange_ = + objc.registerName("deleteCharactersInRange:"); +final _objc_msgSend_81 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_setAttributedString_ = + objc.registerName("setAttributedString:"); +late final _sel_beginEditing = objc.registerName("beginEditing"); +final _objc_msgSend_82 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_endEditing = objc.registerName("endEditing"); +late final _sel_appendLocalizedFormat_ = + objc.registerName("appendLocalizedFormat:"); - NSAppleEventDescriptor? attributeDescriptorForKeyword_(int keyword) { - final _ret = _lib._objc_msgSend_618( - _id, _lib._sel_attributeDescriptorForKeyword_1, keyword); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); - } +class NSDateFormatter extends NSFormatter { + NSDateFormatter._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSAppleEventDescriptor? sendEventWithOptions_timeout_error_(int sendOptions, - double timeoutInSeconds, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_620( - _id, - _lib._sel_sendEventWithOptions_timeout_error_1, - sendOptions, - timeoutInSeconds, - error); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSDateFormatter] that points to the same underlying object as [other]. + NSDateFormatter.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - bool get isRecordDescriptor { - return _lib._objc_msgSend_12(_id, _lib._sel_isRecordDescriptor1); - } + /// Constructs a [NSDateFormatter] that wraps the given raw object pointer. + NSDateFormatter.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - int get numberOfItems { - return _lib._objc_msgSend_83(_id, _lib._sel_numberOfItems1); + /// Returns whether [obj] is an instance of [NSDateFormatter]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSDateFormatter); } - void insertDescriptor_atIndex_(NSAppleEventDescriptor descriptor, int index) { - _lib._objc_msgSend_621( - _id, _lib._sel_insertDescriptor_atIndex_1, descriptor._id, index); + int get formattingContext { + return _objc_msgSend_89(this.pointer, _sel_formattingContext); } - NSAppleEventDescriptor? descriptorAtIndex_(int index) { - final _ret = - _lib._objc_msgSend_622(_id, _lib._sel_descriptorAtIndex_1, index); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + set formattingContext(int value) { + return _objc_msgSend_90(this.pointer, _sel_setFormattingContext_, value); } - void removeDescriptorAtIndex_(int index) { - _lib._objc_msgSend_423(_id, _lib._sel_removeDescriptorAtIndex_1, index); + bool getObjectValue_forString_range_error_( + ffi.Pointer> obj, + objc.NSString string, + ffi.Pointer<_NSRange> rangep, + ffi.Pointer> error) { + return _objc_msgSend_91( + this.pointer, + _sel_getObjectValue_forString_range_error_, + obj, + string.pointer, + rangep, + error); } - void setDescriptor_forKeyword_( - NSAppleEventDescriptor descriptor, int keyword) { - _lib._objc_msgSend_617( - _id, _lib._sel_setDescriptor_forKeyword_1, descriptor._id, keyword); + objc.NSString stringFromDate_(objc.NSDate date) { + final _ret = + _objc_msgSend_92(this.pointer, _sel_stringFromDate_, date.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSAppleEventDescriptor? descriptorForKeyword_(int keyword) { + objc.NSDate? dateFromString_(objc.NSString string) { final _ret = - _lib._objc_msgSend_618(_id, _lib._sel_descriptorForKeyword_1, keyword); + _objc_msgSend_93(this.pointer, _sel_dateFromString_, string.pointer); return _ret.address == 0 ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); - } - - void removeDescriptorWithKeyword_(int keyword) { - _lib._objc_msgSend_619( - _id, _lib._sel_removeDescriptorWithKeyword_1, keyword); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - int keywordForDescriptorAtIndex_(int index) { - return _lib._objc_msgSend_623( - _id, _lib._sel_keywordForDescriptorAtIndex_1, index); + static objc.NSString localizedStringFromDate_dateStyle_timeStyle_( + objc.NSDate date, int dstyle, int tstyle) { + final _ret = _objc_msgSend_94( + _class_NSDateFormatter, + _sel_localizedStringFromDate_dateStyle_timeStyle_, + date.pointer, + dstyle, + tstyle); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSAppleEventDescriptor? coerceToDescriptorType_(int descriptorType) { - final _ret = _lib._objc_msgSend_618( - _id, _lib._sel_coerceToDescriptorType_1, descriptorType); + static objc.NSString? dateFormatFromTemplate_options_locale_( + objc.NSString tmplate, int opts, objc.NSLocale? locale) { + final _ret = _objc_msgSend_95( + _class_NSDateFormatter, + _sel_dateFormatFromTemplate_options_locale_, + tmplate.pointer, + opts, + locale?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSAppleEventDescriptor init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + static int getDefaultFormatterBehavior() { + return _objc_msgSend_96( + _class_NSDateFormatter, _sel_defaultFormatterBehavior); } - static NSAppleEventDescriptor new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSAppleEventDescriptor1, _lib._sel_new1); - return NSAppleEventDescriptor._(_ret, _lib, retain: false, release: true); + static void setDefaultFormatterBehavior(int value) { + return _objc_msgSend_97( + _class_NSDateFormatter, _sel_setDefaultFormatterBehavior_, value); } - static NSAppleEventDescriptor allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSAppleEventDescriptor1, _lib._sel_allocWithZone_1, zone); - return NSAppleEventDescriptor._(_ret, _lib, retain: false, release: true); + void setLocalizedDateFormatFromTemplate_(objc.NSString dateFormatTemplate) { + _objc_msgSend_98(this.pointer, _sel_setLocalizedDateFormatFromTemplate_, + dateFormatTemplate.pointer); } - static NSAppleEventDescriptor alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSAppleEventDescriptor1, _lib._sel_alloc1); - return NSAppleEventDescriptor._(_ret, _lib, retain: false, release: true); + objc.NSString get dateFormat { + final _ret = _objc_msgSend_12(this.pointer, _sel_dateFormat); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSAppleEventDescriptor1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set dateFormat(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setDateFormat_, value.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSAppleEventDescriptor1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + int get dateStyle { + return _objc_msgSend_100(this.pointer, _sel_dateStyle); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSAppleEventDescriptor1, - _lib._sel_accessInstanceVariablesDirectly1); + set dateStyle(int value) { + return _objc_msgSend_101(this.pointer, _sel_setDateStyle_, value); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSAppleEventDescriptor1, _lib._sel_useStoredAccessor1); + int get timeStyle { + return _objc_msgSend_100(this.pointer, _sel_timeStyle); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSAppleEventDescriptor1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + set timeStyle(int value) { + return _objc_msgSend_101(this.pointer, _sel_setTimeStyle_, value); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSAppleEventDescriptor1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + objc.NSLocale get locale { + final _ret = _objc_msgSend_102(this.pointer, _sel_locale); + return objc.NSLocale.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSAppleEventDescriptor1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set locale(objc.NSLocale value) { + return _objc_msgSend_103(this.pointer, _sel_setLocale_, value.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSAppleEventDescriptor1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool get generatesCalendarDates { + return _objc_msgSend_7(this.pointer, _sel_generatesCalendarDates); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSAppleEventDescriptor1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + set generatesCalendarDates(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setGeneratesCalendarDates_, value); } -} - -@ffi.Packed(2) -final class AEDesc extends ffi.Struct { - @ffi.UnsignedInt() - external int descriptorType; - - external ffi.Pointer> dataHandle; -} - -final class OpaqueAEDataStorageType extends ffi.Opaque {} -abstract class NSAppleEventSendOptions { - static const int NSAppleEventSendNoReply = 1; - static const int NSAppleEventSendQueueReply = 2; - static const int NSAppleEventSendWaitForReply = 3; - static const int NSAppleEventSendNeverInteract = 16; - static const int NSAppleEventSendCanInteract = 32; - static const int NSAppleEventSendAlwaysInteract = 48; - static const int NSAppleEventSendCanSwitchLayer = 64; - static const int NSAppleEventSendDontRecord = 4096; - static const int NSAppleEventSendDontExecute = 8192; - static const int NSAppleEventSendDontAnnotate = 65536; - static const int NSAppleEventSendDefaultOptions = 35; -} + int get formatterBehavior { + return _objc_msgSend_96(this.pointer, _sel_formatterBehavior); + } -class NSScriptClassDescription extends NSClassDescription { - NSScriptClassDescription._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + set formatterBehavior(int value) { + return _objc_msgSend_97(this.pointer, _sel_setFormatterBehavior_, value); + } - /// Returns a [NSScriptClassDescription] that points to the same underlying object as [other]. - static NSScriptClassDescription castFrom(T other) { - return NSScriptClassDescription._(other._id, other._lib, - retain: true, release: true); + NSTimeZone get timeZone { + final _ret = _objc_msgSend_110(this.pointer, _sel_timeZone); + return NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSScriptClassDescription] that wraps the given raw object pointer. - static NSScriptClassDescription castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSScriptClassDescription._(other, lib, - retain: retain, release: release); + set timeZone(NSTimeZone value) { + return _objc_msgSend_111(this.pointer, _sel_setTimeZone_, value.pointer); } - /// Returns whether [obj] is an instance of [NSScriptClassDescription]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSScriptClassDescription1); + NSCalendar get calendar { + final _ret = _objc_msgSend_121(this.pointer, _sel_calendar); + return NSCalendar.castFromPointer(_ret, retain: true, release: true); } - static NSScriptClassDescription? classDescriptionForClass_( - AVFAudio _lib, NSObject aClass) { - final _ret = _lib._objc_msgSend_626(_lib._class_NSScriptClassDescription1, - _lib._sel_classDescriptionForClass_1, aClass._id); - return _ret.address == 0 - ? null - : NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + set calendar(NSCalendar value) { + return _objc_msgSend_161(this.pointer, _sel_setCalendar_, value.pointer); } - NSScriptClassDescription? initWithSuiteName_className_dictionary_( - NSString suiteName, NSString className, NSDictionary? classDeclaration) { - final _ret = _lib._objc_msgSend_627( - _id, - _lib._sel_initWithSuiteName_className_dictionary_1, - suiteName._id, - className._id, - classDeclaration?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + bool get lenient { + return _objc_msgSend_7(this.pointer, _sel_isLenient); } - NSString? get suiteName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_suiteName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + set lenient(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setLenient_, value); } - NSString? get className { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_className1); + objc.NSDate? get twoDigitStartDate { + final _ret = _objc_msgSend_116(this.pointer, _sel_twoDigitStartDate); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - NSString? get implementationClassName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_implementationClassName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + set twoDigitStartDate(objc.NSDate? value) { + return _objc_msgSend_162(this.pointer, _sel_setTwoDigitStartDate_, + value?.pointer ?? ffi.nullptr); } - NSScriptClassDescription? get superclassDescription { - final _ret = _lib._objc_msgSend_628(_id, _lib._sel_superclassDescription1); + objc.NSDate? get defaultDate { + final _ret = _objc_msgSend_116(this.pointer, _sel_defaultDate); return _ret.address == 0 ? null - : NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - int get appleEventCode { - return _lib._objc_msgSend_214(_id, _lib._sel_appleEventCode1); + set defaultDate(objc.NSDate? value) { + return _objc_msgSend_162( + this.pointer, _sel_setDefaultDate_, value?.pointer ?? ffi.nullptr); } - bool matchesAppleEventCode_(int appleEventCode) { - return _lib._objc_msgSend_194( - _id, _lib._sel_matchesAppleEventCode_1, appleEventCode); + objc.NSArray get eraSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_eraSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool supportsCommand_(NSScriptCommandDescription commandDescription) { - return _lib._objc_msgSend_641( - _id, _lib._sel_supportsCommand_1, commandDescription._id); + set eraSymbols(objc.NSArray value) { + return _objc_msgSend_163(this.pointer, _sel_setEraSymbols_, value.pointer); } - ffi.Pointer selectorForCommand_( - NSScriptCommandDescription commandDescription) { - return _lib._objc_msgSend_642( - _id, _lib._sel_selectorForCommand_1, commandDescription._id); + objc.NSArray get monthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_monthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString? typeForKey_(NSString key) { - final _ret = _lib._objc_msgSend_186(_id, _lib._sel_typeForKey_1, key._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + set monthSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setMonthSymbols_, value.pointer); } - NSScriptClassDescription? classDescriptionForKey_(NSString key) { - final _ret = _lib._objc_msgSend_643( - _id, _lib._sel_classDescriptionForKey_1, key._id); - return _ret.address == 0 - ? null - : NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + objc.NSArray get shortMonthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_shortMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int appleEventCodeForKey_(NSString key) { - return _lib._objc_msgSend_629( - _id, _lib._sel_appleEventCodeForKey_1, key._id); + set shortMonthSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setShortMonthSymbols_, value.pointer); } - NSString? keyWithAppleEventCode_(int appleEventCode) { - final _ret = _lib._objc_msgSend_644( - _id, _lib._sel_keyWithAppleEventCode_1, appleEventCode); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray get weekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_weekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString? get defaultSubcontainerAttributeKey { - final _ret = - _lib._objc_msgSend_44(_id, _lib._sel_defaultSubcontainerAttributeKey1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + set weekdaySymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setWeekdaySymbols_, value.pointer); } - bool isLocationRequiredToCreateForKey_(NSString toManyRelationshipKey) { - return _lib._objc_msgSend_64( - _id, - _lib._sel_isLocationRequiredToCreateForKey_1, - toManyRelationshipKey._id); + objc.NSArray get shortWeekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_shortWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool hasPropertyForKey_(NSString key) { - return _lib._objc_msgSend_64(_id, _lib._sel_hasPropertyForKey_1, key._id); + set shortWeekdaySymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setShortWeekdaySymbols_, value.pointer); } - bool hasOrderedToManyRelationshipForKey_(NSString key) { - return _lib._objc_msgSend_64( - _id, _lib._sel_hasOrderedToManyRelationshipForKey_1, key._id); + objc.NSString get AMSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_AMSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool hasReadablePropertyForKey_(NSString key) { - return _lib._objc_msgSend_64( - _id, _lib._sel_hasReadablePropertyForKey_1, key._id); + set AMSymbol(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setAMSymbol_, value.pointer); } - bool hasWritablePropertyForKey_(NSString key) { - return _lib._objc_msgSend_64( - _id, _lib._sel_hasWritablePropertyForKey_1, key._id); + objc.NSString get PMSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_PMSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool isReadOnlyKey_(NSString key) { - return _lib._objc_msgSend_64(_id, _lib._sel_isReadOnlyKey_1, key._id); + set PMSymbol(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setPMSymbol_, value.pointer); } - static void registerClassDescription_forClass_( - AVFAudio _lib, NSClassDescription description, NSObject aClass) { - _lib._objc_msgSend_598( - _lib._class_NSScriptClassDescription1, - _lib._sel_registerClassDescription_forClass_1, - description._id, - aClass._id); + objc.NSArray get longEraSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_longEraSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static void invalidateClassDescriptionCache(AVFAudio _lib) { - _lib._objc_msgSend_1(_lib._class_NSScriptClassDescription1, - _lib._sel_invalidateClassDescriptionCache1); + set longEraSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setLongEraSymbols_, value.pointer); } - @override - NSScriptClassDescription init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + objc.NSArray get veryShortMonthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_veryShortMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSScriptClassDescription new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScriptClassDescription1, _lib._sel_new1); - return NSScriptClassDescription._(_ret, _lib, retain: false, release: true); + set veryShortMonthSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setVeryShortMonthSymbols_, value.pointer); } - static NSScriptClassDescription allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSScriptClassDescription1, _lib._sel_allocWithZone_1, zone); - return NSScriptClassDescription._(_ret, _lib, retain: false, release: true); + objc.NSArray get standaloneMonthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_standaloneMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSScriptClassDescription alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScriptClassDescription1, _lib._sel_alloc1); - return NSScriptClassDescription._(_ret, _lib, retain: false, release: true); + set standaloneMonthSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setStandaloneMonthSymbols_, value.pointer); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSScriptClassDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + objc.NSArray get shortStandaloneMonthSymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_shortStandaloneMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSScriptClassDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + set shortStandaloneMonthSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setShortStandaloneMonthSymbols_, value.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSScriptClassDescription1, - _lib._sel_accessInstanceVariablesDirectly1); + objc.NSArray get veryShortStandaloneMonthSymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_veryShortStandaloneMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSScriptClassDescription1, _lib._sel_useStoredAccessor1); + set veryShortStandaloneMonthSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setVeryShortStandaloneMonthSymbols_, value.pointer); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSScriptClassDescription1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSArray get veryShortWeekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_veryShortWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSScriptClassDescription1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + set veryShortWeekdaySymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setVeryShortWeekdaySymbols_, value.pointer); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSScriptClassDescription1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray get standaloneWeekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_standaloneWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSScriptClassDescription1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + set standaloneWeekdaySymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setStandaloneWeekdaySymbols_, value.pointer); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSScriptClassDescription1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSArray get shortStandaloneWeekdaySymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_shortStandaloneWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } -} - -class NSScriptCommandDescription extends NSObject { - NSScriptCommandDescription._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSScriptCommandDescription] that points to the same underlying object as [other]. - static NSScriptCommandDescription castFrom(T other) { - return NSScriptCommandDescription._(other._id, other._lib, - retain: true, release: true); + set shortStandaloneWeekdaySymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setShortStandaloneWeekdaySymbols_, value.pointer); } - /// Returns a [NSScriptCommandDescription] that wraps the given raw object pointer. - static NSScriptCommandDescription castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSScriptCommandDescription._(other, lib, - retain: retain, release: release); + objc.NSArray get veryShortStandaloneWeekdaySymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_veryShortStandaloneWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSScriptCommandDescription]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSScriptCommandDescription1); + set veryShortStandaloneWeekdaySymbols(objc.NSArray value) { + return _objc_msgSend_163(this.pointer, + _sel_setVeryShortStandaloneWeekdaySymbols_, value.pointer); } - @override - NSObject init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSArray get quarterSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_quarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSScriptCommandDescription? initWithSuiteName_commandName_dictionary_( - NSString suiteName, - NSString commandName, - NSDictionary? commandDeclaration) { - final _ret = _lib._objc_msgSend_627( - _id, - _lib._sel_initWithSuiteName_commandName_dictionary_1, - suiteName._id, - commandName._id, - commandDeclaration?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSScriptCommandDescription._(_ret, _lib, retain: true, release: true); + set quarterSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setQuarterSymbols_, value.pointer); } - NSScriptCommandDescription? initWithCoder_(NSCoder inCoder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, inCoder._id); - return _ret.address == 0 - ? null - : NSScriptCommandDescription._(_ret, _lib, retain: true, release: true); + objc.NSArray get shortQuarterSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_shortQuarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString get suiteName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_suiteName1); - return NSString._(_ret, _lib, retain: true, release: true); + set shortQuarterSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setShortQuarterSymbols_, value.pointer); } - NSString get commandName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_commandName1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray get standaloneQuarterSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_standaloneQuarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int get appleEventClassCode { - return _lib._objc_msgSend_214(_id, _lib._sel_appleEventClassCode1); + set standaloneQuarterSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setStandaloneQuarterSymbols_, value.pointer); } - int get appleEventCode { - return _lib._objc_msgSend_214(_id, _lib._sel_appleEventCode1); + objc.NSArray get shortStandaloneQuarterSymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_shortStandaloneQuarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString get commandClassName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_commandClassName1); - return NSString._(_ret, _lib, retain: true, release: true); + set shortStandaloneQuarterSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setShortStandaloneQuarterSymbols_, value.pointer); } - NSString? get returnType { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_returnType1); + objc.NSDate? get gregorianStartDate { + final _ret = _objc_msgSend_116(this.pointer, _sel_gregorianStartDate); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - int get appleEventCodeForReturnType { - return _lib._objc_msgSend_214(_id, _lib._sel_appleEventCodeForReturnType1); - } - - NSArray get argumentNames { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_argumentNames1); - return NSArray._(_ret, _lib, retain: true, release: true); + set gregorianStartDate(objc.NSDate? value) { + return _objc_msgSend_162(this.pointer, _sel_setGregorianStartDate_, + value?.pointer ?? ffi.nullptr); } - NSString? typeForArgumentWithName_(NSString argumentName) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_typeForArgumentWithName_1, argumentName._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + bool get doesRelativeDateFormatting { + return _objc_msgSend_7(this.pointer, _sel_doesRelativeDateFormatting); } - int appleEventCodeForArgumentWithName_(NSString argumentName) { - return _lib._objc_msgSend_629( - _id, _lib._sel_appleEventCodeForArgumentWithName_1, argumentName._id); + set doesRelativeDateFormatting(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setDoesRelativeDateFormatting_, value); } - bool isOptionalArgumentWithName_(NSString argumentName) { - return _lib._objc_msgSend_64( - _id, _lib._sel_isOptionalArgumentWithName_1, argumentName._id); + objc.NSObject initWithDateFormat_allowNaturalLanguage_( + objc.NSString format, bool flag) { + final _ret = _objc_msgSend_164(this.pointer, + _sel_initWithDateFormat_allowNaturalLanguage_, format.pointer, flag); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSScriptCommand createCommandInstance() { - final _ret = _lib._objc_msgSend_639(_id, _lib._sel_createCommandInstance1); - return NSScriptCommand._(_ret, _lib, retain: true, release: true); + bool allowsNaturalLanguage() { + return _objc_msgSend_7(this.pointer, _sel_allowsNaturalLanguage); } - NSScriptCommand createCommandInstanceWithZone_(ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_640( - _id, _lib._sel_createCommandInstanceWithZone_1, zone); - return NSScriptCommand._(_ret, _lib, retain: true, release: true); + @override + NSDateFormatter init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSDateFormatter.castFromPointer(_ret, retain: true, release: true); } - static NSScriptCommandDescription new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScriptCommandDescription1, _lib._sel_new1); - return NSScriptCommandDescription._(_ret, _lib, - retain: false, release: true); + static NSDateFormatter new1() { + final _ret = _objc_msgSend_40(_class_NSDateFormatter, _sel_new); + return NSDateFormatter.castFromPointer(_ret, retain: false, release: true); } - static NSScriptCommandDescription allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSScriptCommandDescription1, - _lib._sel_allocWithZone_1, zone); - return NSScriptCommandDescription._(_ret, _lib, - retain: false, release: true); + static NSDateFormatter allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSDateFormatter, _sel_allocWithZone_, zone); + return NSDateFormatter.castFromPointer(_ret, retain: false, release: true); } - static NSScriptCommandDescription alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScriptCommandDescription1, _lib._sel_alloc1); - return NSScriptCommandDescription._(_ret, _lib, - retain: false, release: true); + static NSDateFormatter alloc() { + final _ret = _objc_msgSend_40(_class_NSDateFormatter, _sel_alloc); + return NSDateFormatter.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSScriptCommandDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSDateFormatter, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSScriptCommandDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSDateFormatter, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSScriptCommandDescription1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSDateFormatter, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSScriptCommandDescription1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSDateFormatter, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSScriptCommandDescription1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSDateFormatter, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSScriptCommandDescription1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSDateFormatter, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSScriptCommandDescription1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSDateFormatter, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSScriptCommandDescription1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSDateFormatter, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSScriptCommandDescription1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSDateFormatter, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -class NSScriptCommand extends NSObject { - NSScriptCommand._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); +late final _class_NSDateFormatter = objc.getClass("NSDateFormatter"); - /// Returns a [NSScriptCommand] that points to the same underlying object as [other]. - static NSScriptCommand castFrom(T other) { - return NSScriptCommand._(other._id, other._lib, - retain: true, release: true); - } +class NSFormatter extends objc.NSObject { + NSFormatter._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSScriptCommand] that wraps the given raw object pointer. - static NSScriptCommand castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSScriptCommand._(other, lib, retain: retain, release: release); - } + /// Constructs a [NSFormatter] that points to the same underlying object as [other]. + NSFormatter.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns whether [obj] is an instance of [NSScriptCommand]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSScriptCommand1); - } + /// Constructs a [NSFormatter] that wraps the given raw object pointer. + NSFormatter.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSScriptCommand initWithCommandDescription_( - NSScriptCommandDescription commandDef) { - final _ret = _lib._objc_msgSend_630( - _id, _lib._sel_initWithCommandDescription_1, commandDef._id); - return NSScriptCommand._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSFormatter]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSFormatter); } - NSScriptCommand? initWithCoder_(NSCoder inCoder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, inCoder._id); + objc.NSString? stringForObjectValue_(objc.NSObject? obj) { + final _ret = _objc_msgSend_83( + this.pointer, _sel_stringForObjectValue_, obj?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSScriptCommand._(_ret, _lib, retain: true, release: true); - } - - NSScriptCommandDescription get commandDescription { - final _ret = _lib._objc_msgSend_631(_id, _lib._sel_commandDescription1); - return NSScriptCommandDescription._(_ret, _lib, - retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSObject? get directParameter { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_directParameter1); + NSAttributedString? attributedStringForObjectValue_withDefaultAttributes_( + objc.NSObject obj, objc.NSDictionary? attrs) { + final _ret = _objc_msgSend_84( + this.pointer, + _sel_attributedStringForObjectValue_withDefaultAttributes_, + obj.pointer, + attrs?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - set directParameter(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDirectParameter_1, value?._id ?? ffi.nullptr); + : NSAttributedString.castFromPointer(_ret, retain: true, release: true); } - NSScriptObjectSpecifier? get receiversSpecifier { - final _ret = _lib._objc_msgSend_632(_id, _lib._sel_receiversSpecifier1); + objc.NSString? editingStringForObjectValue_(objc.NSObject obj) { + final _ret = _objc_msgSend_85( + this.pointer, _sel_editingStringForObjectValue_, obj.pointer); return _ret.address == 0 ? null - : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set receiversSpecifier(NSScriptObjectSpecifier? value) { - return _lib._objc_msgSend_633( - _id, _lib._sel_setReceiversSpecifier_1, value?._id ?? ffi.nullptr); + bool getObjectValue_forString_errorDescription_( + ffi.Pointer> obj, + objc.NSString string, + ffi.Pointer> error) { + return _objc_msgSend_86( + this.pointer, + _sel_getObjectValue_forString_errorDescription_, + obj, + string.pointer, + error); } - NSObject? get evaluatedReceivers { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_evaluatedReceivers1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + bool isPartialStringValid_newEditingString_errorDescription_( + objc.NSString partialString, + ffi.Pointer> newString, + ffi.Pointer> error) { + return _objc_msgSend_87( + this.pointer, + _sel_isPartialStringValid_newEditingString_errorDescription_, + partialString.pointer, + newString, + error); } - NSDictionary? get arguments { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_arguments1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + bool + isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_( + ffi.Pointer> partialStringPtr, + ffi.Pointer<_NSRange> proposedSelRangePtr, + objc.NSString origString, + _NSRange origSelRange, + ffi.Pointer> error) { + return _objc_msgSend_88( + this.pointer, + _sel_isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_, + partialStringPtr, + proposedSelRangePtr, + origString.pointer, + origSelRange, + error); } - set arguments(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, _lib._sel_setArguments_1, value?._id ?? ffi.nullptr); + @override + NSFormatter init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSFormatter.castFromPointer(_ret, retain: true, release: true); } - NSDictionary? get evaluatedArguments { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_evaluatedArguments1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static NSFormatter new1() { + final _ret = _objc_msgSend_40(_class_NSFormatter, _sel_new); + return NSFormatter.castFromPointer(_ret, retain: false, release: true); } - bool get wellFormed { - return _lib._objc_msgSend_12(_id, _lib._sel_isWellFormed1); + static NSFormatter allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSFormatter, _sel_allocWithZone_, zone); + return NSFormatter.castFromPointer(_ret, retain: false, release: true); } - NSObject? performDefaultImplementation() { - final _ret = - _lib._objc_msgSend_17(_id, _lib._sel_performDefaultImplementation1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static NSFormatter alloc() { + final _ret = _objc_msgSend_40(_class_NSFormatter, _sel_alloc); + return NSFormatter.castFromPointer(_ret, retain: false, release: true); } - NSObject? executeCommand() { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_executeCommand1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSFormatter, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - int get scriptErrorNumber { - return _lib._objc_msgSend_83(_id, _lib._sel_scriptErrorNumber1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSFormatter, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - set scriptErrorNumber(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setScriptErrorNumber_1, value); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSFormatter, _sel_accessInstanceVariablesDirectly); } - NSAppleEventDescriptor? get scriptErrorOffendingObjectDescriptor { - final _ret = _lib._objc_msgSend_636( - _id, _lib._sel_scriptErrorOffendingObjectDescriptor1); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSFormatter, _sel_useStoredAccessor); } - set scriptErrorOffendingObjectDescriptor(NSAppleEventDescriptor? value) { - return _lib._objc_msgSend_637( - _id, - _lib._sel_setScriptErrorOffendingObjectDescriptor_1, - value?._id ?? ffi.nullptr); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSFormatter, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSAppleEventDescriptor? get scriptErrorExpectedTypeDescriptor { - final _ret = _lib._objc_msgSend_636( - _id, _lib._sel_scriptErrorExpectedTypeDescriptor1); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSFormatter, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - set scriptErrorExpectedTypeDescriptor(NSAppleEventDescriptor? value) { - return _lib._objc_msgSend_637( - _id, - _lib._sel_setScriptErrorExpectedTypeDescriptor_1, - value?._id ?? ffi.nullptr); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSFormatter, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSFormatter, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSFormatter, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSFormatter = objc.getClass("NSFormatter"); +late final _sel_stringForObjectValue_ = + objc.registerName("stringForObjectValue:"); +final _objc_msgSend_83 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_attributedStringForObjectValue_withDefaultAttributes_ = + objc.registerName("attributedStringForObjectValue:withDefaultAttributes:"); +final _objc_msgSend_84 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_editingStringForObjectValue_ = + objc.registerName("editingStringForObjectValue:"); +final _objc_msgSend_85 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_getObjectValue_forString_errorDescription_ = + objc.registerName("getObjectValue:forString:errorDescription:"); +final _objc_msgSend_86 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_isPartialStringValid_newEditingString_errorDescription_ = objc + .registerName("isPartialStringValid:newEditingString:errorDescription:"); +final _objc_msgSend_87 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); +late final _sel_isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_ = + objc.registerName( + "isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:"); +final _objc_msgSend_88 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer<_NSRange>, + ffi.Pointer, + _NSRange, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer<_NSRange>, + ffi.Pointer, + _NSRange, + ffi.Pointer>)>(); + +abstract class NSFormattingContext { + static const int NSFormattingContextUnknown = 0; + static const int NSFormattingContextDynamic = 1; + static const int NSFormattingContextStandalone = 2; + static const int NSFormattingContextListItem = 3; + static const int NSFormattingContextBeginningOfSentence = 4; + static const int NSFormattingContextMiddleOfSentence = 5; +} + +late final _sel_formattingContext = objc.registerName("formattingContext"); +final _objc_msgSend_89 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setFormattingContext_ = + objc.registerName("setFormattingContext:"); +final _objc_msgSend_90 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_getObjectValue_forString_range_error_ = + objc.registerName("getObjectValue:forString:range:error:"); +final _objc_msgSend_91 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer<_NSRange>, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer<_NSRange>, + ffi.Pointer>)>(); +late final _sel_stringFromDate_ = objc.registerName("stringFromDate:"); +final _objc_msgSend_92 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dateFromString_ = objc.registerName("dateFromString:"); +final _objc_msgSend_93 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSDateFormatterStyle { + static const int NSDateFormatterNoStyle = 0; + static const int NSDateFormatterShortStyle = 1; + static const int NSDateFormatterMediumStyle = 2; + static const int NSDateFormatterLongStyle = 3; + static const int NSDateFormatterFullStyle = 4; +} + +late final _sel_localizedStringFromDate_dateStyle_timeStyle_ = + objc.registerName("localizedStringFromDate:dateStyle:timeStyle:"); +final _objc_msgSend_94 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + int)>(); +late final _sel_dateFormatFromTemplate_options_locale_ = + objc.registerName("dateFormatFromTemplate:options:locale:"); +final _objc_msgSend_95 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); + +abstract class NSDateFormatterBehavior { + static const int NSDateFormatterBehaviorDefault = 0; + static const int NSDateFormatterBehavior10_0 = 1000; + static const int NSDateFormatterBehavior10_4 = 1040; +} + +late final _sel_defaultFormatterBehavior = + objc.registerName("defaultFormatterBehavior"); +final _objc_msgSend_96 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDefaultFormatterBehavior_ = + objc.registerName("setDefaultFormatterBehavior:"); +final _objc_msgSend_97 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setLocalizedDateFormatFromTemplate_ = + objc.registerName("setLocalizedDateFormatFromTemplate:"); +final _objc_msgSend_98 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dateFormat = objc.registerName("dateFormat"); +late final _sel_setDateFormat_ = objc.registerName("setDateFormat:"); +final _objc_msgSend_99 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dateStyle = objc.registerName("dateStyle"); +final _objc_msgSend_100 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDateStyle_ = objc.registerName("setDateStyle:"); +final _objc_msgSend_101 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_timeStyle = objc.registerName("timeStyle"); +late final _sel_setTimeStyle_ = objc.registerName("setTimeStyle:"); +late final _sel_locale = objc.registerName("locale"); +final _objc_msgSend_102 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setLocale_ = objc.registerName("setLocale:"); +final _objc_msgSend_103 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_generatesCalendarDates = + objc.registerName("generatesCalendarDates"); +late final _sel_setGeneratesCalendarDates_ = + objc.registerName("setGeneratesCalendarDates:"); +late final _sel_formatterBehavior = objc.registerName("formatterBehavior"); +late final _sel_setFormatterBehavior_ = + objc.registerName("setFormatterBehavior:"); + +class NSTimeZone extends objc.NSObject { + NSTimeZone._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSTimeZone] that points to the same underlying object as [other]. + NSTimeZone.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSTimeZone] that wraps the given raw object pointer. + NSTimeZone.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSTimeZone]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSTimeZone); } - NSString? get scriptErrorString { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_scriptErrorString1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + objc.NSString get name { + final _ret = _objc_msgSend_12(this.pointer, _sel_name); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set scriptErrorString(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setScriptErrorString_1, value?._id ?? ffi.nullptr); + objc.NSData get data { + final _ret = _objc_msgSend_104(this.pointer, _sel_data); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - static NSScriptCommand? currentCommand(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_638( - _lib._class_NSScriptCommand1, _lib._sel_currentCommand1); - return _ret.address == 0 - ? null - : NSScriptCommand._(_ret, _lib, retain: true, release: true); + int secondsFromGMTForDate_(objc.NSDate aDate) { + return _objc_msgSend_105( + this.pointer, _sel_secondsFromGMTForDate_, aDate.pointer); } - NSAppleEventDescriptor? get appleEvent { - final _ret = _lib._objc_msgSend_636(_id, _lib._sel_appleEvent1); + objc.NSString? abbreviationForDate_(objc.NSDate aDate) { + final _ret = _objc_msgSend_106( + this.pointer, _sel_abbreviationForDate_, aDate.pointer); return _ret.address == 0 ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void suspendExecution() { - _lib._objc_msgSend_1(_id, _lib._sel_suspendExecution1); + bool isDaylightSavingTimeForDate_(objc.NSDate aDate) { + return _objc_msgSend_107( + this.pointer, _sel_isDaylightSavingTimeForDate_, aDate.pointer); } - void resumeExecutionWithResult_(NSObject? result) { - _lib._objc_msgSend_289( - _id, _lib._sel_resumeExecutionWithResult_1, result?._id ?? ffi.nullptr); + double daylightSavingTimeOffsetForDate_(objc.NSDate aDate) { + return objc.useMsgSendVariants + ? _objc_msgSend_108Fpret( + this.pointer, _sel_daylightSavingTimeOffsetForDate_, aDate.pointer) + : _objc_msgSend_108( + this.pointer, _sel_daylightSavingTimeOffsetForDate_, aDate.pointer); } - @override - NSScriptCommand init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSScriptCommand._(_ret, _lib, retain: true, release: true); + objc.NSDate? nextDaylightSavingTimeTransitionAfterDate_(objc.NSDate aDate) { + final _ret = _objc_msgSend_109(this.pointer, + _sel_nextDaylightSavingTimeTransitionAfterDate_, aDate.pointer); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - static NSScriptCommand new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSScriptCommand1, _lib._sel_new1); - return NSScriptCommand._(_ret, _lib, retain: false, release: true); + static NSTimeZone getSystemTimeZone() { + final _ret = _objc_msgSend_110(_class_NSTimeZone, _sel_systemTimeZone); + return NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - static NSScriptCommand allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSScriptCommand1, _lib._sel_allocWithZone_1, zone); - return NSScriptCommand._(_ret, _lib, retain: false, release: true); + static void resetSystemTimeZone() { + _objc_msgSend_82(_class_NSTimeZone, _sel_resetSystemTimeZone); } - static NSScriptCommand alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSScriptCommand1, _lib._sel_alloc1); - return NSScriptCommand._(_ret, _lib, retain: false, release: true); + static NSTimeZone getDefaultTimeZone() { + final _ret = _objc_msgSend_110(_class_NSTimeZone, _sel_defaultTimeZone); + return NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSScriptCommand1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static void setDefaultTimeZone(NSTimeZone value) { + return _objc_msgSend_111( + _class_NSTimeZone, _sel_setDefaultTimeZone_, value.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSScriptCommand1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static NSTimeZone getLocalTimeZone() { + final _ret = _objc_msgSend_110(_class_NSTimeZone, _sel_localTimeZone); + return NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSScriptCommand1, - _lib._sel_accessInstanceVariablesDirectly1); + static objc.NSArray getKnownTimeZoneNames() { + final _ret = _objc_msgSend_6(_class_NSTimeZone, _sel_knownTimeZoneNames); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSScriptCommand1, _lib._sel_useStoredAccessor1); + static objc.NSDictionary getAbbreviationDictionary() { + final _ret = + _objc_msgSend_112(_class_NSTimeZone, _sel_abbreviationDictionary); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSScriptCommand1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static void setAbbreviationDictionary(objc.NSDictionary value) { + return _objc_msgSend_113( + _class_NSTimeZone, _sel_setAbbreviationDictionary_, value.pointer); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSScriptCommand1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static objc.NSString getTimeZoneDataVersion() { + final _ret = _objc_msgSend_12(_class_NSTimeZone, _sel_timeZoneDataVersion); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSScriptCommand1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + int get secondsFromGMT { + return _objc_msgSend_114(this.pointer, _sel_secondsFromGMT); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSScriptCommand1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSString? get abbreviation { + final _ret = _objc_msgSend_13(this.pointer, _sel_abbreviation); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScriptCommand1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + bool get daylightSavingTime { + return _objc_msgSend_7(this.pointer, _sel_isDaylightSavingTime); } -} - -class NSItemProvider extends NSObject { - NSItemProvider._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSItemProvider] that points to the same underlying object as [other]. - static NSItemProvider castFrom(T other) { - return NSItemProvider._(other._id, other._lib, retain: true, release: true); + double get daylightSavingTimeOffset { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_daylightSavingTimeOffset) + : _objc_msgSend_115(this.pointer, _sel_daylightSavingTimeOffset); } - /// Returns a [NSItemProvider] that wraps the given raw object pointer. - static NSItemProvider castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSItemProvider._(other, lib, retain: retain, release: release); + objc.NSDate? get nextDaylightSavingTimeTransition { + final _ret = + _objc_msgSend_116(this.pointer, _sel_nextDaylightSavingTimeTransition); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSItemProvider]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSItemProvider1); + objc.NSString get description { + final _ret = _objc_msgSend_12(this.pointer, _sel_description); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSItemProvider init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSItemProvider._(_ret, _lib, retain: true, release: true); - } - - void registerDataRepresentationForTypeIdentifier_visibility_loadHandler_( - NSString typeIdentifier, - int visibility, - ObjCBlock_NSProgress_ffiVoidNSDataNSError loadHandler) { - _lib._objc_msgSend_673( - _id, - _lib._sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_1, - typeIdentifier._id, - visibility, - loadHandler._id); - } - - void - registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_( - NSString typeIdentifier, - int fileOptions, - int visibility, - ObjCBlock_NSProgress_ffiVoidNSURLboolNSError loadHandler) { - _lib._objc_msgSend_674( - _id, - _lib._sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_1, - typeIdentifier._id, - fileOptions, - visibility, - loadHandler._id); - } - - NSArray get registeredTypeIdentifiers { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_registeredTypeIdentifiers1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool isEqualToTimeZone_(NSTimeZone aTimeZone) { + return _objc_msgSend_117( + this.pointer, _sel_isEqualToTimeZone_, aTimeZone.pointer); } - NSArray registeredTypeIdentifiersWithFileOptions_(int fileOptions) { - final _ret = _lib._objc_msgSend_675( - _id, _lib._sel_registeredTypeIdentifiersWithFileOptions_1, fileOptions); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSString? localizedName_locale_(int style, objc.NSLocale? locale) { + final _ret = _objc_msgSend_118(this.pointer, _sel_localizedName_locale_, + style, locale?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool hasItemConformingToTypeIdentifier_(NSString typeIdentifier) { - return _lib._objc_msgSend_64( - _id, _lib._sel_hasItemConformingToTypeIdentifier_1, typeIdentifier._id); + static NSTimeZone? timeZoneWithName_(objc.NSString tzName) { + final _ret = _objc_msgSend_2( + _class_NSTimeZone, _sel_timeZoneWithName_, tzName.pointer); + return _ret.address == 0 + ? null + : NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - bool hasRepresentationConformingToTypeIdentifier_fileOptions_( - NSString typeIdentifier, int fileOptions) { - return _lib._objc_msgSend_676( - _id, - _lib._sel_hasRepresentationConformingToTypeIdentifier_fileOptions_1, - typeIdentifier._id, - fileOptions); + static NSTimeZone? timeZoneWithName_data_( + objc.NSString tzName, objc.NSData? aData) { + final _ret = _objc_msgSend_119( + _class_NSTimeZone, + _sel_timeZoneWithName_data_, + tzName.pointer, + aData?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - NSProgress loadDataRepresentationForTypeIdentifier_completionHandler_( - NSString typeIdentifier, - ObjCBlock_ffiVoid_NSData_NSError completionHandler) { - final _ret = _lib._objc_msgSend_677( - _id, - _lib._sel_loadDataRepresentationForTypeIdentifier_completionHandler_1, - typeIdentifier._id, - completionHandler._id); - return NSProgress._(_ret, _lib, retain: true, release: true); + NSTimeZone? initWithName_(objc.NSString tzName) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_initWithName_, tzName.pointer); + return _ret.address == 0 + ? null + : NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - NSProgress loadFileRepresentationForTypeIdentifier_completionHandler_( - NSString typeIdentifier, - ObjCBlock_ffiVoid_NSURL_NSError completionHandler) { - final _ret = _lib._objc_msgSend_678( - _id, - _lib._sel_loadFileRepresentationForTypeIdentifier_completionHandler_1, - typeIdentifier._id, - completionHandler._id); - return NSProgress._(_ret, _lib, retain: true, release: true); + NSTimeZone? initWithName_data_(objc.NSString tzName, objc.NSData? aData) { + final _ret = _objc_msgSend_119(this.pointer, _sel_initWithName_data_, + tzName.pointer, aData?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - NSProgress loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_( - NSString typeIdentifier, - ObjCBlock_ffiVoid_NSURL_bool_NSError completionHandler) { - final _ret = _lib._objc_msgSend_679( - _id, - _lib._sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_1, - typeIdentifier._id, - completionHandler._id); - return NSProgress._(_ret, _lib, retain: true, release: true); + static NSTimeZone timeZoneForSecondsFromGMT_(int seconds) { + final _ret = _objc_msgSend_120( + _class_NSTimeZone, _sel_timeZoneForSecondsFromGMT_, seconds); + return NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - NSString? get suggestedName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_suggestedName1); + static NSTimeZone? timeZoneWithAbbreviation_(objc.NSString abbreviation) { + final _ret = _objc_msgSend_2(_class_NSTimeZone, + _sel_timeZoneWithAbbreviation_, abbreviation.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - set suggestedName(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setSuggestedName_1, value?._id ?? ffi.nullptr); + @override + NSTimeZone init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - NSItemProvider initWithObject_(NSObject object) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObject_1, object._id); - return NSItemProvider._(_ret, _lib, retain: true, release: true); + static NSTimeZone new1() { + final _ret = _objc_msgSend_40(_class_NSTimeZone, _sel_new); + return NSTimeZone.castFromPointer(_ret, retain: false, release: true); } - void registerObject_visibility_(NSObject object, int visibility) { - _lib._objc_msgSend_680( - _id, _lib._sel_registerObject_visibility_1, object._id, visibility); + static NSTimeZone allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSTimeZone, _sel_allocWithZone_, zone); + return NSTimeZone.castFromPointer(_ret, retain: false, release: true); } - void registerObjectOfClass_visibility_loadHandler_( - NSObject aClass, - int visibility, - ObjCBlock_NSProgress_ffiVoidObjCObjectNSError loadHandler) { - _lib._objc_msgSend_681( - _id, - _lib._sel_registerObjectOfClass_visibility_loadHandler_1, - aClass._id, - visibility, - loadHandler._id); + static NSTimeZone alloc() { + final _ret = _objc_msgSend_40(_class_NSTimeZone, _sel_alloc); + return NSTimeZone.castFromPointer(_ret, retain: false, release: true); } - bool canLoadObjectOfClass_(NSObject aClass) { - return _lib._objc_msgSend_0( - _id, _lib._sel_canLoadObjectOfClass_1, aClass._id); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSTimeZone, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSProgress loadObjectOfClass_completionHandler_( - NSObject aClass, ObjCBlock_ffiVoid_ObjCObject_NSError completionHandler) { - final _ret = _lib._objc_msgSend_682( - _id, - _lib._sel_loadObjectOfClass_completionHandler_1, - aClass._id, - completionHandler._id); - return NSProgress._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSTimeZone, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSItemProvider initWithItem_typeIdentifier_( - NSObject? item, NSString? typeIdentifier) { - final _ret = _lib._objc_msgSend_683( - _id, - _lib._sel_initWithItem_typeIdentifier_1, - item?._id ?? ffi.nullptr, - typeIdentifier?._id ?? ffi.nullptr); - return NSItemProvider._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSTimeZone, _sel_accessInstanceVariablesDirectly); } - NSItemProvider? initWithContentsOfURL_(NSURL fileURL) { - final _ret = _lib._objc_msgSend_277( - _id, _lib._sel_initWithContentsOfURL_1, fileURL._id); - return _ret.address == 0 - ? null - : NSItemProvider._(_ret, _lib, retain: true, release: true); - } - - void registerItemForTypeIdentifier_loadHandler_( - NSString typeIdentifier, - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary - loadHandler) { - _lib._objc_msgSend_684( - _id, - _lib._sel_registerItemForTypeIdentifier_loadHandler_1, - typeIdentifier._id, - loadHandler._id); - } - - void loadItemForTypeIdentifier_options_completionHandler_( - NSString typeIdentifier, - NSDictionary? options, - ObjCBlock_ffiVoid_ObjCObject_NSError1? completionHandler) { - _lib._objc_msgSend_685( - _id, - _lib._sel_loadItemForTypeIdentifier_options_completionHandler_1, - typeIdentifier._id, - options?._id ?? ffi.nullptr, - completionHandler?._id ?? ffi.nullptr); - } - - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary? - get previewImageHandler { - final _ret = _lib._objc_msgSend_686(_id, _lib._sel_previewImageHandler1); - return _ret.address == 0 - ? null - : ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary._( - _ret, _lib, - retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSTimeZone, _sel_useStoredAccessor); } - set previewImageHandler( - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary? - value) { - return _lib._objc_msgSend_687( - _id, _lib._sel_setPreviewImageHandler_1, value?._id ?? ffi.nullptr); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSTimeZone, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - void loadPreviewImageWithOptions_completionHandler_(NSDictionary options, - ObjCBlock_ffiVoid_ObjCObject_NSError1 completionHandler) { - _lib._objc_msgSend_688( - _id, - _lib._sel_loadPreviewImageWithOptions_completionHandler_1, - options._id, - completionHandler._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSTimeZone, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static NSItemProvider new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSItemProvider1, _lib._sel_new1); - return NSItemProvider._(_ret, _lib, retain: false, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSTimeZone, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSTimeZone, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSTimeZone, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSTimeZone = objc.getClass("NSTimeZone"); +late final _sel_name = objc.registerName("name"); +late final _sel_data = objc.registerName("data"); +final _objc_msgSend_104 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_secondsFromGMTForDate_ = + objc.registerName("secondsFromGMTForDate:"); +final _objc_msgSend_105 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Long Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_abbreviationForDate_ = + objc.registerName("abbreviationForDate:"); +final _objc_msgSend_106 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isDaylightSavingTimeForDate_ = + objc.registerName("isDaylightSavingTimeForDate:"); +final _objc_msgSend_107 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_daylightSavingTimeOffsetForDate_ = + objc.registerName("daylightSavingTimeOffsetForDate:"); +final _objc_msgSend_108 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Double Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_108Fpret = objc.msgSendFpretPointer + .cast< + ffi.NativeFunction< + ffi.Double Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_nextDaylightSavingTimeTransitionAfterDate_ = + objc.registerName("nextDaylightSavingTimeTransitionAfterDate:"); +final _objc_msgSend_109 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_systemTimeZone = objc.registerName("systemTimeZone"); +final _objc_msgSend_110 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_resetSystemTimeZone = objc.registerName("resetSystemTimeZone"); +late final _sel_defaultTimeZone = objc.registerName("defaultTimeZone"); +late final _sel_setDefaultTimeZone_ = objc.registerName("setDefaultTimeZone:"); +final _objc_msgSend_111 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_localTimeZone = objc.registerName("localTimeZone"); +late final _sel_knownTimeZoneNames = objc.registerName("knownTimeZoneNames"); +late final _sel_abbreviationDictionary = + objc.registerName("abbreviationDictionary"); +final _objc_msgSend_112 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setAbbreviationDictionary_ = + objc.registerName("setAbbreviationDictionary:"); +final _objc_msgSend_113 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_timeZoneDataVersion = objc.registerName("timeZoneDataVersion"); +late final _sel_secondsFromGMT = objc.registerName("secondsFromGMT"); +final _objc_msgSend_114 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_abbreviation = objc.registerName("abbreviation"); +late final _sel_isDaylightSavingTime = + objc.registerName("isDaylightSavingTime"); +late final _sel_daylightSavingTimeOffset = + objc.registerName("daylightSavingTimeOffset"); +final _objc_msgSend_115 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Double Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_115Fpret = objc.msgSendFpretPointer + .cast< + ffi.NativeFunction< + ffi.Double Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_nextDaylightSavingTimeTransition = + objc.registerName("nextDaylightSavingTimeTransition"); +final _objc_msgSend_116 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_description = objc.registerName("description"); +late final _sel_isEqualToTimeZone_ = objc.registerName("isEqualToTimeZone:"); +final _objc_msgSend_117 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSTimeZoneNameStyle { + static const int NSTimeZoneNameStyleStandard = 0; + static const int NSTimeZoneNameStyleShortStandard = 1; + static const int NSTimeZoneNameStyleDaylightSaving = 2; + static const int NSTimeZoneNameStyleShortDaylightSaving = 3; + static const int NSTimeZoneNameStyleGeneric = 4; + static const int NSTimeZoneNameStyleShortGeneric = 5; +} + +late final _sel_localizedName_locale_ = + objc.registerName("localizedName:locale:"); +final _objc_msgSend_118 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_timeZoneWithName_ = objc.registerName("timeZoneWithName:"); +late final _sel_timeZoneWithName_data_ = + objc.registerName("timeZoneWithName:data:"); +final _objc_msgSend_119 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithName_ = objc.registerName("initWithName:"); +late final _sel_initWithName_data_ = objc.registerName("initWithName:data:"); +late final _sel_timeZoneForSecondsFromGMT_ = + objc.registerName("timeZoneForSecondsFromGMT:"); +final _objc_msgSend_120 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_timeZoneWithAbbreviation_ = + objc.registerName("timeZoneWithAbbreviation:"); +late final _sel_timeZone = objc.registerName("timeZone"); +late final _sel_setTimeZone_ = objc.registerName("setTimeZone:"); + +class NSCalendar extends objc.NSObject { + NSCalendar._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSCalendar] that points to the same underlying object as [other]. + NSCalendar.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSCalendar] that wraps the given raw object pointer. + NSCalendar.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSCalendar]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSCalendar); } - static NSItemProvider allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSItemProvider1, _lib._sel_allocWithZone_1, zone); - return NSItemProvider._(_ret, _lib, retain: false, release: true); + static NSCalendar getCurrentCalendar() { + final _ret = _objc_msgSend_121(_class_NSCalendar, _sel_currentCalendar); + return NSCalendar.castFromPointer(_ret, retain: true, release: true); } - static NSItemProvider alloc(AVFAudio _lib) { + static NSCalendar getAutoupdatingCurrentCalendar() { final _ret = - _lib._objc_msgSend_2(_lib._class_NSItemProvider1, _lib._sel_alloc1); - return NSItemProvider._(_ret, _lib, retain: false, release: true); + _objc_msgSend_121(_class_NSCalendar, _sel_autoupdatingCurrentCalendar); + return NSCalendar.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSItemProvider1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static NSCalendar? calendarWithIdentifier_( + objc.NSString calendarIdentifierConstant) { + final _ret = _objc_msgSend_122(_class_NSCalendar, + _sel_calendarWithIdentifier_, calendarIdentifierConstant.pointer); + return _ret.address == 0 + ? null + : NSCalendar.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSItemProvider1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + @override + NSCalendar init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSCalendar.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSItemProvider1, - _lib._sel_accessInstanceVariablesDirectly1); + objc.NSObject? initWithCalendarIdentifier_(objc.NSString ident) { + final _ret = _objc_msgSend_2( + this.pointer, _sel_initWithCalendarIdentifier_, ident.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSItemProvider1, _lib._sel_useStoredAccessor1); + objc.NSString get calendarIdentifier { + final _ret = _objc_msgSend_12(this.pointer, _sel_calendarIdentifier); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSItemProvider1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSLocale? get locale { + final _ret = _objc_msgSend_123(this.pointer, _sel_locale); + return _ret.address == 0 + ? null + : objc.NSLocale.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSItemProvider1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + set locale(objc.NSLocale? value) { + return _objc_msgSend_124( + this.pointer, _sel_setLocale_, value?.pointer ?? ffi.nullptr); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSItemProvider1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + NSTimeZone get timeZone { + final _ret = _objc_msgSend_110(this.pointer, _sel_timeZone); + return NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSItemProvider1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + set timeZone(NSTimeZone value) { + return _objc_msgSend_111(this.pointer, _sel_setTimeZone_, value.pointer); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSItemProvider1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + int get firstWeekday { + return _objc_msgSend_29(this.pointer, _sel_firstWeekday); } -} - -abstract class NSItemProviderRepresentationVisibility { - static const int NSItemProviderRepresentationVisibilityAll = 0; - static const int NSItemProviderRepresentationVisibilityTeam = 1; - static const int NSItemProviderRepresentationVisibilityGroup = 2; - static const int NSItemProviderRepresentationVisibilityOwnProcess = 3; -} - -ffi.Pointer< - ObjCObject> _ObjCBlock_NSProgress_ffiVoidNSDataNSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction< - ffi.Pointer Function(ffi.Pointer<_ObjCBlock>)>()(arg0); -final _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistry = - Function(ffi.Pointer<_ObjCBlock>)>{}; -int _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_registerClosure( - ffi.Pointer Function(ffi.Pointer<_ObjCBlock>) fn) { - final id = ++_ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistryIndex; - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) => - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistry[ - block.ref.target.address]!(arg0); -class ObjCBlock_NSProgress_ffiVoidNSDataNSError extends _ObjCBlockBase { - ObjCBlock_NSProgress_ffiVoidNSDataNSError._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_NSProgress_ffiVoidNSDataNSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_NSProgress_ffiVoidNSDataNSError._(pointer, lib, - retain: retain, release: release); + set firstWeekday(int value) { + return _objc_msgSend_125(this.pointer, _sel_setFirstWeekday_, value); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSProgress_ffiVoidNSDataNSError.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSProgress_ffiVoidNSDataNSError.fromFunction( - AVFAudio lib, NSProgress? Function(ObjCBlock_ffiVoid_NSData_NSError) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureTrampoline) - .cast(), - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_registerClosure( - (ffi.Pointer<_ObjCBlock> arg0) => - fn(ObjCBlock_ffiVoid_NSData_NSError._(arg0, lib, retain: true, release: true)) - ?.retainAndReturnPointer() ?? - ffi.nullptr)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - NSProgress? call(ObjCBlock_ffiVoid_NSData_NSError arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer<_ObjCBlock>)>() - (_id, arg0._id) - .address == - 0 - ? null - : NSProgress._( - _id.ref.invoke - .cast Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer<_ObjCBlock>)>()(_id, arg0._id), - _lib, - retain: false, - release: true); -} - -class NSProgress extends NSObject { - NSProgress._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + int get minimumDaysInFirstWeek { + return _objc_msgSend_29(this.pointer, _sel_minimumDaysInFirstWeek); + } - /// Returns a [NSProgress] that points to the same underlying object as [other]. - static NSProgress castFrom(T other) { - return NSProgress._(other._id, other._lib, retain: true, release: true); + set minimumDaysInFirstWeek(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setMinimumDaysInFirstWeek_, value); } - /// Returns a [NSProgress] that wraps the given raw object pointer. - static NSProgress castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSProgress._(other, lib, retain: retain, release: release); + objc.NSArray get eraSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_eraSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSProgress]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSProgress1); + objc.NSArray get longEraSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_longEraSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSProgress? currentProgress(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_659( - _lib._class_NSProgress1, _lib._sel_currentProgress1); - return _ret.address == 0 - ? null - : NSProgress._(_ret, _lib, retain: true, release: true); + objc.NSArray get monthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_monthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSProgress progressWithTotalUnitCount_(AVFAudio _lib, int unitCount) { - final _ret = _lib._objc_msgSend_660(_lib._class_NSProgress1, - _lib._sel_progressWithTotalUnitCount_1, unitCount); - return NSProgress._(_ret, _lib, retain: true, release: true); + objc.NSArray get shortMonthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_shortMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSProgress discreteProgressWithTotalUnitCount_( - AVFAudio _lib, int unitCount) { - final _ret = _lib._objc_msgSend_660(_lib._class_NSProgress1, - _lib._sel_discreteProgressWithTotalUnitCount_1, unitCount); - return NSProgress._(_ret, _lib, retain: true, release: true); + objc.NSArray get veryShortMonthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_veryShortMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSProgress progressWithTotalUnitCount_parent_pendingUnitCount_( - AVFAudio _lib, - int unitCount, - NSProgress parent, - int portionOfParentTotalUnitCount) { - final _ret = _lib._objc_msgSend_661( - _lib._class_NSProgress1, - _lib._sel_progressWithTotalUnitCount_parent_pendingUnitCount_1, - unitCount, - parent._id, - portionOfParentTotalUnitCount); - return NSProgress._(_ret, _lib, retain: true, release: true); + objc.NSArray get standaloneMonthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_standaloneMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSProgress initWithParent_userInfo_( - NSProgress? parentProgressOrNil, NSObject? userInfoOrNil) { - final _ret = _lib._objc_msgSend_662( - _id, - _lib._sel_initWithParent_userInfo_1, - parentProgressOrNil?._id ?? ffi.nullptr, - userInfoOrNil?._id ?? ffi.nullptr); - return NSProgress._(_ret, _lib, retain: true, release: true); + objc.NSArray get shortStandaloneMonthSymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_shortStandaloneMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void becomeCurrentWithPendingUnitCount_(int unitCount) { - _lib._objc_msgSend_663( - _id, _lib._sel_becomeCurrentWithPendingUnitCount_1, unitCount); + objc.NSArray get veryShortStandaloneMonthSymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_veryShortStandaloneMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void performAsCurrentWithPendingUnitCount_usingBlock_( - int unitCount, ObjCBlock_ffiVoid work) { - _lib._objc_msgSend_664( - _id, - _lib._sel_performAsCurrentWithPendingUnitCount_usingBlock_1, - unitCount, - work._id); + objc.NSArray get weekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_weekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void resignCurrent() { - _lib._objc_msgSend_1(_id, _lib._sel_resignCurrent1); + objc.NSArray get shortWeekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_shortWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void addChild_withPendingUnitCount_(NSProgress child, int inUnitCount) { - _lib._objc_msgSend_665( - _id, _lib._sel_addChild_withPendingUnitCount_1, child._id, inUnitCount); + objc.NSArray get veryShortWeekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_veryShortWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int get totalUnitCount { - return _lib._objc_msgSend_666(_id, _lib._sel_totalUnitCount1); + objc.NSArray get standaloneWeekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_standaloneWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set totalUnitCount(int value) { - return _lib._objc_msgSend_667(_id, _lib._sel_setTotalUnitCount_1, value); + objc.NSArray get shortStandaloneWeekdaySymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_shortStandaloneWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int get completedUnitCount { - return _lib._objc_msgSend_666(_id, _lib._sel_completedUnitCount1); + objc.NSArray get veryShortStandaloneWeekdaySymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_veryShortStandaloneWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set completedUnitCount(int value) { - return _lib._objc_msgSend_667( - _id, _lib._sel_setCompletedUnitCount_1, value); + objc.NSArray get quarterSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_quarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString get localizedDescription { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_localizedDescription1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray get shortQuarterSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_shortQuarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set localizedDescription(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setLocalizedDescription_1, value._id); + objc.NSArray get standaloneQuarterSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_standaloneQuarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString get localizedAdditionalDescription { + objc.NSArray get shortStandaloneQuarterSymbols { final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_localizedAdditionalDescription1); - return NSString._(_ret, _lib, retain: true, release: true); + _objc_msgSend_6(this.pointer, _sel_shortStandaloneQuarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set localizedAdditionalDescription(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setLocalizedAdditionalDescription_1, value._id); + objc.NSString get AMSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_AMSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool get cancellable { - return _lib._objc_msgSend_12(_id, _lib._sel_isCancellable1); + objc.NSString get PMSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_PMSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set cancellable(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setCancellable_1, value); + void minimumRangeOfUnit_(ffi.Pointer<_NSRange> stret, int unit) { + objc.useMsgSendVariants + ? _objc_msgSend_126Stret( + stret, this.pointer, _sel_minimumRangeOfUnit_, unit) + : stret.ref = + _objc_msgSend_126(this.pointer, _sel_minimumRangeOfUnit_, unit); } - bool get pausable { - return _lib._objc_msgSend_12(_id, _lib._sel_isPausable1); + void maximumRangeOfUnit_(ffi.Pointer<_NSRange> stret, int unit) { + objc.useMsgSendVariants + ? _objc_msgSend_126Stret( + stret, this.pointer, _sel_maximumRangeOfUnit_, unit) + : stret.ref = + _objc_msgSend_126(this.pointer, _sel_maximumRangeOfUnit_, unit); } - set pausable(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setPausable_1, value); + void rangeOfUnit_inUnit_forDate_( + ffi.Pointer<_NSRange> stret, int smaller, int larger, objc.NSDate date) { + objc.useMsgSendVariants + ? _objc_msgSend_127Stret(stret, this.pointer, + _sel_rangeOfUnit_inUnit_forDate_, smaller, larger, date.pointer) + : stret.ref = _objc_msgSend_127(this.pointer, + _sel_rangeOfUnit_inUnit_forDate_, smaller, larger, date.pointer); } - bool get cancelled { - return _lib._objc_msgSend_12(_id, _lib._sel_isCancelled1); + int ordinalityOfUnit_inUnit_forDate_( + int smaller, int larger, objc.NSDate date) { + return _objc_msgSend_128(this.pointer, + _sel_ordinalityOfUnit_inUnit_forDate_, smaller, larger, date.pointer); } - bool get paused { - return _lib._objc_msgSend_12(_id, _lib._sel_isPaused1); + bool rangeOfUnit_startDate_interval_forDate_( + int unit, + ffi.Pointer> datep, + ffi.Pointer tip, + objc.NSDate date) { + return _objc_msgSend_129( + this.pointer, + _sel_rangeOfUnit_startDate_interval_forDate_, + unit, + datep, + tip, + date.pointer); } - ObjCBlock_ffiVoid? get cancellationHandler { - final _ret = _lib._objc_msgSend_668(_id, _lib._sel_cancellationHandler1); + objc.NSDate? dateFromComponents_(NSDateComponents comps) { + final _ret = _objc_msgSend_139( + this.pointer, _sel_dateFromComponents_, comps.pointer); return _ret.address == 0 ? null - : ObjCBlock_ffiVoid._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - set cancellationHandler(ObjCBlock_ffiVoid? value) { - return _lib._objc_msgSend_669( - _id, _lib._sel_setCancellationHandler_1, value?._id ?? ffi.nullptr); + NSDateComponents components_fromDate_(int unitFlags, objc.NSDate date) { + final _ret = _objc_msgSend_140( + this.pointer, _sel_components_fromDate_, unitFlags, date.pointer); + return NSDateComponents.castFromPointer(_ret, retain: true, release: true); } - ObjCBlock_ffiVoid? get pausingHandler { - final _ret = _lib._objc_msgSend_668(_id, _lib._sel_pausingHandler1); + objc.NSDate? dateByAddingComponents_toDate_options_( + NSDateComponents comps, objc.NSDate date, int opts) { + final _ret = _objc_msgSend_141( + this.pointer, + _sel_dateByAddingComponents_toDate_options_, + comps.pointer, + date.pointer, + opts); return _ret.address == 0 ? null - : ObjCBlock_ffiVoid._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - set pausingHandler(ObjCBlock_ffiVoid? value) { - return _lib._objc_msgSend_669( - _id, _lib._sel_setPausingHandler_1, value?._id ?? ffi.nullptr); + NSDateComponents components_fromDate_toDate_options_(int unitFlags, + objc.NSDate startingDate, objc.NSDate resultDate, int opts) { + final _ret = _objc_msgSend_142( + this.pointer, + _sel_components_fromDate_toDate_options_, + unitFlags, + startingDate.pointer, + resultDate.pointer, + opts); + return NSDateComponents.castFromPointer(_ret, retain: true, release: true); } - ObjCBlock_ffiVoid? get resumingHandler { - final _ret = _lib._objc_msgSend_668(_id, _lib._sel_resumingHandler1); - return _ret.address == 0 - ? null - : ObjCBlock_ffiVoid._(_ret, _lib, retain: true, release: true); + void getEra_year_month_day_fromDate_( + ffi.Pointer eraValuePointer, + ffi.Pointer yearValuePointer, + ffi.Pointer monthValuePointer, + ffi.Pointer dayValuePointer, + objc.NSDate date) { + _objc_msgSend_143( + this.pointer, + _sel_getEra_year_month_day_fromDate_, + eraValuePointer, + yearValuePointer, + monthValuePointer, + dayValuePointer, + date.pointer); } - set resumingHandler(ObjCBlock_ffiVoid? value) { - return _lib._objc_msgSend_669( - _id, _lib._sel_setResumingHandler_1, value?._id ?? ffi.nullptr); + void getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_( + ffi.Pointer eraValuePointer, + ffi.Pointer yearValuePointer, + ffi.Pointer weekValuePointer, + ffi.Pointer weekdayValuePointer, + objc.NSDate date) { + _objc_msgSend_143( + this.pointer, + _sel_getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_, + eraValuePointer, + yearValuePointer, + weekValuePointer, + weekdayValuePointer, + date.pointer); } - void setUserInfoObject_forKey_(NSObject? objectOrNil, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_setUserInfoObject_forKey_1, - objectOrNil?._id ?? ffi.nullptr, key._id); + void getHour_minute_second_nanosecond_fromDate_( + ffi.Pointer hourValuePointer, + ffi.Pointer minuteValuePointer, + ffi.Pointer secondValuePointer, + ffi.Pointer nanosecondValuePointer, + objc.NSDate date) { + _objc_msgSend_143( + this.pointer, + _sel_getHour_minute_second_nanosecond_fromDate_, + hourValuePointer, + minuteValuePointer, + secondValuePointer, + nanosecondValuePointer, + date.pointer); } - bool get indeterminate { - return _lib._objc_msgSend_12(_id, _lib._sel_isIndeterminate1); + int component_fromDate_(int unit, objc.NSDate date) { + return _objc_msgSend_144( + this.pointer, _sel_component_fromDate_, unit, date.pointer); } - double get fractionCompleted { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_fractionCompleted1) - : _lib._objc_msgSend_165(_id, _lib._sel_fractionCompleted1); + objc.NSDate? dateWithEra_year_month_day_hour_minute_second_nanosecond_( + int eraValue, + int yearValue, + int monthValue, + int dayValue, + int hourValue, + int minuteValue, + int secondValue, + int nanosecondValue) { + final _ret = _objc_msgSend_145( + this.pointer, + _sel_dateWithEra_year_month_day_hour_minute_second_nanosecond_, + eraValue, + yearValue, + monthValue, + dayValue, + hourValue, + minuteValue, + secondValue, + nanosecondValue); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - bool get finished { - return _lib._objc_msgSend_12(_id, _lib._sel_isFinished1); + objc.NSDate? + dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_( + int eraValue, + int yearValue, + int weekValue, + int weekdayValue, + int hourValue, + int minuteValue, + int secondValue, + int nanosecondValue) { + final _ret = _objc_msgSend_145( + this.pointer, + _sel_dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_, + eraValue, + yearValue, + weekValue, + weekdayValue, + hourValue, + minuteValue, + secondValue, + nanosecondValue); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - void cancel() { - _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + objc.NSDate startOfDayForDate_(objc.NSDate date) { + final _ret = + _objc_msgSend_146(this.pointer, _sel_startOfDayForDate_, date.pointer); + return objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - void pause() { - _lib._objc_msgSend_1(_id, _lib._sel_pause1); + NSDateComponents componentsInTimeZone_fromDate_( + NSTimeZone timezone, objc.NSDate date) { + final _ret = _objc_msgSend_147(this.pointer, + _sel_componentsInTimeZone_fromDate_, timezone.pointer, date.pointer); + return NSDateComponents.castFromPointer(_ret, retain: true, release: true); } - void resume() { - _lib._objc_msgSend_1(_id, _lib._sel_resume1); + int compareDate_toDate_toUnitGranularity_( + objc.NSDate date1, objc.NSDate date2, int unit) { + return _objc_msgSend_148( + this.pointer, + _sel_compareDate_toDate_toUnitGranularity_, + date1.pointer, + date2.pointer, + unit); } - NSObject get userInfo { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_userInfo1); - return NSObject._(_ret, _lib, retain: true, release: true); + bool isDate_equalToDate_toUnitGranularity_( + objc.NSDate date1, objc.NSDate date2, int unit) { + return _objc_msgSend_149( + this.pointer, + _sel_isDate_equalToDate_toUnitGranularity_, + date1.pointer, + date2.pointer, + unit); } - NSString? get kind { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_kind1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + bool isDate_inSameDayAsDate_(objc.NSDate date1, objc.NSDate date2) { + return _objc_msgSend_150(this.pointer, _sel_isDate_inSameDayAsDate_, + date1.pointer, date2.pointer); } - set kind(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setKind_1, value?._id ?? ffi.nullptr); + bool isDateInToday_(objc.NSDate date) { + return _objc_msgSend_107(this.pointer, _sel_isDateInToday_, date.pointer); } - NSNumber? get estimatedTimeRemaining { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_estimatedTimeRemaining1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); + bool isDateInYesterday_(objc.NSDate date) { + return _objc_msgSend_107( + this.pointer, _sel_isDateInYesterday_, date.pointer); } - set estimatedTimeRemaining(NSNumber? value) { - return _lib._objc_msgSend_670( - _id, _lib._sel_setEstimatedTimeRemaining_1, value?._id ?? ffi.nullptr); + bool isDateInTomorrow_(objc.NSDate date) { + return _objc_msgSend_107( + this.pointer, _sel_isDateInTomorrow_, date.pointer); } - NSNumber? get throughput { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_throughput1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); + bool isDateInWeekend_(objc.NSDate date) { + return _objc_msgSend_107(this.pointer, _sel_isDateInWeekend_, date.pointer); } - set throughput(NSNumber? value) { - return _lib._objc_msgSend_670( - _id, _lib._sel_setThroughput_1, value?._id ?? ffi.nullptr); + bool rangeOfWeekendStartDate_interval_containingDate_( + ffi.Pointer> datep, + ffi.Pointer tip, + objc.NSDate date) { + return _objc_msgSend_151( + this.pointer, + _sel_rangeOfWeekendStartDate_interval_containingDate_, + datep, + tip, + date.pointer); } - NSString? get fileOperationKind { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_fileOperationKind1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + bool nextWeekendStartDate_interval_options_afterDate_( + ffi.Pointer> datep, + ffi.Pointer tip, + int options, + objc.NSDate date) { + return _objc_msgSend_152( + this.pointer, + _sel_nextWeekendStartDate_interval_options_afterDate_, + datep, + tip, + options, + date.pointer); } - set fileOperationKind(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setFileOperationKind_1, value?._id ?? ffi.nullptr); + NSDateComponents components_fromDateComponents_toDateComponents_options_( + int unitFlags, + NSDateComponents startingDateComp, + NSDateComponents resultDateComp, + int options) { + final _ret = _objc_msgSend_153( + this.pointer, + _sel_components_fromDateComponents_toDateComponents_options_, + unitFlags, + startingDateComp.pointer, + resultDateComp.pointer, + options); + return NSDateComponents.castFromPointer(_ret, retain: true, release: true); } - NSURL? get fileURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_fileURL1); + objc.NSDate? dateByAddingUnit_value_toDate_options_( + int unit, int value, objc.NSDate date, int options) { + final _ret = _objc_msgSend_154( + this.pointer, + _sel_dateByAddingUnit_value_toDate_options_, + unit, + value, + date.pointer, + options); return _ret.address == 0 ? null - : NSURL._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - set fileURL(NSURL? value) { - return _lib._objc_msgSend_671( - _id, _lib._sel_setFileURL_1, value?._id ?? ffi.nullptr); + void enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_( + objc.NSDate start, + NSDateComponents comps, + int opts, + ObjCBlock_ffiVoid_NSDate_bool_bool block) { + _objc_msgSend_155( + this.pointer, + _sel_enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_, + start.pointer, + comps.pointer, + opts, + block.pointer); } - NSNumber? get fileTotalCount { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_fileTotalCount1); + objc.NSDate? nextDateAfterDate_matchingComponents_options_( + objc.NSDate date, NSDateComponents comps, int options) { + final _ret = _objc_msgSend_156( + this.pointer, + _sel_nextDateAfterDate_matchingComponents_options_, + date.pointer, + comps.pointer, + options); return _ret.address == 0 ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - set fileTotalCount(NSNumber? value) { - return _lib._objc_msgSend_670( - _id, _lib._sel_setFileTotalCount_1, value?._id ?? ffi.nullptr); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - NSNumber? get fileCompletedCount { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_fileCompletedCount1); + objc.NSDate? nextDateAfterDate_matchingUnit_value_options_( + objc.NSDate date, int unit, int value, int options) { + final _ret = _objc_msgSend_157( + this.pointer, + _sel_nextDateAfterDate_matchingUnit_value_options_, + date.pointer, + unit, + value, + options); return _ret.address == 0 ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - set fileCompletedCount(NSNumber? value) { - return _lib._objc_msgSend_670( - _id, _lib._sel_setFileCompletedCount_1, value?._id ?? ffi.nullptr); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - void publish() { - _lib._objc_msgSend_1(_id, _lib._sel_publish1); - } - - void unpublish() { - _lib._objc_msgSend_1(_id, _lib._sel_unpublish1); - } - - static NSObject addSubscriberForFileURL_withPublishingHandler_(AVFAudio _lib, - NSURL url, ObjCBlock_ffiVoid_NSProgress publishingHandler) { - final _ret = _lib._objc_msgSend_672( - _lib._class_NSProgress1, - _lib._sel_addSubscriberForFileURL_withPublishingHandler_1, - url._id, - publishingHandler._id); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSDate? nextDateAfterDate_matchingHour_minute_second_options_( + objc.NSDate date, + int hourValue, + int minuteValue, + int secondValue, + int options) { + final _ret = _objc_msgSend_158( + this.pointer, + _sel_nextDateAfterDate_matchingHour_minute_second_options_, + date.pointer, + hourValue, + minuteValue, + secondValue, + options); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - static void removeSubscriber_(AVFAudio _lib, NSObject subscriber) { - _lib._objc_msgSend_15( - _lib._class_NSProgress1, _lib._sel_removeSubscriber_1, subscriber._id); + objc.NSDate? dateBySettingUnit_value_ofDate_options_( + int unit, int v, objc.NSDate date, int opts) { + final _ret = _objc_msgSend_154( + this.pointer, + _sel_dateBySettingUnit_value_ofDate_options_, + unit, + v, + date.pointer, + opts); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - bool get old { - return _lib._objc_msgSend_12(_id, _lib._sel_isOld1); + objc.NSDate? dateBySettingHour_minute_second_ofDate_options_( + int h, int m, int s, objc.NSDate date, int opts) { + final _ret = _objc_msgSend_159( + this.pointer, + _sel_dateBySettingHour_minute_second_ofDate_options_, + h, + m, + s, + date.pointer, + opts); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - @override - NSProgress init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSProgress._(_ret, _lib, retain: true, release: true); + bool date_matchesComponents_(objc.NSDate date, NSDateComponents components) { + return _objc_msgSend_160(this.pointer, _sel_date_matchesComponents_, + date.pointer, components.pointer); } - static NSProgress new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSProgress1, _lib._sel_new1); - return NSProgress._(_ret, _lib, retain: false, release: true); + static NSCalendar new1() { + final _ret = _objc_msgSend_40(_class_NSCalendar, _sel_new); + return NSCalendar.castFromPointer(_ret, retain: false, release: true); } - static NSProgress allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSProgress1, _lib._sel_allocWithZone_1, zone); - return NSProgress._(_ret, _lib, retain: false, release: true); + static NSCalendar allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSCalendar, _sel_allocWithZone_, zone); + return NSCalendar.castFromPointer(_ret, retain: false, release: true); } - static NSProgress alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSProgress1, _lib._sel_alloc1); - return NSProgress._(_ret, _lib, retain: false, release: true); + static NSCalendar alloc() { + final _ret = _objc_msgSend_40(_class_NSCalendar, _sel_alloc); + return NSCalendar.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSProgress1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSCalendar, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSProgress1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSCalendar, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSProgress1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSCalendar, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSProgress1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSCalendar, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSProgress1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSCalendar, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSProgress1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSCalendar, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSProgress1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSProgress1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSCalendar, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSCalendar, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSCalendar, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSCalendar = objc.getClass("NSCalendar"); +late final _sel_currentCalendar = objc.registerName("currentCalendar"); +final _objc_msgSend_121 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_autoupdatingCurrentCalendar = + objc.registerName("autoupdatingCurrentCalendar"); +late final _sel_calendarWithIdentifier_ = + objc.registerName("calendarWithIdentifier:"); +final _objc_msgSend_122 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithCalendarIdentifier_ = + objc.registerName("initWithCalendarIdentifier:"); +late final _sel_calendarIdentifier = objc.registerName("calendarIdentifier"); +final _objc_msgSend_123 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_124 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_firstWeekday = objc.registerName("firstWeekday"); +late final _sel_setFirstWeekday_ = objc.registerName("setFirstWeekday:"); +final _objc_msgSend_125 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_minimumDaysInFirstWeek = + objc.registerName("minimumDaysInFirstWeek"); +late final _sel_setMinimumDaysInFirstWeek_ = + objc.registerName("setMinimumDaysInFirstWeek:"); +late final _sel_eraSymbols = objc.registerName("eraSymbols"); +late final _sel_longEraSymbols = objc.registerName("longEraSymbols"); +late final _sel_monthSymbols = objc.registerName("monthSymbols"); +late final _sel_shortMonthSymbols = objc.registerName("shortMonthSymbols"); +late final _sel_veryShortMonthSymbols = + objc.registerName("veryShortMonthSymbols"); +late final _sel_standaloneMonthSymbols = + objc.registerName("standaloneMonthSymbols"); +late final _sel_shortStandaloneMonthSymbols = + objc.registerName("shortStandaloneMonthSymbols"); +late final _sel_veryShortStandaloneMonthSymbols = + objc.registerName("veryShortStandaloneMonthSymbols"); +late final _sel_weekdaySymbols = objc.registerName("weekdaySymbols"); +late final _sel_shortWeekdaySymbols = objc.registerName("shortWeekdaySymbols"); +late final _sel_veryShortWeekdaySymbols = + objc.registerName("veryShortWeekdaySymbols"); +late final _sel_standaloneWeekdaySymbols = + objc.registerName("standaloneWeekdaySymbols"); +late final _sel_shortStandaloneWeekdaySymbols = + objc.registerName("shortStandaloneWeekdaySymbols"); +late final _sel_veryShortStandaloneWeekdaySymbols = + objc.registerName("veryShortStandaloneWeekdaySymbols"); +late final _sel_quarterSymbols = objc.registerName("quarterSymbols"); +late final _sel_shortQuarterSymbols = objc.registerName("shortQuarterSymbols"); +late final _sel_standaloneQuarterSymbols = + objc.registerName("standaloneQuarterSymbols"); +late final _sel_shortStandaloneQuarterSymbols = + objc.registerName("shortStandaloneQuarterSymbols"); +late final _sel_AMSymbol = objc.registerName("AMSymbol"); +late final _sel_PMSymbol = objc.registerName("PMSymbol"); - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSProgress1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } +abstract class NSCalendarUnit { + static const int NSCalendarUnitEra = 2; + static const int NSCalendarUnitYear = 4; + static const int NSCalendarUnitMonth = 8; + static const int NSCalendarUnitDay = 16; + static const int NSCalendarUnitHour = 32; + static const int NSCalendarUnitMinute = 64; + static const int NSCalendarUnitSecond = 128; + static const int NSCalendarUnitWeekday = 512; + static const int NSCalendarUnitWeekdayOrdinal = 1024; + static const int NSCalendarUnitQuarter = 2048; + static const int NSCalendarUnitWeekOfMonth = 4096; + static const int NSCalendarUnitWeekOfYear = 8192; + static const int NSCalendarUnitYearForWeekOfYear = 16384; + static const int NSCalendarUnitNanosecond = 32768; + static const int NSCalendarUnitCalendar = 1048576; + static const int NSCalendarUnitTimeZone = 2097152; + static const int NSEraCalendarUnit = 2; + static const int NSYearCalendarUnit = 4; + static const int NSMonthCalendarUnit = 8; + static const int NSDayCalendarUnit = 16; + static const int NSHourCalendarUnit = 32; + static const int NSMinuteCalendarUnit = 64; + static const int NSSecondCalendarUnit = 128; + static const int NSWeekCalendarUnit = 256; + static const int NSWeekdayCalendarUnit = 512; + static const int NSWeekdayOrdinalCalendarUnit = 1024; + static const int NSQuarterCalendarUnit = 2048; + static const int NSWeekOfMonthCalendarUnit = 4096; + static const int NSWeekOfYearCalendarUnit = 8192; + static const int NSYearForWeekOfYearCalendarUnit = 16384; + static const int NSCalendarCalendarUnit = 1048576; + static const int NSTimeZoneCalendarUnit = 2097152; } -ffi.Pointer<_ObjCBlock> _ObjCBlock_ffiVoid_NSProgress_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer arg0)>>() - .asFunction< - ffi.Pointer<_ObjCBlock> Function(ffi.Pointer)>()(arg0); -final _ObjCBlock_ffiVoid_NSProgress_closureRegistry = - Function(ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSProgress_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSProgress_registerClosure( - ffi.Pointer<_ObjCBlock> Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSProgress_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSProgress_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} +late final _sel_minimumRangeOfUnit_ = objc.registerName("minimumRangeOfUnit:"); +final _objc_msgSend_126 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, int)>(); +final _objc_msgSend_126Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_maximumRangeOfUnit_ = objc.registerName("maximumRangeOfUnit:"); +late final _sel_rangeOfUnit_inUnit_forDate_ = + objc.registerName("rangeOfUnit:inUnit:forDate:"); +final _objc_msgSend_127 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer)>(); +final _objc_msgSend_127Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer)>(); +late final _sel_ordinalityOfUnit_inUnit_forDate_ = + objc.registerName("ordinalityOfUnit:inUnit:forDate:"); +final _objc_msgSend_128 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer)>(); +late final _sel_rangeOfUnit_startDate_interval_forDate_ = + objc.registerName("rangeOfUnit:startDate:interval:forDate:"); +final _objc_msgSend_129 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer)>(); + +class NSDateComponents extends objc.NSObject { + NSDateComponents._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); -ffi.Pointer<_ObjCBlock> _ObjCBlock_ffiVoid_NSProgress_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSProgress_closureRegistry[block.ref.target.address]!( - arg0); + /// Constructs a [NSDateComponents] that points to the same underlying object as [other]. + NSDateComponents.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); -class ObjCBlock_ffiVoid_NSProgress extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSProgress._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + /// Constructs a [NSDateComponents] that wraps the given raw object pointer. + NSDateComponents.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSProgress castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSProgress._(pointer, lib, - retain: retain, release: release); + /// Returns whether [obj] is an instance of [NSDateComponents]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSDateComponents); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSProgress.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSProgress_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSProgress.fromFunction( - AVFAudio lib, ObjCBlock_ffiVoid? Function(NSProgress) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSProgress_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSProgress_registerClosure( - (ffi.Pointer arg0) => - fn(NSProgress._(arg0, lib, retain: true, release: true)) - ?.retainAndReturnPointer() ?? - ffi.nullptr)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - ObjCBlock_ffiVoid? call(NSProgress arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>() - (_id, arg0._id) - .address == - 0 - ? null - : ObjCBlock_ffiVoid._( - _id.ref.invoke - .cast Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>()(_id, arg0._id), - _lib, - retain: false, - release: true); -} - -void _ObjCBlock_ffiVoid_NSData_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_NSData_NSError_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSData_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSData_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSData_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSData_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSData_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_NSData_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_ffiVoid_NSData_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSData_NSError._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSData_NSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSData_NSError._(pointer, lib, - retain: retain, release: release); + NSCalendar? get calendar { + final _ret = _objc_msgSend_130(this.pointer, _sel_calendar); + return _ret.address == 0 + ? null + : NSCalendar.castFromPointer(_ret, retain: true, release: true); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSData_NSError.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + set calendar(NSCalendar? value) { + return _objc_msgSend_131( + this.pointer, _sel_setCalendar_, value?.pointer ?? ffi.nullptr); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSData_NSError.fromFunction( - AVFAudio lib, void Function(NSData?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= - ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSData_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSData._(arg0, lib, retain: true, release: true), - arg1.address == 0 - ? null - : NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + NSTimeZone? get timeZone { + final _ret = _objc_msgSend_132(this.pointer, _sel_timeZone); + return _ret.address == 0 + ? null + : NSTimeZone.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSData_NSError.listener( - AVFAudio lib, void Function(NSData?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= - ffi.NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSData_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSData_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSData._(arg0, lib, retain: true, release: true), - arg1.address == 0 - ? null - : NSError._(arg1, lib, - retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; + set timeZone(NSTimeZone? value) { + return _objc_msgSend_133( + this.pointer, _sel_setTimeZone_, value?.pointer ?? ffi.nullptr); + } - void call(NSData? arg0, NSError? arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1?._id ?? ffi.nullptr); -} + int get era { + return _objc_msgSend_114(this.pointer, _sel_era); + } -abstract class NSItemProviderFileOptions { - static const int NSItemProviderFileOptionOpenInPlace = 1; -} + set era(int value) { + return _objc_msgSend_134(this.pointer, _sel_setEra_, value); + } -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>)>()(arg0); -final _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureRegistry = - Function(ffi.Pointer<_ObjCBlock>)>{}; -int _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_registerClosure( - ffi.Pointer Function(ffi.Pointer<_ObjCBlock>) fn) { - final id = - ++_ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureRegistryIndex; - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + int get year { + return _objc_msgSend_114(this.pointer, _sel_year); + } -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) => - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureRegistry[ - block.ref.target.address]!(arg0); + set year(int value) { + return _objc_msgSend_134(this.pointer, _sel_setYear_, value); + } -class ObjCBlock_NSProgress_ffiVoidNSURLboolNSError extends _ObjCBlockBase { - ObjCBlock_NSProgress_ffiVoidNSURLboolNSError._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + int get month { + return _objc_msgSend_114(this.pointer, _sel_month); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_NSProgress_ffiVoidNSURLboolNSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_NSProgress_ffiVoidNSURLboolNSError._(pointer, lib, - retain: retain, release: release); + set month(int value) { + return _objc_msgSend_134(this.pointer, _sel_setMonth_, value); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSProgress_ffiVoidNSURLboolNSError.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + int get day { + return _objc_msgSend_114(this.pointer, _sel_day); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSProgress_ffiVoidNSURLboolNSError.fromFunction(AVFAudio lib, - NSProgress? Function(ObjCBlock_ffiVoid_NSURL_bool_NSError) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureTrampoline) - .cast(), - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_registerClosure( - (ffi.Pointer<_ObjCBlock> arg0) => - fn(ObjCBlock_ffiVoid_NSURL_bool_NSError._(arg0, lib, retain: true, release: true)) - ?.retainAndReturnPointer() ?? - ffi.nullptr)), - lib); - static ffi.Pointer? _dartFuncTrampoline; + set day(int value) { + return _objc_msgSend_134(this.pointer, _sel_setDay_, value); + } - NSProgress? call(ObjCBlock_ffiVoid_NSURL_bool_NSError arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer<_ObjCBlock>)>() - (_id, arg0._id) - .address == - 0 - ? null - : NSProgress._( - _id.ref.invoke - .cast Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer<_ObjCBlock>)>()(_id, arg0._id), - _lib, - retain: false, - release: true); -} + int get hour { + return _objc_msgSend_114(this.pointer, _sel_hour); + } -void _ObjCBlock_ffiVoid_NSURL_bool_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - bool arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, bool, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureRegistry = , bool, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSURL_bool_NSError_registerClosure( - void Function(ffi.Pointer, bool, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSURL_bool_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + set hour(int value) { + return _objc_msgSend_134(this.pointer, _sel_setHour_, value); + } -void _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - bool arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); + int get minute { + return _objc_msgSend_114(this.pointer, _sel_minute); + } -class ObjCBlock_ffiVoid_NSURL_bool_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURL_bool_NSError._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + set minute(int value) { + return _objc_msgSend_134(this.pointer, _sel_setMinute_, value); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSURL_bool_NSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSURL_bool_NSError._(pointer, lib, - retain: retain, release: release); + int get second { + return _objc_msgSend_114(this.pointer, _sel_second); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURL_bool_NSError.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURL_bool_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + set second(int value) { + return _objc_msgSend_134(this.pointer, _sel_setSecond_, value); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURL_bool_NSError.fromFunction( - AVFAudio lib, void Function(NSURL?, bool, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= - ffi.Pointer.fromFunction, ffi.Pointer, ffi.Bool, ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURL_bool_NSError_registerClosure( - (ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) => fn( - arg0.address == 0 - ? null - : NSURL._(arg0, lib, retain: true, release: true), - arg1, - arg2.address == 0 - ? null - : NSError._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + int get nanosecond { + return _objc_msgSend_114(this.pointer, _sel_nanosecond); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSURL_bool_NSError.listener( - AVFAudio lib, void Function(NSURL?, bool, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= - ffi.NativeCallable, ffi.Pointer, ffi.Bool, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSURL_bool_NSError_registerClosure( - (ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) => fn( - arg0.address == 0 - ? null - : NSURL._(arg0, lib, retain: true, release: true), - arg1, - arg2.address == 0 - ? null - : NSError._(arg2, lib, - retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Bool, ffi.Pointer)>? _dartFuncListenerTrampoline; + set nanosecond(int value) { + return _objc_msgSend_134(this.pointer, _sel_setNanosecond_, value); + } - void call(NSURL? arg0, bool arg1, NSError? arg2) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Bool arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - bool, ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1, arg2?._id ?? ffi.nullptr); -} + int get weekday { + return _objc_msgSend_114(this.pointer, _sel_weekday); + } -void _ObjCBlock_ffiVoid_NSURL_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_NSURL_NSError_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSURL_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSURL_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSURL_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURL_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + set weekday(int value) { + return _objc_msgSend_134(this.pointer, _sel_setWeekday_, value); + } -void _ObjCBlock_ffiVoid_NSURL_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_NSURL_NSError_closureRegistry[block.ref.target.address]!( - arg0, arg1); + int get weekdayOrdinal { + return _objc_msgSend_114(this.pointer, _sel_weekdayOrdinal); + } -class ObjCBlock_ffiVoid_NSURL_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURL_NSError._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + set weekdayOrdinal(int value) { + return _objc_msgSend_134(this.pointer, _sel_setWeekdayOrdinal_, value); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSURL_NSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSURL_NSError._(pointer, lib, - retain: retain, release: release); + int get quarter { + return _objc_msgSend_114(this.pointer, _sel_quarter); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURL_NSError.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURL_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + set quarter(int value) { + return _objc_msgSend_134(this.pointer, _sel_setQuarter_, value); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURL_NSError.fromFunction( - AVFAudio lib, void Function(NSURL?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURL_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURL_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 ? null : NSURL._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + int get weekOfMonth { + return _objc_msgSend_114(this.pointer, _sel_weekOfMonth); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSURL_NSError.listener( - AVFAudio lib, void Function(NSURL?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= - ffi.NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSURL_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSURL_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSURL._(arg0, lib, retain: true, release: true), - arg1.address == 0 - ? null - : NSError._(arg1, lib, - retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; + set weekOfMonth(int value) { + return _objc_msgSend_134(this.pointer, _sel_setWeekOfMonth_, value); + } - void call(NSURL? arg0, NSError? arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1?._id ?? ffi.nullptr); -} + int get weekOfYear { + return _objc_msgSend_114(this.pointer, _sel_weekOfYear); + } -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>)>()(arg0); -final _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureRegistry = - Function(ffi.Pointer<_ObjCBlock>)>{}; -int _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_registerClosure( - ffi.Pointer Function(ffi.Pointer<_ObjCBlock>) fn) { - final id = - ++_ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureRegistryIndex; - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + set weekOfYear(int value) { + return _objc_msgSend_134(this.pointer, _sel_setWeekOfYear_, value); + } -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) => - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureRegistry[ - block.ref.target.address]!(arg0); + int get yearForWeekOfYear { + return _objc_msgSend_114(this.pointer, _sel_yearForWeekOfYear); + } -class ObjCBlock_NSProgress_ffiVoidObjCObjectNSError extends _ObjCBlockBase { - ObjCBlock_NSProgress_ffiVoidObjCObjectNSError._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + set yearForWeekOfYear(int value) { + return _objc_msgSend_134(this.pointer, _sel_setYearForWeekOfYear_, value); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_NSProgress_ffiVoidObjCObjectNSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_NSProgress_ffiVoidObjCObjectNSError._(pointer, lib, - retain: retain, release: release); + bool get leapMonth { + return _objc_msgSend_7(this.pointer, _sel_isLeapMonth); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSProgress_ffiVoidObjCObjectNSError.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + set leapMonth(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setLeapMonth_, value); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSProgress_ffiVoidObjCObjectNSError.fromFunction(AVFAudio lib, - NSProgress? Function(ObjCBlock_ffiVoid_ObjCObject_NSError) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureTrampoline) - .cast(), - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_registerClosure( - (ffi.Pointer<_ObjCBlock> arg0) => - fn(ObjCBlock_ffiVoid_ObjCObject_NSError._(arg0, lib, retain: true, release: true)) - ?.retainAndReturnPointer() ?? - ffi.nullptr)), - lib); - static ffi.Pointer? _dartFuncTrampoline; + objc.NSDate? get date { + final _ret = _objc_msgSend_116(this.pointer, _sel_date); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); + } - NSProgress? call(ObjCBlock_ffiVoid_ObjCObject_NSError arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer<_ObjCBlock>)>() - (_id, arg0._id) - .address == - 0 - ? null - : NSProgress._( - _id.ref.invoke - .cast Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer<_ObjCBlock>)>()(_id, arg0._id), - _lib, - retain: false, - release: true); -} + int week() { + return _objc_msgSend_114(this.pointer, _sel_week); + } -void _ObjCBlock_ffiVoid_ObjCObject_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_ObjCObject_NSError_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ObjCObject_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_ObjCObject_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_ObjCObject_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_ObjCObject_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + void setWeek_(int v) { + _objc_msgSend_135(this.pointer, _sel_setWeek_, v); + } -void _ObjCBlock_ffiVoid_ObjCObject_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_ObjCObject_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1); + void setValue_forComponent_(int value, int unit) { + _objc_msgSend_136(this.pointer, _sel_setValue_forComponent_, value, unit); + } -class ObjCBlock_ffiVoid_ObjCObject_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ObjCObject_NSError._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + int valueForComponent_(int unit) { + return _objc_msgSend_137(this.pointer, _sel_valueForComponent_, unit); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ObjCObject_NSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ObjCObject_NSError._(pointer, lib, - retain: retain, release: release); + bool get validDate { + return _objc_msgSend_7(this.pointer, _sel_isValidDate); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_NSError.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + bool isValidDateInCalendar_(NSCalendar calendar) { + return _objc_msgSend_138( + this.pointer, _sel_isValidDateInCalendar_, calendar.pointer); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_NSError.fromFunction(AVFAudio lib, void Function(NSObject?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 ? null : NSObject._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + @override + NSDateComponents init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSDateComponents.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ObjCObject_NSError.listener( - AVFAudio lib, void Function(NSObject?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= - ffi.NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ObjCObject_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSObject._(arg0, lib, - retain: true, release: true), - arg1.address == 0 - ? null - : NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; + static NSDateComponents new1() { + final _ret = _objc_msgSend_40(_class_NSDateComponents, _sel_new); + return NSDateComponents.castFromPointer(_ret, retain: false, release: true); + } - void call(NSObject? arg0, NSError? arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1?._id ?? ffi.nullptr); -} + static NSDateComponents allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSDateComponents, _sel_allocWithZone_, zone); + return NSDateComponents.castFromPointer(_ret, retain: false, release: true); + } -void - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureRegistry = - , ffi.Pointer, - ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureRegistryIndex = - 0; -ffi.Pointer - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_registerClosure( - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer) - fn) { - final id = - ++_ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureRegistryIndex; - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureRegistry[ - id] = fn; - return ffi.Pointer.fromAddress(id); -} + static NSDateComponents alloc() { + final _ret = _objc_msgSend_40(_class_NSDateComponents, _sel_alloc); + return NSDateComponents.castFromPointer(_ret, retain: false, release: true); + } -void _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSDateComponents, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); + } -class ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary - extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSDateComponents, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary - castFromPointer(AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary._( - pointer, lib, - retain: retain, release: release); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSDateComponents, _sel_accessInstanceVariablesDirectly); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSDateComponents, _sel_useStoredAccessor); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary.fromFunction( - AVFAudio lib, - void Function(ObjCBlock_ffiVoid_ObjCObject_NSError1, NSObject, NSDictionary) - fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= - ffi.Pointer.fromFunction, ffi.Pointer<_ObjCBlock>, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_registerClosure( - (ffi.Pointer<_ObjCBlock> arg0, ffi.Pointer arg1, ffi.Pointer arg2) => fn( - ObjCBlock_ffiVoid_ObjCObject_NSError1._(arg0, lib, retain: true, release: true), - NSObject._(arg1, lib, retain: true, release: true), - NSDictionary._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSDateComponents, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary.listener( - AVFAudio lib, - void Function(ObjCBlock_ffiVoid_ObjCObject_NSError1, NSObject, NSDictionary) - fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable, ffi.Pointer<_ObjCBlock>, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_registerClosure( - (ffi.Pointer<_ObjCBlock> arg0, ffi.Pointer arg1, - ffi.Pointer arg2) => - fn( - ObjCBlock_ffiVoid_ObjCObject_NSError1._(arg0, lib, retain: true, release: true), - NSObject._(arg1, lib, retain: true, release: true), - NSDictionary._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(ObjCBlock_ffiVoid_ObjCObject_NSError1 arg0, NSObject arg1, - NSDictionary arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>()( - _id, arg0._id, arg1._id, arg2._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSDateComponents, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSDateComponents, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSDateComponents, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSDateComponents, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSDateComponents = objc.getClass("NSDateComponents"); +late final _sel_calendar = objc.registerName("calendar"); +final _objc_msgSend_130 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCalendar_ = objc.registerName("setCalendar:"); +final _objc_msgSend_131 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_132 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_133 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_era = objc.registerName("era"); +late final _sel_setEra_ = objc.registerName("setEra:"); +final _objc_msgSend_134 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_year = objc.registerName("year"); +late final _sel_setYear_ = objc.registerName("setYear:"); +late final _sel_month = objc.registerName("month"); +late final _sel_setMonth_ = objc.registerName("setMonth:"); +late final _sel_day = objc.registerName("day"); +late final _sel_setDay_ = objc.registerName("setDay:"); +late final _sel_hour = objc.registerName("hour"); +late final _sel_setHour_ = objc.registerName("setHour:"); +late final _sel_minute = objc.registerName("minute"); +late final _sel_setMinute_ = objc.registerName("setMinute:"); +late final _sel_second = objc.registerName("second"); +late final _sel_setSecond_ = objc.registerName("setSecond:"); +late final _sel_nanosecond = objc.registerName("nanosecond"); +late final _sel_setNanosecond_ = objc.registerName("setNanosecond:"); +late final _sel_weekday = objc.registerName("weekday"); +late final _sel_setWeekday_ = objc.registerName("setWeekday:"); +late final _sel_weekdayOrdinal = objc.registerName("weekdayOrdinal"); +late final _sel_setWeekdayOrdinal_ = objc.registerName("setWeekdayOrdinal:"); +late final _sel_quarter = objc.registerName("quarter"); +late final _sel_setQuarter_ = objc.registerName("setQuarter:"); +late final _sel_weekOfMonth = objc.registerName("weekOfMonth"); +late final _sel_setWeekOfMonth_ = objc.registerName("setWeekOfMonth:"); +late final _sel_weekOfYear = objc.registerName("weekOfYear"); +late final _sel_setWeekOfYear_ = objc.registerName("setWeekOfYear:"); +late final _sel_yearForWeekOfYear = objc.registerName("yearForWeekOfYear"); +late final _sel_setYearForWeekOfYear_ = + objc.registerName("setYearForWeekOfYear:"); +late final _sel_isLeapMonth = objc.registerName("isLeapMonth"); +late final _sel_setLeapMonth_ = objc.registerName("setLeapMonth:"); +late final _sel_date = objc.registerName("date"); +late final _sel_week = objc.registerName("week"); +late final _sel_setWeek_ = objc.registerName("setWeek:"); +final _objc_msgSend_135 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setValue_forComponent_ = + objc.registerName("setValue:forComponent:"); +final _objc_msgSend_136 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Long, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int, int)>(); +late final _sel_valueForComponent_ = objc.registerName("valueForComponent:"); +final _objc_msgSend_137 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_isValidDate = objc.registerName("isValidDate"); +late final _sel_isValidDateInCalendar_ = + objc.registerName("isValidDateInCalendar:"); +final _objc_msgSend_138 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dateFromComponents_ = objc.registerName("dateFromComponents:"); +final _objc_msgSend_139 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_components_fromDate_ = + objc.registerName("components:fromDate:"); +final _objc_msgSend_140 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); + +abstract class NSCalendarOptions { + static const int NSCalendarWrapComponents = 1; + static const int NSCalendarMatchStrictly = 2; + static const int NSCalendarSearchBackwards = 4; + static const int NSCalendarMatchPreviousTimePreservingSmallerUnits = 256; + static const int NSCalendarMatchNextTimePreservingSmallerUnits = 512; + static const int NSCalendarMatchNextTime = 1024; + static const int NSCalendarMatchFirst = 4096; + static const int NSCalendarMatchLast = 8192; +} + +late final _sel_dateByAddingComponents_toDate_options_ = + objc.registerName("dateByAddingComponents:toDate:options:"); +final _objc_msgSend_141 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_components_fromDate_toDate_options_ = + objc.registerName("components:fromDate:toDate:options:"); +final _objc_msgSend_142 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_getEra_year_month_day_fromDate_ = + objc.registerName("getEra:year:month:day:fromDate:"); +final _objc_msgSend_143 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_ = + objc.registerName("getEra:yearForWeekOfYear:weekOfYear:weekday:fromDate:"); +late final _sel_getHour_minute_second_nanosecond_fromDate_ = + objc.registerName("getHour:minute:second:nanosecond:fromDate:"); +late final _sel_component_fromDate_ = objc.registerName("component:fromDate:"); +final _objc_msgSend_144 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Long Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_dateWithEra_year_month_day_hour_minute_second_nanosecond_ = objc + .registerName("dateWithEra:year:month:day:hour:minute:second:nanosecond:"); +final _objc_msgSend_145 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + int, + int, + int, + int, + int, + int)>(); +late final _sel_dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_ = + objc.registerName( + "dateWithEra:yearForWeekOfYear:weekOfYear:weekday:hour:minute:second:nanosecond:"); +late final _sel_startOfDayForDate_ = objc.registerName("startOfDayForDate:"); +final _objc_msgSend_146 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_componentsInTimeZone_fromDate_ = + objc.registerName("componentsInTimeZone:fromDate:"); +final _objc_msgSend_147 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +abstract class NSComparisonResult { + static const int NSOrderedAscending = -1; + static const int NSOrderedSame = 0; + static const int NSOrderedDescending = 1; } -void _ObjCBlock_ffiVoid_ObjCObject_NSError1_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => +late final _sel_compareDate_toDate_toUnitGranularity_ = + objc.registerName("compareDate:toDate:toUnitGranularity:"); +final _objc_msgSend_148 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_isDate_equalToDate_toUnitGranularity_ = + objc.registerName("isDate:equalToDate:toUnitGranularity:"); +final _objc_msgSend_149 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_isDate_inSameDayAsDate_ = + objc.registerName("isDate:inSameDayAsDate:"); +final _objc_msgSend_150 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_isDateInToday_ = objc.registerName("isDateInToday:"); +late final _sel_isDateInYesterday_ = objc.registerName("isDateInYesterday:"); +late final _sel_isDateInTomorrow_ = objc.registerName("isDateInTomorrow:"); +late final _sel_isDateInWeekend_ = objc.registerName("isDateInWeekend:"); +late final _sel_rangeOfWeekendStartDate_interval_containingDate_ = + objc.registerName("rangeOfWeekendStartDate:interval:containingDate:"); +final _objc_msgSend_151 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_nextWeekendStartDate_interval_options_afterDate_ = + objc.registerName("nextWeekendStartDate:interval:options:afterDate:"); +final _objc_msgSend_152 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_components_fromDateComponents_toDateComponents_options_ = objc + .registerName("components:fromDateComponents:toDateComponents:options:"); +final _objc_msgSend_153 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_dateByAddingUnit_value_toDate_options_ = + objc.registerName("dateByAddingUnit:value:toDate:options:"); +final _objc_msgSend_154 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Long, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer, + int)>(); +void _ObjCBlock_ffiVoid_NSDate_bool_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) => block.ref.target .cast< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() + ffi.Void Function(ffi.Pointer arg0, + ffi.Bool arg1, ffi.Pointer arg2)>>() .asFunction< - void Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_ObjCObject_NSError1_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ObjCObject_NSError1_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_ObjCObject_NSError1_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_ObjCObject_NSError1_closureRegistryIndex; - _ObjCBlock_ffiVoid_ObjCObject_NSError1_closureRegistry[id] = fn; + void Function(ffi.Pointer, bool, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistry = , bool, ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSDate_bool_bool_registerClosure( + void Function(ffi.Pointer, bool, ffi.Pointer) + fn) { + final id = ++_ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_ObjCObject_NSError1_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_ObjCObject_NSError1_closureRegistry[ - block.ref.target.address]!(arg0, arg1); +void _ObjCBlock_ffiVoid_NSDate_bool_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); -class ObjCBlock_ffiVoid_ObjCObject_NSError1 extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ObjCObject_NSError1._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, +class ObjCBlock_ffiVoid_NSDate_bool_bool extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSDate_bool_bool._(ffi.Pointer pointer, {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ObjCObject_NSError1 castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ObjCObject_NSError1._(pointer, lib, + static ObjCBlock_ffiVoid_NSDate_bool_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSDate_bool_bool._(pointer, retain: retain, release: release); } @@ -55720,24 +6310,22 @@ class ObjCBlock_ffiVoid_ObjCObject_NSError1 extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_NSError1.fromFunctionPointer( - AVFAudio lib, + ObjCBlock_ffiVoid_NSDate_bool_bool.fromFunctionPointer( ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> + ffi.Void Function(ffi.Pointer arg0, + ffi.Bool arg1, ffi.Pointer arg2)>> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_NSError1_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDate_bool_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -55745,21 +6333,21 @@ class ObjCBlock_ffiVoid_ObjCObject_NSError1 extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_NSError1.fromFunction(AVFAudio lib, void Function(NSObject?, NSError) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_NSError1_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_NSError1_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 ? null : NSObject._(arg0, lib, retain: true, release: true), - NSError._(arg1, lib, retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSDate_bool_bool.fromFunction( + void Function(objc.NSDate?, bool, ffi.Pointer) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDate_bool_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSDate_bool_bool_registerClosure( + (ffi.Pointer arg0, bool arg1, + ffi.Pointer arg2) => + fn(arg0.address == 0 ? null : objc.NSDate.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -55771,4489 +6359,6121 @@ class ObjCBlock_ffiVoid_ObjCObject_NSError1 extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ObjCObject_NSError1.listener( - AVFAudio lib, void Function(NSObject?, NSError) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi - .NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ObjCObject_NSError1_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_NSError1_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSObject._(arg0, lib, retain: true, release: true), - NSError._(arg1, lib, retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSDate_bool_bool.listener( + void Function(objc.NSDate?, bool, ffi.Pointer) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSDate_bool_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSDate_bool_bool_registerClosure( + (ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) => + fn(arg0.address == 0 ? null : objc.NSDate.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>? _dartFuncListenerTrampoline; - void call(NSObject? arg0, NSError arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1._id); -} + void call(objc.NSDate? arg0, bool arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1, arg2); +} + +late final _sel_enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_ = + objc.registerName( + "enumerateDatesStartingAfterDate:matchingComponents:options:usingBlock:"); +final _objc_msgSend_155 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_nextDateAfterDate_matchingComponents_options_ = + objc.registerName("nextDateAfterDate:matchingComponents:options:"); +final _objc_msgSend_156 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_nextDateAfterDate_matchingUnit_value_options_ = + objc.registerName("nextDateAfterDate:matchingUnit:value:options:"); +final _objc_msgSend_157 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Long, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + int, + int)>(); +late final _sel_nextDateAfterDate_matchingHour_minute_second_options_ = + objc.registerName("nextDateAfterDate:matchingHour:minute:second:options:"); +final _objc_msgSend_158 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + int, + int, + int)>(); +late final _sel_dateBySettingUnit_value_ofDate_options_ = + objc.registerName("dateBySettingUnit:value:ofDate:options:"); +late final _sel_dateBySettingHour_minute_second_ofDate_options_ = + objc.registerName("dateBySettingHour:minute:second:ofDate:options:"); +final _objc_msgSend_159 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + int, + ffi.Pointer, + int)>(); +late final _sel_date_matchesComponents_ = + objc.registerName("date:matchesComponents:"); +final _objc_msgSend_160 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +final _objc_msgSend_161 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isLenient = objc.registerName("isLenient"); +late final _sel_setLenient_ = objc.registerName("setLenient:"); +late final _sel_twoDigitStartDate = objc.registerName("twoDigitStartDate"); +late final _sel_setTwoDigitStartDate_ = + objc.registerName("setTwoDigitStartDate:"); +final _objc_msgSend_162 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_defaultDate = objc.registerName("defaultDate"); +late final _sel_setDefaultDate_ = objc.registerName("setDefaultDate:"); +late final _sel_setEraSymbols_ = objc.registerName("setEraSymbols:"); +final _objc_msgSend_163 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setMonthSymbols_ = objc.registerName("setMonthSymbols:"); +late final _sel_setShortMonthSymbols_ = + objc.registerName("setShortMonthSymbols:"); +late final _sel_setWeekdaySymbols_ = objc.registerName("setWeekdaySymbols:"); +late final _sel_setShortWeekdaySymbols_ = + objc.registerName("setShortWeekdaySymbols:"); +late final _sel_setAMSymbol_ = objc.registerName("setAMSymbol:"); +late final _sel_setPMSymbol_ = objc.registerName("setPMSymbol:"); +late final _sel_setLongEraSymbols_ = objc.registerName("setLongEraSymbols:"); +late final _sel_setVeryShortMonthSymbols_ = + objc.registerName("setVeryShortMonthSymbols:"); +late final _sel_setStandaloneMonthSymbols_ = + objc.registerName("setStandaloneMonthSymbols:"); +late final _sel_setShortStandaloneMonthSymbols_ = + objc.registerName("setShortStandaloneMonthSymbols:"); +late final _sel_setVeryShortStandaloneMonthSymbols_ = + objc.registerName("setVeryShortStandaloneMonthSymbols:"); +late final _sel_setVeryShortWeekdaySymbols_ = + objc.registerName("setVeryShortWeekdaySymbols:"); +late final _sel_setStandaloneWeekdaySymbols_ = + objc.registerName("setStandaloneWeekdaySymbols:"); +late final _sel_setShortStandaloneWeekdaySymbols_ = + objc.registerName("setShortStandaloneWeekdaySymbols:"); +late final _sel_setVeryShortStandaloneWeekdaySymbols_ = + objc.registerName("setVeryShortStandaloneWeekdaySymbols:"); +late final _sel_setQuarterSymbols_ = objc.registerName("setQuarterSymbols:"); +late final _sel_setShortQuarterSymbols_ = + objc.registerName("setShortQuarterSymbols:"); +late final _sel_setStandaloneQuarterSymbols_ = + objc.registerName("setStandaloneQuarterSymbols:"); +late final _sel_setShortStandaloneQuarterSymbols_ = + objc.registerName("setShortStandaloneQuarterSymbols:"); +late final _sel_gregorianStartDate = objc.registerName("gregorianStartDate"); +late final _sel_setGregorianStartDate_ = + objc.registerName("setGregorianStartDate:"); +late final _sel_doesRelativeDateFormatting = + objc.registerName("doesRelativeDateFormatting"); +late final _sel_setDoesRelativeDateFormatting_ = + objc.registerName("setDoesRelativeDateFormatting:"); +late final _sel_initWithDateFormat_allowNaturalLanguage_ = + objc.registerName("initWithDateFormat:allowNaturalLanguage:"); +final _objc_msgSend_164 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_allowsNaturalLanguage = + objc.registerName("allowsNaturalLanguage"); -class NSMutableString extends NSString { - NSMutableString._(ffi.Pointer id, AVFAudio lib, +class NSNumberFormatter extends NSFormatter { + NSNumberFormatter._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSMutableString] that points to the same underlying object as [other]. - static NSMutableString castFrom(T other) { - return NSMutableString._(other._id, other._lib, - retain: true, release: true); + /// Constructs a [NSNumberFormatter] that points to the same underlying object as [other]. + NSNumberFormatter.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSNumberFormatter] that wraps the given raw object pointer. + NSNumberFormatter.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSNumberFormatter]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSNumberFormatter); } - /// Returns a [NSMutableString] that wraps the given raw object pointer. - static NSMutableString castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableString._(other, lib, retain: retain, release: release); + int get formattingContext { + return _objc_msgSend_89(this.pointer, _sel_formattingContext); } - /// Returns whether [obj] is an instance of [NSMutableString]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMutableString1); + set formattingContext(int value) { + return _objc_msgSend_90(this.pointer, _sel_setFormattingContext_, value); } - void replaceCharactersInRange_withString_(_NSRange range, NSString aString) { - _lib._objc_msgSend_689(_id, _lib._sel_replaceCharactersInRange_withString_1, - range, aString._id); + bool getObjectValue_forString_range_error_( + ffi.Pointer> obj, + objc.NSString string, + ffi.Pointer<_NSRange> rangep, + ffi.Pointer> error) { + return _objc_msgSend_91( + this.pointer, + _sel_getObjectValue_forString_range_error_, + obj, + string.pointer, + rangep, + error); } - void insertString_atIndex_(NSString aString, int loc) { - _lib._objc_msgSend_690( - _id, _lib._sel_insertString_atIndex_1, aString._id, loc); + objc.NSString? stringFromNumber_(objc.NSNumber number) { + final _ret = + _objc_msgSend_165(this.pointer, _sel_stringFromNumber_, number.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void deleteCharactersInRange_(_NSRange range) { - _lib._objc_msgSend_476(_id, _lib._sel_deleteCharactersInRange_1, range); + objc.NSNumber? numberFromString_(objc.NSString string) { + final _ret = + _objc_msgSend_166(this.pointer, _sel_numberFromString_, string.pointer); + return _ret.address == 0 + ? null + : objc.NSNumber.castFromPointer(_ret, retain: true, release: true); } - void appendString_(NSString aString) { - _lib._objc_msgSend_247(_id, _lib._sel_appendString_1, aString._id); + static objc.NSString localizedStringFromNumber_numberStyle_( + objc.NSNumber num, int nstyle) { + final _ret = _objc_msgSend_167(_class_NSNumberFormatter, + _sel_localizedStringFromNumber_numberStyle_, num.pointer, nstyle); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void appendFormat_(NSString format) { - _lib._objc_msgSend_247(_id, _lib._sel_appendFormat_1, format._id); + static int defaultFormatterBehavior() { + return _objc_msgSend_168( + _class_NSNumberFormatter, _sel_defaultFormatterBehavior); } - void setString_(NSString aString) { - _lib._objc_msgSend_247(_id, _lib._sel_setString_1, aString._id); + static void setDefaultFormatterBehavior_(int behavior) { + _objc_msgSend_169( + _class_NSNumberFormatter, _sel_setDefaultFormatterBehavior_, behavior); } - int replaceOccurrencesOfString_withString_options_range_(NSString target, - NSString replacement, int options, _NSRange searchRange) { - return _lib._objc_msgSend_691( - _id, - _lib._sel_replaceOccurrencesOfString_withString_options_range_1, - target._id, - replacement._id, - options, - searchRange); + int get numberStyle { + return _objc_msgSend_170(this.pointer, _sel_numberStyle); } - bool applyTransform_reverse_range_updatedRange_(NSString transform, - bool reverse, _NSRange range, ffi.Pointer<_NSRange> resultingRange) { - return _lib._objc_msgSend_692( - _id, - _lib._sel_applyTransform_reverse_range_updatedRange_1, - transform._id, - reverse, - range, - resultingRange); + set numberStyle(int value) { + return _objc_msgSend_171(this.pointer, _sel_setNumberStyle_, value); + } + + objc.NSLocale get locale { + final _ret = _objc_msgSend_102(this.pointer, _sel_locale); + return objc.NSLocale.castFromPointer(_ret, retain: true, release: true); + } + + set locale(objc.NSLocale value) { + return _objc_msgSend_103(this.pointer, _sel_setLocale_, value.pointer); + } + + bool get generatesDecimalNumbers { + return _objc_msgSend_7(this.pointer, _sel_generatesDecimalNumbers); + } + + set generatesDecimalNumbers(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setGeneratesDecimalNumbers_, value); + } + + int get formatterBehavior { + return _objc_msgSend_168(this.pointer, _sel_formatterBehavior); + } + + set formatterBehavior(int value) { + return _objc_msgSend_172(this.pointer, _sel_setFormatterBehavior_, value); + } + + objc.NSString get negativeFormat { + final _ret = _objc_msgSend_12(this.pointer, _sel_negativeFormat); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set negativeFormat(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setNegativeFormat_, value.pointer); } - NSMutableString initWithCapacity_(int capacity) { + objc.NSDictionary? get textAttributesForNegativeValues { final _ret = - _lib._objc_msgSend_693(_id, _lib._sel_initWithCapacity_1, capacity); - return NSMutableString._(_ret, _lib, retain: true, release: true); + _objc_msgSend_65(this.pointer, _sel_textAttributesForNegativeValues); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSMutableString stringWithCapacity_(AVFAudio _lib, int capacity) { - final _ret = _lib._objc_msgSend_693( - _lib._class_NSMutableString1, _lib._sel_stringWithCapacity_1, capacity); - return NSMutableString._(_ret, _lib, retain: true, release: true); + set textAttributesForNegativeValues(objc.NSDictionary? value) { + return _objc_msgSend_173( + this.pointer, + _sel_setTextAttributesForNegativeValues_, + value?.pointer ?? ffi.nullptr); } - @override - NSMutableString init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get positiveFormat { + final _ret = _objc_msgSend_12(this.pointer, _sel_positiveFormat); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithCoder_(NSCoder coder) { + set positiveFormat(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setPositiveFormat_, value.pointer); + } + + objc.NSDictionary? get textAttributesForPositiveValues { final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); + _objc_msgSend_65(this.pointer, _sel_textAttributesForPositiveValues); return _ret.address == 0 ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static ffi.Pointer getAvailableStringEncodings( - AVFAudio _lib) { - return _lib._objc_msgSend_357( - _lib._class_NSMutableString1, _lib._sel_availableStringEncodings1); + set textAttributesForPositiveValues(objc.NSDictionary? value) { + return _objc_msgSend_173( + this.pointer, + _sel_setTextAttributesForPositiveValues_, + value?.pointer ?? ffi.nullptr); } - static NSString localizedNameOfStringEncoding_(AVFAudio _lib, int encoding) { - final _ret = _lib._objc_msgSend_332(_lib._class_NSMutableString1, - _lib._sel_localizedNameOfStringEncoding_1, encoding); - return NSString._(_ret, _lib, retain: true, release: true); + bool get allowsFloats { + return _objc_msgSend_7(this.pointer, _sel_allowsFloats); } - static int getDefaultCStringEncoding(AVFAudio _lib) { - return _lib._objc_msgSend_10( - _lib._class_NSMutableString1, _lib._sel_defaultCStringEncoding1); + set allowsFloats(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setAllowsFloats_, value); } - @override - NSMutableString initWithCharactersNoCopy_length_freeWhenDone_( - ffi.Pointer characters, int length, bool freeBuffer) { - final _ret = _lib._objc_msgSend_369( - _id, - _lib._sel_initWithCharactersNoCopy_length_freeWhenDone_1, - characters, - length, - freeBuffer); - return NSMutableString._(_ret, _lib, retain: false, release: true); + objc.NSString get decimalSeparator { + final _ret = _objc_msgSend_12(this.pointer, _sel_decimalSeparator); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString initWithCharactersNoCopy_length_deallocator_( - ffi.Pointer chars, - int len, - ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong? deallocator) { - final _ret = _lib._objc_msgSend_370( - _id, - _lib._sel_initWithCharactersNoCopy_length_deallocator_1, - chars, - len, - deallocator?._id ?? ffi.nullptr); - return NSMutableString._(_ret, _lib, retain: false, release: true); + set decimalSeparator(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setDecimalSeparator_, value.pointer); } - @override - NSMutableString initWithCharacters_length_( - ffi.Pointer characters, int length) { - final _ret = _lib._objc_msgSend_371( - _id, _lib._sel_initWithCharacters_length_1, characters, length); - return NSMutableString._(_ret, _lib, retain: true, release: true); + bool get alwaysShowsDecimalSeparator { + return _objc_msgSend_7(this.pointer, _sel_alwaysShowsDecimalSeparator); } - @override - NSMutableString? initWithUTF8String_( - ffi.Pointer nullTerminatedCString) { - final _ret = _lib._objc_msgSend_372( - _id, _lib._sel_initWithUTF8String_1, nullTerminatedCString); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + set alwaysShowsDecimalSeparator(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAlwaysShowsDecimalSeparator_, value); } - @override - NSMutableString initWithString_(NSString aString) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithString_1, aString._id); - return NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get currencyDecimalSeparator { + final _ret = _objc_msgSend_12(this.pointer, _sel_currencyDecimalSeparator); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString initWithFormat_(NSString format) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithFormat_1, format._id); - return NSMutableString._(_ret, _lib, retain: true, release: true); + set currencyDecimalSeparator(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setCurrencyDecimalSeparator_, value.pointer); } - @override - NSMutableString initWithFormat_arguments_( - NSString format, ffi.Pointer<__va_list_tag> argList) { - final _ret = _lib._objc_msgSend_373( - _id, _lib._sel_initWithFormat_arguments_1, format._id, argList); - return NSMutableString._(_ret, _lib, retain: true, release: true); + bool get usesGroupingSeparator { + return _objc_msgSend_7(this.pointer, _sel_usesGroupingSeparator); } - @override - NSMutableString initWithFormat_locale_(NSString format, NSObject? locale) { - final _ret = _lib._objc_msgSend_374(_id, _lib._sel_initWithFormat_locale_1, - format._id, locale?._id ?? ffi.nullptr); - return NSMutableString._(_ret, _lib, retain: true, release: true); + set usesGroupingSeparator(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setUsesGroupingSeparator_, value); } - @override - NSMutableString initWithFormat_locale_arguments_( - NSString format, NSObject? locale, ffi.Pointer<__va_list_tag> argList) { - final _ret = _lib._objc_msgSend_375( - _id, - _lib._sel_initWithFormat_locale_arguments_1, - format._id, - locale?._id ?? ffi.nullptr, - argList); - return NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get groupingSeparator { + final _ret = _objc_msgSend_12(this.pointer, _sel_groupingSeparator); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithValidatedFormat_validFormatSpecifiers_error_( - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_376( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_error_1, - format._id, - validFormatSpecifiers._id, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + set groupingSeparator(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setGroupingSeparator_, value.pointer); } - @override - NSMutableString? initWithValidatedFormat_validFormatSpecifiers_locale_error_( - NSString format, - NSString validFormatSpecifiers, - NSObject? locale, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_377( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_1, - format._id, - validFormatSpecifiers._id, - locale?._id ?? ffi.nullptr, - error); + objc.NSString? get zeroSymbol { + final _ret = _objc_msgSend_13(this.pointer, _sel_zeroSymbol); return _ret.address == 0 ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? - initWithValidatedFormat_validFormatSpecifiers_arguments_error_( - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer<__va_list_tag> argList, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_378( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_1, - format._id, - validFormatSpecifiers._id, - argList, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + set zeroSymbol(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setZeroSymbol_, value?.pointer ?? ffi.nullptr); } - @override - NSMutableString? - initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_( - NSString format, - NSString validFormatSpecifiers, - NSObject? locale, - ffi.Pointer<__va_list_tag> argList, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_379( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_1, - format._id, - validFormatSpecifiers._id, - locale?._id ?? ffi.nullptr, - argList, - error); + objc.NSDictionary? get textAttributesForZero { + final _ret = _objc_msgSend_65(this.pointer, _sel_textAttributesForZero); return _ret.address == 0 ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithData_encoding_(NSData data, int encoding) { - final _ret = _lib._objc_msgSend_380( - _id, _lib._sel_initWithData_encoding_1, data._id, encoding); + set textAttributesForZero(objc.NSDictionary? value) { + return _objc_msgSend_173(this.pointer, _sel_setTextAttributesForZero_, + value?.pointer ?? ffi.nullptr); + } + + objc.NSString get nilSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_nilSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set nilSymbol(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setNilSymbol_, value.pointer); + } + + objc.NSDictionary? get textAttributesForNil { + final _ret = _objc_msgSend_65(this.pointer, _sel_textAttributesForNil); return _ret.address == 0 ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithBytes_length_encoding_( - ffi.Pointer bytes, int len, int encoding) { - final _ret = _lib._objc_msgSend_381( - _id, _lib._sel_initWithBytes_length_encoding_1, bytes, len, encoding); + set textAttributesForNil(objc.NSDictionary? value) { + return _objc_msgSend_173(this.pointer, _sel_setTextAttributesForNil_, + value?.pointer ?? ffi.nullptr); + } + + objc.NSString get notANumberSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_notANumberSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set notANumberSymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setNotANumberSymbol_, value.pointer); + } + + objc.NSDictionary? get textAttributesForNotANumber { + final _ret = + _objc_msgSend_65(this.pointer, _sel_textAttributesForNotANumber); return _ret.address == 0 ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithBytesNoCopy_length_encoding_freeWhenDone_( - ffi.Pointer bytes, int len, int encoding, bool freeBuffer) { - final _ret = _lib._objc_msgSend_382( - _id, - _lib._sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1, - bytes, - len, - encoding, - freeBuffer); + set textAttributesForNotANumber(objc.NSDictionary? value) { + return _objc_msgSend_173(this.pointer, _sel_setTextAttributesForNotANumber_, + value?.pointer ?? ffi.nullptr); + } + + objc.NSString get positiveInfinitySymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_positiveInfinitySymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set positiveInfinitySymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setPositiveInfinitySymbol_, value.pointer); + } + + objc.NSDictionary? get textAttributesForPositiveInfinity { + final _ret = + _objc_msgSend_65(this.pointer, _sel_textAttributesForPositiveInfinity); return _ret.address == 0 ? null - : NSMutableString._(_ret, _lib, retain: false, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithBytesNoCopy_length_encoding_deallocator_( - ffi.Pointer bytes, - int len, - int encoding, - ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { - final _ret = _lib._objc_msgSend_383( - _id, - _lib._sel_initWithBytesNoCopy_length_encoding_deallocator_1, - bytes, - len, - encoding, - deallocator?._id ?? ffi.nullptr); + set textAttributesForPositiveInfinity(objc.NSDictionary? value) { + return _objc_msgSend_173( + this.pointer, + _sel_setTextAttributesForPositiveInfinity_, + value?.pointer ?? ffi.nullptr); + } + + objc.NSString get negativeInfinitySymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_negativeInfinitySymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set negativeInfinitySymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setNegativeInfinitySymbol_, value.pointer); + } + + objc.NSDictionary? get textAttributesForNegativeInfinity { + final _ret = + _objc_msgSend_65(this.pointer, _sel_textAttributesForNegativeInfinity); return _ret.address == 0 ? null - : NSMutableString._(_ret, _lib, retain: false, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + set textAttributesForNegativeInfinity(objc.NSDictionary? value) { + return _objc_msgSend_173( + this.pointer, + _sel_setTextAttributesForNegativeInfinity_, + value?.pointer ?? ffi.nullptr); + } + + objc.NSString get positivePrefix { + final _ret = _objc_msgSend_12(this.pointer, _sel_positivePrefix); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set positivePrefix(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setPositivePrefix_, value.pointer); + } + + objc.NSString get positiveSuffix { + final _ret = _objc_msgSend_12(this.pointer, _sel_positiveSuffix); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set positiveSuffix(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setPositiveSuffix_, value.pointer); + } + + objc.NSString get negativePrefix { + final _ret = _objc_msgSend_12(this.pointer, _sel_negativePrefix); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set negativePrefix(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setNegativePrefix_, value.pointer); } - static NSMutableString string(AVFAudio _lib) { + objc.NSString get negativeSuffix { + final _ret = _objc_msgSend_12(this.pointer, _sel_negativeSuffix); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set negativeSuffix(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setNegativeSuffix_, value.pointer); + } + + objc.NSString get currencyCode { + final _ret = _objc_msgSend_12(this.pointer, _sel_currencyCode); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set currencyCode(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setCurrencyCode_, value.pointer); + } + + objc.NSString get currencySymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_currencySymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set currencySymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setCurrencySymbol_, value.pointer); + } + + objc.NSString get internationalCurrencySymbol { final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableString1, _lib._sel_string1); - return NSMutableString._(_ret, _lib, retain: true, release: true); + _objc_msgSend_12(this.pointer, _sel_internationalCurrencySymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSMutableString stringWithString_(AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSMutableString1, _lib._sel_stringWithString_1, string._id); - return NSMutableString._(_ret, _lib, retain: true, release: true); + set internationalCurrencySymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setInternationalCurrencySymbol_, value.pointer); } - static NSMutableString stringWithCharacters_length_( - AVFAudio _lib, ffi.Pointer characters, int length) { - final _ret = _lib._objc_msgSend_371(_lib._class_NSMutableString1, - _lib._sel_stringWithCharacters_length_1, characters, length); - return NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get percentSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_percentSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSMutableString? stringWithUTF8String_( - AVFAudio _lib, ffi.Pointer nullTerminatedCString) { - final _ret = _lib._objc_msgSend_372(_lib._class_NSMutableString1, - _lib._sel_stringWithUTF8String_1, nullTerminatedCString); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + set percentSymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setPercentSymbol_, value.pointer); } - static NSMutableString stringWithFormat_(AVFAudio _lib, NSString format) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSMutableString1, _lib._sel_stringWithFormat_1, format._id); - return NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get perMillSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_perMillSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSMutableString localizedStringWithFormat_( - AVFAudio _lib, NSString format) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSMutableString1, - _lib._sel_localizedStringWithFormat_1, format._id); - return NSMutableString._(_ret, _lib, retain: true, release: true); + set perMillSymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setPerMillSymbol_, value.pointer); } - static NSMutableString? - stringWithValidatedFormat_validFormatSpecifiers_error_( - AVFAudio _lib, - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_376( - _lib._class_NSMutableString1, - _lib._sel_stringWithValidatedFormat_validFormatSpecifiers_error_1, - format._id, - validFormatSpecifiers._id, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); - } - - static NSMutableString? - localizedStringWithValidatedFormat_validFormatSpecifiers_error_( - AVFAudio _lib, - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_376( - _lib._class_NSMutableString1, - _lib._sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_1, - format._id, - validFormatSpecifiers._id, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get minusSign { + final _ret = _objc_msgSend_12(this.pointer, _sel_minusSign); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithCString_encoding_( - ffi.Pointer nullTerminatedCString, int encoding) { - final _ret = _lib._objc_msgSend_384(_id, - _lib._sel_initWithCString_encoding_1, nullTerminatedCString, encoding); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + set minusSign(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setMinusSign_, value.pointer); } - static NSMutableString? stringWithCString_encoding_( - AVFAudio _lib, ffi.Pointer cString, int enc) { - final _ret = _lib._objc_msgSend_384(_lib._class_NSMutableString1, - _lib._sel_stringWithCString_encoding_1, cString, enc); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get plusSign { + final _ret = _objc_msgSend_12(this.pointer, _sel_plusSign); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithContentsOfURL_encoding_error_( - NSURL url, int enc, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_385(_id, - _lib._sel_initWithContentsOfURL_encoding_error_1, url._id, enc, error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + set plusSign(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setPlusSign_, value.pointer); } - @override - NSMutableString? initWithContentsOfFile_encoding_error_( - NSString path, int enc, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_386( - _id, - _lib._sel_initWithContentsOfFile_encoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get exponentSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_exponentSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSMutableString? stringWithContentsOfURL_encoding_error_(AVFAudio _lib, - NSURL url, int enc, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_385( - _lib._class_NSMutableString1, - _lib._sel_stringWithContentsOfURL_encoding_error_1, - url._id, - enc, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); - } - - static NSMutableString? stringWithContentsOfFile_encoding_error_( - AVFAudio _lib, - NSString path, - int enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_386( - _lib._class_NSMutableString1, - _lib._sel_stringWithContentsOfFile_encoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + set exponentSymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setExponentSymbol_, value.pointer); } - @override - NSMutableString? initWithContentsOfURL_usedEncoding_error_( - NSURL url, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_387( - _id, - _lib._sel_initWithContentsOfURL_usedEncoding_error_1, - url._id, - enc, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + int get groupingSize { + return _objc_msgSend_29(this.pointer, _sel_groupingSize); } - @override - NSMutableString? initWithContentsOfFile_usedEncoding_error_( - NSString path, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_388( - _id, - _lib._sel_initWithContentsOfFile_usedEncoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); - } - - static NSMutableString? stringWithContentsOfURL_usedEncoding_error_( - AVFAudio _lib, - NSURL url, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_387( - _lib._class_NSMutableString1, - _lib._sel_stringWithContentsOfURL_usedEncoding_error_1, - url._id, - enc, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); - } - - static NSMutableString? stringWithContentsOfFile_usedEncoding_error_( - AVFAudio _lib, - NSString path, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_388( - _lib._class_NSMutableString1, - _lib._sel_stringWithContentsOfFile_usedEncoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); - } - - static int - stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_( - AVFAudio _lib, - NSData data, - NSDictionary? opts, - ffi.Pointer> string, - ffi.Pointer usedLossyConversion) { - return _lib._objc_msgSend_389( - _lib._class_NSMutableString1, - _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1, - data._id, - opts?._id ?? ffi.nullptr, - string, - usedLossyConversion); - } - - static NSObject? stringWithContentsOfFile_(AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSMutableString1, - _lib._sel_stringWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + set groupingSize(int value) { + return _objc_msgSend_125(this.pointer, _sel_setGroupingSize_, value); } - static NSObject? stringWithContentsOfURL_(AVFAudio _lib, NSURL url) { - final _ret = _lib._objc_msgSend_277(_lib._class_NSMutableString1, - _lib._sel_stringWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + int get secondaryGroupingSize { + return _objc_msgSend_29(this.pointer, _sel_secondaryGroupingSize); } - static NSObject? stringWithCString_length_( - AVFAudio _lib, ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_384(_lib._class_NSMutableString1, - _lib._sel_stringWithCString_length_1, bytes, length); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + set secondaryGroupingSize(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setSecondaryGroupingSize_, value); } - static NSObject? stringWithCString_( - AVFAudio _lib, ffi.Pointer bytes) { - final _ret = _lib._objc_msgSend_372( - _lib._class_NSMutableString1, _lib._sel_stringWithCString_1, bytes); + objc.NSNumber? get multiplier { + final _ret = _objc_msgSend_174(this.pointer, _sel_multiplier); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSNumber.castFromPointer(_ret, retain: true, release: true); } - static NSString pathWithComponents_(AVFAudio _lib, NSArray components) { - final _ret = _lib._objc_msgSend_396(_lib._class_NSMutableString1, - _lib._sel_pathWithComponents_1, components._id); - return NSString._(_ret, _lib, retain: true, release: true); + set multiplier(objc.NSNumber? value) { + return _objc_msgSend_175( + this.pointer, _sel_setMultiplier_, value?.pointer ?? ffi.nullptr); } - static NSMutableString new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableString1, _lib._sel_new1); - return NSMutableString._(_ret, _lib, retain: false, release: true); + int get formatWidth { + return _objc_msgSend_29(this.pointer, _sel_formatWidth); } - static NSMutableString allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMutableString1, _lib._sel_allocWithZone_1, zone); - return NSMutableString._(_ret, _lib, retain: false, release: true); + set formatWidth(int value) { + return _objc_msgSend_125(this.pointer, _sel_setFormatWidth_, value); } - static NSMutableString alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableString1, _lib._sel_alloc1); - return NSMutableString._(_ret, _lib, retain: false, release: true); + objc.NSString get paddingCharacter { + final _ret = _objc_msgSend_12(this.pointer, _sel_paddingCharacter); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set paddingCharacter(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setPaddingCharacter_, value.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + int get paddingPosition { + return _objc_msgSend_176(this.pointer, _sel_paddingPosition); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMutableString1, - _lib._sel_accessInstanceVariablesDirectly1); + set paddingPosition(int value) { + return _objc_msgSend_177(this.pointer, _sel_setPaddingPosition_, value); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableString1, _lib._sel_useStoredAccessor1); + int get roundingMode { + return _objc_msgSend_178(this.pointer, _sel_roundingMode); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableString1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + set roundingMode(int value) { + return _objc_msgSend_179(this.pointer, _sel_setRoundingMode_, value); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableString1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + objc.NSNumber get roundingIncrement { + final _ret = _objc_msgSend_180(this.pointer, _sel_roundingIncrement); + return objc.NSNumber.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableString1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set roundingIncrement(objc.NSNumber value) { + return _objc_msgSend_181( + this.pointer, _sel_setRoundingIncrement_, value.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSMutableString1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + int get minimumIntegerDigits { + return _objc_msgSend_29(this.pointer, _sel_minimumIntegerDigits); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableString1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + set minimumIntegerDigits(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setMinimumIntegerDigits_, value); } -} -class NSNotification extends NSObject { - NSNotification._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + int get maximumIntegerDigits { + return _objc_msgSend_29(this.pointer, _sel_maximumIntegerDigits); + } - /// Returns a [NSNotification] that points to the same underlying object as [other]. - static NSNotification castFrom(T other) { - return NSNotification._(other._id, other._lib, retain: true, release: true); + set maximumIntegerDigits(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setMaximumIntegerDigits_, value); } - /// Returns a [NSNotification] that wraps the given raw object pointer. - static NSNotification castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSNotification._(other, lib, retain: retain, release: release); + int get minimumFractionDigits { + return _objc_msgSend_29(this.pointer, _sel_minimumFractionDigits); } - /// Returns whether [obj] is an instance of [NSNotification]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSNotification1); + set minimumFractionDigits(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setMinimumFractionDigits_, value); } - NSString get name { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_name1); - return NSString._(_ret, _lib, retain: true, release: true); + int get maximumFractionDigits { + return _objc_msgSend_29(this.pointer, _sel_maximumFractionDigits); } - NSObject? get object { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_object1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + set maximumFractionDigits(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setMaximumFractionDigits_, value); } - NSDictionary? get userInfo { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_userInfo1); + objc.NSNumber? get minimum { + final _ret = _objc_msgSend_174(this.pointer, _sel_minimum); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + : objc.NSNumber.castFromPointer(_ret, retain: true, release: true); } - NSNotification initWithName_object_userInfo_( - NSString name, NSObject? object, NSDictionary? userInfo) { - final _ret = _lib._objc_msgSend_694( - _id, - _lib._sel_initWithName_object_userInfo_1, - name._id, - object?._id ?? ffi.nullptr, - userInfo?._id ?? ffi.nullptr); - return NSNotification._(_ret, _lib, retain: true, release: true); + set minimum(objc.NSNumber? value) { + return _objc_msgSend_175( + this.pointer, _sel_setMinimum_, value?.pointer ?? ffi.nullptr); } - NSNotification? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); + objc.NSNumber? get maximum { + final _ret = _objc_msgSend_174(this.pointer, _sel_maximum); return _ret.address == 0 ? null - : NSNotification._(_ret, _lib, retain: true, release: true); + : objc.NSNumber.castFromPointer(_ret, retain: true, release: true); } - static NSNotification notificationWithName_object_( - AVFAudio _lib, NSString aName, NSObject? anObject) { - final _ret = _lib._objc_msgSend_374( - _lib._class_NSNotification1, - _lib._sel_notificationWithName_object_1, - aName._id, - anObject?._id ?? ffi.nullptr); - return NSNotification._(_ret, _lib, retain: true, release: true); + set maximum(objc.NSNumber? value) { + return _objc_msgSend_175( + this.pointer, _sel_setMaximum_, value?.pointer ?? ffi.nullptr); } - static NSNotification notificationWithName_object_userInfo_(AVFAudio _lib, - NSString aName, NSObject? anObject, NSDictionary? aUserInfo) { - final _ret = _lib._objc_msgSend_694( - _lib._class_NSNotification1, - _lib._sel_notificationWithName_object_userInfo_1, - aName._id, - anObject?._id ?? ffi.nullptr, - aUserInfo?._id ?? ffi.nullptr); - return NSNotification._(_ret, _lib, retain: true, release: true); + objc.NSString get currencyGroupingSeparator { + final _ret = _objc_msgSend_12(this.pointer, _sel_currencyGroupingSeparator); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSNotification init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSNotification._(_ret, _lib, retain: true, release: true); + set currencyGroupingSeparator(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setCurrencyGroupingSeparator_, value.pointer); } - static NSNotification new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSNotification1, _lib._sel_new1); - return NSNotification._(_ret, _lib, retain: false, release: true); + bool get lenient { + return _objc_msgSend_7(this.pointer, _sel_isLenient); } - static NSNotification allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSNotification1, _lib._sel_allocWithZone_1, zone); - return NSNotification._(_ret, _lib, retain: false, release: true); + set lenient(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setLenient_, value); } - static NSNotification alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSNotification1, _lib._sel_alloc1); - return NSNotification._(_ret, _lib, retain: false, release: true); + bool get usesSignificantDigits { + return _objc_msgSend_7(this.pointer, _sel_usesSignificantDigits); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSNotification1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set usesSignificantDigits(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setUsesSignificantDigits_, value); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSNotification1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + int get minimumSignificantDigits { + return _objc_msgSend_29(this.pointer, _sel_minimumSignificantDigits); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSNotification1, - _lib._sel_accessInstanceVariablesDirectly1); + set minimumSignificantDigits(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setMinimumSignificantDigits_, value); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSNotification1, _lib._sel_useStoredAccessor1); + int get maximumSignificantDigits { + return _objc_msgSend_29(this.pointer, _sel_maximumSignificantDigits); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSNotification1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + set maximumSignificantDigits(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setMaximumSignificantDigits_, value); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSNotification1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + bool get partialStringValidationEnabled { + return _objc_msgSend_7(this.pointer, _sel_isPartialStringValidationEnabled); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSNotification1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set partialStringValidationEnabled(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setPartialStringValidationEnabled_, value); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSNotification1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool get hasThousandSeparators { + return _objc_msgSend_7(this.pointer, _sel_hasThousandSeparators); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSNotification1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + set hasThousandSeparators(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setHasThousandSeparators_, value); } -} - -class NSBundle extends NSObject { - NSBundle._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSBundle] that points to the same underlying object as [other]. - static NSBundle castFrom(T other) { - return NSBundle._(other._id, other._lib, retain: true, release: true); + objc.NSString get thousandSeparator { + final _ret = _objc_msgSend_12(this.pointer, _sel_thousandSeparator); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSBundle] that wraps the given raw object pointer. - static NSBundle castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSBundle._(other, lib, retain: retain, release: release); + set thousandSeparator(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setThousandSeparator_, value.pointer); } - /// Returns whether [obj] is an instance of [NSBundle]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSBundle1); + bool get localizesFormat { + return _objc_msgSend_7(this.pointer, _sel_localizesFormat); } - static NSBundle getMainBundle(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_695(_lib._class_NSBundle1, _lib._sel_mainBundle1); - return NSBundle._(_ret, _lib, retain: true, release: true); + set localizesFormat(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setLocalizesFormat_, value); } - static NSBundle? bundleWithPath_(AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_38( - _lib._class_NSBundle1, _lib._sel_bundleWithPath_1, path._id); - return _ret.address == 0 - ? null - : NSBundle._(_ret, _lib, retain: true, release: true); + objc.NSString get format { + final _ret = _objc_msgSend_12(this.pointer, _sel_format); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSBundle? initWithPath_(NSString path) { - final _ret = _lib._objc_msgSend_38(_id, _lib._sel_initWithPath_1, path._id); - return _ret.address == 0 - ? null - : NSBundle._(_ret, _lib, retain: true, release: true); + set format(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setFormat_, value.pointer); } - static NSBundle? bundleWithURL_(AVFAudio _lib, NSURL url) { - final _ret = _lib._objc_msgSend_277( - _lib._class_NSBundle1, _lib._sel_bundleWithURL_1, url._id); - return _ret.address == 0 - ? null - : NSBundle._(_ret, _lib, retain: true, release: true); + NSAttributedString get attributedStringForZero { + final _ret = _objc_msgSend_63(this.pointer, _sel_attributedStringForZero); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSBundle? initWithURL_(NSURL url) { - final _ret = _lib._objc_msgSend_277(_id, _lib._sel_initWithURL_1, url._id); - return _ret.address == 0 - ? null - : NSBundle._(_ret, _lib, retain: true, release: true); + set attributedStringForZero(NSAttributedString value) { + return _objc_msgSend_182( + this.pointer, _sel_setAttributedStringForZero_, value.pointer); } - static NSBundle bundleForClass_(AVFAudio _lib, NSObject aClass) { - final _ret = _lib._objc_msgSend_696( - _lib._class_NSBundle1, _lib._sel_bundleForClass_1, aClass._id); - return NSBundle._(_ret, _lib, retain: true, release: true); + NSAttributedString get attributedStringForNil { + final _ret = _objc_msgSend_63(this.pointer, _sel_attributedStringForNil); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static NSBundle? bundleWithIdentifier_(AVFAudio _lib, NSString identifier) { - final _ret = _lib._objc_msgSend_697(_lib._class_NSBundle1, - _lib._sel_bundleWithIdentifier_1, identifier._id); - return _ret.address == 0 - ? null - : NSBundle._(_ret, _lib, retain: true, release: true); + set attributedStringForNil(NSAttributedString value) { + return _objc_msgSend_182( + this.pointer, _sel_setAttributedStringForNil_, value.pointer); } - static NSArray getAllBundles(AVFAudio _lib) { + NSAttributedString get attributedStringForNotANumber { final _ret = - _lib._objc_msgSend_85(_lib._class_NSBundle1, _lib._sel_allBundles1); - return NSArray._(_ret, _lib, retain: true, release: true); + _objc_msgSend_63(this.pointer, _sel_attributedStringForNotANumber); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static NSArray getAllFrameworks(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_85(_lib._class_NSBundle1, _lib._sel_allFrameworks1); - return NSArray._(_ret, _lib, retain: true, release: true); + set attributedStringForNotANumber(NSAttributedString value) { + return _objc_msgSend_182( + this.pointer, _sel_setAttributedStringForNotANumber_, value.pointer); } - bool load() { - return _lib._objc_msgSend_12(_id, _lib._sel_load1); + NSDecimalNumberHandler get roundingBehavior { + final _ret = _objc_msgSend_183(this.pointer, _sel_roundingBehavior); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: true, release: true); } - bool get loaded { - return _lib._objc_msgSend_12(_id, _lib._sel_isLoaded1); + set roundingBehavior(NSDecimalNumberHandler value) { + return _objc_msgSend_185( + this.pointer, _sel_setRoundingBehavior_, value.pointer); } - bool unload() { - return _lib._objc_msgSend_12(_id, _lib._sel_unload1); + @override + NSNumberFormatter init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSNumberFormatter.castFromPointer(_ret, retain: true, release: true); } - bool preflightAndReturnError_(ffi.Pointer> error) { - return _lib._objc_msgSend_255( - _id, _lib._sel_preflightAndReturnError_1, error); + static NSNumberFormatter new1() { + final _ret = _objc_msgSend_40(_class_NSNumberFormatter, _sel_new); + return NSNumberFormatter.castFromPointer(_ret, + retain: false, release: true); } - bool loadAndReturnError_(ffi.Pointer> error) { - return _lib._objc_msgSend_255(_id, _lib._sel_loadAndReturnError_1, error); + static NSNumberFormatter allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSNumberFormatter, _sel_allocWithZone_, zone); + return NSNumberFormatter.castFromPointer(_ret, + retain: false, release: true); } - NSURL get bundleURL { - final _ret = _lib._objc_msgSend_466(_id, _lib._sel_bundleURL1); - return NSURL._(_ret, _lib, retain: true, release: true); + static NSNumberFormatter alloc() { + final _ret = _objc_msgSend_40(_class_NSNumberFormatter, _sel_alloc); + return NSNumberFormatter.castFromPointer(_ret, + retain: false, release: true); } - NSURL? get resourceURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_resourceURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSNumberFormatter, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSURL? get executableURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_executableURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSNumberFormatter, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSURL? URLForAuxiliaryExecutable_(NSString executableName) { - final _ret = _lib._objc_msgSend_257( - _id, _lib._sel_URLForAuxiliaryExecutable_1, executableName._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSNumberFormatter, _sel_accessInstanceVariablesDirectly); } - NSURL? get privateFrameworksURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_privateFrameworksURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSNumberFormatter, _sel_useStoredAccessor); } - NSURL? get sharedFrameworksURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_sharedFrameworksURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSNumberFormatter, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSURL? get sharedSupportURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_sharedSupportURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSNumberFormatter, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSURL? get builtInPlugInsURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_builtInPlugInsURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSNumberFormatter, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSNumberFormatter, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSNumberFormatter, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSNumberFormatter = objc.getClass("NSNumberFormatter"); +late final _sel_stringFromNumber_ = objc.registerName("stringFromNumber:"); +final _objc_msgSend_165 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_numberFromString_ = objc.registerName("numberFromString:"); +final _objc_msgSend_166 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - NSURL? get appStoreReceiptURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_appStoreReceiptURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } +abstract class NSNumberFormatterStyle { + static const int NSNumberFormatterNoStyle = 0; + static const int NSNumberFormatterDecimalStyle = 1; + static const int NSNumberFormatterCurrencyStyle = 2; + static const int NSNumberFormatterPercentStyle = 3; + static const int NSNumberFormatterScientificStyle = 4; + static const int NSNumberFormatterSpellOutStyle = 5; + static const int NSNumberFormatterOrdinalStyle = 6; + static const int NSNumberFormatterCurrencyISOCodeStyle = 8; + static const int NSNumberFormatterCurrencyPluralStyle = 9; + static const int NSNumberFormatterCurrencyAccountingStyle = 10; +} - NSString get bundlePath { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_bundlePath1); - return NSString._(_ret, _lib, retain: true, release: true); - } +late final _sel_localizedStringFromNumber_numberStyle_ = + objc.registerName("localizedStringFromNumber:numberStyle:"); +final _objc_msgSend_167 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); - NSString? get resourcePath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_resourcePath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); +abstract class NSNumberFormatterBehavior { + static const int NSNumberFormatterBehaviorDefault = 0; + static const int NSNumberFormatterBehavior10_0 = 1000; + static const int NSNumberFormatterBehavior10_4 = 1040; +} + +final _objc_msgSend_168 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_169 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_numberStyle = objc.registerName("numberStyle"); +final _objc_msgSend_170 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setNumberStyle_ = objc.registerName("setNumberStyle:"); +final _objc_msgSend_171 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_generatesDecimalNumbers = + objc.registerName("generatesDecimalNumbers"); +late final _sel_setGeneratesDecimalNumbers_ = + objc.registerName("setGeneratesDecimalNumbers:"); +final _objc_msgSend_172 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_negativeFormat = objc.registerName("negativeFormat"); +late final _sel_setNegativeFormat_ = objc.registerName("setNegativeFormat:"); +late final _sel_textAttributesForNegativeValues = + objc.registerName("textAttributesForNegativeValues"); +late final _sel_setTextAttributesForNegativeValues_ = + objc.registerName("setTextAttributesForNegativeValues:"); +final _objc_msgSend_173 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_positiveFormat = objc.registerName("positiveFormat"); +late final _sel_setPositiveFormat_ = objc.registerName("setPositiveFormat:"); +late final _sel_textAttributesForPositiveValues = + objc.registerName("textAttributesForPositiveValues"); +late final _sel_setTextAttributesForPositiveValues_ = + objc.registerName("setTextAttributesForPositiveValues:"); +late final _sel_allowsFloats = objc.registerName("allowsFloats"); +late final _sel_setAllowsFloats_ = objc.registerName("setAllowsFloats:"); +late final _sel_decimalSeparator = objc.registerName("decimalSeparator"); +late final _sel_setDecimalSeparator_ = + objc.registerName("setDecimalSeparator:"); +late final _sel_alwaysShowsDecimalSeparator = + objc.registerName("alwaysShowsDecimalSeparator"); +late final _sel_setAlwaysShowsDecimalSeparator_ = + objc.registerName("setAlwaysShowsDecimalSeparator:"); +late final _sel_currencyDecimalSeparator = + objc.registerName("currencyDecimalSeparator"); +late final _sel_setCurrencyDecimalSeparator_ = + objc.registerName("setCurrencyDecimalSeparator:"); +late final _sel_usesGroupingSeparator = + objc.registerName("usesGroupingSeparator"); +late final _sel_setUsesGroupingSeparator_ = + objc.registerName("setUsesGroupingSeparator:"); +late final _sel_groupingSeparator = objc.registerName("groupingSeparator"); +late final _sel_setGroupingSeparator_ = + objc.registerName("setGroupingSeparator:"); +late final _sel_zeroSymbol = objc.registerName("zeroSymbol"); +late final _sel_setZeroSymbol_ = objc.registerName("setZeroSymbol:"); +late final _sel_textAttributesForZero = + objc.registerName("textAttributesForZero"); +late final _sel_setTextAttributesForZero_ = + objc.registerName("setTextAttributesForZero:"); +late final _sel_nilSymbol = objc.registerName("nilSymbol"); +late final _sel_setNilSymbol_ = objc.registerName("setNilSymbol:"); +late final _sel_textAttributesForNil = + objc.registerName("textAttributesForNil"); +late final _sel_setTextAttributesForNil_ = + objc.registerName("setTextAttributesForNil:"); +late final _sel_notANumberSymbol = objc.registerName("notANumberSymbol"); +late final _sel_setNotANumberSymbol_ = + objc.registerName("setNotANumberSymbol:"); +late final _sel_textAttributesForNotANumber = + objc.registerName("textAttributesForNotANumber"); +late final _sel_setTextAttributesForNotANumber_ = + objc.registerName("setTextAttributesForNotANumber:"); +late final _sel_positiveInfinitySymbol = + objc.registerName("positiveInfinitySymbol"); +late final _sel_setPositiveInfinitySymbol_ = + objc.registerName("setPositiveInfinitySymbol:"); +late final _sel_textAttributesForPositiveInfinity = + objc.registerName("textAttributesForPositiveInfinity"); +late final _sel_setTextAttributesForPositiveInfinity_ = + objc.registerName("setTextAttributesForPositiveInfinity:"); +late final _sel_negativeInfinitySymbol = + objc.registerName("negativeInfinitySymbol"); +late final _sel_setNegativeInfinitySymbol_ = + objc.registerName("setNegativeInfinitySymbol:"); +late final _sel_textAttributesForNegativeInfinity = + objc.registerName("textAttributesForNegativeInfinity"); +late final _sel_setTextAttributesForNegativeInfinity_ = + objc.registerName("setTextAttributesForNegativeInfinity:"); +late final _sel_positivePrefix = objc.registerName("positivePrefix"); +late final _sel_setPositivePrefix_ = objc.registerName("setPositivePrefix:"); +late final _sel_positiveSuffix = objc.registerName("positiveSuffix"); +late final _sel_setPositiveSuffix_ = objc.registerName("setPositiveSuffix:"); +late final _sel_negativePrefix = objc.registerName("negativePrefix"); +late final _sel_setNegativePrefix_ = objc.registerName("setNegativePrefix:"); +late final _sel_negativeSuffix = objc.registerName("negativeSuffix"); +late final _sel_setNegativeSuffix_ = objc.registerName("setNegativeSuffix:"); +late final _sel_currencyCode = objc.registerName("currencyCode"); +late final _sel_setCurrencyCode_ = objc.registerName("setCurrencyCode:"); +late final _sel_currencySymbol = objc.registerName("currencySymbol"); +late final _sel_setCurrencySymbol_ = objc.registerName("setCurrencySymbol:"); +late final _sel_internationalCurrencySymbol = + objc.registerName("internationalCurrencySymbol"); +late final _sel_setInternationalCurrencySymbol_ = + objc.registerName("setInternationalCurrencySymbol:"); +late final _sel_percentSymbol = objc.registerName("percentSymbol"); +late final _sel_setPercentSymbol_ = objc.registerName("setPercentSymbol:"); +late final _sel_perMillSymbol = objc.registerName("perMillSymbol"); +late final _sel_setPerMillSymbol_ = objc.registerName("setPerMillSymbol:"); +late final _sel_minusSign = objc.registerName("minusSign"); +late final _sel_setMinusSign_ = objc.registerName("setMinusSign:"); +late final _sel_plusSign = objc.registerName("plusSign"); +late final _sel_setPlusSign_ = objc.registerName("setPlusSign:"); +late final _sel_exponentSymbol = objc.registerName("exponentSymbol"); +late final _sel_setExponentSymbol_ = objc.registerName("setExponentSymbol:"); +late final _sel_groupingSize = objc.registerName("groupingSize"); +late final _sel_setGroupingSize_ = objc.registerName("setGroupingSize:"); +late final _sel_secondaryGroupingSize = + objc.registerName("secondaryGroupingSize"); +late final _sel_setSecondaryGroupingSize_ = + objc.registerName("setSecondaryGroupingSize:"); +late final _sel_multiplier = objc.registerName("multiplier"); +final _objc_msgSend_174 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setMultiplier_ = objc.registerName("setMultiplier:"); +final _objc_msgSend_175 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_formatWidth = objc.registerName("formatWidth"); +late final _sel_setFormatWidth_ = objc.registerName("setFormatWidth:"); +late final _sel_paddingCharacter = objc.registerName("paddingCharacter"); +late final _sel_setPaddingCharacter_ = + objc.registerName("setPaddingCharacter:"); + +abstract class NSNumberFormatterPadPosition { + static const int NSNumberFormatterPadBeforePrefix = 0; + static const int NSNumberFormatterPadAfterPrefix = 1; + static const int NSNumberFormatterPadBeforeSuffix = 2; + static const int NSNumberFormatterPadAfterSuffix = 3; +} + +late final _sel_paddingPosition = objc.registerName("paddingPosition"); +final _objc_msgSend_176 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setPaddingPosition_ = objc.registerName("setPaddingPosition:"); +final _objc_msgSend_177 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); + +abstract class NSNumberFormatterRoundingMode { + static const int NSNumberFormatterRoundCeiling = 0; + static const int NSNumberFormatterRoundFloor = 1; + static const int NSNumberFormatterRoundDown = 2; + static const int NSNumberFormatterRoundUp = 3; + static const int NSNumberFormatterRoundHalfEven = 4; + static const int NSNumberFormatterRoundHalfDown = 5; + static const int NSNumberFormatterRoundHalfUp = 6; +} + +late final _sel_roundingMode = objc.registerName("roundingMode"); +final _objc_msgSend_178 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setRoundingMode_ = objc.registerName("setRoundingMode:"); +final _objc_msgSend_179 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_roundingIncrement = objc.registerName("roundingIncrement"); +final _objc_msgSend_180 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setRoundingIncrement_ = + objc.registerName("setRoundingIncrement:"); +final _objc_msgSend_181 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_minimumIntegerDigits = + objc.registerName("minimumIntegerDigits"); +late final _sel_setMinimumIntegerDigits_ = + objc.registerName("setMinimumIntegerDigits:"); +late final _sel_maximumIntegerDigits = + objc.registerName("maximumIntegerDigits"); +late final _sel_setMaximumIntegerDigits_ = + objc.registerName("setMaximumIntegerDigits:"); +late final _sel_minimumFractionDigits = + objc.registerName("minimumFractionDigits"); +late final _sel_setMinimumFractionDigits_ = + objc.registerName("setMinimumFractionDigits:"); +late final _sel_maximumFractionDigits = + objc.registerName("maximumFractionDigits"); +late final _sel_setMaximumFractionDigits_ = + objc.registerName("setMaximumFractionDigits:"); +late final _sel_minimum = objc.registerName("minimum"); +late final _sel_setMinimum_ = objc.registerName("setMinimum:"); +late final _sel_maximum = objc.registerName("maximum"); +late final _sel_setMaximum_ = objc.registerName("setMaximum:"); +late final _sel_currencyGroupingSeparator = + objc.registerName("currencyGroupingSeparator"); +late final _sel_setCurrencyGroupingSeparator_ = + objc.registerName("setCurrencyGroupingSeparator:"); +late final _sel_usesSignificantDigits = + objc.registerName("usesSignificantDigits"); +late final _sel_setUsesSignificantDigits_ = + objc.registerName("setUsesSignificantDigits:"); +late final _sel_minimumSignificantDigits = + objc.registerName("minimumSignificantDigits"); +late final _sel_setMinimumSignificantDigits_ = + objc.registerName("setMinimumSignificantDigits:"); +late final _sel_maximumSignificantDigits = + objc.registerName("maximumSignificantDigits"); +late final _sel_setMaximumSignificantDigits_ = + objc.registerName("setMaximumSignificantDigits:"); +late final _sel_isPartialStringValidationEnabled = + objc.registerName("isPartialStringValidationEnabled"); +late final _sel_setPartialStringValidationEnabled_ = + objc.registerName("setPartialStringValidationEnabled:"); +late final _sel_hasThousandSeparators = + objc.registerName("hasThousandSeparators"); +late final _sel_setHasThousandSeparators_ = + objc.registerName("setHasThousandSeparators:"); +late final _sel_thousandSeparator = objc.registerName("thousandSeparator"); +late final _sel_setThousandSeparator_ = + objc.registerName("setThousandSeparator:"); +late final _sel_localizesFormat = objc.registerName("localizesFormat"); +late final _sel_setLocalizesFormat_ = objc.registerName("setLocalizesFormat:"); +late final _sel_format = objc.registerName("format"); +late final _sel_setFormat_ = objc.registerName("setFormat:"); +late final _sel_attributedStringForZero = + objc.registerName("attributedStringForZero"); +late final _sel_setAttributedStringForZero_ = + objc.registerName("setAttributedStringForZero:"); +final _objc_msgSend_182 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_attributedStringForNil = + objc.registerName("attributedStringForNil"); +late final _sel_setAttributedStringForNil_ = + objc.registerName("setAttributedStringForNil:"); +late final _sel_attributedStringForNotANumber = + objc.registerName("attributedStringForNotANumber"); +late final _sel_setAttributedStringForNotANumber_ = + objc.registerName("setAttributedStringForNotANumber:"); + +class NSDecimalNumberHandler extends objc.NSObject { + NSDecimalNumberHandler._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSDecimalNumberHandler] that points to the same underlying object as [other]. + NSDecimalNumberHandler.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSDecimalNumberHandler] that wraps the given raw object pointer. + NSDecimalNumberHandler.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSDecimalNumberHandler]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSDecimalNumberHandler); } - NSString? get executablePath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_executablePath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSDecimalNumberHandler getDefaultDecimalNumberHandler() { + final _ret = _objc_msgSend_183( + _class_NSDecimalNumberHandler, _sel_defaultDecimalNumberHandler); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: true, release: true); } - NSString? pathForAuxiliaryExecutable_(NSString executableName) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_pathForAuxiliaryExecutable_1, executableName._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + NSDecimalNumberHandler + initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_( + int roundingMode, + int scale, + bool exact, + bool overflow, + bool underflow, + bool divideByZero) { + final _ret = _objc_msgSend_184( + this.pointer, + _sel_initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_, + roundingMode, + scale, + exact, + overflow, + underflow, + divideByZero); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: true, release: true); } - NSString? get privateFrameworksPath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_privateFrameworksPath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSDecimalNumberHandler + decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_( + int roundingMode, + int scale, + bool exact, + bool overflow, + bool underflow, + bool divideByZero) { + final _ret = _objc_msgSend_184( + _class_NSDecimalNumberHandler, + _sel_decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_, + roundingMode, + scale, + exact, + overflow, + underflow, + divideByZero); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: true, release: true); } - NSString? get sharedFrameworksPath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_sharedFrameworksPath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + @override + NSDecimalNumberHandler init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: true, release: true); } - NSString? get sharedSupportPath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_sharedSupportPath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSDecimalNumberHandler new1() { + final _ret = _objc_msgSend_40(_class_NSDecimalNumberHandler, _sel_new); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: false, release: true); } - NSString? get builtInPlugInsPath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_builtInPlugInsPath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSURL? URLForResource_withExtension_subdirectory_inBundleWithURL_( - AVFAudio _lib, - NSString? name, - NSString? ext, - NSString? subpath, - NSURL bundleURL) { - final _ret = _lib._objc_msgSend_698( - _lib._class_NSBundle1, - _lib._sel_URLForResource_withExtension_subdirectory_inBundleWithURL_1, - name?._id ?? ffi.nullptr, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr, - bundleURL._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static NSDecimalNumberHandler allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSDecimalNumberHandler, _sel_allocWithZone_, zone); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: false, release: true); } - static NSArray? URLsForResourcesWithExtension_subdirectory_inBundleWithURL_( - AVFAudio _lib, NSString? ext, NSString? subpath, NSURL bundleURL) { - final _ret = _lib._objc_msgSend_699( - _lib._class_NSBundle1, - _lib._sel_URLsForResourcesWithExtension_subdirectory_inBundleWithURL_1, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr, - bundleURL._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + static NSDecimalNumberHandler alloc() { + final _ret = _objc_msgSend_40(_class_NSDecimalNumberHandler, _sel_alloc); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: false, release: true); } - NSURL? URLForResource_withExtension_(NSString? name, NSString? ext) { - final _ret = _lib._objc_msgSend_700( - _id, - _lib._sel_URLForResource_withExtension_1, - name?._id ?? ffi.nullptr, - ext?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSDecimalNumberHandler, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSURL? URLForResource_withExtension_subdirectory_( - NSString? name, NSString? ext, NSString? subpath) { - final _ret = _lib._objc_msgSend_701( - _id, - _lib._sel_URLForResource_withExtension_subdirectory_1, - name?._id ?? ffi.nullptr, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? URLForResource_withExtension_subdirectory_localization_(NSString? name, - NSString? ext, NSString? subpath, NSString? localizationName) { - final _ret = _lib._objc_msgSend_702( - _id, - _lib._sel_URLForResource_withExtension_subdirectory_localization_1, - name?._id ?? ffi.nullptr, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr, - localizationName?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSDecimalNumberHandler, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSArray? URLsForResourcesWithExtension_subdirectory_( - NSString? ext, NSString? subpath) { - final _ret = _lib._objc_msgSend_703( - _id, - _lib._sel_URLsForResourcesWithExtension_subdirectory_1, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSDecimalNumberHandler, _sel_accessInstanceVariablesDirectly); } - NSArray? URLsForResourcesWithExtension_subdirectory_localization_( - NSString? ext, NSString? subpath, NSString? localizationName) { - final _ret = _lib._objc_msgSend_704( - _id, - _lib._sel_URLsForResourcesWithExtension_subdirectory_localization_1, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr, - localizationName?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSDecimalNumberHandler, _sel_useStoredAccessor); } - static NSString? pathForResource_ofType_inDirectory_( - AVFAudio _lib, NSString? name, NSString? ext, NSString bundlePath) { - final _ret = _lib._objc_msgSend_705( - _lib._class_NSBundle1, - _lib._sel_pathForResource_ofType_inDirectory_1, - name?._id ?? ffi.nullptr, - ext?._id ?? ffi.nullptr, - bundlePath._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSDecimalNumberHandler, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static NSArray pathsForResourcesOfType_inDirectory_( - AVFAudio _lib, NSString? ext, NSString bundlePath) { - final _ret = _lib._objc_msgSend_706( - _lib._class_NSBundle1, - _lib._sel_pathsForResourcesOfType_inDirectory_1, - ext?._id ?? ffi.nullptr, - bundlePath._id); - return NSArray._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSDecimalNumberHandler, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSString? pathForResource_ofType_(NSString? name, NSString? ext) { - final _ret = _lib._objc_msgSend_707(_id, _lib._sel_pathForResource_ofType_1, - name?._id ?? ffi.nullptr, ext?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? pathForResource_ofType_inDirectory_forLocalization_(NSString? name, - NSString? ext, NSString? subpath, NSString? localizationName) { - final _ret = _lib._objc_msgSend_708( - _id, - _lib._sel_pathForResource_ofType_inDirectory_forLocalization_1, - name?._id ?? ffi.nullptr, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr, - localizationName?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSDecimalNumberHandler, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - NSArray pathsForResourcesOfType_inDirectory_forLocalization_( - NSString? ext, NSString? subpath, NSString? localizationName) { - final _ret = _lib._objc_msgSend_709( - _id, - _lib._sel_pathsForResourcesOfType_inDirectory_forLocalization_1, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr, - localizationName?._id ?? ffi.nullptr); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSDecimalNumberHandler, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString localizedStringForKey_value_table_( - NSString key, NSString? value, NSString? tableName) { - final _ret = _lib._objc_msgSend_710( - _id, - _lib._sel_localizedStringForKey_value_table_1, - key._id, - value?._id ?? ffi.nullptr, - tableName?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSDecimalNumberHandler, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - NSAttributedString localizedAttributedStringForKey_value_table_( - NSString key, NSString? value, NSString? tableName) { - final _ret = _lib._objc_msgSend_736( - _id, - _lib._sel_localizedAttributedStringForKey_value_table_1, - key._id, - value?._id ?? ffi.nullptr, - tableName?._id ?? ffi.nullptr); - return NSAttributedString._(_ret, _lib, retain: true, release: true); - } - - NSString? get bundleIdentifier { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_bundleIdentifier1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); +late final _class_NSDecimalNumberHandler = + objc.getClass("NSDecimalNumberHandler"); +late final _sel_defaultDecimalNumberHandler = + objc.registerName("defaultDecimalNumberHandler"); +final _objc_msgSend_183 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSRoundingMode { + static const int NSRoundPlain = 0; + static const int NSRoundDown = 1; + static const int NSRoundUp = 2; + static const int NSRoundBankers = 3; +} + +late final _sel_initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_ = + objc.registerName( + "initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:"); +final _objc_msgSend_184 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Short, + ffi.Bool, + ffi.Bool, + ffi.Bool, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + bool, + bool, + bool, + bool)>(); +late final _sel_decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_ = + objc.registerName( + "decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:"); +late final _sel_roundingBehavior = objc.registerName("roundingBehavior"); +late final _sel_setRoundingBehavior_ = + objc.registerName("setRoundingBehavior:"); +final _objc_msgSend_185 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSLocaleLanguageDirection { + static const int NSLocaleLanguageDirectionUnknown = 0; + static const int NSLocaleLanguageDirectionLeftToRight = 1; + static const int NSLocaleLanguageDirectionRightToLeft = 2; + static const int NSLocaleLanguageDirectionTopToBottom = 3; + static const int NSLocaleLanguageDirectionBottomToTop = 4; +} + +class NSScanner extends objc.NSObject { + NSScanner._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSScanner] that points to the same underlying object as [other]. + NSScanner.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSScanner] that wraps the given raw object pointer. + NSScanner.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSScanner]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSScanner); } - NSDictionary? get infoDictionary { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_infoDictionary1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + objc.NSString get string { + final _ret = _objc_msgSend_12(this.pointer, _sel_string); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSDictionary? get localizedInfoDictionary { - final _ret = - _lib._objc_msgSend_390(_id, _lib._sel_localizedInfoDictionary1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + int get scanLocation { + return _objc_msgSend_29(this.pointer, _sel_scanLocation); } - NSObject? objectForInfoDictionaryKey_(NSString key) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_objectForInfoDictionaryKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + set scanLocation(int value) { + return _objc_msgSend_125(this.pointer, _sel_setScanLocation_, value); } - NSObject? classNamed_(NSString className) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_classNamed_1, className._id); + objc.NSCharacterSet? get charactersToBeSkipped { + final _ret = _objc_msgSend_186(this.pointer, _sel_charactersToBeSkipped); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSCharacterSet.castFromPointer(_ret, + retain: true, release: true); } - NSObject? get principalClass { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_principalClass1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + set charactersToBeSkipped(objc.NSCharacterSet? value) { + return _objc_msgSend_187(this.pointer, _sel_setCharactersToBeSkipped_, + value?.pointer ?? ffi.nullptr); } - NSArray get preferredLocalizations { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_preferredLocalizations1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool get caseSensitive { + return _objc_msgSend_7(this.pointer, _sel_caseSensitive); } - NSArray get localizations { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_localizations1); - return NSArray._(_ret, _lib, retain: true, release: true); + set caseSensitive(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setCaseSensitive_, value); } - NSString? get developmentLocalization { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_developmentLocalization1); + objc.NSObject? get locale { + final _ret = _objc_msgSend_66(this.pointer, _sel_locale); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSArray preferredLocalizationsFromArray_( - AVFAudio _lib, NSArray localizationsArray) { - final _ret = _lib._objc_msgSend_68(_lib._class_NSBundle1, - _lib._sel_preferredLocalizationsFromArray_1, localizationsArray._id); - return NSArray._(_ret, _lib, retain: true, release: true); + set locale(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setLocale_, value?.pointer ?? ffi.nullptr); } - static NSArray preferredLocalizationsFromArray_forPreferences_( - AVFAudio _lib, NSArray localizationsArray, NSArray? preferencesArray) { - final _ret = _lib._objc_msgSend_737( - _lib._class_NSBundle1, - _lib._sel_preferredLocalizationsFromArray_forPreferences_1, - localizationsArray._id, - preferencesArray?._id ?? ffi.nullptr); - return NSArray._(_ret, _lib, retain: true, release: true); + NSScanner initWithString_(objc.NSString string) { + final _ret = + _objc_msgSend_35(this.pointer, _sel_initWithString_, string.pointer); + return NSScanner.castFromPointer(_ret, retain: true, release: true); } - NSArray? get executableArchitectures { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_executableArchitectures1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + bool scanInt_(ffi.Pointer result) { + return _objc_msgSend_189(this.pointer, _sel_scanInt_, result); } - void setPreservationPriority_forTags_(double priority, NSSet tags) { - _lib._objc_msgSend_738( - _id, _lib._sel_setPreservationPriority_forTags_1, priority, tags._id); + bool scanInteger_(ffi.Pointer result) { + return _objc_msgSend_190(this.pointer, _sel_scanInteger_, result); } - double preservationPriorityForTag_(NSString tag) { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_308_fpret( - _id, _lib._sel_preservationPriorityForTag_1, tag._id) - : _lib._objc_msgSend_308( - _id, _lib._sel_preservationPriorityForTag_1, tag._id); + bool scanLongLong_(ffi.Pointer result) { + return _objc_msgSend_191(this.pointer, _sel_scanLongLong_, result); } - @override - NSBundle init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSBundle._(_ret, _lib, retain: true, release: true); + bool scanUnsignedLongLong_(ffi.Pointer result) { + return _objc_msgSend_192(this.pointer, _sel_scanUnsignedLongLong_, result); } - static NSBundle new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSBundle1, _lib._sel_new1); - return NSBundle._(_ret, _lib, retain: false, release: true); + bool scanFloat_(ffi.Pointer result) { + return _objc_msgSend_193(this.pointer, _sel_scanFloat_, result); } - static NSBundle allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSBundle1, _lib._sel_allocWithZone_1, zone); - return NSBundle._(_ret, _lib, retain: false, release: true); + bool scanDouble_(ffi.Pointer result) { + return _objc_msgSend_194(this.pointer, _sel_scanDouble_, result); } - static NSBundle alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSBundle1, _lib._sel_alloc1); - return NSBundle._(_ret, _lib, retain: false, release: true); + bool scanHexInt_(ffi.Pointer result) { + return _objc_msgSend_195(this.pointer, _sel_scanHexInt_, result); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSBundle1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + bool scanHexLongLong_(ffi.Pointer result) { + return _objc_msgSend_192(this.pointer, _sel_scanHexLongLong_, result); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSBundle1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + bool scanHexFloat_(ffi.Pointer result) { + return _objc_msgSend_193(this.pointer, _sel_scanHexFloat_, result); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSBundle1, _lib._sel_accessInstanceVariablesDirectly1); + bool scanHexDouble_(ffi.Pointer result) { + return _objc_msgSend_194(this.pointer, _sel_scanHexDouble_, result); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSBundle1, _lib._sel_useStoredAccessor1); + bool scanString_intoString_( + objc.NSString string, ffi.Pointer> result) { + return _objc_msgSend_196( + this.pointer, _sel_scanString_intoString_, string.pointer, result); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSBundle1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + bool scanCharactersFromSet_intoString_(objc.NSCharacterSet set, + ffi.Pointer> result) { + return _objc_msgSend_197(this.pointer, + _sel_scanCharactersFromSet_intoString_, set.pointer, result); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSBundle1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + bool scanUpToString_intoString_( + objc.NSString string, ffi.Pointer> result) { + return _objc_msgSend_196( + this.pointer, _sel_scanUpToString_intoString_, string.pointer, result); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSBundle1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + bool scanUpToCharactersFromSet_intoString_(objc.NSCharacterSet set, + ffi.Pointer> result) { + return _objc_msgSend_197(this.pointer, + _sel_scanUpToCharactersFromSet_intoString_, set.pointer, result); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSBundle1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool get atEnd { + return _objc_msgSend_7(this.pointer, _sel_isAtEnd); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSBundle1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSScanner scannerWithString_(objc.NSString string) { + final _ret = _objc_msgSend_35( + _class_NSScanner, _sel_scannerWithString_, string.pointer); + return NSScanner.castFromPointer(_ret, retain: true, release: true); } -} - -class NSAttributedString extends NSObject { - NSAttributedString._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSAttributedString] that points to the same underlying object as [other]. - static NSAttributedString castFrom(T other) { - return NSAttributedString._(other._id, other._lib, - retain: true, release: true); + static objc.NSObject localizedScannerWithString_(objc.NSString string) { + final _ret = _objc_msgSend_35( + _class_NSScanner, _sel_localizedScannerWithString_, string.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSAttributedString] that wraps the given raw object pointer. - static NSAttributedString castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSAttributedString._(other, lib, retain: retain, release: release); + bool scanDecimal_(ffi.Pointer dcm) { + return _objc_msgSend_198(this.pointer, _sel_scanDecimal_, dcm); } - /// Returns whether [obj] is an instance of [NSAttributedString]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSAttributedString1); + @override + NSScanner init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSScanner.castFromPointer(_ret, retain: true, release: true); } - NSString get string { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_string1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSScanner new1() { + final _ret = _objc_msgSend_40(_class_NSScanner, _sel_new); + return NSScanner.castFromPointer(_ret, retain: false, release: true); } - NSDictionary attributesAtIndex_effectiveRange_( - int location, ffi.Pointer<_NSRange> range) { - final _ret = _lib._objc_msgSend_711( - _id, _lib._sel_attributesAtIndex_effectiveRange_1, location, range); - return NSDictionary._(_ret, _lib, retain: true, release: true); + static NSScanner allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSScanner, _sel_allocWithZone_, zone); + return NSScanner.castFromPointer(_ret, retain: false, release: true); } - int get length { - return _lib._objc_msgSend_10(_id, _lib._sel_length1); + static NSScanner alloc() { + final _ret = _objc_msgSend_40(_class_NSScanner, _sel_alloc); + return NSScanner.castFromPointer(_ret, retain: false, release: true); } - NSObject? attribute_atIndex_effectiveRange_( - NSString attrName, int location, ffi.Pointer<_NSRange> range) { - final _ret = _lib._objc_msgSend_712( - _id, - _lib._sel_attribute_atIndex_effectiveRange_1, - attrName._id, - location, - range); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSScanner, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSAttributedString attributedSubstringFromRange_(_NSRange range) { - final _ret = _lib._objc_msgSend_713( - _id, _lib._sel_attributedSubstringFromRange_1, range); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSScanner, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSDictionary attributesAtIndex_longestEffectiveRange_inRange_( - int location, ffi.Pointer<_NSRange> range, _NSRange rangeLimit) { - final _ret = _lib._objc_msgSend_714( - _id, - _lib._sel_attributesAtIndex_longestEffectiveRange_inRange_1, - location, - range, - rangeLimit); - return NSDictionary._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSScanner, _sel_accessInstanceVariablesDirectly); } - NSObject? attribute_atIndex_longestEffectiveRange_inRange_(NSString attrName, - int location, ffi.Pointer<_NSRange> range, _NSRange rangeLimit) { - final _ret = _lib._objc_msgSend_715( - _id, - _lib._sel_attribute_atIndex_longestEffectiveRange_inRange_1, - attrName._id, - location, - range, - rangeLimit); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSScanner, _sel_useStoredAccessor); } - bool isEqualToAttributedString_(NSAttributedString other) { - return _lib._objc_msgSend_716( - _id, _lib._sel_isEqualToAttributedString_1, other._id); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSScanner, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSAttributedString initWithString_(NSString str) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithString_1, str._id); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSScanner, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSAttributedString initWithString_attributes_( - NSString str, NSDictionary? attrs) { - final _ret = _lib._objc_msgSend_717( - _id, - _lib._sel_initWithString_attributes_1, - str._id, - attrs?._id ?? ffi.nullptr); - return NSAttributedString._(_ret, _lib, retain: true, release: true); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSScanner, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSScanner, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSScanner, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSScanner = objc.getClass("NSScanner"); +late final _sel_scanLocation = objc.registerName("scanLocation"); +late final _sel_setScanLocation_ = objc.registerName("setScanLocation:"); +late final _sel_charactersToBeSkipped = + objc.registerName("charactersToBeSkipped"); +final _objc_msgSend_186 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCharactersToBeSkipped_ = + objc.registerName("setCharactersToBeSkipped:"); +final _objc_msgSend_187 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_caseSensitive = objc.registerName("caseSensitive"); +late final _sel_setCaseSensitive_ = objc.registerName("setCaseSensitive:"); +final _objc_msgSend_188 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scanInt_ = objc.registerName("scanInt:"); +final _objc_msgSend_189 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scanInteger_ = objc.registerName("scanInteger:"); +final _objc_msgSend_190 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scanLongLong_ = objc.registerName("scanLongLong:"); +final _objc_msgSend_191 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scanUnsignedLongLong_ = + objc.registerName("scanUnsignedLongLong:"); +final _objc_msgSend_192 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_scanFloat_ = objc.registerName("scanFloat:"); +final _objc_msgSend_193 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scanDouble_ = objc.registerName("scanDouble:"); +final _objc_msgSend_194 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scanHexInt_ = objc.registerName("scanHexInt:"); +final _objc_msgSend_195 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scanHexLongLong_ = objc.registerName("scanHexLongLong:"); +late final _sel_scanHexFloat_ = objc.registerName("scanHexFloat:"); +late final _sel_scanHexDouble_ = objc.registerName("scanHexDouble:"); +late final _sel_scanString_intoString_ = + objc.registerName("scanString:intoString:"); +final _objc_msgSend_196 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_scanCharactersFromSet_intoString_ = + objc.registerName("scanCharactersFromSet:intoString:"); +final _objc_msgSend_197 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_scanUpToString_intoString_ = + objc.registerName("scanUpToString:intoString:"); +late final _sel_scanUpToCharactersFromSet_intoString_ = + objc.registerName("scanUpToCharactersFromSet:intoString:"); +late final _sel_isAtEnd = objc.registerName("isAtEnd"); +late final _sel_scannerWithString_ = objc.registerName("scannerWithString:"); +late final _sel_localizedScannerWithString_ = + objc.registerName("localizedScannerWithString:"); - NSAttributedString initWithAttributedString_(NSAttributedString attrStr) { - final _ret = _lib._objc_msgSend_718( - _id, _lib._sel_initWithAttributedString_1, attrStr._id); - return NSAttributedString._(_ret, _lib, retain: true, release: true); - } +final class NSDecimal extends ffi.Opaque {} - void enumerateAttributesInRange_options_usingBlock_(_NSRange enumerationRange, - int opts, ObjCBlock_ffiVoid_NSDictionary_NSRange_bool block) { - _lib._objc_msgSend_719( - _id, - _lib._sel_enumerateAttributesInRange_options_usingBlock_1, - enumerationRange, - opts, - block._id); - } +late final _sel_scanDecimal_ = objc.registerName("scanDecimal:"); +final _objc_msgSend_198 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSException extends objc.NSObject { + NSException._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - void enumerateAttribute_inRange_options_usingBlock_( - NSString attrName, - _NSRange enumerationRange, - int opts, - ObjCBlock_ffiVoid_ObjCObject_NSRange_bool block) { - _lib._objc_msgSend_720( - _id, - _lib._sel_enumerateAttribute_inRange_options_usingBlock_1, - attrName._id, - enumerationRange, - opts, - block._id); - } + /// Constructs a [NSException] that points to the same underlying object as [other]. + NSException.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSAttributedString? - initWithContentsOfMarkdownFileAtURL_options_baseURL_error_( - NSURL markdownFile, - NSAttributedStringMarkdownParsingOptions? options, - NSURL? baseURL, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_725( - _id, - _lib._sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_1, - markdownFile._id, - options?._id ?? ffi.nullptr, - baseURL?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSAttributedString._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSException] that wraps the given raw object pointer. + NSException.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSAttributedString? initWithMarkdown_options_baseURL_error_( - NSData markdown, - NSAttributedStringMarkdownParsingOptions? options, - NSURL? baseURL, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_726( - _id, - _lib._sel_initWithMarkdown_options_baseURL_error_1, - markdown._id, - options?._id ?? ffi.nullptr, - baseURL?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSAttributedString._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSException]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSException); } - NSAttributedString? initWithMarkdownString_options_baseURL_error_( - NSString markdownString, - NSAttributedStringMarkdownParsingOptions? options, - NSURL? baseURL, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_727( - _id, - _lib._sel_initWithMarkdownString_options_baseURL_error_1, - markdownString._id, - options?._id ?? ffi.nullptr, - baseURL?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSAttributedString._(_ret, _lib, retain: true, release: true); + static NSException exceptionWithName_reason_userInfo_( + objc.NSString name, objc.NSString? reason, objc.NSDictionary? userInfo) { + final _ret = _objc_msgSend_199( + _class_NSException, + _sel_exceptionWithName_reason_userInfo_, + name.pointer, + reason?.pointer ?? ffi.nullptr, + userInfo?.pointer ?? ffi.nullptr); + return NSException.castFromPointer(_ret, retain: true, release: true); } - NSAttributedString initWithFormat_options_locale_( - NSAttributedString format, int options, NSLocale? locale) { - final _ret = _lib._objc_msgSend_728( - _id, - _lib._sel_initWithFormat_options_locale_1, - format._id, - options, - locale?._id ?? ffi.nullptr); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + NSException initWithName_reason_userInfo_(objc.NSString aName, + objc.NSString? aReason, objc.NSDictionary? aUserInfo) { + final _ret = _objc_msgSend_200( + this.pointer, + _sel_initWithName_reason_userInfo_, + aName.pointer, + aReason?.pointer ?? ffi.nullptr, + aUserInfo?.pointer ?? ffi.nullptr); + return NSException.castFromPointer(_ret, retain: true, release: true); } - NSAttributedString initWithFormat_options_locale_arguments_( - NSAttributedString format, - int options, - NSLocale? locale, - ffi.Pointer<__va_list_tag> arguments) { - final _ret = _lib._objc_msgSend_729( - _id, - _lib._sel_initWithFormat_options_locale_arguments_1, - format._id, - options, - locale?._id ?? ffi.nullptr, - arguments); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + objc.NSString get name { + final _ret = _objc_msgSend_12(this.pointer, _sel_name); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSAttributedString localizedAttributedStringWithFormat_( - AVFAudio _lib, NSAttributedString format) { - final _ret = _lib._objc_msgSend_718(_lib._class_NSAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_1, format._id); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + objc.NSString? get reason { + final _ret = _objc_msgSend_13(this.pointer, _sel_reason); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSAttributedString localizedAttributedStringWithFormat_options_( - AVFAudio _lib, NSAttributedString format, int options) { - final _ret = _lib._objc_msgSend_730( - _lib._class_NSAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_options_1, - format._id, - options); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + objc.NSDictionary? get userInfo { + final _ret = _objc_msgSend_65(this.pointer, _sel_userInfo); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - NSAttributedString initWithFormat_options_locale_context_( - NSAttributedString format, - int options, - NSLocale? locale, - NSDictionary context) { - final _ret = _lib._objc_msgSend_731( - _id, - _lib._sel_initWithFormat_options_locale_context_1, - format._id, - options, - locale?._id ?? ffi.nullptr, - context._id); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + objc.NSArray get callStackReturnAddresses { + final _ret = _objc_msgSend_6(this.pointer, _sel_callStackReturnAddresses); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSAttributedString initWithFormat_options_locale_context_arguments_( - NSAttributedString format, - int options, - NSLocale? locale, - NSDictionary context, - ffi.Pointer<__va_list_tag> arguments) { - final _ret = _lib._objc_msgSend_732( - _id, - _lib._sel_initWithFormat_options_locale_context_arguments_1, - format._id, - options, - locale?._id ?? ffi.nullptr, - context._id, - arguments); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + objc.NSArray get callStackSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_callStackSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSAttributedString localizedAttributedStringWithFormat_context_( - AVFAudio _lib, NSAttributedString format, NSDictionary context) { - final _ret = _lib._objc_msgSend_733( - _lib._class_NSAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_context_1, - format._id, - context._id); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + void raise() { + _objc_msgSend_82(this.pointer, _sel_raise); } - static NSAttributedString - localizedAttributedStringWithFormat_options_context_(AVFAudio _lib, - NSAttributedString format, int options, NSDictionary context) { - final _ret = _lib._objc_msgSend_734( - _lib._class_NSAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_options_context_1, - format._id, - options, - context._id); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + static void raise_format_(objc.NSString name, objc.NSString format) { + _objc_msgSend_201( + _class_NSException, _sel_raise_format_, name.pointer, format.pointer); } - NSAttributedString attributedStringByInflectingString() { - final _ret = _lib._objc_msgSend_735( - _id, _lib._sel_attributedStringByInflectingString1); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + static void raise_format_arguments_(objc.NSString name, objc.NSString format, + ffi.Pointer<__va_list_tag> argList) { + _objc_msgSend_202(_class_NSException, _sel_raise_format_arguments_, + name.pointer, format.pointer, argList); } @override - NSAttributedString init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + NSException init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSException.castFromPointer(_ret, retain: true, release: true); } - static NSAttributedString new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSAttributedString1, _lib._sel_new1); - return NSAttributedString._(_ret, _lib, retain: false, release: true); + static NSException new1() { + final _ret = _objc_msgSend_40(_class_NSException, _sel_new); + return NSException.castFromPointer(_ret, retain: false, release: true); } - static NSAttributedString allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSAttributedString1, _lib._sel_allocWithZone_1, zone); - return NSAttributedString._(_ret, _lib, retain: false, release: true); + static NSException allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSException, _sel_allocWithZone_, zone); + return NSException.castFromPointer(_ret, retain: false, release: true); } - static NSAttributedString alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSAttributedString1, _lib._sel_alloc1); - return NSAttributedString._(_ret, _lib, retain: false, release: true); + static NSException alloc() { + final _ret = _objc_msgSend_40(_class_NSException, _sel_alloc); + return NSException.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSAttributedString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSException, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSAttributedString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSException, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSAttributedString1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSException, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSAttributedString1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSException, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSAttributedString1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSException, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSAttributedString1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSException, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSAttributedString1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSAttributedString1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSAttributedString1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSAttributedStringEnumerationOptions { - static const int NSAttributedStringEnumerationReverse = 2; - static const int - NSAttributedStringEnumerationLongestEffectiveRangeNotRequired = 1048576; -} - -void _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, _NSRange, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistry = , _NSRange, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_registerClosure( - void Function(ffi.Pointer, _NSRange, ffi.Pointer) - fn) { - final id = - ++_ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSException, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSException, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSException, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSException = objc.getClass("NSException"); +late final _sel_exceptionWithName_reason_userInfo_ = + objc.registerName("exceptionWithName:reason:userInfo:"); +final _objc_msgSend_199 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithName_reason_userInfo_ = + objc.registerName("initWithName:reason:userInfo:"); +final _objc_msgSend_200 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_reason = objc.registerName("reason"); +late final _sel_userInfo = objc.registerName("userInfo"); +late final _sel_callStackReturnAddresses = + objc.registerName("callStackReturnAddresses"); +late final _sel_callStackSymbols = objc.registerName("callStackSymbols"); +late final _sel_raise = objc.registerName("raise"); +late final _sel_raise_format_ = objc.registerName("raise:format:"); +final _objc_msgSend_201 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_raise_format_arguments_ = + objc.registerName("raise:format:arguments:"); +final _objc_msgSend_202 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>(); + +class NSRunLoop extends objc.NSObject { + NSRunLoop._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); -void _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); + /// Constructs a [NSRunLoop] that points to the same underlying object as [other]. + NSRunLoop.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); -class ObjCBlock_ffiVoid_NSDictionary_NSRange_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSDictionary_NSRange_bool._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + /// Constructs a [NSRunLoop] that wraps the given raw object pointer. + NSRunLoop.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSDictionary_NSRange_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSDictionary_NSRange_bool._(pointer, lib, - retain: retain, release: release); + /// Returns whether [obj] is an instance of [NSRunLoop]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSRunLoop); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSDictionary_NSRange_bool.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSDictionary_NSRange_bool.fromFunction(AVFAudio lib, - void Function(NSDictionary, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2) => - fn(NSDictionary._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSDictionary_NSRange_bool.listener(AVFAudio lib, - void Function(NSDictionary, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2) => - fn(NSDictionary._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - _NSRange, ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSDictionary arg0, _NSRange arg1, ffi.Pointer arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>()(_id, arg0._id, arg1, arg2); -} - -void _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, _NSRange, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureRegistry = , _NSRange, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_registerClosure( - void Function(ffi.Pointer, _NSRange, ffi.Pointer) - fn) { - final id = ++_ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); - -class ObjCBlock_ffiVoid_ObjCObject_NSRange_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ObjCObject_NSRange_bool._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ObjCObject_NSRange_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ObjCObject_NSRange_bool._(pointer, lib, - retain: retain, release: release); + static NSRunLoop getCurrentRunLoop() { + final _ret = _objc_msgSend_203(_class_NSRunLoop, _sel_currentRunLoop); + return NSRunLoop.castFromPointer(_ret, retain: true, release: true); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_NSRange_bool.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_NSRange_bool.fromFunction(AVFAudio lib, - void Function(NSObject?, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2) => - fn(arg0.address == 0 ? null : NSObject._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ObjCObject_NSRange_bool.listener(AVFAudio lib, - void Function(NSObject?, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2) => - fn(arg0.address == 0 ? null : NSObject._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - _NSRange, ffi.Pointer)>? _dartFuncListenerTrampoline; + static NSRunLoop getMainRunLoop() { + final _ret = _objc_msgSend_203(_class_NSRunLoop, _sel_mainRunLoop); + return NSRunLoop.castFromPointer(_ret, retain: true, release: true); + } - void call(NSObject? arg0, _NSRange arg1, ffi.Pointer arg2) => _id - .ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - _NSRange, ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1, arg2); -} + objc.NSString? get currentMode { + final _ret = _objc_msgSend_13(this.pointer, _sel_currentMode); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); + } -class NSAttributedStringMarkdownParsingOptions extends NSObject { - NSAttributedStringMarkdownParsingOptions._( - ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + ffi.Pointer<__CFRunLoop> getCFRunLoop() { + return _objc_msgSend_204(this.pointer, _sel_getCFRunLoop); + } - /// Returns a [NSAttributedStringMarkdownParsingOptions] that points to the same underlying object as [other]. - static NSAttributedStringMarkdownParsingOptions - castFrom(T other) { - return NSAttributedStringMarkdownParsingOptions._(other._id, other._lib, - retain: true, release: true); + void addTimer_forMode_(NSTimer timer, objc.NSString mode) { + _objc_msgSend_213( + this.pointer, _sel_addTimer_forMode_, timer.pointer, mode.pointer); } - /// Returns a [NSAttributedStringMarkdownParsingOptions] that wraps the given raw object pointer. - static NSAttributedStringMarkdownParsingOptions castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSAttributedStringMarkdownParsingOptions._(other, lib, - retain: retain, release: release); + void addPort_forMode_(NSPort aPort, objc.NSString mode) { + _objc_msgSend_244( + this.pointer, _sel_addPort_forMode_, aPort.pointer, mode.pointer); } - /// Returns whether [obj] is an instance of [NSAttributedStringMarkdownParsingOptions]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSAttributedStringMarkdownParsingOptions1); + void removePort_forMode_(NSPort aPort, objc.NSString mode) { + _objc_msgSend_244( + this.pointer, _sel_removePort_forMode_, aPort.pointer, mode.pointer); } - @override - NSAttributedStringMarkdownParsingOptions init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSAttributedStringMarkdownParsingOptions._(_ret, _lib, - retain: true, release: true); + objc.NSDate? limitDateForMode_(objc.NSString mode) { + final _ret = + _objc_msgSend_93(this.pointer, _sel_limitDateForMode_, mode.pointer); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - bool get allowsExtendedAttributes { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsExtendedAttributes1); + void acceptInputForMode_beforeDate_( + objc.NSString mode, objc.NSDate limitDate) { + _objc_msgSend_245(this.pointer, _sel_acceptInputForMode_beforeDate_, + mode.pointer, limitDate.pointer); } - set allowsExtendedAttributes(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAllowsExtendedAttributes_1, value); + void run() { + _objc_msgSend_82(this.pointer, _sel_run); } - int get interpretedSyntax { - return _lib._objc_msgSend_721(_id, _lib._sel_interpretedSyntax1); + void runUntilDate_(objc.NSDate limitDate) { + _objc_msgSend_246(this.pointer, _sel_runUntilDate_, limitDate.pointer); } - set interpretedSyntax(int value) { - return _lib._objc_msgSend_722(_id, _lib._sel_setInterpretedSyntax_1, value); + bool runMode_beforeDate_(objc.NSString mode, objc.NSDate limitDate) { + return _objc_msgSend_247(this.pointer, _sel_runMode_beforeDate_, + mode.pointer, limitDate.pointer); } - int get failurePolicy { - return _lib._objc_msgSend_723(_id, _lib._sel_failurePolicy1); + void configureAsServer() { + _objc_msgSend_82(this.pointer, _sel_configureAsServer); } - set failurePolicy(int value) { - return _lib._objc_msgSend_724(_id, _lib._sel_setFailurePolicy_1, value); + void performInModes_block_(objc.NSArray modes, ObjCBlock_ffiVoid block) { + _objc_msgSend_248( + this.pointer, _sel_performInModes_block_, modes.pointer, block.pointer); } - NSString? get languageCode { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_languageCode1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + void performBlock_(ObjCBlock_ffiVoid block) { + _objc_msgSend_249(this.pointer, _sel_performBlock_, block.pointer); } - set languageCode(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setLanguageCode_1, value?._id ?? ffi.nullptr); + void performSelector_target_argument_order_modes_( + ffi.Pointer aSelector, + objc.NSObject target, + objc.NSObject? arg, + int order, + objc.NSArray modes) { + _objc_msgSend_250( + this.pointer, + _sel_performSelector_target_argument_order_modes_, + aSelector, + target.pointer, + arg?.pointer ?? ffi.nullptr, + order, + modes.pointer); } - bool get appliesSourcePositionAttributes { - return _lib._objc_msgSend_12( - _id, _lib._sel_appliesSourcePositionAttributes1); + void cancelPerformSelector_target_argument_( + ffi.Pointer aSelector, + objc.NSObject target, + objc.NSObject? arg) { + _objc_msgSend_251(this.pointer, _sel_cancelPerformSelector_target_argument_, + aSelector, target.pointer, arg?.pointer ?? ffi.nullptr); } - set appliesSourcePositionAttributes(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAppliesSourcePositionAttributes_1, value); + void cancelPerformSelectorsWithTarget_(objc.NSObject target) { + _objc_msgSend_49( + this.pointer, _sel_cancelPerformSelectorsWithTarget_, target.pointer); } - static NSAttributedStringMarkdownParsingOptions new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSAttributedStringMarkdownParsingOptions1, _lib._sel_new1); - return NSAttributedStringMarkdownParsingOptions._(_ret, _lib, - retain: false, release: true); + @override + NSRunLoop init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSRunLoop.castFromPointer(_ret, retain: true, release: true); } - static NSAttributedStringMarkdownParsingOptions allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_allocWithZone_1, - zone); - return NSAttributedStringMarkdownParsingOptions._(_ret, _lib, - retain: false, release: true); + static NSRunLoop new1() { + final _ret = _objc_msgSend_40(_class_NSRunLoop, _sel_new); + return NSRunLoop.castFromPointer(_ret, retain: false, release: true); } - static NSAttributedStringMarkdownParsingOptions alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_alloc1); - return NSAttributedStringMarkdownParsingOptions._(_ret, _lib, - retain: false, release: true); + static NSRunLoop allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSRunLoop, _sel_allocWithZone_, zone); + return NSRunLoop.castFromPointer(_ret, retain: false, release: true); + } + + static NSRunLoop alloc() { + final _ret = _objc_msgSend_40(_class_NSRunLoop, _sel_alloc); + return NSRunLoop.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSRunLoop, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSRunLoop, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSRunLoop, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSRunLoop, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSRunLoop, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_automaticallyNotifiesObserversForKey_1, - key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSRunLoop, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSRunLoop, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSRunLoop, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSRunLoop, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -abstract class NSAttributedStringMarkdownInterpretedSyntax { - static const int NSAttributedStringMarkdownInterpretedSyntaxFull = 0; - static const int NSAttributedStringMarkdownInterpretedSyntaxInlineOnly = 1; - static const int - NSAttributedStringMarkdownInterpretedSyntaxInlineOnlyPreservingWhitespace = - 2; -} +late final _class_NSRunLoop = objc.getClass("NSRunLoop"); +late final _sel_currentRunLoop = objc.registerName("currentRunLoop"); +final _objc_msgSend_203 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_mainRunLoop = objc.registerName("mainRunLoop"); +late final _sel_currentMode = objc.registerName("currentMode"); -abstract class NSAttributedStringMarkdownParsingFailurePolicy { - static const int NSAttributedStringMarkdownParsingFailureReturnError = 0; - static const int - NSAttributedStringMarkdownParsingFailureReturnPartiallyParsedIfPossible = - 1; -} +final class __CFRunLoop extends ffi.Opaque {} -abstract class NSAttributedStringFormattingOptions { - static const int - NSAttributedStringFormattingInsertArgumentAttributesWithoutMerging = 1; - static const int NSAttributedStringFormattingApplyReplacementIndexAttribute = - 2; -} +late final _sel_getCFRunLoop = objc.registerName("getCFRunLoop"); +final _objc_msgSend_204 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer<__CFRunLoop> Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer<__CFRunLoop> Function( + ffi.Pointer, ffi.Pointer)>(); + +class NSTimer extends objc.NSObject { + NSTimer._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); -class NSMutableAttributedString extends NSAttributedString { - NSMutableAttributedString._(ffi.Pointer id, AVFAudio lib, + /// Constructs a [NSTimer] that points to the same underlying object as [other]. + NSTimer.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSTimer] that wraps the given raw object pointer. + NSTimer.castFromPointer(ffi.Pointer other, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : this._(other, retain: retain, release: release); - /// Returns a [NSMutableAttributedString] that points to the same underlying object as [other]. - static NSMutableAttributedString castFrom(T other) { - return NSMutableAttributedString._(other._id, other._lib, - retain: true, release: true); + /// Returns whether [obj] is an instance of [NSTimer]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSTimer); } - /// Returns a [NSMutableAttributedString] that wraps the given raw object pointer. - static NSMutableAttributedString castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableAttributedString._(other, lib, - retain: retain, release: release); + static NSTimer timerWithTimeInterval_invocation_repeats_( + double ti, objc.NSInvocation invocation, bool yesOrNo) { + final _ret = _objc_msgSend_205( + _class_NSTimer, + _sel_timerWithTimeInterval_invocation_repeats_, + ti, + invocation.pointer, + yesOrNo); + return NSTimer.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSMutableAttributedString]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMutableAttributedString1); + static NSTimer scheduledTimerWithTimeInterval_invocation_repeats_( + double ti, objc.NSInvocation invocation, bool yesOrNo) { + final _ret = _objc_msgSend_205( + _class_NSTimer, + _sel_scheduledTimerWithTimeInterval_invocation_repeats_, + ti, + invocation.pointer, + yesOrNo); + return NSTimer.castFromPointer(_ret, retain: true, release: true); } - void replaceCharactersInRange_withString_(_NSRange range, NSString str) { - _lib._objc_msgSend_689( - _id, _lib._sel_replaceCharactersInRange_withString_1, range, str._id); + static NSTimer timerWithTimeInterval_target_selector_userInfo_repeats_( + double ti, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? userInfo, + bool yesOrNo) { + final _ret = _objc_msgSend_206( + _class_NSTimer, + _sel_timerWithTimeInterval_target_selector_userInfo_repeats_, + ti, + aTarget.pointer, + aSelector, + userInfo?.pointer ?? ffi.nullptr, + yesOrNo); + return NSTimer.castFromPointer(_ret, retain: true, release: true); } - void setAttributes_range_(NSDictionary? attrs, _NSRange range) { - _lib._objc_msgSend_739( - _id, _lib._sel_setAttributes_range_1, attrs?._id ?? ffi.nullptr, range); + static NSTimer + scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_( + double ti, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? userInfo, + bool yesOrNo) { + final _ret = _objc_msgSend_206( + _class_NSTimer, + _sel_scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_, + ti, + aTarget.pointer, + aSelector, + userInfo?.pointer ?? ffi.nullptr, + yesOrNo); + return NSTimer.castFromPointer(_ret, retain: true, release: true); } - NSMutableString get mutableString { - final _ret = _lib._objc_msgSend_740(_id, _lib._sel_mutableString1); - return NSMutableString._(_ret, _lib, retain: true, release: true); + static NSTimer timerWithTimeInterval_repeats_block_( + double interval, bool repeats, ObjCBlock_ffiVoid_NSTimer block) { + final _ret = _objc_msgSend_207( + _class_NSTimer, + _sel_timerWithTimeInterval_repeats_block_, + interval, + repeats, + block.pointer); + return NSTimer.castFromPointer(_ret, retain: true, release: true); } - void addAttribute_value_range_( - NSString name, NSObject value, _NSRange range) { - _lib._objc_msgSend_741( - _id, _lib._sel_addAttribute_value_range_1, name._id, value._id, range); + static NSTimer scheduledTimerWithTimeInterval_repeats_block_( + double interval, bool repeats, ObjCBlock_ffiVoid_NSTimer block) { + final _ret = _objc_msgSend_207( + _class_NSTimer, + _sel_scheduledTimerWithTimeInterval_repeats_block_, + interval, + repeats, + block.pointer); + return NSTimer.castFromPointer(_ret, retain: true, release: true); } - void addAttributes_range_(NSDictionary attrs, _NSRange range) { - _lib._objc_msgSend_742( - _id, _lib._sel_addAttributes_range_1, attrs._id, range); + NSTimer initWithFireDate_interval_repeats_block_(objc.NSDate date, + double interval, bool repeats, ObjCBlock_ffiVoid_NSTimer block) { + final _ret = _objc_msgSend_208( + this.pointer, + _sel_initWithFireDate_interval_repeats_block_, + date.pointer, + interval, + repeats, + block.pointer); + return NSTimer.castFromPointer(_ret, retain: true, release: true); } - void removeAttribute_range_(NSString name, _NSRange range) { - _lib._objc_msgSend_743( - _id, _lib._sel_removeAttribute_range_1, name._id, range); + NSTimer initWithFireDate_interval_target_selector_userInfo_repeats_( + objc.NSDate date, + double ti, + objc.NSObject t, + ffi.Pointer s, + objc.NSObject? ui, + bool rep) { + final _ret = _objc_msgSend_209( + this.pointer, + _sel_initWithFireDate_interval_target_selector_userInfo_repeats_, + date.pointer, + ti, + t.pointer, + s, + ui?.pointer ?? ffi.nullptr, + rep); + return NSTimer.castFromPointer(_ret, retain: true, release: true); } - void replaceCharactersInRange_withAttributedString_( - _NSRange range, NSAttributedString attrString) { - _lib._objc_msgSend_744( - _id, - _lib._sel_replaceCharactersInRange_withAttributedString_1, - range, - attrString._id); + void fire() { + _objc_msgSend_82(this.pointer, _sel_fire); } - void insertAttributedString_atIndex_(NSAttributedString attrString, int loc) { - _lib._objc_msgSend_745( - _id, _lib._sel_insertAttributedString_atIndex_1, attrString._id, loc); + objc.NSDate get fireDate { + final _ret = _objc_msgSend_210(this.pointer, _sel_fireDate); + return objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - void appendAttributedString_(NSAttributedString attrString) { - _lib._objc_msgSend_746( - _id, _lib._sel_appendAttributedString_1, attrString._id); + set fireDate(objc.NSDate value) { + return _objc_msgSend_211(this.pointer, _sel_setFireDate_, value.pointer); } - void deleteCharactersInRange_(_NSRange range) { - _lib._objc_msgSend_476(_id, _lib._sel_deleteCharactersInRange_1, range); + double get timeInterval { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_timeInterval) + : _objc_msgSend_115(this.pointer, _sel_timeInterval); } - void setAttributedString_(NSAttributedString attrString) { - _lib._objc_msgSend_746( - _id, _lib._sel_setAttributedString_1, attrString._id); + double get tolerance { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_tolerance) + : _objc_msgSend_115(this.pointer, _sel_tolerance); } - void beginEditing() { - _lib._objc_msgSend_1(_id, _lib._sel_beginEditing1); + set tolerance(double value) { + return _objc_msgSend_212(this.pointer, _sel_setTolerance_, value); } - void endEditing() { - _lib._objc_msgSend_1(_id, _lib._sel_endEditing1); + void invalidate() { + _objc_msgSend_82(this.pointer, _sel_invalidate); } - void appendLocalizedFormat_(NSAttributedString format) { - _lib._objc_msgSend_746(_id, _lib._sel_appendLocalizedFormat_1, format._id); + bool get valid { + return _objc_msgSend_7(this.pointer, _sel_isValid); } - @override - NSMutableAttributedString initWithString_(NSString str) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithString_1, str._id); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + objc.NSObject? get userInfo { + final _ret = _objc_msgSend_66(this.pointer, _sel_userInfo); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } @override - NSMutableAttributedString initWithString_attributes_( - NSString str, NSDictionary? attrs) { - final _ret = _lib._objc_msgSend_717( - _id, - _lib._sel_initWithString_attributes_1, - str._id, - attrs?._id ?? ffi.nullptr); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + NSTimer init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSTimer.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableAttributedString initWithAttributedString_( - NSAttributedString attrStr) { - final _ret = _lib._objc_msgSend_718( - _id, _lib._sel_initWithAttributedString_1, attrStr._id); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + static NSTimer new1() { + final _ret = _objc_msgSend_40(_class_NSTimer, _sel_new); + return NSTimer.castFromPointer(_ret, retain: false, release: true); } - @override - NSMutableAttributedString? - initWithContentsOfMarkdownFileAtURL_options_baseURL_error_( - NSURL markdownFile, - NSAttributedStringMarkdownParsingOptions? options, - NSURL? baseURL, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_725( - _id, - _lib._sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_1, - markdownFile._id, - options?._id ?? ffi.nullptr, - baseURL?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + static NSTimer allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSTimer, _sel_allocWithZone_, zone); + return NSTimer.castFromPointer(_ret, retain: false, release: true); } - @override - NSMutableAttributedString? initWithMarkdown_options_baseURL_error_( - NSData markdown, - NSAttributedStringMarkdownParsingOptions? options, - NSURL? baseURL, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_726( - _id, - _lib._sel_initWithMarkdown_options_baseURL_error_1, - markdown._id, - options?._id ?? ffi.nullptr, - baseURL?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + static NSTimer alloc() { + final _ret = _objc_msgSend_40(_class_NSTimer, _sel_alloc); + return NSTimer.castFromPointer(_ret, retain: false, release: true); } - @override - NSMutableAttributedString? initWithMarkdownString_options_baseURL_error_( - NSString markdownString, - NSAttributedStringMarkdownParsingOptions? options, - NSURL? baseURL, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_727( - _id, - _lib._sel_initWithMarkdownString_options_baseURL_error_1, - markdownString._id, - options?._id ?? ffi.nullptr, - baseURL?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSTimer, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - @override - NSMutableAttributedString initWithFormat_options_locale_( - NSAttributedString format, int options, NSLocale? locale) { - final _ret = _lib._objc_msgSend_728( - _id, - _lib._sel_initWithFormat_options_locale_1, - format._id, - options, - locale?._id ?? ffi.nullptr); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSTimer, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - @override - NSMutableAttributedString initWithFormat_options_locale_arguments_( - NSAttributedString format, - int options, - NSLocale? locale, - ffi.Pointer<__va_list_tag> arguments) { - final _ret = _lib._objc_msgSend_729( - _id, - _lib._sel_initWithFormat_options_locale_arguments_1, - format._id, - options, - locale?._id ?? ffi.nullptr, - arguments); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSTimer, _sel_accessInstanceVariablesDirectly); } - static NSMutableAttributedString localizedAttributedStringWithFormat_( - AVFAudio _lib, NSAttributedString format) { - final _ret = _lib._objc_msgSend_718(_lib._class_NSMutableAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_1, format._id); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSTimer, _sel_useStoredAccessor); } - static NSMutableAttributedString localizedAttributedStringWithFormat_options_( - AVFAudio _lib, NSAttributedString format, int options) { - final _ret = _lib._objc_msgSend_730( - _lib._class_NSMutableAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_options_1, - format._id, - options); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSTimer, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableAttributedString initWithFormat_options_locale_context_( - NSAttributedString format, - int options, - NSLocale? locale, - NSDictionary context) { - final _ret = _lib._objc_msgSend_731( - _id, - _lib._sel_initWithFormat_options_locale_context_1, - format._id, - options, - locale?._id ?? ffi.nullptr, - context._id); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSTimer, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - @override - NSMutableAttributedString initWithFormat_options_locale_context_arguments_( - NSAttributedString format, - int options, - NSLocale? locale, - NSDictionary context, - ffi.Pointer<__va_list_tag> arguments) { - final _ret = _lib._objc_msgSend_732( - _id, - _lib._sel_initWithFormat_options_locale_context_arguments_1, - format._id, - options, - locale?._id ?? ffi.nullptr, - context._id, - arguments); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSTimer, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSTimer, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40(_class_NSTimer, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSTimer = objc.getClass("NSTimer"); +late final _sel_timerWithTimeInterval_invocation_repeats_ = + objc.registerName("timerWithTimeInterval:invocation:repeats:"); +final _objc_msgSend_205 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer, + bool)>(); +late final _sel_scheduledTimerWithTimeInterval_invocation_repeats_ = + objc.registerName("scheduledTimerWithTimeInterval:invocation:repeats:"); +late final _sel_timerWithTimeInterval_target_selector_userInfo_repeats_ = objc + .registerName("timerWithTimeInterval:target:selector:userInfo:repeats:"); +final _objc_msgSend_206 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_ = + objc.registerName( + "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:"); +void _ObjCBlock_ffiVoid_NSTimer_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSTimer_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSTimer_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSTimer_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSTimer_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSTimer_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSTimer_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSTimer_closureRegistry[block.ref.target.address]!(arg0); + +class ObjCBlock_ffiVoid_NSTimer extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSTimer._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSTimer castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSTimer._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSTimer.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSTimer_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSTimer.fromFunction(void Function(NSTimer) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSTimer_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSTimer_registerClosure( + (ffi.Pointer arg0) => fn( + NSTimer.castFromPointer(arg0, + retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSTimer.listener(void Function(NSTimer) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSTimer_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSTimer_registerClosure( + (ffi.Pointer arg0) => fn( + NSTimer.castFromPointer(arg0, + retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; + + void call(NSTimer arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(pointer, arg0.pointer); +} + +late final _sel_timerWithTimeInterval_repeats_block_ = + objc.registerName("timerWithTimeInterval:repeats:block:"); +final _objc_msgSend_207 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Bool, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + double, + bool, + ffi.Pointer)>(); +late final _sel_scheduledTimerWithTimeInterval_repeats_block_ = + objc.registerName("scheduledTimerWithTimeInterval:repeats:block:"); +late final _sel_initWithFireDate_interval_repeats_block_ = + objc.registerName("initWithFireDate:interval:repeats:block:"); +final _objc_msgSend_208 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Bool, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + double, + bool, + ffi.Pointer)>(); +late final _sel_initWithFireDate_interval_target_selector_userInfo_repeats_ = + objc.registerName( + "initWithFireDate:interval:target:selector:userInfo:repeats:"); +final _objc_msgSend_209 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_fire = objc.registerName("fire"); +late final _sel_fireDate = objc.registerName("fireDate"); +final _objc_msgSend_210 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setFireDate_ = objc.registerName("setFireDate:"); +final _objc_msgSend_211 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_timeInterval = objc.registerName("timeInterval"); +late final _sel_tolerance = objc.registerName("tolerance"); +late final _sel_setTolerance_ = objc.registerName("setTolerance:"); +final _objc_msgSend_212 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Double)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, double)>(); +late final _sel_invalidate = objc.registerName("invalidate"); +late final _sel_isValid = objc.registerName("isValid"); +late final _sel_addTimer_forMode_ = objc.registerName("addTimer:forMode:"); +final _objc_msgSend_213 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSPort extends objc.NSObject { + NSPort._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSPort] that points to the same underlying object as [other]. + NSPort.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSPort] that wraps the given raw object pointer. + NSPort.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSPort]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSPort); + } + + static NSPort port() { + final _ret = _objc_msgSend_214(_class_NSPort, _sel_port); + return NSPort.castFromPointer(_ret, retain: true, release: true); + } + + void invalidate() { + _objc_msgSend_82(this.pointer, _sel_invalidate); + } + + bool get valid { + return _objc_msgSend_7(this.pointer, _sel_isValid); } - static NSMutableAttributedString localizedAttributedStringWithFormat_context_( - AVFAudio _lib, NSAttributedString format, NSDictionary context) { - final _ret = _lib._objc_msgSend_733( - _lib._class_NSMutableAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_context_1, - format._id, - context._id); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + void setDelegate_(objc.NSObject? anObject) { + _objc_msgSend_215( + this.pointer, _sel_setDelegate_, anObject?.pointer ?? ffi.nullptr); } - static NSMutableAttributedString - localizedAttributedStringWithFormat_options_context_(AVFAudio _lib, - NSAttributedString format, int options, NSDictionary context) { - final _ret = _lib._objc_msgSend_734( - _lib._class_NSMutableAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_options_context_1, - format._id, - options, - context._id); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + objc.NSObject? delegate() { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableAttributedString init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + void scheduleInRunLoop_forMode_(NSRunLoop runLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_scheduleInRunLoop_forMode_, + runLoop.pointer, mode.pointer); } - static NSMutableAttributedString new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableAttributedString1, _lib._sel_new1); - return NSMutableAttributedString._(_ret, _lib, - retain: false, release: true); + void removeFromRunLoop_forMode_(NSRunLoop runLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_removeFromRunLoop_forMode_, + runLoop.pointer, mode.pointer); } - static NSMutableAttributedString allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSMutableAttributedString1, - _lib._sel_allocWithZone_1, zone); - return NSMutableAttributedString._(_ret, _lib, - retain: false, release: true); + int get reservedSpaceLength { + return _objc_msgSend_29(this.pointer, _sel_reservedSpaceLength); } - static NSMutableAttributedString alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableAttributedString1, _lib._sel_alloc1); - return NSMutableAttributedString._(_ret, _lib, - retain: false, release: true); + bool sendBeforeDate_components_from_reserved_( + objc.NSDate limitDate, + objc.NSMutableArray? components, + NSPort? receivePort, + int headerSpaceReserved) { + return _objc_msgSend_217( + this.pointer, + _sel_sendBeforeDate_components_from_reserved_, + limitDate.pointer, + components?.pointer ?? ffi.nullptr, + receivePort?.pointer ?? ffi.nullptr, + headerSpaceReserved); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableAttributedString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + bool sendBeforeDate_msgid_components_from_reserved_( + objc.NSDate limitDate, + int msgID, + objc.NSMutableArray? components, + NSPort? receivePort, + int headerSpaceReserved) { + return _objc_msgSend_218( + this.pointer, + _sel_sendBeforeDate_msgid_components_from_reserved_, + limitDate.pointer, + msgID, + components?.pointer ?? ffi.nullptr, + receivePort?.pointer ?? ffi.nullptr, + headerSpaceReserved); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableAttributedString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + void addConnection_toRunLoop_forMode_( + NSConnection conn, NSRunLoop runLoop, objc.NSString mode) { + _objc_msgSend_243(this.pointer, _sel_addConnection_toRunLoop_forMode_, + conn.pointer, runLoop.pointer, mode.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMutableAttributedString1, - _lib._sel_accessInstanceVariablesDirectly1); + void removeConnection_fromRunLoop_forMode_( + NSConnection conn, NSRunLoop runLoop, objc.NSString mode) { + _objc_msgSend_243(this.pointer, _sel_removeConnection_fromRunLoop_forMode_, + conn.pointer, runLoop.pointer, mode.pointer); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableAttributedString1, _lib._sel_useStoredAccessor1); + @override + NSPort init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSPort.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableAttributedString1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static NSPort new1() { + final _ret = _objc_msgSend_40(_class_NSPort, _sel_new); + return NSPort.castFromPointer(_ret, retain: false, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableAttributedString1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static NSPort allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSPort, _sel_allocWithZone_, zone); + return NSPort.castFromPointer(_ret, retain: false, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableAttributedString1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static NSPort alloc() { + final _ret = _objc_msgSend_40(_class_NSPort, _sel_alloc); + return NSPort.castFromPointer(_ret, retain: false, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSMutableAttributedString1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSPort, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSMutableAttributedString1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSPort, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } -} -class NSDateFormatter extends NSFormatter { - NSDateFormatter._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7(_class_NSPort, _sel_accessInstanceVariablesDirectly); + } - /// Returns a [NSDateFormatter] that points to the same underlying object as [other]. - static NSDateFormatter castFrom(T other) { - return NSDateFormatter._(other._id, other._lib, - retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSPort, _sel_useStoredAccessor); } - /// Returns a [NSDateFormatter] that wraps the given raw object pointer. - static NSDateFormatter castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSDateFormatter._(other, lib, retain: retain, release: release); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSPort, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSDateFormatter]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSDateFormatter1); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51( + _class_NSPort, _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - int get formattingContext { - return _lib._objc_msgSend_752(_id, _lib._sel_formattingContext1); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSPort, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSPort, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40(_class_NSPort, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSPort = objc.getClass("NSPort"); +late final _sel_port = objc.registerName("port"); +final _objc_msgSend_214 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDelegate_ = objc.registerName("setDelegate:"); +final _objc_msgSend_215 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_delegate = objc.registerName("delegate"); +late final _sel_scheduleInRunLoop_forMode_ = + objc.registerName("scheduleInRunLoop:forMode:"); +final _objc_msgSend_216 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeFromRunLoop_forMode_ = + objc.registerName("removeFromRunLoop:forMode:"); +late final _sel_reservedSpaceLength = objc.registerName("reservedSpaceLength"); +late final _sel_sendBeforeDate_components_from_reserved_ = + objc.registerName("sendBeforeDate:components:from:reserved:"); +final _objc_msgSend_217 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_sendBeforeDate_msgid_components_from_reserved_ = + objc.registerName("sendBeforeDate:msgid:components:from:reserved:"); +final _objc_msgSend_218 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + int)>(); + +class NSConnection extends objc.NSObject { + NSConnection._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSConnection] that points to the same underlying object as [other]. + NSConnection.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSConnection] that wraps the given raw object pointer. + NSConnection.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSConnection]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSConnection); } - set formattingContext(int value) { - return _lib._objc_msgSend_753(_id, _lib._sel_setFormattingContext_1, value); + objc.NSDictionary get statistics { + final _ret = _objc_msgSend_112(this.pointer, _sel_statistics); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - bool getObjectValue_forString_range_error_( - ffi.Pointer> obj, - NSString string, - ffi.Pointer<_NSRange> rangep, - ffi.Pointer> error) { - return _lib._objc_msgSend_754( - _id, - _lib._sel_getObjectValue_forString_range_error_1, - obj, - string._id, - rangep, - error); + static objc.NSArray allConnections() { + final _ret = _objc_msgSend_6(_class_NSConnection, _sel_allConnections); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString stringFromDate_(NSDate date) { - final _ret = - _lib._objc_msgSend_755(_id, _lib._sel_stringFromDate_1, date._id); - return NSString._(_ret, _lib, retain: true, release: true); + static NSConnection defaultConnection() { + final _ret = _objc_msgSend_219(_class_NSConnection, _sel_defaultConnection); + return NSConnection.castFromPointer(_ret, retain: true, release: true); } - NSDate? dateFromString_(NSString string) { - final _ret = - _lib._objc_msgSend_564(_id, _lib._sel_dateFromString_1, string._id); + static NSConnection? connectionWithRegisteredName_host_( + objc.NSString name, objc.NSString? hostName) { + final _ret = _objc_msgSend_220( + _class_NSConnection, + _sel_connectionWithRegisteredName_host_, + name.pointer, + hostName?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : NSConnection.castFromPointer(_ret, retain: true, release: true); } - static NSString localizedStringFromDate_dateStyle_timeStyle_( - AVFAudio _lib, NSDate date, int dstyle, int tstyle) { - final _ret = _lib._objc_msgSend_756( - _lib._class_NSDateFormatter1, - _lib._sel_localizedStringFromDate_dateStyle_timeStyle_1, - date._id, - dstyle, - tstyle); - return NSString._(_ret, _lib, retain: true, release: true); + static NSConnection? connectionWithRegisteredName_host_usingNameServer_( + objc.NSString name, objc.NSString? hostName, NSPortNameServer server) { + final _ret = _objc_msgSend_225( + _class_NSConnection, + _sel_connectionWithRegisteredName_host_usingNameServer_, + name.pointer, + hostName?.pointer ?? ffi.nullptr, + server.pointer); + return _ret.address == 0 + ? null + : NSConnection.castFromPointer(_ret, retain: true, release: true); } - static NSString? dateFormatFromTemplate_options_locale_( - AVFAudio _lib, NSString tmplate, int opts, NSLocale? locale) { - final _ret = _lib._objc_msgSend_757( - _lib._class_NSDateFormatter1, - _lib._sel_dateFormatFromTemplate_options_locale_1, - tmplate._id, - opts, - locale?._id ?? ffi.nullptr); + static NSDistantObject? rootProxyForConnectionWithRegisteredName_host_( + objc.NSString name, objc.NSString? hostName) { + final _ret = _objc_msgSend_233( + _class_NSConnection, + _sel_rootProxyForConnectionWithRegisteredName_host_, + name.pointer, + hostName?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSDistantObject.castFromPointer(_ret, retain: true, release: true); } - static int getDefaultFormatterBehavior(AVFAudio _lib) { - return _lib._objc_msgSend_758( - _lib._class_NSDateFormatter1, _lib._sel_defaultFormatterBehavior1); + static NSDistantObject? + rootProxyForConnectionWithRegisteredName_host_usingNameServer_( + objc.NSString name, + objc.NSString? hostName, + NSPortNameServer server) { + final _ret = _objc_msgSend_234( + _class_NSConnection, + _sel_rootProxyForConnectionWithRegisteredName_host_usingNameServer_, + name.pointer, + hostName?.pointer ?? ffi.nullptr, + server.pointer); + return _ret.address == 0 + ? null + : NSDistantObject.castFromPointer(_ret, retain: true, release: true); } - static void setDefaultFormatterBehavior(AVFAudio _lib, int value) { - return _lib._objc_msgSend_759(_lib._class_NSDateFormatter1, - _lib._sel_setDefaultFormatterBehavior_1, value); + static NSConnection? serviceConnectionWithName_rootObject_usingNameServer_( + objc.NSString name, objc.NSObject root, NSPortNameServer server) { + final _ret = _objc_msgSend_235( + _class_NSConnection, + _sel_serviceConnectionWithName_rootObject_usingNameServer_, + name.pointer, + root.pointer, + server.pointer); + return _ret.address == 0 + ? null + : NSConnection.castFromPointer(_ret, retain: true, release: true); } - void setLocalizedDateFormatFromTemplate_(NSString dateFormatTemplate) { - _lib._objc_msgSend_247(_id, _lib._sel_setLocalizedDateFormatFromTemplate_1, - dateFormatTemplate._id); + static NSConnection? serviceConnectionWithName_rootObject_( + objc.NSString name, objc.NSObject root) { + final _ret = _objc_msgSend_236(_class_NSConnection, + _sel_serviceConnectionWithName_rootObject_, name.pointer, root.pointer); + return _ret.address == 0 + ? null + : NSConnection.castFromPointer(_ret, retain: true, release: true); } - NSString get dateFormat { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_dateFormat1); - return NSString._(_ret, _lib, retain: true, release: true); + double get requestTimeout { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_requestTimeout) + : _objc_msgSend_115(this.pointer, _sel_requestTimeout); } - set dateFormat(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setDateFormat_1, value._id); + set requestTimeout(double value) { + return _objc_msgSend_212(this.pointer, _sel_setRequestTimeout_, value); } - int get dateStyle { - return _lib._objc_msgSend_760(_id, _lib._sel_dateStyle1); + double get replyTimeout { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_replyTimeout) + : _objc_msgSend_115(this.pointer, _sel_replyTimeout); } - set dateStyle(int value) { - return _lib._objc_msgSend_761(_id, _lib._sel_setDateStyle_1, value); + set replyTimeout(double value) { + return _objc_msgSend_212(this.pointer, _sel_setReplyTimeout_, value); } - int get timeStyle { - return _lib._objc_msgSend_760(_id, _lib._sel_timeStyle1); + objc.NSObject? get rootObject { + final _ret = _objc_msgSend_66(this.pointer, _sel_rootObject); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set timeStyle(int value) { - return _lib._objc_msgSend_761(_id, _lib._sel_setTimeStyle_1, value); + set rootObject(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setRootObject_, value?.pointer ?? ffi.nullptr); } - NSLocale get locale { - final _ret = _lib._objc_msgSend_197(_id, _lib._sel_locale1); - return NSLocale._(_ret, _lib, retain: true, release: true); + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set locale(NSLocale value) { - return _lib._objc_msgSend_762(_id, _lib._sel_setLocale_1, value._id); + set delegate(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDelegate_, value?.pointer ?? ffi.nullptr); } - bool get generatesCalendarDates { - return _lib._objc_msgSend_12(_id, _lib._sel_generatesCalendarDates1); + bool get independentConversationQueueing { + return _objc_msgSend_7(this.pointer, _sel_independentConversationQueueing); } - set generatesCalendarDates(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setGeneratesCalendarDates_1, value); + set independentConversationQueueing(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setIndependentConversationQueueing_, value); } - int get formatterBehavior { - return _lib._objc_msgSend_758(_id, _lib._sel_formatterBehavior1); + bool get valid { + return _objc_msgSend_7(this.pointer, _sel_isValid); } - set formatterBehavior(int value) { - return _lib._objc_msgSend_759(_id, _lib._sel_setFormatterBehavior_1, value); + NSDistantObject get rootProxy { + final _ret = _objc_msgSend_237(this.pointer, _sel_rootProxy); + return NSDistantObject.castFromPointer(_ret, retain: true, release: true); } - NSTimeZone get timeZone { - final _ret = _lib._objc_msgSend_179(_id, _lib._sel_timeZone1); - return NSTimeZone._(_ret, _lib, retain: true, release: true); + void invalidate() { + _objc_msgSend_82(this.pointer, _sel_invalidate); } - set timeZone(NSTimeZone value) { - return _lib._objc_msgSend_180(_id, _lib._sel_setTimeZone_1, value._id); + void addRequestMode_(objc.NSString rmode) { + _objc_msgSend_98(this.pointer, _sel_addRequestMode_, rmode.pointer); } - NSCalendar get calendar { - final _ret = _lib._objc_msgSend_763(_id, _lib._sel_calendar1); - return NSCalendar._(_ret, _lib, retain: true, release: true); + void removeRequestMode_(objc.NSString rmode) { + _objc_msgSend_98(this.pointer, _sel_removeRequestMode_, rmode.pointer); } - set calendar(NSCalendar value) { - return _lib._objc_msgSend_799(_id, _lib._sel_setCalendar_1, value._id); + objc.NSArray get requestModes { + final _ret = _objc_msgSend_6(this.pointer, _sel_requestModes); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool get lenient { - return _lib._objc_msgSend_12(_id, _lib._sel_isLenient1); + bool registerName_(objc.NSString? name) { + return _objc_msgSend_238( + this.pointer, _sel_registerName_, name?.pointer ?? ffi.nullptr); } - set lenient(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setLenient_1, value); + bool registerName_withNameServer_( + objc.NSString? name, NSPortNameServer server) { + return _objc_msgSend_239(this.pointer, _sel_registerName_withNameServer_, + name?.pointer ?? ffi.nullptr, server.pointer); } - NSDate? get twoDigitStartDate { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_twoDigitStartDate1); + static NSConnection? connectionWithReceivePort_sendPort_( + NSPort? receivePort, NSPort? sendPort) { + final _ret = _objc_msgSend_240( + _class_NSConnection, + _sel_connectionWithReceivePort_sendPort_, + receivePort?.pointer ?? ffi.nullptr, + sendPort?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : NSConnection.castFromPointer(_ret, retain: true, release: true); } - set twoDigitStartDate(NSDate? value) { - return _lib._objc_msgSend_800( - _id, _lib._sel_setTwoDigitStartDate_1, value?._id ?? ffi.nullptr); + static objc.NSObject? currentConversation() { + final _ret = + _objc_msgSend_66(_class_NSConnection, _sel_currentConversation); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSDate? get defaultDate { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_defaultDate1); + NSConnection? initWithReceivePort_sendPort_( + NSPort? receivePort, NSPort? sendPort) { + final _ret = _objc_msgSend_240( + this.pointer, + _sel_initWithReceivePort_sendPort_, + receivePort?.pointer ?? ffi.nullptr, + sendPort?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : NSConnection.castFromPointer(_ret, retain: true, release: true); } - set defaultDate(NSDate? value) { - return _lib._objc_msgSend_800( - _id, _lib._sel_setDefaultDate_1, value?._id ?? ffi.nullptr); + NSPort get sendPort { + final _ret = _objc_msgSend_214(this.pointer, _sel_sendPort); + return NSPort.castFromPointer(_ret, retain: true, release: true); } - NSArray get eraSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_eraSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + NSPort get receivePort { + final _ret = _objc_msgSend_214(this.pointer, _sel_receivePort); + return NSPort.castFromPointer(_ret, retain: true, release: true); } - set eraSymbols(NSArray value) { - return _lib._objc_msgSend_801(_id, _lib._sel_setEraSymbols_1, value._id); + void enableMultipleThreads() { + _objc_msgSend_82(this.pointer, _sel_enableMultipleThreads); } - NSArray get monthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_monthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool get multipleThreadsEnabled { + return _objc_msgSend_7(this.pointer, _sel_multipleThreadsEnabled); } - set monthSymbols(NSArray value) { - return _lib._objc_msgSend_801(_id, _lib._sel_setMonthSymbols_1, value._id); + void addRunLoop_(NSRunLoop runloop) { + _objc_msgSend_241(this.pointer, _sel_addRunLoop_, runloop.pointer); } - NSArray get shortMonthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_shortMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + void removeRunLoop_(NSRunLoop runloop) { + _objc_msgSend_241(this.pointer, _sel_removeRunLoop_, runloop.pointer); } - set shortMonthSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setShortMonthSymbols_1, value._id); + void runInNewThread() { + _objc_msgSend_82(this.pointer, _sel_runInNewThread); } - NSArray get weekdaySymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_weekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSArray get remoteObjects { + final _ret = _objc_msgSend_6(this.pointer, _sel_remoteObjects); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set weekdaySymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setWeekdaySymbols_1, value._id); + objc.NSArray get localObjects { + final _ret = _objc_msgSend_6(this.pointer, _sel_localObjects); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSArray get shortWeekdaySymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_shortWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + void dispatchWithComponents_(objc.NSArray components) { + _objc_msgSend_242( + this.pointer, _sel_dispatchWithComponents_, components.pointer); } - set shortWeekdaySymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setShortWeekdaySymbols_1, value._id); + @override + NSConnection init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSConnection.castFromPointer(_ret, retain: true, release: true); } - NSString get AMSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_AMSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSConnection new1() { + final _ret = _objc_msgSend_40(_class_NSConnection, _sel_new); + return NSConnection.castFromPointer(_ret, retain: false, release: true); } - set AMSymbol(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setAMSymbol_1, value._id); + static NSConnection allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSConnection, _sel_allocWithZone_, zone); + return NSConnection.castFromPointer(_ret, retain: false, release: true); } - NSString get PMSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_PMSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSConnection alloc() { + final _ret = _objc_msgSend_40(_class_NSConnection, _sel_alloc); + return NSConnection.castFromPointer(_ret, retain: false, release: true); } - set PMSymbol(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setPMSymbol_1, value._id); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSConnection, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSArray get longEraSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_longEraSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSConnection, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - set longEraSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setLongEraSymbols_1, value._id); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSConnection, _sel_accessInstanceVariablesDirectly); } - NSArray get veryShortMonthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_veryShortMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSConnection, _sel_useStoredAccessor); } - set veryShortMonthSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setVeryShortMonthSymbols_1, value._id); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSConnection, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSArray get standaloneMonthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_standaloneMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSConnection, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - set standaloneMonthSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setStandaloneMonthSymbols_1, value._id); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSConnection, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSConnection, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSConnection, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSConnection = objc.getClass("NSConnection"); +late final _sel_statistics = objc.registerName("statistics"); +late final _sel_allConnections = objc.registerName("allConnections"); +late final _sel_defaultConnection = objc.registerName("defaultConnection"); +final _objc_msgSend_219 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_connectionWithRegisteredName_host_ = + objc.registerName("connectionWithRegisteredName:host:"); +final _objc_msgSend_220 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSPortNameServer extends objc.NSObject { + NSPortNameServer._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSArray get shortStandaloneMonthSymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_shortStandaloneMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + /// Constructs a [NSPortNameServer] that points to the same underlying object as [other]. + NSPortNameServer.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSPortNameServer] that wraps the given raw object pointer. + NSPortNameServer.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSPortNameServer]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSPortNameServer); } - set shortStandaloneMonthSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setShortStandaloneMonthSymbols_1, value._id); + static NSPortNameServer systemDefaultPortNameServer() { + final _ret = _objc_msgSend_221( + _class_NSPortNameServer, _sel_systemDefaultPortNameServer); + return NSPortNameServer.castFromPointer(_ret, retain: true, release: true); } - NSArray get veryShortStandaloneMonthSymbols { + NSPort? portForName_(objc.NSString name) { final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_veryShortStandaloneMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + _objc_msgSend_222(this.pointer, _sel_portForName_, name.pointer); + return _ret.address == 0 + ? null + : NSPort.castFromPointer(_ret, retain: true, release: true); } - set veryShortStandaloneMonthSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setVeryShortStandaloneMonthSymbols_1, value._id); + NSPort? portForName_host_(objc.NSString name, objc.NSString? host) { + final _ret = _objc_msgSend_223(this.pointer, _sel_portForName_host_, + name.pointer, host?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSPort.castFromPointer(_ret, retain: true, release: true); } - NSArray get veryShortWeekdaySymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_veryShortWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool registerPort_name_(NSPort port, objc.NSString name) { + return _objc_msgSend_224( + this.pointer, _sel_registerPort_name_, port.pointer, name.pointer); } - set veryShortWeekdaySymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setVeryShortWeekdaySymbols_1, value._id); + bool removePortForName_(objc.NSString name) { + return _objc_msgSend_51( + this.pointer, _sel_removePortForName_, name.pointer); } - NSArray get standaloneWeekdaySymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_standaloneWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + @override + NSPortNameServer init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSPortNameServer.castFromPointer(_ret, retain: true, release: true); } - set standaloneWeekdaySymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setStandaloneWeekdaySymbols_1, value._id); + static NSPortNameServer new1() { + final _ret = _objc_msgSend_40(_class_NSPortNameServer, _sel_new); + return NSPortNameServer.castFromPointer(_ret, retain: false, release: true); } - NSArray get shortStandaloneWeekdaySymbols { + static NSPortNameServer allocWithZone_(ffi.Pointer<_NSZone> zone) { final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_shortStandaloneWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + _objc_msgSend_47(_class_NSPortNameServer, _sel_allocWithZone_, zone); + return NSPortNameServer.castFromPointer(_ret, retain: false, release: true); } - set shortStandaloneWeekdaySymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setShortStandaloneWeekdaySymbols_1, value._id); + static NSPortNameServer alloc() { + final _ret = _objc_msgSend_40(_class_NSPortNameServer, _sel_alloc); + return NSPortNameServer.castFromPointer(_ret, retain: false, release: true); } - NSArray get veryShortStandaloneWeekdaySymbols { - final _ret = _lib._objc_msgSend_85( - _id, _lib._sel_veryShortStandaloneWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSPortNameServer, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - set veryShortStandaloneWeekdaySymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setVeryShortStandaloneWeekdaySymbols_1, value._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSPortNameServer, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSArray get quarterSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_quarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSPortNameServer, _sel_accessInstanceVariablesDirectly); } - set quarterSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setQuarterSymbols_1, value._id); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSPortNameServer, _sel_useStoredAccessor); } - NSArray get shortQuarterSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_shortQuarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSPortNameServer, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - set shortQuarterSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setShortQuarterSymbols_1, value._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSPortNameServer, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSArray get standaloneQuarterSymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_standaloneQuarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSPortNameServer, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSPortNameServer, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSPortNameServer, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSPortNameServer = objc.getClass("NSPortNameServer"); +late final _sel_systemDefaultPortNameServer = + objc.registerName("systemDefaultPortNameServer"); +final _objc_msgSend_221 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_portForName_ = objc.registerName("portForName:"); +final _objc_msgSend_222 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_portForName_host_ = objc.registerName("portForName:host:"); +final _objc_msgSend_223 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_registerPort_name_ = objc.registerName("registerPort:name:"); +final _objc_msgSend_224 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removePortForName_ = objc.registerName("removePortForName:"); +late final _sel_connectionWithRegisteredName_host_usingNameServer_ = + objc.registerName("connectionWithRegisteredName:host:usingNameServer:"); +final _objc_msgSend_225 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - set standaloneQuarterSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setStandaloneQuarterSymbols_1, value._id); - } +class NSDistantObject extends NSProxy { + NSDistantObject._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSArray get shortStandaloneQuarterSymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_shortStandaloneQuarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSDistantObject] that points to the same underlying object as [other]. + NSDistantObject.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSDistantObject] that wraps the given raw object pointer. + NSDistantObject.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - set shortStandaloneQuarterSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setShortStandaloneQuarterSymbols_1, value._id); + /// Returns whether [obj] is an instance of [NSDistantObject]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSDistantObject); } - NSDate? get gregorianStartDate { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_gregorianStartDate1); + static objc.NSObject? proxyWithTarget_connection_( + objc.NSObject target, NSConnection connection) { + final _ret = _objc_msgSend_229(_class_NSDistantObject, + _sel_proxyWithTarget_connection_, target.pointer, connection.pointer); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set gregorianStartDate(NSDate? value) { - return _lib._objc_msgSend_800( - _id, _lib._sel_setGregorianStartDate_1, value?._id ?? ffi.nullptr); + NSDistantObject? initWithTarget_connection_( + objc.NSObject target, NSConnection connection) { + final _ret = _objc_msgSend_229(this.pointer, + _sel_initWithTarget_connection_, target.pointer, connection.pointer); + return _ret.address == 0 + ? null + : NSDistantObject.castFromPointer(_ret, retain: true, release: true); } - bool get doesRelativeDateFormatting { - return _lib._objc_msgSend_12(_id, _lib._sel_doesRelativeDateFormatting1); + static objc.NSObject proxyWithLocal_connection_( + objc.NSObject target, NSConnection connection) { + final _ret = _objc_msgSend_230(_class_NSDistantObject, + _sel_proxyWithLocal_connection_, target.pointer, connection.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set doesRelativeDateFormatting(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setDoesRelativeDateFormatting_1, value); + NSDistantObject initWithLocal_connection_( + objc.NSObject target, NSConnection connection) { + final _ret = _objc_msgSend_230(this.pointer, _sel_initWithLocal_connection_, + target.pointer, connection.pointer); + return NSDistantObject.castFromPointer(_ret, retain: true, release: true); } - NSObject initWithDateFormat_allowNaturalLanguage_( - NSString format, bool flag) { - final _ret = _lib._objc_msgSend_30(_id, - _lib._sel_initWithDateFormat_allowNaturalLanguage_1, format._id, flag); - return NSObject._(_ret, _lib, retain: true, release: true); + NSDistantObject? initWithCoder_(objc.NSCoder inCoder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, inCoder.pointer); + return _ret.address == 0 + ? null + : NSDistantObject.castFromPointer(_ret, retain: true, release: true); } - bool allowsNaturalLanguage() { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsNaturalLanguage1); + void setProtocolForProxy_(objc.Protocol? proto) { + _objc_msgSend_232( + this.pointer, _sel_setProtocolForProxy_, proto?.pointer ?? ffi.nullptr); } - @override - NSDateFormatter init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSDateFormatter._(_ret, _lib, retain: true, release: true); + NSConnection get connectionForProxy { + final _ret = _objc_msgSend_219(this.pointer, _sel_connectionForProxy); + return NSConnection.castFromPointer(_ret, retain: true, release: true); } - static NSDateFormatter new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSDateFormatter1, _lib._sel_new1); - return NSDateFormatter._(_ret, _lib, retain: false, release: true); + static objc.NSObject alloc() { + final _ret = _objc_msgSend_40(_class_NSDistantObject, _sel_alloc); + return objc.NSObject.castFromPointer(_ret, retain: false, release: true); } - static NSDateFormatter allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSDateFormatter1, _lib._sel_allocWithZone_1, zone); - return NSDateFormatter._(_ret, _lib, retain: false, release: true); + static bool respondsToSelector_(ffi.Pointer aSelector) { + return _objc_msgSend_228( + _class_NSDistantObject, _sel_respondsToSelector_, aSelector); } +} - static NSDateFormatter alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSDateFormatter1, _lib._sel_alloc1); - return NSDateFormatter._(_ret, _lib, retain: false, release: true); - } +late final _class_NSDistantObject = objc.getClass("NSDistantObject"); - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSDateFormatter1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } +class NSProxy extends objc.ObjCObjectBase { + NSProxy._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super(pointer, retain: retain, release: release); - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSDateFormatter1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } + /// Constructs a [NSProxy] that points to the same underlying object as [other]. + NSProxy.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSDateFormatter1, - _lib._sel_accessInstanceVariablesDirectly1); - } + /// Constructs a [NSProxy] that wraps the given raw object pointer. + NSProxy.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSDateFormatter1, _lib._sel_useStoredAccessor1); + /// Returns whether [obj] is an instance of [NSProxy]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSProxy); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSDateFormatter1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSObject alloc() { + final _ret = _objc_msgSend_40(_class_NSProxy, _sel_alloc); + return objc.NSObject.castFromPointer(_ret, retain: false, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSDateFormatter1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static objc.NSObject allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSProxy, _sel_allocWithZone_, zone); + return objc.NSObject.castFromPointer(_ret, retain: false, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSDateFormatter1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static objc.NSObject class1() { + final _ret = _objc_msgSend_40(_class_NSProxy, _sel_class); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSDateFormatter1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + void forwardInvocation_(objc.NSInvocation invocation) { + _objc_msgSend_226( + this.pointer, _sel_forwardInvocation_, invocation.pointer); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSDateFormatter1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSMethodSignature? methodSignatureForSelector_( + ffi.Pointer sel) { + final _ret = + _objc_msgSend_227(this.pointer, _sel_methodSignatureForSelector_, sel); + return _ret.address == 0 + ? null + : objc.NSMethodSignature.castFromPointer(_ret, + retain: true, release: true); } -} - -class NSFormatter extends NSObject { - NSFormatter._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSFormatter] that points to the same underlying object as [other]. - static NSFormatter castFrom(T other) { - return NSFormatter._(other._id, other._lib, retain: true, release: true); + void dealloc() { + _objc_msgSend_82(this.pointer, _sel_dealloc); } - /// Returns a [NSFormatter] that wraps the given raw object pointer. - static NSFormatter castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSFormatter._(other, lib, retain: retain, release: release); + void finalize() { + _objc_msgSend_82(this.pointer, _sel_finalize); } - /// Returns whether [obj] is an instance of [NSFormatter]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSFormatter1); + objc.NSString get description { + final _ret = _objc_msgSend_12(this.pointer, _sel_description); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? stringForObjectValue_(NSObject? obj) { - final _ret = _lib._objc_msgSend_747( - _id, _lib._sel_stringForObjectValue_1, obj?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + objc.NSString get debugDescription { + final _ret = _objc_msgSend_12(this.pointer, _sel_debugDescription); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSAttributedString? attributedStringForObjectValue_withDefaultAttributes_( - NSObject obj, NSDictionary? attrs) { - final _ret = _lib._objc_msgSend_748( - _id, - _lib._sel_attributedStringForObjectValue_withDefaultAttributes_1, - obj._id, - attrs?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSAttributedString._(_ret, _lib, retain: true, release: true); + static bool respondsToSelector_(ffi.Pointer aSelector) { + return _objc_msgSend_228( + _class_NSProxy, _sel_respondsToSelector_, aSelector); } - NSString? editingStringForObjectValue_(NSObject obj) { - final _ret = _lib._objc_msgSend_526( - _id, _lib._sel_editingStringForObjectValue_1, obj._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + bool allowsWeakReference() { + return _objc_msgSend_7(this.pointer, _sel_allowsWeakReference); } - bool getObjectValue_forString_errorDescription_( - ffi.Pointer> obj, - NSString string, - ffi.Pointer> error) { - return _lib._objc_msgSend_749( - _id, - _lib._sel_getObjectValue_forString_errorDescription_1, - obj, - string._id, - error); - } + bool retainWeakReference() { + return _objc_msgSend_7(this.pointer, _sel_retainWeakReference); + } +} + +late final _class_NSProxy = objc.getClass("NSProxy"); +late final _sel_class = objc.registerName("class"); +late final _sel_forwardInvocation_ = objc.registerName("forwardInvocation:"); +final _objc_msgSend_226 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_methodSignatureForSelector_ = + objc.registerName("methodSignatureForSelector:"); +final _objc_msgSend_227 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dealloc = objc.registerName("dealloc"); +late final _sel_finalize = objc.registerName("finalize"); +late final _sel_debugDescription = objc.registerName("debugDescription"); +late final _sel_respondsToSelector_ = objc.registerName("respondsToSelector:"); +final _objc_msgSend_228 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_allowsWeakReference = objc.registerName("allowsWeakReference"); +late final _sel_retainWeakReference = objc.registerName("retainWeakReference"); +late final _sel_proxyWithTarget_connection_ = + objc.registerName("proxyWithTarget:connection:"); +final _objc_msgSend_229 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithTarget_connection_ = + objc.registerName("initWithTarget:connection:"); +late final _sel_proxyWithLocal_connection_ = + objc.registerName("proxyWithLocal:connection:"); +final _objc_msgSend_230 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithLocal_connection_ = + objc.registerName("initWithLocal:connection:"); +late final _sel_initWithCoder_ = objc.registerName("initWithCoder:"); +final _objc_msgSend_231 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setProtocolForProxy_ = + objc.registerName("setProtocolForProxy:"); +final _objc_msgSend_232 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_connectionForProxy = objc.registerName("connectionForProxy"); +late final _sel_rootProxyForConnectionWithRegisteredName_host_ = + objc.registerName("rootProxyForConnectionWithRegisteredName:host:"); +final _objc_msgSend_233 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_rootProxyForConnectionWithRegisteredName_host_usingNameServer_ = + objc.registerName( + "rootProxyForConnectionWithRegisteredName:host:usingNameServer:"); +final _objc_msgSend_234 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_serviceConnectionWithName_rootObject_usingNameServer_ = + objc.registerName("serviceConnectionWithName:rootObject:usingNameServer:"); +final _objc_msgSend_235 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_serviceConnectionWithName_rootObject_ = + objc.registerName("serviceConnectionWithName:rootObject:"); +final _objc_msgSend_236 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_requestTimeout = objc.registerName("requestTimeout"); +late final _sel_setRequestTimeout_ = objc.registerName("setRequestTimeout:"); +late final _sel_replyTimeout = objc.registerName("replyTimeout"); +late final _sel_setReplyTimeout_ = objc.registerName("setReplyTimeout:"); +late final _sel_rootObject = objc.registerName("rootObject"); +late final _sel_setRootObject_ = objc.registerName("setRootObject:"); +late final _sel_independentConversationQueueing = + objc.registerName("independentConversationQueueing"); +late final _sel_setIndependentConversationQueueing_ = + objc.registerName("setIndependentConversationQueueing:"); +late final _sel_rootProxy = objc.registerName("rootProxy"); +final _objc_msgSend_237 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_addRequestMode_ = objc.registerName("addRequestMode:"); +late final _sel_removeRequestMode_ = objc.registerName("removeRequestMode:"); +late final _sel_requestModes = objc.registerName("requestModes"); +late final _sel_registerName_ = objc.registerName("registerName:"); +final _objc_msgSend_238 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_registerName_withNameServer_ = + objc.registerName("registerName:withNameServer:"); +final _objc_msgSend_239 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_connectionWithReceivePort_sendPort_ = + objc.registerName("connectionWithReceivePort:sendPort:"); +final _objc_msgSend_240 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_currentConversation = objc.registerName("currentConversation"); +late final _sel_initWithReceivePort_sendPort_ = + objc.registerName("initWithReceivePort:sendPort:"); +late final _sel_sendPort = objc.registerName("sendPort"); +late final _sel_receivePort = objc.registerName("receivePort"); +late final _sel_enableMultipleThreads = + objc.registerName("enableMultipleThreads"); +late final _sel_multipleThreadsEnabled = + objc.registerName("multipleThreadsEnabled"); +late final _sel_addRunLoop_ = objc.registerName("addRunLoop:"); +final _objc_msgSend_241 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_removeRunLoop_ = objc.registerName("removeRunLoop:"); +late final _sel_runInNewThread = objc.registerName("runInNewThread"); +late final _sel_remoteObjects = objc.registerName("remoteObjects"); +late final _sel_localObjects = objc.registerName("localObjects"); +late final _sel_dispatchWithComponents_ = + objc.registerName("dispatchWithComponents:"); +final _objc_msgSend_242 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_addConnection_toRunLoop_forMode_ = + objc.registerName("addConnection:toRunLoop:forMode:"); +final _objc_msgSend_243 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeConnection_fromRunLoop_forMode_ = + objc.registerName("removeConnection:fromRunLoop:forMode:"); +late final _sel_addPort_forMode_ = objc.registerName("addPort:forMode:"); +final _objc_msgSend_244 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removePort_forMode_ = objc.registerName("removePort:forMode:"); +late final _sel_limitDateForMode_ = objc.registerName("limitDateForMode:"); +late final _sel_acceptInputForMode_beforeDate_ = + objc.registerName("acceptInputForMode:beforeDate:"); +final _objc_msgSend_245 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_run = objc.registerName("run"); +late final _sel_runUntilDate_ = objc.registerName("runUntilDate:"); +final _objc_msgSend_246 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_runMode_beforeDate_ = objc.registerName("runMode:beforeDate:"); +final _objc_msgSend_247 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_configureAsServer = objc.registerName("configureAsServer"); +void _ObjCBlock_ffiVoid_fnPtrTrampoline( + ffi.Pointer block, +) => + block.ref.target + .cast>() + .asFunction()(); +final _ObjCBlock_ffiVoid_closureRegistry = {}; +int _ObjCBlock_ffiVoid_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_registerClosure(void Function() fn) { + final id = ++_ObjCBlock_ffiVoid_closureRegistryIndex; + _ObjCBlock_ffiVoid_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - bool isPartialStringValid_newEditingString_errorDescription_( - NSString partialString, - ffi.Pointer> newString, - ffi.Pointer> error) { - return _lib._objc_msgSend_750( - _id, - _lib._sel_isPartialStringValid_newEditingString_errorDescription_1, - partialString._id, - newString, - error); - } +void _ObjCBlock_ffiVoid_closureTrampoline( + ffi.Pointer block, +) => + _ObjCBlock_ffiVoid_closureRegistry[block.ref.target.address]!(); - bool - isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_( - ffi.Pointer> partialStringPtr, - ffi.Pointer<_NSRange> proposedSelRangePtr, - NSString origString, - _NSRange origSelRange, - ffi.Pointer> error) { - return _lib._objc_msgSend_751( - _id, - _lib._sel_isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_1, - partialStringPtr, - proposedSelRangePtr, - origString._id, - origSelRange, - error); +class ObjCBlock_ffiVoid extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid castFromPointer(ffi.Pointer pointer, + {bool retain = false, bool release = false}) { + return ObjCBlock_ffiVoid._(pointer, retain: retain, release: release); } - @override - NSFormatter init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSFormatter._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid.fromFunctionPointer( + ffi.Pointer> ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer)>( + _ObjCBlock_ffiVoid_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid.fromFunction(void Function() fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer)>( + _ObjCBlock_ffiVoid_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_registerClosure(() => fn()))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid.listener(void Function() fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_registerClosure(() => fn()))); + static ffi.NativeCallable)>? + _dartFuncListenerTrampoline; + + void call() => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block)>>() + .asFunction)>()( + pointer, + ); +} + +late final _sel_performInModes_block_ = + objc.registerName("performInModes:block:"); +final _objc_msgSend_248 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_performBlock_ = objc.registerName("performBlock:"); +final _objc_msgSend_249 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_performSelector_target_argument_order_modes_ = + objc.registerName("performSelector:target:argument:order:modes:"); +final _objc_msgSend_250 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_cancelPerformSelector_target_argument_ = + objc.registerName("cancelPerformSelector:target:argument:"); +final _objc_msgSend_251 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_cancelPerformSelectorsWithTarget_ = + objc.registerName("cancelPerformSelectorsWithTarget:"); + +class NSFileHandle extends objc.NSObject { + NSFileHandle._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - static NSFormatter new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSFormatter1, _lib._sel_new1); - return NSFormatter._(_ret, _lib, retain: false, release: true); - } + /// Constructs a [NSFileHandle] that points to the same underlying object as [other]. + NSFileHandle.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - static NSFormatter allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSFormatter1, _lib._sel_allocWithZone_1, zone); - return NSFormatter._(_ret, _lib, retain: false, release: true); - } + /// Constructs a [NSFileHandle] that wraps the given raw object pointer. + NSFileHandle.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static NSFormatter alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFormatter1, _lib._sel_alloc1); - return NSFormatter._(_ret, _lib, retain: false, release: true); + /// Returns whether [obj] is an instance of [NSFileHandle]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSFileHandle); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSFormatter1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + objc.NSData get availableData { + final _ret = _objc_msgSend_104(this.pointer, _sel_availableData); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSFormatter1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + NSFileHandle initWithFileDescriptor_closeOnDealloc_(int fd, bool closeopt) { + final _ret = _objc_msgSend_252(this.pointer, + _sel_initWithFileDescriptor_closeOnDealloc_, fd, closeopt); + return NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFormatter1, _lib._sel_accessInstanceVariablesDirectly1); + NSFileHandle? initWithCoder_(objc.NSCoder coder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFormatter1, _lib._sel_useStoredAccessor1); + objc.NSData? readDataToEndOfFileAndReturnError_( + ffi.Pointer> error) { + final _ret = _objc_msgSend_253( + this.pointer, _sel_readDataToEndOfFileAndReturnError_, error); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSFormatter1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSData? readDataUpToLength_error_( + int length, ffi.Pointer> error) { + final _ret = _objc_msgSend_254( + this.pointer, _sel_readDataUpToLength_error_, length, error); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSFormatter1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + bool writeData_error_( + objc.NSData data, ffi.Pointer> error) { + return _objc_msgSend_255( + this.pointer, _sel_writeData_error_, data.pointer, error); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSFormatter1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + bool getOffset_error_(ffi.Pointer offsetInFile, + ffi.Pointer> error) { + return _objc_msgSend_256( + this.pointer, _sel_getOffset_error_, offsetInFile, error); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSFormatter1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool seekToEndReturningOffset_error_( + ffi.Pointer offsetInFile, + ffi.Pointer> error) { + return _objc_msgSend_256(this.pointer, _sel_seekToEndReturningOffset_error_, + offsetInFile, error); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSFormatter1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + bool seekToOffset_error_( + int offset, ffi.Pointer> error) { + return _objc_msgSend_257( + this.pointer, _sel_seekToOffset_error_, offset, error); } -} - -abstract class NSFormattingContext { - static const int NSFormattingContextUnknown = 0; - static const int NSFormattingContextDynamic = 1; - static const int NSFormattingContextStandalone = 2; - static const int NSFormattingContextListItem = 3; - static const int NSFormattingContextBeginningOfSentence = 4; - static const int NSFormattingContextMiddleOfSentence = 5; -} - -abstract class NSDateFormatterStyle { - static const int NSDateFormatterNoStyle = 0; - static const int NSDateFormatterShortStyle = 1; - static const int NSDateFormatterMediumStyle = 2; - static const int NSDateFormatterLongStyle = 3; - static const int NSDateFormatterFullStyle = 4; -} -abstract class NSDateFormatterBehavior { - static const int NSDateFormatterBehaviorDefault = 0; - static const int NSDateFormatterBehavior10_0 = 1000; - static const int NSDateFormatterBehavior10_4 = 1040; -} + bool truncateAtOffset_error_( + int offset, ffi.Pointer> error) { + return _objc_msgSend_257( + this.pointer, _sel_truncateAtOffset_error_, offset, error); + } -class NSCalendar extends NSObject { - NSCalendar._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + bool synchronizeAndReturnError_( + ffi.Pointer> error) { + return _objc_msgSend_8( + this.pointer, _sel_synchronizeAndReturnError_, error); + } - /// Returns a [NSCalendar] that points to the same underlying object as [other]. - static NSCalendar castFrom(T other) { - return NSCalendar._(other._id, other._lib, retain: true, release: true); + bool closeAndReturnError_(ffi.Pointer> error) { + return _objc_msgSend_8(this.pointer, _sel_closeAndReturnError_, error); } - /// Returns a [NSCalendar] that wraps the given raw object pointer. - static NSCalendar castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSCalendar._(other, lib, retain: retain, release: release); + static NSFileHandle getFileHandleWithStandardInput() { + final _ret = _objc_msgSend_258( + _class_NSFileHandle, _sel_fileHandleWithStandardInput); + return NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSCalendar]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSCalendar1); + static NSFileHandle getFileHandleWithStandardOutput() { + final _ret = _objc_msgSend_258( + _class_NSFileHandle, _sel_fileHandleWithStandardOutput); + return NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - static NSCalendar getCurrentCalendar(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_763( - _lib._class_NSCalendar1, _lib._sel_currentCalendar1); - return NSCalendar._(_ret, _lib, retain: true, release: true); + static NSFileHandle getFileHandleWithStandardError() { + final _ret = _objc_msgSend_258( + _class_NSFileHandle, _sel_fileHandleWithStandardError); + return NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - static NSCalendar getAutoupdatingCurrentCalendar(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_763( - _lib._class_NSCalendar1, _lib._sel_autoupdatingCurrentCalendar1); - return NSCalendar._(_ret, _lib, retain: true, release: true); + static NSFileHandle getFileHandleWithNullDevice() { + final _ret = + _objc_msgSend_258(_class_NSFileHandle, _sel_fileHandleWithNullDevice); + return NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - static NSCalendar? calendarWithIdentifier_( - AVFAudio _lib, NSString calendarIdentifierConstant) { - final _ret = _lib._objc_msgSend_764(_lib._class_NSCalendar1, - _lib._sel_calendarWithIdentifier_1, calendarIdentifierConstant._id); + static NSFileHandle? fileHandleForReadingAtPath_(objc.NSString path) { + final _ret = _objc_msgSend_2( + _class_NSFileHandle, _sel_fileHandleForReadingAtPath_, path.pointer); return _ret.address == 0 ? null - : NSCalendar._(_ret, _lib, retain: true, release: true); + : NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - @override - NSCalendar init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSCalendar._(_ret, _lib, retain: true, release: true); + static NSFileHandle? fileHandleForWritingAtPath_(objc.NSString path) { + final _ret = _objc_msgSend_2( + _class_NSFileHandle, _sel_fileHandleForWritingAtPath_, path.pointer); + return _ret.address == 0 + ? null + : NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - NSObject? initWithCalendarIdentifier_(NSString ident) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_initWithCalendarIdentifier_1, ident._id); + static NSFileHandle? fileHandleForUpdatingAtPath_(objc.NSString path) { + final _ret = _objc_msgSend_2( + _class_NSFileHandle, _sel_fileHandleForUpdatingAtPath_, path.pointer); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - NSString get calendarIdentifier { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_calendarIdentifier1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSFileHandle? fileHandleForReadingFromURL_error_( + objc.NSURL url, ffi.Pointer> error) { + final _ret = _objc_msgSend_259(_class_NSFileHandle, + _sel_fileHandleForReadingFromURL_error_, url.pointer, error); + return _ret.address == 0 + ? null + : NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - NSLocale? get locale { - final _ret = _lib._objc_msgSend_765(_id, _lib._sel_locale1); + static NSFileHandle? fileHandleForWritingToURL_error_( + objc.NSURL url, ffi.Pointer> error) { + final _ret = _objc_msgSend_259(_class_NSFileHandle, + _sel_fileHandleForWritingToURL_error_, url.pointer, error); return _ret.address == 0 ? null - : NSLocale._(_ret, _lib, retain: true, release: true); + : NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - set locale(NSLocale? value) { - return _lib._objc_msgSend_766( - _id, _lib._sel_setLocale_1, value?._id ?? ffi.nullptr); + static NSFileHandle? fileHandleForUpdatingURL_error_( + objc.NSURL url, ffi.Pointer> error) { + final _ret = _objc_msgSend_259(_class_NSFileHandle, + _sel_fileHandleForUpdatingURL_error_, url.pointer, error); + return _ret.address == 0 + ? null + : NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - NSTimeZone get timeZone { - final _ret = _lib._objc_msgSend_179(_id, _lib._sel_timeZone1); - return NSTimeZone._(_ret, _lib, retain: true, release: true); + void readInBackgroundAndNotifyForModes_(objc.NSArray? modes) { + _objc_msgSend_260(this.pointer, _sel_readInBackgroundAndNotifyForModes_, + modes?.pointer ?? ffi.nullptr); } - set timeZone(NSTimeZone value) { - return _lib._objc_msgSend_180(_id, _lib._sel_setTimeZone_1, value._id); + void readInBackgroundAndNotify() { + _objc_msgSend_82(this.pointer, _sel_readInBackgroundAndNotify); } - int get firstWeekday { - return _lib._objc_msgSend_10(_id, _lib._sel_firstWeekday1); + void readToEndOfFileInBackgroundAndNotifyForModes_(objc.NSArray? modes) { + _objc_msgSend_260( + this.pointer, + _sel_readToEndOfFileInBackgroundAndNotifyForModes_, + modes?.pointer ?? ffi.nullptr); } - set firstWeekday(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setFirstWeekday_1, value); + void readToEndOfFileInBackgroundAndNotify() { + _objc_msgSend_82(this.pointer, _sel_readToEndOfFileInBackgroundAndNotify); } - int get minimumDaysInFirstWeek { - return _lib._objc_msgSend_10(_id, _lib._sel_minimumDaysInFirstWeek1); + void acceptConnectionInBackgroundAndNotifyForModes_(objc.NSArray? modes) { + _objc_msgSend_260( + this.pointer, + _sel_acceptConnectionInBackgroundAndNotifyForModes_, + modes?.pointer ?? ffi.nullptr); } - set minimumDaysInFirstWeek(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setMinimumDaysInFirstWeek_1, value); + void acceptConnectionInBackgroundAndNotify() { + _objc_msgSend_82(this.pointer, _sel_acceptConnectionInBackgroundAndNotify); } - NSArray get eraSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_eraSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + void waitForDataInBackgroundAndNotifyForModes_(objc.NSArray? modes) { + _objc_msgSend_260( + this.pointer, + _sel_waitForDataInBackgroundAndNotifyForModes_, + modes?.pointer ?? ffi.nullptr); } - NSArray get longEraSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_longEraSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + void waitForDataInBackgroundAndNotify() { + _objc_msgSend_82(this.pointer, _sel_waitForDataInBackgroundAndNotify); } - NSArray get monthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_monthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + ObjCBlock_ffiVoid_NSFileHandle? get readabilityHandler { + final _ret = _objc_msgSend_261(this.pointer, _sel_readabilityHandler); + return _ret.address == 0 + ? null + : ObjCBlock_ffiVoid_NSFileHandle.castFromPointer(_ret, + retain: true, release: true); } - NSArray get shortMonthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_shortMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + set readabilityHandler(ObjCBlock_ffiVoid_NSFileHandle? value) { + return _objc_msgSend_262(this.pointer, _sel_setReadabilityHandler_, + value?.pointer ?? ffi.nullptr); } - NSArray get veryShortMonthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_veryShortMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + ObjCBlock_ffiVoid_NSFileHandle? get writeabilityHandler { + final _ret = _objc_msgSend_261(this.pointer, _sel_writeabilityHandler); + return _ret.address == 0 + ? null + : ObjCBlock_ffiVoid_NSFileHandle.castFromPointer(_ret, + retain: true, release: true); } - NSArray get standaloneMonthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_standaloneMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + set writeabilityHandler(ObjCBlock_ffiVoid_NSFileHandle? value) { + return _objc_msgSend_262(this.pointer, _sel_setWriteabilityHandler_, + value?.pointer ?? ffi.nullptr); } - NSArray get shortStandaloneMonthSymbols { + NSFileHandle initWithFileDescriptor_(int fd) { final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_shortStandaloneMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + _objc_msgSend_263(this.pointer, _sel_initWithFileDescriptor_, fd); + return NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - NSArray get veryShortStandaloneMonthSymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_veryShortStandaloneMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + int get fileDescriptor { + return _objc_msgSend_264(this.pointer, _sel_fileDescriptor); } - NSArray get weekdaySymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_weekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSData readDataToEndOfFile() { + final _ret = _objc_msgSend_104(this.pointer, _sel_readDataToEndOfFile); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - NSArray get shortWeekdaySymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_shortWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSData readDataOfLength_(int length) { + final _ret = + _objc_msgSend_265(this.pointer, _sel_readDataOfLength_, length); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - NSArray get veryShortWeekdaySymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_veryShortWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + void writeData_(objc.NSData data) { + _objc_msgSend_266(this.pointer, _sel_writeData_, data.pointer); } - NSArray get standaloneWeekdaySymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_standaloneWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + int get offsetInFile { + return _objc_msgSend_267(this.pointer, _sel_offsetInFile); } - NSArray get shortStandaloneWeekdaySymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_shortStandaloneWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + int seekToEndOfFile() { + return _objc_msgSend_267(this.pointer, _sel_seekToEndOfFile); } - NSArray get veryShortStandaloneWeekdaySymbols { - final _ret = _lib._objc_msgSend_85( - _id, _lib._sel_veryShortStandaloneWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + void seekToFileOffset_(int offset) { + _objc_msgSend_268(this.pointer, _sel_seekToFileOffset_, offset); } - NSArray get quarterSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_quarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + void truncateFileAtOffset_(int offset) { + _objc_msgSend_268(this.pointer, _sel_truncateFileAtOffset_, offset); } - NSArray get shortQuarterSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_shortQuarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + void synchronizeFile() { + _objc_msgSend_82(this.pointer, _sel_synchronizeFile); } - NSArray get standaloneQuarterSymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_standaloneQuarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + void closeFile() { + _objc_msgSend_82(this.pointer, _sel_closeFile); } - NSArray get shortStandaloneQuarterSymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_shortStandaloneQuarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + @override + NSFileHandle init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - NSString get AMSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_AMSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSFileHandle new1() { + final _ret = _objc_msgSend_40(_class_NSFileHandle, _sel_new); + return NSFileHandle.castFromPointer(_ret, retain: false, release: true); } - NSString get PMSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_PMSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSFileHandle allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSFileHandle, _sel_allocWithZone_, zone); + return NSFileHandle.castFromPointer(_ret, retain: false, release: true); } - void minimumRangeOfUnit_(ffi.Pointer<_NSRange> stret, int unit) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_767_stret( - stret, _id, _lib._sel_minimumRangeOfUnit_1, unit) - : stret.ref = - _lib._objc_msgSend_767(_id, _lib._sel_minimumRangeOfUnit_1, unit); + static NSFileHandle alloc() { + final _ret = _objc_msgSend_40(_class_NSFileHandle, _sel_alloc); + return NSFileHandle.castFromPointer(_ret, retain: false, release: true); } - void maximumRangeOfUnit_(ffi.Pointer<_NSRange> stret, int unit) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_767_stret( - stret, _id, _lib._sel_maximumRangeOfUnit_1, unit) - : stret.ref = - _lib._objc_msgSend_767(_id, _lib._sel_maximumRangeOfUnit_1, unit); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSFileHandle, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - void rangeOfUnit_inUnit_forDate_( - ffi.Pointer<_NSRange> stret, int smaller, int larger, NSDate date) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_768_stret(stret, _id, - _lib._sel_rangeOfUnit_inUnit_forDate_1, smaller, larger, date._id) - : stret.ref = _lib._objc_msgSend_768(_id, - _lib._sel_rangeOfUnit_inUnit_forDate_1, smaller, larger, date._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSFileHandle, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - int ordinalityOfUnit_inUnit_forDate_(int smaller, int larger, NSDate date) { - return _lib._objc_msgSend_769(_id, - _lib._sel_ordinalityOfUnit_inUnit_forDate_1, smaller, larger, date._id); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSFileHandle, _sel_accessInstanceVariablesDirectly); } - bool rangeOfUnit_startDate_interval_forDate_( - int unit, - ffi.Pointer> datep, - ffi.Pointer tip, - NSDate date) { - return _lib._objc_msgSend_770( - _id, - _lib._sel_rangeOfUnit_startDate_interval_forDate_1, - unit, - datep, - tip, - date._id); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSFileHandle, _sel_useStoredAccessor); } - NSDate? dateFromComponents_(NSDateComponents comps) { - final _ret = - _lib._objc_msgSend_778(_id, _lib._sel_dateFromComponents_1, comps._id); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSFileHandle, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSDateComponents components_fromDate_(int unitFlags, NSDate date) { - final _ret = _lib._objc_msgSend_779( - _id, _lib._sel_components_fromDate_1, unitFlags, date._id); - return NSDateComponents._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSFileHandle, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSDate? dateByAddingComponents_toDate_options_( - NSDateComponents comps, NSDate date, int opts) { - final _ret = _lib._objc_msgSend_780( - _id, - _lib._sel_dateByAddingComponents_toDate_options_1, - comps._id, - date._id, - opts); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSFileHandle, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSFileHandle, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSFileHandle, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSFileHandle = objc.getClass("NSFileHandle"); +late final _sel_availableData = objc.registerName("availableData"); +late final _sel_initWithFileDescriptor_closeOnDealloc_ = + objc.registerName("initWithFileDescriptor:closeOnDealloc:"); +final _objc_msgSend_252 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Int, ffi.Bool)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int, bool)>(); +late final _sel_readDataToEndOfFileAndReturnError_ = + objc.registerName("readDataToEndOfFileAndReturnError:"); +final _objc_msgSend_253 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_readDataUpToLength_error_ = + objc.registerName("readDataUpToLength:error:"); +final _objc_msgSend_254 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_writeData_error_ = objc.registerName("writeData:error:"); +final _objc_msgSend_255 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_getOffset_error_ = objc.registerName("getOffset:error:"); +final _objc_msgSend_256 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_seekToEndReturningOffset_error_ = + objc.registerName("seekToEndReturningOffset:error:"); +late final _sel_seekToOffset_error_ = objc.registerName("seekToOffset:error:"); +final _objc_msgSend_257 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLongLong, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_truncateAtOffset_error_ = + objc.registerName("truncateAtOffset:error:"); +late final _sel_synchronizeAndReturnError_ = + objc.registerName("synchronizeAndReturnError:"); +late final _sel_closeAndReturnError_ = + objc.registerName("closeAndReturnError:"); +late final _sel_fileHandleWithStandardInput = + objc.registerName("fileHandleWithStandardInput"); +final _objc_msgSend_258 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_fileHandleWithStandardOutput = + objc.registerName("fileHandleWithStandardOutput"); +late final _sel_fileHandleWithStandardError = + objc.registerName("fileHandleWithStandardError"); +late final _sel_fileHandleWithNullDevice = + objc.registerName("fileHandleWithNullDevice"); +late final _sel_fileHandleForReadingAtPath_ = + objc.registerName("fileHandleForReadingAtPath:"); +late final _sel_fileHandleForWritingAtPath_ = + objc.registerName("fileHandleForWritingAtPath:"); +late final _sel_fileHandleForUpdatingAtPath_ = + objc.registerName("fileHandleForUpdatingAtPath:"); +late final _sel_fileHandleForReadingFromURL_error_ = + objc.registerName("fileHandleForReadingFromURL:error:"); +final _objc_msgSend_259 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_fileHandleForWritingToURL_error_ = + objc.registerName("fileHandleForWritingToURL:error:"); +late final _sel_fileHandleForUpdatingURL_error_ = + objc.registerName("fileHandleForUpdatingURL:error:"); +late final _sel_readInBackgroundAndNotifyForModes_ = + objc.registerName("readInBackgroundAndNotifyForModes:"); +final _objc_msgSend_260 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_readInBackgroundAndNotify = + objc.registerName("readInBackgroundAndNotify"); +late final _sel_readToEndOfFileInBackgroundAndNotifyForModes_ = + objc.registerName("readToEndOfFileInBackgroundAndNotifyForModes:"); +late final _sel_readToEndOfFileInBackgroundAndNotify = + objc.registerName("readToEndOfFileInBackgroundAndNotify"); +late final _sel_acceptConnectionInBackgroundAndNotifyForModes_ = + objc.registerName("acceptConnectionInBackgroundAndNotifyForModes:"); +late final _sel_acceptConnectionInBackgroundAndNotify = + objc.registerName("acceptConnectionInBackgroundAndNotify"); +late final _sel_waitForDataInBackgroundAndNotifyForModes_ = + objc.registerName("waitForDataInBackgroundAndNotifyForModes:"); +late final _sel_waitForDataInBackgroundAndNotify = + objc.registerName("waitForDataInBackgroundAndNotify"); +void _ObjCBlock_ffiVoid_NSFileHandle_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSFileHandle_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSFileHandle_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSFileHandle_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSFileHandle_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSFileHandle_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - NSDateComponents components_fromDate_toDate_options_( - int unitFlags, NSDate startingDate, NSDate resultDate, int opts) { - final _ret = _lib._objc_msgSend_781( - _id, - _lib._sel_components_fromDate_toDate_options_1, - unitFlags, - startingDate._id, - resultDate._id, - opts); - return NSDateComponents._(_ret, _lib, retain: true, release: true); - } +void _ObjCBlock_ffiVoid_NSFileHandle_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSFileHandle_closureRegistry[block.ref.target.address]!( + arg0); - void getEra_year_month_day_fromDate_( - ffi.Pointer eraValuePointer, - ffi.Pointer yearValuePointer, - ffi.Pointer monthValuePointer, - ffi.Pointer dayValuePointer, - NSDate date) { - _lib._objc_msgSend_782( - _id, - _lib._sel_getEra_year_month_day_fromDate_1, - eraValuePointer, - yearValuePointer, - monthValuePointer, - dayValuePointer, - date._id); - } +class ObjCBlock_ffiVoid_NSFileHandle extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSFileHandle._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - void getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_( - ffi.Pointer eraValuePointer, - ffi.Pointer yearValuePointer, - ffi.Pointer weekValuePointer, - ffi.Pointer weekdayValuePointer, - NSDate date) { - _lib._objc_msgSend_782( - _id, - _lib._sel_getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_1, - eraValuePointer, - yearValuePointer, - weekValuePointer, - weekdayValuePointer, - date._id); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSFileHandle castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSFileHandle._(pointer, + retain: retain, release: release); } - void getHour_minute_second_nanosecond_fromDate_( - ffi.Pointer hourValuePointer, - ffi.Pointer minuteValuePointer, - ffi.Pointer secondValuePointer, - ffi.Pointer nanosecondValuePointer, - NSDate date) { - _lib._objc_msgSend_782( - _id, - _lib._sel_getHour_minute_second_nanosecond_fromDate_1, - hourValuePointer, - minuteValuePointer, - secondValuePointer, - nanosecondValuePointer, - date._id); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSFileHandle.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSFileHandle_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - int component_fromDate_(int unit, NSDate date) { - return _lib._objc_msgSend_783( - _id, _lib._sel_component_fromDate_1, unit, date._id); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSFileHandle.fromFunction(void Function(NSFileHandle) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSFileHandle_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSFileHandle_registerClosure( + (ffi.Pointer arg0) => fn( + NSFileHandle.castFromPointer(arg0, + retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; - NSDate? dateWithEra_year_month_day_hour_minute_second_nanosecond_( - int eraValue, - int yearValue, - int monthValue, - int dayValue, - int hourValue, - int minuteValue, - int secondValue, - int nanosecondValue) { - final _ret = _lib._objc_msgSend_784( - _id, - _lib._sel_dateWithEra_year_month_day_hour_minute_second_nanosecond_1, - eraValue, - yearValue, - monthValue, - dayValue, - hourValue, - minuteValue, - secondValue, - nanosecondValue); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSFileHandle.listener(void Function(NSFileHandle) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSFileHandle_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSFileHandle_registerClosure( + (ffi.Pointer arg0) => fn( + NSFileHandle.castFromPointer(arg0, + retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; - NSDate? - dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_( - int eraValue, - int yearValue, - int weekValue, - int weekdayValue, - int hourValue, - int minuteValue, - int secondValue, - int nanosecondValue) { - final _ret = _lib._objc_msgSend_784( - _id, - _lib._sel_dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_1, - eraValue, - yearValue, - weekValue, - weekdayValue, - hourValue, - minuteValue, - secondValue, - nanosecondValue); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } + void call(NSFileHandle arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(pointer, arg0.pointer); +} + +late final _sel_readabilityHandler = objc.registerName("readabilityHandler"); +final _objc_msgSend_261 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setReadabilityHandler_ = + objc.registerName("setReadabilityHandler:"); +final _objc_msgSend_262 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_writeabilityHandler = objc.registerName("writeabilityHandler"); +late final _sel_setWriteabilityHandler_ = + objc.registerName("setWriteabilityHandler:"); +late final _sel_initWithFileDescriptor_ = + objc.registerName("initWithFileDescriptor:"); +final _objc_msgSend_263 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Int)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_fileDescriptor = objc.registerName("fileDescriptor"); +final _objc_msgSend_264 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_readDataToEndOfFile = objc.registerName("readDataToEndOfFile"); +late final _sel_readDataOfLength_ = objc.registerName("readDataOfLength:"); +final _objc_msgSend_265 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_writeData_ = objc.registerName("writeData:"); +final _objc_msgSend_266 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_offsetInFile = objc.registerName("offsetInFile"); +final _objc_msgSend_267 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLongLong Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_seekToEndOfFile = objc.registerName("seekToEndOfFile"); +late final _sel_seekToFileOffset_ = objc.registerName("seekToFileOffset:"); +final _objc_msgSend_268 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLongLong)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_truncateFileAtOffset_ = + objc.registerName("truncateFileAtOffset:"); +late final _sel_synchronizeFile = objc.registerName("synchronizeFile"); +late final _sel_closeFile = objc.registerName("closeFile"); + +abstract class NSURLBookmarkCreationOptions { + static const int NSURLBookmarkCreationPreferFileIDResolution = 256; + static const int NSURLBookmarkCreationMinimalBookmark = 512; + static const int NSURLBookmarkCreationSuitableForBookmarkFile = 1024; + static const int NSURLBookmarkCreationWithSecurityScope = 2048; + static const int NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess = 4096; + static const int NSURLBookmarkCreationWithoutImplicitSecurityScope = + 536870912; +} - NSDate startOfDayForDate_(NSDate date) { - final _ret = - _lib._objc_msgSend_168(_id, _lib._sel_startOfDayForDate_1, date._id); - return NSDate._(_ret, _lib, retain: true, release: true); - } +abstract class NSURLBookmarkResolutionOptions { + static const int NSURLBookmarkResolutionWithoutUI = 256; + static const int NSURLBookmarkResolutionWithoutMounting = 512; + static const int NSURLBookmarkResolutionWithSecurityScope = 1024; + static const int NSURLBookmarkResolutionWithoutImplicitStartAccessing = 32768; +} - NSDateComponents componentsInTimeZone_fromDate_( - NSTimeZone timezone, NSDate date) { - final _ret = _lib._objc_msgSend_785( - _id, _lib._sel_componentsInTimeZone_fromDate_1, timezone._id, date._id); - return NSDateComponents._(_ret, _lib, retain: true, release: true); - } +class NSFileManager extends objc.NSObject { + NSFileManager._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - int compareDate_toDate_toUnitGranularity_( - NSDate date1, NSDate date2, int unit) { - return _lib._objc_msgSend_786( - _id, - _lib._sel_compareDate_toDate_toUnitGranularity_1, - date1._id, - date2._id, - unit); + /// Constructs a [NSFileManager] that points to the same underlying object as [other]. + NSFileManager.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSFileManager] that wraps the given raw object pointer. + NSFileManager.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSFileManager]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSFileManager); } - bool isDate_equalToDate_toUnitGranularity_( - NSDate date1, NSDate date2, int unit) { - return _lib._objc_msgSend_787( - _id, - _lib._sel_isDate_equalToDate_toUnitGranularity_1, - date1._id, - date2._id, - unit); + static NSFileManager getDefaultManager() { + final _ret = _objc_msgSend_269(_class_NSFileManager, _sel_defaultManager); + return NSFileManager.castFromPointer(_ret, retain: true, release: true); } - bool isDate_inSameDayAsDate_(NSDate date1, NSDate date2) { - return _lib._objc_msgSend_788( - _id, _lib._sel_isDate_inSameDayAsDate_1, date1._id, date2._id); + objc.NSArray? mountedVolumeURLsIncludingResourceValuesForKeys_options_( + objc.NSArray? propertyKeys, int options) { + final _ret = _objc_msgSend_270( + this.pointer, + _sel_mountedVolumeURLsIncludingResourceValuesForKeys_options_, + propertyKeys?.pointer ?? ffi.nullptr, + options); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool isDateInToday_(NSDate date) { - return _lib._objc_msgSend_170(_id, _lib._sel_isDateInToday_1, date._id); + void unmountVolumeAtURL_options_completionHandler_( + objc.NSURL url, int mask, ObjCBlock_ffiVoid_NSError completionHandler) { + _objc_msgSend_271( + this.pointer, + _sel_unmountVolumeAtURL_options_completionHandler_, + url.pointer, + mask, + completionHandler.pointer); + } + + objc.NSArray? + contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_( + objc.NSURL url, + objc.NSArray? keys, + int mask, + ffi.Pointer> error) { + final _ret = _objc_msgSend_272( + this.pointer, + _sel_contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_, + url.pointer, + keys?.pointer ?? ffi.nullptr, + mask, + error); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool isDateInYesterday_(NSDate date) { - return _lib._objc_msgSend_170(_id, _lib._sel_isDateInYesterday_1, date._id); + objc.NSArray URLsForDirectory_inDomains_(int directory, int domainMask) { + final _ret = _objc_msgSend_273( + this.pointer, _sel_URLsForDirectory_inDomains_, directory, domainMask); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool isDateInTomorrow_(NSDate date) { - return _lib._objc_msgSend_170(_id, _lib._sel_isDateInTomorrow_1, date._id); + objc.NSURL? URLForDirectory_inDomain_appropriateForURL_create_error_( + int directory, + int domain, + objc.NSURL? url, + bool shouldCreate, + ffi.Pointer> error) { + final _ret = _objc_msgSend_274( + this.pointer, + _sel_URLForDirectory_inDomain_appropriateForURL_create_error_, + directory, + domain, + url?.pointer ?? ffi.nullptr, + shouldCreate, + error); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - bool isDateInWeekend_(NSDate date) { - return _lib._objc_msgSend_170(_id, _lib._sel_isDateInWeekend_1, date._id); + bool getRelationship_ofDirectoryAtURL_toItemAtURL_error_( + ffi.Pointer outRelationship, + objc.NSURL directoryURL, + objc.NSURL otherURL, + ffi.Pointer> error) { + return _objc_msgSend_275( + this.pointer, + _sel_getRelationship_ofDirectoryAtURL_toItemAtURL_error_, + outRelationship, + directoryURL.pointer, + otherURL.pointer, + error); } - bool rangeOfWeekendStartDate_interval_containingDate_( - ffi.Pointer> datep, - ffi.Pointer tip, - NSDate date) { - return _lib._objc_msgSend_789( - _id, - _lib._sel_rangeOfWeekendStartDate_interval_containingDate_1, - datep, - tip, - date._id); + bool getRelationship_ofDirectory_inDomain_toItemAtURL_error_( + ffi.Pointer outRelationship, + int directory, + int domainMask, + objc.NSURL url, + ffi.Pointer> error) { + return _objc_msgSend_276( + this.pointer, + _sel_getRelationship_ofDirectory_inDomain_toItemAtURL_error_, + outRelationship, + directory, + domainMask, + url.pointer, + error); } - bool nextWeekendStartDate_interval_options_afterDate_( - ffi.Pointer> datep, - ffi.Pointer tip, - int options, - NSDate date) { - return _lib._objc_msgSend_790( - _id, - _lib._sel_nextWeekendStartDate_interval_options_afterDate_1, - datep, - tip, - options, - date._id); + bool createDirectoryAtURL_withIntermediateDirectories_attributes_error_( + objc.NSURL url, + bool createIntermediates, + objc.NSDictionary? attributes, + ffi.Pointer> error) { + return _objc_msgSend_277( + this.pointer, + _sel_createDirectoryAtURL_withIntermediateDirectories_attributes_error_, + url.pointer, + createIntermediates, + attributes?.pointer ?? ffi.nullptr, + error); } - NSDateComponents components_fromDateComponents_toDateComponents_options_( - int unitFlags, - NSDateComponents startingDateComp, - NSDateComponents resultDateComp, - int options) { - final _ret = _lib._objc_msgSend_791( - _id, - _lib._sel_components_fromDateComponents_toDateComponents_options_1, - unitFlags, - startingDateComp._id, - resultDateComp._id, - options); - return NSDateComponents._(_ret, _lib, retain: true, release: true); + bool createSymbolicLinkAtURL_withDestinationURL_error_(objc.NSURL url, + objc.NSURL destURL, ffi.Pointer> error) { + return _objc_msgSend_278( + this.pointer, + _sel_createSymbolicLinkAtURL_withDestinationURL_error_, + url.pointer, + destURL.pointer, + error); } - NSDate? dateByAddingUnit_value_toDate_options_( - int unit, int value, NSDate date, int options) { - final _ret = _lib._objc_msgSend_792( - _id, - _lib._sel_dateByAddingUnit_value_toDate_options_1, - unit, - value, - date._id, - options); + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_( - NSDate start, - NSDateComponents comps, - int opts, - ObjCBlock_ffiVoid_NSDate_bool_bool block) { - _lib._objc_msgSend_793( - _id, - _lib._sel_enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_1, - start._id, - comps._id, - opts, - block._id); + set delegate(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDelegate_, value?.pointer ?? ffi.nullptr); } - NSDate? nextDateAfterDate_matchingComponents_options_( - NSDate date, NSDateComponents comps, int options) { - final _ret = _lib._objc_msgSend_794( - _id, - _lib._sel_nextDateAfterDate_matchingComponents_options_1, - date._id, - comps._id, - options); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + bool setAttributes_ofItemAtPath_error_(objc.NSDictionary attributes, + objc.NSString path, ffi.Pointer> error) { + return _objc_msgSend_279( + this.pointer, + _sel_setAttributes_ofItemAtPath_error_, + attributes.pointer, + path.pointer, + error); } - NSDate? nextDateAfterDate_matchingUnit_value_options_( - NSDate date, int unit, int value, int options) { - final _ret = _lib._objc_msgSend_795( - _id, - _lib._sel_nextDateAfterDate_matchingUnit_value_options_1, - date._id, - unit, - value, - options); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + bool createDirectoryAtPath_withIntermediateDirectories_attributes_error_( + objc.NSString path, + bool createIntermediates, + objc.NSDictionary? attributes, + ffi.Pointer> error) { + return _objc_msgSend_280( + this.pointer, + _sel_createDirectoryAtPath_withIntermediateDirectories_attributes_error_, + path.pointer, + createIntermediates, + attributes?.pointer ?? ffi.nullptr, + error); } - NSDate? nextDateAfterDate_matchingHour_minute_second_options_(NSDate date, - int hourValue, int minuteValue, int secondValue, int options) { - final _ret = _lib._objc_msgSend_796( - _id, - _lib._sel_nextDateAfterDate_matchingHour_minute_second_options_1, - date._id, - hourValue, - minuteValue, - secondValue, - options); + objc.NSArray? contentsOfDirectoryAtPath_error_( + objc.NSString path, ffi.Pointer> error) { + final _ret = _objc_msgSend_281(this.pointer, + _sel_contentsOfDirectoryAtPath_error_, path.pointer, error); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSDate? dateBySettingUnit_value_ofDate_options_( - int unit, int v, NSDate date, int opts) { - final _ret = _lib._objc_msgSend_792( - _id, - _lib._sel_dateBySettingUnit_value_ofDate_options_1, - unit, - v, - date._id, - opts); + objc.NSArray? subpathsOfDirectoryAtPath_error_( + objc.NSString path, ffi.Pointer> error) { + final _ret = _objc_msgSend_281(this.pointer, + _sel_subpathsOfDirectoryAtPath_error_, path.pointer, error); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSDate? dateBySettingHour_minute_second_ofDate_options_( - int h, int m, int s, NSDate date, int opts) { - final _ret = _lib._objc_msgSend_797( - _id, - _lib._sel_dateBySettingHour_minute_second_ofDate_options_1, - h, - m, - s, - date._id, - opts); + objc.NSDictionary? attributesOfItemAtPath_error_( + objc.NSString path, ffi.Pointer> error) { + final _ret = _objc_msgSend_282( + this.pointer, _sel_attributesOfItemAtPath_error_, path.pointer, error); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } - - bool date_matchesComponents_(NSDate date, NSDateComponents components) { - return _lib._objc_msgSend_798( - _id, _lib._sel_date_matchesComponents_1, date._id, components._id); - } - - static NSCalendar new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSCalendar1, _lib._sel_new1); - return NSCalendar._(_ret, _lib, retain: false, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSCalendar allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSCalendar1, _lib._sel_allocWithZone_1, zone); - return NSCalendar._(_ret, _lib, retain: false, release: true); + objc.NSDictionary? attributesOfFileSystemForPath_error_( + objc.NSString path, ffi.Pointer> error) { + final _ret = _objc_msgSend_282(this.pointer, + _sel_attributesOfFileSystemForPath_error_, path.pointer, error); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSCalendar alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSCalendar1, _lib._sel_alloc1); - return NSCalendar._(_ret, _lib, retain: false, release: true); + bool createSymbolicLinkAtPath_withDestinationPath_error_(objc.NSString path, + objc.NSString destPath, ffi.Pointer> error) { + return _objc_msgSend_283( + this.pointer, + _sel_createSymbolicLinkAtPath_withDestinationPath_error_, + path.pointer, + destPath.pointer, + error); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSCalendar1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + objc.NSString? destinationOfSymbolicLinkAtPath_error_( + objc.NSString path, ffi.Pointer> error) { + final _ret = _objc_msgSend_284(this.pointer, + _sel_destinationOfSymbolicLinkAtPath_error_, path.pointer, error); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSCalendar1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + bool copyItemAtPath_toPath_error_(objc.NSString srcPath, + objc.NSString dstPath, ffi.Pointer> error) { + return _objc_msgSend_283(this.pointer, _sel_copyItemAtPath_toPath_error_, + srcPath.pointer, dstPath.pointer, error); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSCalendar1, _lib._sel_accessInstanceVariablesDirectly1); + bool moveItemAtPath_toPath_error_(objc.NSString srcPath, + objc.NSString dstPath, ffi.Pointer> error) { + return _objc_msgSend_283(this.pointer, _sel_moveItemAtPath_toPath_error_, + srcPath.pointer, dstPath.pointer, error); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSCalendar1, _lib._sel_useStoredAccessor1); + bool linkItemAtPath_toPath_error_(objc.NSString srcPath, + objc.NSString dstPath, ffi.Pointer> error) { + return _objc_msgSend_283(this.pointer, _sel_linkItemAtPath_toPath_error_, + srcPath.pointer, dstPath.pointer, error); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSCalendar1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + bool removeItemAtPath_error_( + objc.NSString path, ffi.Pointer> error) { + return _objc_msgSend_285( + this.pointer, _sel_removeItemAtPath_error_, path.pointer, error); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSCalendar1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + bool copyItemAtURL_toURL_error_(objc.NSURL srcURL, objc.NSURL dstURL, + ffi.Pointer> error) { + return _objc_msgSend_278(this.pointer, _sel_copyItemAtURL_toURL_error_, + srcURL.pointer, dstURL.pointer, error); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSCalendar1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + bool moveItemAtURL_toURL_error_(objc.NSURL srcURL, objc.NSURL dstURL, + ffi.Pointer> error) { + return _objc_msgSend_278(this.pointer, _sel_moveItemAtURL_toURL_error_, + srcURL.pointer, dstURL.pointer, error); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSCalendar1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool linkItemAtURL_toURL_error_(objc.NSURL srcURL, objc.NSURL dstURL, + ffi.Pointer> error) { + return _objc_msgSend_278(this.pointer, _sel_linkItemAtURL_toURL_error_, + srcURL.pointer, dstURL.pointer, error); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSCalendar1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + bool removeItemAtURL_error_( + objc.NSURL URL, ffi.Pointer> error) { + return _objc_msgSend_286( + this.pointer, _sel_removeItemAtURL_error_, URL.pointer, error); } -} - -abstract class NSCalendarUnit { - static const int NSCalendarUnitEra = 2; - static const int NSCalendarUnitYear = 4; - static const int NSCalendarUnitMonth = 8; - static const int NSCalendarUnitDay = 16; - static const int NSCalendarUnitHour = 32; - static const int NSCalendarUnitMinute = 64; - static const int NSCalendarUnitSecond = 128; - static const int NSCalendarUnitWeekday = 512; - static const int NSCalendarUnitWeekdayOrdinal = 1024; - static const int NSCalendarUnitQuarter = 2048; - static const int NSCalendarUnitWeekOfMonth = 4096; - static const int NSCalendarUnitWeekOfYear = 8192; - static const int NSCalendarUnitYearForWeekOfYear = 16384; - static const int NSCalendarUnitNanosecond = 32768; - static const int NSCalendarUnitCalendar = 1048576; - static const int NSCalendarUnitTimeZone = 2097152; - static const int NSEraCalendarUnit = 2; - static const int NSYearCalendarUnit = 4; - static const int NSMonthCalendarUnit = 8; - static const int NSDayCalendarUnit = 16; - static const int NSHourCalendarUnit = 32; - static const int NSMinuteCalendarUnit = 64; - static const int NSSecondCalendarUnit = 128; - static const int NSWeekCalendarUnit = 256; - static const int NSWeekdayCalendarUnit = 512; - static const int NSWeekdayOrdinalCalendarUnit = 1024; - static const int NSQuarterCalendarUnit = 2048; - static const int NSWeekOfMonthCalendarUnit = 4096; - static const int NSWeekOfYearCalendarUnit = 8192; - static const int NSYearForWeekOfYearCalendarUnit = 16384; - static const int NSCalendarCalendarUnit = 1048576; - static const int NSTimeZoneCalendarUnit = 2097152; -} - -class NSDateComponents extends NSObject { - NSDateComponents._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSDateComponents] that points to the same underlying object as [other]. - static NSDateComponents castFrom(T other) { - return NSDateComponents._(other._id, other._lib, - retain: true, release: true); + bool trashItemAtURL_resultingItemURL_error_( + objc.NSURL url, + ffi.Pointer> outResultingURL, + ffi.Pointer> error) { + return _objc_msgSend_287( + this.pointer, + _sel_trashItemAtURL_resultingItemURL_error_, + url.pointer, + outResultingURL, + error); } - /// Returns a [NSDateComponents] that wraps the given raw object pointer. - static NSDateComponents castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSDateComponents._(other, lib, retain: retain, release: release); + objc.NSDictionary? fileAttributesAtPath_traverseLink_( + objc.NSString path, bool yorn) { + final _ret = _objc_msgSend_288(this.pointer, + _sel_fileAttributesAtPath_traverseLink_, path.pointer, yorn); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSDateComponents]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSDateComponents1); + bool changeFileAttributes_atPath_( + objc.NSDictionary attributes, objc.NSString path) { + return _objc_msgSend_289(this.pointer, _sel_changeFileAttributes_atPath_, + attributes.pointer, path.pointer); } - NSCalendar? get calendar { - final _ret = _lib._objc_msgSend_771(_id, _lib._sel_calendar1); + objc.NSArray? directoryContentsAtPath_(objc.NSString path) { + final _ret = _objc_msgSend_290( + this.pointer, _sel_directoryContentsAtPath_, path.pointer); return _ret.address == 0 ? null - : NSCalendar._(_ret, _lib, retain: true, release: true); - } - - set calendar(NSCalendar? value) { - return _lib._objc_msgSend_772( - _id, _lib._sel_setCalendar_1, value?._id ?? ffi.nullptr); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSTimeZone? get timeZone { - final _ret = _lib._objc_msgSend_773(_id, _lib._sel_timeZone1); + objc.NSDictionary? fileSystemAttributesAtPath_(objc.NSString path) { + final _ret = _objc_msgSend_291( + this.pointer, _sel_fileSystemAttributesAtPath_, path.pointer); return _ret.address == 0 ? null - : NSTimeZone._(_ret, _lib, retain: true, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - set timeZone(NSTimeZone? value) { - return _lib._objc_msgSend_774( - _id, _lib._sel_setTimeZone_1, value?._id ?? ffi.nullptr); + objc.NSString? pathContentOfSymbolicLinkAtPath_(objc.NSString path) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_pathContentOfSymbolicLinkAtPath_, path.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - int get era { - return _lib._objc_msgSend_83(_id, _lib._sel_era1); + bool createSymbolicLinkAtPath_pathContent_( + objc.NSString path, objc.NSString otherpath) { + return _objc_msgSend_292( + this.pointer, + _sel_createSymbolicLinkAtPath_pathContent_, + path.pointer, + otherpath.pointer); } - set era(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setEra_1, value); + bool createDirectoryAtPath_attributes_( + objc.NSString path, objc.NSDictionary attributes) { + return _objc_msgSend_293( + this.pointer, + _sel_createDirectoryAtPath_attributes_, + path.pointer, + attributes.pointer); } - int get year { - return _lib._objc_msgSend_83(_id, _lib._sel_year1); + bool linkPath_toPath_handler_( + objc.NSString src, objc.NSString dest, objc.NSObject? handler) { + return _objc_msgSend_294(this.pointer, _sel_linkPath_toPath_handler_, + src.pointer, dest.pointer, handler?.pointer ?? ffi.nullptr); } - set year(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setYear_1, value); + bool copyPath_toPath_handler_( + objc.NSString src, objc.NSString dest, objc.NSObject? handler) { + return _objc_msgSend_294(this.pointer, _sel_copyPath_toPath_handler_, + src.pointer, dest.pointer, handler?.pointer ?? ffi.nullptr); } - int get month { - return _lib._objc_msgSend_83(_id, _lib._sel_month1); + bool movePath_toPath_handler_( + objc.NSString src, objc.NSString dest, objc.NSObject? handler) { + return _objc_msgSend_294(this.pointer, _sel_movePath_toPath_handler_, + src.pointer, dest.pointer, handler?.pointer ?? ffi.nullptr); } - set month(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setMonth_1, value); + bool removeFileAtPath_handler_(objc.NSString path, objc.NSObject? handler) { + return _objc_msgSend_295(this.pointer, _sel_removeFileAtPath_handler_, + path.pointer, handler?.pointer ?? ffi.nullptr); } - int get day { - return _lib._objc_msgSend_83(_id, _lib._sel_day1); + objc.NSString get currentDirectoryPath { + final _ret = _objc_msgSend_12(this.pointer, _sel_currentDirectoryPath); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set day(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setDay_1, value); + bool changeCurrentDirectoryPath_(objc.NSString path) { + return _objc_msgSend_51( + this.pointer, _sel_changeCurrentDirectoryPath_, path.pointer); } - int get hour { - return _lib._objc_msgSend_83(_id, _lib._sel_hour1); + bool fileExistsAtPath_(objc.NSString path) { + return _objc_msgSend_51(this.pointer, _sel_fileExistsAtPath_, path.pointer); } - set hour(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setHour_1, value); + bool fileExistsAtPath_isDirectory_( + objc.NSString path, ffi.Pointer isDirectory) { + return _objc_msgSend_296(this.pointer, _sel_fileExistsAtPath_isDirectory_, + path.pointer, isDirectory); } - int get minute { - return _lib._objc_msgSend_83(_id, _lib._sel_minute1); + bool isReadableFileAtPath_(objc.NSString path) { + return _objc_msgSend_51( + this.pointer, _sel_isReadableFileAtPath_, path.pointer); } - set minute(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setMinute_1, value); + bool isWritableFileAtPath_(objc.NSString path) { + return _objc_msgSend_51( + this.pointer, _sel_isWritableFileAtPath_, path.pointer); } - int get second { - return _lib._objc_msgSend_83(_id, _lib._sel_second1); + bool isExecutableFileAtPath_(objc.NSString path) { + return _objc_msgSend_51( + this.pointer, _sel_isExecutableFileAtPath_, path.pointer); } - set second(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setSecond_1, value); + bool isDeletableFileAtPath_(objc.NSString path) { + return _objc_msgSend_51( + this.pointer, _sel_isDeletableFileAtPath_, path.pointer); } - int get nanosecond { - return _lib._objc_msgSend_83(_id, _lib._sel_nanosecond1); + bool contentsEqualAtPath_andPath_(objc.NSString path1, objc.NSString path2) { + return _objc_msgSend_292(this.pointer, _sel_contentsEqualAtPath_andPath_, + path1.pointer, path2.pointer); } - set nanosecond(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setNanosecond_1, value); + objc.NSString displayNameAtPath_(objc.NSString path) { + final _ret = + _objc_msgSend_297(this.pointer, _sel_displayNameAtPath_, path.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - int get weekday { - return _lib._objc_msgSend_83(_id, _lib._sel_weekday1); + objc.NSArray? componentsToDisplayForPath_(objc.NSString path) { + final _ret = _objc_msgSend_290( + this.pointer, _sel_componentsToDisplayForPath_, path.pointer); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set weekday(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setWeekday_1, value); + objc.NSObject? enumeratorAtPath_(objc.NSString path) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_enumeratorAtPath_, path.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - int get weekdayOrdinal { - return _lib._objc_msgSend_83(_id, _lib._sel_weekdayOrdinal1); + objc.NSObject? + enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_( + objc.NSURL url, + objc.NSArray? keys, + int mask, + ObjCBlock_bool_NSURL_NSError? handler) { + final _ret = _objc_msgSend_298( + this.pointer, + _sel_enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_, + url.pointer, + keys?.pointer ?? ffi.nullptr, + mask, + handler?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set weekdayOrdinal(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setWeekdayOrdinal_1, value); + objc.NSArray? subpathsAtPath_(objc.NSString path) { + final _ret = + _objc_msgSend_290(this.pointer, _sel_subpathsAtPath_, path.pointer); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int get quarter { - return _lib._objc_msgSend_83(_id, _lib._sel_quarter1); + objc.NSData? contentsAtPath_(objc.NSString path) { + final _ret = + _objc_msgSend_299(this.pointer, _sel_contentsAtPath_, path.pointer); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - set quarter(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setQuarter_1, value); + bool createFileAtPath_contents_attributes_( + objc.NSString path, objc.NSData? data, objc.NSDictionary? attr) { + return _objc_msgSend_300( + this.pointer, + _sel_createFileAtPath_contents_attributes_, + path.pointer, + data?.pointer ?? ffi.nullptr, + attr?.pointer ?? ffi.nullptr); } - int get weekOfMonth { - return _lib._objc_msgSend_83(_id, _lib._sel_weekOfMonth1); + ffi.Pointer fileSystemRepresentationWithPath_(objc.NSString path) { + return _objc_msgSend_301( + this.pointer, _sel_fileSystemRepresentationWithPath_, path.pointer); } - set weekOfMonth(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setWeekOfMonth_1, value); + objc.NSString stringWithFileSystemRepresentation_length_( + ffi.Pointer str, int len) { + final _ret = _objc_msgSend_302(this.pointer, + _sel_stringWithFileSystemRepresentation_length_, str, len); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - int get weekOfYear { - return _lib._objc_msgSend_83(_id, _lib._sel_weekOfYear1); + bool + replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_( + objc.NSURL originalItemURL, + objc.NSURL newItemURL, + objc.NSString? backupItemName, + int options, + ffi.Pointer> resultingURL, + ffi.Pointer> error) { + return _objc_msgSend_303( + this.pointer, + _sel_replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_, + originalItemURL.pointer, + newItemURL.pointer, + backupItemName?.pointer ?? ffi.nullptr, + options, + resultingURL, + error); } - set weekOfYear(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setWeekOfYear_1, value); + bool setUbiquitous_itemAtURL_destinationURL_error_( + bool flag, + objc.NSURL url, + objc.NSURL destinationURL, + ffi.Pointer> error) { + return _objc_msgSend_304( + this.pointer, + _sel_setUbiquitous_itemAtURL_destinationURL_error_, + flag, + url.pointer, + destinationURL.pointer, + error); } - int get yearForWeekOfYear { - return _lib._objc_msgSend_83(_id, _lib._sel_yearForWeekOfYear1); + bool isUbiquitousItemAtURL_(objc.NSURL url) { + return _objc_msgSend_305( + this.pointer, _sel_isUbiquitousItemAtURL_, url.pointer); } - set yearForWeekOfYear(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setYearForWeekOfYear_1, value); + bool startDownloadingUbiquitousItemAtURL_error_( + objc.NSURL url, ffi.Pointer> error) { + return _objc_msgSend_286(this.pointer, + _sel_startDownloadingUbiquitousItemAtURL_error_, url.pointer, error); } - bool get leapMonth { - return _lib._objc_msgSend_12(_id, _lib._sel_isLeapMonth1); + bool evictUbiquitousItemAtURL_error_( + objc.NSURL url, ffi.Pointer> error) { + return _objc_msgSend_286( + this.pointer, _sel_evictUbiquitousItemAtURL_error_, url.pointer, error); } - set leapMonth(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setLeapMonth_1, value); + objc.NSURL? URLForUbiquityContainerIdentifier_( + objc.NSString? containerIdentifier) { + final _ret = _objc_msgSend_306( + this.pointer, + _sel_URLForUbiquityContainerIdentifier_, + containerIdentifier?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - NSDate? get date { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_date1); + objc.NSURL? URLForPublishingUbiquitousItemAtURL_expirationDate_error_( + objc.NSURL url, + ffi.Pointer> outDate, + ffi.Pointer> error) { + final _ret = _objc_msgSend_307( + this.pointer, + _sel_URLForPublishingUbiquitousItemAtURL_expirationDate_error_, + url.pointer, + outDate, + error); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - int week() { - return _lib._objc_msgSend_83(_id, _lib._sel_week1); + objc.NSObject? get ubiquityIdentityToken { + final _ret = _objc_msgSend_66(this.pointer, _sel_ubiquityIdentityToken); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void setWeek_(int v) { - _lib._objc_msgSend_423(_id, _lib._sel_setWeek_1, v); + void getFileProviderServicesForItemAtURL_completionHandler_(objc.NSURL url, + ObjCBlock_ffiVoid_NSDictionary_NSError completionHandler) { + _objc_msgSend_308( + this.pointer, + _sel_getFileProviderServicesForItemAtURL_completionHandler_, + url.pointer, + completionHandler.pointer); } - void setValue_forComponent_(int value, int unit) { - _lib._objc_msgSend_775(_id, _lib._sel_setValue_forComponent_1, value, unit); + objc.NSURL? containerURLForSecurityApplicationGroupIdentifier_( + objc.NSString groupIdentifier) { + final _ret = _objc_msgSend_11( + this.pointer, + _sel_containerURLForSecurityApplicationGroupIdentifier_, + groupIdentifier.pointer); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - int valueForComponent_(int unit) { - return _lib._objc_msgSend_776(_id, _lib._sel_valueForComponent_1, unit); + objc.NSURL get homeDirectoryForCurrentUser { + final _ret = + _objc_msgSend_9(this.pointer, _sel_homeDirectoryForCurrentUser); + return objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - bool get validDate { - return _lib._objc_msgSend_12(_id, _lib._sel_isValidDate1); + objc.NSURL get temporaryDirectory { + final _ret = _objc_msgSend_9(this.pointer, _sel_temporaryDirectory); + return objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - bool isValidDateInCalendar_(NSCalendar calendar) { - return _lib._objc_msgSend_777( - _id, _lib._sel_isValidDateInCalendar_1, calendar._id); + objc.NSURL? homeDirectoryForUser_(objc.NSString userName) { + final _ret = _objc_msgSend_11( + this.pointer, _sel_homeDirectoryForUser_, userName.pointer); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } @override - NSDateComponents init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSDateComponents._(_ret, _lib, retain: true, release: true); + NSFileManager init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSFileManager.castFromPointer(_ret, retain: true, release: true); } - static NSDateComponents new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSDateComponents1, _lib._sel_new1); - return NSDateComponents._(_ret, _lib, retain: false, release: true); + static NSFileManager new1() { + final _ret = _objc_msgSend_40(_class_NSFileManager, _sel_new); + return NSFileManager.castFromPointer(_ret, retain: false, release: true); } - static NSDateComponents allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSDateComponents1, _lib._sel_allocWithZone_1, zone); - return NSDateComponents._(_ret, _lib, retain: false, release: true); + static NSFileManager allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSFileManager, _sel_allocWithZone_, zone); + return NSFileManager.castFromPointer(_ret, retain: false, release: true); } - static NSDateComponents alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSDateComponents1, _lib._sel_alloc1); - return NSDateComponents._(_ret, _lib, retain: false, release: true); + static NSFileManager alloc() { + final _ret = _objc_msgSend_40(_class_NSFileManager, _sel_alloc); + return NSFileManager.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSDateComponents1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSFileManager, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSDateComponents1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSFileManager, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSDateComponents1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSFileManager, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSDateComponents1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSFileManager, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSDateComponents1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSFileManager, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSDateComponents1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSFileManager, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSDateComponents1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSFileManager, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSDateComponents1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSFileManager, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSDateComponents1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSFileManager, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -abstract class NSCalendarOptions { - static const int NSCalendarWrapComponents = 1; - static const int NSCalendarMatchStrictly = 2; - static const int NSCalendarSearchBackwards = 4; - static const int NSCalendarMatchPreviousTimePreservingSmallerUnits = 256; - static const int NSCalendarMatchNextTimePreservingSmallerUnits = 512; - static const int NSCalendarMatchNextTime = 1024; - static const int NSCalendarMatchFirst = 4096; - static const int NSCalendarMatchLast = 8192; +late final _class_NSFileManager = objc.getClass("NSFileManager"); +late final _sel_defaultManager = objc.registerName("defaultManager"); +final _objc_msgSend_269 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSVolumeEnumerationOptions { + static const int NSVolumeEnumerationSkipHiddenVolumes = 2; + static const int NSVolumeEnumerationProduceFileReferenceURLs = 4; } -void _ObjCBlock_ffiVoid_NSDate_bool_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - bool arg1, - ffi.Pointer arg2) => +late final _sel_mountedVolumeURLsIncludingResourceValuesForKeys_options_ = objc + .registerName("mountedVolumeURLsIncludingResourceValuesForKeys:options:"); +final _objc_msgSend_270 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); + +abstract class NSFileManagerUnmountOptions { + static const int NSFileManagerUnmountAllPartitionsAndEjectDisk = 1; + static const int NSFileManagerUnmountWithoutUI = 2; +} + +void _ObjCBlock_ffiVoid_NSError_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => block.ref.target .cast< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, bool, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistry = , bool, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSDate_bool_bool_registerClosure( - void Function(ffi.Pointer, bool, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistry[id] = fn; + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSError_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSError_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSError_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSDate_bool_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - bool arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); +void _ObjCBlock_ffiVoid_NSError_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSError_closureRegistry[block.ref.target.address]!(arg0); -class ObjCBlock_ffiVoid_NSDate_bool_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSDate_bool_bool._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, +class ObjCBlock_ffiVoid_NSError extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSError._(ffi.Pointer pointer, {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSDate_bool_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSDate_bool_bool._(pointer, lib, + static ObjCBlock_ffiVoid_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSError._(pointer, retain: retain, release: release); } @@ -60262,25 +12482,18 @@ class ObjCBlock_ffiVoid_NSDate_bool_bool extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSDate_bool_bool.fromFunctionPointer( - AVFAudio lib, + ObjCBlock_ffiVoid_NSError.fromFunctionPointer( ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, - ffi.Pointer arg2)>> + ffi.Void Function(ffi.Pointer arg0)>> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDate_bool_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -60288,23 +12501,18 @@ class ObjCBlock_ffiVoid_NSDate_bool_bool extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSDate_bool_bool.fromFunction( - AVFAudio lib, void Function(NSDate?, bool, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDate_bool_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSDate_bool_bool_registerClosure( - (ffi.Pointer arg0, bool arg1, - ffi.Pointer arg2) => - fn(arg0.address == 0 ? null : NSDate._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); + ObjCBlock_ffiVoid_NSError.fromFunction(void Function(objc.NSError?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSError_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSError.castFromPointer(arg0, + retain: true, release: true))))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -60316,1896 +12524,3558 @@ class ObjCBlock_ffiVoid_NSDate_bool_bool extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSDate_bool_bool.listener( - AVFAudio lib, void Function(NSDate?, bool, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSDate_bool_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSDate_bool_bool_registerClosure( - (ffi.Pointer arg0, bool arg1, - ffi.Pointer arg2) => - fn(arg0.address == 0 ? null : NSDate._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); + ObjCBlock_ffiVoid_NSError.listener(void Function(objc.NSError?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSError_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSError_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSError.castFromPointer(arg0, retain: true, release: true))))); static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Bool, ffi.Pointer)>? _dartFuncListenerTrampoline; + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; - void call(NSDate? arg0, bool arg1, ffi.Pointer arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Bool arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer, bool, ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1, arg2); + void call(objc.NSError? arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function( + ffi.Pointer, ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr); +} + +late final _sel_unmountVolumeAtURL_options_completionHandler_ = + objc.registerName("unmountVolumeAtURL:options:completionHandler:"); +final _objc_msgSend_271 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); + +abstract class NSDirectoryEnumerationOptions { + static const int NSDirectoryEnumerationSkipsSubdirectoryDescendants = 1; + static const int NSDirectoryEnumerationSkipsPackageDescendants = 2; + static const int NSDirectoryEnumerationSkipsHiddenFiles = 4; + static const int NSDirectoryEnumerationIncludesDirectoriesPostOrder = 8; + static const int NSDirectoryEnumerationProducesRelativePathURLs = 16; } -class NSNumberFormatter extends NSFormatter { - NSNumberFormatter._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); +late final _sel_contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_ = + objc.registerName( + "contentsOfDirectoryAtURL:includingPropertiesForKeys:options:error:"); +final _objc_msgSend_272 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); - /// Returns a [NSNumberFormatter] that points to the same underlying object as [other]. - static NSNumberFormatter castFrom(T other) { - return NSNumberFormatter._(other._id, other._lib, - retain: true, release: true); - } +abstract class NSSearchPathDirectory { + static const int NSApplicationDirectory = 1; + static const int NSDemoApplicationDirectory = 2; + static const int NSDeveloperApplicationDirectory = 3; + static const int NSAdminApplicationDirectory = 4; + static const int NSLibraryDirectory = 5; + static const int NSDeveloperDirectory = 6; + static const int NSUserDirectory = 7; + static const int NSDocumentationDirectory = 8; + static const int NSDocumentDirectory = 9; + static const int NSCoreServiceDirectory = 10; + static const int NSAutosavedInformationDirectory = 11; + static const int NSDesktopDirectory = 12; + static const int NSCachesDirectory = 13; + static const int NSApplicationSupportDirectory = 14; + static const int NSDownloadsDirectory = 15; + static const int NSInputMethodsDirectory = 16; + static const int NSMoviesDirectory = 17; + static const int NSMusicDirectory = 18; + static const int NSPicturesDirectory = 19; + static const int NSPrinterDescriptionDirectory = 20; + static const int NSSharedPublicDirectory = 21; + static const int NSPreferencePanesDirectory = 22; + static const int NSApplicationScriptsDirectory = 23; + static const int NSItemReplacementDirectory = 99; + static const int NSAllApplicationsDirectory = 100; + static const int NSAllLibrariesDirectory = 101; + static const int NSTrashDirectory = 102; +} - /// Returns a [NSNumberFormatter] that wraps the given raw object pointer. - static NSNumberFormatter castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSNumberFormatter._(other, lib, retain: retain, release: release); - } +abstract class NSSearchPathDomainMask { + static const int NSUserDomainMask = 1; + static const int NSLocalDomainMask = 2; + static const int NSNetworkDomainMask = 4; + static const int NSSystemDomainMask = 8; + static const int NSAllDomainsMask = 65535; +} - /// Returns whether [obj] is an instance of [NSNumberFormatter]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSNumberFormatter1); - } +late final _sel_URLsForDirectory_inDomains_ = + objc.registerName("URLsForDirectory:inDomains:"); +final _objc_msgSend_273 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32, ffi.Int32)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, int)>(); +late final _sel_URLForDirectory_inDomain_appropriateForURL_create_error_ = objc + .registerName("URLForDirectory:inDomain:appropriateForURL:create:error:"); +final _objc_msgSend_274 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer, + ffi.Bool, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer, + bool, + ffi.Pointer>)>(); - int get formattingContext { - return _lib._objc_msgSend_752(_id, _lib._sel_formattingContext1); - } +abstract class NSURLRelationship { + static const int NSURLRelationshipContains = 0; + static const int NSURLRelationshipSame = 1; + static const int NSURLRelationshipOther = 2; +} - set formattingContext(int value) { - return _lib._objc_msgSend_753(_id, _lib._sel_setFormattingContext_1, value); - } +late final _sel_getRelationship_ofDirectoryAtURL_toItemAtURL_error_ = + objc.registerName("getRelationship:ofDirectoryAtURL:toItemAtURL:error:"); +final _objc_msgSend_275 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_getRelationship_ofDirectory_inDomain_toItemAtURL_error_ = objc + .registerName("getRelationship:ofDirectory:inDomain:toItemAtURL:error:"); +final _objc_msgSend_276 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_createDirectoryAtURL_withIntermediateDirectories_attributes_error_ = + objc.registerName( + "createDirectoryAtURL:withIntermediateDirectories:attributes:error:"); +final _objc_msgSend_277 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_createSymbolicLinkAtURL_withDestinationURL_error_ = + objc.registerName("createSymbolicLinkAtURL:withDestinationURL:error:"); +final _objc_msgSend_278 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_setAttributes_ofItemAtPath_error_ = + objc.registerName("setAttributes:ofItemAtPath:error:"); +final _objc_msgSend_279 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_createDirectoryAtPath_withIntermediateDirectories_attributes_error_ = + objc.registerName( + "createDirectoryAtPath:withIntermediateDirectories:attributes:error:"); +final _objc_msgSend_280 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_contentsOfDirectoryAtPath_error_ = + objc.registerName("contentsOfDirectoryAtPath:error:"); +final _objc_msgSend_281 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_subpathsOfDirectoryAtPath_error_ = + objc.registerName("subpathsOfDirectoryAtPath:error:"); +late final _sel_attributesOfItemAtPath_error_ = + objc.registerName("attributesOfItemAtPath:error:"); +final _objc_msgSend_282 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_attributesOfFileSystemForPath_error_ = + objc.registerName("attributesOfFileSystemForPath:error:"); +late final _sel_createSymbolicLinkAtPath_withDestinationPath_error_ = + objc.registerName("createSymbolicLinkAtPath:withDestinationPath:error:"); +final _objc_msgSend_283 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_destinationOfSymbolicLinkAtPath_error_ = + objc.registerName("destinationOfSymbolicLinkAtPath:error:"); +final _objc_msgSend_284 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_copyItemAtPath_toPath_error_ = + objc.registerName("copyItemAtPath:toPath:error:"); +late final _sel_moveItemAtPath_toPath_error_ = + objc.registerName("moveItemAtPath:toPath:error:"); +late final _sel_linkItemAtPath_toPath_error_ = + objc.registerName("linkItemAtPath:toPath:error:"); +late final _sel_removeItemAtPath_error_ = + objc.registerName("removeItemAtPath:error:"); +final _objc_msgSend_285 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_copyItemAtURL_toURL_error_ = + objc.registerName("copyItemAtURL:toURL:error:"); +late final _sel_moveItemAtURL_toURL_error_ = + objc.registerName("moveItemAtURL:toURL:error:"); +late final _sel_linkItemAtURL_toURL_error_ = + objc.registerName("linkItemAtURL:toURL:error:"); +late final _sel_removeItemAtURL_error_ = + objc.registerName("removeItemAtURL:error:"); +final _objc_msgSend_286 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_trashItemAtURL_resultingItemURL_error_ = + objc.registerName("trashItemAtURL:resultingItemURL:error:"); +final _objc_msgSend_287 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); +late final _sel_fileAttributesAtPath_traverseLink_ = + objc.registerName("fileAttributesAtPath:traverseLink:"); +final _objc_msgSend_288 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_changeFileAttributes_atPath_ = + objc.registerName("changeFileAttributes:atPath:"); +final _objc_msgSend_289 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_directoryContentsAtPath_ = + objc.registerName("directoryContentsAtPath:"); +final _objc_msgSend_290 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_fileSystemAttributesAtPath_ = + objc.registerName("fileSystemAttributesAtPath:"); +final _objc_msgSend_291 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_pathContentOfSymbolicLinkAtPath_ = + objc.registerName("pathContentOfSymbolicLinkAtPath:"); +late final _sel_createSymbolicLinkAtPath_pathContent_ = + objc.registerName("createSymbolicLinkAtPath:pathContent:"); +final _objc_msgSend_292 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_createDirectoryAtPath_attributes_ = + objc.registerName("createDirectoryAtPath:attributes:"); +final _objc_msgSend_293 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_linkPath_toPath_handler_ = + objc.registerName("linkPath:toPath:handler:"); +final _objc_msgSend_294 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_copyPath_toPath_handler_ = + objc.registerName("copyPath:toPath:handler:"); +late final _sel_movePath_toPath_handler_ = + objc.registerName("movePath:toPath:handler:"); +late final _sel_removeFileAtPath_handler_ = + objc.registerName("removeFileAtPath:handler:"); +final _objc_msgSend_295 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_currentDirectoryPath = + objc.registerName("currentDirectoryPath"); +late final _sel_changeCurrentDirectoryPath_ = + objc.registerName("changeCurrentDirectoryPath:"); +late final _sel_fileExistsAtPath_ = objc.registerName("fileExistsAtPath:"); +late final _sel_fileExistsAtPath_isDirectory_ = + objc.registerName("fileExistsAtPath:isDirectory:"); +final _objc_msgSend_296 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_isReadableFileAtPath_ = + objc.registerName("isReadableFileAtPath:"); +late final _sel_isWritableFileAtPath_ = + objc.registerName("isWritableFileAtPath:"); +late final _sel_isExecutableFileAtPath_ = + objc.registerName("isExecutableFileAtPath:"); +late final _sel_isDeletableFileAtPath_ = + objc.registerName("isDeletableFileAtPath:"); +late final _sel_contentsEqualAtPath_andPath_ = + objc.registerName("contentsEqualAtPath:andPath:"); +late final _sel_displayNameAtPath_ = objc.registerName("displayNameAtPath:"); +final _objc_msgSend_297 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_componentsToDisplayForPath_ = + objc.registerName("componentsToDisplayForPath:"); +late final _sel_enumeratorAtPath_ = objc.registerName("enumeratorAtPath:"); +bool _ObjCBlock_bool_NSURL_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +final _ObjCBlock_bool_NSURL_NSError_closureRegistry = , ffi.Pointer)>{}; +int _ObjCBlock_bool_NSURL_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_bool_NSURL_NSError_registerClosure( + bool Function(ffi.Pointer, ffi.Pointer) + fn) { + final id = ++_ObjCBlock_bool_NSURL_NSError_closureRegistryIndex; + _ObjCBlock_bool_NSURL_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - bool getObjectValue_forString_range_error_( - ffi.Pointer> obj, - NSString string, - ffi.Pointer<_NSRange> rangep, - ffi.Pointer> error) { - return _lib._objc_msgSend_754( - _id, - _lib._sel_getObjectValue_forString_range_error_1, - obj, - string._id, - rangep, - error); - } +bool _ObjCBlock_bool_NSURL_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + _ObjCBlock_bool_NSURL_NSError_closureRegistry[block.ref.target.address]!( + arg0, arg1); - NSString? stringFromNumber_(NSNumber number) { - final _ret = - _lib._objc_msgSend_802(_id, _lib._sel_stringFromNumber_1, number._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } +class ObjCBlock_bool_NSURL_NSError extends objc.ObjCBlockBase { + ObjCBlock_bool_NSURL_NSError._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - NSNumber? numberFromString_(NSString string) { - final _ret = - _lib._objc_msgSend_803(_id, _lib._sel_numberFromString_1, string._id); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_bool_NSURL_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_bool_NSURL_NSError._(pointer, + retain: retain, release: release); } - static NSString localizedStringFromNumber_numberStyle_( - AVFAudio _lib, NSNumber num, int nstyle) { - final _ret = _lib._objc_msgSend_804(_lib._class_NSNumberFormatter1, - _lib._sel_localizedStringFromNumber_numberStyle_1, num._id, nstyle); - return NSString._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_NSURL_NSError.fromFunctionPointer( + ffi.Pointer arg0, ffi.Pointer arg1)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_NSURL_NSError_fnPtrTrampoline, false) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - static int defaultFormatterBehavior(AVFAudio _lib) { - return _lib._objc_msgSend_805( - _lib._class_NSNumberFormatter1, _lib._sel_defaultFormatterBehavior1); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_NSURL_NSError.fromFunction(bool Function(objc.NSURL, objc.NSError) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_NSURL_NSError_closureTrampoline, false) + .cast(), + _ObjCBlock_bool_NSURL_NSError_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1) => + fn(objc.NSURL.castFromPointer(arg0, retain: true, release: true), objc.NSError.castFromPointer(arg1, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; - static void setDefaultFormatterBehavior_(AVFAudio _lib, int behavior) { - _lib._objc_msgSend_806(_lib._class_NSNumberFormatter1, - _lib._sel_setDefaultFormatterBehavior_1, behavior); - } + bool call(objc.NSURL arg0, objc.NSError arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0.pointer, arg1.pointer); +} + +late final _sel_enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_ = + objc.registerName( + "enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:"); +final _objc_msgSend_298 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_subpathsAtPath_ = objc.registerName("subpathsAtPath:"); +late final _sel_contentsAtPath_ = objc.registerName("contentsAtPath:"); +final _objc_msgSend_299 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_createFileAtPath_contents_attributes_ = + objc.registerName("createFileAtPath:contents:attributes:"); +final _objc_msgSend_300 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_fileSystemRepresentationWithPath_ = + objc.registerName("fileSystemRepresentationWithPath:"); +final _objc_msgSend_301 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_stringWithFileSystemRepresentation_length_ = + objc.registerName("stringWithFileSystemRepresentation:length:"); +final _objc_msgSend_302 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); - int get numberStyle { - return _lib._objc_msgSend_807(_id, _lib._sel_numberStyle1); - } +abstract class NSFileManagerItemReplacementOptions { + static const int NSFileManagerItemReplacementUsingNewMetadataOnly = 1; + static const int NSFileManagerItemReplacementWithoutDeletingBackupItem = 2; +} - set numberStyle(int value) { - return _lib._objc_msgSend_808(_id, _lib._sel_setNumberStyle_1, value); - } +late final _sel_replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_ = + objc.registerName( + "replaceItemAtURL:withItemAtURL:backupItemName:options:resultingItemURL:error:"); +final _objc_msgSend_303 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer>)>(); +late final _sel_setUbiquitous_itemAtURL_destinationURL_error_ = + objc.registerName("setUbiquitous:itemAtURL:destinationURL:error:"); +final _objc_msgSend_304 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_isUbiquitousItemAtURL_ = + objc.registerName("isUbiquitousItemAtURL:"); +final _objc_msgSend_305 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_startDownloadingUbiquitousItemAtURL_error_ = + objc.registerName("startDownloadingUbiquitousItemAtURL:error:"); +late final _sel_evictUbiquitousItemAtURL_error_ = + objc.registerName("evictUbiquitousItemAtURL:error:"); +late final _sel_URLForUbiquityContainerIdentifier_ = + objc.registerName("URLForUbiquityContainerIdentifier:"); +final _objc_msgSend_306 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_URLForPublishingUbiquitousItemAtURL_expirationDate_error_ = objc + .registerName("URLForPublishingUbiquitousItemAtURL:expirationDate:error:"); +final _objc_msgSend_307 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); +late final _sel_ubiquityIdentityToken = + objc.registerName("ubiquityIdentityToken"); +void _ObjCBlock_ffiVoid_NSDictionary_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +final _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistry = , ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSDictionary_NSError_registerClosure( + void Function(ffi.Pointer, ffi.Pointer) + fn) { + final id = ++_ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - NSLocale get locale { - final _ret = _lib._objc_msgSend_197(_id, _lib._sel_locale1); - return NSLocale._(_ret, _lib, retain: true, release: true); - } +void _ObjCBlock_ffiVoid_NSDictionary_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistry[ + block.ref.target.address]!(arg0, arg1); - set locale(NSLocale value) { - return _lib._objc_msgSend_762(_id, _lib._sel_setLocale_1, value._id); - } +class ObjCBlock_ffiVoid_NSDictionary_NSError extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSDictionary_NSError._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - bool get generatesDecimalNumbers { - return _lib._objc_msgSend_12(_id, _lib._sel_generatesDecimalNumbers1); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSDictionary_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSDictionary_NSError._(pointer, + retain: retain, release: release); } - set generatesDecimalNumbers(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setGeneratesDecimalNumbers_1, value); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSDictionary_NSError.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDictionary_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSDictionary_NSError.fromFunction( + void Function(objc.NSDictionary?, objc.NSError?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= + ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDictionary_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSDictionary_NSError_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : objc.NSDictionary.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : objc.NSError.castFromPointer(arg1, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSDictionary_NSError.listener( + void Function(objc.NSDictionary?, objc.NSError?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= + ffi.NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSDictionary_NSError_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSDictionary_NSError_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : objc.NSDictionary.castFromPointer(arg0, + retain: true, release: true), + arg1.address == 0 ? null : objc.NSError.castFromPointer(arg1, retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(objc.NSDictionary? arg0, objc.NSError? arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1?.pointer ?? ffi.nullptr); +} + +late final _sel_getFileProviderServicesForItemAtURL_completionHandler_ = + objc.registerName("getFileProviderServicesForItemAtURL:completionHandler:"); +final _objc_msgSend_308 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_containerURLForSecurityApplicationGroupIdentifier_ = + objc.registerName("containerURLForSecurityApplicationGroupIdentifier:"); +late final _sel_homeDirectoryForCurrentUser = + objc.registerName("homeDirectoryForCurrentUser"); +late final _sel_temporaryDirectory = objc.registerName("temporaryDirectory"); +late final _sel_homeDirectoryForUser_ = + objc.registerName("homeDirectoryForUser:"); + +class NSHTTPCookieStorage extends objc.NSObject { + NSHTTPCookieStorage._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSHTTPCookieStorage] that points to the same underlying object as [other]. + NSHTTPCookieStorage.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - int get formatterBehavior { - return _lib._objc_msgSend_805(_id, _lib._sel_formatterBehavior1); - } + /// Constructs a [NSHTTPCookieStorage] that wraps the given raw object pointer. + NSHTTPCookieStorage.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - set formatterBehavior(int value) { - return _lib._objc_msgSend_809(_id, _lib._sel_setFormatterBehavior_1, value); + /// Returns whether [obj] is an instance of [NSHTTPCookieStorage]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSHTTPCookieStorage); } - NSString get negativeFormat { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_negativeFormat1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSHTTPCookieStorage getSharedHTTPCookieStorage() { + final _ret = _objc_msgSend_309( + _class_NSHTTPCookieStorage, _sel_sharedHTTPCookieStorage); + return NSHTTPCookieStorage.castFromPointer(_ret, + retain: true, release: true); } - set negativeFormat(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setNegativeFormat_1, value._id); + static NSHTTPCookieStorage sharedCookieStorageForGroupContainerIdentifier_( + objc.NSString identifier) { + final _ret = _objc_msgSend_310( + _class_NSHTTPCookieStorage, + _sel_sharedCookieStorageForGroupContainerIdentifier_, + identifier.pointer); + return NSHTTPCookieStorage.castFromPointer(_ret, + retain: true, release: true); } - NSDictionary? get textAttributesForNegativeValues { - final _ret = - _lib._objc_msgSend_390(_id, _lib._sel_textAttributesForNegativeValues1); + objc.NSArray? get cookies { + final _ret = _objc_msgSend_69(this.pointer, _sel_cookies); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set textAttributesForNegativeValues(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, - _lib._sel_setTextAttributesForNegativeValues_1, - value?._id ?? ffi.nullptr); + void setCookie_(NSHTTPCookie cookie) { + _objc_msgSend_315(this.pointer, _sel_setCookie_, cookie.pointer); } - NSString get positiveFormat { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_positiveFormat1); - return NSString._(_ret, _lib, retain: true, release: true); + void deleteCookie_(NSHTTPCookie cookie) { + _objc_msgSend_315(this.pointer, _sel_deleteCookie_, cookie.pointer); } - set positiveFormat(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setPositiveFormat_1, value._id); + void removeCookiesSinceDate_(objc.NSDate date) { + _objc_msgSend_246(this.pointer, _sel_removeCookiesSinceDate_, date.pointer); } - NSDictionary? get textAttributesForPositiveValues { + objc.NSArray? cookiesForURL_(objc.NSURL URL) { final _ret = - _lib._objc_msgSend_390(_id, _lib._sel_textAttributesForPositiveValues1); + _objc_msgSend_316(this.pointer, _sel_cookiesForURL_, URL.pointer); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set textAttributesForPositiveValues(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, - _lib._sel_setTextAttributesForPositiveValues_1, - value?._id ?? ffi.nullptr); + void setCookies_forURL_mainDocumentURL_( + objc.NSArray cookies, objc.NSURL? URL, objc.NSURL? mainDocumentURL) { + _objc_msgSend_317( + this.pointer, + _sel_setCookies_forURL_mainDocumentURL_, + cookies.pointer, + URL?.pointer ?? ffi.nullptr, + mainDocumentURL?.pointer ?? ffi.nullptr); } - bool get allowsFloats { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsFloats1); + int get cookieAcceptPolicy { + return _objc_msgSend_318(this.pointer, _sel_cookieAcceptPolicy); } - set allowsFloats(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setAllowsFloats_1, value); + set cookieAcceptPolicy(int value) { + return _objc_msgSend_319(this.pointer, _sel_setCookieAcceptPolicy_, value); } - NSString get decimalSeparator { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_decimalSeparator1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray sortedCookiesUsingDescriptors_(objc.NSArray sortOrder) { + final _ret = _objc_msgSend_67( + this.pointer, _sel_sortedCookiesUsingDescriptors_, sortOrder.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set decimalSeparator(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setDecimalSeparator_1, value._id); + void storeCookies_forTask_(objc.NSArray cookies, NSURLSessionTask task) { + _objc_msgSend_353(this.pointer, _sel_storeCookies_forTask_, cookies.pointer, + task.pointer); } - bool get alwaysShowsDecimalSeparator { - return _lib._objc_msgSend_12(_id, _lib._sel_alwaysShowsDecimalSeparator1); + void getCookiesForTask_completionHandler_( + NSURLSessionTask task, ObjCBlock_ffiVoid_NSArray completionHandler) { + _objc_msgSend_354(this.pointer, _sel_getCookiesForTask_completionHandler_, + task.pointer, completionHandler.pointer); } - set alwaysShowsDecimalSeparator(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAlwaysShowsDecimalSeparator_1, value); + @override + NSHTTPCookieStorage init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSHTTPCookieStorage.castFromPointer(_ret, + retain: true, release: true); } - NSString get currencyDecimalSeparator { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_currencyDecimalSeparator1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSHTTPCookieStorage new1() { + final _ret = _objc_msgSend_40(_class_NSHTTPCookieStorage, _sel_new); + return NSHTTPCookieStorage.castFromPointer(_ret, + retain: false, release: true); } - set currencyDecimalSeparator(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setCurrencyDecimalSeparator_1, value._id); + static NSHTTPCookieStorage allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSHTTPCookieStorage, _sel_allocWithZone_, zone); + return NSHTTPCookieStorage.castFromPointer(_ret, + retain: false, release: true); } - bool get usesGroupingSeparator { - return _lib._objc_msgSend_12(_id, _lib._sel_usesGroupingSeparator1); + static NSHTTPCookieStorage alloc() { + final _ret = _objc_msgSend_40(_class_NSHTTPCookieStorage, _sel_alloc); + return NSHTTPCookieStorage.castFromPointer(_ret, + retain: false, release: true); } - set usesGroupingSeparator(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setUsesGroupingSeparator_1, value); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSHTTPCookieStorage, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSString get groupingSeparator { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_groupingSeparator1); - return NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSHTTPCookieStorage, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - set groupingSeparator(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setGroupingSeparator_1, value._id); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSHTTPCookieStorage, _sel_accessInstanceVariablesDirectly); } - NSString? get zeroSymbol { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_zeroSymbol1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSHTTPCookieStorage, _sel_useStoredAccessor); } - set zeroSymbol(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setZeroSymbol_1, value?._id ?? ffi.nullptr); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSHTTPCookieStorage, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSDictionary? get textAttributesForZero { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_textAttributesForZero1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSHTTPCookieStorage, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - set textAttributesForZero(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, _lib._sel_setTextAttributesForZero_1, value?._id ?? ffi.nullptr); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSHTTPCookieStorage, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSHTTPCookieStorage, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSHTTPCookieStorage, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSHTTPCookieStorage = objc.getClass("NSHTTPCookieStorage"); +late final _sel_sharedHTTPCookieStorage = + objc.registerName("sharedHTTPCookieStorage"); +final _objc_msgSend_309 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_sharedCookieStorageForGroupContainerIdentifier_ = + objc.registerName("sharedCookieStorageForGroupContainerIdentifier:"); +final _objc_msgSend_310 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_cookies = objc.registerName("cookies"); + +class NSHTTPCookie extends objc.NSObject { + NSHTTPCookie._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSString get nilSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_nilSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSHTTPCookie] that points to the same underlying object as [other]. + NSHTTPCookie.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - set nilSymbol(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setNilSymbol_1, value._id); + /// Constructs a [NSHTTPCookie] that wraps the given raw object pointer. + NSHTTPCookie.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSHTTPCookie]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSHTTPCookie); } - NSDictionary? get textAttributesForNil { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_textAttributesForNil1); + NSHTTPCookie? initWithProperties_(objc.NSDictionary properties) { + final _ret = _objc_msgSend_311( + this.pointer, _sel_initWithProperties_, properties.pointer); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - set textAttributesForNil(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, _lib._sel_setTextAttributesForNil_1, value?._id ?? ffi.nullptr); - } - - NSString get notANumberSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_notANumberSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - set notANumberSymbol(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setNotANumberSymbol_1, value._id); + : NSHTTPCookie.castFromPointer(_ret, retain: true, release: true); } - NSDictionary? get textAttributesForNotANumber { - final _ret = - _lib._objc_msgSend_390(_id, _lib._sel_textAttributesForNotANumber1); + static NSHTTPCookie? cookieWithProperties_(objc.NSDictionary properties) { + final _ret = _objc_msgSend_312( + _class_NSHTTPCookie, _sel_cookieWithProperties_, properties.pointer); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - set textAttributesForNotANumber(NSDictionary? value) { - return _lib._objc_msgSend_634(_id, - _lib._sel_setTextAttributesForNotANumber_1, value?._id ?? ffi.nullptr); + : NSHTTPCookie.castFromPointer(_ret, retain: true, release: true); } - NSString get positiveInfinitySymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_positiveInfinitySymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + static objc.NSDictionary requestHeaderFieldsWithCookies_( + objc.NSArray cookies) { + final _ret = _objc_msgSend_313(_class_NSHTTPCookie, + _sel_requestHeaderFieldsWithCookies_, cookies.pointer); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - set positiveInfinitySymbol(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setPositiveInfinitySymbol_1, value._id); + static objc.NSArray cookiesWithResponseHeaderFields_forURL_( + objc.NSDictionary headerFields, objc.NSURL URL) { + final _ret = _objc_msgSend_314( + _class_NSHTTPCookie, + _sel_cookiesWithResponseHeaderFields_forURL_, + headerFields.pointer, + URL.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSDictionary? get textAttributesForPositiveInfinity { - final _ret = _lib._objc_msgSend_390( - _id, _lib._sel_textAttributesForPositiveInfinity1); + objc.NSDictionary? get properties { + final _ret = _objc_msgSend_65(this.pointer, _sel_properties); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - set textAttributesForPositiveInfinity(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, - _lib._sel_setTextAttributesForPositiveInfinity_1, - value?._id ?? ffi.nullptr); + int get version { + return _objc_msgSend_29(this.pointer, _sel_version); } - NSString get negativeInfinitySymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_negativeInfinitySymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSString get name { + final _ret = _objc_msgSend_12(this.pointer, _sel_name); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set negativeInfinitySymbol(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setNegativeInfinitySymbol_1, value._id); + objc.NSString get value { + final _ret = _objc_msgSend_12(this.pointer, _sel_value); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSDictionary? get textAttributesForNegativeInfinity { - final _ret = _lib._objc_msgSend_390( - _id, _lib._sel_textAttributesForNegativeInfinity1); + objc.NSDate? get expiresDate { + final _ret = _objc_msgSend_116(this.pointer, _sel_expiresDate); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - set textAttributesForNegativeInfinity(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, - _lib._sel_setTextAttributesForNegativeInfinity_1, - value?._id ?? ffi.nullptr); - } - - NSString get positivePrefix { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_positivePrefix1); - return NSString._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - set positivePrefix(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setPositivePrefix_1, value._id); + bool get sessionOnly { + return _objc_msgSend_7(this.pointer, _sel_isSessionOnly); } - NSString get positiveSuffix { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_positiveSuffix1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSString get domain { + final _ret = _objc_msgSend_12(this.pointer, _sel_domain); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set positiveSuffix(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setPositiveSuffix_1, value._id); + objc.NSString get path { + final _ret = _objc_msgSend_12(this.pointer, _sel_path); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString get negativePrefix { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_negativePrefix1); - return NSString._(_ret, _lib, retain: true, release: true); + bool get secure { + return _objc_msgSend_7(this.pointer, _sel_isSecure); } - set negativePrefix(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setNegativePrefix_1, value._id); + bool get HTTPOnly { + return _objc_msgSend_7(this.pointer, _sel_isHTTPOnly); } - NSString get negativeSuffix { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_negativeSuffix1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSString? get comment { + final _ret = _objc_msgSend_13(this.pointer, _sel_comment); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set negativeSuffix(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setNegativeSuffix_1, value._id); + objc.NSURL? get commentURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_commentURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - NSString get currencyCode { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_currencyCode1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray? get portList { + final _ret = _objc_msgSend_69(this.pointer, _sel_portList); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set currencyCode(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setCurrencyCode_1, value._id); + objc.NSString? get sameSitePolicy { + final _ret = _objc_msgSend_13(this.pointer, _sel_sameSitePolicy); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString get currencySymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_currencySymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + @override + NSHTTPCookie init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSHTTPCookie.castFromPointer(_ret, retain: true, release: true); } - set currencySymbol(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setCurrencySymbol_1, value._id); + static NSHTTPCookie new1() { + final _ret = _objc_msgSend_40(_class_NSHTTPCookie, _sel_new); + return NSHTTPCookie.castFromPointer(_ret, retain: false, release: true); } - NSString get internationalCurrencySymbol { + static NSHTTPCookie allocWithZone_(ffi.Pointer<_NSZone> zone) { final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_internationalCurrencySymbol1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - set internationalCurrencySymbol(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setInternationalCurrencySymbol_1, value._id); + _objc_msgSend_47(_class_NSHTTPCookie, _sel_allocWithZone_, zone); + return NSHTTPCookie.castFromPointer(_ret, retain: false, release: true); } - NSString get percentSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_percentSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSHTTPCookie alloc() { + final _ret = _objc_msgSend_40(_class_NSHTTPCookie, _sel_alloc); + return NSHTTPCookie.castFromPointer(_ret, retain: false, release: true); } - set percentSymbol(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setPercentSymbol_1, value._id); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSHTTPCookie, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSString get perMillSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_perMillSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSHTTPCookie, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - set perMillSymbol(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setPerMillSymbol_1, value._id); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSHTTPCookie, _sel_accessInstanceVariablesDirectly); } - NSString get minusSign { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_minusSign1); - return NSString._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSHTTPCookie, _sel_useStoredAccessor); } - set minusSign(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setMinusSign_1, value._id); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSHTTPCookie, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSString get plusSign { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_plusSign1); - return NSString._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSHTTPCookie, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - set plusSign(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setPlusSign_1, value._id); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSHTTPCookie, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSHTTPCookie, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSHTTPCookie, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSHTTPCookie = objc.getClass("NSHTTPCookie"); +late final _sel_initWithProperties_ = objc.registerName("initWithProperties:"); +final _objc_msgSend_311 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_cookieWithProperties_ = + objc.registerName("cookieWithProperties:"); +final _objc_msgSend_312 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_requestHeaderFieldsWithCookies_ = + objc.registerName("requestHeaderFieldsWithCookies:"); +final _objc_msgSend_313 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_cookiesWithResponseHeaderFields_forURL_ = + objc.registerName("cookiesWithResponseHeaderFields:forURL:"); +final _objc_msgSend_314 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_properties = objc.registerName("properties"); +late final _sel_version = objc.registerName("version"); +late final _sel_value = objc.registerName("value"); +late final _sel_expiresDate = objc.registerName("expiresDate"); +late final _sel_isSessionOnly = objc.registerName("isSessionOnly"); +late final _sel_domain = objc.registerName("domain"); +late final _sel_path = objc.registerName("path"); +late final _sel_isSecure = objc.registerName("isSecure"); +late final _sel_isHTTPOnly = objc.registerName("isHTTPOnly"); +late final _sel_comment = objc.registerName("comment"); +late final _sel_commentURL = objc.registerName("commentURL"); +late final _sel_portList = objc.registerName("portList"); +late final _sel_sameSitePolicy = objc.registerName("sameSitePolicy"); +late final _sel_setCookie_ = objc.registerName("setCookie:"); +final _objc_msgSend_315 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_deleteCookie_ = objc.registerName("deleteCookie:"); +late final _sel_removeCookiesSinceDate_ = + objc.registerName("removeCookiesSinceDate:"); +late final _sel_cookiesForURL_ = objc.registerName("cookiesForURL:"); +final _objc_msgSend_316 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCookies_forURL_mainDocumentURL_ = + objc.registerName("setCookies:forURL:mainDocumentURL:"); +final _objc_msgSend_317 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - NSString get exponentSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_exponentSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); - } +abstract class NSHTTPCookieAcceptPolicy { + static const int NSHTTPCookieAcceptPolicyAlways = 0; + static const int NSHTTPCookieAcceptPolicyNever = 1; + static const int NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain = 2; +} - set exponentSymbol(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setExponentSymbol_1, value._id); - } +late final _sel_cookieAcceptPolicy = objc.registerName("cookieAcceptPolicy"); +final _objc_msgSend_318 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCookieAcceptPolicy_ = + objc.registerName("setCookieAcceptPolicy:"); +final _objc_msgSend_319 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_sortedCookiesUsingDescriptors_ = + objc.registerName("sortedCookiesUsingDescriptors:"); + +class NSURLSessionTask extends objc.NSObject { + NSURLSessionTask._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - int get groupingSize { - return _lib._objc_msgSend_10(_id, _lib._sel_groupingSize1); - } + /// Constructs a [NSURLSessionTask] that points to the same underlying object as [other]. + NSURLSessionTask.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - set groupingSize(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setGroupingSize_1, value); - } + /// Constructs a [NSURLSessionTask] that wraps the given raw object pointer. + NSURLSessionTask.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - int get secondaryGroupingSize { - return _lib._objc_msgSend_10(_id, _lib._sel_secondaryGroupingSize1); + /// Returns whether [obj] is an instance of [NSURLSessionTask]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionTask); } - set secondaryGroupingSize(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setSecondaryGroupingSize_1, value); + int get taskIdentifier { + return _objc_msgSend_29(this.pointer, _sel_taskIdentifier); } - NSNumber? get multiplier { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_multiplier1); + NSURLRequest? get originalRequest { + final _ret = _objc_msgSend_343(this.pointer, _sel_originalRequest); return _ret.address == 0 ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - set multiplier(NSNumber? value) { - return _lib._objc_msgSend_670( - _id, _lib._sel_setMultiplier_1, value?._id ?? ffi.nullptr); - } - - int get formatWidth { - return _lib._objc_msgSend_10(_id, _lib._sel_formatWidth1); - } - - set formatWidth(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setFormatWidth_1, value); - } - - NSString get paddingCharacter { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_paddingCharacter1); - return NSString._(_ret, _lib, retain: true, release: true); + : NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - set paddingCharacter(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setPaddingCharacter_1, value._id); + NSURLRequest? get currentRequest { + final _ret = _objc_msgSend_343(this.pointer, _sel_currentRequest); + return _ret.address == 0 + ? null + : NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - int get paddingPosition { - return _lib._objc_msgSend_810(_id, _lib._sel_paddingPosition1); + NSURLResponse? get response { + final _ret = _objc_msgSend_346(this.pointer, _sel_response); + return _ret.address == 0 + ? null + : NSURLResponse.castFromPointer(_ret, retain: true, release: true); } - set paddingPosition(int value) { - return _lib._objc_msgSend_811(_id, _lib._sel_setPaddingPosition_1, value); + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - int get roundingMode { - return _lib._objc_msgSend_812(_id, _lib._sel_roundingMode1); + set delegate(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDelegate_, value?.pointer ?? ffi.nullptr); } - set roundingMode(int value) { - return _lib._objc_msgSend_813(_id, _lib._sel_setRoundingMode_1, value); + objc.NSProgress get progress { + final _ret = _objc_msgSend_347(this.pointer, _sel_progress); + return objc.NSProgress.castFromPointer(_ret, retain: true, release: true); } - NSNumber get roundingIncrement { - final _ret = _lib._objc_msgSend_814(_id, _lib._sel_roundingIncrement1); - return NSNumber._(_ret, _lib, retain: true, release: true); + objc.NSDate? get earliestBeginDate { + final _ret = _objc_msgSend_116(this.pointer, _sel_earliestBeginDate); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - set roundingIncrement(NSNumber value) { - return _lib._objc_msgSend_815( - _id, _lib._sel_setRoundingIncrement_1, value._id); + set earliestBeginDate(objc.NSDate? value) { + return _objc_msgSend_162(this.pointer, _sel_setEarliestBeginDate_, + value?.pointer ?? ffi.nullptr); } - int get minimumIntegerDigits { - return _lib._objc_msgSend_10(_id, _lib._sel_minimumIntegerDigits1); + int get countOfBytesClientExpectsToSend { + return _objc_msgSend_348( + this.pointer, _sel_countOfBytesClientExpectsToSend); } - set minimumIntegerDigits(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setMinimumIntegerDigits_1, value); + set countOfBytesClientExpectsToSend(int value) { + return _objc_msgSend_349( + this.pointer, _sel_setCountOfBytesClientExpectsToSend_, value); } - int get maximumIntegerDigits { - return _lib._objc_msgSend_10(_id, _lib._sel_maximumIntegerDigits1); + int get countOfBytesClientExpectsToReceive { + return _objc_msgSend_348( + this.pointer, _sel_countOfBytesClientExpectsToReceive); } - set maximumIntegerDigits(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setMaximumIntegerDigits_1, value); + set countOfBytesClientExpectsToReceive(int value) { + return _objc_msgSend_349( + this.pointer, _sel_setCountOfBytesClientExpectsToReceive_, value); } - int get minimumFractionDigits { - return _lib._objc_msgSend_10(_id, _lib._sel_minimumFractionDigits1); + int get countOfBytesSent { + return _objc_msgSend_348(this.pointer, _sel_countOfBytesSent); } - set minimumFractionDigits(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setMinimumFractionDigits_1, value); + int get countOfBytesReceived { + return _objc_msgSend_348(this.pointer, _sel_countOfBytesReceived); } - int get maximumFractionDigits { - return _lib._objc_msgSend_10(_id, _lib._sel_maximumFractionDigits1); + int get countOfBytesExpectedToSend { + return _objc_msgSend_348(this.pointer, _sel_countOfBytesExpectedToSend); } - set maximumFractionDigits(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setMaximumFractionDigits_1, value); + int get countOfBytesExpectedToReceive { + return _objc_msgSend_348(this.pointer, _sel_countOfBytesExpectedToReceive); } - NSNumber? get minimum { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_minimum1); + objc.NSString? get taskDescription { + final _ret = _objc_msgSend_13(this.pointer, _sel_taskDescription); return _ret.address == 0 ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - set minimum(NSNumber? value) { - return _lib._objc_msgSend_670( - _id, _lib._sel_setMinimum_1, value?._id ?? ffi.nullptr); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSNumber? get maximum { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_maximum1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); + set taskDescription(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setTaskDescription_, value?.pointer ?? ffi.nullptr); } - set maximum(NSNumber? value) { - return _lib._objc_msgSend_670( - _id, _lib._sel_setMaximum_1, value?._id ?? ffi.nullptr); + void cancel() { + _objc_msgSend_82(this.pointer, _sel_cancel); } - NSString get currencyGroupingSeparator { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_currencyGroupingSeparator1); - return NSString._(_ret, _lib, retain: true, release: true); + int get state { + return _objc_msgSend_350(this.pointer, _sel_state); } - set currencyGroupingSeparator(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setCurrencyGroupingSeparator_1, value._id); + objc.NSError? get error { + final _ret = _objc_msgSend_328(this.pointer, _sel_error); + return _ret.address == 0 + ? null + : objc.NSError.castFromPointer(_ret, retain: true, release: true); } - bool get lenient { - return _lib._objc_msgSend_12(_id, _lib._sel_isLenient1); + void suspend() { + _objc_msgSend_82(this.pointer, _sel_suspend); } - set lenient(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setLenient_1, value); + void resume() { + _objc_msgSend_82(this.pointer, _sel_resume); } - bool get usesSignificantDigits { - return _lib._objc_msgSend_12(_id, _lib._sel_usesSignificantDigits1); + double get priority { + return objc.useMsgSendVariants + ? _objc_msgSend_351Fpret(this.pointer, _sel_priority) + : _objc_msgSend_351(this.pointer, _sel_priority); } - set usesSignificantDigits(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setUsesSignificantDigits_1, value); + set priority(double value) { + return _objc_msgSend_352(this.pointer, _sel_setPriority_, value); } - int get minimumSignificantDigits { - return _lib._objc_msgSend_10(_id, _lib._sel_minimumSignificantDigits1); + bool get prefersIncrementalDelivery { + return _objc_msgSend_7(this.pointer, _sel_prefersIncrementalDelivery); } - set minimumSignificantDigits(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setMinimumSignificantDigits_1, value); + set prefersIncrementalDelivery(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setPrefersIncrementalDelivery_, value); } - int get maximumSignificantDigits { - return _lib._objc_msgSend_10(_id, _lib._sel_maximumSignificantDigits1); + @override + NSURLSessionTask init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionTask.castFromPointer(_ret, retain: true, release: true); } - set maximumSignificantDigits(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setMaximumSignificantDigits_1, value); + static NSURLSessionTask new1() { + final _ret = _objc_msgSend_40(_class_NSURLSessionTask, _sel_new); + return NSURLSessionTask.castFromPointer(_ret, retain: false, release: true); } - bool get partialStringValidationEnabled { - return _lib._objc_msgSend_12( - _id, _lib._sel_isPartialStringValidationEnabled1); + static NSURLSessionTask allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSURLSessionTask, _sel_allocWithZone_, zone); + return NSURLSessionTask.castFromPointer(_ret, retain: false, release: true); } - set partialStringValidationEnabled(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setPartialStringValidationEnabled_1, value); + static NSURLSessionTask alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSessionTask, _sel_alloc); + return NSURLSessionTask.castFromPointer(_ret, retain: false, release: true); } - bool get hasThousandSeparators { - return _lib._objc_msgSend_12(_id, _lib._sel_hasThousandSeparators1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionTask, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - set hasThousandSeparators(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setHasThousandSeparators_1, value); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionTask, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSString get thousandSeparator { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_thousandSeparator1); - return NSString._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSessionTask, _sel_accessInstanceVariablesDirectly); } - set thousandSeparator(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setThousandSeparator_1, value._id); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLSessionTask, _sel_useStoredAccessor); } - bool get localizesFormat { - return _lib._objc_msgSend_12(_id, _lib._sel_localizesFormat1); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionTask, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - set localizesFormat(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setLocalizesFormat_1, value); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionTask, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSString get format { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_format1); - return NSString._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionTask, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - set format(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setFormat_1, value._id); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSessionTask, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSAttributedString get attributedStringForZero { + static objc.NSObject classForKeyedUnarchiver() { final _ret = - _lib._objc_msgSend_735(_id, _lib._sel_attributedStringForZero1); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + _objc_msgSend_40(_class_NSURLSessionTask, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - set attributedStringForZero(NSAttributedString value) { - return _lib._objc_msgSend_816( - _id, _lib._sel_setAttributedStringForZero_1, value._id); - } +late final _class_NSURLSessionTask = objc.getClass("NSURLSessionTask"); +late final _sel_taskIdentifier = objc.registerName("taskIdentifier"); - NSAttributedString get attributedStringForNil { - final _ret = _lib._objc_msgSend_735(_id, _lib._sel_attributedStringForNil1); - return NSAttributedString._(_ret, _lib, retain: true, release: true); - } +class NSURLRequest extends objc.NSObject { + NSURLRequest._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - set attributedStringForNil(NSAttributedString value) { - return _lib._objc_msgSend_816( - _id, _lib._sel_setAttributedStringForNil_1, value._id); - } + /// Constructs a [NSURLRequest] that points to the same underlying object as [other]. + NSURLRequest.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSAttributedString get attributedStringForNotANumber { - final _ret = - _lib._objc_msgSend_735(_id, _lib._sel_attributedStringForNotANumber1); - return NSAttributedString._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSURLRequest] that wraps the given raw object pointer. + NSURLRequest.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - set attributedStringForNotANumber(NSAttributedString value) { - return _lib._objc_msgSend_816( - _id, _lib._sel_setAttributedStringForNotANumber_1, value._id); + /// Returns whether [obj] is an instance of [NSURLRequest]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLRequest); } - NSDecimalNumberHandler get roundingBehavior { - final _ret = _lib._objc_msgSend_817(_id, _lib._sel_roundingBehavior1); - return NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); + static NSURLRequest requestWithURL_(objc.NSURL URL) { + final _ret = _objc_msgSend_320( + _class_NSURLRequest, _sel_requestWithURL_, URL.pointer); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - set roundingBehavior(NSDecimalNumberHandler value) { - return _lib._objc_msgSend_819( - _id, _lib._sel_setRoundingBehavior_1, value._id); + static bool getSupportsSecureCoding() { + return _objc_msgSend_7(_class_NSURLRequest, _sel_supportsSecureCoding); } - @override - NSNumberFormatter init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSNumberFormatter._(_ret, _lib, retain: true, release: true); + static NSURLRequest requestWithURL_cachePolicy_timeoutInterval_( + objc.NSURL URL, int cachePolicy, double timeoutInterval) { + final _ret = _objc_msgSend_321( + _class_NSURLRequest, + _sel_requestWithURL_cachePolicy_timeoutInterval_, + URL.pointer, + cachePolicy, + timeoutInterval); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - static NSNumberFormatter new1(AVFAudio _lib) { + NSURLRequest initWithURL_(objc.NSURL URL) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSNumberFormatter1, _lib._sel_new1); - return NSNumberFormatter._(_ret, _lib, retain: false, release: true); - } - - static NSNumberFormatter allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSNumberFormatter1, _lib._sel_allocWithZone_1, zone); - return NSNumberFormatter._(_ret, _lib, retain: false, release: true); + _objc_msgSend_320(this.pointer, _sel_initWithURL_, URL.pointer); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - static NSNumberFormatter alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSNumberFormatter1, _lib._sel_alloc1); - return NSNumberFormatter._(_ret, _lib, retain: false, release: true); + NSURLRequest initWithURL_cachePolicy_timeoutInterval_( + objc.NSURL URL, int cachePolicy, double timeoutInterval) { + final _ret = _objc_msgSend_321( + this.pointer, + _sel_initWithURL_cachePolicy_timeoutInterval_, + URL.pointer, + cachePolicy, + timeoutInterval); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSNumberFormatter1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + objc.NSURL? get URL { + final _ret = _objc_msgSend_10(this.pointer, _sel_URL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSNumberFormatter1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + int get cachePolicy { + return _objc_msgSend_322(this.pointer, _sel_cachePolicy); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSNumberFormatter1, - _lib._sel_accessInstanceVariablesDirectly1); + double get timeoutInterval { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_timeoutInterval) + : _objc_msgSend_115(this.pointer, _sel_timeoutInterval); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSNumberFormatter1, _lib._sel_useStoredAccessor1); + objc.NSURL? get mainDocumentURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_mainDocumentURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSNumberFormatter1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + int get networkServiceType { + return _objc_msgSend_323(this.pointer, _sel_networkServiceType); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSNumberFormatter1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + bool get allowsCellularAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsCellularAccess); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSNumberFormatter1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + bool get allowsExpensiveNetworkAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsExpensiveNetworkAccess); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSNumberFormatter1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool get allowsConstrainedNetworkAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsConstrainedNetworkAccess); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSNumberFormatter1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + bool get assumesHTTP3Capable { + return _objc_msgSend_7(this.pointer, _sel_assumesHTTP3Capable); } -} - -abstract class NSNumberFormatterStyle { - static const int NSNumberFormatterNoStyle = 0; - static const int NSNumberFormatterDecimalStyle = 1; - static const int NSNumberFormatterCurrencyStyle = 2; - static const int NSNumberFormatterPercentStyle = 3; - static const int NSNumberFormatterScientificStyle = 4; - static const int NSNumberFormatterSpellOutStyle = 5; - static const int NSNumberFormatterOrdinalStyle = 6; - static const int NSNumberFormatterCurrencyISOCodeStyle = 8; - static const int NSNumberFormatterCurrencyPluralStyle = 9; - static const int NSNumberFormatterCurrencyAccountingStyle = 10; -} - -abstract class NSNumberFormatterBehavior { - static const int NSNumberFormatterBehaviorDefault = 0; - static const int NSNumberFormatterBehavior10_0 = 1000; - static const int NSNumberFormatterBehavior10_4 = 1040; -} - -abstract class NSNumberFormatterPadPosition { - static const int NSNumberFormatterPadBeforePrefix = 0; - static const int NSNumberFormatterPadAfterPrefix = 1; - static const int NSNumberFormatterPadBeforeSuffix = 2; - static const int NSNumberFormatterPadAfterSuffix = 3; -} - -abstract class NSNumberFormatterRoundingMode { - static const int NSNumberFormatterRoundCeiling = 0; - static const int NSNumberFormatterRoundFloor = 1; - static const int NSNumberFormatterRoundDown = 2; - static const int NSNumberFormatterRoundUp = 3; - static const int NSNumberFormatterRoundHalfEven = 4; - static const int NSNumberFormatterRoundHalfDown = 5; - static const int NSNumberFormatterRoundHalfUp = 6; -} -class NSDecimalNumberHandler extends NSObject { - NSDecimalNumberHandler._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + int get attribution { + return _objc_msgSend_324(this.pointer, _sel_attribution); + } - /// Returns a [NSDecimalNumberHandler] that points to the same underlying object as [other]. - static NSDecimalNumberHandler castFrom(T other) { - return NSDecimalNumberHandler._(other._id, other._lib, - retain: true, release: true); + bool get requiresDNSSECValidation { + return _objc_msgSend_7(this.pointer, _sel_requiresDNSSECValidation); } - /// Returns a [NSDecimalNumberHandler] that wraps the given raw object pointer. - static NSDecimalNumberHandler castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSDecimalNumberHandler._(other, lib, - retain: retain, release: release); + objc.NSString? get HTTPMethod { + final _ret = _objc_msgSend_13(this.pointer, _sel_HTTPMethod); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSDecimalNumberHandler]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSDecimalNumberHandler1); + objc.NSDictionary? get allHTTPHeaderFields { + final _ret = _objc_msgSend_65(this.pointer, _sel_allHTTPHeaderFields); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSDecimalNumberHandler getDefaultDecimalNumberHandler(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_817(_lib._class_NSDecimalNumberHandler1, - _lib._sel_defaultDecimalNumberHandler1); - return NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); + objc.NSString? valueForHTTPHeaderField_(objc.NSString field) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_valueForHTTPHeaderField_, field.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSDecimalNumberHandler - initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_( - int roundingMode, - int scale, - bool exact, - bool overflow, - bool underflow, - bool divideByZero) { - final _ret = _lib._objc_msgSend_818( - _id, - _lib._sel_initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1, - roundingMode, - scale, - exact, - overflow, - underflow, - divideByZero); - return NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); + objc.NSData? get HTTPBody { + final _ret = _objc_msgSend_325(this.pointer, _sel_HTTPBody); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - static NSDecimalNumberHandler - decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_( - AVFAudio _lib, - int roundingMode, - int scale, - bool exact, - bool overflow, - bool underflow, - bool divideByZero) { - final _ret = _lib._objc_msgSend_818( - _lib._class_NSDecimalNumberHandler1, - _lib._sel_decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1, - roundingMode, - scale, - exact, - overflow, - underflow, - divideByZero); - return NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); + NSInputStream? get HTTPBodyStream { + final _ret = _objc_msgSend_342(this.pointer, _sel_HTTPBodyStream); + return _ret.address == 0 + ? null + : NSInputStream.castFromPointer(_ret, retain: true, release: true); + } + + bool get HTTPShouldHandleCookies { + return _objc_msgSend_7(this.pointer, _sel_HTTPShouldHandleCookies); + } + + bool get HTTPShouldUsePipelining { + return _objc_msgSend_7(this.pointer, _sel_HTTPShouldUsePipelining); } @override - NSDecimalNumberHandler init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); + NSURLRequest init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - static NSDecimalNumberHandler new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSDecimalNumberHandler1, _lib._sel_new1); - return NSDecimalNumberHandler._(_ret, _lib, retain: false, release: true); + static NSURLRequest new1() { + final _ret = _objc_msgSend_40(_class_NSURLRequest, _sel_new); + return NSURLRequest.castFromPointer(_ret, retain: false, release: true); } - static NSDecimalNumberHandler allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSDecimalNumberHandler1, _lib._sel_allocWithZone_1, zone); - return NSDecimalNumberHandler._(_ret, _lib, retain: false, release: true); + static NSURLRequest allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSURLRequest, _sel_allocWithZone_, zone); + return NSURLRequest.castFromPointer(_ret, retain: false, release: true); } - static NSDecimalNumberHandler alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSDecimalNumberHandler1, _lib._sel_alloc1); - return NSDecimalNumberHandler._(_ret, _lib, retain: false, release: true); + static NSURLRequest alloc() { + final _ret = _objc_msgSend_40(_class_NSURLRequest, _sel_alloc); + return NSURLRequest.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSDecimalNumberHandler1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLRequest, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSDecimalNumberHandler1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLRequest, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSDecimalNumberHandler1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLRequest, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSDecimalNumberHandler1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLRequest, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSDecimalNumberHandler1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLRequest, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSDecimalNumberHandler1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLRequest, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSDecimalNumberHandler1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLRequest, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSDecimalNumberHandler1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLRequest, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSDecimalNumberHandler1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSURLRequest, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -abstract class NSRoundingMode { - static const int NSRoundPlain = 0; - static const int NSRoundDown = 1; - static const int NSRoundUp = 2; - static const int NSRoundBankers = 3; +late final _class_NSURLRequest = objc.getClass("NSURLRequest"); +late final _sel_requestWithURL_ = objc.registerName("requestWithURL:"); +final _objc_msgSend_320 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_supportsSecureCoding = + objc.registerName("supportsSecureCoding"); + +abstract class NSURLRequestCachePolicy { + static const int NSURLRequestUseProtocolCachePolicy = 0; + static const int NSURLRequestReloadIgnoringLocalCacheData = 1; + static const int NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4; + static const int NSURLRequestReloadIgnoringCacheData = 1; + static const int NSURLRequestReturnCacheDataElseLoad = 2; + static const int NSURLRequestReturnCacheDataDontLoad = 3; + static const int NSURLRequestReloadRevalidatingCacheData = 5; +} + +late final _sel_requestWithURL_cachePolicy_timeoutInterval_ = + objc.registerName("requestWithURL:cachePolicy:timeoutInterval:"); +final _objc_msgSend_321 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Double)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + double)>(); +late final _sel_initWithURL_cachePolicy_timeoutInterval_ = + objc.registerName("initWithURL:cachePolicy:timeoutInterval:"); +late final _sel_URL = objc.registerName("URL"); +late final _sel_cachePolicy = objc.registerName("cachePolicy"); +final _objc_msgSend_322 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_timeoutInterval = objc.registerName("timeoutInterval"); +late final _sel_mainDocumentURL = objc.registerName("mainDocumentURL"); + +abstract class NSURLRequestNetworkServiceType { + static const int NSURLNetworkServiceTypeDefault = 0; + static const int NSURLNetworkServiceTypeVoIP = 1; + static const int NSURLNetworkServiceTypeVideo = 2; + static const int NSURLNetworkServiceTypeBackground = 3; + static const int NSURLNetworkServiceTypeVoice = 4; + static const int NSURLNetworkServiceTypeResponsiveData = 6; + static const int NSURLNetworkServiceTypeAVStreaming = 8; + static const int NSURLNetworkServiceTypeResponsiveAV = 9; + static const int NSURLNetworkServiceTypeCallSignaling = 11; +} + +late final _sel_networkServiceType = objc.registerName("networkServiceType"); +final _objc_msgSend_323 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_allowsCellularAccess = + objc.registerName("allowsCellularAccess"); +late final _sel_allowsExpensiveNetworkAccess = + objc.registerName("allowsExpensiveNetworkAccess"); +late final _sel_allowsConstrainedNetworkAccess = + objc.registerName("allowsConstrainedNetworkAccess"); +late final _sel_assumesHTTP3Capable = objc.registerName("assumesHTTP3Capable"); + +abstract class NSURLRequestAttribution { + static const int NSURLRequestAttributionDeveloper = 0; + static const int NSURLRequestAttributionUser = 1; } -class NSScanner extends NSObject { - NSScanner._(ffi.Pointer id, AVFAudio lib, +late final _sel_attribution = objc.registerName("attribution"); +final _objc_msgSend_324 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_requiresDNSSECValidation = + objc.registerName("requiresDNSSECValidation"); +late final _sel_HTTPMethod = objc.registerName("HTTPMethod"); +late final _sel_allHTTPHeaderFields = objc.registerName("allHTTPHeaderFields"); +late final _sel_valueForHTTPHeaderField_ = + objc.registerName("valueForHTTPHeaderField:"); +late final _sel_HTTPBody = objc.registerName("HTTPBody"); +final _objc_msgSend_325 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + +class NSInputStream extends NSStream { + NSInputStream._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSScanner] that points to the same underlying object as [other]. - static NSScanner castFrom(T other) { - return NSScanner._(other._id, other._lib, retain: true, release: true); - } + /// Constructs a [NSInputStream] that points to the same underlying object as [other]. + NSInputStream.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSScanner] that wraps the given raw object pointer. - static NSScanner castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSScanner._(other, lib, retain: retain, release: release); + /// Constructs a [NSInputStream] that wraps the given raw object pointer. + NSInputStream.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSInputStream]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSInputStream); } - /// Returns whether [obj] is an instance of [NSScanner]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSScanner1); + int read_maxLength_(ffi.Pointer buffer, int len) { + return _objc_msgSend_329(this.pointer, _sel_read_maxLength_, buffer, len); } - NSString get string { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_string1); - return NSString._(_ret, _lib, retain: true, release: true); + bool getBuffer_length_(ffi.Pointer> buffer, + ffi.Pointer len) { + return _objc_msgSend_339(this.pointer, _sel_getBuffer_length_, buffer, len); } - int get scanLocation { - return _lib._objc_msgSend_10(_id, _lib._sel_scanLocation1); + bool get hasBytesAvailable { + return _objc_msgSend_7(this.pointer, _sel_hasBytesAvailable); } - set scanLocation(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setScanLocation_1, value); + NSInputStream initWithData_(objc.NSData data) { + final _ret = + _objc_msgSend_340(this.pointer, _sel_initWithData_, data.pointer); + return NSInputStream.castFromPointer(_ret, retain: true, release: true); } - NSCharacterSet? get charactersToBeSkipped { - final _ret = _lib._objc_msgSend_820(_id, _lib._sel_charactersToBeSkipped1); + NSInputStream? initWithURL_(objc.NSURL url) { + final _ret = _objc_msgSend_3(this.pointer, _sel_initWithURL_, url.pointer); return _ret.address == 0 ? null - : NSCharacterSet._(_ret, _lib, retain: true, release: true); + : NSInputStream.castFromPointer(_ret, retain: true, release: true); } - set charactersToBeSkipped(NSCharacterSet? value) { - return _lib._objc_msgSend_821( - _id, _lib._sel_setCharactersToBeSkipped_1, value?._id ?? ffi.nullptr); + NSInputStream? initWithFileAtPath_(objc.NSString path) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_initWithFileAtPath_, path.pointer); + return _ret.address == 0 + ? null + : NSInputStream.castFromPointer(_ret, retain: true, release: true); } - bool get caseSensitive { - return _lib._objc_msgSend_12(_id, _lib._sel_caseSensitive1); + static NSInputStream? inputStreamWithData_(objc.NSData data) { + final _ret = _objc_msgSend_341( + _class_NSInputStream, _sel_inputStreamWithData_, data.pointer); + return _ret.address == 0 + ? null + : NSInputStream.castFromPointer(_ret, retain: true, release: true); } - set caseSensitive(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setCaseSensitive_1, value); + static NSInputStream? inputStreamWithFileAtPath_(objc.NSString path) { + final _ret = _objc_msgSend_2( + _class_NSInputStream, _sel_inputStreamWithFileAtPath_, path.pointer); + return _ret.address == 0 + ? null + : NSInputStream.castFromPointer(_ret, retain: true, release: true); } - NSObject? get locale { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_locale1); + static NSInputStream? inputStreamWithURL_(objc.NSURL url) { + final _ret = _objc_msgSend_3( + _class_NSInputStream, _sel_inputStreamWithURL_, url.pointer); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : NSInputStream.castFromPointer(_ret, retain: true, release: true); } - set locale(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setLocale_1, value?._id ?? ffi.nullptr); + static void getStreamsToHostWithName_port_inputStream_outputStream_( + objc.NSString hostname, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_333( + _class_NSInputStream, + _sel_getStreamsToHostWithName_port_inputStream_outputStream_, + hostname.pointer, + port, + inputStream, + outputStream); } - NSScanner initWithString_(NSString string) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithString_1, string._id); - return NSScanner._(_ret, _lib, retain: true, release: true); + static void getStreamsToHost_port_inputStream_outputStream_( + NSHost host, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_337( + _class_NSInputStream, + _sel_getStreamsToHost_port_inputStream_outputStream_, + host.pointer, + port, + inputStream, + outputStream); } - bool scanInt_(ffi.Pointer result) { - return _lib._objc_msgSend_822(_id, _lib._sel_scanInt_1, result); + static void getBoundStreamsWithBufferSize_inputStream_outputStream_( + int bufferSize, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_338( + _class_NSInputStream, + _sel_getBoundStreamsWithBufferSize_inputStream_outputStream_, + bufferSize, + inputStream, + outputStream); } - bool scanInteger_(ffi.Pointer result) { - return _lib._objc_msgSend_823(_id, _lib._sel_scanInteger_1, result); + @override + NSInputStream init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSInputStream.castFromPointer(_ret, retain: true, release: true); } - bool scanLongLong_(ffi.Pointer result) { - return _lib._objc_msgSend_824(_id, _lib._sel_scanLongLong_1, result); + static NSInputStream new1() { + final _ret = _objc_msgSend_40(_class_NSInputStream, _sel_new); + return NSInputStream.castFromPointer(_ret, retain: false, release: true); } - bool scanUnsignedLongLong_(ffi.Pointer result) { - return _lib._objc_msgSend_825( - _id, _lib._sel_scanUnsignedLongLong_1, result); + static NSInputStream allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSInputStream, _sel_allocWithZone_, zone); + return NSInputStream.castFromPointer(_ret, retain: false, release: true); } - bool scanFloat_(ffi.Pointer result) { - return _lib._objc_msgSend_826(_id, _lib._sel_scanFloat_1, result); + static NSInputStream alloc() { + final _ret = _objc_msgSend_40(_class_NSInputStream, _sel_alloc); + return NSInputStream.castFromPointer(_ret, retain: false, release: true); } - bool scanDouble_(ffi.Pointer result) { - return _lib._objc_msgSend_827(_id, _lib._sel_scanDouble_1, result); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSInputStream, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - bool scanHexInt_(ffi.Pointer result) { - return _lib._objc_msgSend_828(_id, _lib._sel_scanHexInt_1, result); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSInputStream, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - bool scanHexLongLong_(ffi.Pointer result) { - return _lib._objc_msgSend_825(_id, _lib._sel_scanHexLongLong_1, result); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSInputStream, _sel_accessInstanceVariablesDirectly); } - bool scanHexFloat_(ffi.Pointer result) { - return _lib._objc_msgSend_826(_id, _lib._sel_scanHexFloat_1, result); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSInputStream, _sel_useStoredAccessor); } - bool scanHexDouble_(ffi.Pointer result) { - return _lib._objc_msgSend_827(_id, _lib._sel_scanHexDouble_1, result); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSInputStream, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - bool scanString_intoString_( - NSString string, ffi.Pointer> result) { - return _lib._objc_msgSend_829( - _id, _lib._sel_scanString_intoString_1, string._id, result); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSInputStream, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - bool scanCharactersFromSet_intoString_( - NSCharacterSet set, ffi.Pointer> result) { - return _lib._objc_msgSend_830( - _id, _lib._sel_scanCharactersFromSet_intoString_1, set._id, result); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSInputStream, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - bool scanUpToString_intoString_( - NSString string, ffi.Pointer> result) { - return _lib._objc_msgSend_829( - _id, _lib._sel_scanUpToString_intoString_1, string._id, result); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSInputStream, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool scanUpToCharactersFromSet_intoString_( - NSCharacterSet set, ffi.Pointer> result) { - return _lib._objc_msgSend_830( - _id, _lib._sel_scanUpToCharactersFromSet_intoString_1, set._id, result); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSInputStream, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - bool get atEnd { - return _lib._objc_msgSend_12(_id, _lib._sel_isAtEnd1); - } +late final _class_NSInputStream = objc.getClass("NSInputStream"); - static NSScanner scannerWithString_(AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSScanner1, _lib._sel_scannerWithString_1, string._id); - return NSScanner._(_ret, _lib, retain: true, release: true); - } +class NSStream extends objc.NSObject { + NSStream._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - static NSObject localizedScannerWithString_(AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSScanner1, - _lib._sel_localizedScannerWithString_1, string._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSStream] that points to the same underlying object as [other]. + NSStream.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - bool scanDecimal_(ffi.Pointer dcm) { - return _lib._objc_msgSend_831(_id, _lib._sel_scanDecimal_1, dcm); - } + /// Constructs a [NSStream] that wraps the given raw object pointer. + NSStream.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - @override - NSScanner init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSScanner._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSStream]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSStream); } - static NSScanner new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSScanner1, _lib._sel_new1); - return NSScanner._(_ret, _lib, retain: false, release: true); + void open() { + _objc_msgSend_82(this.pointer, _sel_open); } - static NSScanner allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSScanner1, _lib._sel_allocWithZone_1, zone); - return NSScanner._(_ret, _lib, retain: false, release: true); + void close() { + _objc_msgSend_82(this.pointer, _sel_close); } - static NSScanner alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSScanner1, _lib._sel_alloc1); - return NSScanner._(_ret, _lib, retain: false, release: true); + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSScanner1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set delegate(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDelegate_, value?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSScanner1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + objc.NSObject? propertyForKey_(objc.NSString key) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_propertyForKey_, key.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSScanner1, _lib._sel_accessInstanceVariablesDirectly1); + bool setProperty_forKey_(objc.NSObject? property, objc.NSString key) { + return _objc_msgSend_326(this.pointer, _sel_setProperty_forKey_, + property?.pointer ?? ffi.nullptr, key.pointer); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSScanner1, _lib._sel_useStoredAccessor1); + void scheduleInRunLoop_forMode_(NSRunLoop aRunLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_scheduleInRunLoop_forMode_, + aRunLoop.pointer, mode.pointer); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSScanner1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + void removeFromRunLoop_forMode_(NSRunLoop aRunLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_removeFromRunLoop_forMode_, + aRunLoop.pointer, mode.pointer); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSScanner1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + int get streamStatus { + return _objc_msgSend_327(this.pointer, _sel_streamStatus); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSScanner1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSError? get streamError { + final _ret = _objc_msgSend_328(this.pointer, _sel_streamError); + return _ret.address == 0 + ? null + : objc.NSError.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSScanner1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static void getStreamsToHostWithName_port_inputStream_outputStream_( + objc.NSString hostname, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_333( + _class_NSStream, + _sel_getStreamsToHostWithName_port_inputStream_outputStream_, + hostname.pointer, + port, + inputStream, + outputStream); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScanner1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static void getStreamsToHost_port_inputStream_outputStream_( + NSHost host, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_337( + _class_NSStream, + _sel_getStreamsToHost_port_inputStream_outputStream_, + host.pointer, + port, + inputStream, + outputStream); } -} - -final class NSDecimal extends ffi.Opaque {} - -class NSException extends NSObject { - NSException._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSException] that points to the same underlying object as [other]. - static NSException castFrom(T other) { - return NSException._(other._id, other._lib, retain: true, release: true); + static void getBoundStreamsWithBufferSize_inputStream_outputStream_( + int bufferSize, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_338( + _class_NSStream, + _sel_getBoundStreamsWithBufferSize_inputStream_outputStream_, + bufferSize, + inputStream, + outputStream); } - /// Returns a [NSException] that wraps the given raw object pointer. - static NSException castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSException._(other, lib, retain: retain, release: release); + @override + NSStream init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSStream.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSException]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSException1); + static NSStream new1() { + final _ret = _objc_msgSend_40(_class_NSStream, _sel_new); + return NSStream.castFromPointer(_ret, retain: false, release: true); } - static NSException exceptionWithName_reason_userInfo_( - AVFAudio _lib, NSString name, NSString? reason, NSDictionary? userInfo) { - final _ret = _lib._objc_msgSend_832( - _lib._class_NSException1, - _lib._sel_exceptionWithName_reason_userInfo_1, - name._id, - reason?._id ?? ffi.nullptr, - userInfo?._id ?? ffi.nullptr); - return NSException._(_ret, _lib, retain: true, release: true); - } - - NSException initWithName_reason_userInfo_( - NSString aName, NSString? aReason, NSDictionary? aUserInfo) { - final _ret = _lib._objc_msgSend_833( - _id, - _lib._sel_initWithName_reason_userInfo_1, - aName._id, - aReason?._id ?? ffi.nullptr, - aUserInfo?._id ?? ffi.nullptr); - return NSException._(_ret, _lib, retain: true, release: true); - } - - NSString get name { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_name1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get reason { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_reason1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSStream allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSStream, _sel_allocWithZone_, zone); + return NSStream.castFromPointer(_ret, retain: false, release: true); } - NSDictionary? get userInfo { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_userInfo1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static NSStream alloc() { + final _ret = _objc_msgSend_40(_class_NSStream, _sel_alloc); + return NSStream.castFromPointer(_ret, retain: false, release: true); } - NSArray get callStackReturnAddresses { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_callStackReturnAddresses1); - return NSArray._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSStream, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSArray get callStackSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_callStackSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSStream, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - void raise() { - _lib._objc_msgSend_1(_id, _lib._sel_raise1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSStream, _sel_accessInstanceVariablesDirectly); } - static void raise_format_(AVFAudio _lib, NSString name, NSString format) { - _lib._objc_msgSend_551(_lib._class_NSException1, _lib._sel_raise_format_1, - name._id, format._id); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSStream, _sel_useStoredAccessor); } - static void raise_format_arguments_(AVFAudio _lib, NSString name, - NSString format, ffi.Pointer<__va_list_tag> argList) { - _lib._objc_msgSend_834(_lib._class_NSException1, - _lib._sel_raise_format_arguments_1, name._id, format._id, argList); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSStream, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - @override - NSException init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSException._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSStream, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static NSException new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSException1, _lib._sel_new1); - return NSException._(_ret, _lib, retain: false, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSStream, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSException allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSException1, _lib._sel_allocWithZone_1, zone); - return NSException._(_ret, _lib, retain: false, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSStream, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSException alloc(AVFAudio _lib) { + static objc.NSObject classForKeyedUnarchiver() { final _ret = - _lib._objc_msgSend_2(_lib._class_NSException1, _lib._sel_alloc1); - return NSException._(_ret, _lib, retain: false, release: true); + _objc_msgSend_40(_class_NSStream, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSException1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); +late final _class_NSStream = objc.getClass("NSStream"); +late final _sel_open = objc.registerName("open"); +late final _sel_close = objc.registerName("close"); +late final _sel_propertyForKey_ = objc.registerName("propertyForKey:"); +late final _sel_setProperty_forKey_ = objc.registerName("setProperty:forKey:"); +final _objc_msgSend_326 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +abstract class NSStreamStatus { + static const int NSStreamStatusNotOpen = 0; + static const int NSStreamStatusOpening = 1; + static const int NSStreamStatusOpen = 2; + static const int NSStreamStatusReading = 3; + static const int NSStreamStatusWriting = 4; + static const int NSStreamStatusAtEnd = 5; + static const int NSStreamStatusClosed = 6; + static const int NSStreamStatusError = 7; +} + +late final _sel_streamStatus = objc.registerName("streamStatus"); +final _objc_msgSend_327 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_streamError = objc.registerName("streamError"); +final _objc_msgSend_328 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + +class NSOutputStream extends NSStream { + NSOutputStream._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSOutputStream] that points to the same underlying object as [other]. + NSOutputStream.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSOutputStream] that wraps the given raw object pointer. + NSOutputStream.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSOutputStream]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSOutputStream); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSException1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + int write_maxLength_(ffi.Pointer buffer, int len) { + return _objc_msgSend_329(this.pointer, _sel_write_maxLength_, buffer, len); + } + + bool get hasSpaceAvailable { + return _objc_msgSend_7(this.pointer, _sel_hasSpaceAvailable); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSException1, _lib._sel_accessInstanceVariablesDirectly1); + NSOutputStream initToMemory() { + final _ret = _objc_msgSend_40(this.pointer, _sel_initToMemory); + return NSOutputStream.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSException1, _lib._sel_useStoredAccessor1); + NSOutputStream initToBuffer_capacity_( + ffi.Pointer buffer, int capacity) { + final _ret = _objc_msgSend_330( + this.pointer, _sel_initToBuffer_capacity_, buffer, capacity); + return NSOutputStream.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSException1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + NSOutputStream? initWithURL_append_(objc.NSURL url, bool shouldAppend) { + final _ret = _objc_msgSend_331( + this.pointer, _sel_initWithURL_append_, url.pointer, shouldAppend); + return _ret.address == 0 + ? null + : NSOutputStream.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSException1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + NSOutputStream? initToFileAtPath_append_( + objc.NSString path, bool shouldAppend) { + final _ret = _objc_msgSend_332(this.pointer, _sel_initToFileAtPath_append_, + path.pointer, shouldAppend); + return _ret.address == 0 + ? null + : NSOutputStream.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSException1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static NSOutputStream outputStreamToMemory() { + final _ret = + _objc_msgSend_40(_class_NSOutputStream, _sel_outputStreamToMemory); + return NSOutputStream.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSException1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSOutputStream outputStreamToBuffer_capacity_( + ffi.Pointer buffer, int capacity) { + final _ret = _objc_msgSend_330(_class_NSOutputStream, + _sel_outputStreamToBuffer_capacity_, buffer, capacity); + return NSOutputStream.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSException1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSOutputStream outputStreamToFileAtPath_append_( + objc.NSString path, bool shouldAppend) { + final _ret = _objc_msgSend_164(_class_NSOutputStream, + _sel_outputStreamToFileAtPath_append_, path.pointer, shouldAppend); + return NSOutputStream.castFromPointer(_ret, retain: true, release: true); } -} -class NSFileHandle extends NSObject { - NSFileHandle._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + static NSOutputStream? outputStreamWithURL_append_( + objc.NSURL url, bool shouldAppend) { + final _ret = _objc_msgSend_331(_class_NSOutputStream, + _sel_outputStreamWithURL_append_, url.pointer, shouldAppend); + return _ret.address == 0 + ? null + : NSOutputStream.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a [NSFileHandle] that points to the same underlying object as [other]. - static NSFileHandle castFrom(T other) { - return NSFileHandle._(other._id, other._lib, retain: true, release: true); + static void getStreamsToHostWithName_port_inputStream_outputStream_( + objc.NSString hostname, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_333( + _class_NSOutputStream, + _sel_getStreamsToHostWithName_port_inputStream_outputStream_, + hostname.pointer, + port, + inputStream, + outputStream); } - /// Returns a [NSFileHandle] that wraps the given raw object pointer. - static NSFileHandle castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSFileHandle._(other, lib, retain: retain, release: release); + static void getStreamsToHost_port_inputStream_outputStream_( + NSHost host, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_337( + _class_NSOutputStream, + _sel_getStreamsToHost_port_inputStream_outputStream_, + host.pointer, + port, + inputStream, + outputStream); } - /// Returns whether [obj] is an instance of [NSFileHandle]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSFileHandle1); + static void getBoundStreamsWithBufferSize_inputStream_outputStream_( + int bufferSize, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_338( + _class_NSOutputStream, + _sel_getBoundStreamsWithBufferSize_inputStream_outputStream_, + bufferSize, + inputStream, + outputStream); } - NSData get availableData { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_availableData1); - return NSData._(_ret, _lib, retain: true, release: true); + @override + NSOutputStream init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSOutputStream.castFromPointer(_ret, retain: true, release: true); } - NSFileHandle initWithFileDescriptor_closeOnDealloc_(int fd, bool closeopt) { - final _ret = _lib._objc_msgSend_835( - _id, _lib._sel_initWithFileDescriptor_closeOnDealloc_1, fd, closeopt); - return NSFileHandle._(_ret, _lib, retain: true, release: true); + static NSOutputStream new1() { + final _ret = _objc_msgSend_40(_class_NSOutputStream, _sel_new); + return NSOutputStream.castFromPointer(_ret, retain: false, release: true); } - NSFileHandle? initWithCoder_(NSCoder coder) { + static NSOutputStream allocWithZone_(ffi.Pointer<_NSZone> zone) { final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSFileHandle._(_ret, _lib, retain: true, release: true); + _objc_msgSend_47(_class_NSOutputStream, _sel_allocWithZone_, zone); + return NSOutputStream.castFromPointer(_ret, retain: false, release: true); } - NSData? readDataToEndOfFileAndReturnError_( - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_836( - _id, _lib._sel_readDataToEndOfFileAndReturnError_1, error); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + static NSOutputStream alloc() { + final _ret = _objc_msgSend_40(_class_NSOutputStream, _sel_alloc); + return NSOutputStream.castFromPointer(_ret, retain: false, release: true); } - NSData? readDataUpToLength_error_( - int length, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_837( - _id, _lib._sel_readDataUpToLength_error_1, length, error); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSOutputStream, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - bool writeData_error_( - NSData data, ffi.Pointer> error) { - return _lib._objc_msgSend_838( - _id, _lib._sel_writeData_error_1, data._id, error); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSOutputStream, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - bool getOffset_error_(ffi.Pointer offsetInFile, - ffi.Pointer> error) { - return _lib._objc_msgSend_839( - _id, _lib._sel_getOffset_error_1, offsetInFile, error); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSOutputStream, _sel_accessInstanceVariablesDirectly); } - bool seekToEndReturningOffset_error_( - ffi.Pointer offsetInFile, - ffi.Pointer> error) { - return _lib._objc_msgSend_839( - _id, _lib._sel_seekToEndReturningOffset_error_1, offsetInFile, error); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSOutputStream, _sel_useStoredAccessor); } - bool seekToOffset_error_( - int offset, ffi.Pointer> error) { - return _lib._objc_msgSend_840( - _id, _lib._sel_seekToOffset_error_1, offset, error); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSOutputStream, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - bool truncateAtOffset_error_( - int offset, ffi.Pointer> error) { - return _lib._objc_msgSend_840( - _id, _lib._sel_truncateAtOffset_error_1, offset, error); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSOutputStream, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - bool synchronizeAndReturnError_(ffi.Pointer> error) { - return _lib._objc_msgSend_255( - _id, _lib._sel_synchronizeAndReturnError_1, error); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSOutputStream, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSOutputStream, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSOutputStream, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSOutputStream = objc.getClass("NSOutputStream"); +late final _sel_write_maxLength_ = objc.registerName("write:maxLength:"); +final _objc_msgSend_329 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Long Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); +late final _sel_hasSpaceAvailable = objc.registerName("hasSpaceAvailable"); +late final _sel_initToMemory = objc.registerName("initToMemory"); +late final _sel_initToBuffer_capacity_ = + objc.registerName("initToBuffer:capacity:"); +final _objc_msgSend_330 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); +late final _sel_initWithURL_append_ = objc.registerName("initWithURL:append:"); +final _objc_msgSend_331 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_initToFileAtPath_append_ = + objc.registerName("initToFileAtPath:append:"); +final _objc_msgSend_332 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_outputStreamToMemory = + objc.registerName("outputStreamToMemory"); +late final _sel_outputStreamToBuffer_capacity_ = + objc.registerName("outputStreamToBuffer:capacity:"); +late final _sel_outputStreamToFileAtPath_append_ = + objc.registerName("outputStreamToFileAtPath:append:"); +late final _sel_outputStreamWithURL_append_ = + objc.registerName("outputStreamWithURL:append:"); +late final _sel_getStreamsToHostWithName_port_inputStream_outputStream_ = objc + .registerName("getStreamsToHostWithName:port:inputStream:outputStream:"); +final _objc_msgSend_333 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer>)>(); + +class NSHost extends objc.NSObject { + NSHost._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - bool closeAndReturnError_(ffi.Pointer> error) { - return _lib._objc_msgSend_255(_id, _lib._sel_closeAndReturnError_1, error); - } + /// Constructs a [NSHost] that points to the same underlying object as [other]. + NSHost.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSHost] that wraps the given raw object pointer. + NSHost.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static NSFileHandle getFileHandleWithStandardInput(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_841( - _lib._class_NSFileHandle1, _lib._sel_fileHandleWithStandardInput1); - return NSFileHandle._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSHost]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSHost); } - static NSFileHandle getFileHandleWithStandardOutput(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_841( - _lib._class_NSFileHandle1, _lib._sel_fileHandleWithStandardOutput1); - return NSFileHandle._(_ret, _lib, retain: true, release: true); + static NSHost currentHost() { + final _ret = _objc_msgSend_40(_class_NSHost, _sel_currentHost); + return NSHost.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle getFileHandleWithStandardError(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_841( - _lib._class_NSFileHandle1, _lib._sel_fileHandleWithStandardError1); - return NSFileHandle._(_ret, _lib, retain: true, release: true); + static NSHost hostWithName_(objc.NSString? name) { + final _ret = _objc_msgSend_334( + _class_NSHost, _sel_hostWithName_, name?.pointer ?? ffi.nullptr); + return NSHost.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle getFileHandleWithNullDevice(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_841( - _lib._class_NSFileHandle1, _lib._sel_fileHandleWithNullDevice1); - return NSFileHandle._(_ret, _lib, retain: true, release: true); + static NSHost hostWithAddress_(objc.NSString address) { + final _ret = + _objc_msgSend_35(_class_NSHost, _sel_hostWithAddress_, address.pointer); + return NSHost.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle? fileHandleForReadingAtPath_( - AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSFileHandle1, - _lib._sel_fileHandleForReadingAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSFileHandle._(_ret, _lib, retain: true, release: true); + bool isEqualToHost_(NSHost aHost) { + return _objc_msgSend_335(this.pointer, _sel_isEqualToHost_, aHost.pointer); } - static NSFileHandle? fileHandleForWritingAtPath_( - AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSFileHandle1, - _lib._sel_fileHandleForWritingAtPath_1, path._id); + objc.NSString? get name { + final _ret = _objc_msgSend_13(this.pointer, _sel_name); return _ret.address == 0 ? null - : NSFileHandle._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle? fileHandleForUpdatingAtPath_( - AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSFileHandle1, - _lib._sel_fileHandleForUpdatingAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSFileHandle._(_ret, _lib, retain: true, release: true); + objc.NSArray get names { + final _ret = _objc_msgSend_6(this.pointer, _sel_names); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle? fileHandleForReadingFromURL_error_( - AVFAudio _lib, NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_842(_lib._class_NSFileHandle1, - _lib._sel_fileHandleForReadingFromURL_error_1, url._id, error); + objc.NSString? get address { + final _ret = _objc_msgSend_13(this.pointer, _sel_address); return _ret.address == 0 ? null - : NSFileHandle._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle? fileHandleForWritingToURL_error_( - AVFAudio _lib, NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_842(_lib._class_NSFileHandle1, - _lib._sel_fileHandleForWritingToURL_error_1, url._id, error); - return _ret.address == 0 - ? null - : NSFileHandle._(_ret, _lib, retain: true, release: true); + objc.NSArray get addresses { + final _ret = _objc_msgSend_6(this.pointer, _sel_addresses); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle? fileHandleForUpdatingURL_error_( - AVFAudio _lib, NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_842(_lib._class_NSFileHandle1, - _lib._sel_fileHandleForUpdatingURL_error_1, url._id, error); + objc.NSString? get localizedName { + final _ret = _objc_msgSend_13(this.pointer, _sel_localizedName); return _ret.address == 0 ? null - : NSFileHandle._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void readInBackgroundAndNotifyForModes_(NSArray? modes) { - _lib._objc_msgSend_843(_id, _lib._sel_readInBackgroundAndNotifyForModes_1, - modes?._id ?? ffi.nullptr); + static void setHostCacheEnabled_(bool flag) { + _objc_msgSend_336(_class_NSHost, _sel_setHostCacheEnabled_, flag); } - void readInBackgroundAndNotify() { - _lib._objc_msgSend_1(_id, _lib._sel_readInBackgroundAndNotify1); + static bool isHostCacheEnabled() { + return _objc_msgSend_7(_class_NSHost, _sel_isHostCacheEnabled); } - void readToEndOfFileInBackgroundAndNotifyForModes_(NSArray? modes) { - _lib._objc_msgSend_843( - _id, - _lib._sel_readToEndOfFileInBackgroundAndNotifyForModes_1, - modes?._id ?? ffi.nullptr); + static void flushHostCache() { + _objc_msgSend_82(_class_NSHost, _sel_flushHostCache); } - void readToEndOfFileInBackgroundAndNotify() { - _lib._objc_msgSend_1(_id, _lib._sel_readToEndOfFileInBackgroundAndNotify1); + @override + NSHost init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSHost.castFromPointer(_ret, retain: true, release: true); } - void acceptConnectionInBackgroundAndNotifyForModes_(NSArray? modes) { - _lib._objc_msgSend_843( - _id, - _lib._sel_acceptConnectionInBackgroundAndNotifyForModes_1, - modes?._id ?? ffi.nullptr); + static NSHost new1() { + final _ret = _objc_msgSend_40(_class_NSHost, _sel_new); + return NSHost.castFromPointer(_ret, retain: false, release: true); } - void acceptConnectionInBackgroundAndNotify() { - _lib._objc_msgSend_1(_id, _lib._sel_acceptConnectionInBackgroundAndNotify1); + static NSHost allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSHost, _sel_allocWithZone_, zone); + return NSHost.castFromPointer(_ret, retain: false, release: true); } - void waitForDataInBackgroundAndNotifyForModes_(NSArray? modes) { - _lib._objc_msgSend_843( - _id, - _lib._sel_waitForDataInBackgroundAndNotifyForModes_1, - modes?._id ?? ffi.nullptr); + static NSHost alloc() { + final _ret = _objc_msgSend_40(_class_NSHost, _sel_alloc); + return NSHost.castFromPointer(_ret, retain: false, release: true); } - void waitForDataInBackgroundAndNotify() { - _lib._objc_msgSend_1(_id, _lib._sel_waitForDataInBackgroundAndNotify1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSHost, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - ObjCBlock_ffiVoid_NSFileHandle? get readabilityHandler { - final _ret = _lib._objc_msgSend_844(_id, _lib._sel_readabilityHandler1); - return _ret.address == 0 - ? null - : ObjCBlock_ffiVoid_NSFileHandle._(_ret, _lib, - retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSHost, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - set readabilityHandler(ObjCBlock_ffiVoid_NSFileHandle? value) { - return _lib._objc_msgSend_845( - _id, _lib._sel_setReadabilityHandler_1, value?._id ?? ffi.nullptr); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7(_class_NSHost, _sel_accessInstanceVariablesDirectly); } - ObjCBlock_ffiVoid_NSFileHandle? get writeabilityHandler { - final _ret = _lib._objc_msgSend_844(_id, _lib._sel_writeabilityHandler1); - return _ret.address == 0 - ? null - : ObjCBlock_ffiVoid_NSFileHandle._(_ret, _lib, - retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSHost, _sel_useStoredAccessor); } - set writeabilityHandler(ObjCBlock_ffiVoid_NSFileHandle? value) { - return _lib._objc_msgSend_845( - _id, _lib._sel_setWriteabilityHandler_1, value?._id ?? ffi.nullptr); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSHost, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSFileHandle initWithFileDescriptor_(int fd) { - final _ret = - _lib._objc_msgSend_846(_id, _lib._sel_initWithFileDescriptor_1, fd); - return NSFileHandle._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51( + _class_NSHost, _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - int get fileDescriptor { - return _lib._objc_msgSend_237(_id, _lib._sel_fileDescriptor1); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSHost, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSHost, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40(_class_NSHost, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSHost = objc.getClass("NSHost"); +late final _sel_currentHost = objc.registerName("currentHost"); +late final _sel_hostWithName_ = objc.registerName("hostWithName:"); +final _objc_msgSend_334 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_hostWithAddress_ = objc.registerName("hostWithAddress:"); +late final _sel_isEqualToHost_ = objc.registerName("isEqualToHost:"); +final _objc_msgSend_335 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_names = objc.registerName("names"); +late final _sel_address = objc.registerName("address"); +late final _sel_addresses = objc.registerName("addresses"); +late final _sel_localizedName = objc.registerName("localizedName"); +late final _sel_setHostCacheEnabled_ = + objc.registerName("setHostCacheEnabled:"); +final _objc_msgSend_336 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, bool)>(); +late final _sel_isHostCacheEnabled = objc.registerName("isHostCacheEnabled"); +late final _sel_flushHostCache = objc.registerName("flushHostCache"); +late final _sel_getStreamsToHost_port_inputStream_outputStream_ = + objc.registerName("getStreamsToHost:port:inputStream:outputStream:"); +final _objc_msgSend_337 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer>)>(); +late final _sel_getBoundStreamsWithBufferSize_inputStream_outputStream_ = objc + .registerName("getBoundStreamsWithBufferSize:inputStream:outputStream:"); +final _objc_msgSend_338 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer>)>(); +late final _sel_read_maxLength_ = objc.registerName("read:maxLength:"); +late final _sel_getBuffer_length_ = objc.registerName("getBuffer:length:"); +final _objc_msgSend_339 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>(); +late final _sel_hasBytesAvailable = objc.registerName("hasBytesAvailable"); +late final _sel_initWithData_ = objc.registerName("initWithData:"); +final _objc_msgSend_340 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithFileAtPath_ = objc.registerName("initWithFileAtPath:"); +late final _sel_inputStreamWithData_ = + objc.registerName("inputStreamWithData:"); +final _objc_msgSend_341 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_inputStreamWithFileAtPath_ = + objc.registerName("inputStreamWithFileAtPath:"); +late final _sel_inputStreamWithURL_ = objc.registerName("inputStreamWithURL:"); +late final _sel_HTTPBodyStream = objc.registerName("HTTPBodyStream"); +final _objc_msgSend_342 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_HTTPShouldHandleCookies = + objc.registerName("HTTPShouldHandleCookies"); +late final _sel_HTTPShouldUsePipelining = + objc.registerName("HTTPShouldUsePipelining"); +late final _sel_originalRequest = objc.registerName("originalRequest"); +final _objc_msgSend_343 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_currentRequest = objc.registerName("currentRequest"); + +class NSURLResponse extends objc.NSObject { + NSURLResponse._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSData readDataToEndOfFile() { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_readDataToEndOfFile1); - return NSData._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSURLResponse] that points to the same underlying object as [other]. + NSURLResponse.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSData readDataOfLength_(int length) { - final _ret = - _lib._objc_msgSend_847(_id, _lib._sel_readDataOfLength_1, length); - return NSData._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSURLResponse] that wraps the given raw object pointer. + NSURLResponse.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - void writeData_(NSData data) { - _lib._objc_msgSend_285(_id, _lib._sel_writeData_1, data._id); + /// Returns whether [obj] is an instance of [NSURLResponse]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLResponse); } - int get offsetInFile { - return _lib._objc_msgSend_164(_id, _lib._sel_offsetInFile1); + NSURLResponse initWithURL_MIMEType_expectedContentLength_textEncodingName_( + objc.NSURL URL, + objc.NSString? MIMEType, + int length, + objc.NSString? name) { + final _ret = _objc_msgSend_344( + this.pointer, + _sel_initWithURL_MIMEType_expectedContentLength_textEncodingName_, + URL.pointer, + MIMEType?.pointer ?? ffi.nullptr, + length, + name?.pointer ?? ffi.nullptr); + return NSURLResponse.castFromPointer(_ret, retain: true, release: true); } - int seekToEndOfFile() { - return _lib._objc_msgSend_164(_id, _lib._sel_seekToEndOfFile1); + objc.NSURL? get URL { + final _ret = _objc_msgSend_10(this.pointer, _sel_URL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - void seekToFileOffset_(int offset) { - _lib._objc_msgSend_848(_id, _lib._sel_seekToFileOffset_1, offset); + objc.NSString? get MIMEType { + final _ret = _objc_msgSend_13(this.pointer, _sel_MIMEType); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void truncateFileAtOffset_(int offset) { - _lib._objc_msgSend_848(_id, _lib._sel_truncateFileAtOffset_1, offset); + int get expectedContentLength { + return _objc_msgSend_345(this.pointer, _sel_expectedContentLength); } - void synchronizeFile() { - _lib._objc_msgSend_1(_id, _lib._sel_synchronizeFile1); + objc.NSString? get textEncodingName { + final _ret = _objc_msgSend_13(this.pointer, _sel_textEncodingName); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void closeFile() { - _lib._objc_msgSend_1(_id, _lib._sel_closeFile1); + objc.NSString? get suggestedFilename { + final _ret = _objc_msgSend_13(this.pointer, _sel_suggestedFilename); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } @override - NSFileHandle init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSFileHandle._(_ret, _lib, retain: true, release: true); + NSURLResponse init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLResponse.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFileHandle1, _lib._sel_new1); - return NSFileHandle._(_ret, _lib, retain: false, release: true); + static NSURLResponse new1() { + final _ret = _objc_msgSend_40(_class_NSURLResponse, _sel_new); + return NSURLResponse.castFromPointer(_ret, retain: false, release: true); } - static NSFileHandle allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSFileHandle1, _lib._sel_allocWithZone_1, zone); - return NSFileHandle._(_ret, _lib, retain: false, release: true); + static NSURLResponse allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSURLResponse, _sel_allocWithZone_, zone); + return NSURLResponse.castFromPointer(_ret, retain: false, release: true); } - static NSFileHandle alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFileHandle1, _lib._sel_alloc1); - return NSFileHandle._(_ret, _lib, retain: false, release: true); + static NSURLResponse alloc() { + final _ret = _objc_msgSend_40(_class_NSURLResponse, _sel_alloc); + return NSURLResponse.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSFileHandle1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLResponse, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSFileHandle1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLResponse, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFileHandle1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLResponse, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFileHandle1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLResponse, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSFileHandle1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLResponse, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSFileHandle1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLResponse, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSFileHandle1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLResponse, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLResponse, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSURLResponse, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLResponse = objc.getClass("NSURLResponse"); +late final _sel_initWithURL_MIMEType_expectedContentLength_textEncodingName_ = + objc.registerName( + "initWithURL:MIMEType:expectedContentLength:textEncodingName:"); +final _objc_msgSend_344 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_MIMEType = objc.registerName("MIMEType"); +late final _sel_expectedContentLength = + objc.registerName("expectedContentLength"); +final _objc_msgSend_345 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.LongLong Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_textEncodingName = objc.registerName("textEncodingName"); +late final _sel_suggestedFilename = objc.registerName("suggestedFilename"); +late final _sel_response = objc.registerName("response"); +final _objc_msgSend_346 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_progress = objc.registerName("progress"); +final _objc_msgSend_347 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_earliestBeginDate = objc.registerName("earliestBeginDate"); +late final _sel_setEarliestBeginDate_ = + objc.registerName("setEarliestBeginDate:"); +late final _sel_countOfBytesClientExpectsToSend = + objc.registerName("countOfBytesClientExpectsToSend"); +final _objc_msgSend_348 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int64 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCountOfBytesClientExpectsToSend_ = + objc.registerName("setCountOfBytesClientExpectsToSend:"); +final _objc_msgSend_349 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int64)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_countOfBytesClientExpectsToReceive = + objc.registerName("countOfBytesClientExpectsToReceive"); +late final _sel_setCountOfBytesClientExpectsToReceive_ = + objc.registerName("setCountOfBytesClientExpectsToReceive:"); +late final _sel_countOfBytesSent = objc.registerName("countOfBytesSent"); +late final _sel_countOfBytesReceived = + objc.registerName("countOfBytesReceived"); +late final _sel_countOfBytesExpectedToSend = + objc.registerName("countOfBytesExpectedToSend"); +late final _sel_countOfBytesExpectedToReceive = + objc.registerName("countOfBytesExpectedToReceive"); +late final _sel_taskDescription = objc.registerName("taskDescription"); +late final _sel_setTaskDescription_ = objc.registerName("setTaskDescription:"); +late final _sel_cancel = objc.registerName("cancel"); - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSFileHandle1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSFileHandle1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } +abstract class NSURLSessionTaskState { + static const int NSURLSessionTaskStateRunning = 0; + static const int NSURLSessionTaskStateSuspended = 1; + static const int NSURLSessionTaskStateCanceling = 2; + static const int NSURLSessionTaskStateCompleted = 3; } -void _ObjCBlock_ffiVoid_NSFileHandle_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => +late final _sel_state = objc.registerName("state"); +final _objc_msgSend_350 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_error = objc.registerName("error"); +late final _sel_suspend = objc.registerName("suspend"); +late final _sel_resume = objc.registerName("resume"); +late final _sel_priority = objc.registerName("priority"); +final _objc_msgSend_351 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Float Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_351Fpret = objc.msgSendFpretPointer + .cast< + ffi.NativeFunction< + ffi.Float Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setPriority_ = objc.registerName("setPriority:"); +final _objc_msgSend_352 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Float)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, double)>(); +late final _sel_prefersIncrementalDelivery = + objc.registerName("prefersIncrementalDelivery"); +late final _sel_setPrefersIncrementalDelivery_ = + objc.registerName("setPrefersIncrementalDelivery:"); +late final _sel_storeCookies_forTask_ = + objc.registerName("storeCookies:forTask:"); +final _objc_msgSend_353 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSArray_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => block.ref.target .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSFileHandle_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSFileHandle_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSFileHandle_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSFileHandle_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSFileHandle_closureRegistry[id] = fn; + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSArray_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSArray_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSArray_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSArray_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSArray_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSFileHandle_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSFileHandle_closureRegistry[block.ref.target.address]!( - arg0); +void _ObjCBlock_ffiVoid_NSArray_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSArray_closureRegistry[block.ref.target.address]!(arg0); -class ObjCBlock_ffiVoid_NSFileHandle extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSFileHandle._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, +class ObjCBlock_ffiVoid_NSArray extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSArray._(ffi.Pointer pointer, {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSFileHandle castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSFileHandle._(pointer, lib, + static ObjCBlock_ffiVoid_NSArray castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSArray._(pointer, retain: retain, release: release); } @@ -62214,21 +16084,18 @@ class ObjCBlock_ffiVoid_NSFileHandle extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSFileHandle.fromFunctionPointer( - AVFAudio lib, + ObjCBlock_ffiVoid_NSArray.fromFunctionPointer( ffi.Pointer< - ffi - .NativeFunction arg0)>> + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSFileHandle_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSArray_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -62236,20 +16103,18 @@ class ObjCBlock_ffiVoid_NSFileHandle extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSFileHandle.fromFunction( - AVFAudio lib, void Function(NSFileHandle) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSFileHandle_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSFileHandle_registerClosure((ffi - .Pointer - arg0) => - fn(NSFileHandle._(arg0, lib, retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSArray.fromFunction(void Function(objc.NSArray?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSArray_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSArray_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSArray.castFromPointer(arg0, + retain: true, release: true))))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -62261,4123 +16126,6859 @@ class ObjCBlock_ffiVoid_NSFileHandle extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSFileHandle.listener( - AVFAudio lib, void Function(NSFileHandle) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSFileHandle_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSFileHandle_registerClosure( - (ffi.Pointer arg0) => fn(NSFileHandle._( - arg0, lib, - retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSArray.listener(void Function(objc.NSArray?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSArray_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSArray_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSArray.castFromPointer(arg0, retain: true, release: true))))); static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? _dartFuncListenerTrampoline; - void call(NSFileHandle arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0._id); -} - -class NSHTTPCookieStorage extends NSObject { - NSHTTPCookieStorage._(ffi.Pointer id, AVFAudio lib, + void call(objc.NSArray? arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function( + ffi.Pointer, ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr); +} + +late final _sel_getCookiesForTask_completionHandler_ = + objc.registerName("getCookiesForTask:completionHandler:"); +final _objc_msgSend_354 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSIndexPath extends objc.NSObject { + NSIndexPath._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSHTTPCookieStorage] that points to the same underlying object as [other]. - static NSHTTPCookieStorage castFrom(T other) { - return NSHTTPCookieStorage._(other._id, other._lib, - retain: true, release: true); - } - - /// Returns a [NSHTTPCookieStorage] that wraps the given raw object pointer. - static NSHTTPCookieStorage castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSHTTPCookieStorage._(other, lib, retain: retain, release: release); - } + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns whether [obj] is an instance of [NSHTTPCookieStorage]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSHTTPCookieStorage1); - } + /// Constructs a [NSIndexPath] that points to the same underlying object as [other]. + NSIndexPath.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - static NSHTTPCookieStorage getSharedHTTPCookieStorage(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_849( - _lib._class_NSHTTPCookieStorage1, _lib._sel_sharedHTTPCookieStorage1); - return NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSIndexPath] that wraps the given raw object pointer. + NSIndexPath.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static NSHTTPCookieStorage sharedCookieStorageForGroupContainerIdentifier_( - AVFAudio _lib, NSString identifier) { - final _ret = _lib._objc_msgSend_850( - _lib._class_NSHTTPCookieStorage1, - _lib._sel_sharedCookieStorageForGroupContainerIdentifier_1, - identifier._id); - return NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSIndexPath]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSIndexPath); } - NSArray? get cookies { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_cookies1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + static NSIndexPath indexPathWithIndex_(int index) { + final _ret = + _objc_msgSend_355(_class_NSIndexPath, _sel_indexPathWithIndex_, index); + return NSIndexPath.castFromPointer(_ret, retain: true, release: true); } - void setCookie_(NSHTTPCookie cookie) { - _lib._objc_msgSend_854(_id, _lib._sel_setCookie_1, cookie._id); + static NSIndexPath indexPathWithIndexes_length_( + ffi.Pointer indexes, int length) { + final _ret = _objc_msgSend_356( + _class_NSIndexPath, _sel_indexPathWithIndexes_length_, indexes, length); + return NSIndexPath.castFromPointer(_ret, retain: true, release: true); } - void deleteCookie_(NSHTTPCookie cookie) { - _lib._objc_msgSend_854(_id, _lib._sel_deleteCookie_1, cookie._id); + NSIndexPath initWithIndexes_length_( + ffi.Pointer indexes, int length) { + final _ret = _objc_msgSend_356( + this.pointer, _sel_initWithIndexes_length_, indexes, length); + return NSIndexPath.castFromPointer(_ret, retain: true, release: true); } - void removeCookiesSinceDate_(NSDate date) { - _lib._objc_msgSend_540(_id, _lib._sel_removeCookiesSinceDate_1, date._id); + NSIndexPath initWithIndex_(int index) { + final _ret = _objc_msgSend_355(this.pointer, _sel_initWithIndex_, index); + return NSIndexPath.castFromPointer(_ret, retain: true, release: true); } - NSArray? cookiesForURL_(NSURL URL) { + NSIndexPath indexPathByAddingIndex_(int index) { final _ret = - _lib._objc_msgSend_133(_id, _lib._sel_cookiesForURL_1, URL._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + _objc_msgSend_357(this.pointer, _sel_indexPathByAddingIndex_, index); + return NSIndexPath.castFromPointer(_ret, retain: true, release: true); } - void setCookies_forURL_mainDocumentURL_( - NSArray cookies, NSURL? URL, NSURL? mainDocumentURL) { - _lib._objc_msgSend_855( - _id, - _lib._sel_setCookies_forURL_mainDocumentURL_1, - cookies._id, - URL?._id ?? ffi.nullptr, - mainDocumentURL?._id ?? ffi.nullptr); + NSIndexPath indexPathByRemovingLastIndex() { + final _ret = + _objc_msgSend_358(this.pointer, _sel_indexPathByRemovingLastIndex); + return NSIndexPath.castFromPointer(_ret, retain: true, release: true); } - int get cookieAcceptPolicy { - return _lib._objc_msgSend_856(_id, _lib._sel_cookieAcceptPolicy1); + int indexAtPosition_(int position) { + return _objc_msgSend_359(this.pointer, _sel_indexAtPosition_, position); } - set cookieAcceptPolicy(int value) { - return _lib._objc_msgSend_857( - _id, _lib._sel_setCookieAcceptPolicy_1, value); + int get length { + return _objc_msgSend_29(this.pointer, _sel_length); } - NSArray sortedCookiesUsingDescriptors_(NSArray sortOrder) { - final _ret = _lib._objc_msgSend_68( - _id, _lib._sel_sortedCookiesUsingDescriptors_1, sortOrder._id); - return NSArray._(_ret, _lib, retain: true, release: true); + void getIndexes_range_( + ffi.Pointer indexes, _NSRange positionRange) { + _objc_msgSend_360( + this.pointer, _sel_getIndexes_range_, indexes, positionRange); } - void storeCookies_forTask_(NSArray cookies, NSURLSessionTask task) { - _lib._objc_msgSend_882( - _id, _lib._sel_storeCookies_forTask_1, cookies._id, task._id); + int compare_(NSIndexPath otherObject) { + return _objc_msgSend_361(this.pointer, _sel_compare_, otherObject.pointer); } - void getCookiesForTask_completionHandler_( - NSURLSessionTask task, ObjCBlock_ffiVoid_NSArray completionHandler) { - _lib._objc_msgSend_883(_id, _lib._sel_getCookiesForTask_completionHandler_1, - task._id, completionHandler._id); + void getIndexes_(ffi.Pointer indexes) { + _objc_msgSend_362(this.pointer, _sel_getIndexes_, indexes); } @override - NSHTTPCookieStorage init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); + NSIndexPath init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSIndexPath.castFromPointer(_ret, retain: true, release: true); } - static NSHTTPCookieStorage new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSHTTPCookieStorage1, _lib._sel_new1); - return NSHTTPCookieStorage._(_ret, _lib, retain: false, release: true); + static NSIndexPath new1() { + final _ret = _objc_msgSend_40(_class_NSIndexPath, _sel_new); + return NSIndexPath.castFromPointer(_ret, retain: false, release: true); } - static NSHTTPCookieStorage allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSHTTPCookieStorage1, _lib._sel_allocWithZone_1, zone); - return NSHTTPCookieStorage._(_ret, _lib, retain: false, release: true); + static NSIndexPath allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSIndexPath, _sel_allocWithZone_, zone); + return NSIndexPath.castFromPointer(_ret, retain: false, release: true); } - static NSHTTPCookieStorage alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSHTTPCookieStorage1, _lib._sel_alloc1); - return NSHTTPCookieStorage._(_ret, _lib, retain: false, release: true); + static NSIndexPath alloc() { + final _ret = _objc_msgSend_40(_class_NSIndexPath, _sel_alloc); + return NSIndexPath.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSHTTPCookieStorage1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSIndexPath, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSHTTPCookieStorage1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSIndexPath, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSHTTPCookieStorage1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSIndexPath, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSHTTPCookieStorage1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSIndexPath, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSHTTPCookieStorage1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSIndexPath, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSHTTPCookieStorage1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSIndexPath, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSHTTPCookieStorage1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSHTTPCookieStorage1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSIndexPath, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSIndexPath, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSIndexPath, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSIndexPath = objc.getClass("NSIndexPath"); +late final _sel_indexPathWithIndex_ = objc.registerName("indexPathWithIndex:"); +final _objc_msgSend_355 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_indexPathWithIndexes_length_ = + objc.registerName("indexPathWithIndexes:length:"); +final _objc_msgSend_356 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_initWithIndexes_length_ = + objc.registerName("initWithIndexes:length:"); +late final _sel_initWithIndex_ = objc.registerName("initWithIndex:"); +late final _sel_indexPathByAddingIndex_ = + objc.registerName("indexPathByAddingIndex:"); +final _objc_msgSend_357 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_indexPathByRemovingLastIndex = + objc.registerName("indexPathByRemovingLastIndex"); +final _objc_msgSend_358 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_indexAtPosition_ = objc.registerName("indexAtPosition:"); +final _objc_msgSend_359 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_getIndexes_range_ = objc.registerName("getIndexes:range:"); +final _objc_msgSend_360 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>(); +late final _sel_compare_ = objc.registerName("compare:"); +final _objc_msgSend_361 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_getIndexes_ = objc.registerName("getIndexes:"); +final _objc_msgSend_362 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSInflectionRule extends objc.NSObject { + NSInflectionRule._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSHTTPCookieStorage1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} + /// Constructs a [NSInflectionRule] that points to the same underlying object as [other]. + NSInflectionRule.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); -class NSHTTPCookie extends NSObject { - NSHTTPCookie._(ffi.Pointer id, AVFAudio lib, + /// Constructs a [NSInflectionRule] that wraps the given raw object pointer. + NSInflectionRule.castFromPointer(ffi.Pointer other, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : this._(other, retain: retain, release: release); - /// Returns a [NSHTTPCookie] that points to the same underlying object as [other]. - static NSHTTPCookie castFrom(T other) { - return NSHTTPCookie._(other._id, other._lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSInflectionRule]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSInflectionRule); } - /// Returns a [NSHTTPCookie] that wraps the given raw object pointer. - static NSHTTPCookie castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSHTTPCookie._(other, lib, retain: retain, release: release); + @override + objc.NSObject init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSHTTPCookie]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSHTTPCookie1); + static NSInflectionRule getAutomaticRule() { + final _ret = _objc_msgSend_363(_class_NSInflectionRule, _sel_automaticRule); + return NSInflectionRule.castFromPointer(_ret, retain: true, release: true); } - NSHTTPCookie? initWithProperties_(NSDictionary properties) { - final _ret = _lib._objc_msgSend_851( - _id, _lib._sel_initWithProperties_1, properties._id); - return _ret.address == 0 - ? null - : NSHTTPCookie._(_ret, _lib, retain: true, release: true); + static bool canInflectLanguage_(objc.NSString language) { + return _objc_msgSend_51( + _class_NSInflectionRule, _sel_canInflectLanguage_, language.pointer); } - static NSHTTPCookie? cookieWithProperties_( - AVFAudio _lib, NSDictionary properties) { - final _ret = _lib._objc_msgSend_852(_lib._class_NSHTTPCookie1, - _lib._sel_cookieWithProperties_1, properties._id); - return _ret.address == 0 - ? null - : NSHTTPCookie._(_ret, _lib, retain: true, release: true); + static bool getCanInflectPreferredLocalization() { + return _objc_msgSend_7( + _class_NSInflectionRule, _sel_canInflectPreferredLocalization); } - static NSDictionary requestHeaderFieldsWithCookies_( - AVFAudio _lib, NSArray cookies) { - final _ret = _lib._objc_msgSend_508(_lib._class_NSHTTPCookie1, - _lib._sel_requestHeaderFieldsWithCookies_1, cookies._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); + static NSInflectionRule new1() { + final _ret = _objc_msgSend_40(_class_NSInflectionRule, _sel_new); + return NSInflectionRule.castFromPointer(_ret, retain: false, release: true); } - static NSArray cookiesWithResponseHeaderFields_forURL_( - AVFAudio _lib, NSDictionary headerFields, NSURL URL) { - final _ret = _lib._objc_msgSend_853( - _lib._class_NSHTTPCookie1, - _lib._sel_cookiesWithResponseHeaderFields_forURL_1, - headerFields._id, - URL._id); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSInflectionRule allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSInflectionRule, _sel_allocWithZone_, zone); + return NSInflectionRule.castFromPointer(_ret, retain: false, release: true); } - NSDictionary? get properties { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_properties1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static NSInflectionRule alloc() { + final _ret = _objc_msgSend_40(_class_NSInflectionRule, _sel_alloc); + return NSInflectionRule.castFromPointer(_ret, retain: false, release: true); } - int get version { - return _lib._objc_msgSend_10(_id, _lib._sel_version1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSInflectionRule, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSString get name { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_name1); - return NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSInflectionRule, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSString get value { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_value1); - return NSString._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSInflectionRule, _sel_accessInstanceVariablesDirectly); } - NSDate? get expiresDate { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_expiresDate1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSInflectionRule, _sel_useStoredAccessor); } - bool get sessionOnly { - return _lib._objc_msgSend_12(_id, _lib._sel_isSessionOnly1); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSInflectionRule, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSString get domain { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_domain1); - return NSString._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSInflectionRule, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSString get path { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_path1); - return NSString._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSInflectionRule, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - bool get secure { - return _lib._objc_msgSend_12(_id, _lib._sel_isSecure1); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSInflectionRule, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool get HTTPOnly { - return _lib._objc_msgSend_12(_id, _lib._sel_isHTTPOnly1); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSInflectionRule, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - NSString? get comment { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_comment1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } +late final _class_NSInflectionRule = objc.getClass("NSInflectionRule"); +late final _sel_automaticRule = objc.registerName("automaticRule"); +final _objc_msgSend_363 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_canInflectLanguage_ = objc.registerName("canInflectLanguage:"); +late final _sel_canInflectPreferredLocalization = + objc.registerName("canInflectPreferredLocalization"); - NSURL? get commentURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_commentURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); +class NSOrderedSet extends objc.NSObject { + NSOrderedSet._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSOrderedSet] that points to the same underlying object as [other]. + NSOrderedSet.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSOrderedSet] that wraps the given raw object pointer. + NSOrderedSet.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSOrderedSet]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSOrderedSet); } - NSArray? get portList { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_portList1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + int get count { + return _objc_msgSend_29(this.pointer, _sel_count); } - NSString? get sameSitePolicy { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_sameSitePolicy1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + objc.NSObject objectAtIndex_(int idx) { + final _ret = _objc_msgSend_355(this.pointer, _sel_objectAtIndex_, idx); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - @override - NSHTTPCookie init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSHTTPCookie._(_ret, _lib, retain: true, release: true); + int indexOfObject_(objc.NSObject object) { + return _objc_msgSend_364(this.pointer, _sel_indexOfObject_, object.pointer); } - static NSHTTPCookie new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSHTTPCookie1, _lib._sel_new1); - return NSHTTPCookie._(_ret, _lib, retain: false, release: true); + @override + NSOrderedSet init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static NSHTTPCookie allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSHTTPCookie1, _lib._sel_allocWithZone_1, zone); - return NSHTTPCookie._(_ret, _lib, retain: false, release: true); + NSOrderedSet initWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_365( + this.pointer, _sel_initWithObjects_count_, objects, cnt); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static NSHTTPCookie alloc(AVFAudio _lib) { + NSOrderedSet? initWithCoder_(objc.NSCoder coder) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSHTTPCookie1, _lib._sel_alloc1); - return NSHTTPCookie._(_ret, _lib, retain: false, release: true); + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSHTTPCookie1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + void getObjects_range_( + ffi.Pointer> objects, _NSRange range) { + _objc_msgSend_366(this.pointer, _sel_getObjects_range_, objects, range); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSHTTPCookie1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + objc.NSArray objectsAtIndexes_(objc.NSIndexSet indexes) { + final _ret = _objc_msgSend_367( + this.pointer, _sel_objectsAtIndexes_, indexes.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSHTTPCookie1, _lib._sel_accessInstanceVariablesDirectly1); + objc.NSObject? get firstObject { + final _ret = _objc_msgSend_66(this.pointer, _sel_firstObject); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSHTTPCookie1, _lib._sel_useStoredAccessor1); + objc.NSObject? get lastObject { + final _ret = _objc_msgSend_66(this.pointer, _sel_lastObject); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSHTTPCookie1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + bool isEqualToOrderedSet_(NSOrderedSet other) { + return _objc_msgSend_368( + this.pointer, _sel_isEqualToOrderedSet_, other.pointer); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSHTTPCookie1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + bool containsObject_(objc.NSObject object) { + return _objc_msgSend_0(this.pointer, _sel_containsObject_, object.pointer); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSHTTPCookie1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + bool intersectsOrderedSet_(NSOrderedSet other) { + return _objc_msgSend_368( + this.pointer, _sel_intersectsOrderedSet_, other.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSHTTPCookie1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool intersectsSet_(objc.NSSet set) { + return _objc_msgSend_369(this.pointer, _sel_intersectsSet_, set.pointer); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSHTTPCookie1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + bool isSubsetOfOrderedSet_(NSOrderedSet other) { + return _objc_msgSend_368( + this.pointer, _sel_isSubsetOfOrderedSet_, other.pointer); } -} - -abstract class NSHTTPCookieAcceptPolicy { - static const int NSHTTPCookieAcceptPolicyAlways = 0; - static const int NSHTTPCookieAcceptPolicyNever = 1; - static const int NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain = 2; -} - -class NSURLSessionTask extends NSObject { - NSURLSessionTask._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLSessionTask] that points to the same underlying object as [other]. - static NSURLSessionTask castFrom(T other) { - return NSURLSessionTask._(other._id, other._lib, - retain: true, release: true); + bool isSubsetOfSet_(objc.NSSet set) { + return _objc_msgSend_369(this.pointer, _sel_isSubsetOfSet_, set.pointer); } - /// Returns a [NSURLSessionTask] that wraps the given raw object pointer. - static NSURLSessionTask castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionTask._(other, lib, retain: retain, release: release); + objc.NSObject objectAtIndexedSubscript_(int idx) { + final _ret = + _objc_msgSend_355(this.pointer, _sel_objectAtIndexedSubscript_, idx); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSURLSessionTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionTask1); + objc.NSEnumerator objectEnumerator() { + final _ret = _objc_msgSend_370(this.pointer, _sel_objectEnumerator); + return objc.NSEnumerator.castFromPointer(_ret, retain: true, release: true); } - int get taskIdentifier { - return _lib._objc_msgSend_10(_id, _lib._sel_taskIdentifier1); + objc.NSEnumerator reverseObjectEnumerator() { + final _ret = _objc_msgSend_370(this.pointer, _sel_reverseObjectEnumerator); + return objc.NSEnumerator.castFromPointer(_ret, retain: true, release: true); } - NSURLRequest? get originalRequest { - final _ret = _lib._objc_msgSend_876(_id, _lib._sel_originalRequest1); - return _ret.address == 0 - ? null - : NSURLRequest._(_ret, _lib, retain: true, release: true); + NSOrderedSet get reversedOrderedSet { + final _ret = _objc_msgSend_371(this.pointer, _sel_reversedOrderedSet); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - NSURLRequest? get currentRequest { - final _ret = _lib._objc_msgSend_876(_id, _lib._sel_currentRequest1); - return _ret.address == 0 - ? null - : NSURLRequest._(_ret, _lib, retain: true, release: true); + objc.NSArray get array { + final _ret = _objc_msgSend_6(this.pointer, _sel_array); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSURLResponse? get response { - final _ret = _lib._objc_msgSend_878(_id, _lib._sel_response1); - return _ret.address == 0 - ? null - : NSURLResponse._(_ret, _lib, retain: true, release: true); + objc.NSSet get set1 { + final _ret = _objc_msgSend_372(this.pointer, _sel_set); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + void enumerateObjectsUsingBlock_( + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool block) { + _objc_msgSend_373( + this.pointer, _sel_enumerateObjectsUsingBlock_, block.pointer); } - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + void enumerateObjectsWithOptions_usingBlock_( + int opts, ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool block) { + _objc_msgSend_374(this.pointer, + _sel_enumerateObjectsWithOptions_usingBlock_, opts, block.pointer); } - NSProgress get progress { - final _ret = _lib._objc_msgSend_879(_id, _lib._sel_progress1); - return NSProgress._(_ret, _lib, retain: true, release: true); + void enumerateObjectsAtIndexes_options_usingBlock_(objc.NSIndexSet s, + int opts, ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool block) { + _objc_msgSend_375( + this.pointer, + _sel_enumerateObjectsAtIndexes_options_usingBlock_, + s.pointer, + opts, + block.pointer); } - NSDate? get earliestBeginDate { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_earliestBeginDate1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + int indexOfObjectPassingTest_( + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + return _objc_msgSend_376( + this.pointer, _sel_indexOfObjectPassingTest_, predicate.pointer); } - set earliestBeginDate(NSDate? value) { - return _lib._objc_msgSend_800( - _id, _lib._sel_setEarliestBeginDate_1, value?._id ?? ffi.nullptr); + int indexOfObjectWithOptions_passingTest_( + int opts, ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + return _objc_msgSend_377(this.pointer, + _sel_indexOfObjectWithOptions_passingTest_, opts, predicate.pointer); } - int get countOfBytesClientExpectsToSend { - return _lib._objc_msgSend_666( - _id, _lib._sel_countOfBytesClientExpectsToSend1); + int indexOfObjectAtIndexes_options_passingTest_(objc.NSIndexSet s, int opts, + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + return _objc_msgSend_378( + this.pointer, + _sel_indexOfObjectAtIndexes_options_passingTest_, + s.pointer, + opts, + predicate.pointer); } - set countOfBytesClientExpectsToSend(int value) { - return _lib._objc_msgSend_667( - _id, _lib._sel_setCountOfBytesClientExpectsToSend_1, value); + objc.NSIndexSet indexesOfObjectsPassingTest_( + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + final _ret = _objc_msgSend_379( + this.pointer, _sel_indexesOfObjectsPassingTest_, predicate.pointer); + return objc.NSIndexSet.castFromPointer(_ret, retain: true, release: true); } - int get countOfBytesClientExpectsToReceive { - return _lib._objc_msgSend_666( - _id, _lib._sel_countOfBytesClientExpectsToReceive1); + objc.NSIndexSet indexesOfObjectsWithOptions_passingTest_( + int opts, ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + final _ret = _objc_msgSend_380(this.pointer, + _sel_indexesOfObjectsWithOptions_passingTest_, opts, predicate.pointer); + return objc.NSIndexSet.castFromPointer(_ret, retain: true, release: true); } - set countOfBytesClientExpectsToReceive(int value) { - return _lib._objc_msgSend_667( - _id, _lib._sel_setCountOfBytesClientExpectsToReceive_1, value); + objc.NSIndexSet indexesOfObjectsAtIndexes_options_passingTest_( + objc.NSIndexSet s, + int opts, + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + final _ret = _objc_msgSend_381( + this.pointer, + _sel_indexesOfObjectsAtIndexes_options_passingTest_, + s.pointer, + opts, + predicate.pointer); + return objc.NSIndexSet.castFromPointer(_ret, retain: true, release: true); } - int get countOfBytesSent { - return _lib._objc_msgSend_666(_id, _lib._sel_countOfBytesSent1); + int indexOfObject_inSortedRange_options_usingComparator_( + objc.NSObject object, + _NSRange range, + int opts, + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmp) { + return _objc_msgSend_382( + this.pointer, + _sel_indexOfObject_inSortedRange_options_usingComparator_, + object.pointer, + range, + opts, + cmp.pointer); } - int get countOfBytesReceived { - return _lib._objc_msgSend_666(_id, _lib._sel_countOfBytesReceived1); + objc.NSArray sortedArrayUsingComparator_( + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + final _ret = _objc_msgSend_383( + this.pointer, _sel_sortedArrayUsingComparator_, cmptr.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int get countOfBytesExpectedToSend { - return _lib._objc_msgSend_666(_id, _lib._sel_countOfBytesExpectedToSend1); + objc.NSArray sortedArrayWithOptions_usingComparator_(int opts, + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + final _ret = _objc_msgSend_384(this.pointer, + _sel_sortedArrayWithOptions_usingComparator_, opts, cmptr.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int get countOfBytesExpectedToReceive { - return _lib._objc_msgSend_666( - _id, _lib._sel_countOfBytesExpectedToReceive1); + objc.NSString get description { + final _ret = _objc_msgSend_12(this.pointer, _sel_description); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? get taskDescription { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_taskDescription1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + objc.NSString descriptionWithLocale_(objc.NSObject? locale) { + final _ret = _objc_msgSend_385(this.pointer, _sel_descriptionWithLocale_, + locale?.pointer ?? ffi.nullptr); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set taskDescription(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setTaskDescription_1, value?._id ?? ffi.nullptr); + objc.NSString descriptionWithLocale_indent_( + objc.NSObject? locale, int level) { + final _ret = _objc_msgSend_386( + this.pointer, + _sel_descriptionWithLocale_indent_, + locale?.pointer ?? ffi.nullptr, + level); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void cancel() { - _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + static NSOrderedSet orderedSet() { + final _ret = _objc_msgSend_40(_class_NSOrderedSet, _sel_orderedSet); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - int get state { - return _lib._objc_msgSend_880(_id, _lib._sel_state1); + static NSOrderedSet orderedSetWithObject_(objc.NSObject object) { + final _ret = _objc_msgSend_387( + _class_NSOrderedSet, _sel_orderedSetWithObject_, object.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - NSError? get error { - final _ret = _lib._objc_msgSend_322(_id, _lib._sel_error1); - return _ret.address == 0 - ? null - : NSError._(_ret, _lib, retain: true, release: true); + static NSOrderedSet orderedSetWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_365( + _class_NSOrderedSet, _sel_orderedSetWithObjects_count_, objects, cnt); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - void suspend() { - _lib._objc_msgSend_1(_id, _lib._sel_suspend1); + static NSOrderedSet orderedSetWithObjects_(objc.NSObject firstObj) { + final _ret = _objc_msgSend_387( + _class_NSOrderedSet, _sel_orderedSetWithObjects_, firstObj.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - void resume() { - _lib._objc_msgSend_1(_id, _lib._sel_resume1); + static NSOrderedSet orderedSetWithOrderedSet_(NSOrderedSet set) { + final _ret = _objc_msgSend_388( + _class_NSOrderedSet, _sel_orderedSetWithOrderedSet_, set.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - double get priority { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_239_fpret(_id, _lib._sel_priority1) - : _lib._objc_msgSend_239(_id, _lib._sel_priority1); + static NSOrderedSet orderedSetWithOrderedSet_range_copyItems_( + NSOrderedSet set, _NSRange range, bool flag) { + final _ret = _objc_msgSend_389( + _class_NSOrderedSet, + _sel_orderedSetWithOrderedSet_range_copyItems_, + set.pointer, + range, + flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - set priority(double value) { - return _lib._objc_msgSend_881(_id, _lib._sel_setPriority_1, value); + static NSOrderedSet orderedSetWithArray_(objc.NSArray array) { + final _ret = _objc_msgSend_390( + _class_NSOrderedSet, _sel_orderedSetWithArray_, array.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - bool get prefersIncrementalDelivery { - return _lib._objc_msgSend_12(_id, _lib._sel_prefersIncrementalDelivery1); + static NSOrderedSet orderedSetWithArray_range_copyItems_( + objc.NSArray array, _NSRange range, bool flag) { + final _ret = _objc_msgSend_391(_class_NSOrderedSet, + _sel_orderedSetWithArray_range_copyItems_, array.pointer, range, flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - set prefersIncrementalDelivery(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setPrefersIncrementalDelivery_1, value); + static NSOrderedSet orderedSetWithSet_(objc.NSSet set) { + final _ret = _objc_msgSend_392( + _class_NSOrderedSet, _sel_orderedSetWithSet_, set.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - @override - NSURLSessionTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionTask._(_ret, _lib, retain: true, release: true); + static NSOrderedSet orderedSetWithSet_copyItems_(objc.NSSet set, bool flag) { + final _ret = _objc_msgSend_393(_class_NSOrderedSet, + _sel_orderedSetWithSet_copyItems_, set.pointer, flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - static NSURLSessionTask new1(AVFAudio _lib) { + NSOrderedSet initWithObject_(objc.NSObject object) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLSessionTask1, _lib._sel_new1); - return NSURLSessionTask._(_ret, _lib, retain: false, release: true); + _objc_msgSend_387(this.pointer, _sel_initWithObject_, object.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionTask allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSessionTask1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionTask._(_ret, _lib, retain: false, release: true); + NSOrderedSet initWithObjects_(objc.NSObject firstObj) { + final _ret = _objc_msgSend_387( + this.pointer, _sel_initWithObjects_, firstObj.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionTask alloc(AVFAudio _lib) { + NSOrderedSet initWithOrderedSet_(NSOrderedSet set) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLSessionTask1, _lib._sel_alloc1); - return NSURLSessionTask._(_ret, _lib, retain: false, release: true); + _objc_msgSend_388(this.pointer, _sel_initWithOrderedSet_, set.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + NSOrderedSet initWithOrderedSet_copyItems_(NSOrderedSet set, bool flag) { + final _ret = _objc_msgSend_394( + this.pointer, _sel_initWithOrderedSet_copyItems_, set.pointer, flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + NSOrderedSet initWithOrderedSet_range_copyItems_( + NSOrderedSet set, _NSRange range, bool flag) { + final _ret = _objc_msgSend_389(this.pointer, + _sel_initWithOrderedSet_range_copyItems_, set.pointer, range, flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionTask1, - _lib._sel_accessInstanceVariablesDirectly1); + NSOrderedSet initWithArray_(objc.NSArray array) { + final _ret = + _objc_msgSend_390(this.pointer, _sel_initWithArray_, array.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionTask1, _lib._sel_useStoredAccessor1); + NSOrderedSet initWithArray_copyItems_(objc.NSArray set, bool flag) { + final _ret = _objc_msgSend_395( + this.pointer, _sel_initWithArray_copyItems_, set.pointer, flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSessionTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + NSOrderedSet initWithArray_range_copyItems_( + objc.NSArray set, _NSRange range, bool flag) { + final _ret = _objc_msgSend_391(this.pointer, + _sel_initWithArray_range_copyItems_, set.pointer, range, flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + NSOrderedSet initWithSet_(objc.NSSet set) { + final _ret = + _objc_msgSend_392(this.pointer, _sel_initWithSet_, set.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + NSOrderedSet initWithSet_copyItems_(objc.NSSet set, bool flag) { + final _ret = _objc_msgSend_393( + this.pointer, _sel_initWithSet_copyItems_, set.pointer, flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLSessionTask1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSObject differenceFromOrderedSet_withOptions_usingEquivalenceTest_( + NSOrderedSet other, + int options, + ObjCBlock_bool_objcObjCObject_objcObjCObject block) { + final _ret = _objc_msgSend_396( + this.pointer, + _sel_differenceFromOrderedSet_withOptions_usingEquivalenceTest_, + other.pointer, + options, + block.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionTask1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSObject differenceFromOrderedSet_withOptions_( + NSOrderedSet other, int options) { + final _ret = _objc_msgSend_397(this.pointer, + _sel_differenceFromOrderedSet_withOptions_, other.pointer, options); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } -} - -class NSURLRequest extends NSObject { - NSURLRequest._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLRequest] that points to the same underlying object as [other]. - static NSURLRequest castFrom(T other) { - return NSURLRequest._(other._id, other._lib, retain: true, release: true); + objc.NSObject differenceFromOrderedSet_(NSOrderedSet other) { + final _ret = _objc_msgSend_388( + this.pointer, _sel_differenceFromOrderedSet_, other.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSURLRequest] that wraps the given raw object pointer. - static NSURLRequest castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLRequest._(other, lib, retain: retain, release: release); + NSOrderedSet? orderedSetByApplyingDifference_(objc.NSObject difference) { + final _ret = _objc_msgSend_398( + this.pointer, _sel_orderedSetByApplyingDifference_, difference.pointer); + return _ret.address == 0 + ? null + : NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSURLRequest]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLRequest1); + objc.NSObject valueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_35(this.pointer, _sel_valueForKey_, key.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSURLRequest requestWithURL_(AVFAudio _lib, NSURL URL) { - final _ret = _lib._objc_msgSend_262( - _lib._class_NSURLRequest1, _lib._sel_requestWithURL_1, URL._id); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + void setValue_forKey_(objc.NSObject? value, objc.NSString key) { + _objc_msgSend_399(this.pointer, _sel_setValue_forKey_, + value?.pointer ?? ffi.nullptr, key.pointer); } - static bool getSupportsSecureCoding(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLRequest1, _lib._sel_supportsSecureCoding1); + void addObserver_forKeyPath_options_context_(objc.NSObject observer, + objc.NSString keyPath, int options, ffi.Pointer context) { + _objc_msgSend_400( + this.pointer, + _sel_addObserver_forKeyPath_options_context_, + observer.pointer, + keyPath.pointer, + options, + context); } - static NSURLRequest requestWithURL_cachePolicy_timeoutInterval_( - AVFAudio _lib, NSURL URL, int cachePolicy, double timeoutInterval) { - final _ret = _lib._objc_msgSend_858( - _lib._class_NSURLRequest1, - _lib._sel_requestWithURL_cachePolicy_timeoutInterval_1, - URL._id, - cachePolicy, - timeoutInterval); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + void removeObserver_forKeyPath_context_(objc.NSObject observer, + objc.NSString keyPath, ffi.Pointer context) { + _objc_msgSend_401(this.pointer, _sel_removeObserver_forKeyPath_context_, + observer.pointer, keyPath.pointer, context); } - NSURLRequest initWithURL_(NSURL URL) { - final _ret = _lib._objc_msgSend_262(_id, _lib._sel_initWithURL_1, URL._id); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + void removeObserver_forKeyPath_( + objc.NSObject observer, objc.NSString keyPath) { + _objc_msgSend_402(this.pointer, _sel_removeObserver_forKeyPath_, + observer.pointer, keyPath.pointer); } - NSURLRequest initWithURL_cachePolicy_timeoutInterval_( - NSURL URL, int cachePolicy, double timeoutInterval) { - final _ret = _lib._objc_msgSend_858( - _id, - _lib._sel_initWithURL_cachePolicy_timeoutInterval_1, - URL._id, - cachePolicy, - timeoutInterval); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + objc.NSArray sortedArrayUsingDescriptors_(objc.NSArray sortDescriptors) { + final _ret = _objc_msgSend_67(this.pointer, + _sel_sortedArrayUsingDescriptors_, sortDescriptors.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSURL? get URL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_URL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + NSOrderedSet filteredOrderedSetUsingPredicate_(NSPredicate p) { + final _ret = _objc_msgSend_412( + this.pointer, _sel_filteredOrderedSetUsingPredicate_, p.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - int get cachePolicy { - return _lib._objc_msgSend_859(_id, _lib._sel_cachePolicy1); + static NSOrderedSet new1() { + final _ret = _objc_msgSend_40(_class_NSOrderedSet, _sel_new); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - double get timeoutInterval { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_timeoutInterval1) - : _lib._objc_msgSend_165(_id, _lib._sel_timeoutInterval1); + static NSOrderedSet allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSOrderedSet, _sel_allocWithZone_, zone); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - NSURL? get mainDocumentURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_mainDocumentURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static NSOrderedSet alloc() { + final _ret = _objc_msgSend_40(_class_NSOrderedSet, _sel_alloc); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - int get networkServiceType { - return _lib._objc_msgSend_860(_id, _lib._sel_networkServiceType1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSOrderedSet, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - bool get allowsCellularAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsCellularAccess1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSOrderedSet, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - bool get allowsExpensiveNetworkAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsExpensiveNetworkAccess1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSOrderedSet, _sel_accessInstanceVariablesDirectly); } - bool get allowsConstrainedNetworkAccess { - return _lib._objc_msgSend_12( - _id, _lib._sel_allowsConstrainedNetworkAccess1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSOrderedSet, _sel_useStoredAccessor); } - bool get assumesHTTP3Capable { - return _lib._objc_msgSend_12(_id, _lib._sel_assumesHTTP3Capable1); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSOrderedSet, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - int get attribution { - return _lib._objc_msgSend_861(_id, _lib._sel_attribution1); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSOrderedSet, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - bool get requiresDNSSECValidation { - return _lib._objc_msgSend_12(_id, _lib._sel_requiresDNSSECValidation1); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSOrderedSet, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSOrderedSet, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSOrderedSet, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSOrderedSet = objc.getClass("NSOrderedSet"); +late final _sel_count = objc.registerName("count"); +late final _sel_objectAtIndex_ = objc.registerName("objectAtIndex:"); +late final _sel_indexOfObject_ = objc.registerName("indexOfObject:"); +final _objc_msgSend_364 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithObjects_count_ = + objc.registerName("initWithObjects:count:"); +final _objc_msgSend_365 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.UnsignedLong)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + int)>(); +late final _sel_getObjects_range_ = objc.registerName("getObjects:range:"); +final _objc_msgSend_366 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + _NSRange)>(); +late final _sel_objectsAtIndexes_ = objc.registerName("objectsAtIndexes:"); +final _objc_msgSend_367 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_firstObject = objc.registerName("firstObject"); +late final _sel_lastObject = objc.registerName("lastObject"); +late final _sel_isEqualToOrderedSet_ = + objc.registerName("isEqualToOrderedSet:"); +final _objc_msgSend_368 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_containsObject_ = objc.registerName("containsObject:"); +late final _sel_intersectsOrderedSet_ = + objc.registerName("intersectsOrderedSet:"); +late final _sel_intersectsSet_ = objc.registerName("intersectsSet:"); +final _objc_msgSend_369 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isSubsetOfOrderedSet_ = + objc.registerName("isSubsetOfOrderedSet:"); +late final _sel_isSubsetOfSet_ = objc.registerName("isSubsetOfSet:"); +late final _sel_objectAtIndexedSubscript_ = + objc.registerName("objectAtIndexedSubscript:"); +late final _sel_objectEnumerator = objc.registerName("objectEnumerator"); +final _objc_msgSend_370 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_reverseObjectEnumerator = + objc.registerName("reverseObjectEnumerator"); +late final _sel_reversedOrderedSet = objc.registerName("reversedOrderedSet"); +final _objc_msgSend_371 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_array = objc.registerName("array"); +late final _sel_set = objc.registerName("set"); +final _objc_msgSend_372 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer, int, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureRegistry = + , int, ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_registerClosure( + void Function(ffi.Pointer, int, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureRegistry[id] = + fn; + return ffi.Pointer.fromAddress(id); +} - NSString? get HTTPMethod { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_HTTPMethod1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } +void _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); - NSDictionary? get allHTTPHeaderFields { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_allHTTPHeaderFields1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } +class ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool + extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); - NSString? valueForHTTPHeaderField_(NSString field) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_valueForHTTPHeaderField_1, field._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool._(pointer, + retain: retain, release: release); } - NSData? get HTTPBody { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_HTTPBody1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - NSInputStream? get HTTPBodyStream { - final _ret = _lib._objc_msgSend_875(_id, _lib._sel_HTTPBodyStream1); - return _ret.address == 0 - ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool.fromFunction( + void Function(objc.NSObject, int, ffi.Pointer) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_registerClosure( + (ffi.Pointer arg0, int arg1, + ffi.Pointer arg2) => + fn(objc.NSObject.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.Pointer? _dartFuncTrampoline; - bool get HTTPShouldHandleCookies { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldHandleCookies1); + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool.listener( + void Function(objc.NSObject, int, ffi.Pointer) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_registerClosure( + (ffi.Pointer arg0, int arg1, + ffi.Pointer arg2) => + fn(objc.NSObject.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(objc.NSObject arg0, int arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>()(pointer, arg0.pointer, arg1, arg2); +} + +late final _sel_enumerateObjectsUsingBlock_ = + objc.registerName("enumerateObjectsUsingBlock:"); +final _objc_msgSend_373 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSEnumerationOptions { + static const int NSEnumerationConcurrent = 1; + static const int NSEnumerationReverse = 2; +} + +late final _sel_enumerateObjectsWithOptions_usingBlock_ = + objc.registerName("enumerateObjectsWithOptions:usingBlock:"); +final _objc_msgSend_374 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_enumerateObjectsAtIndexes_options_usingBlock_ = + objc.registerName("enumerateObjectsAtIndexes:options:usingBlock:"); +final _objc_msgSend_375 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +bool _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>>() + .asFunction< + bool Function(ffi.Pointer, int, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureRegistry = + , int, ffi.Pointer)>{}; +int _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_registerClosure( + bool Function(ffi.Pointer, int, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureRegistryIndex; + _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +bool _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); + +class ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool + extends objc.ObjCBlockBase { + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool._(pointer, + retain: retain, release: release); } - bool get HTTPShouldUsePipelining { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldUsePipelining1); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline, + false) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool.fromFunction( + bool Function(objc.NSObject, int, ffi.Pointer) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureTrampoline, false) + .cast(), + _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_registerClosure( + (ffi.Pointer arg0, int arg1, ffi.Pointer arg2) => + fn(objc.NSObject.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.Pointer? _dartFuncTrampoline; + + bool call(objc.NSObject arg0, int arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1, + ffi.Pointer arg2)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>()(pointer, arg0.pointer, arg1, arg2); +} + +late final _sel_indexOfObjectPassingTest_ = + objc.registerName("indexOfObjectPassingTest:"); +final _objc_msgSend_376 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_indexOfObjectWithOptions_passingTest_ = + objc.registerName("indexOfObjectWithOptions:passingTest:"); +final _objc_msgSend_377 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_indexOfObjectAtIndexes_options_passingTest_ = + objc.registerName("indexOfObjectAtIndexes:options:passingTest:"); +final _objc_msgSend_378 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_indexesOfObjectsPassingTest_ = + objc.registerName("indexesOfObjectsPassingTest:"); +final _objc_msgSend_379 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_indexesOfObjectsWithOptions_passingTest_ = + objc.registerName("indexesOfObjectsWithOptions:passingTest:"); +final _objc_msgSend_380 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_indexesOfObjectsAtIndexes_options_passingTest_ = + objc.registerName("indexesOfObjectsAtIndexes:options:passingTest:"); +final _objc_msgSend_381 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +int _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +final _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureRegistry = + , ffi.Pointer)>{}; +int _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_registerClosure( + int Function(ffi.Pointer, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureRegistryIndex; + _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureRegistry[ + id] = fn; + return ffi.Pointer.fromAddress(id); +} + +int _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureRegistry[ + block.ref.target.address]!(arg0, arg1); - @override - NSURLRequest init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLRequest._(_ret, _lib, retain: true, release: true); - } +class ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject + extends objc.ObjCBlockBase { + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); - static NSURLRequest new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLRequest1, _lib._sel_new1); - return NSURLRequest._(_ret, _lib, retain: false, release: true); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject + castFromPointer(ffi.Pointer pointer, + {bool retain = false, bool release = false}) { + return ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject._(pointer, + retain: retain, release: release); } - static NSURLRequest allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLRequest1, _lib._sel_allocWithZone_1, zone); - return NSURLRequest._(_ret, _lib, retain: false, release: true); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_fnPtrTrampoline, + 0) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - static NSURLRequest alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLRequest1, _lib._sel_alloc1); - return NSURLRequest._(_ret, _lib, retain: false, release: true); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject.fromFunction( + int Function(objc.NSObject, objc.NSObject) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureTrampoline, 0) + .cast(), + _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => + fn(objc.NSObject.castFromPointer(arg0, retain: true, release: true), objc.NSObject.castFromPointer(arg1, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLRequest1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } + int call(objc.NSObject arg0, objc.NSObject arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0.pointer, arg1.pointer); +} + +late final _sel_indexOfObject_inSortedRange_options_usingComparator_ = + objc.registerName("indexOfObject:inSortedRange:options:usingComparator:"); +final _objc_msgSend_382 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + int, + ffi.Pointer)>(); +late final _sel_sortedArrayUsingComparator_ = + objc.registerName("sortedArrayUsingComparator:"); +final _objc_msgSend_383 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLRequest1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } +abstract class NSSortOptions { + static const int NSSortConcurrent = 1; + static const int NSSortStable = 16; +} - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLRequest1, _lib._sel_accessInstanceVariablesDirectly1); - } +late final _sel_sortedArrayWithOptions_usingComparator_ = + objc.registerName("sortedArrayWithOptions:usingComparator:"); +final _objc_msgSend_384 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_descriptionWithLocale_ = + objc.registerName("descriptionWithLocale:"); +final _objc_msgSend_385 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_descriptionWithLocale_indent_ = + objc.registerName("descriptionWithLocale:indent:"); +final _objc_msgSend_386 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_orderedSet = objc.registerName("orderedSet"); +late final _sel_orderedSetWithObject_ = + objc.registerName("orderedSetWithObject:"); +final _objc_msgSend_387 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_orderedSetWithObjects_count_ = + objc.registerName("orderedSetWithObjects:count:"); +late final _sel_orderedSetWithObjects_ = + objc.registerName("orderedSetWithObjects:"); +late final _sel_orderedSetWithOrderedSet_ = + objc.registerName("orderedSetWithOrderedSet:"); +final _objc_msgSend_388 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_orderedSetWithOrderedSet_range_copyItems_ = + objc.registerName("orderedSetWithOrderedSet:range:copyItems:"); +final _objc_msgSend_389 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + bool)>(); +late final _sel_orderedSetWithArray_ = + objc.registerName("orderedSetWithArray:"); +final _objc_msgSend_390 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_orderedSetWithArray_range_copyItems_ = + objc.registerName("orderedSetWithArray:range:copyItems:"); +final _objc_msgSend_391 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + bool)>(); +late final _sel_orderedSetWithSet_ = objc.registerName("orderedSetWithSet:"); +final _objc_msgSend_392 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_orderedSetWithSet_copyItems_ = + objc.registerName("orderedSetWithSet:copyItems:"); +final _objc_msgSend_393 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_initWithObject_ = objc.registerName("initWithObject:"); +late final _sel_initWithObjects_ = objc.registerName("initWithObjects:"); +late final _sel_initWithOrderedSet_ = objc.registerName("initWithOrderedSet:"); +late final _sel_initWithOrderedSet_copyItems_ = + objc.registerName("initWithOrderedSet:copyItems:"); +final _objc_msgSend_394 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_initWithOrderedSet_range_copyItems_ = + objc.registerName("initWithOrderedSet:range:copyItems:"); +late final _sel_initWithArray_ = objc.registerName("initWithArray:"); +late final _sel_initWithArray_copyItems_ = + objc.registerName("initWithArray:copyItems:"); +final _objc_msgSend_395 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_initWithArray_range_copyItems_ = + objc.registerName("initWithArray:range:copyItems:"); +late final _sel_initWithSet_ = objc.registerName("initWithSet:"); +late final _sel_initWithSet_copyItems_ = + objc.registerName("initWithSet:copyItems:"); - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLRequest1, _lib._sel_useStoredAccessor1); - } +abstract class NSOrderedCollectionDifferenceCalculationOptions { + static const int NSOrderedCollectionDifferenceCalculationOmitInsertedObjects = + 1; + static const int NSOrderedCollectionDifferenceCalculationOmitRemovedObjects = + 2; + static const int NSOrderedCollectionDifferenceCalculationInferMoves = 4; +} - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLRequest1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } +bool _ObjCBlock_bool_objcObjCObject_objcObjCObject_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +final _ObjCBlock_bool_objcObjCObject_objcObjCObject_closureRegistry = , ffi.Pointer)>{}; +int _ObjCBlock_bool_objcObjCObject_objcObjCObject_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_bool_objcObjCObject_objcObjCObject_registerClosure( + bool Function( + ffi.Pointer, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_bool_objcObjCObject_objcObjCObject_closureRegistryIndex; + _ObjCBlock_bool_objcObjCObject_objcObjCObject_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLRequest1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } +bool _ObjCBlock_bool_objcObjCObject_objcObjCObject_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + _ObjCBlock_bool_objcObjCObject_objcObjCObject_closureRegistry[ + block.ref.target.address]!(arg0, arg1); - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLRequest1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } +class ObjCBlock_bool_objcObjCObject_objcObjCObject extends objc.ObjCBlockBase { + ObjCBlock_bool_objcObjCObject_objcObjCObject._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURLRequest1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_bool_objcObjCObject_objcObjCObject castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_bool_objcObjCObject_objcObjCObject._(pointer, + retain: retain, release: release); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLRequest1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_objcObjCObject.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_objcObjCObject_fnPtrTrampoline, + false) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; -abstract class NSURLRequestCachePolicy { - static const int NSURLRequestUseProtocolCachePolicy = 0; - static const int NSURLRequestReloadIgnoringLocalCacheData = 1; - static const int NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4; - static const int NSURLRequestReloadIgnoringCacheData = 1; - static const int NSURLRequestReturnCacheDataElseLoad = 2; - static const int NSURLRequestReturnCacheDataDontLoad = 3; - static const int NSURLRequestReloadRevalidatingCacheData = 5; -} + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_objcObjCObject.fromFunction( + bool Function(objc.NSObject, objc.NSObject) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_objcObjCObject_closureTrampoline, false) + .cast(), + _ObjCBlock_bool_objcObjCObject_objcObjCObject_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => + fn(objc.NSObject.castFromPointer(arg0, retain: true, release: true), objc.NSObject.castFromPointer(arg1, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; -abstract class NSURLRequestNetworkServiceType { - static const int NSURLNetworkServiceTypeDefault = 0; - static const int NSURLNetworkServiceTypeVoIP = 1; - static const int NSURLNetworkServiceTypeVideo = 2; - static const int NSURLNetworkServiceTypeBackground = 3; - static const int NSURLNetworkServiceTypeVoice = 4; - static const int NSURLNetworkServiceTypeResponsiveData = 6; - static const int NSURLNetworkServiceTypeAVStreaming = 8; - static const int NSURLNetworkServiceTypeResponsiveAV = 9; - static const int NSURLNetworkServiceTypeCallSignaling = 11; -} + bool call(objc.NSObject arg0, objc.NSObject arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0.pointer, arg1.pointer); +} + +late final _sel_differenceFromOrderedSet_withOptions_usingEquivalenceTest_ = + objc.registerName( + "differenceFromOrderedSet:withOptions:usingEquivalenceTest:"); +final _objc_msgSend_396 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_differenceFromOrderedSet_withOptions_ = + objc.registerName("differenceFromOrderedSet:withOptions:"); +final _objc_msgSend_397 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_differenceFromOrderedSet_ = + objc.registerName("differenceFromOrderedSet:"); +late final _sel_orderedSetByApplyingDifference_ = + objc.registerName("orderedSetByApplyingDifference:"); +final _objc_msgSend_398 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_valueForKey_ = objc.registerName("valueForKey:"); +late final _sel_setValue_forKey_ = objc.registerName("setValue:forKey:"); +final _objc_msgSend_399 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); -abstract class NSURLRequestAttribution { - static const int NSURLRequestAttributionDeveloper = 0; - static const int NSURLRequestAttributionUser = 1; +abstract class NSKeyValueObservingOptions { + static const int NSKeyValueObservingOptionNew = 1; + static const int NSKeyValueObservingOptionOld = 2; + static const int NSKeyValueObservingOptionInitial = 4; + static const int NSKeyValueObservingOptionPrior = 8; } -class NSInputStream extends NSStream { - NSInputStream._(ffi.Pointer id, AVFAudio lib, +late final _sel_addObserver_forKeyPath_options_context_ = + objc.registerName("addObserver:forKeyPath:options:context:"); +final _objc_msgSend_400 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_removeObserver_forKeyPath_context_ = + objc.registerName("removeObserver:forKeyPath:context:"); +final _objc_msgSend_401 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeObserver_forKeyPath_ = + objc.registerName("removeObserver:forKeyPath:"); +final _objc_msgSend_402 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_sortedArrayUsingDescriptors_ = + objc.registerName("sortedArrayUsingDescriptors:"); + +class NSPredicate extends objc.NSObject { + NSPredicate._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSInputStream] that points to the same underlying object as [other]. - static NSInputStream castFrom(T other) { - return NSInputStream._(other._id, other._lib, retain: true, release: true); - } + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSInputStream] that wraps the given raw object pointer. - static NSInputStream castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSInputStream._(other, lib, retain: retain, release: release); - } + /// Constructs a [NSPredicate] that points to the same underlying object as [other]. + NSPredicate.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns whether [obj] is an instance of [NSInputStream]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSInputStream1); - } + /// Constructs a [NSPredicate] that wraps the given raw object pointer. + NSPredicate.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - int read_maxLength_(ffi.Pointer buffer, int len) { - return _lib._objc_msgSend_864(_id, _lib._sel_read_maxLength_1, buffer, len); + /// Returns whether [obj] is an instance of [NSPredicate]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSPredicate); } - bool getBuffer_length_(ffi.Pointer> buffer, - ffi.Pointer len) { - return _lib._objc_msgSend_873( - _id, _lib._sel_getBuffer_length_1, buffer, len); + static NSPredicate predicateWithFormat_argumentArray_( + objc.NSString predicateFormat, objc.NSArray? arguments) { + final _ret = _objc_msgSend_403( + _class_NSPredicate, + _sel_predicateWithFormat_argumentArray_, + predicateFormat.pointer, + arguments?.pointer ?? ffi.nullptr); + return NSPredicate.castFromPointer(_ret, retain: true, release: true); } - bool get hasBytesAvailable { - return _lib._objc_msgSend_12(_id, _lib._sel_hasBytesAvailable1); + static NSPredicate predicateWithFormat_(objc.NSString predicateFormat) { + final _ret = _objc_msgSend_404( + _class_NSPredicate, _sel_predicateWithFormat_, predicateFormat.pointer); + return NSPredicate.castFromPointer(_ret, retain: true, release: true); } - NSInputStream initWithData_(NSData data) { - final _ret = - _lib._objc_msgSend_279(_id, _lib._sel_initWithData_1, data._id); - return NSInputStream._(_ret, _lib, retain: true, release: true); + static NSPredicate predicateWithFormat_arguments_( + objc.NSString predicateFormat, ffi.Pointer<__va_list_tag> argList) { + final _ret = _objc_msgSend_405(_class_NSPredicate, + _sel_predicateWithFormat_arguments_, predicateFormat.pointer, argList); + return NSPredicate.castFromPointer(_ret, retain: true, release: true); } - NSInputStream? initWithURL_(NSURL url) { - final _ret = _lib._objc_msgSend_277(_id, _lib._sel_initWithURL_1, url._id); + static NSPredicate? predicateFromMetadataQueryString_( + objc.NSString queryString) { + final _ret = _objc_msgSend_406(_class_NSPredicate, + _sel_predicateFromMetadataQueryString_, queryString.pointer); return _ret.address == 0 ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); + : NSPredicate.castFromPointer(_ret, retain: true, release: true); } - NSInputStream? initWithFileAtPath_(NSString path) { + static NSPredicate predicateWithValue_(bool value) { final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_initWithFileAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); + _objc_msgSend_407(_class_NSPredicate, _sel_predicateWithValue_, value); + return NSPredicate.castFromPointer(_ret, retain: true, release: true); } - static NSInputStream? inputStreamWithData_(AVFAudio _lib, NSData data) { - final _ret = _lib._objc_msgSend_874( - _lib._class_NSInputStream1, _lib._sel_inputStreamWithData_1, data._id); - return _ret.address == 0 - ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); + static NSPredicate predicateWithBlock_( + ObjCBlock_bool_objcObjCObject_NSDictionary block) { + final _ret = _objc_msgSend_408( + _class_NSPredicate, _sel_predicateWithBlock_, block.pointer); + return NSPredicate.castFromPointer(_ret, retain: true, release: true); } - static NSInputStream? inputStreamWithFileAtPath_( - AVFAudio _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSInputStream1, - _lib._sel_inputStreamWithFileAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); + objc.NSString get predicateFormat { + final _ret = _objc_msgSend_12(this.pointer, _sel_predicateFormat); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSInputStream? inputStreamWithURL_(AVFAudio _lib, NSURL url) { - final _ret = _lib._objc_msgSend_277( - _lib._class_NSInputStream1, _lib._sel_inputStreamWithURL_1, url._id); - return _ret.address == 0 - ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); + NSPredicate predicateWithSubstitutionVariables_(objc.NSDictionary variables) { + final _ret = _objc_msgSend_409(this.pointer, + _sel_predicateWithSubstitutionVariables_, variables.pointer); + return NSPredicate.castFromPointer(_ret, retain: true, release: true); } - static void getStreamsToHostWithName_port_inputStream_outputStream_( - AVFAudio _lib, - NSString hostname, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_867( - _lib._class_NSInputStream1, - _lib._sel_getStreamsToHostWithName_port_inputStream_outputStream_1, - hostname._id, - port, - inputStream, - outputStream); + bool evaluateWithObject_(objc.NSObject? object) { + return _objc_msgSend_410( + this.pointer, _sel_evaluateWithObject_, object?.pointer ?? ffi.nullptr); } - static void getStreamsToHost_port_inputStream_outputStream_( - AVFAudio _lib, - NSHost host, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_871( - _lib._class_NSInputStream1, - _lib._sel_getStreamsToHost_port_inputStream_outputStream_1, - host._id, - port, - inputStream, - outputStream); + bool evaluateWithObject_substitutionVariables_( + objc.NSObject? object, objc.NSDictionary? bindings) { + return _objc_msgSend_411( + this.pointer, + _sel_evaluateWithObject_substitutionVariables_, + object?.pointer ?? ffi.nullptr, + bindings?.pointer ?? ffi.nullptr); } - static void getBoundStreamsWithBufferSize_inputStream_outputStream_( - AVFAudio _lib, - int bufferSize, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_872( - _lib._class_NSInputStream1, - _lib._sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1, - bufferSize, - inputStream, - outputStream); + void allowEvaluation() { + _objc_msgSend_82(this.pointer, _sel_allowEvaluation); } @override - NSInputStream init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSInputStream._(_ret, _lib, retain: true, release: true); + NSPredicate init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSPredicate.castFromPointer(_ret, retain: true, release: true); } - static NSInputStream new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSInputStream1, _lib._sel_new1); - return NSInputStream._(_ret, _lib, retain: false, release: true); + static NSPredicate new1() { + final _ret = _objc_msgSend_40(_class_NSPredicate, _sel_new); + return NSPredicate.castFromPointer(_ret, retain: false, release: true); } - static NSInputStream allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSInputStream1, _lib._sel_allocWithZone_1, zone); - return NSInputStream._(_ret, _lib, retain: false, release: true); + static NSPredicate allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSPredicate, _sel_allocWithZone_, zone); + return NSPredicate.castFromPointer(_ret, retain: false, release: true); } - static NSInputStream alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSInputStream1, _lib._sel_alloc1); - return NSInputStream._(_ret, _lib, retain: false, release: true); + static NSPredicate alloc() { + final _ret = _objc_msgSend_40(_class_NSPredicate, _sel_alloc); + return NSPredicate.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSInputStream1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSPredicate, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSInputStream1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSPredicate, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSInputStream1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSPredicate, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSInputStream1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSPredicate, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSInputStream1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSPredicate, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSInputStream1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSPredicate, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSInputStream1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSInputStream1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSInputStream1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSPredicate, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSPredicate, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSPredicate, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSPredicate = objc.getClass("NSPredicate"); +late final _sel_predicateWithFormat_argumentArray_ = + objc.registerName("predicateWithFormat:argumentArray:"); +final _objc_msgSend_403 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_predicateWithFormat_ = + objc.registerName("predicateWithFormat:"); +final _objc_msgSend_404 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_predicateWithFormat_arguments_ = + objc.registerName("predicateWithFormat:arguments:"); +final _objc_msgSend_405 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>(); +late final _sel_predicateFromMetadataQueryString_ = + objc.registerName("predicateFromMetadataQueryString:"); +final _objc_msgSend_406 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_predicateWithValue_ = objc.registerName("predicateWithValue:"); +final _objc_msgSend_407 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, bool)>(); +bool _ObjCBlock_bool_objcObjCObject_NSDictionary_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +final _ObjCBlock_bool_objcObjCObject_NSDictionary_closureRegistry = , ffi.Pointer)>{}; +int _ObjCBlock_bool_objcObjCObject_NSDictionary_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_bool_objcObjCObject_NSDictionary_registerClosure( + bool Function( + ffi.Pointer, ffi.Pointer) + fn) { + final id = ++_ObjCBlock_bool_objcObjCObject_NSDictionary_closureRegistryIndex; + _ObjCBlock_bool_objcObjCObject_NSDictionary_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); } -class NSStream extends NSObject { - NSStream._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); +bool _ObjCBlock_bool_objcObjCObject_NSDictionary_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + _ObjCBlock_bool_objcObjCObject_NSDictionary_closureRegistry[ + block.ref.target.address]!(arg0, arg1); - /// Returns a [NSStream] that points to the same underlying object as [other]. - static NSStream castFrom(T other) { - return NSStream._(other._id, other._lib, retain: true, release: true); - } +class ObjCBlock_bool_objcObjCObject_NSDictionary extends objc.ObjCBlockBase { + ObjCBlock_bool_objcObjCObject_NSDictionary._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); - /// Returns a [NSStream] that wraps the given raw object pointer. - static NSStream castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSStream._(other, lib, retain: retain, release: release); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_bool_objcObjCObject_NSDictionary castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_bool_objcObjCObject_NSDictionary._(pointer, + retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSStream]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSStream1); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_NSDictionary.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_NSDictionary_fnPtrTrampoline, + false) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - void open() { - _lib._objc_msgSend_1(_id, _lib._sel_open1); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_NSDictionary.fromFunction( + bool Function(objc.NSObject?, objc.NSDictionary?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= + ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_NSDictionary_closureTrampoline, false) + .cast(), + _ObjCBlock_bool_objcObjCObject_NSDictionary_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : objc.NSObject.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : objc.NSDictionary.castFromPointer(arg1, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; - void close() { - _lib._objc_msgSend_1(_id, _lib._sel_close1); - } + bool call(objc.NSObject? arg0, objc.NSDictionary? arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1?.pointer ?? ffi.nullptr); +} + +late final _sel_predicateWithBlock_ = objc.registerName("predicateWithBlock:"); +final _objc_msgSend_408 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_predicateFormat = objc.registerName("predicateFormat"); +late final _sel_predicateWithSubstitutionVariables_ = + objc.registerName("predicateWithSubstitutionVariables:"); +final _objc_msgSend_409 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_evaluateWithObject_ = objc.registerName("evaluateWithObject:"); +final _objc_msgSend_410 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_evaluateWithObject_substitutionVariables_ = + objc.registerName("evaluateWithObject:substitutionVariables:"); +final _objc_msgSend_411 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_allowEvaluation = objc.registerName("allowEvaluation"); +late final _sel_filteredOrderedSetUsingPredicate_ = + objc.registerName("filteredOrderedSetUsingPredicate:"); +final _objc_msgSend_412 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } +class NSMutableOrderedSet extends NSOrderedSet { + NSMutableOrderedSet._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); - } + /// Constructs a [NSMutableOrderedSet] that points to the same underlying object as [other]. + NSMutableOrderedSet.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSObject? propertyForKey_(NSString key) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_propertyForKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSMutableOrderedSet] that wraps the given raw object pointer. + NSMutableOrderedSet.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - bool setProperty_forKey_(NSObject? property, NSString key) { - return _lib._objc_msgSend_862(_id, _lib._sel_setProperty_forKey_1, - property?._id ?? ffi.nullptr, key._id); + /// Returns whether [obj] is an instance of [NSMutableOrderedSet]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMutableOrderedSet); } - void scheduleInRunLoop_forMode_(NSRunLoop aRunLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_scheduleInRunLoop_forMode_1, aRunLoop._id, mode._id); + void insertObject_atIndex_(objc.NSObject object, int idx) { + _objc_msgSend_413( + this.pointer, _sel_insertObject_atIndex_, object.pointer, idx); } - void removeFromRunLoop_forMode_(NSRunLoop aRunLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_removeFromRunLoop_forMode_1, aRunLoop._id, mode._id); + void removeObjectAtIndex_(int idx) { + _objc_msgSend_414(this.pointer, _sel_removeObjectAtIndex_, idx); } - int get streamStatus { - return _lib._objc_msgSend_863(_id, _lib._sel_streamStatus1); + void replaceObjectAtIndex_withObject_(int idx, objc.NSObject object) { + _objc_msgSend_415(this.pointer, _sel_replaceObjectAtIndex_withObject_, idx, + object.pointer); } - NSError? get streamError { - final _ret = _lib._objc_msgSend_322(_id, _lib._sel_streamError1); + @override + NSMutableOrderedSet? initWithCoder_(objc.NSCoder coder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, coder.pointer); return _ret.address == 0 ? null - : NSError._(_ret, _lib, retain: true, release: true); - } - - static void getStreamsToHostWithName_port_inputStream_outputStream_( - AVFAudio _lib, - NSString hostname, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_867( - _lib._class_NSStream1, - _lib._sel_getStreamsToHostWithName_port_inputStream_outputStream_1, - hostname._id, - port, - inputStream, - outputStream); - } - - static void getStreamsToHost_port_inputStream_outputStream_( - AVFAudio _lib, - NSHost host, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_871( - _lib._class_NSStream1, - _lib._sel_getStreamsToHost_port_inputStream_outputStream_1, - host._id, - port, - inputStream, - outputStream); - } - - static void getBoundStreamsWithBufferSize_inputStream_outputStream_( - AVFAudio _lib, - int bufferSize, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_872( - _lib._class_NSStream1, - _lib._sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1, - bufferSize, - inputStream, - outputStream); + : NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } @override - NSStream init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSStream._(_ret, _lib, retain: true, release: true); + NSMutableOrderedSet init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSStream new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSStream1, _lib._sel_new1); - return NSStream._(_ret, _lib, retain: false, release: true); + NSMutableOrderedSet initWithCapacity_(int numItems) { + final _ret = + _objc_msgSend_355(this.pointer, _sel_initWithCapacity_, numItems); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSStream allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSStream1, _lib._sel_allocWithZone_1, zone); - return NSStream._(_ret, _lib, retain: false, release: true); + void addObject_(objc.NSObject object) { + _objc_msgSend_49(this.pointer, _sel_addObject_, object.pointer); } - static NSStream alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSStream1, _lib._sel_alloc1); - return NSStream._(_ret, _lib, retain: false, release: true); + void addObjects_count_( + ffi.Pointer> objects, int count) { + _objc_msgSend_416(this.pointer, _sel_addObjects_count_, objects, count); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSStream1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + void addObjectsFromArray_(objc.NSArray array) { + _objc_msgSend_242(this.pointer, _sel_addObjectsFromArray_, array.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSStream1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + void exchangeObjectAtIndex_withObjectAtIndex_(int idx1, int idx2) { + _objc_msgSend_417(this.pointer, + _sel_exchangeObjectAtIndex_withObjectAtIndex_, idx1, idx2); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSStream1, _lib._sel_accessInstanceVariablesDirectly1); + void moveObjectsAtIndexes_toIndex_(objc.NSIndexSet indexes, int idx) { + _objc_msgSend_418( + this.pointer, _sel_moveObjectsAtIndexes_toIndex_, indexes.pointer, idx); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSStream1, _lib._sel_useStoredAccessor1); + void insertObjects_atIndexes_(objc.NSArray objects, objc.NSIndexSet indexes) { + _objc_msgSend_419(this.pointer, _sel_insertObjects_atIndexes_, + objects.pointer, indexes.pointer); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSStream1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + void setObject_atIndex_(objc.NSObject obj, int idx) { + _objc_msgSend_413(this.pointer, _sel_setObject_atIndex_, obj.pointer, idx); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSStream1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + void setObject_atIndexedSubscript_(objc.NSObject obj, int idx) { + _objc_msgSend_413( + this.pointer, _sel_setObject_atIndexedSubscript_, obj.pointer, idx); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSStream1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + void replaceObjectsInRange_withObjects_count_(_NSRange range, + ffi.Pointer> objects, int count) { + _objc_msgSend_420(this.pointer, + _sel_replaceObjectsInRange_withObjects_count_, range, objects, count); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSStream1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + void replaceObjectsAtIndexes_withObjects_( + objc.NSIndexSet indexes, objc.NSArray objects) { + _objc_msgSend_421(this.pointer, _sel_replaceObjectsAtIndexes_withObjects_, + indexes.pointer, objects.pointer); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSStream1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + void removeObjectsInRange_(_NSRange range) { + _objc_msgSend_81(this.pointer, _sel_removeObjectsInRange_, range); } -} - -abstract class NSStreamStatus { - static const int NSStreamStatusNotOpen = 0; - static const int NSStreamStatusOpening = 1; - static const int NSStreamStatusOpen = 2; - static const int NSStreamStatusReading = 3; - static const int NSStreamStatusWriting = 4; - static const int NSStreamStatusAtEnd = 5; - static const int NSStreamStatusClosed = 6; - static const int NSStreamStatusError = 7; -} -class NSOutputStream extends NSStream { - NSOutputStream._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + void removeObjectsAtIndexes_(objc.NSIndexSet indexes) { + _objc_msgSend_422( + this.pointer, _sel_removeObjectsAtIndexes_, indexes.pointer); + } - /// Returns a [NSOutputStream] that points to the same underlying object as [other]. - static NSOutputStream castFrom(T other) { - return NSOutputStream._(other._id, other._lib, retain: true, release: true); + void removeAllObjects() { + _objc_msgSend_82(this.pointer, _sel_removeAllObjects); } - /// Returns a [NSOutputStream] that wraps the given raw object pointer. - static NSOutputStream castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSOutputStream._(other, lib, retain: retain, release: release); + void removeObject_(objc.NSObject object) { + _objc_msgSend_49(this.pointer, _sel_removeObject_, object.pointer); } - /// Returns whether [obj] is an instance of [NSOutputStream]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSOutputStream1); + void removeObjectsInArray_(objc.NSArray array) { + _objc_msgSend_242(this.pointer, _sel_removeObjectsInArray_, array.pointer); } - int write_maxLength_(ffi.Pointer buffer, int len) { - return _lib._objc_msgSend_864( - _id, _lib._sel_write_maxLength_1, buffer, len); + void intersectOrderedSet_(NSOrderedSet other) { + _objc_msgSend_423(this.pointer, _sel_intersectOrderedSet_, other.pointer); } - bool get hasSpaceAvailable { - return _lib._objc_msgSend_12(_id, _lib._sel_hasSpaceAvailable1); + void minusOrderedSet_(NSOrderedSet other) { + _objc_msgSend_423(this.pointer, _sel_minusOrderedSet_, other.pointer); } - NSOutputStream initToMemory() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_initToMemory1); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + void unionOrderedSet_(NSOrderedSet other) { + _objc_msgSend_423(this.pointer, _sel_unionOrderedSet_, other.pointer); } - NSOutputStream initToBuffer_capacity_( - ffi.Pointer buffer, int capacity) { - final _ret = _lib._objc_msgSend_865( - _id, _lib._sel_initToBuffer_capacity_1, buffer, capacity); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + void intersectSet_(objc.NSSet other) { + _objc_msgSend_424(this.pointer, _sel_intersectSet_, other.pointer); } - NSOutputStream? initWithURL_append_(NSURL url, bool shouldAppend) { - final _ret = _lib._objc_msgSend_866( - _id, _lib._sel_initWithURL_append_1, url._id, shouldAppend); - return _ret.address == 0 - ? null - : NSOutputStream._(_ret, _lib, retain: true, release: true); + void minusSet_(objc.NSSet other) { + _objc_msgSend_424(this.pointer, _sel_minusSet_, other.pointer); } - NSOutputStream? initToFileAtPath_append_(NSString path, bool shouldAppend) { - final _ret = _lib._objc_msgSend_40( - _id, _lib._sel_initToFileAtPath_append_1, path._id, shouldAppend); - return _ret.address == 0 - ? null - : NSOutputStream._(_ret, _lib, retain: true, release: true); + void unionSet_(objc.NSSet other) { + _objc_msgSend_424(this.pointer, _sel_unionSet_, other.pointer); } - static NSOutputStream outputStreamToMemory(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSOutputStream1, _lib._sel_outputStreamToMemory1); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + void sortUsingComparator_( + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + _objc_msgSend_425(this.pointer, _sel_sortUsingComparator_, cmptr.pointer); } - static NSOutputStream outputStreamToBuffer_capacity_( - AVFAudio _lib, ffi.Pointer buffer, int capacity) { - final _ret = _lib._objc_msgSend_865(_lib._class_NSOutputStream1, - _lib._sel_outputStreamToBuffer_capacity_1, buffer, capacity); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + void sortWithOptions_usingComparator_(int opts, + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + _objc_msgSend_426(this.pointer, _sel_sortWithOptions_usingComparator_, opts, + cmptr.pointer); } - static NSOutputStream outputStreamToFileAtPath_append_( - AVFAudio _lib, NSString path, bool shouldAppend) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSOutputStream1, - _lib._sel_outputStreamToFileAtPath_append_1, path._id, shouldAppend); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + void sortRange_options_usingComparator_(_NSRange range, int opts, + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + _objc_msgSend_427(this.pointer, _sel_sortRange_options_usingComparator_, + range, opts, cmptr.pointer); } - static NSOutputStream? outputStreamWithURL_append_( - AVFAudio _lib, NSURL url, bool shouldAppend) { - final _ret = _lib._objc_msgSend_866(_lib._class_NSOutputStream1, - _lib._sel_outputStreamWithURL_append_1, url._id, shouldAppend); - return _ret.address == 0 - ? null - : NSOutputStream._(_ret, _lib, retain: true, release: true); + static NSMutableOrderedSet orderedSetWithCapacity_(int numItems) { + final _ret = _objc_msgSend_355( + _class_NSMutableOrderedSet, _sel_orderedSetWithCapacity_, numItems); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static void getStreamsToHostWithName_port_inputStream_outputStream_( - AVFAudio _lib, - NSString hostname, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_867( - _lib._class_NSOutputStream1, - _lib._sel_getStreamsToHostWithName_port_inputStream_outputStream_1, - hostname._id, - port, - inputStream, - outputStream); + void applyDifference_(objc.NSObject difference) { + _objc_msgSend_49(this.pointer, _sel_applyDifference_, difference.pointer); } - static void getStreamsToHost_port_inputStream_outputStream_( - AVFAudio _lib, - NSHost host, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_871( - _lib._class_NSOutputStream1, - _lib._sel_getStreamsToHost_port_inputStream_outputStream_1, - host._id, - port, - inputStream, - outputStream); + void sortUsingDescriptors_(objc.NSArray sortDescriptors) { + _objc_msgSend_242( + this.pointer, _sel_sortUsingDescriptors_, sortDescriptors.pointer); } - static void getBoundStreamsWithBufferSize_inputStream_outputStream_( - AVFAudio _lib, - int bufferSize, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_872( - _lib._class_NSOutputStream1, - _lib._sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1, - bufferSize, - inputStream, - outputStream); + void filterUsingPredicate_(NSPredicate p) { + _objc_msgSend_428(this.pointer, _sel_filterUsingPredicate_, p.pointer); } @override - NSOutputStream init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + NSMutableOrderedSet initWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_365( + this.pointer, _sel_initWithObjects_count_, objects, cnt); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSOutputStream new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOutputStream1, _lib._sel_new1); - return NSOutputStream._(_ret, _lib, retain: false, release: true); + static NSMutableOrderedSet orderedSet() { + final _ret = _objc_msgSend_40(_class_NSMutableOrderedSet, _sel_orderedSet); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSOutputStream allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSOutputStream1, _lib._sel_allocWithZone_1, zone); - return NSOutputStream._(_ret, _lib, retain: false, release: true); + static NSMutableOrderedSet orderedSetWithObject_(objc.NSObject object) { + final _ret = _objc_msgSend_387( + _class_NSMutableOrderedSet, _sel_orderedSetWithObject_, object.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSOutputStream alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOutputStream1, _lib._sel_alloc1); - return NSOutputStream._(_ret, _lib, retain: false, release: true); + static NSMutableOrderedSet orderedSetWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_365(_class_NSMutableOrderedSet, + _sel_orderedSetWithObjects_count_, objects, cnt); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSOutputStream1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static NSMutableOrderedSet orderedSetWithObjects_(objc.NSObject firstObj) { + final _ret = _objc_msgSend_387(_class_NSMutableOrderedSet, + _sel_orderedSetWithObjects_, firstObj.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSOutputStream1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static NSMutableOrderedSet orderedSetWithOrderedSet_(NSOrderedSet set) { + final _ret = _objc_msgSend_388(_class_NSMutableOrderedSet, + _sel_orderedSetWithOrderedSet_, set.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSOutputStream1, - _lib._sel_accessInstanceVariablesDirectly1); + static NSMutableOrderedSet orderedSetWithOrderedSet_range_copyItems_( + NSOrderedSet set, _NSRange range, bool flag) { + final _ret = _objc_msgSend_389( + _class_NSMutableOrderedSet, + _sel_orderedSetWithOrderedSet_range_copyItems_, + set.pointer, + range, + flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOutputStream1, _lib._sel_useStoredAccessor1); + static NSMutableOrderedSet orderedSetWithArray_(objc.NSArray array) { + final _ret = _objc_msgSend_390( + _class_NSMutableOrderedSet, _sel_orderedSetWithArray_, array.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSOutputStream1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static NSMutableOrderedSet orderedSetWithArray_range_copyItems_( + objc.NSArray array, _NSRange range, bool flag) { + final _ret = _objc_msgSend_391(_class_NSMutableOrderedSet, + _sel_orderedSetWithArray_range_copyItems_, array.pointer, range, flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSOutputStream1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static NSMutableOrderedSet orderedSetWithSet_(objc.NSSet set) { + final _ret = _objc_msgSend_392( + _class_NSMutableOrderedSet, _sel_orderedSetWithSet_, set.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSOutputStream1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static NSMutableOrderedSet orderedSetWithSet_copyItems_( + objc.NSSet set, bool flag) { + final _ret = _objc_msgSend_393(_class_NSMutableOrderedSet, + _sel_orderedSetWithSet_copyItems_, set.pointer, flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSOutputStream1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + @override + NSMutableOrderedSet initWithObject_(objc.NSObject object) { + final _ret = + _objc_msgSend_387(this.pointer, _sel_initWithObject_, object.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSOutputStream1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + @override + NSMutableOrderedSet initWithObjects_(objc.NSObject firstObj) { + final _ret = _objc_msgSend_387( + this.pointer, _sel_initWithObjects_, firstObj.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } -} - -class NSHost extends NSObject { - NSHost._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSHost] that points to the same underlying object as [other]. - static NSHost castFrom(T other) { - return NSHost._(other._id, other._lib, retain: true, release: true); + @override + NSMutableOrderedSet initWithOrderedSet_(NSOrderedSet set) { + final _ret = + _objc_msgSend_388(this.pointer, _sel_initWithOrderedSet_, set.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - /// Returns a [NSHost] that wraps the given raw object pointer. - static NSHost castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSHost._(other, lib, retain: retain, release: release); + @override + NSMutableOrderedSet initWithOrderedSet_copyItems_( + NSOrderedSet set, bool flag) { + final _ret = _objc_msgSend_394( + this.pointer, _sel_initWithOrderedSet_copyItems_, set.pointer, flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - /// Returns whether [obj] is an instance of [NSHost]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSHost1); + @override + NSMutableOrderedSet initWithOrderedSet_range_copyItems_( + NSOrderedSet set, _NSRange range, bool flag) { + final _ret = _objc_msgSend_389(this.pointer, + _sel_initWithOrderedSet_range_copyItems_, set.pointer, range, flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - static NSHost currentHost(AVFAudio _lib) { + @override + NSMutableOrderedSet initWithArray_(objc.NSArray array) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSHost1, _lib._sel_currentHost1); - return NSHost._(_ret, _lib, retain: true, release: true); + _objc_msgSend_390(this.pointer, _sel_initWithArray_, array.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSHost hostWithName_(AVFAudio _lib, NSString? name) { - final _ret = _lib._objc_msgSend_868(_lib._class_NSHost1, - _lib._sel_hostWithName_1, name?._id ?? ffi.nullptr); - return NSHost._(_ret, _lib, retain: true, release: true); + @override + NSMutableOrderedSet initWithArray_copyItems_(objc.NSArray set, bool flag) { + final _ret = _objc_msgSend_395( + this.pointer, _sel_initWithArray_copyItems_, set.pointer, flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - static NSHost hostWithAddress_(AVFAudio _lib, NSString address) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSHost1, _lib._sel_hostWithAddress_1, address._id); - return NSHost._(_ret, _lib, retain: true, release: true); + @override + NSMutableOrderedSet initWithArray_range_copyItems_( + objc.NSArray set, _NSRange range, bool flag) { + final _ret = _objc_msgSend_391(this.pointer, + _sel_initWithArray_range_copyItems_, set.pointer, range, flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - bool isEqualToHost_(NSHost aHost) { - return _lib._objc_msgSend_869(_id, _lib._sel_isEqualToHost_1, aHost._id); + @override + NSMutableOrderedSet initWithSet_(objc.NSSet set) { + final _ret = + _objc_msgSend_392(this.pointer, _sel_initWithSet_, set.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - NSString? get name { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_name1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + @override + NSMutableOrderedSet initWithSet_copyItems_(objc.NSSet set, bool flag) { + final _ret = _objc_msgSend_393( + this.pointer, _sel_initWithSet_copyItems_, set.pointer, flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - NSArray get names { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_names1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSMutableOrderedSet new1() { + final _ret = _objc_msgSend_40(_class_NSMutableOrderedSet, _sel_new); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - NSString? get address { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_address1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSMutableOrderedSet allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSMutableOrderedSet, _sel_allocWithZone_, zone); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - NSArray get addresses { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_addresses1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSMutableOrderedSet alloc() { + final _ret = _objc_msgSend_40(_class_NSMutableOrderedSet, _sel_alloc); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - NSString? get localizedName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_localizedName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSMutableOrderedSet, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - static void setHostCacheEnabled_(AVFAudio _lib, bool flag) { - _lib._objc_msgSend_870( - _lib._class_NSHost1, _lib._sel_setHostCacheEnabled_1, flag); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSMutableOrderedSet, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool isHostCacheEnabled(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSHost1, _lib._sel_isHostCacheEnabled1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSMutableOrderedSet, _sel_accessInstanceVariablesDirectly); } - static void flushHostCache(AVFAudio _lib) { - _lib._objc_msgSend_1(_lib._class_NSHost1, _lib._sel_flushHostCache1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSMutableOrderedSet, _sel_useStoredAccessor); } - @override - NSHost init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSHost._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSMutableOrderedSet, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static NSHost new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSHost1, _lib._sel_new1); - return NSHost._(_ret, _lib, retain: false, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSMutableOrderedSet, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static NSHost allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSHost1, _lib._sel_allocWithZone_1, zone); - return NSHost._(_ret, _lib, retain: false, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSMutableOrderedSet, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSMutableOrderedSet, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSMutableOrderedSet, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSMutableOrderedSet = objc.getClass("NSMutableOrderedSet"); +late final _sel_insertObject_atIndex_ = + objc.registerName("insertObject:atIndex:"); +final _objc_msgSend_413 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_removeObjectAtIndex_ = + objc.registerName("removeObjectAtIndex:"); +final _objc_msgSend_414 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_replaceObjectAtIndex_withObject_ = + objc.registerName("replaceObjectAtIndex:withObject:"); +final _objc_msgSend_415 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_initWithCapacity_ = objc.registerName("initWithCapacity:"); +late final _sel_addObject_ = objc.registerName("addObject:"); +late final _sel_addObjects_count_ = objc.registerName("addObjects:count:"); +final _objc_msgSend_416 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + int)>(); +late final _sel_addObjectsFromArray_ = + objc.registerName("addObjectsFromArray:"); +late final _sel_exchangeObjectAtIndex_withObjectAtIndex_ = + objc.registerName("exchangeObjectAtIndex:withObjectAtIndex:"); +final _objc_msgSend_417 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int, int)>(); +late final _sel_moveObjectsAtIndexes_toIndex_ = + objc.registerName("moveObjectsAtIndexes:toIndex:"); +final _objc_msgSend_418 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_insertObjects_atIndexes_ = + objc.registerName("insertObjects:atIndexes:"); +final _objc_msgSend_419 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_setObject_atIndex_ = objc.registerName("setObject:atIndex:"); +late final _sel_setObject_atIndexedSubscript_ = + objc.registerName("setObject:atIndexedSubscript:"); +late final _sel_replaceObjectsInRange_withObjects_count_ = + objc.registerName("replaceObjectsInRange:withObjects:count:"); +final _objc_msgSend_420 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer>, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer>, + int)>(); +late final _sel_replaceObjectsAtIndexes_withObjects_ = + objc.registerName("replaceObjectsAtIndexes:withObjects:"); +final _objc_msgSend_421 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeObjectsInRange_ = + objc.registerName("removeObjectsInRange:"); +late final _sel_removeObjectsAtIndexes_ = + objc.registerName("removeObjectsAtIndexes:"); +final _objc_msgSend_422 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_removeAllObjects = objc.registerName("removeAllObjects"); +late final _sel_removeObject_ = objc.registerName("removeObject:"); +late final _sel_removeObjectsInArray_ = + objc.registerName("removeObjectsInArray:"); +late final _sel_intersectOrderedSet_ = + objc.registerName("intersectOrderedSet:"); +final _objc_msgSend_423 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_minusOrderedSet_ = objc.registerName("minusOrderedSet:"); +late final _sel_unionOrderedSet_ = objc.registerName("unionOrderedSet:"); +late final _sel_intersectSet_ = objc.registerName("intersectSet:"); +final _objc_msgSend_424 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_minusSet_ = objc.registerName("minusSet:"); +late final _sel_unionSet_ = objc.registerName("unionSet:"); +late final _sel_sortUsingComparator_ = + objc.registerName("sortUsingComparator:"); +final _objc_msgSend_425 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_sortWithOptions_usingComparator_ = + objc.registerName("sortWithOptions:usingComparator:"); +final _objc_msgSend_426 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_sortRange_options_usingComparator_ = + objc.registerName("sortRange:options:usingComparator:"); +final _objc_msgSend_427 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + int, + ffi.Pointer)>(); +late final _sel_orderedSetWithCapacity_ = + objc.registerName("orderedSetWithCapacity:"); +late final _sel_applyDifference_ = objc.registerName("applyDifference:"); +late final _sel_sortUsingDescriptors_ = + objc.registerName("sortUsingDescriptors:"); +late final _sel_filterUsingPredicate_ = + objc.registerName("filterUsingPredicate:"); +final _objc_msgSend_428 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSMorphology extends objc.NSObject { + NSMorphology._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSMorphology] that points to the same underlying object as [other]. + NSMorphology.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSMorphology] that wraps the given raw object pointer. + NSMorphology.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSMorphology]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMorphology); } - static NSHost alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSHost1, _lib._sel_alloc1); - return NSHost._(_ret, _lib, retain: false, release: true); + int get grammaticalGender { + return _objc_msgSend_429(this.pointer, _sel_grammaticalGender); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSHost1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set grammaticalGender(int value) { + return _objc_msgSend_430(this.pointer, _sel_setGrammaticalGender_, value); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSHost1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + int get partOfSpeech { + return _objc_msgSend_431(this.pointer, _sel_partOfSpeech); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSHost1, _lib._sel_accessInstanceVariablesDirectly1); + set partOfSpeech(int value) { + return _objc_msgSend_432(this.pointer, _sel_setPartOfSpeech_, value); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSHost1, _lib._sel_useStoredAccessor1); + int get number { + return _objc_msgSend_433(this.pointer, _sel_number); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSHost1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + set number(int value) { + return _objc_msgSend_434(this.pointer, _sel_setNumber_, value); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSHost1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + int get grammaticalCase { + return _objc_msgSend_435(this.pointer, _sel_grammaticalCase); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSHost1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set grammaticalCase(int value) { + return _objc_msgSend_436(this.pointer, _sel_setGrammaticalCase_, value); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSHost1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + int get determination { + return _objc_msgSend_437(this.pointer, _sel_determination); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSHost1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + set determination(int value) { + return _objc_msgSend_438(this.pointer, _sel_setDetermination_, value); } -} -class NSURLResponse extends NSObject { - NSURLResponse._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + int get grammaticalPerson { + return _objc_msgSend_439(this.pointer, _sel_grammaticalPerson); + } - /// Returns a [NSURLResponse] that points to the same underlying object as [other]. - static NSURLResponse castFrom(T other) { - return NSURLResponse._(other._id, other._lib, retain: true, release: true); + set grammaticalPerson(int value) { + return _objc_msgSend_440(this.pointer, _sel_setGrammaticalPerson_, value); } - /// Returns a [NSURLResponse] that wraps the given raw object pointer. - static NSURLResponse castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLResponse._(other, lib, retain: retain, release: release); + int get pronounType { + return _objc_msgSend_441(this.pointer, _sel_pronounType); } - /// Returns whether [obj] is an instance of [NSURLResponse]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLResponse1); + set pronounType(int value) { + return _objc_msgSend_442(this.pointer, _sel_setPronounType_, value); } - NSURLResponse initWithURL_MIMEType_expectedContentLength_textEncodingName_( - NSURL URL, NSString? MIMEType, int length, NSString? name) { - final _ret = _lib._objc_msgSend_877( - _id, - _lib._sel_initWithURL_MIMEType_expectedContentLength_textEncodingName_1, - URL._id, - MIMEType?._id ?? ffi.nullptr, - length, - name?._id ?? ffi.nullptr); - return NSURLResponse._(_ret, _lib, retain: true, release: true); + int get definiteness { + return _objc_msgSend_443(this.pointer, _sel_definiteness); } - NSURL? get URL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_URL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + set definiteness(int value) { + return _objc_msgSend_444(this.pointer, _sel_setDefiniteness_, value); } - NSString? get MIMEType { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_MIMEType1); + NSMorphologyCustomPronoun? customPronounForLanguage_(objc.NSString language) { + final _ret = _objc_msgSend_446( + this.pointer, _sel_customPronounForLanguage_, language.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSMorphologyCustomPronoun.castFromPointer(_ret, + retain: true, release: true); } - int get expectedContentLength { - return _lib._objc_msgSend_238(_id, _lib._sel_expectedContentLength1); + bool setCustomPronoun_forLanguage_error_(NSMorphologyCustomPronoun? features, + objc.NSString language, ffi.Pointer> error) { + return _objc_msgSend_447( + this.pointer, + _sel_setCustomPronoun_forLanguage_error_, + features?.pointer ?? ffi.nullptr, + language.pointer, + error); } - NSString? get textEncodingName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_textEncodingName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + bool get unspecified { + return _objc_msgSend_7(this.pointer, _sel_isUnspecified); } - NSString? get suggestedFilename { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_suggestedFilename1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSMorphology getUserMorphology() { + final _ret = _objc_msgSend_448(_class_NSMorphology, _sel_userMorphology); + return NSMorphology.castFromPointer(_ret, retain: true, release: true); } @override - NSURLResponse init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLResponse._(_ret, _lib, retain: true, release: true); + NSMorphology init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSMorphology.castFromPointer(_ret, retain: true, release: true); } - static NSURLResponse new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLResponse1, _lib._sel_new1); - return NSURLResponse._(_ret, _lib, retain: false, release: true); + static NSMorphology new1() { + final _ret = _objc_msgSend_40(_class_NSMorphology, _sel_new); + return NSMorphology.castFromPointer(_ret, retain: false, release: true); } - static NSURLResponse allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLResponse1, _lib._sel_allocWithZone_1, zone); - return NSURLResponse._(_ret, _lib, retain: false, release: true); + static NSMorphology allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSMorphology, _sel_allocWithZone_, zone); + return NSMorphology.castFromPointer(_ret, retain: false, release: true); } - static NSURLResponse alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLResponse1, _lib._sel_alloc1); - return NSURLResponse._(_ret, _lib, retain: false, release: true); + static NSMorphology alloc() { + final _ret = _objc_msgSend_40(_class_NSMorphology, _sel_alloc); + return NSMorphology.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLResponse1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSMorphology, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLResponse1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSMorphology, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLResponse1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSMorphology, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLResponse1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSMorphology, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLResponse1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSMorphology, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLResponse1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSMorphology, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLResponse1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSMorphology, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURLResponse1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSMorphology, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLResponse1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSMorphology, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -abstract class NSURLSessionTaskState { - static const int NSURLSessionTaskStateRunning = 0; - static const int NSURLSessionTaskStateSuspended = 1; - static const int NSURLSessionTaskStateCanceling = 2; - static const int NSURLSessionTaskStateCompleted = 3; +late final _class_NSMorphology = objc.getClass("NSMorphology"); + +abstract class NSGrammaticalGender { + static const int NSGrammaticalGenderNotSet = 0; + static const int NSGrammaticalGenderFeminine = 1; + static const int NSGrammaticalGenderMasculine = 2; + static const int NSGrammaticalGenderNeuter = 3; } -void _ObjCBlock_ffiVoid_NSArray_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSArray_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSArray_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSArray_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSArray_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSArray_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); +late final _sel_grammaticalGender = objc.registerName("grammaticalGender"); +final _objc_msgSend_429 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setGrammaticalGender_ = + objc.registerName("setGrammaticalGender:"); +final _objc_msgSend_430 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); + +abstract class NSGrammaticalPartOfSpeech { + static const int NSGrammaticalPartOfSpeechNotSet = 0; + static const int NSGrammaticalPartOfSpeechDeterminer = 1; + static const int NSGrammaticalPartOfSpeechPronoun = 2; + static const int NSGrammaticalPartOfSpeechLetter = 3; + static const int NSGrammaticalPartOfSpeechAdverb = 4; + static const int NSGrammaticalPartOfSpeechParticle = 5; + static const int NSGrammaticalPartOfSpeechAdjective = 6; + static const int NSGrammaticalPartOfSpeechAdposition = 7; + static const int NSGrammaticalPartOfSpeechVerb = 8; + static const int NSGrammaticalPartOfSpeechNoun = 9; + static const int NSGrammaticalPartOfSpeechConjunction = 10; + static const int NSGrammaticalPartOfSpeechNumeral = 11; + static const int NSGrammaticalPartOfSpeechInterjection = 12; + static const int NSGrammaticalPartOfSpeechPreposition = 13; + static const int NSGrammaticalPartOfSpeechAbbreviation = 14; +} + +late final _sel_partOfSpeech = objc.registerName("partOfSpeech"); +final _objc_msgSend_431 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setPartOfSpeech_ = objc.registerName("setPartOfSpeech:"); +final _objc_msgSend_432 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); + +abstract class NSGrammaticalNumber { + static const int NSGrammaticalNumberNotSet = 0; + static const int NSGrammaticalNumberSingular = 1; + static const int NSGrammaticalNumberZero = 2; + static const int NSGrammaticalNumberPlural = 3; + static const int NSGrammaticalNumberPluralTwo = 4; + static const int NSGrammaticalNumberPluralFew = 5; + static const int NSGrammaticalNumberPluralMany = 6; +} + +late final _sel_number = objc.registerName("number"); +final _objc_msgSend_433 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setNumber_ = objc.registerName("setNumber:"); +final _objc_msgSend_434 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); + +abstract class NSGrammaticalCase { + static const int NSGrammaticalCaseNotSet = 0; + static const int NSGrammaticalCaseNominative = 1; + static const int NSGrammaticalCaseAccusative = 2; + static const int NSGrammaticalCaseDative = 3; + static const int NSGrammaticalCaseGenitive = 4; + static const int NSGrammaticalCasePrepositional = 5; + static const int NSGrammaticalCaseAblative = 6; + static const int NSGrammaticalCaseAdessive = 7; + static const int NSGrammaticalCaseAllative = 8; + static const int NSGrammaticalCaseElative = 9; + static const int NSGrammaticalCaseIllative = 10; + static const int NSGrammaticalCaseEssive = 11; + static const int NSGrammaticalCaseInessive = 12; + static const int NSGrammaticalCaseLocative = 13; + static const int NSGrammaticalCaseTranslative = 14; } -void _ObjCBlock_ffiVoid_NSArray_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSArray_closureRegistry[block.ref.target.address]!(arg0); +late final _sel_grammaticalCase = objc.registerName("grammaticalCase"); +final _objc_msgSend_435 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setGrammaticalCase_ = objc.registerName("setGrammaticalCase:"); +final _objc_msgSend_436 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); -class ObjCBlock_ffiVoid_NSArray extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSArray._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); +abstract class NSGrammaticalDetermination { + static const int NSGrammaticalDeterminationNotSet = 0; + static const int NSGrammaticalDeterminationIndependent = 1; + static const int NSGrammaticalDeterminationDependent = 2; +} - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSArray castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSArray._(pointer, lib, - retain: retain, release: release); - } +late final _sel_determination = objc.registerName("determination"); +final _objc_msgSend_437 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDetermination_ = objc.registerName("setDetermination:"); +final _objc_msgSend_438 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSArray.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi - .NativeFunction arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSArray_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; +abstract class NSGrammaticalPerson { + static const int NSGrammaticalPersonNotSet = 0; + static const int NSGrammaticalPersonFirst = 1; + static const int NSGrammaticalPersonSecond = 2; + static const int NSGrammaticalPersonThird = 3; +} - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSArray.fromFunction( - AVFAudio lib, void Function(NSArray?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSArray_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSArray_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSArray._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; +late final _sel_grammaticalPerson = objc.registerName("grammaticalPerson"); +final _objc_msgSend_439 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setGrammaticalPerson_ = + objc.registerName("setGrammaticalPerson:"); +final _objc_msgSend_440 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSArray.listener(AVFAudio lib, void Function(NSArray?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSArray_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSArray_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSArray._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; +abstract class NSGrammaticalPronounType { + static const int NSGrammaticalPronounTypeNotSet = 0; + static const int NSGrammaticalPronounTypePersonal = 1; + static const int NSGrammaticalPronounTypeReflexive = 2; + static const int NSGrammaticalPronounTypePossessive = 3; +} - void call(NSArray? arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0?._id ?? ffi.nullptr); +late final _sel_pronounType = objc.registerName("pronounType"); +final _objc_msgSend_441 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setPronounType_ = objc.registerName("setPronounType:"); +final _objc_msgSend_442 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); + +abstract class NSGrammaticalDefiniteness { + static const int NSGrammaticalDefinitenessNotSet = 0; + static const int NSGrammaticalDefinitenessIndefinite = 1; + static const int NSGrammaticalDefinitenessDefinite = 2; } -class NSIndexPath extends NSObject { - NSIndexPath._(ffi.Pointer id, AVFAudio lib, +late final _sel_definiteness = objc.registerName("definiteness"); +final _objc_msgSend_443 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDefiniteness_ = objc.registerName("setDefiniteness:"); +final _objc_msgSend_444 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); + +class NSMorphologyCustomPronoun extends objc.NSObject { + NSMorphologyCustomPronoun._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSIndexPath] that points to the same underlying object as [other]. - static NSIndexPath castFrom(T other) { - return NSIndexPath._(other._id, other._lib, retain: true, release: true); - } + /// Constructs a [NSMorphologyCustomPronoun] that points to the same underlying object as [other]. + NSMorphologyCustomPronoun.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSIndexPath] that wraps the given raw object pointer. - static NSIndexPath castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSIndexPath._(other, lib, retain: retain, release: release); + /// Constructs a [NSMorphologyCustomPronoun] that wraps the given raw object pointer. + NSMorphologyCustomPronoun.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSMorphologyCustomPronoun]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMorphologyCustomPronoun); } - /// Returns whether [obj] is an instance of [NSIndexPath]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSIndexPath1); + static bool isSupportedForLanguage_(objc.NSString language) { + return _objc_msgSend_51(_class_NSMorphologyCustomPronoun, + _sel_isSupportedForLanguage_, language.pointer); } - static NSIndexPath indexPathWithIndex_(AVFAudio _lib, int index) { - final _ret = _lib._objc_msgSend_65( - _lib._class_NSIndexPath1, _lib._sel_indexPathWithIndex_1, index); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + static objc.NSArray requiredKeysForLanguage_(objc.NSString language) { + final _ret = _objc_msgSend_445(_class_NSMorphologyCustomPronoun, + _sel_requiredKeysForLanguage_, language.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSIndexPath indexPathWithIndexes_length_( - AVFAudio _lib, ffi.Pointer indexes, int length) { - final _ret = _lib._objc_msgSend_884(_lib._class_NSIndexPath1, - _lib._sel_indexPathWithIndexes_length_1, indexes, length); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + objc.NSString? get subjectForm { + final _ret = _objc_msgSend_13(this.pointer, _sel_subjectForm); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSIndexPath initWithIndexes_length_( - ffi.Pointer indexes, int length) { - final _ret = _lib._objc_msgSend_884( - _id, _lib._sel_initWithIndexes_length_1, indexes, length); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + set subjectForm(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setSubjectForm_, value?.pointer ?? ffi.nullptr); } - NSIndexPath initWithIndex_(int index) { - final _ret = _lib._objc_msgSend_65(_id, _lib._sel_initWithIndex_1, index); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + objc.NSString? get objectForm { + final _ret = _objc_msgSend_13(this.pointer, _sel_objectForm); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSIndexPath indexPathByAddingIndex_(int index) { - final _ret = - _lib._objc_msgSend_885(_id, _lib._sel_indexPathByAddingIndex_1, index); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + set objectForm(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setObjectForm_, value?.pointer ?? ffi.nullptr); } - NSIndexPath indexPathByRemovingLastIndex() { - final _ret = - _lib._objc_msgSend_886(_id, _lib._sel_indexPathByRemovingLastIndex1); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + objc.NSString? get possessiveForm { + final _ret = _objc_msgSend_13(this.pointer, _sel_possessiveForm); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - int indexAtPosition_(int position) { - return _lib._objc_msgSend_94(_id, _lib._sel_indexAtPosition_1, position); + set possessiveForm(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setPossessiveForm_, value?.pointer ?? ffi.nullptr); } - int get length { - return _lib._objc_msgSend_10(_id, _lib._sel_length1); + objc.NSString? get possessiveAdjectiveForm { + final _ret = _objc_msgSend_13(this.pointer, _sel_possessiveAdjectiveForm); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void getIndexes_range_( - ffi.Pointer indexes, _NSRange positionRange) { - _lib._objc_msgSend_887( - _id, _lib._sel_getIndexes_range_1, indexes, positionRange); + set possessiveAdjectiveForm(objc.NSString? value) { + return _objc_msgSend_46(this.pointer, _sel_setPossessiveAdjectiveForm_, + value?.pointer ?? ffi.nullptr); } - int compare_(NSIndexPath otherObject) { - return _lib._objc_msgSend_888(_id, _lib._sel_compare_1, otherObject._id); + objc.NSString? get reflexiveForm { + final _ret = _objc_msgSend_13(this.pointer, _sel_reflexiveForm); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void getIndexes_(ffi.Pointer indexes) { - _lib._objc_msgSend_889(_id, _lib._sel_getIndexes_1, indexes); + set reflexiveForm(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setReflexiveForm_, value?.pointer ?? ffi.nullptr); } @override - NSIndexPath init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + NSMorphologyCustomPronoun init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSMorphologyCustomPronoun.castFromPointer(_ret, + retain: true, release: true); } - static NSIndexPath new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSIndexPath1, _lib._sel_new1); - return NSIndexPath._(_ret, _lib, retain: false, release: true); + static NSMorphologyCustomPronoun new1() { + final _ret = _objc_msgSend_40(_class_NSMorphologyCustomPronoun, _sel_new); + return NSMorphologyCustomPronoun.castFromPointer(_ret, + retain: false, release: true); } - static NSIndexPath allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSIndexPath1, _lib._sel_allocWithZone_1, zone); - return NSIndexPath._(_ret, _lib, retain: false, release: true); + static NSMorphologyCustomPronoun allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSMorphologyCustomPronoun, _sel_allocWithZone_, zone); + return NSMorphologyCustomPronoun.castFromPointer(_ret, + retain: false, release: true); } - static NSIndexPath alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSIndexPath1, _lib._sel_alloc1); - return NSIndexPath._(_ret, _lib, retain: false, release: true); + static NSMorphologyCustomPronoun alloc() { + final _ret = _objc_msgSend_40(_class_NSMorphologyCustomPronoun, _sel_alloc); + return NSMorphologyCustomPronoun.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSIndexPath1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSMorphologyCustomPronoun, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSIndexPath1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSMorphologyCustomPronoun, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSIndexPath1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSMorphologyCustomPronoun, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSIndexPath1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSMorphologyCustomPronoun, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSIndexPath1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSMorphologyCustomPronoun, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSIndexPath1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSMorphologyCustomPronoun, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSIndexPath1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSMorphologyCustomPronoun, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSMorphologyCustomPronoun, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSMorphologyCustomPronoun, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSMorphologyCustomPronoun = + objc.getClass("NSMorphologyCustomPronoun"); +late final _sel_isSupportedForLanguage_ = + objc.registerName("isSupportedForLanguage:"); +late final _sel_requiredKeysForLanguage_ = + objc.registerName("requiredKeysForLanguage:"); +final _objc_msgSend_445 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_subjectForm = objc.registerName("subjectForm"); +late final _sel_setSubjectForm_ = objc.registerName("setSubjectForm:"); +late final _sel_objectForm = objc.registerName("objectForm"); +late final _sel_setObjectForm_ = objc.registerName("setObjectForm:"); +late final _sel_possessiveForm = objc.registerName("possessiveForm"); +late final _sel_setPossessiveForm_ = objc.registerName("setPossessiveForm:"); +late final _sel_possessiveAdjectiveForm = + objc.registerName("possessiveAdjectiveForm"); +late final _sel_setPossessiveAdjectiveForm_ = + objc.registerName("setPossessiveAdjectiveForm:"); +late final _sel_reflexiveForm = objc.registerName("reflexiveForm"); +late final _sel_setReflexiveForm_ = objc.registerName("setReflexiveForm:"); +late final _sel_customPronounForLanguage_ = + objc.registerName("customPronounForLanguage:"); +final _objc_msgSend_446 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCustomPronoun_forLanguage_error_ = + objc.registerName("setCustomPronoun:forLanguage:error:"); +final _objc_msgSend_447 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_isUnspecified = objc.registerName("isUnspecified"); +late final _sel_userMorphology = objc.registerName("userMorphology"); +final _objc_msgSend_448 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + +class NSOperationQueue extends objc.NSObject { + NSOperationQueue._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSOperationQueue] that points to the same underlying object as [other]. + NSOperationQueue.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSOperationQueue] that wraps the given raw object pointer. + NSOperationQueue.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSOperationQueue]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSOperationQueue); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSIndexPath1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSProgress get progress { + final _ret = _objc_msgSend_347(this.pointer, _sel_progress); + return objc.NSProgress.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSIndexPath1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + void addOperation_(NSOperation op) { + _objc_msgSend_449(this.pointer, _sel_addOperation_, op.pointer); } -} -class NSInflectionRule extends NSObject { - NSInflectionRule._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + void addOperations_waitUntilFinished_(objc.NSArray ops, bool wait) { + _objc_msgSend_456( + this.pointer, _sel_addOperations_waitUntilFinished_, ops.pointer, wait); + } - /// Returns a [NSInflectionRule] that points to the same underlying object as [other]. - static NSInflectionRule castFrom(T other) { - return NSInflectionRule._(other._id, other._lib, - retain: true, release: true); + void addOperationWithBlock_(ObjCBlock_ffiVoid block) { + _objc_msgSend_249(this.pointer, _sel_addOperationWithBlock_, block.pointer); } - /// Returns a [NSInflectionRule] that wraps the given raw object pointer. - static NSInflectionRule castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSInflectionRule._(other, lib, retain: retain, release: release); + void addBarrierBlock_(ObjCBlock_ffiVoid barrier) { + _objc_msgSend_249(this.pointer, _sel_addBarrierBlock_, barrier.pointer); } - /// Returns whether [obj] is an instance of [NSInflectionRule]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSInflectionRule1); + int get maxConcurrentOperationCount { + return _objc_msgSend_114(this.pointer, _sel_maxConcurrentOperationCount); } - @override - NSObject init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSObject._(_ret, _lib, retain: true, release: true); + set maxConcurrentOperationCount(int value) { + return _objc_msgSend_134( + this.pointer, _sel_setMaxConcurrentOperationCount_, value); } - static NSInflectionRule getAutomaticRule(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_890( - _lib._class_NSInflectionRule1, _lib._sel_automaticRule1); - return NSInflectionRule._(_ret, _lib, retain: true, release: true); + bool get suspended { + return _objc_msgSend_7(this.pointer, _sel_isSuspended); } - static bool canInflectLanguage_(AVFAudio _lib, NSString language) { - return _lib._objc_msgSend_64(_lib._class_NSInflectionRule1, - _lib._sel_canInflectLanguage_1, language._id); + set suspended(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setSuspended_, value); } - static bool getCanInflectPreferredLocalization(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSInflectionRule1, - _lib._sel_canInflectPreferredLocalization1); + objc.NSString? get name { + final _ret = _objc_msgSend_13(this.pointer, _sel_name); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSInflectionRule new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSInflectionRule1, _lib._sel_new1); - return NSInflectionRule._(_ret, _lib, retain: false, release: true); + set name(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setName_, value?.pointer ?? ffi.nullptr); + } + + int get qualityOfService { + return _objc_msgSend_454(this.pointer, _sel_qualityOfService); } - static NSInflectionRule allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSInflectionRule1, _lib._sel_allocWithZone_1, zone); - return NSInflectionRule._(_ret, _lib, retain: false, release: true); + set qualityOfService(int value) { + return _objc_msgSend_455(this.pointer, _sel_setQualityOfService_, value); } - static NSInflectionRule alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSInflectionRule1, _lib._sel_alloc1); - return NSInflectionRule._(_ret, _lib, retain: false, release: true); + objc.NSObject? get underlyingQueue { + final _ret = _objc_msgSend_457(this.pointer, _sel_underlyingQueue); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSInflectionRule1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set underlyingQueue(objc.NSObject? value) { + return _objc_msgSend_458( + this.pointer, _sel_setUnderlyingQueue_, value?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSInflectionRule1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + void cancelAllOperations() { + _objc_msgSend_82(this.pointer, _sel_cancelAllOperations); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSInflectionRule1, - _lib._sel_accessInstanceVariablesDirectly1); + void waitUntilAllOperationsAreFinished() { + _objc_msgSend_82(this.pointer, _sel_waitUntilAllOperationsAreFinished); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSInflectionRule1, _lib._sel_useStoredAccessor1); + static NSOperationQueue? getCurrentQueue() { + final _ret = _objc_msgSend_459(_class_NSOperationQueue, _sel_currentQueue); + return _ret.address == 0 + ? null + : NSOperationQueue.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSInflectionRule1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static NSOperationQueue getMainQueue() { + final _ret = _objc_msgSend_460(_class_NSOperationQueue, _sel_mainQueue); + return NSOperationQueue.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSInflectionRule1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + objc.NSArray get operations { + final _ret = _objc_msgSend_6(this.pointer, _sel_operations); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSInflectionRule1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + int get operationCount { + return _objc_msgSend_29(this.pointer, _sel_operationCount); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSInflectionRule1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + @override + NSOperationQueue init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSOperationQueue.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSInflectionRule1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSOperationQueue new1() { + final _ret = _objc_msgSend_40(_class_NSOperationQueue, _sel_new); + return NSOperationQueue.castFromPointer(_ret, retain: false, release: true); } -} -class NSMorphology extends NSObject { - NSMorphology._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + static NSOperationQueue allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSOperationQueue, _sel_allocWithZone_, zone); + return NSOperationQueue.castFromPointer(_ret, retain: false, release: true); + } - /// Returns a [NSMorphology] that points to the same underlying object as [other]. - static NSMorphology castFrom(T other) { - return NSMorphology._(other._id, other._lib, retain: true, release: true); + static NSOperationQueue alloc() { + final _ret = _objc_msgSend_40(_class_NSOperationQueue, _sel_alloc); + return NSOperationQueue.castFromPointer(_ret, retain: false, release: true); } - /// Returns a [NSMorphology] that wraps the given raw object pointer. - static NSMorphology castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMorphology._(other, lib, retain: retain, release: release); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSOperationQueue, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - /// Returns whether [obj] is an instance of [NSMorphology]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSMorphology1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSOperationQueue, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - int get grammaticalGender { - return _lib._objc_msgSend_891(_id, _lib._sel_grammaticalGender1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSOperationQueue, _sel_accessInstanceVariablesDirectly); } - set grammaticalGender(int value) { - return _lib._objc_msgSend_892(_id, _lib._sel_setGrammaticalGender_1, value); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSOperationQueue, _sel_useStoredAccessor); } - int get partOfSpeech { - return _lib._objc_msgSend_893(_id, _lib._sel_partOfSpeech1); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSOperationQueue, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - set partOfSpeech(int value) { - return _lib._objc_msgSend_894(_id, _lib._sel_setPartOfSpeech_1, value); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSOperationQueue, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - int get number { - return _lib._objc_msgSend_895(_id, _lib._sel_number1); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSOperationQueue, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - set number(int value) { - return _lib._objc_msgSend_896(_id, _lib._sel_setNumber_1, value); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSOperationQueue, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int get grammaticalCase { - return _lib._objc_msgSend_897(_id, _lib._sel_grammaticalCase1); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSOperationQueue, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - set grammaticalCase(int value) { - return _lib._objc_msgSend_898(_id, _lib._sel_setGrammaticalCase_1, value); +late final _class_NSOperationQueue = objc.getClass("NSOperationQueue"); + +class NSOperation extends objc.NSObject { + NSOperation._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSOperation] that points to the same underlying object as [other]. + NSOperation.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSOperation] that wraps the given raw object pointer. + NSOperation.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSOperation]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSOperation); } - int get determination { - return _lib._objc_msgSend_899(_id, _lib._sel_determination1); + void start() { + _objc_msgSend_82(this.pointer, _sel_start); } - set determination(int value) { - return _lib._objc_msgSend_900(_id, _lib._sel_setDetermination_1, value); + void main() { + _objc_msgSend_82(this.pointer, _sel_main); } - int get grammaticalPerson { - return _lib._objc_msgSend_901(_id, _lib._sel_grammaticalPerson1); + bool get cancelled { + return _objc_msgSend_7(this.pointer, _sel_isCancelled); } - set grammaticalPerson(int value) { - return _lib._objc_msgSend_902(_id, _lib._sel_setGrammaticalPerson_1, value); + void cancel() { + _objc_msgSend_82(this.pointer, _sel_cancel); } - int get pronounType { - return _lib._objc_msgSend_903(_id, _lib._sel_pronounType1); + bool get executing { + return _objc_msgSend_7(this.pointer, _sel_isExecuting); } - set pronounType(int value) { - return _lib._objc_msgSend_904(_id, _lib._sel_setPronounType_1, value); + bool get finished { + return _objc_msgSend_7(this.pointer, _sel_isFinished); } - int get definiteness { - return _lib._objc_msgSend_905(_id, _lib._sel_definiteness1); + bool get concurrent { + return _objc_msgSend_7(this.pointer, _sel_isConcurrent); } - set definiteness(int value) { - return _lib._objc_msgSend_906(_id, _lib._sel_setDefiniteness_1, value); + bool get asynchronous { + return _objc_msgSend_7(this.pointer, _sel_isAsynchronous); } - NSMorphologyCustomPronoun? customPronounForLanguage_(NSString language) { - final _ret = _lib._objc_msgSend_907( - _id, _lib._sel_customPronounForLanguage_1, language._id); - return _ret.address == 0 - ? null - : NSMorphologyCustomPronoun._(_ret, _lib, retain: true, release: true); + bool get ready { + return _objc_msgSend_7(this.pointer, _sel_isReady); } - bool setCustomPronoun_forLanguage_error_(NSMorphologyCustomPronoun? features, - NSString language, ffi.Pointer> error) { - return _lib._objc_msgSend_908( - _id, - _lib._sel_setCustomPronoun_forLanguage_error_1, - features?._id ?? ffi.nullptr, - language._id, - error); + void addDependency_(NSOperation op) { + _objc_msgSend_449(this.pointer, _sel_addDependency_, op.pointer); } - bool get unspecified { - return _lib._objc_msgSend_12(_id, _lib._sel_isUnspecified1); + void removeDependency_(NSOperation op) { + _objc_msgSend_449(this.pointer, _sel_removeDependency_, op.pointer); } - static NSMorphology getUserMorphology(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_909( - _lib._class_NSMorphology1, _lib._sel_userMorphology1); - return NSMorphology._(_ret, _lib, retain: true, release: true); + objc.NSArray get dependencies { + final _ret = _objc_msgSend_6(this.pointer, _sel_dependencies); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - @override - NSMorphology init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMorphology._(_ret, _lib, retain: true, release: true); + int get queuePriority { + return _objc_msgSend_450(this.pointer, _sel_queuePriority); } - static NSMorphology new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMorphology1, _lib._sel_new1); - return NSMorphology._(_ret, _lib, retain: false, release: true); + set queuePriority(int value) { + return _objc_msgSend_451(this.pointer, _sel_setQueuePriority_, value); } - static NSMorphology allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMorphology1, _lib._sel_allocWithZone_1, zone); - return NSMorphology._(_ret, _lib, retain: false, release: true); + ObjCBlock_ffiVoid? get completionBlock { + final _ret = _objc_msgSend_452(this.pointer, _sel_completionBlock); + return _ret.address == 0 + ? null + : ObjCBlock_ffiVoid.castFromPointer(_ret, retain: true, release: true); } - static NSMorphology alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMorphology1, _lib._sel_alloc1); - return NSMorphology._(_ret, _lib, retain: false, release: true); + set completionBlock(ObjCBlock_ffiVoid? value) { + return _objc_msgSend_453( + this.pointer, _sel_setCompletionBlock_, value?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMorphology1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + void waitUntilFinished() { + _objc_msgSend_82(this.pointer, _sel_waitUntilFinished); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMorphology1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + double get threadPriority { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_threadPriority) + : _objc_msgSend_115(this.pointer, _sel_threadPriority); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMorphology1, _lib._sel_accessInstanceVariablesDirectly1); + set threadPriority(double value) { + return _objc_msgSend_212(this.pointer, _sel_setThreadPriority_, value); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMorphology1, _lib._sel_useStoredAccessor1); + int get qualityOfService { + return _objc_msgSend_454(this.pointer, _sel_qualityOfService); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMorphology1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + set qualityOfService(int value) { + return _objc_msgSend_455(this.pointer, _sel_setQualityOfService_, value); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMorphology1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + objc.NSString? get name { + final _ret = _objc_msgSend_13(this.pointer, _sel_name); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMorphology1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set name(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setName_, value?.pointer ?? ffi.nullptr); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSMorphology1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + @override + NSOperation init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSOperation.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMorphology1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSOperation new1() { + final _ret = _objc_msgSend_40(_class_NSOperation, _sel_new); + return NSOperation.castFromPointer(_ret, retain: false, release: true); } -} -abstract class NSGrammaticalGender { - static const int NSGrammaticalGenderNotSet = 0; - static const int NSGrammaticalGenderFeminine = 1; - static const int NSGrammaticalGenderMasculine = 2; - static const int NSGrammaticalGenderNeuter = 3; -} + static NSOperation allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSOperation, _sel_allocWithZone_, zone); + return NSOperation.castFromPointer(_ret, retain: false, release: true); + } -abstract class NSGrammaticalPartOfSpeech { - static const int NSGrammaticalPartOfSpeechNotSet = 0; - static const int NSGrammaticalPartOfSpeechDeterminer = 1; - static const int NSGrammaticalPartOfSpeechPronoun = 2; - static const int NSGrammaticalPartOfSpeechLetter = 3; - static const int NSGrammaticalPartOfSpeechAdverb = 4; - static const int NSGrammaticalPartOfSpeechParticle = 5; - static const int NSGrammaticalPartOfSpeechAdjective = 6; - static const int NSGrammaticalPartOfSpeechAdposition = 7; - static const int NSGrammaticalPartOfSpeechVerb = 8; - static const int NSGrammaticalPartOfSpeechNoun = 9; - static const int NSGrammaticalPartOfSpeechConjunction = 10; - static const int NSGrammaticalPartOfSpeechNumeral = 11; - static const int NSGrammaticalPartOfSpeechInterjection = 12; - static const int NSGrammaticalPartOfSpeechPreposition = 13; - static const int NSGrammaticalPartOfSpeechAbbreviation = 14; -} + static NSOperation alloc() { + final _ret = _objc_msgSend_40(_class_NSOperation, _sel_alloc); + return NSOperation.castFromPointer(_ret, retain: false, release: true); + } -abstract class NSGrammaticalNumber { - static const int NSGrammaticalNumberNotSet = 0; - static const int NSGrammaticalNumberSingular = 1; - static const int NSGrammaticalNumberZero = 2; - static const int NSGrammaticalNumberPlural = 3; - static const int NSGrammaticalNumberPluralTwo = 4; - static const int NSGrammaticalNumberPluralFew = 5; - static const int NSGrammaticalNumberPluralMany = 6; -} + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSOperation, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); + } + + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSOperation, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); + } -abstract class NSGrammaticalCase { - static const int NSGrammaticalCaseNotSet = 0; - static const int NSGrammaticalCaseNominative = 1; - static const int NSGrammaticalCaseAccusative = 2; - static const int NSGrammaticalCaseDative = 3; - static const int NSGrammaticalCaseGenitive = 4; - static const int NSGrammaticalCasePrepositional = 5; - static const int NSGrammaticalCaseAblative = 6; - static const int NSGrammaticalCaseAdessive = 7; - static const int NSGrammaticalCaseAllative = 8; - static const int NSGrammaticalCaseElative = 9; - static const int NSGrammaticalCaseIllative = 10; - static const int NSGrammaticalCaseEssive = 11; - static const int NSGrammaticalCaseInessive = 12; - static const int NSGrammaticalCaseLocative = 13; - static const int NSGrammaticalCaseTranslative = 14; -} + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSOperation, _sel_accessInstanceVariablesDirectly); + } -abstract class NSGrammaticalDetermination { - static const int NSGrammaticalDeterminationNotSet = 0; - static const int NSGrammaticalDeterminationIndependent = 1; - static const int NSGrammaticalDeterminationDependent = 2; -} + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSOperation, _sel_useStoredAccessor); + } -abstract class NSGrammaticalPerson { - static const int NSGrammaticalPersonNotSet = 0; - static const int NSGrammaticalPersonFirst = 1; - static const int NSGrammaticalPersonSecond = 2; - static const int NSGrammaticalPersonThird = 3; -} + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSOperation, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); + } -abstract class NSGrammaticalPronounType { - static const int NSGrammaticalPronounTypeNotSet = 0; - static const int NSGrammaticalPronounTypePersonal = 1; - static const int NSGrammaticalPronounTypeReflexive = 2; - static const int NSGrammaticalPronounTypePossessive = 3; + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSOperation, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSOperation, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSOperation, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSOperation, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSOperation = objc.getClass("NSOperation"); +late final _sel_start = objc.registerName("start"); +late final _sel_main = objc.registerName("main"); +late final _sel_isCancelled = objc.registerName("isCancelled"); +late final _sel_isExecuting = objc.registerName("isExecuting"); +late final _sel_isFinished = objc.registerName("isFinished"); +late final _sel_isConcurrent = objc.registerName("isConcurrent"); +late final _sel_isAsynchronous = objc.registerName("isAsynchronous"); +late final _sel_isReady = objc.registerName("isReady"); +late final _sel_addDependency_ = objc.registerName("addDependency:"); +final _objc_msgSend_449 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_removeDependency_ = objc.registerName("removeDependency:"); +late final _sel_dependencies = objc.registerName("dependencies"); + +abstract class NSOperationQueuePriority { + static const int NSOperationQueuePriorityVeryLow = -8; + static const int NSOperationQueuePriorityLow = -4; + static const int NSOperationQueuePriorityNormal = 0; + static const int NSOperationQueuePriorityHigh = 4; + static const int NSOperationQueuePriorityVeryHigh = 8; } -abstract class NSGrammaticalDefiniteness { - static const int NSGrammaticalDefinitenessNotSet = 0; - static const int NSGrammaticalDefinitenessIndefinite = 1; - static const int NSGrammaticalDefinitenessDefinite = 2; +late final _sel_queuePriority = objc.registerName("queuePriority"); +final _objc_msgSend_450 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setQueuePriority_ = objc.registerName("setQueuePriority:"); +final _objc_msgSend_451 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_completionBlock = objc.registerName("completionBlock"); +final _objc_msgSend_452 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCompletionBlock_ = objc.registerName("setCompletionBlock:"); +final _objc_msgSend_453 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_waitUntilFinished = objc.registerName("waitUntilFinished"); +late final _sel_threadPriority = objc.registerName("threadPriority"); +late final _sel_setThreadPriority_ = objc.registerName("setThreadPriority:"); + +abstract class NSQualityOfService { + static const int NSQualityOfServiceUserInteractive = 33; + static const int NSQualityOfServiceUserInitiated = 25; + static const int NSQualityOfServiceUtility = 17; + static const int NSQualityOfServiceBackground = 9; + static const int NSQualityOfServiceDefault = -1; } -class NSMorphologyCustomPronoun extends NSObject { - NSMorphologyCustomPronoun._(ffi.Pointer id, AVFAudio lib, +late final _sel_qualityOfService = objc.registerName("qualityOfService"); +final _objc_msgSend_454 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setQualityOfService_ = + objc.registerName("setQualityOfService:"); +final _objc_msgSend_455 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setName_ = objc.registerName("setName:"); +late final _sel_addOperation_ = objc.registerName("addOperation:"); +late final _sel_addOperations_waitUntilFinished_ = + objc.registerName("addOperations:waitUntilFinished:"); +final _objc_msgSend_456 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_addOperationWithBlock_ = + objc.registerName("addOperationWithBlock:"); +late final _sel_addBarrierBlock_ = objc.registerName("addBarrierBlock:"); +late final _sel_maxConcurrentOperationCount = + objc.registerName("maxConcurrentOperationCount"); +late final _sel_setMaxConcurrentOperationCount_ = + objc.registerName("setMaxConcurrentOperationCount:"); +late final _sel_isSuspended = objc.registerName("isSuspended"); +late final _sel_setSuspended_ = objc.registerName("setSuspended:"); +late final _sel_underlyingQueue = objc.registerName("underlyingQueue"); +final _objc_msgSend_457 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setUnderlyingQueue_ = objc.registerName("setUnderlyingQueue:"); +final _objc_msgSend_458 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_cancelAllOperations = objc.registerName("cancelAllOperations"); +late final _sel_waitUntilAllOperationsAreFinished = + objc.registerName("waitUntilAllOperationsAreFinished"); +late final _sel_currentQueue = objc.registerName("currentQueue"); +final _objc_msgSend_459 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_mainQueue = objc.registerName("mainQueue"); +final _objc_msgSend_460 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_operations = objc.registerName("operations"); +late final _sel_operationCount = objc.registerName("operationCount"); + +class NSOrthography extends objc.NSObject { + NSOrthography._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSMorphologyCustomPronoun] that points to the same underlying object as [other]. - static NSMorphologyCustomPronoun castFrom(T other) { - return NSMorphologyCustomPronoun._(other._id, other._lib, - retain: true, release: true); - } + /// Constructs a [NSOrthography] that points to the same underlying object as [other]. + NSOrthography.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSMorphologyCustomPronoun] that wraps the given raw object pointer. - static NSMorphologyCustomPronoun castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMorphologyCustomPronoun._(other, lib, - retain: retain, release: release); + /// Constructs a [NSOrthography] that wraps the given raw object pointer. + NSOrthography.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSOrthography]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSOrthography); } - /// Returns whether [obj] is an instance of [NSMorphologyCustomPronoun]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMorphologyCustomPronoun1); + objc.NSString get dominantScript { + final _ret = _objc_msgSend_12(this.pointer, _sel_dominantScript); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool isSupportedForLanguage_(AVFAudio _lib, NSString language) { - return _lib._objc_msgSend_64(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_isSupportedForLanguage_1, language._id); + objc.NSDictionary get languageMap { + final _ret = _objc_msgSend_112(this.pointer, _sel_languageMap); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSArray requiredKeysForLanguage_(AVFAudio _lib, NSString language) { - final _ret = _lib._objc_msgSend_358(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_requiredKeysForLanguage_1, language._id); - return NSArray._(_ret, _lib, retain: true, release: true); + NSOrthography initWithDominantScript_languageMap_( + objc.NSString script, objc.NSDictionary map) { + final _ret = _objc_msgSend_461(this.pointer, + _sel_initWithDominantScript_languageMap_, script.pointer, map.pointer); + return NSOrthography.castFromPointer(_ret, retain: true, release: true); } - NSString? get subjectForm { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_subjectForm1); + NSOrthography? initWithCoder_(objc.NSCoder coder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, coder.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSOrthography.castFromPointer(_ret, retain: true, release: true); } - set subjectForm(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setSubjectForm_1, value?._id ?? ffi.nullptr); - } - - NSString? get objectForm { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_objectForm1); + objc.NSArray? languagesForScript_(objc.NSString script) { + final _ret = _objc_msgSend_290( + this.pointer, _sel_languagesForScript_, script.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - set objectForm(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setObjectForm_1, value?._id ?? ffi.nullptr); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString? get possessiveForm { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_possessiveForm1); + objc.NSString? dominantLanguageForScript_(objc.NSString script) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_dominantLanguageForScript_, script.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set possessiveForm(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setPossessiveForm_1, value?._id ?? ffi.nullptr); + objc.NSString get dominantLanguage { + final _ret = _objc_msgSend_12(this.pointer, _sel_dominantLanguage); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? get possessiveAdjectiveForm { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_possessiveAdjectiveForm1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray get allScripts { + final _ret = _objc_msgSend_6(this.pointer, _sel_allScripts); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set possessiveAdjectiveForm(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setPossessiveAdjectiveForm_1, value?._id ?? ffi.nullptr); + objc.NSArray get allLanguages { + final _ret = _objc_msgSend_6(this.pointer, _sel_allLanguages); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString? get reflexiveForm { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_reflexiveForm1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSOrthography defaultOrthographyForLanguage_(objc.NSString language) { + final _ret = _objc_msgSend_35(_class_NSOrthography, + _sel_defaultOrthographyForLanguage_, language.pointer); + return NSOrthography.castFromPointer(_ret, retain: true, release: true); } - set reflexiveForm(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setReflexiveForm_1, value?._id ?? ffi.nullptr); + static NSOrthography orthographyWithDominantScript_languageMap_( + objc.NSString script, objc.NSDictionary map) { + final _ret = _objc_msgSend_461( + _class_NSOrthography, + _sel_orthographyWithDominantScript_languageMap_, + script.pointer, + map.pointer); + return NSOrthography.castFromPointer(_ret, retain: true, release: true); } @override - NSMorphologyCustomPronoun init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMorphologyCustomPronoun._(_ret, _lib, retain: true, release: true); + NSOrthography init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSOrthography.castFromPointer(_ret, retain: true, release: true); } - static NSMorphologyCustomPronoun new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMorphologyCustomPronoun1, _lib._sel_new1); - return NSMorphologyCustomPronoun._(_ret, _lib, - retain: false, release: true); + static NSOrthography new1() { + final _ret = _objc_msgSend_40(_class_NSOrthography, _sel_new); + return NSOrthography.castFromPointer(_ret, retain: false, release: true); } - static NSMorphologyCustomPronoun allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_allocWithZone_1, zone); - return NSMorphologyCustomPronoun._(_ret, _lib, - retain: false, release: true); + static NSOrthography allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSOrthography, _sel_allocWithZone_, zone); + return NSOrthography.castFromPointer(_ret, retain: false, release: true); } - static NSMorphologyCustomPronoun alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMorphologyCustomPronoun1, _lib._sel_alloc1); - return NSMorphologyCustomPronoun._(_ret, _lib, - retain: false, release: true); + static NSOrthography alloc() { + final _ret = _objc_msgSend_40(_class_NSOrthography, _sel_alloc); + return NSOrthography.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMorphologyCustomPronoun1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSOrthography, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSOrthography, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSOrthography, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMorphologyCustomPronoun1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSOrthography, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSOrthography, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSOrthography, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMorphologyCustomPronoun1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSOrthography, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSOrthography, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSOrthography, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSOrthography = objc.getClass("NSOrthography"); +late final _sel_dominantScript = objc.registerName("dominantScript"); +late final _sel_languageMap = objc.registerName("languageMap"); +late final _sel_initWithDominantScript_languageMap_ = + objc.registerName("initWithDominantScript:languageMap:"); +final _objc_msgSend_461 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_languagesForScript_ = objc.registerName("languagesForScript:"); +late final _sel_dominantLanguageForScript_ = + objc.registerName("dominantLanguageForScript:"); +late final _sel_dominantLanguage = objc.registerName("dominantLanguage"); +late final _sel_allScripts = objc.registerName("allScripts"); +late final _sel_allLanguages = objc.registerName("allLanguages"); +late final _sel_defaultOrthographyForLanguage_ = + objc.registerName("defaultOrthographyForLanguage:"); +late final _sel_orthographyWithDominantScript_languageMap_ = + objc.registerName("orthographyWithDominantScript:languageMap:"); + +class NSPointerArray extends objc.NSObject { + NSPointerArray._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} + /// Constructs a [NSPointerArray] that points to the same underlying object as [other]. + NSPointerArray.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); -class NSOperationQueue extends NSObject { - NSOperationQueue._(ffi.Pointer id, AVFAudio lib, + /// Constructs a [NSPointerArray] that wraps the given raw object pointer. + NSPointerArray.castFromPointer(ffi.Pointer other, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : this._(other, retain: retain, release: release); - /// Returns a [NSOperationQueue] that points to the same underlying object as [other]. - static NSOperationQueue castFrom(T other) { - return NSOperationQueue._(other._id, other._lib, - retain: true, release: true); + /// Returns whether [obj] is an instance of [NSPointerArray]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSPointerArray); } - /// Returns a [NSOperationQueue] that wraps the given raw object pointer. - static NSOperationQueue castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSOperationQueue._(other, lib, retain: retain, release: release); + NSPointerArray initWithOptions_(int options) { + final _ret = + _objc_msgSend_462(this.pointer, _sel_initWithOptions_, options); + return NSPointerArray.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSOperationQueue]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSOperationQueue1); + NSPointerArray initWithPointerFunctions_(NSPointerFunctions functions) { + final _ret = _objc_msgSend_476( + this.pointer, _sel_initWithPointerFunctions_, functions.pointer); + return NSPointerArray.castFromPointer(_ret, retain: true, release: true); } - NSProgress get progress { - final _ret = _lib._objc_msgSend_879(_id, _lib._sel_progress1); - return NSProgress._(_ret, _lib, retain: true, release: true); + static NSPointerArray pointerArrayWithOptions_(int options) { + final _ret = _objc_msgSend_477( + _class_NSPointerArray, _sel_pointerArrayWithOptions_, options); + return NSPointerArray.castFromPointer(_ret, retain: true, release: true); } - void addOperation_(NSOperation op) { - _lib._objc_msgSend_910(_id, _lib._sel_addOperation_1, op._id); + static NSPointerArray pointerArrayWithPointerFunctions_( + NSPointerFunctions functions) { + final _ret = _objc_msgSend_478(_class_NSPointerArray, + _sel_pointerArrayWithPointerFunctions_, functions.pointer); + return NSPointerArray.castFromPointer(_ret, retain: true, release: true); } - void addOperations_waitUntilFinished_(NSArray ops, bool wait) { - _lib._objc_msgSend_913( - _id, _lib._sel_addOperations_waitUntilFinished_1, ops._id, wait); + NSPointerFunctions get pointerFunctions { + final _ret = _objc_msgSend_479(this.pointer, _sel_pointerFunctions); + return NSPointerFunctions.castFromPointer(_ret, + retain: true, release: true); } - void addOperationWithBlock_(ObjCBlock_ffiVoid block) { - _lib._objc_msgSend_532(_id, _lib._sel_addOperationWithBlock_1, block._id); + ffi.Pointer pointerAtIndex_(int index) { + return _objc_msgSend_480(this.pointer, _sel_pointerAtIndex_, index); } - void addBarrierBlock_(ObjCBlock_ffiVoid barrier) { - _lib._objc_msgSend_532(_id, _lib._sel_addBarrierBlock_1, barrier._id); + void addPointer_(ffi.Pointer pointer) { + _objc_msgSend_481(this.pointer, _sel_addPointer_, pointer); } - int get maxConcurrentOperationCount { - return _lib._objc_msgSend_83(_id, _lib._sel_maxConcurrentOperationCount1); + void removePointerAtIndex_(int index) { + _objc_msgSend_414(this.pointer, _sel_removePointerAtIndex_, index); } - set maxConcurrentOperationCount(int value) { - return _lib._objc_msgSend_635( - _id, _lib._sel_setMaxConcurrentOperationCount_1, value); + void insertPointer_atIndex_(ffi.Pointer item, int index) { + _objc_msgSend_482(this.pointer, _sel_insertPointer_atIndex_, item, index); } - bool get suspended { - return _lib._objc_msgSend_12(_id, _lib._sel_isSuspended1); + void replacePointerAtIndex_withPointer_( + int index, ffi.Pointer item) { + _objc_msgSend_483( + this.pointer, _sel_replacePointerAtIndex_withPointer_, index, item); } - set suspended(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setSuspended_1, value); + void compact() { + _objc_msgSend_82(this.pointer, _sel_compact); } - NSString? get name { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_name1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + int get count { + return _objc_msgSend_29(this.pointer, _sel_count); } - set name(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); + set count(int value) { + return _objc_msgSend_125(this.pointer, _sel_setCount_, value); } - int get qualityOfService { - return _lib._objc_msgSend_543(_id, _lib._sel_qualityOfService1); + static objc.NSObject pointerArrayWithStrongObjects() { + final _ret = _objc_msgSend_40( + _class_NSPointerArray, _sel_pointerArrayWithStrongObjects); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set qualityOfService(int value) { - return _lib._objc_msgSend_544(_id, _lib._sel_setQualityOfService_1, value); + static objc.NSObject pointerArrayWithWeakObjects() { + final _ret = _objc_msgSend_40( + _class_NSPointerArray, _sel_pointerArrayWithWeakObjects); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - ffi.Pointer get underlyingQueue { - return _lib._objc_msgSend_914(_id, _lib._sel_underlyingQueue1); + static NSPointerArray strongObjectsPointerArray() { + final _ret = _objc_msgSend_484( + _class_NSPointerArray, _sel_strongObjectsPointerArray); + return NSPointerArray.castFromPointer(_ret, retain: true, release: true); } - set underlyingQueue(ffi.Pointer value) { - return _lib._objc_msgSend_915(_id, _lib._sel_setUnderlyingQueue_1, value); + static NSPointerArray weakObjectsPointerArray() { + final _ret = + _objc_msgSend_484(_class_NSPointerArray, _sel_weakObjectsPointerArray); + return NSPointerArray.castFromPointer(_ret, retain: true, release: true); } - void cancelAllOperations() { - _lib._objc_msgSend_1(_id, _lib._sel_cancelAllOperations1); + objc.NSArray get allObjects { + final _ret = _objc_msgSend_6(this.pointer, _sel_allObjects); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void waitUntilAllOperationsAreFinished() { - _lib._objc_msgSend_1(_id, _lib._sel_waitUntilAllOperationsAreFinished1); + @override + NSPointerArray init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSPointerArray.castFromPointer(_ret, retain: true, release: true); } - static NSOperationQueue? getCurrentQueue(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_916( - _lib._class_NSOperationQueue1, _lib._sel_currentQueue1); - return _ret.address == 0 - ? null - : NSOperationQueue._(_ret, _lib, retain: true, release: true); + static NSPointerArray new1() { + final _ret = _objc_msgSend_40(_class_NSPointerArray, _sel_new); + return NSPointerArray.castFromPointer(_ret, retain: false, release: true); } - static NSOperationQueue getMainQueue(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_917( - _lib._class_NSOperationQueue1, _lib._sel_mainQueue1); - return NSOperationQueue._(_ret, _lib, retain: true, release: true); + static NSPointerArray allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSPointerArray, _sel_allocWithZone_, zone); + return NSPointerArray.castFromPointer(_ret, retain: false, release: true); } - NSArray get operations { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_operations1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSPointerArray alloc() { + final _ret = _objc_msgSend_40(_class_NSPointerArray, _sel_alloc); + return NSPointerArray.castFromPointer(_ret, retain: false, release: true); } - int get operationCount { - return _lib._objc_msgSend_10(_id, _lib._sel_operationCount1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSPointerArray, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - @override - NSOperationQueue init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSOperationQueue._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSPointerArray, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static NSOperationQueue new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOperationQueue1, _lib._sel_new1); - return NSOperationQueue._(_ret, _lib, retain: false, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSPointerArray, _sel_accessInstanceVariablesDirectly); } - static NSOperationQueue allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSOperationQueue1, _lib._sel_allocWithZone_1, zone); - return NSOperationQueue._(_ret, _lib, retain: false, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSPointerArray, _sel_useStoredAccessor); } - static NSOperationQueue alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOperationQueue1, _lib._sel_alloc1); - return NSOperationQueue._(_ret, _lib, retain: false, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSPointerArray, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSOperationQueue1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSPointerArray, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSOperationQueue1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSPointerArray, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSOperationQueue1, - _lib._sel_accessInstanceVariablesDirectly1); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSPointerArray, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOperationQueue1, _lib._sel_useStoredAccessor1); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSPointerArray, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} + +late final _class_NSPointerArray = objc.getClass("NSPointerArray"); + +abstract class NSPointerFunctionsOptions { + static const int NSPointerFunctionsStrongMemory = 0; + static const int NSPointerFunctionsZeroingWeakMemory = 1; + static const int NSPointerFunctionsOpaqueMemory = 2; + static const int NSPointerFunctionsMallocMemory = 3; + static const int NSPointerFunctionsMachVirtualMemory = 4; + static const int NSPointerFunctionsWeakMemory = 5; + static const int NSPointerFunctionsObjectPersonality = 0; + static const int NSPointerFunctionsOpaquePersonality = 256; + static const int NSPointerFunctionsObjectPointerPersonality = 512; + static const int NSPointerFunctionsCStringPersonality = 768; + static const int NSPointerFunctionsStructPersonality = 1024; + static const int NSPointerFunctionsIntegerPersonality = 1280; + static const int NSPointerFunctionsCopyIn = 65536; +} + +late final _sel_initWithOptions_ = objc.registerName("initWithOptions:"); +final _objc_msgSend_462 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int)>(); + +class NSPointerFunctions extends objc.NSObject { + NSPointerFunctions._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSPointerFunctions] that points to the same underlying object as [other]. + NSPointerFunctions.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSOperationQueue1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + /// Constructs a [NSPointerFunctions] that wraps the given raw object pointer. + NSPointerFunctions.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSPointerFunctions]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSPointerFunctions); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSOperationQueue1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + NSPointerFunctions initWithOptions_(int options) { + final _ret = + _objc_msgSend_462(this.pointer, _sel_initWithOptions_, options); + return NSPointerFunctions.castFromPointer(_ret, + retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSOperationQueue1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static NSPointerFunctions pointerFunctionsWithOptions_(int options) { + final _ret = _objc_msgSend_463( + _class_NSPointerFunctions, _sel_pointerFunctionsWithOptions_, options); + return NSPointerFunctions.castFromPointer(_ret, + retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSOperationQueue1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + get hashFunction { + return _objc_msgSend_464(this.pointer, _sel_hashFunction); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSOperationQueue1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + set hashFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value) { + return _objc_msgSend_465(this.pointer, _sel_setHashFunction_, value); } -} -class NSOperation extends NSObject { - NSOperation._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + get isEqualFunction { + return _objc_msgSend_466(this.pointer, _sel_isEqualFunction); + } - /// Returns a [NSOperation] that points to the same underlying object as [other]. - static NSOperation castFrom(T other) { - return NSOperation._(other._id, other._lib, retain: true, release: true); + set isEqualFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value) { + return _objc_msgSend_467(this.pointer, _sel_setIsEqualFunction_, value); } - /// Returns a [NSOperation] that wraps the given raw object pointer. - static NSOperation castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSOperation._(other, lib, retain: retain, release: release); + ffi.Pointer< + ffi.NativeFunction)>> + get sizeFunction { + return _objc_msgSend_468(this.pointer, _sel_sizeFunction); } - /// Returns whether [obj] is an instance of [NSOperation]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSOperation1); + set sizeFunction( + ffi.Pointer< + ffi + .NativeFunction)>> + value) { + return _objc_msgSend_469(this.pointer, _sel_setSizeFunction_, value); } - void start() { - _lib._objc_msgSend_1(_id, _lib._sel_start1); + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> + get descriptionFunction { + return _objc_msgSend_470(this.pointer, _sel_descriptionFunction); } - void main() { - _lib._objc_msgSend_1(_id, _lib._sel_main1); + set descriptionFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> + value) { + return _objc_msgSend_471(this.pointer, _sel_setDescriptionFunction_, value); } - bool get cancelled { - return _lib._objc_msgSend_12(_id, _lib._sel_isCancelled1); + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + get relinquishFunction { + return _objc_msgSend_472(this.pointer, _sel_relinquishFunction); } - void cancel() { - _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + set relinquishFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value) { + return _objc_msgSend_473(this.pointer, _sel_setRelinquishFunction_, value); } - bool get executing { - return _lib._objc_msgSend_12(_id, _lib._sel_isExecuting1); + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>, + ffi.Bool)>> get acquireFunction { + return _objc_msgSend_474(this.pointer, _sel_acquireFunction); } - bool get finished { - return _lib._objc_msgSend_12(_id, _lib._sel_isFinished1); + set acquireFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>> + value) { + return _objc_msgSend_475(this.pointer, _sel_setAcquireFunction_, value); } - bool get concurrent { - return _lib._objc_msgSend_12(_id, _lib._sel_isConcurrent1); + bool get usesStrongWriteBarrier { + return _objc_msgSend_7(this.pointer, _sel_usesStrongWriteBarrier); } - bool get asynchronous { - return _lib._objc_msgSend_12(_id, _lib._sel_isAsynchronous1); + set usesStrongWriteBarrier(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setUsesStrongWriteBarrier_, value); } - bool get ready { - return _lib._objc_msgSend_12(_id, _lib._sel_isReady1); + bool get usesWeakReadAndWriteBarriers { + return _objc_msgSend_7(this.pointer, _sel_usesWeakReadAndWriteBarriers); } - void addDependency_(NSOperation op) { - _lib._objc_msgSend_910(_id, _lib._sel_addDependency_1, op._id); + set usesWeakReadAndWriteBarriers(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setUsesWeakReadAndWriteBarriers_, value); } - void removeDependency_(NSOperation op) { - _lib._objc_msgSend_910(_id, _lib._sel_removeDependency_1, op._id); + @override + NSPointerFunctions init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSPointerFunctions.castFromPointer(_ret, + retain: true, release: true); } - NSArray get dependencies { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_dependencies1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSPointerFunctions new1() { + final _ret = _objc_msgSend_40(_class_NSPointerFunctions, _sel_new); + return NSPointerFunctions.castFromPointer(_ret, + retain: false, release: true); } - int get queuePriority { - return _lib._objc_msgSend_911(_id, _lib._sel_queuePriority1); + static NSPointerFunctions allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSPointerFunctions, _sel_allocWithZone_, zone); + return NSPointerFunctions.castFromPointer(_ret, + retain: false, release: true); } - set queuePriority(int value) { - return _lib._objc_msgSend_912(_id, _lib._sel_setQueuePriority_1, value); + static NSPointerFunctions alloc() { + final _ret = _objc_msgSend_40(_class_NSPointerFunctions, _sel_alloc); + return NSPointerFunctions.castFromPointer(_ret, + retain: false, release: true); } - ObjCBlock_ffiVoid? get completionBlock { - final _ret = _lib._objc_msgSend_668(_id, _lib._sel_completionBlock1); - return _ret.address == 0 - ? null - : ObjCBlock_ffiVoid._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSPointerFunctions, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - set completionBlock(ObjCBlock_ffiVoid? value) { - return _lib._objc_msgSend_669( - _id, _lib._sel_setCompletionBlock_1, value?._id ?? ffi.nullptr); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSPointerFunctions, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - void waitUntilFinished() { - _lib._objc_msgSend_1(_id, _lib._sel_waitUntilFinished1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSPointerFunctions, _sel_accessInstanceVariablesDirectly); } - double get threadPriority { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_threadPriority1) - : _lib._objc_msgSend_165(_id, _lib._sel_threadPriority1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSPointerFunctions, _sel_useStoredAccessor); } - set threadPriority(double value) { - return _lib._objc_msgSend_542(_id, _lib._sel_setThreadPriority_1, value); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSPointerFunctions, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - int get qualityOfService { - return _lib._objc_msgSend_543(_id, _lib._sel_qualityOfService1); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSPointerFunctions, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - set qualityOfService(int value) { - return _lib._objc_msgSend_544(_id, _lib._sel_setQualityOfService_1, value); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSPointerFunctions, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSPointerFunctions, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSPointerFunctions, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSPointerFunctions = objc.getClass("NSPointerFunctions"); +late final _sel_pointerFunctionsWithOptions_ = + objc.registerName("pointerFunctionsWithOptions:"); +final _objc_msgSend_463 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_hashFunction = objc.registerName("hashFunction"); +final _objc_msgSend_464 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer, ffi.Pointer)>>)>> Function( + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>(); +late final _sel_setHashFunction_ = objc.registerName("setHashFunction:"); +final _objc_msgSend_465 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>(); +late final _sel_isEqualFunction = objc.registerName("isEqualFunction"); +final _objc_msgSend_466 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer, ffi.Pointer, ffi.Pointer)>>)>> Function( + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>(); +late final _sel_setIsEqualFunction_ = objc.registerName("setIsEqualFunction:"); +final _objc_msgSend_467 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>>)>(); +late final _sel_sizeFunction = objc.registerName("sizeFunction"); +final _objc_msgSend_468 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer)>> Function( + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>> + Function(ffi.Pointer, ffi.Pointer)>(); +late final _sel_setSizeFunction_ = objc.registerName("setSizeFunction:"); +final _objc_msgSend_469 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>(); +late final _sel_descriptionFunction = objc.registerName("descriptionFunction"); +final _objc_msgSend_470 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> Function( + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>> + Function(ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDescriptionFunction_ = + objc.registerName("setDescriptionFunction:"); +final _objc_msgSend_471 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>)>(); +late final _sel_relinquishFunction = objc.registerName("relinquishFunction"); +final _objc_msgSend_472 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer, ffi.Pointer)>>)>> Function( + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>(); +late final _sel_setRelinquishFunction_ = + objc.registerName("setRelinquishFunction:"); +final _objc_msgSend_473 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>(); +late final _sel_acquireFunction = objc.registerName("acquireFunction"); +final _objc_msgSend_474 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, ffi.Pointer)>>, ffi.Bool)>> Function( + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>> + Function(ffi.Pointer, ffi.Pointer)>(); +late final _sel_setAcquireFunction_ = objc.registerName("setAcquireFunction:"); +final _objc_msgSend_475 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi + .NativeFunction)>>, + ffi.Bool)>>)>(); +late final _sel_usesStrongWriteBarrier = + objc.registerName("usesStrongWriteBarrier"); +late final _sel_setUsesStrongWriteBarrier_ = + objc.registerName("setUsesStrongWriteBarrier:"); +late final _sel_usesWeakReadAndWriteBarriers = + objc.registerName("usesWeakReadAndWriteBarriers"); +late final _sel_setUsesWeakReadAndWriteBarriers_ = + objc.registerName("setUsesWeakReadAndWriteBarriers:"); +late final _sel_initWithPointerFunctions_ = + objc.registerName("initWithPointerFunctions:"); +final _objc_msgSend_476 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_pointerArrayWithOptions_ = + objc.registerName("pointerArrayWithOptions:"); +final _objc_msgSend_477 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_pointerArrayWithPointerFunctions_ = + objc.registerName("pointerArrayWithPointerFunctions:"); +final _objc_msgSend_478 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_pointerFunctions = objc.registerName("pointerFunctions"); +final _objc_msgSend_479 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_pointerAtIndex_ = objc.registerName("pointerAtIndex:"); +final _objc_msgSend_480 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_addPointer_ = objc.registerName("addPointer:"); +final _objc_msgSend_481 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_removePointerAtIndex_ = + objc.registerName("removePointerAtIndex:"); +late final _sel_insertPointer_atIndex_ = + objc.registerName("insertPointer:atIndex:"); +final _objc_msgSend_482 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); +late final _sel_replacePointerAtIndex_withPointer_ = + objc.registerName("replacePointerAtIndex:withPointer:"); +final _objc_msgSend_483 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); +late final _sel_compact = objc.registerName("compact"); +late final _sel_setCount_ = objc.registerName("setCount:"); +late final _sel_pointerArrayWithStrongObjects = + objc.registerName("pointerArrayWithStrongObjects"); +late final _sel_pointerArrayWithWeakObjects = + objc.registerName("pointerArrayWithWeakObjects"); +late final _sel_strongObjectsPointerArray = + objc.registerName("strongObjectsPointerArray"); +final _objc_msgSend_484 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_weakObjectsPointerArray = + objc.registerName("weakObjectsPointerArray"); +late final _sel_allObjects = objc.registerName("allObjects"); + +class NSProcessInfo extends objc.NSObject { + NSProcessInfo._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSString? get name { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_name1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSProcessInfo] that points to the same underlying object as [other]. + NSProcessInfo.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - set name(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); - } + /// Constructs a [NSProcessInfo] that wraps the given raw object pointer. + NSProcessInfo.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - @override - NSOperation init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSOperation._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSProcessInfo]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSProcessInfo); } - static NSOperation new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSOperation1, _lib._sel_new1); - return NSOperation._(_ret, _lib, retain: false, release: true); + static NSProcessInfo getProcessInfo() { + final _ret = _objc_msgSend_485(_class_NSProcessInfo, _sel_processInfo); + return NSProcessInfo.castFromPointer(_ret, retain: true, release: true); } - static NSOperation allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSOperation1, _lib._sel_allocWithZone_1, zone); - return NSOperation._(_ret, _lib, retain: false, release: true); + objc.NSDictionary get environment { + final _ret = _objc_msgSend_112(this.pointer, _sel_environment); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSOperation alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOperation1, _lib._sel_alloc1); - return NSOperation._(_ret, _lib, retain: false, release: true); + objc.NSArray get arguments { + final _ret = _objc_msgSend_6(this.pointer, _sel_arguments); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSOperation1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + objc.NSString get hostName { + final _ret = _objc_msgSend_12(this.pointer, _sel_hostName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSOperation1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + objc.NSString get processName { + final _ret = _objc_msgSend_12(this.pointer, _sel_processName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOperation1, _lib._sel_accessInstanceVariablesDirectly1); + set processName(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setProcessName_, value.pointer); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOperation1, _lib._sel_useStoredAccessor1); + int get processIdentifier { + return _objc_msgSend_264(this.pointer, _sel_processIdentifier); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSOperation1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSString get globallyUniqueString { + final _ret = _objc_msgSend_12(this.pointer, _sel_globallyUniqueString); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSOperation1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + int operatingSystem() { + return _objc_msgSend_29(this.pointer, _sel_operatingSystem); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSOperation1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSString operatingSystemName() { + final _ret = _objc_msgSend_12(this.pointer, _sel_operatingSystemName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSOperation1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSString get operatingSystemVersionString { + final _ret = + _objc_msgSend_12(this.pointer, _sel_operatingSystemVersionString); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSOperation1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + void getOperatingSystemVersion(ffi.Pointer stret) { + objc.useMsgSendVariants + ? _objc_msgSend_486Stret( + stret, this.pointer, _sel_operatingSystemVersion) + : stret.ref = + _objc_msgSend_486(this.pointer, _sel_operatingSystemVersion); } -} - -abstract class NSOperationQueuePriority { - static const int NSOperationQueuePriorityVeryLow = -8; - static const int NSOperationQueuePriorityLow = -4; - static const int NSOperationQueuePriorityNormal = 0; - static const int NSOperationQueuePriorityHigh = 4; - static const int NSOperationQueuePriorityVeryHigh = 8; -} - -final class dispatch_queue_s extends ffi.Opaque {} - -class NSPointerArray extends NSObject { - NSPointerArray._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSPointerArray] that points to the same underlying object as [other]. - static NSPointerArray castFrom(T other) { - return NSPointerArray._(other._id, other._lib, retain: true, release: true); + int get processorCount { + return _objc_msgSend_29(this.pointer, _sel_processorCount); } - /// Returns a [NSPointerArray] that wraps the given raw object pointer. - static NSPointerArray castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSPointerArray._(other, lib, retain: retain, release: release); + int get activeProcessorCount { + return _objc_msgSend_29(this.pointer, _sel_activeProcessorCount); } - /// Returns whether [obj] is an instance of [NSPointerArray]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSPointerArray1); + int get physicalMemory { + return _objc_msgSend_267(this.pointer, _sel_physicalMemory); } - NSPointerArray initWithOptions_(int options) { - final _ret = - _lib._objc_msgSend_918(_id, _lib._sel_initWithOptions_1, options); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + bool isOperatingSystemAtLeastVersion_(NSOperatingSystemVersion version) { + return _objc_msgSend_487( + this.pointer, _sel_isOperatingSystemAtLeastVersion_, version); } - NSPointerArray initWithPointerFunctions_(NSPointerFunctions functions) { - final _ret = _lib._objc_msgSend_932( - _id, _lib._sel_initWithPointerFunctions_1, functions._id); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + double get systemUptime { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_systemUptime) + : _objc_msgSend_115(this.pointer, _sel_systemUptime); } - static NSPointerArray pointerArrayWithOptions_(AVFAudio _lib, int options) { - final _ret = _lib._objc_msgSend_933(_lib._class_NSPointerArray1, - _lib._sel_pointerArrayWithOptions_1, options); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + void disableSuddenTermination() { + _objc_msgSend_82(this.pointer, _sel_disableSuddenTermination); } - static NSPointerArray pointerArrayWithPointerFunctions_( - AVFAudio _lib, NSPointerFunctions functions) { - final _ret = _lib._objc_msgSend_934(_lib._class_NSPointerArray1, - _lib._sel_pointerArrayWithPointerFunctions_1, functions._id); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + void enableSuddenTermination() { + _objc_msgSend_82(this.pointer, _sel_enableSuddenTermination); } - NSPointerFunctions get pointerFunctions { - final _ret = _lib._objc_msgSend_935(_id, _lib._sel_pointerFunctions1); - return NSPointerFunctions._(_ret, _lib, retain: true, release: true); + void disableAutomaticTermination_(objc.NSString reason) { + _objc_msgSend_98( + this.pointer, _sel_disableAutomaticTermination_, reason.pointer); } - ffi.Pointer pointerAtIndex_(int index) { - return _lib._objc_msgSend_936(_id, _lib._sel_pointerAtIndex_1, index); + void enableAutomaticTermination_(objc.NSString reason) { + _objc_msgSend_98( + this.pointer, _sel_enableAutomaticTermination_, reason.pointer); } - void addPointer_(ffi.Pointer pointer) { - _lib._objc_msgSend_52(_id, _lib._sel_addPointer_1, pointer); + bool get automaticTerminationSupportEnabled { + return _objc_msgSend_7( + this.pointer, _sel_automaticTerminationSupportEnabled); } - void removePointerAtIndex_(int index) { - _lib._objc_msgSend_470(_id, _lib._sel_removePointerAtIndex_1, index); + set automaticTerminationSupportEnabled(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAutomaticTerminationSupportEnabled_, value); } - void insertPointer_atIndex_(ffi.Pointer item, int index) { - _lib._objc_msgSend_22(_id, _lib._sel_insertPointer_atIndex_1, item, index); + objc.NSObject beginActivityWithOptions_reason_( + int options, objc.NSString reason) { + final _ret = _objc_msgSend_488(this.pointer, + _sel_beginActivityWithOptions_reason_, options, reason.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void replacePointerAtIndex_withPointer_( - int index, ffi.Pointer item) { - _lib._objc_msgSend_937( - _id, _lib._sel_replacePointerAtIndex_withPointer_1, index, item); + void endActivity_(objc.NSObject activity) { + _objc_msgSend_49(this.pointer, _sel_endActivity_, activity.pointer); } - void compact() { - _lib._objc_msgSend_1(_id, _lib._sel_compact1); + void performActivityWithOptions_reason_usingBlock_( + int options, objc.NSString reason, ObjCBlock_ffiVoid block) { + _objc_msgSend_489( + this.pointer, + _sel_performActivityWithOptions_reason_usingBlock_, + options, + reason.pointer, + block.pointer); } - int get count { - return _lib._objc_msgSend_10(_id, _lib._sel_count1); + void performExpiringActivityWithReason_usingBlock_( + objc.NSString reason, ObjCBlock_ffiVoid_bool block) { + _objc_msgSend_490( + this.pointer, + _sel_performExpiringActivityWithReason_usingBlock_, + reason.pointer, + block.pointer); } - set count(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setCount_1, value); + objc.NSString get userName { + final _ret = _objc_msgSend_12(this.pointer, _sel_userName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject pointerArrayWithStrongObjects(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPointerArray1, _lib._sel_pointerArrayWithStrongObjects1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSString get fullUserName { + final _ret = _objc_msgSend_12(this.pointer, _sel_fullUserName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject pointerArrayWithWeakObjects(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPointerArray1, _lib._sel_pointerArrayWithWeakObjects1); - return NSObject._(_ret, _lib, retain: true, release: true); + int get thermalState { + return _objc_msgSend_491(this.pointer, _sel_thermalState); } - static NSPointerArray strongObjectsPointerArray(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_938( - _lib._class_NSPointerArray1, _lib._sel_strongObjectsPointerArray1); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + bool get lowPowerModeEnabled { + return _objc_msgSend_7(this.pointer, _sel_isLowPowerModeEnabled); } - static NSPointerArray weakObjectsPointerArray(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_938( - _lib._class_NSPointerArray1, _lib._sel_weakObjectsPointerArray1); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + bool get macCatalystApp { + return _objc_msgSend_7(this.pointer, _sel_isMacCatalystApp); } - NSArray get allObjects { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_allObjects1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool get iOSAppOnMac { + return _objc_msgSend_7(this.pointer, _sel_isiOSAppOnMac); } @override - NSPointerArray init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + NSProcessInfo init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSProcessInfo.castFromPointer(_ret, retain: true, release: true); } - static NSPointerArray new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPointerArray1, _lib._sel_new1); - return NSPointerArray._(_ret, _lib, retain: false, release: true); + static NSProcessInfo new1() { + final _ret = _objc_msgSend_40(_class_NSProcessInfo, _sel_new); + return NSProcessInfo.castFromPointer(_ret, retain: false, release: true); } - static NSPointerArray allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSPointerArray1, _lib._sel_allocWithZone_1, zone); - return NSPointerArray._(_ret, _lib, retain: false, release: true); + static NSProcessInfo allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSProcessInfo, _sel_allocWithZone_, zone); + return NSProcessInfo.castFromPointer(_ret, retain: false, release: true); } - static NSPointerArray alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPointerArray1, _lib._sel_alloc1); - return NSPointerArray._(_ret, _lib, retain: false, release: true); + static NSProcessInfo alloc() { + final _ret = _objc_msgSend_40(_class_NSProcessInfo, _sel_alloc); + return NSProcessInfo.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSPointerArray1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSProcessInfo, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSPointerArray1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSProcessInfo, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSPointerArray1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSProcessInfo, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPointerArray1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSProcessInfo, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSPointerArray1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSProcessInfo, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSPointerArray1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSProcessInfo, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSPointerArray1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSProcessInfo, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSProcessInfo, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSProcessInfo, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSProcessInfo = objc.getClass("NSProcessInfo"); +late final _sel_processInfo = objc.registerName("processInfo"); +final _objc_msgSend_485 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_environment = objc.registerName("environment"); +late final _sel_arguments = objc.registerName("arguments"); +late final _sel_hostName = objc.registerName("hostName"); +late final _sel_processName = objc.registerName("processName"); +late final _sel_setProcessName_ = objc.registerName("setProcessName:"); +late final _sel_processIdentifier = objc.registerName("processIdentifier"); +late final _sel_globallyUniqueString = + objc.registerName("globallyUniqueString"); +late final _sel_operatingSystem = objc.registerName("operatingSystem"); +late final _sel_operatingSystemName = objc.registerName("operatingSystemName"); +late final _sel_operatingSystemVersionString = + objc.registerName("operatingSystemVersionString"); - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSPointerArray1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } +final class NSOperatingSystemVersion extends ffi.Struct { + @ffi.Long() + external int majorVersion; - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPointerArray1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } + @ffi.Long() + external int minorVersion; + + @ffi.Long() + external int patchVersion; } -abstract class NSPointerFunctionsOptions { - static const int NSPointerFunctionsStrongMemory = 0; - static const int NSPointerFunctionsZeroingWeakMemory = 1; - static const int NSPointerFunctionsOpaqueMemory = 2; - static const int NSPointerFunctionsMallocMemory = 3; - static const int NSPointerFunctionsMachVirtualMemory = 4; - static const int NSPointerFunctionsWeakMemory = 5; - static const int NSPointerFunctionsObjectPersonality = 0; - static const int NSPointerFunctionsOpaquePersonality = 256; - static const int NSPointerFunctionsObjectPointerPersonality = 512; - static const int NSPointerFunctionsCStringPersonality = 768; - static const int NSPointerFunctionsStructPersonality = 1024; - static const int NSPointerFunctionsIntegerPersonality = 1280; - static const int NSPointerFunctionsCopyIn = 65536; +late final _sel_operatingSystemVersion = + objc.registerName("operatingSystemVersion"); +final _objc_msgSend_486 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + NSOperatingSystemVersion Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + NSOperatingSystemVersion Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_486Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_processorCount = objc.registerName("processorCount"); +late final _sel_activeProcessorCount = + objc.registerName("activeProcessorCount"); +late final _sel_physicalMemory = objc.registerName("physicalMemory"); +late final _sel_isOperatingSystemAtLeastVersion_ = + objc.registerName("isOperatingSystemAtLeastVersion:"); +final _objc_msgSend_487 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, NSOperatingSystemVersion)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, NSOperatingSystemVersion)>(); +late final _sel_systemUptime = objc.registerName("systemUptime"); +late final _sel_disableSuddenTermination = + objc.registerName("disableSuddenTermination"); +late final _sel_enableSuddenTermination = + objc.registerName("enableSuddenTermination"); +late final _sel_disableAutomaticTermination_ = + objc.registerName("disableAutomaticTermination:"); +late final _sel_enableAutomaticTermination_ = + objc.registerName("enableAutomaticTermination:"); +late final _sel_automaticTerminationSupportEnabled = + objc.registerName("automaticTerminationSupportEnabled"); +late final _sel_setAutomaticTerminationSupportEnabled_ = + objc.registerName("setAutomaticTerminationSupportEnabled:"); + +abstract class NSActivityOptions { + static const int NSActivityIdleDisplaySleepDisabled = 1099511627776; + static const int NSActivityIdleSystemSleepDisabled = 1048576; + static const int NSActivitySuddenTerminationDisabled = 16384; + static const int NSActivityAutomaticTerminationDisabled = 32768; + static const int NSActivityAnimationTrackingEnabled = 35184372088832; + static const int NSActivityTrackingEnabled = 70368744177664; + static const int NSActivityUserInitiated = 16777215; + static const int NSActivityUserInitiatedAllowingIdleSystemSleep = 15728639; + static const int NSActivityBackground = 255; + static const int NSActivityLatencyCritical = 1095216660480; + static const int NSActivityUserInteractive = 1095233437695; } -class NSPointerFunctions extends NSObject { - NSPointerFunctions._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); +late final _sel_beginActivityWithOptions_reason_ = + objc.registerName("beginActivityWithOptions:reason:"); +final _objc_msgSend_488 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_endActivity_ = objc.registerName("endActivity:"); +late final _sel_performActivityWithOptions_reason_usingBlock_ = + objc.registerName("performActivityWithOptions:reason:usingBlock:"); +final _objc_msgSend_489 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_bool_fnPtrTrampoline( + ffi.Pointer block, bool arg0) => + block.ref.target + .cast>() + .asFunction()(arg0); +final _ObjCBlock_ffiVoid_bool_closureRegistry = {}; +int _ObjCBlock_ffiVoid_bool_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_bool_registerClosure( + void Function(bool) fn) { + final id = ++_ObjCBlock_ffiVoid_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - /// Returns a [NSPointerFunctions] that points to the same underlying object as [other]. - static NSPointerFunctions castFrom(T other) { - return NSPointerFunctions._(other._id, other._lib, - retain: true, release: true); - } +void _ObjCBlock_ffiVoid_bool_closureTrampoline( + ffi.Pointer block, bool arg0) => + _ObjCBlock_ffiVoid_bool_closureRegistry[block.ref.target.address]!(arg0); - /// Returns a [NSPointerFunctions] that wraps the given raw object pointer. - static NSPointerFunctions castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSPointerFunctions._(other, lib, retain: retain, release: release); - } +class ObjCBlock_ffiVoid_bool extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_bool._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - /// Returns whether [obj] is an instance of [NSPointerFunctions]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSPointerFunctions1); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_bool._(pointer, retain: retain, release: release); } - NSPointerFunctions initWithOptions_(int options) { - final _ret = - _lib._objc_msgSend_918(_id, _lib._sel_initWithOptions_1, options); - return NSPointerFunctions._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_bool.fromFunctionPointer( + ffi.Pointer> ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Bool)>(_ObjCBlock_ffiVoid_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - static NSPointerFunctions pointerFunctionsWithOptions_( - AVFAudio _lib, int options) { - final _ret = _lib._objc_msgSend_919(_lib._class_NSPointerFunctions1, - _lib._sel_pointerFunctionsWithOptions_1, options); - return NSPointerFunctions._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_bool.fromFunction(void Function(bool) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Bool)>(_ObjCBlock_ffiVoid_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_bool_registerClosure((bool arg0) => fn(arg0)))); + static ffi.Pointer? _dartFuncTrampoline; - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - get hashFunction { - return _lib._objc_msgSend_920(_id, _lib._sel_hashFunction1); - } + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_bool.listener(void Function(bool) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, ffi.Bool)>.listener( + _ObjCBlock_ffiVoid_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_bool_registerClosure((bool arg0) => fn(arg0)))); + static ffi + .NativeCallable, ffi.Bool)>? + _dartFuncListenerTrampoline; - set hashFunction( - ffi.Pointer< + void call(bool arg0) => pointer.ref.invoke + .cast< ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value) { - return _lib._objc_msgSend_921(_id, _lib._sel_setHashFunction_1, value); - } + ffi.Void Function( + ffi.Pointer block, ffi.Bool arg0)>>() + .asFunction, bool)>()( + pointer, arg0); +} + +late final _sel_performExpiringActivityWithReason_usingBlock_ = + objc.registerName("performExpiringActivityWithReason:usingBlock:"); +final _objc_msgSend_490 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_userName = objc.registerName("userName"); +late final _sel_fullUserName = objc.registerName("fullUserName"); - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - get isEqualFunction { - return _lib._objc_msgSend_922(_id, _lib._sel_isEqualFunction1); - } +abstract class NSProcessInfoThermalState { + static const int NSProcessInfoThermalStateNominal = 0; + static const int NSProcessInfoThermalStateFair = 1; + static const int NSProcessInfoThermalStateSerious = 2; + static const int NSProcessInfoThermalStateCritical = 3; +} + +late final _sel_thermalState = objc.registerName("thermalState"); +final _objc_msgSend_491 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isLowPowerModeEnabled = + objc.registerName("isLowPowerModeEnabled"); +late final _sel_isMacCatalystApp = objc.registerName("isMacCatalystApp"); +late final _sel_isiOSAppOnMac = objc.registerName("isiOSAppOnMac"); + +class NSTextCheckingResult extends objc.NSObject { + NSTextCheckingResult._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSTextCheckingResult] that points to the same underlying object as [other]. + NSTextCheckingResult.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSTextCheckingResult] that wraps the given raw object pointer. + NSTextCheckingResult.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - set isEqualFunction( - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value) { - return _lib._objc_msgSend_923(_id, _lib._sel_setIsEqualFunction_1, value); + /// Returns whether [obj] is an instance of [NSTextCheckingResult]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSTextCheckingResult); } - ffi.Pointer< - ffi.NativeFunction)>> - get sizeFunction { - return _lib._objc_msgSend_924(_id, _lib._sel_sizeFunction1); + int get resultType { + return _objc_msgSend_492(this.pointer, _sel_resultType); } - set sizeFunction( - ffi.Pointer< - ffi - .NativeFunction)>> - value) { - return _lib._objc_msgSend_925(_id, _lib._sel_setSizeFunction_1, value); + void getRange(ffi.Pointer<_NSRange> stret) { + objc.useMsgSendVariants + ? _objc_msgSend_493Stret(stret, this.pointer, _sel_range) + : stret.ref = _objc_msgSend_493(this.pointer, _sel_range); } - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>> - get descriptionFunction { - return _lib._objc_msgSend_926(_id, _lib._sel_descriptionFunction1); + NSOrthography? get orthography { + final _ret = _objc_msgSend_494(this.pointer, _sel_orthography); + return _ret.address == 0 + ? null + : NSOrthography.castFromPointer(_ret, retain: true, release: true); } - set descriptionFunction( - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>> - value) { - return _lib._objc_msgSend_927( - _id, _lib._sel_setDescriptionFunction_1, value); + objc.NSArray? get grammarDetails { + final _ret = _objc_msgSend_69(this.pointer, _sel_grammarDetails); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - get relinquishFunction { - return _lib._objc_msgSend_928(_id, _lib._sel_relinquishFunction1); + objc.NSDate? get date { + final _ret = _objc_msgSend_116(this.pointer, _sel_date); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - set relinquishFunction( - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value) { - return _lib._objc_msgSend_929( - _id, _lib._sel_setRelinquishFunction_1, value); + NSTimeZone? get timeZone { + final _ret = _objc_msgSend_132(this.pointer, _sel_timeZone); + return _ret.address == 0 + ? null + : NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>, - ffi.Bool)>> get acquireFunction { - return _lib._objc_msgSend_930(_id, _lib._sel_acquireFunction1); + double get duration { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_duration) + : _objc_msgSend_115(this.pointer, _sel_duration); } - set acquireFunction( - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>, - ffi.Bool)>> - value) { - return _lib._objc_msgSend_931(_id, _lib._sel_setAcquireFunction_1, value); + objc.NSDictionary? get components { + final _ret = _objc_msgSend_65(this.pointer, _sel_components); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - bool get usesStrongWriteBarrier { - return _lib._objc_msgSend_12(_id, _lib._sel_usesStrongWriteBarrier1); + objc.NSURL? get URL { + final _ret = _objc_msgSend_10(this.pointer, _sel_URL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - set usesStrongWriteBarrier(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setUsesStrongWriteBarrier_1, value); + objc.NSString? get replacementString { + final _ret = _objc_msgSend_13(this.pointer, _sel_replacementString); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool get usesWeakReadAndWriteBarriers { - return _lib._objc_msgSend_12(_id, _lib._sel_usesWeakReadAndWriteBarriers1); + objc.NSArray? get alternativeStrings { + final _ret = _objc_msgSend_69(this.pointer, _sel_alternativeStrings); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set usesWeakReadAndWriteBarriers(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setUsesWeakReadAndWriteBarriers_1, value); + NSRegularExpression? get regularExpression { + final _ret = _objc_msgSend_506(this.pointer, _sel_regularExpression); + return _ret.address == 0 + ? null + : NSRegularExpression.castFromPointer(_ret, + retain: true, release: true); } - @override - NSPointerFunctions init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSPointerFunctions._(_ret, _lib, retain: true, release: true); + objc.NSString? get phoneNumber { + final _ret = _objc_msgSend_13(this.pointer, _sel_phoneNumber); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSPointerFunctions new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPointerFunctions1, _lib._sel_new1); - return NSPointerFunctions._(_ret, _lib, retain: false, release: true); + int get numberOfRanges { + return _objc_msgSend_29(this.pointer, _sel_numberOfRanges); } - static NSPointerFunctions allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSPointerFunctions1, _lib._sel_allocWithZone_1, zone); - return NSPointerFunctions._(_ret, _lib, retain: false, release: true); + void rangeAtIndex_(ffi.Pointer<_NSRange> stret, int idx) { + objc.useMsgSendVariants + ? _objc_msgSend_507Stret(stret, this.pointer, _sel_rangeAtIndex_, idx) + : stret.ref = _objc_msgSend_507(this.pointer, _sel_rangeAtIndex_, idx); } - static NSPointerFunctions alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPointerFunctions1, _lib._sel_alloc1); - return NSPointerFunctions._(_ret, _lib, retain: false, release: true); + void rangeWithName_(ffi.Pointer<_NSRange> stret, objc.NSString name) { + objc.useMsgSendVariants + ? _objc_msgSend_508Stret( + stret, this.pointer, _sel_rangeWithName_, name.pointer) + : stret.ref = + _objc_msgSend_508(this.pointer, _sel_rangeWithName_, name.pointer); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSPointerFunctions1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + NSTextCheckingResult resultByAdjustingRangesWithOffset_(int offset) { + final _ret = _objc_msgSend_509( + this.pointer, _sel_resultByAdjustingRangesWithOffset_, offset); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSPointerFunctions1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + objc.NSDictionary? get addressComponents { + final _ret = _objc_msgSend_65(this.pointer, _sel_addressComponents); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSPointerFunctions1, - _lib._sel_accessInstanceVariablesDirectly1); + static NSTextCheckingResult orthographyCheckingResultWithRange_orthography_( + _NSRange range, NSOrthography orthography) { + final _ret = _objc_msgSend_510( + _class_NSTextCheckingResult, + _sel_orthographyCheckingResultWithRange_orthography_, + range, + orthography.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPointerFunctions1, _lib._sel_useStoredAccessor1); + static NSTextCheckingResult spellCheckingResultWithRange_(_NSRange range) { + final _ret = _objc_msgSend_511( + _class_NSTextCheckingResult, _sel_spellCheckingResultWithRange_, range); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSPointerFunctions1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult grammarCheckingResultWithRange_details_( + _NSRange range, objc.NSArray details) { + final _ret = _objc_msgSend_512(_class_NSTextCheckingResult, + _sel_grammarCheckingResultWithRange_details_, range, details.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSPointerFunctions1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static NSTextCheckingResult dateCheckingResultWithRange_date_( + _NSRange range, objc.NSDate date) { + final _ret = _objc_msgSend_513(_class_NSTextCheckingResult, + _sel_dateCheckingResultWithRange_date_, range, date.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSPointerFunctions1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static NSTextCheckingResult + dateCheckingResultWithRange_date_timeZone_duration_(_NSRange range, + objc.NSDate date, NSTimeZone timeZone, double duration) { + final _ret = _objc_msgSend_514( + _class_NSTextCheckingResult, + _sel_dateCheckingResultWithRange_date_timeZone_duration_, + range, + date.pointer, + timeZone.pointer, + duration); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSPointerFunctions1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult addressCheckingResultWithRange_components_( + _NSRange range, objc.NSDictionary components) { + final _ret = _objc_msgSend_515( + _class_NSTextCheckingResult, + _sel_addressCheckingResultWithRange_components_, + range, + components.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPointerFunctions1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult linkCheckingResultWithRange_URL_( + _NSRange range, objc.NSURL url) { + final _ret = _objc_msgSend_516(_class_NSTextCheckingResult, + _sel_linkCheckingResultWithRange_URL_, range, url.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } -} - -class NSProcessInfo extends NSObject { - NSProcessInfo._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSProcessInfo] that points to the same underlying object as [other]. - static NSProcessInfo castFrom(T other) { - return NSProcessInfo._(other._id, other._lib, retain: true, release: true); + static NSTextCheckingResult quoteCheckingResultWithRange_replacementString_( + _NSRange range, objc.NSString replacementString) { + final _ret = _objc_msgSend_517( + _class_NSTextCheckingResult, + _sel_quoteCheckingResultWithRange_replacementString_, + range, + replacementString.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - /// Returns a [NSProcessInfo] that wraps the given raw object pointer. - static NSProcessInfo castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSProcessInfo._(other, lib, retain: retain, release: release); + static NSTextCheckingResult dashCheckingResultWithRange_replacementString_( + _NSRange range, objc.NSString replacementString) { + final _ret = _objc_msgSend_517( + _class_NSTextCheckingResult, + _sel_dashCheckingResultWithRange_replacementString_, + range, + replacementString.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSProcessInfo]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSProcessInfo1); + static NSTextCheckingResult + replacementCheckingResultWithRange_replacementString_( + _NSRange range, objc.NSString replacementString) { + final _ret = _objc_msgSend_517( + _class_NSTextCheckingResult, + _sel_replacementCheckingResultWithRange_replacementString_, + range, + replacementString.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - static NSProcessInfo getProcessInfo(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_939( - _lib._class_NSProcessInfo1, _lib._sel_processInfo1); - return NSProcessInfo._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult + correctionCheckingResultWithRange_replacementString_( + _NSRange range, objc.NSString replacementString) { + final _ret = _objc_msgSend_517( + _class_NSTextCheckingResult, + _sel_correctionCheckingResultWithRange_replacementString_, + range, + replacementString.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - NSDictionary get environment { - final _ret = _lib._objc_msgSend_181(_id, _lib._sel_environment1); - return NSDictionary._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult + correctionCheckingResultWithRange_replacementString_alternativeStrings_( + _NSRange range, + objc.NSString replacementString, + objc.NSArray alternativeStrings) { + final _ret = _objc_msgSend_518( + _class_NSTextCheckingResult, + _sel_correctionCheckingResultWithRange_replacementString_alternativeStrings_, + range, + replacementString.pointer, + alternativeStrings.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - NSArray get arguments { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_arguments1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult + regularExpressionCheckingResultWithRanges_count_regularExpression_( + ffi.Pointer<_NSRange> ranges, + int count, + NSRegularExpression regularExpression) { + final _ret = _objc_msgSend_519( + _class_NSTextCheckingResult, + _sel_regularExpressionCheckingResultWithRanges_count_regularExpression_, + ranges, + count, + regularExpression.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - NSString get hostName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_hostName1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult phoneNumberCheckingResultWithRange_phoneNumber_( + _NSRange range, objc.NSString phoneNumber) { + final _ret = _objc_msgSend_517( + _class_NSTextCheckingResult, + _sel_phoneNumberCheckingResultWithRange_phoneNumber_, + range, + phoneNumber.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - NSString get processName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_processName1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult + transitInformationCheckingResultWithRange_components_( + _NSRange range, objc.NSDictionary components) { + final _ret = _objc_msgSend_515( + _class_NSTextCheckingResult, + _sel_transitInformationCheckingResultWithRange_components_, + range, + components.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - set processName(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setProcessName_1, value._id); + @override + NSTextCheckingResult init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - int get processIdentifier { - return _lib._objc_msgSend_237(_id, _lib._sel_processIdentifier1); + static NSTextCheckingResult new1() { + final _ret = _objc_msgSend_40(_class_NSTextCheckingResult, _sel_new); + return NSTextCheckingResult.castFromPointer(_ret, + retain: false, release: true); } - NSString get globallyUniqueString { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_globallyUniqueString1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSTextCheckingResult, _sel_allocWithZone_, zone); + return NSTextCheckingResult.castFromPointer(_ret, + retain: false, release: true); } - int operatingSystem() { - return _lib._objc_msgSend_10(_id, _lib._sel_operatingSystem1); + static NSTextCheckingResult alloc() { + final _ret = _objc_msgSend_40(_class_NSTextCheckingResult, _sel_alloc); + return NSTextCheckingResult.castFromPointer(_ret, + retain: false, release: true); } - NSString operatingSystemName() { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_operatingSystemName1); - return NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSTextCheckingResult, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSString get operatingSystemVersionString { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_operatingSystemVersionString1); - return NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSTextCheckingResult, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - void getOperatingSystemVersion(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_940_stret( - stret, _id, _lib._sel_operatingSystemVersion1) - : stret.ref = - _lib._objc_msgSend_940(_id, _lib._sel_operatingSystemVersion1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSTextCheckingResult, _sel_accessInstanceVariablesDirectly); } - int get processorCount { - return _lib._objc_msgSend_10(_id, _lib._sel_processorCount1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSTextCheckingResult, _sel_useStoredAccessor); } - int get activeProcessorCount { - return _lib._objc_msgSend_10(_id, _lib._sel_activeProcessorCount1); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSTextCheckingResult, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - int get physicalMemory { - return _lib._objc_msgSend_164(_id, _lib._sel_physicalMemory1); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSTextCheckingResult, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - bool isOperatingSystemAtLeastVersion_(NSOperatingSystemVersion version) { - return _lib._objc_msgSend_941( - _id, _lib._sel_isOperatingSystemAtLeastVersion_1, version); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSTextCheckingResult, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - double get systemUptime { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_systemUptime1) - : _lib._objc_msgSend_165(_id, _lib._sel_systemUptime1); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSTextCheckingResult, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void disableSuddenTermination() { - _lib._objc_msgSend_1(_id, _lib._sel_disableSuddenTermination1); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSTextCheckingResult, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - void enableSuddenTermination() { - _lib._objc_msgSend_1(_id, _lib._sel_enableSuddenTermination1); +late final _class_NSTextCheckingResult = objc.getClass("NSTextCheckingResult"); + +abstract class NSTextCheckingType { + static const int NSTextCheckingTypeOrthography = 1; + static const int NSTextCheckingTypeSpelling = 2; + static const int NSTextCheckingTypeGrammar = 4; + static const int NSTextCheckingTypeDate = 8; + static const int NSTextCheckingTypeAddress = 16; + static const int NSTextCheckingTypeLink = 32; + static const int NSTextCheckingTypeQuote = 64; + static const int NSTextCheckingTypeDash = 128; + static const int NSTextCheckingTypeReplacement = 256; + static const int NSTextCheckingTypeCorrection = 512; + static const int NSTextCheckingTypeRegularExpression = 1024; + static const int NSTextCheckingTypePhoneNumber = 2048; + static const int NSTextCheckingTypeTransitInformation = 4096; +} + +late final _sel_resultType = objc.registerName("resultType"); +final _objc_msgSend_492 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_range = objc.registerName("range"); +final _objc_msgSend_493 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + _NSRange Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_493Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer)>(); +late final _sel_orthography = objc.registerName("orthography"); +final _objc_msgSend_494 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_grammarDetails = objc.registerName("grammarDetails"); +late final _sel_duration = objc.registerName("duration"); +late final _sel_components = objc.registerName("components"); +late final _sel_replacementString = objc.registerName("replacementString"); +late final _sel_alternativeStrings = objc.registerName("alternativeStrings"); + +class NSRegularExpression extends objc.NSObject { + NSRegularExpression._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSRegularExpression] that points to the same underlying object as [other]. + NSRegularExpression.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSRegularExpression] that wraps the given raw object pointer. + NSRegularExpression.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSRegularExpression]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSRegularExpression); } - void disableAutomaticTermination_(NSString reason) { - _lib._objc_msgSend_247( - _id, _lib._sel_disableAutomaticTermination_1, reason._id); + static NSRegularExpression? regularExpressionWithPattern_options_error_( + objc.NSString pattern, + int options, + ffi.Pointer> error) { + final _ret = _objc_msgSend_495( + _class_NSRegularExpression, + _sel_regularExpressionWithPattern_options_error_, + pattern.pointer, + options, + error); + return _ret.address == 0 + ? null + : NSRegularExpression.castFromPointer(_ret, + retain: true, release: true); } - void enableAutomaticTermination_(NSString reason) { - _lib._objc_msgSend_247( - _id, _lib._sel_enableAutomaticTermination_1, reason._id); + NSRegularExpression? initWithPattern_options_error_(objc.NSString pattern, + int options, ffi.Pointer> error) { + final _ret = _objc_msgSend_496(this.pointer, + _sel_initWithPattern_options_error_, pattern.pointer, options, error); + return _ret.address == 0 + ? null + : NSRegularExpression.castFromPointer(_ret, + retain: true, release: true); } - bool get automaticTerminationSupportEnabled { - return _lib._objc_msgSend_12( - _id, _lib._sel_automaticTerminationSupportEnabled1); + objc.NSString get pattern { + final _ret = _objc_msgSend_12(this.pointer, _sel_pattern); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set automaticTerminationSupportEnabled(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAutomaticTerminationSupportEnabled_1, value); + int get options { + return _objc_msgSend_497(this.pointer, _sel_options); } - NSObject beginActivityWithOptions_reason_(int options, NSString reason) { - final _ret = _lib._objc_msgSend_942( - _id, _lib._sel_beginActivityWithOptions_reason_1, options, reason._id); - return NSObject._(_ret, _lib, retain: true, release: true); + int get numberOfCaptureGroups { + return _objc_msgSend_29(this.pointer, _sel_numberOfCaptureGroups); } - void endActivity_(NSObject activity) { - _lib._objc_msgSend_15(_id, _lib._sel_endActivity_1, activity._id); + static objc.NSString escapedPatternForString_(objc.NSString string) { + final _ret = _objc_msgSend_297(_class_NSRegularExpression, + _sel_escapedPatternForString_, string.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void performActivityWithOptions_reason_usingBlock_( - int options, NSString reason, ObjCBlock_ffiVoid block) { - _lib._objc_msgSend_943( - _id, - _lib._sel_performActivityWithOptions_reason_usingBlock_1, + void enumerateMatchesInString_options_range_usingBlock_( + objc.NSString string, + int options, + _NSRange range, + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool block) { + _objc_msgSend_498( + this.pointer, + _sel_enumerateMatchesInString_options_range_usingBlock_, + string.pointer, options, - reason._id, - block._id); + range, + block.pointer); } - void performExpiringActivityWithReason_usingBlock_( - NSString reason, ObjCBlock_ffiVoid_bool block) { - _lib._objc_msgSend_944( - _id, - _lib._sel_performExpiringActivityWithReason_usingBlock_1, - reason._id, - block._id); + objc.NSArray matchesInString_options_range_( + objc.NSString string, int options, _NSRange range) { + final _ret = _objc_msgSend_499(this.pointer, + _sel_matchesInString_options_range_, string.pointer, options, range); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString get userName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_userName1); - return NSString._(_ret, _lib, retain: true, release: true); + int numberOfMatchesInString_options_range_( + objc.NSString string, int options, _NSRange range) { + return _objc_msgSend_500( + this.pointer, + _sel_numberOfMatchesInString_options_range_, + string.pointer, + options, + range); } - NSString get fullUserName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_fullUserName1); - return NSString._(_ret, _lib, retain: true, release: true); + NSTextCheckingResult? firstMatchInString_options_range_( + objc.NSString string, int options, _NSRange range) { + final _ret = _objc_msgSend_501(this.pointer, + _sel_firstMatchInString_options_range_, string.pointer, options, range); + return _ret.address == 0 + ? null + : NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - int get thermalState { - return _lib._objc_msgSend_945(_id, _lib._sel_thermalState1); + void rangeOfFirstMatchInString_options_range_(ffi.Pointer<_NSRange> stret, + objc.NSString string, int options, _NSRange range) { + objc.useMsgSendVariants + ? _objc_msgSend_502Stret( + stret, + this.pointer, + _sel_rangeOfFirstMatchInString_options_range_, + string.pointer, + options, + range) + : stret.ref = _objc_msgSend_502( + this.pointer, + _sel_rangeOfFirstMatchInString_options_range_, + string.pointer, + options, + range); } - bool get lowPowerModeEnabled { - return _lib._objc_msgSend_12(_id, _lib._sel_isLowPowerModeEnabled1); + objc.NSString stringByReplacingMatchesInString_options_range_withTemplate_( + objc.NSString string, int options, _NSRange range, objc.NSString templ) { + final _ret = _objc_msgSend_503( + this.pointer, + _sel_stringByReplacingMatchesInString_options_range_withTemplate_, + string.pointer, + options, + range, + templ.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool get macCatalystApp { - return _lib._objc_msgSend_12(_id, _lib._sel_isMacCatalystApp1); + int replaceMatchesInString_options_range_withTemplate_( + objc.NSMutableString string, + int options, + _NSRange range, + objc.NSString templ) { + return _objc_msgSend_504( + this.pointer, + _sel_replaceMatchesInString_options_range_withTemplate_, + string.pointer, + options, + range, + templ.pointer); + } + + objc.NSString replacementStringForResult_inString_offset_template_( + NSTextCheckingResult result, + objc.NSString string, + int offset, + objc.NSString templ) { + final _ret = _objc_msgSend_505( + this.pointer, + _sel_replacementStringForResult_inString_offset_template_, + result.pointer, + string.pointer, + offset, + templ.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool get iOSAppOnMac { - return _lib._objc_msgSend_12(_id, _lib._sel_isiOSAppOnMac1); + static objc.NSString escapedTemplateForString_(objc.NSString string) { + final _ret = _objc_msgSend_297(_class_NSRegularExpression, + _sel_escapedTemplateForString_, string.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } @override - NSProcessInfo init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSProcessInfo._(_ret, _lib, retain: true, release: true); + NSRegularExpression init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSRegularExpression.castFromPointer(_ret, + retain: true, release: true); } - static NSProcessInfo new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSProcessInfo1, _lib._sel_new1); - return NSProcessInfo._(_ret, _lib, retain: false, release: true); + static NSRegularExpression new1() { + final _ret = _objc_msgSend_40(_class_NSRegularExpression, _sel_new); + return NSRegularExpression.castFromPointer(_ret, + retain: false, release: true); } - static NSProcessInfo allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSProcessInfo1, _lib._sel_allocWithZone_1, zone); - return NSProcessInfo._(_ret, _lib, retain: false, release: true); + static NSRegularExpression allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSRegularExpression, _sel_allocWithZone_, zone); + return NSRegularExpression.castFromPointer(_ret, + retain: false, release: true); } - static NSProcessInfo alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSProcessInfo1, _lib._sel_alloc1); - return NSProcessInfo._(_ret, _lib, retain: false, release: true); + static NSRegularExpression alloc() { + final _ret = _objc_msgSend_40(_class_NSRegularExpression, _sel_alloc); + return NSRegularExpression.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSProcessInfo1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSRegularExpression, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSProcessInfo1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSRegularExpression, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSProcessInfo1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSRegularExpression, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSProcessInfo1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSRegularExpression, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSProcessInfo1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSRegularExpression, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSProcessInfo1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSRegularExpression, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSProcessInfo1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSRegularExpression, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSProcessInfo1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSRegularExpression, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSProcessInfo1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSRegularExpression, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -final class NSOperatingSystemVersion extends ffi.Struct { - @ffi.Long() - external int majorVersion; - - @ffi.Long() - external int minorVersion; +late final _class_NSRegularExpression = objc.getClass("NSRegularExpression"); - @ffi.Long() - external int patchVersion; +abstract class NSRegularExpressionOptions { + static const int NSRegularExpressionCaseInsensitive = 1; + static const int NSRegularExpressionAllowCommentsAndWhitespace = 2; + static const int NSRegularExpressionIgnoreMetacharacters = 4; + static const int NSRegularExpressionDotMatchesLineSeparators = 8; + static const int NSRegularExpressionAnchorsMatchLines = 16; + static const int NSRegularExpressionUseUnixLineSeparators = 32; + static const int NSRegularExpressionUseUnicodeWordBoundaries = 64; } -abstract class NSActivityOptions { - static const int NSActivityIdleDisplaySleepDisabled = 1099511627776; - static const int NSActivityIdleSystemSleepDisabled = 1048576; - static const int NSActivitySuddenTerminationDisabled = 16384; - static const int NSActivityAutomaticTerminationDisabled = 32768; - static const int NSActivityAnimationTrackingEnabled = 35184372088832; - static const int NSActivityTrackingEnabled = 70368744177664; - static const int NSActivityUserInitiated = 16777215; - static const int NSActivityUserInitiatedAllowingIdleSystemSleep = 15728639; - static const int NSActivityBackground = 255; - static const int NSActivityLatencyCritical = 1095216660480; - static const int NSActivityUserInteractive = 1095233437695; +late final _sel_regularExpressionWithPattern_options_error_ = + objc.registerName("regularExpressionWithPattern:options:error:"); +final _objc_msgSend_495 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_initWithPattern_options_error_ = + objc.registerName("initWithPattern:options:error:"); +final _objc_msgSend_496 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_pattern = objc.registerName("pattern"); +late final _sel_options = objc.registerName("options"); +final _objc_msgSend_497 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_numberOfCaptureGroups = + objc.registerName("numberOfCaptureGroups"); +late final _sel_escapedPatternForString_ = + objc.registerName("escapedPatternForString:"); + +abstract class NSMatchingOptions { + static const int NSMatchingReportProgress = 1; + static const int NSMatchingReportCompletion = 2; + static const int NSMatchingAnchored = 4; + static const int NSMatchingWithTransparentBounds = 8; + static const int NSMatchingWithoutAnchoringBounds = 16; } -void _ObjCBlock_ffiVoid_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, bool arg0) => - block.ref.target - .cast>() - .asFunction()(arg0); -final _ObjCBlock_ffiVoid_bool_closureRegistry = {}; -int _ObjCBlock_ffiVoid_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_bool_registerClosure( - void Function(bool) fn) { - final id = ++_ObjCBlock_ffiVoid_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_bool_closureRegistry[id] = fn; +void + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Int32 arg1, ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer, int, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry = + , int, ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( + void Function(ffi.Pointer, int, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry[ + id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, bool arg0) => - _ObjCBlock_ffiVoid_bool_closureRegistry[block.ref.target.address]!(arg0); +void _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); -class ObjCBlock_ffiVoid_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_bool._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); +class ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool + extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_bool castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_bool._(pointer, lib, - retain: retain, release: release); + static ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool + castFromPointer(ffi.Pointer pointer, + {bool retain = false, bool release = false}) { + return ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool._( + pointer, + retain: retain, + release: release); } /// Creates a block from a C function pointer. @@ -66385,16 +22986,22 @@ class ObjCBlock_ffiVoid_bool extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_bool.fromFunctionPointer(AVFAudio lib, - ffi.Pointer> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Bool)>(_ObjCBlock_ffiVoid_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Int32 arg1, ffi.Pointer arg2)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -66402,17 +23009,21 @@ class ObjCBlock_ffiVoid_bool extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_bool.fromFunction(AVFAudio lib, void Function(bool) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, ffi.Bool)>( - _ObjCBlock_ffiVoid_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_bool_registerClosure( - (bool arg0) => fn(arg0))), - lib); + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.fromFunction( + void Function(NSTextCheckingResult?, int, ffi.Pointer) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( + (ffi.Pointer arg0, int arg1, + ffi.Pointer arg2) => + fn(arg0.address == 0 ? null : NSTextCheckingResult.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -66424,770 +23035,1610 @@ class ObjCBlock_ffiVoid_bool extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_bool.listener(AVFAudio lib, void Function(bool) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, ffi.Bool)>.listener( - _ObjCBlock_ffiVoid_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_bool_registerClosure( - (bool arg0) => fn(arg0))), - lib); - static ffi - .NativeCallable, ffi.Bool)>? - _dartFuncListenerTrampoline; + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.listener( + void Function(NSTextCheckingResult?, int, ffi.Pointer) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( + (ffi.Pointer arg0, int arg1, ffi.Pointer arg2) => + fn(arg0.address == 0 ? null : NSTextCheckingResult.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>? _dartFuncListenerTrampoline; - void call(bool arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, ffi.Bool arg0)>>() - .asFunction, bool)>()(_id, arg0); + void call(NSTextCheckingResult? arg0, int arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Int32 arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1, arg2); } -abstract class NSProcessInfoThermalState { - static const int NSProcessInfoThermalStateNominal = 0; - static const int NSProcessInfoThermalStateFair = 1; - static const int NSProcessInfoThermalStateSerious = 2; - static const int NSProcessInfoThermalStateCritical = 3; +abstract class NSMatchingFlags { + static const int NSMatchingProgress = 1; + static const int NSMatchingCompleted = 2; + static const int NSMatchingHitEnd = 4; + static const int NSMatchingRequiredEnd = 8; + static const int NSMatchingInternalError = 16; } -class NSTextCheckingResult extends NSObject { - NSTextCheckingResult._(ffi.Pointer id, AVFAudio lib, +late final _sel_enumerateMatchesInString_options_range_usingBlock_ = + objc.registerName("enumerateMatchesInString:options:range:usingBlock:"); +final _objc_msgSend_498 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange, + ffi.Pointer)>(); +late final _sel_matchesInString_options_range_ = + objc.registerName("matchesInString:options:range:"); +final _objc_msgSend_499 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +late final _sel_numberOfMatchesInString_options_range_ = + objc.registerName("numberOfMatchesInString:options:range:"); +final _objc_msgSend_500 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +late final _sel_firstMatchInString_options_range_ = + objc.registerName("firstMatchInString:options:range:"); +final _objc_msgSend_501 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +late final _sel_rangeOfFirstMatchInString_options_range_ = + objc.registerName("rangeOfFirstMatchInString:options:range:"); +final _objc_msgSend_502 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +final _objc_msgSend_502Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +late final _sel_stringByReplacingMatchesInString_options_range_withTemplate_ = + objc.registerName( + "stringByReplacingMatchesInString:options:range:withTemplate:"); +final _objc_msgSend_503 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange, + ffi.Pointer)>(); +late final _sel_replaceMatchesInString_options_range_withTemplate_ = + objc.registerName("replaceMatchesInString:options:range:withTemplate:"); +final _objc_msgSend_504 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange, + ffi.Pointer)>(); +late final _sel_replacementStringForResult_inString_offset_template_ = + objc.registerName("replacementStringForResult:inString:offset:template:"); +final _objc_msgSend_505 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_escapedTemplateForString_ = + objc.registerName("escapedTemplateForString:"); +late final _sel_regularExpression = objc.registerName("regularExpression"); +final _objc_msgSend_506 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_phoneNumber = objc.registerName("phoneNumber"); +late final _sel_numberOfRanges = objc.registerName("numberOfRanges"); +late final _sel_rangeAtIndex_ = objc.registerName("rangeAtIndex:"); +final _objc_msgSend_507 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, int)>(); +final _objc_msgSend_507Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_rangeWithName_ = objc.registerName("rangeWithName:"); +final _objc_msgSend_508 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_508Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_resultByAdjustingRangesWithOffset_ = + objc.registerName("resultByAdjustingRangesWithOffset:"); +final _objc_msgSend_509 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_addressComponents = objc.registerName("addressComponents"); +late final _sel_orthographyCheckingResultWithRange_orthography_ = + objc.registerName("orthographyCheckingResultWithRange:orthography:"); +final _objc_msgSend_510 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_spellCheckingResultWithRange_ = + objc.registerName("spellCheckingResultWithRange:"); +final _objc_msgSend_511 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_grammarCheckingResultWithRange_details_ = + objc.registerName("grammarCheckingResultWithRange:details:"); +final _objc_msgSend_512 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_dateCheckingResultWithRange_date_ = + objc.registerName("dateCheckingResultWithRange:date:"); +final _objc_msgSend_513 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_dateCheckingResultWithRange_date_timeZone_duration_ = + objc.registerName("dateCheckingResultWithRange:date:timeZone:duration:"); +final _objc_msgSend_514 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Pointer, + ffi.Double)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Pointer, + double)>(); +late final _sel_addressCheckingResultWithRange_components_ = + objc.registerName("addressCheckingResultWithRange:components:"); +final _objc_msgSend_515 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_linkCheckingResultWithRange_URL_ = + objc.registerName("linkCheckingResultWithRange:URL:"); +final _objc_msgSend_516 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_quoteCheckingResultWithRange_replacementString_ = + objc.registerName("quoteCheckingResultWithRange:replacementString:"); +final _objc_msgSend_517 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_dashCheckingResultWithRange_replacementString_ = + objc.registerName("dashCheckingResultWithRange:replacementString:"); +late final _sel_replacementCheckingResultWithRange_replacementString_ = + objc.registerName("replacementCheckingResultWithRange:replacementString:"); +late final _sel_correctionCheckingResultWithRange_replacementString_ = + objc.registerName("correctionCheckingResultWithRange:replacementString:"); +late final _sel_correctionCheckingResultWithRange_replacementString_alternativeStrings_ = + objc.registerName( + "correctionCheckingResultWithRange:replacementString:alternativeStrings:"); +final _objc_msgSend_518 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_regularExpressionCheckingResultWithRanges_count_regularExpression_ = + objc.registerName( + "regularExpressionCheckingResultWithRanges:count:regularExpression:"); +final _objc_msgSend_519 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_NSRange>, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_NSRange>, + int, + ffi.Pointer)>(); +late final _sel_phoneNumberCheckingResultWithRange_phoneNumber_ = + objc.registerName("phoneNumberCheckingResultWithRange:phoneNumber:"); +late final _sel_transitInformationCheckingResultWithRange_components_ = + objc.registerName("transitInformationCheckingResultWithRange:components:"); + +class NSURLCache extends objc.NSObject { + NSURLCache._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSTextCheckingResult] that points to the same underlying object as [other]. - static NSTextCheckingResult castFrom(T other) { - return NSTextCheckingResult._(other._id, other._lib, - retain: true, release: true); - } + /// Constructs a [NSURLCache] that points to the same underlying object as [other]. + NSURLCache.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSTextCheckingResult] that wraps the given raw object pointer. - static NSTextCheckingResult castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSTextCheckingResult._(other, lib, retain: retain, release: release); + /// Constructs a [NSURLCache] that wraps the given raw object pointer. + NSURLCache.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLCache]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSURLCache); } - /// Returns whether [obj] is an instance of [NSTextCheckingResult]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSTextCheckingResult1); + static NSURLCache getSharedURLCache() { + final _ret = _objc_msgSend_520(_class_NSURLCache, _sel_sharedURLCache); + return NSURLCache.castFromPointer(_ret, retain: true, release: true); } - int get resultType { - return _lib._objc_msgSend_946(_id, _lib._sel_resultType1); + static void setSharedURLCache(NSURLCache value) { + return _objc_msgSend_521( + _class_NSURLCache, _sel_setSharedURLCache_, value.pointer); } - void getRange(ffi.Pointer<_NSRange> stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_54_stret(stret, _id, _lib._sel_range1) - : stret.ref = _lib._objc_msgSend_54(_id, _lib._sel_range1); + NSURLCache initWithMemoryCapacity_diskCapacity_diskPath_( + int memoryCapacity, int diskCapacity, objc.NSString? path) { + final _ret = _objc_msgSend_522( + this.pointer, + _sel_initWithMemoryCapacity_diskCapacity_diskPath_, + memoryCapacity, + diskCapacity, + path?.pointer ?? ffi.nullptr); + return NSURLCache.castFromPointer(_ret, retain: true, release: true); } - NSOrthography? get orthography { - final _ret = _lib._objc_msgSend_947(_id, _lib._sel_orthography1); - return _ret.address == 0 - ? null - : NSOrthography._(_ret, _lib, retain: true, release: true); + NSURLCache initWithMemoryCapacity_diskCapacity_directoryURL_( + int memoryCapacity, int diskCapacity, objc.NSURL? directoryURL) { + final _ret = _objc_msgSend_523( + this.pointer, + _sel_initWithMemoryCapacity_diskCapacity_directoryURL_, + memoryCapacity, + diskCapacity, + directoryURL?.pointer ?? ffi.nullptr); + return NSURLCache.castFromPointer(_ret, retain: true, release: true); } - NSArray? get grammarDetails { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_grammarDetails1); + NSCachedURLResponse? cachedResponseForRequest_(NSURLRequest request) { + final _ret = _objc_msgSend_528( + this.pointer, _sel_cachedResponseForRequest_, request.pointer); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : NSCachedURLResponse.castFromPointer(_ret, + retain: true, release: true); } - NSDate? get date { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_date1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + void storeCachedResponse_forRequest_( + NSCachedURLResponse cachedResponse, NSURLRequest request) { + _objc_msgSend_529(this.pointer, _sel_storeCachedResponse_forRequest_, + cachedResponse.pointer, request.pointer); } - NSTimeZone? get timeZone { - final _ret = _lib._objc_msgSend_773(_id, _lib._sel_timeZone1); - return _ret.address == 0 - ? null - : NSTimeZone._(_ret, _lib, retain: true, release: true); + void removeCachedResponseForRequest_(NSURLRequest request) { + _objc_msgSend_530( + this.pointer, _sel_removeCachedResponseForRequest_, request.pointer); } - double get duration { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_duration1) - : _lib._objc_msgSend_165(_id, _lib._sel_duration1); + void removeAllCachedResponses() { + _objc_msgSend_82(this.pointer, _sel_removeAllCachedResponses); } - NSDictionary? get components { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_components1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + void removeCachedResponsesSinceDate_(objc.NSDate date) { + _objc_msgSend_246( + this.pointer, _sel_removeCachedResponsesSinceDate_, date.pointer); } - NSURL? get URL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_URL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + int get memoryCapacity { + return _objc_msgSend_29(this.pointer, _sel_memoryCapacity); } - NSString? get replacementString { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_replacementString1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + set memoryCapacity(int value) { + return _objc_msgSend_125(this.pointer, _sel_setMemoryCapacity_, value); } - NSArray? get alternativeStrings { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_alternativeStrings1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + int get diskCapacity { + return _objc_msgSend_29(this.pointer, _sel_diskCapacity); } - NSRegularExpression? get regularExpression { - final _ret = _lib._objc_msgSend_959(_id, _lib._sel_regularExpression1); - return _ret.address == 0 - ? null - : NSRegularExpression._(_ret, _lib, retain: true, release: true); + set diskCapacity(int value) { + return _objc_msgSend_125(this.pointer, _sel_setDiskCapacity_, value); } - NSString? get phoneNumber { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_phoneNumber1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + int get currentMemoryUsage { + return _objc_msgSend_29(this.pointer, _sel_currentMemoryUsage); } - int get numberOfRanges { - return _lib._objc_msgSend_10(_id, _lib._sel_numberOfRanges1); + int get currentDiskUsage { + return _objc_msgSend_29(this.pointer, _sel_currentDiskUsage); } - void rangeAtIndex_(ffi.Pointer<_NSRange> stret, int idx) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_347_stret( - stret, _id, _lib._sel_rangeAtIndex_1, idx) - : stret.ref = - _lib._objc_msgSend_347(_id, _lib._sel_rangeAtIndex_1, idx); + void storeCachedResponse_forDataTask_( + NSCachedURLResponse cachedResponse, NSURLSessionDataTask dataTask) { + _objc_msgSend_531(this.pointer, _sel_storeCachedResponse_forDataTask_, + cachedResponse.pointer, dataTask.pointer); } - void rangeWithName_(ffi.Pointer<_NSRange> stret, NSString name) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_340_stret( - stret, _id, _lib._sel_rangeWithName_1, name._id) - : stret.ref = - _lib._objc_msgSend_340(_id, _lib._sel_rangeWithName_1, name._id); + void getCachedResponseForDataTask_completionHandler_( + NSURLSessionDataTask dataTask, + ObjCBlock_ffiVoid_NSCachedURLResponse completionHandler) { + _objc_msgSend_532( + this.pointer, + _sel_getCachedResponseForDataTask_completionHandler_, + dataTask.pointer, + completionHandler.pointer); } - NSTextCheckingResult resultByAdjustingRangesWithOffset_(int offset) { - final _ret = _lib._objc_msgSend_960( - _id, _lib._sel_resultByAdjustingRangesWithOffset_1, offset); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + void removeCachedResponseForDataTask_(NSURLSessionDataTask dataTask) { + _objc_msgSend_533( + this.pointer, _sel_removeCachedResponseForDataTask_, dataTask.pointer); } - NSDictionary? get addressComponents { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_addressComponents1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + @override + NSURLCache init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLCache.castFromPointer(_ret, retain: true, release: true); } - static NSTextCheckingResult orthographyCheckingResultWithRange_orthography_( - AVFAudio _lib, _NSRange range, NSOrthography orthography) { - final _ret = _lib._objc_msgSend_961( - _lib._class_NSTextCheckingResult1, - _lib._sel_orthographyCheckingResultWithRange_orthography_1, - range, - orthography._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static NSURLCache new1() { + final _ret = _objc_msgSend_40(_class_NSURLCache, _sel_new); + return NSURLCache.castFromPointer(_ret, retain: false, release: true); } - static NSTextCheckingResult spellCheckingResultWithRange_( - AVFAudio _lib, _NSRange range) { - final _ret = _lib._objc_msgSend_962(_lib._class_NSTextCheckingResult1, - _lib._sel_spellCheckingResultWithRange_1, range); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static NSURLCache allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSURLCache, _sel_allocWithZone_, zone); + return NSURLCache.castFromPointer(_ret, retain: false, release: true); } - static NSTextCheckingResult grammarCheckingResultWithRange_details_( - AVFAudio _lib, _NSRange range, NSArray details) { - final _ret = _lib._objc_msgSend_963(_lib._class_NSTextCheckingResult1, - _lib._sel_grammarCheckingResultWithRange_details_1, range, details._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static NSURLCache alloc() { + final _ret = _objc_msgSend_40(_class_NSURLCache, _sel_alloc); + return NSURLCache.castFromPointer(_ret, retain: false, release: true); } - static NSTextCheckingResult dateCheckingResultWithRange_date_( - AVFAudio _lib, _NSRange range, NSDate date) { - final _ret = _lib._objc_msgSend_964(_lib._class_NSTextCheckingResult1, - _lib._sel_dateCheckingResultWithRange_date_1, range, date._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLCache, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - static NSTextCheckingResult - dateCheckingResultWithRange_date_timeZone_duration_(AVFAudio _lib, - _NSRange range, NSDate date, NSTimeZone timeZone, double duration) { - final _ret = _lib._objc_msgSend_965( - _lib._class_NSTextCheckingResult1, - _lib._sel_dateCheckingResultWithRange_date_timeZone_duration_1, - range, - date._id, - timeZone._id, - duration); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLCache, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static NSTextCheckingResult addressCheckingResultWithRange_components_( - AVFAudio _lib, _NSRange range, NSDictionary components) { - final _ret = _lib._objc_msgSend_966( - _lib._class_NSTextCheckingResult1, - _lib._sel_addressCheckingResultWithRange_components_1, - range, - components._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLCache, _sel_accessInstanceVariablesDirectly); } - static NSTextCheckingResult linkCheckingResultWithRange_URL_( - AVFAudio _lib, _NSRange range, NSURL url) { - final _ret = _lib._objc_msgSend_967(_lib._class_NSTextCheckingResult1, - _lib._sel_linkCheckingResultWithRange_URL_1, range, url._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLCache, _sel_useStoredAccessor); } - static NSTextCheckingResult quoteCheckingResultWithRange_replacementString_( - AVFAudio _lib, _NSRange range, NSString replacementString) { - final _ret = _lib._objc_msgSend_968( - _lib._class_NSTextCheckingResult1, - _lib._sel_quoteCheckingResultWithRange_replacementString_1, - range, - replacementString._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLCache, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static NSTextCheckingResult dashCheckingResultWithRange_replacementString_( - AVFAudio _lib, _NSRange range, NSString replacementString) { - final _ret = _lib._objc_msgSend_968( - _lib._class_NSTextCheckingResult1, - _lib._sel_dashCheckingResultWithRange_replacementString_1, - range, - replacementString._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLCache, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static NSTextCheckingResult - replacementCheckingResultWithRange_replacementString_( - AVFAudio _lib, _NSRange range, NSString replacementString) { - final _ret = _lib._objc_msgSend_968( - _lib._class_NSTextCheckingResult1, - _lib._sel_replacementCheckingResultWithRange_replacementString_1, - range, - replacementString._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLCache, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSURLCache, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSURLCache, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLCache = objc.getClass("NSURLCache"); +late final _sel_sharedURLCache = objc.registerName("sharedURLCache"); +final _objc_msgSend_520 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setSharedURLCache_ = objc.registerName("setSharedURLCache:"); +final _objc_msgSend_521 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithMemoryCapacity_diskCapacity_diskPath_ = + objc.registerName("initWithMemoryCapacity:diskCapacity:diskPath:"); +final _objc_msgSend_522 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer)>(); +late final _sel_initWithMemoryCapacity_diskCapacity_directoryURL_ = + objc.registerName("initWithMemoryCapacity:diskCapacity:directoryURL:"); +final _objc_msgSend_523 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer)>(); + +class NSCachedURLResponse extends objc.NSObject { + NSCachedURLResponse._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSCachedURLResponse] that points to the same underlying object as [other]. + NSCachedURLResponse.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSCachedURLResponse] that wraps the given raw object pointer. + NSCachedURLResponse.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSCachedURLResponse]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSCachedURLResponse); } - static NSTextCheckingResult - correctionCheckingResultWithRange_replacementString_( - AVFAudio _lib, _NSRange range, NSString replacementString) { - final _ret = _lib._objc_msgSend_968( - _lib._class_NSTextCheckingResult1, - _lib._sel_correctionCheckingResultWithRange_replacementString_1, - range, - replacementString._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + NSCachedURLResponse initWithResponse_data_( + NSURLResponse response, objc.NSData data) { + final _ret = _objc_msgSend_524(this.pointer, _sel_initWithResponse_data_, + response.pointer, data.pointer); + return NSCachedURLResponse.castFromPointer(_ret, + retain: true, release: true); } - static NSTextCheckingResult - correctionCheckingResultWithRange_replacementString_alternativeStrings_( - AVFAudio _lib, - _NSRange range, - NSString replacementString, - NSArray alternativeStrings) { - final _ret = _lib._objc_msgSend_969( - _lib._class_NSTextCheckingResult1, - _lib._sel_correctionCheckingResultWithRange_replacementString_alternativeStrings_1, - range, - replacementString._id, - alternativeStrings._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + NSCachedURLResponse initWithResponse_data_userInfo_storagePolicy_( + NSURLResponse response, + objc.NSData data, + objc.NSDictionary? userInfo, + int storagePolicy) { + final _ret = _objc_msgSend_525( + this.pointer, + _sel_initWithResponse_data_userInfo_storagePolicy_, + response.pointer, + data.pointer, + userInfo?.pointer ?? ffi.nullptr, + storagePolicy); + return NSCachedURLResponse.castFromPointer(_ret, + retain: true, release: true); } - static NSTextCheckingResult - regularExpressionCheckingResultWithRanges_count_regularExpression_( - AVFAudio _lib, - ffi.Pointer<_NSRange> ranges, - int count, - NSRegularExpression regularExpression) { - final _ret = _lib._objc_msgSend_970( - _lib._class_NSTextCheckingResult1, - _lib._sel_regularExpressionCheckingResultWithRanges_count_regularExpression_1, - ranges, - count, - regularExpression._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + NSURLResponse get response { + final _ret = _objc_msgSend_526(this.pointer, _sel_response); + return NSURLResponse.castFromPointer(_ret, retain: true, release: true); } - static NSTextCheckingResult phoneNumberCheckingResultWithRange_phoneNumber_( - AVFAudio _lib, _NSRange range, NSString phoneNumber) { - final _ret = _lib._objc_msgSend_968( - _lib._class_NSTextCheckingResult1, - _lib._sel_phoneNumberCheckingResultWithRange_phoneNumber_1, - range, - phoneNumber._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + objc.NSData get data { + final _ret = _objc_msgSend_104(this.pointer, _sel_data); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - static NSTextCheckingResult - transitInformationCheckingResultWithRange_components_( - AVFAudio _lib, _NSRange range, NSDictionary components) { - final _ret = _lib._objc_msgSend_966( - _lib._class_NSTextCheckingResult1, - _lib._sel_transitInformationCheckingResultWithRange_components_1, - range, - components._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + objc.NSDictionary? get userInfo { + final _ret = _objc_msgSend_65(this.pointer, _sel_userInfo); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + int get storagePolicy { + return _objc_msgSend_527(this.pointer, _sel_storagePolicy); } @override - NSTextCheckingResult init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + NSCachedURLResponse init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSCachedURLResponse.castFromPointer(_ret, + retain: true, release: true); } - static NSTextCheckingResult new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSTextCheckingResult1, _lib._sel_new1); - return NSTextCheckingResult._(_ret, _lib, retain: false, release: true); + static NSCachedURLResponse new1() { + final _ret = _objc_msgSend_40(_class_NSCachedURLResponse, _sel_new); + return NSCachedURLResponse.castFromPointer(_ret, + retain: false, release: true); } - static NSTextCheckingResult allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSTextCheckingResult1, _lib._sel_allocWithZone_1, zone); - return NSTextCheckingResult._(_ret, _lib, retain: false, release: true); + static NSCachedURLResponse allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSCachedURLResponse, _sel_allocWithZone_, zone); + return NSCachedURLResponse.castFromPointer(_ret, + retain: false, release: true); } - static NSTextCheckingResult alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSTextCheckingResult1, _lib._sel_alloc1); - return NSTextCheckingResult._(_ret, _lib, retain: false, release: true); + static NSCachedURLResponse alloc() { + final _ret = _objc_msgSend_40(_class_NSCachedURLResponse, _sel_alloc); + return NSCachedURLResponse.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSTextCheckingResult1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSCachedURLResponse, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSTextCheckingResult1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSCachedURLResponse, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSTextCheckingResult1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSCachedURLResponse, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSTextCheckingResult1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSCachedURLResponse, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSTextCheckingResult1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSCachedURLResponse, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSTextCheckingResult1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSCachedURLResponse, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSTextCheckingResult1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSCachedURLResponse, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSCachedURLResponse, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSCachedURLResponse, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSCachedURLResponse = objc.getClass("NSCachedURLResponse"); +late final _sel_initWithResponse_data_ = + objc.registerName("initWithResponse:data:"); +final _objc_msgSend_524 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSTextCheckingResult1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSTextCheckingResult1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } +abstract class NSURLCacheStoragePolicy { + static const int NSURLCacheStorageAllowed = 0; + static const int NSURLCacheStorageAllowedInMemoryOnly = 1; + static const int NSURLCacheStorageNotAllowed = 2; } -abstract class NSTextCheckingType { - static const int NSTextCheckingTypeOrthography = 1; - static const int NSTextCheckingTypeSpelling = 2; - static const int NSTextCheckingTypeGrammar = 4; - static const int NSTextCheckingTypeDate = 8; - static const int NSTextCheckingTypeAddress = 16; - static const int NSTextCheckingTypeLink = 32; - static const int NSTextCheckingTypeQuote = 64; - static const int NSTextCheckingTypeDash = 128; - static const int NSTextCheckingTypeReplacement = 256; - static const int NSTextCheckingTypeCorrection = 512; - static const int NSTextCheckingTypeRegularExpression = 1024; - static const int NSTextCheckingTypePhoneNumber = 2048; - static const int NSTextCheckingTypeTransitInformation = 4096; -} +late final _sel_initWithResponse_data_userInfo_storagePolicy_ = + objc.registerName("initWithResponse:data:userInfo:storagePolicy:"); +final _objc_msgSend_525 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +final _objc_msgSend_526 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_storagePolicy = objc.registerName("storagePolicy"); +final _objc_msgSend_527 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_cachedResponseForRequest_ = + objc.registerName("cachedResponseForRequest:"); +final _objc_msgSend_528 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_storeCachedResponse_forRequest_ = + objc.registerName("storeCachedResponse:forRequest:"); +final _objc_msgSend_529 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeCachedResponseForRequest_ = + objc.registerName("removeCachedResponseForRequest:"); +final _objc_msgSend_530 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_removeAllCachedResponses = + objc.registerName("removeAllCachedResponses"); +late final _sel_removeCachedResponsesSinceDate_ = + objc.registerName("removeCachedResponsesSinceDate:"); +late final _sel_memoryCapacity = objc.registerName("memoryCapacity"); +late final _sel_setMemoryCapacity_ = objc.registerName("setMemoryCapacity:"); +late final _sel_diskCapacity = objc.registerName("diskCapacity"); +late final _sel_setDiskCapacity_ = objc.registerName("setDiskCapacity:"); +late final _sel_currentMemoryUsage = objc.registerName("currentMemoryUsage"); +late final _sel_currentDiskUsage = objc.registerName("currentDiskUsage"); + +class NSURLSessionDataTask extends NSURLSessionTask { + NSURLSessionDataTask._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSURLSessionDataTask] that points to the same underlying object as [other]. + NSURLSessionDataTask.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); -class NSRegularExpression extends NSObject { - NSRegularExpression._(ffi.Pointer id, AVFAudio lib, + /// Constructs a [NSURLSessionDataTask] that wraps the given raw object pointer. + NSURLSessionDataTask.castFromPointer(ffi.Pointer other, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLSessionDataTask]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionDataTask); + } - /// Returns a [NSRegularExpression] that points to the same underlying object as [other]. - static NSRegularExpression castFrom(T other) { - return NSRegularExpression._(other._id, other._lib, + @override + NSURLSessionDataTask init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionDataTask.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSRegularExpression] that wraps the given raw object pointer. - static NSRegularExpression castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSRegularExpression._(other, lib, retain: retain, release: release); + static NSURLSessionDataTask new1() { + final _ret = _objc_msgSend_40(_class_NSURLSessionDataTask, _sel_new); + return NSURLSessionDataTask.castFromPointer(_ret, + retain: false, release: true); } - /// Returns whether [obj] is an instance of [NSRegularExpression]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSRegularExpression1); + static NSURLSessionDataTask allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLSessionDataTask, _sel_allocWithZone_, zone); + return NSURLSessionDataTask.castFromPointer(_ret, + retain: false, release: true); } - static NSRegularExpression? regularExpressionWithPattern_options_error_( - AVFAudio _lib, - NSString pattern, - int options, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_948( - _lib._class_NSRegularExpression1, - _lib._sel_regularExpressionWithPattern_options_error_1, - pattern._id, - options, - error); - return _ret.address == 0 - ? null - : NSRegularExpression._(_ret, _lib, retain: true, release: true); + static NSURLSessionDataTask alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSessionDataTask, _sel_alloc); + return NSURLSessionDataTask.castFromPointer(_ret, + retain: false, release: true); } - NSRegularExpression? initWithPattern_options_error_(NSString pattern, - int options, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_949(_id, - _lib._sel_initWithPattern_options_error_1, pattern._id, options, error); - return _ret.address == 0 - ? null - : NSRegularExpression._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionDataTask, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSString get pattern { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_pattern1); - return NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionDataTask, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - int get options { - return _lib._objc_msgSend_950(_id, _lib._sel_options1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSessionDataTask, _sel_accessInstanceVariablesDirectly); } - int get numberOfCaptureGroups { - return _lib._objc_msgSend_10(_id, _lib._sel_numberOfCaptureGroups1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLSessionDataTask, _sel_useStoredAccessor); } - static NSString escapedPatternForString_(AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_69(_lib._class_NSRegularExpression1, - _lib._sel_escapedPatternForString_1, string._id); - return NSString._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionDataTask, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - void enumerateMatchesInString_options_range_usingBlock_( - NSString string, - int options, - _NSRange range, - ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool block) { - _lib._objc_msgSend_951( - _id, - _lib._sel_enumerateMatchesInString_options_range_usingBlock_1, - string._id, - options, - range, - block._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionDataTask, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSArray matchesInString_options_range_( - NSString string, int options, _NSRange range) { - final _ret = _lib._objc_msgSend_952(_id, - _lib._sel_matchesInString_options_range_1, string._id, options, range); - return NSArray._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionDataTask, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSessionDataTask, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLSessionDataTask, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLSessionDataTask = objc.getClass("NSURLSessionDataTask"); +late final _sel_storeCachedResponse_forDataTask_ = + objc.registerName("storeCachedResponse:forDataTask:"); +final _objc_msgSend_531 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSCachedURLResponse_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry[ + block.ref.target.address]!(arg0); + +class ObjCBlock_ffiVoid_NSCachedURLResponse extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSCachedURLResponse._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSCachedURLResponse castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSCachedURLResponse._(pointer, + retain: retain, release: release); } - int numberOfMatchesInString_options_range_( - NSString string, int options, _NSRange range) { - return _lib._objc_msgSend_953( - _id, - _lib._sel_numberOfMatchesInString_options_range_1, - string._id, - options, - range); + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSCachedURLResponse.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSCachedURLResponse_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSCachedURLResponse.fromFunction( + void Function(NSCachedURLResponse?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : NSCachedURLResponse.castFromPointer(arg0, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSCachedURLResponse.listener(void Function(NSCachedURLResponse?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : NSCachedURLResponse.castFromPointer(arg0, retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; + + void call(NSCachedURLResponse? arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function( + ffi.Pointer, ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr); +} + +late final _sel_getCachedResponseForDataTask_completionHandler_ = + objc.registerName("getCachedResponseForDataTask:completionHandler:"); +final _objc_msgSend_532 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeCachedResponseForDataTask_ = + objc.registerName("removeCachedResponseForDataTask:"); +final _objc_msgSend_533 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSURLConnection extends objc.NSObject { + NSURLConnection._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSURLConnection] that points to the same underlying object as [other]. + NSURLConnection.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSURLConnection] that wraps the given raw object pointer. + NSURLConnection.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLConnection]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLConnection); } - NSTextCheckingResult? firstMatchInString_options_range_( - NSString string, int options, _NSRange range) { - final _ret = _lib._objc_msgSend_954( - _id, - _lib._sel_firstMatchInString_options_range_1, - string._id, - options, - range); + NSURLConnection? initWithRequest_delegate_startImmediately_( + NSURLRequest request, objc.NSObject? delegate, bool startImmediately) { + final _ret = _objc_msgSend_534( + this.pointer, + _sel_initWithRequest_delegate_startImmediately_, + request.pointer, + delegate?.pointer ?? ffi.nullptr, + startImmediately); return _ret.address == 0 ? null - : NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + : NSURLConnection.castFromPointer(_ret, retain: true, release: true); } - void rangeOfFirstMatchInString_options_range_(ffi.Pointer<_NSRange> stret, - NSString string, int options, _NSRange range) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_955_stret( - stret, - _id, - _lib._sel_rangeOfFirstMatchInString_options_range_1, - string._id, - options, - range) - : stret.ref = _lib._objc_msgSend_955( - _id, - _lib._sel_rangeOfFirstMatchInString_options_range_1, - string._id, - options, - range); + NSURLConnection? initWithRequest_delegate_( + NSURLRequest request, objc.NSObject? delegate) { + final _ret = _objc_msgSend_535(this.pointer, _sel_initWithRequest_delegate_, + request.pointer, delegate?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSURLConnection.castFromPointer(_ret, retain: true, release: true); } - NSString stringByReplacingMatchesInString_options_range_withTemplate_( - NSString string, int options, _NSRange range, NSString templ) { - final _ret = _lib._objc_msgSend_956( - _id, - _lib._sel_stringByReplacingMatchesInString_options_range_withTemplate_1, - string._id, - options, - range, - templ._id); - return NSString._(_ret, _lib, retain: true, release: true); + static NSURLConnection? connectionWithRequest_delegate_( + NSURLRequest request, objc.NSObject? delegate) { + final _ret = _objc_msgSend_536( + _class_NSURLConnection, + _sel_connectionWithRequest_delegate_, + request.pointer, + delegate?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSURLConnection.castFromPointer(_ret, retain: true, release: true); } - int replaceMatchesInString_options_range_withTemplate_( - NSMutableString string, int options, _NSRange range, NSString templ) { - return _lib._objc_msgSend_957( - _id, - _lib._sel_replaceMatchesInString_options_range_withTemplate_1, - string._id, - options, - range, - templ._id); + NSURLRequest get originalRequest { + final _ret = _objc_msgSend_537(this.pointer, _sel_originalRequest); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - NSString replacementStringForResult_inString_offset_template_( - NSTextCheckingResult result, - NSString string, - int offset, - NSString templ) { - final _ret = _lib._objc_msgSend_958( - _id, - _lib._sel_replacementStringForResult_inString_offset_template_1, - result._id, - string._id, - offset, - templ._id); - return NSString._(_ret, _lib, retain: true, release: true); + NSURLRequest get currentRequest { + final _ret = _objc_msgSend_537(this.pointer, _sel_currentRequest); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - static NSString escapedTemplateForString_(AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_69(_lib._class_NSRegularExpression1, - _lib._sel_escapedTemplateForString_1, string._id); - return NSString._(_ret, _lib, retain: true, release: true); + void start() { + _objc_msgSend_82(this.pointer, _sel_start); } - @override - NSRegularExpression init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSRegularExpression._(_ret, _lib, retain: true, release: true); + void cancel() { + _objc_msgSend_82(this.pointer, _sel_cancel); } - static NSRegularExpression new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSRegularExpression1, _lib._sel_new1); - return NSRegularExpression._(_ret, _lib, retain: false, release: true); + void scheduleInRunLoop_forMode_(NSRunLoop aRunLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_scheduleInRunLoop_forMode_, + aRunLoop.pointer, mode.pointer); } - static NSRegularExpression allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSRegularExpression1, _lib._sel_allocWithZone_1, zone); - return NSRegularExpression._(_ret, _lib, retain: false, release: true); + void unscheduleFromRunLoop_forMode_(NSRunLoop aRunLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_unscheduleFromRunLoop_forMode_, + aRunLoop.pointer, mode.pointer); } - static NSRegularExpression alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSRegularExpression1, _lib._sel_alloc1); - return NSRegularExpression._(_ret, _lib, retain: false, release: true); + void setDelegateQueue_(NSOperationQueue? queue) { + _objc_msgSend_538( + this.pointer, _sel_setDelegateQueue_, queue?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSRegularExpression1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static bool canHandleRequest_(NSURLRequest request) { + return _objc_msgSend_539( + _class_NSURLConnection, _sel_canHandleRequest_, request.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSRegularExpression1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static objc.NSData? sendSynchronousRequest_returningResponse_error_( + NSURLRequest request, + ffi.Pointer> response, + ffi.Pointer> error) { + final _ret = _objc_msgSend_540( + _class_NSURLConnection, + _sel_sendSynchronousRequest_returningResponse_error_, + request.pointer, + response, + error); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSRegularExpression1, - _lib._sel_accessInstanceVariablesDirectly1); + static void sendAsynchronousRequest_queue_completionHandler_( + NSURLRequest request, + NSOperationQueue queue, + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError handler) { + _objc_msgSend_541( + _class_NSURLConnection, + _sel_sendAsynchronousRequest_queue_completionHandler_, + request.pointer, + queue.pointer, + handler.pointer); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSRegularExpression1, _lib._sel_useStoredAccessor1); + @override + NSURLConnection init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLConnection.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSRegularExpression1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static NSURLConnection new1() { + final _ret = _objc_msgSend_40(_class_NSURLConnection, _sel_new); + return NSURLConnection.castFromPointer(_ret, retain: false, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSRegularExpression1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static NSURLConnection allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSURLConnection, _sel_allocWithZone_, zone); + return NSURLConnection.castFromPointer(_ret, retain: false, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSRegularExpression1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static NSURLConnection alloc() { + final _ret = _objc_msgSend_40(_class_NSURLConnection, _sel_alloc); + return NSURLConnection.castFromPointer(_ret, retain: false, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSRegularExpression1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLConnection, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSRegularExpression1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLConnection, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } -} -abstract class NSRegularExpressionOptions { - static const int NSRegularExpressionCaseInsensitive = 1; - static const int NSRegularExpressionAllowCommentsAndWhitespace = 2; - static const int NSRegularExpressionIgnoreMetacharacters = 4; - static const int NSRegularExpressionDotMatchesLineSeparators = 8; - static const int NSRegularExpressionAnchorsMatchLines = 16; - static const int NSRegularExpressionUseUnixLineSeparators = 32; - static const int NSRegularExpressionUseUnicodeWordBoundaries = 64; -} + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLConnection, _sel_accessInstanceVariablesDirectly); + } -abstract class NSMatchingOptions { - static const int NSMatchingReportProgress = 1; - static const int NSMatchingReportCompletion = 2; - static const int NSMatchingAnchored = 4; - static const int NSMatchingWithTransparentBounds = 8; - static const int NSMatchingWithoutAnchoringBounds = 16; -} + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLConnection, _sel_useStoredAccessor); + } -void - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Int32 arg1, ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, int, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry = - , int, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistryIndex = - 0; + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLConnection, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLConnection, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLConnection, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLConnection, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSURLConnection, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLConnection = objc.getClass("NSURLConnection"); +late final _sel_initWithRequest_delegate_startImmediately_ = + objc.registerName("initWithRequest:delegate:startImmediately:"); +final _objc_msgSend_534 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_initWithRequest_delegate_ = + objc.registerName("initWithRequest:delegate:"); +final _objc_msgSend_535 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_connectionWithRequest_delegate_ = + objc.registerName("connectionWithRequest:delegate:"); +final _objc_msgSend_536 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +final _objc_msgSend_537 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_unscheduleFromRunLoop_forMode_ = + objc.registerName("unscheduleFromRunLoop:forMode:"); +late final _sel_setDelegateQueue_ = objc.registerName("setDelegateQueue:"); +final _objc_msgSend_538 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_canHandleRequest_ = objc.registerName("canHandleRequest:"); +final _objc_msgSend_539 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_sendSynchronousRequest_returningResponse_error_ = + objc.registerName("sendSynchronousRequest:returningResponse:error:"); +final _objc_msgSend_540 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); +void _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry = , ffi.Pointer, + ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistryIndex = 0; ffi.Pointer - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( - void Function(ffi.Pointer, int, ffi.Pointer) fn) { + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer) + fn) { final id = - ++_ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry[ - id] = fn; + ++_ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry[ +void _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry[ block.ref.target.address]!(arg0, arg1, arg2); -class ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool - extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); +class ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError + extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool - castFromPointer(AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool._( - pointer, lib, + static ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError._(pointer, retain: retain, release: release); } @@ -67196,25 +24647,24 @@ class ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.fromFunctionPointer( - AVFAudio lib, + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.fromFunctionPointer( ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Int32 arg1, ffi.Pointer arg2)>> + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -67222,24 +24672,21 @@ class ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.fromFunction( - AVFAudio lib, - void Function(NSTextCheckingResult?, int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline) + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.fromFunction( + void Function(NSURLResponse?, objc.NSData?, objc.NSError?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= + ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline) .cast(), - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( - (ffi.Pointer arg0, int arg1, - ffi.Pointer arg2) => - fn(arg0.address == 0 ? null : NSTextCheckingResult._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + arg0.address == 0 ? null : NSURLResponse.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : objc.NSData.castFromPointer(arg1, retain: true, release: true), + arg2.address == 0 ? null : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -67251,926 +24698,1127 @@ class ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.listener( - AVFAudio lib, - void Function(NSTextCheckingResult?, int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline) + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.listener( + void Function(NSURLResponse?, objc.NSData?, objc.NSError?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= + ffi.NativeCallable, ffi.Pointer, ffi.Pointer, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline) ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( - (ffi.Pointer arg0, int arg1, - ffi.Pointer arg2) => - fn(arg0.address == 0 ? null : NSTextCheckingResult._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + arg0.address == 0 + ? null + : NSURLResponse.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : objc.NSData.castFromPointer(arg1, retain: true, release: true), + arg2.address == 0 ? null : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Int32, ffi.Pointer)>? _dartFuncListenerTrampoline; + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; - void call(NSTextCheckingResult? arg0, int arg1, ffi.Pointer arg2) => - _id.ref.invoke + void call(NSURLResponse? arg0, objc.NSData? arg1, objc.NSError? arg2) => + pointer.ref.invoke .cast< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Int32 arg1, - ffi.Pointer arg2)>>() + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer, int, ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1, arg2); -} - -abstract class NSMatchingFlags { - static const int NSMatchingProgress = 1; - static const int NSMatchingCompleted = 2; - static const int NSMatchingHitEnd = 4; - static const int NSMatchingRequiredEnd = 8; - static const int NSMatchingInternalError = 16; -} - -class NSURLCache extends NSObject { - NSURLCache._(ffi.Pointer id, AVFAudio lib, + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, + arg0?.pointer ?? ffi.nullptr, + arg1?.pointer ?? ffi.nullptr, + arg2?.pointer ?? ffi.nullptr); +} + +late final _sel_sendAsynchronousRequest_queue_completionHandler_ = + objc.registerName("sendAsynchronousRequest:queue:completionHandler:"); +final _objc_msgSend_541 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSURLCredential extends objc.NSObject { + NSURLCredential._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSURLCache] that points to the same underlying object as [other]. - static NSURLCache castFrom(T other) { - return NSURLCache._(other._id, other._lib, retain: true, release: true); - } + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSURLCache] that wraps the given raw object pointer. - static NSURLCache castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLCache._(other, lib, retain: retain, release: release); - } + /// Constructs a [NSURLCredential] that points to the same underlying object as [other]. + NSURLCredential.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns whether [obj] is an instance of [NSURLCache]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLCache1); - } + /// Constructs a [NSURLCredential] that wraps the given raw object pointer. + NSURLCredential.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static NSURLCache getSharedURLCache(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_971( - _lib._class_NSURLCache1, _lib._sel_sharedURLCache1); - return NSURLCache._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSURLCredential]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLCredential); } - static void setSharedURLCache(AVFAudio _lib, NSURLCache value) { - return _lib._objc_msgSend_972( - _lib._class_NSURLCache1, _lib._sel_setSharedURLCache_1, value._id); + int get persistence { + return _objc_msgSend_542(this.pointer, _sel_persistence); } - NSURLCache initWithMemoryCapacity_diskCapacity_diskPath_( - int memoryCapacity, int diskCapacity, NSString? path) { - final _ret = _lib._objc_msgSend_973( - _id, - _lib._sel_initWithMemoryCapacity_diskCapacity_diskPath_1, - memoryCapacity, - diskCapacity, - path?._id ?? ffi.nullptr); - return NSURLCache._(_ret, _lib, retain: true, release: true); + NSURLCredential initWithUser_password_persistence_( + objc.NSString user, objc.NSString password, int persistence) { + final _ret = _objc_msgSend_543( + this.pointer, + _sel_initWithUser_password_persistence_, + user.pointer, + password.pointer, + persistence); + return NSURLCredential.castFromPointer(_ret, retain: true, release: true); } - NSURLCache initWithMemoryCapacity_diskCapacity_directoryURL_( - int memoryCapacity, int diskCapacity, NSURL? directoryURL) { - final _ret = _lib._objc_msgSend_974( - _id, - _lib._sel_initWithMemoryCapacity_diskCapacity_directoryURL_1, - memoryCapacity, - diskCapacity, - directoryURL?._id ?? ffi.nullptr); - return NSURLCache._(_ret, _lib, retain: true, release: true); + static NSURLCredential credentialWithUser_password_persistence_( + objc.NSString user, objc.NSString password, int persistence) { + final _ret = _objc_msgSend_544( + _class_NSURLCredential, + _sel_credentialWithUser_password_persistence_, + user.pointer, + password.pointer, + persistence); + return NSURLCredential.castFromPointer(_ret, retain: true, release: true); } - NSCachedURLResponse? cachedResponseForRequest_(NSURLRequest request) { - final _ret = _lib._objc_msgSend_979( - _id, _lib._sel_cachedResponseForRequest_1, request._id); + objc.NSString? get user { + final _ret = _objc_msgSend_13(this.pointer, _sel_user); return _ret.address == 0 ? null - : NSCachedURLResponse._(_ret, _lib, retain: true, release: true); - } - - void storeCachedResponse_forRequest_( - NSCachedURLResponse cachedResponse, NSURLRequest request) { - _lib._objc_msgSend_980(_id, _lib._sel_storeCachedResponse_forRequest_1, - cachedResponse._id, request._id); - } - - void removeCachedResponseForRequest_(NSURLRequest request) { - _lib._objc_msgSend_981( - _id, _lib._sel_removeCachedResponseForRequest_1, request._id); - } - - void removeAllCachedResponses() { - _lib._objc_msgSend_1(_id, _lib._sel_removeAllCachedResponses1); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void removeCachedResponsesSinceDate_(NSDate date) { - _lib._objc_msgSend_540( - _id, _lib._sel_removeCachedResponsesSinceDate_1, date._id); - } - - int get memoryCapacity { - return _lib._objc_msgSend_10(_id, _lib._sel_memoryCapacity1); - } - - set memoryCapacity(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setMemoryCapacity_1, value); + objc.NSString? get password { + final _ret = _objc_msgSend_13(this.pointer, _sel_password); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - int get diskCapacity { - return _lib._objc_msgSend_10(_id, _lib._sel_diskCapacity1); + bool get hasPassword { + return _objc_msgSend_7(this.pointer, _sel_hasPassword); } - set diskCapacity(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setDiskCapacity_1, value); + NSURLCredential initWithIdentity_certificates_persistence_( + ffi.Pointer<__SecIdentity> identity, + objc.NSArray? certArray, + int persistence) { + final _ret = _objc_msgSend_545( + this.pointer, + _sel_initWithIdentity_certificates_persistence_, + identity, + certArray?.pointer ?? ffi.nullptr, + persistence); + return NSURLCredential.castFromPointer(_ret, retain: true, release: true); } - int get currentMemoryUsage { - return _lib._objc_msgSend_10(_id, _lib._sel_currentMemoryUsage1); + static NSURLCredential credentialWithIdentity_certificates_persistence_( + ffi.Pointer<__SecIdentity> identity, + objc.NSArray? certArray, + int persistence) { + final _ret = _objc_msgSend_546( + _class_NSURLCredential, + _sel_credentialWithIdentity_certificates_persistence_, + identity, + certArray?.pointer ?? ffi.nullptr, + persistence); + return NSURLCredential.castFromPointer(_ret, retain: true, release: true); } - int get currentDiskUsage { - return _lib._objc_msgSend_10(_id, _lib._sel_currentDiskUsage1); + ffi.Pointer<__SecIdentity> get identity { + return _objc_msgSend_547(this.pointer, _sel_identity); } - void storeCachedResponse_forDataTask_( - NSCachedURLResponse cachedResponse, NSURLSessionDataTask dataTask) { - _lib._objc_msgSend_982(_id, _lib._sel_storeCachedResponse_forDataTask_1, - cachedResponse._id, dataTask._id); + objc.NSArray get certificates { + final _ret = _objc_msgSend_6(this.pointer, _sel_certificates); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void getCachedResponseForDataTask_completionHandler_( - NSURLSessionDataTask dataTask, - ObjCBlock_ffiVoid_NSCachedURLResponse completionHandler) { - _lib._objc_msgSend_983( - _id, - _lib._sel_getCachedResponseForDataTask_completionHandler_1, - dataTask._id, - completionHandler._id); + NSURLCredential initWithTrust_(ffi.Pointer<__SecTrust> trust) { + final _ret = _objc_msgSend_548(this.pointer, _sel_initWithTrust_, trust); + return NSURLCredential.castFromPointer(_ret, retain: true, release: true); } - void removeCachedResponseForDataTask_(NSURLSessionDataTask dataTask) { - _lib._objc_msgSend_984( - _id, _lib._sel_removeCachedResponseForDataTask_1, dataTask._id); + static NSURLCredential credentialForTrust_(ffi.Pointer<__SecTrust> trust) { + final _ret = _objc_msgSend_549( + _class_NSURLCredential, _sel_credentialForTrust_, trust); + return NSURLCredential.castFromPointer(_ret, retain: true, release: true); } @override - NSURLCache init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLCache._(_ret, _lib, retain: true, release: true); + NSURLCredential init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLCredential.castFromPointer(_ret, retain: true, release: true); } - static NSURLCache new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLCache1, _lib._sel_new1); - return NSURLCache._(_ret, _lib, retain: false, release: true); + static NSURLCredential new1() { + final _ret = _objc_msgSend_40(_class_NSURLCredential, _sel_new); + return NSURLCredential.castFromPointer(_ret, retain: false, release: true); } - static NSURLCache allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLCache1, _lib._sel_allocWithZone_1, zone); - return NSURLCache._(_ret, _lib, retain: false, release: true); + static NSURLCredential allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSURLCredential, _sel_allocWithZone_, zone); + return NSURLCredential.castFromPointer(_ret, retain: false, release: true); } - static NSURLCache alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLCache1, _lib._sel_alloc1); - return NSURLCache._(_ret, _lib, retain: false, release: true); + static NSURLCredential alloc() { + final _ret = _objc_msgSend_40(_class_NSURLCredential, _sel_alloc); + return NSURLCredential.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLCache1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLCredential, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLCache1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLCredential, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLCache1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLCredential, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLCache1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLCredential, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLCache1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLCredential, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLCache1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLCredential, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLCache1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLCredential, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURLCache1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLCredential, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLCache1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSURLCredential, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -class NSCachedURLResponse extends NSObject { - NSCachedURLResponse._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSCachedURLResponse] that points to the same underlying object as [other]. - static NSCachedURLResponse castFrom(T other) { - return NSCachedURLResponse._(other._id, other._lib, - retain: true, release: true); - } - - /// Returns a [NSCachedURLResponse] that wraps the given raw object pointer. - static NSCachedURLResponse castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSCachedURLResponse._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSCachedURLResponse]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSCachedURLResponse1); - } - - NSCachedURLResponse initWithResponse_data_( - NSURLResponse response, NSData data) { - final _ret = _lib._objc_msgSend_975( - _id, _lib._sel_initWithResponse_data_1, response._id, data._id); - return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); - } +late final _class_NSURLCredential = objc.getClass("NSURLCredential"); - NSCachedURLResponse initWithResponse_data_userInfo_storagePolicy_( - NSURLResponse response, - NSData data, - NSDictionary? userInfo, - int storagePolicy) { - final _ret = _lib._objc_msgSend_976( - _id, - _lib._sel_initWithResponse_data_userInfo_storagePolicy_1, - response._id, - data._id, - userInfo?._id ?? ffi.nullptr, - storagePolicy); - return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); - } +abstract class NSURLCredentialPersistence { + static const int NSURLCredentialPersistenceNone = 0; + static const int NSURLCredentialPersistenceForSession = 1; + static const int NSURLCredentialPersistencePermanent = 2; + static const int NSURLCredentialPersistenceSynchronizable = 3; +} - NSURLResponse get response { - final _ret = _lib._objc_msgSend_977(_id, _lib._sel_response1); - return NSURLResponse._(_ret, _lib, retain: true, release: true); - } +late final _sel_persistence = objc.registerName("persistence"); +final _objc_msgSend_542 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithUser_password_persistence_ = + objc.registerName("initWithUser:password:persistence:"); +final _objc_msgSend_543 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_credentialWithUser_password_persistence_ = + objc.registerName("credentialWithUser:password:persistence:"); +final _objc_msgSend_544 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_user = objc.registerName("user"); +late final _sel_password = objc.registerName("password"); +late final _sel_hasPassword = objc.registerName("hasPassword"); - NSData get data { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_data1); - return NSData._(_ret, _lib, retain: true, release: true); - } +final class __SecIdentity extends ffi.Opaque {} - NSDictionary? get userInfo { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_userInfo1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } +late final _sel_initWithIdentity_certificates_persistence_ = + objc.registerName("initWithIdentity:certificates:persistence:"); +final _objc_msgSend_545 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__SecIdentity>, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__SecIdentity>, + ffi.Pointer, + int)>(); +late final _sel_credentialWithIdentity_certificates_persistence_ = + objc.registerName("credentialWithIdentity:certificates:persistence:"); +final _objc_msgSend_546 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__SecIdentity>, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__SecIdentity>, + ffi.Pointer, + int)>(); +late final _sel_identity = objc.registerName("identity"); +final _objc_msgSend_547 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer<__SecIdentity> Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer<__SecIdentity> Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_certificates = objc.registerName("certificates"); - int get storagePolicy { - return _lib._objc_msgSend_978(_id, _lib._sel_storagePolicy1); - } +final class __SecTrust extends ffi.Opaque {} - @override - NSCachedURLResponse init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); - } +late final _sel_initWithTrust_ = objc.registerName("initWithTrust:"); +final _objc_msgSend_548 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<__SecTrust>)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<__SecTrust>)>(); +late final _sel_credentialForTrust_ = objc.registerName("credentialForTrust:"); +final _objc_msgSend_549 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<__SecTrust>)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<__SecTrust>)>(); + +class NSURLProtectionSpace extends objc.NSObject { + NSURLProtectionSpace._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - static NSCachedURLResponse new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSCachedURLResponse1, _lib._sel_new1); - return NSCachedURLResponse._(_ret, _lib, retain: false, release: true); - } + /// Constructs a [NSURLProtectionSpace] that points to the same underlying object as [other]. + NSURLProtectionSpace.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - static NSCachedURLResponse allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSCachedURLResponse1, _lib._sel_allocWithZone_1, zone); - return NSCachedURLResponse._(_ret, _lib, retain: false, release: true); - } + /// Constructs a [NSURLProtectionSpace] that wraps the given raw object pointer. + NSURLProtectionSpace.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static NSCachedURLResponse alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSCachedURLResponse1, _lib._sel_alloc1); - return NSCachedURLResponse._(_ret, _lib, retain: false, release: true); + /// Returns whether [obj] is an instance of [NSURLProtectionSpace]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLProtectionSpace); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSCachedURLResponse1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + NSURLProtectionSpace initWithHost_port_protocol_realm_authenticationMethod_( + objc.NSString host, + int port, + objc.NSString? protocol, + objc.NSString? realm, + objc.NSString? authenticationMethod) { + final _ret = _objc_msgSend_550( + this.pointer, + _sel_initWithHost_port_protocol_realm_authenticationMethod_, + host.pointer, + port, + protocol?.pointer ?? ffi.nullptr, + realm?.pointer ?? ffi.nullptr, + authenticationMethod?.pointer ?? ffi.nullptr); + return NSURLProtectionSpace.castFromPointer(_ret, + retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSCachedURLResponse1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + NSURLProtectionSpace initWithProxyHost_port_type_realm_authenticationMethod_( + objc.NSString host, + int port, + objc.NSString? type, + objc.NSString? realm, + objc.NSString? authenticationMethod) { + final _ret = _objc_msgSend_550( + this.pointer, + _sel_initWithProxyHost_port_type_realm_authenticationMethod_, + host.pointer, + port, + type?.pointer ?? ffi.nullptr, + realm?.pointer ?? ffi.nullptr, + authenticationMethod?.pointer ?? ffi.nullptr); + return NSURLProtectionSpace.castFromPointer(_ret, + retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSCachedURLResponse1, - _lib._sel_accessInstanceVariablesDirectly1); + objc.NSString? get realm { + final _ret = _objc_msgSend_13(this.pointer, _sel_realm); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSCachedURLResponse1, _lib._sel_useStoredAccessor1); + bool get receivesCredentialSecurely { + return _objc_msgSend_7(this.pointer, _sel_receivesCredentialSecurely); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSCachedURLResponse1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + bool get isProxy { + return _objc_msgSend_7(this.pointer, _sel_isProxy); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSCachedURLResponse1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + objc.NSString get host { + final _ret = _objc_msgSend_12(this.pointer, _sel_host); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSCachedURLResponse1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + int get port { + return _objc_msgSend_114(this.pointer, _sel_port); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSCachedURLResponse1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSString? get proxyType { + final _ret = _objc_msgSend_13(this.pointer, _sel_proxyType); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSCachedURLResponse1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSString? get protocol { + final _ret = _objc_msgSend_13(this.pointer, _sel_protocol); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } -} - -abstract class NSURLCacheStoragePolicy { - static const int NSURLCacheStorageAllowed = 0; - static const int NSURLCacheStorageAllowedInMemoryOnly = 1; - static const int NSURLCacheStorageNotAllowed = 2; -} - -class NSURLSessionDataTask extends NSURLSessionTask { - NSURLSessionDataTask._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLSessionDataTask] that points to the same underlying object as [other]. - static NSURLSessionDataTask castFrom(T other) { - return NSURLSessionDataTask._(other._id, other._lib, - retain: true, release: true); + objc.NSString get authenticationMethod { + final _ret = _objc_msgSend_12(this.pointer, _sel_authenticationMethod); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSURLSessionDataTask] that wraps the given raw object pointer. - static NSURLSessionDataTask castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionDataTask._(other, lib, retain: retain, release: release); + objc.NSArray? get distinguishedNames { + final _ret = _objc_msgSend_69(this.pointer, _sel_distinguishedNames); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSURLSessionDataTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionDataTask1); + ffi.Pointer<__SecTrust> get serverTrust { + return _objc_msgSend_551(this.pointer, _sel_serverTrust); } @override - NSURLSessionDataTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + NSURLProtectionSpace init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLProtectionSpace.castFromPointer(_ret, + retain: true, release: true); } - static NSURLSessionDataTask new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLSessionDataTask1, _lib._sel_new1); - return NSURLSessionDataTask._(_ret, _lib, retain: false, release: true); + static NSURLProtectionSpace new1() { + final _ret = _objc_msgSend_40(_class_NSURLProtectionSpace, _sel_new); + return NSURLProtectionSpace.castFromPointer(_ret, + retain: false, release: true); } - static NSURLSessionDataTask allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSessionDataTask1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionDataTask._(_ret, _lib, retain: false, release: true); + static NSURLProtectionSpace allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLProtectionSpace, _sel_allocWithZone_, zone); + return NSURLProtectionSpace.castFromPointer(_ret, + retain: false, release: true); } - static NSURLSessionDataTask alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionDataTask1, _lib._sel_alloc1); - return NSURLSessionDataTask._(_ret, _lib, retain: false, release: true); + static NSURLProtectionSpace alloc() { + final _ret = _objc_msgSend_40(_class_NSURLProtectionSpace, _sel_alloc); + return NSURLProtectionSpace.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionDataTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLProtectionSpace, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionDataTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionDataTask1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionDataTask1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSessionDataTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionDataTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionDataTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLSessionDataTask1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionDataTask1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -void _ObjCBlock_ffiVoid_NSCachedURLResponse_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry[ - block.ref.target.address]!(arg0); - -class ObjCBlock_ffiVoid_NSCachedURLResponse extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSCachedURLResponse._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSCachedURLResponse castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSCachedURLResponse._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSCachedURLResponse.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi - .NativeFunction arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSCachedURLResponse_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSCachedURLResponse.fromFunction( - AVFAudio lib, void Function(NSCachedURLResponse?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSCachedURLResponse._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSCachedURLResponse.listener( - AVFAudio lib, void Function(NSCachedURLResponse?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure( - (ffi.Pointer arg0) => fn( - arg0.address == 0 ? null : NSCachedURLResponse._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; + anArgument?.pointer ?? ffi.nullptr); + } - void call(NSCachedURLResponse? arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0?._id ?? ffi.nullptr); -} + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLProtectionSpace, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); + } -class NSURLConnection extends NSObject { - NSURLConnection._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLProtectionSpace, _sel_accessInstanceVariablesDirectly); + } - /// Returns a [NSURLConnection] that points to the same underlying object as [other]. - static NSURLConnection castFrom(T other) { - return NSURLConnection._(other._id, other._lib, - retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLProtectionSpace, _sel_useStoredAccessor); } - /// Returns a [NSURLConnection] that wraps the given raw object pointer. - static NSURLConnection castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLConnection._(other, lib, retain: retain, release: release); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLProtectionSpace, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSURLConnection]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLConnection1); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLProtectionSpace, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSURLConnection? initWithRequest_delegate_startImmediately_( - NSURLRequest request, NSObject? delegate, bool startImmediately) { - final _ret = _lib._objc_msgSend_985( - _id, - _lib._sel_initWithRequest_delegate_startImmediately_1, - request._id, - delegate?._id ?? ffi.nullptr, - startImmediately); - return _ret.address == 0 - ? null - : NSURLConnection._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLProtectionSpace, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLProtectionSpace, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLProtectionSpace, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLProtectionSpace = objc.getClass("NSURLProtectionSpace"); +late final _sel_initWithHost_port_protocol_realm_authenticationMethod_ = + objc.registerName("initWithHost:port:protocol:realm:authenticationMethod:"); +final _objc_msgSend_550 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithProxyHost_port_type_realm_authenticationMethod_ = objc + .registerName("initWithProxyHost:port:type:realm:authenticationMethod:"); +late final _sel_realm = objc.registerName("realm"); +late final _sel_receivesCredentialSecurely = + objc.registerName("receivesCredentialSecurely"); +late final _sel_isProxy = objc.registerName("isProxy"); +late final _sel_host = objc.registerName("host"); +late final _sel_proxyType = objc.registerName("proxyType"); +late final _sel_protocol = objc.registerName("protocol"); +late final _sel_authenticationMethod = + objc.registerName("authenticationMethod"); +late final _sel_distinguishedNames = objc.registerName("distinguishedNames"); +late final _sel_serverTrust = objc.registerName("serverTrust"); +final _objc_msgSend_551 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer<__SecTrust> Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer<__SecTrust> Function( + ffi.Pointer, ffi.Pointer)>(); + +class NSURLCredentialStorage extends objc.NSObject { + NSURLCredentialStorage._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSURLCredentialStorage] that points to the same underlying object as [other]. + NSURLCredentialStorage.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSURLCredentialStorage] that wraps the given raw object pointer. + NSURLCredentialStorage.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLCredentialStorage]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLCredentialStorage); } - NSURLConnection? initWithRequest_delegate_( - NSURLRequest request, NSObject? delegate) { - final _ret = _lib._objc_msgSend_986( - _id, - _lib._sel_initWithRequest_delegate_1, - request._id, - delegate?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSURLConnection._(_ret, _lib, retain: true, release: true); + static NSURLCredentialStorage getSharedCredentialStorage() { + final _ret = _objc_msgSend_552( + _class_NSURLCredentialStorage, _sel_sharedCredentialStorage); + return NSURLCredentialStorage.castFromPointer(_ret, + retain: true, release: true); } - static NSURLConnection? connectionWithRequest_delegate_( - AVFAudio _lib, NSURLRequest request, NSObject? delegate) { - final _ret = _lib._objc_msgSend_987( - _lib._class_NSURLConnection1, - _lib._sel_connectionWithRequest_delegate_1, - request._id, - delegate?._id ?? ffi.nullptr); + objc.NSDictionary? credentialsForProtectionSpace_( + NSURLProtectionSpace space) { + final _ret = _objc_msgSend_553( + this.pointer, _sel_credentialsForProtectionSpace_, space.pointer); return _ret.address == 0 ? null - : NSURLConnection._(_ret, _lib, retain: true, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - NSURLRequest get originalRequest { - final _ret = _lib._objc_msgSend_988(_id, _lib._sel_originalRequest1); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + objc.NSDictionary get allCredentials { + final _ret = _objc_msgSend_112(this.pointer, _sel_allCredentials); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - NSURLRequest get currentRequest { - final _ret = _lib._objc_msgSend_988(_id, _lib._sel_currentRequest1); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + void setCredential_forProtectionSpace_( + NSURLCredential credential, NSURLProtectionSpace space) { + _objc_msgSend_554(this.pointer, _sel_setCredential_forProtectionSpace_, + credential.pointer, space.pointer); } - void start() { - _lib._objc_msgSend_1(_id, _lib._sel_start1); + void removeCredential_forProtectionSpace_( + NSURLCredential credential, NSURLProtectionSpace space) { + _objc_msgSend_554(this.pointer, _sel_removeCredential_forProtectionSpace_, + credential.pointer, space.pointer); } - void cancel() { - _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + void removeCredential_forProtectionSpace_options_(NSURLCredential credential, + NSURLProtectionSpace space, objc.NSDictionary? options) { + _objc_msgSend_555( + this.pointer, + _sel_removeCredential_forProtectionSpace_options_, + credential.pointer, + space.pointer, + options?.pointer ?? ffi.nullptr); } - void scheduleInRunLoop_forMode_(NSRunLoop aRunLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_scheduleInRunLoop_forMode_1, aRunLoop._id, mode._id); + NSURLCredential? defaultCredentialForProtectionSpace_( + NSURLProtectionSpace space) { + final _ret = _objc_msgSend_556( + this.pointer, _sel_defaultCredentialForProtectionSpace_, space.pointer); + return _ret.address == 0 + ? null + : NSURLCredential.castFromPointer(_ret, retain: true, release: true); } - void unscheduleFromRunLoop_forMode_(NSRunLoop aRunLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_unscheduleFromRunLoop_forMode_1, aRunLoop._id, mode._id); + void setDefaultCredential_forProtectionSpace_( + NSURLCredential credential, NSURLProtectionSpace space) { + _objc_msgSend_554( + this.pointer, + _sel_setDefaultCredential_forProtectionSpace_, + credential.pointer, + space.pointer); } - void setDelegateQueue_(NSOperationQueue? queue) { - _lib._objc_msgSend_989( - _id, _lib._sel_setDelegateQueue_1, queue?._id ?? ffi.nullptr); + void getCredentialsForProtectionSpace_task_completionHandler_( + NSURLProtectionSpace protectionSpace, + NSURLSessionTask task, + ObjCBlock_ffiVoid_NSDictionary completionHandler) { + _objc_msgSend_557( + this.pointer, + _sel_getCredentialsForProtectionSpace_task_completionHandler_, + protectionSpace.pointer, + task.pointer, + completionHandler.pointer); } - static bool canHandleRequest_(AVFAudio _lib, NSURLRequest request) { - return _lib._objc_msgSend_990(_lib._class_NSURLConnection1, - _lib._sel_canHandleRequest_1, request._id); + void setCredential_forProtectionSpace_task_(NSURLCredential credential, + NSURLProtectionSpace protectionSpace, NSURLSessionTask task) { + _objc_msgSend_558(this.pointer, _sel_setCredential_forProtectionSpace_task_, + credential.pointer, protectionSpace.pointer, task.pointer); } - static NSData? sendSynchronousRequest_returningResponse_error_( - AVFAudio _lib, - NSURLRequest request, - ffi.Pointer> response, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_991( - _lib._class_NSURLConnection1, - _lib._sel_sendSynchronousRequest_returningResponse_error_1, - request._id, - response, - error); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + void removeCredential_forProtectionSpace_options_task_( + NSURLCredential credential, + NSURLProtectionSpace protectionSpace, + objc.NSDictionary? options, + NSURLSessionTask task) { + _objc_msgSend_559( + this.pointer, + _sel_removeCredential_forProtectionSpace_options_task_, + credential.pointer, + protectionSpace.pointer, + options?.pointer ?? ffi.nullptr, + task.pointer); } - static void sendAsynchronousRequest_queue_completionHandler_( - AVFAudio _lib, - NSURLRequest request, - NSOperationQueue queue, - ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError handler) { - _lib._objc_msgSend_992( - _lib._class_NSURLConnection1, - _lib._sel_sendAsynchronousRequest_queue_completionHandler_1, - request._id, - queue._id, - handler._id); + void getDefaultCredentialForProtectionSpace_task_completionHandler_( + NSURLProtectionSpace space, + NSURLSessionTask task, + ObjCBlock_ffiVoid_NSURLCredential completionHandler) { + _objc_msgSend_560( + this.pointer, + _sel_getDefaultCredentialForProtectionSpace_task_completionHandler_, + space.pointer, + task.pointer, + completionHandler.pointer); + } + + void setDefaultCredential_forProtectionSpace_task_(NSURLCredential credential, + NSURLProtectionSpace protectionSpace, NSURLSessionTask task) { + _objc_msgSend_558( + this.pointer, + _sel_setDefaultCredential_forProtectionSpace_task_, + credential.pointer, + protectionSpace.pointer, + task.pointer); } @override - NSURLConnection init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLConnection._(_ret, _lib, retain: true, release: true); + NSURLCredentialStorage init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLCredentialStorage.castFromPointer(_ret, + retain: true, release: true); } - static NSURLConnection new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLConnection1, _lib._sel_new1); - return NSURLConnection._(_ret, _lib, retain: false, release: true); + static NSURLCredentialStorage new1() { + final _ret = _objc_msgSend_40(_class_NSURLCredentialStorage, _sel_new); + return NSURLCredentialStorage.castFromPointer(_ret, + retain: false, release: true); } - static NSURLConnection allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLConnection1, _lib._sel_allocWithZone_1, zone); - return NSURLConnection._(_ret, _lib, retain: false, release: true); + static NSURLCredentialStorage allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLCredentialStorage, _sel_allocWithZone_, zone); + return NSURLCredentialStorage.castFromPointer(_ret, + retain: false, release: true); } - static NSURLConnection alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLConnection1, _lib._sel_alloc1); - return NSURLConnection._(_ret, _lib, retain: false, release: true); + static NSURLCredentialStorage alloc() { + final _ret = _objc_msgSend_40(_class_NSURLCredentialStorage, _sel_alloc); + return NSURLCredentialStorage.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLConnection1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLCredentialStorage, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLConnection1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLCredentialStorage, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLConnection1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLCredentialStorage, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLConnection1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSURLCredentialStorage, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLConnection1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLCredentialStorage, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLConnection1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLCredentialStorage, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLConnection1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLCredentialStorage, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLCredentialStorage, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLCredentialStorage, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLCredentialStorage = + objc.getClass("NSURLCredentialStorage"); +late final _sel_sharedCredentialStorage = + objc.registerName("sharedCredentialStorage"); +final _objc_msgSend_552 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_credentialsForProtectionSpace_ = + objc.registerName("credentialsForProtectionSpace:"); +final _objc_msgSend_553 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_allCredentials = objc.registerName("allCredentials"); +late final _sel_setCredential_forProtectionSpace_ = + objc.registerName("setCredential:forProtectionSpace:"); +final _objc_msgSend_554 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeCredential_forProtectionSpace_ = + objc.registerName("removeCredential:forProtectionSpace:"); +late final _sel_removeCredential_forProtectionSpace_options_ = + objc.registerName("removeCredential:forProtectionSpace:options:"); +final _objc_msgSend_555 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_defaultCredentialForProtectionSpace_ = + objc.registerName("defaultCredentialForProtectionSpace:"); +final _objc_msgSend_556 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDefaultCredential_forProtectionSpace_ = + objc.registerName("setDefaultCredential:forProtectionSpace:"); +void _ObjCBlock_ffiVoid_NSDictionary_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSDictionary_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSDictionary_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSDictionary_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSDictionary_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSDictionary_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLConnection1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } +void _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSDictionary_closureRegistry[block.ref.target.address]!( + arg0); + +class ObjCBlock_ffiVoid_NSDictionary extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSDictionary._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLConnection1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSDictionary castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSDictionary._(pointer, + retain: retain, release: release); } -} -void _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSDictionary.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDictionary_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSDictionary.fromFunction(void Function(objc.NSDictionary?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSDictionary_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSDictionary.castFromPointer(arg0, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSDictionary.listener(void Function(objc.NSDictionary?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSDictionary_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSDictionary.castFromPointer(arg0, retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; + + void call(objc.NSDictionary? arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function( + ffi.Pointer, ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr); +} + +late final _sel_getCredentialsForProtectionSpace_task_completionHandler_ = objc + .registerName("getCredentialsForProtectionSpace:task:completionHandler:"); +final _objc_msgSend_557 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_setCredential_forProtectionSpace_task_ = + objc.registerName("setCredential:forProtectionSpace:task:"); +final _objc_msgSend_558 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeCredential_forProtectionSpace_options_task_ = + objc.registerName("removeCredential:forProtectionSpace:options:task:"); +final _objc_msgSend_559 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSURLCredential_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => block.ref.target .cast< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry = , ffi.Pointer, - ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer) - fn) { - final id = - ++_ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry[id] = fn; + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSURLCredential_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSURLCredential_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSURLCredential_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); +void _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry[ + block.ref.target.address]!(arg0); -class ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, +class ObjCBlock_ffiVoid_NSURLCredential extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSURLCredential._(ffi.Pointer pointer, {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError._(pointer, lib, + static ObjCBlock_ffiVoid_NSURLCredential castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSURLCredential._(pointer, retain: retain, release: release); } @@ -68179,27 +25827,18 @@ class ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.fromFunctionPointer( - AVFAudio lib, + ObjCBlock_ffiVoid_NSURLCredential.fromFunctionPointer( ffi.Pointer< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> + ffi.Void Function(ffi.Pointer arg0)>> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURLCredential_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -68207,24 +25846,18 @@ class ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.fromFunction( - AVFAudio lib, void Function(NSURLResponse?, NSData?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= - ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) => - fn( - arg0.address == 0 - ? null - : NSURLResponse._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSData._(arg1, lib, retain: true, release: true), - arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSURLCredential.fromFunction( + void Function(NSURLCredential?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSURLCredential_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : NSURLCredential.castFromPointer(arg0, retain: true, release: true))))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -68236,2989 +25869,4914 @@ class ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.listener( - AVFAudio lib, void Function(NSURLResponse?, NSData?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= - ffi.NativeCallable, ffi.Pointer, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) => - fn( - arg0.address == 0 - ? null - : NSURLResponse._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSData._(arg1, lib, retain: true, release: true), - arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSURLCredential.listener(void Function(NSURLCredential?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSURLCredential_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : NSURLCredential.castFromPointer(arg0, retain: true, release: true))))); static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; - void call(NSURLResponse? arg0, NSData? arg1, NSError? arg2) => _id.ref.invoke + void call(NSURLCredential? arg0) => pointer.ref.invoke .cast< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>()( - _id, - arg0?._id ?? ffi.nullptr, - arg1?._id ?? ffi.nullptr, - arg2?._id ?? ffi.nullptr); -} + void Function( + ffi.Pointer, ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr); +} + +late final _sel_getDefaultCredentialForProtectionSpace_task_completionHandler_ = + objc.registerName( + "getDefaultCredentialForProtectionSpace:task:completionHandler:"); +final _objc_msgSend_560 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_setDefaultCredential_forProtectionSpace_task_ = + objc.registerName("setDefaultCredential:forProtectionSpace:task:"); + +class NSURLProtocol extends objc.NSObject { + NSURLProtocol._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); -class NSURLCredential extends NSObject { - NSURLCredential._(ffi.Pointer id, AVFAudio lib, + /// Constructs a [NSURLProtocol] that points to the same underlying object as [other]. + NSURLProtocol.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSURLProtocol] that wraps the given raw object pointer. + NSURLProtocol.castFromPointer(ffi.Pointer other, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : this._(other, retain: retain, release: release); - /// Returns a [NSURLCredential] that points to the same underlying object as [other]. - static NSURLCredential castFrom(T other) { - return NSURLCredential._(other._id, other._lib, - retain: true, release: true); + /// Returns whether [obj] is an instance of [NSURLProtocol]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLProtocol); } - /// Returns a [NSURLCredential] that wraps the given raw object pointer. - static NSURLCredential castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLCredential._(other, lib, retain: retain, release: release); + NSURLProtocol initWithRequest_cachedResponse_client_(NSURLRequest request, + NSCachedURLResponse? cachedResponse, objc.NSObject? client) { + final _ret = _objc_msgSend_561( + this.pointer, + _sel_initWithRequest_cachedResponse_client_, + request.pointer, + cachedResponse?.pointer ?? ffi.nullptr, + client?.pointer ?? ffi.nullptr); + return NSURLProtocol.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSURLCredential]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLCredential1); + objc.NSObject? get client { + final _ret = _objc_msgSend_66(this.pointer, _sel_client); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - int get persistence { - return _lib._objc_msgSend_993(_id, _lib._sel_persistence1); + NSURLRequest get request { + final _ret = _objc_msgSend_537(this.pointer, _sel_request); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - NSURLCredential initWithUser_password_persistence_( - NSString user, NSString password, int persistence) { - final _ret = _lib._objc_msgSend_994( - _id, - _lib._sel_initWithUser_password_persistence_1, - user._id, - password._id, - persistence); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + NSCachedURLResponse? get cachedResponse { + final _ret = _objc_msgSend_562(this.pointer, _sel_cachedResponse); + return _ret.address == 0 + ? null + : NSCachedURLResponse.castFromPointer(_ret, + retain: true, release: true); } - static NSURLCredential credentialWithUser_password_persistence_( - AVFAudio _lib, NSString user, NSString password, int persistence) { - final _ret = _lib._objc_msgSend_995( - _lib._class_NSURLCredential1, - _lib._sel_credentialWithUser_password_persistence_1, - user._id, - password._id, - persistence); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + static bool canInitWithRequest_(NSURLRequest request) { + return _objc_msgSend_539( + _class_NSURLProtocol, _sel_canInitWithRequest_, request.pointer); + } + + static NSURLRequest canonicalRequestForRequest_(NSURLRequest request) { + final _ret = _objc_msgSend_563(_class_NSURLProtocol, + _sel_canonicalRequestForRequest_, request.pointer); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); + } + + static bool requestIsCacheEquivalent_toRequest_( + NSURLRequest a, NSURLRequest b) { + return _objc_msgSend_564(_class_NSURLProtocol, + _sel_requestIsCacheEquivalent_toRequest_, a.pointer, b.pointer); + } + + void startLoading() { + _objc_msgSend_82(this.pointer, _sel_startLoading); } - NSString? get user { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_user1); + void stopLoading() { + _objc_msgSend_82(this.pointer, _sel_stopLoading); + } + + static objc.NSObject? propertyForKey_inRequest_( + objc.NSString key, NSURLRequest request) { + final _ret = _objc_msgSend_565(_class_NSURLProtocol, + _sel_propertyForKey_inRequest_, key.pointer, request.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static void setProperty_forKey_inRequest_( + objc.NSObject value, objc.NSString key, NSMutableURLRequest request) { + _objc_msgSend_573(_class_NSURLProtocol, _sel_setProperty_forKey_inRequest_, + value.pointer, key.pointer, request.pointer); + } + + static void removePropertyForKey_inRequest_( + objc.NSString key, NSMutableURLRequest request) { + _objc_msgSend_574(_class_NSURLProtocol, + _sel_removePropertyForKey_inRequest_, key.pointer, request.pointer); + } + + static bool registerClass_(objc.NSObject protocolClass) { + return _objc_msgSend_0( + _class_NSURLProtocol, _sel_registerClass_, protocolClass.pointer); + } + + static void unregisterClass_(objc.NSObject protocolClass) { + _objc_msgSend_49( + _class_NSURLProtocol, _sel_unregisterClass_, protocolClass.pointer); } - NSString? get password { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_password1); + static bool canInitWithTask_(NSURLSessionTask task) { + return _objc_msgSend_575( + _class_NSURLProtocol, _sel_canInitWithTask_, task.pointer); + } + + NSURLProtocol initWithTask_cachedResponse_client_(NSURLSessionTask task, + NSCachedURLResponse? cachedResponse, objc.NSObject? client) { + final _ret = _objc_msgSend_576( + this.pointer, + _sel_initWithTask_cachedResponse_client_, + task.pointer, + cachedResponse?.pointer ?? ffi.nullptr, + client?.pointer ?? ffi.nullptr); + return NSURLProtocol.castFromPointer(_ret, retain: true, release: true); + } + + NSURLSessionTask? get task { + final _ret = _objc_msgSend_577(this.pointer, _sel_task); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSURLSessionTask.castFromPointer(_ret, retain: true, release: true); } - bool get hasPassword { - return _lib._objc_msgSend_12(_id, _lib._sel_hasPassword1); + @override + NSURLProtocol init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLProtocol.castFromPointer(_ret, retain: true, release: true); } - NSURLCredential initWithIdentity_certificates_persistence_( - ffi.Pointer<__SecIdentity> identity, - NSArray? certArray, - int persistence) { - final _ret = _lib._objc_msgSend_996( - _id, - _lib._sel_initWithIdentity_certificates_persistence_1, - identity, - certArray?._id ?? ffi.nullptr, - persistence); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + static NSURLProtocol new1() { + final _ret = _objc_msgSend_40(_class_NSURLProtocol, _sel_new); + return NSURLProtocol.castFromPointer(_ret, retain: false, release: true); + } + + static NSURLProtocol allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSURLProtocol, _sel_allocWithZone_, zone); + return NSURLProtocol.castFromPointer(_ret, retain: false, release: true); + } + + static NSURLProtocol alloc() { + final _ret = _objc_msgSend_40(_class_NSURLProtocol, _sel_alloc); + return NSURLProtocol.castFromPointer(_ret, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLProtocol, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); + } + + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLProtocol, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); + } + + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLProtocol, _sel_accessInstanceVariablesDirectly); + } + + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLProtocol, _sel_useStoredAccessor); + } + + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLProtocol, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLProtocol, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static NSURLCredential credentialWithIdentity_certificates_persistence_( - AVFAudio _lib, - ffi.Pointer<__SecIdentity> identity, - NSArray? certArray, - int persistence) { - final _ret = _lib._objc_msgSend_997( - _lib._class_NSURLCredential1, - _lib._sel_credentialWithIdentity_certificates_persistence_1, - identity, - certArray?._id ?? ffi.nullptr, - persistence); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLProtocol, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLProtocol, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSURLProtocol, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLProtocol = objc.getClass("NSURLProtocol"); +late final _sel_initWithRequest_cachedResponse_client_ = + objc.registerName("initWithRequest:cachedResponse:client:"); +final _objc_msgSend_561 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_client = objc.registerName("client"); +late final _sel_request = objc.registerName("request"); +late final _sel_cachedResponse = objc.registerName("cachedResponse"); +final _objc_msgSend_562 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_canInitWithRequest_ = objc.registerName("canInitWithRequest:"); +late final _sel_canonicalRequestForRequest_ = + objc.registerName("canonicalRequestForRequest:"); +final _objc_msgSend_563 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_requestIsCacheEquivalent_toRequest_ = + objc.registerName("requestIsCacheEquivalent:toRequest:"); +final _objc_msgSend_564 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_startLoading = objc.registerName("startLoading"); +late final _sel_stopLoading = objc.registerName("stopLoading"); +late final _sel_propertyForKey_inRequest_ = + objc.registerName("propertyForKey:inRequest:"); +final _objc_msgSend_565 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSMutableURLRequest extends NSURLRequest { + NSMutableURLRequest._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSMutableURLRequest] that points to the same underlying object as [other]. + NSMutableURLRequest.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSMutableURLRequest] that wraps the given raw object pointer. + NSMutableURLRequest.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSMutableURLRequest]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMutableURLRequest); } - ffi.Pointer<__SecIdentity> get identity { - return _lib._objc_msgSend_998(_id, _lib._sel_identity1); + @override + objc.NSURL? get URL { + final _ret = _objc_msgSend_10(this.pointer, _sel_URL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - NSArray get certificates { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_certificates1); - return NSArray._(_ret, _lib, retain: true, release: true); + set URL(objc.NSURL? value) { + return _objc_msgSend_566( + this.pointer, _sel_setURL_, value?.pointer ?? ffi.nullptr); } - NSURLCredential initWithTrust_(ffi.Pointer<__SecTrust> trust) { - final _ret = _lib._objc_msgSend_999(_id, _lib._sel_initWithTrust_1, trust); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + @override + int get cachePolicy { + return _objc_msgSend_322(this.pointer, _sel_cachePolicy); } - static NSURLCredential credentialForTrust_( - AVFAudio _lib, ffi.Pointer<__SecTrust> trust) { - final _ret = _lib._objc_msgSend_1000( - _lib._class_NSURLCredential1, _lib._sel_credentialForTrust_1, trust); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + set cachePolicy(int value) { + return _objc_msgSend_567(this.pointer, _sel_setCachePolicy_, value); } @override - NSURLCredential init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + double get timeoutInterval { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_timeoutInterval) + : _objc_msgSend_115(this.pointer, _sel_timeoutInterval); } - static NSURLCredential new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLCredential1, _lib._sel_new1); - return NSURLCredential._(_ret, _lib, retain: false, release: true); + set timeoutInterval(double value) { + return _objc_msgSend_212(this.pointer, _sel_setTimeoutInterval_, value); } - static NSURLCredential allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLCredential1, _lib._sel_allocWithZone_1, zone); - return NSURLCredential._(_ret, _lib, retain: false, release: true); + @override + objc.NSURL? get mainDocumentURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_mainDocumentURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static NSURLCredential alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLCredential1, _lib._sel_alloc1); - return NSURLCredential._(_ret, _lib, retain: false, release: true); + set mainDocumentURL(objc.NSURL? value) { + return _objc_msgSend_566( + this.pointer, _sel_setMainDocumentURL_, value?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLCredential1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + @override + int get networkServiceType { + return _objc_msgSend_323(this.pointer, _sel_networkServiceType); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLCredential1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + set networkServiceType(int value) { + return _objc_msgSend_568(this.pointer, _sel_setNetworkServiceType_, value); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLCredential1, - _lib._sel_accessInstanceVariablesDirectly1); + @override + bool get allowsCellularAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsCellularAccess); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLCredential1, _lib._sel_useStoredAccessor1); + set allowsCellularAccess(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setAllowsCellularAccess_, value); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLCredential1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + @override + bool get allowsExpensiveNetworkAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsExpensiveNetworkAccess); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLCredential1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + set allowsExpensiveNetworkAccess(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAllowsExpensiveNetworkAccess_, value); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLCredential1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + @override + bool get allowsConstrainedNetworkAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsConstrainedNetworkAccess); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLCredential1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + set allowsConstrainedNetworkAccess(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAllowsConstrainedNetworkAccess_, value); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLCredential1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + @override + bool get assumesHTTP3Capable { + return _objc_msgSend_7(this.pointer, _sel_assumesHTTP3Capable); } -} - -abstract class NSURLCredentialPersistence { - static const int NSURLCredentialPersistenceNone = 0; - static const int NSURLCredentialPersistenceForSession = 1; - static const int NSURLCredentialPersistencePermanent = 2; - static const int NSURLCredentialPersistenceSynchronizable = 3; -} -final class __SecIdentity extends ffi.Opaque {} - -final class __SecTrust extends ffi.Opaque {} - -class NSURLProtectionSpace extends NSObject { - NSURLProtectionSpace._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSURLProtectionSpace] that points to the same underlying object as [other]. - static NSURLProtectionSpace castFrom(T other) { - return NSURLProtectionSpace._(other._id, other._lib, - retain: true, release: true); + set assumesHTTP3Capable(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setAssumesHTTP3Capable_, value); } - /// Returns a [NSURLProtectionSpace] that wraps the given raw object pointer. - static NSURLProtectionSpace castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLProtectionSpace._(other, lib, retain: retain, release: release); + @override + int get attribution { + return _objc_msgSend_324(this.pointer, _sel_attribution); } - /// Returns whether [obj] is an instance of [NSURLProtectionSpace]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLProtectionSpace1); + set attribution(int value) { + return _objc_msgSend_569(this.pointer, _sel_setAttribution_, value); } - NSURLProtectionSpace initWithHost_port_protocol_realm_authenticationMethod_( - NSString host, - int port, - NSString? protocol, - NSString? realm, - NSString? authenticationMethod) { - final _ret = _lib._objc_msgSend_1001( - _id, - _lib._sel_initWithHost_port_protocol_realm_authenticationMethod_1, - host._id, - port, - protocol?._id ?? ffi.nullptr, - realm?._id ?? ffi.nullptr, - authenticationMethod?._id ?? ffi.nullptr); - return NSURLProtectionSpace._(_ret, _lib, retain: true, release: true); + @override + bool get requiresDNSSECValidation { + return _objc_msgSend_7(this.pointer, _sel_requiresDNSSECValidation); } - NSURLProtectionSpace initWithProxyHost_port_type_realm_authenticationMethod_( - NSString host, - int port, - NSString? type, - NSString? realm, - NSString? authenticationMethod) { - final _ret = _lib._objc_msgSend_1001( - _id, - _lib._sel_initWithProxyHost_port_type_realm_authenticationMethod_1, - host._id, - port, - type?._id ?? ffi.nullptr, - realm?._id ?? ffi.nullptr, - authenticationMethod?._id ?? ffi.nullptr); - return NSURLProtectionSpace._(_ret, _lib, retain: true, release: true); + set requiresDNSSECValidation(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setRequiresDNSSECValidation_, value); } - NSString? get realm { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_realm1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + objc.NSString get HTTPMethod { + final _ret = _objc_msgSend_12(this.pointer, _sel_HTTPMethod); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool get receivesCredentialSecurely { - return _lib._objc_msgSend_12(_id, _lib._sel_receivesCredentialSecurely1); + set HTTPMethod(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setHTTPMethod_, value.pointer); } - bool get isProxy { - return _lib._objc_msgSend_12(_id, _lib._sel_isProxy1); + @override + objc.NSDictionary? get allHTTPHeaderFields { + final _ret = _objc_msgSend_65(this.pointer, _sel_allHTTPHeaderFields); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - NSString get host { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_host1); - return NSString._(_ret, _lib, retain: true, release: true); + set allHTTPHeaderFields(objc.NSDictionary? value) { + return _objc_msgSend_173(this.pointer, _sel_setAllHTTPHeaderFields_, + value?.pointer ?? ffi.nullptr); } - int get port { - return _lib._objc_msgSend_83(_id, _lib._sel_port1); + void setValue_forHTTPHeaderField_(objc.NSString? value, objc.NSString field) { + _objc_msgSend_570(this.pointer, _sel_setValue_forHTTPHeaderField_, + value?.pointer ?? ffi.nullptr, field.pointer); } - NSString? get proxyType { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_proxyType1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + void addValue_forHTTPHeaderField_(objc.NSString value, objc.NSString field) { + _objc_msgSend_201(this.pointer, _sel_addValue_forHTTPHeaderField_, + value.pointer, field.pointer); } - NSString? get protocol { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_protocol1); + @override + objc.NSData? get HTTPBody { + final _ret = _objc_msgSend_325(this.pointer, _sel_HTTPBody); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - NSString get authenticationMethod { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_authenticationMethod1); - return NSString._(_ret, _lib, retain: true, release: true); + set HTTPBody(objc.NSData? value) { + return _objc_msgSend_571( + this.pointer, _sel_setHTTPBody_, value?.pointer ?? ffi.nullptr); } - NSArray? get distinguishedNames { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_distinguishedNames1); + @override + NSInputStream? get HTTPBodyStream { + final _ret = _objc_msgSend_342(this.pointer, _sel_HTTPBodyStream); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : NSInputStream.castFromPointer(_ret, retain: true, release: true); } - ffi.Pointer<__SecTrust> get serverTrust { - return _lib._objc_msgSend_1002(_id, _lib._sel_serverTrust1); + set HTTPBodyStream(NSInputStream? value) { + return _objc_msgSend_572( + this.pointer, _sel_setHTTPBodyStream_, value?.pointer ?? ffi.nullptr); } @override - NSURLProtectionSpace init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLProtectionSpace._(_ret, _lib, retain: true, release: true); + bool get HTTPShouldHandleCookies { + return _objc_msgSend_7(this.pointer, _sel_HTTPShouldHandleCookies); } - static NSURLProtectionSpace new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLProtectionSpace1, _lib._sel_new1); - return NSURLProtectionSpace._(_ret, _lib, retain: false, release: true); + set HTTPShouldHandleCookies(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setHTTPShouldHandleCookies_, value); } - static NSURLProtectionSpace allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLProtectionSpace1, _lib._sel_allocWithZone_1, zone); - return NSURLProtectionSpace._(_ret, _lib, retain: false, release: true); + @override + bool get HTTPShouldUsePipelining { + return _objc_msgSend_7(this.pointer, _sel_HTTPShouldUsePipelining); } - static NSURLProtectionSpace alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLProtectionSpace1, _lib._sel_alloc1); - return NSURLProtectionSpace._(_ret, _lib, retain: false, release: true); + set HTTPShouldUsePipelining(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setHTTPShouldUsePipelining_, value); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLProtectionSpace1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static NSMutableURLRequest requestWithURL_(objc.NSURL URL) { + final _ret = _objc_msgSend_320( + _class_NSMutableURLRequest, _sel_requestWithURL_, URL.pointer); + return NSMutableURLRequest.castFromPointer(_ret, + retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLProtectionSpace1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static bool getSupportsSecureCoding() { + return _objc_msgSend_7( + _class_NSMutableURLRequest, _sel_supportsSecureCoding); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLProtectionSpace1, - _lib._sel_accessInstanceVariablesDirectly1); + static NSMutableURLRequest requestWithURL_cachePolicy_timeoutInterval_( + objc.NSURL URL, int cachePolicy, double timeoutInterval) { + final _ret = _objc_msgSend_321( + _class_NSMutableURLRequest, + _sel_requestWithURL_cachePolicy_timeoutInterval_, + URL.pointer, + cachePolicy, + timeoutInterval); + return NSMutableURLRequest.castFromPointer(_ret, + retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLProtectionSpace1, _lib._sel_useStoredAccessor1); + @override + NSMutableURLRequest initWithURL_(objc.NSURL URL) { + final _ret = + _objc_msgSend_320(this.pointer, _sel_initWithURL_, URL.pointer); + return NSMutableURLRequest.castFromPointer(_ret, + retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLProtectionSpace1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + @override + NSMutableURLRequest initWithURL_cachePolicy_timeoutInterval_( + objc.NSURL URL, int cachePolicy, double timeoutInterval) { + final _ret = _objc_msgSend_321( + this.pointer, + _sel_initWithURL_cachePolicy_timeoutInterval_, + URL.pointer, + cachePolicy, + timeoutInterval); + return NSMutableURLRequest.castFromPointer(_ret, + retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLProtectionSpace1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + @override + NSMutableURLRequest init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSMutableURLRequest.castFromPointer(_ret, + retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLProtectionSpace1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static NSMutableURLRequest new1() { + final _ret = _objc_msgSend_40(_class_NSMutableURLRequest, _sel_new); + return NSMutableURLRequest.castFromPointer(_ret, + retain: false, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLProtectionSpace1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSMutableURLRequest allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSMutableURLRequest, _sel_allocWithZone_, zone); + return NSMutableURLRequest.castFromPointer(_ret, + retain: false, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLProtectionSpace1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSMutableURLRequest alloc() { + final _ret = _objc_msgSend_40(_class_NSMutableURLRequest, _sel_alloc); + return NSMutableURLRequest.castFromPointer(_ret, + retain: false, release: true); } -} -class NSURLCredentialStorage extends NSObject { - NSURLCredentialStorage._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSURLCredentialStorage] that points to the same underlying object as [other]. - static NSURLCredentialStorage castFrom(T other) { - return NSURLCredentialStorage._(other._id, other._lib, - retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSMutableURLRequest, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - /// Returns a [NSURLCredentialStorage] that wraps the given raw object pointer. - static NSURLCredentialStorage castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLCredentialStorage._(other, lib, - retain: retain, release: release); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSMutableURLRequest, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - /// Returns whether [obj] is an instance of [NSURLCredentialStorage]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLCredentialStorage1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSMutableURLRequest, _sel_accessInstanceVariablesDirectly); } - static NSURLCredentialStorage getSharedCredentialStorage(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_1003(_lib._class_NSURLCredentialStorage1, - _lib._sel_sharedCredentialStorage1); - return NSURLCredentialStorage._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSMutableURLRequest, _sel_useStoredAccessor); } - NSDictionary? credentialsForProtectionSpace_(NSURLProtectionSpace space) { - final _ret = _lib._objc_msgSend_1004( - _id, _lib._sel_credentialsForProtectionSpace_1, space._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSMutableURLRequest, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSDictionary get allCredentials { - final _ret = _lib._objc_msgSend_181(_id, _lib._sel_allCredentials1); - return NSDictionary._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSMutableURLRequest, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - void setCredential_forProtectionSpace_( - NSURLCredential credential, NSURLProtectionSpace space) { - _lib._objc_msgSend_1005(_id, _lib._sel_setCredential_forProtectionSpace_1, - credential._id, space._id); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSMutableURLRequest, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSMutableURLRequest, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSMutableURLRequest, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSMutableURLRequest = objc.getClass("NSMutableURLRequest"); +late final _sel_setURL_ = objc.registerName("setURL:"); +final _objc_msgSend_566 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCachePolicy_ = objc.registerName("setCachePolicy:"); +final _objc_msgSend_567 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setTimeoutInterval_ = objc.registerName("setTimeoutInterval:"); +late final _sel_setMainDocumentURL_ = objc.registerName("setMainDocumentURL:"); +late final _sel_setNetworkServiceType_ = + objc.registerName("setNetworkServiceType:"); +final _objc_msgSend_568 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setAllowsCellularAccess_ = + objc.registerName("setAllowsCellularAccess:"); +late final _sel_setAllowsExpensiveNetworkAccess_ = + objc.registerName("setAllowsExpensiveNetworkAccess:"); +late final _sel_setAllowsConstrainedNetworkAccess_ = + objc.registerName("setAllowsConstrainedNetworkAccess:"); +late final _sel_setAssumesHTTP3Capable_ = + objc.registerName("setAssumesHTTP3Capable:"); +late final _sel_setAttribution_ = objc.registerName("setAttribution:"); +final _objc_msgSend_569 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setRequiresDNSSECValidation_ = + objc.registerName("setRequiresDNSSECValidation:"); +late final _sel_setHTTPMethod_ = objc.registerName("setHTTPMethod:"); +late final _sel_setAllHTTPHeaderFields_ = + objc.registerName("setAllHTTPHeaderFields:"); +late final _sel_setValue_forHTTPHeaderField_ = + objc.registerName("setValue:forHTTPHeaderField:"); +final _objc_msgSend_570 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_addValue_forHTTPHeaderField_ = + objc.registerName("addValue:forHTTPHeaderField:"); +late final _sel_setHTTPBody_ = objc.registerName("setHTTPBody:"); +final _objc_msgSend_571 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setHTTPBodyStream_ = objc.registerName("setHTTPBodyStream:"); +final _objc_msgSend_572 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setHTTPShouldHandleCookies_ = + objc.registerName("setHTTPShouldHandleCookies:"); +late final _sel_setHTTPShouldUsePipelining_ = + objc.registerName("setHTTPShouldUsePipelining:"); +late final _sel_setProperty_forKey_inRequest_ = + objc.registerName("setProperty:forKey:inRequest:"); +final _objc_msgSend_573 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removePropertyForKey_inRequest_ = + objc.registerName("removePropertyForKey:inRequest:"); +final _objc_msgSend_574 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_registerClass_ = objc.registerName("registerClass:"); +late final _sel_unregisterClass_ = objc.registerName("unregisterClass:"); +late final _sel_canInitWithTask_ = objc.registerName("canInitWithTask:"); +final _objc_msgSend_575 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithTask_cachedResponse_client_ = + objc.registerName("initWithTask:cachedResponse:client:"); +final _objc_msgSend_576 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_task = objc.registerName("task"); +final _objc_msgSend_577 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + +class NSXMLParser extends objc.NSObject { + NSXMLParser._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - void removeCredential_forProtectionSpace_( - NSURLCredential credential, NSURLProtectionSpace space) { - _lib._objc_msgSend_1005( - _id, - _lib._sel_removeCredential_forProtectionSpace_1, - credential._id, - space._id); - } + /// Constructs a [NSXMLParser] that points to the same underlying object as [other]. + NSXMLParser.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - void removeCredential_forProtectionSpace_options_(NSURLCredential credential, - NSURLProtectionSpace space, NSDictionary? options) { - _lib._objc_msgSend_1006( - _id, - _lib._sel_removeCredential_forProtectionSpace_options_1, - credential._id, - space._id, - options?._id ?? ffi.nullptr); + /// Constructs a [NSXMLParser] that wraps the given raw object pointer. + NSXMLParser.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSXMLParser]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSXMLParser); } - NSURLCredential? defaultCredentialForProtectionSpace_( - NSURLProtectionSpace space) { - final _ret = _lib._objc_msgSend_1007( - _id, _lib._sel_defaultCredentialForProtectionSpace_1, space._id); + NSXMLParser? initWithContentsOfURL_(objc.NSURL url) { + final _ret = + _objc_msgSend_3(this.pointer, _sel_initWithContentsOfURL_, url.pointer); return _ret.address == 0 ? null - : NSURLCredential._(_ret, _lib, retain: true, release: true); + : NSXMLParser.castFromPointer(_ret, retain: true, release: true); } - void setDefaultCredential_forProtectionSpace_( - NSURLCredential credential, NSURLProtectionSpace space) { - _lib._objc_msgSend_1005( - _id, - _lib._sel_setDefaultCredential_forProtectionSpace_1, - credential._id, - space._id); + NSXMLParser initWithData_(objc.NSData data) { + final _ret = + _objc_msgSend_340(this.pointer, _sel_initWithData_, data.pointer); + return NSXMLParser.castFromPointer(_ret, retain: true, release: true); } - void getCredentialsForProtectionSpace_task_completionHandler_( - NSURLProtectionSpace protectionSpace, - NSURLSessionTask task, - ObjCBlock_ffiVoid_NSDictionary completionHandler) { - _lib._objc_msgSend_1008( - _id, - _lib._sel_getCredentialsForProtectionSpace_task_completionHandler_1, - protectionSpace._id, - task._id, - completionHandler._id); + NSXMLParser initWithStream_(NSInputStream stream) { + final _ret = + _objc_msgSend_578(this.pointer, _sel_initWithStream_, stream.pointer); + return NSXMLParser.castFromPointer(_ret, retain: true, release: true); } - void setCredential_forProtectionSpace_task_(NSURLCredential credential, - NSURLProtectionSpace protectionSpace, NSURLSessionTask task) { - _lib._objc_msgSend_1009( - _id, - _lib._sel_setCredential_forProtectionSpace_task_1, - credential._id, - protectionSpace._id, - task._id); + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void removeCredential_forProtectionSpace_options_task_( - NSURLCredential credential, - NSURLProtectionSpace protectionSpace, - NSDictionary? options, - NSURLSessionTask task) { - _lib._objc_msgSend_1010( - _id, - _lib._sel_removeCredential_forProtectionSpace_options_task_1, - credential._id, - protectionSpace._id, - options?._id ?? ffi.nullptr, - task._id); + set delegate(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDelegate_, value?.pointer ?? ffi.nullptr); } - void getDefaultCredentialForProtectionSpace_task_completionHandler_( - NSURLProtectionSpace space, - NSURLSessionTask task, - ObjCBlock_ffiVoid_NSURLCredential completionHandler) { - _lib._objc_msgSend_1011( - _id, - _lib._sel_getDefaultCredentialForProtectionSpace_task_completionHandler_1, - space._id, - task._id, - completionHandler._id); + bool get shouldProcessNamespaces { + return _objc_msgSend_7(this.pointer, _sel_shouldProcessNamespaces); } - void setDefaultCredential_forProtectionSpace_task_(NSURLCredential credential, - NSURLProtectionSpace protectionSpace, NSURLSessionTask task) { - _lib._objc_msgSend_1009( - _id, - _lib._sel_setDefaultCredential_forProtectionSpace_task_1, - credential._id, - protectionSpace._id, - task._id); + set shouldProcessNamespaces(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setShouldProcessNamespaces_, value); } - @override - NSURLCredentialStorage init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLCredentialStorage._(_ret, _lib, retain: true, release: true); + bool get shouldReportNamespacePrefixes { + return _objc_msgSend_7(this.pointer, _sel_shouldReportNamespacePrefixes); } - static NSURLCredentialStorage new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLCredentialStorage1, _lib._sel_new1); - return NSURLCredentialStorage._(_ret, _lib, retain: false, release: true); + set shouldReportNamespacePrefixes(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setShouldReportNamespacePrefixes_, value); } - static NSURLCredentialStorage allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLCredentialStorage1, _lib._sel_allocWithZone_1, zone); - return NSURLCredentialStorage._(_ret, _lib, retain: false, release: true); + int get externalEntityResolvingPolicy { + return _objc_msgSend_579(this.pointer, _sel_externalEntityResolvingPolicy); } - static NSURLCredentialStorage alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLCredentialStorage1, _lib._sel_alloc1); - return NSURLCredentialStorage._(_ret, _lib, retain: false, release: true); + set externalEntityResolvingPolicy(int value) { + return _objc_msgSend_580( + this.pointer, _sel_setExternalEntityResolvingPolicy_, value); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLCredentialStorage1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + objc.NSSet? get allowedExternalEntityURLs { + final _ret = + _objc_msgSend_581(this.pointer, _sel_allowedExternalEntityURLs); + return _ret.address == 0 + ? null + : objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLCredentialStorage1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + set allowedExternalEntityURLs(objc.NSSet? value) { + return _objc_msgSend_582(this.pointer, _sel_setAllowedExternalEntityURLs_, + value?.pointer ?? ffi.nullptr); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLCredentialStorage1, - _lib._sel_accessInstanceVariablesDirectly1); + bool parse() { + return _objc_msgSend_7(this.pointer, _sel_parse); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLCredentialStorage1, _lib._sel_useStoredAccessor1); + void abortParsing() { + _objc_msgSend_82(this.pointer, _sel_abortParsing); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLCredentialStorage1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSError? get parserError { + final _ret = _objc_msgSend_328(this.pointer, _sel_parserError); + return _ret.address == 0 + ? null + : objc.NSError.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLCredentialStorage1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + bool get shouldResolveExternalEntities { + return _objc_msgSend_7(this.pointer, _sel_shouldResolveExternalEntities); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLCredentialStorage1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set shouldResolveExternalEntities(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setShouldResolveExternalEntities_, value); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLCredentialStorage1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSString? get publicID { + final _ret = _objc_msgSend_13(this.pointer, _sel_publicID); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLCredentialStorage1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSString? get systemID { + final _ret = _objc_msgSend_13(this.pointer, _sel_systemID); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } -} - -void _ObjCBlock_ffiVoid_NSDictionary_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSDictionary_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSDictionary_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSDictionary_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSDictionary_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSDictionary_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} -void _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSDictionary_closureRegistry[block.ref.target.address]!( - arg0); - -class ObjCBlock_ffiVoid_NSDictionary extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSDictionary._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSDictionary castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSDictionary._(pointer, lib, - retain: retain, release: release); + int get lineNumber { + return _objc_msgSend_114(this.pointer, _sel_lineNumber); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSDictionary.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi - .NativeFunction arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDictionary_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + int get columnNumber { + return _objc_msgSend_114(this.pointer, _sel_columnNumber); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSDictionary.fromFunction( - AVFAudio lib, void Function(NSDictionary?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSDictionary_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSDictionary._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + @override + NSXMLParser init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSXMLParser.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSDictionary.listener( - AVFAudio lib, void Function(NSDictionary?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSDictionary_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSDictionary._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; + static NSXMLParser new1() { + final _ret = _objc_msgSend_40(_class_NSXMLParser, _sel_new); + return NSXMLParser.castFromPointer(_ret, retain: false, release: true); + } - void call(NSDictionary? arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0?._id ?? ffi.nullptr); -} + static NSXMLParser allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSXMLParser, _sel_allocWithZone_, zone); + return NSXMLParser.castFromPointer(_ret, retain: false, release: true); + } -void _ObjCBlock_ffiVoid_NSURLCredential_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSURLCredential_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSURLCredential_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSURLCredential_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + static NSXMLParser alloc() { + final _ret = _objc_msgSend_40(_class_NSXMLParser, _sel_alloc); + return NSXMLParser.castFromPointer(_ret, retain: false, release: true); + } -void _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry[ - block.ref.target.address]!(arg0); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSXMLParser, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); + } -class ObjCBlock_ffiVoid_NSURLCredential extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURLCredential._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSXMLParser, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSURLCredential castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSURLCredential._(pointer, lib, - retain: retain, release: release); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSXMLParser, _sel_accessInstanceVariablesDirectly); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURLCredential.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi - .NativeFunction arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURLCredential_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSXMLParser, _sel_useStoredAccessor); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURLCredential.fromFunction( - AVFAudio lib, void Function(NSURLCredential?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURLCredential_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSURLCredential._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSXMLParser, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSURLCredential.listener( - AVFAudio lib, void Function(NSURLCredential?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSURLCredential_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSURLCredential._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSXMLParser, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); + } - void call(NSURLCredential? arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0?._id ?? ffi.nullptr); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSXMLParser, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSXMLParser, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSXMLParser, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSXMLParser = objc.getClass("NSXMLParser"); +late final _sel_initWithContentsOfURL_ = + objc.registerName("initWithContentsOfURL:"); +late final _sel_initWithStream_ = objc.registerName("initWithStream:"); +final _objc_msgSend_578 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_shouldProcessNamespaces = + objc.registerName("shouldProcessNamespaces"); +late final _sel_setShouldProcessNamespaces_ = + objc.registerName("setShouldProcessNamespaces:"); +late final _sel_shouldReportNamespacePrefixes = + objc.registerName("shouldReportNamespacePrefixes"); +late final _sel_setShouldReportNamespacePrefixes_ = + objc.registerName("setShouldReportNamespacePrefixes:"); + +abstract class NSXMLParserExternalEntityResolvingPolicy { + static const int NSXMLParserResolveExternalEntitiesNever = 0; + static const int NSXMLParserResolveExternalEntitiesNoNetwork = 1; + static const int NSXMLParserResolveExternalEntitiesSameOriginOnly = 2; + static const int NSXMLParserResolveExternalEntitiesAlways = 3; } -class NSURLProtocol extends NSObject { - NSURLProtocol._(ffi.Pointer id, AVFAudio lib, +late final _sel_externalEntityResolvingPolicy = + objc.registerName("externalEntityResolvingPolicy"); +final _objc_msgSend_579 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setExternalEntityResolvingPolicy_ = + objc.registerName("setExternalEntityResolvingPolicy:"); +final _objc_msgSend_580 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_allowedExternalEntityURLs = + objc.registerName("allowedExternalEntityURLs"); +final _objc_msgSend_581 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setAllowedExternalEntityURLs_ = + objc.registerName("setAllowedExternalEntityURLs:"); +final _objc_msgSend_582 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_parse = objc.registerName("parse"); +late final _sel_abortParsing = objc.registerName("abortParsing"); +late final _sel_parserError = objc.registerName("parserError"); +late final _sel_shouldResolveExternalEntities = + objc.registerName("shouldResolveExternalEntities"); +late final _sel_setShouldResolveExternalEntities_ = + objc.registerName("setShouldResolveExternalEntities:"); +late final _sel_publicID = objc.registerName("publicID"); +late final _sel_systemID = objc.registerName("systemID"); +late final _sel_lineNumber = objc.registerName("lineNumber"); +late final _sel_columnNumber = objc.registerName("columnNumber"); + +class NSFileWrapper extends objc.NSObject { + NSFileWrapper._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSFileWrapper] that points to the same underlying object as [other]. + NSFileWrapper.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSFileWrapper] that wraps the given raw object pointer. + NSFileWrapper.castFromPointer(ffi.Pointer other, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : this._(other, retain: retain, release: release); - /// Returns a [NSURLProtocol] that points to the same underlying object as [other]. - static NSURLProtocol castFrom(T other) { - return NSURLProtocol._(other._id, other._lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSFileWrapper]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSFileWrapper); } - /// Returns a [NSURLProtocol] that wraps the given raw object pointer. - static NSURLProtocol castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLProtocol._(other, lib, retain: retain, release: release); + NSFileWrapper? initWithURL_options_error_(objc.NSURL url, int options, + ffi.Pointer> outError) { + final _ret = _objc_msgSend_583(this.pointer, + _sel_initWithURL_options_error_, url.pointer, options, outError); + return _ret.address == 0 + ? null + : NSFileWrapper.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSURLProtocol]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLProtocol1); + NSFileWrapper initDirectoryWithFileWrappers_( + objc.NSDictionary childrenByPreferredName) { + final _ret = _objc_msgSend_409(this.pointer, + _sel_initDirectoryWithFileWrappers_, childrenByPreferredName.pointer); + return NSFileWrapper.castFromPointer(_ret, retain: true, release: true); } - NSURLProtocol initWithRequest_cachedResponse_client_(NSURLRequest request, - NSCachedURLResponse? cachedResponse, NSObject? client) { - final _ret = _lib._objc_msgSend_1012( - _id, - _lib._sel_initWithRequest_cachedResponse_client_1, - request._id, - cachedResponse?._id ?? ffi.nullptr, - client?._id ?? ffi.nullptr); - return NSURLProtocol._(_ret, _lib, retain: true, release: true); - } - - NSObject? get client { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_client1); + NSFileWrapper initRegularFileWithContents_(objc.NSData contents) { + final _ret = _objc_msgSend_340( + this.pointer, _sel_initRegularFileWithContents_, contents.pointer); + return NSFileWrapper.castFromPointer(_ret, retain: true, release: true); + } + + NSFileWrapper initSymbolicLinkWithDestinationURL_(objc.NSURL url) { + final _ret = _objc_msgSend_320( + this.pointer, _sel_initSymbolicLinkWithDestinationURL_, url.pointer); + return NSFileWrapper.castFromPointer(_ret, retain: true, release: true); + } + + NSFileWrapper? initWithSerializedRepresentation_( + objc.NSData serializeRepresentation) { + final _ret = _objc_msgSend_341( + this.pointer, + _sel_initWithSerializedRepresentation_, + serializeRepresentation.pointer); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : NSFileWrapper.castFromPointer(_ret, retain: true, release: true); } - NSURLRequest get request { - final _ret = _lib._objc_msgSend_988(_id, _lib._sel_request1); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + NSFileWrapper? initWithCoder_(objc.NSCoder inCoder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, inCoder.pointer); + return _ret.address == 0 + ? null + : NSFileWrapper.castFromPointer(_ret, retain: true, release: true); } - NSCachedURLResponse? get cachedResponse { - final _ret = _lib._objc_msgSend_1013(_id, _lib._sel_cachedResponse1); + bool get directory { + return _objc_msgSend_7(this.pointer, _sel_isDirectory); + } + + bool get regularFile { + return _objc_msgSend_7(this.pointer, _sel_isRegularFile); + } + + bool get symbolicLink { + return _objc_msgSend_7(this.pointer, _sel_isSymbolicLink); + } + + objc.NSString? get preferredFilename { + final _ret = _objc_msgSend_13(this.pointer, _sel_preferredFilename); return _ret.address == 0 ? null - : NSCachedURLResponse._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool canInitWithRequest_(AVFAudio _lib, NSURLRequest request) { - return _lib._objc_msgSend_990(_lib._class_NSURLProtocol1, - _lib._sel_canInitWithRequest_1, request._id); + set preferredFilename(objc.NSString? value) { + return _objc_msgSend_46(this.pointer, _sel_setPreferredFilename_, + value?.pointer ?? ffi.nullptr); } - static NSURLRequest canonicalRequestForRequest_( - AVFAudio _lib, NSURLRequest request) { - final _ret = _lib._objc_msgSend_1014(_lib._class_NSURLProtocol1, - _lib._sel_canonicalRequestForRequest_1, request._id); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + objc.NSString? get filename { + final _ret = _objc_msgSend_13(this.pointer, _sel_filename); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool requestIsCacheEquivalent_toRequest_( - AVFAudio _lib, NSURLRequest a, NSURLRequest b) { - return _lib._objc_msgSend_1015(_lib._class_NSURLProtocol1, - _lib._sel_requestIsCacheEquivalent_toRequest_1, a._id, b._id); + set filename(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setFilename_, value?.pointer ?? ffi.nullptr); } - void startLoading() { - _lib._objc_msgSend_1(_id, _lib._sel_startLoading1); + objc.NSDictionary get fileAttributes { + final _ret = _objc_msgSend_112(this.pointer, _sel_fileAttributes); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - void stopLoading() { - _lib._objc_msgSend_1(_id, _lib._sel_stopLoading1); + set fileAttributes(objc.NSDictionary value) { + return _objc_msgSend_113( + this.pointer, _sel_setFileAttributes_, value.pointer); + } + + bool matchesContentsOfURL_(objc.NSURL url) { + return _objc_msgSend_305( + this.pointer, _sel_matchesContentsOfURL_, url.pointer); + } + + bool readFromURL_options_error_(objc.NSURL url, int options, + ffi.Pointer> outError) { + return _objc_msgSend_584(this.pointer, _sel_readFromURL_options_error_, + url.pointer, options, outError); + } + + bool writeToURL_options_originalContentsURL_error_( + objc.NSURL url, + int options, + objc.NSURL? originalContentsURL, + ffi.Pointer> outError) { + return _objc_msgSend_585( + this.pointer, + _sel_writeToURL_options_originalContentsURL_error_, + url.pointer, + options, + originalContentsURL?.pointer ?? ffi.nullptr, + outError); } - static NSObject? propertyForKey_inRequest_( - AVFAudio _lib, NSString key, NSURLRequest request) { - final _ret = _lib._objc_msgSend_1016(_lib._class_NSURLProtocol1, - _lib._sel_propertyForKey_inRequest_1, key._id, request._id); + objc.NSData? get serializedRepresentation { + final _ret = _objc_msgSend_325(this.pointer, _sel_serializedRepresentation); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - static void setProperty_forKey_inRequest_(AVFAudio _lib, NSObject value, - NSString key, NSMutableURLRequest request) { - _lib._objc_msgSend_1023( - _lib._class_NSURLProtocol1, - _lib._sel_setProperty_forKey_inRequest_1, - value._id, - key._id, - request._id); + objc.NSString addFileWrapper_(NSFileWrapper child) { + final _ret = + _objc_msgSend_586(this.pointer, _sel_addFileWrapper_, child.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void removePropertyForKey_inRequest_( - AVFAudio _lib, NSString key, NSMutableURLRequest request) { - _lib._objc_msgSend_1024(_lib._class_NSURLProtocol1, - _lib._sel_removePropertyForKey_inRequest_1, key._id, request._id); + objc.NSString addRegularFileWithContents_preferredFilename_( + objc.NSData data, objc.NSString fileName) { + final _ret = _objc_msgSend_587( + this.pointer, + _sel_addRegularFileWithContents_preferredFilename_, + data.pointer, + fileName.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool registerClass_(AVFAudio _lib, NSObject protocolClass) { - return _lib._objc_msgSend_0(_lib._class_NSURLProtocol1, - _lib._sel_registerClass_1, protocolClass._id); + void removeFileWrapper_(NSFileWrapper child) { + _objc_msgSend_588(this.pointer, _sel_removeFileWrapper_, child.pointer); } - static void unregisterClass_(AVFAudio _lib, NSObject protocolClass) { - _lib._objc_msgSend_15(_lib._class_NSURLProtocol1, - _lib._sel_unregisterClass_1, protocolClass._id); + objc.NSDictionary? get fileWrappers { + final _ret = _objc_msgSend_65(this.pointer, _sel_fileWrappers); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static bool canInitWithTask_(AVFAudio _lib, NSURLSessionTask task) { - return _lib._objc_msgSend_1025( - _lib._class_NSURLProtocol1, _lib._sel_canInitWithTask_1, task._id); + objc.NSString? keyForFileWrapper_(NSFileWrapper child) { + final _ret = + _objc_msgSend_589(this.pointer, _sel_keyForFileWrapper_, child.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSURLProtocol initWithTask_cachedResponse_client_(NSURLSessionTask task, - NSCachedURLResponse? cachedResponse, NSObject? client) { - final _ret = _lib._objc_msgSend_1026( - _id, - _lib._sel_initWithTask_cachedResponse_client_1, - task._id, - cachedResponse?._id ?? ffi.nullptr, - client?._id ?? ffi.nullptr); - return NSURLProtocol._(_ret, _lib, retain: true, release: true); + objc.NSData? get regularFileContents { + final _ret = _objc_msgSend_325(this.pointer, _sel_regularFileContents); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - NSURLSessionTask? get task { - final _ret = _lib._objc_msgSend_1027(_id, _lib._sel_task1); + objc.NSURL? get symbolicLinkDestinationURL { + final _ret = + _objc_msgSend_10(this.pointer, _sel_symbolicLinkDestinationURL); return _ret.address == 0 ? null - : NSURLSessionTask._(_ret, _lib, retain: true, release: true); + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - @override - NSURLProtocol init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLProtocol._(_ret, _lib, retain: true, release: true); + objc.NSObject? initWithPath_(objc.NSString path) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_initWithPath_, path.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } + + objc.NSObject initSymbolicLinkWithDestination_(objc.NSString path) { + final _ret = _objc_msgSend_35( + this.pointer, _sel_initSymbolicLinkWithDestination_, path.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } + + bool needsToBeUpdatedFromPath_(objc.NSString path) { + return _objc_msgSend_51( + this.pointer, _sel_needsToBeUpdatedFromPath_, path.pointer); } - static NSURLProtocol new1(AVFAudio _lib) { + bool updateFromPath_(objc.NSString path) { + return _objc_msgSend_51(this.pointer, _sel_updateFromPath_, path.pointer); + } + + bool writeToFile_atomically_updateFilenames_( + objc.NSString path, bool atomicFlag, bool updateFilenamesFlag) { + return _objc_msgSend_590( + this.pointer, + _sel_writeToFile_atomically_updateFilenames_, + path.pointer, + atomicFlag, + updateFilenamesFlag); + } + + objc.NSString addFileWithPath_(objc.NSString path) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLProtocol1, _lib._sel_new1); - return NSURLProtocol._(_ret, _lib, retain: false, release: true); + _objc_msgSend_297(this.pointer, _sel_addFileWithPath_, path.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + objc.NSString addSymbolicLinkWithDestination_preferredFilename_( + objc.NSString path, objc.NSString filename) { + final _ret = _objc_msgSend_591( + this.pointer, + _sel_addSymbolicLinkWithDestination_preferredFilename_, + path.pointer, + filename.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + objc.NSString symbolicLinkDestination() { + final _ret = _objc_msgSend_12(this.pointer, _sel_symbolicLinkDestination); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSFileWrapper init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSFileWrapper.castFromPointer(_ret, retain: true, release: true); } - static NSURLProtocol allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLProtocol1, _lib._sel_allocWithZone_1, zone); - return NSURLProtocol._(_ret, _lib, retain: false, release: true); + static NSFileWrapper new1() { + final _ret = _objc_msgSend_40(_class_NSFileWrapper, _sel_new); + return NSFileWrapper.castFromPointer(_ret, retain: false, release: true); } - static NSURLProtocol alloc(AVFAudio _lib) { + static NSFileWrapper allocWithZone_(ffi.Pointer<_NSZone> zone) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLProtocol1, _lib._sel_alloc1); - return NSURLProtocol._(_ret, _lib, retain: false, release: true); + _objc_msgSend_47(_class_NSFileWrapper, _sel_allocWithZone_, zone); + return NSFileWrapper.castFromPointer(_ret, retain: false, release: true); + } + + static NSFileWrapper alloc() { + final _ret = _objc_msgSend_40(_class_NSFileWrapper, _sel_alloc); + return NSFileWrapper.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLProtocol1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSFileWrapper, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLProtocol1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSFileWrapper, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLProtocol1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSFileWrapper, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLProtocol1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSFileWrapper, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLProtocol1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSFileWrapper, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLProtocol1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSFileWrapper, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLProtocol1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSFileWrapper, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURLProtocol1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSFileWrapper, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLProtocol1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSFileWrapper, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -class NSMutableURLRequest extends NSURLRequest { - NSMutableURLRequest._(ffi.Pointer id, AVFAudio lib, +late final _class_NSFileWrapper = objc.getClass("NSFileWrapper"); + +abstract class NSFileWrapperReadingOptions { + static const int NSFileWrapperReadingImmediate = 1; + static const int NSFileWrapperReadingWithoutMapping = 2; +} + +late final _sel_initWithURL_options_error_ = + objc.registerName("initWithURL:options:error:"); +final _objc_msgSend_583 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_initDirectoryWithFileWrappers_ = + objc.registerName("initDirectoryWithFileWrappers:"); +late final _sel_initRegularFileWithContents_ = + objc.registerName("initRegularFileWithContents:"); +late final _sel_initSymbolicLinkWithDestinationURL_ = + objc.registerName("initSymbolicLinkWithDestinationURL:"); +late final _sel_initWithSerializedRepresentation_ = + objc.registerName("initWithSerializedRepresentation:"); +late final _sel_isDirectory = objc.registerName("isDirectory"); +late final _sel_isRegularFile = objc.registerName("isRegularFile"); +late final _sel_isSymbolicLink = objc.registerName("isSymbolicLink"); +late final _sel_preferredFilename = objc.registerName("preferredFilename"); +late final _sel_setPreferredFilename_ = + objc.registerName("setPreferredFilename:"); +late final _sel_filename = objc.registerName("filename"); +late final _sel_setFilename_ = objc.registerName("setFilename:"); +late final _sel_fileAttributes = objc.registerName("fileAttributes"); +late final _sel_setFileAttributes_ = objc.registerName("setFileAttributes:"); +late final _sel_matchesContentsOfURL_ = + objc.registerName("matchesContentsOfURL:"); +late final _sel_readFromURL_options_error_ = + objc.registerName("readFromURL:options:error:"); +final _objc_msgSend_584 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + +abstract class NSFileWrapperWritingOptions { + static const int NSFileWrapperWritingAtomic = 1; + static const int NSFileWrapperWritingWithNameUpdating = 2; +} + +late final _sel_writeToURL_options_originalContentsURL_error_ = + objc.registerName("writeToURL:options:originalContentsURL:error:"); +final _objc_msgSend_585 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_serializedRepresentation = + objc.registerName("serializedRepresentation"); +late final _sel_addFileWrapper_ = objc.registerName("addFileWrapper:"); +final _objc_msgSend_586 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_addRegularFileWithContents_preferredFilename_ = + objc.registerName("addRegularFileWithContents:preferredFilename:"); +final _objc_msgSend_587 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeFileWrapper_ = objc.registerName("removeFileWrapper:"); +final _objc_msgSend_588 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_fileWrappers = objc.registerName("fileWrappers"); +late final _sel_keyForFileWrapper_ = objc.registerName("keyForFileWrapper:"); +final _objc_msgSend_589 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_regularFileContents = objc.registerName("regularFileContents"); +late final _sel_symbolicLinkDestinationURL = + objc.registerName("symbolicLinkDestinationURL"); +late final _sel_initSymbolicLinkWithDestination_ = + objc.registerName("initSymbolicLinkWithDestination:"); +late final _sel_needsToBeUpdatedFromPath_ = + objc.registerName("needsToBeUpdatedFromPath:"); +late final _sel_updateFromPath_ = objc.registerName("updateFromPath:"); +late final _sel_writeToFile_atomically_updateFilenames_ = + objc.registerName("writeToFile:atomically:updateFilenames:"); +final _objc_msgSend_590 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Bool)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + bool)>(); +late final _sel_addFileWithPath_ = objc.registerName("addFileWithPath:"); +late final _sel_addSymbolicLinkWithDestination_preferredFilename_ = + objc.registerName("addSymbolicLinkWithDestination:preferredFilename:"); +final _objc_msgSend_591 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_symbolicLinkDestination = + objc.registerName("symbolicLinkDestination"); + +class NSURLSession extends objc.NSObject { + NSURLSession._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSMutableURLRequest] that points to the same underlying object as [other]. - static NSMutableURLRequest castFrom(T other) { - return NSMutableURLRequest._(other._id, other._lib, - retain: true, release: true); + /// Constructs a [NSURLSession] that points to the same underlying object as [other]. + NSURLSession.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSURLSession] that wraps the given raw object pointer. + NSURLSession.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLSession]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSession); } - /// Returns a [NSMutableURLRequest] that wraps the given raw object pointer. - static NSMutableURLRequest castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableURLRequest._(other, lib, retain: retain, release: release); + static NSURLSession getSharedSession() { + final _ret = _objc_msgSend_592(_class_NSURLSession, _sel_sharedSession); + return NSURLSession.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSMutableURLRequest]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMutableURLRequest1); + static NSURLSession sessionWithConfiguration_( + NSURLSessionConfiguration configuration) { + final _ret = _objc_msgSend_608(_class_NSURLSession, + _sel_sessionWithConfiguration_, configuration.pointer); + return NSURLSession.castFromPointer(_ret, retain: true, release: true); } - @override - NSURL? get URL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_URL1); + static NSURLSession sessionWithConfiguration_delegate_delegateQueue_( + NSURLSessionConfiguration configuration, + objc.NSObject? delegate, + NSOperationQueue? queue) { + final _ret = _objc_msgSend_609( + _class_NSURLSession, + _sel_sessionWithConfiguration_delegate_delegateQueue_, + configuration.pointer, + delegate?.pointer ?? ffi.nullptr, + queue?.pointer ?? ffi.nullptr); + return NSURLSession.castFromPointer(_ret, retain: true, release: true); + } + + NSOperationQueue get delegateQueue { + final _ret = _objc_msgSend_460(this.pointer, _sel_delegateQueue); + return NSOperationQueue.castFromPointer(_ret, retain: true, release: true); + } + + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); return _ret.address == 0 ? null - : NSURL._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set URL(NSURL? value) { - return _lib._objc_msgSend_671( - _id, _lib._sel_setURL_1, value?._id ?? ffi.nullptr); + NSURLSessionConfiguration get configuration { + final _ret = _objc_msgSend_593(this.pointer, _sel_configuration); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: true, release: true); } - @override - int get cachePolicy { - return _lib._objc_msgSend_859(_id, _lib._sel_cachePolicy1); + objc.NSString? get sessionDescription { + final _ret = _objc_msgSend_13(this.pointer, _sel_sessionDescription); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set cachePolicy(int value) { - return _lib._objc_msgSend_1017(_id, _lib._sel_setCachePolicy_1, value); + set sessionDescription(objc.NSString? value) { + return _objc_msgSend_46(this.pointer, _sel_setSessionDescription_, + value?.pointer ?? ffi.nullptr); } - @override - double get timeoutInterval { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_timeoutInterval1) - : _lib._objc_msgSend_165(_id, _lib._sel_timeoutInterval1); + void finishTasksAndInvalidate() { + _objc_msgSend_82(this.pointer, _sel_finishTasksAndInvalidate); } - set timeoutInterval(double value) { - return _lib._objc_msgSend_542(_id, _lib._sel_setTimeoutInterval_1, value); + void invalidateAndCancel() { + _objc_msgSend_82(this.pointer, _sel_invalidateAndCancel); } - @override - NSURL? get mainDocumentURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_mainDocumentURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + void resetWithCompletionHandler_(ObjCBlock_ffiVoid completionHandler) { + _objc_msgSend_249(this.pointer, _sel_resetWithCompletionHandler_, + completionHandler.pointer); } - set mainDocumentURL(NSURL? value) { - return _lib._objc_msgSend_671( - _id, _lib._sel_setMainDocumentURL_1, value?._id ?? ffi.nullptr); + void flushWithCompletionHandler_(ObjCBlock_ffiVoid completionHandler) { + _objc_msgSend_249(this.pointer, _sel_flushWithCompletionHandler_, + completionHandler.pointer); } - @override - int get networkServiceType { - return _lib._objc_msgSend_860(_id, _lib._sel_networkServiceType1); + void getTasksWithCompletionHandler_( + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray completionHandler) { + _objc_msgSend_610(this.pointer, _sel_getTasksWithCompletionHandler_, + completionHandler.pointer); } - set networkServiceType(int value) { - return _lib._objc_msgSend_1018( - _id, _lib._sel_setNetworkServiceType_1, value); + void getAllTasksWithCompletionHandler_( + ObjCBlock_ffiVoid_NSArray1 completionHandler) { + _objc_msgSend_611(this.pointer, _sel_getAllTasksWithCompletionHandler_, + completionHandler.pointer); } - @override - bool get allowsCellularAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsCellularAccess1); + NSURLSessionDataTask dataTaskWithRequest_(NSURLRequest request) { + final _ret = _objc_msgSend_612( + this.pointer, _sel_dataTaskWithRequest_, request.pointer); + return NSURLSessionDataTask.castFromPointer(_ret, + retain: true, release: true); + } + + NSURLSessionDataTask dataTaskWithURL_(objc.NSURL url) { + final _ret = + _objc_msgSend_613(this.pointer, _sel_dataTaskWithURL_, url.pointer); + return NSURLSessionDataTask.castFromPointer(_ret, + retain: true, release: true); + } + + NSURLSessionUploadTask uploadTaskWithRequest_fromFile_( + NSURLRequest request, objc.NSURL fileURL) { + final _ret = _objc_msgSend_615(this.pointer, + _sel_uploadTaskWithRequest_fromFile_, request.pointer, fileURL.pointer); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); + } + + NSURLSessionUploadTask uploadTaskWithRequest_fromData_( + NSURLRequest request, objc.NSData bodyData) { + final _ret = _objc_msgSend_616( + this.pointer, + _sel_uploadTaskWithRequest_fromData_, + request.pointer, + bodyData.pointer); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); + } + + NSURLSessionUploadTask uploadTaskWithResumeData_(objc.NSData resumeData) { + final _ret = _objc_msgSend_617( + this.pointer, _sel_uploadTaskWithResumeData_, resumeData.pointer); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); + } + + NSURLSessionUploadTask uploadTaskWithStreamedRequest_(NSURLRequest request) { + final _ret = _objc_msgSend_618( + this.pointer, _sel_uploadTaskWithStreamedRequest_, request.pointer); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); + } + + NSURLSessionDownloadTask downloadTaskWithRequest_(NSURLRequest request) { + final _ret = _objc_msgSend_619( + this.pointer, _sel_downloadTaskWithRequest_, request.pointer); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: true, release: true); + } + + NSURLSessionDownloadTask downloadTaskWithURL_(objc.NSURL url) { + final _ret = + _objc_msgSend_620(this.pointer, _sel_downloadTaskWithURL_, url.pointer); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: true, release: true); + } + + NSURLSessionDownloadTask downloadTaskWithResumeData_(objc.NSData resumeData) { + final _ret = _objc_msgSend_621( + this.pointer, _sel_downloadTaskWithResumeData_, resumeData.pointer); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: true, release: true); + } + + NSURLSessionStreamTask streamTaskWithHostName_port_( + objc.NSString hostname, int port) { + final _ret = _objc_msgSend_624(this.pointer, + _sel_streamTaskWithHostName_port_, hostname.pointer, port); + return NSURLSessionStreamTask.castFromPointer(_ret, + retain: true, release: true); + } + + NSURLSessionStreamTask streamTaskWithNetService_(NSNetService service) { + final _ret = _objc_msgSend_633( + this.pointer, _sel_streamTaskWithNetService_, service.pointer); + return NSURLSessionStreamTask.castFromPointer(_ret, + retain: true, release: true); + } + + NSURLSessionWebSocketTask webSocketTaskWithURL_(objc.NSURL url) { + final _ret = _objc_msgSend_640( + this.pointer, _sel_webSocketTaskWithURL_, url.pointer); + return NSURLSessionWebSocketTask.castFromPointer(_ret, + retain: true, release: true); + } + + NSURLSessionWebSocketTask webSocketTaskWithURL_protocols_( + objc.NSURL url, objc.NSArray protocols) { + final _ret = _objc_msgSend_641(this.pointer, + _sel_webSocketTaskWithURL_protocols_, url.pointer, protocols.pointer); + return NSURLSessionWebSocketTask.castFromPointer(_ret, + retain: true, release: true); } - set allowsCellularAccess(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAllowsCellularAccess_1, value); + NSURLSessionWebSocketTask webSocketTaskWithRequest_(NSURLRequest request) { + final _ret = _objc_msgSend_642( + this.pointer, _sel_webSocketTaskWithRequest_, request.pointer); + return NSURLSessionWebSocketTask.castFromPointer(_ret, + retain: true, release: true); } @override - bool get allowsExpensiveNetworkAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsExpensiveNetworkAccess1); + NSURLSession init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSession.castFromPointer(_ret, retain: true, release: true); } - set allowsExpensiveNetworkAccess(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAllowsExpensiveNetworkAccess_1, value); + static NSURLSession new1() { + final _ret = _objc_msgSend_40(_class_NSURLSession, _sel_new); + return NSURLSession.castFromPointer(_ret, retain: false, release: true); } - @override - bool get allowsConstrainedNetworkAccess { - return _lib._objc_msgSend_12( - _id, _lib._sel_allowsConstrainedNetworkAccess1); + NSURLSessionDataTask dataTaskWithRequest_completionHandler_( + NSURLRequest request, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_643( + this.pointer, + _sel_dataTaskWithRequest_completionHandler_, + request.pointer, + completionHandler.pointer); + return NSURLSessionDataTask.castFromPointer(_ret, + retain: true, release: true); } - set allowsConstrainedNetworkAccess(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAllowsConstrainedNetworkAccess_1, value); + NSURLSessionDataTask dataTaskWithURL_completionHandler_(objc.NSURL url, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_644( + this.pointer, + _sel_dataTaskWithURL_completionHandler_, + url.pointer, + completionHandler.pointer); + return NSURLSessionDataTask.castFromPointer(_ret, + retain: true, release: true); } - @override - bool get assumesHTTP3Capable { - return _lib._objc_msgSend_12(_id, _lib._sel_assumesHTTP3Capable1); + NSURLSessionUploadTask uploadTaskWithRequest_fromFile_completionHandler_( + NSURLRequest request, + objc.NSURL fileURL, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_645( + this.pointer, + _sel_uploadTaskWithRequest_fromFile_completionHandler_, + request.pointer, + fileURL.pointer, + completionHandler.pointer); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); } - set assumesHTTP3Capable(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAssumesHTTP3Capable_1, value); + NSURLSessionUploadTask uploadTaskWithRequest_fromData_completionHandler_( + NSURLRequest request, + objc.NSData? bodyData, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_646( + this.pointer, + _sel_uploadTaskWithRequest_fromData_completionHandler_, + request.pointer, + bodyData?.pointer ?? ffi.nullptr, + completionHandler.pointer); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); } - @override - int get attribution { - return _lib._objc_msgSend_861(_id, _lib._sel_attribution1); + NSURLSessionUploadTask uploadTaskWithResumeData_completionHandler_( + objc.NSData resumeData, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_647( + this.pointer, + _sel_uploadTaskWithResumeData_completionHandler_, + resumeData.pointer, + completionHandler.pointer); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); } - set attribution(int value) { - return _lib._objc_msgSend_1019(_id, _lib._sel_setAttribution_1, value); + NSURLSessionDownloadTask downloadTaskWithRequest_completionHandler_( + NSURLRequest request, + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_648( + this.pointer, + _sel_downloadTaskWithRequest_completionHandler_, + request.pointer, + completionHandler.pointer); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: true, release: true); } - @override - bool get requiresDNSSECValidation { - return _lib._objc_msgSend_12(_id, _lib._sel_requiresDNSSECValidation1); + NSURLSessionDownloadTask downloadTaskWithURL_completionHandler_( + objc.NSURL url, + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_649( + this.pointer, + _sel_downloadTaskWithURL_completionHandler_, + url.pointer, + completionHandler.pointer); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: true, release: true); } - set requiresDNSSECValidation(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setRequiresDNSSECValidation_1, value); + NSURLSessionDownloadTask downloadTaskWithResumeData_completionHandler_( + objc.NSData resumeData, + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_650( + this.pointer, + _sel_downloadTaskWithResumeData_completionHandler_, + resumeData.pointer, + completionHandler.pointer); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: true, release: true); } - NSString get HTTPMethod { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_HTTPMethod1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSURLSession allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSURLSession, _sel_allocWithZone_, zone); + return NSURLSession.castFromPointer(_ret, retain: false, release: true); } - set HTTPMethod(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setHTTPMethod_1, value._id); + static NSURLSession alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSession, _sel_alloc); + return NSURLSession.castFromPointer(_ret, retain: false, release: true); } - @override - NSDictionary? get allHTTPHeaderFields { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_allHTTPHeaderFields1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSession, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - set allHTTPHeaderFields(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, _lib._sel_setAllHTTPHeaderFields_1, value?._id ?? ffi.nullptr); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSession, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - void setValue_forHTTPHeaderField_(NSString? value, NSString field) { - _lib._objc_msgSend_1020(_id, _lib._sel_setValue_forHTTPHeaderField_1, - value?._id ?? ffi.nullptr, field._id); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSession, _sel_accessInstanceVariablesDirectly); } - void addValue_forHTTPHeaderField_(NSString value, NSString field) { - _lib._objc_msgSend_551( - _id, _lib._sel_addValue_forHTTPHeaderField_1, value._id, field._id); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLSession, _sel_useStoredAccessor); } - @override - NSData? get HTTPBody { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_HTTPBody1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSession, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - set HTTPBody(NSData? value) { - return _lib._objc_msgSend_1021( - _id, _lib._sel_setHTTPBody_1, value?._id ?? ffi.nullptr); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSession, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - @override - NSInputStream? get HTTPBodyStream { - final _ret = _lib._objc_msgSend_875(_id, _lib._sel_HTTPBodyStream1); - return _ret.address == 0 - ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSession, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - set HTTPBodyStream(NSInputStream? value) { - return _lib._objc_msgSend_1022( - _id, _lib._sel_setHTTPBodyStream_1, value?._id ?? ffi.nullptr); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSession, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - @override - bool get HTTPShouldHandleCookies { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldHandleCookies1); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSURLSession, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - set HTTPShouldHandleCookies(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setHTTPShouldHandleCookies_1, value); +late final _class_NSURLSession = objc.getClass("NSURLSession"); +late final _sel_sharedSession = objc.registerName("sharedSession"); +final _objc_msgSend_592 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + +class NSURLSessionConfiguration extends objc.NSObject { + NSURLSessionConfiguration._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSURLSessionConfiguration] that points to the same underlying object as [other]. + NSURLSessionConfiguration.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSURLSessionConfiguration] that wraps the given raw object pointer. + NSURLSessionConfiguration.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLSessionConfiguration]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionConfiguration); } - @override - bool get HTTPShouldUsePipelining { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldUsePipelining1); + static NSURLSessionConfiguration getDefaultSessionConfiguration() { + final _ret = _objc_msgSend_593( + _class_NSURLSessionConfiguration, _sel_defaultSessionConfiguration); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: true, release: true); } - set HTTPShouldUsePipelining(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setHTTPShouldUsePipelining_1, value); + static NSURLSessionConfiguration getEphemeralSessionConfiguration() { + final _ret = _objc_msgSend_593( + _class_NSURLSessionConfiguration, _sel_ephemeralSessionConfiguration); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: true, release: true); } - static NSMutableURLRequest requestWithURL_(AVFAudio _lib, NSURL URL) { - final _ret = _lib._objc_msgSend_262( - _lib._class_NSMutableURLRequest1, _lib._sel_requestWithURL_1, URL._id); - return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + static NSURLSessionConfiguration + backgroundSessionConfigurationWithIdentifier_(objc.NSString identifier) { + final _ret = _objc_msgSend_594(_class_NSURLSessionConfiguration, + _sel_backgroundSessionConfigurationWithIdentifier_, identifier.pointer); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: true, release: true); } - static bool getSupportsSecureCoding(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableURLRequest1, _lib._sel_supportsSecureCoding1); + objc.NSString? get identifier { + final _ret = _objc_msgSend_13(this.pointer, _sel_identifier); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSMutableURLRequest requestWithURL_cachePolicy_timeoutInterval_( - AVFAudio _lib, NSURL URL, int cachePolicy, double timeoutInterval) { - final _ret = _lib._objc_msgSend_858( - _lib._class_NSMutableURLRequest1, - _lib._sel_requestWithURL_cachePolicy_timeoutInterval_1, - URL._id, - cachePolicy, - timeoutInterval); - return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + int get requestCachePolicy { + return _objc_msgSend_322(this.pointer, _sel_requestCachePolicy); } - @override - NSMutableURLRequest initWithURL_(NSURL URL) { - final _ret = _lib._objc_msgSend_262(_id, _lib._sel_initWithURL_1, URL._id); - return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + set requestCachePolicy(int value) { + return _objc_msgSend_567(this.pointer, _sel_setRequestCachePolicy_, value); } - @override - NSMutableURLRequest initWithURL_cachePolicy_timeoutInterval_( - NSURL URL, int cachePolicy, double timeoutInterval) { - final _ret = _lib._objc_msgSend_858( - _id, - _lib._sel_initWithURL_cachePolicy_timeoutInterval_1, - URL._id, - cachePolicy, - timeoutInterval); - return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + double get timeoutIntervalForRequest { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_timeoutIntervalForRequest) + : _objc_msgSend_115(this.pointer, _sel_timeoutIntervalForRequest); } - @override - NSMutableURLRequest init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + set timeoutIntervalForRequest(double value) { + return _objc_msgSend_212( + this.pointer, _sel_setTimeoutIntervalForRequest_, value); } - static NSMutableURLRequest new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableURLRequest1, _lib._sel_new1); - return NSMutableURLRequest._(_ret, _lib, retain: false, release: true); + double get timeoutIntervalForResource { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_timeoutIntervalForResource) + : _objc_msgSend_115(this.pointer, _sel_timeoutIntervalForResource); } - static NSMutableURLRequest allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMutableURLRequest1, _lib._sel_allocWithZone_1, zone); - return NSMutableURLRequest._(_ret, _lib, retain: false, release: true); + set timeoutIntervalForResource(double value) { + return _objc_msgSend_212( + this.pointer, _sel_setTimeoutIntervalForResource_, value); } - static NSMutableURLRequest alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableURLRequest1, _lib._sel_alloc1); - return NSMutableURLRequest._(_ret, _lib, retain: false, release: true); + int get networkServiceType { + return _objc_msgSend_323(this.pointer, _sel_networkServiceType); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableURLRequest1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set networkServiceType(int value) { + return _objc_msgSend_568(this.pointer, _sel_setNetworkServiceType_, value); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableURLRequest1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + bool get allowsCellularAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsCellularAccess); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMutableURLRequest1, - _lib._sel_accessInstanceVariablesDirectly1); + set allowsCellularAccess(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setAllowsCellularAccess_, value); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableURLRequest1, _lib._sel_useStoredAccessor1); + bool get allowsExpensiveNetworkAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsExpensiveNetworkAccess); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableURLRequest1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + set allowsExpensiveNetworkAccess(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAllowsExpensiveNetworkAccess_, value); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableURLRequest1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + bool get allowsConstrainedNetworkAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsConstrainedNetworkAccess); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableURLRequest1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set allowsConstrainedNetworkAccess(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAllowsConstrainedNetworkAccess_, value); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSMutableURLRequest1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool get requiresDNSSECValidation { + return _objc_msgSend_7(this.pointer, _sel_requiresDNSSECValidation); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableURLRequest1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + set requiresDNSSECValidation(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setRequiresDNSSECValidation_, value); } -} -class NSXMLParser extends NSObject { - NSXMLParser._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + bool get waitsForConnectivity { + return _objc_msgSend_7(this.pointer, _sel_waitsForConnectivity); + } - /// Returns a [NSXMLParser] that points to the same underlying object as [other]. - static NSXMLParser castFrom(T other) { - return NSXMLParser._(other._id, other._lib, retain: true, release: true); + set waitsForConnectivity(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setWaitsForConnectivity_, value); } - /// Returns a [NSXMLParser] that wraps the given raw object pointer. - static NSXMLParser castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSXMLParser._(other, lib, retain: retain, release: release); + bool get discretionary { + return _objc_msgSend_7(this.pointer, _sel_isDiscretionary); } - /// Returns whether [obj] is an instance of [NSXMLParser]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLParser1); + set discretionary(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setDiscretionary_, value); } - NSXMLParser? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_277(_id, _lib._sel_initWithContentsOfURL_1, url._id); + objc.NSString? get sharedContainerIdentifier { + final _ret = _objc_msgSend_13(this.pointer, _sel_sharedContainerIdentifier); return _ret.address == 0 ? null - : NSXMLParser._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSXMLParser initWithData_(NSData data) { - final _ret = - _lib._objc_msgSend_279(_id, _lib._sel_initWithData_1, data._id); - return NSXMLParser._(_ret, _lib, retain: true, release: true); + set sharedContainerIdentifier(objc.NSString? value) { + return _objc_msgSend_46(this.pointer, _sel_setSharedContainerIdentifier_, + value?.pointer ?? ffi.nullptr); } - NSXMLParser initWithStream_(NSInputStream stream) { - final _ret = - _lib._objc_msgSend_1028(_id, _lib._sel_initWithStream_1, stream._id); - return NSXMLParser._(_ret, _lib, retain: true, release: true); + bool get sessionSendsLaunchEvents { + return _objc_msgSend_7(this.pointer, _sel_sessionSendsLaunchEvents); + } + + set sessionSendsLaunchEvents(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setSessionSendsLaunchEvents_, value); } - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); + objc.NSDictionary? get connectionProxyDictionary { + final _ret = _objc_msgSend_65(this.pointer, _sel_connectionProxyDictionary); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + set connectionProxyDictionary(objc.NSDictionary? value) { + return _objc_msgSend_173(this.pointer, _sel_setConnectionProxyDictionary_, + value?.pointer ?? ffi.nullptr); } - bool get shouldProcessNamespaces { - return _lib._objc_msgSend_12(_id, _lib._sel_shouldProcessNamespaces1); + int get TLSMinimumSupportedProtocol { + return _objc_msgSend_595(this.pointer, _sel_TLSMinimumSupportedProtocol); } - set shouldProcessNamespaces(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setShouldProcessNamespaces_1, value); + set TLSMinimumSupportedProtocol(int value) { + return _objc_msgSend_596( + this.pointer, _sel_setTLSMinimumSupportedProtocol_, value); } - bool get shouldReportNamespacePrefixes { - return _lib._objc_msgSend_12(_id, _lib._sel_shouldReportNamespacePrefixes1); + int get TLSMaximumSupportedProtocol { + return _objc_msgSend_595(this.pointer, _sel_TLSMaximumSupportedProtocol); } - set shouldReportNamespacePrefixes(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setShouldReportNamespacePrefixes_1, value); + set TLSMaximumSupportedProtocol(int value) { + return _objc_msgSend_596( + this.pointer, _sel_setTLSMaximumSupportedProtocol_, value); } - int get externalEntityResolvingPolicy { - return _lib._objc_msgSend_1029( - _id, _lib._sel_externalEntityResolvingPolicy1); + int get TLSMinimumSupportedProtocolVersion { + return _objc_msgSend_597( + this.pointer, _sel_TLSMinimumSupportedProtocolVersion); } - set externalEntityResolvingPolicy(int value) { - return _lib._objc_msgSend_1030( - _id, _lib._sel_setExternalEntityResolvingPolicy_1, value); + set TLSMinimumSupportedProtocolVersion(int value) { + return _objc_msgSend_598( + this.pointer, _sel_setTLSMinimumSupportedProtocolVersion_, value); } - NSSet? get allowedExternalEntityURLs { - final _ret = - _lib._objc_msgSend_319(_id, _lib._sel_allowedExternalEntityURLs1); - return _ret.address == 0 - ? null - : NSSet._(_ret, _lib, retain: true, release: true); + int get TLSMaximumSupportedProtocolVersion { + return _objc_msgSend_597( + this.pointer, _sel_TLSMaximumSupportedProtocolVersion); } - set allowedExternalEntityURLs(NSSet? value) { - return _lib._objc_msgSend_1031(_id, - _lib._sel_setAllowedExternalEntityURLs_1, value?._id ?? ffi.nullptr); + set TLSMaximumSupportedProtocolVersion(int value) { + return _objc_msgSend_598( + this.pointer, _sel_setTLSMaximumSupportedProtocolVersion_, value); } - bool parse() { - return _lib._objc_msgSend_12(_id, _lib._sel_parse1); + bool get HTTPShouldUsePipelining { + return _objc_msgSend_7(this.pointer, _sel_HTTPShouldUsePipelining); } - void abortParsing() { - _lib._objc_msgSend_1(_id, _lib._sel_abortParsing1); + set HTTPShouldUsePipelining(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setHTTPShouldUsePipelining_, value); } - NSError? get parserError { - final _ret = _lib._objc_msgSend_322(_id, _lib._sel_parserError1); - return _ret.address == 0 - ? null - : NSError._(_ret, _lib, retain: true, release: true); + bool get HTTPShouldSetCookies { + return _objc_msgSend_7(this.pointer, _sel_HTTPShouldSetCookies); } - bool get shouldResolveExternalEntities { - return _lib._objc_msgSend_12(_id, _lib._sel_shouldResolveExternalEntities1); + set HTTPShouldSetCookies(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setHTTPShouldSetCookies_, value); } - set shouldResolveExternalEntities(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setShouldResolveExternalEntities_1, value); + int get HTTPCookieAcceptPolicy { + return _objc_msgSend_318(this.pointer, _sel_HTTPCookieAcceptPolicy); } - NSString? get publicID { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_publicID1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + set HTTPCookieAcceptPolicy(int value) { + return _objc_msgSend_319( + this.pointer, _sel_setHTTPCookieAcceptPolicy_, value); } - NSString? get systemID { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_systemID1); + objc.NSDictionary? get HTTPAdditionalHeaders { + final _ret = _objc_msgSend_65(this.pointer, _sel_HTTPAdditionalHeaders); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - int get lineNumber { - return _lib._objc_msgSend_83(_id, _lib._sel_lineNumber1); + set HTTPAdditionalHeaders(objc.NSDictionary? value) { + return _objc_msgSend_173(this.pointer, _sel_setHTTPAdditionalHeaders_, + value?.pointer ?? ffi.nullptr); } - int get columnNumber { - return _lib._objc_msgSend_83(_id, _lib._sel_columnNumber1); + int get HTTPMaximumConnectionsPerHost { + return _objc_msgSend_114(this.pointer, _sel_HTTPMaximumConnectionsPerHost); } - @override - NSXMLParser init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLParser._(_ret, _lib, retain: true, release: true); + set HTTPMaximumConnectionsPerHost(int value) { + return _objc_msgSend_134( + this.pointer, _sel_setHTTPMaximumConnectionsPerHost_, value); } - static NSXMLParser new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLParser1, _lib._sel_new1); - return NSXMLParser._(_ret, _lib, retain: false, release: true); + NSHTTPCookieStorage? get HTTPCookieStorage { + final _ret = _objc_msgSend_599(this.pointer, _sel_HTTPCookieStorage); + return _ret.address == 0 + ? null + : NSHTTPCookieStorage.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLParser allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLParser1, _lib._sel_allocWithZone_1, zone); - return NSXMLParser._(_ret, _lib, retain: false, release: true); + set HTTPCookieStorage(NSHTTPCookieStorage? value) { + return _objc_msgSend_600(this.pointer, _sel_setHTTPCookieStorage_, + value?.pointer ?? ffi.nullptr); } - static NSXMLParser alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLParser1, _lib._sel_alloc1); - return NSXMLParser._(_ret, _lib, retain: false, release: true); + NSURLCredentialStorage? get URLCredentialStorage { + final _ret = _objc_msgSend_601(this.pointer, _sel_URLCredentialStorage); + return _ret.address == 0 + ? null + : NSURLCredentialStorage.castFromPointer(_ret, + retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSXMLParser1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set URLCredentialStorage(NSURLCredentialStorage? value) { + return _objc_msgSend_602(this.pointer, _sel_setURLCredentialStorage_, + value?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLParser1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + NSURLCache? get URLCache { + final _ret = _objc_msgSend_603(this.pointer, _sel_URLCache); + return _ret.address == 0 + ? null + : NSURLCache.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLParser1, _lib._sel_accessInstanceVariablesDirectly1); + set URLCache(NSURLCache? value) { + return _objc_msgSend_604( + this.pointer, _sel_setURLCache_, value?.pointer ?? ffi.nullptr); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLParser1, _lib._sel_useStoredAccessor1); + bool get shouldUseExtendedBackgroundIdleMode { + return _objc_msgSend_7( + this.pointer, _sel_shouldUseExtendedBackgroundIdleMode); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSXMLParser1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + set shouldUseExtendedBackgroundIdleMode(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setShouldUseExtendedBackgroundIdleMode_, value); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSXMLParser1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + objc.NSArray? get protocolClasses { + final _ret = _objc_msgSend_69(this.pointer, _sel_protocolClasses); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSXMLParser1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set protocolClasses(objc.NSArray? value) { + return _objc_msgSend_605( + this.pointer, _sel_setProtocolClasses_, value?.pointer ?? ffi.nullptr); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSXMLParser1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + int get multipathServiceType { + return _objc_msgSend_606(this.pointer, _sel_multipathServiceType); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLParser1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + set multipathServiceType(int value) { + return _objc_msgSend_607( + this.pointer, _sel_setMultipathServiceType_, value); } -} - -abstract class NSXMLParserExternalEntityResolvingPolicy { - static const int NSXMLParserResolveExternalEntitiesNever = 0; - static const int NSXMLParserResolveExternalEntitiesNoNetwork = 1; - static const int NSXMLParserResolveExternalEntitiesSameOriginOnly = 2; - static const int NSXMLParserResolveExternalEntitiesAlways = 3; -} - -class NSFileWrapper extends NSObject { - NSFileWrapper._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSFileWrapper] that points to the same underlying object as [other]. - static NSFileWrapper castFrom(T other) { - return NSFileWrapper._(other._id, other._lib, retain: true, release: true); + @override + NSURLSessionConfiguration init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: true, release: true); } - /// Returns a [NSFileWrapper] that wraps the given raw object pointer. - static NSFileWrapper castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSFileWrapper._(other, lib, retain: retain, release: release); + static NSURLSessionConfiguration new1() { + final _ret = _objc_msgSend_40(_class_NSURLSessionConfiguration, _sel_new); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: false, release: true); } - /// Returns whether [obj] is an instance of [NSFileWrapper]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSFileWrapper1); + static NSURLSessionConfiguration backgroundSessionConfiguration_( + objc.NSString identifier) { + final _ret = _objc_msgSend_594(_class_NSURLSessionConfiguration, + _sel_backgroundSessionConfiguration_, identifier.pointer); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: true, release: true); } - NSFileWrapper? initWithURL_options_error_( - NSURL url, int options, ffi.Pointer> outError) { - final _ret = _lib._objc_msgSend_1032( - _id, _lib._sel_initWithURL_options_error_1, url._id, options, outError); - return _ret.address == 0 - ? null - : NSFileWrapper._(_ret, _lib, retain: true, release: true); + static NSURLSessionConfiguration allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLSessionConfiguration, _sel_allocWithZone_, zone); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: false, release: true); } - NSFileWrapper initDirectoryWithFileWrappers_( - NSDictionary childrenByPreferredName) { - final _ret = _lib._objc_msgSend_159(_id, - _lib._sel_initDirectoryWithFileWrappers_1, childrenByPreferredName._id); - return NSFileWrapper._(_ret, _lib, retain: true, release: true); + static NSURLSessionConfiguration alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSessionConfiguration, _sel_alloc); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: false, release: true); } - NSFileWrapper initRegularFileWithContents_(NSData contents) { - final _ret = _lib._objc_msgSend_279( - _id, _lib._sel_initRegularFileWithContents_1, contents._id); - return NSFileWrapper._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionConfiguration, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSFileWrapper initSymbolicLinkWithDestinationURL_(NSURL url) { - final _ret = _lib._objc_msgSend_262( - _id, _lib._sel_initSymbolicLinkWithDestinationURL_1, url._id); - return NSFileWrapper._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionConfiguration, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSFileWrapper? initWithSerializedRepresentation_( - NSData serializeRepresentation) { - final _ret = _lib._objc_msgSend_874( - _id, - _lib._sel_initWithSerializedRepresentation_1, - serializeRepresentation._id); - return _ret.address == 0 - ? null - : NSFileWrapper._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSessionConfiguration, _sel_accessInstanceVariablesDirectly); } - NSFileWrapper? initWithCoder_(NSCoder inCoder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, inCoder._id); - return _ret.address == 0 - ? null - : NSFileWrapper._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSURLSessionConfiguration, _sel_useStoredAccessor); } - bool get directory { - return _lib._objc_msgSend_12(_id, _lib._sel_isDirectory1); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionConfiguration, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - bool get regularFile { - return _lib._objc_msgSend_12(_id, _lib._sel_isRegularFile1); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionConfiguration, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - bool get symbolicLink { - return _lib._objc_msgSend_12(_id, _lib._sel_isSymbolicLink1); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionConfiguration, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSessionConfiguration, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLSessionConfiguration, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLSessionConfiguration = + objc.getClass("NSURLSessionConfiguration"); +late final _sel_defaultSessionConfiguration = + objc.registerName("defaultSessionConfiguration"); +final _objc_msgSend_593 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_ephemeralSessionConfiguration = + objc.registerName("ephemeralSessionConfiguration"); +late final _sel_backgroundSessionConfigurationWithIdentifier_ = + objc.registerName("backgroundSessionConfigurationWithIdentifier:"); +final _objc_msgSend_594 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_identifier = objc.registerName("identifier"); +late final _sel_requestCachePolicy = objc.registerName("requestCachePolicy"); +late final _sel_setRequestCachePolicy_ = + objc.registerName("setRequestCachePolicy:"); +late final _sel_timeoutIntervalForRequest = + objc.registerName("timeoutIntervalForRequest"); +late final _sel_setTimeoutIntervalForRequest_ = + objc.registerName("setTimeoutIntervalForRequest:"); +late final _sel_timeoutIntervalForResource = + objc.registerName("timeoutIntervalForResource"); +late final _sel_setTimeoutIntervalForResource_ = + objc.registerName("setTimeoutIntervalForResource:"); +late final _sel_waitsForConnectivity = + objc.registerName("waitsForConnectivity"); +late final _sel_setWaitsForConnectivity_ = + objc.registerName("setWaitsForConnectivity:"); +late final _sel_isDiscretionary = objc.registerName("isDiscretionary"); +late final _sel_setDiscretionary_ = objc.registerName("setDiscretionary:"); +late final _sel_sharedContainerIdentifier = + objc.registerName("sharedContainerIdentifier"); +late final _sel_setSharedContainerIdentifier_ = + objc.registerName("setSharedContainerIdentifier:"); +late final _sel_sessionSendsLaunchEvents = + objc.registerName("sessionSendsLaunchEvents"); +late final _sel_setSessionSendsLaunchEvents_ = + objc.registerName("setSessionSendsLaunchEvents:"); +late final _sel_connectionProxyDictionary = + objc.registerName("connectionProxyDictionary"); +late final _sel_setConnectionProxyDictionary_ = + objc.registerName("setConnectionProxyDictionary:"); - NSString? get preferredFilename { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_preferredFilename1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } +abstract class SSLProtocol { + static const int kSSLProtocolUnknown = 0; + static const int kTLSProtocol1 = 4; + static const int kTLSProtocol11 = 7; + static const int kTLSProtocol12 = 8; + static const int kDTLSProtocol1 = 9; + static const int kTLSProtocol13 = 10; + static const int kDTLSProtocol12 = 11; + static const int kTLSProtocolMaxSupported = 999; + static const int kSSLProtocol2 = 1; + static const int kSSLProtocol3 = 2; + static const int kSSLProtocol3Only = 3; + static const int kTLSProtocol1Only = 5; + static const int kSSLProtocolAll = 6; +} - set preferredFilename(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setPreferredFilename_1, value?._id ?? ffi.nullptr); - } +late final _sel_TLSMinimumSupportedProtocol = + objc.registerName("TLSMinimumSupportedProtocol"); +final _objc_msgSend_595 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setTLSMinimumSupportedProtocol_ = + objc.registerName("setTLSMinimumSupportedProtocol:"); +final _objc_msgSend_596 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_TLSMaximumSupportedProtocol = + objc.registerName("TLSMaximumSupportedProtocol"); +late final _sel_setTLSMaximumSupportedProtocol_ = + objc.registerName("setTLSMaximumSupportedProtocol:"); - NSString? get filename { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_filename1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } +abstract class tls_protocol_version_t { + static const int tls_protocol_version_TLSv10 = 769; + static const int tls_protocol_version_TLSv11 = 770; + static const int tls_protocol_version_TLSv12 = 771; + static const int tls_protocol_version_TLSv13 = 772; + static const int tls_protocol_version_DTLSv10 = -257; + static const int tls_protocol_version_DTLSv12 = -259; +} - set filename(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setFilename_1, value?._id ?? ffi.nullptr); - } +late final _sel_TLSMinimumSupportedProtocolVersion = + objc.registerName("TLSMinimumSupportedProtocolVersion"); +final _objc_msgSend_597 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setTLSMinimumSupportedProtocolVersion_ = + objc.registerName("setTLSMinimumSupportedProtocolVersion:"); +final _objc_msgSend_598 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_TLSMaximumSupportedProtocolVersion = + objc.registerName("TLSMaximumSupportedProtocolVersion"); +late final _sel_setTLSMaximumSupportedProtocolVersion_ = + objc.registerName("setTLSMaximumSupportedProtocolVersion:"); +late final _sel_HTTPShouldSetCookies = + objc.registerName("HTTPShouldSetCookies"); +late final _sel_setHTTPShouldSetCookies_ = + objc.registerName("setHTTPShouldSetCookies:"); +late final _sel_HTTPCookieAcceptPolicy = + objc.registerName("HTTPCookieAcceptPolicy"); +late final _sel_setHTTPCookieAcceptPolicy_ = + objc.registerName("setHTTPCookieAcceptPolicy:"); +late final _sel_HTTPAdditionalHeaders = + objc.registerName("HTTPAdditionalHeaders"); +late final _sel_setHTTPAdditionalHeaders_ = + objc.registerName("setHTTPAdditionalHeaders:"); +late final _sel_HTTPMaximumConnectionsPerHost = + objc.registerName("HTTPMaximumConnectionsPerHost"); +late final _sel_setHTTPMaximumConnectionsPerHost_ = + objc.registerName("setHTTPMaximumConnectionsPerHost:"); +late final _sel_HTTPCookieStorage = objc.registerName("HTTPCookieStorage"); +final _objc_msgSend_599 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setHTTPCookieStorage_ = + objc.registerName("setHTTPCookieStorage:"); +final _objc_msgSend_600 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_URLCredentialStorage = + objc.registerName("URLCredentialStorage"); +final _objc_msgSend_601 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setURLCredentialStorage_ = + objc.registerName("setURLCredentialStorage:"); +final _objc_msgSend_602 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_URLCache = objc.registerName("URLCache"); +final _objc_msgSend_603 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setURLCache_ = objc.registerName("setURLCache:"); +final _objc_msgSend_604 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_shouldUseExtendedBackgroundIdleMode = + objc.registerName("shouldUseExtendedBackgroundIdleMode"); +late final _sel_setShouldUseExtendedBackgroundIdleMode_ = + objc.registerName("setShouldUseExtendedBackgroundIdleMode:"); +late final _sel_protocolClasses = objc.registerName("protocolClasses"); +late final _sel_setProtocolClasses_ = objc.registerName("setProtocolClasses:"); +final _objc_msgSend_605 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - NSDictionary get fileAttributes { - final _ret = _lib._objc_msgSend_181(_id, _lib._sel_fileAttributes1); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } +abstract class NSURLSessionMultipathServiceType { + static const int NSURLSessionMultipathServiceTypeNone = 0; + static const int NSURLSessionMultipathServiceTypeHandover = 1; + static const int NSURLSessionMultipathServiceTypeInteractive = 2; + static const int NSURLSessionMultipathServiceTypeAggregate = 3; +} - set fileAttributes(NSDictionary value) { - return _lib._objc_msgSend_182( - _id, _lib._sel_setFileAttributes_1, value._id); - } +late final _sel_multipathServiceType = + objc.registerName("multipathServiceType"); +final _objc_msgSend_606 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setMultipathServiceType_ = + objc.registerName("setMultipathServiceType:"); +final _objc_msgSend_607 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_backgroundSessionConfiguration_ = + objc.registerName("backgroundSessionConfiguration:"); +late final _sel_sessionWithConfiguration_ = + objc.registerName("sessionWithConfiguration:"); +final _objc_msgSend_608 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_sessionWithConfiguration_delegate_delegateQueue_ = + objc.registerName("sessionWithConfiguration:delegate:delegateQueue:"); +final _objc_msgSend_609 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_delegateQueue = objc.registerName("delegateQueue"); +late final _sel_configuration = objc.registerName("configuration"); +late final _sel_sessionDescription = objc.registerName("sessionDescription"); +late final _sel_setSessionDescription_ = + objc.registerName("setSessionDescription:"); +late final _sel_finishTasksAndInvalidate = + objc.registerName("finishTasksAndInvalidate"); +late final _sel_invalidateAndCancel = objc.registerName("invalidateAndCancel"); +late final _sel_resetWithCompletionHandler_ = + objc.registerName("resetWithCompletionHandler:"); +late final _sel_flushWithCompletionHandler_ = + objc.registerName("flushWithCompletionHandler:"); +void _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry = , ffi.Pointer, + ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure( + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer) + fn) { + final id = ++_ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - bool matchesContentsOfURL_(NSURL url) { - return _lib._objc_msgSend_265( - _id, _lib._sel_matchesContentsOfURL_1, url._id); - } +void _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); - bool readFromURL_options_error_( - NSURL url, int options, ffi.Pointer> outError) { - return _lib._objc_msgSend_1033( - _id, _lib._sel_readFromURL_options_error_1, url._id, options, outError); - } +class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); - bool writeToURL_options_originalContentsURL_error_( - NSURL url, - int options, - NSURL? originalContentsURL, - ffi.Pointer> outError) { - return _lib._objc_msgSend_1034( - _id, - _lib._sel_writeToURL_options_originalContentsURL_error_1, - url._id, - options, - originalContentsURL?._id ?? ffi.nullptr, - outError); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSArray_NSArray_NSArray castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSArray_NSArray_NSArray._(pointer, + retain: retain, release: release); } - NSData? get serializedRepresentation { - final _ret = - _lib._objc_msgSend_286(_id, _lib._sel_serializedRepresentation1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - NSString addFileWrapper_(NSFileWrapper child) { - final _ret = - _lib._objc_msgSend_1035(_id, _lib._sel_addFileWrapper_1, child._id); - return NSString._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.fromFunction( + void Function(objc.NSArray, objc.NSArray, objc.NSArray) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= + ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + objc.NSArray.castFromPointer(arg0, retain: true, release: true), + objc.NSArray.castFromPointer(arg1, retain: true, release: true), + objc.NSArray.castFromPointer(arg2, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; - NSString addRegularFileWithContents_preferredFilename_( - NSData data, NSString fileName) { - final _ret = _lib._objc_msgSend_1036( - _id, - _lib._sel_addRegularFileWithContents_preferredFilename_1, - data._id, - fileName._id); - return NSString._(_ret, _lib, retain: true, release: true); - } + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.listener( + void Function(objc.NSArray, objc.NSArray, objc.NSArray) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= + ffi.NativeCallable, ffi.Pointer, ffi.Pointer, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + objc.NSArray.castFromPointer(arg0, retain: true, release: true), + objc.NSArray.castFromPointer(arg1, retain: true, release: true), + objc.NSArray.castFromPointer(arg2, retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; - void removeFileWrapper_(NSFileWrapper child) { - _lib._objc_msgSend_1037(_id, _lib._sel_removeFileWrapper_1, child._id); - } + void call(objc.NSArray arg0, objc.NSArray arg1, objc.NSArray arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0.pointer, arg1.pointer, arg2.pointer); +} + +late final _sel_getTasksWithCompletionHandler_ = + objc.registerName("getTasksWithCompletionHandler:"); +final _objc_msgSend_610 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSArray1_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSArray1_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSArray1_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSArray1_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSArray1_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSArray1_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - NSDictionary? get fileWrappers { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_fileWrappers1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } +void _ObjCBlock_ffiVoid_NSArray1_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSArray1_closureRegistry[block.ref.target.address]!( + arg0); - NSString? keyForFileWrapper_(NSFileWrapper child) { - final _ret = - _lib._objc_msgSend_1038(_id, _lib._sel_keyForFileWrapper_1, child._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } +class ObjCBlock_ffiVoid_NSArray1 extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSArray1._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - NSData? get regularFileContents { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_regularFileContents1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSArray1 castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSArray1._(pointer, + retain: retain, release: release); } - NSURL? get symbolicLinkDestinationURL { - final _ret = - _lib._objc_msgSend_45(_id, _lib._sel_symbolicLinkDestinationURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSArray1.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSArray1_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - NSObject? initWithPath_(NSString path) { - final _ret = _lib._objc_msgSend_38(_id, _lib._sel_initWithPath_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSArray1.fromFunction(void Function(objc.NSArray) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSArray1_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSArray1_registerClosure( + (ffi.Pointer arg0) => fn( + objc.NSArray.castFromPointer(arg0, + retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; - NSObject initSymbolicLinkWithDestination_(NSString path) { - final _ret = _lib._objc_msgSend_31( - _id, _lib._sel_initSymbolicLinkWithDestination_1, path._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSArray1.listener(void Function(objc.NSArray) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSArray1_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSArray1_registerClosure( + (ffi.Pointer arg0) => fn( + objc.NSArray.castFromPointer(arg0, + retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; - bool needsToBeUpdatedFromPath_(NSString path) { - return _lib._objc_msgSend_64( - _id, _lib._sel_needsToBeUpdatedFromPath_1, path._id); - } + void call(objc.NSArray arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(pointer, arg0.pointer); +} + +late final _sel_getAllTasksWithCompletionHandler_ = + objc.registerName("getAllTasksWithCompletionHandler:"); +final _objc_msgSend_611 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dataTaskWithRequest_ = + objc.registerName("dataTaskWithRequest:"); +final _objc_msgSend_612 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dataTaskWithURL_ = objc.registerName("dataTaskWithURL:"); +final _objc_msgSend_613 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - bool updateFromPath_(NSString path) { - return _lib._objc_msgSend_64(_id, _lib._sel_updateFromPath_1, path._id); - } +class NSURLSessionUploadTask extends NSURLSessionDataTask { + NSURLSessionUploadTask._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - bool writeToFile_atomically_updateFilenames_( - NSString path, bool atomicFlag, bool updateFilenamesFlag) { - return _lib._objc_msgSend_1039( - _id, - _lib._sel_writeToFile_atomically_updateFilenames_1, - path._id, - atomicFlag, - updateFilenamesFlag); - } + /// Constructs a [NSURLSessionUploadTask] that points to the same underlying object as [other]. + NSURLSessionUploadTask.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSString addFileWithPath_(NSString path) { - final _ret = - _lib._objc_msgSend_69(_id, _lib._sel_addFileWithPath_1, path._id); - return NSString._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSURLSessionUploadTask] that wraps the given raw object pointer. + NSURLSessionUploadTask.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSString addSymbolicLinkWithDestination_preferredFilename_( - NSString path, NSString filename) { - final _ret = _lib._objc_msgSend_364( - _id, - _lib._sel_addSymbolicLinkWithDestination_preferredFilename_1, - path._id, - filename._id); - return NSString._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSURLSessionUploadTask]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionUploadTask); } - NSString symbolicLinkDestination() { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_symbolicLinkDestination1); - return NSString._(_ret, _lib, retain: true, release: true); + @override + NSURLSessionUploadTask init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); } - @override - NSFileWrapper init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSFileWrapper._(_ret, _lib, retain: true, release: true); + static NSURLSessionUploadTask new1() { + final _ret = _objc_msgSend_40(_class_NSURLSessionUploadTask, _sel_new); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: false, release: true); } - static NSFileWrapper new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFileWrapper1, _lib._sel_new1); - return NSFileWrapper._(_ret, _lib, retain: false, release: true); + void cancelByProducingResumeData_( + ObjCBlock_ffiVoid_NSData completionHandler) { + _objc_msgSend_614(this.pointer, _sel_cancelByProducingResumeData_, + completionHandler.pointer); } - static NSFileWrapper allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSFileWrapper1, _lib._sel_allocWithZone_1, zone); - return NSFileWrapper._(_ret, _lib, retain: false, release: true); + static NSURLSessionUploadTask allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLSessionUploadTask, _sel_allocWithZone_, zone); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: false, release: true); } - static NSFileWrapper alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFileWrapper1, _lib._sel_alloc1); - return NSFileWrapper._(_ret, _lib, retain: false, release: true); + static NSURLSessionUploadTask alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSessionUploadTask, _sel_alloc); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSFileWrapper1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionUploadTask, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSFileWrapper1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionUploadTask, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFileWrapper1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSessionUploadTask, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFileWrapper1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSURLSessionUploadTask, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSFileWrapper1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionUploadTask, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSFileWrapper1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionUploadTask, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSFileWrapper1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionUploadTask, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSFileWrapper1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSessionUploadTask, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSFileWrapper1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLSessionUploadTask, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -abstract class NSFileWrapperReadingOptions { - static const int NSFileWrapperReadingImmediate = 1; - static const int NSFileWrapperReadingWithoutMapping = 2; +late final _class_NSURLSessionUploadTask = + objc.getClass("NSURLSessionUploadTask"); +void _ObjCBlock_ffiVoid_NSData_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSData_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSData_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSData_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSData_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSData_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); } -abstract class NSFileWrapperWritingOptions { - static const int NSFileWrapperWritingAtomic = 1; - static const int NSFileWrapperWritingWithNameUpdating = 2; -} +void _ObjCBlock_ffiVoid_NSData_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSData_closureRegistry[block.ref.target.address]!(arg0); -class NSURLSession extends NSObject { - NSURLSession._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); +class ObjCBlock_ffiVoid_NSData extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSData._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - /// Returns a [NSURLSession] that points to the same underlying object as [other]. - static NSURLSession castFrom(T other) { - return NSURLSession._(other._id, other._lib, retain: true, release: true); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSData castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSData._(pointer, + retain: retain, release: release); } - /// Returns a [NSURLSession] that wraps the given raw object pointer. - static NSURLSession castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSession._(other, lib, retain: retain, release: release); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSData.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSData_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - /// Returns whether [obj] is an instance of [NSURLSession]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLSession1); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSData.fromFunction(void Function(objc.NSData?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSData_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSData_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSData.castFromPointer(arg0, + retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; - static NSURLSession getSharedSession(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_1040( - _lib._class_NSURLSession1, _lib._sel_sharedSession1); - return NSURLSession._(_ret, _lib, retain: true, release: true); - } + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSData.listener(void Function(objc.NSData?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSData_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSData_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSData.castFromPointer(arg0, retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; - static NSURLSession sessionWithConfiguration_( - AVFAudio _lib, NSURLSessionConfiguration configuration) { - final _ret = _lib._objc_msgSend_1056(_lib._class_NSURLSession1, - _lib._sel_sessionWithConfiguration_1, configuration._id); - return NSURLSession._(_ret, _lib, retain: true, release: true); - } + void call(objc.NSData? arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function( + ffi.Pointer, ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr); +} + +late final _sel_cancelByProducingResumeData_ = + objc.registerName("cancelByProducingResumeData:"); +final _objc_msgSend_614 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_uploadTaskWithRequest_fromFile_ = + objc.registerName("uploadTaskWithRequest:fromFile:"); +final _objc_msgSend_615 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_uploadTaskWithRequest_fromData_ = + objc.registerName("uploadTaskWithRequest:fromData:"); +final _objc_msgSend_616 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_uploadTaskWithResumeData_ = + objc.registerName("uploadTaskWithResumeData:"); +final _objc_msgSend_617 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_uploadTaskWithStreamedRequest_ = + objc.registerName("uploadTaskWithStreamedRequest:"); +final _objc_msgSend_618 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - static NSURLSession sessionWithConfiguration_delegate_delegateQueue_( - AVFAudio _lib, - NSURLSessionConfiguration configuration, - NSObject? delegate, - NSOperationQueue? queue) { - final _ret = _lib._objc_msgSend_1057( - _lib._class_NSURLSession1, - _lib._sel_sessionWithConfiguration_delegate_delegateQueue_1, - configuration._id, - delegate?._id ?? ffi.nullptr, - queue?._id ?? ffi.nullptr); - return NSURLSession._(_ret, _lib, retain: true, release: true); - } +class NSURLSessionDownloadTask extends NSURLSessionTask { + NSURLSessionDownloadTask._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSOperationQueue get delegateQueue { - final _ret = _lib._objc_msgSend_917(_id, _lib._sel_delegateQueue1); - return NSOperationQueue._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSURLSessionDownloadTask] that points to the same underlying object as [other]. + NSURLSessionDownloadTask.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSURLSessionDownloadTask] that wraps the given raw object pointer. + NSURLSessionDownloadTask.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSURLSessionConfiguration get configuration { - final _ret = _lib._objc_msgSend_1041(_id, _lib._sel_configuration1); - return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSURLSessionDownloadTask]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionDownloadTask); } - NSString? get sessionDescription { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_sessionDescription1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + void cancelByProducingResumeData_( + ObjCBlock_ffiVoid_NSData completionHandler) { + _objc_msgSend_614(this.pointer, _sel_cancelByProducingResumeData_, + completionHandler.pointer); } - set sessionDescription(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setSessionDescription_1, value?._id ?? ffi.nullptr); + @override + NSURLSessionDownloadTask init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: true, release: true); } - void finishTasksAndInvalidate() { - _lib._objc_msgSend_1(_id, _lib._sel_finishTasksAndInvalidate1); + static NSURLSessionDownloadTask new1() { + final _ret = _objc_msgSend_40(_class_NSURLSessionDownloadTask, _sel_new); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: false, release: true); } - void invalidateAndCancel() { - _lib._objc_msgSend_1(_id, _lib._sel_invalidateAndCancel1); + static NSURLSessionDownloadTask allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLSessionDownloadTask, _sel_allocWithZone_, zone); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: false, release: true); } - void resetWithCompletionHandler_(ObjCBlock_ffiVoid completionHandler) { - _lib._objc_msgSend_532( - _id, _lib._sel_resetWithCompletionHandler_1, completionHandler._id); + static NSURLSessionDownloadTask alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSessionDownloadTask, _sel_alloc); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: false, release: true); } - void flushWithCompletionHandler_(ObjCBlock_ffiVoid completionHandler) { - _lib._objc_msgSend_532( - _id, _lib._sel_flushWithCompletionHandler_1, completionHandler._id); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionDownloadTask, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - void getTasksWithCompletionHandler_( - ObjCBlock_ffiVoid_NSArray_NSArray_NSArray completionHandler) { - _lib._objc_msgSend_1058( - _id, _lib._sel_getTasksWithCompletionHandler_1, completionHandler._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionDownloadTask, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - void getAllTasksWithCompletionHandler_( - ObjCBlock_ffiVoid_NSArray1 completionHandler) { - _lib._objc_msgSend_1059(_id, _lib._sel_getAllTasksWithCompletionHandler_1, - completionHandler._id); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSessionDownloadTask, _sel_accessInstanceVariablesDirectly); } - NSURLSessionDataTask dataTaskWithRequest_(NSURLRequest request) { - final _ret = _lib._objc_msgSend_1060( - _id, _lib._sel_dataTaskWithRequest_1, request._id); - return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSURLSessionDownloadTask, _sel_useStoredAccessor); } - NSURLSessionDataTask dataTaskWithURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_1061(_id, _lib._sel_dataTaskWithURL_1, url._id); - return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionDownloadTask, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSURLSessionUploadTask uploadTaskWithRequest_fromFile_( - NSURLRequest request, NSURL fileURL) { - final _ret = _lib._objc_msgSend_1063(_id, - _lib._sel_uploadTaskWithRequest_fromFile_1, request._id, fileURL._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionDownloadTask, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSURLSessionUploadTask uploadTaskWithRequest_fromData_( - NSURLRequest request, NSData bodyData) { - final _ret = _lib._objc_msgSend_1064(_id, - _lib._sel_uploadTaskWithRequest_fromData_1, request._id, bodyData._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionDownloadTask, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSessionDownloadTask, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLSessionDownloadTask, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLSessionDownloadTask = + objc.getClass("NSURLSessionDownloadTask"); +late final _sel_downloadTaskWithRequest_ = + objc.registerName("downloadTaskWithRequest:"); +final _objc_msgSend_619 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_downloadTaskWithURL_ = + objc.registerName("downloadTaskWithURL:"); +final _objc_msgSend_620 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_downloadTaskWithResumeData_ = + objc.registerName("downloadTaskWithResumeData:"); +final _objc_msgSend_621 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - NSURLSessionUploadTask uploadTaskWithResumeData_(NSData resumeData) { - final _ret = _lib._objc_msgSend_1065( - _id, _lib._sel_uploadTaskWithResumeData_1, resumeData._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); - } +class NSURLSessionStreamTask extends NSURLSessionTask { + NSURLSessionStreamTask._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSURLSessionUploadTask uploadTaskWithStreamedRequest_(NSURLRequest request) { - final _ret = _lib._objc_msgSend_1066( - _id, _lib._sel_uploadTaskWithStreamedRequest_1, request._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSURLSessionStreamTask] that points to the same underlying object as [other]. + NSURLSessionStreamTask.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSURLSessionDownloadTask downloadTaskWithRequest_(NSURLRequest request) { - final _ret = _lib._objc_msgSend_1067( - _id, _lib._sel_downloadTaskWithRequest_1, request._id); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + /// Constructs a [NSURLSessionStreamTask] that wraps the given raw object pointer. + NSURLSessionStreamTask.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLSessionStreamTask]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionStreamTask); } - NSURLSessionDownloadTask downloadTaskWithURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_1068(_id, _lib._sel_downloadTaskWithURL_1, url._id); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + void readDataOfMinLength_maxLength_timeout_completionHandler_( + int minBytes, + int maxBytes, + double timeout, + ObjCBlock_ffiVoid_NSData_bool_NSError completionHandler) { + _objc_msgSend_622( + this.pointer, + _sel_readDataOfMinLength_maxLength_timeout_completionHandler_, + minBytes, + maxBytes, + timeout, + completionHandler.pointer); } - NSURLSessionDownloadTask downloadTaskWithResumeData_(NSData resumeData) { - final _ret = _lib._objc_msgSend_1069( - _id, _lib._sel_downloadTaskWithResumeData_1, resumeData._id); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + void writeData_timeout_completionHandler_(objc.NSData data, double timeout, + ObjCBlock_ffiVoid_NSError completionHandler) { + _objc_msgSend_623(this.pointer, _sel_writeData_timeout_completionHandler_, + data.pointer, timeout, completionHandler.pointer); } - NSURLSessionStreamTask streamTaskWithHostName_port_( - NSString hostname, int port) { - final _ret = _lib._objc_msgSend_1072( - _id, _lib._sel_streamTaskWithHostName_port_1, hostname._id, port); - return NSURLSessionStreamTask._(_ret, _lib, retain: true, release: true); + void captureStreams() { + _objc_msgSend_82(this.pointer, _sel_captureStreams); } - NSURLSessionStreamTask streamTaskWithNetService_(NSNetService service) { - final _ret = _lib._objc_msgSend_1080( - _id, _lib._sel_streamTaskWithNetService_1, service._id); - return NSURLSessionStreamTask._(_ret, _lib, retain: true, release: true); + void closeWrite() { + _objc_msgSend_82(this.pointer, _sel_closeWrite); } - NSURLSessionWebSocketTask webSocketTaskWithURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_1087(_id, _lib._sel_webSocketTaskWithURL_1, url._id); - return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + void closeRead() { + _objc_msgSend_82(this.pointer, _sel_closeRead); } - NSURLSessionWebSocketTask webSocketTaskWithURL_protocols_( - NSURL url, NSArray protocols) { - final _ret = _lib._objc_msgSend_1088(_id, - _lib._sel_webSocketTaskWithURL_protocols_1, url._id, protocols._id); - return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + void startSecureConnection() { + _objc_msgSend_82(this.pointer, _sel_startSecureConnection); } - NSURLSessionWebSocketTask webSocketTaskWithRequest_(NSURLRequest request) { - final _ret = _lib._objc_msgSend_1089( - _id, _lib._sel_webSocketTaskWithRequest_1, request._id); - return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + void stopSecureConnection() { + _objc_msgSend_82(this.pointer, _sel_stopSecureConnection); } @override - NSURLSession init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSession._(_ret, _lib, retain: true, release: true); + NSURLSessionStreamTask init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionStreamTask.castFromPointer(_ret, + retain: true, release: true); } - static NSURLSession new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLSession1, _lib._sel_new1); - return NSURLSession._(_ret, _lib, retain: false, release: true); + static NSURLSessionStreamTask new1() { + final _ret = _objc_msgSend_40(_class_NSURLSessionStreamTask, _sel_new); + return NSURLSessionStreamTask.castFromPointer(_ret, + retain: false, release: true); } - NSURLSessionDataTask dataTaskWithRequest_completionHandler_( - NSURLRequest request, - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1090( - _id, - _lib._sel_dataTaskWithRequest_completionHandler_1, - request._id, - completionHandler._id); - return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + static NSURLSessionStreamTask allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLSessionStreamTask, _sel_allocWithZone_, zone); + return NSURLSessionStreamTask.castFromPointer(_ret, + retain: false, release: true); } - NSURLSessionDataTask dataTaskWithURL_completionHandler_(NSURL url, - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1091( - _id, - _lib._sel_dataTaskWithURL_completionHandler_1, - url._id, - completionHandler._id); - return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + static NSURLSessionStreamTask alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSessionStreamTask, _sel_alloc); + return NSURLSessionStreamTask.castFromPointer(_ret, + retain: false, release: true); } - NSURLSessionUploadTask uploadTaskWithRequest_fromFile_completionHandler_( - NSURLRequest request, - NSURL fileURL, - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1092( - _id, - _lib._sel_uploadTaskWithRequest_fromFile_completionHandler_1, - request._id, - fileURL._id, - completionHandler._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionStreamTask, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSURLSessionUploadTask uploadTaskWithRequest_fromData_completionHandler_( - NSURLRequest request, - NSData? bodyData, - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1093( - _id, - _lib._sel_uploadTaskWithRequest_fromData_completionHandler_1, - request._id, - bodyData?._id ?? ffi.nullptr, - completionHandler._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionStreamTask, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSURLSessionUploadTask uploadTaskWithResumeData_completionHandler_( - NSData resumeData, - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1094( - _id, - _lib._sel_uploadTaskWithResumeData_completionHandler_1, - resumeData._id, - completionHandler._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSessionStreamTask, _sel_accessInstanceVariablesDirectly); } - NSURLSessionDownloadTask downloadTaskWithRequest_completionHandler_( - NSURLRequest request, - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1095( - _id, - _lib._sel_downloadTaskWithRequest_completionHandler_1, - request._id, - completionHandler._id); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSURLSessionStreamTask, _sel_useStoredAccessor); } - NSURLSessionDownloadTask downloadTaskWithURL_completionHandler_(NSURL url, - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1096( - _id, - _lib._sel_downloadTaskWithURL_completionHandler_1, - url._id, - completionHandler._id); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionStreamTask, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSURLSessionDownloadTask downloadTaskWithResumeData_completionHandler_( - NSData resumeData, - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1097( - _id, - _lib._sel_downloadTaskWithResumeData_completionHandler_1, - resumeData._id, - completionHandler._id); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionStreamTask, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static NSURLSession allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSession1, _lib._sel_allocWithZone_1, zone); - return NSURLSession._(_ret, _lib, retain: false, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionStreamTask, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSURLSession alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLSession1, _lib._sel_alloc1); - return NSURLSession._(_ret, _lib, retain: false, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSessionStreamTask, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSession1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLSessionStreamTask, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSession1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } +late final _class_NSURLSessionStreamTask = + objc.getClass("NSURLSessionStreamTask"); +void _ObjCBlock_ffiVoid_NSData_bool_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Bool arg1, ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer, bool, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry = , bool, ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure( + void Function( + ffi.Pointer, bool, ffi.Pointer) + fn) { + final id = ++_ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); + +class ObjCBlock_ffiVoid_NSData_bool_NSError extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSData_bool_NSError._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSession1, _lib._sel_accessInstanceVariablesDirectly1); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSData_bool_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSData_bool_NSError._(pointer, + retain: retain, release: release); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSession1, _lib._sel_useStoredAccessor1); + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSData_bool_NSError.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Bool arg1, ffi.Pointer arg2)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSData_bool_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSData_bool_NSError.fromFunction( + void Function(objc.NSData, bool, objc.NSError?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure( + (ffi.Pointer arg0, bool arg1, + ffi.Pointer arg2) => + fn(objc.NSData.castFromPointer(arg0, retain: true, release: true), arg1, arg2.address == 0 ? null : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSData_bool_NSError.listener( + void Function(objc.NSData, bool, objc.NSError?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= + ffi.NativeCallable, ffi.Pointer, ffi.Bool, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure( + (ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) => fn( + objc.NSData.castFromPointer(arg0, + retain: true, release: true), + arg1, + arg2.address == 0 + ? null + : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(objc.NSData arg0, bool arg1, objc.NSError? arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer)>()( + pointer, arg0.pointer, arg1, arg2?.pointer ?? ffi.nullptr); +} + +late final _sel_readDataOfMinLength_maxLength_timeout_completionHandler_ = objc + .registerName("readDataOfMinLength:maxLength:timeout:completionHandler:"); +final _objc_msgSend_622 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Double, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + double, + ffi.Pointer)>(); +late final _sel_writeData_timeout_completionHandler_ = + objc.registerName("writeData:timeout:completionHandler:"); +final _objc_msgSend_623 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer)>(); +late final _sel_captureStreams = objc.registerName("captureStreams"); +late final _sel_closeWrite = objc.registerName("closeWrite"); +late final _sel_closeRead = objc.registerName("closeRead"); +late final _sel_startSecureConnection = + objc.registerName("startSecureConnection"); +late final _sel_stopSecureConnection = + objc.registerName("stopSecureConnection"); +late final _sel_streamTaskWithHostName_port_ = + objc.registerName("streamTaskWithHostName:port:"); +final _objc_msgSend_624 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); + +class NSNetService extends objc.NSObject { + NSNetService._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSNetService] that points to the same underlying object as [other]. + NSNetService.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSNetService] that wraps the given raw object pointer. + NSNetService.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSNetService]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSNetService); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSession1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + NSNetService initWithDomain_type_name_port_( + objc.NSString domain, objc.NSString type, objc.NSString name, int port) { + final _ret = _objc_msgSend_625( + this.pointer, + _sel_initWithDomain_type_name_port_, + domain.pointer, + type.pointer, + name.pointer, + port); + return NSNetService.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSession1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + NSNetService initWithDomain_type_name_( + objc.NSString domain, objc.NSString type, objc.NSString name) { + final _ret = _objc_msgSend_626(this.pointer, _sel_initWithDomain_type_name_, + domain.pointer, type.pointer, name.pointer); + return NSNetService.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSession1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + void scheduleInRunLoop_forMode_(NSRunLoop aRunLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_scheduleInRunLoop_forMode_, + aRunLoop.pointer, mode.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURLSession1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + void removeFromRunLoop_forMode_(NSRunLoop aRunLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_removeFromRunLoop_forMode_, + aRunLoop.pointer, mode.pointer); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSession1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } -} -class NSURLSessionConfiguration extends NSObject { - NSURLSessionConfiguration._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + set delegate(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDelegate_, value?.pointer ?? ffi.nullptr); + } - /// Returns a [NSURLSessionConfiguration] that points to the same underlying object as [other]. - static NSURLSessionConfiguration castFrom(T other) { - return NSURLSessionConfiguration._(other._id, other._lib, - retain: true, release: true); + bool get includesPeerToPeer { + return _objc_msgSend_7(this.pointer, _sel_includesPeerToPeer); } - /// Returns a [NSURLSessionConfiguration] that wraps the given raw object pointer. - static NSURLSessionConfiguration castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionConfiguration._(other, lib, - retain: retain, release: release); + set includesPeerToPeer(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setIncludesPeerToPeer_, value); } - /// Returns whether [obj] is an instance of [NSURLSessionConfiguration]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionConfiguration1); + objc.NSString get name { + final _ret = _objc_msgSend_12(this.pointer, _sel_name); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionConfiguration getDefaultSessionConfiguration( - AVFAudio _lib) { - final _ret = _lib._objc_msgSend_1041(_lib._class_NSURLSessionConfiguration1, - _lib._sel_defaultSessionConfiguration1); - return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + objc.NSString get type { + final _ret = _objc_msgSend_12(this.pointer, _sel_type); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionConfiguration getEphemeralSessionConfiguration( - AVFAudio _lib) { - final _ret = _lib._objc_msgSend_1041(_lib._class_NSURLSessionConfiguration1, - _lib._sel_ephemeralSessionConfiguration1); - return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + objc.NSString get domain { + final _ret = _objc_msgSend_12(this.pointer, _sel_domain); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionConfiguration - backgroundSessionConfigurationWithIdentifier_( - AVFAudio _lib, NSString identifier) { - final _ret = _lib._objc_msgSend_1042( - _lib._class_NSURLSessionConfiguration1, - _lib._sel_backgroundSessionConfigurationWithIdentifier_1, - identifier._id); - return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + objc.NSString? get hostName { + final _ret = _objc_msgSend_13(this.pointer, _sel_hostName); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? get identifier { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_identifier1); + objc.NSArray? get addresses { + final _ret = _objc_msgSend_69(this.pointer, _sel_addresses); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int get requestCachePolicy { - return _lib._objc_msgSend_859(_id, _lib._sel_requestCachePolicy1); + int get port { + return _objc_msgSend_114(this.pointer, _sel_port); } - set requestCachePolicy(int value) { - return _lib._objc_msgSend_1017( - _id, _lib._sel_setRequestCachePolicy_1, value); + void publish() { + _objc_msgSend_82(this.pointer, _sel_publish); } - double get timeoutIntervalForRequest { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret( - _id, _lib._sel_timeoutIntervalForRequest1) - : _lib._objc_msgSend_165(_id, _lib._sel_timeoutIntervalForRequest1); + void publishWithOptions_(int options) { + _objc_msgSend_627(this.pointer, _sel_publishWithOptions_, options); } - set timeoutIntervalForRequest(double value) { - return _lib._objc_msgSend_542( - _id, _lib._sel_setTimeoutIntervalForRequest_1, value); + void resolve() { + _objc_msgSend_82(this.pointer, _sel_resolve); } - double get timeoutIntervalForResource { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret( - _id, _lib._sel_timeoutIntervalForResource1) - : _lib._objc_msgSend_165(_id, _lib._sel_timeoutIntervalForResource1); + void stop() { + _objc_msgSend_82(this.pointer, _sel_stop); } - set timeoutIntervalForResource(double value) { - return _lib._objc_msgSend_542( - _id, _lib._sel_setTimeoutIntervalForResource_1, value); + static objc.NSDictionary dictionaryFromTXTRecordData_(objc.NSData txtData) { + final _ret = _objc_msgSend_628(_class_NSNetService, + _sel_dictionaryFromTXTRecordData_, txtData.pointer); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - int get networkServiceType { - return _lib._objc_msgSend_860(_id, _lib._sel_networkServiceType1); + static objc.NSData dataFromTXTRecordDictionary_( + objc.NSDictionary txtDictionary) { + final _ret = _objc_msgSend_629(_class_NSNetService, + _sel_dataFromTXTRecordDictionary_, txtDictionary.pointer); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - set networkServiceType(int value) { - return _lib._objc_msgSend_1018( - _id, _lib._sel_setNetworkServiceType_1, value); + void resolveWithTimeout_(double timeout) { + _objc_msgSend_630(this.pointer, _sel_resolveWithTimeout_, timeout); } - bool get allowsCellularAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsCellularAccess1); + bool getInputStream_outputStream_( + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + return _objc_msgSend_631(this.pointer, _sel_getInputStream_outputStream_, + inputStream, outputStream); } - set allowsCellularAccess(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAllowsCellularAccess_1, value); + bool setTXTRecordData_(objc.NSData? recordData) { + return _objc_msgSend_632(this.pointer, _sel_setTXTRecordData_, + recordData?.pointer ?? ffi.nullptr); } - bool get allowsExpensiveNetworkAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsExpensiveNetworkAccess1); + objc.NSData? TXTRecordData() { + final _ret = _objc_msgSend_325(this.pointer, _sel_TXTRecordData); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - set allowsExpensiveNetworkAccess(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAllowsExpensiveNetworkAccess_1, value); + void startMonitoring() { + _objc_msgSend_82(this.pointer, _sel_startMonitoring); } - bool get allowsConstrainedNetworkAccess { - return _lib._objc_msgSend_12( - _id, _lib._sel_allowsConstrainedNetworkAccess1); + void stopMonitoring() { + _objc_msgSend_82(this.pointer, _sel_stopMonitoring); } - set allowsConstrainedNetworkAccess(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAllowsConstrainedNetworkAccess_1, value); + @override + NSNetService init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSNetService.castFromPointer(_ret, retain: true, release: true); } - bool get requiresDNSSECValidation { - return _lib._objc_msgSend_12(_id, _lib._sel_requiresDNSSECValidation1); + static NSNetService new1() { + final _ret = _objc_msgSend_40(_class_NSNetService, _sel_new); + return NSNetService.castFromPointer(_ret, retain: false, release: true); } - set requiresDNSSECValidation(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setRequiresDNSSECValidation_1, value); + static NSNetService allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSNetService, _sel_allocWithZone_, zone); + return NSNetService.castFromPointer(_ret, retain: false, release: true); } - bool get waitsForConnectivity { - return _lib._objc_msgSend_12(_id, _lib._sel_waitsForConnectivity1); + static NSNetService alloc() { + final _ret = _objc_msgSend_40(_class_NSNetService, _sel_alloc); + return NSNetService.castFromPointer(_ret, retain: false, release: true); } - set waitsForConnectivity(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setWaitsForConnectivity_1, value); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSNetService, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - bool get discretionary { - return _lib._objc_msgSend_12(_id, _lib._sel_isDiscretionary1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSNetService, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - set discretionary(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setDiscretionary_1, value); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSNetService, _sel_accessInstanceVariablesDirectly); } - NSString? get sharedContainerIdentifier { - final _ret = - _lib._objc_msgSend_44(_id, _lib._sel_sharedContainerIdentifier1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSNetService, _sel_useStoredAccessor); } - set sharedContainerIdentifier(NSString? value) { - return _lib._objc_msgSend_545(_id, _lib._sel_setSharedContainerIdentifier_1, - value?._id ?? ffi.nullptr); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSNetService, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - bool get sessionSendsLaunchEvents { - return _lib._objc_msgSend_12(_id, _lib._sel_sessionSendsLaunchEvents1); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSNetService, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - set sessionSendsLaunchEvents(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setSessionSendsLaunchEvents_1, value); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSNetService, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSNetService, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSNetService, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSNetService = objc.getClass("NSNetService"); +late final _sel_initWithDomain_type_name_port_ = + objc.registerName("initWithDomain:type:name:port:"); +final _objc_msgSend_625 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_initWithDomain_type_name_ = + objc.registerName("initWithDomain:type:name:"); +final _objc_msgSend_626 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_includesPeerToPeer = objc.registerName("includesPeerToPeer"); +late final _sel_setIncludesPeerToPeer_ = + objc.registerName("setIncludesPeerToPeer:"); +late final _sel_type = objc.registerName("type"); +late final _sel_publish = objc.registerName("publish"); + +abstract class NSNetServiceOptions { + static const int NSNetServiceNoAutoRename = 1; + static const int NSNetServiceListenForConnections = 2; +} + +late final _sel_publishWithOptions_ = objc.registerName("publishWithOptions:"); +final _objc_msgSend_627 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_resolve = objc.registerName("resolve"); +late final _sel_stop = objc.registerName("stop"); +late final _sel_dictionaryFromTXTRecordData_ = + objc.registerName("dictionaryFromTXTRecordData:"); +final _objc_msgSend_628 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dataFromTXTRecordDictionary_ = + objc.registerName("dataFromTXTRecordDictionary:"); +final _objc_msgSend_629 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_resolveWithTimeout_ = objc.registerName("resolveWithTimeout:"); +final _objc_msgSend_630 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Double)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, double)>(); +late final _sel_getInputStream_outputStream_ = + objc.registerName("getInputStream:outputStream:"); +final _objc_msgSend_631 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); +late final _sel_setTXTRecordData_ = objc.registerName("setTXTRecordData:"); +final _objc_msgSend_632 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_TXTRecordData = objc.registerName("TXTRecordData"); +late final _sel_startMonitoring = objc.registerName("startMonitoring"); +late final _sel_stopMonitoring = objc.registerName("stopMonitoring"); +late final _sel_streamTaskWithNetService_ = + objc.registerName("streamTaskWithNetService:"); +final _objc_msgSend_633 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSURLSessionWebSocketTask extends NSURLSessionTask { + NSURLSessionWebSocketTask._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSURLSessionWebSocketTask] that points to the same underlying object as [other]. + NSURLSessionWebSocketTask.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSURLSessionWebSocketTask] that wraps the given raw object pointer. + NSURLSessionWebSocketTask.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLSessionWebSocketTask]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionWebSocketTask); } - NSDictionary? get connectionProxyDictionary { - final _ret = - _lib._objc_msgSend_390(_id, _lib._sel_connectionProxyDictionary1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + void sendMessage_completionHandler_(NSURLSessionWebSocketMessage message, + ObjCBlock_ffiVoid_NSError completionHandler) { + _objc_msgSend_635(this.pointer, _sel_sendMessage_completionHandler_, + message.pointer, completionHandler.pointer); } - set connectionProxyDictionary(NSDictionary? value) { - return _lib._objc_msgSend_634(_id, _lib._sel_setConnectionProxyDictionary_1, - value?._id ?? ffi.nullptr); + void receiveMessageWithCompletionHandler_( + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError + completionHandler) { + _objc_msgSend_636(this.pointer, _sel_receiveMessageWithCompletionHandler_, + completionHandler.pointer); } - int get TLSMinimumSupportedProtocol { - return _lib._objc_msgSend_1043(_id, _lib._sel_TLSMinimumSupportedProtocol1); + void sendPingWithPongReceiveHandler_( + ObjCBlock_ffiVoid_NSError pongReceiveHandler) { + _objc_msgSend_637(this.pointer, _sel_sendPingWithPongReceiveHandler_, + pongReceiveHandler.pointer); } - set TLSMinimumSupportedProtocol(int value) { - return _lib._objc_msgSend_1044( - _id, _lib._sel_setTLSMinimumSupportedProtocol_1, value); + void cancelWithCloseCode_reason_(int closeCode, objc.NSData? reason) { + _objc_msgSend_638(this.pointer, _sel_cancelWithCloseCode_reason_, closeCode, + reason?.pointer ?? ffi.nullptr); } - int get TLSMaximumSupportedProtocol { - return _lib._objc_msgSend_1043(_id, _lib._sel_TLSMaximumSupportedProtocol1); + int get maximumMessageSize { + return _objc_msgSend_114(this.pointer, _sel_maximumMessageSize); } - set TLSMaximumSupportedProtocol(int value) { - return _lib._objc_msgSend_1044( - _id, _lib._sel_setTLSMaximumSupportedProtocol_1, value); + set maximumMessageSize(int value) { + return _objc_msgSend_134(this.pointer, _sel_setMaximumMessageSize_, value); } - int get TLSMinimumSupportedProtocolVersion { - return _lib._objc_msgSend_1045( - _id, _lib._sel_TLSMinimumSupportedProtocolVersion1); + int get closeCode { + return _objc_msgSend_639(this.pointer, _sel_closeCode); } - set TLSMinimumSupportedProtocolVersion(int value) { - return _lib._objc_msgSend_1046( - _id, _lib._sel_setTLSMinimumSupportedProtocolVersion_1, value); + objc.NSData? get closeReason { + final _ret = _objc_msgSend_325(this.pointer, _sel_closeReason); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSURLSessionWebSocketTask init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionWebSocketTask.castFromPointer(_ret, + retain: true, release: true); } - int get TLSMaximumSupportedProtocolVersion { - return _lib._objc_msgSend_1045( - _id, _lib._sel_TLSMaximumSupportedProtocolVersion1); + static NSURLSessionWebSocketTask new1() { + final _ret = _objc_msgSend_40(_class_NSURLSessionWebSocketTask, _sel_new); + return NSURLSessionWebSocketTask.castFromPointer(_ret, + retain: false, release: true); } - set TLSMaximumSupportedProtocolVersion(int value) { - return _lib._objc_msgSend_1046( - _id, _lib._sel_setTLSMaximumSupportedProtocolVersion_1, value); + static NSURLSessionWebSocketTask allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLSessionWebSocketTask, _sel_allocWithZone_, zone); + return NSURLSessionWebSocketTask.castFromPointer(_ret, + retain: false, release: true); } - bool get HTTPShouldUsePipelining { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldUsePipelining1); + static NSURLSessionWebSocketTask alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSessionWebSocketTask, _sel_alloc); + return NSURLSessionWebSocketTask.castFromPointer(_ret, + retain: false, release: true); } - set HTTPShouldUsePipelining(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setHTTPShouldUsePipelining_1, value); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionWebSocketTask, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - bool get HTTPShouldSetCookies { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldSetCookies1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionWebSocketTask, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - set HTTPShouldSetCookies(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setHTTPShouldSetCookies_1, value); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSessionWebSocketTask, _sel_accessInstanceVariablesDirectly); } - int get HTTPCookieAcceptPolicy { - return _lib._objc_msgSend_856(_id, _lib._sel_HTTPCookieAcceptPolicy1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSURLSessionWebSocketTask, _sel_useStoredAccessor); } - set HTTPCookieAcceptPolicy(int value) { - return _lib._objc_msgSend_857( - _id, _lib._sel_setHTTPCookieAcceptPolicy_1, value); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionWebSocketTask, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSDictionary? get HTTPAdditionalHeaders { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_HTTPAdditionalHeaders1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionWebSocketTask, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - set HTTPAdditionalHeaders(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, _lib._sel_setHTTPAdditionalHeaders_1, value?._id ?? ffi.nullptr); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionWebSocketTask, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - int get HTTPMaximumConnectionsPerHost { - return _lib._objc_msgSend_83(_id, _lib._sel_HTTPMaximumConnectionsPerHost1); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSessionWebSocketTask, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set HTTPMaximumConnectionsPerHost(int value) { - return _lib._objc_msgSend_635( - _id, _lib._sel_setHTTPMaximumConnectionsPerHost_1, value); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLSessionWebSocketTask, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - NSHTTPCookieStorage? get HTTPCookieStorage { - final _ret = _lib._objc_msgSend_1047(_id, _lib._sel_HTTPCookieStorage1); - return _ret.address == 0 - ? null - : NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); - } +late final _class_NSURLSessionWebSocketTask = + objc.getClass("NSURLSessionWebSocketTask"); - set HTTPCookieStorage(NSHTTPCookieStorage? value) { - return _lib._objc_msgSend_1048( - _id, _lib._sel_setHTTPCookieStorage_1, value?._id ?? ffi.nullptr); - } +class NSURLSessionWebSocketMessage extends objc.NSObject { + NSURLSessionWebSocketMessage._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSURLCredentialStorage? get URLCredentialStorage { - final _ret = _lib._objc_msgSend_1049(_id, _lib._sel_URLCredentialStorage1); - return _ret.address == 0 - ? null - : NSURLCredentialStorage._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSURLSessionWebSocketMessage] that points to the same underlying object as [other]. + NSURLSessionWebSocketMessage.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - set URLCredentialStorage(NSURLCredentialStorage? value) { - return _lib._objc_msgSend_1050( - _id, _lib._sel_setURLCredentialStorage_1, value?._id ?? ffi.nullptr); - } + /// Constructs a [NSURLSessionWebSocketMessage] that wraps the given raw object pointer. + NSURLSessionWebSocketMessage.castFromPointer( + ffi.Pointer other, + {bool retain = false, + bool release = false}) + : this._(other, retain: retain, release: release); - NSURLCache? get URLCache { - final _ret = _lib._objc_msgSend_1051(_id, _lib._sel_URLCache1); - return _ret.address == 0 - ? null - : NSURLCache._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSURLSessionWebSocketMessage]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionWebSocketMessage); } - set URLCache(NSURLCache? value) { - return _lib._objc_msgSend_1052( - _id, _lib._sel_setURLCache_1, value?._id ?? ffi.nullptr); + NSURLSessionWebSocketMessage initWithData_(objc.NSData data) { + final _ret = + _objc_msgSend_340(this.pointer, _sel_initWithData_, data.pointer); + return NSURLSessionWebSocketMessage.castFromPointer(_ret, + retain: true, release: true); } - bool get shouldUseExtendedBackgroundIdleMode { - return _lib._objc_msgSend_12( - _id, _lib._sel_shouldUseExtendedBackgroundIdleMode1); + NSURLSessionWebSocketMessage initWithString_(objc.NSString string) { + final _ret = + _objc_msgSend_35(this.pointer, _sel_initWithString_, string.pointer); + return NSURLSessionWebSocketMessage.castFromPointer(_ret, + retain: true, release: true); } - set shouldUseExtendedBackgroundIdleMode(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setShouldUseExtendedBackgroundIdleMode_1, value); + int get type { + return _objc_msgSend_634(this.pointer, _sel_type); } - NSArray? get protocolClasses { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_protocolClasses1); + objc.NSData? get data { + final _ret = _objc_msgSend_325(this.pointer, _sel_data); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - set protocolClasses(NSArray? value) { - return _lib._objc_msgSend_1053( - _id, _lib._sel_setProtocolClasses_1, value?._id ?? ffi.nullptr); - } - - int get multipathServiceType { - return _lib._objc_msgSend_1054(_id, _lib._sel_multipathServiceType1); + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - set multipathServiceType(int value) { - return _lib._objc_msgSend_1055( - _id, _lib._sel_setMultipathServiceType_1, value); + objc.NSString? get string { + final _ret = _objc_msgSend_13(this.pointer, _sel_string); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } @override - NSURLSessionConfiguration init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + NSURLSessionWebSocketMessage init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionWebSocketMessage.castFromPointer(_ret, + retain: true, release: true); } - static NSURLSessionConfiguration new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionConfiguration1, _lib._sel_new1); - return NSURLSessionConfiguration._(_ret, _lib, + static NSURLSessionWebSocketMessage new1() { + final _ret = + _objc_msgSend_40(_class_NSURLSessionWebSocketMessage, _sel_new); + return NSURLSessionWebSocketMessage.castFromPointer(_ret, retain: false, release: true); } - static NSURLSessionConfiguration backgroundSessionConfiguration_( - AVFAudio _lib, NSString identifier) { - final _ret = _lib._objc_msgSend_1042(_lib._class_NSURLSessionConfiguration1, - _lib._sel_backgroundSessionConfiguration_1, identifier._id); - return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); - } - - static NSURLSessionConfiguration allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSURLSessionConfiguration1, - _lib._sel_allocWithZone_1, zone); - return NSURLSessionConfiguration._(_ret, _lib, + static NSURLSessionWebSocketMessage allocWithZone_( + ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLSessionWebSocketMessage, _sel_allocWithZone_, zone); + return NSURLSessionWebSocketMessage.castFromPointer(_ret, retain: false, release: true); } - static NSURLSessionConfiguration alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionConfiguration1, _lib._sel_alloc1); - return NSURLSessionConfiguration._(_ret, _lib, + static NSURLSessionWebSocketMessage alloc() { + final _ret = + _objc_msgSend_40(_class_NSURLSessionWebSocketMessage, _sel_alloc); + return NSURLSessionWebSocketMessage.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionConfiguration1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionWebSocketMessage, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionConfiguration1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionWebSocketMessage, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionConfiguration1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7(_class_NSURLSessionWebSocketMessage, + _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionConfiguration1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSURLSessionWebSocketMessage, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSessionConfiguration1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionWebSocketMessage, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionConfiguration1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionWebSocketMessage, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionConfiguration1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionWebSocketMessage, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLSessionConfiguration1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6(_class_NSURLSessionWebSocketMessage, + _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionConfiguration1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLSessionWebSocketMessage, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -abstract class SSLProtocol { - static const int kSSLProtocolUnknown = 0; - static const int kTLSProtocol1 = 4; - static const int kTLSProtocol11 = 7; - static const int kTLSProtocol12 = 8; - static const int kDTLSProtocol1 = 9; - static const int kTLSProtocol13 = 10; - static const int kDTLSProtocol12 = 11; - static const int kTLSProtocolMaxSupported = 999; - static const int kSSLProtocol2 = 1; - static const int kSSLProtocol3 = 2; - static const int kSSLProtocol3Only = 3; - static const int kTLSProtocol1Only = 5; - static const int kSSLProtocolAll = 6; +late final _class_NSURLSessionWebSocketMessage = + objc.getClass("NSURLSessionWebSocketMessage"); + +abstract class NSURLSessionWebSocketMessageType { + static const int NSURLSessionWebSocketMessageTypeData = 0; + static const int NSURLSessionWebSocketMessageTypeString = 1; } -abstract class tls_protocol_version_t { - static const int tls_protocol_version_TLSv10 = 769; - static const int tls_protocol_version_TLSv11 = 770; - static const int tls_protocol_version_TLSv12 = 771; - static const int tls_protocol_version_TLSv13 = 772; - static const int tls_protocol_version_DTLSv10 = -257; - static const int tls_protocol_version_DTLSv12 = -259; +final _objc_msgSend_634 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_sendMessage_completionHandler_ = + objc.registerName("sendMessage:completionHandler:"); +final _objc_msgSend_635 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +final _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry = + , ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( + void Function( + ffi.Pointer, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry[id] = + fn; + return ffi.Pointer.fromAddress(id); } -abstract class NSURLSessionMultipathServiceType { - static const int NSURLSessionMultipathServiceTypeNone = 0; - static const int NSURLSessionMultipathServiceTypeHandover = 1; - static const int NSURLSessionMultipathServiceTypeInteractive = 2; - static const int NSURLSessionMultipathServiceTypeAggregate = 3; +void _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry[ + block.ref.target.address]!(arg0, arg1); + +class ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError + extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.fromFunction( + void Function(NSURLSessionWebSocketMessage?, objc.NSError?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : NSURLSessionWebSocketMessage.castFromPointer(arg0, + retain: true, release: true), + arg1.address == 0 ? null : objc.NSError.castFromPointer(arg1, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.listener( + void Function(NSURLSessionWebSocketMessage?, objc.NSError?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : NSURLSessionWebSocketMessage.castFromPointer(arg0, + retain: true, release: true), + arg1.address == 0 + ? null + : objc.NSError.castFromPointer(arg1, retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(NSURLSessionWebSocketMessage? arg0, objc.NSError? arg1) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1?.pointer ?? ffi.nullptr); +} + +late final _sel_receiveMessageWithCompletionHandler_ = + objc.registerName("receiveMessageWithCompletionHandler:"); +final _objc_msgSend_636 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_sendPingWithPongReceiveHandler_ = + objc.registerName("sendPingWithPongReceiveHandler:"); +final _objc_msgSend_637 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSURLSessionWebSocketCloseCode { + static const int NSURLSessionWebSocketCloseCodeInvalid = 0; + static const int NSURLSessionWebSocketCloseCodeNormalClosure = 1000; + static const int NSURLSessionWebSocketCloseCodeGoingAway = 1001; + static const int NSURLSessionWebSocketCloseCodeProtocolError = 1002; + static const int NSURLSessionWebSocketCloseCodeUnsupportedData = 1003; + static const int NSURLSessionWebSocketCloseCodeNoStatusReceived = 1005; + static const int NSURLSessionWebSocketCloseCodeAbnormalClosure = 1006; + static const int NSURLSessionWebSocketCloseCodeInvalidFramePayloadData = 1007; + static const int NSURLSessionWebSocketCloseCodePolicyViolation = 1008; + static const int NSURLSessionWebSocketCloseCodeMessageTooBig = 1009; + static const int NSURLSessionWebSocketCloseCodeMandatoryExtensionMissing = + 1010; + static const int NSURLSessionWebSocketCloseCodeInternalServerError = 1011; + static const int NSURLSessionWebSocketCloseCodeTLSHandshakeFailure = 1015; } -void _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => +late final _sel_cancelWithCloseCode_reason_ = + objc.registerName("cancelWithCloseCode:reason:"); +final _objc_msgSend_638 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_maximumMessageSize = objc.registerName("maximumMessageSize"); +late final _sel_setMaximumMessageSize_ = + objc.registerName("setMaximumMessageSize:"); +late final _sel_closeCode = objc.registerName("closeCode"); +final _objc_msgSend_639 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_closeReason = objc.registerName("closeReason"); +late final _sel_webSocketTaskWithURL_ = + objc.registerName("webSocketTaskWithURL:"); +final _objc_msgSend_640 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_webSocketTaskWithURL_protocols_ = + objc.registerName("webSocketTaskWithURL:protocols:"); +final _objc_msgSend_641 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_webSocketTaskWithRequest_ = + objc.registerName("webSocketTaskWithRequest:"); +final _objc_msgSend_642 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => block.ref.target .cast< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() .asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry = , ffi.Pointer, - ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistryIndex = 0; + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry = , ffi.Pointer, + ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistryIndex = 0; ffi.Pointer - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure( - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer) + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry[id] = fn; + final id = + ++_ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry[ +void _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry[ block.ref.target.address]!(arg0, arg1, arg2); -class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSArray_NSArray_NSArray._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); +class ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError + extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSArray_NSArray_NSArray castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSArray_NSArray_NSArray._(pointer, lib, + static ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError._(pointer, retain: retain, release: release); } @@ -71227,27 +30785,24 @@ class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.fromFunctionPointer( - AVFAudio lib, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.fromFunctionPointer( ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -71255,23 +30810,21 @@ class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.fromFunction(AVFAudio lib, void Function(NSArray, NSArray, NSArray) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline) + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.fromFunction( + void Function(objc.NSData?, NSURLResponse?, objc.NSError?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= + ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline) .cast(), - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2) => fn( - NSArray._(arg0, lib, retain: true, release: true), - NSArray._(arg1, lib, retain: true, release: true), - NSArray._(arg2, lib, retain: true, release: true)))), - lib); + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + arg0.address == 0 ? null : objc.NSData.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : NSURLResponse.castFromPointer(arg1, retain: true, release: true), + arg2.address == 0 ? null : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -71283,80 +30836,190 @@ class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.listener(AVFAudio lib, void Function(NSArray, NSArray, NSArray) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline) + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.listener( + void Function(objc.NSData?, NSURLResponse?, objc.NSError?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= + ffi.NativeCallable, ffi.Pointer, ffi.Pointer, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline) ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2) => fn( - NSArray._(arg0, lib, retain: true, release: true), - NSArray._(arg1, lib, retain: true, release: true), - NSArray._(arg2, lib, retain: true, release: true)))), - lib); + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + arg0.address == 0 + ? null + : objc.NSData.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : NSURLResponse.castFromPointer(arg1, retain: true, release: true), + arg2.address == 0 ? null : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); static ffi.NativeCallable< ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSArray arg0, NSArray arg1, NSArray arg2) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1._id, arg2._id); -} + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; -void _ObjCBlock_ffiVoid_NSArray1_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => + void call(objc.NSData? arg0, NSURLResponse? arg1, objc.NSError? arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, + arg0?.pointer ?? ffi.nullptr, + arg1?.pointer ?? ffi.nullptr, + arg2?.pointer ?? ffi.nullptr); +} + +late final _sel_dataTaskWithRequest_completionHandler_ = + objc.registerName("dataTaskWithRequest:completionHandler:"); +final _objc_msgSend_643 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_dataTaskWithURL_completionHandler_ = + objc.registerName("dataTaskWithURL:completionHandler:"); +final _objc_msgSend_644 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_uploadTaskWithRequest_fromFile_completionHandler_ = + objc.registerName("uploadTaskWithRequest:fromFile:completionHandler:"); +final _objc_msgSend_645 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_uploadTaskWithRequest_fromData_completionHandler_ = + objc.registerName("uploadTaskWithRequest:fromData:completionHandler:"); +final _objc_msgSend_646 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_uploadTaskWithResumeData_completionHandler_ = + objc.registerName("uploadTaskWithResumeData:completionHandler:"); +final _objc_msgSend_647 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => block.ref.target .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSArray1_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSArray1_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSArray1_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSArray1_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSArray1_closureRegistry[id] = fn; + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry = , ffi.Pointer, + ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSArray1_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSArray1_closureRegistry[block.ref.target.address]!( - arg0); +void _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); -class ObjCBlock_ffiVoid_NSArray1 extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSArray1._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); +class ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSArray1 castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSArray1._(pointer, lib, + static ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError._(pointer, retain: retain, release: release); } @@ -71365,21 +31028,24 @@ class ObjCBlock_ffiVoid_NSArray1 extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSArray1.fromFunctionPointer( - AVFAudio lib, + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.fromFunctionPointer( ffi.Pointer< - ffi - .NativeFunction arg0)>> + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSArray1_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -71387,19 +31053,21 @@ class ObjCBlock_ffiVoid_NSArray1 extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSArray1.fromFunction( - AVFAudio lib, void Function(NSArray) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSArray1_closureTrampoline) + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.fromFunction( + void Function(objc.NSURL?, NSURLResponse?, objc.NSError?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= + ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline) .cast(), - _ObjCBlock_ffiVoid_NSArray1_registerClosure( - (ffi.Pointer arg0) => - fn(NSArray._(arg0, lib, retain: true, release: true)))), - lib); + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + arg0.address == 0 ? null : objc.NSURL.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : NSURLResponse.castFromPointer(arg1, retain: true, release: true), + arg2.address == 0 ? null : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -71411,588 +31079,568 @@ class ObjCBlock_ffiVoid_NSArray1 extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSArray1.listener(AVFAudio lib, void Function(NSArray) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSArray1_closureTrampoline) + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.listener( + void Function(objc.NSURL?, NSURLResponse?, objc.NSError?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= + ffi.NativeCallable, ffi.Pointer, ffi.Pointer, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline) ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSArray1_registerClosure( - (ffi.Pointer arg0) => - fn(NSArray._(arg0, lib, retain: true, release: true)))), - lib); + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure((ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + arg0.address == 0 + ? null + : objc.NSURL.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : NSURLResponse.castFromPointer(arg1, retain: true, release: true), + arg2.address == 0 ? null : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; - void call(NSArray arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0._id); -} + void call(objc.NSURL? arg0, NSURLResponse? arg1, objc.NSError? arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, + arg0?.pointer ?? ffi.nullptr, + arg1?.pointer ?? ffi.nullptr, + arg2?.pointer ?? ffi.nullptr); +} + +late final _sel_downloadTaskWithRequest_completionHandler_ = + objc.registerName("downloadTaskWithRequest:completionHandler:"); +final _objc_msgSend_648 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_downloadTaskWithURL_completionHandler_ = + objc.registerName("downloadTaskWithURL:completionHandler:"); +final _objc_msgSend_649 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_downloadTaskWithResumeData_completionHandler_ = + objc.registerName("downloadTaskWithResumeData:completionHandler:"); +final _objc_msgSend_650 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); -class NSURLSessionUploadTask extends NSURLSessionDataTask { - NSURLSessionUploadTask._(ffi.Pointer id, AVFAudio lib, +class NSProtocolChecker extends NSProxy { + NSProtocolChecker._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSURLSessionUploadTask] that points to the same underlying object as [other]. - static NSURLSessionUploadTask castFrom(T other) { - return NSURLSessionUploadTask._(other._id, other._lib, - retain: true, release: true); - } + /// Constructs a [NSProtocolChecker] that points to the same underlying object as [other]. + NSProtocolChecker.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSURLSessionUploadTask] that wraps the given raw object pointer. - static NSURLSessionUploadTask castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionUploadTask._(other, lib, - retain: retain, release: release); - } + /// Constructs a [NSProtocolChecker] that wraps the given raw object pointer. + NSProtocolChecker.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - /// Returns whether [obj] is an instance of [NSURLSessionUploadTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionUploadTask1); + /// Returns whether [obj] is an instance of [NSProtocolChecker]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSProtocolChecker); } - @override - NSURLSessionUploadTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + objc.Protocol get protocol { + final _ret = _objc_msgSend_651(this.pointer, _sel_protocol); + return objc.Protocol.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionUploadTask new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionUploadTask1, _lib._sel_new1); - return NSURLSessionUploadTask._(_ret, _lib, retain: false, release: true); + objc.NSObject? get target { + final _ret = _objc_msgSend_457(this.pointer, _sel_target); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void cancelByProducingResumeData_( - ObjCBlock_ffiVoid_NSData completionHandler) { - _lib._objc_msgSend_1062( - _id, _lib._sel_cancelByProducingResumeData_1, completionHandler._id); + static NSProtocolChecker protocolCheckerWithTarget_protocol_( + objc.NSObject anObject, objc.Protocol aProtocol) { + final _ret = _objc_msgSend_652( + _class_NSProtocolChecker, + _sel_protocolCheckerWithTarget_protocol_, + anObject.pointer, + aProtocol.pointer); + return NSProtocolChecker.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionUploadTask allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSessionUploadTask1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionUploadTask._(_ret, _lib, retain: false, release: true); - } + NSProtocolChecker initWithTarget_protocol_( + objc.NSObject anObject, objc.Protocol aProtocol) { + final _ret = _objc_msgSend_652(this.pointer, _sel_initWithTarget_protocol_, + anObject.pointer, aProtocol.pointer); + return NSProtocolChecker.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject alloc() { + final _ret = _objc_msgSend_40(_class_NSProtocolChecker, _sel_alloc); + return objc.NSObject.castFromPointer(_ret, retain: false, release: true); + } + + static bool respondsToSelector_(ffi.Pointer aSelector) { + return _objc_msgSend_228( + _class_NSProtocolChecker, _sel_respondsToSelector_, aSelector); + } +} + +late final _class_NSProtocolChecker = objc.getClass("NSProtocolChecker"); +final _objc_msgSend_651 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_target = objc.registerName("target"); +late final _sel_protocolCheckerWithTarget_protocol_ = + objc.registerName("protocolCheckerWithTarget:protocol:"); +final _objc_msgSend_652 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithTarget_protocol_ = + objc.registerName("initWithTarget:protocol:"); + +class NSTask extends objc.NSObject { + NSTask._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - static NSURLSessionUploadTask alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionUploadTask1, _lib._sel_alloc1); - return NSURLSessionUploadTask._(_ret, _lib, retain: false, release: true); - } + /// Constructs a [NSTask] that points to the same underlying object as [other]. + NSTask.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionUploadTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } + /// Constructs a [NSTask] that wraps the given raw object pointer. + NSTask.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionUploadTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + /// Returns whether [obj] is an instance of [NSTask]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSTask); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionUploadTask1, - _lib._sel_accessInstanceVariablesDirectly1); + @override + NSTask init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSTask.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionUploadTask1, _lib._sel_useStoredAccessor1); + objc.NSURL? get executableURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_executableURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSessionUploadTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + set executableURL(objc.NSURL? value) { + return _objc_msgSend_566( + this.pointer, _sel_setExecutableURL_, value?.pointer ?? ffi.nullptr); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionUploadTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + objc.NSArray? get arguments { + final _ret = _objc_msgSend_69(this.pointer, _sel_arguments); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionUploadTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set arguments(objc.NSArray? value) { + return _objc_msgSend_605( + this.pointer, _sel_setArguments_, value?.pointer ?? ffi.nullptr); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLSessionUploadTask1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSDictionary? get environment { + final _ret = _objc_msgSend_65(this.pointer, _sel_environment); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionUploadTask1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + set environment(objc.NSDictionary? value) { + return _objc_msgSend_173( + this.pointer, _sel_setEnvironment_, value?.pointer ?? ffi.nullptr); } -} - -void _ObjCBlock_ffiVoid_NSData_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSData_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSData_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSData_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSData_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSData_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSData_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSData_closureRegistry[block.ref.target.address]!(arg0); - -class ObjCBlock_ffiVoid_NSData extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSData._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSData castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSData._(pointer, lib, - retain: retain, release: release); + objc.NSURL? get currentDirectoryURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_currentDirectoryURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSData.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi - .NativeFunction arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSData.fromFunction(AVFAudio lib, void Function(NSData?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSData_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSData._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSData.listener(AVFAudio lib, void Function(NSData?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSData_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSData_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSData._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; - - void call(NSData? arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0?._id ?? ffi.nullptr); -} - -class NSURLSessionDownloadTask extends NSURLSessionTask { - NSURLSessionDownloadTask._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + set currentDirectoryURL(objc.NSURL? value) { + return _objc_msgSend_566(this.pointer, _sel_setCurrentDirectoryURL_, + value?.pointer ?? ffi.nullptr); + } - /// Returns a [NSURLSessionDownloadTask] that points to the same underlying object as [other]. - static NSURLSessionDownloadTask castFrom(T other) { - return NSURLSessionDownloadTask._(other._id, other._lib, - retain: true, release: true); + objc.NSData? get launchRequirementData { + final _ret = _objc_msgSend_325(this.pointer, _sel_launchRequirementData); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSURLSessionDownloadTask] that wraps the given raw object pointer. - static NSURLSessionDownloadTask castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionDownloadTask._(other, lib, - retain: retain, release: release); + set launchRequirementData(objc.NSData? value) { + return _objc_msgSend_571(this.pointer, _sel_setLaunchRequirementData_, + value?.pointer ?? ffi.nullptr); } - /// Returns whether [obj] is an instance of [NSURLSessionDownloadTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionDownloadTask1); + objc.NSObject? get standardInput { + final _ret = _objc_msgSend_66(this.pointer, _sel_standardInput); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void cancelByProducingResumeData_( - ObjCBlock_ffiVoid_NSData completionHandler) { - _lib._objc_msgSend_1062( - _id, _lib._sel_cancelByProducingResumeData_1, completionHandler._id); + set standardInput(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setStandardInput_, value?.pointer ?? ffi.nullptr); } - @override - NSURLSessionDownloadTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + objc.NSObject? get standardOutput { + final _ret = _objc_msgSend_66(this.pointer, _sel_standardOutput); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionDownloadTask new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionDownloadTask1, _lib._sel_new1); - return NSURLSessionDownloadTask._(_ret, _lib, retain: false, release: true); + set standardOutput(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setStandardOutput_, value?.pointer ?? ffi.nullptr); } - static NSURLSessionDownloadTask allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSessionDownloadTask1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionDownloadTask._(_ret, _lib, retain: false, release: true); + objc.NSObject? get standardError { + final _ret = _objc_msgSend_66(this.pointer, _sel_standardError); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionDownloadTask alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionDownloadTask1, _lib._sel_alloc1); - return NSURLSessionDownloadTask._(_ret, _lib, retain: false, release: true); + set standardError(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setStandardError_, value?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionDownloadTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + bool launchAndReturnError_(ffi.Pointer> error) { + return _objc_msgSend_8(this.pointer, _sel_launchAndReturnError_, error); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionDownloadTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + void interrupt() { + _objc_msgSend_82(this.pointer, _sel_interrupt); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionDownloadTask1, - _lib._sel_accessInstanceVariablesDirectly1); + void terminate() { + _objc_msgSend_82(this.pointer, _sel_terminate); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionDownloadTask1, _lib._sel_useStoredAccessor1); + bool suspend() { + return _objc_msgSend_7(this.pointer, _sel_suspend); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSessionDownloadTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + bool resume() { + return _objc_msgSend_7(this.pointer, _sel_resume); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionDownloadTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + int get processIdentifier { + return _objc_msgSend_264(this.pointer, _sel_processIdentifier); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionDownloadTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + bool get running { + return _objc_msgSend_7(this.pointer, _sel_isRunning); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLSessionDownloadTask1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + int get terminationStatus { + return _objc_msgSend_264(this.pointer, _sel_terminationStatus); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionDownloadTask1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + int get terminationReason { + return _objc_msgSend_653(this.pointer, _sel_terminationReason); } -} -class NSURLSessionStreamTask extends NSURLSessionTask { - NSURLSessionStreamTask._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + ObjCBlock_ffiVoid_NSTask? get terminationHandler { + final _ret = _objc_msgSend_654(this.pointer, _sel_terminationHandler); + return _ret.address == 0 + ? null + : ObjCBlock_ffiVoid_NSTask.castFromPointer(_ret, + retain: true, release: true); + } - /// Returns a [NSURLSessionStreamTask] that points to the same underlying object as [other]. - static NSURLSessionStreamTask castFrom(T other) { - return NSURLSessionStreamTask._(other._id, other._lib, - retain: true, release: true); + set terminationHandler(ObjCBlock_ffiVoid_NSTask? value) { + return _objc_msgSend_655(this.pointer, _sel_setTerminationHandler_, + value?.pointer ?? ffi.nullptr); } - /// Returns a [NSURLSessionStreamTask] that wraps the given raw object pointer. - static NSURLSessionStreamTask castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionStreamTask._(other, lib, - retain: retain, release: release); + int get qualityOfService { + return _objc_msgSend_454(this.pointer, _sel_qualityOfService); } - /// Returns whether [obj] is an instance of [NSURLSessionStreamTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionStreamTask1); + set qualityOfService(int value) { + return _objc_msgSend_455(this.pointer, _sel_setQualityOfService_, value); } - void readDataOfMinLength_maxLength_timeout_completionHandler_( - int minBytes, - int maxBytes, - double timeout, - ObjCBlock_ffiVoid_NSData_bool_NSError completionHandler) { - _lib._objc_msgSend_1070( - _id, - _lib._sel_readDataOfMinLength_maxLength_timeout_completionHandler_1, - minBytes, - maxBytes, - timeout, - completionHandler._id); + static NSTask? + launchedTaskWithExecutableURL_arguments_error_terminationHandler_( + objc.NSURL url, + objc.NSArray arguments, + ffi.Pointer> error, + ObjCBlock_ffiVoid_NSTask? terminationHandler) { + final _ret = _objc_msgSend_656( + _class_NSTask, + _sel_launchedTaskWithExecutableURL_arguments_error_terminationHandler_, + url.pointer, + arguments.pointer, + error, + terminationHandler?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSTask.castFromPointer(_ret, retain: true, release: true); } - void writeData_timeout_completionHandler_(NSData data, double timeout, - ObjCBlock_ffiVoid_NSError completionHandler) { - _lib._objc_msgSend_1071( - _id, - _lib._sel_writeData_timeout_completionHandler_1, - data._id, - timeout, - completionHandler._id); + void waitUntilExit() { + _objc_msgSend_82(this.pointer, _sel_waitUntilExit); } - void captureStreams() { - _lib._objc_msgSend_1(_id, _lib._sel_captureStreams1); + objc.NSString? get launchPath { + final _ret = _objc_msgSend_13(this.pointer, _sel_launchPath); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void closeWrite() { - _lib._objc_msgSend_1(_id, _lib._sel_closeWrite1); + set launchPath(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setLaunchPath_, value?.pointer ?? ffi.nullptr); } - void closeRead() { - _lib._objc_msgSend_1(_id, _lib._sel_closeRead1); + objc.NSString get currentDirectoryPath { + final _ret = _objc_msgSend_12(this.pointer, _sel_currentDirectoryPath); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void startSecureConnection() { - _lib._objc_msgSend_1(_id, _lib._sel_startSecureConnection1); + set currentDirectoryPath(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setCurrentDirectoryPath_, value.pointer); } - void stopSecureConnection() { - _lib._objc_msgSend_1(_id, _lib._sel_stopSecureConnection1); + void launch() { + _objc_msgSend_82(this.pointer, _sel_launch); } - @override - NSURLSessionStreamTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionStreamTask._(_ret, _lib, retain: true, release: true); + static NSTask launchedTaskWithLaunchPath_arguments_( + objc.NSString path, objc.NSArray arguments) { + final _ret = _objc_msgSend_657( + _class_NSTask, + _sel_launchedTaskWithLaunchPath_arguments_, + path.pointer, + arguments.pointer); + return NSTask.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionStreamTask new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionStreamTask1, _lib._sel_new1); - return NSURLSessionStreamTask._(_ret, _lib, retain: false, release: true); + static NSTask new1() { + final _ret = _objc_msgSend_40(_class_NSTask, _sel_new); + return NSTask.castFromPointer(_ret, retain: false, release: true); } - static NSURLSessionStreamTask allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSessionStreamTask1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionStreamTask._(_ret, _lib, retain: false, release: true); + static NSTask allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSTask, _sel_allocWithZone_, zone); + return NSTask.castFromPointer(_ret, retain: false, release: true); } - static NSURLSessionStreamTask alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionStreamTask1, _lib._sel_alloc1); - return NSURLSessionStreamTask._(_ret, _lib, retain: false, release: true); + static NSTask alloc() { + final _ret = _objc_msgSend_40(_class_NSTask, _sel_alloc); + return NSTask.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionStreamTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSTask, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionStreamTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSTask, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionStreamTask1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7(_class_NSTask, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionStreamTask1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSTask, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSessionStreamTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSTask, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionStreamTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51( + _class_NSTask, _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionStreamTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLSessionStreamTask1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSTask, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSTask, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40(_class_NSTask, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSTask = objc.getClass("NSTask"); +late final _sel_setExecutableURL_ = objc.registerName("setExecutableURL:"); +late final _sel_setArguments_ = objc.registerName("setArguments:"); +late final _sel_setEnvironment_ = objc.registerName("setEnvironment:"); +late final _sel_currentDirectoryURL = objc.registerName("currentDirectoryURL"); +late final _sel_setCurrentDirectoryURL_ = + objc.registerName("setCurrentDirectoryURL:"); +late final _sel_launchRequirementData = + objc.registerName("launchRequirementData"); +late final _sel_setLaunchRequirementData_ = + objc.registerName("setLaunchRequirementData:"); +late final _sel_standardInput = objc.registerName("standardInput"); +late final _sel_setStandardInput_ = objc.registerName("setStandardInput:"); +late final _sel_standardOutput = objc.registerName("standardOutput"); +late final _sel_setStandardOutput_ = objc.registerName("setStandardOutput:"); +late final _sel_standardError = objc.registerName("standardError"); +late final _sel_setStandardError_ = objc.registerName("setStandardError:"); +late final _sel_launchAndReturnError_ = + objc.registerName("launchAndReturnError:"); +late final _sel_interrupt = objc.registerName("interrupt"); +late final _sel_terminate = objc.registerName("terminate"); +late final _sel_isRunning = objc.registerName("isRunning"); +late final _sel_terminationStatus = objc.registerName("terminationStatus"); - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionStreamTask1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } +abstract class NSTaskTerminationReason { + static const int NSTaskTerminationReasonExit = 1; + static const int NSTaskTerminationReasonUncaughtSignal = 2; } -void _ObjCBlock_ffiVoid_NSData_bool_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - bool arg1, - ffi.Pointer arg2) => +late final _sel_terminationReason = objc.registerName("terminationReason"); +final _objc_msgSend_653 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSTask_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => block.ref.target .cast< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, bool, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry = , bool, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure( - void Function(ffi.Pointer, bool, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry[id] = fn; + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSTask_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSTask_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSTask_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSTask_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSTask_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - bool arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); +void _ObjCBlock_ffiVoid_NSTask_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSTask_closureRegistry[block.ref.target.address]!(arg0); -class ObjCBlock_ffiVoid_NSData_bool_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSData_bool_NSError._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, +class ObjCBlock_ffiVoid_NSTask extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSTask._(ffi.Pointer pointer, {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSData_bool_NSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSData_bool_NSError._(pointer, lib, + static ObjCBlock_ffiVoid_NSTask castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSTask._(pointer, retain: retain, release: release); } @@ -72001,25 +31649,18 @@ class ObjCBlock_ffiVoid_NSData_bool_NSError extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSData_bool_NSError.fromFunctionPointer( - AVFAudio lib, + ObjCBlock_ffiVoid_NSTask.fromFunctionPointer( ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, - ffi.Pointer arg2)>> + ffi.Void Function(ffi.Pointer arg0)>> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_bool_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSTask_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -72027,23 +31668,17 @@ class ObjCBlock_ffiVoid_NSData_bool_NSError extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSData_bool_NSError.fromFunction(AVFAudio lib, void Function(NSData, bool, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure( - (ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) => fn( - NSData._(arg0, lib, retain: true, release: true), - arg1, - arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSTask.fromFunction(void Function(NSTask) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSTask_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSTask_registerClosure( + (ffi.Pointer arg0) => fn( + NSTask.castFromPointer(arg0, + retain: true, release: true))))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -72055,4206 +31690,5737 @@ class ObjCBlock_ffiVoid_NSData_bool_NSError extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSData_bool_NSError.listener( - AVFAudio lib, void Function(NSData, bool, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure( - (ffi.Pointer arg0, bool arg1, - ffi.Pointer arg2) => - fn(NSData._(arg0, lib, retain: true, release: true), arg1, arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSTask.listener(void Function(NSTask) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSTask_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSTask_registerClosure( + (ffi.Pointer arg0) => fn( + NSTask.castFromPointer(arg0, + retain: true, release: true))))); static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Bool, ffi.Pointer)>? _dartFuncListenerTrampoline; + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; - void call(NSData arg0, bool arg1, NSError? arg2) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Bool arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - bool, ffi.Pointer)>()( - _id, arg0._id, arg1, arg2?._id ?? ffi.nullptr); -} + void call(NSTask arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(pointer, arg0.pointer); +} + +late final _sel_terminationHandler = objc.registerName("terminationHandler"); +final _objc_msgSend_654 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setTerminationHandler_ = + objc.registerName("setTerminationHandler:"); +final _objc_msgSend_655 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_launchedTaskWithExecutableURL_arguments_error_terminationHandler_ = + objc.registerName( + "launchedTaskWithExecutableURL:arguments:error:terminationHandler:"); +final _objc_msgSend_656 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>(); +late final _sel_waitUntilExit = objc.registerName("waitUntilExit"); +late final _sel_launchPath = objc.registerName("launchPath"); +late final _sel_setLaunchPath_ = objc.registerName("setLaunchPath:"); +late final _sel_setCurrentDirectoryPath_ = + objc.registerName("setCurrentDirectoryPath:"); +late final _sel_launch = objc.registerName("launch"); +late final _sel_launchedTaskWithLaunchPath_arguments_ = + objc.registerName("launchedTaskWithLaunchPath:arguments:"); +final _objc_msgSend_657 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSXMLElement extends NSXMLNode { + NSXMLElement._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSXMLElement] that points to the same underlying object as [other]. + NSXMLElement.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSXMLElement] that wraps the given raw object pointer. + NSXMLElement.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSXMLElement]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSXMLElement); + } + + NSXMLElement initWithName_(objc.NSString name) { + final _ret = + _objc_msgSend_35(this.pointer, _sel_initWithName_, name.pointer); + return NSXMLElement.castFromPointer(_ret, retain: true, release: true); + } + + NSXMLElement initWithName_URI_(objc.NSString name, objc.NSString? URI) { + final _ret = _objc_msgSend_694(this.pointer, _sel_initWithName_URI_, + name.pointer, URI?.pointer ?? ffi.nullptr); + return NSXMLElement.castFromPointer(_ret, retain: true, release: true); + } + + NSXMLElement initWithName_stringValue_( + objc.NSString name, objc.NSString? string) { + final _ret = _objc_msgSend_694(this.pointer, _sel_initWithName_stringValue_, + name.pointer, string?.pointer ?? ffi.nullptr); + return NSXMLElement.castFromPointer(_ret, retain: true, release: true); + } -class NSNetService extends NSObject { - NSNetService._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + NSXMLElement? initWithXMLString_error_( + objc.NSString string, ffi.Pointer> error) { + final _ret = _objc_msgSend_695( + this.pointer, _sel_initWithXMLString_error_, string.pointer, error); + return _ret.address == 0 + ? null + : NSXMLElement.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a [NSNetService] that points to the same underlying object as [other]. - static NSNetService castFrom(T other) { - return NSNetService._(other._id, other._lib, retain: true, release: true); + @override + NSXMLElement initWithKind_options_(int kind, int options) { + final _ret = _objc_msgSend_659( + this.pointer, _sel_initWithKind_options_, kind, options); + return NSXMLElement.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSNetService] that wraps the given raw object pointer. - static NSNetService castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSNetService._(other, lib, retain: retain, release: release); + objc.NSArray elementsForName_(objc.NSString name) { + final _ret = + _objc_msgSend_445(this.pointer, _sel_elementsForName_, name.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSNetService]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSNetService1); + objc.NSArray elementsForLocalName_URI_( + objc.NSString localName, objc.NSString? URI) { + final _ret = _objc_msgSend_696(this.pointer, _sel_elementsForLocalName_URI_, + localName.pointer, URI?.pointer ?? ffi.nullptr); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSNetService initWithDomain_type_name_port_( - NSString domain, NSString type, NSString name, int port) { - final _ret = _lib._objc_msgSend_1073( - _id, - _lib._sel_initWithDomain_type_name_port_1, - domain._id, - type._id, - name._id, - port); - return NSNetService._(_ret, _lib, retain: true, release: true); + void addAttribute_(NSXMLNode attribute) { + _objc_msgSend_673(this.pointer, _sel_addAttribute_, attribute.pointer); } - NSNetService initWithDomain_type_name_( - NSString domain, NSString type, NSString name) { - final _ret = _lib._objc_msgSend_1074(_id, - _lib._sel_initWithDomain_type_name_1, domain._id, type._id, name._id); - return NSNetService._(_ret, _lib, retain: true, release: true); + void removeAttributeForName_(objc.NSString name) { + _objc_msgSend_98(this.pointer, _sel_removeAttributeForName_, name.pointer); + } + + objc.NSArray? get attributes { + final _ret = _objc_msgSend_69(this.pointer, _sel_attributes); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void scheduleInRunLoop_forMode_(NSRunLoop aRunLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_scheduleInRunLoop_forMode_1, aRunLoop._id, mode._id); + set attributes(objc.NSArray? value) { + return _objc_msgSend_605( + this.pointer, _sel_setAttributes_, value?.pointer ?? ffi.nullptr); } - void removeFromRunLoop_forMode_(NSRunLoop aRunLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_removeFromRunLoop_forMode_1, aRunLoop._id, mode._id); + void setAttributesWithDictionary_(objc.NSDictionary attributes) { + _objc_msgSend_697( + this.pointer, _sel_setAttributesWithDictionary_, attributes.pointer); } - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); + NSXMLNode? attributeForName_(objc.NSString name) { + final _ret = + _objc_msgSend_677(this.pointer, _sel_attributeForName_, name.pointer); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + NSXMLNode? attributeForLocalName_URI_( + objc.NSString localName, objc.NSString? URI) { + final _ret = _objc_msgSend_698( + this.pointer, + _sel_attributeForLocalName_URI_, + localName.pointer, + URI?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - bool get includesPeerToPeer { - return _lib._objc_msgSend_12(_id, _lib._sel_includesPeerToPeer1); + void addNamespace_(NSXMLNode aNamespace) { + _objc_msgSend_673(this.pointer, _sel_addNamespace_, aNamespace.pointer); } - set includesPeerToPeer(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setIncludesPeerToPeer_1, value); + void removeNamespaceForPrefix_(objc.NSString name) { + _objc_msgSend_98( + this.pointer, _sel_removeNamespaceForPrefix_, name.pointer); } - NSString get name { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_name1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray? get namespaces { + final _ret = _objc_msgSend_69(this.pointer, _sel_namespaces); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString get type { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_type1); - return NSString._(_ret, _lib, retain: true, release: true); + set namespaces(objc.NSArray? value) { + return _objc_msgSend_605( + this.pointer, _sel_setNamespaces_, value?.pointer ?? ffi.nullptr); } - NSString get domain { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_domain1); - return NSString._(_ret, _lib, retain: true, release: true); + NSXMLNode? namespaceForPrefix_(objc.NSString name) { + final _ret = + _objc_msgSend_677(this.pointer, _sel_namespaceForPrefix_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - NSString? get hostName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_hostName1); + NSXMLNode? resolveNamespaceForName_(objc.NSString name) { + final _ret = _objc_msgSend_677( + this.pointer, _sel_resolveNamespaceForName_, name.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - NSArray? get addresses { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_addresses1); + objc.NSString? resolvePrefixForNamespaceURI_(objc.NSString namespaceURI) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_resolvePrefixForNamespaceURI_, namespaceURI.pointer); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - int get port { - return _lib._objc_msgSend_83(_id, _lib._sel_port1); + void insertChild_atIndex_(NSXMLNode child, int index) { + _objc_msgSend_671( + this.pointer, _sel_insertChild_atIndex_, child.pointer, index); } - void publish() { - _lib._objc_msgSend_1(_id, _lib._sel_publish1); + void insertChildren_atIndex_(objc.NSArray children, int index) { + _objc_msgSend_672( + this.pointer, _sel_insertChildren_atIndex_, children.pointer, index); } - void publishWithOptions_(int options) { - _lib._objc_msgSend_1075(_id, _lib._sel_publishWithOptions_1, options); + void removeChildAtIndex_(int index) { + _objc_msgSend_414(this.pointer, _sel_removeChildAtIndex_, index); } - void resolve() { - _lib._objc_msgSend_1(_id, _lib._sel_resolve1); + void setChildren_(objc.NSArray? children) { + _objc_msgSend_260( + this.pointer, _sel_setChildren_, children?.pointer ?? ffi.nullptr); } - void stop() { - _lib._objc_msgSend_1(_id, _lib._sel_stop1); + void addChild_(NSXMLNode child) { + _objc_msgSend_673(this.pointer, _sel_addChild_, child.pointer); } - static NSDictionary dictionaryFromTXTRecordData_( - AVFAudio _lib, NSData txtData) { - final _ret = _lib._objc_msgSend_1076(_lib._class_NSNetService1, - _lib._sel_dictionaryFromTXTRecordData_1, txtData._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); + void replaceChildAtIndex_withNode_(int index, NSXMLNode node) { + _objc_msgSend_674( + this.pointer, _sel_replaceChildAtIndex_withNode_, index, node.pointer); } - static NSData dataFromTXTRecordDictionary_( - AVFAudio _lib, NSDictionary txtDictionary) { - final _ret = _lib._objc_msgSend_1077(_lib._class_NSNetService1, - _lib._sel_dataFromTXTRecordDictionary_1, txtDictionary._id); - return NSData._(_ret, _lib, retain: true, release: true); + void normalizeAdjacentTextNodesPreservingCDATA_(bool preserve) { + _objc_msgSend_336(this.pointer, + _sel_normalizeAdjacentTextNodesPreservingCDATA_, preserve); } - void resolveWithTimeout_(double timeout) { - _lib._objc_msgSend_541(_id, _lib._sel_resolveWithTimeout_1, timeout); + void setAttributesAsDictionary_(objc.NSDictionary attributes) { + _objc_msgSend_697( + this.pointer, _sel_setAttributesAsDictionary_, attributes.pointer); } - bool getInputStream_outputStream_( - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - return _lib._objc_msgSend_1078(_id, _lib._sel_getInputStream_outputStream_1, - inputStream, outputStream); + @override + NSXMLElement init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSXMLElement.castFromPointer(_ret, retain: true, release: true); } - bool setTXTRecordData_(NSData? recordData) { - return _lib._objc_msgSend_1079( - _id, _lib._sel_setTXTRecordData_1, recordData?._id ?? ffi.nullptr); + @override + NSXMLElement initWithKind_(int kind) { + final _ret = _objc_msgSend_658(this.pointer, _sel_initWithKind_, kind); + return NSXMLElement.castFromPointer(_ret, retain: true, release: true); } - NSData? TXTRecordData() { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_TXTRecordData1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + static objc.NSObject document() { + final _ret = _objc_msgSend_40(_class_NSXMLElement, _sel_document); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void startMonitoring() { - _lib._objc_msgSend_1(_id, _lib._sel_startMonitoring1); + static objc.NSObject documentWithRootElement_(NSXMLElement element) { + final _ret = _objc_msgSend_660( + _class_NSXMLElement, _sel_documentWithRootElement_, element.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void stopMonitoring() { - _lib._objc_msgSend_1(_id, _lib._sel_stopMonitoring1); + static objc.NSObject elementWithName_(objc.NSString name) { + final _ret = _objc_msgSend_35( + _class_NSXMLElement, _sel_elementWithName_, name.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - @override - NSNetService init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSNetService._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_URI_( + objc.NSString name, objc.NSString URI) { + final _ret = _objc_msgSend_661(_class_NSXMLElement, + _sel_elementWithName_URI_, name.pointer, URI.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSNetService new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSNetService1, _lib._sel_new1); - return NSNetService._(_ret, _lib, retain: false, release: true); + static objc.NSObject elementWithName_stringValue_( + objc.NSString name, objc.NSString string) { + final _ret = _objc_msgSend_661(_class_NSXMLElement, + _sel_elementWithName_stringValue_, name.pointer, string.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSNetService allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSNetService1, _lib._sel_allocWithZone_1, zone); - return NSNetService._(_ret, _lib, retain: false, release: true); + static objc.NSObject elementWithName_children_attributes_( + objc.NSString name, objc.NSArray? children, objc.NSArray? attributes) { + final _ret = _objc_msgSend_662( + _class_NSXMLElement, + _sel_elementWithName_children_attributes_, + name.pointer, + children?.pointer ?? ffi.nullptr, + attributes?.pointer ?? ffi.nullptr); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSNetService alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSNetService1, _lib._sel_alloc1); - return NSNetService._(_ret, _lib, retain: false, release: true); + static objc.NSObject attributeWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLElement, + _sel_attributeWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSNetService1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static objc.NSObject attributeWithName_URI_stringValue_( + objc.NSString name, objc.NSString URI, objc.NSString stringValue) { + final _ret = _objc_msgSend_626( + _class_NSXMLElement, + _sel_attributeWithName_URI_stringValue_, + name.pointer, + URI.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSNetService1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static objc.NSObject namespaceWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLElement, + _sel_namespaceWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSNetService1, _lib._sel_accessInstanceVariablesDirectly1); + static objc.NSObject processingInstructionWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661( + _class_NSXMLElement, + _sel_processingInstructionWithName_stringValue_, + name.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSNetService1, _lib._sel_useStoredAccessor1); + static objc.NSObject commentWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLElement, _sel_commentWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSNetService1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSObject textWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLElement, _sel_textWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSNetService1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static objc.NSObject? DTDNodeWithXMLString_(objc.NSString string) { + final _ret = _objc_msgSend_2( + _class_NSXMLElement, _sel_DTDNodeWithXMLString_, string.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSNetService1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static objc.NSString localNameForName_(objc.NSString name) { + final _ret = _objc_msgSend_297( + _class_NSXMLElement, _sel_localNameForName_, name.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSNetService1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSString? prefixForName_(objc.NSString name) { + final _ret = _objc_msgSend_14( + _class_NSXMLElement, _sel_prefixForName_, name.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSNetService1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSXMLNode? predefinedNamespaceForPrefix_(objc.NSString name) { + final _ret = _objc_msgSend_677( + _class_NSXMLElement, _sel_predefinedNamespaceForPrefix_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } -} -abstract class NSNetServiceOptions { - static const int NSNetServiceNoAutoRename = 1; - static const int NSNetServiceListenForConnections = 2; -} + static NSXMLElement new1() { + final _ret = _objc_msgSend_40(_class_NSXMLElement, _sel_new); + return NSXMLElement.castFromPointer(_ret, retain: false, release: true); + } -class NSURLSessionWebSocketTask extends NSURLSessionTask { - NSURLSessionWebSocketTask._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + static NSXMLElement allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSXMLElement, _sel_allocWithZone_, zone); + return NSXMLElement.castFromPointer(_ret, retain: false, release: true); + } - /// Returns a [NSURLSessionWebSocketTask] that points to the same underlying object as [other]. - static NSURLSessionWebSocketTask castFrom(T other) { - return NSURLSessionWebSocketTask._(other._id, other._lib, - retain: true, release: true); + static NSXMLElement alloc() { + final _ret = _objc_msgSend_40(_class_NSXMLElement, _sel_alloc); + return NSXMLElement.castFromPointer(_ret, retain: false, release: true); } - /// Returns a [NSURLSessionWebSocketTask] that wraps the given raw object pointer. - static NSURLSessionWebSocketTask castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionWebSocketTask._(other, lib, - retain: retain, release: release); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSXMLElement, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - /// Returns whether [obj] is an instance of [NSURLSessionWebSocketTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionWebSocketTask1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSXMLElement, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - void sendMessage_completionHandler_(NSURLSessionWebSocketMessage message, - ObjCBlock_ffiVoid_NSError completionHandler) { - _lib._objc_msgSend_1082(_id, _lib._sel_sendMessage_completionHandler_1, - message._id, completionHandler._id); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSXMLElement, _sel_accessInstanceVariablesDirectly); } - void receiveMessageWithCompletionHandler_( - ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError - completionHandler) { - _lib._objc_msgSend_1083(_id, - _lib._sel_receiveMessageWithCompletionHandler_1, completionHandler._id); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSXMLElement, _sel_useStoredAccessor); } - void sendPingWithPongReceiveHandler_( - ObjCBlock_ffiVoid_NSError pongReceiveHandler) { - _lib._objc_msgSend_1084(_id, _lib._sel_sendPingWithPongReceiveHandler_1, - pongReceiveHandler._id); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSXMLElement, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - void cancelWithCloseCode_reason_(int closeCode, NSData? reason) { - _lib._objc_msgSend_1085(_id, _lib._sel_cancelWithCloseCode_reason_1, - closeCode, reason?._id ?? ffi.nullptr); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSXMLElement, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - int get maximumMessageSize { - return _lib._objc_msgSend_83(_id, _lib._sel_maximumMessageSize1); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSXMLElement, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - set maximumMessageSize(int value) { - return _lib._objc_msgSend_635( - _id, _lib._sel_setMaximumMessageSize_1, value); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSXMLElement, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int get closeCode { - return _lib._objc_msgSend_1086(_id, _lib._sel_closeCode1); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSXMLElement, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - NSData? get closeReason { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_closeReason1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); +late final _class_NSXMLElement = objc.getClass("NSXMLElement"); + +class NSXMLNode extends objc.NSObject { + NSXMLNode._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSXMLNode] that points to the same underlying object as [other]. + NSXMLNode.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSXMLNode] that wraps the given raw object pointer. + NSXMLNode.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSXMLNode]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSXMLNode); } @override - NSURLSessionWebSocketTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + NSXMLNode init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionWebSocketTask new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionWebSocketTask1, _lib._sel_new1); - return NSURLSessionWebSocketTask._(_ret, _lib, - retain: false, release: true); + NSXMLNode initWithKind_(int kind) { + final _ret = _objc_msgSend_658(this.pointer, _sel_initWithKind_, kind); + return NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionWebSocketTask allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_allocWithZone_1, zone); - return NSURLSessionWebSocketTask._(_ret, _lib, - retain: false, release: true); + NSXMLNode initWithKind_options_(int kind, int options) { + final _ret = _objc_msgSend_659( + this.pointer, _sel_initWithKind_options_, kind, options); + return NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionWebSocketTask alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionWebSocketTask1, _lib._sel_alloc1); - return NSURLSessionWebSocketTask._(_ret, _lib, - retain: false, release: true); + static objc.NSObject document() { + final _ret = _objc_msgSend_40(_class_NSXMLNode, _sel_document); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionWebSocketTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static objc.NSObject documentWithRootElement_(NSXMLElement element) { + final _ret = _objc_msgSend_660( + _class_NSXMLNode, _sel_documentWithRootElement_, element.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static objc.NSObject elementWithName_(objc.NSString name) { + final _ret = + _objc_msgSend_35(_class_NSXMLNode, _sel_elementWithName_, name.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_accessInstanceVariablesDirectly1); + static objc.NSObject elementWithName_URI_( + objc.NSString name, objc.NSString URI) { + final _ret = _objc_msgSend_661( + _class_NSXMLNode, _sel_elementWithName_URI_, name.pointer, URI.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionWebSocketTask1, _lib._sel_useStoredAccessor1); + static objc.NSObject elementWithName_stringValue_( + objc.NSString name, objc.NSString string) { + final _ret = _objc_msgSend_661(_class_NSXMLNode, + _sel_elementWithName_stringValue_, name.pointer, string.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_children_attributes_( + objc.NSString name, objc.NSArray? children, objc.NSArray? attributes) { + final _ret = _objc_msgSend_662( + _class_NSXMLNode, + _sel_elementWithName_children_attributes_, + name.pointer, + children?.pointer ?? ffi.nullptr, + attributes?.pointer ?? ffi.nullptr); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static objc.NSObject attributeWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLNode, + _sel_attributeWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionWebSocketTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static objc.NSObject attributeWithName_URI_stringValue_( + objc.NSString name, objc.NSString URI, objc.NSString stringValue) { + final _ret = _objc_msgSend_626( + _class_NSXMLNode, + _sel_attributeWithName_URI_stringValue_, + name.pointer, + URI.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSObject namespaceWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLNode, + _sel_namespaceWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject processingInstructionWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661( + _class_NSXMLNode, + _sel_processingInstructionWithName_stringValue_, + name.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } -} - -class NSURLSessionWebSocketMessage extends NSObject { - NSURLSessionWebSocketMessage._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLSessionWebSocketMessage] that points to the same underlying object as [other]. - static NSURLSessionWebSocketMessage castFrom( - T other) { - return NSURLSessionWebSocketMessage._(other._id, other._lib, - retain: true, release: true); + static objc.NSObject commentWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLNode, _sel_commentWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSURLSessionWebSocketMessage] that wraps the given raw object pointer. - static NSURLSessionWebSocketMessage castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionWebSocketMessage._(other, lib, - retain: retain, release: release); + static objc.NSObject textWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLNode, _sel_textWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSURLSessionWebSocketMessage]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionWebSocketMessage1); + static objc.NSObject? DTDNodeWithXMLString_(objc.NSString string) { + final _ret = _objc_msgSend_2( + _class_NSXMLNode, _sel_DTDNodeWithXMLString_, string.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSURLSessionWebSocketMessage initWithData_(NSData data) { - final _ret = - _lib._objc_msgSend_279(_id, _lib._sel_initWithData_1, data._id); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: true, release: true); + int get kind { + return _objc_msgSend_663(this.pointer, _sel_kind); } - NSURLSessionWebSocketMessage initWithString_(NSString string) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithString_1, string._id); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: true, release: true); + objc.NSString? get name { + final _ret = _objc_msgSend_13(this.pointer, _sel_name); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - int get type { - return _lib._objc_msgSend_1081(_id, _lib._sel_type1); + set name(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setName_, value?.pointer ?? ffi.nullptr); } - NSData? get data { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_data1); + objc.NSObject? get objectValue { + final _ret = _objc_msgSend_66(this.pointer, _sel_objectValue); return _ret.address == 0 ? null - : NSData._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } + + set objectValue(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setObjectValue_, value?.pointer ?? ffi.nullptr); } - NSString? get string { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_string1); + objc.NSString? get stringValue { + final _ret = _objc_msgSend_13(this.pointer, _sel_stringValue); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSURLSessionWebSocketMessage init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: true, release: true); + set stringValue(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setStringValue_, value?.pointer ?? ffi.nullptr); } - static NSURLSessionWebSocketMessage new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionWebSocketMessage1, _lib._sel_new1); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: false, release: true); + void setStringValue_resolvingEntities_(objc.NSString string, bool resolve) { + _objc_msgSend_664(this.pointer, _sel_setStringValue_resolvingEntities_, + string.pointer, resolve); } - static NSURLSessionWebSocketMessage allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_allocWithZone_1, zone); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: false, release: true); + int get index { + return _objc_msgSend_29(this.pointer, _sel_index); } - static NSURLSessionWebSocketMessage alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionWebSocketMessage1, _lib._sel_alloc1); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: false, release: true); + int get level { + return _objc_msgSend_29(this.pointer, _sel_level); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + NSXMLDocument? get rootDocument { + final _ret = _objc_msgSend_688(this.pointer, _sel_rootDocument); + return _ret.address == 0 + ? null + : NSXMLDocument.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + NSXMLNode? get parent { + final _ret = _objc_msgSend_689(this.pointer, _sel_parent); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_accessInstanceVariablesDirectly1); + int get childCount { + return _objc_msgSend_29(this.pointer, _sel_childCount); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_useStoredAccessor1); + objc.NSArray? get children { + final _ret = _objc_msgSend_69(this.pointer, _sel_children); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63( - _lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + NSXMLNode? childAtIndex_(int index) { + final _ret = _objc_msgSend_690(this.pointer, _sel_childAtIndex_, index); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + NSXMLNode? get previousSibling { + final _ret = _objc_msgSend_689(this.pointer, _sel_previousSibling); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + NSXMLNode? get nextSibling { + final _ret = _objc_msgSend_689(this.pointer, _sel_nextSibling); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + NSXMLNode? get previousNode { + final _ret = _objc_msgSend_689(this.pointer, _sel_previousNode); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + NSXMLNode? get nextNode { + final _ret = _objc_msgSend_689(this.pointer, _sel_nextNode); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } -} -abstract class NSURLSessionWebSocketMessageType { - static const int NSURLSessionWebSocketMessageTypeData = 0; - static const int NSURLSessionWebSocketMessageTypeString = 1; -} + void detach() { + _objc_msgSend_82(this.pointer, _sel_detach); + } -void _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistryIndex = - 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = - ++_ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry[id] = - fn; - return ffi.Pointer.fromAddress(id); -} + objc.NSString? get XPath { + final _ret = _objc_msgSend_13(this.pointer, _sel_XPath); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); + } -void _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1); + objc.NSString? get localName { + final _ret = _objc_msgSend_13(this.pointer, _sel_localName); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); + } -class ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError - extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + objc.NSString? get prefix { + final _ret = _objc_msgSend_13(this.pointer, _sel_prefix); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError._( - pointer, lib, - retain: retain, release: release); + objc.NSString? get URI { + final _ret = _objc_msgSend_13(this.pointer, _sel_URI); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + set URI(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setURI_, value?.pointer ?? ffi.nullptr); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.fromFunction( - AVFAudio lib, void Function(NSURLSessionWebSocketMessage?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= - ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSURLSessionWebSocketMessage._(arg0, lib, - retain: true, release: true), - arg1.address == 0 ? null : NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + static objc.NSString localNameForName_(objc.NSString name) { + final _ret = _objc_msgSend_297( + _class_NSXMLNode, _sel_localNameForName_, name.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.listener( - AVFAudio lib, void Function(NSURLSessionWebSocketMessage?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSURLSessionWebSocketMessage._(arg0, lib, - retain: true, release: true), - arg1.address == 0 - ? null - : NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; + static objc.NSString? prefixForName_(objc.NSString name) { + final _ret = + _objc_msgSend_14(_class_NSXMLNode, _sel_prefixForName_, name.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSXMLNode? predefinedNamespaceForPrefix_(objc.NSString name) { + final _ret = _objc_msgSend_677( + _class_NSXMLNode, _sel_predefinedNamespaceForPrefix_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); + } - void call(NSURLSessionWebSocketMessage? arg0, NSError? arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1?._id ?? ffi.nullptr); -} + objc.NSString get description { + final _ret = _objc_msgSend_12(this.pointer, _sel_description); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } -abstract class NSURLSessionWebSocketCloseCode { - static const int NSURLSessionWebSocketCloseCodeInvalid = 0; - static const int NSURLSessionWebSocketCloseCodeNormalClosure = 1000; - static const int NSURLSessionWebSocketCloseCodeGoingAway = 1001; - static const int NSURLSessionWebSocketCloseCodeProtocolError = 1002; - static const int NSURLSessionWebSocketCloseCodeUnsupportedData = 1003; - static const int NSURLSessionWebSocketCloseCodeNoStatusReceived = 1005; - static const int NSURLSessionWebSocketCloseCodeAbnormalClosure = 1006; - static const int NSURLSessionWebSocketCloseCodeInvalidFramePayloadData = 1007; - static const int NSURLSessionWebSocketCloseCodePolicyViolation = 1008; - static const int NSURLSessionWebSocketCloseCodeMessageTooBig = 1009; - static const int NSURLSessionWebSocketCloseCodeMandatoryExtensionMissing = - 1010; - static const int NSURLSessionWebSocketCloseCodeInternalServerError = 1011; - static const int NSURLSessionWebSocketCloseCodeTLSHandshakeFailure = 1015; -} + objc.NSString get XMLString { + final _ret = _objc_msgSend_12(this.pointer, _sel_XMLString); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } -void _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry = , ffi.Pointer, - ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer) - fn) { - final id = - ++_ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + objc.NSString XMLStringWithOptions_(int options) { + final _ret = + _objc_msgSend_691(this.pointer, _sel_XMLStringWithOptions_, options); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } -void _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); + objc.NSString canonicalXMLStringPreservingComments_(bool comments) { + final _ret = _objc_msgSend_692( + this.pointer, _sel_canonicalXMLStringPreservingComments_, comments); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } -class ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + objc.NSArray? nodesForXPath_error_( + objc.NSString xpath, ffi.Pointer> error) { + final _ret = _objc_msgSend_281( + this.pointer, _sel_nodesForXPath_error_, xpath.pointer, error); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError._(pointer, lib, - retain: retain, release: release); + objc.NSArray? objectsForXQuery_constants_error_( + objc.NSString xquery, + objc.NSDictionary? constants, + ffi.Pointer> error) { + final _ret = _objc_msgSend_693( + this.pointer, + _sel_objectsForXQuery_constants_error_, + xquery.pointer, + constants?.pointer ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + objc.NSArray? objectsForXQuery_error_( + objc.NSString xquery, ffi.Pointer> error) { + final _ret = _objc_msgSend_281( + this.pointer, _sel_objectsForXQuery_error_, xquery.pointer, error); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.fromFunction( - AVFAudio lib, void Function(NSData?, NSURLResponse?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= - ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) => - fn( - arg0.address == 0 - ? null - : NSData._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSURLResponse._(arg1, lib, retain: true, release: true), - arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + static NSXMLNode new1() { + final _ret = _objc_msgSend_40(_class_NSXMLNode, _sel_new); + return NSXMLNode.castFromPointer(_ret, retain: false, release: true); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.listener( - AVFAudio lib, void Function(NSData?, NSURLResponse?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= - ffi.NativeCallable, ffi.Pointer, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure((ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - fn( - arg0.address == 0 - ? null - : NSData._(arg0, lib, retain: true, release: true), - arg1.address == 0 - ? null - : NSURLResponse._(arg1, lib, retain: true, release: true), - arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; + static NSXMLNode allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSXMLNode, _sel_allocWithZone_, zone); + return NSXMLNode.castFromPointer(_ret, retain: false, release: true); + } - void call(NSData? arg0, NSURLResponse? arg1, NSError? arg2) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>()( - _id, - arg0?._id ?? ffi.nullptr, - arg1?._id ?? ffi.nullptr, - arg2?._id ?? ffi.nullptr); -} + static NSXMLNode alloc() { + final _ret = _objc_msgSend_40(_class_NSXMLNode, _sel_alloc); + return NSXMLNode.castFromPointer(_ret, retain: false, release: true); + } -void _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry = , ffi.Pointer, - ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer) - fn) { - final id = - ++_ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSXMLNode, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); + } -void _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSXMLNode, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); + } -class ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError._( - ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSXMLNode, _sel_accessInstanceVariablesDirectly); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError._(pointer, lib, - retain: retain, release: release); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSXMLNode, _sel_useStoredAccessor); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSXMLNode, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.fromFunction( - AVFAudio lib, void Function(NSURL?, NSURLResponse?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= - ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2) => fn( - arg0.address == 0 - ? null - : NSURL._(arg0, lib, retain: true, release: true), - arg1.address == 0 - ? null - : NSURLResponse._(arg1, lib, retain: true, release: true), - arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSXMLNode, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.listener( - AVFAudio lib, void Function(NSURL?, NSURLResponse?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= - ffi.NativeCallable, ffi.Pointer, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) => - fn( - arg0.address == 0 - ? null - : NSURL._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSURLResponse._(arg1, lib, retain: true, release: true), - arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSXMLNode, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } - void call(NSURL? arg0, NSURLResponse? arg1, NSError? arg2) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>()( - _id, - arg0?._id ?? ffi.nullptr, - arg1?._id ?? ffi.nullptr, - arg2?._id ?? ffi.nullptr); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSXMLNode, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSXMLNode, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } } -class NSProtocolChecker extends NSProxy { - NSProtocolChecker._(ffi.Pointer id, AVFAudio lib, +late final _class_NSXMLNode = objc.getClass("NSXMLNode"); + +abstract class NSXMLNodeKind { + static const int NSXMLInvalidKind = 0; + static const int NSXMLDocumentKind = 1; + static const int NSXMLElementKind = 2; + static const int NSXMLAttributeKind = 3; + static const int NSXMLNamespaceKind = 4; + static const int NSXMLProcessingInstructionKind = 5; + static const int NSXMLCommentKind = 6; + static const int NSXMLTextKind = 7; + static const int NSXMLDTDKind = 8; + static const int NSXMLEntityDeclarationKind = 9; + static const int NSXMLAttributeDeclarationKind = 10; + static const int NSXMLElementDeclarationKind = 11; + static const int NSXMLNotationDeclarationKind = 12; +} + +late final _sel_initWithKind_ = objc.registerName("initWithKind:"); +final _objc_msgSend_658 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int)>(); + +abstract class NSXMLNodeOptions { + static const int NSXMLNodeOptionsNone = 0; + static const int NSXMLNodeIsCDATA = 1; + static const int NSXMLNodeExpandEmptyElement = 2; + static const int NSXMLNodeCompactEmptyElement = 4; + static const int NSXMLNodeUseSingleQuotes = 8; + static const int NSXMLNodeUseDoubleQuotes = 16; + static const int NSXMLNodeNeverEscapeContents = 32; + static const int NSXMLDocumentTidyHTML = 512; + static const int NSXMLDocumentTidyXML = 1024; + static const int NSXMLDocumentValidate = 8192; + static const int NSXMLNodeLoadExternalEntitiesAlways = 16384; + static const int NSXMLNodeLoadExternalEntitiesSameOriginOnly = 32768; + static const int NSXMLNodeLoadExternalEntitiesNever = 524288; + static const int NSXMLDocumentXInclude = 65536; + static const int NSXMLNodePrettyPrint = 131072; + static const int NSXMLDocumentIncludeContentTypeDeclaration = 262144; + static const int NSXMLNodePreserveNamespaceOrder = 1048576; + static const int NSXMLNodePreserveAttributeOrder = 2097152; + static const int NSXMLNodePreserveEntities = 4194304; + static const int NSXMLNodePreservePrefixes = 8388608; + static const int NSXMLNodePreserveCDATA = 16777216; + static const int NSXMLNodePreserveWhitespace = 33554432; + static const int NSXMLNodePreserveDTD = 67108864; + static const int NSXMLNodePreserveCharacterReferences = 134217728; + static const int NSXMLNodePromoteSignificantWhitespace = 268435456; + static const int NSXMLNodePreserveEmptyElements = 6; + static const int NSXMLNodePreserveQuotes = 24; + static const int NSXMLNodePreserveAll = 4293918750; +} + +late final _sel_initWithKind_options_ = + objc.registerName("initWithKind:options:"); +final _objc_msgSend_659 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Int32, ffi.Int32)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int, int)>(); +late final _sel_document = objc.registerName("document"); +late final _sel_documentWithRootElement_ = + objc.registerName("documentWithRootElement:"); +final _objc_msgSend_660 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_elementWithName_ = objc.registerName("elementWithName:"); +late final _sel_elementWithName_URI_ = + objc.registerName("elementWithName:URI:"); +final _objc_msgSend_661 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_elementWithName_stringValue_ = + objc.registerName("elementWithName:stringValue:"); +late final _sel_elementWithName_children_attributes_ = + objc.registerName("elementWithName:children:attributes:"); +final _objc_msgSend_662 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_attributeWithName_stringValue_ = + objc.registerName("attributeWithName:stringValue:"); +late final _sel_attributeWithName_URI_stringValue_ = + objc.registerName("attributeWithName:URI:stringValue:"); +late final _sel_namespaceWithName_stringValue_ = + objc.registerName("namespaceWithName:stringValue:"); +late final _sel_processingInstructionWithName_stringValue_ = + objc.registerName("processingInstructionWithName:stringValue:"); +late final _sel_commentWithStringValue_ = + objc.registerName("commentWithStringValue:"); +late final _sel_textWithStringValue_ = + objc.registerName("textWithStringValue:"); +late final _sel_DTDNodeWithXMLString_ = + objc.registerName("DTDNodeWithXMLString:"); +late final _sel_kind = objc.registerName("kind"); +final _objc_msgSend_663 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_objectValue = objc.registerName("objectValue"); +late final _sel_setObjectValue_ = objc.registerName("setObjectValue:"); +late final _sel_stringValue = objc.registerName("stringValue"); +late final _sel_setStringValue_ = objc.registerName("setStringValue:"); +late final _sel_setStringValue_resolvingEntities_ = + objc.registerName("setStringValue:resolvingEntities:"); +final _objc_msgSend_664 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_index = objc.registerName("index"); +late final _sel_level = objc.registerName("level"); + +class NSXMLDocument extends NSXMLNode { + NSXMLDocument._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSProtocolChecker] that points to the same underlying object as [other]. - static NSProtocolChecker castFrom(T other) { - return NSProtocolChecker._(other._id, other._lib, - retain: true, release: true); + /// Constructs a [NSXMLDocument] that points to the same underlying object as [other]. + NSXMLDocument.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSXMLDocument] that wraps the given raw object pointer. + NSXMLDocument.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSXMLDocument]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSXMLDocument); } - /// Returns a [NSProtocolChecker] that wraps the given raw object pointer. - static NSProtocolChecker castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSProtocolChecker._(other, lib, retain: retain, release: release); + @override + NSXMLDocument init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSXMLDocument.castFromPointer(_ret, retain: true, release: true); + } + + NSXMLDocument? initWithXMLString_options_error_(objc.NSString string, + int mask, ffi.Pointer> error) { + final _ret = _objc_msgSend_665(this.pointer, + _sel_initWithXMLString_options_error_, string.pointer, mask, error); + return _ret.address == 0 + ? null + : NSXMLDocument.castFromPointer(_ret, retain: true, release: true); + } + + NSXMLDocument? initWithContentsOfURL_options_error_(objc.NSURL url, int mask, + ffi.Pointer> error) { + final _ret = _objc_msgSend_666(this.pointer, + _sel_initWithContentsOfURL_options_error_, url.pointer, mask, error); + return _ret.address == 0 + ? null + : NSXMLDocument.castFromPointer(_ret, retain: true, release: true); + } + + NSXMLDocument? initWithData_options_error_(objc.NSData data, int mask, + ffi.Pointer> error) { + final _ret = _objc_msgSend_667(this.pointer, + _sel_initWithData_options_error_, data.pointer, mask, error); + return _ret.address == 0 + ? null + : NSXMLDocument.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSProtocolChecker]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSProtocolChecker1); + NSXMLDocument initWithRootElement_(NSXMLElement? element) { + final _ret = _objc_msgSend_668(this.pointer, _sel_initWithRootElement_, + element?.pointer ?? ffi.nullptr); + return NSXMLDocument.castFromPointer(_ret, retain: true, release: true); } - Protocol get protocol { - final _ret = _lib._objc_msgSend_1098(_id, _lib._sel_protocol1); - return Protocol._(_ret, _lib, retain: true, release: true); + static objc.NSObject replacementClassForClass_(objc.NSObject cls) { + final _ret = _objc_msgSend_387( + _class_NSXMLDocument, _sel_replacementClassForClass_, cls.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSObject? get target { - final _ret = _lib._objc_msgSend_1099(_id, _lib._sel_target1); + objc.NSString? get characterEncoding { + final _ret = _objc_msgSend_13(this.pointer, _sel_characterEncoding); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSProtocolChecker protocolCheckerWithTarget_protocol_( - AVFAudio _lib, NSObject anObject, Protocol aProtocol) { - final _ret = _lib._objc_msgSend_1100( - _lib._class_NSProtocolChecker1, - _lib._sel_protocolCheckerWithTarget_protocol_1, - anObject._id, - aProtocol._id); - return NSProtocolChecker._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSProtocolChecker initWithTarget_protocol_( - NSObject anObject, Protocol aProtocol) { - final _ret = _lib._objc_msgSend_1100( - _id, _lib._sel_initWithTarget_protocol_1, anObject._id, aProtocol._id); - return NSProtocolChecker._(_ret, _lib, retain: true, release: true); + set characterEncoding(objc.NSString? value) { + return _objc_msgSend_46(this.pointer, _sel_setCharacterEncoding_, + value?.pointer ?? ffi.nullptr); } - static NSObject alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSProtocolChecker1, _lib._sel_alloc1); - return NSObject._(_ret, _lib, retain: false, release: true); + objc.NSString? get version { + final _ret = _objc_msgSend_13(this.pointer, _sel_version); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool respondsToSelector_( - AVFAudio _lib, ffi.Pointer aSelector) { - return _lib._objc_msgSend_4(_lib._class_NSProtocolChecker1, - _lib._sel_respondsToSelector_1, aSelector); + set version(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setVersion_, value?.pointer ?? ffi.nullptr); } -} - -class NSTask extends NSObject { - NSTask._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSTask] that points to the same underlying object as [other]. - static NSTask castFrom(T other) { - return NSTask._(other._id, other._lib, retain: true, release: true); + bool get standalone { + return _objc_msgSend_7(this.pointer, _sel_isStandalone); } - /// Returns a [NSTask] that wraps the given raw object pointer. - static NSTask castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSTask._(other, lib, retain: retain, release: release); + set standalone(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setStandalone_, value); } - /// Returns whether [obj] is an instance of [NSTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSTask1); + int get documentContentKind { + return _objc_msgSend_669(this.pointer, _sel_documentContentKind); } - @override - NSTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSTask._(_ret, _lib, retain: true, release: true); + set documentContentKind(int value) { + return _objc_msgSend_670(this.pointer, _sel_setDocumentContentKind_, value); } - NSURL? get executableURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_executableURL1); + objc.NSString? get MIMEType { + final _ret = _objc_msgSend_13(this.pointer, _sel_MIMEType); return _ret.address == 0 ? null - : NSURL._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set executableURL(NSURL? value) { - return _lib._objc_msgSend_671( - _id, _lib._sel_setExecutableURL_1, value?._id ?? ffi.nullptr); + set MIMEType(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setMIMEType_, value?.pointer ?? ffi.nullptr); } - NSArray? get arguments { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_arguments1); + NSXMLDTD? get DTD { + final _ret = _objc_msgSend_680(this.pointer, _sel_DTD); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : NSXMLDTD.castFromPointer(_ret, retain: true, release: true); + } + + set DTD(NSXMLDTD? value) { + return _objc_msgSend_681( + this.pointer, _sel_setDTD_, value?.pointer ?? ffi.nullptr); } - set arguments(NSArray? value) { - return _lib._objc_msgSend_1053( - _id, _lib._sel_setArguments_1, value?._id ?? ffi.nullptr); + void setRootElement_(NSXMLElement root) { + _objc_msgSend_682(this.pointer, _sel_setRootElement_, root.pointer); } - NSDictionary? get environment { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_environment1); + NSXMLElement? rootElement() { + final _ret = _objc_msgSend_683(this.pointer, _sel_rootElement); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + : NSXMLElement.castFromPointer(_ret, retain: true, release: true); } - set environment(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, _lib._sel_setEnvironment_1, value?._id ?? ffi.nullptr); + void insertChild_atIndex_(NSXMLNode child, int index) { + _objc_msgSend_671( + this.pointer, _sel_insertChild_atIndex_, child.pointer, index); } - NSURL? get currentDirectoryURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_currentDirectoryURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + void insertChildren_atIndex_(objc.NSArray children, int index) { + _objc_msgSend_672( + this.pointer, _sel_insertChildren_atIndex_, children.pointer, index); } - set currentDirectoryURL(NSURL? value) { - return _lib._objc_msgSend_671( - _id, _lib._sel_setCurrentDirectoryURL_1, value?._id ?? ffi.nullptr); + void removeChildAtIndex_(int index) { + _objc_msgSend_414(this.pointer, _sel_removeChildAtIndex_, index); } - NSData? get launchRequirementData { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_launchRequirementData1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + void setChildren_(objc.NSArray? children) { + _objc_msgSend_260( + this.pointer, _sel_setChildren_, children?.pointer ?? ffi.nullptr); } - set launchRequirementData(NSData? value) { - return _lib._objc_msgSend_1021( - _id, _lib._sel_setLaunchRequirementData_1, value?._id ?? ffi.nullptr); + void addChild_(NSXMLNode child) { + _objc_msgSend_673(this.pointer, _sel_addChild_, child.pointer); } - NSObject? get standardInput { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_standardInput1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + void replaceChildAtIndex_withNode_(int index, NSXMLNode node) { + _objc_msgSend_674( + this.pointer, _sel_replaceChildAtIndex_withNode_, index, node.pointer); } - set standardInput(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setStandardInput_1, value?._id ?? ffi.nullptr); + objc.NSData get XMLData { + final _ret = _objc_msgSend_104(this.pointer, _sel_XMLData); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - NSObject? get standardOutput { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_standardOutput1); + objc.NSData XMLDataWithOptions_(int options) { + final _ret = + _objc_msgSend_684(this.pointer, _sel_XMLDataWithOptions_, options); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); + } + + objc.NSObject? objectByApplyingXSLT_arguments_error_( + objc.NSData xslt, + objc.NSDictionary? arguments, + ffi.Pointer> error) { + final _ret = _objc_msgSend_685( + this.pointer, + _sel_objectByApplyingXSLT_arguments_error_, + xslt.pointer, + arguments?.pointer ?? ffi.nullptr, + error); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set standardOutput(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setStandardOutput_1, value?._id ?? ffi.nullptr); + objc.NSObject? objectByApplyingXSLTString_arguments_error_( + objc.NSString xslt, + objc.NSDictionary? arguments, + ffi.Pointer> error) { + final _ret = _objc_msgSend_686( + this.pointer, + _sel_objectByApplyingXSLTString_arguments_error_, + xslt.pointer, + arguments?.pointer ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSObject? get standardError { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_standardError1); + objc.NSObject? objectByApplyingXSLTAtURL_arguments_error_( + objc.NSURL xsltURL, + objc.NSDictionary? argument, + ffi.Pointer> error) { + final _ret = _objc_msgSend_687( + this.pointer, + _sel_objectByApplyingXSLTAtURL_arguments_error_, + xsltURL.pointer, + argument?.pointer ?? ffi.nullptr, + error); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set standardError(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setStandardError_1, value?._id ?? ffi.nullptr); + bool validateAndReturnError_( + ffi.Pointer> error) { + return _objc_msgSend_8(this.pointer, _sel_validateAndReturnError_, error); } - bool launchAndReturnError_(ffi.Pointer> error) { - return _lib._objc_msgSend_255(_id, _lib._sel_launchAndReturnError_1, error); + @override + NSXMLDocument initWithKind_(int kind) { + final _ret = _objc_msgSend_658(this.pointer, _sel_initWithKind_, kind); + return NSXMLDocument.castFromPointer(_ret, retain: true, release: true); } - void interrupt() { - _lib._objc_msgSend_1(_id, _lib._sel_interrupt1); + @override + NSXMLDocument initWithKind_options_(int kind, int options) { + final _ret = _objc_msgSend_659( + this.pointer, _sel_initWithKind_options_, kind, options); + return NSXMLDocument.castFromPointer(_ret, retain: true, release: true); } - void terminate() { - _lib._objc_msgSend_1(_id, _lib._sel_terminate1); + static objc.NSObject document() { + final _ret = _objc_msgSend_40(_class_NSXMLDocument, _sel_document); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - bool suspend() { - return _lib._objc_msgSend_12(_id, _lib._sel_suspend1); + static objc.NSObject documentWithRootElement_(NSXMLElement element) { + final _ret = _objc_msgSend_660( + _class_NSXMLDocument, _sel_documentWithRootElement_, element.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - bool resume() { - return _lib._objc_msgSend_12(_id, _lib._sel_resume1); + static objc.NSObject elementWithName_(objc.NSString name) { + final _ret = _objc_msgSend_35( + _class_NSXMLDocument, _sel_elementWithName_, name.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - int get processIdentifier { - return _lib._objc_msgSend_237(_id, _lib._sel_processIdentifier1); + static objc.NSObject elementWithName_URI_( + objc.NSString name, objc.NSString URI) { + final _ret = _objc_msgSend_661(_class_NSXMLDocument, + _sel_elementWithName_URI_, name.pointer, URI.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - bool get running { - return _lib._objc_msgSend_12(_id, _lib._sel_isRunning1); + static objc.NSObject elementWithName_stringValue_( + objc.NSString name, objc.NSString string) { + final _ret = _objc_msgSend_661(_class_NSXMLDocument, + _sel_elementWithName_stringValue_, name.pointer, string.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - int get terminationStatus { - return _lib._objc_msgSend_237(_id, _lib._sel_terminationStatus1); + static objc.NSObject elementWithName_children_attributes_( + objc.NSString name, objc.NSArray? children, objc.NSArray? attributes) { + final _ret = _objc_msgSend_662( + _class_NSXMLDocument, + _sel_elementWithName_children_attributes_, + name.pointer, + children?.pointer ?? ffi.nullptr, + attributes?.pointer ?? ffi.nullptr); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - int get terminationReason { - return _lib._objc_msgSend_1101(_id, _lib._sel_terminationReason1); + static objc.NSObject attributeWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLDocument, + _sel_attributeWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - ObjCBlock_ffiVoid_NSTask? get terminationHandler { - final _ret = _lib._objc_msgSend_1102(_id, _lib._sel_terminationHandler1); - return _ret.address == 0 - ? null - : ObjCBlock_ffiVoid_NSTask._(_ret, _lib, retain: true, release: true); + static objc.NSObject attributeWithName_URI_stringValue_( + objc.NSString name, objc.NSString URI, objc.NSString stringValue) { + final _ret = _objc_msgSend_626( + _class_NSXMLDocument, + _sel_attributeWithName_URI_stringValue_, + name.pointer, + URI.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set terminationHandler(ObjCBlock_ffiVoid_NSTask? value) { - return _lib._objc_msgSend_1103( - _id, _lib._sel_setTerminationHandler_1, value?._id ?? ffi.nullptr); + static objc.NSObject namespaceWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLDocument, + _sel_namespaceWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - int get qualityOfService { - return _lib._objc_msgSend_543(_id, _lib._sel_qualityOfService1); + static objc.NSObject processingInstructionWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661( + _class_NSXMLDocument, + _sel_processingInstructionWithName_stringValue_, + name.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set qualityOfService(int value) { - return _lib._objc_msgSend_544(_id, _lib._sel_setQualityOfService_1, value); + static objc.NSObject commentWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35(_class_NSXMLDocument, + _sel_commentWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSTask? - launchedTaskWithExecutableURL_arguments_error_terminationHandler_( - AVFAudio _lib, - NSURL url, - NSArray arguments, - ffi.Pointer> error, - ObjCBlock_ffiVoid_NSTask? terminationHandler) { - final _ret = _lib._objc_msgSend_1104( - _lib._class_NSTask1, - _lib._sel_launchedTaskWithExecutableURL_arguments_error_terminationHandler_1, - url._id, - arguments._id, - error, - terminationHandler?._id ?? ffi.nullptr); + static objc.NSObject textWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLDocument, _sel_textWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject? DTDNodeWithXMLString_(objc.NSString string) { + final _ret = _objc_msgSend_2( + _class_NSXMLDocument, _sel_DTDNodeWithXMLString_, string.pointer); return _ret.address == 0 ? null - : NSTask._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void waitUntilExit() { - _lib._objc_msgSend_1(_id, _lib._sel_waitUntilExit1); + static objc.NSString localNameForName_(objc.NSString name) { + final _ret = _objc_msgSend_297( + _class_NSXMLDocument, _sel_localNameForName_, name.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? get launchPath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_launchPath1); + static objc.NSString? prefixForName_(objc.NSString name) { + final _ret = _objc_msgSend_14( + _class_NSXMLDocument, _sel_prefixForName_, name.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set launchPath(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setLaunchPath_1, value?._id ?? ffi.nullptr); + static NSXMLNode? predefinedNamespaceForPrefix_(objc.NSString name) { + final _ret = _objc_msgSend_677( + _class_NSXMLDocument, _sel_predefinedNamespaceForPrefix_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - NSString get currentDirectoryPath { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_currentDirectoryPath1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSXMLDocument new1() { + final _ret = _objc_msgSend_40(_class_NSXMLDocument, _sel_new); + return NSXMLDocument.castFromPointer(_ret, retain: false, release: true); } - set currentDirectoryPath(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setCurrentDirectoryPath_1, value._id); + static NSXMLDocument allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSXMLDocument, _sel_allocWithZone_, zone); + return NSXMLDocument.castFromPointer(_ret, retain: false, release: true); } - void launch() { - _lib._objc_msgSend_1(_id, _lib._sel_launch1); + static NSXMLDocument alloc() { + final _ret = _objc_msgSend_40(_class_NSXMLDocument, _sel_alloc); + return NSXMLDocument.castFromPointer(_ret, retain: false, release: true); } - static NSTask launchedTaskWithLaunchPath_arguments_( - AVFAudio _lib, NSString path, NSArray arguments) { - final _ret = _lib._objc_msgSend_1105( - _lib._class_NSTask1, - _lib._sel_launchedTaskWithLaunchPath_arguments_1, - path._id, - arguments._id); - return NSTask._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSXMLDocument, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - static NSTask new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSTask1, _lib._sel_new1); - return NSTask._(_ret, _lib, retain: false, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSXMLDocument, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static NSTask allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSTask1, _lib._sel_allocWithZone_1, zone); - return NSTask._(_ret, _lib, retain: false, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSXMLDocument, _sel_accessInstanceVariablesDirectly); } - static NSTask alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSTask1, _lib._sel_alloc1); - return NSTask._(_ret, _lib, retain: false, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSXMLDocument, _sel_useStoredAccessor); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSXMLDocument, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSXMLDocument, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSTask1, _lib._sel_accessInstanceVariablesDirectly1); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSXMLDocument, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSXMLDocument, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSXMLDocument, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSXMLDocument = objc.getClass("NSXMLDocument"); +late final _sel_initWithXMLString_options_error_ = + objc.registerName("initWithXMLString:options:error:"); +final _objc_msgSend_665 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_initWithContentsOfURL_options_error_ = + objc.registerName("initWithContentsOfURL:options:error:"); +final _objc_msgSend_666 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_initWithData_options_error_ = + objc.registerName("initWithData:options:error:"); +final _objc_msgSend_667 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_initWithRootElement_ = + objc.registerName("initWithRootElement:"); +final _objc_msgSend_668 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_replacementClassForClass_ = + objc.registerName("replacementClassForClass:"); +late final _sel_characterEncoding = objc.registerName("characterEncoding"); +late final _sel_setCharacterEncoding_ = + objc.registerName("setCharacterEncoding:"); +late final _sel_setVersion_ = objc.registerName("setVersion:"); +late final _sel_isStandalone = objc.registerName("isStandalone"); +late final _sel_setStandalone_ = objc.registerName("setStandalone:"); - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSTask1, _lib._sel_useStoredAccessor1); - } +abstract class NSXMLDocumentContentKind { + static const int NSXMLDocumentXMLKind = 0; + static const int NSXMLDocumentXHTMLKind = 1; + static const int NSXMLDocumentHTMLKind = 2; + static const int NSXMLDocumentTextKind = 3; +} - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } +late final _sel_documentContentKind = objc.registerName("documentContentKind"); +final _objc_msgSend_669 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDocumentContentKind_ = + objc.registerName("setDocumentContentKind:"); +final _objc_msgSend_670 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setMIMEType_ = objc.registerName("setMIMEType:"); - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } +class NSXMLDTD extends NSXMLNode { + NSXMLDTD._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + /// Constructs a [NSXMLDTD] that points to the same underlying object as [other]. + NSXMLDTD.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSXMLDTD] that wraps the given raw object pointer. + NSXMLDTD.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSXMLDTD]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSXMLDTD); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSTask1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + @override + NSXMLDTD init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSXMLDTD.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSTask1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + @override + NSXMLDTD initWithKind_options_(int kind, int options) { + final _ret = _objc_msgSend_659( + this.pointer, _sel_initWithKind_options_, kind, options); + return NSXMLDTD.castFromPointer(_ret, retain: true, release: true); } -} -abstract class NSTaskTerminationReason { - static const int NSTaskTerminationReasonExit = 1; - static const int NSTaskTerminationReasonUncaughtSignal = 2; -} + NSXMLDTD? initWithContentsOfURL_options_error_(objc.NSURL url, int mask, + ffi.Pointer> error) { + final _ret = _objc_msgSend_666(this.pointer, + _sel_initWithContentsOfURL_options_error_, url.pointer, mask, error); + return _ret.address == 0 + ? null + : NSXMLDTD.castFromPointer(_ret, retain: true, release: true); + } -void _ObjCBlock_ffiVoid_NSTask_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSTask_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSTask_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSTask_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSTask_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSTask_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + NSXMLDTD? initWithData_options_error_(objc.NSData data, int mask, + ffi.Pointer> error) { + final _ret = _objc_msgSend_667(this.pointer, + _sel_initWithData_options_error_, data.pointer, mask, error); + return _ret.address == 0 + ? null + : NSXMLDTD.castFromPointer(_ret, retain: true, release: true); + } -void _ObjCBlock_ffiVoid_NSTask_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSTask_closureRegistry[block.ref.target.address]!(arg0); + objc.NSString? get publicID { + final _ret = _objc_msgSend_13(this.pointer, _sel_publicID); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); + } -class ObjCBlock_ffiVoid_NSTask extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSTask._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + set publicID(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setPublicID_, value?.pointer ?? ffi.nullptr); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSTask castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSTask._(pointer, lib, - retain: retain, release: release); + objc.NSString? get systemID { + final _ret = _objc_msgSend_13(this.pointer, _sel_systemID); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSTask.fromFunctionPointer( - AVFAudio lib, - ffi.Pointer< - ffi - .NativeFunction arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSTask_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + set systemID(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setSystemID_, value?.pointer ?? ffi.nullptr); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSTask.fromFunction(AVFAudio lib, void Function(NSTask) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSTask_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSTask_registerClosure( - (ffi.Pointer arg0) => - fn(NSTask._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + void insertChild_atIndex_(NSXMLNode child, int index) { + _objc_msgSend_671( + this.pointer, _sel_insertChild_atIndex_, child.pointer, index); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSTask.listener(AVFAudio lib, void Function(NSTask) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSTask_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSTask_registerClosure( - (ffi.Pointer arg0) => - fn(NSTask._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; + void insertChildren_atIndex_(objc.NSArray children, int index) { + _objc_msgSend_672( + this.pointer, _sel_insertChildren_atIndex_, children.pointer, index); + } - void call(NSTask arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0._id); -} + void removeChildAtIndex_(int index) { + _objc_msgSend_414(this.pointer, _sel_removeChildAtIndex_, index); + } -class NSXMLElement extends NSXMLNode { - NSXMLElement._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + void setChildren_(objc.NSArray? children) { + _objc_msgSend_260( + this.pointer, _sel_setChildren_, children?.pointer ?? ffi.nullptr); + } - /// Returns a [NSXMLElement] that points to the same underlying object as [other]. - static NSXMLElement castFrom(T other) { - return NSXMLElement._(other._id, other._lib, retain: true, release: true); + void addChild_(NSXMLNode child) { + _objc_msgSend_673(this.pointer, _sel_addChild_, child.pointer); } - /// Returns a [NSXMLElement] that wraps the given raw object pointer. - static NSXMLElement castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSXMLElement._(other, lib, retain: retain, release: release); + void replaceChildAtIndex_withNode_(int index, NSXMLNode node) { + _objc_msgSend_674( + this.pointer, _sel_replaceChildAtIndex_withNode_, index, node.pointer); } - /// Returns whether [obj] is an instance of [NSXMLElement]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLElement1); + NSXMLDTDNode? entityDeclarationForName_(objc.NSString name) { + final _ret = _objc_msgSend_678( + this.pointer, _sel_entityDeclarationForName_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); } - NSXMLElement initWithName_(NSString name) { - final _ret = _lib._objc_msgSend_31(_id, _lib._sel_initWithName_1, name._id); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + NSXMLDTDNode? notationDeclarationForName_(objc.NSString name) { + final _ret = _objc_msgSend_678( + this.pointer, _sel_notationDeclarationForName_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); } - NSXMLElement initWithName_URI_(NSString name, NSString? URI) { - final _ret = _lib._objc_msgSend_1142( - _id, _lib._sel_initWithName_URI_1, name._id, URI?._id ?? ffi.nullptr); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + NSXMLDTDNode? elementDeclarationForName_(objc.NSString name) { + final _ret = _objc_msgSend_678( + this.pointer, _sel_elementDeclarationForName_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); } - NSXMLElement initWithName_stringValue_(NSString name, NSString? string) { - final _ret = _lib._objc_msgSend_1142( - _id, - _lib._sel_initWithName_stringValue_1, - name._id, - string?._id ?? ffi.nullptr); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + NSXMLDTDNode? attributeDeclarationForName_elementName_( + objc.NSString name, objc.NSString elementName) { + final _ret = _objc_msgSend_679( + this.pointer, + _sel_attributeDeclarationForName_elementName_, + name.pointer, + elementName.pointer); + return _ret.address == 0 + ? null + : NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); } - NSXMLElement? initWithXMLString_error_( - NSString string, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_303( - _id, _lib._sel_initWithXMLString_error_1, string._id, error); + static NSXMLDTDNode? predefinedEntityDeclarationForName_(objc.NSString name) { + final _ret = _objc_msgSend_678(_class_NSXMLDTD, + _sel_predefinedEntityDeclarationForName_, name.pointer); return _ret.address == 0 ? null - : NSXMLElement._(_ret, _lib, retain: true, release: true); + : NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); } @override - NSXMLElement initWithKind_options_(int kind, int options) { - final _ret = _lib._objc_msgSend_1107( - _id, _lib._sel_initWithKind_options_1, kind, options); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + NSXMLDTD initWithKind_(int kind) { + final _ret = _objc_msgSend_658(this.pointer, _sel_initWithKind_, kind); + return NSXMLDTD.castFromPointer(_ret, retain: true, release: true); } - NSArray elementsForName_(NSString name) { - final _ret = - _lib._objc_msgSend_358(_id, _lib._sel_elementsForName_1, name._id); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSObject document() { + final _ret = _objc_msgSend_40(_class_NSXMLDTD, _sel_document); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSArray elementsForLocalName_URI_(NSString localName, NSString? URI) { - final _ret = _lib._objc_msgSend_1143( - _id, - _lib._sel_elementsForLocalName_URI_1, - localName._id, - URI?._id ?? ffi.nullptr); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSObject documentWithRootElement_(NSXMLElement element) { + final _ret = _objc_msgSend_660( + _class_NSXMLDTD, _sel_documentWithRootElement_, element.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void addAttribute_(NSXMLNode attribute) { - _lib._objc_msgSend_1121(_id, _lib._sel_addAttribute_1, attribute._id); + static objc.NSObject elementWithName_(objc.NSString name) { + final _ret = + _objc_msgSend_35(_class_NSXMLDTD, _sel_elementWithName_, name.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void removeAttributeForName_(NSString name) { - _lib._objc_msgSend_247(_id, _lib._sel_removeAttributeForName_1, name._id); + static objc.NSObject elementWithName_URI_( + objc.NSString name, objc.NSString URI) { + final _ret = _objc_msgSend_661( + _class_NSXMLDTD, _sel_elementWithName_URI_, name.pointer, URI.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSArray? get attributes { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_attributes1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_stringValue_( + objc.NSString name, objc.NSString string) { + final _ret = _objc_msgSend_661(_class_NSXMLDTD, + _sel_elementWithName_stringValue_, name.pointer, string.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set attributes(NSArray? value) { - return _lib._objc_msgSend_1053( - _id, _lib._sel_setAttributes_1, value?._id ?? ffi.nullptr); + static objc.NSObject elementWithName_children_attributes_( + objc.NSString name, objc.NSArray? children, objc.NSArray? attributes) { + final _ret = _objc_msgSend_662( + _class_NSXMLDTD, + _sel_elementWithName_children_attributes_, + name.pointer, + children?.pointer ?? ffi.nullptr, + attributes?.pointer ?? ffi.nullptr); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void setAttributesWithDictionary_(NSDictionary attributes) { - _lib._objc_msgSend_509( - _id, _lib._sel_setAttributesWithDictionary_1, attributes._id); + static objc.NSObject attributeWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLDTD, + _sel_attributeWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSXMLNode? attributeForName_(NSString name) { - final _ret = - _lib._objc_msgSend_1125(_id, _lib._sel_attributeForName_1, name._id); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + static objc.NSObject attributeWithName_URI_stringValue_( + objc.NSString name, objc.NSString URI, objc.NSString stringValue) { + final _ret = _objc_msgSend_626( + _class_NSXMLDTD, + _sel_attributeWithName_URI_stringValue_, + name.pointer, + URI.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSXMLNode? attributeForLocalName_URI_(NSString localName, NSString? URI) { - final _ret = _lib._objc_msgSend_1144( - _id, - _lib._sel_attributeForLocalName_URI_1, - localName._id, - URI?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + static objc.NSObject namespaceWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLDTD, + _sel_namespaceWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void addNamespace_(NSXMLNode aNamespace) { - _lib._objc_msgSend_1121(_id, _lib._sel_addNamespace_1, aNamespace._id); + static objc.NSObject processingInstructionWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661( + _class_NSXMLDTD, + _sel_processingInstructionWithName_stringValue_, + name.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject commentWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLDTD, _sel_commentWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void removeNamespaceForPrefix_(NSString name) { - _lib._objc_msgSend_247(_id, _lib._sel_removeNamespaceForPrefix_1, name._id); + static objc.NSObject textWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLDTD, _sel_textWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSArray? get namespaces { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_namespaces1); + static objc.NSObject? DTDNodeWithXMLString_(objc.NSString string) { + final _ret = _objc_msgSend_2( + _class_NSXMLDTD, _sel_DTDNodeWithXMLString_, string.pointer); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set namespaces(NSArray? value) { - return _lib._objc_msgSend_1053( - _id, _lib._sel_setNamespaces_1, value?._id ?? ffi.nullptr); + static objc.NSString localNameForName_(objc.NSString name) { + final _ret = _objc_msgSend_297( + _class_NSXMLDTD, _sel_localNameForName_, name.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSXMLNode? namespaceForPrefix_(NSString name) { + static objc.NSString? prefixForName_(objc.NSString name) { final _ret = - _lib._objc_msgSend_1125(_id, _lib._sel_namespaceForPrefix_1, name._id); + _objc_msgSend_14(_class_NSXMLDTD, _sel_prefixForName_, name.pointer); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSXMLNode? resolveNamespaceForName_(NSString name) { - final _ret = _lib._objc_msgSend_1125( - _id, _lib._sel_resolveNamespaceForName_1, name._id); + static NSXMLNode? predefinedNamespaceForPrefix_(objc.NSString name) { + final _ret = _objc_msgSend_677( + _class_NSXMLDTD, _sel_predefinedNamespaceForPrefix_, name.pointer); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); + } + + static NSXMLDTD new1() { + final _ret = _objc_msgSend_40(_class_NSXMLDTD, _sel_new); + return NSXMLDTD.castFromPointer(_ret, retain: false, release: true); + } + + static NSXMLDTD allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSXMLDTD, _sel_allocWithZone_, zone); + return NSXMLDTD.castFromPointer(_ret, retain: false, release: true); + } + + static NSXMLDTD alloc() { + final _ret = _objc_msgSend_40(_class_NSXMLDTD, _sel_alloc); + return NSXMLDTD.castFromPointer(_ret, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSXMLDTD, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); + } + + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSXMLDTD, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); + } + + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSXMLDTD, _sel_accessInstanceVariablesDirectly); + } + + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSXMLDTD, _sel_useStoredAccessor); + } + + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSXMLDTD, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSXMLDTD, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSXMLDTD, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSXMLDTD, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSXMLDTD, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSXMLDTD = objc.getClass("NSXMLDTD"); +late final _sel_setPublicID_ = objc.registerName("setPublicID:"); +late final _sel_setSystemID_ = objc.registerName("setSystemID:"); +late final _sel_insertChild_atIndex_ = + objc.registerName("insertChild:atIndex:"); +final _objc_msgSend_671 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_insertChildren_atIndex_ = + objc.registerName("insertChildren:atIndex:"); +final _objc_msgSend_672 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_removeChildAtIndex_ = objc.registerName("removeChildAtIndex:"); +late final _sel_setChildren_ = objc.registerName("setChildren:"); +late final _sel_addChild_ = objc.registerName("addChild:"); +final _objc_msgSend_673 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_replaceChildAtIndex_withNode_ = + objc.registerName("replaceChildAtIndex:withNode:"); +final _objc_msgSend_674 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); + +class NSXMLDTDNode extends NSXMLNode { + NSXMLDTDNode._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSXMLDTDNode] that points to the same underlying object as [other]. + NSXMLDTDNode.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSXMLDTDNode] that wraps the given raw object pointer. + NSXMLDTDNode.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSXMLDTDNode]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSXMLDTDNode); } - NSString? resolvePrefixForNamespaceURI_(NSString namespaceURI) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_resolvePrefixForNamespaceURI_1, namespaceURI._id); + NSXMLDTDNode? initWithXMLString_(objc.NSString string) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_initWithXMLString_, string.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); } - void insertChild_atIndex_(NSXMLNode child, int index) { - _lib._objc_msgSend_1119( - _id, _lib._sel_insertChild_atIndex_1, child._id, index); + @override + NSXMLDTDNode initWithKind_options_(int kind, int options) { + final _ret = _objc_msgSend_659( + this.pointer, _sel_initWithKind_options_, kind, options); + return NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); } - void insertChildren_atIndex_(NSArray children, int index) { - _lib._objc_msgSend_1120( - _id, _lib._sel_insertChildren_atIndex_1, children._id, index); + @override + NSXMLDTDNode init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); } - void removeChildAtIndex_(int index) { - _lib._objc_msgSend_470(_id, _lib._sel_removeChildAtIndex_1, index); + int get DTDKind { + return _objc_msgSend_675(this.pointer, _sel_DTDKind); } - void setChildren_(NSArray? children) { - _lib._objc_msgSend_843( - _id, _lib._sel_setChildren_1, children?._id ?? ffi.nullptr); + set DTDKind(int value) { + return _objc_msgSend_676(this.pointer, _sel_setDTDKind_, value); } - void addChild_(NSXMLNode child) { - _lib._objc_msgSend_1121(_id, _lib._sel_addChild_1, child._id); + bool get external1 { + return _objc_msgSend_7(this.pointer, _sel_isExternal); } - void replaceChildAtIndex_withNode_(int index, NSXMLNode node) { - _lib._objc_msgSend_1122( - _id, _lib._sel_replaceChildAtIndex_withNode_1, index, node._id); + objc.NSString? get publicID { + final _ret = _objc_msgSend_13(this.pointer, _sel_publicID); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set publicID(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setPublicID_, value?.pointer ?? ffi.nullptr); + } + + objc.NSString? get systemID { + final _ret = _objc_msgSend_13(this.pointer, _sel_systemID); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void normalizeAdjacentTextNodesPreservingCDATA_(bool preserve) { - _lib._objc_msgSend_870( - _id, _lib._sel_normalizeAdjacentTextNodesPreservingCDATA_1, preserve); + set systemID(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setSystemID_, value?.pointer ?? ffi.nullptr); } - void setAttributesAsDictionary_(NSDictionary attributes) { - _lib._objc_msgSend_509( - _id, _lib._sel_setAttributesAsDictionary_1, attributes._id); + objc.NSString? get notationName { + final _ret = _objc_msgSend_13(this.pointer, _sel_notationName); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSXMLElement init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + set notationName(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setNotationName_, value?.pointer ?? ffi.nullptr); } @override - NSXMLElement initWithKind_(int kind) { - final _ret = _lib._objc_msgSend_1106(_id, _lib._sel_initWithKind_1, kind); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + NSXMLDTDNode initWithKind_(int kind) { + final _ret = _objc_msgSend_658(this.pointer, _sel_initWithKind_, kind); + return NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); } - static NSObject document(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLElement1, _lib._sel_document1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject document() { + final _ret = _objc_msgSend_40(_class_NSXMLDTDNode, _sel_document); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject documentWithRootElement_( - AVFAudio _lib, NSXMLElement element) { - final _ret = _lib._objc_msgSend_1108(_lib._class_NSXMLElement1, - _lib._sel_documentWithRootElement_1, element._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject documentWithRootElement_(NSXMLElement element) { + final _ret = _objc_msgSend_660( + _class_NSXMLDTDNode, _sel_documentWithRootElement_, element.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_(AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSXMLElement1, _lib._sel_elementWithName_1, name._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_(objc.NSString name) { + final _ret = _objc_msgSend_35( + _class_NSXMLDTDNode, _sel_elementWithName_, name.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_URI_( - AVFAudio _lib, NSString name, NSString URI) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLElement1, - _lib._sel_elementWithName_URI_1, name._id, URI._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_URI_( + objc.NSString name, objc.NSString URI) { + final _ret = _objc_msgSend_661(_class_NSXMLDTDNode, + _sel_elementWithName_URI_, name.pointer, URI.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_stringValue_( - AVFAudio _lib, NSString name, NSString string) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLElement1, - _lib._sel_elementWithName_stringValue_1, name._id, string._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_stringValue_( + objc.NSString name, objc.NSString string) { + final _ret = _objc_msgSend_661(_class_NSXMLDTDNode, + _sel_elementWithName_stringValue_, name.pointer, string.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_children_attributes_( - AVFAudio _lib, NSString name, NSArray? children, NSArray? attributes) { - final _ret = _lib._objc_msgSend_1110( - _lib._class_NSXMLElement1, - _lib._sel_elementWithName_children_attributes_1, - name._id, - children?._id ?? ffi.nullptr, - attributes?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_children_attributes_( + objc.NSString name, objc.NSArray? children, objc.NSArray? attributes) { + final _ret = _objc_msgSend_662( + _class_NSXMLDTDNode, + _sel_elementWithName_children_attributes_, + name.pointer, + children?.pointer ?? ffi.nullptr, + attributes?.pointer ?? ffi.nullptr); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject attributeWithName_stringValue_( - AVFAudio _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLElement1, - _lib._sel_attributeWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject attributeWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLDTDNode, + _sel_attributeWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject attributeWithName_URI_stringValue_( - AVFAudio _lib, NSString name, NSString URI, NSString stringValue) { - final _ret = _lib._objc_msgSend_1074( - _lib._class_NSXMLElement1, - _lib._sel_attributeWithName_URI_stringValue_1, - name._id, - URI._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject attributeWithName_URI_stringValue_( + objc.NSString name, objc.NSString URI, objc.NSString stringValue) { + final _ret = _objc_msgSend_626( + _class_NSXMLDTDNode, + _sel_attributeWithName_URI_stringValue_, + name.pointer, + URI.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject namespaceWithName_stringValue_( - AVFAudio _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLElement1, - _lib._sel_namespaceWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject namespaceWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLDTDNode, + _sel_namespaceWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject processingInstructionWithName_stringValue_( - AVFAudio _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109( - _lib._class_NSXMLElement1, - _lib._sel_processingInstructionWithName_stringValue_1, - name._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject processingInstructionWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661( + _class_NSXMLDTDNode, + _sel_processingInstructionWithName_stringValue_, + name.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject commentWithStringValue_(AVFAudio _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLElement1, - _lib._sel_commentWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject commentWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLDTDNode, _sel_commentWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject textWithStringValue_(AVFAudio _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLElement1, - _lib._sel_textWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject textWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLDTDNode, _sel_textWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject? DTDNodeWithXMLString_(AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSXMLElement1, - _lib._sel_DTDNodeWithXMLString_1, string._id); + static objc.NSObject? DTDNodeWithXMLString_(objc.NSString string) { + final _ret = _objc_msgSend_2( + _class_NSXMLDTDNode, _sel_DTDNodeWithXMLString_, string.pointer); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSString localNameForName_(AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_69( - _lib._class_NSXMLElement1, _lib._sel_localNameForName_1, name._id); - return NSString._(_ret, _lib, retain: true, release: true); + static objc.NSString localNameForName_(objc.NSString name) { + final _ret = _objc_msgSend_297( + _class_NSXMLDTDNode, _sel_localNameForName_, name.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSString? prefixForName_(AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_186( - _lib._class_NSXMLElement1, _lib._sel_prefixForName_1, name._id); + static objc.NSString? prefixForName_(objc.NSString name) { + final _ret = _objc_msgSend_14( + _class_NSXMLDTDNode, _sel_prefixForName_, name.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSXMLNode? predefinedNamespaceForPrefix_( - AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_1125(_lib._class_NSXMLElement1, - _lib._sel_predefinedNamespaceForPrefix_1, name._id); + static NSXMLNode? predefinedNamespaceForPrefix_(objc.NSString name) { + final _ret = _objc_msgSend_677( + _class_NSXMLDTDNode, _sel_predefinedNamespaceForPrefix_, name.pointer); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - static NSXMLElement new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLElement1, _lib._sel_new1); - return NSXMLElement._(_ret, _lib, retain: false, release: true); + static NSXMLDTDNode new1() { + final _ret = _objc_msgSend_40(_class_NSXMLDTDNode, _sel_new); + return NSXMLDTDNode.castFromPointer(_ret, retain: false, release: true); } - static NSXMLElement allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLElement1, _lib._sel_allocWithZone_1, zone); - return NSXMLElement._(_ret, _lib, retain: false, release: true); + static NSXMLDTDNode allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSXMLDTDNode, _sel_allocWithZone_, zone); + return NSXMLDTDNode.castFromPointer(_ret, retain: false, release: true); } - static NSXMLElement alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLElement1, _lib._sel_alloc1); - return NSXMLElement._(_ret, _lib, retain: false, release: true); + static NSXMLDTDNode alloc() { + final _ret = _objc_msgSend_40(_class_NSXMLDTDNode, _sel_alloc); + return NSXMLDTDNode.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSXMLElement1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSXMLDTDNode, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLElement1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSXMLDTDNode, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLElement1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSXMLDTDNode, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLElement1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSXMLDTDNode, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSXMLElement1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSXMLDTDNode, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSXMLElement1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSXMLDTDNode, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSXMLElement1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSXMLDTDNode, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSXMLElement1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSXMLDTDNode, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLElement1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSXMLDTDNode, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -class NSXMLNode extends NSObject { - NSXMLNode._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSXMLNode] that points to the same underlying object as [other]. - static NSXMLNode castFrom(T other) { - return NSXMLNode._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSXMLNode] that wraps the given raw object pointer. - static NSXMLNode castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSXMLNode._(other, lib, retain: retain, release: release); - } +late final _class_NSXMLDTDNode = objc.getClass("NSXMLDTDNode"); +late final _sel_initWithXMLString_ = objc.registerName("initWithXMLString:"); - /// Returns whether [obj] is an instance of [NSXMLNode]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLNode1); - } +abstract class NSXMLDTDNodeKind { + static const int NSXMLEntityGeneralKind = 1; + static const int NSXMLEntityParsedKind = 2; + static const int NSXMLEntityUnparsedKind = 3; + static const int NSXMLEntityParameterKind = 4; + static const int NSXMLEntityPredefined = 5; + static const int NSXMLAttributeCDATAKind = 6; + static const int NSXMLAttributeIDKind = 7; + static const int NSXMLAttributeIDRefKind = 8; + static const int NSXMLAttributeIDRefsKind = 9; + static const int NSXMLAttributeEntityKind = 10; + static const int NSXMLAttributeEntitiesKind = 11; + static const int NSXMLAttributeNMTokenKind = 12; + static const int NSXMLAttributeNMTokensKind = 13; + static const int NSXMLAttributeEnumerationKind = 14; + static const int NSXMLAttributeNotationKind = 15; + static const int NSXMLElementDeclarationUndefinedKind = 16; + static const int NSXMLElementDeclarationEmptyKind = 17; + static const int NSXMLElementDeclarationAnyKind = 18; + static const int NSXMLElementDeclarationMixedKind = 19; + static const int NSXMLElementDeclarationElementKind = 20; +} - @override - NSXMLNode init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLNode._(_ret, _lib, retain: true, release: true); - } +late final _sel_DTDKind = objc.registerName("DTDKind"); +final _objc_msgSend_675 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDTDKind_ = objc.registerName("setDTDKind:"); +final _objc_msgSend_676 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_isExternal = objc.registerName("isExternal"); +late final _sel_notationName = objc.registerName("notationName"); +late final _sel_setNotationName_ = objc.registerName("setNotationName:"); +late final _sel_localNameForName_ = objc.registerName("localNameForName:"); +late final _sel_prefixForName_ = objc.registerName("prefixForName:"); +late final _sel_predefinedNamespaceForPrefix_ = + objc.registerName("predefinedNamespaceForPrefix:"); +final _objc_msgSend_677 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_entityDeclarationForName_ = + objc.registerName("entityDeclarationForName:"); +final _objc_msgSend_678 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_notationDeclarationForName_ = + objc.registerName("notationDeclarationForName:"); +late final _sel_elementDeclarationForName_ = + objc.registerName("elementDeclarationForName:"); +late final _sel_attributeDeclarationForName_elementName_ = + objc.registerName("attributeDeclarationForName:elementName:"); +final _objc_msgSend_679 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_predefinedEntityDeclarationForName_ = + objc.registerName("predefinedEntityDeclarationForName:"); +late final _sel_DTD = objc.registerName("DTD"); +final _objc_msgSend_680 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDTD_ = objc.registerName("setDTD:"); +final _objc_msgSend_681 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setRootElement_ = objc.registerName("setRootElement:"); +final _objc_msgSend_682 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_rootElement = objc.registerName("rootElement"); +final _objc_msgSend_683 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_XMLData = objc.registerName("XMLData"); +late final _sel_XMLDataWithOptions_ = objc.registerName("XMLDataWithOptions:"); +final _objc_msgSend_684 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_objectByApplyingXSLT_arguments_error_ = + objc.registerName("objectByApplyingXSLT:arguments:error:"); +final _objc_msgSend_685 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_objectByApplyingXSLTString_arguments_error_ = + objc.registerName("objectByApplyingXSLTString:arguments:error:"); +final _objc_msgSend_686 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_objectByApplyingXSLTAtURL_arguments_error_ = + objc.registerName("objectByApplyingXSLTAtURL:arguments:error:"); +final _objc_msgSend_687 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_validateAndReturnError_ = + objc.registerName("validateAndReturnError:"); +late final _sel_rootDocument = objc.registerName("rootDocument"); +final _objc_msgSend_688 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_parent = objc.registerName("parent"); +final _objc_msgSend_689 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_childCount = objc.registerName("childCount"); +late final _sel_children = objc.registerName("children"); +late final _sel_childAtIndex_ = objc.registerName("childAtIndex:"); +final _objc_msgSend_690 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_previousSibling = objc.registerName("previousSibling"); +late final _sel_nextSibling = objc.registerName("nextSibling"); +late final _sel_previousNode = objc.registerName("previousNode"); +late final _sel_nextNode = objc.registerName("nextNode"); +late final _sel_detach = objc.registerName("detach"); +late final _sel_XPath = objc.registerName("XPath"); +late final _sel_localName = objc.registerName("localName"); +late final _sel_prefix = objc.registerName("prefix"); +late final _sel_URI = objc.registerName("URI"); +late final _sel_setURI_ = objc.registerName("setURI:"); +late final _sel_XMLString = objc.registerName("XMLString"); +late final _sel_XMLStringWithOptions_ = + objc.registerName("XMLStringWithOptions:"); +final _objc_msgSend_691 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_canonicalXMLStringPreservingComments_ = + objc.registerName("canonicalXMLStringPreservingComments:"); +final _objc_msgSend_692 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, bool)>(); +late final _sel_nodesForXPath_error_ = + objc.registerName("nodesForXPath:error:"); +late final _sel_objectsForXQuery_constants_error_ = + objc.registerName("objectsForXQuery:constants:error:"); +final _objc_msgSend_693 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_objectsForXQuery_error_ = + objc.registerName("objectsForXQuery:error:"); +late final _sel_initWithName_URI_ = objc.registerName("initWithName:URI:"); +final _objc_msgSend_694 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithName_stringValue_ = + objc.registerName("initWithName:stringValue:"); +late final _sel_initWithXMLString_error_ = + objc.registerName("initWithXMLString:error:"); +final _objc_msgSend_695 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_elementsForName_ = objc.registerName("elementsForName:"); +late final _sel_elementsForLocalName_URI_ = + objc.registerName("elementsForLocalName:URI:"); +final _objc_msgSend_696 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_addAttribute_ = objc.registerName("addAttribute:"); +late final _sel_removeAttributeForName_ = + objc.registerName("removeAttributeForName:"); +late final _sel_attributes = objc.registerName("attributes"); +late final _sel_setAttributes_ = objc.registerName("setAttributes:"); +late final _sel_setAttributesWithDictionary_ = + objc.registerName("setAttributesWithDictionary:"); +final _objc_msgSend_697 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_attributeForName_ = objc.registerName("attributeForName:"); +late final _sel_attributeForLocalName_URI_ = + objc.registerName("attributeForLocalName:URI:"); +final _objc_msgSend_698 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_addNamespace_ = objc.registerName("addNamespace:"); +late final _sel_removeNamespaceForPrefix_ = + objc.registerName("removeNamespaceForPrefix:"); +late final _sel_namespaces = objc.registerName("namespaces"); +late final _sel_setNamespaces_ = objc.registerName("setNamespaces:"); +late final _sel_namespaceForPrefix_ = objc.registerName("namespaceForPrefix:"); +late final _sel_resolveNamespaceForName_ = + objc.registerName("resolveNamespaceForName:"); +late final _sel_resolvePrefixForNamespaceURI_ = + objc.registerName("resolvePrefixForNamespaceURI:"); +late final _sel_normalizeAdjacentTextNodesPreservingCDATA_ = + objc.registerName("normalizeAdjacentTextNodesPreservingCDATA:"); +late final _sel_setAttributesAsDictionary_ = + objc.registerName("setAttributesAsDictionary:"); - NSXMLNode initWithKind_(int kind) { - final _ret = _lib._objc_msgSend_1106(_id, _lib._sel_initWithKind_1, kind); - return NSXMLNode._(_ret, _lib, retain: true, release: true); - } +class NSScriptClassDescription extends NSClassDescription { + NSScriptClassDescription._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSXMLNode initWithKind_options_(int kind, int options) { - final _ret = _lib._objc_msgSend_1107( - _id, _lib._sel_initWithKind_options_1, kind, options); - return NSXMLNode._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSScriptClassDescription] that points to the same underlying object as [other]. + NSScriptClassDescription.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - static NSObject document(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLNode1, _lib._sel_document1); - return NSObject._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSScriptClassDescription] that wraps the given raw object pointer. + NSScriptClassDescription.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static NSObject documentWithRootElement_( - AVFAudio _lib, NSXMLElement element) { - final _ret = _lib._objc_msgSend_1108(_lib._class_NSXMLNode1, - _lib._sel_documentWithRootElement_1, element._id); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSScriptClassDescription]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSScriptClassDescription); } - static NSObject elementWithName_(AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSXMLNode1, _lib._sel_elementWithName_1, name._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSScriptClassDescription? classDescriptionForClass_( + objc.NSObject aClass) { + final _ret = _objc_msgSend_701(_class_NSScriptClassDescription, + _sel_classDescriptionForClass_, aClass.pointer); + return _ret.address == 0 + ? null + : NSScriptClassDescription.castFromPointer(_ret, + retain: true, release: true); } - static NSObject elementWithName_URI_( - AVFAudio _lib, NSString name, NSString URI) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLNode1, - _lib._sel_elementWithName_URI_1, name._id, URI._id); - return NSObject._(_ret, _lib, retain: true, release: true); + NSScriptClassDescription? initWithSuiteName_className_dictionary_( + objc.NSString suiteName, + objc.NSString className, + objc.NSDictionary? classDeclaration) { + final _ret = _objc_msgSend_702( + this.pointer, + _sel_initWithSuiteName_className_dictionary_, + suiteName.pointer, + className.pointer, + classDeclaration?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSScriptClassDescription.castFromPointer(_ret, + retain: true, release: true); } - static NSObject elementWithName_stringValue_( - AVFAudio _lib, NSString name, NSString string) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLNode1, - _lib._sel_elementWithName_stringValue_1, name._id, string._id); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSString? get suiteName { + final _ret = _objc_msgSend_13(this.pointer, _sel_suiteName); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_children_attributes_( - AVFAudio _lib, NSString name, NSArray? children, NSArray? attributes) { - final _ret = _lib._objc_msgSend_1110( - _lib._class_NSXMLNode1, - _lib._sel_elementWithName_children_attributes_1, - name._id, - children?._id ?? ffi.nullptr, - attributes?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSString? get className { + final _ret = _objc_msgSend_13(this.pointer, _sel_className); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject attributeWithName_stringValue_( - AVFAudio _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLNode1, - _lib._sel_attributeWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSString? get implementationClassName { + final _ret = _objc_msgSend_13(this.pointer, _sel_implementationClassName); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject attributeWithName_URI_stringValue_( - AVFAudio _lib, NSString name, NSString URI, NSString stringValue) { - final _ret = _lib._objc_msgSend_1074( - _lib._class_NSXMLNode1, - _lib._sel_attributeWithName_URI_stringValue_1, - name._id, - URI._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + NSScriptClassDescription? get superclassDescription { + final _ret = _objc_msgSend_703(this.pointer, _sel_superclassDescription); + return _ret.address == 0 + ? null + : NSScriptClassDescription.castFromPointer(_ret, + retain: true, release: true); } - static NSObject namespaceWithName_stringValue_( - AVFAudio _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLNode1, - _lib._sel_namespaceWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + int get appleEventCode { + return _objc_msgSend_704(this.pointer, _sel_appleEventCode); } - static NSObject processingInstructionWithName_stringValue_( - AVFAudio _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109( - _lib._class_NSXMLNode1, - _lib._sel_processingInstructionWithName_stringValue_1, - name._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + bool matchesAppleEventCode_(int appleEventCode) { + return _objc_msgSend_705( + this.pointer, _sel_matchesAppleEventCode_, appleEventCode); } - static NSObject commentWithStringValue_(AVFAudio _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLNode1, - _lib._sel_commentWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + bool supportsCommand_(NSScriptCommandDescription commandDescription) { + return _objc_msgSend_747( + this.pointer, _sel_supportsCommand_, commandDescription.pointer); } - static NSObject textWithStringValue_(AVFAudio _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLNode1, - _lib._sel_textWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + ffi.Pointer selectorForCommand_( + NSScriptCommandDescription commandDescription) { + return _objc_msgSend_748( + this.pointer, _sel_selectorForCommand_, commandDescription.pointer); } - static NSObject? DTDNodeWithXMLString_(AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_38( - _lib._class_NSXMLNode1, _lib._sel_DTDNodeWithXMLString_1, string._id); + objc.NSString? typeForKey_(objc.NSString key) { + final _ret = _objc_msgSend_14(this.pointer, _sel_typeForKey_, key.pointer); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - int get kind { - return _lib._objc_msgSend_1111(_id, _lib._sel_kind1); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? get name { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_name1); + NSScriptClassDescription? classDescriptionForKey_(objc.NSString key) { + final _ret = _objc_msgSend_749( + this.pointer, _sel_classDescriptionForKey_, key.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSScriptClassDescription.castFromPointer(_ret, + retain: true, release: true); } - set name(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); + int appleEventCodeForKey_(objc.NSString key) { + return _objc_msgSend_706( + this.pointer, _sel_appleEventCodeForKey_, key.pointer); } - NSObject? get objectValue { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_objectValue1); + objc.NSString? keyWithAppleEventCode_(int appleEventCode) { + final _ret = _objc_msgSend_750( + this.pointer, _sel_keyWithAppleEventCode_, appleEventCode); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - set objectValue(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setObjectValue_1, value?._id ?? ffi.nullptr); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? get stringValue { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_stringValue1); + objc.NSString? get defaultSubcontainerAttributeKey { + final _ret = + _objc_msgSend_13(this.pointer, _sel_defaultSubcontainerAttributeKey); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set stringValue(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setStringValue_1, value?._id ?? ffi.nullptr); + bool isLocationRequiredToCreateForKey_(objc.NSString toManyRelationshipKey) { + return _objc_msgSend_51(this.pointer, + _sel_isLocationRequiredToCreateForKey_, toManyRelationshipKey.pointer); } - void setStringValue_resolvingEntities_(NSString string, bool resolve) { - _lib._objc_msgSend_1112( - _id, _lib._sel_setStringValue_resolvingEntities_1, string._id, resolve); + bool hasPropertyForKey_(objc.NSString key) { + return _objc_msgSend_51(this.pointer, _sel_hasPropertyForKey_, key.pointer); } - int get index { - return _lib._objc_msgSend_10(_id, _lib._sel_index1); + bool hasOrderedToManyRelationshipForKey_(objc.NSString key) { + return _objc_msgSend_51( + this.pointer, _sel_hasOrderedToManyRelationshipForKey_, key.pointer); } - int get level { - return _lib._objc_msgSend_10(_id, _lib._sel_level1); + bool hasReadablePropertyForKey_(objc.NSString key) { + return _objc_msgSend_51( + this.pointer, _sel_hasReadablePropertyForKey_, key.pointer); } - NSXMLDocument? get rootDocument { - final _ret = _lib._objc_msgSend_1136(_id, _lib._sel_rootDocument1); - return _ret.address == 0 - ? null - : NSXMLDocument._(_ret, _lib, retain: true, release: true); + bool hasWritablePropertyForKey_(objc.NSString key) { + return _objc_msgSend_51( + this.pointer, _sel_hasWritablePropertyForKey_, key.pointer); } - NSXMLNode? get parent { - final _ret = _lib._objc_msgSend_1137(_id, _lib._sel_parent1); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + bool isReadOnlyKey_(objc.NSString key) { + return _objc_msgSend_51(this.pointer, _sel_isReadOnlyKey_, key.pointer); } - int get childCount { - return _lib._objc_msgSend_10(_id, _lib._sel_childCount1); + static void registerClassDescription_forClass_( + NSClassDescription description, objc.NSObject aClass) { + _objc_msgSend_699( + _class_NSScriptClassDescription, + _sel_registerClassDescription_forClass_, + description.pointer, + aClass.pointer); } - NSArray? get children { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_children1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + static void invalidateClassDescriptionCache() { + _objc_msgSend_82( + _class_NSScriptClassDescription, _sel_invalidateClassDescriptionCache); } - NSXMLNode? childAtIndex_(int index) { - final _ret = _lib._objc_msgSend_1138(_id, _lib._sel_childAtIndex_1, index); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + @override + NSScriptClassDescription init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSScriptClassDescription.castFromPointer(_ret, + retain: true, release: true); } - NSXMLNode? get previousSibling { - final _ret = _lib._objc_msgSend_1137(_id, _lib._sel_previousSibling1); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + static NSScriptClassDescription new1() { + final _ret = _objc_msgSend_40(_class_NSScriptClassDescription, _sel_new); + return NSScriptClassDescription.castFromPointer(_ret, + retain: false, release: true); } - NSXMLNode? get nextSibling { - final _ret = _lib._objc_msgSend_1137(_id, _lib._sel_nextSibling1); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + static NSScriptClassDescription allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSScriptClassDescription, _sel_allocWithZone_, zone); + return NSScriptClassDescription.castFromPointer(_ret, + retain: false, release: true); } - NSXMLNode? get previousNode { - final _ret = _lib._objc_msgSend_1137(_id, _lib._sel_previousNode1); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + static NSScriptClassDescription alloc() { + final _ret = _objc_msgSend_40(_class_NSScriptClassDescription, _sel_alloc); + return NSScriptClassDescription.castFromPointer(_ret, + retain: false, release: true); } - NSXMLNode? get nextNode { - final _ret = _lib._objc_msgSend_1137(_id, _lib._sel_nextNode1); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSScriptClassDescription, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - void detach() { - _lib._objc_msgSend_1(_id, _lib._sel_detach1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSScriptClassDescription, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSString? get XPath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_XPath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSScriptClassDescription, _sel_accessInstanceVariablesDirectly); } - NSString? get localName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_localName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSScriptClassDescription, _sel_useStoredAccessor); } - NSString? get prefix { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_prefix1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSScriptClassDescription, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSString? get URI { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_URI1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSScriptClassDescription, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - set URI(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setURI_1, value?._id ?? ffi.nullptr); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSScriptClassDescription, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSString localNameForName_(AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_69( - _lib._class_NSXMLNode1, _lib._sel_localNameForName_1, name._id); - return NSString._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSScriptClassDescription, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSString? prefixForName_(AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_186( - _lib._class_NSXMLNode1, _lib._sel_prefixForName_1, name._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSScriptClassDescription, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - static NSXMLNode? predefinedNamespaceForPrefix_( - AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_1125(_lib._class_NSXMLNode1, - _lib._sel_predefinedNamespaceForPrefix_1, name._id); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); - } +late final _class_NSScriptClassDescription = + objc.getClass("NSScriptClassDescription"); - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } +class NSClassDescription extends objc.NSObject { + NSClassDescription._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSString get XMLString { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_XMLString1); - return NSString._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSClassDescription] that points to the same underlying object as [other]. + NSClassDescription.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSString XMLStringWithOptions_(int options) { - final _ret = - _lib._objc_msgSend_1139(_id, _lib._sel_XMLStringWithOptions_1, options); - return NSString._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSClassDescription] that wraps the given raw object pointer. + NSClassDescription.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSString canonicalXMLStringPreservingComments_(bool comments) { - final _ret = _lib._objc_msgSend_1140( - _id, _lib._sel_canonicalXMLStringPreservingComments_1, comments); - return NSString._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSClassDescription]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSClassDescription); } - NSArray? nodesForXPath_error_( - NSString xpath, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_443( - _id, _lib._sel_nodesForXPath_error_1, xpath._id, error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + static void registerClassDescription_forClass_( + NSClassDescription description, objc.NSObject aClass) { + _objc_msgSend_699( + _class_NSClassDescription, + _sel_registerClassDescription_forClass_, + description.pointer, + aClass.pointer); } - NSArray? objectsForXQuery_constants_error_(NSString xquery, - NSDictionary? constants, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1141( - _id, - _lib._sel_objectsForXQuery_constants_error_1, - xquery._id, - constants?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + static void invalidateClassDescriptionCache() { + _objc_msgSend_82( + _class_NSClassDescription, _sel_invalidateClassDescriptionCache); } - NSArray? objectsForXQuery_error_( - NSString xquery, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_443( - _id, _lib._sel_objectsForXQuery_error_1, xquery._id, error); + static NSClassDescription? classDescriptionForClass_(objc.NSObject aClass) { + final _ret = _objc_msgSend_700(_class_NSClassDescription, + _sel_classDescriptionForClass_, aClass.pointer); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : NSClassDescription.castFromPointer(_ret, retain: true, release: true); } - static NSXMLNode new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLNode1, _lib._sel_new1); - return NSXMLNode._(_ret, _lib, retain: false, release: true); + objc.NSArray get attributeKeys { + final _ret = _objc_msgSend_6(this.pointer, _sel_attributeKeys); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSXMLNode allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLNode1, _lib._sel_allocWithZone_1, zone); - return NSXMLNode._(_ret, _lib, retain: false, release: true); + objc.NSArray get toOneRelationshipKeys { + final _ret = _objc_msgSend_6(this.pointer, _sel_toOneRelationshipKeys); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSXMLNode alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLNode1, _lib._sel_alloc1); - return NSXMLNode._(_ret, _lib, retain: false, release: true); + objc.NSArray get toManyRelationshipKeys { + final _ret = _objc_msgSend_6(this.pointer, _sel_toManyRelationshipKeys); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSXMLNode1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + objc.NSString? inverseForRelationshipKey_(objc.NSString relationshipKey) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_inverseForRelationshipKey_, relationshipKey.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLNode1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + @override + NSClassDescription init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSClassDescription.castFromPointer(_ret, + retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLNode1, _lib._sel_accessInstanceVariablesDirectly1); + static NSClassDescription new1() { + final _ret = _objc_msgSend_40(_class_NSClassDescription, _sel_new); + return NSClassDescription.castFromPointer(_ret, + retain: false, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLNode1, _lib._sel_useStoredAccessor1); + static NSClassDescription allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSClassDescription, _sel_allocWithZone_, zone); + return NSClassDescription.castFromPointer(_ret, + retain: false, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSXMLNode1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static NSClassDescription alloc() { + final _ret = _objc_msgSend_40(_class_NSClassDescription, _sel_alloc); + return NSClassDescription.castFromPointer(_ret, + retain: false, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSXMLNode1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSClassDescription, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSXMLNode1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSClassDescription, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSXMLNode1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSClassDescription, _sel_accessInstanceVariablesDirectly); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLNode1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSClassDescription, _sel_useStoredAccessor); } -} -abstract class NSXMLNodeKind { - static const int NSXMLInvalidKind = 0; - static const int NSXMLDocumentKind = 1; - static const int NSXMLElementKind = 2; - static const int NSXMLAttributeKind = 3; - static const int NSXMLNamespaceKind = 4; - static const int NSXMLProcessingInstructionKind = 5; - static const int NSXMLCommentKind = 6; - static const int NSXMLTextKind = 7; - static const int NSXMLDTDKind = 8; - static const int NSXMLEntityDeclarationKind = 9; - static const int NSXMLAttributeDeclarationKind = 10; - static const int NSXMLElementDeclarationKind = 11; - static const int NSXMLNotationDeclarationKind = 12; -} + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSClassDescription, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); + } -abstract class NSXMLNodeOptions { - static const int NSXMLNodeOptionsNone = 0; - static const int NSXMLNodeIsCDATA = 1; - static const int NSXMLNodeExpandEmptyElement = 2; - static const int NSXMLNodeCompactEmptyElement = 4; - static const int NSXMLNodeUseSingleQuotes = 8; - static const int NSXMLNodeUseDoubleQuotes = 16; - static const int NSXMLNodeNeverEscapeContents = 32; - static const int NSXMLDocumentTidyHTML = 512; - static const int NSXMLDocumentTidyXML = 1024; - static const int NSXMLDocumentValidate = 8192; - static const int NSXMLNodeLoadExternalEntitiesAlways = 16384; - static const int NSXMLNodeLoadExternalEntitiesSameOriginOnly = 32768; - static const int NSXMLNodeLoadExternalEntitiesNever = 524288; - static const int NSXMLDocumentXInclude = 65536; - static const int NSXMLNodePrettyPrint = 131072; - static const int NSXMLDocumentIncludeContentTypeDeclaration = 262144; - static const int NSXMLNodePreserveNamespaceOrder = 1048576; - static const int NSXMLNodePreserveAttributeOrder = 2097152; - static const int NSXMLNodePreserveEntities = 4194304; - static const int NSXMLNodePreservePrefixes = 8388608; - static const int NSXMLNodePreserveCDATA = 16777216; - static const int NSXMLNodePreserveWhitespace = 33554432; - static const int NSXMLNodePreserveDTD = 67108864; - static const int NSXMLNodePreserveCharacterReferences = 134217728; - static const int NSXMLNodePromoteSignificantWhitespace = 268435456; - static const int NSXMLNodePreserveEmptyElements = 6; - static const int NSXMLNodePreserveQuotes = 24; - static const int NSXMLNodePreserveAll = 4293918750; -} + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSClassDescription, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); + } -class NSXMLDocument extends NSXMLNode { - NSXMLDocument._(ffi.Pointer id, AVFAudio lib, + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSClassDescription, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSClassDescription, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSClassDescription, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSClassDescription = objc.getClass("NSClassDescription"); +late final _sel_registerClassDescription_forClass_ = + objc.registerName("registerClassDescription:forClass:"); +final _objc_msgSend_699 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_invalidateClassDescriptionCache = + objc.registerName("invalidateClassDescriptionCache"); +late final _sel_classDescriptionForClass_ = + objc.registerName("classDescriptionForClass:"); +final _objc_msgSend_700 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_attributeKeys = objc.registerName("attributeKeys"); +late final _sel_toOneRelationshipKeys = + objc.registerName("toOneRelationshipKeys"); +late final _sel_toManyRelationshipKeys = + objc.registerName("toManyRelationshipKeys"); +late final _sel_inverseForRelationshipKey_ = + objc.registerName("inverseForRelationshipKey:"); +final _objc_msgSend_701 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithSuiteName_className_dictionary_ = + objc.registerName("initWithSuiteName:className:dictionary:"); +final _objc_msgSend_702 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_suiteName = objc.registerName("suiteName"); +late final _sel_className = objc.registerName("className"); +late final _sel_implementationClassName = + objc.registerName("implementationClassName"); +late final _sel_superclassDescription = + objc.registerName("superclassDescription"); +final _objc_msgSend_703 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_appleEventCode = objc.registerName("appleEventCode"); +final _objc_msgSend_704 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedInt Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_matchesAppleEventCode_ = + objc.registerName("matchesAppleEventCode:"); +final _objc_msgSend_705 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, int)>(); + +class NSScriptCommandDescription extends objc.NSObject { + NSScriptCommandDescription._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSXMLDocument] that points to the same underlying object as [other]. - static NSXMLDocument castFrom(T other) { - return NSXMLDocument._(other._id, other._lib, retain: true, release: true); - } + /// Constructs a [NSScriptCommandDescription] that points to the same underlying object as [other]. + NSScriptCommandDescription.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSXMLDocument] that wraps the given raw object pointer. - static NSXMLDocument castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSXMLDocument._(other, lib, retain: retain, release: release); - } + /// Constructs a [NSScriptCommandDescription] that wraps the given raw object pointer. + NSScriptCommandDescription.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - /// Returns whether [obj] is an instance of [NSXMLDocument]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLDocument1); + /// Returns whether [obj] is an instance of [NSScriptCommandDescription]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSScriptCommandDescription); } @override - NSXMLDocument init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLDocument._(_ret, _lib, retain: true, release: true); + objc.NSObject init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSXMLDocument? initWithXMLString_options_error_( - NSString string, int mask, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1113(_id, - _lib._sel_initWithXMLString_options_error_1, string._id, mask, error); - return _ret.address == 0 - ? null - : NSXMLDocument._(_ret, _lib, retain: true, release: true); + NSScriptCommandDescription? initWithSuiteName_commandName_dictionary_( + objc.NSString suiteName, + objc.NSString commandName, + objc.NSDictionary? commandDeclaration) { + final _ret = _objc_msgSend_702( + this.pointer, + _sel_initWithSuiteName_commandName_dictionary_, + suiteName.pointer, + commandName.pointer, + commandDeclaration?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSScriptCommandDescription.castFromPointer(_ret, + retain: true, release: true); } - NSXMLDocument? initWithContentsOfURL_options_error_( - NSURL url, int mask, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1114(_id, - _lib._sel_initWithContentsOfURL_options_error_1, url._id, mask, error); + NSScriptCommandDescription? initWithCoder_(objc.NSCoder inCoder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, inCoder.pointer); return _ret.address == 0 ? null - : NSXMLDocument._(_ret, _lib, retain: true, release: true); + : NSScriptCommandDescription.castFromPointer(_ret, + retain: true, release: true); } - NSXMLDocument? initWithData_options_error_( - NSData data, int mask, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1115( - _id, _lib._sel_initWithData_options_error_1, data._id, mask, error); - return _ret.address == 0 - ? null - : NSXMLDocument._(_ret, _lib, retain: true, release: true); + objc.NSString get suiteName { + final _ret = _objc_msgSend_12(this.pointer, _sel_suiteName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSXMLDocument initWithRootElement_(NSXMLElement? element) { - final _ret = _lib._objc_msgSend_1116( - _id, _lib._sel_initWithRootElement_1, element?._id ?? ffi.nullptr); - return NSXMLDocument._(_ret, _lib, retain: true, release: true); + objc.NSString get commandName { + final _ret = _objc_msgSend_12(this.pointer, _sel_commandName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject replacementClassForClass_(AVFAudio _lib, NSObject cls) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSXMLDocument1, - _lib._sel_replacementClassForClass_1, cls._id); - return NSObject._(_ret, _lib, retain: true, release: true); + int get appleEventClassCode { + return _objc_msgSend_704(this.pointer, _sel_appleEventClassCode); } - NSString? get characterEncoding { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_characterEncoding1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + int get appleEventCode { + return _objc_msgSend_704(this.pointer, _sel_appleEventCode); } - set characterEncoding(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setCharacterEncoding_1, value?._id ?? ffi.nullptr); + objc.NSString get commandClassName { + final _ret = _objc_msgSend_12(this.pointer, _sel_commandClassName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? get version { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_version1); + objc.NSString? get returnType { + final _ret = _objc_msgSend_13(this.pointer, _sel_returnType); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set version(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setVersion_1, value?._id ?? ffi.nullptr); + int get appleEventCodeForReturnType { + return _objc_msgSend_704(this.pointer, _sel_appleEventCodeForReturnType); } - bool get standalone { - return _lib._objc_msgSend_12(_id, _lib._sel_isStandalone1); + objc.NSArray get argumentNames { + final _ret = _objc_msgSend_6(this.pointer, _sel_argumentNames); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set standalone(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setStandalone_1, value); + objc.NSString? typeForArgumentWithName_(objc.NSString argumentName) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_typeForArgumentWithName_, argumentName.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - int get documentContentKind { - return _lib._objc_msgSend_1117(_id, _lib._sel_documentContentKind1); + int appleEventCodeForArgumentWithName_(objc.NSString argumentName) { + return _objc_msgSend_706(this.pointer, + _sel_appleEventCodeForArgumentWithName_, argumentName.pointer); } - set documentContentKind(int value) { - return _lib._objc_msgSend_1118( - _id, _lib._sel_setDocumentContentKind_1, value); + bool isOptionalArgumentWithName_(objc.NSString argumentName) { + return _objc_msgSend_51( + this.pointer, _sel_isOptionalArgumentWithName_, argumentName.pointer); } - NSString? get MIMEType { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_MIMEType1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + NSScriptCommand createCommandInstance() { + final _ret = _objc_msgSend_745(this.pointer, _sel_createCommandInstance); + return NSScriptCommand.castFromPointer(_ret, retain: true, release: true); } - set MIMEType(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setMIMEType_1, value?._id ?? ffi.nullptr); + NSScriptCommand createCommandInstanceWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_746( + this.pointer, _sel_createCommandInstanceWithZone_, zone); + return NSScriptCommand.castFromPointer(_ret, retain: true, release: true); } - NSXMLDTD? get DTD { - final _ret = _lib._objc_msgSend_1128(_id, _lib._sel_DTD1); - return _ret.address == 0 - ? null - : NSXMLDTD._(_ret, _lib, retain: true, release: true); + static NSScriptCommandDescription new1() { + final _ret = _objc_msgSend_40(_class_NSScriptCommandDescription, _sel_new); + return NSScriptCommandDescription.castFromPointer(_ret, + retain: false, release: true); } - set DTD(NSXMLDTD? value) { - return _lib._objc_msgSend_1129( - _id, _lib._sel_setDTD_1, value?._id ?? ffi.nullptr); + static NSScriptCommandDescription allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSScriptCommandDescription, _sel_allocWithZone_, zone); + return NSScriptCommandDescription.castFromPointer(_ret, + retain: false, release: true); } - void setRootElement_(NSXMLElement root) { - _lib._objc_msgSend_1130(_id, _lib._sel_setRootElement_1, root._id); + static NSScriptCommandDescription alloc() { + final _ret = + _objc_msgSend_40(_class_NSScriptCommandDescription, _sel_alloc); + return NSScriptCommandDescription.castFromPointer(_ret, + retain: false, release: true); } - NSXMLElement? rootElement() { - final _ret = _lib._objc_msgSend_1131(_id, _lib._sel_rootElement1); - return _ret.address == 0 - ? null - : NSXMLElement._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSScriptCommandDescription, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - void insertChild_atIndex_(NSXMLNode child, int index) { - _lib._objc_msgSend_1119( - _id, _lib._sel_insertChild_atIndex_1, child._id, index); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSScriptCommandDescription, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - void insertChildren_atIndex_(NSArray children, int index) { - _lib._objc_msgSend_1120( - _id, _lib._sel_insertChildren_atIndex_1, children._id, index); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7(_class_NSScriptCommandDescription, + _sel_accessInstanceVariablesDirectly); } - void removeChildAtIndex_(int index) { - _lib._objc_msgSend_470(_id, _lib._sel_removeChildAtIndex_1, index); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSScriptCommandDescription, _sel_useStoredAccessor); } - void setChildren_(NSArray? children) { - _lib._objc_msgSend_843( - _id, _lib._sel_setChildren_1, children?._id ?? ffi.nullptr); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSScriptCommandDescription, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - void addChild_(NSXMLNode child) { - _lib._objc_msgSend_1121(_id, _lib._sel_addChild_1, child._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSScriptCommandDescription, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - void replaceChildAtIndex_withNode_(int index, NSXMLNode node) { - _lib._objc_msgSend_1122( - _id, _lib._sel_replaceChildAtIndex_withNode_1, index, node._id); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSScriptCommandDescription, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSScriptCommandDescription, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSScriptCommandDescription, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSScriptCommandDescription = + objc.getClass("NSScriptCommandDescription"); +late final _sel_initWithSuiteName_commandName_dictionary_ = + objc.registerName("initWithSuiteName:commandName:dictionary:"); +late final _sel_commandName = objc.registerName("commandName"); +late final _sel_appleEventClassCode = objc.registerName("appleEventClassCode"); +late final _sel_commandClassName = objc.registerName("commandClassName"); +late final _sel_returnType = objc.registerName("returnType"); +late final _sel_appleEventCodeForReturnType = + objc.registerName("appleEventCodeForReturnType"); +late final _sel_argumentNames = objc.registerName("argumentNames"); +late final _sel_typeForArgumentWithName_ = + objc.registerName("typeForArgumentWithName:"); +late final _sel_appleEventCodeForArgumentWithName_ = + objc.registerName("appleEventCodeForArgumentWithName:"); +final _objc_msgSend_706 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedInt Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isOptionalArgumentWithName_ = + objc.registerName("isOptionalArgumentWithName:"); + +class NSScriptCommand extends objc.NSObject { + NSScriptCommand._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSData get XMLData { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_XMLData1); - return NSData._(_ret, _lib, retain: true, release: true); + /// Constructs a [NSScriptCommand] that points to the same underlying object as [other]. + NSScriptCommand.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSScriptCommand] that wraps the given raw object pointer. + NSScriptCommand.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSScriptCommand]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSScriptCommand); } - NSData XMLDataWithOptions_(int options) { - final _ret = - _lib._objc_msgSend_1132(_id, _lib._sel_XMLDataWithOptions_1, options); - return NSData._(_ret, _lib, retain: true, release: true); + NSScriptCommand initWithCommandDescription_( + NSScriptCommandDescription commandDef) { + final _ret = _objc_msgSend_707( + this.pointer, _sel_initWithCommandDescription_, commandDef.pointer); + return NSScriptCommand.castFromPointer(_ret, retain: true, release: true); } - NSObject? objectByApplyingXSLT_arguments_error_(NSData xslt, - NSDictionary? arguments, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1133( - _id, - _lib._sel_objectByApplyingXSLT_arguments_error_1, - xslt._id, - arguments?._id ?? ffi.nullptr, - error); + NSScriptCommand? initWithCoder_(objc.NSCoder inCoder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, inCoder.pointer); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : NSScriptCommand.castFromPointer(_ret, retain: true, release: true); } - NSObject? objectByApplyingXSLTString_arguments_error_(NSString xslt, - NSDictionary? arguments, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1134( - _id, - _lib._sel_objectByApplyingXSLTString_arguments_error_1, - xslt._id, - arguments?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + NSScriptCommandDescription get commandDescription { + final _ret = _objc_msgSend_708(this.pointer, _sel_commandDescription); + return NSScriptCommandDescription.castFromPointer(_ret, + retain: true, release: true); } - NSObject? objectByApplyingXSLTAtURL_arguments_error_(NSURL xsltURL, - NSDictionary? argument, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1135( - _id, - _lib._sel_objectByApplyingXSLTAtURL_arguments_error_1, - xsltURL._id, - argument?._id ?? ffi.nullptr, - error); + objc.NSObject? get directParameter { + final _ret = _objc_msgSend_66(this.pointer, _sel_directParameter); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - bool validateAndReturnError_(ffi.Pointer> error) { - return _lib._objc_msgSend_255( - _id, _lib._sel_validateAndReturnError_1, error); + set directParameter(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDirectParameter_, value?.pointer ?? ffi.nullptr); } - @override - NSXMLDocument initWithKind_(int kind) { - final _ret = _lib._objc_msgSend_1106(_id, _lib._sel_initWithKind_1, kind); - return NSXMLDocument._(_ret, _lib, retain: true, release: true); + NSScriptObjectSpecifier? get receiversSpecifier { + final _ret = _objc_msgSend_737(this.pointer, _sel_receiversSpecifier); + return _ret.address == 0 + ? null + : NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - @override - NSXMLDocument initWithKind_options_(int kind, int options) { - final _ret = _lib._objc_msgSend_1107( - _id, _lib._sel_initWithKind_options_1, kind, options); - return NSXMLDocument._(_ret, _lib, retain: true, release: true); + set receiversSpecifier(NSScriptObjectSpecifier? value) { + return _objc_msgSend_738(this.pointer, _sel_setReceiversSpecifier_, + value?.pointer ?? ffi.nullptr); } - static NSObject document(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDocument1, _lib._sel_document1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSObject? get evaluatedReceivers { + final _ret = _objc_msgSend_66(this.pointer, _sel_evaluatedReceivers); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } + + objc.NSDictionary? get arguments { + final _ret = _objc_msgSend_65(this.pointer, _sel_arguments); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSObject documentWithRootElement_( - AVFAudio _lib, NSXMLElement element) { - final _ret = _lib._objc_msgSend_1108(_lib._class_NSXMLDocument1, - _lib._sel_documentWithRootElement_1, element._id); - return NSObject._(_ret, _lib, retain: true, release: true); + set arguments(objc.NSDictionary? value) { + return _objc_msgSend_173( + this.pointer, _sel_setArguments_, value?.pointer ?? ffi.nullptr); } - static NSObject elementWithName_(AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSXMLDocument1, _lib._sel_elementWithName_1, name._id); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSDictionary? get evaluatedArguments { + final _ret = _objc_msgSend_65(this.pointer, _sel_evaluatedArguments); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_URI_( - AVFAudio _lib, NSString name, NSString URI) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDocument1, - _lib._sel_elementWithName_URI_1, name._id, URI._id); - return NSObject._(_ret, _lib, retain: true, release: true); + bool get wellFormed { + return _objc_msgSend_7(this.pointer, _sel_isWellFormed); } - static NSObject elementWithName_stringValue_( - AVFAudio _lib, NSString name, NSString string) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDocument1, - _lib._sel_elementWithName_stringValue_1, name._id, string._id); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSObject? performDefaultImplementation() { + final _ret = + _objc_msgSend_66(this.pointer, _sel_performDefaultImplementation); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_children_attributes_( - AVFAudio _lib, NSString name, NSArray? children, NSArray? attributes) { - final _ret = _lib._objc_msgSend_1110( - _lib._class_NSXMLDocument1, - _lib._sel_elementWithName_children_attributes_1, - name._id, - children?._id ?? ffi.nullptr, - attributes?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSObject? executeCommand() { + final _ret = _objc_msgSend_66(this.pointer, _sel_executeCommand); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject attributeWithName_stringValue_( - AVFAudio _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDocument1, - _lib._sel_attributeWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + int get scriptErrorNumber { + return _objc_msgSend_114(this.pointer, _sel_scriptErrorNumber); } - static NSObject attributeWithName_URI_stringValue_( - AVFAudio _lib, NSString name, NSString URI, NSString stringValue) { - final _ret = _lib._objc_msgSend_1074( - _lib._class_NSXMLDocument1, - _lib._sel_attributeWithName_URI_stringValue_1, - name._id, - URI._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + set scriptErrorNumber(int value) { + return _objc_msgSend_134(this.pointer, _sel_setScriptErrorNumber_, value); } - static NSObject namespaceWithName_stringValue_( - AVFAudio _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDocument1, - _lib._sel_namespaceWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + NSAppleEventDescriptor? get scriptErrorOffendingObjectDescriptor { + final _ret = _objc_msgSend_742( + this.pointer, _sel_scriptErrorOffendingObjectDescriptor); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSObject processingInstructionWithName_stringValue_( - AVFAudio _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109( - _lib._class_NSXMLDocument1, - _lib._sel_processingInstructionWithName_stringValue_1, - name._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + set scriptErrorOffendingObjectDescriptor(NSAppleEventDescriptor? value) { + return _objc_msgSend_743( + this.pointer, + _sel_setScriptErrorOffendingObjectDescriptor_, + value?.pointer ?? ffi.nullptr); } - static NSObject commentWithStringValue_(AVFAudio _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLDocument1, - _lib._sel_commentWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + NSAppleEventDescriptor? get scriptErrorExpectedTypeDescriptor { + final _ret = + _objc_msgSend_742(this.pointer, _sel_scriptErrorExpectedTypeDescriptor); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSObject textWithStringValue_(AVFAudio _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLDocument1, - _lib._sel_textWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + set scriptErrorExpectedTypeDescriptor(NSAppleEventDescriptor? value) { + return _objc_msgSend_743( + this.pointer, + _sel_setScriptErrorExpectedTypeDescriptor_, + value?.pointer ?? ffi.nullptr); } - static NSObject? DTDNodeWithXMLString_(AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSXMLDocument1, - _lib._sel_DTDNodeWithXMLString_1, string._id); + objc.NSString? get scriptErrorString { + final _ret = _objc_msgSend_13(this.pointer, _sel_scriptErrorString); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSString localNameForName_(AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_69( - _lib._class_NSXMLDocument1, _lib._sel_localNameForName_1, name._id); - return NSString._(_ret, _lib, retain: true, release: true); + set scriptErrorString(objc.NSString? value) { + return _objc_msgSend_46(this.pointer, _sel_setScriptErrorString_, + value?.pointer ?? ffi.nullptr); } - static NSString? prefixForName_(AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_186( - _lib._class_NSXMLDocument1, _lib._sel_prefixForName_1, name._id); + static NSScriptCommand? currentCommand() { + final _ret = _objc_msgSend_744(_class_NSScriptCommand, _sel_currentCommand); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSScriptCommand.castFromPointer(_ret, retain: true, release: true); } - static NSXMLNode? predefinedNamespaceForPrefix_( - AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_1125(_lib._class_NSXMLDocument1, - _lib._sel_predefinedNamespaceForPrefix_1, name._id); + NSAppleEventDescriptor? get appleEvent { + final _ret = _objc_msgSend_742(this.pointer, _sel_appleEvent); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLDocument new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDocument1, _lib._sel_new1); - return NSXMLDocument._(_ret, _lib, retain: false, release: true); + void suspendExecution() { + _objc_msgSend_82(this.pointer, _sel_suspendExecution); } - static NSXMLDocument allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLDocument1, _lib._sel_allocWithZone_1, zone); - return NSXMLDocument._(_ret, _lib, retain: false, release: true); + void resumeExecutionWithResult_(objc.NSObject? result) { + _objc_msgSend_215(this.pointer, _sel_resumeExecutionWithResult_, + result?.pointer ?? ffi.nullptr); } - static NSXMLDocument alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDocument1, _lib._sel_alloc1); - return NSXMLDocument._(_ret, _lib, retain: false, release: true); + @override + NSScriptCommand init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSScriptCommand.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSXMLDocument1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static NSScriptCommand new1() { + final _ret = _objc_msgSend_40(_class_NSScriptCommand, _sel_new); + return NSScriptCommand.castFromPointer(_ret, retain: false, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLDocument1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static NSScriptCommand allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSScriptCommand, _sel_allocWithZone_, zone); + return NSScriptCommand.castFromPointer(_ret, retain: false, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDocument1, _lib._sel_accessInstanceVariablesDirectly1); + static NSScriptCommand alloc() { + final _ret = _objc_msgSend_40(_class_NSScriptCommand, _sel_alloc); + return NSScriptCommand.castFromPointer(_ret, retain: false, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDocument1, _lib._sel_useStoredAccessor1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSScriptCommand, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSXMLDocument1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSScriptCommand, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSXMLDocument1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSScriptCommand, _sel_accessInstanceVariablesDirectly); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSXMLDocument1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSScriptCommand, _sel_useStoredAccessor); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSXMLDocument1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSScriptCommand, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLDocument1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSScriptCommand, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } -} - -abstract class NSXMLDocumentContentKind { - static const int NSXMLDocumentXMLKind = 0; - static const int NSXMLDocumentXHTMLKind = 1; - static const int NSXMLDocumentHTMLKind = 2; - static const int NSXMLDocumentTextKind = 3; -} -class NSXMLDTD extends NSXMLNode { - NSXMLDTD._(ffi.Pointer id, AVFAudio lib, + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSScriptCommand, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSScriptCommand, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSScriptCommand, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSScriptCommand = objc.getClass("NSScriptCommand"); +late final _sel_initWithCommandDescription_ = + objc.registerName("initWithCommandDescription:"); +final _objc_msgSend_707 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_commandDescription = objc.registerName("commandDescription"); +final _objc_msgSend_708 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_directParameter = objc.registerName("directParameter"); +late final _sel_setDirectParameter_ = objc.registerName("setDirectParameter:"); + +class NSScriptObjectSpecifier extends objc.NSObject { + NSScriptObjectSpecifier._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSXMLDTD] that points to the same underlying object as [other]. - static NSXMLDTD castFrom(T other) { - return NSXMLDTD._(other._id, other._lib, retain: true, release: true); - } + /// Constructs a [NSScriptObjectSpecifier] that points to the same underlying object as [other]. + NSScriptObjectSpecifier.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSXMLDTD] that wraps the given raw object pointer. - static NSXMLDTD castFromPointer(AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSXMLDTD._(other, lib, retain: retain, release: release); + /// Constructs a [NSScriptObjectSpecifier] that wraps the given raw object pointer. + NSScriptObjectSpecifier.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSScriptObjectSpecifier]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSScriptObjectSpecifier); } - /// Returns whether [obj] is an instance of [NSXMLDTD]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLDTD1); + static NSScriptObjectSpecifier? objectSpecifierWithDescriptor_( + NSAppleEventDescriptor descriptor) { + final _ret = _objc_msgSend_734(_class_NSScriptObjectSpecifier, + _sel_objectSpecifierWithDescriptor_, descriptor.pointer); + return _ret.address == 0 + ? null + : NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - @override - NSXMLDTD init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLDTD._(_ret, _lib, retain: true, release: true); + NSScriptObjectSpecifier initWithContainerSpecifier_key_( + NSScriptObjectSpecifier container, objc.NSString property) { + final _ret = _objc_msgSend_735( + this.pointer, + _sel_initWithContainerSpecifier_key_, + container.pointer, + property.pointer); + return NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - @override - NSXMLDTD initWithKind_options_(int kind, int options) { - final _ret = _lib._objc_msgSend_1107( - _id, _lib._sel_initWithKind_options_1, kind, options); - return NSXMLDTD._(_ret, _lib, retain: true, release: true); + NSScriptObjectSpecifier + initWithContainerClassDescription_containerSpecifier_key_( + NSScriptClassDescription classDesc, + NSScriptObjectSpecifier? container, + objc.NSString property) { + final _ret = _objc_msgSend_736( + this.pointer, + _sel_initWithContainerClassDescription_containerSpecifier_key_, + classDesc.pointer, + container?.pointer ?? ffi.nullptr, + property.pointer); + return NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - NSXMLDTD? initWithContentsOfURL_options_error_( - NSURL url, int mask, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1114(_id, - _lib._sel_initWithContentsOfURL_options_error_1, url._id, mask, error); + NSScriptObjectSpecifier? initWithCoder_(objc.NSCoder inCoder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, inCoder.pointer); return _ret.address == 0 ? null - : NSXMLDTD._(_ret, _lib, retain: true, release: true); + : NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - NSXMLDTD? initWithData_options_error_( - NSData data, int mask, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1115( - _id, _lib._sel_initWithData_options_error_1, data._id, mask, error); + NSScriptObjectSpecifier? get childSpecifier { + final _ret = _objc_msgSend_737(this.pointer, _sel_childSpecifier); return _ret.address == 0 ? null - : NSXMLDTD._(_ret, _lib, retain: true, release: true); + : NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - NSString? get publicID { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_publicID1); + set childSpecifier(NSScriptObjectSpecifier? value) { + return _objc_msgSend_738( + this.pointer, _sel_setChildSpecifier_, value?.pointer ?? ffi.nullptr); + } + + NSScriptObjectSpecifier? get containerSpecifier { + final _ret = _objc_msgSend_737(this.pointer, _sel_containerSpecifier); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - set publicID(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setPublicID_1, value?._id ?? ffi.nullptr); + set containerSpecifier(NSScriptObjectSpecifier? value) { + return _objc_msgSend_738(this.pointer, _sel_setContainerSpecifier_, + value?.pointer ?? ffi.nullptr); } - NSString? get systemID { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_systemID1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + bool get containerIsObjectBeingTested { + return _objc_msgSend_7(this.pointer, _sel_containerIsObjectBeingTested); } - set systemID(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setSystemID_1, value?._id ?? ffi.nullptr); + set containerIsObjectBeingTested(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setContainerIsObjectBeingTested_, value); } - void insertChild_atIndex_(NSXMLNode child, int index) { - _lib._objc_msgSend_1119( - _id, _lib._sel_insertChild_atIndex_1, child._id, index); + bool get containerIsRangeContainerObject { + return _objc_msgSend_7(this.pointer, _sel_containerIsRangeContainerObject); } - void insertChildren_atIndex_(NSArray children, int index) { - _lib._objc_msgSend_1120( - _id, _lib._sel_insertChildren_atIndex_1, children._id, index); + set containerIsRangeContainerObject(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setContainerIsRangeContainerObject_, value); } - void removeChildAtIndex_(int index) { - _lib._objc_msgSend_470(_id, _lib._sel_removeChildAtIndex_1, index); + objc.NSString get key { + final _ret = _objc_msgSend_12(this.pointer, _sel_key); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void setChildren_(NSArray? children) { - _lib._objc_msgSend_843( - _id, _lib._sel_setChildren_1, children?._id ?? ffi.nullptr); + set key(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setKey_, value.pointer); } - void addChild_(NSXMLNode child) { - _lib._objc_msgSend_1121(_id, _lib._sel_addChild_1, child._id); + NSScriptClassDescription? get containerClassDescription { + final _ret = + _objc_msgSend_703(this.pointer, _sel_containerClassDescription); + return _ret.address == 0 + ? null + : NSScriptClassDescription.castFromPointer(_ret, + retain: true, release: true); } - void replaceChildAtIndex_withNode_(int index, NSXMLNode node) { - _lib._objc_msgSend_1122( - _id, _lib._sel_replaceChildAtIndex_withNode_1, index, node._id); + set containerClassDescription(NSScriptClassDescription? value) { + return _objc_msgSend_739(this.pointer, _sel_setContainerClassDescription_, + value?.pointer ?? ffi.nullptr); } - NSXMLDTDNode? entityDeclarationForName_(NSString name) { - final _ret = _lib._objc_msgSend_1126( - _id, _lib._sel_entityDeclarationForName_1, name._id); + NSScriptClassDescription? get keyClassDescription { + final _ret = _objc_msgSend_703(this.pointer, _sel_keyClassDescription); return _ret.address == 0 ? null - : NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + : NSScriptClassDescription.castFromPointer(_ret, + retain: true, release: true); + } + + ffi.Pointer indicesOfObjectsByEvaluatingWithContainer_count_( + objc.NSObject container, ffi.Pointer count) { + return _objc_msgSend_740( + this.pointer, + _sel_indicesOfObjectsByEvaluatingWithContainer_count_, + container.pointer, + count); } - NSXMLDTDNode? notationDeclarationForName_(NSString name) { - final _ret = _lib._objc_msgSend_1126( - _id, _lib._sel_notationDeclarationForName_1, name._id); + objc.NSObject? objectsByEvaluatingWithContainers_(objc.NSObject containers) { + final _ret = _objc_msgSend_741(this.pointer, + _sel_objectsByEvaluatingWithContainers_, containers.pointer); return _ret.address == 0 ? null - : NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSXMLDTDNode? elementDeclarationForName_(NSString name) { - final _ret = _lib._objc_msgSend_1126( - _id, _lib._sel_elementDeclarationForName_1, name._id); + objc.NSObject? get objectsByEvaluatingSpecifier { + final _ret = + _objc_msgSend_66(this.pointer, _sel_objectsByEvaluatingSpecifier); return _ret.address == 0 ? null - : NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSXMLDTDNode? attributeDeclarationForName_elementName_( - NSString name, NSString elementName) { - final _ret = _lib._objc_msgSend_1127( - _id, - _lib._sel_attributeDeclarationForName_elementName_1, - name._id, - elementName._id); + int get evaluationErrorNumber { + return _objc_msgSend_114(this.pointer, _sel_evaluationErrorNumber); + } + + set evaluationErrorNumber(int value) { + return _objc_msgSend_134( + this.pointer, _sel_setEvaluationErrorNumber_, value); + } + + NSScriptObjectSpecifier? get evaluationErrorSpecifier { + final _ret = _objc_msgSend_737(this.pointer, _sel_evaluationErrorSpecifier); return _ret.address == 0 ? null - : NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + : NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLDTDNode? predefinedEntityDeclarationForName_( - AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_1126(_lib._class_NSXMLDTD1, - _lib._sel_predefinedEntityDeclarationForName_1, name._id); + NSAppleEventDescriptor? get descriptor { + final _ret = _objc_msgSend_742(this.pointer, _sel_descriptor); return _ret.address == 0 ? null - : NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } @override - NSXMLDTD initWithKind_(int kind) { - final _ret = _lib._objc_msgSend_1106(_id, _lib._sel_initWithKind_1, kind); - return NSXMLDTD._(_ret, _lib, retain: true, release: true); + NSScriptObjectSpecifier init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - static NSObject document(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDTD1, _lib._sel_document1); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSScriptObjectSpecifier new1() { + final _ret = _objc_msgSend_40(_class_NSScriptObjectSpecifier, _sel_new); + return NSScriptObjectSpecifier.castFromPointer(_ret, + retain: false, release: true); } - static NSObject documentWithRootElement_( - AVFAudio _lib, NSXMLElement element) { - final _ret = _lib._objc_msgSend_1108(_lib._class_NSXMLDTD1, - _lib._sel_documentWithRootElement_1, element._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSScriptObjectSpecifier allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSScriptObjectSpecifier, _sel_allocWithZone_, zone); + return NSScriptObjectSpecifier.castFromPointer(_ret, + retain: false, release: true); } - static NSObject elementWithName_(AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSXMLDTD1, _lib._sel_elementWithName_1, name._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSScriptObjectSpecifier alloc() { + final _ret = _objc_msgSend_40(_class_NSScriptObjectSpecifier, _sel_alloc); + return NSScriptObjectSpecifier.castFromPointer(_ret, + retain: false, release: true); } - static NSObject elementWithName_URI_( - AVFAudio _lib, NSString name, NSString URI) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTD1, - _lib._sel_elementWithName_URI_1, name._id, URI._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSScriptObjectSpecifier, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - static NSObject elementWithName_stringValue_( - AVFAudio _lib, NSString name, NSString string) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTD1, - _lib._sel_elementWithName_stringValue_1, name._id, string._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSScriptObjectSpecifier, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static NSObject elementWithName_children_attributes_( - AVFAudio _lib, NSString name, NSArray? children, NSArray? attributes) { - final _ret = _lib._objc_msgSend_1110( - _lib._class_NSXMLDTD1, - _lib._sel_elementWithName_children_attributes_1, - name._id, - children?._id ?? ffi.nullptr, - attributes?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSScriptObjectSpecifier, _sel_accessInstanceVariablesDirectly); } - static NSObject attributeWithName_stringValue_( - AVFAudio _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTD1, - _lib._sel_attributeWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSScriptObjectSpecifier, _sel_useStoredAccessor); } - static NSObject attributeWithName_URI_stringValue_( - AVFAudio _lib, NSString name, NSString URI, NSString stringValue) { - final _ret = _lib._objc_msgSend_1074( - _lib._class_NSXMLDTD1, - _lib._sel_attributeWithName_URI_stringValue_1, - name._id, - URI._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSScriptObjectSpecifier, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static NSObject namespaceWithName_stringValue_( - AVFAudio _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTD1, - _lib._sel_namespaceWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSScriptObjectSpecifier, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static NSObject processingInstructionWithName_stringValue_( - AVFAudio _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109( - _lib._class_NSXMLDTD1, - _lib._sel_processingInstructionWithName_stringValue_1, - name._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSScriptObjectSpecifier, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSObject commentWithStringValue_(AVFAudio _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLDTD1, - _lib._sel_commentWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSScriptObjectSpecifier, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject textWithStringValue_(AVFAudio _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLDTD1, - _lib._sel_textWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSScriptObjectSpecifier, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - static NSObject? DTDNodeWithXMLString_(AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_38( - _lib._class_NSXMLDTD1, _lib._sel_DTDNodeWithXMLString_1, string._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); +late final _class_NSScriptObjectSpecifier = + objc.getClass("NSScriptObjectSpecifier"); + +class NSAppleEventDescriptor extends objc.NSObject { + NSAppleEventDescriptor._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSAppleEventDescriptor] that points to the same underlying object as [other]. + NSAppleEventDescriptor.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSAppleEventDescriptor] that wraps the given raw object pointer. + NSAppleEventDescriptor.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSAppleEventDescriptor]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSAppleEventDescriptor); } - static NSString localNameForName_(AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_69( - _lib._class_NSXMLDTD1, _lib._sel_localNameForName_1, name._id); - return NSString._(_ret, _lib, retain: true, release: true); + static NSAppleEventDescriptor nullDescriptor() { + final _ret = + _objc_msgSend_709(_class_NSAppleEventDescriptor, _sel_nullDescriptor); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSString? prefixForName_(AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_186( - _lib._class_NSXMLDTD1, _lib._sel_prefixForName_1, name._id); + static NSAppleEventDescriptor? descriptorWithDescriptorType_bytes_length_( + int descriptorType, ffi.Pointer bytes, int byteCount) { + final _ret = _objc_msgSend_710( + _class_NSAppleEventDescriptor, + _sel_descriptorWithDescriptorType_bytes_length_, + descriptorType, + bytes, + byteCount); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLNode? predefinedNamespaceForPrefix_( - AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_1125(_lib._class_NSXMLDTD1, - _lib._sel_predefinedNamespaceForPrefix_1, name._id); + static NSAppleEventDescriptor? descriptorWithDescriptorType_data_( + int descriptorType, objc.NSData? data) { + final _ret = _objc_msgSend_711( + _class_NSAppleEventDescriptor, + _sel_descriptorWithDescriptorType_data_, + descriptorType, + data?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLDTD new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLDTD1, _lib._sel_new1); - return NSXMLDTD._(_ret, _lib, retain: false, release: true); + static NSAppleEventDescriptor descriptorWithBoolean_(int boolean) { + final _ret = _objc_msgSend_712( + _class_NSAppleEventDescriptor, _sel_descriptorWithBoolean_, boolean); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLDTD allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLDTD1, _lib._sel_allocWithZone_1, zone); - return NSXMLDTD._(_ret, _lib, retain: false, release: true); + static NSAppleEventDescriptor descriptorWithEnumCode_(int enumerator) { + final _ret = _objc_msgSend_713(_class_NSAppleEventDescriptor, + _sel_descriptorWithEnumCode_, enumerator); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLDTD alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLDTD1, _lib._sel_alloc1); - return NSXMLDTD._(_ret, _lib, retain: false, release: true); + static NSAppleEventDescriptor descriptorWithInt32_(int signedInt) { + final _ret = _objc_msgSend_714( + _class_NSAppleEventDescriptor, _sel_descriptorWithInt32_, signedInt); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSXMLDTD1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static NSAppleEventDescriptor descriptorWithDouble_(double doubleValue) { + final _ret = _objc_msgSend_715( + _class_NSAppleEventDescriptor, _sel_descriptorWithDouble_, doubleValue); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithTypeCode_(int typeCode) { + final _ret = _objc_msgSend_713( + _class_NSAppleEventDescriptor, _sel_descriptorWithTypeCode_, typeCode); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithString_(objc.NSString string) { + final _ret = _objc_msgSend_716(_class_NSAppleEventDescriptor, + _sel_descriptorWithString_, string.pointer); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithDate_(objc.NSDate date) { + final _ret = _objc_msgSend_717( + _class_NSAppleEventDescriptor, _sel_descriptorWithDate_, date.pointer); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithFileURL_(objc.NSURL fileURL) { + final _ret = _objc_msgSend_718(_class_NSAppleEventDescriptor, + _sel_descriptorWithFileURL_, fileURL.pointer); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); + } + + static NSAppleEventDescriptor + appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_( + int eventClass, + int eventID, + NSAppleEventDescriptor? targetDescriptor, + int returnID, + int transactionID) { + final _ret = _objc_msgSend_719( + _class_NSAppleEventDescriptor, + _sel_appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_, + eventClass, + eventID, + targetDescriptor?.pointer ?? ffi.nullptr, + returnID, + transactionID); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLDTD1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static NSAppleEventDescriptor listDescriptor() { + final _ret = + _objc_msgSend_709(_class_NSAppleEventDescriptor, _sel_listDescriptor); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDTD1, _lib._sel_accessInstanceVariablesDirectly1); + static NSAppleEventDescriptor recordDescriptor() { + final _ret = + _objc_msgSend_709(_class_NSAppleEventDescriptor, _sel_recordDescriptor); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDTD1, _lib._sel_useStoredAccessor1); + static NSAppleEventDescriptor currentProcessDescriptor() { + final _ret = _objc_msgSend_709( + _class_NSAppleEventDescriptor, _sel_currentProcessDescriptor); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSXMLDTD1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static NSAppleEventDescriptor descriptorWithProcessIdentifier_( + int processIdentifier) { + final _ret = _objc_msgSend_714(_class_NSAppleEventDescriptor, + _sel_descriptorWithProcessIdentifier_, processIdentifier); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSXMLDTD1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static NSAppleEventDescriptor descriptorWithBundleIdentifier_( + objc.NSString bundleIdentifier) { + final _ret = _objc_msgSend_716(_class_NSAppleEventDescriptor, + _sel_descriptorWithBundleIdentifier_, bundleIdentifier.pointer); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSXMLDTD1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static NSAppleEventDescriptor descriptorWithApplicationURL_( + objc.NSURL applicationURL) { + final _ret = _objc_msgSend_718(_class_NSAppleEventDescriptor, + _sel_descriptorWithApplicationURL_, applicationURL.pointer); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); + } + + NSAppleEventDescriptor initWithAEDescNoCopy_(ffi.Pointer aeDesc) { + final _ret = + _objc_msgSend_720(this.pointer, _sel_initWithAEDescNoCopy_, aeDesc); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: false, release: true); + } + + NSAppleEventDescriptor? initWithDescriptorType_bytes_length_( + int descriptorType, ffi.Pointer bytes, int byteCount) { + final _ret = _objc_msgSend_721( + this.pointer, + _sel_initWithDescriptorType_bytes_length_, + descriptorType, + bytes, + byteCount); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); + } + + NSAppleEventDescriptor? initWithDescriptorType_data_( + int descriptorType, objc.NSData? data) { + final _ret = _objc_msgSend_722( + this.pointer, + _sel_initWithDescriptorType_data_, + descriptorType, + data?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSXMLDTD1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + NSAppleEventDescriptor + initWithEventClass_eventID_targetDescriptor_returnID_transactionID_( + int eventClass, + int eventID, + NSAppleEventDescriptor? targetDescriptor, + int returnID, + int transactionID) { + final _ret = _objc_msgSend_723( + this.pointer, + _sel_initWithEventClass_eventID_targetDescriptor_returnID_transactionID_, + eventClass, + eventID, + targetDescriptor?.pointer ?? ffi.nullptr, + returnID, + transactionID); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLDTD1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + NSAppleEventDescriptor initListDescriptor() { + final _ret = _objc_msgSend_40(this.pointer, _sel_initListDescriptor); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } -} -class NSXMLDTDNode extends NSXMLNode { - NSXMLDTDNode._(ffi.Pointer id, AVFAudio lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSXMLDTDNode] that points to the same underlying object as [other]. - static NSXMLDTDNode castFrom(T other) { - return NSXMLDTDNode._(other._id, other._lib, retain: true, release: true); + NSAppleEventDescriptor initRecordDescriptor() { + final _ret = _objc_msgSend_40(this.pointer, _sel_initRecordDescriptor); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - /// Returns a [NSXMLDTDNode] that wraps the given raw object pointer. - static NSXMLDTDNode castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSXMLDTDNode._(other, lib, retain: retain, release: release); + ffi.Pointer get aeDesc { + return _objc_msgSend_724(this.pointer, _sel_aeDesc); } - /// Returns whether [obj] is an instance of [NSXMLDTDNode]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLDTDNode1); + int get descriptorType { + return _objc_msgSend_704(this.pointer, _sel_descriptorType); } - NSXMLDTDNode? initWithXMLString_(NSString string) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_initWithXMLString_1, string._id); - return _ret.address == 0 - ? null - : NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + objc.NSData get data { + final _ret = _objc_msgSend_104(this.pointer, _sel_data); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - @override - NSXMLDTDNode initWithKind_options_(int kind, int options) { - final _ret = _lib._objc_msgSend_1107( - _id, _lib._sel_initWithKind_options_1, kind, options); - return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + int get booleanValue { + return _objc_msgSend_725(this.pointer, _sel_booleanValue); } - @override - NSXMLDTDNode init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + int get enumCodeValue { + return _objc_msgSend_704(this.pointer, _sel_enumCodeValue); } - int get DTDKind { - return _lib._objc_msgSend_1123(_id, _lib._sel_DTDKind1); + int get int32Value { + return _objc_msgSend_264(this.pointer, _sel_int32Value); } - set DTDKind(int value) { - return _lib._objc_msgSend_1124(_id, _lib._sel_setDTDKind_1, value); + double get doubleValue { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_doubleValue) + : _objc_msgSend_115(this.pointer, _sel_doubleValue); } - bool get external1 { - return _lib._objc_msgSend_12(_id, _lib._sel_isExternal1); + int get typeCodeValue { + return _objc_msgSend_704(this.pointer, _sel_typeCodeValue); } - NSString? get publicID { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_publicID1); + objc.NSString? get stringValue { + final _ret = _objc_msgSend_13(this.pointer, _sel_stringValue); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set publicID(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setPublicID_1, value?._id ?? ffi.nullptr); + objc.NSDate? get dateValue { + final _ret = _objc_msgSend_116(this.pointer, _sel_dateValue); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - NSString? get systemID { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_systemID1); + objc.NSURL? get fileURLValue { + final _ret = _objc_msgSend_10(this.pointer, _sel_fileURLValue); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - set systemID(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setSystemID_1, value?._id ?? ffi.nullptr); + int get eventClass { + return _objc_msgSend_704(this.pointer, _sel_eventClass); } - NSString? get notationName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_notationName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + int get eventID { + return _objc_msgSend_704(this.pointer, _sel_eventID); } - set notationName(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setNotationName_1, value?._id ?? ffi.nullptr); + int get returnID { + return _objc_msgSend_726(this.pointer, _sel_returnID); } - @override - NSXMLDTDNode initWithKind_(int kind) { - final _ret = _lib._objc_msgSend_1106(_id, _lib._sel_initWithKind_1, kind); - return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + int get transactionID { + return _objc_msgSend_264(this.pointer, _sel_transactionID); } - static NSObject document(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDTDNode1, _lib._sel_document1); - return NSObject._(_ret, _lib, retain: true, release: true); + void setParamDescriptor_forKeyword_( + NSAppleEventDescriptor descriptor, int keyword) { + _objc_msgSend_727(this.pointer, _sel_setParamDescriptor_forKeyword_, + descriptor.pointer, keyword); } - static NSObject documentWithRootElement_( - AVFAudio _lib, NSXMLElement element) { - final _ret = _lib._objc_msgSend_1108(_lib._class_NSXMLDTDNode1, - _lib._sel_documentWithRootElement_1, element._id); - return NSObject._(_ret, _lib, retain: true, release: true); + NSAppleEventDescriptor? paramDescriptorForKeyword_(int keyword) { + final _ret = _objc_msgSend_728( + this.pointer, _sel_paramDescriptorForKeyword_, keyword); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSObject elementWithName_(AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSXMLDTDNode1, _lib._sel_elementWithName_1, name._id); - return NSObject._(_ret, _lib, retain: true, release: true); + void removeParamDescriptorWithKeyword_(int keyword) { + _objc_msgSend_729( + this.pointer, _sel_removeParamDescriptorWithKeyword_, keyword); } - static NSObject elementWithName_URI_( - AVFAudio _lib, NSString name, NSString URI) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTDNode1, - _lib._sel_elementWithName_URI_1, name._id, URI._id); - return NSObject._(_ret, _lib, retain: true, release: true); + void setAttributeDescriptor_forKeyword_( + NSAppleEventDescriptor descriptor, int keyword) { + _objc_msgSend_727(this.pointer, _sel_setAttributeDescriptor_forKeyword_, + descriptor.pointer, keyword); } - static NSObject elementWithName_stringValue_( - AVFAudio _lib, NSString name, NSString string) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTDNode1, - _lib._sel_elementWithName_stringValue_1, name._id, string._id); - return NSObject._(_ret, _lib, retain: true, release: true); + NSAppleEventDescriptor? attributeDescriptorForKeyword_(int keyword) { + final _ret = _objc_msgSend_728( + this.pointer, _sel_attributeDescriptorForKeyword_, keyword); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSObject elementWithName_children_attributes_( - AVFAudio _lib, NSString name, NSArray? children, NSArray? attributes) { - final _ret = _lib._objc_msgSend_1110( - _lib._class_NSXMLDTDNode1, - _lib._sel_elementWithName_children_attributes_1, - name._id, - children?._id ?? ffi.nullptr, - attributes?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + NSAppleEventDescriptor? sendEventWithOptions_timeout_error_( + int sendOptions, + double timeoutInSeconds, + ffi.Pointer> error) { + final _ret = _objc_msgSend_730( + this.pointer, + _sel_sendEventWithOptions_timeout_error_, + sendOptions, + timeoutInSeconds, + error); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSObject attributeWithName_stringValue_( - AVFAudio _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTDNode1, - _lib._sel_attributeWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + bool get isRecordDescriptor { + return _objc_msgSend_7(this.pointer, _sel_isRecordDescriptor); } - static NSObject attributeWithName_URI_stringValue_( - AVFAudio _lib, NSString name, NSString URI, NSString stringValue) { - final _ret = _lib._objc_msgSend_1074( - _lib._class_NSXMLDTDNode1, - _lib._sel_attributeWithName_URI_stringValue_1, - name._id, - URI._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + int get numberOfItems { + return _objc_msgSend_114(this.pointer, _sel_numberOfItems); } - static NSObject namespaceWithName_stringValue_( - AVFAudio _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTDNode1, - _lib._sel_namespaceWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + void insertDescriptor_atIndex_(NSAppleEventDescriptor descriptor, int index) { + _objc_msgSend_731(this.pointer, _sel_insertDescriptor_atIndex_, + descriptor.pointer, index); } - static NSObject processingInstructionWithName_stringValue_( - AVFAudio _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109( - _lib._class_NSXMLDTDNode1, - _lib._sel_processingInstructionWithName_stringValue_1, - name._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + NSAppleEventDescriptor? descriptorAtIndex_(int index) { + final _ret = + _objc_msgSend_732(this.pointer, _sel_descriptorAtIndex_, index); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSObject commentWithStringValue_(AVFAudio _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLDTDNode1, - _lib._sel_commentWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + void removeDescriptorAtIndex_(int index) { + _objc_msgSend_135(this.pointer, _sel_removeDescriptorAtIndex_, index); } - static NSObject textWithStringValue_(AVFAudio _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLDTDNode1, - _lib._sel_textWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + void setDescriptor_forKeyword_( + NSAppleEventDescriptor descriptor, int keyword) { + _objc_msgSend_727(this.pointer, _sel_setDescriptor_forKeyword_, + descriptor.pointer, keyword); } - static NSObject? DTDNodeWithXMLString_(AVFAudio _lib, NSString string) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSXMLDTDNode1, - _lib._sel_DTDNodeWithXMLString_1, string._id); + NSAppleEventDescriptor? descriptorForKeyword_(int keyword) { + final _ret = + _objc_msgSend_728(this.pointer, _sel_descriptorForKeyword_, keyword); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSString localNameForName_(AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_69( - _lib._class_NSXMLDTDNode1, _lib._sel_localNameForName_1, name._id); - return NSString._(_ret, _lib, retain: true, release: true); + void removeDescriptorWithKeyword_(int keyword) { + _objc_msgSend_729(this.pointer, _sel_removeDescriptorWithKeyword_, keyword); } - static NSString? prefixForName_(AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_186( - _lib._class_NSXMLDTDNode1, _lib._sel_prefixForName_1, name._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + int keywordForDescriptorAtIndex_(int index) { + return _objc_msgSend_733( + this.pointer, _sel_keywordForDescriptorAtIndex_, index); } - static NSXMLNode? predefinedNamespaceForPrefix_( - AVFAudio _lib, NSString name) { - final _ret = _lib._objc_msgSend_1125(_lib._class_NSXMLDTDNode1, - _lib._sel_predefinedNamespaceForPrefix_1, name._id); + NSAppleEventDescriptor? coerceToDescriptorType_(int descriptorType) { + final _ret = _objc_msgSend_728( + this.pointer, _sel_coerceToDescriptorType_, descriptorType); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLDTDNode new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDTDNode1, _lib._sel_new1); - return NSXMLDTDNode._(_ret, _lib, retain: false, release: true); + @override + NSAppleEventDescriptor init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLDTDNode allocWithZone_(AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLDTDNode1, _lib._sel_allocWithZone_1, zone); - return NSXMLDTDNode._(_ret, _lib, retain: false, release: true); + static NSAppleEventDescriptor new1() { + final _ret = _objc_msgSend_40(_class_NSAppleEventDescriptor, _sel_new); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: false, release: true); } - static NSXMLDTDNode alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDTDNode1, _lib._sel_alloc1); - return NSXMLDTDNode._(_ret, _lib, retain: false, release: true); + static NSAppleEventDescriptor allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSAppleEventDescriptor, _sel_allocWithZone_, zone); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: false, release: true); + } + + static NSAppleEventDescriptor alloc() { + final _ret = _objc_msgSend_40(_class_NSAppleEventDescriptor, _sel_alloc); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSXMLDTDNode1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSAppleEventDescriptor, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLDTDNode1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSAppleEventDescriptor, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDTDNode1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSAppleEventDescriptor, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDTDNode1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSAppleEventDescriptor, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSXMLDTDNode1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSAppleEventDescriptor, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSXMLDTDNode1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSAppleEventDescriptor, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSXMLDTDNode1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSAppleEventDescriptor, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSAppleEventDescriptor, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSAppleEventDescriptor, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSAppleEventDescriptor = + objc.getClass("NSAppleEventDescriptor"); +late final _sel_nullDescriptor = objc.registerName("nullDescriptor"); +final _objc_msgSend_709 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_descriptorWithDescriptorType_bytes_length_ = + objc.registerName("descriptorWithDescriptorType:bytes:length:"); +final _objc_msgSend_710 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer, int)>(); +late final _sel_descriptorWithDescriptorType_data_ = + objc.registerName("descriptorWithDescriptorType:data:"); +final _objc_msgSend_711 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_descriptorWithBoolean_ = + objc.registerName("descriptorWithBoolean:"); +final _objc_msgSend_712 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedChar)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_descriptorWithEnumCode_ = + objc.registerName("descriptorWithEnumCode:"); +final _objc_msgSend_713 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_descriptorWithInt32_ = + objc.registerName("descriptorWithInt32:"); +final _objc_msgSend_714 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_descriptorWithDouble_ = + objc.registerName("descriptorWithDouble:"); +final _objc_msgSend_715 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Double)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, double)>(); +late final _sel_descriptorWithTypeCode_ = + objc.registerName("descriptorWithTypeCode:"); +late final _sel_descriptorWithString_ = + objc.registerName("descriptorWithString:"); +final _objc_msgSend_716 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_descriptorWithDate_ = objc.registerName("descriptorWithDate:"); +final _objc_msgSend_717 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_descriptorWithFileURL_ = + objc.registerName("descriptorWithFileURL:"); +final _objc_msgSend_718 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_ = + objc.registerName( + "appleEventWithEventClass:eventID:targetDescriptor:returnID:transactionID:"); +final _objc_msgSend_719 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.UnsignedInt, + ffi.Pointer, + ffi.Short, + ffi.Int)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer, + int, + int)>(); +late final _sel_listDescriptor = objc.registerName("listDescriptor"); +late final _sel_recordDescriptor = objc.registerName("recordDescriptor"); +late final _sel_currentProcessDescriptor = + objc.registerName("currentProcessDescriptor"); +late final _sel_descriptorWithProcessIdentifier_ = + objc.registerName("descriptorWithProcessIdentifier:"); +late final _sel_descriptorWithBundleIdentifier_ = + objc.registerName("descriptorWithBundleIdentifier:"); +late final _sel_descriptorWithApplicationURL_ = + objc.registerName("descriptorWithApplicationURL:"); - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSXMLDTDNode1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } +@ffi.Packed(2) +final class AEDesc extends ffi.Struct { + @ffi.UnsignedInt() + external int descriptorType; - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLDTDNode1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } + external ffi.Pointer> dataHandle; } -abstract class NSXMLDTDNodeKind { - static const int NSXMLEntityGeneralKind = 1; - static const int NSXMLEntityParsedKind = 2; - static const int NSXMLEntityUnparsedKind = 3; - static const int NSXMLEntityParameterKind = 4; - static const int NSXMLEntityPredefined = 5; - static const int NSXMLAttributeCDATAKind = 6; - static const int NSXMLAttributeIDKind = 7; - static const int NSXMLAttributeIDRefKind = 8; - static const int NSXMLAttributeIDRefsKind = 9; - static const int NSXMLAttributeEntityKind = 10; - static const int NSXMLAttributeEntitiesKind = 11; - static const int NSXMLAttributeNMTokenKind = 12; - static const int NSXMLAttributeNMTokensKind = 13; - static const int NSXMLAttributeEnumerationKind = 14; - static const int NSXMLAttributeNotationKind = 15; - static const int NSXMLElementDeclarationUndefinedKind = 16; - static const int NSXMLElementDeclarationEmptyKind = 17; - static const int NSXMLElementDeclarationAnyKind = 18; - static const int NSXMLElementDeclarationMixedKind = 19; - static const int NSXMLElementDeclarationElementKind = 20; +final class OpaqueAEDataStorageType extends ffi.Opaque {} + +late final _sel_initWithAEDescNoCopy_ = + objc.registerName("initWithAEDescNoCopy:"); +final _objc_msgSend_720 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithDescriptorType_bytes_length_ = + objc.registerName("initWithDescriptorType:bytes:length:"); +final _objc_msgSend_721 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer, int)>(); +late final _sel_initWithDescriptorType_data_ = + objc.registerName("initWithDescriptorType:data:"); +final _objc_msgSend_722 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_initWithEventClass_eventID_targetDescriptor_returnID_transactionID_ = + objc.registerName( + "initWithEventClass:eventID:targetDescriptor:returnID:transactionID:"); +final _objc_msgSend_723 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.UnsignedInt, + ffi.Pointer, + ffi.Short, + ffi.Int)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer, + int, + int)>(); +late final _sel_initListDescriptor = objc.registerName("initListDescriptor"); +late final _sel_initRecordDescriptor = + objc.registerName("initRecordDescriptor"); +late final _sel_aeDesc = objc.registerName("aeDesc"); +final _objc_msgSend_724 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_descriptorType = objc.registerName("descriptorType"); +late final _sel_booleanValue = objc.registerName("booleanValue"); +final _objc_msgSend_725 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedChar Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_enumCodeValue = objc.registerName("enumCodeValue"); +late final _sel_int32Value = objc.registerName("int32Value"); +late final _sel_doubleValue = objc.registerName("doubleValue"); +late final _sel_typeCodeValue = objc.registerName("typeCodeValue"); +late final _sel_dateValue = objc.registerName("dateValue"); +late final _sel_fileURLValue = objc.registerName("fileURLValue"); +late final _sel_eventClass = objc.registerName("eventClass"); +late final _sel_eventID = objc.registerName("eventID"); +late final _sel_returnID = objc.registerName("returnID"); +final _objc_msgSend_726 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Short Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_transactionID = objc.registerName("transactionID"); +late final _sel_setParamDescriptor_forKeyword_ = + objc.registerName("setParamDescriptor:forKeyword:"); +final _objc_msgSend_727 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_paramDescriptorForKeyword_ = + objc.registerName("paramDescriptorForKeyword:"); +final _objc_msgSend_728 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_removeParamDescriptorWithKeyword_ = + objc.registerName("removeParamDescriptorWithKeyword:"); +final _objc_msgSend_729 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setAttributeDescriptor_forKeyword_ = + objc.registerName("setAttributeDescriptor:forKeyword:"); +late final _sel_attributeDescriptorForKeyword_ = + objc.registerName("attributeDescriptorForKeyword:"); + +abstract class NSAppleEventSendOptions { + static const int NSAppleEventSendNoReply = 1; + static const int NSAppleEventSendQueueReply = 2; + static const int NSAppleEventSendWaitForReply = 3; + static const int NSAppleEventSendNeverInteract = 16; + static const int NSAppleEventSendCanInteract = 32; + static const int NSAppleEventSendAlwaysInteract = 48; + static const int NSAppleEventSendCanSwitchLayer = 64; + static const int NSAppleEventSendDontRecord = 4096; + static const int NSAppleEventSendDontExecute = 8192; + static const int NSAppleEventSendDontAnnotate = 65536; + static const int NSAppleEventSendDefaultOptions = 35; } -class AVAudioSession extends NSObject { - AVAudioSession._(ffi.Pointer id, AVFAudio lib, +late final _sel_sendEventWithOptions_timeout_error_ = + objc.registerName("sendEventWithOptions:timeout:error:"); +final _objc_msgSend_730 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Double, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + double, + ffi.Pointer>)>(); +late final _sel_isRecordDescriptor = objc.registerName("isRecordDescriptor"); +late final _sel_numberOfItems = objc.registerName("numberOfItems"); +late final _sel_insertDescriptor_atIndex_ = + objc.registerName("insertDescriptor:atIndex:"); +final _objc_msgSend_731 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_descriptorAtIndex_ = objc.registerName("descriptorAtIndex:"); +final _objc_msgSend_732 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_removeDescriptorAtIndex_ = + objc.registerName("removeDescriptorAtIndex:"); +late final _sel_setDescriptor_forKeyword_ = + objc.registerName("setDescriptor:forKeyword:"); +late final _sel_descriptorForKeyword_ = + objc.registerName("descriptorForKeyword:"); +late final _sel_removeDescriptorWithKeyword_ = + objc.registerName("removeDescriptorWithKeyword:"); +late final _sel_keywordForDescriptorAtIndex_ = + objc.registerName("keywordForDescriptorAtIndex:"); +final _objc_msgSend_733 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedInt Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_coerceToDescriptorType_ = + objc.registerName("coerceToDescriptorType:"); +late final _sel_objectSpecifierWithDescriptor_ = + objc.registerName("objectSpecifierWithDescriptor:"); +final _objc_msgSend_734 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithContainerSpecifier_key_ = + objc.registerName("initWithContainerSpecifier:key:"); +final _objc_msgSend_735 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithContainerClassDescription_containerSpecifier_key_ = objc + .registerName("initWithContainerClassDescription:containerSpecifier:key:"); +final _objc_msgSend_736 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_childSpecifier = objc.registerName("childSpecifier"); +final _objc_msgSend_737 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setChildSpecifier_ = objc.registerName("setChildSpecifier:"); +final _objc_msgSend_738 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_containerSpecifier = objc.registerName("containerSpecifier"); +late final _sel_setContainerSpecifier_ = + objc.registerName("setContainerSpecifier:"); +late final _sel_containerIsObjectBeingTested = + objc.registerName("containerIsObjectBeingTested"); +late final _sel_setContainerIsObjectBeingTested_ = + objc.registerName("setContainerIsObjectBeingTested:"); +late final _sel_containerIsRangeContainerObject = + objc.registerName("containerIsRangeContainerObject"); +late final _sel_setContainerIsRangeContainerObject_ = + objc.registerName("setContainerIsRangeContainerObject:"); +late final _sel_key = objc.registerName("key"); +late final _sel_setKey_ = objc.registerName("setKey:"); +late final _sel_containerClassDescription = + objc.registerName("containerClassDescription"); +late final _sel_setContainerClassDescription_ = + objc.registerName("setContainerClassDescription:"); +final _objc_msgSend_739 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_keyClassDescription = objc.registerName("keyClassDescription"); +late final _sel_indicesOfObjectsByEvaluatingWithContainer_count_ = + objc.registerName("indicesOfObjectsByEvaluatingWithContainer:count:"); +final _objc_msgSend_740 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_objectsByEvaluatingWithContainers_ = + objc.registerName("objectsByEvaluatingWithContainers:"); +final _objc_msgSend_741 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_objectsByEvaluatingSpecifier = + objc.registerName("objectsByEvaluatingSpecifier"); +late final _sel_evaluationErrorNumber = + objc.registerName("evaluationErrorNumber"); +late final _sel_setEvaluationErrorNumber_ = + objc.registerName("setEvaluationErrorNumber:"); +late final _sel_evaluationErrorSpecifier = + objc.registerName("evaluationErrorSpecifier"); +late final _sel_descriptor = objc.registerName("descriptor"); +final _objc_msgSend_742 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_receiversSpecifier = objc.registerName("receiversSpecifier"); +late final _sel_setReceiversSpecifier_ = + objc.registerName("setReceiversSpecifier:"); +late final _sel_evaluatedReceivers = objc.registerName("evaluatedReceivers"); +late final _sel_evaluatedArguments = objc.registerName("evaluatedArguments"); +late final _sel_isWellFormed = objc.registerName("isWellFormed"); +late final _sel_performDefaultImplementation = + objc.registerName("performDefaultImplementation"); +late final _sel_executeCommand = objc.registerName("executeCommand"); +late final _sel_scriptErrorNumber = objc.registerName("scriptErrorNumber"); +late final _sel_setScriptErrorNumber_ = + objc.registerName("setScriptErrorNumber:"); +late final _sel_scriptErrorOffendingObjectDescriptor = + objc.registerName("scriptErrorOffendingObjectDescriptor"); +late final _sel_setScriptErrorOffendingObjectDescriptor_ = + objc.registerName("setScriptErrorOffendingObjectDescriptor:"); +final _objc_msgSend_743 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scriptErrorExpectedTypeDescriptor = + objc.registerName("scriptErrorExpectedTypeDescriptor"); +late final _sel_setScriptErrorExpectedTypeDescriptor_ = + objc.registerName("setScriptErrorExpectedTypeDescriptor:"); +late final _sel_scriptErrorString = objc.registerName("scriptErrorString"); +late final _sel_setScriptErrorString_ = + objc.registerName("setScriptErrorString:"); +late final _sel_currentCommand = objc.registerName("currentCommand"); +final _objc_msgSend_744 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_appleEvent = objc.registerName("appleEvent"); +late final _sel_suspendExecution = objc.registerName("suspendExecution"); +late final _sel_resumeExecutionWithResult_ = + objc.registerName("resumeExecutionWithResult:"); +late final _sel_createCommandInstance = + objc.registerName("createCommandInstance"); +final _objc_msgSend_745 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_createCommandInstanceWithZone_ = + objc.registerName("createCommandInstanceWithZone:"); +final _objc_msgSend_746 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_NSZone>)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_NSZone>)>(); +late final _sel_supportsCommand_ = objc.registerName("supportsCommand:"); +final _objc_msgSend_747 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_selectorForCommand_ = objc.registerName("selectorForCommand:"); +final _objc_msgSend_748 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_typeForKey_ = objc.registerName("typeForKey:"); +late final _sel_classDescriptionForKey_ = + objc.registerName("classDescriptionForKey:"); +final _objc_msgSend_749 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_appleEventCodeForKey_ = + objc.registerName("appleEventCodeForKey:"); +late final _sel_keyWithAppleEventCode_ = + objc.registerName("keyWithAppleEventCode:"); +final _objc_msgSend_750 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_defaultSubcontainerAttributeKey = + objc.registerName("defaultSubcontainerAttributeKey"); +late final _sel_isLocationRequiredToCreateForKey_ = + objc.registerName("isLocationRequiredToCreateForKey:"); +late final _sel_hasPropertyForKey_ = objc.registerName("hasPropertyForKey:"); +late final _sel_hasOrderedToManyRelationshipForKey_ = + objc.registerName("hasOrderedToManyRelationshipForKey:"); +late final _sel_hasReadablePropertyForKey_ = + objc.registerName("hasReadablePropertyForKey:"); +late final _sel_hasWritablePropertyForKey_ = + objc.registerName("hasWritablePropertyForKey:"); +late final _sel_isReadOnlyKey_ = objc.registerName("isReadOnlyKey:"); + +class AVAudioSession extends objc.NSObject { + AVAudioSession._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [AVAudioSession] that points to the same underlying object as [other]. - static AVAudioSession castFrom(T other) { - return AVAudioSession._(other._id, other._lib, retain: true, release: true); - } + /// Constructs a [AVAudioSession] that points to the same underlying object as [other]. + AVAudioSession.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [AVAudioSession] that wraps the given raw object pointer. - static AVAudioSession castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return AVAudioSession._(other, lib, retain: retain, release: release); - } + /// Constructs a [AVAudioSession] that wraps the given raw object pointer. + AVAudioSession.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); /// Returns whether [obj] is an instance of [AVAudioSession]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_AVAudioSession1); + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_AVAudioSession); } - static AVAudioSession sharedInstance(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_1145( - _lib._class_AVAudioSession1, _lib._sel_sharedInstance1); - return AVAudioSession._(_ret, _lib, retain: true, release: true); + static AVAudioSession sharedInstance() { + final _ret = _objc_msgSend_751(_class_AVAudioSession, _sel_sharedInstance); + return AVAudioSession.castFromPointer(_ret, retain: true, release: true); } - NSArray get availableCategories { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_availableCategories1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSArray get availableCategories { + final _ret = _objc_msgSend_6(this.pointer, _sel_availableCategories); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool setCategory_error_( - NSString category, ffi.Pointer> outError) { - return _lib._objc_msgSend_447( - _id, _lib._sel_setCategory_error_1, category._id, outError); + bool setCategory_error_(objc.NSString category, + ffi.Pointer> outError) { + return _objc_msgSend_285( + this.pointer, _sel_setCategory_error_, category.pointer, outError); } - bool setCategory_withOptions_error_(NSString category, int options, - ffi.Pointer> outError) { - return _lib._objc_msgSend_1146( - _id, - _lib._sel_setCategory_withOptions_error_1, - category._id, - options, - outError); + bool setCategory_withOptions_error_(objc.NSString category, int options, + ffi.Pointer> outError) { + return _objc_msgSend_752(this.pointer, _sel_setCategory_withOptions_error_, + category.pointer, options, outError); } - bool setCategory_mode_options_error_(NSString category, NSString mode, - int options, ffi.Pointer> outError) { - return _lib._objc_msgSend_1147( - _id, - _lib._sel_setCategory_mode_options_error_1, - category._id, - mode._id, - options, - outError); + bool setCategory_mode_options_error_( + objc.NSString category, + objc.NSString mode, + int options, + ffi.Pointer> outError) { + return _objc_msgSend_753(this.pointer, _sel_setCategory_mode_options_error_, + category.pointer, mode.pointer, options, outError); } bool setCategory_mode_routeSharingPolicy_options_error_( - NSString category, - NSString mode, + objc.NSString category, + objc.NSString mode, int policy, int options, - ffi.Pointer> outError) { - return _lib._objc_msgSend_1148( - _id, - _lib._sel_setCategory_mode_routeSharingPolicy_options_error_1, - category._id, - mode._id, + ffi.Pointer> outError) { + return _objc_msgSend_754( + this.pointer, + _sel_setCategory_mode_routeSharingPolicy_options_error_, + category.pointer, + mode.pointer, policy, options, outError); } - NSString get category { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_category1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSString get category { + final _ret = _objc_msgSend_12(this.pointer, _sel_category); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } int get categoryOptions { - return _lib._objc_msgSend_1149(_id, _lib._sel_categoryOptions1); + return _objc_msgSend_755(this.pointer, _sel_categoryOptions); } int get routeSharingPolicy { - return _lib._objc_msgSend_1150(_id, _lib._sel_routeSharingPolicy1); + return _objc_msgSend_756(this.pointer, _sel_routeSharingPolicy); } - NSArray get availableModes { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_availableModes1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSArray get availableModes { + final _ret = _objc_msgSend_6(this.pointer, _sel_availableModes); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } bool setMode_error_( - NSString mode, ffi.Pointer> outError) { - return _lib._objc_msgSend_447( - _id, _lib._sel_setMode_error_1, mode._id, outError); + objc.NSString mode, ffi.Pointer> outError) { + return _objc_msgSend_285( + this.pointer, _sel_setMode_error_, mode.pointer, outError); } - NSString get mode { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_mode1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSString get mode { + final _ret = _objc_msgSend_12(this.pointer, _sel_mode); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } bool setAllowHapticsAndSystemSoundsDuringRecording_error_( - bool inValue, ffi.Pointer> outError) { - return _lib._objc_msgSend_1151( - _id, - _lib._sel_setAllowHapticsAndSystemSoundsDuringRecording_error_1, + bool inValue, ffi.Pointer> outError) { + return _objc_msgSend_757( + this.pointer, + _sel_setAllowHapticsAndSystemSoundsDuringRecording_error_, inValue, outError); } bool get allowHapticsAndSystemSoundsDuringRecording { - return _lib._objc_msgSend_12( - _id, _lib._sel_allowHapticsAndSystemSoundsDuringRecording1); + return _objc_msgSend_7( + this.pointer, _sel_allowHapticsAndSystemSoundsDuringRecording); } int get recordPermission { - return _lib._objc_msgSend_1152(_id, _lib._sel_recordPermission1); + return _objc_msgSend_758(this.pointer, _sel_recordPermission); } void requestRecordPermission_(ObjCBlock_ffiVoid_bool response) { - _lib._objc_msgSend_1153( - _id, _lib._sel_requestRecordPermission_1, response._id); + _objc_msgSend_759( + this.pointer, _sel_requestRecordPermission_, response.pointer); } bool overrideOutputAudioPort_error_( - int portOverride, ffi.Pointer> outError) { - return _lib._objc_msgSend_1154( - _id, _lib._sel_overrideOutputAudioPort_error_1, portOverride, outError); + int portOverride, ffi.Pointer> outError) { + return _objc_msgSend_760(this.pointer, _sel_overrideOutputAudioPort_error_, + portOverride, outError); } bool setPreferredInput_error_(AVAudioSessionPortDescription? inPort, - ffi.Pointer> outError) { - return _lib._objc_msgSend_1158(_id, _lib._sel_setPreferredInput_error_1, - inPort?._id ?? ffi.nullptr, outError); + ffi.Pointer> outError) { + return _objc_msgSend_764(this.pointer, _sel_setPreferredInput_error_, + inPort?.pointer ?? ffi.nullptr, outError); } AVAudioSessionPortDescription? get preferredInput { - final _ret = _lib._objc_msgSend_1159(_id, _lib._sel_preferredInput1); + final _ret = _objc_msgSend_765(this.pointer, _sel_preferredInput); return _ret.address == 0 ? null - : AVAudioSessionPortDescription._(_ret, _lib, + : AVAudioSessionPortDescription.castFromPointer(_ret, retain: true, release: true); } bool setPrefersNoInterruptionsFromSystemAlerts_error_( - bool inValue, ffi.Pointer> outError) { - return _lib._objc_msgSend_1151( - _id, - _lib._sel_setPrefersNoInterruptionsFromSystemAlerts_error_1, + bool inValue, ffi.Pointer> outError) { + return _objc_msgSend_757( + this.pointer, + _sel_setPrefersNoInterruptionsFromSystemAlerts_error_, inValue, outError); } bool get prefersNoInterruptionsFromSystemAlerts { - return _lib._objc_msgSend_12( - _id, _lib._sel_prefersNoInterruptionsFromSystemAlerts1); + return _objc_msgSend_7( + this.pointer, _sel_prefersNoInterruptionsFromSystemAlerts); } int get renderingMode { - return _lib._objc_msgSend_1160(_id, _lib._sel_renderingMode1); + return _objc_msgSend_766(this.pointer, _sel_renderingMode); } bool setActive_error_( - bool active, ffi.Pointer> outError) { - return _lib._objc_msgSend_1151( - _id, _lib._sel_setActive_error_1, active, outError); + bool active, ffi.Pointer> outError) { + return _objc_msgSend_757( + this.pointer, _sel_setActive_error_, active, outError); } - bool setActive_withOptions_error_( - bool active, int options, ffi.Pointer> outError) { - return _lib._objc_msgSend_1161(_id, _lib._sel_setActive_withOptions_error_1, + bool setActive_withOptions_error_(bool active, int options, + ffi.Pointer> outError) { + return _objc_msgSend_767(this.pointer, _sel_setActive_withOptions_error_, active, options, outError); } void activateWithOptions_completionHandler_( int options, ObjCBlock_ffiVoid_bool_NSError handler) { - _lib._objc_msgSend_1162( - _id, - _lib._sel_activateWithOptions_completionHandler_1, - options, - handler._id); + _objc_msgSend_768(this.pointer, _sel_activateWithOptions_completionHandler_, + options, handler.pointer); } bool setPreferredSampleRate_error_( - double sampleRate, ffi.Pointer> outError) { - return _lib._objc_msgSend_1163( - _id, _lib._sel_setPreferredSampleRate_error_1, sampleRate, outError); + double sampleRate, ffi.Pointer> outError) { + return _objc_msgSend_769( + this.pointer, _sel_setPreferredSampleRate_error_, sampleRate, outError); } double get preferredSampleRate { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_preferredSampleRate1) - : _lib._objc_msgSend_165(_id, _lib._sel_preferredSampleRate1); + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_preferredSampleRate) + : _objc_msgSend_115(this.pointer, _sel_preferredSampleRate); } bool setPreferredIOBufferDuration_error_( - double duration, ffi.Pointer> outError) { - return _lib._objc_msgSend_1163(_id, - _lib._sel_setPreferredIOBufferDuration_error_1, duration, outError); + double duration, ffi.Pointer> outError) { + return _objc_msgSend_769(this.pointer, + _sel_setPreferredIOBufferDuration_error_, duration, outError); } double get preferredIOBufferDuration { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret( - _id, _lib._sel_preferredIOBufferDuration1) - : _lib._objc_msgSend_165(_id, _lib._sel_preferredIOBufferDuration1); + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_preferredIOBufferDuration) + : _objc_msgSend_115(this.pointer, _sel_preferredIOBufferDuration); } bool setPreferredInputNumberOfChannels_error_( - int count, ffi.Pointer> outError) { - return _lib._objc_msgSend_1164(_id, - _lib._sel_setPreferredInputNumberOfChannels_error_1, count, outError); + int count, ffi.Pointer> outError) { + return _objc_msgSend_770(this.pointer, + _sel_setPreferredInputNumberOfChannels_error_, count, outError); } int get preferredInputNumberOfChannels { - return _lib._objc_msgSend_83( - _id, _lib._sel_preferredInputNumberOfChannels1); + return _objc_msgSend_114(this.pointer, _sel_preferredInputNumberOfChannels); } bool setPreferredOutputNumberOfChannels_error_( - int count, ffi.Pointer> outError) { - return _lib._objc_msgSend_1164(_id, - _lib._sel_setPreferredOutputNumberOfChannels_error_1, count, outError); + int count, ffi.Pointer> outError) { + return _objc_msgSend_770(this.pointer, + _sel_setPreferredOutputNumberOfChannels_error_, count, outError); } int get preferredOutputNumberOfChannels { - return _lib._objc_msgSend_83( - _id, _lib._sel_preferredOutputNumberOfChannels1); + return _objc_msgSend_114( + this.pointer, _sel_preferredOutputNumberOfChannels); } bool setPreferredInputOrientation_error_( - int orientation, ffi.Pointer> outError) { - return _lib._objc_msgSend_1165(_id, - _lib._sel_setPreferredInputOrientation_error_1, orientation, outError); + int orientation, ffi.Pointer> outError) { + return _objc_msgSend_771(this.pointer, + _sel_setPreferredInputOrientation_error_, orientation, outError); } int get preferredInputOrientation { - return _lib._objc_msgSend_1166(_id, _lib._sel_preferredInputOrientation1); + return _objc_msgSend_772(this.pointer, _sel_preferredInputOrientation); } int get inputOrientation { - return _lib._objc_msgSend_1166(_id, _lib._sel_inputOrientation1); + return _objc_msgSend_772(this.pointer, _sel_inputOrientation); } int get maximumInputNumberOfChannels { - return _lib._objc_msgSend_83(_id, _lib._sel_maximumInputNumberOfChannels1); + return _objc_msgSend_114(this.pointer, _sel_maximumInputNumberOfChannels); } int get maximumOutputNumberOfChannels { - return _lib._objc_msgSend_83(_id, _lib._sel_maximumOutputNumberOfChannels1); + return _objc_msgSend_114(this.pointer, _sel_maximumOutputNumberOfChannels); } bool setInputGain_error_( - double gain, ffi.Pointer> outError) { - return _lib._objc_msgSend_1167( - _id, _lib._sel_setInputGain_error_1, gain, outError); + double gain, ffi.Pointer> outError) { + return _objc_msgSend_773( + this.pointer, _sel_setInputGain_error_, gain, outError); } double get inputGain { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_239_fpret(_id, _lib._sel_inputGain1) - : _lib._objc_msgSend_239(_id, _lib._sel_inputGain1); + return objc.useMsgSendVariants + ? _objc_msgSend_351Fpret(this.pointer, _sel_inputGain) + : _objc_msgSend_351(this.pointer, _sel_inputGain); } bool get inputGainSettable { - return _lib._objc_msgSend_12(_id, _lib._sel_isInputGainSettable1); + return _objc_msgSend_7(this.pointer, _sel_isInputGainSettable); } bool get inputAvailable { - return _lib._objc_msgSend_12(_id, _lib._sel_isInputAvailable1); + return _objc_msgSend_7(this.pointer, _sel_isInputAvailable); } - NSArray? get inputDataSources { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_inputDataSources1); + objc.NSArray? get inputDataSources { + final _ret = _objc_msgSend_69(this.pointer, _sel_inputDataSources); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } AVAudioSessionDataSourceDescription? get inputDataSource { - final _ret = _lib._objc_msgSend_1156(_id, _lib._sel_inputDataSource1); + final _ret = _objc_msgSend_762(this.pointer, _sel_inputDataSource); return _ret.address == 0 ? null - : AVAudioSessionDataSourceDescription._(_ret, _lib, + : AVAudioSessionDataSourceDescription.castFromPointer(_ret, retain: true, release: true); } bool setInputDataSource_error_( AVAudioSessionDataSourceDescription? dataSource, - ffi.Pointer> outError) { - return _lib._objc_msgSend_1157(_id, _lib._sel_setInputDataSource_error_1, - dataSource?._id ?? ffi.nullptr, outError); + ffi.Pointer> outError) { + return _objc_msgSend_763(this.pointer, _sel_setInputDataSource_error_, + dataSource?.pointer ?? ffi.nullptr, outError); } - NSArray? get outputDataSources { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_outputDataSources1); + objc.NSArray? get outputDataSources { + final _ret = _objc_msgSend_69(this.pointer, _sel_outputDataSources); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } AVAudioSessionDataSourceDescription? get outputDataSource { - final _ret = _lib._objc_msgSend_1156(_id, _lib._sel_outputDataSource1); + final _ret = _objc_msgSend_762(this.pointer, _sel_outputDataSource); return _ret.address == 0 ? null - : AVAudioSessionDataSourceDescription._(_ret, _lib, + : AVAudioSessionDataSourceDescription.castFromPointer(_ret, retain: true, release: true); } bool setOutputDataSource_error_( AVAudioSessionDataSourceDescription? dataSource, - ffi.Pointer> outError) { - return _lib._objc_msgSend_1157(_id, _lib._sel_setOutputDataSource_error_1, - dataSource?._id ?? ffi.nullptr, outError); + ffi.Pointer> outError) { + return _objc_msgSend_763(this.pointer, _sel_setOutputDataSource_error_, + dataSource?.pointer ?? ffi.nullptr, outError); } double get sampleRate { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_sampleRate1) - : _lib._objc_msgSend_165(_id, _lib._sel_sampleRate1); + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_sampleRate) + : _objc_msgSend_115(this.pointer, _sel_sampleRate); } int get inputNumberOfChannels { - return _lib._objc_msgSend_83(_id, _lib._sel_inputNumberOfChannels1); + return _objc_msgSend_114(this.pointer, _sel_inputNumberOfChannels); } int get outputNumberOfChannels { - return _lib._objc_msgSend_83(_id, _lib._sel_outputNumberOfChannels1); + return _objc_msgSend_114(this.pointer, _sel_outputNumberOfChannels); } double get inputLatency { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_inputLatency1) - : _lib._objc_msgSend_165(_id, _lib._sel_inputLatency1); + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_inputLatency) + : _objc_msgSend_115(this.pointer, _sel_inputLatency); } double get outputLatency { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_outputLatency1) - : _lib._objc_msgSend_165(_id, _lib._sel_outputLatency1); + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_outputLatency) + : _objc_msgSend_115(this.pointer, _sel_outputLatency); } double get IOBufferDuration { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_IOBufferDuration1) - : _lib._objc_msgSend_165(_id, _lib._sel_IOBufferDuration1); + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_IOBufferDuration) + : _objc_msgSend_115(this.pointer, _sel_IOBufferDuration); } - NSArray get supportedOutputChannelLayouts { + objc.NSArray get supportedOutputChannelLayouts { final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_supportedOutputChannelLayouts1); - return NSArray._(_ret, _lib, retain: true, release: true); + _objc_msgSend_6(this.pointer, _sel_supportedOutputChannelLayouts); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } bool get otherAudioPlaying { - return _lib._objc_msgSend_12(_id, _lib._sel_isOtherAudioPlaying1); + return _objc_msgSend_7(this.pointer, _sel_isOtherAudioPlaying); } bool get secondaryAudioShouldBeSilencedHint { - return _lib._objc_msgSend_12( - _id, _lib._sel_secondaryAudioShouldBeSilencedHint1); + return _objc_msgSend_7( + this.pointer, _sel_secondaryAudioShouldBeSilencedHint); } double get outputVolume { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_239_fpret(_id, _lib._sel_outputVolume1) - : _lib._objc_msgSend_239(_id, _lib._sel_outputVolume1); + return objc.useMsgSendVariants + ? _objc_msgSend_351Fpret(this.pointer, _sel_outputVolume) + : _objc_msgSend_351(this.pointer, _sel_outputVolume); } int get promptStyle { - return _lib._objc_msgSend_1168(_id, _lib._sel_promptStyle1); + return _objc_msgSend_774(this.pointer, _sel_promptStyle); } - NSArray? get availableInputs { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_availableInputs1); + objc.NSArray? get availableInputs { + final _ret = _objc_msgSend_69(this.pointer, _sel_availableInputs); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } AVAudioSessionRouteDescription get currentRoute { - final _ret = _lib._objc_msgSend_1169(_id, _lib._sel_currentRoute1); - return AVAudioSessionRouteDescription._(_ret, _lib, + final _ret = _objc_msgSend_775(this.pointer, _sel_currentRoute); + return AVAudioSessionRouteDescription.castFromPointer(_ret, retain: true, release: true); } bool setAggregatedIOPreference_error_( - int inIOType, ffi.Pointer> outError) { - return _lib._objc_msgSend_1170( - _id, _lib._sel_setAggregatedIOPreference_error_1, inIOType, outError); + int inIOType, ffi.Pointer> outError) { + return _objc_msgSend_776(this.pointer, + _sel_setAggregatedIOPreference_error_, inIOType, outError); } bool setSupportsMultichannelContent_error_( - bool inValue, ffi.Pointer> outError) { - return _lib._objc_msgSend_1151(_id, - _lib._sel_setSupportsMultichannelContent_error_1, inValue, outError); + bool inValue, ffi.Pointer> outError) { + return _objc_msgSend_757(this.pointer, + _sel_setSupportsMultichannelContent_error_, inValue, outError); } bool get supportsMultichannelContent { - return _lib._objc_msgSend_12(_id, _lib._sel_supportsMultichannelContent1); + return _objc_msgSend_7(this.pointer, _sel_supportsMultichannelContent); } bool setPrefersInterruptionOnRouteDisconnect_error_( - bool inValue, ffi.Pointer> outError) { - return _lib._objc_msgSend_1151( - _id, - _lib._sel_setPrefersInterruptionOnRouteDisconnect_error_1, - inValue, - outError); + bool inValue, ffi.Pointer> outError) { + return _objc_msgSend_757(this.pointer, + _sel_setPrefersInterruptionOnRouteDisconnect_error_, inValue, outError); } bool get prefersInterruptionOnRouteDisconnect { - return _lib._objc_msgSend_12( - _id, _lib._sel_prefersInterruptionOnRouteDisconnect1); + return _objc_msgSend_7( + this.pointer, _sel_prefersInterruptionOnRouteDisconnect); } - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + set delegate(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDelegate_, value?.pointer ?? ffi.nullptr); } @override AVAudioSession init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return AVAudioSession._(_ret, _lib, retain: true, release: true); + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return AVAudioSession.castFromPointer(_ret, retain: true, release: true); } - bool setActive_withFlags_error_( - bool active, int flags, ffi.Pointer> outError) { - return _lib._objc_msgSend_1171( - _id, _lib._sel_setActive_withFlags_error_1, active, flags, outError); + bool setActive_withFlags_error_(bool active, int flags, + ffi.Pointer> outError) { + return _objc_msgSend_777( + this.pointer, _sel_setActive_withFlags_error_, active, flags, outError); } bool get inputIsAvailable { - return _lib._objc_msgSend_12(_id, _lib._sel_inputIsAvailable1); + return _objc_msgSend_7(this.pointer, _sel_inputIsAvailable); } double get currentHardwareSampleRate { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret( - _id, _lib._sel_currentHardwareSampleRate1) - : _lib._objc_msgSend_165(_id, _lib._sel_currentHardwareSampleRate1); + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_currentHardwareSampleRate) + : _objc_msgSend_115(this.pointer, _sel_currentHardwareSampleRate); } int get currentHardwareInputNumberOfChannels { - return _lib._objc_msgSend_83( - _id, _lib._sel_currentHardwareInputNumberOfChannels1); + return _objc_msgSend_114( + this.pointer, _sel_currentHardwareInputNumberOfChannels); } int get currentHardwareOutputNumberOfChannels { - return _lib._objc_msgSend_83( - _id, _lib._sel_currentHardwareOutputNumberOfChannels1); + return _objc_msgSend_114( + this.pointer, _sel_currentHardwareOutputNumberOfChannels); } bool setPreferredHardwareSampleRate_error_( - double sampleRate, ffi.Pointer> outError) { - return _lib._objc_msgSend_1163(_id, - _lib._sel_setPreferredHardwareSampleRate_error_1, sampleRate, outError); + double sampleRate, ffi.Pointer> outError) { + return _objc_msgSend_769(this.pointer, + _sel_setPreferredHardwareSampleRate_error_, sampleRate, outError); } double get preferredHardwareSampleRate { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret( - _id, _lib._sel_preferredHardwareSampleRate1) - : _lib._objc_msgSend_165(_id, _lib._sel_preferredHardwareSampleRate1); + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_preferredHardwareSampleRate) + : _objc_msgSend_115(this.pointer, _sel_preferredHardwareSampleRate); } - static AVAudioSession new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_AVAudioSession1, _lib._sel_new1); - return AVAudioSession._(_ret, _lib, retain: false, release: true); + static AVAudioSession new1() { + final _ret = _objc_msgSend_40(_class_AVAudioSession, _sel_new); + return AVAudioSession.castFromPointer(_ret, retain: false, release: true); } - static AVAudioSession allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_AVAudioSession1, _lib._sel_allocWithZone_1, zone); - return AVAudioSession._(_ret, _lib, retain: false, release: true); + static AVAudioSession allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_AVAudioSession, _sel_allocWithZone_, zone); + return AVAudioSession.castFromPointer(_ret, retain: false, release: true); } - static AVAudioSession alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_AVAudioSession1, _lib._sel_alloc1); - return AVAudioSession._(_ret, _lib, retain: false, release: true); + static AVAudioSession alloc() { + final _ret = _objc_msgSend_40(_class_AVAudioSession, _sel_alloc); + return AVAudioSession.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_AVAudioSession1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_AVAudioSession, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_AVAudioSession1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_AVAudioSession, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_AVAudioSession1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_AVAudioSession, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_AVAudioSession1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_AVAudioSession, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_AVAudioSession1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_AVAudioSession, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_AVAudioSession1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_AVAudioSession, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_AVAudioSession1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_AVAudioSession, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_AVAudioSession1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_AVAudioSession, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_AVAudioSession1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_AVAudioSession, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } +late final _class_AVAudioSession = objc.getClass("AVAudioSession"); +late final _sel_sharedInstance = objc.registerName("sharedInstance"); +final _objc_msgSend_751 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_availableCategories = objc.registerName("availableCategories"); +late final _sel_setCategory_error_ = objc.registerName("setCategory:error:"); + abstract class AVAudioSessionCategoryOptions { static const int AVAudioSessionCategoryOptionMixWithOthers = 1; static const int AVAudioSessionCategoryOptionDuckOthers = 2; @@ -76268,6 +37434,45 @@ abstract class AVAudioSessionCategoryOptions { AVAudioSessionCategoryOptionOverrideMutedMicrophoneInterruption = 128; } +late final _sel_setCategory_withOptions_error_ = + objc.registerName("setCategory:withOptions:error:"); +final _objc_msgSend_752 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_setCategory_mode_options_error_ = + objc.registerName("setCategory:mode:options:error:"); +final _objc_msgSend_753 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + abstract class AVAudioSessionRouteSharingPolicy { static const int AVAudioSessionRouteSharingPolicyDefault = 0; static const int AVAudioSessionRouteSharingPolicyLongFormAudio = 1; @@ -76276,389 +37481,545 @@ abstract class AVAudioSessionRouteSharingPolicy { static const int AVAudioSessionRouteSharingPolicyLongFormVideo = 3; } +late final _sel_setCategory_mode_routeSharingPolicy_options_error_ = + objc.registerName("setCategory:mode:routeSharingPolicy:options:error:"); +final _objc_msgSend_754 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer>)>(); +late final _sel_category = objc.registerName("category"); +late final _sel_categoryOptions = objc.registerName("categoryOptions"); +final _objc_msgSend_755 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_routeSharingPolicy = objc.registerName("routeSharingPolicy"); +final _objc_msgSend_756 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_availableModes = objc.registerName("availableModes"); +late final _sel_setMode_error_ = objc.registerName("setMode:error:"); +late final _sel_mode = objc.registerName("mode"); +late final _sel_setAllowHapticsAndSystemSoundsDuringRecording_error_ = + objc.registerName("setAllowHapticsAndSystemSoundsDuringRecording:error:"); +final _objc_msgSend_757 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer>)>(); +late final _sel_allowHapticsAndSystemSoundsDuringRecording = + objc.registerName("allowHapticsAndSystemSoundsDuringRecording"); + abstract class AVAudioSessionRecordPermission { static const int AVAudioSessionRecordPermissionUndetermined = 1970168948; static const int AVAudioSessionRecordPermissionDenied = 1684369017; static const int AVAudioSessionRecordPermissionGranted = 1735552628; } +late final _sel_recordPermission = objc.registerName("recordPermission"); +final _objc_msgSend_758 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_requestRecordPermission_ = + objc.registerName("requestRecordPermission:"); +final _objc_msgSend_759 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + abstract class AVAudioSessionPortOverride { static const int AVAudioSessionPortOverrideNone = 0; static const int AVAudioSessionPortOverrideSpeaker = 1936747378; } -class AVAudioSessionPortDescription extends NSObject { - AVAudioSessionPortDescription._(ffi.Pointer id, AVFAudio lib, +late final _sel_overrideOutputAudioPort_error_ = + objc.registerName("overrideOutputAudioPort:error:"); +final _objc_msgSend_760 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + +class AVAudioSessionPortDescription extends objc.NSObject { + AVAudioSessionPortDescription._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [AVAudioSessionPortDescription] that points to the same underlying object as [other]. - static AVAudioSessionPortDescription castFrom( - T other) { - return AVAudioSessionPortDescription._(other._id, other._lib, - retain: true, release: true); - } + /// Constructs a [AVAudioSessionPortDescription] that points to the same underlying object as [other]. + AVAudioSessionPortDescription.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [AVAudioSessionPortDescription] that wraps the given raw object pointer. - static AVAudioSessionPortDescription castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return AVAudioSessionPortDescription._(other, lib, - retain: retain, release: release); - } + /// Constructs a [AVAudioSessionPortDescription] that wraps the given raw object pointer. + AVAudioSessionPortDescription.castFromPointer( + ffi.Pointer other, + {bool retain = false, + bool release = false}) + : this._(other, retain: retain, release: release); /// Returns whether [obj] is an instance of [AVAudioSessionPortDescription]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_AVAudioSessionPortDescription1); + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_AVAudioSessionPortDescription); } - NSString get portType { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_portType1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSString get portType { + final _ret = _objc_msgSend_12(this.pointer, _sel_portType); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString get portName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_portName1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSString get portName { + final _ret = _objc_msgSend_12(this.pointer, _sel_portName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString get UID { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_UID1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSString get UID { + final _ret = _objc_msgSend_12(this.pointer, _sel_UID); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } bool get hasHardwareVoiceCallProcessing { - return _lib._objc_msgSend_12( - _id, _lib._sel_hasHardwareVoiceCallProcessing1); + return _objc_msgSend_7(this.pointer, _sel_hasHardwareVoiceCallProcessing); } bool get spatialAudioEnabled { - return _lib._objc_msgSend_12(_id, _lib._sel_isSpatialAudioEnabled1); + return _objc_msgSend_7(this.pointer, _sel_isSpatialAudioEnabled); } - NSArray? get channels { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_channels1); + objc.NSArray? get channels { + final _ret = _objc_msgSend_69(this.pointer, _sel_channels); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSArray? get dataSources { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_dataSources1); + objc.NSArray? get dataSources { + final _ret = _objc_msgSend_69(this.pointer, _sel_dataSources); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } AVAudioSessionDataSourceDescription? get selectedDataSource { - final _ret = _lib._objc_msgSend_1156(_id, _lib._sel_selectedDataSource1); + final _ret = _objc_msgSend_762(this.pointer, _sel_selectedDataSource); return _ret.address == 0 ? null - : AVAudioSessionDataSourceDescription._(_ret, _lib, + : AVAudioSessionDataSourceDescription.castFromPointer(_ret, retain: true, release: true); } AVAudioSessionDataSourceDescription? get preferredDataSource { - final _ret = _lib._objc_msgSend_1156(_id, _lib._sel_preferredDataSource1); + final _ret = _objc_msgSend_762(this.pointer, _sel_preferredDataSource); return _ret.address == 0 ? null - : AVAudioSessionDataSourceDescription._(_ret, _lib, + : AVAudioSessionDataSourceDescription.castFromPointer(_ret, retain: true, release: true); } bool setPreferredDataSource_error_( AVAudioSessionDataSourceDescription? dataSource, - ffi.Pointer> outError) { - return _lib._objc_msgSend_1157( - _id, - _lib._sel_setPreferredDataSource_error_1, - dataSource?._id ?? ffi.nullptr, - outError); + ffi.Pointer> outError) { + return _objc_msgSend_763(this.pointer, _sel_setPreferredDataSource_error_, + dataSource?.pointer ?? ffi.nullptr, outError); } @override AVAudioSessionPortDescription init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return AVAudioSessionPortDescription._(_ret, _lib, + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return AVAudioSessionPortDescription.castFromPointer(_ret, retain: true, release: true); } - static AVAudioSessionPortDescription new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_AVAudioSessionPortDescription1, _lib._sel_new1); - return AVAudioSessionPortDescription._(_ret, _lib, + static AVAudioSessionPortDescription new1() { + final _ret = + _objc_msgSend_40(_class_AVAudioSessionPortDescription, _sel_new); + return AVAudioSessionPortDescription.castFromPointer(_ret, retain: false, release: true); } static AVAudioSessionPortDescription allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_AVAudioSessionPortDescription1, - _lib._sel_allocWithZone_1, - zone); - return AVAudioSessionPortDescription._(_ret, _lib, + ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_AVAudioSessionPortDescription, _sel_allocWithZone_, zone); + return AVAudioSessionPortDescription.castFromPointer(_ret, retain: false, release: true); } - static AVAudioSessionPortDescription alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_AVAudioSessionPortDescription1, _lib._sel_alloc1); - return AVAudioSessionPortDescription._(_ret, _lib, + static AVAudioSessionPortDescription alloc() { + final _ret = + _objc_msgSend_40(_class_AVAudioSessionPortDescription, _sel_alloc); + return AVAudioSessionPortDescription.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_AVAudioSessionPortDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_AVAudioSessionPortDescription, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_AVAudioSessionPortDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_AVAudioSessionPortDescription, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_AVAudioSessionPortDescription1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7(_class_AVAudioSessionPortDescription, + _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_AVAudioSessionPortDescription1, - _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_AVAudioSessionPortDescription, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63( - _lib._class_AVAudioSessionPortDescription1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_AVAudioSessionPortDescription, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_AVAudioSessionPortDescription1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_AVAudioSessionPortDescription, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_AVAudioSessionPortDescription1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_AVAudioSessionPortDescription, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_AVAudioSessionPortDescription1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6(_class_AVAudioSessionPortDescription, + _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_AVAudioSessionPortDescription1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_AVAudioSessionPortDescription, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -class AVAudioSessionDataSourceDescription extends NSObject { - AVAudioSessionDataSourceDescription._( - ffi.Pointer id, AVFAudio lib, +late final _class_AVAudioSessionPortDescription = + objc.getClass("AVAudioSessionPortDescription"); +late final _sel_portType = objc.registerName("portType"); +late final _sel_portName = objc.registerName("portName"); +late final _sel_UID = objc.registerName("UID"); +late final _sel_hasHardwareVoiceCallProcessing = + objc.registerName("hasHardwareVoiceCallProcessing"); +late final _sel_isSpatialAudioEnabled = + objc.registerName("isSpatialAudioEnabled"); +late final _sel_channels = objc.registerName("channels"); +late final _sel_dataSources = objc.registerName("dataSources"); + +class AVAudioSessionDataSourceDescription extends objc.NSObject { + AVAudioSessionDataSourceDescription._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [AVAudioSessionDataSourceDescription] that points to the same underlying object as [other]. - static AVAudioSessionDataSourceDescription castFrom( - T other) { - return AVAudioSessionDataSourceDescription._(other._id, other._lib, - retain: true, release: true); - } + /// Constructs a [AVAudioSessionDataSourceDescription] that points to the same underlying object as [other]. + AVAudioSessionDataSourceDescription.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [AVAudioSessionDataSourceDescription] that wraps the given raw object pointer. - static AVAudioSessionDataSourceDescription castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return AVAudioSessionDataSourceDescription._(other, lib, - retain: retain, release: release); - } + /// Constructs a [AVAudioSessionDataSourceDescription] that wraps the given raw object pointer. + AVAudioSessionDataSourceDescription.castFromPointer( + ffi.Pointer other, + {bool retain = false, + bool release = false}) + : this._(other, retain: retain, release: release); /// Returns whether [obj] is an instance of [AVAudioSessionDataSourceDescription]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_AVAudioSessionDataSourceDescription1); + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, + _class_AVAudioSessionDataSourceDescription); } - NSNumber get dataSourceID { - final _ret = _lib._objc_msgSend_814(_id, _lib._sel_dataSourceID1); - return NSNumber._(_ret, _lib, retain: true, release: true); + objc.NSNumber get dataSourceID { + final _ret = _objc_msgSend_180(this.pointer, _sel_dataSourceID); + return objc.NSNumber.castFromPointer(_ret, retain: true, release: true); } - NSString get dataSourceName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_dataSourceName1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSString get dataSourceName { + final _ret = _objc_msgSend_12(this.pointer, _sel_dataSourceName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? get location { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_location1); + objc.NSString? get location { + final _ret = _objc_msgSend_13(this.pointer, _sel_location); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? get orientation { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_orientation1); + objc.NSString? get orientation { + final _ret = _objc_msgSend_13(this.pointer, _sel_orientation); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSArray? get supportedPolarPatterns { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_supportedPolarPatterns1); + objc.NSArray? get supportedPolarPatterns { + final _ret = _objc_msgSend_69(this.pointer, _sel_supportedPolarPatterns); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString? get selectedPolarPattern { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_selectedPolarPattern1); + objc.NSString? get selectedPolarPattern { + final _ret = _objc_msgSend_13(this.pointer, _sel_selectedPolarPattern); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? get preferredPolarPattern { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_preferredPolarPattern1); + objc.NSString? get preferredPolarPattern { + final _ret = _objc_msgSend_13(this.pointer, _sel_preferredPolarPattern); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool setPreferredPolarPattern_error_( - NSString? pattern, ffi.Pointer> outError) { - return _lib._objc_msgSend_1155( - _id, - _lib._sel_setPreferredPolarPattern_error_1, - pattern?._id ?? ffi.nullptr, - outError); + bool setPreferredPolarPattern_error_(objc.NSString? pattern, + ffi.Pointer> outError) { + return _objc_msgSend_761(this.pointer, _sel_setPreferredPolarPattern_error_, + pattern?.pointer ?? ffi.nullptr, outError); } @override AVAudioSessionDataSourceDescription init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return AVAudioSessionDataSourceDescription._(_ret, _lib, + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return AVAudioSessionDataSourceDescription.castFromPointer(_ret, retain: true, release: true); } - static AVAudioSessionDataSourceDescription new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_AVAudioSessionDataSourceDescription1, _lib._sel_new1); - return AVAudioSessionDataSourceDescription._(_ret, _lib, + static AVAudioSessionDataSourceDescription new1() { + final _ret = + _objc_msgSend_40(_class_AVAudioSessionDataSourceDescription, _sel_new); + return AVAudioSessionDataSourceDescription.castFromPointer(_ret, retain: false, release: true); } static AVAudioSessionDataSourceDescription allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_AVAudioSessionDataSourceDescription1, - _lib._sel_allocWithZone_1, - zone); - return AVAudioSessionDataSourceDescription._(_ret, _lib, + ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_AVAudioSessionDataSourceDescription, _sel_allocWithZone_, zone); + return AVAudioSessionDataSourceDescription.castFromPointer(_ret, retain: false, release: true); } - static AVAudioSessionDataSourceDescription alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_AVAudioSessionDataSourceDescription1, _lib._sel_alloc1); - return AVAudioSessionDataSourceDescription._(_ret, _lib, + static AVAudioSessionDataSourceDescription alloc() { + final _ret = _objc_msgSend_40( + _class_AVAudioSessionDataSourceDescription, _sel_alloc); + return AVAudioSessionDataSourceDescription.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_AVAudioSessionDataSourceDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_AVAudioSessionDataSourceDescription, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_AVAudioSessionDataSourceDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_AVAudioSessionDataSourceDescription, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_AVAudioSessionDataSourceDescription1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7(_class_AVAudioSessionDataSourceDescription, + _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_AVAudioSessionDataSourceDescription1, - _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_AVAudioSessionDataSourceDescription, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63( - _lib._class_AVAudioSessionDataSourceDescription1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_AVAudioSessionDataSourceDescription, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64( - _lib._class_AVAudioSessionDataSourceDescription1, - _lib._sel_automaticallyNotifiesObserversForKey_1, - key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_AVAudioSessionDataSourceDescription, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_AVAudioSessionDataSourceDescription1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_AVAudioSessionDataSourceDescription1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_AVAudioSessionDataSourceDescription1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_AVAudioSessionDataSourceDescription, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6(_class_AVAudioSessionDataSourceDescription, + _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40(_class_AVAudioSessionDataSourceDescription, + _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_AVAudioSessionDataSourceDescription = + objc.getClass("AVAudioSessionDataSourceDescription"); +late final _sel_dataSourceID = objc.registerName("dataSourceID"); +late final _sel_dataSourceName = objc.registerName("dataSourceName"); +late final _sel_location = objc.registerName("location"); +late final _sel_orientation = objc.registerName("orientation"); +late final _sel_supportedPolarPatterns = + objc.registerName("supportedPolarPatterns"); +late final _sel_selectedPolarPattern = + objc.registerName("selectedPolarPattern"); +late final _sel_preferredPolarPattern = + objc.registerName("preferredPolarPattern"); +late final _sel_setPreferredPolarPattern_error_ = + objc.registerName("setPreferredPolarPattern:error:"); +final _objc_msgSend_761 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_selectedDataSource = objc.registerName("selectedDataSource"); +final _objc_msgSend_762 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_preferredDataSource = objc.registerName("preferredDataSource"); +late final _sel_setPreferredDataSource_error_ = + objc.registerName("setPreferredDataSource:error:"); +final _objc_msgSend_763 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_setPreferredInput_error_ = + objc.registerName("setPreferredInput:error:"); +final _objc_msgSend_764 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_preferredInput = objc.registerName("preferredInput"); +final _objc_msgSend_765 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setPrefersNoInterruptionsFromSystemAlerts_error_ = + objc.registerName("setPrefersNoInterruptionsFromSystemAlerts:error:"); +late final _sel_prefersNoInterruptionsFromSystemAlerts = + objc.registerName("prefersNoInterruptionsFromSystemAlerts"); abstract class AVAudioSessionRenderingMode { static const int AVAudioSessionRenderingModeNotApplicable = 0; @@ -76669,51 +38030,83 @@ abstract class AVAudioSessionRenderingMode { static const int AVAudioSessionRenderingModeDolbyAtmos = 5; } +late final _sel_renderingMode = objc.registerName("renderingMode"); +final _objc_msgSend_766 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setActive_error_ = objc.registerName("setActive:error:"); + abstract class AVAudioSessionSetActiveOptions { static const int AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation = 1; } +late final _sel_setActive_withOptions_error_ = + objc.registerName("setActive:withOptions:error:"); +final _objc_msgSend_767 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + bool, + int, + ffi.Pointer>)>(); + abstract class AVAudioSessionActivationOptions { static const int AVAudioSessionActivationOptionNone = 0; } void _ObjCBlock_ffiVoid_bool_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, + ffi.Pointer block, bool arg0, - ffi.Pointer arg1) => + ffi.Pointer arg1) => block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Bool arg0, ffi.Pointer arg1)>>() - .asFunction)>()(arg0, arg1); + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Bool arg0, ffi.Pointer arg1)>>() + .asFunction)>()( + arg0, arg1); final _ObjCBlock_ffiVoid_bool_NSError_closureRegistry = - )>{}; + )>{}; int _ObjCBlock_ffiVoid_bool_NSError_closureRegistryIndex = 0; ffi.Pointer _ObjCBlock_ffiVoid_bool_NSError_registerClosure( - void Function(bool, ffi.Pointer) fn) { + void Function(bool, ffi.Pointer) fn) { final id = ++_ObjCBlock_ffiVoid_bool_NSError_closureRegistryIndex; _ObjCBlock_ffiVoid_bool_NSError_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } void _ObjCBlock_ffiVoid_bool_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, + ffi.Pointer block, bool arg0, - ffi.Pointer arg1) => + ffi.Pointer arg1) => _ObjCBlock_ffiVoid_bool_NSError_closureRegistry[block.ref.target.address]!( arg0, arg1); -class ObjCBlock_ffiVoid_bool_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_bool_NSError._(ffi.Pointer<_ObjCBlock> id, AVFAudio lib, +class ObjCBlock_ffiVoid_bool_NSError extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_bool_NSError._(ffi.Pointer pointer, {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. static ObjCBlock_ffiVoid_bool_NSError castFromPointer( - AVFAudio lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_bool_NSError._(pointer, lib, + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_bool_NSError._(pointer, retain: retain, release: release); } @@ -76723,21 +38116,18 @@ class ObjCBlock_ffiVoid_bool_NSError extends _ObjCBlockBase { /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. ObjCBlock_ffiVoid_bool_NSError.fromFunctionPointer( - AVFAudio lib, ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Bool arg0, ffi.Pointer arg1)>> + ffi.Bool arg0, ffi.Pointer arg1)>> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Bool, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_bool_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, ffi.Bool, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_bool_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -76746,18 +38136,16 @@ class ObjCBlock_ffiVoid_bool_NSError extends _ObjCBlockBase { /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. ObjCBlock_ffiVoid_bool_NSError.fromFunction( - AVFAudio lib, void Function(bool, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Bool, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_bool_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_bool_NSError_registerClosure( - (bool arg0, ffi.Pointer arg1) => fn(arg0, - arg1.address == 0 ? null : NSError._(arg1, lib, retain: true, release: true)))), - lib); + void Function(bool, objc.NSError?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, ffi.Bool, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_bool_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_bool_NSError_registerClosure( + (bool arg0, ffi.Pointer arg1) => fn(arg0, + arg1.address == 0 ? null : objc.NSError.castFromPointer(arg1, retain: true, release: true))))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -76769,35 +38157,92 @@ class ObjCBlock_ffiVoid_bool_NSError extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_bool_NSError.listener( - AVFAudio lib, void Function(bool, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Bool, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_bool_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_bool_NSError_registerClosure( - (bool arg0, ffi.Pointer arg1) => fn(arg0, - arg1.address == 0 ? null : NSError._(arg1, lib, retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_bool_NSError.listener(void Function(bool, objc.NSError?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, ffi.Bool, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_bool_NSError_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_bool_NSError_registerClosure( + (bool arg0, ffi.Pointer arg1) => fn(arg0, + arg1.address == 0 ? null : objc.NSError.castFromPointer(arg1, retain: true, release: true))))); static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, ffi.Bool, ffi.Pointer)>? - _dartFuncListenerTrampoline; + ffi.Void Function(ffi.Pointer, ffi.Bool, + ffi.Pointer)>? _dartFuncListenerTrampoline; - void call(bool arg0, NSError? arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, ffi.Bool arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, bool, - ffi.Pointer)>()(_id, arg0, arg1?._id ?? ffi.nullptr); -} + void call(bool arg0, objc.NSError? arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Bool arg0, ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer, bool, + ffi.Pointer)>()( + pointer, arg0, arg1?.pointer ?? ffi.nullptr); +} + +late final _sel_activateWithOptions_completionHandler_ = + objc.registerName("activateWithOptions:completionHandler:"); +final _objc_msgSend_768 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_setPreferredSampleRate_error_ = + objc.registerName("setPreferredSampleRate:error:"); +final _objc_msgSend_769 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer>)>(); +late final _sel_preferredSampleRate = objc.registerName("preferredSampleRate"); +late final _sel_setPreferredIOBufferDuration_error_ = + objc.registerName("setPreferredIOBufferDuration:error:"); +late final _sel_preferredIOBufferDuration = + objc.registerName("preferredIOBufferDuration"); +late final _sel_setPreferredInputNumberOfChannels_error_ = + objc.registerName("setPreferredInputNumberOfChannels:error:"); +final _objc_msgSend_770 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_preferredInputNumberOfChannels = + objc.registerName("preferredInputNumberOfChannels"); +late final _sel_setPreferredOutputNumberOfChannels_error_ = + objc.registerName("setPreferredOutputNumberOfChannels:error:"); +late final _sel_preferredOutputNumberOfChannels = + objc.registerName("preferredOutputNumberOfChannels"); abstract class AVAudioStereoOrientation { static const int AVAudioStereoOrientationNone = 0; @@ -76807,576 +38252,796 @@ abstract class AVAudioStereoOrientation { static const int AVAudioStereoOrientationLandscapeLeft = 4; } +late final _sel_setPreferredInputOrientation_error_ = + objc.registerName("setPreferredInputOrientation:error:"); +final _objc_msgSend_771 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_preferredInputOrientation = + objc.registerName("preferredInputOrientation"); +final _objc_msgSend_772 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_inputOrientation = objc.registerName("inputOrientation"); +late final _sel_maximumInputNumberOfChannels = + objc.registerName("maximumInputNumberOfChannels"); +late final _sel_maximumOutputNumberOfChannels = + objc.registerName("maximumOutputNumberOfChannels"); +late final _sel_setInputGain_error_ = objc.registerName("setInputGain:error:"); +final _objc_msgSend_773 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Float, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer>)>(); +late final _sel_inputGain = objc.registerName("inputGain"); +late final _sel_isInputGainSettable = objc.registerName("isInputGainSettable"); +late final _sel_isInputAvailable = objc.registerName("isInputAvailable"); +late final _sel_inputDataSources = objc.registerName("inputDataSources"); +late final _sel_inputDataSource = objc.registerName("inputDataSource"); +late final _sel_setInputDataSource_error_ = + objc.registerName("setInputDataSource:error:"); +late final _sel_outputDataSources = objc.registerName("outputDataSources"); +late final _sel_outputDataSource = objc.registerName("outputDataSource"); +late final _sel_setOutputDataSource_error_ = + objc.registerName("setOutputDataSource:error:"); +late final _sel_sampleRate = objc.registerName("sampleRate"); +late final _sel_inputNumberOfChannels = + objc.registerName("inputNumberOfChannels"); +late final _sel_outputNumberOfChannels = + objc.registerName("outputNumberOfChannels"); +late final _sel_inputLatency = objc.registerName("inputLatency"); +late final _sel_outputLatency = objc.registerName("outputLatency"); +late final _sel_IOBufferDuration = objc.registerName("IOBufferDuration"); +late final _sel_supportedOutputChannelLayouts = + objc.registerName("supportedOutputChannelLayouts"); +late final _sel_isOtherAudioPlaying = objc.registerName("isOtherAudioPlaying"); +late final _sel_secondaryAudioShouldBeSilencedHint = + objc.registerName("secondaryAudioShouldBeSilencedHint"); +late final _sel_outputVolume = objc.registerName("outputVolume"); + abstract class AVAudioSessionPromptStyle { static const int AVAudioSessionPromptStyleNone = 1852796517; static const int AVAudioSessionPromptStyleShort = 1936224884; static const int AVAudioSessionPromptStyleNormal = 1852992876; } -class AVAudioSessionRouteDescription extends NSObject { - AVAudioSessionRouteDescription._(ffi.Pointer id, AVFAudio lib, +late final _sel_promptStyle = objc.registerName("promptStyle"); +final _objc_msgSend_774 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_availableInputs = objc.registerName("availableInputs"); + +class AVAudioSessionRouteDescription extends objc.NSObject { + AVAudioSessionRouteDescription._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [AVAudioSessionRouteDescription] that points to the same underlying object as [other]. - static AVAudioSessionRouteDescription castFrom( - T other) { - return AVAudioSessionRouteDescription._(other._id, other._lib, - retain: true, release: true); - } + /// Constructs a [AVAudioSessionRouteDescription] that points to the same underlying object as [other]. + AVAudioSessionRouteDescription.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [AVAudioSessionRouteDescription] that wraps the given raw object pointer. - static AVAudioSessionRouteDescription castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return AVAudioSessionRouteDescription._(other, lib, - retain: retain, release: release); - } + /// Constructs a [AVAudioSessionRouteDescription] that wraps the given raw object pointer. + AVAudioSessionRouteDescription.castFromPointer( + ffi.Pointer other, + {bool retain = false, + bool release = false}) + : this._(other, retain: retain, release: release); /// Returns whether [obj] is an instance of [AVAudioSessionRouteDescription]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_AVAudioSessionRouteDescription1); + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, + _class_AVAudioSessionRouteDescription); } - NSArray get inputs { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_inputs1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSArray get inputs { + final _ret = _objc_msgSend_6(this.pointer, _sel_inputs); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSArray get outputs { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_outputs1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSArray get outputs { + final _ret = _objc_msgSend_6(this.pointer, _sel_outputs); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } @override AVAudioSessionRouteDescription init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return AVAudioSessionRouteDescription._(_ret, _lib, + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return AVAudioSessionRouteDescription.castFromPointer(_ret, retain: true, release: true); } - static AVAudioSessionRouteDescription new1(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_AVAudioSessionRouteDescription1, _lib._sel_new1); - return AVAudioSessionRouteDescription._(_ret, _lib, + static AVAudioSessionRouteDescription new1() { + final _ret = + _objc_msgSend_40(_class_AVAudioSessionRouteDescription, _sel_new); + return AVAudioSessionRouteDescription.castFromPointer(_ret, retain: false, release: true); } static AVAudioSessionRouteDescription allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_AVAudioSessionRouteDescription1, - _lib._sel_allocWithZone_1, - zone); - return AVAudioSessionRouteDescription._(_ret, _lib, + ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_AVAudioSessionRouteDescription, _sel_allocWithZone_, zone); + return AVAudioSessionRouteDescription.castFromPointer(_ret, retain: false, release: true); } - static AVAudioSessionRouteDescription alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_AVAudioSessionRouteDescription1, _lib._sel_alloc1); - return AVAudioSessionRouteDescription._(_ret, _lib, + static AVAudioSessionRouteDescription alloc() { + final _ret = + _objc_msgSend_40(_class_AVAudioSessionRouteDescription, _sel_alloc); + return AVAudioSessionRouteDescription.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_AVAudioSessionRouteDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_AVAudioSessionRouteDescription, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_AVAudioSessionRouteDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_AVAudioSessionRouteDescription, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_AVAudioSessionRouteDescription1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7(_class_AVAudioSessionRouteDescription, + _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_AVAudioSessionRouteDescription1, - _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_AVAudioSessionRouteDescription, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63( - _lib._class_AVAudioSessionRouteDescription1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_AVAudioSessionRouteDescription, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_AVAudioSessionRouteDescription1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_AVAudioSessionRouteDescription, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_AVAudioSessionRouteDescription1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_AVAudioSessionRouteDescription, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_AVAudioSessionRouteDescription1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6(_class_AVAudioSessionRouteDescription, + _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_AVAudioSessionRouteDescription1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_AVAudioSessionRouteDescription, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } +late final _class_AVAudioSessionRouteDescription = + objc.getClass("AVAudioSessionRouteDescription"); +late final _sel_inputs = objc.registerName("inputs"); +late final _sel_outputs = objc.registerName("outputs"); +late final _sel_currentRoute = objc.registerName("currentRoute"); +final _objc_msgSend_775 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + abstract class AVAudioSessionIOType { static const int AVAudioSessionIOTypeNotSpecified = 0; static const int AVAudioSessionIOTypeAggregated = 1; } -class AVAudioPlayer extends NSObject { - AVAudioPlayer._(ffi.Pointer id, AVFAudio lib, +late final _sel_setAggregatedIOPreference_error_ = + objc.registerName("setAggregatedIOPreference:error:"); +final _objc_msgSend_776 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_setSupportsMultichannelContent_error_ = + objc.registerName("setSupportsMultichannelContent:error:"); +late final _sel_supportsMultichannelContent = + objc.registerName("supportsMultichannelContent"); +late final _sel_setPrefersInterruptionOnRouteDisconnect_error_ = + objc.registerName("setPrefersInterruptionOnRouteDisconnect:error:"); +late final _sel_prefersInterruptionOnRouteDisconnect = + objc.registerName("prefersInterruptionOnRouteDisconnect"); +late final _sel_setActive_withFlags_error_ = + objc.registerName("setActive:withFlags:error:"); +final _objc_msgSend_777 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Long, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + bool, + int, + ffi.Pointer>)>(); +late final _sel_inputIsAvailable = objc.registerName("inputIsAvailable"); +late final _sel_currentHardwareSampleRate = + objc.registerName("currentHardwareSampleRate"); +late final _sel_currentHardwareInputNumberOfChannels = + objc.registerName("currentHardwareInputNumberOfChannels"); +late final _sel_currentHardwareOutputNumberOfChannels = + objc.registerName("currentHardwareOutputNumberOfChannels"); +late final _sel_setPreferredHardwareSampleRate_error_ = + objc.registerName("setPreferredHardwareSampleRate:error:"); +late final _sel_preferredHardwareSampleRate = + objc.registerName("preferredHardwareSampleRate"); + +class AVAudioPlayer extends objc.NSObject { + AVAudioPlayer._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [AVAudioPlayer] that points to the same underlying object as [other]. - static AVAudioPlayer castFrom(T other) { - return AVAudioPlayer._(other._id, other._lib, retain: true, release: true); - } + /// Constructs a [AVAudioPlayer] that points to the same underlying object as [other]. + AVAudioPlayer.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [AVAudioPlayer] that wraps the given raw object pointer. - static AVAudioPlayer castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return AVAudioPlayer._(other, lib, retain: retain, release: release); - } + /// Constructs a [AVAudioPlayer] that wraps the given raw object pointer. + AVAudioPlayer.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); /// Returns whether [obj] is an instance of [AVAudioPlayer]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_AVAudioPlayer1); + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_AVAudioPlayer); } AVAudioPlayer? initWithContentsOfURL_error_( - NSURL url, ffi.Pointer> outError) { - final _ret = _lib._objc_msgSend_842( - _id, _lib._sel_initWithContentsOfURL_error_1, url._id, outError); + objc.NSURL url, ffi.Pointer> outError) { + final _ret = _objc_msgSend_259( + this.pointer, _sel_initWithContentsOfURL_error_, url.pointer, outError); return _ret.address == 0 ? null - : AVAudioPlayer._(_ret, _lib, retain: true, release: true); + : AVAudioPlayer.castFromPointer(_ret, retain: true, release: true); } AVAudioPlayer? initWithData_error_( - NSData data, ffi.Pointer> outError) { - final _ret = _lib._objc_msgSend_1172( - _id, _lib._sel_initWithData_error_1, data._id, outError); + objc.NSData data, ffi.Pointer> outError) { + final _ret = _objc_msgSend_778( + this.pointer, _sel_initWithData_error_, data.pointer, outError); return _ret.address == 0 ? null - : AVAudioPlayer._(_ret, _lib, retain: true, release: true); + : AVAudioPlayer.castFromPointer(_ret, retain: true, release: true); } - AVAudioPlayer? initWithContentsOfURL_fileTypeHint_error_(NSURL url, - NSString? utiString, ffi.Pointer> outError) { - final _ret = _lib._objc_msgSend_1173( - _id, - _lib._sel_initWithContentsOfURL_fileTypeHint_error_1, - url._id, - utiString?._id ?? ffi.nullptr, + AVAudioPlayer? initWithContentsOfURL_fileTypeHint_error_( + objc.NSURL url, + objc.NSString? utiString, + ffi.Pointer> outError) { + final _ret = _objc_msgSend_779( + this.pointer, + _sel_initWithContentsOfURL_fileTypeHint_error_, + url.pointer, + utiString?.pointer ?? ffi.nullptr, outError); return _ret.address == 0 ? null - : AVAudioPlayer._(_ret, _lib, retain: true, release: true); + : AVAudioPlayer.castFromPointer(_ret, retain: true, release: true); } - AVAudioPlayer? initWithData_fileTypeHint_error_(NSData data, - NSString? utiString, ffi.Pointer> outError) { - final _ret = _lib._objc_msgSend_1174( - _id, - _lib._sel_initWithData_fileTypeHint_error_1, - data._id, - utiString?._id ?? ffi.nullptr, + AVAudioPlayer? initWithData_fileTypeHint_error_( + objc.NSData data, + objc.NSString? utiString, + ffi.Pointer> outError) { + final _ret = _objc_msgSend_780( + this.pointer, + _sel_initWithData_fileTypeHint_error_, + data.pointer, + utiString?.pointer ?? ffi.nullptr, outError); return _ret.address == 0 ? null - : AVAudioPlayer._(_ret, _lib, retain: true, release: true); + : AVAudioPlayer.castFromPointer(_ret, retain: true, release: true); } bool prepareToPlay() { - return _lib._objc_msgSend_12(_id, _lib._sel_prepareToPlay1); + return _objc_msgSend_7(this.pointer, _sel_prepareToPlay); } bool play() { - return _lib._objc_msgSend_12(_id, _lib._sel_play1); + return _objc_msgSend_7(this.pointer, _sel_play); } bool playAtTime_(double time) { - return _lib._objc_msgSend_1175(_id, _lib._sel_playAtTime_1, time); + return _objc_msgSend_781(this.pointer, _sel_playAtTime_, time); } void pause() { - _lib._objc_msgSend_1(_id, _lib._sel_pause1); + _objc_msgSend_82(this.pointer, _sel_pause); } void stop() { - _lib._objc_msgSend_1(_id, _lib._sel_stop1); + _objc_msgSend_82(this.pointer, _sel_stop); } bool get playing { - return _lib._objc_msgSend_12(_id, _lib._sel_isPlaying1); + return _objc_msgSend_7(this.pointer, _sel_isPlaying); } int get numberOfChannels { - return _lib._objc_msgSend_10(_id, _lib._sel_numberOfChannels1); + return _objc_msgSend_29(this.pointer, _sel_numberOfChannels); } double get duration { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_duration1) - : _lib._objc_msgSend_165(_id, _lib._sel_duration1); + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_duration) + : _objc_msgSend_115(this.pointer, _sel_duration); } - NSString? get currentDevice { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_currentDevice1); + objc.NSString? get currentDevice { + final _ret = _objc_msgSend_13(this.pointer, _sel_currentDevice); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set currentDevice(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setCurrentDevice_1, value?._id ?? ffi.nullptr); + set currentDevice(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setCurrentDevice_, value?.pointer ?? ffi.nullptr); } - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + set delegate(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDelegate_, value?.pointer ?? ffi.nullptr); } - NSURL? get url { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_url1); + objc.NSURL? get url { + final _ret = _objc_msgSend_10(this.pointer, _sel_url); return _ret.address == 0 ? null - : NSURL._(_ret, _lib, retain: true, release: true); + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - NSData? get data { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_data1); + objc.NSData? get data { + final _ret = _objc_msgSend_325(this.pointer, _sel_data); return _ret.address == 0 ? null - : NSData._(_ret, _lib, retain: true, release: true); + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } double get pan { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_239_fpret(_id, _lib._sel_pan1) - : _lib._objc_msgSend_239(_id, _lib._sel_pan1); + return objc.useMsgSendVariants + ? _objc_msgSend_351Fpret(this.pointer, _sel_pan) + : _objc_msgSend_351(this.pointer, _sel_pan); } set pan(double value) { - return _lib._objc_msgSend_881(_id, _lib._sel_setPan_1, value); + return _objc_msgSend_352(this.pointer, _sel_setPan_, value); } double get volume { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_239_fpret(_id, _lib._sel_volume1) - : _lib._objc_msgSend_239(_id, _lib._sel_volume1); + return objc.useMsgSendVariants + ? _objc_msgSend_351Fpret(this.pointer, _sel_volume) + : _objc_msgSend_351(this.pointer, _sel_volume); } set volume(double value) { - return _lib._objc_msgSend_881(_id, _lib._sel_setVolume_1, value); + return _objc_msgSend_352(this.pointer, _sel_setVolume_, value); } void setVolume_fadeDuration_(double volume, double duration) { - _lib._objc_msgSend_1176( - _id, _lib._sel_setVolume_fadeDuration_1, volume, duration); + _objc_msgSend_782( + this.pointer, _sel_setVolume_fadeDuration_, volume, duration); } bool get enableRate { - return _lib._objc_msgSend_12(_id, _lib._sel_enableRate1); + return _objc_msgSend_7(this.pointer, _sel_enableRate); } set enableRate(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setEnableRate_1, value); + return _objc_msgSend_41(this.pointer, _sel_setEnableRate_, value); } double get rate { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_239_fpret(_id, _lib._sel_rate1) - : _lib._objc_msgSend_239(_id, _lib._sel_rate1); + return objc.useMsgSendVariants + ? _objc_msgSend_351Fpret(this.pointer, _sel_rate) + : _objc_msgSend_351(this.pointer, _sel_rate); } set rate(double value) { - return _lib._objc_msgSend_881(_id, _lib._sel_setRate_1, value); + return _objc_msgSend_352(this.pointer, _sel_setRate_, value); } double get currentTime { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_currentTime1) - : _lib._objc_msgSend_165(_id, _lib._sel_currentTime1); + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_currentTime) + : _objc_msgSend_115(this.pointer, _sel_currentTime); } set currentTime(double value) { - return _lib._objc_msgSend_542(_id, _lib._sel_setCurrentTime_1, value); + return _objc_msgSend_212(this.pointer, _sel_setCurrentTime_, value); } double get deviceCurrentTime { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_deviceCurrentTime1) - : _lib._objc_msgSend_165(_id, _lib._sel_deviceCurrentTime1); + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_deviceCurrentTime) + : _objc_msgSend_115(this.pointer, _sel_deviceCurrentTime); } int get numberOfLoops { - return _lib._objc_msgSend_83(_id, _lib._sel_numberOfLoops1); + return _objc_msgSend_114(this.pointer, _sel_numberOfLoops); } set numberOfLoops(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setNumberOfLoops_1, value); + return _objc_msgSend_134(this.pointer, _sel_setNumberOfLoops_, value); } - NSDictionary get settings { - final _ret = _lib._objc_msgSend_181(_id, _lib._sel_settings1); - return NSDictionary._(_ret, _lib, retain: true, release: true); + objc.NSDictionary get settings { + final _ret = _objc_msgSend_112(this.pointer, _sel_settings); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } AVAudioFormat get format { - final _ret = _lib._objc_msgSend_1193(_id, _lib._sel_format1); - return AVAudioFormat._(_ret, _lib, retain: true, release: true); + final _ret = _objc_msgSend_799(this.pointer, _sel_format); + return AVAudioFormat.castFromPointer(_ret, retain: true, release: true); } bool get meteringEnabled { - return _lib._objc_msgSend_12(_id, _lib._sel_isMeteringEnabled1); + return _objc_msgSend_7(this.pointer, _sel_isMeteringEnabled); } set meteringEnabled(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setMeteringEnabled_1, value); + return _objc_msgSend_41(this.pointer, _sel_setMeteringEnabled_, value); } void updateMeters() { - _lib._objc_msgSend_1(_id, _lib._sel_updateMeters1); + _objc_msgSend_82(this.pointer, _sel_updateMeters); } double peakPowerForChannel_(int channelNumber) { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_1194_fpret( - _id, _lib._sel_peakPowerForChannel_1, channelNumber) - : _lib._objc_msgSend_1194( - _id, _lib._sel_peakPowerForChannel_1, channelNumber); + return objc.useMsgSendVariants + ? _objc_msgSend_800Fpret( + this.pointer, _sel_peakPowerForChannel_, channelNumber) + : _objc_msgSend_800( + this.pointer, _sel_peakPowerForChannel_, channelNumber); } double averagePowerForChannel_(int channelNumber) { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_1194_fpret( - _id, _lib._sel_averagePowerForChannel_1, channelNumber) - : _lib._objc_msgSend_1194( - _id, _lib._sel_averagePowerForChannel_1, channelNumber); + return objc.useMsgSendVariants + ? _objc_msgSend_800Fpret( + this.pointer, _sel_averagePowerForChannel_, channelNumber) + : _objc_msgSend_800( + this.pointer, _sel_averagePowerForChannel_, channelNumber); } - NSArray? get channelAssignments { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_channelAssignments1); + objc.NSArray? get channelAssignments { + final _ret = _objc_msgSend_69(this.pointer, _sel_channelAssignments); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set channelAssignments(NSArray? value) { - return _lib._objc_msgSend_1053( - _id, _lib._sel_setChannelAssignments_1, value?._id ?? ffi.nullptr); + set channelAssignments(objc.NSArray? value) { + return _objc_msgSend_605(this.pointer, _sel_setChannelAssignments_, + value?.pointer ?? ffi.nullptr); } @override AVAudioPlayer init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return AVAudioPlayer._(_ret, _lib, retain: true, release: true); + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return AVAudioPlayer.castFromPointer(_ret, retain: true, release: true); } - static AVAudioPlayer new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_AVAudioPlayer1, _lib._sel_new1); - return AVAudioPlayer._(_ret, _lib, retain: false, release: true); + static AVAudioPlayer new1() { + final _ret = _objc_msgSend_40(_class_AVAudioPlayer, _sel_new); + return AVAudioPlayer.castFromPointer(_ret, retain: false, release: true); } - static AVAudioPlayer allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_AVAudioPlayer1, _lib._sel_allocWithZone_1, zone); - return AVAudioPlayer._(_ret, _lib, retain: false, release: true); + static AVAudioPlayer allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_AVAudioPlayer, _sel_allocWithZone_, zone); + return AVAudioPlayer.castFromPointer(_ret, retain: false, release: true); } - static AVAudioPlayer alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_AVAudioPlayer1, _lib._sel_alloc1); - return AVAudioPlayer._(_ret, _lib, retain: false, release: true); + static AVAudioPlayer alloc() { + final _ret = _objc_msgSend_40(_class_AVAudioPlayer, _sel_alloc); + return AVAudioPlayer.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_AVAudioPlayer1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_AVAudioPlayer, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_AVAudioPlayer1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_AVAudioPlayer, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_AVAudioPlayer1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_AVAudioPlayer, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_AVAudioPlayer1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_AVAudioPlayer, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_AVAudioPlayer1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_AVAudioPlayer, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_AVAudioPlayer1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_AVAudioPlayer, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_AVAudioPlayer1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_AVAudioPlayer1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_AVAudioPlayer1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class AVAudioFormat extends NSObject { - AVAudioFormat._(ffi.Pointer id, AVFAudio lib, + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_AVAudioPlayer, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_AVAudioPlayer, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_AVAudioPlayer, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_AVAudioPlayer = objc.getClass("AVAudioPlayer"); +late final _sel_initWithContentsOfURL_error_ = + objc.registerName("initWithContentsOfURL:error:"); +late final _sel_initWithData_error_ = objc.registerName("initWithData:error:"); +final _objc_msgSend_778 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_initWithContentsOfURL_fileTypeHint_error_ = + objc.registerName("initWithContentsOfURL:fileTypeHint:error:"); +final _objc_msgSend_779 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_initWithData_fileTypeHint_error_ = + objc.registerName("initWithData:fileTypeHint:error:"); +final _objc_msgSend_780 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_prepareToPlay = objc.registerName("prepareToPlay"); +late final _sel_play = objc.registerName("play"); +late final _sel_playAtTime_ = objc.registerName("playAtTime:"); +final _objc_msgSend_781 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.Double)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, double)>(); +late final _sel_pause = objc.registerName("pause"); +late final _sel_isPlaying = objc.registerName("isPlaying"); +late final _sel_numberOfChannels = objc.registerName("numberOfChannels"); +late final _sel_currentDevice = objc.registerName("currentDevice"); +late final _sel_setCurrentDevice_ = objc.registerName("setCurrentDevice:"); +late final _sel_url = objc.registerName("url"); +late final _sel_pan = objc.registerName("pan"); +late final _sel_setPan_ = objc.registerName("setPan:"); +late final _sel_volume = objc.registerName("volume"); +late final _sel_setVolume_ = objc.registerName("setVolume:"); +late final _sel_setVolume_fadeDuration_ = + objc.registerName("setVolume:fadeDuration:"); +final _objc_msgSend_782 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Float, ffi.Double)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, double, double)>(); +late final _sel_enableRate = objc.registerName("enableRate"); +late final _sel_setEnableRate_ = objc.registerName("setEnableRate:"); +late final _sel_rate = objc.registerName("rate"); +late final _sel_setRate_ = objc.registerName("setRate:"); +late final _sel_currentTime = objc.registerName("currentTime"); +late final _sel_setCurrentTime_ = objc.registerName("setCurrentTime:"); +late final _sel_deviceCurrentTime = objc.registerName("deviceCurrentTime"); +late final _sel_numberOfLoops = objc.registerName("numberOfLoops"); +late final _sel_setNumberOfLoops_ = objc.registerName("setNumberOfLoops:"); +late final _sel_settings = objc.registerName("settings"); + +class AVAudioFormat extends objc.NSObject { + AVAudioFormat._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [AVAudioFormat] that points to the same underlying object as [other]. - static AVAudioFormat castFrom(T other) { - return AVAudioFormat._(other._id, other._lib, retain: true, release: true); - } + /// Constructs a [AVAudioFormat] that points to the same underlying object as [other]. + AVAudioFormat.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [AVAudioFormat] that wraps the given raw object pointer. - static AVAudioFormat castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return AVAudioFormat._(other, lib, retain: retain, release: release); - } + /// Constructs a [AVAudioFormat] that wraps the given raw object pointer. + AVAudioFormat.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); /// Returns whether [obj] is an instance of [AVAudioFormat]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_AVAudioFormat1); + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_AVAudioFormat); } AVAudioFormat? initWithStreamDescription_( ffi.Pointer asbd) { - final _ret = _lib._objc_msgSend_1177( - _id, _lib._sel_initWithStreamDescription_1, asbd); + final _ret = + _objc_msgSend_783(this.pointer, _sel_initWithStreamDescription_, asbd); return _ret.address == 0 ? null - : AVAudioFormat._(_ret, _lib, retain: true, release: true); + : AVAudioFormat.castFromPointer(_ret, retain: true, release: true); } AVAudioFormat? initWithStreamDescription_channelLayout_( ffi.Pointer asbd, AVAudioChannelLayout? layout) { - final _ret = _lib._objc_msgSend_1183( - _id, - _lib._sel_initWithStreamDescription_channelLayout_1, + final _ret = _objc_msgSend_789( + this.pointer, + _sel_initWithStreamDescription_channelLayout_, asbd, - layout?._id ?? ffi.nullptr); + layout?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : AVAudioFormat._(_ret, _lib, retain: true, release: true); + : AVAudioFormat.castFromPointer(_ret, retain: true, release: true); } AVAudioFormat? initStandardFormatWithSampleRate_channels_( double sampleRate, int channels) { - final _ret = _lib._objc_msgSend_1184( - _id, - _lib._sel_initStandardFormatWithSampleRate_channels_1, - sampleRate, - channels); + final _ret = _objc_msgSend_790(this.pointer, + _sel_initStandardFormatWithSampleRate_channels_, sampleRate, channels); return _ret.address == 0 ? null - : AVAudioFormat._(_ret, _lib, retain: true, release: true); + : AVAudioFormat.castFromPointer(_ret, retain: true, release: true); } AVAudioFormat initStandardFormatWithSampleRate_channelLayout_( double sampleRate, AVAudioChannelLayout layout) { - final _ret = _lib._objc_msgSend_1185( - _id, - _lib._sel_initStandardFormatWithSampleRate_channelLayout_1, + final _ret = _objc_msgSend_791( + this.pointer, + _sel_initStandardFormatWithSampleRate_channelLayout_, sampleRate, - layout._id); - return AVAudioFormat._(_ret, _lib, retain: true, release: true); + layout.pointer); + return AVAudioFormat.castFromPointer(_ret, retain: true, release: true); } AVAudioFormat? initWithCommonFormat_sampleRate_channels_interleaved_( int format, double sampleRate, int channels, bool interleaved) { - final _ret = _lib._objc_msgSend_1186( - _id, - _lib._sel_initWithCommonFormat_sampleRate_channels_interleaved_1, + final _ret = _objc_msgSend_792( + this.pointer, + _sel_initWithCommonFormat_sampleRate_channels_interleaved_, format, sampleRate, channels, interleaved); return _ret.address == 0 ? null - : AVAudioFormat._(_ret, _lib, retain: true, release: true); + : AVAudioFormat.castFromPointer(_ret, retain: true, release: true); } AVAudioFormat initWithCommonFormat_sampleRate_interleaved_channelLayout_( @@ -77384,178 +39049,173 @@ class AVAudioFormat extends NSObject { double sampleRate, bool interleaved, AVAudioChannelLayout layout) { - final _ret = _lib._objc_msgSend_1187( - _id, - _lib._sel_initWithCommonFormat_sampleRate_interleaved_channelLayout_1, + final _ret = _objc_msgSend_793( + this.pointer, + _sel_initWithCommonFormat_sampleRate_interleaved_channelLayout_, format, sampleRate, interleaved, - layout._id); - return AVAudioFormat._(_ret, _lib, retain: true, release: true); + layout.pointer); + return AVAudioFormat.castFromPointer(_ret, retain: true, release: true); } - AVAudioFormat? initWithSettings_(NSDictionary settings) { - final _ret = - _lib._objc_msgSend_851(_id, _lib._sel_initWithSettings_1, settings._id); + AVAudioFormat? initWithSettings_(objc.NSDictionary settings) { + final _ret = _objc_msgSend_311( + this.pointer, _sel_initWithSettings_, settings.pointer); return _ret.address == 0 ? null - : AVAudioFormat._(_ret, _lib, retain: true, release: true); + : AVAudioFormat.castFromPointer(_ret, retain: true, release: true); } AVAudioFormat initWithCMAudioFormatDescription_( ffi.Pointer formatDescription) { - final _ret = _lib._objc_msgSend_1188( - _id, _lib._sel_initWithCMAudioFormatDescription_1, formatDescription); - return AVAudioFormat._(_ret, _lib, retain: true, release: true); + final _ret = _objc_msgSend_794(this.pointer, + _sel_initWithCMAudioFormatDescription_, formatDescription); + return AVAudioFormat.castFromPointer(_ret, retain: true, release: true); } - bool isEqual_(NSObject object) { - return _lib._objc_msgSend_0(_id, _lib._sel_isEqual_1, object._id); + bool isEqual_(objc.NSObject object) { + return _objc_msgSend_0(this.pointer, _sel_isEqual_, object.pointer); } bool get standard { - return _lib._objc_msgSend_12(_id, _lib._sel_isStandard1); + return _objc_msgSend_7(this.pointer, _sel_isStandard); } int get commonFormat { - return _lib._objc_msgSend_1189(_id, _lib._sel_commonFormat1); + return _objc_msgSend_795(this.pointer, _sel_commonFormat); } int get channelCount { - return _lib._objc_msgSend_1182(_id, _lib._sel_channelCount1); + return _objc_msgSend_788(this.pointer, _sel_channelCount); } double get sampleRate { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_sampleRate1) - : _lib._objc_msgSend_165(_id, _lib._sel_sampleRate1); + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_sampleRate) + : _objc_msgSend_115(this.pointer, _sel_sampleRate); } bool get interleaved { - return _lib._objc_msgSend_12(_id, _lib._sel_isInterleaved1); + return _objc_msgSend_7(this.pointer, _sel_isInterleaved); } ffi.Pointer get streamDescription { - return _lib._objc_msgSend_1190(_id, _lib._sel_streamDescription1); + return _objc_msgSend_796(this.pointer, _sel_streamDescription); } AVAudioChannelLayout? get channelLayout { - final _ret = _lib._objc_msgSend_1191(_id, _lib._sel_channelLayout1); + final _ret = _objc_msgSend_797(this.pointer, _sel_channelLayout); return _ret.address == 0 ? null - : AVAudioChannelLayout._(_ret, _lib, retain: true, release: true); + : AVAudioChannelLayout.castFromPointer(_ret, + retain: true, release: true); } - NSData? get magicCookie { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_magicCookie1); + objc.NSData? get magicCookie { + final _ret = _objc_msgSend_325(this.pointer, _sel_magicCookie); return _ret.address == 0 ? null - : NSData._(_ret, _lib, retain: true, release: true); + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - set magicCookie(NSData? value) { - return _lib._objc_msgSend_1021( - _id, _lib._sel_setMagicCookie_1, value?._id ?? ffi.nullptr); + set magicCookie(objc.NSData? value) { + return _objc_msgSend_571( + this.pointer, _sel_setMagicCookie_, value?.pointer ?? ffi.nullptr); } - NSDictionary get settings { - final _ret = _lib._objc_msgSend_181(_id, _lib._sel_settings1); - return NSDictionary._(_ret, _lib, retain: true, release: true); + objc.NSDictionary get settings { + final _ret = _objc_msgSend_112(this.pointer, _sel_settings); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } ffi.Pointer get formatDescription { - return _lib._objc_msgSend_1192(_id, _lib._sel_formatDescription1); + return _objc_msgSend_798(this.pointer, _sel_formatDescription); } @override AVAudioFormat init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return AVAudioFormat._(_ret, _lib, retain: true, release: true); + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return AVAudioFormat.castFromPointer(_ret, retain: true, release: true); } - static AVAudioFormat new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_AVAudioFormat1, _lib._sel_new1); - return AVAudioFormat._(_ret, _lib, retain: false, release: true); + static AVAudioFormat new1() { + final _ret = _objc_msgSend_40(_class_AVAudioFormat, _sel_new); + return AVAudioFormat.castFromPointer(_ret, retain: false, release: true); } - static AVAudioFormat allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_AVAudioFormat1, _lib._sel_allocWithZone_1, zone); - return AVAudioFormat._(_ret, _lib, retain: false, release: true); + static AVAudioFormat allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_AVAudioFormat, _sel_allocWithZone_, zone); + return AVAudioFormat.castFromPointer(_ret, retain: false, release: true); } - static AVAudioFormat alloc(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_AVAudioFormat1, _lib._sel_alloc1); - return AVAudioFormat._(_ret, _lib, retain: false, release: true); + static AVAudioFormat alloc() { + final _ret = _objc_msgSend_40(_class_AVAudioFormat, _sel_alloc); + return AVAudioFormat.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_AVAudioFormat1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_AVAudioFormat, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_AVAudioFormat1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_AVAudioFormat, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_AVAudioFormat1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_AVAudioFormat, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_AVAudioFormat1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_AVAudioFormat, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_AVAudioFormat1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_AVAudioFormat, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_AVAudioFormat1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_AVAudioFormat, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_AVAudioFormat1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_AVAudioFormat, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_AVAudioFormat1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_AVAudioFormat, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_AVAudioFormat1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_AVAudioFormat, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } +late final _class_AVAudioFormat = objc.getClass("AVAudioFormat"); + final class AudioStreamBasicDescription extends ffi.Struct { @ffi.Double() external double mSampleRate; @@ -77585,163 +39245,183 @@ final class AudioStreamBasicDescription extends ffi.Struct { external int mReserved; } -class AVAudioChannelLayout extends NSObject { - AVAudioChannelLayout._(ffi.Pointer id, AVFAudio lib, +late final _sel_initWithStreamDescription_ = + objc.registerName("initWithStreamDescription:"); +final _objc_msgSend_783 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class AVAudioChannelLayout extends objc.NSObject { + AVAudioChannelLayout._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [AVAudioChannelLayout] that points to the same underlying object as [other]. - static AVAudioChannelLayout castFrom(T other) { - return AVAudioChannelLayout._(other._id, other._lib, - retain: true, release: true); - } + /// Constructs a [AVAudioChannelLayout] that points to the same underlying object as [other]. + AVAudioChannelLayout.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [AVAudioChannelLayout] that wraps the given raw object pointer. - static AVAudioChannelLayout castFromPointer( - AVFAudio lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return AVAudioChannelLayout._(other, lib, retain: retain, release: release); - } + /// Constructs a [AVAudioChannelLayout] that wraps the given raw object pointer. + AVAudioChannelLayout.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); /// Returns whether [obj] is an instance of [AVAudioChannelLayout]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_AVAudioChannelLayout1); + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_AVAudioChannelLayout); } @override AVAudioChannelLayout init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return AVAudioChannelLayout._(_ret, _lib, retain: true, release: true); + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return AVAudioChannelLayout.castFromPointer(_ret, + retain: true, release: true); } AVAudioChannelLayout? initWithLayoutTag_(int layoutTag) { final _ret = - _lib._objc_msgSend_1178(_id, _lib._sel_initWithLayoutTag_1, layoutTag); + _objc_msgSend_784(this.pointer, _sel_initWithLayoutTag_, layoutTag); return _ret.address == 0 ? null - : AVAudioChannelLayout._(_ret, _lib, retain: true, release: true); + : AVAudioChannelLayout.castFromPointer(_ret, + retain: true, release: true); } AVAudioChannelLayout initWithLayout_(ffi.Pointer layout) { - final _ret = - _lib._objc_msgSend_1179(_id, _lib._sel_initWithLayout_1, layout); - return AVAudioChannelLayout._(_ret, _lib, retain: true, release: true); + final _ret = _objc_msgSend_785(this.pointer, _sel_initWithLayout_, layout); + return AVAudioChannelLayout.castFromPointer(_ret, + retain: true, release: true); } - bool isEqual_(NSObject object) { - return _lib._objc_msgSend_0(_id, _lib._sel_isEqual_1, object._id); + bool isEqual_(objc.NSObject object) { + return _objc_msgSend_0(this.pointer, _sel_isEqual_, object.pointer); } - static AVAudioChannelLayout layoutWithLayoutTag_( - AVFAudio _lib, int layoutTag) { - final _ret = _lib._objc_msgSend_1180(_lib._class_AVAudioChannelLayout1, - _lib._sel_layoutWithLayoutTag_1, layoutTag); - return AVAudioChannelLayout._(_ret, _lib, retain: true, release: true); + static AVAudioChannelLayout layoutWithLayoutTag_(int layoutTag) { + final _ret = _objc_msgSend_786( + _class_AVAudioChannelLayout, _sel_layoutWithLayoutTag_, layoutTag); + return AVAudioChannelLayout.castFromPointer(_ret, + retain: true, release: true); } static AVAudioChannelLayout layoutWithLayout_( - AVFAudio _lib, ffi.Pointer layout) { - final _ret = _lib._objc_msgSend_1179(_lib._class_AVAudioChannelLayout1, - _lib._sel_layoutWithLayout_1, layout); - return AVAudioChannelLayout._(_ret, _lib, retain: true, release: true); + ffi.Pointer layout) { + final _ret = _objc_msgSend_785( + _class_AVAudioChannelLayout, _sel_layoutWithLayout_, layout); + return AVAudioChannelLayout.castFromPointer(_ret, + retain: true, release: true); } int get layoutTag { - return _lib._objc_msgSend_214(_id, _lib._sel_layoutTag1); + return _objc_msgSend_704(this.pointer, _sel_layoutTag); } ffi.Pointer get layout { - return _lib._objc_msgSend_1181(_id, _lib._sel_layout1); + return _objc_msgSend_787(this.pointer, _sel_layout); } int get channelCount { - return _lib._objc_msgSend_1182(_id, _lib._sel_channelCount1); + return _objc_msgSend_788(this.pointer, _sel_channelCount); } - static AVAudioChannelLayout new1(AVFAudio _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_AVAudioChannelLayout1, _lib._sel_new1); - return AVAudioChannelLayout._(_ret, _lib, retain: false, release: true); + static AVAudioChannelLayout new1() { + final _ret = _objc_msgSend_40(_class_AVAudioChannelLayout, _sel_new); + return AVAudioChannelLayout.castFromPointer(_ret, + retain: false, release: true); } - static AVAudioChannelLayout allocWithZone_( - AVFAudio _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_AVAudioChannelLayout1, _lib._sel_allocWithZone_1, zone); - return AVAudioChannelLayout._(_ret, _lib, retain: false, release: true); + static AVAudioChannelLayout allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_AVAudioChannelLayout, _sel_allocWithZone_, zone); + return AVAudioChannelLayout.castFromPointer(_ret, + retain: false, release: true); } - static AVAudioChannelLayout alloc(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_AVAudioChannelLayout1, _lib._sel_alloc1); - return AVAudioChannelLayout._(_ret, _lib, retain: false, release: true); + static AVAudioChannelLayout alloc() { + final _ret = _objc_msgSend_40(_class_AVAudioChannelLayout, _sel_alloc); + return AVAudioChannelLayout.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - AVFAudio _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_AVAudioChannelLayout1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_AVAudioChannelLayout, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - AVFAudio _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_AVAudioChannelLayout1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_AVAudioChannelLayout, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(AVFAudio _lib) { - return _lib._objc_msgSend_12(_lib._class_AVAudioChannelLayout1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_AVAudioChannelLayout, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(AVFAudio _lib) { - return _lib._objc_msgSend_12( - _lib._class_AVAudioChannelLayout1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_AVAudioChannelLayout, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - AVFAudio _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_AVAudioChannelLayout1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_AVAudioChannelLayout, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - AVFAudio _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_AVAudioChannelLayout1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_AVAudioChannelLayout, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - AVFAudio _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_AVAudioChannelLayout1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_AVAudioChannelLayout, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_AVAudioChannelLayout1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_AVAudioChannelLayout, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(AVFAudio _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_AVAudioChannelLayout1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_AVAudioChannelLayout, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } +late final _class_AVAudioChannelLayout = objc.getClass("AVAudioChannelLayout"); +late final _sel_initWithLayoutTag_ = objc.registerName("initWithLayoutTag:"); +final _objc_msgSend_784 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int)>(); + final class AudioChannelLayout extends ffi.Struct { @ffi.UnsignedInt() external int mChannelLayoutTag; @@ -77804,6 +39484,92 @@ abstract class AudioChannelFlags { static const int kAudioChannelFlags_Meters = 4; } +late final _sel_initWithLayout_ = objc.registerName("initWithLayout:"); +final _objc_msgSend_785 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isEqual_ = objc.registerName("isEqual:"); +late final _sel_layoutWithLayoutTag_ = + objc.registerName("layoutWithLayoutTag:"); +final _objc_msgSend_786 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_layoutWithLayout_ = objc.registerName("layoutWithLayout:"); +late final _sel_layoutTag = objc.registerName("layoutTag"); +late final _sel_layout = objc.registerName("layout"); +final _objc_msgSend_787 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_channelCount = objc.registerName("channelCount"); +final _objc_msgSend_788 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Uint32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithStreamDescription_channelLayout_ = + objc.registerName("initWithStreamDescription:channelLayout:"); +final _objc_msgSend_789 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initStandardFormatWithSampleRate_channels_ = + objc.registerName("initStandardFormatWithSampleRate:channels:"); +final _objc_msgSend_790 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Double, ffi.Uint32)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, double, int)>(); +late final _sel_initStandardFormatWithSampleRate_channelLayout_ = + objc.registerName("initStandardFormatWithSampleRate:channelLayout:"); +final _objc_msgSend_791 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer)>(); + abstract class AVAudioCommonFormat { static const int AVAudioOtherFormat = 0; static const int AVAudioPCMFormatFloat32 = 1; @@ -77812,4 +39578,133 @@ abstract class AVAudioCommonFormat { static const int AVAudioPCMFormatInt32 = 4; } +late final _sel_initWithCommonFormat_sampleRate_channels_interleaved_ = + objc.registerName("initWithCommonFormat:sampleRate:channels:interleaved:"); +final _objc_msgSend_792 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Double, + ffi.Uint32, + ffi.Bool)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int, double, int, bool)>(); +late final _sel_initWithCommonFormat_sampleRate_interleaved_channelLayout_ = + objc.registerName( + "initWithCommonFormat:sampleRate:interleaved:channelLayout:"); +final _objc_msgSend_793 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Double, + ffi.Bool, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + int, + double, + bool, + ffi.Pointer)>(); +late final _sel_initWithSettings_ = objc.registerName("initWithSettings:"); + final class opaqueCMFormatDescription extends ffi.Opaque {} + +late final _sel_initWithCMAudioFormatDescription_ = + objc.registerName("initWithCMAudioFormatDescription:"); +final _objc_msgSend_794 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_isStandard = objc.registerName("isStandard"); +late final _sel_commonFormat = objc.registerName("commonFormat"); +final _objc_msgSend_795 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isInterleaved = objc.registerName("isInterleaved"); +late final _sel_streamDescription = objc.registerName("streamDescription"); +final _objc_msgSend_796 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_channelLayout = objc.registerName("channelLayout"); +final _objc_msgSend_797 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_magicCookie = objc.registerName("magicCookie"); +late final _sel_setMagicCookie_ = objc.registerName("setMagicCookie:"); +late final _sel_formatDescription = objc.registerName("formatDescription"); +final _objc_msgSend_798 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_799 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isMeteringEnabled = objc.registerName("isMeteringEnabled"); +late final _sel_setMeteringEnabled_ = objc.registerName("setMeteringEnabled:"); +late final _sel_updateMeters = objc.registerName("updateMeters"); +late final _sel_peakPowerForChannel_ = + objc.registerName("peakPowerForChannel:"); +final _objc_msgSend_800 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Float Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + double Function(ffi.Pointer, + ffi.Pointer, int)>(); +final _objc_msgSend_800Fpret = objc.msgSendFpretPointer + .cast< + ffi.NativeFunction< + ffi.Float Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + double Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_averagePowerForChannel_ = + objc.registerName("averagePowerForChannel:"); +late final _sel_channelAssignments = objc.registerName("channelAssignments"); +late final _sel_setChannelAssignments_ = + objc.registerName("setChannelAssignments:"); diff --git a/pkgs/ffigen/example/objective_c/config.yaml b/pkgs/ffigen/example/objective_c/config.yaml index 3a76517eb..799c2efa1 100644 --- a/pkgs/ffigen/example/objective_c/config.yaml +++ b/pkgs/ffigen/example/objective_c/config.yaml @@ -12,4 +12,8 @@ headers: entry-points: - '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioPlayer.h' preamble: | + // Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file + // for details. All rights reserved. Use of this source code is governed by a + // BSD-style license that can be found in the LICENSE file. + // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field, void_checks, annotate_overrides, no_leading_underscores_for_local_identifiers, library_private_types_in_public_api diff --git a/pkgs/ffigen/example/objective_c/play_audio.dart b/pkgs/ffigen/example/objective_c/play_audio.dart index 88deb74de..bca46b65a 100644 --- a/pkgs/ffigen/example/objective_c/play_audio.dart +++ b/pkgs/ffigen/example/objective_c/play_audio.dart @@ -3,19 +3,20 @@ // BSD-style license that can be found in the LICENSE file. import 'dart:ffi'; +import 'package:objective_c/objective_c.dart'; import 'avf_audio_bindings.dart'; const _dylibPath = '/System/Library/Frameworks/AVFAudio.framework/Versions/Current/AVFAudio'; void main(List args) async { - final lib = AVFAudio(DynamicLibrary.open(_dylibPath)); + DynamicLibrary.open(_dylibPath); for (final file in args) { - final fileStr = NSString(lib, file); + final fileStr = NSString(file); print('Loading $fileStr'); - final fileUrl = NSURL.fileURLWithPath_(lib, fileStr); + final fileUrl = NSURL.fileURLWithPath_(fileStr); final player = - AVAudioPlayer.alloc(lib).initWithContentsOfURL_error_(fileUrl, nullptr); + AVAudioPlayer.alloc().initWithContentsOfURL_error_(fileUrl, nullptr); if (player == null) { print('Failed to load audio'); continue; diff --git a/pkgs/ffigen/example/objective_c/pubspec.yaml b/pkgs/ffigen/example/objective_c/pubspec.yaml index a912faaff..6b687f598 100644 --- a/pkgs/ffigen/example/objective_c/pubspec.yaml +++ b/pkgs/ffigen/example/objective_c/pubspec.yaml @@ -9,7 +9,12 @@ environment: dependencies: ffi: ^2.0.1 + objective_c: ^0.0.1 dev_dependencies: ffigen: path: '../../' lints: ^2.0.0 + +dependency_overrides: + objective_c: + path: ../../../objective_c/ diff --git a/pkgs/ffigen/example/swift/config.yaml b/pkgs/ffigen/example/swift/config.yaml index 7f820baab..74c703df3 100644 --- a/pkgs/ffigen/example/swift/config.yaml +++ b/pkgs/ffigen/example/swift/config.yaml @@ -14,6 +14,10 @@ headers: entry-points: - 'third_party/swift_api.h' preamble: | + // Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file + // for details. All rights reserved. Use of this source code is governed by a + // BSD-style license that can be found in the LICENSE file. + // ignore_for_file: camel_case_types, non_constant_identifier_names // ignore_for_file: unused_element, unused_field, return_of_invalid_type // ignore_for_file: void_checks, annotate_overrides diff --git a/pkgs/ffigen/example/swift/example.dart b/pkgs/ffigen/example/swift/example.dart index c9dd5ba44..b6188ce8c 100644 --- a/pkgs/ffigen/example/swift/example.dart +++ b/pkgs/ffigen/example/swift/example.dart @@ -7,8 +7,8 @@ import 'swift_api_bindings.dart'; void main() { // TODO(https://github.com/dart-lang/ffigen/issues/443): Add a test for this. - final lib = SwiftLibrary(DynamicLibrary.open('libswiftapi.dylib')); - final object = SwiftClass.new1(lib); + DynamicLibrary.open('libswiftapi.dylib'); + final object = SwiftClass.new1(); print(object.sayHello()); print('field = ${object.someField}'); object.someField = 456; diff --git a/pkgs/ffigen/example/swift/pubspec.yaml b/pkgs/ffigen/example/swift/pubspec.yaml index de19bf246..737d3fb6c 100644 --- a/pkgs/ffigen/example/swift/pubspec.yaml +++ b/pkgs/ffigen/example/swift/pubspec.yaml @@ -9,7 +9,12 @@ environment: dependencies: ffi: ^2.0.1 + objective_c: ^0.0.1 dev_dependencies: ffigen: path: "../../" lints: ^2.0.0 + +dependency_overrides: + objective_c: + path: ../../../objective_c/ diff --git a/pkgs/ffigen/example/swift/swift_api_bindings.dart b/pkgs/ffigen/example/swift/swift_api_bindings.dart index 8be24b151..939ddd1aa 100644 --- a/pkgs/ffigen/example/swift/swift_api_bindings.dart +++ b/pkgs/ffigen/example/swift/swift_api_bindings.dart @@ -1,54136 +1,6311 @@ -// ignore_for_file: camel_case_types, non_constant_identifier_names -// ignore_for_file: unused_element, unused_field, return_of_invalid_type -// ignore_for_file: void_checks, annotate_overrides -// ignore_for_file: no_leading_underscores_for_local_identifiers -// ignore_for_file: library_private_types_in_public_api - -// AUTO GENERATED FILE, DO NOT EDIT. -// -// Generated by `package:ffigen`. -// ignore_for_file: type=lint -import 'dart:ffi' as ffi; -import 'package:ffi/ffi.dart' as pkg_ffi; - -/// Bindings for swift_api. -class SwiftLibrary { - /// Holds the symbol lookup function. - final ffi.Pointer Function(String symbolName) - _lookup; - - /// The symbols are looked up in [dynamicLibrary]. - SwiftLibrary(ffi.DynamicLibrary dynamicLibrary) - : _lookup = dynamicLibrary.lookup; - - /// The symbols are looked up with [lookup]. - SwiftLibrary.fromLookup( - ffi.Pointer Function(String symbolName) - lookup) - : _lookup = lookup; - - ffi.Pointer _registerName1(String name) { - final cstr = name.toNativeUtf8(); - final sel = _sel_registerName(cstr.cast()); - pkg_ffi.calloc.free(cstr); - return sel; - } - - ffi.Pointer _sel_registerName( - ffi.Pointer str, - ) { - return __sel_registerName( - str, - ); - } - - late final __sel_registerNamePtr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer)>>('sel_registerName'); - late final __sel_registerName = __sel_registerNamePtr - .asFunction Function(ffi.Pointer)>(); - - ffi.Pointer _getClass1(String name) { - final cstr = name.toNativeUtf8(); - final clazz = _objc_getClass(cstr.cast()); - pkg_ffi.calloc.free(cstr); - if (clazz == ffi.nullptr) { - throw Exception('Failed to load Objective-C class: $name'); - } - return clazz; - } - - ffi.Pointer _objc_getClass( - ffi.Pointer str, - ) { - return __objc_getClass( - str, - ); - } - - late final __objc_getClassPtr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer)>>('objc_getClass'); - late final __objc_getClass = __objc_getClassPtr - .asFunction Function(ffi.Pointer)>(); - - ffi.Pointer _objc_retain( - ffi.Pointer value, - ) { - return __objc_retain( - value, - ); - } - - late final __objc_retainPtr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer)>>('objc_retain'); - late final __objc_retain = __objc_retainPtr - .asFunction Function(ffi.Pointer)>(); - - void _objc_release( - ffi.Pointer value, - ) { - return __objc_release( - value, - ); - } - - late final __objc_releasePtr = - _lookup)>>( - 'objc_release'); - late final __objc_release = - __objc_releasePtr.asFunction)>(); - - late final _objc_releaseFinalizer2 = - ffi.NativeFinalizer(__objc_releasePtr.cast()); - late final _class_NSObject1 = _getClass1("NSObject"); - late final _sel_load1 = _registerName1("load"); - void _objc_msgSend_1( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1( - obj, - sel, - ); - } - - late final __objc_msgSend_1Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1 = __objc_msgSend_1Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initialize1 = _registerName1("initialize"); - late final _sel_init1 = _registerName1("init"); - instancetype _objc_msgSend_2( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_2( - obj, - sel, - ); - } - - late final __objc_msgSend_2Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_2 = __objc_msgSend_2Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_new1 = _registerName1("new"); - late final _sel_allocWithZone_1 = _registerName1("allocWithZone:"); - instancetype _objc_msgSend_3( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_NSZone> zone, - ) { - return __objc_msgSend_3( - obj, - sel, - zone, - ); - } - - late final __objc_msgSend_3Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_NSZone>)>>('objc_msgSend'); - late final __objc_msgSend_3 = __objc_msgSend_3Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_NSZone>)>(); - - late final _sel_alloc1 = _registerName1("alloc"); - late final _sel_dealloc1 = _registerName1("dealloc"); - late final _sel_finalize1 = _registerName1("finalize"); - late final _sel_copy1 = _registerName1("copy"); - late final _sel_mutableCopy1 = _registerName1("mutableCopy"); - late final _sel_copyWithZone_1 = _registerName1("copyWithZone:"); - late final _sel_mutableCopyWithZone_1 = - _registerName1("mutableCopyWithZone:"); - late final _sel_instancesRespondToSelector_1 = - _registerName1("instancesRespondToSelector:"); - bool _objc_msgSend_4( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ) { - return __objc_msgSend_4( - obj, - sel, - aSelector, - ); - } - - late final __objc_msgSend_4Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_4 = __objc_msgSend_4Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - bool _objc_msgSend_0( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer clazz, - ) { - return __objc_msgSend_0( - obj, - sel, - clazz, - ); - } - - late final __objc_msgSend_0Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_0 = __objc_msgSend_0Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isKindOfClass_1 = _registerName1("isKindOfClass:"); - late final _class_Protocol1 = _getClass1("Protocol"); - late final _sel_conformsToProtocol_1 = _registerName1("conformsToProtocol:"); - bool _objc_msgSend_5( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer protocol, - ) { - return __objc_msgSend_5( - obj, - sel, - protocol, - ); - } - - late final __objc_msgSend_5Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_5 = __objc_msgSend_5Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_methodForSelector_1 = _registerName1("methodForSelector:"); - ffi.Pointer> _objc_msgSend_6( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ) { - return __objc_msgSend_6( - obj, - sel, - aSelector, - ); - } - - late final __objc_msgSend_6Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer> Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_6 = __objc_msgSend_6Ptr.asFunction< - ffi.Pointer> Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_instanceMethodForSelector_1 = - _registerName1("instanceMethodForSelector:"); - late final _sel_doesNotRecognizeSelector_1 = - _registerName1("doesNotRecognizeSelector:"); - void _objc_msgSend_7( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ) { - return __objc_msgSend_7( - obj, - sel, - aSelector, - ); - } - - late final __objc_msgSend_7Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_7 = __objc_msgSend_7Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_forwardingTargetForSelector_1 = - _registerName1("forwardingTargetForSelector:"); - ffi.Pointer _objc_msgSend_8( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ) { - return __objc_msgSend_8( - obj, - sel, - aSelector, - ); - } - - late final __objc_msgSend_8Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_8 = __objc_msgSend_8Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSInvocation1 = _getClass1("NSInvocation"); - late final _class_NSMethodSignature1 = _getClass1("NSMethodSignature"); - late final _sel_signatureWithObjCTypes_1 = - _registerName1("signatureWithObjCTypes:"); - ffi.Pointer _objc_msgSend_9( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer types, - ) { - return __objc_msgSend_9( - obj, - sel, - types, - ); - } - - late final __objc_msgSend_9Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_9 = __objc_msgSend_9Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_numberOfArguments1 = _registerName1("numberOfArguments"); - int _objc_msgSend_10( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_10( - obj, - sel, - ); - } - - late final __objc_msgSend_10Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_10 = __objc_msgSend_10Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_getArgumentTypeAtIndex_1 = - _registerName1("getArgumentTypeAtIndex:"); - ffi.Pointer _objc_msgSend_11( - ffi.Pointer obj, - ffi.Pointer sel, - int idx, - ) { - return __objc_msgSend_11( - obj, - sel, - idx, - ); - } - - late final __objc_msgSend_11Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_11 = __objc_msgSend_11Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_frameLength1 = _registerName1("frameLength"); - late final _sel_isOneway1 = _registerName1("isOneway"); - bool _objc_msgSend_12( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_12( - obj, - sel, - ); - } - - late final __objc_msgSend_12Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_12 = __objc_msgSend_12Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_methodReturnType1 = _registerName1("methodReturnType"); - ffi.Pointer _objc_msgSend_13( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_13( - obj, - sel, - ); - } - - late final __objc_msgSend_13Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_13 = __objc_msgSend_13Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_methodReturnLength1 = _registerName1("methodReturnLength"); - late final _sel_cancelPreviousPerformRequestsWithTarget_selector_object_1 = - _registerName1( - "cancelPreviousPerformRequestsWithTarget:selector:object:"); - void _objc_msgSend_14( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aTarget, - ffi.Pointer aSelector, - ffi.Pointer anArgument, - ) { - return __objc_msgSend_14( - obj, - sel, - aTarget, - aSelector, - anArgument, - ); - } - - late final __objc_msgSend_14Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_14 = __objc_msgSend_14Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_cancelPreviousPerformRequestsWithTarget_1 = - _registerName1("cancelPreviousPerformRequestsWithTarget:"); - void _objc_msgSend_15( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aTarget, - ) { - return __objc_msgSend_15( - obj, - sel, - aTarget, - ); - } - - late final __objc_msgSend_15Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_15 = __objc_msgSend_15Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_accessInstanceVariablesDirectly1 = - _registerName1("accessInstanceVariablesDirectly"); - late final _sel_useStoredAccessor1 = _registerName1("useStoredAccessor"); - late final _class_NSSet1 = _getClass1("NSSet"); - late final _sel_count1 = _registerName1("count"); - late final _sel_member_1 = _registerName1("member:"); - ffi.Pointer _objc_msgSend_16( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer object, - ) { - return __objc_msgSend_16( - obj, - sel, - object, - ); - } - - late final __objc_msgSend_16Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_16 = __objc_msgSend_16Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSEnumerator1 = _getClass1("NSEnumerator"); - late final _sel_nextObject1 = _registerName1("nextObject"); - ffi.Pointer _objc_msgSend_17( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_17( - obj, - sel, - ); - } - - late final __objc_msgSend_17Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_17 = __objc_msgSend_17Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_allObjects1 = _registerName1("allObjects"); - late final _class_NSString1 = _getClass1("NSString"); - late final _sel_length1 = _registerName1("length"); - late final _sel_characterAtIndex_1 = _registerName1("characterAtIndex:"); - int _objc_msgSend_18( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_18( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_18Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedShort Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_18 = __objc_msgSend_18Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _class_NSCoder1 = _getClass1("NSCoder"); - late final _sel_encodeValueOfObjCType_at_1 = - _registerName1("encodeValueOfObjCType:at:"); - void _objc_msgSend_19( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer type, - ffi.Pointer addr, - ) { - return __objc_msgSend_19( - obj, - sel, - type, - addr, - ); - } - - late final __objc_msgSend_19Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_19 = __objc_msgSend_19Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSData1 = _getClass1("NSData"); - late final _sel_bytes1 = _registerName1("bytes"); - ffi.Pointer _objc_msgSend_20( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_20( - obj, - sel, - ); - } - - late final __objc_msgSend_20Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_20 = __objc_msgSend_20Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_description1 = _registerName1("description"); - ffi.Pointer _objc_msgSend_21( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_21( - obj, - sel, - ); - } - - late final __objc_msgSend_21Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_21 = __objc_msgSend_21Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_getBytes_length_1 = _registerName1("getBytes:length:"); - void _objc_msgSend_22( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - int length, - ) { - return __objc_msgSend_22( - obj, - sel, - buffer, - length, - ); - } - - late final __objc_msgSend_22Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_22 = __objc_msgSend_22Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_getBytes_range_1 = _registerName1("getBytes:range:"); - void _objc_msgSend_23( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - _NSRange range, - ) { - return __objc_msgSend_23( - obj, - sel, - buffer, - range, - ); - } - - late final __objc_msgSend_23Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_23 = __objc_msgSend_23Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - late final _sel_isEqualToData_1 = _registerName1("isEqualToData:"); - bool _objc_msgSend_24( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_24( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_24Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_24 = __objc_msgSend_24Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_subdataWithRange_1 = _registerName1("subdataWithRange:"); - ffi.Pointer _objc_msgSend_25( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_25( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_25Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_25 = __objc_msgSend_25Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_writeToFile_atomically_1 = - _registerName1("writeToFile:atomically:"); - bool _objc_msgSend_26( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool useAuxiliaryFile, - ) { - return __objc_msgSend_26( - obj, - sel, - path, - useAuxiliaryFile, - ); - } - - late final __objc_msgSend_26Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_26 = __objc_msgSend_26Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _class_NSURL1 = _getClass1("NSURL"); - late final _sel_initWithScheme_host_path_1 = - _registerName1("initWithScheme:host:path:"); - instancetype _objc_msgSend_27( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer scheme, - ffi.Pointer host, - ffi.Pointer path, - ) { - return __objc_msgSend_27( - obj, - sel, - scheme, - host, - path, - ); - } - - late final __objc_msgSend_27Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_27 = __objc_msgSend_27Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initFileURLWithPath_isDirectory_relativeToURL_1 = - _registerName1("initFileURLWithPath:isDirectory:relativeToURL:"); - instancetype _objc_msgSend_28( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool isDir, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_28( - obj, - sel, - path, - isDir, - baseURL, - ); - } - - late final __objc_msgSend_28Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_28 = __objc_msgSend_28Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool, ffi.Pointer)>(); - - late final _sel_initFileURLWithPath_relativeToURL_1 = - _registerName1("initFileURLWithPath:relativeToURL:"); - instancetype _objc_msgSend_29( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_29( - obj, - sel, - path, - baseURL, - ); - } - - late final __objc_msgSend_29Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_29 = __objc_msgSend_29Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initFileURLWithPath_isDirectory_1 = - _registerName1("initFileURLWithPath:isDirectory:"); - instancetype _objc_msgSend_30( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool isDir, - ) { - return __objc_msgSend_30( - obj, - sel, - path, - isDir, - ); - } - - late final __objc_msgSend_30Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_30 = __objc_msgSend_30Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_initFileURLWithPath_1 = - _registerName1("initFileURLWithPath:"); - instancetype _objc_msgSend_31( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_31( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_31Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_31 = __objc_msgSend_31Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_fileURLWithPath_isDirectory_relativeToURL_1 = - _registerName1("fileURLWithPath:isDirectory:relativeToURL:"); - ffi.Pointer _objc_msgSend_32( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool isDir, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_32( - obj, - sel, - path, - isDir, - baseURL, - ); - } - - late final __objc_msgSend_32Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_32 = __objc_msgSend_32Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer)>(); - - late final _sel_fileURLWithPath_relativeToURL_1 = - _registerName1("fileURLWithPath:relativeToURL:"); - ffi.Pointer _objc_msgSend_33( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_33( - obj, - sel, - path, - baseURL, - ); - } - - late final __objc_msgSend_33Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_33 = __objc_msgSend_33Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_fileURLWithPath_isDirectory_1 = - _registerName1("fileURLWithPath:isDirectory:"); - ffi.Pointer _objc_msgSend_34( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool isDir, - ) { - return __objc_msgSend_34( - obj, - sel, - path, - isDir, - ); - } - - late final __objc_msgSend_34Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_34 = __objc_msgSend_34Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_fileURLWithPath_1 = _registerName1("fileURLWithPath:"); - ffi.Pointer _objc_msgSend_35( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_35( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_35Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_35 = __objc_msgSend_35Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1 = - _registerName1( - "initFileURLWithFileSystemRepresentation:isDirectory:relativeToURL:"); - instancetype _objc_msgSend_36( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool isDir, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_36( - obj, - sel, - path, - isDir, - baseURL, - ); - } - - late final __objc_msgSend_36Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_36 = __objc_msgSend_36Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool, ffi.Pointer)>(); - - late final _sel_fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1 = - _registerName1( - "fileURLWithFileSystemRepresentation:isDirectory:relativeToURL:"); - ffi.Pointer _objc_msgSend_37( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool isDir, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_37( - obj, - sel, - path, - isDir, - baseURL, - ); - } - - late final __objc_msgSend_37Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_37 = __objc_msgSend_37Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer)>(); - - late final _sel_initWithString_1 = _registerName1("initWithString:"); - instancetype _objc_msgSend_38( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer URLString, - ) { - return __objc_msgSend_38( - obj, - sel, - URLString, - ); - } - - late final __objc_msgSend_38Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_38 = __objc_msgSend_38Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithString_relativeToURL_1 = - _registerName1("initWithString:relativeToURL:"); - instancetype _objc_msgSend_39( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer URLString, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_39( - obj, - sel, - URLString, - baseURL, - ); - } - - late final __objc_msgSend_39Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_39 = __objc_msgSend_39Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_URLWithString_1 = _registerName1("URLWithString:"); - late final _sel_URLWithString_relativeToURL_1 = - _registerName1("URLWithString:relativeToURL:"); - late final _sel_initWithString_encodingInvalidCharacters_1 = - _registerName1("initWithString:encodingInvalidCharacters:"); - instancetype _objc_msgSend_40( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer URLString, - bool encodingInvalidCharacters, - ) { - return __objc_msgSend_40( - obj, - sel, - URLString, - encodingInvalidCharacters, - ); - } - - late final __objc_msgSend_40Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_40 = __objc_msgSend_40Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_URLWithString_encodingInvalidCharacters_1 = - _registerName1("URLWithString:encodingInvalidCharacters:"); - late final _sel_initWithDataRepresentation_relativeToURL_1 = - _registerName1("initWithDataRepresentation:relativeToURL:"); - instancetype _objc_msgSend_41( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_41( - obj, - sel, - data, - baseURL, - ); - } - - late final __objc_msgSend_41Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_41 = __objc_msgSend_41Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_URLWithDataRepresentation_relativeToURL_1 = - _registerName1("URLWithDataRepresentation:relativeToURL:"); - ffi.Pointer _objc_msgSend_42( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ffi.Pointer baseURL, - ) { - return __objc_msgSend_42( - obj, - sel, - data, - baseURL, - ); - } - - late final __objc_msgSend_42Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_42 = __objc_msgSend_42Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initAbsoluteURLWithDataRepresentation_relativeToURL_1 = - _registerName1("initAbsoluteURLWithDataRepresentation:relativeToURL:"); - late final _sel_absoluteURLWithDataRepresentation_relativeToURL_1 = - _registerName1("absoluteURLWithDataRepresentation:relativeToURL:"); - late final _sel_dataRepresentation1 = _registerName1("dataRepresentation"); - ffi.Pointer _objc_msgSend_43( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_43( - obj, - sel, - ); - } - - late final __objc_msgSend_43Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_43 = __objc_msgSend_43Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_absoluteString1 = _registerName1("absoluteString"); - ffi.Pointer _objc_msgSend_44( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_44( - obj, - sel, - ); - } - - late final __objc_msgSend_44Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_44 = __objc_msgSend_44Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_relativeString1 = _registerName1("relativeString"); - late final _sel_baseURL1 = _registerName1("baseURL"); - ffi.Pointer _objc_msgSend_45( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_45( - obj, - sel, - ); - } - - late final __objc_msgSend_45Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_45 = __objc_msgSend_45Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_absoluteURL1 = _registerName1("absoluteURL"); - late final _sel_scheme1 = _registerName1("scheme"); - late final _sel_resourceSpecifier1 = _registerName1("resourceSpecifier"); - late final _sel_host1 = _registerName1("host"); - late final _class_NSNumber1 = _getClass1("NSNumber"); - late final _class_NSValue1 = _getClass1("NSValue"); - late final _sel_getValue_size_1 = _registerName1("getValue:size:"); - late final _sel_objCType1 = _registerName1("objCType"); - late final _sel_initWithBytes_objCType_1 = - _registerName1("initWithBytes:objCType:"); - instancetype _objc_msgSend_46( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer type, - ) { - return __objc_msgSend_46( - obj, - sel, - value, - type, - ); - } - - late final __objc_msgSend_46Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_46 = __objc_msgSend_46Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithCoder_1 = _registerName1("initWithCoder:"); - instancetype _objc_msgSend_47( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer coder, - ) { - return __objc_msgSend_47( - obj, - sel, - coder, - ); - } - - late final __objc_msgSend_47Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_47 = __objc_msgSend_47Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_valueWithBytes_objCType_1 = - _registerName1("valueWithBytes:objCType:"); - ffi.Pointer _objc_msgSend_48( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer type, - ) { - return __objc_msgSend_48( - obj, - sel, - value, - type, - ); - } - - late final __objc_msgSend_48Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_48 = __objc_msgSend_48Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_value_withObjCType_1 = _registerName1("value:withObjCType:"); - late final _sel_valueWithNonretainedObject_1 = - _registerName1("valueWithNonretainedObject:"); - ffi.Pointer _objc_msgSend_49( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - ) { - return __objc_msgSend_49( - obj, - sel, - anObject, - ); - } - - late final __objc_msgSend_49Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_49 = __objc_msgSend_49Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_nonretainedObjectValue1 = - _registerName1("nonretainedObjectValue"); - late final _sel_valueWithPointer_1 = _registerName1("valueWithPointer:"); - ffi.Pointer _objc_msgSend_50( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer pointer, - ) { - return __objc_msgSend_50( - obj, - sel, - pointer, - ); - } - - late final __objc_msgSend_50Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_50 = __objc_msgSend_50Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_pointerValue1 = _registerName1("pointerValue"); - late final _sel_isEqualToValue_1 = _registerName1("isEqualToValue:"); - bool _objc_msgSend_51( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_51( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_51Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_51 = __objc_msgSend_51Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_getValue_1 = _registerName1("getValue:"); - void _objc_msgSend_52( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_52( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_52Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_52 = __objc_msgSend_52Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_valueWithRange_1 = _registerName1("valueWithRange:"); - ffi.Pointer _objc_msgSend_53( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_53( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_53Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_53 = __objc_msgSend_53Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_rangeValue1 = _registerName1("rangeValue"); - late final _objc_msgSend_useVariants1 = ffi.Abi.current() == ffi.Abi.iosX64 || - ffi.Abi.current() == ffi.Abi.macosX64; - _NSRange _objc_msgSend_54( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_54( - obj, - sel, - ); - } - - late final __objc_msgSend_54Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_54 = __objc_msgSend_54Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_54_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_54_stret( - stret, - obj, - sel, - ); - } - - late final __objc_msgSend_54_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_54_stret = __objc_msgSend_54_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_valueWithPoint_1 = _registerName1("valueWithPoint:"); - ffi.Pointer _objc_msgSend_55( - ffi.Pointer obj, - ffi.Pointer sel, - CGPoint point, - ) { - return __objc_msgSend_55( - obj, - sel, - point, - ); - } - - late final __objc_msgSend_55Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, CGPoint)>>('objc_msgSend'); - late final __objc_msgSend_55 = __objc_msgSend_55Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, CGPoint)>(); - - late final _sel_valueWithSize_1 = _registerName1("valueWithSize:"); - ffi.Pointer _objc_msgSend_56( - ffi.Pointer obj, - ffi.Pointer sel, - CGSize size, - ) { - return __objc_msgSend_56( - obj, - sel, - size, - ); - } - - late final __objc_msgSend_56Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, CGSize)>>('objc_msgSend'); - late final __objc_msgSend_56 = __objc_msgSend_56Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, CGSize)>(); - - late final _sel_valueWithRect_1 = _registerName1("valueWithRect:"); - ffi.Pointer _objc_msgSend_57( - ffi.Pointer obj, - ffi.Pointer sel, - CGRect rect, - ) { - return __objc_msgSend_57( - obj, - sel, - rect, - ); - } - - late final __objc_msgSend_57Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, CGRect)>>('objc_msgSend'); - late final __objc_msgSend_57 = __objc_msgSend_57Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, CGRect)>(); - - late final _sel_valueWithEdgeInsets_1 = - _registerName1("valueWithEdgeInsets:"); - ffi.Pointer _objc_msgSend_58( - ffi.Pointer obj, - ffi.Pointer sel, - NSEdgeInsets insets, - ) { - return __objc_msgSend_58( - obj, - sel, - insets, - ); - } - - late final __objc_msgSend_58Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, NSEdgeInsets)>>('objc_msgSend'); - late final __objc_msgSend_58 = __objc_msgSend_58Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, NSEdgeInsets)>(); - - late final _sel_pointValue1 = _registerName1("pointValue"); - CGPoint _objc_msgSend_59( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_59( - obj, - sel, - ); - } - - late final __objc_msgSend_59Ptr = _lookup< - ffi.NativeFunction< - CGPoint Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_59 = __objc_msgSend_59Ptr.asFunction< - CGPoint Function(ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_59_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_59_stret( - stret, - obj, - sel, - ); - } - - late final __objc_msgSend_59_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_59_stret = __objc_msgSend_59_stretPtr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_sizeValue1 = _registerName1("sizeValue"); - CGSize _objc_msgSend_60( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_60( - obj, - sel, - ); - } - - late final __objc_msgSend_60Ptr = _lookup< - ffi.NativeFunction< - CGSize Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_60 = __objc_msgSend_60Ptr.asFunction< - CGSize Function(ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_60_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_60_stret( - stret, - obj, - sel, - ); - } - - late final __objc_msgSend_60_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_60_stret = __objc_msgSend_60_stretPtr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_rectValue1 = _registerName1("rectValue"); - CGRect _objc_msgSend_61( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_61( - obj, - sel, - ); - } - - late final __objc_msgSend_61Ptr = _lookup< - ffi.NativeFunction< - CGRect Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_61 = __objc_msgSend_61Ptr.asFunction< - CGRect Function(ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_61_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_61_stret( - stret, - obj, - sel, - ); - } - - late final __objc_msgSend_61_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_61_stret = __objc_msgSend_61_stretPtr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_edgeInsetsValue1 = _registerName1("edgeInsetsValue"); - NSEdgeInsets _objc_msgSend_62( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_62( - obj, - sel, - ); - } - - late final __objc_msgSend_62Ptr = _lookup< - ffi.NativeFunction< - NSEdgeInsets Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_62 = __objc_msgSend_62Ptr.asFunction< - NSEdgeInsets Function(ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_62_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_62_stret( - stret, - obj, - sel, - ); - } - - late final __objc_msgSend_62_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_62_stret = __objc_msgSend_62_stretPtr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_keyPathsForValuesAffectingValueForKey_1 = - _registerName1("keyPathsForValuesAffectingValueForKey:"); - ffi.Pointer _objc_msgSend_63( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_63( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_63Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_63 = __objc_msgSend_63Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_automaticallyNotifiesObserversForKey_1 = - _registerName1("automaticallyNotifiesObserversForKey:"); - bool _objc_msgSend_64( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_64( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_64Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_64 = __objc_msgSend_64Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSArray1 = _getClass1("NSArray"); - late final _sel_objectAtIndex_1 = _registerName1("objectAtIndex:"); - ffi.Pointer _objc_msgSend_65( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_65( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_65Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_65 = __objc_msgSend_65Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithObjects_count_1 = - _registerName1("initWithObjects:count:"); - instancetype _objc_msgSend_66( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> objects, - int cnt, - ) { - return __objc_msgSend_66( - obj, - sel, - objects, - cnt, - ); - } - - late final __objc_msgSend_66Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_66 = __objc_msgSend_66Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>, int)>(); - - late final _sel_arrayByAddingObject_1 = - _registerName1("arrayByAddingObject:"); - ffi.Pointer _objc_msgSend_67( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - ) { - return __objc_msgSend_67( - obj, - sel, - anObject, - ); - } - - late final __objc_msgSend_67Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_67 = __objc_msgSend_67Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_arrayByAddingObjectsFromArray_1 = - _registerName1("arrayByAddingObjectsFromArray:"); - ffi.Pointer _objc_msgSend_68( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherArray, - ) { - return __objc_msgSend_68( - obj, - sel, - otherArray, - ); - } - - late final __objc_msgSend_68Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_68 = __objc_msgSend_68Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_componentsJoinedByString_1 = - _registerName1("componentsJoinedByString:"); - ffi.Pointer _objc_msgSend_69( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer separator, - ) { - return __objc_msgSend_69( - obj, - sel, - separator, - ); - } - - late final __objc_msgSend_69Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_69 = __objc_msgSend_69Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_containsObject_1 = _registerName1("containsObject:"); - late final _sel_descriptionWithLocale_1 = - _registerName1("descriptionWithLocale:"); - ffi.Pointer _objc_msgSend_70( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer locale, - ) { - return __objc_msgSend_70( - obj, - sel, - locale, - ); - } - - late final __objc_msgSend_70Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_70 = __objc_msgSend_70Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_descriptionWithLocale_indent_1 = - _registerName1("descriptionWithLocale:indent:"); - ffi.Pointer _objc_msgSend_71( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer locale, - int level, - ) { - return __objc_msgSend_71( - obj, - sel, - locale, - level, - ); - } - - late final __objc_msgSend_71Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_71 = __objc_msgSend_71Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_firstObjectCommonWithArray_1 = - _registerName1("firstObjectCommonWithArray:"); - ffi.Pointer _objc_msgSend_72( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherArray, - ) { - return __objc_msgSend_72( - obj, - sel, - otherArray, - ); - } - - late final __objc_msgSend_72Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_72 = __objc_msgSend_72Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_getObjects_range_1 = _registerName1("getObjects:range:"); - void _objc_msgSend_73( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> objects, - _NSRange range, - ) { - return __objc_msgSend_73( - obj, - sel, - objects, - range, - ); - } - - late final __objc_msgSend_73Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_73 = __objc_msgSend_73Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>, _NSRange)>(); - - late final _sel_indexOfObject_1 = _registerName1("indexOfObject:"); - int _objc_msgSend_74( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - ) { - return __objc_msgSend_74( - obj, - sel, - anObject, - ); - } - - late final __objc_msgSend_74Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_74 = __objc_msgSend_74Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_indexOfObject_inRange_1 = - _registerName1("indexOfObject:inRange:"); - int _objc_msgSend_75( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - _NSRange range, - ) { - return __objc_msgSend_75( - obj, - sel, - anObject, - range, - ); - } - - late final __objc_msgSend_75Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_75 = __objc_msgSend_75Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - late final _sel_indexOfObjectIdenticalTo_1 = - _registerName1("indexOfObjectIdenticalTo:"); - late final _sel_indexOfObjectIdenticalTo_inRange_1 = - _registerName1("indexOfObjectIdenticalTo:inRange:"); - late final _sel_isEqualToArray_1 = _registerName1("isEqualToArray:"); - bool _objc_msgSend_76( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherArray, - ) { - return __objc_msgSend_76( - obj, - sel, - otherArray, - ); - } - - late final __objc_msgSend_76Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_76 = __objc_msgSend_76Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_firstObject1 = _registerName1("firstObject"); - late final _sel_lastObject1 = _registerName1("lastObject"); - late final _sel_objectEnumerator1 = _registerName1("objectEnumerator"); - ffi.Pointer _objc_msgSend_77( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_77( - obj, - sel, - ); - } - - late final __objc_msgSend_77Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_77 = __objc_msgSend_77Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_reverseObjectEnumerator1 = - _registerName1("reverseObjectEnumerator"); - late final _sel_sortedArrayHint1 = _registerName1("sortedArrayHint"); - late final _sel_sortedArrayUsingFunction_context_1 = - _registerName1("sortedArrayUsingFunction:context:"); - ffi.Pointer _objc_msgSend_78( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>> - comparator, - ffi.Pointer context, - ) { - return __objc_msgSend_78( - obj, - sel, - comparator, - context, - ); - } - - late final __objc_msgSend_78Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_78 = __objc_msgSend_78Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>, - ffi.Pointer)>(); - - late final _sel_sortedArrayUsingFunction_context_hint_1 = - _registerName1("sortedArrayUsingFunction:context:hint:"); - ffi.Pointer _objc_msgSend_79( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>> - comparator, - ffi.Pointer context, - ffi.Pointer hint, - ) { - return __objc_msgSend_79( - obj, - sel, - comparator, - context, - hint, - ); - } - - late final __objc_msgSend_79Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_79 = __objc_msgSend_79Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_sortedArrayUsingSelector_1 = - _registerName1("sortedArrayUsingSelector:"); - ffi.Pointer _objc_msgSend_80( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer comparator, - ) { - return __objc_msgSend_80( - obj, - sel, - comparator, - ); - } - - late final __objc_msgSend_80Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_80 = __objc_msgSend_80Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_subarrayWithRange_1 = _registerName1("subarrayWithRange:"); - ffi.Pointer _objc_msgSend_81( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_81( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_81Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_81 = __objc_msgSend_81Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _class_NSError1 = _getClass1("NSError"); - late final _sel_initWithDomain_code_userInfo_1 = - _registerName1("initWithDomain:code:userInfo:"); - instancetype _objc_msgSend_82( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer domain, - int code, - ffi.Pointer dict, - ) { - return __objc_msgSend_82( - obj, - sel, - domain, - code, - dict, - ); - } - - late final __objc_msgSend_82Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_82 = __objc_msgSend_82Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_errorWithDomain_code_userInfo_1 = - _registerName1("errorWithDomain:code:userInfo:"); - late final _sel_domain1 = _registerName1("domain"); - late final _sel_code1 = _registerName1("code"); - int _objc_msgSend_83( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_83( - obj, - sel, - ); - } - - late final __objc_msgSend_83Ptr = _lookup< - ffi.NativeFunction< - ffi.Long Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_83 = __objc_msgSend_83Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_userInfo1 = _registerName1("userInfo"); - late final _sel_localizedDescription1 = - _registerName1("localizedDescription"); - late final _sel_localizedFailureReason1 = - _registerName1("localizedFailureReason"); - late final _sel_localizedRecoverySuggestion1 = - _registerName1("localizedRecoverySuggestion"); - late final _sel_localizedRecoveryOptions1 = - _registerName1("localizedRecoveryOptions"); - ffi.Pointer _objc_msgSend_84( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_84( - obj, - sel, - ); - } - - late final __objc_msgSend_84Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_84 = __objc_msgSend_84Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_recoveryAttempter1 = _registerName1("recoveryAttempter"); - late final _sel_helpAnchor1 = _registerName1("helpAnchor"); - late final _sel_underlyingErrors1 = _registerName1("underlyingErrors"); - ffi.Pointer _objc_msgSend_85( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_85( - obj, - sel, - ); - } - - late final __objc_msgSend_85Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_85 = __objc_msgSend_85Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - ffi.Pointer<_ObjCBlockDesc> _newBlockDesc1() { - final d = - pkg_ffi.calloc.allocate<_ObjCBlockDesc>(ffi.sizeOf<_ObjCBlockDesc>()); - d.ref.reserved = 0; - d.ref.size = ffi.sizeOf<_ObjCBlock>(); - d.ref.copy_helper = ffi.nullptr; - d.ref.dispose_helper = ffi.nullptr; - d.ref.signature = ffi.nullptr; - return d; - } - - late final _objc_block_desc1 = _newBlockDesc1(); - late final _objc_concrete_global_block1 = - _lookup('_NSConcreteGlobalBlock'); - ffi.Pointer<_ObjCBlock> _newBlock1( - ffi.Pointer invoke, ffi.Pointer target) { - final b = pkg_ffi.calloc.allocate<_ObjCBlock>(ffi.sizeOf<_ObjCBlock>()); - b.ref.isa = _objc_concrete_global_block1; - b.ref.flags = 0; - b.ref.reserved = 0; - b.ref.invoke = invoke; - b.ref.target = target; - b.ref.descriptor = _objc_block_desc1; - final copy = _Block_copy(b.cast()).cast<_ObjCBlock>(); - pkg_ffi.calloc.free(b); - return copy; - } - - ffi.Pointer _Block_copy( - ffi.Pointer value, - ) { - return __Block_copy( - value, - ); - } - - late final __Block_copyPtr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer)>>('_Block_copy'); - late final __Block_copy = __Block_copyPtr - .asFunction Function(ffi.Pointer)>(); - - void _Block_release( - ffi.Pointer value, - ) { - return __Block_release( - value, - ); - } - - late final __Block_releasePtr = - _lookup)>>( - '_Block_release'); - late final __Block_release = - __Block_releasePtr.asFunction)>(); - - late final _objc_releaseFinalizer11 = - ffi.NativeFinalizer(__Block_releasePtr.cast()); - late final _sel_setUserInfoValueProviderForDomain_provider_1 = - _registerName1("setUserInfoValueProviderForDomain:provider:"); - void _objc_msgSend_86( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer errorDomain, - ffi.Pointer<_ObjCBlock> provider, - ) { - return __objc_msgSend_86( - obj, - sel, - errorDomain, - provider, - ); - } - - late final __objc_msgSend_86Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_86 = __objc_msgSend_86Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_userInfoValueProviderForDomain_1 = - _registerName1("userInfoValueProviderForDomain:"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_87( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer err, - ffi.Pointer userInfoKey, - ffi.Pointer errorDomain, - ) { - return __objc_msgSend_87( - obj, - sel, - err, - userInfoKey, - errorDomain, - ); - } - - late final __objc_msgSend_87Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_87 = __objc_msgSend_87Ptr.asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setKeys_triggerChangeNotificationsForDependentKey_1 = - _registerName1("setKeys:triggerChangeNotificationsForDependentKey:"); - void _objc_msgSend_88( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keys, - ffi.Pointer dependentKey, - ) { - return __objc_msgSend_88( - obj, - sel, - keys, - dependentKey, - ); - } - - late final __objc_msgSend_88Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_88 = __objc_msgSend_88Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_classFallbacksForKeyedArchiver1 = - _registerName1("classFallbacksForKeyedArchiver"); - late final _sel_classForKeyedUnarchiver1 = - _registerName1("classForKeyedUnarchiver"); - late final _sel_writeToURL_error_1 = _registerName1("writeToURL:error:"); - bool _objc_msgSend_89( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer> error, - ) { - return __objc_msgSend_89( - obj, - sel, - url, - error, - ); - } - - late final __objc_msgSend_89Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_89 = __objc_msgSend_89Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_makeObjectsPerformSelector_1 = - _registerName1("makeObjectsPerformSelector:"); - late final _sel_makeObjectsPerformSelector_withObject_1 = - _registerName1("makeObjectsPerformSelector:withObject:"); - void _objc_msgSend_90( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer argument, - ) { - return __objc_msgSend_90( - obj, - sel, - aSelector, - argument, - ); - } - - late final __objc_msgSend_90Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_90 = __objc_msgSend_90Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSIndexSet1 = _getClass1("NSIndexSet"); - late final _sel_indexSet1 = _registerName1("indexSet"); - late final _sel_indexSetWithIndex_1 = _registerName1("indexSetWithIndex:"); - late final _sel_indexSetWithIndexesInRange_1 = - _registerName1("indexSetWithIndexesInRange:"); - instancetype _objc_msgSend_91( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_91( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_91Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_91 = __objc_msgSend_91Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_initWithIndexesInRange_1 = - _registerName1("initWithIndexesInRange:"); - late final _sel_initWithIndexSet_1 = _registerName1("initWithIndexSet:"); - instancetype _objc_msgSend_92( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexSet, - ) { - return __objc_msgSend_92( - obj, - sel, - indexSet, - ); - } - - late final __objc_msgSend_92Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_92 = __objc_msgSend_92Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithIndex_1 = _registerName1("initWithIndex:"); - late final _sel_isEqualToIndexSet_1 = _registerName1("isEqualToIndexSet:"); - bool _objc_msgSend_93( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexSet, - ) { - return __objc_msgSend_93( - obj, - sel, - indexSet, - ); - } - - late final __objc_msgSend_93Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_93 = __objc_msgSend_93Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_firstIndex1 = _registerName1("firstIndex"); - late final _sel_lastIndex1 = _registerName1("lastIndex"); - late final _sel_indexGreaterThanIndex_1 = - _registerName1("indexGreaterThanIndex:"); - int _objc_msgSend_94( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_94( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_94Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_94 = __objc_msgSend_94Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_indexLessThanIndex_1 = _registerName1("indexLessThanIndex:"); - late final _sel_indexGreaterThanOrEqualToIndex_1 = - _registerName1("indexGreaterThanOrEqualToIndex:"); - late final _sel_indexLessThanOrEqualToIndex_1 = - _registerName1("indexLessThanOrEqualToIndex:"); - late final _sel_getIndexes_maxCount_inIndexRange_1 = - _registerName1("getIndexes:maxCount:inIndexRange:"); - int _objc_msgSend_95( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexBuffer, - int bufferSize, - ffi.Pointer<_NSRange> range, - ) { - return __objc_msgSend_95( - obj, - sel, - indexBuffer, - bufferSize, - range, - ); - } - - late final __objc_msgSend_95Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_NSRange>)>>('objc_msgSend'); - late final __objc_msgSend_95 = __objc_msgSend_95Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_NSRange>)>(); - - late final _sel_countOfIndexesInRange_1 = - _registerName1("countOfIndexesInRange:"); - int _objc_msgSend_96( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_96( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_96Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_96 = __objc_msgSend_96Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_containsIndex_1 = _registerName1("containsIndex:"); - bool _objc_msgSend_97( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_97( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_97Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_97 = __objc_msgSend_97Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_containsIndexesInRange_1 = - _registerName1("containsIndexesInRange:"); - bool _objc_msgSend_98( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_98( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_98Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_98 = __objc_msgSend_98Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_containsIndexes_1 = _registerName1("containsIndexes:"); - late final _sel_intersectsIndexesInRange_1 = - _registerName1("intersectsIndexesInRange:"); - late final _sel_enumerateIndexesUsingBlock_1 = - _registerName1("enumerateIndexesUsingBlock:"); - void _objc_msgSend_99( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_99( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_99Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_99 = __objc_msgSend_99Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateIndexesWithOptions_usingBlock_1 = - _registerName1("enumerateIndexesWithOptions:usingBlock:"); - void _objc_msgSend_100( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_100( - obj, - sel, - opts, - block, - ); - } - - late final __objc_msgSend_100Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_100 = __objc_msgSend_100Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateIndexesInRange_options_usingBlock_1 = - _registerName1("enumerateIndexesInRange:options:usingBlock:"); - void _objc_msgSend_101( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_101( - obj, - sel, - range, - opts, - block, - ); - } - - late final __objc_msgSend_101Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_101 = __objc_msgSend_101Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexPassingTest_1 = _registerName1("indexPassingTest:"); - int _objc_msgSend_102( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_102( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_102Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_102 = __objc_msgSend_102Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexWithOptions_passingTest_1 = - _registerName1("indexWithOptions:passingTest:"); - int _objc_msgSend_103( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_103( - obj, - sel, - opts, - predicate, - ); - } - - late final __objc_msgSend_103Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_103 = __objc_msgSend_103Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexInRange_options_passingTest_1 = - _registerName1("indexInRange:options:passingTest:"); - int _objc_msgSend_104( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_104( - obj, - sel, - range, - opts, - predicate, - ); - } - - late final __objc_msgSend_104Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_104 = __objc_msgSend_104Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, _NSRange, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexesPassingTest_1 = _registerName1("indexesPassingTest:"); - ffi.Pointer _objc_msgSend_105( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_105( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_105Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_105 = __objc_msgSend_105Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexesWithOptions_passingTest_1 = - _registerName1("indexesWithOptions:passingTest:"); - ffi.Pointer _objc_msgSend_106( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_106( - obj, - sel, - opts, - predicate, - ); - } - - late final __objc_msgSend_106Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_106 = __objc_msgSend_106Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexesInRange_options_passingTest_1 = - _registerName1("indexesInRange:options:passingTest:"); - ffi.Pointer _objc_msgSend_107( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_107( - obj, - sel, - range, - opts, - predicate, - ); - } - - late final __objc_msgSend_107Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_107 = __objc_msgSend_107Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateRangesUsingBlock_1 = - _registerName1("enumerateRangesUsingBlock:"); - void _objc_msgSend_108( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_108( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_108Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_108 = __objc_msgSend_108Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateRangesWithOptions_usingBlock_1 = - _registerName1("enumerateRangesWithOptions:usingBlock:"); - void _objc_msgSend_109( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_109( - obj, - sel, - opts, - block, - ); - } - - late final __objc_msgSend_109Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_109 = __objc_msgSend_109Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateRangesInRange_options_usingBlock_1 = - _registerName1("enumerateRangesInRange:options:usingBlock:"); - void _objc_msgSend_110( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_110( - obj, - sel, - range, - opts, - block, - ); - } - - late final __objc_msgSend_110Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_110 = __objc_msgSend_110Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_objectsAtIndexes_1 = _registerName1("objectsAtIndexes:"); - ffi.Pointer _objc_msgSend_111( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexes, - ) { - return __objc_msgSend_111( - obj, - sel, - indexes, - ); - } - - late final __objc_msgSend_111Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_111 = __objc_msgSend_111Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_objectAtIndexedSubscript_1 = - _registerName1("objectAtIndexedSubscript:"); - late final _sel_enumerateObjectsUsingBlock_1 = - _registerName1("enumerateObjectsUsingBlock:"); - void _objc_msgSend_112( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_112( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_112Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_112 = __objc_msgSend_112Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateObjectsWithOptions_usingBlock_1 = - _registerName1("enumerateObjectsWithOptions:usingBlock:"); - void _objc_msgSend_113( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_113( - obj, - sel, - opts, - block, - ); - } - - late final __objc_msgSend_113Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_113 = __objc_msgSend_113Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateObjectsAtIndexes_options_usingBlock_1 = - _registerName1("enumerateObjectsAtIndexes:options:usingBlock:"); - void _objc_msgSend_114( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer s, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_114( - obj, - sel, - s, - opts, - block, - ); - } - - late final __objc_msgSend_114Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_114 = __objc_msgSend_114Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexOfObjectPassingTest_1 = - _registerName1("indexOfObjectPassingTest:"); - int _objc_msgSend_115( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_115( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_115Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_115 = __objc_msgSend_115Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexOfObjectWithOptions_passingTest_1 = - _registerName1("indexOfObjectWithOptions:passingTest:"); - int _objc_msgSend_116( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_116( - obj, - sel, - opts, - predicate, - ); - } - - late final __objc_msgSend_116Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_116 = __objc_msgSend_116Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexOfObjectAtIndexes_options_passingTest_1 = - _registerName1("indexOfObjectAtIndexes:options:passingTest:"); - int _objc_msgSend_117( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer s, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_117( - obj, - sel, - s, - opts, - predicate, - ); - } - - late final __objc_msgSend_117Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_117 = __objc_msgSend_117Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexesOfObjectsPassingTest_1 = - _registerName1("indexesOfObjectsPassingTest:"); - ffi.Pointer _objc_msgSend_118( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_118( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_118Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_118 = __objc_msgSend_118Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexesOfObjectsWithOptions_passingTest_1 = - _registerName1("indexesOfObjectsWithOptions:passingTest:"); - ffi.Pointer _objc_msgSend_119( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_119( - obj, - sel, - opts, - predicate, - ); - } - - late final __objc_msgSend_119Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_119 = __objc_msgSend_119Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexesOfObjectsAtIndexes_options_passingTest_1 = - _registerName1("indexesOfObjectsAtIndexes:options:passingTest:"); - ffi.Pointer _objc_msgSend_120( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer s, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_120( - obj, - sel, - s, - opts, - predicate, - ); - } - - late final __objc_msgSend_120Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_120 = __objc_msgSend_120Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_sortedArrayUsingComparator_1 = - _registerName1("sortedArrayUsingComparator:"); - ffi.Pointer _objc_msgSend_121( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> cmptr, - ) { - return __objc_msgSend_121( - obj, - sel, - cmptr, - ); - } - - late final __objc_msgSend_121Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_121 = __objc_msgSend_121Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_sortedArrayWithOptions_usingComparator_1 = - _registerName1("sortedArrayWithOptions:usingComparator:"); - ffi.Pointer _objc_msgSend_122( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> cmptr, - ) { - return __objc_msgSend_122( - obj, - sel, - opts, - cmptr, - ); - } - - late final __objc_msgSend_122Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_122 = __objc_msgSend_122Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_indexOfObject_inSortedRange_options_usingComparator_1 = - _registerName1("indexOfObject:inSortedRange:options:usingComparator:"); - int _objc_msgSend_123( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer obj1, - _NSRange r, - int opts, - ffi.Pointer<_ObjCBlock> cmp, - ) { - return __objc_msgSend_123( - obj, - sel, - obj1, - r, - opts, - cmp, - ); - } - - late final __objc_msgSend_123Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_123 = __objc_msgSend_123Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_array1 = _registerName1("array"); - late final _sel_arrayWithObject_1 = _registerName1("arrayWithObject:"); - instancetype _objc_msgSend_124( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - ) { - return __objc_msgSend_124( - obj, - sel, - anObject, - ); - } - - late final __objc_msgSend_124Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_124 = __objc_msgSend_124Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_arrayWithObjects_count_1 = - _registerName1("arrayWithObjects:count:"); - late final _sel_arrayWithObjects_1 = _registerName1("arrayWithObjects:"); - late final _sel_arrayWithArray_1 = _registerName1("arrayWithArray:"); - instancetype _objc_msgSend_125( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer array, - ) { - return __objc_msgSend_125( - obj, - sel, - array, - ); - } - - late final __objc_msgSend_125Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_125 = __objc_msgSend_125Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithObjects_1 = _registerName1("initWithObjects:"); - late final _sel_initWithArray_1 = _registerName1("initWithArray:"); - late final _sel_initWithArray_copyItems_1 = - _registerName1("initWithArray:copyItems:"); - instancetype _objc_msgSend_126( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer array, - bool flag, - ) { - return __objc_msgSend_126( - obj, - sel, - array, - flag, - ); - } - - late final __objc_msgSend_126Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_126 = __objc_msgSend_126Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_initWithContentsOfURL_error_1 = - _registerName1("initWithContentsOfURL:error:"); - ffi.Pointer _objc_msgSend_127( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer> error, - ) { - return __objc_msgSend_127( - obj, - sel, - url, - error, - ); - } - - late final __objc_msgSend_127Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_127 = __objc_msgSend_127Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_arrayWithContentsOfURL_error_1 = - _registerName1("arrayWithContentsOfURL:error:"); - late final _sel_differenceFromArray_withOptions_usingEquivalenceTest_1 = - _registerName1("differenceFromArray:withOptions:usingEquivalenceTest:"); - ffi.Pointer _objc_msgSend_128( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - int options, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_128( - obj, - sel, - other, - options, - block, - ); - } - - late final __objc_msgSend_128Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_128 = __objc_msgSend_128Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_differenceFromArray_withOptions_1 = - _registerName1("differenceFromArray:withOptions:"); - ffi.Pointer _objc_msgSend_129( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - int options, - ) { - return __objc_msgSend_129( - obj, - sel, - other, - options, - ); - } - - late final __objc_msgSend_129Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_129 = __objc_msgSend_129Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_differenceFromArray_1 = - _registerName1("differenceFromArray:"); - late final _sel_arrayByApplyingDifference_1 = - _registerName1("arrayByApplyingDifference:"); - ffi.Pointer _objc_msgSend_130( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer difference, - ) { - return __objc_msgSend_130( - obj, - sel, - difference, - ); - } - - late final __objc_msgSend_130Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_130 = __objc_msgSend_130Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_getObjects_1 = _registerName1("getObjects:"); - void _objc_msgSend_131( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> objects, - ) { - return __objc_msgSend_131( - obj, - sel, - objects, - ); - } - - late final __objc_msgSend_131Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_131 = __objc_msgSend_131Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_arrayWithContentsOfFile_1 = - _registerName1("arrayWithContentsOfFile:"); - ffi.Pointer _objc_msgSend_132( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_132( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_132Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_132 = __objc_msgSend_132Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_arrayWithContentsOfURL_1 = - _registerName1("arrayWithContentsOfURL:"); - ffi.Pointer _objc_msgSend_133( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_133( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_133Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_133 = __objc_msgSend_133Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithContentsOfFile_1 = - _registerName1("initWithContentsOfFile:"); - late final _sel_initWithContentsOfURL_1 = - _registerName1("initWithContentsOfURL:"); - late final _sel_writeToURL_atomically_1 = - _registerName1("writeToURL:atomically:"); - bool _objc_msgSend_134( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - bool atomically, - ) { - return __objc_msgSend_134( - obj, - sel, - url, - atomically, - ); - } - - late final __objc_msgSend_134Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_134 = __objc_msgSend_134Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_pathsMatchingExtensions_1 = - _registerName1("pathsMatchingExtensions:"); - late final _sel_valueForKey_1 = _registerName1("valueForKey:"); - late final _sel_setValue_forKey_1 = _registerName1("setValue:forKey:"); - void _objc_msgSend_135( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer key, - ) { - return __objc_msgSend_135( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_135Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_135 = __objc_msgSend_135Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addObserver_toObjectsAtIndexes_forKeyPath_options_context_1 = - _registerName1( - "addObserver:toObjectsAtIndexes:forKeyPath:options:context:"); - void _objc_msgSend_136( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer observer, - ffi.Pointer indexes, - ffi.Pointer keyPath, - int options, - ffi.Pointer context, - ) { - return __objc_msgSend_136( - obj, - sel, - observer, - indexes, - keyPath, - options, - context, - ); - } - - late final __objc_msgSend_136Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_136 = __objc_msgSend_136Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer)>(); - - late final _sel_removeObserver_fromObjectsAtIndexes_forKeyPath_context_1 = - _registerName1("removeObserver:fromObjectsAtIndexes:forKeyPath:context:"); - void _objc_msgSend_137( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer observer, - ffi.Pointer indexes, - ffi.Pointer keyPath, - ffi.Pointer context, - ) { - return __objc_msgSend_137( - obj, - sel, - observer, - indexes, - keyPath, - context, - ); - } - - late final __objc_msgSend_137Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_137 = __objc_msgSend_137Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeObserver_fromObjectsAtIndexes_forKeyPath_1 = - _registerName1("removeObserver:fromObjectsAtIndexes:forKeyPath:"); - void _objc_msgSend_138( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer observer, - ffi.Pointer indexes, - ffi.Pointer keyPath, - ) { - return __objc_msgSend_138( - obj, - sel, - observer, - indexes, - keyPath, - ); - } - - late final __objc_msgSend_138Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_138 = __objc_msgSend_138Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_addObserver_forKeyPath_options_context_1 = - _registerName1("addObserver:forKeyPath:options:context:"); - void _objc_msgSend_139( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer observer, - ffi.Pointer keyPath, - int options, - ffi.Pointer context, - ) { - return __objc_msgSend_139( - obj, - sel, - observer, - keyPath, - options, - context, - ); - } - - late final __objc_msgSend_139Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_139 = __objc_msgSend_139Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer)>(); - - late final _sel_removeObserver_forKeyPath_context_1 = - _registerName1("removeObserver:forKeyPath:context:"); - void _objc_msgSend_140( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer observer, - ffi.Pointer keyPath, - ffi.Pointer context, - ) { - return __objc_msgSend_140( - obj, - sel, - observer, - keyPath, - context, - ); - } - - late final __objc_msgSend_140Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_140 = __objc_msgSend_140Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeObserver_forKeyPath_1 = - _registerName1("removeObserver:forKeyPath:"); - void _objc_msgSend_141( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer observer, - ffi.Pointer keyPath, - ) { - return __objc_msgSend_141( - obj, - sel, - observer, - keyPath, - ); - } - - late final __objc_msgSend_141Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_141 = __objc_msgSend_141Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_sortedArrayUsingDescriptors_1 = - _registerName1("sortedArrayUsingDescriptors:"); - late final _class_NSPredicate1 = _getClass1("NSPredicate"); - late final _sel_predicateWithFormat_argumentArray_1 = - _registerName1("predicateWithFormat:argumentArray:"); - ffi.Pointer _objc_msgSend_142( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer predicateFormat, - ffi.Pointer arguments, - ) { - return __objc_msgSend_142( - obj, - sel, - predicateFormat, - arguments, - ); - } - - late final __objc_msgSend_142Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_142 = __objc_msgSend_142Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_predicateWithFormat_1 = - _registerName1("predicateWithFormat:"); - ffi.Pointer _objc_msgSend_143( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer predicateFormat, - ) { - return __objc_msgSend_143( - obj, - sel, - predicateFormat, - ); - } - - late final __objc_msgSend_143Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_143 = __objc_msgSend_143Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_predicateWithFormat_arguments_1 = - _registerName1("predicateWithFormat:arguments:"); - ffi.Pointer _objc_msgSend_144( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer predicateFormat, - ffi.Pointer<__va_list_tag> argList, - ) { - return __objc_msgSend_144( - obj, - sel, - predicateFormat, - argList, - ); - } - - late final __objc_msgSend_144Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); - late final __objc_msgSend_144 = __objc_msgSend_144Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>(); - - late final _sel_predicateFromMetadataQueryString_1 = - _registerName1("predicateFromMetadataQueryString:"); - ffi.Pointer _objc_msgSend_145( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer queryString, - ) { - return __objc_msgSend_145( - obj, - sel, - queryString, - ); - } - - late final __objc_msgSend_145Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_145 = __objc_msgSend_145Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_predicateWithValue_1 = _registerName1("predicateWithValue:"); - ffi.Pointer _objc_msgSend_146( - ffi.Pointer obj, - ffi.Pointer sel, - bool value, - ) { - return __objc_msgSend_146( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_146Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_146 = __objc_msgSend_146Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _class_NSDictionary1 = _getClass1("NSDictionary"); - late final _sel_objectForKey_1 = _registerName1("objectForKey:"); - late final _sel_keyEnumerator1 = _registerName1("keyEnumerator"); - late final _sel_initWithObjects_forKeys_count_1 = - _registerName1("initWithObjects:forKeys:count:"); - instancetype _objc_msgSend_147( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> objects, - ffi.Pointer> keys, - int cnt, - ) { - return __objc_msgSend_147( - obj, - sel, - objects, - keys, - cnt, - ); - } - - late final __objc_msgSend_147Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_147 = __objc_msgSend_147Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>, - int)>(); - - late final _sel_allKeys1 = _registerName1("allKeys"); - late final _sel_allKeysForObject_1 = _registerName1("allKeysForObject:"); - late final _sel_allValues1 = _registerName1("allValues"); - late final _sel_descriptionInStringsFileFormat1 = - _registerName1("descriptionInStringsFileFormat"); - late final _sel_isEqualToDictionary_1 = - _registerName1("isEqualToDictionary:"); - bool _objc_msgSend_148( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherDictionary, - ) { - return __objc_msgSend_148( - obj, - sel, - otherDictionary, - ); - } - - late final __objc_msgSend_148Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_148 = __objc_msgSend_148Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_objectsForKeys_notFoundMarker_1 = - _registerName1("objectsForKeys:notFoundMarker:"); - ffi.Pointer _objc_msgSend_149( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keys, - ffi.Pointer marker, - ) { - return __objc_msgSend_149( - obj, - sel, - keys, - marker, - ); - } - - late final __objc_msgSend_149Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_149 = __objc_msgSend_149Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_keysSortedByValueUsingSelector_1 = - _registerName1("keysSortedByValueUsingSelector:"); - late final _sel_getObjects_andKeys_count_1 = - _registerName1("getObjects:andKeys:count:"); - void _objc_msgSend_150( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> objects, - ffi.Pointer> keys, - int count, - ) { - return __objc_msgSend_150( - obj, - sel, - objects, - keys, - count, - ); - } - - late final __objc_msgSend_150Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_150 = __objc_msgSend_150Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>, - int)>(); - - late final _sel_objectForKeyedSubscript_1 = - _registerName1("objectForKeyedSubscript:"); - late final _sel_enumerateKeysAndObjectsUsingBlock_1 = - _registerName1("enumerateKeysAndObjectsUsingBlock:"); - void _objc_msgSend_151( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_151( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_151Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_151 = __objc_msgSend_151Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateKeysAndObjectsWithOptions_usingBlock_1 = - _registerName1("enumerateKeysAndObjectsWithOptions:usingBlock:"); - void _objc_msgSend_152( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_152( - obj, - sel, - opts, - block, - ); - } - - late final __objc_msgSend_152Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_152 = __objc_msgSend_152Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_keysSortedByValueUsingComparator_1 = - _registerName1("keysSortedByValueUsingComparator:"); - late final _sel_keysSortedByValueWithOptions_usingComparator_1 = - _registerName1("keysSortedByValueWithOptions:usingComparator:"); - late final _sel_keysOfEntriesPassingTest_1 = - _registerName1("keysOfEntriesPassingTest:"); - ffi.Pointer _objc_msgSend_153( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_153( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_153Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_153 = __objc_msgSend_153Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_keysOfEntriesWithOptions_passingTest_1 = - _registerName1("keysOfEntriesWithOptions:passingTest:"); - ffi.Pointer _objc_msgSend_154( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_154( - obj, - sel, - opts, - predicate, - ); - } - - late final __objc_msgSend_154Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_154 = __objc_msgSend_154Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_getObjects_andKeys_1 = _registerName1("getObjects:andKeys:"); - void _objc_msgSend_155( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> objects, - ffi.Pointer> keys, - ) { - return __objc_msgSend_155( - obj, - sel, - objects, - keys, - ); - } - - late final __objc_msgSend_155Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_155 = __objc_msgSend_155Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_dictionaryWithContentsOfFile_1 = - _registerName1("dictionaryWithContentsOfFile:"); - ffi.Pointer _objc_msgSend_156( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_156( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_156Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_156 = __objc_msgSend_156Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dictionaryWithContentsOfURL_1 = - _registerName1("dictionaryWithContentsOfURL:"); - ffi.Pointer _objc_msgSend_157( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_157( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_157Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_157 = __objc_msgSend_157Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dictionary1 = _registerName1("dictionary"); - late final _sel_dictionaryWithObject_forKey_1 = - _registerName1("dictionaryWithObject:forKey:"); - instancetype _objc_msgSend_158( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer object, - ffi.Pointer key, - ) { - return __objc_msgSend_158( - obj, - sel, - object, - key, - ); - } - - late final __objc_msgSend_158Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_158 = __objc_msgSend_158Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dictionaryWithObjects_forKeys_count_1 = - _registerName1("dictionaryWithObjects:forKeys:count:"); - late final _sel_dictionaryWithObjectsAndKeys_1 = - _registerName1("dictionaryWithObjectsAndKeys:"); - late final _sel_dictionaryWithDictionary_1 = - _registerName1("dictionaryWithDictionary:"); - instancetype _objc_msgSend_159( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer dict, - ) { - return __objc_msgSend_159( - obj, - sel, - dict, - ); - } - - late final __objc_msgSend_159Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_159 = __objc_msgSend_159Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_dictionaryWithObjects_forKeys_1 = - _registerName1("dictionaryWithObjects:forKeys:"); - instancetype _objc_msgSend_160( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer objects, - ffi.Pointer keys, - ) { - return __objc_msgSend_160( - obj, - sel, - objects, - keys, - ); - } - - late final __objc_msgSend_160Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_160 = __objc_msgSend_160Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithObjectsAndKeys_1 = - _registerName1("initWithObjectsAndKeys:"); - late final _sel_initWithDictionary_1 = _registerName1("initWithDictionary:"); - late final _sel_initWithDictionary_copyItems_1 = - _registerName1("initWithDictionary:copyItems:"); - instancetype _objc_msgSend_161( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherDictionary, - bool flag, - ) { - return __objc_msgSend_161( - obj, - sel, - otherDictionary, - flag, - ); - } - - late final __objc_msgSend_161Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_161 = __objc_msgSend_161Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_initWithObjects_forKeys_1 = - _registerName1("initWithObjects:forKeys:"); - ffi.Pointer _objc_msgSend_162( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer> error, - ) { - return __objc_msgSend_162( - obj, - sel, - url, - error, - ); - } - - late final __objc_msgSend_162Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_162 = __objc_msgSend_162Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_dictionaryWithContentsOfURL_error_1 = - _registerName1("dictionaryWithContentsOfURL:error:"); - late final _sel_sharedKeySetForKeys_1 = - _registerName1("sharedKeySetForKeys:"); - late final _sel_countByEnumeratingWithState_objects_count_1 = - _registerName1("countByEnumeratingWithState:objects:count:"); - int _objc_msgSend_163( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer state, - ffi.Pointer> buffer, - int len, - ) { - return __objc_msgSend_163( - obj, - sel, - state, - buffer, - len, - ); - } - - late final __objc_msgSend_163Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_163 = __objc_msgSend_163Ptr.asFunction< - int Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - int)>(); - - late final _sel_fileSize1 = _registerName1("fileSize"); - int _objc_msgSend_164( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_164( - obj, - sel, - ); - } - - late final __objc_msgSend_164Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLongLong Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_164 = __objc_msgSend_164Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSDate1 = _getClass1("NSDate"); - late final _sel_timeIntervalSinceReferenceDate1 = - _registerName1("timeIntervalSinceReferenceDate"); - double _objc_msgSend_165( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_165( - obj, - sel, - ); - } - - late final __objc_msgSend_165Ptr = _lookup< - ffi.NativeFunction< - ffi.Double Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_165 = __objc_msgSend_165Ptr.asFunction< - double Function(ffi.Pointer, ffi.Pointer)>(); - - double _objc_msgSend_165_fpret( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_165_fpret( - obj, - sel, - ); - } - - late final __objc_msgSend_165_fpretPtr = _lookup< - ffi.NativeFunction< - ffi.Double Function(ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_fpret'); - late final __objc_msgSend_165_fpret = __objc_msgSend_165_fpretPtr.asFunction< - double Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithTimeIntervalSinceReferenceDate_1 = - _registerName1("initWithTimeIntervalSinceReferenceDate:"); - instancetype _objc_msgSend_166( - ffi.Pointer obj, - ffi.Pointer sel, - double ti, - ) { - return __objc_msgSend_166( - obj, - sel, - ti, - ); - } - - late final __objc_msgSend_166Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_166 = __objc_msgSend_166Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_timeIntervalSinceDate_1 = - _registerName1("timeIntervalSinceDate:"); - double _objc_msgSend_167( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anotherDate, - ) { - return __objc_msgSend_167( - obj, - sel, - anotherDate, - ); - } - - late final __objc_msgSend_167Ptr = _lookup< - ffi.NativeFunction< - ffi.Double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_167 = __objc_msgSend_167Ptr.asFunction< - double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - double _objc_msgSend_167_fpret( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anotherDate, - ) { - return __objc_msgSend_167_fpret( - obj, - sel, - anotherDate, - ); - } - - late final __objc_msgSend_167_fpretPtr = _lookup< - ffi.NativeFunction< - ffi.Double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_fpret'); - late final __objc_msgSend_167_fpret = __objc_msgSend_167_fpretPtr.asFunction< - double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_timeIntervalSinceNow1 = - _registerName1("timeIntervalSinceNow"); - late final _sel_timeIntervalSince19701 = - _registerName1("timeIntervalSince1970"); - late final _sel_addTimeInterval_1 = _registerName1("addTimeInterval:"); - late final _sel_dateByAddingTimeInterval_1 = - _registerName1("dateByAddingTimeInterval:"); - late final _sel_earlierDate_1 = _registerName1("earlierDate:"); - ffi.Pointer _objc_msgSend_168( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anotherDate, - ) { - return __objc_msgSend_168( - obj, - sel, - anotherDate, - ); - } - - late final __objc_msgSend_168Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_168 = __objc_msgSend_168Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_laterDate_1 = _registerName1("laterDate:"); - late final _sel_compare_1 = _registerName1("compare:"); - int _objc_msgSend_169( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_169( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_169Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_169 = __objc_msgSend_169Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isEqualToDate_1 = _registerName1("isEqualToDate:"); - bool _objc_msgSend_170( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherDate, - ) { - return __objc_msgSend_170( - obj, - sel, - otherDate, - ); - } - - late final __objc_msgSend_170Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_170 = __objc_msgSend_170Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_date1 = _registerName1("date"); - late final _sel_dateWithTimeIntervalSinceNow_1 = - _registerName1("dateWithTimeIntervalSinceNow:"); - late final _sel_dateWithTimeIntervalSinceReferenceDate_1 = - _registerName1("dateWithTimeIntervalSinceReferenceDate:"); - late final _sel_dateWithTimeIntervalSince1970_1 = - _registerName1("dateWithTimeIntervalSince1970:"); - late final _sel_dateWithTimeInterval_sinceDate_1 = - _registerName1("dateWithTimeInterval:sinceDate:"); - instancetype _objc_msgSend_171( - ffi.Pointer obj, - ffi.Pointer sel, - double secsToBeAdded, - ffi.Pointer date, - ) { - return __objc_msgSend_171( - obj, - sel, - secsToBeAdded, - date, - ); - } - - late final __objc_msgSend_171Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Double, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_171 = __objc_msgSend_171Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - double, ffi.Pointer)>(); - - late final _sel_distantFuture1 = _registerName1("distantFuture"); - ffi.Pointer _objc_msgSend_172( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_172( - obj, - sel, - ); - } - - late final __objc_msgSend_172Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_172 = __objc_msgSend_172Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_distantPast1 = _registerName1("distantPast"); - late final _sel_now1 = _registerName1("now"); - late final _sel_initWithTimeIntervalSinceNow_1 = - _registerName1("initWithTimeIntervalSinceNow:"); - late final _sel_initWithTimeIntervalSince1970_1 = - _registerName1("initWithTimeIntervalSince1970:"); - late final _sel_initWithTimeInterval_sinceDate_1 = - _registerName1("initWithTimeInterval:sinceDate:"); - late final _sel_dateWithNaturalLanguageString_locale_1 = - _registerName1("dateWithNaturalLanguageString:locale:"); - ffi.Pointer _objc_msgSend_173( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - ffi.Pointer locale, - ) { - return __objc_msgSend_173( - obj, - sel, - string, - locale, - ); - } - - late final __objc_msgSend_173Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_173 = __objc_msgSend_173Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_dateWithNaturalLanguageString_1 = - _registerName1("dateWithNaturalLanguageString:"); - late final _sel_dateWithString_1 = _registerName1("dateWithString:"); - late final _class_NSCalendarDate1 = _getClass1("NSCalendarDate"); - late final _sel_calendarDate1 = _registerName1("calendarDate"); - late final _sel_dateWithString_calendarFormat_locale_1 = - _registerName1("dateWithString:calendarFormat:locale:"); - ffi.Pointer _objc_msgSend_174( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer description, - ffi.Pointer format, - ffi.Pointer locale, - ) { - return __objc_msgSend_174( - obj, - sel, - description, - format, - locale, - ); - } - - late final __objc_msgSend_174Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_174 = __objc_msgSend_174Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_dateWithString_calendarFormat_1 = - _registerName1("dateWithString:calendarFormat:"); - ffi.Pointer _objc_msgSend_175( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer description, - ffi.Pointer format, - ) { - return __objc_msgSend_175( - obj, - sel, - description, - format, - ); - } - - late final __objc_msgSend_175Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_175 = __objc_msgSend_175Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSTimeZone1 = _getClass1("NSTimeZone"); - late final _sel_name1 = _registerName1("name"); - late final _sel_data1 = _registerName1("data"); - late final _sel_secondsFromGMTForDate_1 = - _registerName1("secondsFromGMTForDate:"); - int _objc_msgSend_176( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aDate, - ) { - return __objc_msgSend_176( - obj, - sel, - aDate, - ); - } - - late final __objc_msgSend_176Ptr = _lookup< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_176 = __objc_msgSend_176Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_abbreviationForDate_1 = - _registerName1("abbreviationForDate:"); - ffi.Pointer _objc_msgSend_177( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aDate, - ) { - return __objc_msgSend_177( - obj, - sel, - aDate, - ); - } - - late final __objc_msgSend_177Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_177 = __objc_msgSend_177Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isDaylightSavingTimeForDate_1 = - _registerName1("isDaylightSavingTimeForDate:"); - late final _sel_daylightSavingTimeOffsetForDate_1 = - _registerName1("daylightSavingTimeOffsetForDate:"); - late final _sel_nextDaylightSavingTimeTransitionAfterDate_1 = - _registerName1("nextDaylightSavingTimeTransitionAfterDate:"); - ffi.Pointer _objc_msgSend_178( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aDate, - ) { - return __objc_msgSend_178( - obj, - sel, - aDate, - ); - } - - late final __objc_msgSend_178Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_178 = __objc_msgSend_178Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_systemTimeZone1 = _registerName1("systemTimeZone"); - ffi.Pointer _objc_msgSend_179( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_179( - obj, - sel, - ); - } - - late final __objc_msgSend_179Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_179 = __objc_msgSend_179Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_resetSystemTimeZone1 = _registerName1("resetSystemTimeZone"); - late final _sel_defaultTimeZone1 = _registerName1("defaultTimeZone"); - late final _sel_setDefaultTimeZone_1 = _registerName1("setDefaultTimeZone:"); - void _objc_msgSend_180( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_180( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_180Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_180 = __objc_msgSend_180Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_localTimeZone1 = _registerName1("localTimeZone"); - late final _sel_knownTimeZoneNames1 = _registerName1("knownTimeZoneNames"); - late final _sel_abbreviationDictionary1 = - _registerName1("abbreviationDictionary"); - ffi.Pointer _objc_msgSend_181( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_181( - obj, - sel, - ); - } - - late final __objc_msgSend_181Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_181 = __objc_msgSend_181Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setAbbreviationDictionary_1 = - _registerName1("setAbbreviationDictionary:"); - void _objc_msgSend_182( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_182( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_182Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_182 = __objc_msgSend_182Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_timeZoneDataVersion1 = _registerName1("timeZoneDataVersion"); - late final _sel_secondsFromGMT1 = _registerName1("secondsFromGMT"); - late final _sel_abbreviation1 = _registerName1("abbreviation"); - late final _sel_isDaylightSavingTime1 = - _registerName1("isDaylightSavingTime"); - late final _sel_daylightSavingTimeOffset1 = - _registerName1("daylightSavingTimeOffset"); - late final _sel_nextDaylightSavingTimeTransition1 = - _registerName1("nextDaylightSavingTimeTransition"); - ffi.Pointer _objc_msgSend_183( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_183( - obj, - sel, - ); - } - - late final __objc_msgSend_183Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_183 = __objc_msgSend_183Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isEqualToTimeZone_1 = _registerName1("isEqualToTimeZone:"); - bool _objc_msgSend_184( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aTimeZone, - ) { - return __objc_msgSend_184( - obj, - sel, - aTimeZone, - ); - } - - late final __objc_msgSend_184Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_184 = __objc_msgSend_184Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSLocale1 = _getClass1("NSLocale"); - late final _sel_displayNameForKey_value_1 = - _registerName1("displayNameForKey:value:"); - ffi.Pointer _objc_msgSend_185( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer value, - ) { - return __objc_msgSend_185( - obj, - sel, - key, - value, - ); - } - - late final __objc_msgSend_185Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_185 = __objc_msgSend_185Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithLocaleIdentifier_1 = - _registerName1("initWithLocaleIdentifier:"); - late final _sel_localeIdentifier1 = _registerName1("localeIdentifier"); - late final _sel_localizedStringForLocaleIdentifier_1 = - _registerName1("localizedStringForLocaleIdentifier:"); - late final _sel_languageCode1 = _registerName1("languageCode"); - late final _sel_localizedStringForLanguageCode_1 = - _registerName1("localizedStringForLanguageCode:"); - ffi.Pointer _objc_msgSend_186( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer languageCode, - ) { - return __objc_msgSend_186( - obj, - sel, - languageCode, - ); - } - - late final __objc_msgSend_186Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_186 = __objc_msgSend_186Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_languageIdentifier1 = _registerName1("languageIdentifier"); - late final _sel_countryCode1 = _registerName1("countryCode"); - late final _sel_localizedStringForCountryCode_1 = - _registerName1("localizedStringForCountryCode:"); - late final _sel_regionCode1 = _registerName1("regionCode"); - late final _sel_scriptCode1 = _registerName1("scriptCode"); - late final _sel_localizedStringForScriptCode_1 = - _registerName1("localizedStringForScriptCode:"); - late final _sel_variantCode1 = _registerName1("variantCode"); - late final _sel_localizedStringForVariantCode_1 = - _registerName1("localizedStringForVariantCode:"); - late final _class_NSCharacterSet1 = _getClass1("NSCharacterSet"); - late final _sel_controlCharacterSet1 = _registerName1("controlCharacterSet"); - ffi.Pointer _objc_msgSend_187( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_187( - obj, - sel, - ); - } - - late final __objc_msgSend_187Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_187 = __objc_msgSend_187Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_whitespaceCharacterSet1 = - _registerName1("whitespaceCharacterSet"); - late final _sel_whitespaceAndNewlineCharacterSet1 = - _registerName1("whitespaceAndNewlineCharacterSet"); - late final _sel_decimalDigitCharacterSet1 = - _registerName1("decimalDigitCharacterSet"); - late final _sel_letterCharacterSet1 = _registerName1("letterCharacterSet"); - late final _sel_lowercaseLetterCharacterSet1 = - _registerName1("lowercaseLetterCharacterSet"); - late final _sel_uppercaseLetterCharacterSet1 = - _registerName1("uppercaseLetterCharacterSet"); - late final _sel_nonBaseCharacterSet1 = _registerName1("nonBaseCharacterSet"); - late final _sel_alphanumericCharacterSet1 = - _registerName1("alphanumericCharacterSet"); - late final _sel_decomposableCharacterSet1 = - _registerName1("decomposableCharacterSet"); - late final _sel_illegalCharacterSet1 = _registerName1("illegalCharacterSet"); - late final _sel_punctuationCharacterSet1 = - _registerName1("punctuationCharacterSet"); - late final _sel_capitalizedLetterCharacterSet1 = - _registerName1("capitalizedLetterCharacterSet"); - late final _sel_symbolCharacterSet1 = _registerName1("symbolCharacterSet"); - late final _sel_newlineCharacterSet1 = _registerName1("newlineCharacterSet"); - late final _sel_characterSetWithRange_1 = - _registerName1("characterSetWithRange:"); - ffi.Pointer _objc_msgSend_188( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange aRange, - ) { - return __objc_msgSend_188( - obj, - sel, - aRange, - ); - } - - late final __objc_msgSend_188Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_188 = __objc_msgSend_188Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_characterSetWithCharactersInString_1 = - _registerName1("characterSetWithCharactersInString:"); - ffi.Pointer _objc_msgSend_189( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aString, - ) { - return __objc_msgSend_189( - obj, - sel, - aString, - ); - } - - late final __objc_msgSend_189Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_189 = __objc_msgSend_189Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_characterSetWithBitmapRepresentation_1 = - _registerName1("characterSetWithBitmapRepresentation:"); - ffi.Pointer _objc_msgSend_190( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ) { - return __objc_msgSend_190( - obj, - sel, - data, - ); - } - - late final __objc_msgSend_190Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_190 = __objc_msgSend_190Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_characterSetWithContentsOfFile_1 = - _registerName1("characterSetWithContentsOfFile:"); - ffi.Pointer _objc_msgSend_191( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer fName, - ) { - return __objc_msgSend_191( - obj, - sel, - fName, - ); - } - - late final __objc_msgSend_191Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_191 = __objc_msgSend_191Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - instancetype _objc_msgSend_192( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer coder, - ) { - return __objc_msgSend_192( - obj, - sel, - coder, - ); - } - - late final __objc_msgSend_192Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_192 = __objc_msgSend_192Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_characterIsMember_1 = _registerName1("characterIsMember:"); - bool _objc_msgSend_193( - ffi.Pointer obj, - ffi.Pointer sel, - int aCharacter, - ) { - return __objc_msgSend_193( - obj, - sel, - aCharacter, - ); - } - - late final __objc_msgSend_193Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedShort)>>('objc_msgSend'); - late final __objc_msgSend_193 = __objc_msgSend_193Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_bitmapRepresentation1 = - _registerName1("bitmapRepresentation"); - late final _sel_invertedSet1 = _registerName1("invertedSet"); - late final _sel_longCharacterIsMember_1 = - _registerName1("longCharacterIsMember:"); - bool _objc_msgSend_194( - ffi.Pointer obj, - ffi.Pointer sel, - int theLongChar, - ) { - return __objc_msgSend_194( - obj, - sel, - theLongChar, - ); - } - - late final __objc_msgSend_194Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_194 = __objc_msgSend_194Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_isSupersetOfSet_1 = _registerName1("isSupersetOfSet:"); - bool _objc_msgSend_195( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer theOtherSet, - ) { - return __objc_msgSend_195( - obj, - sel, - theOtherSet, - ); - } - - late final __objc_msgSend_195Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_195 = __objc_msgSend_195Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_hasMemberInPlane_1 = _registerName1("hasMemberInPlane:"); - bool _objc_msgSend_196( - ffi.Pointer obj, - ffi.Pointer sel, - int thePlane, - ) { - return __objc_msgSend_196( - obj, - sel, - thePlane, - ); - } - - late final __objc_msgSend_196Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Uint8)>>('objc_msgSend'); - late final __objc_msgSend_196 = __objc_msgSend_196Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_URLUserAllowedCharacterSet1 = - _registerName1("URLUserAllowedCharacterSet"); - late final _sel_URLPasswordAllowedCharacterSet1 = - _registerName1("URLPasswordAllowedCharacterSet"); - late final _sel_URLHostAllowedCharacterSet1 = - _registerName1("URLHostAllowedCharacterSet"); - late final _sel_URLPathAllowedCharacterSet1 = - _registerName1("URLPathAllowedCharacterSet"); - late final _sel_URLQueryAllowedCharacterSet1 = - _registerName1("URLQueryAllowedCharacterSet"); - late final _sel_URLFragmentAllowedCharacterSet1 = - _registerName1("URLFragmentAllowedCharacterSet"); - late final _sel_exemplarCharacterSet1 = - _registerName1("exemplarCharacterSet"); - late final _sel_calendarIdentifier1 = _registerName1("calendarIdentifier"); - late final _sel_localizedStringForCalendarIdentifier_1 = - _registerName1("localizedStringForCalendarIdentifier:"); - late final _sel_collationIdentifier1 = _registerName1("collationIdentifier"); - late final _sel_localizedStringForCollationIdentifier_1 = - _registerName1("localizedStringForCollationIdentifier:"); - late final _sel_usesMetricSystem1 = _registerName1("usesMetricSystem"); - late final _sel_decimalSeparator1 = _registerName1("decimalSeparator"); - late final _sel_groupingSeparator1 = _registerName1("groupingSeparator"); - late final _sel_currencySymbol1 = _registerName1("currencySymbol"); - late final _sel_currencyCode1 = _registerName1("currencyCode"); - late final _sel_localizedStringForCurrencyCode_1 = - _registerName1("localizedStringForCurrencyCode:"); - late final _sel_collatorIdentifier1 = _registerName1("collatorIdentifier"); - late final _sel_localizedStringForCollatorIdentifier_1 = - _registerName1("localizedStringForCollatorIdentifier:"); - late final _sel_quotationBeginDelimiter1 = - _registerName1("quotationBeginDelimiter"); - late final _sel_quotationEndDelimiter1 = - _registerName1("quotationEndDelimiter"); - late final _sel_alternateQuotationBeginDelimiter1 = - _registerName1("alternateQuotationBeginDelimiter"); - late final _sel_alternateQuotationEndDelimiter1 = - _registerName1("alternateQuotationEndDelimiter"); - late final _sel_autoupdatingCurrentLocale1 = - _registerName1("autoupdatingCurrentLocale"); - ffi.Pointer _objc_msgSend_197( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_197( - obj, - sel, - ); - } - - late final __objc_msgSend_197Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_197 = __objc_msgSend_197Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_currentLocale1 = _registerName1("currentLocale"); - late final _sel_systemLocale1 = _registerName1("systemLocale"); - late final _sel_localeWithLocaleIdentifier_1 = - _registerName1("localeWithLocaleIdentifier:"); - late final _sel_availableLocaleIdentifiers1 = - _registerName1("availableLocaleIdentifiers"); - late final _sel_ISOLanguageCodes1 = _registerName1("ISOLanguageCodes"); - late final _sel_ISOCountryCodes1 = _registerName1("ISOCountryCodes"); - late final _sel_ISOCurrencyCodes1 = _registerName1("ISOCurrencyCodes"); - late final _sel_commonISOCurrencyCodes1 = - _registerName1("commonISOCurrencyCodes"); - late final _sel_preferredLanguages1 = _registerName1("preferredLanguages"); - late final _sel_componentsFromLocaleIdentifier_1 = - _registerName1("componentsFromLocaleIdentifier:"); - ffi.Pointer _objc_msgSend_198( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - ) { - return __objc_msgSend_198( - obj, - sel, - string, - ); - } - - late final __objc_msgSend_198Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_198 = __objc_msgSend_198Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_localeIdentifierFromComponents_1 = - _registerName1("localeIdentifierFromComponents:"); - ffi.Pointer _objc_msgSend_199( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer dict, - ) { - return __objc_msgSend_199( - obj, - sel, - dict, - ); - } - - late final __objc_msgSend_199Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_199 = __objc_msgSend_199Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_canonicalLocaleIdentifierFromString_1 = - _registerName1("canonicalLocaleIdentifierFromString:"); - late final _sel_canonicalLanguageIdentifierFromString_1 = - _registerName1("canonicalLanguageIdentifierFromString:"); - late final _sel_localeIdentifierFromWindowsLocaleCode_1 = - _registerName1("localeIdentifierFromWindowsLocaleCode:"); - ffi.Pointer _objc_msgSend_200( - ffi.Pointer obj, - ffi.Pointer sel, - int lcid, - ) { - return __objc_msgSend_200( - obj, - sel, - lcid, - ); - } - - late final __objc_msgSend_200Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Uint32)>>('objc_msgSend'); - late final __objc_msgSend_200 = __objc_msgSend_200Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_windowsLocaleCodeFromLocaleIdentifier_1 = - _registerName1("windowsLocaleCodeFromLocaleIdentifier:"); - int _objc_msgSend_201( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer localeIdentifier, - ) { - return __objc_msgSend_201( - obj, - sel, - localeIdentifier, - ); - } - - late final __objc_msgSend_201Ptr = _lookup< - ffi.NativeFunction< - ffi.Uint32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_201 = __objc_msgSend_201Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_characterDirectionForLanguage_1 = - _registerName1("characterDirectionForLanguage:"); - int _objc_msgSend_202( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer isoLangCode, - ) { - return __objc_msgSend_202( - obj, - sel, - isoLangCode, - ); - } - - late final __objc_msgSend_202Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_202 = __objc_msgSend_202Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_lineDirectionForLanguage_1 = - _registerName1("lineDirectionForLanguage:"); - late final _sel_localizedName_locale_1 = - _registerName1("localizedName:locale:"); - ffi.Pointer _objc_msgSend_203( - ffi.Pointer obj, - ffi.Pointer sel, - int style, - ffi.Pointer locale, - ) { - return __objc_msgSend_203( - obj, - sel, - style, - locale, - ); - } - - late final __objc_msgSend_203Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_203 = __objc_msgSend_203Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_timeZoneWithName_1 = _registerName1("timeZoneWithName:"); - late final _sel_timeZoneWithName_data_1 = - _registerName1("timeZoneWithName:data:"); - instancetype _objc_msgSend_204( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer tzName, - ffi.Pointer aData, - ) { - return __objc_msgSend_204( - obj, - sel, - tzName, - aData, - ); - } - - late final __objc_msgSend_204Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_204 = __objc_msgSend_204Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithName_1 = _registerName1("initWithName:"); - late final _sel_initWithName_data_1 = _registerName1("initWithName:data:"); - late final _sel_timeZoneForSecondsFromGMT_1 = - _registerName1("timeZoneForSecondsFromGMT:"); - instancetype _objc_msgSend_205( - ffi.Pointer obj, - ffi.Pointer sel, - int seconds, - ) { - return __objc_msgSend_205( - obj, - sel, - seconds, - ); - } - - late final __objc_msgSend_205Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_205 = __objc_msgSend_205Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_timeZoneWithAbbreviation_1 = - _registerName1("timeZoneWithAbbreviation:"); - late final _sel_dateWithYear_month_day_hour_minute_second_timeZone_1 = - _registerName1("dateWithYear:month:day:hour:minute:second:timeZone:"); - ffi.Pointer _objc_msgSend_206( - ffi.Pointer obj, - ffi.Pointer sel, - int year, - int month, - int day, - int hour, - int minute, - int second, - ffi.Pointer aTimeZone, - ) { - return __objc_msgSend_206( - obj, - sel, - year, - month, - day, - hour, - minute, - second, - aTimeZone, - ); - } - - late final __objc_msgSend_206Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_206 = __objc_msgSend_206Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - int, - int, - int, - int, - int, - int, - ffi.Pointer)>(); - - late final _sel_dateByAddingYears_months_days_hours_minutes_seconds_1 = - _registerName1("dateByAddingYears:months:days:hours:minutes:seconds:"); - ffi.Pointer _objc_msgSend_207( - ffi.Pointer obj, - ffi.Pointer sel, - int year, - int month, - int day, - int hour, - int minute, - int second, - ) { - return __objc_msgSend_207( - obj, - sel, - year, - month, - day, - hour, - minute, - second, - ); - } - - late final __objc_msgSend_207Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_207 = __objc_msgSend_207Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, int, int, int, int, int)>(); - - late final _sel_dayOfCommonEra1 = _registerName1("dayOfCommonEra"); - late final _sel_dayOfMonth1 = _registerName1("dayOfMonth"); - late final _sel_dayOfWeek1 = _registerName1("dayOfWeek"); - late final _sel_dayOfYear1 = _registerName1("dayOfYear"); - late final _sel_hourOfDay1 = _registerName1("hourOfDay"); - late final _sel_minuteOfHour1 = _registerName1("minuteOfHour"); - late final _sel_monthOfYear1 = _registerName1("monthOfYear"); - late final _sel_secondOfMinute1 = _registerName1("secondOfMinute"); - late final _sel_yearOfCommonEra1 = _registerName1("yearOfCommonEra"); - late final _sel_calendarFormat1 = _registerName1("calendarFormat"); - late final _sel_descriptionWithCalendarFormat_locale_1 = - _registerName1("descriptionWithCalendarFormat:locale:"); - ffi.Pointer _objc_msgSend_208( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer locale, - ) { - return __objc_msgSend_208( - obj, - sel, - format, - locale, - ); - } - - late final __objc_msgSend_208Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_208 = __objc_msgSend_208Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_descriptionWithCalendarFormat_1 = - _registerName1("descriptionWithCalendarFormat:"); - late final _sel_timeZone1 = _registerName1("timeZone"); - late final _sel_initWithString_calendarFormat_locale_1 = - _registerName1("initWithString:calendarFormat:locale:"); - late final _sel_initWithString_calendarFormat_1 = - _registerName1("initWithString:calendarFormat:"); - late final _sel_initWithYear_month_day_hour_minute_second_timeZone_1 = - _registerName1("initWithYear:month:day:hour:minute:second:timeZone:"); - late final _sel_setCalendarFormat_1 = _registerName1("setCalendarFormat:"); - void _objc_msgSend_209( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ) { - return __objc_msgSend_209( - obj, - sel, - format, - ); - } - - late final __objc_msgSend_209Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_209 = __objc_msgSend_209Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setTimeZone_1 = _registerName1("setTimeZone:"); - void _objc_msgSend_210( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aTimeZone, - ) { - return __objc_msgSend_210( - obj, - sel, - aTimeZone, - ); - } - - late final __objc_msgSend_210Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_210 = __objc_msgSend_210Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_years_months_days_hours_minutes_seconds_sinceDate_1 = - _registerName1("years:months:days:hours:minutes:seconds:sinceDate:"); - void _objc_msgSend_211( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer yp, - ffi.Pointer mop, - ffi.Pointer dp, - ffi.Pointer hp, - ffi.Pointer mip, - ffi.Pointer sp, - ffi.Pointer date, - ) { - return __objc_msgSend_211( - obj, - sel, - yp, - mop, - dp, - hp, - mip, - sp, - date, - ); - } - - late final __objc_msgSend_211Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_211 = __objc_msgSend_211Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_dateWithCalendarFormat_timeZone_1 = - _registerName1("dateWithCalendarFormat:timeZone:"); - ffi.Pointer _objc_msgSend_212( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer aTimeZone, - ) { - return __objc_msgSend_212( - obj, - sel, - format, - aTimeZone, - ); - } - - late final __objc_msgSend_212Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_212 = __objc_msgSend_212Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_descriptionWithCalendarFormat_timeZone_locale_1 = - _registerName1("descriptionWithCalendarFormat:timeZone:locale:"); - ffi.Pointer _objc_msgSend_213( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer aTimeZone, - ffi.Pointer locale, - ) { - return __objc_msgSend_213( - obj, - sel, - format, - aTimeZone, - locale, - ); - } - - late final __objc_msgSend_213Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_213 = __objc_msgSend_213Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_fileModificationDate1 = - _registerName1("fileModificationDate"); - late final _sel_fileType1 = _registerName1("fileType"); - late final _sel_filePosixPermissions1 = - _registerName1("filePosixPermissions"); - late final _sel_fileOwnerAccountName1 = - _registerName1("fileOwnerAccountName"); - late final _sel_fileGroupOwnerAccountName1 = - _registerName1("fileGroupOwnerAccountName"); - late final _sel_fileSystemNumber1 = _registerName1("fileSystemNumber"); - late final _sel_fileSystemFileNumber1 = - _registerName1("fileSystemFileNumber"); - late final _sel_fileExtensionHidden1 = _registerName1("fileExtensionHidden"); - late final _sel_fileHFSCreatorCode1 = _registerName1("fileHFSCreatorCode"); - int _objc_msgSend_214( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_214( - obj, - sel, - ); - } - - late final __objc_msgSend_214Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedInt Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_214 = __objc_msgSend_214Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_fileHFSTypeCode1 = _registerName1("fileHFSTypeCode"); - late final _sel_fileIsImmutable1 = _registerName1("fileIsImmutable"); - late final _sel_fileIsAppendOnly1 = _registerName1("fileIsAppendOnly"); - late final _sel_fileCreationDate1 = _registerName1("fileCreationDate"); - late final _sel_fileOwnerAccountID1 = _registerName1("fileOwnerAccountID"); - ffi.Pointer _objc_msgSend_215( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_215( - obj, - sel, - ); - } - - late final __objc_msgSend_215Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_215 = __objc_msgSend_215Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_fileGroupOwnerAccountID1 = - _registerName1("fileGroupOwnerAccountID"); - late final _sel_predicateWithBlock_1 = _registerName1("predicateWithBlock:"); - ffi.Pointer _objc_msgSend_216( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_216( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_216Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_216 = __objc_msgSend_216Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_predicateFormat1 = _registerName1("predicateFormat"); - late final _sel_predicateWithSubstitutionVariables_1 = - _registerName1("predicateWithSubstitutionVariables:"); - late final _sel_evaluateWithObject_1 = _registerName1("evaluateWithObject:"); - bool _objc_msgSend_217( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer object, - ) { - return __objc_msgSend_217( - obj, - sel, - object, - ); - } - - late final __objc_msgSend_217Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_217 = __objc_msgSend_217Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_evaluateWithObject_substitutionVariables_1 = - _registerName1("evaluateWithObject:substitutionVariables:"); - bool _objc_msgSend_218( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer object, - ffi.Pointer bindings, - ) { - return __objc_msgSend_218( - obj, - sel, - object, - bindings, - ); - } - - late final __objc_msgSend_218Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_218 = __objc_msgSend_218Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_allowEvaluation1 = _registerName1("allowEvaluation"); - late final _sel_filteredArrayUsingPredicate_1 = - _registerName1("filteredArrayUsingPredicate:"); - ffi.Pointer _objc_msgSend_219( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer predicate, - ) { - return __objc_msgSend_219( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_219Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_219 = __objc_msgSend_219Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithChar_1 = _registerName1("initWithChar:"); - ffi.Pointer _objc_msgSend_220( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_220( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_220Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Char)>>('objc_msgSend'); - late final __objc_msgSend_220 = __objc_msgSend_220Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithUnsignedChar_1 = - _registerName1("initWithUnsignedChar:"); - ffi.Pointer _objc_msgSend_221( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_221( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_221Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedChar)>>('objc_msgSend'); - late final __objc_msgSend_221 = __objc_msgSend_221Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithShort_1 = _registerName1("initWithShort:"); - ffi.Pointer _objc_msgSend_222( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_222( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_222Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Short)>>('objc_msgSend'); - late final __objc_msgSend_222 = __objc_msgSend_222Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithUnsignedShort_1 = - _registerName1("initWithUnsignedShort:"); - ffi.Pointer _objc_msgSend_223( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_223( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_223Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedShort)>>('objc_msgSend'); - late final __objc_msgSend_223 = __objc_msgSend_223Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithInt_1 = _registerName1("initWithInt:"); - ffi.Pointer _objc_msgSend_224( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_224( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_224Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int)>>('objc_msgSend'); - late final __objc_msgSend_224 = __objc_msgSend_224Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithUnsignedInt_1 = - _registerName1("initWithUnsignedInt:"); - ffi.Pointer _objc_msgSend_225( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_225( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_225Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_225 = __objc_msgSend_225Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithLong_1 = _registerName1("initWithLong:"); - ffi.Pointer _objc_msgSend_226( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_226( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_226Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_226 = __objc_msgSend_226Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithUnsignedLong_1 = - _registerName1("initWithUnsignedLong:"); - ffi.Pointer _objc_msgSend_227( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_227( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_227Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_227 = __objc_msgSend_227Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithLongLong_1 = _registerName1("initWithLongLong:"); - ffi.Pointer _objc_msgSend_228( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_228( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_228Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.LongLong)>>('objc_msgSend'); - late final __objc_msgSend_228 = __objc_msgSend_228Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithUnsignedLongLong_1 = - _registerName1("initWithUnsignedLongLong:"); - ffi.Pointer _objc_msgSend_229( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_229( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_229Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLongLong)>>('objc_msgSend'); - late final __objc_msgSend_229 = __objc_msgSend_229Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithFloat_1 = _registerName1("initWithFloat:"); - ffi.Pointer _objc_msgSend_230( - ffi.Pointer obj, - ffi.Pointer sel, - double value, - ) { - return __objc_msgSend_230( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_230Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Float)>>('objc_msgSend'); - late final __objc_msgSend_230 = __objc_msgSend_230Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_initWithDouble_1 = _registerName1("initWithDouble:"); - ffi.Pointer _objc_msgSend_231( - ffi.Pointer obj, - ffi.Pointer sel, - double value, - ) { - return __objc_msgSend_231( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_231Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_231 = __objc_msgSend_231Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_initWithBool_1 = _registerName1("initWithBool:"); - ffi.Pointer _objc_msgSend_232( - ffi.Pointer obj, - ffi.Pointer sel, - bool value, - ) { - return __objc_msgSend_232( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_232Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_232 = __objc_msgSend_232Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_initWithInteger_1 = _registerName1("initWithInteger:"); - late final _sel_initWithUnsignedInteger_1 = - _registerName1("initWithUnsignedInteger:"); - late final _sel_charValue1 = _registerName1("charValue"); - int _objc_msgSend_233( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_233( - obj, - sel, - ); - } - - late final __objc_msgSend_233Ptr = _lookup< - ffi.NativeFunction< - ffi.Char Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_233 = __objc_msgSend_233Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_unsignedCharValue1 = _registerName1("unsignedCharValue"); - int _objc_msgSend_234( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_234( - obj, - sel, - ); - } - - late final __objc_msgSend_234Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedChar Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_234 = __objc_msgSend_234Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_shortValue1 = _registerName1("shortValue"); - int _objc_msgSend_235( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_235( - obj, - sel, - ); - } - - late final __objc_msgSend_235Ptr = _lookup< - ffi.NativeFunction< - ffi.Short Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_235 = __objc_msgSend_235Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_unsignedShortValue1 = _registerName1("unsignedShortValue"); - int _objc_msgSend_236( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_236( - obj, - sel, - ); - } - - late final __objc_msgSend_236Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedShort Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_236 = __objc_msgSend_236Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_intValue1 = _registerName1("intValue"); - int _objc_msgSend_237( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_237( - obj, - sel, - ); - } - - late final __objc_msgSend_237Ptr = _lookup< - ffi.NativeFunction< - ffi.Int Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_237 = __objc_msgSend_237Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_unsignedIntValue1 = _registerName1("unsignedIntValue"); - late final _sel_longValue1 = _registerName1("longValue"); - late final _sel_unsignedLongValue1 = _registerName1("unsignedLongValue"); - late final _sel_longLongValue1 = _registerName1("longLongValue"); - int _objc_msgSend_238( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_238( - obj, - sel, - ); - } - - late final __objc_msgSend_238Ptr = _lookup< - ffi.NativeFunction< - ffi.LongLong Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_238 = __objc_msgSend_238Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_unsignedLongLongValue1 = - _registerName1("unsignedLongLongValue"); - late final _sel_floatValue1 = _registerName1("floatValue"); - double _objc_msgSend_239( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_239( - obj, - sel, - ); - } - - late final __objc_msgSend_239Ptr = _lookup< - ffi.NativeFunction< - ffi.Float Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_239 = __objc_msgSend_239Ptr.asFunction< - double Function(ffi.Pointer, ffi.Pointer)>(); - - double _objc_msgSend_239_fpret( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_239_fpret( - obj, - sel, - ); - } - - late final __objc_msgSend_239_fpretPtr = _lookup< - ffi.NativeFunction< - ffi.Float Function(ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_fpret'); - late final __objc_msgSend_239_fpret = __objc_msgSend_239_fpretPtr.asFunction< - double Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_doubleValue1 = _registerName1("doubleValue"); - late final _sel_boolValue1 = _registerName1("boolValue"); - late final _sel_integerValue1 = _registerName1("integerValue"); - late final _sel_unsignedIntegerValue1 = - _registerName1("unsignedIntegerValue"); - late final _sel_stringValue1 = _registerName1("stringValue"); - int _objc_msgSend_240( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherNumber, - ) { - return __objc_msgSend_240( - obj, - sel, - otherNumber, - ); - } - - late final __objc_msgSend_240Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_240 = __objc_msgSend_240Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isEqualToNumber_1 = _registerName1("isEqualToNumber:"); - bool _objc_msgSend_241( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer number, - ) { - return __objc_msgSend_241( - obj, - sel, - number, - ); - } - - late final __objc_msgSend_241Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_241 = __objc_msgSend_241Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_numberWithChar_1 = _registerName1("numberWithChar:"); - late final _sel_numberWithUnsignedChar_1 = - _registerName1("numberWithUnsignedChar:"); - late final _sel_numberWithShort_1 = _registerName1("numberWithShort:"); - late final _sel_numberWithUnsignedShort_1 = - _registerName1("numberWithUnsignedShort:"); - late final _sel_numberWithInt_1 = _registerName1("numberWithInt:"); - late final _sel_numberWithUnsignedInt_1 = - _registerName1("numberWithUnsignedInt:"); - late final _sel_numberWithLong_1 = _registerName1("numberWithLong:"); - late final _sel_numberWithUnsignedLong_1 = - _registerName1("numberWithUnsignedLong:"); - late final _sel_numberWithLongLong_1 = _registerName1("numberWithLongLong:"); - late final _sel_numberWithUnsignedLongLong_1 = - _registerName1("numberWithUnsignedLongLong:"); - late final _sel_numberWithFloat_1 = _registerName1("numberWithFloat:"); - late final _sel_numberWithDouble_1 = _registerName1("numberWithDouble:"); - late final _sel_numberWithBool_1 = _registerName1("numberWithBool:"); - late final _sel_numberWithInteger_1 = _registerName1("numberWithInteger:"); - late final _sel_numberWithUnsignedInteger_1 = - _registerName1("numberWithUnsignedInteger:"); - late final _sel_port1 = _registerName1("port"); - late final _sel_user1 = _registerName1("user"); - late final _sel_password1 = _registerName1("password"); - late final _sel_path1 = _registerName1("path"); - late final _sel_fragment1 = _registerName1("fragment"); - late final _sel_parameterString1 = _registerName1("parameterString"); - late final _sel_query1 = _registerName1("query"); - late final _sel_relativePath1 = _registerName1("relativePath"); - late final _sel_hasDirectoryPath1 = _registerName1("hasDirectoryPath"); - late final _sel_getFileSystemRepresentation_maxLength_1 = - _registerName1("getFileSystemRepresentation:maxLength:"); - bool _objc_msgSend_242( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - int maxBufferLength, - ) { - return __objc_msgSend_242( - obj, - sel, - buffer, - maxBufferLength, - ); - } - - late final __objc_msgSend_242Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_242 = __objc_msgSend_242Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_fileSystemRepresentation1 = - _registerName1("fileSystemRepresentation"); - late final _sel_isFileURL1 = _registerName1("isFileURL"); - late final _sel_standardizedURL1 = _registerName1("standardizedURL"); - late final _sel_isFileReferenceURL1 = _registerName1("isFileReferenceURL"); - late final _sel_fileReferenceURL1 = _registerName1("fileReferenceURL"); - late final _sel_filePathURL1 = _registerName1("filePathURL"); - late final _sel_getResourceValue_forKey_error_1 = - _registerName1("getResourceValue:forKey:error:"); - bool _objc_msgSend_243( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> value, - ffi.Pointer key, - ffi.Pointer> error, - ) { - return __objc_msgSend_243( - obj, - sel, - value, - key, - error, - ); - } - - late final __objc_msgSend_243Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_243 = __objc_msgSend_243Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_resourceValuesForKeys_error_1 = - _registerName1("resourceValuesForKeys:error:"); - ffi.Pointer _objc_msgSend_244( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keys, - ffi.Pointer> error, - ) { - return __objc_msgSend_244( - obj, - sel, - keys, - error, - ); - } - - late final __objc_msgSend_244Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_244 = __objc_msgSend_244Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_setResourceValue_forKey_error_1 = - _registerName1("setResourceValue:forKey:error:"); - bool _objc_msgSend_245( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer key, - ffi.Pointer> error, - ) { - return __objc_msgSend_245( - obj, - sel, - value, - key, - error, - ); - } - - late final __objc_msgSend_245Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_245 = __objc_msgSend_245Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_setResourceValues_error_1 = - _registerName1("setResourceValues:error:"); - bool _objc_msgSend_246( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keyedValues, - ffi.Pointer> error, - ) { - return __objc_msgSend_246( - obj, - sel, - keyedValues, - error, - ); - } - - late final __objc_msgSend_246Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_246 = __objc_msgSend_246Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_removeCachedResourceValueForKey_1 = - _registerName1("removeCachedResourceValueForKey:"); - void _objc_msgSend_247( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_247( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_247Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_247 = __objc_msgSend_247Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeAllCachedResourceValues1 = - _registerName1("removeAllCachedResourceValues"); - late final _sel_setTemporaryResourceValue_forKey_1 = - _registerName1("setTemporaryResourceValue:forKey:"); - late final _sel_bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_1 = - _registerName1( - "bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:"); - ffi.Pointer _objc_msgSend_248( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ffi.Pointer keys, - ffi.Pointer relativeURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_248( - obj, - sel, - options, - keys, - relativeURL, - error, - ); - } - - late final __objc_msgSend_248Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_248 = __objc_msgSend_248Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1 = - _registerName1( - "initByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:"); - instancetype _objc_msgSend_249( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bookmarkData, - int options, - ffi.Pointer relativeURL, - ffi.Pointer isStale, - ffi.Pointer> error, - ) { - return __objc_msgSend_249( - obj, - sel, - bookmarkData, - options, - relativeURL, - isStale, - error, - ); - } - - late final __objc_msgSend_249Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_249 = __objc_msgSend_249Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1 = - _registerName1( - "URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:"); - late final _sel_resourceValuesForKeys_fromBookmarkData_1 = - _registerName1("resourceValuesForKeys:fromBookmarkData:"); - ffi.Pointer _objc_msgSend_250( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keys, - ffi.Pointer bookmarkData, - ) { - return __objc_msgSend_250( - obj, - sel, - keys, - bookmarkData, - ); - } - - late final __objc_msgSend_250Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_250 = __objc_msgSend_250Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_writeBookmarkData_toURL_options_error_1 = - _registerName1("writeBookmarkData:toURL:options:error:"); - bool _objc_msgSend_251( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bookmarkData, - ffi.Pointer bookmarkFileURL, - int options, - ffi.Pointer> error, - ) { - return __objc_msgSend_251( - obj, - sel, - bookmarkData, - bookmarkFileURL, - options, - error, - ); - } - - late final __objc_msgSend_251Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_251 = __objc_msgSend_251Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_bookmarkDataWithContentsOfURL_error_1 = - _registerName1("bookmarkDataWithContentsOfURL:error:"); - ffi.Pointer _objc_msgSend_252( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bookmarkFileURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_252( - obj, - sel, - bookmarkFileURL, - error, - ); - } - - late final __objc_msgSend_252Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_252 = __objc_msgSend_252Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_URLByResolvingAliasFileAtURL_options_error_1 = - _registerName1("URLByResolvingAliasFileAtURL:options:error:"); - instancetype _objc_msgSend_253( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int options, - ffi.Pointer> error, - ) { - return __objc_msgSend_253( - obj, - sel, - url, - options, - error, - ); - } - - late final __objc_msgSend_253Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_253 = __objc_msgSend_253Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_startAccessingSecurityScopedResource1 = - _registerName1("startAccessingSecurityScopedResource"); - late final _sel_stopAccessingSecurityScopedResource1 = - _registerName1("stopAccessingSecurityScopedResource"); - late final _sel_getPromisedItemResourceValue_forKey_error_1 = - _registerName1("getPromisedItemResourceValue:forKey:error:"); - late final _sel_promisedItemResourceValuesForKeys_error_1 = - _registerName1("promisedItemResourceValuesForKeys:error:"); - ffi.Pointer _objc_msgSend_254( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keys, - ffi.Pointer> error, - ) { - return __objc_msgSend_254( - obj, - sel, - keys, - error, - ); - } - - late final __objc_msgSend_254Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_254 = __objc_msgSend_254Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_checkPromisedItemIsReachableAndReturnError_1 = - _registerName1("checkPromisedItemIsReachableAndReturnError:"); - bool _objc_msgSend_255( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> error, - ) { - return __objc_msgSend_255( - obj, - sel, - error, - ); - } - - late final __objc_msgSend_255Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_255 = __objc_msgSend_255Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_fileURLWithPathComponents_1 = - _registerName1("fileURLWithPathComponents:"); - ffi.Pointer _objc_msgSend_256( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer components, - ) { - return __objc_msgSend_256( - obj, - sel, - components, - ); - } - - late final __objc_msgSend_256Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_256 = __objc_msgSend_256Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_pathComponents1 = _registerName1("pathComponents"); - late final _sel_lastPathComponent1 = _registerName1("lastPathComponent"); - late final _sel_pathExtension1 = _registerName1("pathExtension"); - late final _sel_URLByAppendingPathComponent_1 = - _registerName1("URLByAppendingPathComponent:"); - ffi.Pointer _objc_msgSend_257( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer pathComponent, - ) { - return __objc_msgSend_257( - obj, - sel, - pathComponent, - ); - } - - late final __objc_msgSend_257Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_257 = __objc_msgSend_257Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_URLByAppendingPathComponent_isDirectory_1 = - _registerName1("URLByAppendingPathComponent:isDirectory:"); - ffi.Pointer _objc_msgSend_258( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer pathComponent, - bool isDirectory, - ) { - return __objc_msgSend_258( - obj, - sel, - pathComponent, - isDirectory, - ); - } - - late final __objc_msgSend_258Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_258 = __objc_msgSend_258Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_URLByDeletingLastPathComponent1 = - _registerName1("URLByDeletingLastPathComponent"); - late final _sel_URLByAppendingPathExtension_1 = - _registerName1("URLByAppendingPathExtension:"); - late final _sel_URLByDeletingPathExtension1 = - _registerName1("URLByDeletingPathExtension"); - late final _sel_checkResourceIsReachableAndReturnError_1 = - _registerName1("checkResourceIsReachableAndReturnError:"); - late final _sel_URLByStandardizingPath1 = - _registerName1("URLByStandardizingPath"); - late final _sel_URLByResolvingSymlinksInPath1 = - _registerName1("URLByResolvingSymlinksInPath"); - late final _sel_resourceDataUsingCache_1 = - _registerName1("resourceDataUsingCache:"); - ffi.Pointer _objc_msgSend_259( - ffi.Pointer obj, - ffi.Pointer sel, - bool shouldUseCache, - ) { - return __objc_msgSend_259( - obj, - sel, - shouldUseCache, - ); - } - - late final __objc_msgSend_259Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_259 = __objc_msgSend_259Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_loadResourceDataNotifyingClient_usingCache_1 = - _registerName1("loadResourceDataNotifyingClient:usingCache:"); - void _objc_msgSend_260( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer client, - bool shouldUseCache, - ) { - return __objc_msgSend_260( - obj, - sel, - client, - shouldUseCache, - ); - } - - late final __objc_msgSend_260Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_260 = __objc_msgSend_260Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_propertyForKey_1 = _registerName1("propertyForKey:"); - late final _sel_setResourceData_1 = _registerName1("setResourceData:"); - late final _sel_setProperty_forKey_1 = _registerName1("setProperty:forKey:"); - bool _objc_msgSend_261( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer property, - ffi.Pointer propertyKey, - ) { - return __objc_msgSend_261( - obj, - sel, - property, - propertyKey, - ); - } - - late final __objc_msgSend_261Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_261 = __objc_msgSend_261Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSURLHandle1 = _getClass1("NSURLHandle"); - late final _sel_registerURLHandleClass_1 = - _registerName1("registerURLHandleClass:"); - late final _sel_URLHandleClassForURL_1 = - _registerName1("URLHandleClassForURL:"); - ffi.Pointer _objc_msgSend_262( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anURL, - ) { - return __objc_msgSend_262( - obj, - sel, - anURL, - ); - } - - late final __objc_msgSend_262Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_262 = __objc_msgSend_262Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_status1 = _registerName1("status"); - int _objc_msgSend_263( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_263( - obj, - sel, - ); - } - - late final __objc_msgSend_263Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_263 = __objc_msgSend_263Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_failureReason1 = _registerName1("failureReason"); - late final _sel_addClient_1 = _registerName1("addClient:"); - late final _sel_removeClient_1 = _registerName1("removeClient:"); - late final _sel_loadInBackground1 = _registerName1("loadInBackground"); - late final _sel_cancelLoadInBackground1 = - _registerName1("cancelLoadInBackground"); - late final _sel_resourceData1 = _registerName1("resourceData"); - late final _sel_availableResourceData1 = - _registerName1("availableResourceData"); - late final _sel_expectedResourceDataSize1 = - _registerName1("expectedResourceDataSize"); - late final _sel_flushCachedData1 = _registerName1("flushCachedData"); - late final _sel_backgroundLoadDidFailWithReason_1 = - _registerName1("backgroundLoadDidFailWithReason:"); - late final _sel_didLoadBytes_loadComplete_1 = - _registerName1("didLoadBytes:loadComplete:"); - void _objc_msgSend_264( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer newBytes, - bool yorn, - ) { - return __objc_msgSend_264( - obj, - sel, - newBytes, - yorn, - ); - } - - late final __objc_msgSend_264Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_264 = __objc_msgSend_264Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_canInitWithURL_1 = _registerName1("canInitWithURL:"); - bool _objc_msgSend_265( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anURL, - ) { - return __objc_msgSend_265( - obj, - sel, - anURL, - ); - } - - late final __objc_msgSend_265Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_265 = __objc_msgSend_265Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_cachedHandleForURL_1 = _registerName1("cachedHandleForURL:"); - ffi.Pointer _objc_msgSend_266( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anURL, - ) { - return __objc_msgSend_266( - obj, - sel, - anURL, - ); - } - - late final __objc_msgSend_266Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_266 = __objc_msgSend_266Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithURL_cached_1 = _registerName1("initWithURL:cached:"); - ffi.Pointer _objc_msgSend_267( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anURL, - bool willCache, - ) { - return __objc_msgSend_267( - obj, - sel, - anURL, - willCache, - ); - } - - late final __objc_msgSend_267Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_267 = __objc_msgSend_267Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_propertyForKeyIfAvailable_1 = - _registerName1("propertyForKeyIfAvailable:"); - late final _sel_writeProperty_forKey_1 = - _registerName1("writeProperty:forKey:"); - late final _sel_writeData_1 = _registerName1("writeData:"); - late final _sel_loadInForeground1 = _registerName1("loadInForeground"); - late final _sel_beginLoadInBackground1 = - _registerName1("beginLoadInBackground"); - late final _sel_endLoadInBackground1 = _registerName1("endLoadInBackground"); - late final _sel_URLHandleUsingCache_1 = - _registerName1("URLHandleUsingCache:"); - ffi.Pointer _objc_msgSend_268( - ffi.Pointer obj, - ffi.Pointer sel, - bool shouldUseCache, - ) { - return __objc_msgSend_268( - obj, - sel, - shouldUseCache, - ); - } - - late final __objc_msgSend_268Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_268 = __objc_msgSend_268Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_writeToFile_options_error_1 = - _registerName1("writeToFile:options:error:"); - bool _objc_msgSend_269( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - int writeOptionsMask, - ffi.Pointer> errorPtr, - ) { - return __objc_msgSend_269( - obj, - sel, - path, - writeOptionsMask, - errorPtr, - ); - } - - late final __objc_msgSend_269Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_269 = __objc_msgSend_269Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_writeToURL_options_error_1 = - _registerName1("writeToURL:options:error:"); - bool _objc_msgSend_270( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int writeOptionsMask, - ffi.Pointer> errorPtr, - ) { - return __objc_msgSend_270( - obj, - sel, - url, - writeOptionsMask, - errorPtr, - ); - } - - late final __objc_msgSend_270Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_270 = __objc_msgSend_270Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_rangeOfData_options_range_1 = - _registerName1("rangeOfData:options:range:"); - _NSRange _objc_msgSend_271( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer dataToFind, - int mask, - _NSRange searchRange, - ) { - return __objc_msgSend_271( - obj, - sel, - dataToFind, - mask, - searchRange, - ); - } - - late final __objc_msgSend_271Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_271 = __objc_msgSend_271Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange)>(); - - void _objc_msgSend_271_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer dataToFind, - int mask, - _NSRange searchRange, - ) { - return __objc_msgSend_271_stret( - stret, - obj, - sel, - dataToFind, - mask, - searchRange, - ); - } - - late final __objc_msgSend_271_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend_stret'); - late final __objc_msgSend_271_stret = __objc_msgSend_271_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - - late final _sel_enumerateByteRangesUsingBlock_1 = - _registerName1("enumerateByteRangesUsingBlock:"); - void _objc_msgSend_272( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_272( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_272Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_272 = __objc_msgSend_272Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_dataWithBytes_length_1 = - _registerName1("dataWithBytes:length:"); - instancetype _objc_msgSend_273( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int length, - ) { - return __objc_msgSend_273( - obj, - sel, - bytes, - length, - ); - } - - late final __objc_msgSend_273Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_273 = __objc_msgSend_273Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_dataWithBytesNoCopy_length_1 = - _registerName1("dataWithBytesNoCopy:length:"); - late final _sel_dataWithBytesNoCopy_length_freeWhenDone_1 = - _registerName1("dataWithBytesNoCopy:length:freeWhenDone:"); - instancetype _objc_msgSend_274( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int length, - bool b, - ) { - return __objc_msgSend_274( - obj, - sel, - bytes, - length, - b, - ); - } - - late final __objc_msgSend_274Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_274 = __objc_msgSend_274Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, bool)>(); - - late final _sel_dataWithContentsOfFile_options_error_1 = - _registerName1("dataWithContentsOfFile:options:error:"); - instancetype _objc_msgSend_275( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - int readOptionsMask, - ffi.Pointer> errorPtr, - ) { - return __objc_msgSend_275( - obj, - sel, - path, - readOptionsMask, - errorPtr, - ); - } - - late final __objc_msgSend_275Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_275 = __objc_msgSend_275Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_dataWithContentsOfURL_options_error_1 = - _registerName1("dataWithContentsOfURL:options:error:"); - instancetype _objc_msgSend_276( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int readOptionsMask, - ffi.Pointer> errorPtr, - ) { - return __objc_msgSend_276( - obj, - sel, - url, - readOptionsMask, - errorPtr, - ); - } - - late final __objc_msgSend_276Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_276 = __objc_msgSend_276Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_dataWithContentsOfFile_1 = - _registerName1("dataWithContentsOfFile:"); - late final _sel_dataWithContentsOfURL_1 = - _registerName1("dataWithContentsOfURL:"); - instancetype _objc_msgSend_277( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_277( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_277Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_277 = __objc_msgSend_277Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithBytes_length_1 = - _registerName1("initWithBytes:length:"); - late final _sel_initWithBytesNoCopy_length_1 = - _registerName1("initWithBytesNoCopy:length:"); - late final _sel_initWithBytesNoCopy_length_freeWhenDone_1 = - _registerName1("initWithBytesNoCopy:length:freeWhenDone:"); - late final _sel_initWithBytesNoCopy_length_deallocator_1 = - _registerName1("initWithBytesNoCopy:length:deallocator:"); - instancetype _objc_msgSend_278( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int length, - ffi.Pointer<_ObjCBlock> deallocator, - ) { - return __objc_msgSend_278( - obj, - sel, - bytes, - length, - deallocator, - ); - } - - late final __objc_msgSend_278Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_278 = __objc_msgSend_278Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_initWithContentsOfFile_options_error_1 = - _registerName1("initWithContentsOfFile:options:error:"); - late final _sel_initWithContentsOfURL_options_error_1 = - _registerName1("initWithContentsOfURL:options:error:"); - late final _sel_initWithData_1 = _registerName1("initWithData:"); - instancetype _objc_msgSend_279( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ) { - return __objc_msgSend_279( - obj, - sel, - data, - ); - } - - late final __objc_msgSend_279Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_279 = __objc_msgSend_279Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_dataWithData_1 = _registerName1("dataWithData:"); - late final _sel_initWithBase64EncodedString_options_1 = - _registerName1("initWithBase64EncodedString:options:"); - instancetype _objc_msgSend_280( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer base64String, - int options, - ) { - return __objc_msgSend_280( - obj, - sel, - base64String, - options, - ); - } - - late final __objc_msgSend_280Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_280 = __objc_msgSend_280Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_base64EncodedStringWithOptions_1 = - _registerName1("base64EncodedStringWithOptions:"); - ffi.Pointer _objc_msgSend_281( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_281( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_281Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_281 = __objc_msgSend_281Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithBase64EncodedData_options_1 = - _registerName1("initWithBase64EncodedData:options:"); - instancetype _objc_msgSend_282( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer base64Data, - int options, - ) { - return __objc_msgSend_282( - obj, - sel, - base64Data, - options, - ); - } - - late final __objc_msgSend_282Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_282 = __objc_msgSend_282Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_base64EncodedDataWithOptions_1 = - _registerName1("base64EncodedDataWithOptions:"); - ffi.Pointer _objc_msgSend_283( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_283( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_283Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_283 = __objc_msgSend_283Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_decompressedDataUsingAlgorithm_error_1 = - _registerName1("decompressedDataUsingAlgorithm:error:"); - instancetype _objc_msgSend_284( - ffi.Pointer obj, - ffi.Pointer sel, - int algorithm, - ffi.Pointer> error, - ) { - return __objc_msgSend_284( - obj, - sel, - algorithm, - error, - ); - } - - late final __objc_msgSend_284Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_284 = __objc_msgSend_284Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer>)>(); - - late final _sel_compressedDataUsingAlgorithm_error_1 = - _registerName1("compressedDataUsingAlgorithm:error:"); - late final _sel_getBytes_1 = _registerName1("getBytes:"); - late final _sel_dataWithContentsOfMappedFile_1 = - _registerName1("dataWithContentsOfMappedFile:"); - late final _sel_initWithContentsOfMappedFile_1 = - _registerName1("initWithContentsOfMappedFile:"); - late final _sel_initWithBase64Encoding_1 = - _registerName1("initWithBase64Encoding:"); - late final _sel_base64Encoding1 = _registerName1("base64Encoding"); - late final _sel_encodeDataObject_1 = _registerName1("encodeDataObject:"); - void _objc_msgSend_285( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ) { - return __objc_msgSend_285( - obj, - sel, - data, - ); - } - - late final __objc_msgSend_285Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_285 = __objc_msgSend_285Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeDataObject1 = _registerName1("decodeDataObject"); - ffi.Pointer _objc_msgSend_286( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_286( - obj, - sel, - ); - } - - late final __objc_msgSend_286Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_286 = __objc_msgSend_286Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_decodeValueOfObjCType_at_size_1 = - _registerName1("decodeValueOfObjCType:at:size:"); - void _objc_msgSend_287( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer type, - ffi.Pointer data, - int size, - ) { - return __objc_msgSend_287( - obj, - sel, - type, - data, - size, - ); - } - - late final __objc_msgSend_287Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_287 = __objc_msgSend_287Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_versionForClassName_1 = - _registerName1("versionForClassName:"); - int _objc_msgSend_288( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer className, - ) { - return __objc_msgSend_288( - obj, - sel, - className, - ); - } - - late final __objc_msgSend_288Ptr = _lookup< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_288 = __objc_msgSend_288Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_encodeObject_1 = _registerName1("encodeObject:"); - void _objc_msgSend_289( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer object, - ) { - return __objc_msgSend_289( - obj, - sel, - object, - ); - } - - late final __objc_msgSend_289Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_289 = __objc_msgSend_289Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_encodeRootObject_1 = _registerName1("encodeRootObject:"); - late final _sel_encodeBycopyObject_1 = _registerName1("encodeBycopyObject:"); - late final _sel_encodeByrefObject_1 = _registerName1("encodeByrefObject:"); - late final _sel_encodeConditionalObject_1 = - _registerName1("encodeConditionalObject:"); - late final _sel_encodeValuesOfObjCTypes_1 = - _registerName1("encodeValuesOfObjCTypes:"); - void _objc_msgSend_290( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer types, - ) { - return __objc_msgSend_290( - obj, - sel, - types, - ); - } - - late final __objc_msgSend_290Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_290 = __objc_msgSend_290Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_encodeArrayOfObjCType_count_at_1 = - _registerName1("encodeArrayOfObjCType:count:at:"); - void _objc_msgSend_291( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer type, - int count, - ffi.Pointer array, - ) { - return __objc_msgSend_291( - obj, - sel, - type, - count, - array, - ); - } - - late final __objc_msgSend_291Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_291 = __objc_msgSend_291Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_encodeBytes_length_1 = _registerName1("encodeBytes:length:"); - late final _sel_decodeObject1 = _registerName1("decodeObject"); - late final _sel_decodeTopLevelObjectAndReturnError_1 = - _registerName1("decodeTopLevelObjectAndReturnError:"); - ffi.Pointer _objc_msgSend_292( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> error, - ) { - return __objc_msgSend_292( - obj, - sel, - error, - ); - } - - late final __objc_msgSend_292Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_292 = __objc_msgSend_292Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_decodeValuesOfObjCTypes_1 = - _registerName1("decodeValuesOfObjCTypes:"); - late final _sel_decodeArrayOfObjCType_count_at_1 = - _registerName1("decodeArrayOfObjCType:count:at:"); - late final _sel_decodeBytesWithReturnedLength_1 = - _registerName1("decodeBytesWithReturnedLength:"); - ffi.Pointer _objc_msgSend_293( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer lengthp, - ) { - return __objc_msgSend_293( - obj, - sel, - lengthp, - ); - } - - late final __objc_msgSend_293Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_293 = __objc_msgSend_293Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_encodePropertyList_1 = _registerName1("encodePropertyList:"); - late final _sel_decodePropertyList1 = _registerName1("decodePropertyList"); - late final _sel_setObjectZone_1 = _registerName1("setObjectZone:"); - void _objc_msgSend_294( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_NSZone> zone, - ) { - return __objc_msgSend_294( - obj, - sel, - zone, - ); - } - - late final __objc_msgSend_294Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_NSZone>)>>('objc_msgSend'); - late final __objc_msgSend_294 = __objc_msgSend_294Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_NSZone>)>(); - - late final _sel_objectZone1 = _registerName1("objectZone"); - ffi.Pointer<_NSZone> _objc_msgSend_295( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_295( - obj, - sel, - ); - } - - late final __objc_msgSend_295Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<_NSZone> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_295 = __objc_msgSend_295Ptr.asFunction< - ffi.Pointer<_NSZone> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_systemVersion1 = _registerName1("systemVersion"); - late final _sel_allowsKeyedCoding1 = _registerName1("allowsKeyedCoding"); - late final _sel_encodeObject_forKey_1 = - _registerName1("encodeObject:forKey:"); - late final _sel_encodeConditionalObject_forKey_1 = - _registerName1("encodeConditionalObject:forKey:"); - late final _sel_encodeBool_forKey_1 = _registerName1("encodeBool:forKey:"); - void _objc_msgSend_296( - ffi.Pointer obj, - ffi.Pointer sel, - bool value, - ffi.Pointer key, - ) { - return __objc_msgSend_296( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_296Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Bool, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_296 = __objc_msgSend_296Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, bool, - ffi.Pointer)>(); - - late final _sel_encodeInt_forKey_1 = _registerName1("encodeInt:forKey:"); - void _objc_msgSend_297( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ffi.Pointer key, - ) { - return __objc_msgSend_297( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_297Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_297 = __objc_msgSend_297Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_encodeInt32_forKey_1 = _registerName1("encodeInt32:forKey:"); - void _objc_msgSend_298( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ffi.Pointer key, - ) { - return __objc_msgSend_298( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_298Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_298 = __objc_msgSend_298Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_encodeInt64_forKey_1 = _registerName1("encodeInt64:forKey:"); - void _objc_msgSend_299( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ffi.Pointer key, - ) { - return __objc_msgSend_299( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_299Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int64, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_299 = __objc_msgSend_299Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_encodeFloat_forKey_1 = _registerName1("encodeFloat:forKey:"); - void _objc_msgSend_300( - ffi.Pointer obj, - ffi.Pointer sel, - double value, - ffi.Pointer key, - ) { - return __objc_msgSend_300( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_300Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Float, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_300 = __objc_msgSend_300Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, double, - ffi.Pointer)>(); - - late final _sel_encodeDouble_forKey_1 = - _registerName1("encodeDouble:forKey:"); - void _objc_msgSend_301( - ffi.Pointer obj, - ffi.Pointer sel, - double value, - ffi.Pointer key, - ) { - return __objc_msgSend_301( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_301Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Double, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_301 = __objc_msgSend_301Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, double, - ffi.Pointer)>(); - - late final _sel_encodeBytes_length_forKey_1 = - _registerName1("encodeBytes:length:forKey:"); - void _objc_msgSend_302( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int length, - ffi.Pointer key, - ) { - return __objc_msgSend_302( - obj, - sel, - bytes, - length, - key, - ); - } - - late final __objc_msgSend_302Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_302 = __objc_msgSend_302Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_containsValueForKey_1 = - _registerName1("containsValueForKey:"); - late final _sel_decodeObjectForKey_1 = _registerName1("decodeObjectForKey:"); - late final _sel_decodeTopLevelObjectForKey_error_1 = - _registerName1("decodeTopLevelObjectForKey:error:"); - ffi.Pointer _objc_msgSend_303( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer> error, - ) { - return __objc_msgSend_303( - obj, - sel, - key, - error, - ); - } - - late final __objc_msgSend_303Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_303 = __objc_msgSend_303Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_decodeBoolForKey_1 = _registerName1("decodeBoolForKey:"); - late final _sel_decodeIntForKey_1 = _registerName1("decodeIntForKey:"); - int _objc_msgSend_304( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_304( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_304Ptr = _lookup< - ffi.NativeFunction< - ffi.Int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_304 = __objc_msgSend_304Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeInt32ForKey_1 = _registerName1("decodeInt32ForKey:"); - int _objc_msgSend_305( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_305( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_305Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_305 = __objc_msgSend_305Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeInt64ForKey_1 = _registerName1("decodeInt64ForKey:"); - int _objc_msgSend_306( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_306( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_306Ptr = _lookup< - ffi.NativeFunction< - ffi.Int64 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_306 = __objc_msgSend_306Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeFloatForKey_1 = _registerName1("decodeFloatForKey:"); - double _objc_msgSend_307( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_307( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_307Ptr = _lookup< - ffi.NativeFunction< - ffi.Float Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_307 = __objc_msgSend_307Ptr.asFunction< - double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - double _objc_msgSend_307_fpret( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_307_fpret( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_307_fpretPtr = _lookup< - ffi.NativeFunction< - ffi.Float Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_fpret'); - late final __objc_msgSend_307_fpret = __objc_msgSend_307_fpretPtr.asFunction< - double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeDoubleForKey_1 = _registerName1("decodeDoubleForKey:"); - double _objc_msgSend_308( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_308( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_308Ptr = _lookup< - ffi.NativeFunction< - ffi.Double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_308 = __objc_msgSend_308Ptr.asFunction< - double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - double _objc_msgSend_308_fpret( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_308_fpret( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_308_fpretPtr = _lookup< - ffi.NativeFunction< - ffi.Double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_fpret'); - late final __objc_msgSend_308_fpret = __objc_msgSend_308_fpretPtr.asFunction< - double Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeBytesForKey_returnedLength_1 = - _registerName1("decodeBytesForKey:returnedLength:"); - ffi.Pointer _objc_msgSend_309( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer lengthp, - ) { - return __objc_msgSend_309( - obj, - sel, - key, - lengthp, - ); - } - - late final __objc_msgSend_309Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_309 = __objc_msgSend_309Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_encodeInteger_forKey_1 = - _registerName1("encodeInteger:forKey:"); - void _objc_msgSend_310( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ffi.Pointer key, - ) { - return __objc_msgSend_310( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_310Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Long, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_310 = __objc_msgSend_310Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_decodeIntegerForKey_1 = - _registerName1("decodeIntegerForKey:"); - late final _sel_requiresSecureCoding1 = - _registerName1("requiresSecureCoding"); - late final _sel_decodeObjectOfClass_forKey_1 = - _registerName1("decodeObjectOfClass:forKey:"); - ffi.Pointer _objc_msgSend_311( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aClass, - ffi.Pointer key, - ) { - return __objc_msgSend_311( - obj, - sel, - aClass, - key, - ); - } - - late final __objc_msgSend_311Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_311 = __objc_msgSend_311Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeTopLevelObjectOfClass_forKey_error_1 = - _registerName1("decodeTopLevelObjectOfClass:forKey:error:"); - ffi.Pointer _objc_msgSend_312( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aClass, - ffi.Pointer key, - ffi.Pointer> error, - ) { - return __objc_msgSend_312( - obj, - sel, - aClass, - key, - error, - ); - } - - late final __objc_msgSend_312Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_312 = __objc_msgSend_312Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_decodeArrayOfObjectsOfClass_forKey_1 = - _registerName1("decodeArrayOfObjectsOfClass:forKey:"); - ffi.Pointer _objc_msgSend_313( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer cls, - ffi.Pointer key, - ) { - return __objc_msgSend_313( - obj, - sel, - cls, - key, - ); - } - - late final __objc_msgSend_313Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_313 = __objc_msgSend_313Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeDictionaryWithKeysOfClass_objectsOfClass_forKey_1 = - _registerName1("decodeDictionaryWithKeysOfClass:objectsOfClass:forKey:"); - ffi.Pointer _objc_msgSend_314( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keyCls, - ffi.Pointer objectCls, - ffi.Pointer key, - ) { - return __objc_msgSend_314( - obj, - sel, - keyCls, - objectCls, - key, - ); - } - - late final __objc_msgSend_314Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_314 = __objc_msgSend_314Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeObjectOfClasses_forKey_1 = - _registerName1("decodeObjectOfClasses:forKey:"); - ffi.Pointer _objc_msgSend_315( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer classes, - ffi.Pointer key, - ) { - return __objc_msgSend_315( - obj, - sel, - classes, - key, - ); - } - - late final __objc_msgSend_315Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_315 = __objc_msgSend_315Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeTopLevelObjectOfClasses_forKey_error_1 = - _registerName1("decodeTopLevelObjectOfClasses:forKey:error:"); - ffi.Pointer _objc_msgSend_316( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer classes, - ffi.Pointer key, - ffi.Pointer> error, - ) { - return __objc_msgSend_316( - obj, - sel, - classes, - key, - error, - ); - } - - late final __objc_msgSend_316Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_316 = __objc_msgSend_316Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_decodeArrayOfObjectsOfClasses_forKey_1 = - _registerName1("decodeArrayOfObjectsOfClasses:forKey:"); - ffi.Pointer _objc_msgSend_317( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer classes, - ffi.Pointer key, - ) { - return __objc_msgSend_317( - obj, - sel, - classes, - key, - ); - } - - late final __objc_msgSend_317Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_317 = __objc_msgSend_317Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodeDictionaryWithKeysOfClasses_objectsOfClasses_forKey_1 = - _registerName1( - "decodeDictionaryWithKeysOfClasses:objectsOfClasses:forKey:"); - ffi.Pointer _objc_msgSend_318( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keyClasses, - ffi.Pointer objectClasses, - ffi.Pointer key, - ) { - return __objc_msgSend_318( - obj, - sel, - keyClasses, - objectClasses, - key, - ); - } - - late final __objc_msgSend_318Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_318 = __objc_msgSend_318Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodePropertyListForKey_1 = - _registerName1("decodePropertyListForKey:"); - late final _sel_allowedClasses1 = _registerName1("allowedClasses"); - ffi.Pointer _objc_msgSend_319( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_319( - obj, - sel, - ); - } - - late final __objc_msgSend_319Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_319 = __objc_msgSend_319Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_failWithError_1 = _registerName1("failWithError:"); - void _objc_msgSend_320( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer error, - ) { - return __objc_msgSend_320( - obj, - sel, - error, - ); - } - - late final __objc_msgSend_320Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_320 = __objc_msgSend_320Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodingFailurePolicy1 = - _registerName1("decodingFailurePolicy"); - int _objc_msgSend_321( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_321( - obj, - sel, - ); - } - - late final __objc_msgSend_321Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_321 = __objc_msgSend_321Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_error1 = _registerName1("error"); - ffi.Pointer _objc_msgSend_322( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_322( - obj, - sel, - ); - } - - late final __objc_msgSend_322Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_322 = __objc_msgSend_322Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_encodeNXObject_1 = _registerName1("encodeNXObject:"); - late final _sel_decodeNXObject1 = _registerName1("decodeNXObject"); - late final _sel_decodeValueOfObjCType_at_1 = - _registerName1("decodeValueOfObjCType:at:"); - late final _sel_encodePoint_1 = _registerName1("encodePoint:"); - void _objc_msgSend_323( - ffi.Pointer obj, - ffi.Pointer sel, - CGPoint point, - ) { - return __objc_msgSend_323( - obj, - sel, - point, - ); - } - - late final __objc_msgSend_323Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - CGPoint)>>('objc_msgSend'); - late final __objc_msgSend_323 = __objc_msgSend_323Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, CGPoint)>(); - - late final _sel_decodePoint1 = _registerName1("decodePoint"); - late final _sel_encodeSize_1 = _registerName1("encodeSize:"); - void _objc_msgSend_324( - ffi.Pointer obj, - ffi.Pointer sel, - CGSize size, - ) { - return __objc_msgSend_324( - obj, - sel, - size, - ); - } - - late final __objc_msgSend_324Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - CGSize)>>('objc_msgSend'); - late final __objc_msgSend_324 = __objc_msgSend_324Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, CGSize)>(); - - late final _sel_decodeSize1 = _registerName1("decodeSize"); - late final _sel_encodeRect_1 = _registerName1("encodeRect:"); - void _objc_msgSend_325( - ffi.Pointer obj, - ffi.Pointer sel, - CGRect rect, - ) { - return __objc_msgSend_325( - obj, - sel, - rect, - ); - } - - late final __objc_msgSend_325Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - CGRect)>>('objc_msgSend'); - late final __objc_msgSend_325 = __objc_msgSend_325Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, CGRect)>(); - - late final _sel_decodeRect1 = _registerName1("decodeRect"); - late final _sel_encodePoint_forKey_1 = _registerName1("encodePoint:forKey:"); - void _objc_msgSend_326( - ffi.Pointer obj, - ffi.Pointer sel, - CGPoint point, - ffi.Pointer key, - ) { - return __objc_msgSend_326( - obj, - sel, - point, - key, - ); - } - - late final __objc_msgSend_326Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - CGPoint, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_326 = __objc_msgSend_326Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, CGPoint, - ffi.Pointer)>(); - - late final _sel_encodeSize_forKey_1 = _registerName1("encodeSize:forKey:"); - void _objc_msgSend_327( - ffi.Pointer obj, - ffi.Pointer sel, - CGSize size, - ffi.Pointer key, - ) { - return __objc_msgSend_327( - obj, - sel, - size, - key, - ); - } - - late final __objc_msgSend_327Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - CGSize, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_327 = __objc_msgSend_327Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, CGSize, - ffi.Pointer)>(); - - late final _sel_encodeRect_forKey_1 = _registerName1("encodeRect:forKey:"); - void _objc_msgSend_328( - ffi.Pointer obj, - ffi.Pointer sel, - CGRect rect, - ffi.Pointer key, - ) { - return __objc_msgSend_328( - obj, - sel, - rect, - key, - ); - } - - late final __objc_msgSend_328Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - CGRect, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_328 = __objc_msgSend_328Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, CGRect, - ffi.Pointer)>(); - - late final _sel_decodePointForKey_1 = _registerName1("decodePointForKey:"); - CGPoint _objc_msgSend_329( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_329( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_329Ptr = _lookup< - ffi.NativeFunction< - CGPoint Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_329 = __objc_msgSend_329Ptr.asFunction< - CGPoint Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - void _objc_msgSend_329_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_329_stret( - stret, - obj, - sel, - key, - ); - } - - late final __objc_msgSend_329_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_329_stret = __objc_msgSend_329_stretPtr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_decodeSizeForKey_1 = _registerName1("decodeSizeForKey:"); - CGSize _objc_msgSend_330( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_330( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_330Ptr = _lookup< - ffi.NativeFunction< - CGSize Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_330 = __objc_msgSend_330Ptr.asFunction< - CGSize Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - void _objc_msgSend_330_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_330_stret( - stret, - obj, - sel, - key, - ); - } - - late final __objc_msgSend_330_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_330_stret = __objc_msgSend_330_stretPtr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_decodeRectForKey_1 = _registerName1("decodeRectForKey:"); - CGRect _objc_msgSend_331( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_331( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_331Ptr = _lookup< - ffi.NativeFunction< - CGRect Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_331 = __objc_msgSend_331Ptr.asFunction< - CGRect Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - void _objc_msgSend_331_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_331_stret( - stret, - obj, - sel, - key, - ); - } - - late final __objc_msgSend_331_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_331_stret = __objc_msgSend_331_stretPtr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_substringFromIndex_1 = _registerName1("substringFromIndex:"); - ffi.Pointer _objc_msgSend_332( - ffi.Pointer obj, - ffi.Pointer sel, - int from, - ) { - return __objc_msgSend_332( - obj, - sel, - from, - ); - } - - late final __objc_msgSend_332Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_332 = __objc_msgSend_332Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_substringToIndex_1 = _registerName1("substringToIndex:"); - late final _sel_substringWithRange_1 = _registerName1("substringWithRange:"); - ffi.Pointer _objc_msgSend_333( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_333( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_333Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_333 = __objc_msgSend_333Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_getCharacters_range_1 = - _registerName1("getCharacters:range:"); - void _objc_msgSend_334( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - _NSRange range, - ) { - return __objc_msgSend_334( - obj, - sel, - buffer, - range, - ); - } - - late final __objc_msgSend_334Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_334 = __objc_msgSend_334Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - int _objc_msgSend_335( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - ) { - return __objc_msgSend_335( - obj, - sel, - string, - ); - } - - late final __objc_msgSend_335Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_335 = __objc_msgSend_335Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_compare_options_1 = _registerName1("compare:options:"); - int _objc_msgSend_336( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int mask, - ) { - return __objc_msgSend_336( - obj, - sel, - string, - mask, - ); - } - - late final __objc_msgSend_336Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_336 = __objc_msgSend_336Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_compare_options_range_1 = - _registerName1("compare:options:range:"); - int _objc_msgSend_337( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int mask, - _NSRange rangeOfReceiverToCompare, - ) { - return __objc_msgSend_337( - obj, - sel, - string, - mask, - rangeOfReceiverToCompare, - ); - } - - late final __objc_msgSend_337Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_337 = __objc_msgSend_337Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange)>(); - - late final _sel_compare_options_range_locale_1 = - _registerName1("compare:options:range:locale:"); - int _objc_msgSend_338( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int mask, - _NSRange rangeOfReceiverToCompare, - ffi.Pointer locale, - ) { - return __objc_msgSend_338( - obj, - sel, - string, - mask, - rangeOfReceiverToCompare, - locale, - ); - } - - late final __objc_msgSend_338Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_338 = __objc_msgSend_338Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange, ffi.Pointer)>(); - - late final _sel_caseInsensitiveCompare_1 = - _registerName1("caseInsensitiveCompare:"); - late final _sel_localizedCompare_1 = _registerName1("localizedCompare:"); - late final _sel_localizedCaseInsensitiveCompare_1 = - _registerName1("localizedCaseInsensitiveCompare:"); - late final _sel_localizedStandardCompare_1 = - _registerName1("localizedStandardCompare:"); - late final _sel_isEqualToString_1 = _registerName1("isEqualToString:"); - late final _sel_hasPrefix_1 = _registerName1("hasPrefix:"); - late final _sel_hasSuffix_1 = _registerName1("hasSuffix:"); - late final _sel_commonPrefixWithString_options_1 = - _registerName1("commonPrefixWithString:options:"); - ffi.Pointer _objc_msgSend_339( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer str, - int mask, - ) { - return __objc_msgSend_339( - obj, - sel, - str, - mask, - ); - } - - late final __objc_msgSend_339Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_339 = __objc_msgSend_339Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_containsString_1 = _registerName1("containsString:"); - late final _sel_localizedCaseInsensitiveContainsString_1 = - _registerName1("localizedCaseInsensitiveContainsString:"); - late final _sel_localizedStandardContainsString_1 = - _registerName1("localizedStandardContainsString:"); - late final _sel_localizedStandardRangeOfString_1 = - _registerName1("localizedStandardRangeOfString:"); - _NSRange _objc_msgSend_340( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer str, - ) { - return __objc_msgSend_340( - obj, - sel, - str, - ); - } - - late final __objc_msgSend_340Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_340 = __objc_msgSend_340Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - void _objc_msgSend_340_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer str, - ) { - return __objc_msgSend_340_stret( - stret, - obj, - sel, - str, - ); - } - - late final __objc_msgSend_340_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_340_stret = __objc_msgSend_340_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_rangeOfString_1 = _registerName1("rangeOfString:"); - late final _sel_rangeOfString_options_1 = - _registerName1("rangeOfString:options:"); - _NSRange _objc_msgSend_341( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchString, - int mask, - ) { - return __objc_msgSend_341( - obj, - sel, - searchString, - mask, - ); - } - - late final __objc_msgSend_341Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_341 = __objc_msgSend_341Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - void _objc_msgSend_341_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchString, - int mask, - ) { - return __objc_msgSend_341_stret( - stret, - obj, - sel, - searchString, - mask, - ); - } - - late final __objc_msgSend_341_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend_stret'); - late final __objc_msgSend_341_stret = __objc_msgSend_341_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_rangeOfString_options_range_1 = - _registerName1("rangeOfString:options:range:"); - _NSRange _objc_msgSend_342( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchString, - int mask, - _NSRange rangeOfReceiverToSearch, - ) { - return __objc_msgSend_342( - obj, - sel, - searchString, - mask, - rangeOfReceiverToSearch, - ); - } - - late final __objc_msgSend_342Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_342 = __objc_msgSend_342Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange)>(); - - void _objc_msgSend_342_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchString, - int mask, - _NSRange rangeOfReceiverToSearch, - ) { - return __objc_msgSend_342_stret( - stret, - obj, - sel, - searchString, - mask, - rangeOfReceiverToSearch, - ); - } - - late final __objc_msgSend_342_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend_stret'); - late final __objc_msgSend_342_stret = __objc_msgSend_342_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - - late final _sel_rangeOfString_options_range_locale_1 = - _registerName1("rangeOfString:options:range:locale:"); - _NSRange _objc_msgSend_343( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchString, - int mask, - _NSRange rangeOfReceiverToSearch, - ffi.Pointer locale, - ) { - return __objc_msgSend_343( - obj, - sel, - searchString, - mask, - rangeOfReceiverToSearch, - locale, - ); - } - - late final __objc_msgSend_343Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_343 = __objc_msgSend_343Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange, ffi.Pointer)>(); - - void _objc_msgSend_343_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchString, - int mask, - _NSRange rangeOfReceiverToSearch, - ffi.Pointer locale, - ) { - return __objc_msgSend_343_stret( - stret, - obj, - sel, - searchString, - mask, - rangeOfReceiverToSearch, - locale, - ); - } - - late final __objc_msgSend_343_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_343_stret = __objc_msgSend_343_stretPtr.asFunction< - void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - _NSRange, - ffi.Pointer)>(); - - late final _sel_rangeOfCharacterFromSet_1 = - _registerName1("rangeOfCharacterFromSet:"); - _NSRange _objc_msgSend_344( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchSet, - ) { - return __objc_msgSend_344( - obj, - sel, - searchSet, - ); - } - - late final __objc_msgSend_344Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_344 = __objc_msgSend_344Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - void _objc_msgSend_344_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchSet, - ) { - return __objc_msgSend_344_stret( - stret, - obj, - sel, - searchSet, - ); - } - - late final __objc_msgSend_344_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_344_stret = __objc_msgSend_344_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_rangeOfCharacterFromSet_options_1 = - _registerName1("rangeOfCharacterFromSet:options:"); - _NSRange _objc_msgSend_345( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchSet, - int mask, - ) { - return __objc_msgSend_345( - obj, - sel, - searchSet, - mask, - ); - } - - late final __objc_msgSend_345Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_345 = __objc_msgSend_345Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - void _objc_msgSend_345_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchSet, - int mask, - ) { - return __objc_msgSend_345_stret( - stret, - obj, - sel, - searchSet, - mask, - ); - } - - late final __objc_msgSend_345_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend_stret'); - late final __objc_msgSend_345_stret = __objc_msgSend_345_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_rangeOfCharacterFromSet_options_range_1 = - _registerName1("rangeOfCharacterFromSet:options:range:"); - _NSRange _objc_msgSend_346( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchSet, - int mask, - _NSRange rangeOfReceiverToSearch, - ) { - return __objc_msgSend_346( - obj, - sel, - searchSet, - mask, - rangeOfReceiverToSearch, - ); - } - - late final __objc_msgSend_346Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_346 = __objc_msgSend_346Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange)>(); - - void _objc_msgSend_346_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer searchSet, - int mask, - _NSRange rangeOfReceiverToSearch, - ) { - return __objc_msgSend_346_stret( - stret, - obj, - sel, - searchSet, - mask, - rangeOfReceiverToSearch, - ); - } - - late final __objc_msgSend_346_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend_stret'); - late final __objc_msgSend_346_stret = __objc_msgSend_346_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - - late final _sel_rangeOfComposedCharacterSequenceAtIndex_1 = - _registerName1("rangeOfComposedCharacterSequenceAtIndex:"); - _NSRange _objc_msgSend_347( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_347( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_347Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_347 = __objc_msgSend_347Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, int)>(); - - void _objc_msgSend_347_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_347_stret( - stret, - obj, - sel, - index, - ); - } - - late final __objc_msgSend_347_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend_stret'); - late final __objc_msgSend_347_stret = __objc_msgSend_347_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_rangeOfComposedCharacterSequencesForRange_1 = - _registerName1("rangeOfComposedCharacterSequencesForRange:"); - _NSRange _objc_msgSend_348( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_348( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_348Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_348 = __objc_msgSend_348Ptr.asFunction< - _NSRange Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - void _objc_msgSend_348_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_348_stret( - stret, - obj, - sel, - range, - ); - } - - late final __objc_msgSend_348_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend_stret'); - late final __objc_msgSend_348_stret = __objc_msgSend_348_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - late final _sel_stringByAppendingString_1 = - _registerName1("stringByAppendingString:"); - late final _sel_stringByAppendingFormat_1 = - _registerName1("stringByAppendingFormat:"); - late final _sel_uppercaseString1 = _registerName1("uppercaseString"); - late final _sel_lowercaseString1 = _registerName1("lowercaseString"); - late final _sel_capitalizedString1 = _registerName1("capitalizedString"); - late final _sel_localizedUppercaseString1 = - _registerName1("localizedUppercaseString"); - late final _sel_localizedLowercaseString1 = - _registerName1("localizedLowercaseString"); - late final _sel_localizedCapitalizedString1 = - _registerName1("localizedCapitalizedString"); - late final _sel_uppercaseStringWithLocale_1 = - _registerName1("uppercaseStringWithLocale:"); - ffi.Pointer _objc_msgSend_349( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer locale, - ) { - return __objc_msgSend_349( - obj, - sel, - locale, - ); - } - - late final __objc_msgSend_349Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_349 = __objc_msgSend_349Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_lowercaseStringWithLocale_1 = - _registerName1("lowercaseStringWithLocale:"); - late final _sel_capitalizedStringWithLocale_1 = - _registerName1("capitalizedStringWithLocale:"); - late final _sel_getLineStart_end_contentsEnd_forRange_1 = - _registerName1("getLineStart:end:contentsEnd:forRange:"); - void _objc_msgSend_350( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer startPtr, - ffi.Pointer lineEndPtr, - ffi.Pointer contentsEndPtr, - _NSRange range, - ) { - return __objc_msgSend_350( - obj, - sel, - startPtr, - lineEndPtr, - contentsEndPtr, - range, - ); - } - - late final __objc_msgSend_350Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_350 = __objc_msgSend_350Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - _NSRange)>(); - - late final _sel_lineRangeForRange_1 = _registerName1("lineRangeForRange:"); - late final _sel_getParagraphStart_end_contentsEnd_forRange_1 = - _registerName1("getParagraphStart:end:contentsEnd:forRange:"); - late final _sel_paragraphRangeForRange_1 = - _registerName1("paragraphRangeForRange:"); - late final _sel_enumerateSubstringsInRange_options_usingBlock_1 = - _registerName1("enumerateSubstringsInRange:options:usingBlock:"); - void _objc_msgSend_351( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_351( - obj, - sel, - range, - opts, - block, - ); - } - - late final __objc_msgSend_351Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_351 = __objc_msgSend_351Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateLinesUsingBlock_1 = - _registerName1("enumerateLinesUsingBlock:"); - void _objc_msgSend_352( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_352( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_352Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_352 = __objc_msgSend_352Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_UTF8String1 = _registerName1("UTF8String"); - late final _sel_fastestEncoding1 = _registerName1("fastestEncoding"); - late final _sel_smallestEncoding1 = _registerName1("smallestEncoding"); - late final _sel_dataUsingEncoding_allowLossyConversion_1 = - _registerName1("dataUsingEncoding:allowLossyConversion:"); - ffi.Pointer _objc_msgSend_353( - ffi.Pointer obj, - ffi.Pointer sel, - int encoding, - bool lossy, - ) { - return __objc_msgSend_353( - obj, - sel, - encoding, - lossy, - ); - } - - late final __objc_msgSend_353Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_353 = __objc_msgSend_353Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int, bool)>(); - - late final _sel_dataUsingEncoding_1 = _registerName1("dataUsingEncoding:"); - ffi.Pointer _objc_msgSend_354( - ffi.Pointer obj, - ffi.Pointer sel, - int encoding, - ) { - return __objc_msgSend_354( - obj, - sel, - encoding, - ); - } - - late final __objc_msgSend_354Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_354 = __objc_msgSend_354Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_canBeConvertedToEncoding_1 = - _registerName1("canBeConvertedToEncoding:"); - late final _sel_cStringUsingEncoding_1 = - _registerName1("cStringUsingEncoding:"); - late final _sel_getCString_maxLength_encoding_1 = - _registerName1("getCString:maxLength:encoding:"); - bool _objc_msgSend_355( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - int maxBufferCount, - int encoding, - ) { - return __objc_msgSend_355( - obj, - sel, - buffer, - maxBufferCount, - encoding, - ); - } - - late final __objc_msgSend_355Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_355 = __objc_msgSend_355Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, int)>(); - - late final _sel_getBytes_maxLength_usedLength_encoding_options_range_remainingRange_1 = - _registerName1( - "getBytes:maxLength:usedLength:encoding:options:range:remainingRange:"); - bool _objc_msgSend_356( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - int maxBufferCount, - ffi.Pointer usedBufferCount, - int encoding, - int options, - _NSRange range, - ffi.Pointer<_NSRange> leftover, - ) { - return __objc_msgSend_356( - obj, - sel, - buffer, - maxBufferCount, - usedBufferCount, - encoding, - options, - range, - leftover, - ); - } - - late final __objc_msgSend_356Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Int32, - _NSRange, - ffi.Pointer<_NSRange>)>>('objc_msgSend'); - late final __objc_msgSend_356 = __objc_msgSend_356Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - int, - int, - _NSRange, - ffi.Pointer<_NSRange>)>(); - - late final _sel_maximumLengthOfBytesUsingEncoding_1 = - _registerName1("maximumLengthOfBytesUsingEncoding:"); - late final _sel_lengthOfBytesUsingEncoding_1 = - _registerName1("lengthOfBytesUsingEncoding:"); - late final _sel_availableStringEncodings1 = - _registerName1("availableStringEncodings"); - ffi.Pointer _objc_msgSend_357( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_357( - obj, - sel, - ); - } - - late final __objc_msgSend_357Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_357 = __objc_msgSend_357Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_localizedNameOfStringEncoding_1 = - _registerName1("localizedNameOfStringEncoding:"); - late final _sel_defaultCStringEncoding1 = - _registerName1("defaultCStringEncoding"); - late final _sel_decomposedStringWithCanonicalMapping1 = - _registerName1("decomposedStringWithCanonicalMapping"); - late final _sel_precomposedStringWithCanonicalMapping1 = - _registerName1("precomposedStringWithCanonicalMapping"); - late final _sel_decomposedStringWithCompatibilityMapping1 = - _registerName1("decomposedStringWithCompatibilityMapping"); - late final _sel_precomposedStringWithCompatibilityMapping1 = - _registerName1("precomposedStringWithCompatibilityMapping"); - late final _sel_componentsSeparatedByString_1 = - _registerName1("componentsSeparatedByString:"); - ffi.Pointer _objc_msgSend_358( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer separator, - ) { - return __objc_msgSend_358( - obj, - sel, - separator, - ); - } - - late final __objc_msgSend_358Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_358 = __objc_msgSend_358Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_componentsSeparatedByCharactersInSet_1 = - _registerName1("componentsSeparatedByCharactersInSet:"); - ffi.Pointer _objc_msgSend_359( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer separator, - ) { - return __objc_msgSend_359( - obj, - sel, - separator, - ); - } - - late final __objc_msgSend_359Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_359 = __objc_msgSend_359Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_stringByTrimmingCharactersInSet_1 = - _registerName1("stringByTrimmingCharactersInSet:"); - ffi.Pointer _objc_msgSend_360( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer set1, - ) { - return __objc_msgSend_360( - obj, - sel, - set1, - ); - } - - late final __objc_msgSend_360Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_360 = __objc_msgSend_360Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_stringByPaddingToLength_withString_startingAtIndex_1 = - _registerName1("stringByPaddingToLength:withString:startingAtIndex:"); - ffi.Pointer _objc_msgSend_361( - ffi.Pointer obj, - ffi.Pointer sel, - int newLength, - ffi.Pointer padString, - int padIndex, - ) { - return __objc_msgSend_361( - obj, - sel, - newLength, - padString, - padIndex, - ); - } - - late final __objc_msgSend_361Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_361 = __objc_msgSend_361Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer, int)>(); - - late final _sel_stringByFoldingWithOptions_locale_1 = - _registerName1("stringByFoldingWithOptions:locale:"); - ffi.Pointer _objc_msgSend_362( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ffi.Pointer locale, - ) { - return __objc_msgSend_362( - obj, - sel, - options, - locale, - ); - } - - late final __objc_msgSend_362Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_362 = __objc_msgSend_362Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_stringByReplacingOccurrencesOfString_withString_options_range_1 = - _registerName1( - "stringByReplacingOccurrencesOfString:withString:options:range:"); - ffi.Pointer _objc_msgSend_363( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer target, - ffi.Pointer replacement, - int options, - _NSRange searchRange, - ) { - return __objc_msgSend_363( - obj, - sel, - target, - replacement, - options, - searchRange, - ); - } - - late final __objc_msgSend_363Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_363 = __objc_msgSend_363Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - _NSRange)>(); - - late final _sel_stringByReplacingOccurrencesOfString_withString_1 = - _registerName1("stringByReplacingOccurrencesOfString:withString:"); - ffi.Pointer _objc_msgSend_364( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer target, - ffi.Pointer replacement, - ) { - return __objc_msgSend_364( - obj, - sel, - target, - replacement, - ); - } - - late final __objc_msgSend_364Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_364 = __objc_msgSend_364Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_stringByReplacingCharactersInRange_withString_1 = - _registerName1("stringByReplacingCharactersInRange:withString:"); - ffi.Pointer _objc_msgSend_365( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer replacement, - ) { - return __objc_msgSend_365( - obj, - sel, - range, - replacement, - ); - } - - late final __objc_msgSend_365Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_365 = __objc_msgSend_365Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); - - late final _sel_stringByApplyingTransform_reverse_1 = - _registerName1("stringByApplyingTransform:reverse:"); - ffi.Pointer _objc_msgSend_366( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer transform, - bool reverse, - ) { - return __objc_msgSend_366( - obj, - sel, - transform, - reverse, - ); - } - - late final __objc_msgSend_366Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_366 = __objc_msgSend_366Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_writeToURL_atomically_encoding_error_1 = - _registerName1("writeToURL:atomically:encoding:error:"); - bool _objc_msgSend_367( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - bool useAuxiliaryFile, - int enc, - ffi.Pointer> error, - ) { - return __objc_msgSend_367( - obj, - sel, - url, - useAuxiliaryFile, - enc, - error, - ); - } - - late final __objc_msgSend_367Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.UnsignedLong, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_367 = __objc_msgSend_367Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - int, - ffi.Pointer>)>(); - - late final _sel_writeToFile_atomically_encoding_error_1 = - _registerName1("writeToFile:atomically:encoding:error:"); - bool _objc_msgSend_368( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool useAuxiliaryFile, - int enc, - ffi.Pointer> error, - ) { - return __objc_msgSend_368( - obj, - sel, - path, - useAuxiliaryFile, - enc, - error, - ); - } - - late final __objc_msgSend_368Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.UnsignedLong, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_368 = __objc_msgSend_368Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - int, - ffi.Pointer>)>(); - - late final _sel_hash1 = _registerName1("hash"); - late final _sel_initWithCharactersNoCopy_length_freeWhenDone_1 = - _registerName1("initWithCharactersNoCopy:length:freeWhenDone:"); - instancetype _objc_msgSend_369( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer characters, - int length, - bool freeBuffer, - ) { - return __objc_msgSend_369( - obj, - sel, - characters, - length, - freeBuffer, - ); - } - - late final __objc_msgSend_369Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_369 = __objc_msgSend_369Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, bool)>(); - - late final _sel_initWithCharactersNoCopy_length_deallocator_1 = - _registerName1("initWithCharactersNoCopy:length:deallocator:"); - instancetype _objc_msgSend_370( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer chars, - int len, - ffi.Pointer<_ObjCBlock> deallocator, - ) { - return __objc_msgSend_370( - obj, - sel, - chars, - len, - deallocator, - ); - } - - late final __objc_msgSend_370Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_370 = __objc_msgSend_370Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_initWithCharacters_length_1 = - _registerName1("initWithCharacters:length:"); - instancetype _objc_msgSend_371( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer characters, - int length, - ) { - return __objc_msgSend_371( - obj, - sel, - characters, - length, - ); - } - - late final __objc_msgSend_371Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_371 = __objc_msgSend_371Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_initWithUTF8String_1 = _registerName1("initWithUTF8String:"); - instancetype _objc_msgSend_372( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer nullTerminatedCString, - ) { - return __objc_msgSend_372( - obj, - sel, - nullTerminatedCString, - ); - } - - late final __objc_msgSend_372Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_372 = __objc_msgSend_372Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithFormat_1 = _registerName1("initWithFormat:"); - late final _sel_initWithFormat_arguments_1 = - _registerName1("initWithFormat:arguments:"); - instancetype _objc_msgSend_373( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer<__va_list_tag> argList, - ) { - return __objc_msgSend_373( - obj, - sel, - format, - argList, - ); - } - - late final __objc_msgSend_373Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); - late final __objc_msgSend_373 = __objc_msgSend_373Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<__va_list_tag>)>(); - - late final _sel_initWithFormat_locale_1 = - _registerName1("initWithFormat:locale:"); - instancetype _objc_msgSend_374( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer locale, - ) { - return __objc_msgSend_374( - obj, - sel, - format, - locale, - ); - } - - late final __objc_msgSend_374Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_374 = __objc_msgSend_374Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithFormat_locale_arguments_1 = - _registerName1("initWithFormat:locale:arguments:"); - instancetype _objc_msgSend_375( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer locale, - ffi.Pointer<__va_list_tag> argList, - ) { - return __objc_msgSend_375( - obj, - sel, - format, - locale, - argList, - ); - } - - late final __objc_msgSend_375Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); - late final __objc_msgSend_375 = __objc_msgSend_375Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>(); - - late final _sel_initWithValidatedFormat_validFormatSpecifiers_error_1 = - _registerName1("initWithValidatedFormat:validFormatSpecifiers:error:"); - instancetype _objc_msgSend_376( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer validFormatSpecifiers, - ffi.Pointer> error, - ) { - return __objc_msgSend_376( - obj, - sel, - format, - validFormatSpecifiers, - error, - ); - } - - late final __objc_msgSend_376Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_376 = __objc_msgSend_376Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_1 = - _registerName1( - "initWithValidatedFormat:validFormatSpecifiers:locale:error:"); - instancetype _objc_msgSend_377( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer validFormatSpecifiers, - ffi.Pointer locale, - ffi.Pointer> error, - ) { - return __objc_msgSend_377( - obj, - sel, - format, - validFormatSpecifiers, - locale, - error, - ); - } - - late final __objc_msgSend_377Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_377 = __objc_msgSend_377Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_1 = - _registerName1( - "initWithValidatedFormat:validFormatSpecifiers:arguments:error:"); - instancetype _objc_msgSend_378( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer validFormatSpecifiers, - ffi.Pointer<__va_list_tag> argList, - ffi.Pointer> error, - ) { - return __objc_msgSend_378( - obj, - sel, - format, - validFormatSpecifiers, - argList, - error, - ); - } - - late final __objc_msgSend_378Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_378 = __objc_msgSend_378Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>, - ffi.Pointer>)>(); - - late final _sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_1 = - _registerName1( - "initWithValidatedFormat:validFormatSpecifiers:locale:arguments:error:"); - instancetype _objc_msgSend_379( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer validFormatSpecifiers, - ffi.Pointer locale, - ffi.Pointer<__va_list_tag> argList, - ffi.Pointer> error, - ) { - return __objc_msgSend_379( - obj, - sel, - format, - validFormatSpecifiers, - locale, - argList, - error, - ); - } - - late final __objc_msgSend_379Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_379 = __objc_msgSend_379Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>, - ffi.Pointer>)>(); - - late final _sel_initWithData_encoding_1 = - _registerName1("initWithData:encoding:"); - instancetype _objc_msgSend_380( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - int encoding, - ) { - return __objc_msgSend_380( - obj, - sel, - data, - encoding, - ); - } - - late final __objc_msgSend_380Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_380 = __objc_msgSend_380Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_initWithBytes_length_encoding_1 = - _registerName1("initWithBytes:length:encoding:"); - instancetype _objc_msgSend_381( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int len, - int encoding, - ) { - return __objc_msgSend_381( - obj, - sel, - bytes, - len, - encoding, - ); - } - - late final __objc_msgSend_381Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_381 = __objc_msgSend_381Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, int)>(); - - late final _sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1 = - _registerName1("initWithBytesNoCopy:length:encoding:freeWhenDone:"); - instancetype _objc_msgSend_382( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int len, - int encoding, - bool freeBuffer, - ) { - return __objc_msgSend_382( - obj, - sel, - bytes, - len, - encoding, - freeBuffer, - ); - } - - late final __objc_msgSend_382Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_382 = __objc_msgSend_382Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, int, bool)>(); - - late final _sel_initWithBytesNoCopy_length_encoding_deallocator_1 = - _registerName1("initWithBytesNoCopy:length:encoding:deallocator:"); - instancetype _objc_msgSend_383( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int len, - int encoding, - ffi.Pointer<_ObjCBlock> deallocator, - ) { - return __objc_msgSend_383( - obj, - sel, - bytes, - len, - encoding, - deallocator, - ); - } - - late final __objc_msgSend_383Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_383 = __objc_msgSend_383Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_string1 = _registerName1("string"); - late final _sel_stringWithString_1 = _registerName1("stringWithString:"); - late final _sel_stringWithCharacters_length_1 = - _registerName1("stringWithCharacters:length:"); - late final _sel_stringWithUTF8String_1 = - _registerName1("stringWithUTF8String:"); - late final _sel_stringWithFormat_1 = _registerName1("stringWithFormat:"); - late final _sel_localizedStringWithFormat_1 = - _registerName1("localizedStringWithFormat:"); - late final _sel_stringWithValidatedFormat_validFormatSpecifiers_error_1 = - _registerName1("stringWithValidatedFormat:validFormatSpecifiers:error:"); - late final _sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_1 = - _registerName1( - "localizedStringWithValidatedFormat:validFormatSpecifiers:error:"); - late final _sel_initWithCString_encoding_1 = - _registerName1("initWithCString:encoding:"); - instancetype _objc_msgSend_384( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer nullTerminatedCString, - int encoding, - ) { - return __objc_msgSend_384( - obj, - sel, - nullTerminatedCString, - encoding, - ); - } - - late final __objc_msgSend_384Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_384 = __objc_msgSend_384Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_stringWithCString_encoding_1 = - _registerName1("stringWithCString:encoding:"); - late final _sel_initWithContentsOfURL_encoding_error_1 = - _registerName1("initWithContentsOfURL:encoding:error:"); - instancetype _objc_msgSend_385( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int enc, - ffi.Pointer> error, - ) { - return __objc_msgSend_385( - obj, - sel, - url, - enc, - error, - ); - } - - late final __objc_msgSend_385Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_385 = __objc_msgSend_385Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_initWithContentsOfFile_encoding_error_1 = - _registerName1("initWithContentsOfFile:encoding:error:"); - instancetype _objc_msgSend_386( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - int enc, - ffi.Pointer> error, - ) { - return __objc_msgSend_386( - obj, - sel, - path, - enc, - error, - ); - } - - late final __objc_msgSend_386Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_386 = __objc_msgSend_386Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_stringWithContentsOfURL_encoding_error_1 = - _registerName1("stringWithContentsOfURL:encoding:error:"); - late final _sel_stringWithContentsOfFile_encoding_error_1 = - _registerName1("stringWithContentsOfFile:encoding:error:"); - late final _sel_initWithContentsOfURL_usedEncoding_error_1 = - _registerName1("initWithContentsOfURL:usedEncoding:error:"); - instancetype _objc_msgSend_387( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer enc, - ffi.Pointer> error, - ) { - return __objc_msgSend_387( - obj, - sel, - url, - enc, - error, - ); - } - - late final __objc_msgSend_387Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_387 = __objc_msgSend_387Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_initWithContentsOfFile_usedEncoding_error_1 = - _registerName1("initWithContentsOfFile:usedEncoding:error:"); - instancetype _objc_msgSend_388( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer enc, - ffi.Pointer> error, - ) { - return __objc_msgSend_388( - obj, - sel, - path, - enc, - error, - ); - } - - late final __objc_msgSend_388Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_388 = __objc_msgSend_388Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_stringWithContentsOfURL_usedEncoding_error_1 = - _registerName1("stringWithContentsOfURL:usedEncoding:error:"); - late final _sel_stringWithContentsOfFile_usedEncoding_error_1 = - _registerName1("stringWithContentsOfFile:usedEncoding:error:"); - late final _sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1 = - _registerName1( - "stringEncodingForData:encodingOptions:convertedString:usedLossyConversion:"); - int _objc_msgSend_389( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ffi.Pointer opts, - ffi.Pointer> string, - ffi.Pointer usedLossyConversion, - ) { - return __objc_msgSend_389( - obj, - sel, - data, - opts, - string, - usedLossyConversion, - ); - } - - late final __objc_msgSend_389Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_389 = __objc_msgSend_389Ptr.asFunction< - int Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer)>(); - - late final _sel_propertyList1 = _registerName1("propertyList"); - late final _sel_propertyListFromStringsFileFormat1 = - _registerName1("propertyListFromStringsFileFormat"); - ffi.Pointer _objc_msgSend_390( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_390( - obj, - sel, - ); - } - - late final __objc_msgSend_390Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_390 = __objc_msgSend_390Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_cString1 = _registerName1("cString"); - late final _sel_lossyCString1 = _registerName1("lossyCString"); - late final _sel_cStringLength1 = _registerName1("cStringLength"); - late final _sel_getCString_1 = _registerName1("getCString:"); - late final _sel_getCString_maxLength_1 = - _registerName1("getCString:maxLength:"); - void _objc_msgSend_391( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int maxLength, - ) { - return __objc_msgSend_391( - obj, - sel, - bytes, - maxLength, - ); - } - - late final __objc_msgSend_391Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_391 = __objc_msgSend_391Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_getCString_maxLength_range_remainingRange_1 = - _registerName1("getCString:maxLength:range:remainingRange:"); - void _objc_msgSend_392( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int maxLength, - _NSRange aRange, - ffi.Pointer<_NSRange> leftoverRange, - ) { - return __objc_msgSend_392( - obj, - sel, - bytes, - maxLength, - aRange, - leftoverRange, - ); - } - - late final __objc_msgSend_392Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - _NSRange, - ffi.Pointer<_NSRange>)>>('objc_msgSend'); - late final __objc_msgSend_392 = __objc_msgSend_392Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange, ffi.Pointer<_NSRange>)>(); - - late final _sel_stringWithContentsOfFile_1 = - _registerName1("stringWithContentsOfFile:"); - late final _sel_stringWithContentsOfURL_1 = - _registerName1("stringWithContentsOfURL:"); - late final _sel_initWithCStringNoCopy_length_freeWhenDone_1 = - _registerName1("initWithCStringNoCopy:length:freeWhenDone:"); - ffi.Pointer _objc_msgSend_393( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer bytes, - int length, - bool freeBuffer, - ) { - return __objc_msgSend_393( - obj, - sel, - bytes, - length, - freeBuffer, - ); - } - - late final __objc_msgSend_393Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_393 = __objc_msgSend_393Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, bool)>(); - - late final _sel_initWithCString_length_1 = - _registerName1("initWithCString:length:"); - late final _sel_initWithCString_1 = _registerName1("initWithCString:"); - late final _sel_stringWithCString_length_1 = - _registerName1("stringWithCString:length:"); - late final _sel_stringWithCString_1 = _registerName1("stringWithCString:"); - late final _sel_getCharacters_1 = _registerName1("getCharacters:"); - void _objc_msgSend_394( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - ) { - return __objc_msgSend_394( - obj, - sel, - buffer, - ); - } - - late final __objc_msgSend_394Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_394 = __objc_msgSend_394Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_variantFittingPresentationWidth_1 = - _registerName1("variantFittingPresentationWidth:"); - ffi.Pointer _objc_msgSend_395( - ffi.Pointer obj, - ffi.Pointer sel, - int width, - ) { - return __objc_msgSend_395( - obj, - sel, - width, - ); - } - - late final __objc_msgSend_395Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_395 = __objc_msgSend_395Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_pathWithComponents_1 = _registerName1("pathWithComponents:"); - ffi.Pointer _objc_msgSend_396( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer components, - ) { - return __objc_msgSend_396( - obj, - sel, - components, - ); - } - - late final __objc_msgSend_396Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_396 = __objc_msgSend_396Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isAbsolutePath1 = _registerName1("isAbsolutePath"); - late final _sel_stringByDeletingLastPathComponent1 = - _registerName1("stringByDeletingLastPathComponent"); - late final _sel_stringByAppendingPathComponent_1 = - _registerName1("stringByAppendingPathComponent:"); - late final _sel_stringByDeletingPathExtension1 = - _registerName1("stringByDeletingPathExtension"); - late final _sel_stringByAppendingPathExtension_1 = - _registerName1("stringByAppendingPathExtension:"); - late final _sel_stringByAbbreviatingWithTildeInPath1 = - _registerName1("stringByAbbreviatingWithTildeInPath"); - late final _sel_stringByExpandingTildeInPath1 = - _registerName1("stringByExpandingTildeInPath"); - late final _sel_stringByStandardizingPath1 = - _registerName1("stringByStandardizingPath"); - late final _sel_stringByResolvingSymlinksInPath1 = - _registerName1("stringByResolvingSymlinksInPath"); - late final _sel_stringsByAppendingPaths_1 = - _registerName1("stringsByAppendingPaths:"); - late final _sel_completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_1 = - _registerName1( - "completePathIntoString:caseSensitive:matchesIntoArray:filterTypes:"); - int _objc_msgSend_397( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> outputName, - bool flag, - ffi.Pointer> outputArray, - ffi.Pointer filterTypes, - ) { - return __objc_msgSend_397( - obj, - sel, - outputName, - flag, - outputArray, - filterTypes, - ); - } - - late final __objc_msgSend_397Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Bool, - ffi.Pointer>, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_397 = __objc_msgSend_397Ptr.asFunction< - int Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - bool, - ffi.Pointer>, - ffi.Pointer)>(); - - late final _sel_stringByAddingPercentEncodingWithAllowedCharacters_1 = - _registerName1("stringByAddingPercentEncodingWithAllowedCharacters:"); - ffi.Pointer _objc_msgSend_398( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer allowedCharacters, - ) { - return __objc_msgSend_398( - obj, - sel, - allowedCharacters, - ); - } - - late final __objc_msgSend_398Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_398 = __objc_msgSend_398Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_stringByRemovingPercentEncoding1 = - _registerName1("stringByRemovingPercentEncoding"); - late final _sel_stringByAddingPercentEscapesUsingEncoding_1 = - _registerName1("stringByAddingPercentEscapesUsingEncoding:"); - ffi.Pointer _objc_msgSend_399( - ffi.Pointer obj, - ffi.Pointer sel, - int enc, - ) { - return __objc_msgSend_399( - obj, - sel, - enc, - ); - } - - late final __objc_msgSend_399Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_399 = __objc_msgSend_399Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_stringByReplacingPercentEscapesUsingEncoding_1 = - _registerName1("stringByReplacingPercentEscapesUsingEncoding:"); - late final _class_NSOrthography1 = _getClass1("NSOrthography"); - late final _sel_dominantScript1 = _registerName1("dominantScript"); - late final _sel_languageMap1 = _registerName1("languageMap"); - late final _sel_initWithDominantScript_languageMap_1 = - _registerName1("initWithDominantScript:languageMap:"); - instancetype _objc_msgSend_400( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer script, - ffi.Pointer map, - ) { - return __objc_msgSend_400( - obj, - sel, - script, - map, - ); - } - - late final __objc_msgSend_400Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_400 = __objc_msgSend_400Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_languagesForScript_1 = _registerName1("languagesForScript:"); - late final _sel_dominantLanguageForScript_1 = - _registerName1("dominantLanguageForScript:"); - late final _sel_dominantLanguage1 = _registerName1("dominantLanguage"); - late final _sel_allScripts1 = _registerName1("allScripts"); - late final _sel_allLanguages1 = _registerName1("allLanguages"); - late final _sel_defaultOrthographyForLanguage_1 = - _registerName1("defaultOrthographyForLanguage:"); - late final _sel_orthographyWithDominantScript_languageMap_1 = - _registerName1("orthographyWithDominantScript:languageMap:"); - late final _sel_linguisticTagsInRange_scheme_options_orthography_tokenRanges_1 = - _registerName1( - "linguisticTagsInRange:scheme:options:orthography:tokenRanges:"); - ffi.Pointer _objc_msgSend_401( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer scheme, - int options, - ffi.Pointer orthography, - ffi.Pointer> tokenRanges, - ) { - return __objc_msgSend_401( - obj, - sel, - range, - scheme, - options, - orthography, - tokenRanges, - ); - } - - late final __objc_msgSend_401Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_401 = __objc_msgSend_401Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_enumerateLinguisticTagsInRange_scheme_options_orthography_usingBlock_1 = - _registerName1( - "enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock:"); - void _objc_msgSend_402( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer scheme, - int options, - ffi.Pointer orthography, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_402( - obj, - sel, - range, - scheme, - options, - orthography, - block, - ); - } - - late final __objc_msgSend_402Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_402 = __objc_msgSend_402Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_anyObject1 = _registerName1("anyObject"); - late final _sel_intersectsSet_1 = _registerName1("intersectsSet:"); - bool _objc_msgSend_403( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherSet, - ) { - return __objc_msgSend_403( - obj, - sel, - otherSet, - ); - } - - late final __objc_msgSend_403Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_403 = __objc_msgSend_403Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isEqualToSet_1 = _registerName1("isEqualToSet:"); - late final _sel_isSubsetOfSet_1 = _registerName1("isSubsetOfSet:"); - late final _sel_setByAddingObject_1 = _registerName1("setByAddingObject:"); - ffi.Pointer _objc_msgSend_404( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - ) { - return __objc_msgSend_404( - obj, - sel, - anObject, - ); - } - - late final __objc_msgSend_404Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_404 = __objc_msgSend_404Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setByAddingObjectsFromSet_1 = - _registerName1("setByAddingObjectsFromSet:"); - ffi.Pointer _objc_msgSend_405( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_405( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_405Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_405 = __objc_msgSend_405Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setByAddingObjectsFromArray_1 = - _registerName1("setByAddingObjectsFromArray:"); - ffi.Pointer _objc_msgSend_406( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_406( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_406Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_406 = __objc_msgSend_406Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_407( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_407( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_407Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_407 = __objc_msgSend_407Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - void _objc_msgSend_408( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_408( - obj, - sel, - opts, - block, - ); - } - - late final __objc_msgSend_408Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_408 = __objc_msgSend_408Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_objectsPassingTest_1 = _registerName1("objectsPassingTest:"); - ffi.Pointer _objc_msgSend_409( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_409( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_409Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_409 = __objc_msgSend_409Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_objectsWithOptions_passingTest_1 = - _registerName1("objectsWithOptions:passingTest:"); - ffi.Pointer _objc_msgSend_410( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> predicate, - ) { - return __objc_msgSend_410( - obj, - sel, - opts, - predicate, - ); - } - - late final __objc_msgSend_410Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_410 = __objc_msgSend_410Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_set1 = _registerName1("set"); - late final _sel_setWithObject_1 = _registerName1("setWithObject:"); - late final _sel_setWithObjects_count_1 = - _registerName1("setWithObjects:count:"); - late final _sel_setWithObjects_1 = _registerName1("setWithObjects:"); - late final _sel_setWithSet_1 = _registerName1("setWithSet:"); - instancetype _objc_msgSend_411( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer set1, - ) { - return __objc_msgSend_411( - obj, - sel, - set1, - ); - } - - late final __objc_msgSend_411Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_411 = __objc_msgSend_411Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setWithArray_1 = _registerName1("setWithArray:"); - late final _sel_initWithSet_1 = _registerName1("initWithSet:"); - late final _sel_initWithSet_copyItems_1 = - _registerName1("initWithSet:copyItems:"); - instancetype _objc_msgSend_412( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer set1, - bool flag, - ) { - return __objc_msgSend_412( - obj, - sel, - set1, - flag, - ); - } - - late final __objc_msgSend_412Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_412 = __objc_msgSend_412Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_filteredSetUsingPredicate_1 = - _registerName1("filteredSetUsingPredicate:"); - ffi.Pointer _objc_msgSend_413( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer predicate, - ) { - return __objc_msgSend_413( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_413Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_413 = __objc_msgSend_413Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_invocationWithMethodSignature_1 = - _registerName1("invocationWithMethodSignature:"); - ffi.Pointer _objc_msgSend_414( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer sig, - ) { - return __objc_msgSend_414( - obj, - sel, - sig, - ); - } - - late final __objc_msgSend_414Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_414 = __objc_msgSend_414Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_methodSignature1 = _registerName1("methodSignature"); - ffi.Pointer _objc_msgSend_415( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_415( - obj, - sel, - ); - } - - late final __objc_msgSend_415Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_415 = __objc_msgSend_415Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_retainArguments1 = _registerName1("retainArguments"); - late final _sel_argumentsRetained1 = _registerName1("argumentsRetained"); - late final _sel_target1 = _registerName1("target"); - late final _sel_setTarget_1 = _registerName1("setTarget:"); - void _objc_msgSend_416( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_416( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_416Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_416 = __objc_msgSend_416Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_selector1 = _registerName1("selector"); - ffi.Pointer _objc_msgSend_417( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_417( - obj, - sel, - ); - } - - late final __objc_msgSend_417Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_417 = __objc_msgSend_417Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setSelector_1 = _registerName1("setSelector:"); - void _objc_msgSend_418( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_418( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_418Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_418 = __objc_msgSend_418Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_getReturnValue_1 = _registerName1("getReturnValue:"); - late final _sel_setReturnValue_1 = _registerName1("setReturnValue:"); - late final _sel_getArgument_atIndex_1 = - _registerName1("getArgument:atIndex:"); - void _objc_msgSend_419( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer argumentLocation, - int idx, - ) { - return __objc_msgSend_419( - obj, - sel, - argumentLocation, - idx, - ); - } - - late final __objc_msgSend_419Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_419 = __objc_msgSend_419Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_setArgument_atIndex_1 = - _registerName1("setArgument:atIndex:"); - late final _sel_invoke1 = _registerName1("invoke"); - late final _sel_invokeWithTarget_1 = _registerName1("invokeWithTarget:"); - late final _sel_invokeUsingIMP_1 = _registerName1("invokeUsingIMP:"); - void _objc_msgSend_420( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> imp, - ) { - return __objc_msgSend_420( - obj, - sel, - imp, - ); - } - - late final __objc_msgSend_420Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>>( - 'objc_msgSend'); - late final __objc_msgSend_420 = __objc_msgSend_420Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_forwardInvocation_1 = _registerName1("forwardInvocation:"); - void _objc_msgSend_421( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anInvocation, - ) { - return __objc_msgSend_421( - obj, - sel, - anInvocation, - ); - } - - late final __objc_msgSend_421Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_421 = __objc_msgSend_421Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_methodSignatureForSelector_1 = - _registerName1("methodSignatureForSelector:"); - ffi.Pointer _objc_msgSend_422( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ) { - return __objc_msgSend_422( - obj, - sel, - aSelector, - ); - } - - late final __objc_msgSend_422Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_422 = __objc_msgSend_422Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_instanceMethodSignatureForSelector_1 = - _registerName1("instanceMethodSignatureForSelector:"); - late final _sel_allowsWeakReference1 = _registerName1("allowsWeakReference"); - late final _sel_retainWeakReference1 = _registerName1("retainWeakReference"); - late final _sel_isSubclassOfClass_1 = _registerName1("isSubclassOfClass:"); - late final _sel_resolveClassMethod_1 = _registerName1("resolveClassMethod:"); - late final _sel_resolveInstanceMethod_1 = - _registerName1("resolveInstanceMethod:"); - late final _sel_superclass1 = _registerName1("superclass"); - late final _sel_class1 = _registerName1("class"); - late final _sel_debugDescription1 = _registerName1("debugDescription"); - late final _sel_version1 = _registerName1("version"); - late final _sel_setVersion_1 = _registerName1("setVersion:"); - void _objc_msgSend_423( - ffi.Pointer obj, - ffi.Pointer sel, - int aVersion, - ) { - return __objc_msgSend_423( - obj, - sel, - aVersion, - ); - } - - late final __objc_msgSend_423Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_423 = __objc_msgSend_423Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_classForCoder1 = _registerName1("classForCoder"); - late final _sel_replacementObjectForCoder_1 = - _registerName1("replacementObjectForCoder:"); - late final _sel_awakeAfterUsingCoder_1 = - _registerName1("awakeAfterUsingCoder:"); - late final _sel_poseAsClass_1 = _registerName1("poseAsClass:"); - late final _sel_autoContentAccessingProxy1 = - _registerName1("autoContentAccessingProxy"); - late final _sel_attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_1 = - _registerName1( - "attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:"); - void _objc_msgSend_424( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer error, - int recoveryOptionIndex, - ffi.Pointer delegate, - ffi.Pointer didRecoverSelector, - ffi.Pointer contextInfo, - ) { - return __objc_msgSend_424( - obj, - sel, - error, - recoveryOptionIndex, - delegate, - didRecoverSelector, - contextInfo, - ); - } - - late final __objc_msgSend_424Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_424 = __objc_msgSend_424Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_attemptRecoveryFromError_optionIndex_1 = - _registerName1("attemptRecoveryFromError:optionIndex:"); - bool _objc_msgSend_425( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer error, - int recoveryOptionIndex, - ) { - return __objc_msgSend_425( - obj, - sel, - error, - recoveryOptionIndex, - ); - } - - late final __objc_msgSend_425Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_425 = __objc_msgSend_425Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_performSelector_withObject_afterDelay_inModes_1 = - _registerName1("performSelector:withObject:afterDelay:inModes:"); - void _objc_msgSend_426( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer anArgument, - double delay, - ffi.Pointer modes, - ) { - return __objc_msgSend_426( - obj, - sel, - aSelector, - anArgument, - delay, - modes, - ); - } - - late final __objc_msgSend_426Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Double, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_426 = __objc_msgSend_426Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - double, - ffi.Pointer)>(); - - late final _sel_performSelector_withObject_afterDelay_1 = - _registerName1("performSelector:withObject:afterDelay:"); - void _objc_msgSend_427( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer anArgument, - double delay, - ) { - return __objc_msgSend_427( - obj, - sel, - aSelector, - anArgument, - delay, - ); - } - - late final __objc_msgSend_427Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_427 = __objc_msgSend_427Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_URL_resourceDataDidBecomeAvailable_1 = - _registerName1("URL:resourceDataDidBecomeAvailable:"); - void _objc_msgSend_428( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer sender, - ffi.Pointer newBytes, - ) { - return __objc_msgSend_428( - obj, - sel, - sender, - newBytes, - ); - } - - late final __objc_msgSend_428Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_428 = __objc_msgSend_428Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_URLResourceDidFinishLoading_1 = - _registerName1("URLResourceDidFinishLoading:"); - void _objc_msgSend_429( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer sender, - ) { - return __objc_msgSend_429( - obj, - sel, - sender, - ); - } - - late final __objc_msgSend_429Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_429 = __objc_msgSend_429Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLResourceDidCancelLoading_1 = - _registerName1("URLResourceDidCancelLoading:"); - late final _sel_URL_resourceDidFailLoadingWithReason_1 = - _registerName1("URL:resourceDidFailLoadingWithReason:"); - void _objc_msgSend_430( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer sender, - ffi.Pointer reason, - ) { - return __objc_msgSend_430( - obj, - sel, - sender, - reason, - ); - } - - late final __objc_msgSend_430Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_430 = __objc_msgSend_430Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSFileManager1 = _getClass1("NSFileManager"); - late final _sel_defaultManager1 = _registerName1("defaultManager"); - ffi.Pointer _objc_msgSend_431( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_431( - obj, - sel, - ); - } - - late final __objc_msgSend_431Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_431 = __objc_msgSend_431Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_mountedVolumeURLsIncludingResourceValuesForKeys_options_1 = - _registerName1( - "mountedVolumeURLsIncludingResourceValuesForKeys:options:"); - ffi.Pointer _objc_msgSend_432( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer propertyKeys, - int options, - ) { - return __objc_msgSend_432( - obj, - sel, - propertyKeys, - options, - ); - } - - late final __objc_msgSend_432Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_432 = __objc_msgSend_432Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_unmountVolumeAtURL_options_completionHandler_1 = - _registerName1("unmountVolumeAtURL:options:completionHandler:"); - void _objc_msgSend_433( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int mask, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_433( - obj, - sel, - url, - mask, - completionHandler, - ); - } - - late final __objc_msgSend_433Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_433 = __objc_msgSend_433Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_1 = - _registerName1( - "contentsOfDirectoryAtURL:includingPropertiesForKeys:options:error:"); - ffi.Pointer _objc_msgSend_434( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer keys, - int mask, - ffi.Pointer> error, - ) { - return __objc_msgSend_434( - obj, - sel, - url, - keys, - mask, - error, - ); - } - - late final __objc_msgSend_434Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_434 = __objc_msgSend_434Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_URLsForDirectory_inDomains_1 = - _registerName1("URLsForDirectory:inDomains:"); - ffi.Pointer _objc_msgSend_435( - ffi.Pointer obj, - ffi.Pointer sel, - int directory, - int domainMask, - ) { - return __objc_msgSend_435( - obj, - sel, - directory, - domainMask, - ); - } - - late final __objc_msgSend_435Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_435 = __objc_msgSend_435Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int, int)>(); - - late final _sel_URLForDirectory_inDomain_appropriateForURL_create_error_1 = - _registerName1( - "URLForDirectory:inDomain:appropriateForURL:create:error:"); - ffi.Pointer _objc_msgSend_436( - ffi.Pointer obj, - ffi.Pointer sel, - int directory, - int domain, - ffi.Pointer url, - bool shouldCreate, - ffi.Pointer> error, - ) { - return __objc_msgSend_436( - obj, - sel, - directory, - domain, - url, - shouldCreate, - error, - ); - } - - late final __objc_msgSend_436Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Pointer, - ffi.Bool, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_436 = __objc_msgSend_436Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - int, - int, - ffi.Pointer, - bool, - ffi.Pointer>)>(); - - late final _sel_getRelationship_ofDirectoryAtURL_toItemAtURL_error_1 = - _registerName1("getRelationship:ofDirectoryAtURL:toItemAtURL:error:"); - bool _objc_msgSend_437( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer outRelationship, - ffi.Pointer directoryURL, - ffi.Pointer otherURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_437( - obj, - sel, - outRelationship, - directoryURL, - otherURL, - error, - ); - } - - late final __objc_msgSend_437Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_437 = __objc_msgSend_437Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_getRelationship_ofDirectory_inDomain_toItemAtURL_error_1 = - _registerName1("getRelationship:ofDirectory:inDomain:toItemAtURL:error:"); - bool _objc_msgSend_438( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer outRelationship, - int directory, - int domainMask, - ffi.Pointer url, - ffi.Pointer> error, - ) { - return __objc_msgSend_438( - obj, - sel, - outRelationship, - directory, - domainMask, - url, - error, - ); - } - - late final __objc_msgSend_438Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_438 = __objc_msgSend_438Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - int, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_createDirectoryAtURL_withIntermediateDirectories_attributes_error_1 = - _registerName1( - "createDirectoryAtURL:withIntermediateDirectories:attributes:error:"); - bool _objc_msgSend_439( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - bool createIntermediates, - ffi.Pointer attributes, - ffi.Pointer> error, - ) { - return __objc_msgSend_439( - obj, - sel, - url, - createIntermediates, - attributes, - error, - ); - } - - late final __objc_msgSend_439Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_439 = __objc_msgSend_439Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_createSymbolicLinkAtURL_withDestinationURL_error_1 = - _registerName1("createSymbolicLinkAtURL:withDestinationURL:error:"); - bool _objc_msgSend_440( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer destURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_440( - obj, - sel, - url, - destURL, - error, - ); - } - - late final __objc_msgSend_440Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_440 = __objc_msgSend_440Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_delegate1 = _registerName1("delegate"); - late final _sel_setDelegate_1 = _registerName1("setDelegate:"); - late final _sel_setAttributes_ofItemAtPath_error_1 = - _registerName1("setAttributes:ofItemAtPath:error:"); - bool _objc_msgSend_441( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attributes, - ffi.Pointer path, - ffi.Pointer> error, - ) { - return __objc_msgSend_441( - obj, - sel, - attributes, - path, - error, - ); - } - - late final __objc_msgSend_441Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_441 = __objc_msgSend_441Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_createDirectoryAtPath_withIntermediateDirectories_attributes_error_1 = - _registerName1( - "createDirectoryAtPath:withIntermediateDirectories:attributes:error:"); - bool _objc_msgSend_442( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool createIntermediates, - ffi.Pointer attributes, - ffi.Pointer> error, - ) { - return __objc_msgSend_442( - obj, - sel, - path, - createIntermediates, - attributes, - error, - ); - } - - late final __objc_msgSend_442Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_442 = __objc_msgSend_442Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_contentsOfDirectoryAtPath_error_1 = - _registerName1("contentsOfDirectoryAtPath:error:"); - ffi.Pointer _objc_msgSend_443( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer> error, - ) { - return __objc_msgSend_443( - obj, - sel, - path, - error, - ); - } - - late final __objc_msgSend_443Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_443 = __objc_msgSend_443Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_subpathsOfDirectoryAtPath_error_1 = - _registerName1("subpathsOfDirectoryAtPath:error:"); - late final _sel_attributesOfItemAtPath_error_1 = - _registerName1("attributesOfItemAtPath:error:"); - ffi.Pointer _objc_msgSend_444( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer> error, - ) { - return __objc_msgSend_444( - obj, - sel, - path, - error, - ); - } - - late final __objc_msgSend_444Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_444 = __objc_msgSend_444Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_attributesOfFileSystemForPath_error_1 = - _registerName1("attributesOfFileSystemForPath:error:"); - late final _sel_createSymbolicLinkAtPath_withDestinationPath_error_1 = - _registerName1("createSymbolicLinkAtPath:withDestinationPath:error:"); - bool _objc_msgSend_445( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer destPath, - ffi.Pointer> error, - ) { - return __objc_msgSend_445( - obj, - sel, - path, - destPath, - error, - ); - } - - late final __objc_msgSend_445Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_445 = __objc_msgSend_445Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_destinationOfSymbolicLinkAtPath_error_1 = - _registerName1("destinationOfSymbolicLinkAtPath:error:"); - ffi.Pointer _objc_msgSend_446( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer> error, - ) { - return __objc_msgSend_446( - obj, - sel, - path, - error, - ); - } - - late final __objc_msgSend_446Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_446 = __objc_msgSend_446Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_copyItemAtPath_toPath_error_1 = - _registerName1("copyItemAtPath:toPath:error:"); - late final _sel_moveItemAtPath_toPath_error_1 = - _registerName1("moveItemAtPath:toPath:error:"); - late final _sel_linkItemAtPath_toPath_error_1 = - _registerName1("linkItemAtPath:toPath:error:"); - late final _sel_removeItemAtPath_error_1 = - _registerName1("removeItemAtPath:error:"); - bool _objc_msgSend_447( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer> error, - ) { - return __objc_msgSend_447( - obj, - sel, - path, - error, - ); - } - - late final __objc_msgSend_447Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_447 = __objc_msgSend_447Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_copyItemAtURL_toURL_error_1 = - _registerName1("copyItemAtURL:toURL:error:"); - late final _sel_moveItemAtURL_toURL_error_1 = - _registerName1("moveItemAtURL:toURL:error:"); - late final _sel_linkItemAtURL_toURL_error_1 = - _registerName1("linkItemAtURL:toURL:error:"); - late final _sel_removeItemAtURL_error_1 = - _registerName1("removeItemAtURL:error:"); - late final _sel_trashItemAtURL_resultingItemURL_error_1 = - _registerName1("trashItemAtURL:resultingItemURL:error:"); - bool _objc_msgSend_448( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer> outResultingURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_448( - obj, - sel, - url, - outResultingURL, - error, - ); - } - - late final __objc_msgSend_448Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_448 = __objc_msgSend_448Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_fileAttributesAtPath_traverseLink_1 = - _registerName1("fileAttributesAtPath:traverseLink:"); - ffi.Pointer _objc_msgSend_449( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool yorn, - ) { - return __objc_msgSend_449( - obj, - sel, - path, - yorn, - ); - } - - late final __objc_msgSend_449Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_449 = __objc_msgSend_449Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_changeFileAttributes_atPath_1 = - _registerName1("changeFileAttributes:atPath:"); - bool _objc_msgSend_450( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attributes, - ffi.Pointer path, - ) { - return __objc_msgSend_450( - obj, - sel, - attributes, - path, - ); - } - - late final __objc_msgSend_450Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_450 = __objc_msgSend_450Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_directoryContentsAtPath_1 = - _registerName1("directoryContentsAtPath:"); - late final _sel_fileSystemAttributesAtPath_1 = - _registerName1("fileSystemAttributesAtPath:"); - late final _sel_pathContentOfSymbolicLinkAtPath_1 = - _registerName1("pathContentOfSymbolicLinkAtPath:"); - late final _sel_createSymbolicLinkAtPath_pathContent_1 = - _registerName1("createSymbolicLinkAtPath:pathContent:"); - bool _objc_msgSend_451( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer otherpath, - ) { - return __objc_msgSend_451( - obj, - sel, - path, - otherpath, - ); - } - - late final __objc_msgSend_451Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_451 = __objc_msgSend_451Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_createDirectoryAtPath_attributes_1 = - _registerName1("createDirectoryAtPath:attributes:"); - bool _objc_msgSend_452( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer attributes, - ) { - return __objc_msgSend_452( - obj, - sel, - path, - attributes, - ); - } - - late final __objc_msgSend_452Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_452 = __objc_msgSend_452Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_linkPath_toPath_handler_1 = - _registerName1("linkPath:toPath:handler:"); - bool _objc_msgSend_453( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer src, - ffi.Pointer dest, - ffi.Pointer handler, - ) { - return __objc_msgSend_453( - obj, - sel, - src, - dest, - handler, - ); - } - - late final __objc_msgSend_453Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_453 = __objc_msgSend_453Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_copyPath_toPath_handler_1 = - _registerName1("copyPath:toPath:handler:"); - late final _sel_movePath_toPath_handler_1 = - _registerName1("movePath:toPath:handler:"); - late final _sel_removeFileAtPath_handler_1 = - _registerName1("removeFileAtPath:handler:"); - bool _objc_msgSend_454( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer handler, - ) { - return __objc_msgSend_454( - obj, - sel, - path, - handler, - ); - } - - late final __objc_msgSend_454Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_454 = __objc_msgSend_454Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_currentDirectoryPath1 = - _registerName1("currentDirectoryPath"); - late final _sel_changeCurrentDirectoryPath_1 = - _registerName1("changeCurrentDirectoryPath:"); - late final _sel_fileExistsAtPath_1 = _registerName1("fileExistsAtPath:"); - late final _sel_fileExistsAtPath_isDirectory_1 = - _registerName1("fileExistsAtPath:isDirectory:"); - bool _objc_msgSend_455( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer isDirectory, - ) { - return __objc_msgSend_455( - obj, - sel, - path, - isDirectory, - ); - } - - late final __objc_msgSend_455Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_455 = __objc_msgSend_455Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isReadableFileAtPath_1 = - _registerName1("isReadableFileAtPath:"); - late final _sel_isWritableFileAtPath_1 = - _registerName1("isWritableFileAtPath:"); - late final _sel_isExecutableFileAtPath_1 = - _registerName1("isExecutableFileAtPath:"); - late final _sel_isDeletableFileAtPath_1 = - _registerName1("isDeletableFileAtPath:"); - late final _sel_contentsEqualAtPath_andPath_1 = - _registerName1("contentsEqualAtPath:andPath:"); - late final _sel_displayNameAtPath_1 = _registerName1("displayNameAtPath:"); - late final _sel_componentsToDisplayForPath_1 = - _registerName1("componentsToDisplayForPath:"); - late final _sel_enumeratorAtPath_1 = _registerName1("enumeratorAtPath:"); - late final _sel_enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_1 = - _registerName1( - "enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:"); - ffi.Pointer _objc_msgSend_456( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer keys, - int mask, - ffi.Pointer<_ObjCBlock> handler, - ) { - return __objc_msgSend_456( - obj, - sel, - url, - keys, - mask, - handler, - ); - } - - late final __objc_msgSend_456Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_456 = __objc_msgSend_456Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_subpathsAtPath_1 = _registerName1("subpathsAtPath:"); - late final _sel_contentsAtPath_1 = _registerName1("contentsAtPath:"); - ffi.Pointer _objc_msgSend_457( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_457( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_457Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_457 = __objc_msgSend_457Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_createFileAtPath_contents_attributes_1 = - _registerName1("createFileAtPath:contents:attributes:"); - bool _objc_msgSend_458( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer data, - ffi.Pointer attr, - ) { - return __objc_msgSend_458( - obj, - sel, - path, - data, - attr, - ); - } - - late final __objc_msgSend_458Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_458 = __objc_msgSend_458Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_fileSystemRepresentationWithPath_1 = - _registerName1("fileSystemRepresentationWithPath:"); - ffi.Pointer _objc_msgSend_459( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_459( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_459Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_459 = __objc_msgSend_459Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_stringWithFileSystemRepresentation_length_1 = - _registerName1("stringWithFileSystemRepresentation:length:"); - ffi.Pointer _objc_msgSend_460( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer str, - int len, - ) { - return __objc_msgSend_460( - obj, - sel, - str, - len, - ); - } - - late final __objc_msgSend_460Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_460 = __objc_msgSend_460Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_1 = - _registerName1( - "replaceItemAtURL:withItemAtURL:backupItemName:options:resultingItemURL:error:"); - bool _objc_msgSend_461( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer originalItemURL, - ffi.Pointer newItemURL, - ffi.Pointer backupItemName, - int options, - ffi.Pointer> resultingURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_461( - obj, - sel, - originalItemURL, - newItemURL, - backupItemName, - options, - resultingURL, - error, - ); - } - - late final __objc_msgSend_461Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_461 = __objc_msgSend_461Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_setUbiquitous_itemAtURL_destinationURL_error_1 = - _registerName1("setUbiquitous:itemAtURL:destinationURL:error:"); - bool _objc_msgSend_462( - ffi.Pointer obj, - ffi.Pointer sel, - bool flag, - ffi.Pointer url, - ffi.Pointer destinationURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_462( - obj, - sel, - flag, - url, - destinationURL, - error, - ); - } - - late final __objc_msgSend_462Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_462 = __objc_msgSend_462Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_isUbiquitousItemAtURL_1 = - _registerName1("isUbiquitousItemAtURL:"); - late final _sel_startDownloadingUbiquitousItemAtURL_error_1 = - _registerName1("startDownloadingUbiquitousItemAtURL:error:"); - late final _sel_evictUbiquitousItemAtURL_error_1 = - _registerName1("evictUbiquitousItemAtURL:error:"); - late final _sel_URLForUbiquityContainerIdentifier_1 = - _registerName1("URLForUbiquityContainerIdentifier:"); - ffi.Pointer _objc_msgSend_463( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer containerIdentifier, - ) { - return __objc_msgSend_463( - obj, - sel, - containerIdentifier, - ); - } - - late final __objc_msgSend_463Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_463 = __objc_msgSend_463Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_URLForPublishingUbiquitousItemAtURL_expirationDate_error_1 = - _registerName1( - "URLForPublishingUbiquitousItemAtURL:expirationDate:error:"); - ffi.Pointer _objc_msgSend_464( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer> outDate, - ffi.Pointer> error, - ) { - return __objc_msgSend_464( - obj, - sel, - url, - outDate, - error, - ); - } - - late final __objc_msgSend_464Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_464 = __objc_msgSend_464Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_ubiquityIdentityToken1 = - _registerName1("ubiquityIdentityToken"); - late final _sel_getFileProviderServicesForItemAtURL_completionHandler_1 = - _registerName1("getFileProviderServicesForItemAtURL:completionHandler:"); - void _objc_msgSend_465( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_465( - obj, - sel, - url, - completionHandler, - ); - } - - late final __objc_msgSend_465Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_465 = __objc_msgSend_465Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_containerURLForSecurityApplicationGroupIdentifier_1 = - _registerName1("containerURLForSecurityApplicationGroupIdentifier:"); - late final _sel_homeDirectoryForCurrentUser1 = - _registerName1("homeDirectoryForCurrentUser"); - ffi.Pointer _objc_msgSend_466( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_466( - obj, - sel, - ); - } - - late final __objc_msgSend_466Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_466 = __objc_msgSend_466Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_temporaryDirectory1 = _registerName1("temporaryDirectory"); - late final _sel_homeDirectoryForUser_1 = - _registerName1("homeDirectoryForUser:"); - late final _sel_fileManager_shouldProceedAfterError_1 = - _registerName1("fileManager:shouldProceedAfterError:"); - bool _objc_msgSend_467( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer fm, - ffi.Pointer errorInfo, - ) { - return __objc_msgSend_467( - obj, - sel, - fm, - errorInfo, - ); - } - - late final __objc_msgSend_467Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_467 = __objc_msgSend_467Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_fileManager_willProcessPath_1 = - _registerName1("fileManager:willProcessPath:"); - void _objc_msgSend_468( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer fm, - ffi.Pointer path, - ) { - return __objc_msgSend_468( - obj, - sel, - fm, - path, - ); - } - - late final __objc_msgSend_468Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_468 = __objc_msgSend_468Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_validateValue_forKey_error_1 = - _registerName1("validateValue:forKey:error:"); - late final _class_NSMutableArray1 = _getClass1("NSMutableArray"); - late final _sel_addObject_1 = _registerName1("addObject:"); - late final _sel_insertObject_atIndex_1 = - _registerName1("insertObject:atIndex:"); - void _objc_msgSend_469( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - int index, - ) { - return __objc_msgSend_469( - obj, - sel, - anObject, - index, - ); - } - - late final __objc_msgSend_469Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_469 = __objc_msgSend_469Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_removeLastObject1 = _registerName1("removeLastObject"); - late final _sel_removeObjectAtIndex_1 = - _registerName1("removeObjectAtIndex:"); - void _objc_msgSend_470( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_470( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_470Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_470 = __objc_msgSend_470Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_replaceObjectAtIndex_withObject_1 = - _registerName1("replaceObjectAtIndex:withObject:"); - void _objc_msgSend_471( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ffi.Pointer anObject, - ) { - return __objc_msgSend_471( - obj, - sel, - index, - anObject, - ); - } - - late final __objc_msgSend_471Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_471 = __objc_msgSend_471Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_initWithCapacity_1 = _registerName1("initWithCapacity:"); - late final _sel_addObjectsFromArray_1 = - _registerName1("addObjectsFromArray:"); - void _objc_msgSend_472( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherArray, - ) { - return __objc_msgSend_472( - obj, - sel, - otherArray, - ); - } - - late final __objc_msgSend_472Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_472 = __objc_msgSend_472Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_exchangeObjectAtIndex_withObjectAtIndex_1 = - _registerName1("exchangeObjectAtIndex:withObjectAtIndex:"); - void _objc_msgSend_473( - ffi.Pointer obj, - ffi.Pointer sel, - int idx1, - int idx2, - ) { - return __objc_msgSend_473( - obj, - sel, - idx1, - idx2, - ); - } - - late final __objc_msgSend_473Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_473 = __objc_msgSend_473Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, int)>(); - - late final _sel_removeAllObjects1 = _registerName1("removeAllObjects"); - late final _sel_removeObject_inRange_1 = - _registerName1("removeObject:inRange:"); - void _objc_msgSend_474( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - _NSRange range, - ) { - return __objc_msgSend_474( - obj, - sel, - anObject, - range, - ); - } - - late final __objc_msgSend_474Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_474 = __objc_msgSend_474Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - late final _sel_removeObject_1 = _registerName1("removeObject:"); - late final _sel_removeObjectIdenticalTo_inRange_1 = - _registerName1("removeObjectIdenticalTo:inRange:"); - late final _sel_removeObjectIdenticalTo_1 = - _registerName1("removeObjectIdenticalTo:"); - late final _sel_removeObjectsFromIndices_numIndices_1 = - _registerName1("removeObjectsFromIndices:numIndices:"); - void _objc_msgSend_475( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indices, - int cnt, - ) { - return __objc_msgSend_475( - obj, - sel, - indices, - cnt, - ); - } - - late final __objc_msgSend_475Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_475 = __objc_msgSend_475Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_removeObjectsInArray_1 = - _registerName1("removeObjectsInArray:"); - late final _sel_removeObjectsInRange_1 = - _registerName1("removeObjectsInRange:"); - void _objc_msgSend_476( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_476( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_476Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_476 = __objc_msgSend_476Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_replaceObjectsInRange_withObjectsFromArray_range_1 = - _registerName1("replaceObjectsInRange:withObjectsFromArray:range:"); - void _objc_msgSend_477( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer otherArray, - _NSRange otherRange, - ) { - return __objc_msgSend_477( - obj, - sel, - range, - otherArray, - otherRange, - ); - } - - late final __objc_msgSend_477Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_477 = __objc_msgSend_477Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - ffi.Pointer, _NSRange)>(); - - late final _sel_replaceObjectsInRange_withObjectsFromArray_1 = - _registerName1("replaceObjectsInRange:withObjectsFromArray:"); - void _objc_msgSend_478( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer otherArray, - ) { - return __objc_msgSend_478( - obj, - sel, - range, - otherArray, - ); - } - - late final __objc_msgSend_478Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_478 = __objc_msgSend_478Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - ffi.Pointer)>(); - - late final _sel_setArray_1 = _registerName1("setArray:"); - late final _sel_sortUsingFunction_context_1 = - _registerName1("sortUsingFunction:context:"); - void _objc_msgSend_479( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>> - compare, - ffi.Pointer context, - ) { - return __objc_msgSend_479( - obj, - sel, - compare, - context, - ); - } - - late final __objc_msgSend_479Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_479 = __objc_msgSend_479Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>, - ffi.Pointer)>(); - - late final _sel_sortUsingSelector_1 = _registerName1("sortUsingSelector:"); - late final _sel_insertObjects_atIndexes_1 = - _registerName1("insertObjects:atIndexes:"); - void _objc_msgSend_480( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer objects, - ffi.Pointer indexes, - ) { - return __objc_msgSend_480( - obj, - sel, - objects, - indexes, - ); - } - - late final __objc_msgSend_480Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_480 = __objc_msgSend_480Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_removeObjectsAtIndexes_1 = - _registerName1("removeObjectsAtIndexes:"); - void _objc_msgSend_481( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexes, - ) { - return __objc_msgSend_481( - obj, - sel, - indexes, - ); - } - - late final __objc_msgSend_481Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_481 = __objc_msgSend_481Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_replaceObjectsAtIndexes_withObjects_1 = - _registerName1("replaceObjectsAtIndexes:withObjects:"); - void _objc_msgSend_482( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexes, - ffi.Pointer objects, - ) { - return __objc_msgSend_482( - obj, - sel, - indexes, - objects, - ); - } - - late final __objc_msgSend_482Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_482 = __objc_msgSend_482Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setObject_atIndexedSubscript_1 = - _registerName1("setObject:atIndexedSubscript:"); - late final _sel_sortUsingComparator_1 = - _registerName1("sortUsingComparator:"); - void _objc_msgSend_483( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> cmptr, - ) { - return __objc_msgSend_483( - obj, - sel, - cmptr, - ); - } - - late final __objc_msgSend_483Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_483 = __objc_msgSend_483Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_sortWithOptions_usingComparator_1 = - _registerName1("sortWithOptions:usingComparator:"); - void _objc_msgSend_484( - ffi.Pointer obj, - ffi.Pointer sel, - int opts, - ffi.Pointer<_ObjCBlock> cmptr, - ) { - return __objc_msgSend_484( - obj, - sel, - opts, - cmptr, - ); - } - - late final __objc_msgSend_484Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_484 = __objc_msgSend_484Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_arrayWithCapacity_1 = _registerName1("arrayWithCapacity:"); - ffi.Pointer _objc_msgSend_485( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_485( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_485Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_485 = __objc_msgSend_485Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - ffi.Pointer _objc_msgSend_486( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_486( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_486Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_486 = __objc_msgSend_486Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_applyDifference_1 = _registerName1("applyDifference:"); - late final _sel_sortUsingDescriptors_1 = - _registerName1("sortUsingDescriptors:"); - late final _sel_filterUsingPredicate_1 = - _registerName1("filterUsingPredicate:"); - void _objc_msgSend_487( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer predicate, - ) { - return __objc_msgSend_487( - obj, - sel, - predicate, - ); - } - - late final __objc_msgSend_487Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_487 = __objc_msgSend_487Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_mutableArrayValueForKey_1 = - _registerName1("mutableArrayValueForKey:"); - ffi.Pointer _objc_msgSend_488( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_488( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_488Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_488 = __objc_msgSend_488Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSMutableOrderedSet1 = _getClass1("NSMutableOrderedSet"); - late final _class_NSOrderedSet1 = _getClass1("NSOrderedSet"); - late final _sel_isEqualToOrderedSet_1 = - _registerName1("isEqualToOrderedSet:"); - bool _objc_msgSend_489( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_489( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_489Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_489 = __objc_msgSend_489Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_intersectsOrderedSet_1 = - _registerName1("intersectsOrderedSet:"); - late final _sel_isSubsetOfOrderedSet_1 = - _registerName1("isSubsetOfOrderedSet:"); - late final _sel_reversedOrderedSet1 = _registerName1("reversedOrderedSet"); - ffi.Pointer _objc_msgSend_490( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_490( - obj, - sel, - ); - } - - late final __objc_msgSend_490Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_490 = __objc_msgSend_490Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - ffi.Pointer _objc_msgSend_491( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_491( - obj, - sel, - ); - } - - late final __objc_msgSend_491Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_491 = __objc_msgSend_491Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_orderedSet1 = _registerName1("orderedSet"); - late final _sel_orderedSetWithObject_1 = - _registerName1("orderedSetWithObject:"); - late final _sel_orderedSetWithObjects_count_1 = - _registerName1("orderedSetWithObjects:count:"); - late final _sel_orderedSetWithObjects_1 = - _registerName1("orderedSetWithObjects:"); - late final _sel_orderedSetWithOrderedSet_1 = - _registerName1("orderedSetWithOrderedSet:"); - instancetype _objc_msgSend_492( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer set1, - ) { - return __objc_msgSend_492( - obj, - sel, - set1, - ); - } - - late final __objc_msgSend_492Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_492 = __objc_msgSend_492Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_orderedSetWithOrderedSet_range_copyItems_1 = - _registerName1("orderedSetWithOrderedSet:range:copyItems:"); - instancetype _objc_msgSend_493( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer set1, - _NSRange range, - bool flag, - ) { - return __objc_msgSend_493( - obj, - sel, - set1, - range, - flag, - ); - } - - late final __objc_msgSend_493Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_493 = __objc_msgSend_493Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange, bool)>(); - - late final _sel_orderedSetWithArray_1 = - _registerName1("orderedSetWithArray:"); - late final _sel_orderedSetWithArray_range_copyItems_1 = - _registerName1("orderedSetWithArray:range:copyItems:"); - instancetype _objc_msgSend_494( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer array, - _NSRange range, - bool flag, - ) { - return __objc_msgSend_494( - obj, - sel, - array, - range, - flag, - ); - } - - late final __objc_msgSend_494Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_494 = __objc_msgSend_494Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange, bool)>(); - - late final _sel_orderedSetWithSet_1 = _registerName1("orderedSetWithSet:"); - late final _sel_orderedSetWithSet_copyItems_1 = - _registerName1("orderedSetWithSet:copyItems:"); - late final _sel_initWithObject_1 = _registerName1("initWithObject:"); - late final _sel_initWithOrderedSet_1 = _registerName1("initWithOrderedSet:"); - late final _sel_initWithOrderedSet_copyItems_1 = - _registerName1("initWithOrderedSet:copyItems:"); - instancetype _objc_msgSend_495( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer set1, - bool flag, - ) { - return __objc_msgSend_495( - obj, - sel, - set1, - flag, - ); - } - - late final __objc_msgSend_495Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_495 = __objc_msgSend_495Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_initWithOrderedSet_range_copyItems_1 = - _registerName1("initWithOrderedSet:range:copyItems:"); - late final _sel_initWithArray_range_copyItems_1 = - _registerName1("initWithArray:range:copyItems:"); - late final _sel_differenceFromOrderedSet_withOptions_usingEquivalenceTest_1 = - _registerName1( - "differenceFromOrderedSet:withOptions:usingEquivalenceTest:"); - ffi.Pointer _objc_msgSend_496( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - int options, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_496( - obj, - sel, - other, - options, - block, - ); - } - - late final __objc_msgSend_496Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_496 = __objc_msgSend_496Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_differenceFromOrderedSet_withOptions_1 = - _registerName1("differenceFromOrderedSet:withOptions:"); - ffi.Pointer _objc_msgSend_497( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - int options, - ) { - return __objc_msgSend_497( - obj, - sel, - other, - options, - ); - } - - late final __objc_msgSend_497Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_497 = __objc_msgSend_497Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_differenceFromOrderedSet_1 = - _registerName1("differenceFromOrderedSet:"); - late final _sel_orderedSetByApplyingDifference_1 = - _registerName1("orderedSetByApplyingDifference:"); - ffi.Pointer _objc_msgSend_498( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer difference, - ) { - return __objc_msgSend_498( - obj, - sel, - difference, - ); - } - - late final __objc_msgSend_498Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_498 = __objc_msgSend_498Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_filteredOrderedSetUsingPredicate_1 = - _registerName1("filteredOrderedSetUsingPredicate:"); - ffi.Pointer _objc_msgSend_499( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer p, - ) { - return __objc_msgSend_499( - obj, - sel, - p, - ); - } - - late final __objc_msgSend_499Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_499 = __objc_msgSend_499Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addObjects_count_1 = _registerName1("addObjects:count:"); - void _objc_msgSend_500( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> objects, - int count, - ) { - return __objc_msgSend_500( - obj, - sel, - objects, - count, - ); - } - - late final __objc_msgSend_500Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_500 = __objc_msgSend_500Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer>, int)>(); - - late final _sel_moveObjectsAtIndexes_toIndex_1 = - _registerName1("moveObjectsAtIndexes:toIndex:"); - void _objc_msgSend_501( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexes, - int idx, - ) { - return __objc_msgSend_501( - obj, - sel, - indexes, - idx, - ); - } - - late final __objc_msgSend_501Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_501 = __objc_msgSend_501Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_setObject_atIndex_1 = _registerName1("setObject:atIndex:"); - late final _sel_replaceObjectsInRange_withObjects_count_1 = - _registerName1("replaceObjectsInRange:withObjects:count:"); - void _objc_msgSend_502( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer> objects, - int count, - ) { - return __objc_msgSend_502( - obj, - sel, - range, - objects, - count, - ); - } - - late final __objc_msgSend_502Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer>, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_502 = __objc_msgSend_502Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - ffi.Pointer>, int)>(); - - late final _sel_intersectOrderedSet_1 = - _registerName1("intersectOrderedSet:"); - void _objc_msgSend_503( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_503( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_503Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_503 = __objc_msgSend_503Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_minusOrderedSet_1 = _registerName1("minusOrderedSet:"); - late final _sel_unionOrderedSet_1 = _registerName1("unionOrderedSet:"); - late final _sel_intersectSet_1 = _registerName1("intersectSet:"); - void _objc_msgSend_504( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_504( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_504Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_504 = __objc_msgSend_504Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_minusSet_1 = _registerName1("minusSet:"); - late final _sel_unionSet_1 = _registerName1("unionSet:"); - late final _sel_sortRange_options_usingComparator_1 = - _registerName1("sortRange:options:usingComparator:"); - void _objc_msgSend_505( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - int opts, - ffi.Pointer<_ObjCBlock> cmptr, - ) { - return __objc_msgSend_505( - obj, - sel, - range, - opts, - cmptr, - ); - } - - late final __objc_msgSend_505Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_505 = __objc_msgSend_505Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_orderedSetWithCapacity_1 = - _registerName1("orderedSetWithCapacity:"); - late final _sel_mutableOrderedSetValueForKey_1 = - _registerName1("mutableOrderedSetValueForKey:"); - ffi.Pointer _objc_msgSend_506( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_506( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_506Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_506 = __objc_msgSend_506Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSMutableSet1 = _getClass1("NSMutableSet"); - late final _sel_setSet_1 = _registerName1("setSet:"); - late final _sel_setWithCapacity_1 = _registerName1("setWithCapacity:"); - late final _sel_mutableSetValueForKey_1 = - _registerName1("mutableSetValueForKey:"); - ffi.Pointer _objc_msgSend_507( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_507( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_507Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_507 = __objc_msgSend_507Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_valueForKeyPath_1 = _registerName1("valueForKeyPath:"); - late final _sel_setValue_forKeyPath_1 = - _registerName1("setValue:forKeyPath:"); - late final _sel_validateValue_forKeyPath_error_1 = - _registerName1("validateValue:forKeyPath:error:"); - late final _sel_mutableArrayValueForKeyPath_1 = - _registerName1("mutableArrayValueForKeyPath:"); - late final _sel_mutableOrderedSetValueForKeyPath_1 = - _registerName1("mutableOrderedSetValueForKeyPath:"); - late final _sel_mutableSetValueForKeyPath_1 = - _registerName1("mutableSetValueForKeyPath:"); - late final _sel_valueForUndefinedKey_1 = - _registerName1("valueForUndefinedKey:"); - late final _sel_setValue_forUndefinedKey_1 = - _registerName1("setValue:forUndefinedKey:"); - late final _sel_setNilValueForKey_1 = _registerName1("setNilValueForKey:"); - late final _sel_dictionaryWithValuesForKeys_1 = - _registerName1("dictionaryWithValuesForKeys:"); - ffi.Pointer _objc_msgSend_508( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keys, - ) { - return __objc_msgSend_508( - obj, - sel, - keys, - ); - } - - late final __objc_msgSend_508Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_508 = __objc_msgSend_508Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setValuesForKeysWithDictionary_1 = - _registerName1("setValuesForKeysWithDictionary:"); - void _objc_msgSend_509( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keyedValues, - ) { - return __objc_msgSend_509( - obj, - sel, - keyedValues, - ); - } - - late final __objc_msgSend_509Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_509 = __objc_msgSend_509Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_storedValueForKey_1 = _registerName1("storedValueForKey:"); - late final _sel_takeStoredValue_forKey_1 = - _registerName1("takeStoredValue:forKey:"); - late final _sel_takeValue_forKey_1 = _registerName1("takeValue:forKey:"); - late final _sel_takeValue_forKeyPath_1 = - _registerName1("takeValue:forKeyPath:"); - late final _sel_handleQueryWithUnboundKey_1 = - _registerName1("handleQueryWithUnboundKey:"); - late final _sel_handleTakeValue_forUnboundKey_1 = - _registerName1("handleTakeValue:forUnboundKey:"); - late final _sel_unableToSetNilForKey_1 = - _registerName1("unableToSetNilForKey:"); - late final _sel_valuesForKeys_1 = _registerName1("valuesForKeys:"); - late final _sel_takeValuesFromDictionary_1 = - _registerName1("takeValuesFromDictionary:"); - late final _sel_observeValueForKeyPath_ofObject_change_context_1 = - _registerName1("observeValueForKeyPath:ofObject:change:context:"); - void _objc_msgSend_510( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keyPath, - ffi.Pointer object, - ffi.Pointer change, - ffi.Pointer context, - ) { - return __objc_msgSend_510( - obj, - sel, - keyPath, - object, - change, - context, - ); - } - - late final __objc_msgSend_510Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_510 = __objc_msgSend_510Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_willChangeValueForKey_1 = - _registerName1("willChangeValueForKey:"); - late final _sel_didChangeValueForKey_1 = - _registerName1("didChangeValueForKey:"); - late final _sel_willChange_valuesAtIndexes_forKey_1 = - _registerName1("willChange:valuesAtIndexes:forKey:"); - void _objc_msgSend_511( - ffi.Pointer obj, - ffi.Pointer sel, - int changeKind, - ffi.Pointer indexes, - ffi.Pointer key, - ) { - return __objc_msgSend_511( - obj, - sel, - changeKind, - indexes, - key, - ); - } - - late final __objc_msgSend_511Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_511 = __objc_msgSend_511Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_didChange_valuesAtIndexes_forKey_1 = - _registerName1("didChange:valuesAtIndexes:forKey:"); - late final _sel_willChangeValueForKey_withSetMutation_usingObjects_1 = - _registerName1("willChangeValueForKey:withSetMutation:usingObjects:"); - void _objc_msgSend_512( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - int mutationKind, - ffi.Pointer objects, - ) { - return __objc_msgSend_512( - obj, - sel, - key, - mutationKind, - objects, - ); - } - - late final __objc_msgSend_512Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_512 = __objc_msgSend_512Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_didChangeValueForKey_withSetMutation_usingObjects_1 = - _registerName1("didChangeValueForKey:withSetMutation:usingObjects:"); - late final _sel_observationInfo1 = _registerName1("observationInfo"); - late final _sel_setObservationInfo_1 = _registerName1("setObservationInfo:"); - void _objc_msgSend_513( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_513( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_513Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_513 = __objc_msgSend_513Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_classForKeyedArchiver1 = - _registerName1("classForKeyedArchiver"); - late final _class_NSKeyedArchiver1 = _getClass1("NSKeyedArchiver"); - late final _sel_initRequiringSecureCoding_1 = - _registerName1("initRequiringSecureCoding:"); - instancetype _objc_msgSend_514( - ffi.Pointer obj, - ffi.Pointer sel, - bool requiresSecureCoding, - ) { - return __objc_msgSend_514( - obj, - sel, - requiresSecureCoding, - ); - } - - late final __objc_msgSend_514Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_514 = __objc_msgSend_514Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_archivedDataWithRootObject_requiringSecureCoding_error_1 = - _registerName1("archivedDataWithRootObject:requiringSecureCoding:error:"); - ffi.Pointer _objc_msgSend_515( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer object, - bool requiresSecureCoding, - ffi.Pointer> error, - ) { - return __objc_msgSend_515( - obj, - sel, - object, - requiresSecureCoding, - error, - ); - } - - late final __objc_msgSend_515Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_515 = __objc_msgSend_515Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer>)>(); - - late final _class_NSMutableData1 = _getClass1("NSMutableData"); - late final _sel_mutableBytes1 = _registerName1("mutableBytes"); - late final _sel_setLength_1 = _registerName1("setLength:"); - void _objc_msgSend_516( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_516( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_516Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_516 = __objc_msgSend_516Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_appendBytes_length_1 = _registerName1("appendBytes:length:"); - late final _sel_appendData_1 = _registerName1("appendData:"); - late final _sel_increaseLengthBy_1 = _registerName1("increaseLengthBy:"); - late final _sel_replaceBytesInRange_withBytes_1 = - _registerName1("replaceBytesInRange:withBytes:"); - void _objc_msgSend_517( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer bytes, - ) { - return __objc_msgSend_517( - obj, - sel, - range, - bytes, - ); - } - - late final __objc_msgSend_517Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_517 = __objc_msgSend_517Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - ffi.Pointer)>(); - - late final _sel_resetBytesInRange_1 = _registerName1("resetBytesInRange:"); - late final _sel_setData_1 = _registerName1("setData:"); - late final _sel_replaceBytesInRange_withBytes_length_1 = - _registerName1("replaceBytesInRange:withBytes:length:"); - void _objc_msgSend_518( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer replacementBytes, - int replacementLength, - ) { - return __objc_msgSend_518( - obj, - sel, - range, - replacementBytes, - replacementLength, - ); - } - - late final __objc_msgSend_518Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_518 = __objc_msgSend_518Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - ffi.Pointer, int)>(); - - late final _sel_dataWithCapacity_1 = _registerName1("dataWithCapacity:"); - instancetype _objc_msgSend_519( - ffi.Pointer obj, - ffi.Pointer sel, - int aNumItems, - ) { - return __objc_msgSend_519( - obj, - sel, - aNumItems, - ); - } - - late final __objc_msgSend_519Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_519 = __objc_msgSend_519Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_dataWithLength_1 = _registerName1("dataWithLength:"); - late final _sel_initWithLength_1 = _registerName1("initWithLength:"); - late final _sel_decompressUsingAlgorithm_error_1 = - _registerName1("decompressUsingAlgorithm:error:"); - bool _objc_msgSend_520( - ffi.Pointer obj, - ffi.Pointer sel, - int algorithm, - ffi.Pointer> error, - ) { - return __objc_msgSend_520( - obj, - sel, - algorithm, - error, - ); - } - - late final __objc_msgSend_520Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_520 = __objc_msgSend_520Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer>)>(); - - late final _sel_compressUsingAlgorithm_error_1 = - _registerName1("compressUsingAlgorithm:error:"); - late final _sel_initForWritingWithMutableData_1 = - _registerName1("initForWritingWithMutableData:"); - instancetype _objc_msgSend_521( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ) { - return __objc_msgSend_521( - obj, - sel, - data, - ); - } - - late final __objc_msgSend_521Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_521 = __objc_msgSend_521Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_archivedDataWithRootObject_1 = - _registerName1("archivedDataWithRootObject:"); - ffi.Pointer _objc_msgSend_522( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer rootObject, - ) { - return __objc_msgSend_522( - obj, - sel, - rootObject, - ); - } - - late final __objc_msgSend_522Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_522 = __objc_msgSend_522Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_archiveRootObject_toFile_1 = - _registerName1("archiveRootObject:toFile:"); - late final _sel_outputFormat1 = _registerName1("outputFormat"); - int _objc_msgSend_523( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_523( - obj, - sel, - ); - } - - late final __objc_msgSend_523Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_523 = __objc_msgSend_523Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setOutputFormat_1 = _registerName1("setOutputFormat:"); - void _objc_msgSend_524( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_524( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_524Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_524 = __objc_msgSend_524Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_encodedData1 = _registerName1("encodedData"); - late final _sel_finishEncoding1 = _registerName1("finishEncoding"); - late final _sel_setClassName_forClass_1 = - _registerName1("setClassName:forClass:"); - void _objc_msgSend_525( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer codedName, - ffi.Pointer cls, - ) { - return __objc_msgSend_525( - obj, - sel, - codedName, - cls, - ); - } - - late final __objc_msgSend_525Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_525 = __objc_msgSend_525Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_classNameForClass_1 = _registerName1("classNameForClass:"); - ffi.Pointer _objc_msgSend_526( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer cls, - ) { - return __objc_msgSend_526( - obj, - sel, - cls, - ); - } - - late final __objc_msgSend_526Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_526 = __objc_msgSend_526Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setRequiresSecureCoding_1 = - _registerName1("setRequiresSecureCoding:"); - void _objc_msgSend_527( - ffi.Pointer obj, - ffi.Pointer sel, - bool value, - ) { - return __objc_msgSend_527( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_527Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_527 = __objc_msgSend_527Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_replacementObjectForKeyedArchiver_1 = - _registerName1("replacementObjectForKeyedArchiver:"); - ffi.Pointer _objc_msgSend_528( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer archiver, - ) { - return __objc_msgSend_528( - obj, - sel, - archiver, - ); - } - - late final __objc_msgSend_528Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_528 = __objc_msgSend_528Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_performSelectorOnMainThread_withObject_waitUntilDone_modes_1 = - _registerName1( - "performSelectorOnMainThread:withObject:waitUntilDone:modes:"); - void _objc_msgSend_529( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer arg, - bool wait, - ffi.Pointer array, - ) { - return __objc_msgSend_529( - obj, - sel, - aSelector, - arg, - wait, - array, - ); - } - - late final __objc_msgSend_529Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_529 = __objc_msgSend_529Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer)>(); - - late final _sel_performSelectorOnMainThread_withObject_waitUntilDone_1 = - _registerName1("performSelectorOnMainThread:withObject:waitUntilDone:"); - void _objc_msgSend_530( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer arg, - bool wait, - ) { - return __objc_msgSend_530( - obj, - sel, - aSelector, - arg, - wait, - ); - } - - late final __objc_msgSend_530Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_530 = __objc_msgSend_530Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _class_NSThread1 = _getClass1("NSThread"); - late final _sel_currentThread1 = _registerName1("currentThread"); - ffi.Pointer _objc_msgSend_531( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_531( - obj, - sel, - ); - } - - late final __objc_msgSend_531Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_531 = __objc_msgSend_531Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_detachNewThreadWithBlock_1 = - _registerName1("detachNewThreadWithBlock:"); - void _objc_msgSend_532( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_532( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_532Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_532 = __objc_msgSend_532Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_detachNewThreadSelector_toTarget_withObject_1 = - _registerName1("detachNewThreadSelector:toTarget:withObject:"); - void _objc_msgSend_533( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer selector, - ffi.Pointer target, - ffi.Pointer argument, - ) { - return __objc_msgSend_533( - obj, - sel, - selector, - target, - argument, - ); - } - - late final __objc_msgSend_533Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_533 = __objc_msgSend_533Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isMultiThreaded1 = _registerName1("isMultiThreaded"); - late final _class_NSMutableDictionary1 = _getClass1("NSMutableDictionary"); - late final _sel_removeObjectForKey_1 = _registerName1("removeObjectForKey:"); - late final _sel_setObject_forKey_1 = _registerName1("setObject:forKey:"); - void _objc_msgSend_534( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - ffi.Pointer aKey, - ) { - return __objc_msgSend_534( - obj, - sel, - anObject, - aKey, - ); - } - - late final __objc_msgSend_534Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_534 = __objc_msgSend_534Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addEntriesFromDictionary_1 = - _registerName1("addEntriesFromDictionary:"); - late final _sel_removeObjectsForKeys_1 = - _registerName1("removeObjectsForKeys:"); - late final _sel_setDictionary_1 = _registerName1("setDictionary:"); - late final _sel_setObject_forKeyedSubscript_1 = - _registerName1("setObject:forKeyedSubscript:"); - void _objc_msgSend_535( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer obj1, - ffi.Pointer key, - ) { - return __objc_msgSend_535( - obj, - sel, - obj1, - key, - ); - } - - late final __objc_msgSend_535Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_535 = __objc_msgSend_535Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dictionaryWithCapacity_1 = - _registerName1("dictionaryWithCapacity:"); - ffi.Pointer _objc_msgSend_536( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ) { - return __objc_msgSend_536( - obj, - sel, - path, - ); - } - - late final __objc_msgSend_536Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_536 = __objc_msgSend_536Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - ffi.Pointer _objc_msgSend_537( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_537( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_537Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_537 = __objc_msgSend_537Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dictionaryWithSharedKeySet_1 = - _registerName1("dictionaryWithSharedKeySet:"); - ffi.Pointer _objc_msgSend_538( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer keyset, - ) { - return __objc_msgSend_538( - obj, - sel, - keyset, - ); - } - - late final __objc_msgSend_538Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_538 = __objc_msgSend_538Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_threadDictionary1 = _registerName1("threadDictionary"); - ffi.Pointer _objc_msgSend_539( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_539( - obj, - sel, - ); - } - - late final __objc_msgSend_539Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_539 = __objc_msgSend_539Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_sleepUntilDate_1 = _registerName1("sleepUntilDate:"); - void _objc_msgSend_540( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - ) { - return __objc_msgSend_540( - obj, - sel, - date, - ); - } - - late final __objc_msgSend_540Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_540 = __objc_msgSend_540Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_sleepForTimeInterval_1 = - _registerName1("sleepForTimeInterval:"); - void _objc_msgSend_541( - ffi.Pointer obj, - ffi.Pointer sel, - double ti, - ) { - return __objc_msgSend_541( - obj, - sel, - ti, - ); - } - - late final __objc_msgSend_541Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_541 = __objc_msgSend_541Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_exit1 = _registerName1("exit"); - late final _sel_threadPriority1 = _registerName1("threadPriority"); - late final _sel_setThreadPriority_1 = _registerName1("setThreadPriority:"); - void _objc_msgSend_542( - ffi.Pointer obj, - ffi.Pointer sel, - double value, - ) { - return __objc_msgSend_542( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_542Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_542 = __objc_msgSend_542Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_qualityOfService1 = _registerName1("qualityOfService"); - int _objc_msgSend_543( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_543( - obj, - sel, - ); - } - - late final __objc_msgSend_543Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_543 = __objc_msgSend_543Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setQualityOfService_1 = - _registerName1("setQualityOfService:"); - void _objc_msgSend_544( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_544( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_544Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_544 = __objc_msgSend_544Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_callStackReturnAddresses1 = - _registerName1("callStackReturnAddresses"); - late final _sel_callStackSymbols1 = _registerName1("callStackSymbols"); - late final _sel_setName_1 = _registerName1("setName:"); - void _objc_msgSend_545( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_545( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_545Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_545 = __objc_msgSend_545Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_stackSize1 = _registerName1("stackSize"); - late final _sel_setStackSize_1 = _registerName1("setStackSize:"); - late final _sel_isMainThread1 = _registerName1("isMainThread"); - late final _sel_mainThread1 = _registerName1("mainThread"); - late final _sel_initWithTarget_selector_object_1 = - _registerName1("initWithTarget:selector:object:"); - instancetype _objc_msgSend_546( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer target, - ffi.Pointer selector, - ffi.Pointer argument, - ) { - return __objc_msgSend_546( - obj, - sel, - target, - selector, - argument, - ); - } - - late final __objc_msgSend_546Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_546 = __objc_msgSend_546Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithBlock_1 = _registerName1("initWithBlock:"); - instancetype _objc_msgSend_547( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_547( - obj, - sel, - block, - ); - } - - late final __objc_msgSend_547Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_547 = __objc_msgSend_547Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_isExecuting1 = _registerName1("isExecuting"); - late final _sel_isFinished1 = _registerName1("isFinished"); - late final _sel_isCancelled1 = _registerName1("isCancelled"); - late final _sel_cancel1 = _registerName1("cancel"); - late final _sel_start1 = _registerName1("start"); - late final _sel_main1 = _registerName1("main"); - late final _sel_performSelector_onThread_withObject_waitUntilDone_modes_1 = - _registerName1( - "performSelector:onThread:withObject:waitUntilDone:modes:"); - void _objc_msgSend_548( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer thr, - ffi.Pointer arg, - bool wait, - ffi.Pointer array, - ) { - return __objc_msgSend_548( - obj, - sel, - aSelector, - thr, - arg, - wait, - array, - ); - } - - late final __objc_msgSend_548Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_548 = __objc_msgSend_548Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool, - ffi.Pointer)>(); - - late final _sel_performSelector_onThread_withObject_waitUntilDone_1 = - _registerName1("performSelector:onThread:withObject:waitUntilDone:"); - void _objc_msgSend_549( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer thr, - ffi.Pointer arg, - bool wait, - ) { - return __objc_msgSend_549( - obj, - sel, - aSelector, - thr, - arg, - wait, - ); - } - - late final __objc_msgSend_549Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_549 = __objc_msgSend_549Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool)>(); - - late final _sel_performSelectorInBackground_withObject_1 = - _registerName1("performSelectorInBackground:withObject:"); - late final _sel_classForArchiver1 = _registerName1("classForArchiver"); - late final _class_NSArchiver1 = _getClass1("NSArchiver"); - late final _sel_archiverData1 = _registerName1("archiverData"); - ffi.Pointer _objc_msgSend_550( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_550( - obj, - sel, - ); - } - - late final __objc_msgSend_550Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_550 = __objc_msgSend_550Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_encodeClassName_intoClassName_1 = - _registerName1("encodeClassName:intoClassName:"); - void _objc_msgSend_551( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer trueName, - ffi.Pointer inArchiveName, - ) { - return __objc_msgSend_551( - obj, - sel, - trueName, - inArchiveName, - ); - } - - late final __objc_msgSend_551Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_551 = __objc_msgSend_551Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_classNameEncodedForTrueClassName_1 = - _registerName1("classNameEncodedForTrueClassName:"); - late final _sel_replaceObject_withObject_1 = - _registerName1("replaceObject:withObject:"); - late final _sel_replacementObjectForArchiver_1 = - _registerName1("replacementObjectForArchiver:"); - ffi.Pointer _objc_msgSend_552( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer archiver, - ) { - return __objc_msgSend_552( - obj, - sel, - archiver, - ); - } - - late final __objc_msgSend_552Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_552 = __objc_msgSend_552Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_classForPortCoder1 = _registerName1("classForPortCoder"); - late final _class_NSPortCoder1 = _getClass1("NSPortCoder"); - late final _sel_isBycopy1 = _registerName1("isBycopy"); - late final _sel_isByref1 = _registerName1("isByref"); - late final _class_NSPort1 = _getClass1("NSPort"); - ffi.Pointer _objc_msgSend_553( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_553( - obj, - sel, - ); - } - - late final __objc_msgSend_553Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_553 = __objc_msgSend_553Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_invalidate1 = _registerName1("invalidate"); - late final _sel_isValid1 = _registerName1("isValid"); - late final _class_NSRunLoop1 = _getClass1("NSRunLoop"); - late final _sel_currentRunLoop1 = _registerName1("currentRunLoop"); - ffi.Pointer _objc_msgSend_554( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_554( - obj, - sel, - ); - } - - late final __objc_msgSend_554Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_554 = __objc_msgSend_554Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_mainRunLoop1 = _registerName1("mainRunLoop"); - late final _sel_currentMode1 = _registerName1("currentMode"); - late final _sel_getCFRunLoop1 = _registerName1("getCFRunLoop"); - ffi.Pointer<__CFRunLoop> _objc_msgSend_555( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_555( - obj, - sel, - ); - } - - late final __objc_msgSend_555Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<__CFRunLoop> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_555 = __objc_msgSend_555Ptr.asFunction< - ffi.Pointer<__CFRunLoop> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSTimer1 = _getClass1("NSTimer"); - late final _sel_timerWithTimeInterval_invocation_repeats_1 = - _registerName1("timerWithTimeInterval:invocation:repeats:"); - ffi.Pointer _objc_msgSend_556( - ffi.Pointer obj, - ffi.Pointer sel, - double ti, - ffi.Pointer invocation, - bool yesOrNo, - ) { - return __objc_msgSend_556( - obj, - sel, - ti, - invocation, - yesOrNo, - ); - } - - late final __objc_msgSend_556Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Double, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_556 = __objc_msgSend_556Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, double, ffi.Pointer, bool)>(); - - late final _sel_scheduledTimerWithTimeInterval_invocation_repeats_1 = - _registerName1("scheduledTimerWithTimeInterval:invocation:repeats:"); - late final _sel_timerWithTimeInterval_target_selector_userInfo_repeats_1 = - _registerName1("timerWithTimeInterval:target:selector:userInfo:repeats:"); - ffi.Pointer _objc_msgSend_557( - ffi.Pointer obj, - ffi.Pointer sel, - double ti, - ffi.Pointer aTarget, - ffi.Pointer aSelector, - ffi.Pointer userInfo, - bool yesOrNo, - ) { - return __objc_msgSend_557( - obj, - sel, - ti, - aTarget, - aSelector, - userInfo, - yesOrNo, - ); - } - - late final __objc_msgSend_557Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Double, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_557 = __objc_msgSend_557Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - double, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool)>(); - - late final _sel_scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_1 = - _registerName1( - "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:"); - late final _sel_timerWithTimeInterval_repeats_block_1 = - _registerName1("timerWithTimeInterval:repeats:block:"); - ffi.Pointer _objc_msgSend_558( - ffi.Pointer obj, - ffi.Pointer sel, - double interval, - bool repeats, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_558( - obj, - sel, - interval, - repeats, - block, - ); - } - - late final __objc_msgSend_558Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Double, - ffi.Bool, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_558 = __objc_msgSend_558Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, double, bool, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_scheduledTimerWithTimeInterval_repeats_block_1 = - _registerName1("scheduledTimerWithTimeInterval:repeats:block:"); - late final _sel_initWithFireDate_interval_repeats_block_1 = - _registerName1("initWithFireDate:interval:repeats:block:"); - instancetype _objc_msgSend_559( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - double interval, - bool repeats, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_559( - obj, - sel, - date, - interval, - repeats, - block, - ); - } - - late final __objc_msgSend_559Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Double, - ffi.Bool, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_559 = __objc_msgSend_559Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, double, bool, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_initWithFireDate_interval_target_selector_userInfo_repeats_1 = - _registerName1( - "initWithFireDate:interval:target:selector:userInfo:repeats:"); - instancetype _objc_msgSend_560( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - double ti, - ffi.Pointer t, - ffi.Pointer s, - ffi.Pointer ui, - bool rep, - ) { - return __objc_msgSend_560( - obj, - sel, - date, - ti, - t, - s, - ui, - rep, - ); - } - - late final __objc_msgSend_560Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Double, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_560 = __objc_msgSend_560Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - double, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - bool)>(); - - late final _sel_fire1 = _registerName1("fire"); - late final _sel_fireDate1 = _registerName1("fireDate"); - late final _sel_setFireDate_1 = _registerName1("setFireDate:"); - void _objc_msgSend_561( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_561( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_561Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_561 = __objc_msgSend_561Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_timeInterval1 = _registerName1("timeInterval"); - late final _sel_tolerance1 = _registerName1("tolerance"); - late final _sel_setTolerance_1 = _registerName1("setTolerance:"); - late final _sel_addTimer_forMode_1 = _registerName1("addTimer:forMode:"); - void _objc_msgSend_562( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer timer, - ffi.Pointer mode, - ) { - return __objc_msgSend_562( - obj, - sel, - timer, - mode, - ); - } - - late final __objc_msgSend_562Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_562 = __objc_msgSend_562Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addPort_forMode_1 = _registerName1("addPort:forMode:"); - void _objc_msgSend_563( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aPort, - ffi.Pointer mode, - ) { - return __objc_msgSend_563( - obj, - sel, - aPort, - mode, - ); - } - - late final __objc_msgSend_563Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_563 = __objc_msgSend_563Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_removePort_forMode_1 = _registerName1("removePort:forMode:"); - late final _sel_limitDateForMode_1 = _registerName1("limitDateForMode:"); - ffi.Pointer _objc_msgSend_564( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer mode, - ) { - return __objc_msgSend_564( - obj, - sel, - mode, - ); - } - - late final __objc_msgSend_564Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_564 = __objc_msgSend_564Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_acceptInputForMode_beforeDate_1 = - _registerName1("acceptInputForMode:beforeDate:"); - void _objc_msgSend_565( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer mode, - ffi.Pointer limitDate, - ) { - return __objc_msgSend_565( - obj, - sel, - mode, - limitDate, - ); - } - - late final __objc_msgSend_565Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_565 = __objc_msgSend_565Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_run1 = _registerName1("run"); - late final _sel_runUntilDate_1 = _registerName1("runUntilDate:"); - late final _sel_runMode_beforeDate_1 = _registerName1("runMode:beforeDate:"); - bool _objc_msgSend_566( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer mode, - ffi.Pointer limitDate, - ) { - return __objc_msgSend_566( - obj, - sel, - mode, - limitDate, - ); - } - - late final __objc_msgSend_566Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_566 = __objc_msgSend_566Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_configureAsServer1 = _registerName1("configureAsServer"); - late final _sel_performInModes_block_1 = - _registerName1("performInModes:block:"); - void _objc_msgSend_567( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer modes, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_567( - obj, - sel, - modes, - block, - ); - } - - late final __objc_msgSend_567Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_567 = __objc_msgSend_567Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_performBlock_1 = _registerName1("performBlock:"); - late final _sel_performSelector_target_argument_order_modes_1 = - _registerName1("performSelector:target:argument:order:modes:"); - void _objc_msgSend_568( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aSelector, - ffi.Pointer target, - ffi.Pointer arg, - int order, - ffi.Pointer modes, - ) { - return __objc_msgSend_568( - obj, - sel, - aSelector, - target, - arg, - order, - modes, - ); - } - - late final __objc_msgSend_568Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_568 = __objc_msgSend_568Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer)>(); - - late final _sel_cancelPerformSelector_target_argument_1 = - _registerName1("cancelPerformSelector:target:argument:"); - late final _sel_cancelPerformSelectorsWithTarget_1 = - _registerName1("cancelPerformSelectorsWithTarget:"); - late final _sel_scheduleInRunLoop_forMode_1 = - _registerName1("scheduleInRunLoop:forMode:"); - void _objc_msgSend_569( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer runLoop, - ffi.Pointer mode, - ) { - return __objc_msgSend_569( - obj, - sel, - runLoop, - mode, - ); - } - - late final __objc_msgSend_569Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_569 = __objc_msgSend_569Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_removeFromRunLoop_forMode_1 = - _registerName1("removeFromRunLoop:forMode:"); - late final _sel_reservedSpaceLength1 = _registerName1("reservedSpaceLength"); - late final _sel_sendBeforeDate_components_from_reserved_1 = - _registerName1("sendBeforeDate:components:from:reserved:"); - bool _objc_msgSend_570( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer limitDate, - ffi.Pointer components, - ffi.Pointer receivePort, - int headerSpaceReserved, - ) { - return __objc_msgSend_570( - obj, - sel, - limitDate, - components, - receivePort, - headerSpaceReserved, - ); - } - - late final __objc_msgSend_570Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_570 = __objc_msgSend_570Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _sel_sendBeforeDate_msgid_components_from_reserved_1 = - _registerName1("sendBeforeDate:msgid:components:from:reserved:"); - bool _objc_msgSend_571( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer limitDate, - int msgID, - ffi.Pointer components, - ffi.Pointer receivePort, - int headerSpaceReserved, - ) { - return __objc_msgSend_571( - obj, - sel, - limitDate, - msgID, - components, - receivePort, - headerSpaceReserved, - ); - } - - late final __objc_msgSend_571Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_571 = __objc_msgSend_571Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _class_NSConnection1 = _getClass1("NSConnection"); - late final _sel_statistics1 = _registerName1("statistics"); - late final _sel_allConnections1 = _registerName1("allConnections"); - late final _sel_defaultConnection1 = _registerName1("defaultConnection"); - ffi.Pointer _objc_msgSend_572( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_572( - obj, - sel, - ); - } - - late final __objc_msgSend_572Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_572 = __objc_msgSend_572Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_connectionWithRegisteredName_host_1 = - _registerName1("connectionWithRegisteredName:host:"); - instancetype _objc_msgSend_573( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer hostName, - ) { - return __objc_msgSend_573( - obj, - sel, - name, - hostName, - ); - } - - late final __objc_msgSend_573Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_573 = __objc_msgSend_573Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSPortNameServer1 = _getClass1("NSPortNameServer"); - late final _sel_systemDefaultPortNameServer1 = - _registerName1("systemDefaultPortNameServer"); - ffi.Pointer _objc_msgSend_574( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_574( - obj, - sel, - ); - } - - late final __objc_msgSend_574Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_574 = __objc_msgSend_574Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_portForName_1 = _registerName1("portForName:"); - ffi.Pointer _objc_msgSend_575( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ) { - return __objc_msgSend_575( - obj, - sel, - name, - ); - } - - late final __objc_msgSend_575Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_575 = __objc_msgSend_575Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_portForName_host_1 = _registerName1("portForName:host:"); - ffi.Pointer _objc_msgSend_576( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer host, - ) { - return __objc_msgSend_576( - obj, - sel, - name, - host, - ); - } - - late final __objc_msgSend_576Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_576 = __objc_msgSend_576Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_registerPort_name_1 = _registerName1("registerPort:name:"); - bool _objc_msgSend_577( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer port, - ffi.Pointer name, - ) { - return __objc_msgSend_577( - obj, - sel, - port, - name, - ); - } - - late final __objc_msgSend_577Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_577 = __objc_msgSend_577Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_removePortForName_1 = _registerName1("removePortForName:"); - late final _sel_connectionWithRegisteredName_host_usingNameServer_1 = - _registerName1("connectionWithRegisteredName:host:usingNameServer:"); - instancetype _objc_msgSend_578( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer hostName, - ffi.Pointer server, - ) { - return __objc_msgSend_578( - obj, - sel, - name, - hostName, - server, - ); - } - - late final __objc_msgSend_578Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_578 = __objc_msgSend_578Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSDistantObject1 = _getClass1("NSDistantObject"); - late final _class_NSProxy1 = _getClass1("NSProxy"); - ffi.Pointer _objc_msgSend_579( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer sel1, - ) { - return __objc_msgSend_579( - obj, - sel, - sel1, - ); - } - - late final __objc_msgSend_579Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_579 = __objc_msgSend_579Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_respondsToSelector_1 = _registerName1("respondsToSelector:"); - late final _sel_proxyWithTarget_connection_1 = - _registerName1("proxyWithTarget:connection:"); - ffi.Pointer _objc_msgSend_580( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer target, - ffi.Pointer connection, - ) { - return __objc_msgSend_580( - obj, - sel, - target, - connection, - ); - } - - late final __objc_msgSend_580Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_580 = __objc_msgSend_580Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithTarget_connection_1 = - _registerName1("initWithTarget:connection:"); - late final _sel_proxyWithLocal_connection_1 = - _registerName1("proxyWithLocal:connection:"); - ffi.Pointer _objc_msgSend_581( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer target, - ffi.Pointer connection, - ) { - return __objc_msgSend_581( - obj, - sel, - target, - connection, - ); - } - - late final __objc_msgSend_581Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_581 = __objc_msgSend_581Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithLocal_connection_1 = - _registerName1("initWithLocal:connection:"); - late final _sel_setProtocolForProxy_1 = - _registerName1("setProtocolForProxy:"); - void _objc_msgSend_582( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer proto, - ) { - return __objc_msgSend_582( - obj, - sel, - proto, - ); - } - - late final __objc_msgSend_582Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_582 = __objc_msgSend_582Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_connectionForProxy1 = _registerName1("connectionForProxy"); - late final _sel_rootProxyForConnectionWithRegisteredName_host_1 = - _registerName1("rootProxyForConnectionWithRegisteredName:host:"); - ffi.Pointer _objc_msgSend_583( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer hostName, - ) { - return __objc_msgSend_583( - obj, - sel, - name, - hostName, - ); - } - - late final __objc_msgSend_583Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_583 = __objc_msgSend_583Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_rootProxyForConnectionWithRegisteredName_host_usingNameServer_1 = - _registerName1( - "rootProxyForConnectionWithRegisteredName:host:usingNameServer:"); - ffi.Pointer _objc_msgSend_584( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer hostName, - ffi.Pointer server, - ) { - return __objc_msgSend_584( - obj, - sel, - name, - hostName, - server, - ); - } - - late final __objc_msgSend_584Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_584 = __objc_msgSend_584Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_serviceConnectionWithName_rootObject_usingNameServer_1 = - _registerName1("serviceConnectionWithName:rootObject:usingNameServer:"); - instancetype _objc_msgSend_585( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer root, - ffi.Pointer server, - ) { - return __objc_msgSend_585( - obj, - sel, - name, - root, - server, - ); - } - - late final __objc_msgSend_585Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_585 = __objc_msgSend_585Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_serviceConnectionWithName_rootObject_1 = - _registerName1("serviceConnectionWithName:rootObject:"); - instancetype _objc_msgSend_586( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer root, - ) { - return __objc_msgSend_586( - obj, - sel, - name, - root, - ); - } - - late final __objc_msgSend_586Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_586 = __objc_msgSend_586Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_requestTimeout1 = _registerName1("requestTimeout"); - late final _sel_setRequestTimeout_1 = _registerName1("setRequestTimeout:"); - late final _sel_replyTimeout1 = _registerName1("replyTimeout"); - late final _sel_setReplyTimeout_1 = _registerName1("setReplyTimeout:"); - late final _sel_rootObject1 = _registerName1("rootObject"); - late final _sel_setRootObject_1 = _registerName1("setRootObject:"); - late final _sel_independentConversationQueueing1 = - _registerName1("independentConversationQueueing"); - late final _sel_setIndependentConversationQueueing_1 = - _registerName1("setIndependentConversationQueueing:"); - late final _sel_rootProxy1 = _registerName1("rootProxy"); - ffi.Pointer _objc_msgSend_587( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_587( - obj, - sel, - ); - } - - late final __objc_msgSend_587Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_587 = __objc_msgSend_587Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addRequestMode_1 = _registerName1("addRequestMode:"); - late final _sel_removeRequestMode_1 = _registerName1("removeRequestMode:"); - late final _sel_requestModes1 = _registerName1("requestModes"); - late final _sel_registerName_1 = _registerName1("registerName:"); - bool _objc_msgSend_588( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ) { - return __objc_msgSend_588( - obj, - sel, - name, - ); - } - - late final __objc_msgSend_588Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_588 = __objc_msgSend_588Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_registerName_withNameServer_1 = - _registerName1("registerName:withNameServer:"); - bool _objc_msgSend_589( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer server, - ) { - return __objc_msgSend_589( - obj, - sel, - name, - server, - ); - } - - late final __objc_msgSend_589Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_589 = __objc_msgSend_589Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_connectionWithReceivePort_sendPort_1 = - _registerName1("connectionWithReceivePort:sendPort:"); - instancetype _objc_msgSend_590( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer receivePort, - ffi.Pointer sendPort, - ) { - return __objc_msgSend_590( - obj, - sel, - receivePort, - sendPort, - ); - } - - late final __objc_msgSend_590Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_590 = __objc_msgSend_590Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_currentConversation1 = _registerName1("currentConversation"); - late final _sel_initWithReceivePort_sendPort_1 = - _registerName1("initWithReceivePort:sendPort:"); - late final _sel_sendPort1 = _registerName1("sendPort"); - late final _sel_receivePort1 = _registerName1("receivePort"); - late final _sel_enableMultipleThreads1 = - _registerName1("enableMultipleThreads"); - late final _sel_multipleThreadsEnabled1 = - _registerName1("multipleThreadsEnabled"); - late final _sel_addRunLoop_1 = _registerName1("addRunLoop:"); - void _objc_msgSend_591( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer runloop, - ) { - return __objc_msgSend_591( - obj, - sel, - runloop, - ); - } - - late final __objc_msgSend_591Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_591 = __objc_msgSend_591Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeRunLoop_1 = _registerName1("removeRunLoop:"); - late final _sel_runInNewThread1 = _registerName1("runInNewThread"); - late final _sel_remoteObjects1 = _registerName1("remoteObjects"); - late final _sel_localObjects1 = _registerName1("localObjects"); - late final _sel_dispatchWithComponents_1 = - _registerName1("dispatchWithComponents:"); - late final _sel_addConnection_toRunLoop_forMode_1 = - _registerName1("addConnection:toRunLoop:forMode:"); - void _objc_msgSend_592( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer conn, - ffi.Pointer runLoop, - ffi.Pointer mode, - ) { - return __objc_msgSend_592( - obj, - sel, - conn, - runLoop, - mode, - ); - } - - late final __objc_msgSend_592Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_592 = __objc_msgSend_592Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeConnection_fromRunLoop_forMode_1 = - _registerName1("removeConnection:fromRunLoop:forMode:"); - late final _sel_encodePortObject_1 = _registerName1("encodePortObject:"); - void _objc_msgSend_593( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aport, - ) { - return __objc_msgSend_593( - obj, - sel, - aport, - ); - } - - late final __objc_msgSend_593Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_593 = __objc_msgSend_593Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_decodePortObject1 = _registerName1("decodePortObject"); - ffi.Pointer _objc_msgSend_594( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_594( - obj, - sel, - ); - } - - late final __objc_msgSend_594Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_594 = __objc_msgSend_594Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_connection1 = _registerName1("connection"); - ffi.Pointer _objc_msgSend_595( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_595( - obj, - sel, - ); - } - - late final __objc_msgSend_595Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_595 = __objc_msgSend_595Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_portCoderWithReceivePort_sendPort_components_1 = - _registerName1("portCoderWithReceivePort:sendPort:components:"); - ffi.Pointer _objc_msgSend_596( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer rcvPort, - ffi.Pointer sndPort, - ffi.Pointer comps, - ) { - return __objc_msgSend_596( - obj, - sel, - rcvPort, - sndPort, - comps, - ); - } - - late final __objc_msgSend_596Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_596 = __objc_msgSend_596Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithReceivePort_sendPort_components_1 = - _registerName1("initWithReceivePort:sendPort:components:"); - late final _sel_dispatch1 = _registerName1("dispatch"); - late final _sel_replacementObjectForPortCoder_1 = - _registerName1("replacementObjectForPortCoder:"); - ffi.Pointer _objc_msgSend_597( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer coder, - ) { - return __objc_msgSend_597( - obj, - sel, - coder, - ); - } - - late final __objc_msgSend_597Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_597 = __objc_msgSend_597Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSClassDescription1 = _getClass1("NSClassDescription"); - late final _sel_registerClassDescription_forClass_1 = - _registerName1("registerClassDescription:forClass:"); - void _objc_msgSend_598( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer description, - ffi.Pointer aClass, - ) { - return __objc_msgSend_598( - obj, - sel, - description, - aClass, - ); - } - - late final __objc_msgSend_598Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_598 = __objc_msgSend_598Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_invalidateClassDescriptionCache1 = - _registerName1("invalidateClassDescriptionCache"); - late final _sel_classDescriptionForClass_1 = - _registerName1("classDescriptionForClass:"); - ffi.Pointer _objc_msgSend_599( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aClass, - ) { - return __objc_msgSend_599( - obj, - sel, - aClass, - ); - } - - late final __objc_msgSend_599Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_599 = __objc_msgSend_599Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_attributeKeys1 = _registerName1("attributeKeys"); - late final _sel_toOneRelationshipKeys1 = - _registerName1("toOneRelationshipKeys"); - late final _sel_toManyRelationshipKeys1 = - _registerName1("toManyRelationshipKeys"); - late final _sel_inverseForRelationshipKey_1 = - _registerName1("inverseForRelationshipKey:"); - late final _sel_classDescription1 = _registerName1("classDescription"); - ffi.Pointer _objc_msgSend_600( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_600( - obj, - sel, - ); - } - - late final __objc_msgSend_600Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_600 = __objc_msgSend_600Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSScriptObjectSpecifier1 = - _getClass1("NSScriptObjectSpecifier"); - late final _class_NSAppleEventDescriptor1 = - _getClass1("NSAppleEventDescriptor"); - late final _sel_nullDescriptor1 = _registerName1("nullDescriptor"); - ffi.Pointer _objc_msgSend_601( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_601( - obj, - sel, - ); - } - - late final __objc_msgSend_601Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_601 = __objc_msgSend_601Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_descriptorWithDescriptorType_bytes_length_1 = - _registerName1("descriptorWithDescriptorType:bytes:length:"); - ffi.Pointer _objc_msgSend_602( - ffi.Pointer obj, - ffi.Pointer sel, - int descriptorType, - ffi.Pointer bytes, - int byteCount, - ) { - return __objc_msgSend_602( - obj, - sel, - descriptorType, - bytes, - byteCount, - ); - } - - late final __objc_msgSend_602Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedInt, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_602 = __objc_msgSend_602Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer, int)>(); - - late final _sel_descriptorWithDescriptorType_data_1 = - _registerName1("descriptorWithDescriptorType:data:"); - ffi.Pointer _objc_msgSend_603( - ffi.Pointer obj, - ffi.Pointer sel, - int descriptorType, - ffi.Pointer data, - ) { - return __objc_msgSend_603( - obj, - sel, - descriptorType, - data, - ); - } - - late final __objc_msgSend_603Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedInt, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_603 = __objc_msgSend_603Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_descriptorWithBoolean_1 = - _registerName1("descriptorWithBoolean:"); - ffi.Pointer _objc_msgSend_604( - ffi.Pointer obj, - ffi.Pointer sel, - int boolean, - ) { - return __objc_msgSend_604( - obj, - sel, - boolean, - ); - } - - late final __objc_msgSend_604Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedChar)>>('objc_msgSend'); - late final __objc_msgSend_604 = __objc_msgSend_604Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_descriptorWithEnumCode_1 = - _registerName1("descriptorWithEnumCode:"); - ffi.Pointer _objc_msgSend_605( - ffi.Pointer obj, - ffi.Pointer sel, - int enumerator, - ) { - return __objc_msgSend_605( - obj, - sel, - enumerator, - ); - } - - late final __objc_msgSend_605Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_605 = __objc_msgSend_605Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_descriptorWithInt32_1 = - _registerName1("descriptorWithInt32:"); - ffi.Pointer _objc_msgSend_606( - ffi.Pointer obj, - ffi.Pointer sel, - int signedInt, - ) { - return __objc_msgSend_606( - obj, - sel, - signedInt, - ); - } - - late final __objc_msgSend_606Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int)>>('objc_msgSend'); - late final __objc_msgSend_606 = __objc_msgSend_606Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_descriptorWithDouble_1 = - _registerName1("descriptorWithDouble:"); - ffi.Pointer _objc_msgSend_607( - ffi.Pointer obj, - ffi.Pointer sel, - double doubleValue, - ) { - return __objc_msgSend_607( - obj, - sel, - doubleValue, - ); - } - - late final __objc_msgSend_607Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_607 = __objc_msgSend_607Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_descriptorWithTypeCode_1 = - _registerName1("descriptorWithTypeCode:"); - late final _sel_descriptorWithString_1 = - _registerName1("descriptorWithString:"); - ffi.Pointer _objc_msgSend_608( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - ) { - return __objc_msgSend_608( - obj, - sel, - string, - ); - } - - late final __objc_msgSend_608Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_608 = __objc_msgSend_608Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_descriptorWithDate_1 = _registerName1("descriptorWithDate:"); - ffi.Pointer _objc_msgSend_609( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - ) { - return __objc_msgSend_609( - obj, - sel, - date, - ); - } - - late final __objc_msgSend_609Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_609 = __objc_msgSend_609Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_descriptorWithFileURL_1 = - _registerName1("descriptorWithFileURL:"); - ffi.Pointer _objc_msgSend_610( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer fileURL, - ) { - return __objc_msgSend_610( - obj, - sel, - fileURL, - ); - } - - late final __objc_msgSend_610Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_610 = __objc_msgSend_610Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_1 = - _registerName1( - "appleEventWithEventClass:eventID:targetDescriptor:returnID:transactionID:"); - ffi.Pointer _objc_msgSend_611( - ffi.Pointer obj, - ffi.Pointer sel, - int eventClass, - int eventID, - ffi.Pointer targetDescriptor, - int returnID, - int transactionID, - ) { - return __objc_msgSend_611( - obj, - sel, - eventClass, - eventID, - targetDescriptor, - returnID, - transactionID, - ); - } - - late final __objc_msgSend_611Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedInt, - ffi.UnsignedInt, - ffi.Pointer, - ffi.Short, - ffi.Int)>>('objc_msgSend'); - late final __objc_msgSend_611 = __objc_msgSend_611Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, int, ffi.Pointer, int, int)>(); - - late final _sel_listDescriptor1 = _registerName1("listDescriptor"); - late final _sel_recordDescriptor1 = _registerName1("recordDescriptor"); - late final _sel_currentProcessDescriptor1 = - _registerName1("currentProcessDescriptor"); - late final _sel_descriptorWithProcessIdentifier_1 = - _registerName1("descriptorWithProcessIdentifier:"); - late final _sel_descriptorWithBundleIdentifier_1 = - _registerName1("descriptorWithBundleIdentifier:"); - late final _sel_descriptorWithApplicationURL_1 = - _registerName1("descriptorWithApplicationURL:"); - late final _sel_initWithAEDescNoCopy_1 = - _registerName1("initWithAEDescNoCopy:"); - instancetype _objc_msgSend_612( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aeDesc, - ) { - return __objc_msgSend_612( - obj, - sel, - aeDesc, - ); - } - - late final __objc_msgSend_612Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_612 = __objc_msgSend_612Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithDescriptorType_bytes_length_1 = - _registerName1("initWithDescriptorType:bytes:length:"); - instancetype _objc_msgSend_613( - ffi.Pointer obj, - ffi.Pointer sel, - int descriptorType, - ffi.Pointer bytes, - int byteCount, - ) { - return __objc_msgSend_613( - obj, - sel, - descriptorType, - bytes, - byteCount, - ); - } - - late final __objc_msgSend_613Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedInt, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_613 = __objc_msgSend_613Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer, int)>(); - - late final _sel_initWithDescriptorType_data_1 = - _registerName1("initWithDescriptorType:data:"); - instancetype _objc_msgSend_614( - ffi.Pointer obj, - ffi.Pointer sel, - int descriptorType, - ffi.Pointer data, - ) { - return __objc_msgSend_614( - obj, - sel, - descriptorType, - data, - ); - } - - late final __objc_msgSend_614Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedInt, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_614 = __objc_msgSend_614Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_initWithEventClass_eventID_targetDescriptor_returnID_transactionID_1 = - _registerName1( - "initWithEventClass:eventID:targetDescriptor:returnID:transactionID:"); - instancetype _objc_msgSend_615( - ffi.Pointer obj, - ffi.Pointer sel, - int eventClass, - int eventID, - ffi.Pointer targetDescriptor, - int returnID, - int transactionID, - ) { - return __objc_msgSend_615( - obj, - sel, - eventClass, - eventID, - targetDescriptor, - returnID, - transactionID, - ); - } - - late final __objc_msgSend_615Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedInt, - ffi.UnsignedInt, - ffi.Pointer, - ffi.Short, - ffi.Int)>>('objc_msgSend'); - late final __objc_msgSend_615 = __objc_msgSend_615Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - int, ffi.Pointer, int, int)>(); - - late final _sel_initListDescriptor1 = _registerName1("initListDescriptor"); - late final _sel_initRecordDescriptor1 = - _registerName1("initRecordDescriptor"); - late final _sel_aeDesc1 = _registerName1("aeDesc"); - ffi.Pointer _objc_msgSend_616( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_616( - obj, - sel, - ); - } - - late final __objc_msgSend_616Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_616 = __objc_msgSend_616Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_descriptorType1 = _registerName1("descriptorType"); - late final _sel_booleanValue1 = _registerName1("booleanValue"); - late final _sel_enumCodeValue1 = _registerName1("enumCodeValue"); - late final _sel_int32Value1 = _registerName1("int32Value"); - late final _sel_typeCodeValue1 = _registerName1("typeCodeValue"); - late final _sel_dateValue1 = _registerName1("dateValue"); - late final _sel_fileURLValue1 = _registerName1("fileURLValue"); - late final _sel_eventClass1 = _registerName1("eventClass"); - late final _sel_eventID1 = _registerName1("eventID"); - late final _sel_returnID1 = _registerName1("returnID"); - late final _sel_transactionID1 = _registerName1("transactionID"); - late final _sel_setParamDescriptor_forKeyword_1 = - _registerName1("setParamDescriptor:forKeyword:"); - void _objc_msgSend_617( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer descriptor, - int keyword, - ) { - return __objc_msgSend_617( - obj, - sel, - descriptor, - keyword, - ); - } - - late final __objc_msgSend_617Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_617 = __objc_msgSend_617Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_paramDescriptorForKeyword_1 = - _registerName1("paramDescriptorForKeyword:"); - ffi.Pointer _objc_msgSend_618( - ffi.Pointer obj, - ffi.Pointer sel, - int keyword, - ) { - return __objc_msgSend_618( - obj, - sel, - keyword, - ); - } - - late final __objc_msgSend_618Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_618 = __objc_msgSend_618Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_removeParamDescriptorWithKeyword_1 = - _registerName1("removeParamDescriptorWithKeyword:"); - void _objc_msgSend_619( - ffi.Pointer obj, - ffi.Pointer sel, - int keyword, - ) { - return __objc_msgSend_619( - obj, - sel, - keyword, - ); - } - - late final __objc_msgSend_619Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_619 = __objc_msgSend_619Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_setAttributeDescriptor_forKeyword_1 = - _registerName1("setAttributeDescriptor:forKeyword:"); - late final _sel_attributeDescriptorForKeyword_1 = - _registerName1("attributeDescriptorForKeyword:"); - late final _sel_sendEventWithOptions_timeout_error_1 = - _registerName1("sendEventWithOptions:timeout:error:"); - ffi.Pointer _objc_msgSend_620( - ffi.Pointer obj, - ffi.Pointer sel, - int sendOptions, - double timeoutInSeconds, - ffi.Pointer> error, - ) { - return __objc_msgSend_620( - obj, - sel, - sendOptions, - timeoutInSeconds, - error, - ); - } - - late final __objc_msgSend_620Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Double, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_620 = __objc_msgSend_620Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - int, - double, - ffi.Pointer>)>(); - - late final _sel_isRecordDescriptor1 = _registerName1("isRecordDescriptor"); - late final _sel_numberOfItems1 = _registerName1("numberOfItems"); - late final _sel_insertDescriptor_atIndex_1 = - _registerName1("insertDescriptor:atIndex:"); - void _objc_msgSend_621( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer descriptor, - int index, - ) { - return __objc_msgSend_621( - obj, - sel, - descriptor, - index, - ); - } - - late final __objc_msgSend_621Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_621 = __objc_msgSend_621Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_descriptorAtIndex_1 = _registerName1("descriptorAtIndex:"); - ffi.Pointer _objc_msgSend_622( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_622( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_622Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_622 = __objc_msgSend_622Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_removeDescriptorAtIndex_1 = - _registerName1("removeDescriptorAtIndex:"); - late final _sel_setDescriptor_forKeyword_1 = - _registerName1("setDescriptor:forKeyword:"); - late final _sel_descriptorForKeyword_1 = - _registerName1("descriptorForKeyword:"); - late final _sel_removeDescriptorWithKeyword_1 = - _registerName1("removeDescriptorWithKeyword:"); - late final _sel_keywordForDescriptorAtIndex_1 = - _registerName1("keywordForDescriptorAtIndex:"); - int _objc_msgSend_623( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_623( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_623Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedInt Function(ffi.Pointer, - ffi.Pointer, ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_623 = __objc_msgSend_623Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_coerceToDescriptorType_1 = - _registerName1("coerceToDescriptorType:"); - late final _sel_objectSpecifierWithDescriptor_1 = - _registerName1("objectSpecifierWithDescriptor:"); - ffi.Pointer _objc_msgSend_624( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer descriptor, - ) { - return __objc_msgSend_624( - obj, - sel, - descriptor, - ); - } - - late final __objc_msgSend_624Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_624 = __objc_msgSend_624Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithContainerSpecifier_key_1 = - _registerName1("initWithContainerSpecifier:key:"); - instancetype _objc_msgSend_625( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer container, - ffi.Pointer property, - ) { - return __objc_msgSend_625( - obj, - sel, - container, - property, - ); - } - - late final __objc_msgSend_625Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_625 = __objc_msgSend_625Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSScriptClassDescription1 = - _getClass1("NSScriptClassDescription"); - ffi.Pointer _objc_msgSend_626( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aClass, - ) { - return __objc_msgSend_626( - obj, - sel, - aClass, - ); - } - - late final __objc_msgSend_626Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_626 = __objc_msgSend_626Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithSuiteName_className_dictionary_1 = - _registerName1("initWithSuiteName:className:dictionary:"); - instancetype _objc_msgSend_627( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer suiteName, - ffi.Pointer className, - ffi.Pointer classDeclaration, - ) { - return __objc_msgSend_627( - obj, - sel, - suiteName, - className, - classDeclaration, - ); - } - - late final __objc_msgSend_627Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_627 = __objc_msgSend_627Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_suiteName1 = _registerName1("suiteName"); - late final _sel_className1 = _registerName1("className"); - late final _sel_implementationClassName1 = - _registerName1("implementationClassName"); - late final _sel_superclassDescription1 = - _registerName1("superclassDescription"); - ffi.Pointer _objc_msgSend_628( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_628( - obj, - sel, - ); - } - - late final __objc_msgSend_628Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_628 = __objc_msgSend_628Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_appleEventCode1 = _registerName1("appleEventCode"); - late final _sel_matchesAppleEventCode_1 = - _registerName1("matchesAppleEventCode:"); - late final _class_NSScriptCommandDescription1 = - _getClass1("NSScriptCommandDescription"); - late final _sel_initWithSuiteName_commandName_dictionary_1 = - _registerName1("initWithSuiteName:commandName:dictionary:"); - late final _sel_commandName1 = _registerName1("commandName"); - late final _sel_appleEventClassCode1 = _registerName1("appleEventClassCode"); - late final _sel_commandClassName1 = _registerName1("commandClassName"); - late final _sel_returnType1 = _registerName1("returnType"); - late final _sel_appleEventCodeForReturnType1 = - _registerName1("appleEventCodeForReturnType"); - late final _sel_argumentNames1 = _registerName1("argumentNames"); - late final _sel_typeForArgumentWithName_1 = - _registerName1("typeForArgumentWithName:"); - late final _sel_appleEventCodeForArgumentWithName_1 = - _registerName1("appleEventCodeForArgumentWithName:"); - int _objc_msgSend_629( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer argumentName, - ) { - return __objc_msgSend_629( - obj, - sel, - argumentName, - ); - } - - late final __objc_msgSend_629Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedInt Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_629 = __objc_msgSend_629Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isOptionalArgumentWithName_1 = - _registerName1("isOptionalArgumentWithName:"); - late final _class_NSScriptCommand1 = _getClass1("NSScriptCommand"); - late final _sel_initWithCommandDescription_1 = - _registerName1("initWithCommandDescription:"); - instancetype _objc_msgSend_630( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer commandDef, - ) { - return __objc_msgSend_630( - obj, - sel, - commandDef, - ); - } - - late final __objc_msgSend_630Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_630 = __objc_msgSend_630Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_commandDescription1 = _registerName1("commandDescription"); - ffi.Pointer _objc_msgSend_631( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_631( - obj, - sel, - ); - } - - late final __objc_msgSend_631Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_631 = __objc_msgSend_631Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_directParameter1 = _registerName1("directParameter"); - late final _sel_setDirectParameter_1 = _registerName1("setDirectParameter:"); - late final _sel_receiversSpecifier1 = _registerName1("receiversSpecifier"); - ffi.Pointer _objc_msgSend_632( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_632( - obj, - sel, - ); - } - - late final __objc_msgSend_632Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_632 = __objc_msgSend_632Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setReceiversSpecifier_1 = - _registerName1("setReceiversSpecifier:"); - void _objc_msgSend_633( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_633( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_633Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_633 = __objc_msgSend_633Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_evaluatedReceivers1 = _registerName1("evaluatedReceivers"); - late final _sel_arguments1 = _registerName1("arguments"); - late final _sel_setArguments_1 = _registerName1("setArguments:"); - void _objc_msgSend_634( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_634( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_634Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_634 = __objc_msgSend_634Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_evaluatedArguments1 = _registerName1("evaluatedArguments"); - late final _sel_isWellFormed1 = _registerName1("isWellFormed"); - late final _sel_performDefaultImplementation1 = - _registerName1("performDefaultImplementation"); - late final _sel_executeCommand1 = _registerName1("executeCommand"); - late final _sel_scriptErrorNumber1 = _registerName1("scriptErrorNumber"); - late final _sel_setScriptErrorNumber_1 = - _registerName1("setScriptErrorNumber:"); - void _objc_msgSend_635( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_635( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_635Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_635 = __objc_msgSend_635Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_scriptErrorOffendingObjectDescriptor1 = - _registerName1("scriptErrorOffendingObjectDescriptor"); - ffi.Pointer _objc_msgSend_636( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_636( - obj, - sel, - ); - } - - late final __objc_msgSend_636Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_636 = __objc_msgSend_636Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setScriptErrorOffendingObjectDescriptor_1 = - _registerName1("setScriptErrorOffendingObjectDescriptor:"); - void _objc_msgSend_637( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_637( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_637Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_637 = __objc_msgSend_637Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scriptErrorExpectedTypeDescriptor1 = - _registerName1("scriptErrorExpectedTypeDescriptor"); - late final _sel_setScriptErrorExpectedTypeDescriptor_1 = - _registerName1("setScriptErrorExpectedTypeDescriptor:"); - late final _sel_scriptErrorString1 = _registerName1("scriptErrorString"); - late final _sel_setScriptErrorString_1 = - _registerName1("setScriptErrorString:"); - late final _sel_currentCommand1 = _registerName1("currentCommand"); - ffi.Pointer _objc_msgSend_638( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_638( - obj, - sel, - ); - } - - late final __objc_msgSend_638Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_638 = __objc_msgSend_638Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_appleEvent1 = _registerName1("appleEvent"); - late final _sel_suspendExecution1 = _registerName1("suspendExecution"); - late final _sel_resumeExecutionWithResult_1 = - _registerName1("resumeExecutionWithResult:"); - late final _sel_createCommandInstance1 = - _registerName1("createCommandInstance"); - ffi.Pointer _objc_msgSend_639( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_639( - obj, - sel, - ); - } - - late final __objc_msgSend_639Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_639 = __objc_msgSend_639Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_createCommandInstanceWithZone_1 = - _registerName1("createCommandInstanceWithZone:"); - ffi.Pointer _objc_msgSend_640( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_NSZone> zone, - ) { - return __objc_msgSend_640( - obj, - sel, - zone, - ); - } - - late final __objc_msgSend_640Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_NSZone>)>>('objc_msgSend'); - late final __objc_msgSend_640 = __objc_msgSend_640Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<_NSZone>)>(); - - late final _sel_supportsCommand_1 = _registerName1("supportsCommand:"); - bool _objc_msgSend_641( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer commandDescription, - ) { - return __objc_msgSend_641( - obj, - sel, - commandDescription, - ); - } - - late final __objc_msgSend_641Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_641 = __objc_msgSend_641Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_selectorForCommand_1 = _registerName1("selectorForCommand:"); - ffi.Pointer _objc_msgSend_642( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer commandDescription, - ) { - return __objc_msgSend_642( - obj, - sel, - commandDescription, - ); - } - - late final __objc_msgSend_642Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_642 = __objc_msgSend_642Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_typeForKey_1 = _registerName1("typeForKey:"); - late final _sel_classDescriptionForKey_1 = - _registerName1("classDescriptionForKey:"); - ffi.Pointer _objc_msgSend_643( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ) { - return __objc_msgSend_643( - obj, - sel, - key, - ); - } - - late final __objc_msgSend_643Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_643 = __objc_msgSend_643Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_appleEventCodeForKey_1 = - _registerName1("appleEventCodeForKey:"); - late final _sel_keyWithAppleEventCode_1 = - _registerName1("keyWithAppleEventCode:"); - ffi.Pointer _objc_msgSend_644( - ffi.Pointer obj, - ffi.Pointer sel, - int appleEventCode, - ) { - return __objc_msgSend_644( - obj, - sel, - appleEventCode, - ); - } - - late final __objc_msgSend_644Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); - late final __objc_msgSend_644 = __objc_msgSend_644Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_defaultSubcontainerAttributeKey1 = - _registerName1("defaultSubcontainerAttributeKey"); - late final _sel_isLocationRequiredToCreateForKey_1 = - _registerName1("isLocationRequiredToCreateForKey:"); - late final _sel_hasPropertyForKey_1 = _registerName1("hasPropertyForKey:"); - late final _sel_hasOrderedToManyRelationshipForKey_1 = - _registerName1("hasOrderedToManyRelationshipForKey:"); - late final _sel_hasReadablePropertyForKey_1 = - _registerName1("hasReadablePropertyForKey:"); - late final _sel_hasWritablePropertyForKey_1 = - _registerName1("hasWritablePropertyForKey:"); - late final _sel_isReadOnlyKey_1 = _registerName1("isReadOnlyKey:"); - late final _sel_initWithContainerClassDescription_containerSpecifier_key_1 = - _registerName1( - "initWithContainerClassDescription:containerSpecifier:key:"); - instancetype _objc_msgSend_645( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer classDesc, - ffi.Pointer container, - ffi.Pointer property, - ) { - return __objc_msgSend_645( - obj, - sel, - classDesc, - container, - property, - ); - } - - late final __objc_msgSend_645Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_645 = __objc_msgSend_645Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_childSpecifier1 = _registerName1("childSpecifier"); - late final _sel_setChildSpecifier_1 = _registerName1("setChildSpecifier:"); - late final _sel_containerSpecifier1 = _registerName1("containerSpecifier"); - late final _sel_setContainerSpecifier_1 = - _registerName1("setContainerSpecifier:"); - late final _sel_containerIsObjectBeingTested1 = - _registerName1("containerIsObjectBeingTested"); - late final _sel_setContainerIsObjectBeingTested_1 = - _registerName1("setContainerIsObjectBeingTested:"); - late final _sel_containerIsRangeContainerObject1 = - _registerName1("containerIsRangeContainerObject"); - late final _sel_setContainerIsRangeContainerObject_1 = - _registerName1("setContainerIsRangeContainerObject:"); - late final _sel_key1 = _registerName1("key"); - late final _sel_setKey_1 = _registerName1("setKey:"); - void _objc_msgSend_646( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_646( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_646Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_646 = __objc_msgSend_646Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_containerClassDescription1 = - _registerName1("containerClassDescription"); - late final _sel_setContainerClassDescription_1 = - _registerName1("setContainerClassDescription:"); - void _objc_msgSend_647( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_647( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_647Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_647 = __objc_msgSend_647Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_keyClassDescription1 = _registerName1("keyClassDescription"); - late final _sel_indicesOfObjectsByEvaluatingWithContainer_count_1 = - _registerName1("indicesOfObjectsByEvaluatingWithContainer:count:"); - ffi.Pointer _objc_msgSend_648( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer container, - ffi.Pointer count, - ) { - return __objc_msgSend_648( - obj, - sel, - container, - count, - ); - } - - late final __objc_msgSend_648Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_648 = __objc_msgSend_648Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_objectsByEvaluatingWithContainers_1 = - _registerName1("objectsByEvaluatingWithContainers:"); - late final _sel_objectsByEvaluatingSpecifier1 = - _registerName1("objectsByEvaluatingSpecifier"); - late final _sel_evaluationErrorNumber1 = - _registerName1("evaluationErrorNumber"); - late final _sel_setEvaluationErrorNumber_1 = - _registerName1("setEvaluationErrorNumber:"); - late final _sel_evaluationErrorSpecifier1 = - _registerName1("evaluationErrorSpecifier"); - late final _sel_descriptor1 = _registerName1("descriptor"); - late final _sel_scriptingValueForSpecifier_1 = - _registerName1("scriptingValueForSpecifier:"); - ffi.Pointer _objc_msgSend_649( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer objectSpecifier, - ) { - return __objc_msgSend_649( - obj, - sel, - objectSpecifier, - ); - } - - late final __objc_msgSend_649Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_649 = __objc_msgSend_649Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_scriptingProperties1 = _registerName1("scriptingProperties"); - late final _sel_setScriptingProperties_1 = - _registerName1("setScriptingProperties:"); - late final _sel_copyScriptingValue_forKey_withProperties_1 = - _registerName1("copyScriptingValue:forKey:withProperties:"); - ffi.Pointer _objc_msgSend_650( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer key, - ffi.Pointer properties, - ) { - return __objc_msgSend_650( - obj, - sel, - value, - key, - properties, - ); - } - - late final __objc_msgSend_650Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_650 = __objc_msgSend_650Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_newScriptingObjectOfClass_forValueForKey_withContentsValue_properties_1 = - _registerName1( - "newScriptingObjectOfClass:forValueForKey:withContentsValue:properties:"); - ffi.Pointer _objc_msgSend_651( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer objectClass, - ffi.Pointer key, - ffi.Pointer contentsValue, - ffi.Pointer properties, - ) { - return __objc_msgSend_651( - obj, - sel, - objectClass, - key, - contentsValue, - properties, - ); - } - - late final __objc_msgSend_651Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_651 = __objc_msgSend_651Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_classCode1 = _registerName1("classCode"); - late final _sel_valueAtIndex_inPropertyWithKey_1 = - _registerName1("valueAtIndex:inPropertyWithKey:"); - ffi.Pointer _objc_msgSend_652( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ffi.Pointer key, - ) { - return __objc_msgSend_652( - obj, - sel, - index, - key, - ); - } - - late final __objc_msgSend_652Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_652 = __objc_msgSend_652Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_valueWithName_inPropertyWithKey_1 = - _registerName1("valueWithName:inPropertyWithKey:"); - late final _sel_valueWithUniqueID_inPropertyWithKey_1 = - _registerName1("valueWithUniqueID:inPropertyWithKey:"); - late final _sel_insertValue_atIndex_inPropertyWithKey_1 = - _registerName1("insertValue:atIndex:inPropertyWithKey:"); - void _objc_msgSend_653( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - int index, - ffi.Pointer key, - ) { - return __objc_msgSend_653( - obj, - sel, - value, - index, - key, - ); - } - - late final __objc_msgSend_653Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_653 = __objc_msgSend_653Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_removeValueAtIndex_fromPropertyWithKey_1 = - _registerName1("removeValueAtIndex:fromPropertyWithKey:"); - void _objc_msgSend_654( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ffi.Pointer key, - ) { - return __objc_msgSend_654( - obj, - sel, - index, - key, - ); - } - - late final __objc_msgSend_654Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_654 = __objc_msgSend_654Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_replaceValueAtIndex_inPropertyWithKey_withValue_1 = - _registerName1("replaceValueAtIndex:inPropertyWithKey:withValue:"); - void _objc_msgSend_655( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ffi.Pointer key, - ffi.Pointer value, - ) { - return __objc_msgSend_655( - obj, - sel, - index, - key, - value, - ); - } - - late final __objc_msgSend_655Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_655 = __objc_msgSend_655Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_insertValue_inPropertyWithKey_1 = - _registerName1("insertValue:inPropertyWithKey:"); - void _objc_msgSend_656( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer key, - ) { - return __objc_msgSend_656( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_656Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_656 = __objc_msgSend_656Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_coerceValue_forKey_1 = _registerName1("coerceValue:forKey:"); - ffi.Pointer _objc_msgSend_657( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer key, - ) { - return __objc_msgSend_657( - obj, - sel, - value, - key, - ); - } - - late final __objc_msgSend_657Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_657 = __objc_msgSend_657Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_objectSpecifier1 = _registerName1("objectSpecifier"); - late final _sel_indicesOfObjectsByEvaluatingObjectSpecifier_1 = - _registerName1("indicesOfObjectsByEvaluatingObjectSpecifier:"); - ffi.Pointer _objc_msgSend_658( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer specifier, - ) { - return __objc_msgSend_658( - obj, - sel, - specifier, - ); - } - - late final __objc_msgSend_658Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_658 = __objc_msgSend_658Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isEqualTo_1 = _registerName1("isEqualTo:"); - late final _sel_isLessThanOrEqualTo_1 = - _registerName1("isLessThanOrEqualTo:"); - late final _sel_isLessThan_1 = _registerName1("isLessThan:"); - late final _sel_isGreaterThanOrEqualTo_1 = - _registerName1("isGreaterThanOrEqualTo:"); - late final _sel_isGreaterThan_1 = _registerName1("isGreaterThan:"); - late final _sel_isNotEqualTo_1 = _registerName1("isNotEqualTo:"); - late final _sel_doesContain_1 = _registerName1("doesContain:"); - late final _sel_isLike_1 = _registerName1("isLike:"); - late final _sel_isCaseInsensitiveLike_1 = - _registerName1("isCaseInsensitiveLike:"); - late final _sel_scriptingIsEqualTo_1 = _registerName1("scriptingIsEqualTo:"); - late final _sel_scriptingIsLessThanOrEqualTo_1 = - _registerName1("scriptingIsLessThanOrEqualTo:"); - late final _sel_scriptingIsLessThan_1 = - _registerName1("scriptingIsLessThan:"); - late final _sel_scriptingIsGreaterThanOrEqualTo_1 = - _registerName1("scriptingIsGreaterThanOrEqualTo:"); - late final _sel_scriptingIsGreaterThan_1 = - _registerName1("scriptingIsGreaterThan:"); - late final _sel_scriptingBeginsWith_1 = - _registerName1("scriptingBeginsWith:"); - late final _sel_scriptingEndsWith_1 = _registerName1("scriptingEndsWith:"); - late final _sel_scriptingContains_1 = _registerName1("scriptingContains:"); - late final _class_NSItemProvider1 = _getClass1("NSItemProvider"); - late final _class_NSProgress1 = _getClass1("NSProgress"); - late final _sel_currentProgress1 = _registerName1("currentProgress"); - ffi.Pointer _objc_msgSend_659( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_659( - obj, - sel, - ); - } - - late final __objc_msgSend_659Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_659 = __objc_msgSend_659Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_progressWithTotalUnitCount_1 = - _registerName1("progressWithTotalUnitCount:"); - ffi.Pointer _objc_msgSend_660( - ffi.Pointer obj, - ffi.Pointer sel, - int unitCount, - ) { - return __objc_msgSend_660( - obj, - sel, - unitCount, - ); - } - - late final __objc_msgSend_660Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int64)>>('objc_msgSend'); - late final __objc_msgSend_660 = __objc_msgSend_660Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_discreteProgressWithTotalUnitCount_1 = - _registerName1("discreteProgressWithTotalUnitCount:"); - late final _sel_progressWithTotalUnitCount_parent_pendingUnitCount_1 = - _registerName1("progressWithTotalUnitCount:parent:pendingUnitCount:"); - ffi.Pointer _objc_msgSend_661( - ffi.Pointer obj, - ffi.Pointer sel, - int unitCount, - ffi.Pointer parent, - int portionOfParentTotalUnitCount, - ) { - return __objc_msgSend_661( - obj, - sel, - unitCount, - parent, - portionOfParentTotalUnitCount, - ); - } - - late final __objc_msgSend_661Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int64, - ffi.Pointer, - ffi.Int64)>>('objc_msgSend'); - late final __objc_msgSend_661 = __objc_msgSend_661Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer, int)>(); - - late final _sel_initWithParent_userInfo_1 = - _registerName1("initWithParent:userInfo:"); - instancetype _objc_msgSend_662( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer parentProgressOrNil, - ffi.Pointer userInfoOrNil, - ) { - return __objc_msgSend_662( - obj, - sel, - parentProgressOrNil, - userInfoOrNil, - ); - } - - late final __objc_msgSend_662Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_662 = __objc_msgSend_662Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_becomeCurrentWithPendingUnitCount_1 = - _registerName1("becomeCurrentWithPendingUnitCount:"); - void _objc_msgSend_663( - ffi.Pointer obj, - ffi.Pointer sel, - int unitCount, - ) { - return __objc_msgSend_663( - obj, - sel, - unitCount, - ); - } - - late final __objc_msgSend_663Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int64)>>('objc_msgSend'); - late final __objc_msgSend_663 = __objc_msgSend_663Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_performAsCurrentWithPendingUnitCount_usingBlock_1 = - _registerName1("performAsCurrentWithPendingUnitCount:usingBlock:"); - void _objc_msgSend_664( - ffi.Pointer obj, - ffi.Pointer sel, - int unitCount, - ffi.Pointer<_ObjCBlock> work, - ) { - return __objc_msgSend_664( - obj, - sel, - unitCount, - work, - ); - } - - late final __objc_msgSend_664Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int64, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_664 = __objc_msgSend_664Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_resignCurrent1 = _registerName1("resignCurrent"); - late final _sel_addChild_withPendingUnitCount_1 = - _registerName1("addChild:withPendingUnitCount:"); - void _objc_msgSend_665( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer child, - int inUnitCount, - ) { - return __objc_msgSend_665( - obj, - sel, - child, - inUnitCount, - ); - } - - late final __objc_msgSend_665Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int64)>>('objc_msgSend'); - late final __objc_msgSend_665 = __objc_msgSend_665Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_totalUnitCount1 = _registerName1("totalUnitCount"); - int _objc_msgSend_666( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_666( - obj, - sel, - ); - } - - late final __objc_msgSend_666Ptr = _lookup< - ffi.NativeFunction< - ffi.Int64 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_666 = __objc_msgSend_666Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setTotalUnitCount_1 = _registerName1("setTotalUnitCount:"); - void _objc_msgSend_667( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_667( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_667Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int64)>>('objc_msgSend'); - late final __objc_msgSend_667 = __objc_msgSend_667Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_completedUnitCount1 = _registerName1("completedUnitCount"); - late final _sel_setCompletedUnitCount_1 = - _registerName1("setCompletedUnitCount:"); - late final _sel_setLocalizedDescription_1 = - _registerName1("setLocalizedDescription:"); - late final _sel_localizedAdditionalDescription1 = - _registerName1("localizedAdditionalDescription"); - late final _sel_setLocalizedAdditionalDescription_1 = - _registerName1("setLocalizedAdditionalDescription:"); - late final _sel_isCancellable1 = _registerName1("isCancellable"); - late final _sel_setCancellable_1 = _registerName1("setCancellable:"); - late final _sel_isPausable1 = _registerName1("isPausable"); - late final _sel_setPausable_1 = _registerName1("setPausable:"); - late final _sel_isPaused1 = _registerName1("isPaused"); - late final _sel_cancellationHandler1 = _registerName1("cancellationHandler"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_668( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_668( - obj, - sel, - ); - } - - late final __objc_msgSend_668Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_668 = __objc_msgSend_668Ptr.asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setCancellationHandler_1 = - _registerName1("setCancellationHandler:"); - void _objc_msgSend_669( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> value, - ) { - return __objc_msgSend_669( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_669Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_669 = __objc_msgSend_669Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_pausingHandler1 = _registerName1("pausingHandler"); - late final _sel_setPausingHandler_1 = _registerName1("setPausingHandler:"); - late final _sel_resumingHandler1 = _registerName1("resumingHandler"); - late final _sel_setResumingHandler_1 = _registerName1("setResumingHandler:"); - late final _sel_setUserInfoObject_forKey_1 = - _registerName1("setUserInfoObject:forKey:"); - late final _sel_isIndeterminate1 = _registerName1("isIndeterminate"); - late final _sel_fractionCompleted1 = _registerName1("fractionCompleted"); - late final _sel_pause1 = _registerName1("pause"); - late final _sel_resume1 = _registerName1("resume"); - late final _sel_kind1 = _registerName1("kind"); - late final _sel_setKind_1 = _registerName1("setKind:"); - late final _sel_estimatedTimeRemaining1 = - _registerName1("estimatedTimeRemaining"); - late final _sel_setEstimatedTimeRemaining_1 = - _registerName1("setEstimatedTimeRemaining:"); - void _objc_msgSend_670( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_670( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_670Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_670 = __objc_msgSend_670Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_throughput1 = _registerName1("throughput"); - late final _sel_setThroughput_1 = _registerName1("setThroughput:"); - late final _sel_fileOperationKind1 = _registerName1("fileOperationKind"); - late final _sel_setFileOperationKind_1 = - _registerName1("setFileOperationKind:"); - late final _sel_fileURL1 = _registerName1("fileURL"); - late final _sel_setFileURL_1 = _registerName1("setFileURL:"); - void _objc_msgSend_671( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_671( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_671Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_671 = __objc_msgSend_671Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_fileTotalCount1 = _registerName1("fileTotalCount"); - late final _sel_setFileTotalCount_1 = _registerName1("setFileTotalCount:"); - late final _sel_fileCompletedCount1 = _registerName1("fileCompletedCount"); - late final _sel_setFileCompletedCount_1 = - _registerName1("setFileCompletedCount:"); - late final _sel_publish1 = _registerName1("publish"); - late final _sel_unpublish1 = _registerName1("unpublish"); - late final _sel_addSubscriberForFileURL_withPublishingHandler_1 = - _registerName1("addSubscriberForFileURL:withPublishingHandler:"); - ffi.Pointer _objc_msgSend_672( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer<_ObjCBlock> publishingHandler, - ) { - return __objc_msgSend_672( - obj, - sel, - url, - publishingHandler, - ); - } - - late final __objc_msgSend_672Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_672 = __objc_msgSend_672Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_removeSubscriber_1 = _registerName1("removeSubscriber:"); - late final _sel_isOld1 = _registerName1("isOld"); - late final _sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_1 = - _registerName1( - "registerDataRepresentationForTypeIdentifier:visibility:loadHandler:"); - void _objc_msgSend_673( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - int visibility, - ffi.Pointer<_ObjCBlock> loadHandler, - ) { - return __objc_msgSend_673( - obj, - sel, - typeIdentifier, - visibility, - loadHandler, - ); - } - - late final __objc_msgSend_673Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_673 = __objc_msgSend_673Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_1 = - _registerName1( - "registerFileRepresentationForTypeIdentifier:fileOptions:visibility:loadHandler:"); - void _objc_msgSend_674( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - int fileOptions, - int visibility, - ffi.Pointer<_ObjCBlock> loadHandler, - ) { - return __objc_msgSend_674( - obj, - sel, - typeIdentifier, - fileOptions, - visibility, - loadHandler, - ); - } - - late final __objc_msgSend_674Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_674 = __objc_msgSend_674Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_registeredTypeIdentifiers1 = - _registerName1("registeredTypeIdentifiers"); - late final _sel_registeredTypeIdentifiersWithFileOptions_1 = - _registerName1("registeredTypeIdentifiersWithFileOptions:"); - ffi.Pointer _objc_msgSend_675( - ffi.Pointer obj, - ffi.Pointer sel, - int fileOptions, - ) { - return __objc_msgSend_675( - obj, - sel, - fileOptions, - ); - } - - late final __objc_msgSend_675Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_675 = __objc_msgSend_675Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_hasItemConformingToTypeIdentifier_1 = - _registerName1("hasItemConformingToTypeIdentifier:"); - late final _sel_hasRepresentationConformingToTypeIdentifier_fileOptions_1 = - _registerName1( - "hasRepresentationConformingToTypeIdentifier:fileOptions:"); - bool _objc_msgSend_676( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - int fileOptions, - ) { - return __objc_msgSend_676( - obj, - sel, - typeIdentifier, - fileOptions, - ); - } - - late final __objc_msgSend_676Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_676 = __objc_msgSend_676Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_loadDataRepresentationForTypeIdentifier_completionHandler_1 = - _registerName1( - "loadDataRepresentationForTypeIdentifier:completionHandler:"); - ffi.Pointer _objc_msgSend_677( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_677( - obj, - sel, - typeIdentifier, - completionHandler, - ); - } - - late final __objc_msgSend_677Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_677 = __objc_msgSend_677Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_loadFileRepresentationForTypeIdentifier_completionHandler_1 = - _registerName1( - "loadFileRepresentationForTypeIdentifier:completionHandler:"); - ffi.Pointer _objc_msgSend_678( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_678( - obj, - sel, - typeIdentifier, - completionHandler, - ); - } - - late final __objc_msgSend_678Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_678 = __objc_msgSend_678Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_1 = - _registerName1( - "loadInPlaceFileRepresentationForTypeIdentifier:completionHandler:"); - ffi.Pointer _objc_msgSend_679( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_679( - obj, - sel, - typeIdentifier, - completionHandler, - ); - } - - late final __objc_msgSend_679Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_679 = __objc_msgSend_679Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_suggestedName1 = _registerName1("suggestedName"); - late final _sel_setSuggestedName_1 = _registerName1("setSuggestedName:"); - late final _sel_registerObject_visibility_1 = - _registerName1("registerObject:visibility:"); - void _objc_msgSend_680( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer object, - int visibility, - ) { - return __objc_msgSend_680( - obj, - sel, - object, - visibility, - ); - } - - late final __objc_msgSend_680Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_680 = __objc_msgSend_680Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_registerObjectOfClass_visibility_loadHandler_1 = - _registerName1("registerObjectOfClass:visibility:loadHandler:"); - void _objc_msgSend_681( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aClass, - int visibility, - ffi.Pointer<_ObjCBlock> loadHandler, - ) { - return __objc_msgSend_681( - obj, - sel, - aClass, - visibility, - loadHandler, - ); - } - - late final __objc_msgSend_681Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_681 = __objc_msgSend_681Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_canLoadObjectOfClass_1 = - _registerName1("canLoadObjectOfClass:"); - late final _sel_loadObjectOfClass_completionHandler_1 = - _registerName1("loadObjectOfClass:completionHandler:"); - ffi.Pointer _objc_msgSend_682( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aClass, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_682( - obj, - sel, - aClass, - completionHandler, - ); - } - - late final __objc_msgSend_682Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_682 = __objc_msgSend_682Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_initWithItem_typeIdentifier_1 = - _registerName1("initWithItem:typeIdentifier:"); - instancetype _objc_msgSend_683( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer item, - ffi.Pointer typeIdentifier, - ) { - return __objc_msgSend_683( - obj, - sel, - item, - typeIdentifier, - ); - } - - late final __objc_msgSend_683Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_683 = __objc_msgSend_683Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_registerItemForTypeIdentifier_loadHandler_1 = - _registerName1("registerItemForTypeIdentifier:loadHandler:"); - void _objc_msgSend_684( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - ffi.Pointer<_ObjCBlock> loadHandler, - ) { - return __objc_msgSend_684( - obj, - sel, - typeIdentifier, - loadHandler, - ); - } - - late final __objc_msgSend_684Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_684 = __objc_msgSend_684Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_loadItemForTypeIdentifier_options_completionHandler_1 = - _registerName1("loadItemForTypeIdentifier:options:completionHandler:"); - void _objc_msgSend_685( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer typeIdentifier, - ffi.Pointer options, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_685( - obj, - sel, - typeIdentifier, - options, - completionHandler, - ); - } - - late final __objc_msgSend_685Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_685 = __objc_msgSend_685Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_previewImageHandler1 = _registerName1("previewImageHandler"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_686( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_686( - obj, - sel, - ); - } - - late final __objc_msgSend_686Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_686 = __objc_msgSend_686Ptr.asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setPreviewImageHandler_1 = - _registerName1("setPreviewImageHandler:"); - void _objc_msgSend_687( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> value, - ) { - return __objc_msgSend_687( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_687Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_687 = __objc_msgSend_687Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_loadPreviewImageWithOptions_completionHandler_1 = - _registerName1("loadPreviewImageWithOptions:completionHandler:"); - void _objc_msgSend_688( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer options, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_688( - obj, - sel, - options, - completionHandler, - ); - } - - late final __objc_msgSend_688Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_688 = __objc_msgSend_688Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _class_NSMutableString1 = _getClass1("NSMutableString"); - late final _sel_replaceCharactersInRange_withString_1 = - _registerName1("replaceCharactersInRange:withString:"); - void _objc_msgSend_689( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer aString, - ) { - return __objc_msgSend_689( - obj, - sel, - range, - aString, - ); - } - - late final __objc_msgSend_689Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_689 = __objc_msgSend_689Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - ffi.Pointer)>(); - - late final _sel_insertString_atIndex_1 = - _registerName1("insertString:atIndex:"); - void _objc_msgSend_690( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aString, - int loc, - ) { - return __objc_msgSend_690( - obj, - sel, - aString, - loc, - ); - } - - late final __objc_msgSend_690Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_690 = __objc_msgSend_690Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_deleteCharactersInRange_1 = - _registerName1("deleteCharactersInRange:"); - late final _sel_appendString_1 = _registerName1("appendString:"); - late final _sel_appendFormat_1 = _registerName1("appendFormat:"); - late final _sel_setString_1 = _registerName1("setString:"); - late final _sel_replaceOccurrencesOfString_withString_options_range_1 = - _registerName1("replaceOccurrencesOfString:withString:options:range:"); - int _objc_msgSend_691( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer target, - ffi.Pointer replacement, - int options, - _NSRange searchRange, - ) { - return __objc_msgSend_691( - obj, - sel, - target, - replacement, - options, - searchRange, - ); - } - - late final __objc_msgSend_691Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_691 = __objc_msgSend_691Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - - late final _sel_applyTransform_reverse_range_updatedRange_1 = - _registerName1("applyTransform:reverse:range:updatedRange:"); - bool _objc_msgSend_692( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer transform, - bool reverse, - _NSRange range, - ffi.Pointer<_NSRange> resultingRange, - ) { - return __objc_msgSend_692( - obj, - sel, - transform, - reverse, - range, - resultingRange, - ); - } - - late final __objc_msgSend_692Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - _NSRange, - ffi.Pointer<_NSRange>)>>('objc_msgSend'); - late final __objc_msgSend_692 = __objc_msgSend_692Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool, _NSRange, ffi.Pointer<_NSRange>)>(); - - ffi.Pointer _objc_msgSend_693( - ffi.Pointer obj, - ffi.Pointer sel, - int capacity, - ) { - return __objc_msgSend_693( - obj, - sel, - capacity, - ); - } - - late final __objc_msgSend_693Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_693 = __objc_msgSend_693Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_stringWithCapacity_1 = _registerName1("stringWithCapacity:"); - late final _class_NSNotification1 = _getClass1("NSNotification"); - late final _sel_object1 = _registerName1("object"); - late final _sel_initWithName_object_userInfo_1 = - _registerName1("initWithName:object:userInfo:"); - instancetype _objc_msgSend_694( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer object, - ffi.Pointer userInfo, - ) { - return __objc_msgSend_694( - obj, - sel, - name, - object, - userInfo, - ); - } - - late final __objc_msgSend_694Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_694 = __objc_msgSend_694Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_notificationWithName_object_1 = - _registerName1("notificationWithName:object:"); - late final _sel_notificationWithName_object_userInfo_1 = - _registerName1("notificationWithName:object:userInfo:"); - late final _class_NSBundle1 = _getClass1("NSBundle"); - late final _sel_mainBundle1 = _registerName1("mainBundle"); - ffi.Pointer _objc_msgSend_695( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_695( - obj, - sel, - ); - } - - late final __objc_msgSend_695Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_695 = __objc_msgSend_695Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_bundleWithPath_1 = _registerName1("bundleWithPath:"); - late final _sel_initWithPath_1 = _registerName1("initWithPath:"); - late final _sel_bundleWithURL_1 = _registerName1("bundleWithURL:"); - late final _sel_initWithURL_1 = _registerName1("initWithURL:"); - late final _sel_bundleForClass_1 = _registerName1("bundleForClass:"); - ffi.Pointer _objc_msgSend_696( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aClass, - ) { - return __objc_msgSend_696( - obj, - sel, - aClass, - ); - } - - late final __objc_msgSend_696Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_696 = __objc_msgSend_696Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_bundleWithIdentifier_1 = - _registerName1("bundleWithIdentifier:"); - ffi.Pointer _objc_msgSend_697( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer identifier, - ) { - return __objc_msgSend_697( - obj, - sel, - identifier, - ); - } - - late final __objc_msgSend_697Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_697 = __objc_msgSend_697Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_allBundles1 = _registerName1("allBundles"); - late final _sel_allFrameworks1 = _registerName1("allFrameworks"); - late final _sel_isLoaded1 = _registerName1("isLoaded"); - late final _sel_unload1 = _registerName1("unload"); - late final _sel_preflightAndReturnError_1 = - _registerName1("preflightAndReturnError:"); - late final _sel_loadAndReturnError_1 = _registerName1("loadAndReturnError:"); - late final _sel_bundleURL1 = _registerName1("bundleURL"); - late final _sel_resourceURL1 = _registerName1("resourceURL"); - late final _sel_executableURL1 = _registerName1("executableURL"); - late final _sel_URLForAuxiliaryExecutable_1 = - _registerName1("URLForAuxiliaryExecutable:"); - late final _sel_privateFrameworksURL1 = - _registerName1("privateFrameworksURL"); - late final _sel_sharedFrameworksURL1 = _registerName1("sharedFrameworksURL"); - late final _sel_sharedSupportURL1 = _registerName1("sharedSupportURL"); - late final _sel_builtInPlugInsURL1 = _registerName1("builtInPlugInsURL"); - late final _sel_appStoreReceiptURL1 = _registerName1("appStoreReceiptURL"); - late final _sel_bundlePath1 = _registerName1("bundlePath"); - late final _sel_resourcePath1 = _registerName1("resourcePath"); - late final _sel_executablePath1 = _registerName1("executablePath"); - late final _sel_pathForAuxiliaryExecutable_1 = - _registerName1("pathForAuxiliaryExecutable:"); - late final _sel_privateFrameworksPath1 = - _registerName1("privateFrameworksPath"); - late final _sel_sharedFrameworksPath1 = - _registerName1("sharedFrameworksPath"); - late final _sel_sharedSupportPath1 = _registerName1("sharedSupportPath"); - late final _sel_builtInPlugInsPath1 = _registerName1("builtInPlugInsPath"); - late final _sel_URLForResource_withExtension_subdirectory_inBundleWithURL_1 = - _registerName1( - "URLForResource:withExtension:subdirectory:inBundleWithURL:"); - ffi.Pointer _objc_msgSend_698( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer bundleURL, - ) { - return __objc_msgSend_698( - obj, - sel, - name, - ext, - subpath, - bundleURL, - ); - } - - late final __objc_msgSend_698Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_698 = __objc_msgSend_698Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLsForResourcesWithExtension_subdirectory_inBundleWithURL_1 = - _registerName1( - "URLsForResourcesWithExtension:subdirectory:inBundleWithURL:"); - ffi.Pointer _objc_msgSend_699( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer bundleURL, - ) { - return __objc_msgSend_699( - obj, - sel, - ext, - subpath, - bundleURL, - ); - } - - late final __objc_msgSend_699Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_699 = __objc_msgSend_699Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLForResource_withExtension_1 = - _registerName1("URLForResource:withExtension:"); - ffi.Pointer _objc_msgSend_700( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ) { - return __objc_msgSend_700( - obj, - sel, - name, - ext, - ); - } - - late final __objc_msgSend_700Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_700 = __objc_msgSend_700Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLForResource_withExtension_subdirectory_1 = - _registerName1("URLForResource:withExtension:subdirectory:"); - ffi.Pointer _objc_msgSend_701( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ffi.Pointer subpath, - ) { - return __objc_msgSend_701( - obj, - sel, - name, - ext, - subpath, - ); - } - - late final __objc_msgSend_701Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_701 = __objc_msgSend_701Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLForResource_withExtension_subdirectory_localization_1 = - _registerName1("URLForResource:withExtension:subdirectory:localization:"); - ffi.Pointer _objc_msgSend_702( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer localizationName, - ) { - return __objc_msgSend_702( - obj, - sel, - name, - ext, - subpath, - localizationName, - ); - } - - late final __objc_msgSend_702Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_702 = __objc_msgSend_702Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLsForResourcesWithExtension_subdirectory_1 = - _registerName1("URLsForResourcesWithExtension:subdirectory:"); - ffi.Pointer _objc_msgSend_703( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer ext, - ffi.Pointer subpath, - ) { - return __objc_msgSend_703( - obj, - sel, - ext, - subpath, - ); - } - - late final __objc_msgSend_703Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_703 = __objc_msgSend_703Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLsForResourcesWithExtension_subdirectory_localization_1 = - _registerName1( - "URLsForResourcesWithExtension:subdirectory:localization:"); - ffi.Pointer _objc_msgSend_704( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer localizationName, - ) { - return __objc_msgSend_704( - obj, - sel, - ext, - subpath, - localizationName, - ); - } - - late final __objc_msgSend_704Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_704 = __objc_msgSend_704Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_pathForResource_ofType_inDirectory_1 = - _registerName1("pathForResource:ofType:inDirectory:"); - ffi.Pointer _objc_msgSend_705( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ffi.Pointer bundlePath, - ) { - return __objc_msgSend_705( - obj, - sel, - name, - ext, - bundlePath, - ); - } - - late final __objc_msgSend_705Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_705 = __objc_msgSend_705Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_pathsForResourcesOfType_inDirectory_1 = - _registerName1("pathsForResourcesOfType:inDirectory:"); - ffi.Pointer _objc_msgSend_706( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer ext, - ffi.Pointer bundlePath, - ) { - return __objc_msgSend_706( - obj, - sel, - ext, - bundlePath, - ); - } - - late final __objc_msgSend_706Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_706 = __objc_msgSend_706Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_pathForResource_ofType_1 = - _registerName1("pathForResource:ofType:"); - ffi.Pointer _objc_msgSend_707( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ) { - return __objc_msgSend_707( - obj, - sel, - name, - ext, - ); - } - - late final __objc_msgSend_707Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_707 = __objc_msgSend_707Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_pathForResource_ofType_inDirectory_forLocalization_1 = - _registerName1("pathForResource:ofType:inDirectory:forLocalization:"); - ffi.Pointer _objc_msgSend_708( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer localizationName, - ) { - return __objc_msgSend_708( - obj, - sel, - name, - ext, - subpath, - localizationName, - ); - } - - late final __objc_msgSend_708Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_708 = __objc_msgSend_708Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_pathsForResourcesOfType_inDirectory_forLocalization_1 = - _registerName1("pathsForResourcesOfType:inDirectory:forLocalization:"); - ffi.Pointer _objc_msgSend_709( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer localizationName, - ) { - return __objc_msgSend_709( - obj, - sel, - ext, - subpath, - localizationName, - ); - } - - late final __objc_msgSend_709Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_709 = __objc_msgSend_709Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_localizedStringForKey_value_table_1 = - _registerName1("localizedStringForKey:value:table:"); - ffi.Pointer _objc_msgSend_710( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer value, - ffi.Pointer tableName, - ) { - return __objc_msgSend_710( - obj, - sel, - key, - value, - tableName, - ); - } - - late final __objc_msgSend_710Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_710 = __objc_msgSend_710Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSAttributedString1 = _getClass1("NSAttributedString"); - late final _sel_attributesAtIndex_effectiveRange_1 = - _registerName1("attributesAtIndex:effectiveRange:"); - ffi.Pointer _objc_msgSend_711( - ffi.Pointer obj, - ffi.Pointer sel, - int location, - ffi.Pointer<_NSRange> range, - ) { - return __objc_msgSend_711( - obj, - sel, - location, - range, - ); - } - - late final __objc_msgSend_711Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_NSRange>)>>('objc_msgSend'); - late final __objc_msgSend_711 = __objc_msgSend_711Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_NSRange>)>(); - - late final _sel_attribute_atIndex_effectiveRange_1 = - _registerName1("attribute:atIndex:effectiveRange:"); - ffi.Pointer _objc_msgSend_712( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrName, - int location, - ffi.Pointer<_NSRange> range, - ) { - return __objc_msgSend_712( - obj, - sel, - attrName, - location, - range, - ); - } - - late final __objc_msgSend_712Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_NSRange>)>>('objc_msgSend'); - late final __objc_msgSend_712 = __objc_msgSend_712Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer<_NSRange>)>(); - - late final _sel_attributedSubstringFromRange_1 = - _registerName1("attributedSubstringFromRange:"); - ffi.Pointer _objc_msgSend_713( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_713( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_713Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_713 = __objc_msgSend_713Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_attributesAtIndex_longestEffectiveRange_inRange_1 = - _registerName1("attributesAtIndex:longestEffectiveRange:inRange:"); - ffi.Pointer _objc_msgSend_714( - ffi.Pointer obj, - ffi.Pointer sel, - int location, - ffi.Pointer<_NSRange> range, - _NSRange rangeLimit, - ) { - return __objc_msgSend_714( - obj, - sel, - location, - range, - rangeLimit, - ); - } - - late final __objc_msgSend_714Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_NSRange>, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_714 = __objc_msgSend_714Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_NSRange>, _NSRange)>(); - - late final _sel_attribute_atIndex_longestEffectiveRange_inRange_1 = - _registerName1("attribute:atIndex:longestEffectiveRange:inRange:"); - ffi.Pointer _objc_msgSend_715( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrName, - int location, - ffi.Pointer<_NSRange> range, - _NSRange rangeLimit, - ) { - return __objc_msgSend_715( - obj, - sel, - attrName, - location, - range, - rangeLimit, - ); - } - - late final __objc_msgSend_715Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_NSRange>, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_715 = __objc_msgSend_715Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer<_NSRange>, - _NSRange)>(); - - late final _sel_isEqualToAttributedString_1 = - _registerName1("isEqualToAttributedString:"); - bool _objc_msgSend_716( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer other, - ) { - return __objc_msgSend_716( - obj, - sel, - other, - ); - } - - late final __objc_msgSend_716Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_716 = __objc_msgSend_716Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithString_attributes_1 = - _registerName1("initWithString:attributes:"); - instancetype _objc_msgSend_717( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer str, - ffi.Pointer attrs, - ) { - return __objc_msgSend_717( - obj, - sel, - str, - attrs, - ); - } - - late final __objc_msgSend_717Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_717 = __objc_msgSend_717Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithAttributedString_1 = - _registerName1("initWithAttributedString:"); - instancetype _objc_msgSend_718( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrStr, - ) { - return __objc_msgSend_718( - obj, - sel, - attrStr, - ); - } - - late final __objc_msgSend_718Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_718 = __objc_msgSend_718Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_enumerateAttributesInRange_options_usingBlock_1 = - _registerName1("enumerateAttributesInRange:options:usingBlock:"); - void _objc_msgSend_719( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange enumerationRange, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_719( - obj, - sel, - enumerationRange, - opts, - block, - ); - } - - late final __objc_msgSend_719Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_719 = __objc_msgSend_719Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - int, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_enumerateAttribute_inRange_options_usingBlock_1 = - _registerName1("enumerateAttribute:inRange:options:usingBlock:"); - void _objc_msgSend_720( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrName, - _NSRange enumerationRange, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_720( - obj, - sel, - attrName, - enumerationRange, - opts, - block, - ); - } - - late final __objc_msgSend_720Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_720 = __objc_msgSend_720Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange, int, ffi.Pointer<_ObjCBlock>)>(); - - late final _class_NSAttributedStringMarkdownParsingOptions1 = - _getClass1("NSAttributedStringMarkdownParsingOptions"); - late final _sel_allowsExtendedAttributes1 = - _registerName1("allowsExtendedAttributes"); - late final _sel_setAllowsExtendedAttributes_1 = - _registerName1("setAllowsExtendedAttributes:"); - late final _sel_interpretedSyntax1 = _registerName1("interpretedSyntax"); - int _objc_msgSend_721( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_721( - obj, - sel, - ); - } - - late final __objc_msgSend_721Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_721 = __objc_msgSend_721Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setInterpretedSyntax_1 = - _registerName1("setInterpretedSyntax:"); - void _objc_msgSend_722( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_722( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_722Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_722 = __objc_msgSend_722Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_failurePolicy1 = _registerName1("failurePolicy"); - int _objc_msgSend_723( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_723( - obj, - sel, - ); - } - - late final __objc_msgSend_723Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_723 = __objc_msgSend_723Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setFailurePolicy_1 = _registerName1("setFailurePolicy:"); - void _objc_msgSend_724( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_724( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_724Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_724 = __objc_msgSend_724Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_setLanguageCode_1 = _registerName1("setLanguageCode:"); - late final _sel_appliesSourcePositionAttributes1 = - _registerName1("appliesSourcePositionAttributes"); - late final _sel_setAppliesSourcePositionAttributes_1 = - _registerName1("setAppliesSourcePositionAttributes:"); - late final _sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_1 = - _registerName1( - "initWithContentsOfMarkdownFileAtURL:options:baseURL:error:"); - instancetype _objc_msgSend_725( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer markdownFile, - ffi.Pointer options, - ffi.Pointer baseURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_725( - obj, - sel, - markdownFile, - options, - baseURL, - error, - ); - } - - late final __objc_msgSend_725Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_725 = __objc_msgSend_725Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_initWithMarkdown_options_baseURL_error_1 = - _registerName1("initWithMarkdown:options:baseURL:error:"); - instancetype _objc_msgSend_726( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer markdown, - ffi.Pointer options, - ffi.Pointer baseURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_726( - obj, - sel, - markdown, - options, - baseURL, - error, - ); - } - - late final __objc_msgSend_726Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_726 = __objc_msgSend_726Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_initWithMarkdownString_options_baseURL_error_1 = - _registerName1("initWithMarkdownString:options:baseURL:error:"); - instancetype _objc_msgSend_727( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer markdownString, - ffi.Pointer options, - ffi.Pointer baseURL, - ffi.Pointer> error, - ) { - return __objc_msgSend_727( - obj, - sel, - markdownString, - options, - baseURL, - error, - ); - } - - late final __objc_msgSend_727Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_727 = __objc_msgSend_727Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_initWithFormat_options_locale_1 = - _registerName1("initWithFormat:options:locale:"); - instancetype _objc_msgSend_728( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - int options, - ffi.Pointer locale, - ) { - return __objc_msgSend_728( - obj, - sel, - format, - options, - locale, - ); - } - - late final __objc_msgSend_728Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_728 = __objc_msgSend_728Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_initWithFormat_options_locale_arguments_1 = - _registerName1("initWithFormat:options:locale:arguments:"); - instancetype _objc_msgSend_729( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - int options, - ffi.Pointer locale, - ffi.Pointer<__va_list_tag> arguments, - ) { - return __objc_msgSend_729( - obj, - sel, - format, - options, - locale, - arguments, - ); - } - - late final __objc_msgSend_729Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); - late final __objc_msgSend_729 = __objc_msgSend_729Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>(); - - late final _sel_localizedAttributedStringWithFormat_1 = - _registerName1("localizedAttributedStringWithFormat:"); - late final _sel_localizedAttributedStringWithFormat_options_1 = - _registerName1("localizedAttributedStringWithFormat:options:"); - instancetype _objc_msgSend_730( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - int options, - ) { - return __objc_msgSend_730( - obj, - sel, - format, - options, - ); - } - - late final __objc_msgSend_730Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_730 = __objc_msgSend_730Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_initWithFormat_options_locale_context_1 = - _registerName1("initWithFormat:options:locale:context:"); - instancetype _objc_msgSend_731( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - int options, - ffi.Pointer locale, - ffi.Pointer context, - ) { - return __objc_msgSend_731( - obj, - sel, - format, - options, - locale, - context, - ); - } - - late final __objc_msgSend_731Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_731 = __objc_msgSend_731Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithFormat_options_locale_context_arguments_1 = - _registerName1("initWithFormat:options:locale:context:arguments:"); - instancetype _objc_msgSend_732( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - int options, - ffi.Pointer locale, - ffi.Pointer context, - ffi.Pointer<__va_list_tag> arguments, - ) { - return __objc_msgSend_732( - obj, - sel, - format, - options, - locale, - context, - arguments, - ); - } - - late final __objc_msgSend_732Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); - late final __objc_msgSend_732 = __objc_msgSend_732Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>(); - - late final _sel_localizedAttributedStringWithFormat_context_1 = - _registerName1("localizedAttributedStringWithFormat:context:"); - instancetype _objc_msgSend_733( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - ffi.Pointer context, - ) { - return __objc_msgSend_733( - obj, - sel, - format, - context, - ); - } - - late final __objc_msgSend_733Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_733 = __objc_msgSend_733Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_localizedAttributedStringWithFormat_options_context_1 = - _registerName1("localizedAttributedStringWithFormat:options:context:"); - instancetype _objc_msgSend_734( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer format, - int options, - ffi.Pointer context, - ) { - return __objc_msgSend_734( - obj, - sel, - format, - options, - context, - ); - } - - late final __objc_msgSend_734Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_734 = __objc_msgSend_734Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_attributedStringByInflectingString1 = - _registerName1("attributedStringByInflectingString"); - ffi.Pointer _objc_msgSend_735( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_735( - obj, - sel, - ); - } - - late final __objc_msgSend_735Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_735 = __objc_msgSend_735Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_localizedAttributedStringForKey_value_table_1 = - _registerName1("localizedAttributedStringForKey:value:table:"); - ffi.Pointer _objc_msgSend_736( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer value, - ffi.Pointer tableName, - ) { - return __objc_msgSend_736( - obj, - sel, - key, - value, - tableName, - ); - } - - late final __objc_msgSend_736Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_736 = __objc_msgSend_736Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_bundleIdentifier1 = _registerName1("bundleIdentifier"); - late final _sel_infoDictionary1 = _registerName1("infoDictionary"); - late final _sel_localizedInfoDictionary1 = - _registerName1("localizedInfoDictionary"); - late final _sel_objectForInfoDictionaryKey_1 = - _registerName1("objectForInfoDictionaryKey:"); - late final _sel_classNamed_1 = _registerName1("classNamed:"); - late final _sel_principalClass1 = _registerName1("principalClass"); - late final _sel_preferredLocalizations1 = - _registerName1("preferredLocalizations"); - late final _sel_localizations1 = _registerName1("localizations"); - late final _sel_developmentLocalization1 = - _registerName1("developmentLocalization"); - late final _sel_preferredLocalizationsFromArray_1 = - _registerName1("preferredLocalizationsFromArray:"); - late final _sel_preferredLocalizationsFromArray_forPreferences_1 = - _registerName1("preferredLocalizationsFromArray:forPreferences:"); - ffi.Pointer _objc_msgSend_737( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer localizationsArray, - ffi.Pointer preferencesArray, - ) { - return __objc_msgSend_737( - obj, - sel, - localizationsArray, - preferencesArray, - ); - } - - late final __objc_msgSend_737Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_737 = __objc_msgSend_737Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_executableArchitectures1 = - _registerName1("executableArchitectures"); - late final _sel_setPreservationPriority_forTags_1 = - _registerName1("setPreservationPriority:forTags:"); - void _objc_msgSend_738( - ffi.Pointer obj, - ffi.Pointer sel, - double priority, - ffi.Pointer tags, - ) { - return __objc_msgSend_738( - obj, - sel, - priority, - tags, - ); - } - - late final __objc_msgSend_738Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Double, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_738 = __objc_msgSend_738Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, double, - ffi.Pointer)>(); - - late final _sel_preservationPriorityForTag_1 = - _registerName1("preservationPriorityForTag:"); - late final _class_NSMutableAttributedString1 = - _getClass1("NSMutableAttributedString"); - late final _sel_setAttributes_range_1 = - _registerName1("setAttributes:range:"); - void _objc_msgSend_739( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrs, - _NSRange range, - ) { - return __objc_msgSend_739( - obj, - sel, - attrs, - range, - ); - } - - late final __objc_msgSend_739Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_739 = __objc_msgSend_739Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - late final _sel_mutableString1 = _registerName1("mutableString"); - ffi.Pointer _objc_msgSend_740( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_740( - obj, - sel, - ); - } - - late final __objc_msgSend_740Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_740 = __objc_msgSend_740Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addAttribute_value_range_1 = - _registerName1("addAttribute:value:range:"); - void _objc_msgSend_741( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer value, - _NSRange range, - ) { - return __objc_msgSend_741( - obj, - sel, - name, - value, - range, - ); - } - - late final __objc_msgSend_741Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_741 = __objc_msgSend_741Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_addAttributes_range_1 = - _registerName1("addAttributes:range:"); - void _objc_msgSend_742( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrs, - _NSRange range, - ) { - return __objc_msgSend_742( - obj, - sel, - attrs, - range, - ); - } - - late final __objc_msgSend_742Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_742 = __objc_msgSend_742Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - late final _sel_removeAttribute_range_1 = - _registerName1("removeAttribute:range:"); - void _objc_msgSend_743( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - _NSRange range, - ) { - return __objc_msgSend_743( - obj, - sel, - name, - range, - ); - } - - late final __objc_msgSend_743Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_743 = __objc_msgSend_743Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - late final _sel_replaceCharactersInRange_withAttributedString_1 = - _registerName1("replaceCharactersInRange:withAttributedString:"); - void _objc_msgSend_744( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer attrString, - ) { - return __objc_msgSend_744( - obj, - sel, - range, - attrString, - ); - } - - late final __objc_msgSend_744Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_744 = __objc_msgSend_744Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - ffi.Pointer)>(); - - late final _sel_insertAttributedString_atIndex_1 = - _registerName1("insertAttributedString:atIndex:"); - void _objc_msgSend_745( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrString, - int loc, - ) { - return __objc_msgSend_745( - obj, - sel, - attrString, - loc, - ); - } - - late final __objc_msgSend_745Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_745 = __objc_msgSend_745Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_appendAttributedString_1 = - _registerName1("appendAttributedString:"); - void _objc_msgSend_746( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer attrString, - ) { - return __objc_msgSend_746( - obj, - sel, - attrString, - ); - } - - late final __objc_msgSend_746Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_746 = __objc_msgSend_746Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setAttributedString_1 = - _registerName1("setAttributedString:"); - late final _sel_beginEditing1 = _registerName1("beginEditing"); - late final _sel_endEditing1 = _registerName1("endEditing"); - late final _sel_appendLocalizedFormat_1 = - _registerName1("appendLocalizedFormat:"); - late final _class_NSDateFormatter1 = _getClass1("NSDateFormatter"); - late final _class_NSFormatter1 = _getClass1("NSFormatter"); - late final _sel_stringForObjectValue_1 = - _registerName1("stringForObjectValue:"); - ffi.Pointer _objc_msgSend_747( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer obj1, - ) { - return __objc_msgSend_747( - obj, - sel, - obj1, - ); - } - - late final __objc_msgSend_747Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_747 = __objc_msgSend_747Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_attributedStringForObjectValue_withDefaultAttributes_1 = - _registerName1("attributedStringForObjectValue:withDefaultAttributes:"); - ffi.Pointer _objc_msgSend_748( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer obj1, - ffi.Pointer attrs, - ) { - return __objc_msgSend_748( - obj, - sel, - obj1, - attrs, - ); - } - - late final __objc_msgSend_748Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_748 = __objc_msgSend_748Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_editingStringForObjectValue_1 = - _registerName1("editingStringForObjectValue:"); - late final _sel_getObjectValue_forString_errorDescription_1 = - _registerName1("getObjectValue:forString:errorDescription:"); - bool _objc_msgSend_749( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> obj1, - ffi.Pointer string, - ffi.Pointer> error, - ) { - return __objc_msgSend_749( - obj, - sel, - obj1, - string, - error, - ); - } - - late final __objc_msgSend_749Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_749 = __objc_msgSend_749Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_isPartialStringValid_newEditingString_errorDescription_1 = - _registerName1("isPartialStringValid:newEditingString:errorDescription:"); - bool _objc_msgSend_750( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer partialString, - ffi.Pointer> newString, - ffi.Pointer> error, - ) { - return __objc_msgSend_750( - obj, - sel, - partialString, - newString, - error, - ); - } - - late final __objc_msgSend_750Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_750 = __objc_msgSend_750Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_1 = - _registerName1( - "isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:"); - bool _objc_msgSend_751( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> partialStringPtr, - ffi.Pointer<_NSRange> proposedSelRangePtr, - ffi.Pointer origString, - _NSRange origSelRange, - ffi.Pointer> error, - ) { - return __objc_msgSend_751( - obj, - sel, - partialStringPtr, - proposedSelRangePtr, - origString, - origSelRange, - error, - ); - } - - late final __objc_msgSend_751Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer<_NSRange>, - ffi.Pointer, - _NSRange, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_751 = __objc_msgSend_751Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer<_NSRange>, - ffi.Pointer, - _NSRange, - ffi.Pointer>)>(); - - late final _sel_formattingContext1 = _registerName1("formattingContext"); - int _objc_msgSend_752( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_752( - obj, - sel, - ); - } - - late final __objc_msgSend_752Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_752 = __objc_msgSend_752Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setFormattingContext_1 = - _registerName1("setFormattingContext:"); - void _objc_msgSend_753( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_753( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_753Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_753 = __objc_msgSend_753Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_getObjectValue_forString_range_error_1 = - _registerName1("getObjectValue:forString:range:error:"); - bool _objc_msgSend_754( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> obj1, - ffi.Pointer string, - ffi.Pointer<_NSRange> rangep, - ffi.Pointer> error, - ) { - return __objc_msgSend_754( - obj, - sel, - obj1, - string, - rangep, - error, - ); - } - - late final __objc_msgSend_754Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer<_NSRange>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_754 = __objc_msgSend_754Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer<_NSRange>, - ffi.Pointer>)>(); - - late final _sel_stringFromDate_1 = _registerName1("stringFromDate:"); - ffi.Pointer _objc_msgSend_755( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - ) { - return __objc_msgSend_755( - obj, - sel, - date, - ); - } - - late final __objc_msgSend_755Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_755 = __objc_msgSend_755Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dateFromString_1 = _registerName1("dateFromString:"); - late final _sel_localizedStringFromDate_dateStyle_timeStyle_1 = - _registerName1("localizedStringFromDate:dateStyle:timeStyle:"); - ffi.Pointer _objc_msgSend_756( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - int dstyle, - int tstyle, - ) { - return __objc_msgSend_756( - obj, - sel, - date, - dstyle, - tstyle, - ); - } - - late final __objc_msgSend_756Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_756 = __objc_msgSend_756Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, int)>(); - - late final _sel_dateFormatFromTemplate_options_locale_1 = - _registerName1("dateFormatFromTemplate:options:locale:"); - ffi.Pointer _objc_msgSend_757( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer tmplate, - int opts, - ffi.Pointer locale, - ) { - return __objc_msgSend_757( - obj, - sel, - tmplate, - opts, - locale, - ); - } - - late final __objc_msgSend_757Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_757 = __objc_msgSend_757Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer)>(); - - late final _sel_defaultFormatterBehavior1 = - _registerName1("defaultFormatterBehavior"); - int _objc_msgSend_758( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_758( - obj, - sel, - ); - } - - late final __objc_msgSend_758Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_758 = __objc_msgSend_758Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDefaultFormatterBehavior_1 = - _registerName1("setDefaultFormatterBehavior:"); - void _objc_msgSend_759( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_759( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_759Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_759 = __objc_msgSend_759Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_setLocalizedDateFormatFromTemplate_1 = - _registerName1("setLocalizedDateFormatFromTemplate:"); - late final _sel_dateFormat1 = _registerName1("dateFormat"); - late final _sel_setDateFormat_1 = _registerName1("setDateFormat:"); - late final _sel_dateStyle1 = _registerName1("dateStyle"); - int _objc_msgSend_760( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_760( - obj, - sel, - ); - } - - late final __objc_msgSend_760Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_760 = __objc_msgSend_760Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDateStyle_1 = _registerName1("setDateStyle:"); - void _objc_msgSend_761( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_761( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_761Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_761 = __objc_msgSend_761Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_timeStyle1 = _registerName1("timeStyle"); - late final _sel_setTimeStyle_1 = _registerName1("setTimeStyle:"); - late final _sel_locale1 = _registerName1("locale"); - late final _sel_setLocale_1 = _registerName1("setLocale:"); - void _objc_msgSend_762( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_762( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_762Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_762 = __objc_msgSend_762Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_generatesCalendarDates1 = - _registerName1("generatesCalendarDates"); - late final _sel_setGeneratesCalendarDates_1 = - _registerName1("setGeneratesCalendarDates:"); - late final _sel_formatterBehavior1 = _registerName1("formatterBehavior"); - late final _sel_setFormatterBehavior_1 = - _registerName1("setFormatterBehavior:"); - late final _class_NSCalendar1 = _getClass1("NSCalendar"); - late final _sel_currentCalendar1 = _registerName1("currentCalendar"); - ffi.Pointer _objc_msgSend_763( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_763( - obj, - sel, - ); - } - - late final __objc_msgSend_763Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_763 = __objc_msgSend_763Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_autoupdatingCurrentCalendar1 = - _registerName1("autoupdatingCurrentCalendar"); - late final _sel_calendarWithIdentifier_1 = - _registerName1("calendarWithIdentifier:"); - ffi.Pointer _objc_msgSend_764( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer calendarIdentifierConstant, - ) { - return __objc_msgSend_764( - obj, - sel, - calendarIdentifierConstant, - ); - } - - late final __objc_msgSend_764Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_764 = __objc_msgSend_764Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithCalendarIdentifier_1 = - _registerName1("initWithCalendarIdentifier:"); - ffi.Pointer _objc_msgSend_765( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_765( - obj, - sel, - ); - } - - late final __objc_msgSend_765Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_765 = __objc_msgSend_765Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_766( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_766( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_766Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_766 = __objc_msgSend_766Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_firstWeekday1 = _registerName1("firstWeekday"); - late final _sel_setFirstWeekday_1 = _registerName1("setFirstWeekday:"); - late final _sel_minimumDaysInFirstWeek1 = - _registerName1("minimumDaysInFirstWeek"); - late final _sel_setMinimumDaysInFirstWeek_1 = - _registerName1("setMinimumDaysInFirstWeek:"); - late final _sel_eraSymbols1 = _registerName1("eraSymbols"); - late final _sel_longEraSymbols1 = _registerName1("longEraSymbols"); - late final _sel_monthSymbols1 = _registerName1("monthSymbols"); - late final _sel_shortMonthSymbols1 = _registerName1("shortMonthSymbols"); - late final _sel_veryShortMonthSymbols1 = - _registerName1("veryShortMonthSymbols"); - late final _sel_standaloneMonthSymbols1 = - _registerName1("standaloneMonthSymbols"); - late final _sel_shortStandaloneMonthSymbols1 = - _registerName1("shortStandaloneMonthSymbols"); - late final _sel_veryShortStandaloneMonthSymbols1 = - _registerName1("veryShortStandaloneMonthSymbols"); - late final _sel_weekdaySymbols1 = _registerName1("weekdaySymbols"); - late final _sel_shortWeekdaySymbols1 = _registerName1("shortWeekdaySymbols"); - late final _sel_veryShortWeekdaySymbols1 = - _registerName1("veryShortWeekdaySymbols"); - late final _sel_standaloneWeekdaySymbols1 = - _registerName1("standaloneWeekdaySymbols"); - late final _sel_shortStandaloneWeekdaySymbols1 = - _registerName1("shortStandaloneWeekdaySymbols"); - late final _sel_veryShortStandaloneWeekdaySymbols1 = - _registerName1("veryShortStandaloneWeekdaySymbols"); - late final _sel_quarterSymbols1 = _registerName1("quarterSymbols"); - late final _sel_shortQuarterSymbols1 = _registerName1("shortQuarterSymbols"); - late final _sel_standaloneQuarterSymbols1 = - _registerName1("standaloneQuarterSymbols"); - late final _sel_shortStandaloneQuarterSymbols1 = - _registerName1("shortStandaloneQuarterSymbols"); - late final _sel_AMSymbol1 = _registerName1("AMSymbol"); - late final _sel_PMSymbol1 = _registerName1("PMSymbol"); - late final _sel_minimumRangeOfUnit_1 = _registerName1("minimumRangeOfUnit:"); - _NSRange _objc_msgSend_767( - ffi.Pointer obj, - ffi.Pointer sel, - int unit, - ) { - return __objc_msgSend_767( - obj, - sel, - unit, - ); - } - - late final __objc_msgSend_767Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_767 = __objc_msgSend_767Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, int)>(); - - void _objc_msgSend_767_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - int unit, - ) { - return __objc_msgSend_767_stret( - stret, - obj, - sel, - unit, - ); - } - - late final __objc_msgSend_767_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend_stret'); - late final __objc_msgSend_767_stret = __objc_msgSend_767_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_maximumRangeOfUnit_1 = _registerName1("maximumRangeOfUnit:"); - late final _sel_rangeOfUnit_inUnit_forDate_1 = - _registerName1("rangeOfUnit:inUnit:forDate:"); - _NSRange _objc_msgSend_768( - ffi.Pointer obj, - ffi.Pointer sel, - int smaller, - int larger, - ffi.Pointer date, - ) { - return __objc_msgSend_768( - obj, - sel, - smaller, - larger, - date, - ); - } - - late final __objc_msgSend_768Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Int32, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_768 = __objc_msgSend_768Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, int, int, - ffi.Pointer)>(); - - void _objc_msgSend_768_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - int smaller, - int larger, - ffi.Pointer date, - ) { - return __objc_msgSend_768_stret( - stret, - obj, - sel, - smaller, - larger, - date, - ); - } - - late final __objc_msgSend_768_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_768_stret = __objc_msgSend_768_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, int, int, ffi.Pointer)>(); - - late final _sel_ordinalityOfUnit_inUnit_forDate_1 = - _registerName1("ordinalityOfUnit:inUnit:forDate:"); - int _objc_msgSend_769( - ffi.Pointer obj, - ffi.Pointer sel, - int smaller, - int larger, - ffi.Pointer date, - ) { - return __objc_msgSend_769( - obj, - sel, - smaller, - larger, - date, - ); - } - - late final __objc_msgSend_769Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_769 = __objc_msgSend_769Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int, int, - ffi.Pointer)>(); - - late final _sel_rangeOfUnit_startDate_interval_forDate_1 = - _registerName1("rangeOfUnit:startDate:interval:forDate:"); - bool _objc_msgSend_770( - ffi.Pointer obj, - ffi.Pointer sel, - int unit, - ffi.Pointer> datep, - ffi.Pointer tip, - ffi.Pointer date, - ) { - return __objc_msgSend_770( - obj, - sel, - unit, - datep, - tip, - date, - ); - } - - late final __objc_msgSend_770Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_770 = __objc_msgSend_770Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSDateComponents1 = _getClass1("NSDateComponents"); - late final _sel_calendar1 = _registerName1("calendar"); - ffi.Pointer _objc_msgSend_771( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_771( - obj, - sel, - ); - } - - late final __objc_msgSend_771Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_771 = __objc_msgSend_771Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setCalendar_1 = _registerName1("setCalendar:"); - void _objc_msgSend_772( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_772( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_772Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_772 = __objc_msgSend_772Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - ffi.Pointer _objc_msgSend_773( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_773( - obj, - sel, - ); - } - - late final __objc_msgSend_773Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_773 = __objc_msgSend_773Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_774( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_774( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_774Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_774 = __objc_msgSend_774Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_era1 = _registerName1("era"); - late final _sel_setEra_1 = _registerName1("setEra:"); - late final _sel_year1 = _registerName1("year"); - late final _sel_setYear_1 = _registerName1("setYear:"); - late final _sel_month1 = _registerName1("month"); - late final _sel_setMonth_1 = _registerName1("setMonth:"); - late final _sel_day1 = _registerName1("day"); - late final _sel_setDay_1 = _registerName1("setDay:"); - late final _sel_hour1 = _registerName1("hour"); - late final _sel_setHour_1 = _registerName1("setHour:"); - late final _sel_minute1 = _registerName1("minute"); - late final _sel_setMinute_1 = _registerName1("setMinute:"); - late final _sel_second1 = _registerName1("second"); - late final _sel_setSecond_1 = _registerName1("setSecond:"); - late final _sel_nanosecond1 = _registerName1("nanosecond"); - late final _sel_setNanosecond_1 = _registerName1("setNanosecond:"); - late final _sel_weekday1 = _registerName1("weekday"); - late final _sel_setWeekday_1 = _registerName1("setWeekday:"); - late final _sel_weekdayOrdinal1 = _registerName1("weekdayOrdinal"); - late final _sel_setWeekdayOrdinal_1 = _registerName1("setWeekdayOrdinal:"); - late final _sel_quarter1 = _registerName1("quarter"); - late final _sel_setQuarter_1 = _registerName1("setQuarter:"); - late final _sel_weekOfMonth1 = _registerName1("weekOfMonth"); - late final _sel_setWeekOfMonth_1 = _registerName1("setWeekOfMonth:"); - late final _sel_weekOfYear1 = _registerName1("weekOfYear"); - late final _sel_setWeekOfYear_1 = _registerName1("setWeekOfYear:"); - late final _sel_yearForWeekOfYear1 = _registerName1("yearForWeekOfYear"); - late final _sel_setYearForWeekOfYear_1 = - _registerName1("setYearForWeekOfYear:"); - late final _sel_isLeapMonth1 = _registerName1("isLeapMonth"); - late final _sel_setLeapMonth_1 = _registerName1("setLeapMonth:"); - late final _sel_week1 = _registerName1("week"); - late final _sel_setWeek_1 = _registerName1("setWeek:"); - late final _sel_setValue_forComponent_1 = - _registerName1("setValue:forComponent:"); - void _objc_msgSend_775( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - int unit, - ) { - return __objc_msgSend_775( - obj, - sel, - value, - unit, - ); - } - - late final __objc_msgSend_775Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Long, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_775 = __objc_msgSend_775Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, int)>(); - - late final _sel_valueForComponent_1 = _registerName1("valueForComponent:"); - int _objc_msgSend_776( - ffi.Pointer obj, - ffi.Pointer sel, - int unit, - ) { - return __objc_msgSend_776( - obj, - sel, - unit, - ); - } - - late final __objc_msgSend_776Ptr = _lookup< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_776 = __objc_msgSend_776Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_isValidDate1 = _registerName1("isValidDate"); - late final _sel_isValidDateInCalendar_1 = - _registerName1("isValidDateInCalendar:"); - bool _objc_msgSend_777( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer calendar, - ) { - return __objc_msgSend_777( - obj, - sel, - calendar, - ); - } - - late final __objc_msgSend_777Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_777 = __objc_msgSend_777Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_dateFromComponents_1 = _registerName1("dateFromComponents:"); - ffi.Pointer _objc_msgSend_778( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer comps, - ) { - return __objc_msgSend_778( - obj, - sel, - comps, - ); - } - - late final __objc_msgSend_778Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_778 = __objc_msgSend_778Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_components_fromDate_1 = - _registerName1("components:fromDate:"); - ffi.Pointer _objc_msgSend_779( - ffi.Pointer obj, - ffi.Pointer sel, - int unitFlags, - ffi.Pointer date, - ) { - return __objc_msgSend_779( - obj, - sel, - unitFlags, - date, - ); - } - - late final __objc_msgSend_779Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_779 = __objc_msgSend_779Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_dateByAddingComponents_toDate_options_1 = - _registerName1("dateByAddingComponents:toDate:options:"); - ffi.Pointer _objc_msgSend_780( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer comps, - ffi.Pointer date, - int opts, - ) { - return __objc_msgSend_780( - obj, - sel, - comps, - date, - opts, - ); - } - - late final __objc_msgSend_780Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_780 = __objc_msgSend_780Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _sel_components_fromDate_toDate_options_1 = - _registerName1("components:fromDate:toDate:options:"); - ffi.Pointer _objc_msgSend_781( - ffi.Pointer obj, - ffi.Pointer sel, - int unitFlags, - ffi.Pointer startingDate, - ffi.Pointer resultDate, - int opts, - ) { - return __objc_msgSend_781( - obj, - sel, - unitFlags, - startingDate, - resultDate, - opts, - ); - } - - late final __objc_msgSend_781Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_781 = __objc_msgSend_781Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _sel_getEra_year_month_day_fromDate_1 = - _registerName1("getEra:year:month:day:fromDate:"); - void _objc_msgSend_782( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer eraValuePointer, - ffi.Pointer yearValuePointer, - ffi.Pointer monthValuePointer, - ffi.Pointer dayValuePointer, - ffi.Pointer date, - ) { - return __objc_msgSend_782( - obj, - sel, - eraValuePointer, - yearValuePointer, - monthValuePointer, - dayValuePointer, - date, - ); - } - - late final __objc_msgSend_782Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_782 = __objc_msgSend_782Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_1 = - _registerName1("getEra:yearForWeekOfYear:weekOfYear:weekday:fromDate:"); - late final _sel_getHour_minute_second_nanosecond_fromDate_1 = - _registerName1("getHour:minute:second:nanosecond:fromDate:"); - late final _sel_component_fromDate_1 = _registerName1("component:fromDate:"); - int _objc_msgSend_783( - ffi.Pointer obj, - ffi.Pointer sel, - int unit, - ffi.Pointer date, - ) { - return __objc_msgSend_783( - obj, - sel, - unit, - date, - ); - } - - late final __objc_msgSend_783Ptr = _lookup< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_783 = __objc_msgSend_783Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_dateWithEra_year_month_day_hour_minute_second_nanosecond_1 = - _registerName1( - "dateWithEra:year:month:day:hour:minute:second:nanosecond:"); - ffi.Pointer _objc_msgSend_784( - ffi.Pointer obj, - ffi.Pointer sel, - int eraValue, - int yearValue, - int monthValue, - int dayValue, - int hourValue, - int minuteValue, - int secondValue, - int nanosecondValue, - ) { - return __objc_msgSend_784( - obj, - sel, - eraValue, - yearValue, - monthValue, - dayValue, - hourValue, - minuteValue, - secondValue, - nanosecondValue, - ); - } - - late final __objc_msgSend_784Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_784 = __objc_msgSend_784Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, int, int, int, int, int, int, int)>(); - - late final _sel_dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_1 = - _registerName1( - "dateWithEra:yearForWeekOfYear:weekOfYear:weekday:hour:minute:second:nanosecond:"); - late final _sel_startOfDayForDate_1 = _registerName1("startOfDayForDate:"); - late final _sel_componentsInTimeZone_fromDate_1 = - _registerName1("componentsInTimeZone:fromDate:"); - ffi.Pointer _objc_msgSend_785( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer timezone, - ffi.Pointer date, - ) { - return __objc_msgSend_785( - obj, - sel, - timezone, - date, - ); - } - - late final __objc_msgSend_785Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_785 = __objc_msgSend_785Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_compareDate_toDate_toUnitGranularity_1 = - _registerName1("compareDate:toDate:toUnitGranularity:"); - int _objc_msgSend_786( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date1, - ffi.Pointer date2, - int unit, - ) { - return __objc_msgSend_786( - obj, - sel, - date1, - date2, - unit, - ); - } - - late final __objc_msgSend_786Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_786 = __objc_msgSend_786Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_isDate_equalToDate_toUnitGranularity_1 = - _registerName1("isDate:equalToDate:toUnitGranularity:"); - bool _objc_msgSend_787( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date1, - ffi.Pointer date2, - int unit, - ) { - return __objc_msgSend_787( - obj, - sel, - date1, - date2, - unit, - ); - } - - late final __objc_msgSend_787Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_787 = __objc_msgSend_787Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_isDate_inSameDayAsDate_1 = - _registerName1("isDate:inSameDayAsDate:"); - bool _objc_msgSend_788( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date1, - ffi.Pointer date2, - ) { - return __objc_msgSend_788( - obj, - sel, - date1, - date2, - ); - } - - late final __objc_msgSend_788Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_788 = __objc_msgSend_788Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isDateInToday_1 = _registerName1("isDateInToday:"); - late final _sel_isDateInYesterday_1 = _registerName1("isDateInYesterday:"); - late final _sel_isDateInTomorrow_1 = _registerName1("isDateInTomorrow:"); - late final _sel_isDateInWeekend_1 = _registerName1("isDateInWeekend:"); - late final _sel_rangeOfWeekendStartDate_interval_containingDate_1 = - _registerName1("rangeOfWeekendStartDate:interval:containingDate:"); - bool _objc_msgSend_789( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> datep, - ffi.Pointer tip, - ffi.Pointer date, - ) { - return __objc_msgSend_789( - obj, - sel, - datep, - tip, - date, - ); - } - - late final __objc_msgSend_789Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_789 = __objc_msgSend_789Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_nextWeekendStartDate_interval_options_afterDate_1 = - _registerName1("nextWeekendStartDate:interval:options:afterDate:"); - bool _objc_msgSend_790( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> datep, - ffi.Pointer tip, - int options, - ffi.Pointer date, - ) { - return __objc_msgSend_790( - obj, - sel, - datep, - tip, - options, - date, - ); - } - - late final __objc_msgSend_790Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_790 = __objc_msgSend_790Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - int, - ffi.Pointer)>(); - - late final _sel_components_fromDateComponents_toDateComponents_options_1 = - _registerName1("components:fromDateComponents:toDateComponents:options:"); - ffi.Pointer _objc_msgSend_791( - ffi.Pointer obj, - ffi.Pointer sel, - int unitFlags, - ffi.Pointer startingDateComp, - ffi.Pointer resultDateComp, - int options, - ) { - return __objc_msgSend_791( - obj, - sel, - unitFlags, - startingDateComp, - resultDateComp, - options, - ); - } - - late final __objc_msgSend_791Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_791 = __objc_msgSend_791Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _sel_dateByAddingUnit_value_toDate_options_1 = - _registerName1("dateByAddingUnit:value:toDate:options:"); - ffi.Pointer _objc_msgSend_792( - ffi.Pointer obj, - ffi.Pointer sel, - int unit, - int value, - ffi.Pointer date, - int options, - ) { - return __objc_msgSend_792( - obj, - sel, - unit, - value, - date, - options, - ); - } - - late final __objc_msgSend_792Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Long, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_792 = __objc_msgSend_792Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, int, ffi.Pointer, int)>(); - - late final _sel_enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_1 = - _registerName1( - "enumerateDatesStartingAfterDate:matchingComponents:options:usingBlock:"); - void _objc_msgSend_793( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer start, - ffi.Pointer comps, - int opts, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_793( - obj, - sel, - start, - comps, - opts, - block, - ); - } - - late final __objc_msgSend_793Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_793 = __objc_msgSend_793Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_nextDateAfterDate_matchingComponents_options_1 = - _registerName1("nextDateAfterDate:matchingComponents:options:"); - ffi.Pointer _objc_msgSend_794( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - ffi.Pointer comps, - int options, - ) { - return __objc_msgSend_794( - obj, - sel, - date, - comps, - options, - ); - } - - late final __objc_msgSend_794Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_794 = __objc_msgSend_794Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _sel_nextDateAfterDate_matchingUnit_value_options_1 = - _registerName1("nextDateAfterDate:matchingUnit:value:options:"); - ffi.Pointer _objc_msgSend_795( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - int unit, - int value, - int options, - ) { - return __objc_msgSend_795( - obj, - sel, - date, - unit, - value, - options, - ); - } - - late final __objc_msgSend_795Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Long, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_795 = __objc_msgSend_795Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, int, int)>(); - - late final _sel_nextDateAfterDate_matchingHour_minute_second_options_1 = - _registerName1("nextDateAfterDate:matchingHour:minute:second:options:"); - ffi.Pointer _objc_msgSend_796( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - int hourValue, - int minuteValue, - int secondValue, - int options, - ) { - return __objc_msgSend_796( - obj, - sel, - date, - hourValue, - minuteValue, - secondValue, - options, - ); - } - - late final __objc_msgSend_796Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_796 = __objc_msgSend_796Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, int, int, int)>(); - - late final _sel_dateBySettingUnit_value_ofDate_options_1 = - _registerName1("dateBySettingUnit:value:ofDate:options:"); - late final _sel_dateBySettingHour_minute_second_ofDate_options_1 = - _registerName1("dateBySettingHour:minute:second:ofDate:options:"); - ffi.Pointer _objc_msgSend_797( - ffi.Pointer obj, - ffi.Pointer sel, - int h, - int m, - int s, - ffi.Pointer date, - int opts, - ) { - return __objc_msgSend_797( - obj, - sel, - h, - m, - s, - date, - opts, - ); - } - - late final __objc_msgSend_797Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_797 = __objc_msgSend_797Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, int, int, ffi.Pointer, int)>(); - - late final _sel_date_matchesComponents_1 = - _registerName1("date:matchesComponents:"); - bool _objc_msgSend_798( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer date, - ffi.Pointer components, - ) { - return __objc_msgSend_798( - obj, - sel, - date, - components, - ); - } - - late final __objc_msgSend_798Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_798 = __objc_msgSend_798Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_799( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_799( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_799Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_799 = __objc_msgSend_799Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isLenient1 = _registerName1("isLenient"); - late final _sel_setLenient_1 = _registerName1("setLenient:"); - late final _sel_twoDigitStartDate1 = _registerName1("twoDigitStartDate"); - late final _sel_setTwoDigitStartDate_1 = - _registerName1("setTwoDigitStartDate:"); - void _objc_msgSend_800( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_800( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_800Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_800 = __objc_msgSend_800Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_defaultDate1 = _registerName1("defaultDate"); - late final _sel_setDefaultDate_1 = _registerName1("setDefaultDate:"); - late final _sel_setEraSymbols_1 = _registerName1("setEraSymbols:"); - void _objc_msgSend_801( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_801( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_801Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_801 = __objc_msgSend_801Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setMonthSymbols_1 = _registerName1("setMonthSymbols:"); - late final _sel_setShortMonthSymbols_1 = - _registerName1("setShortMonthSymbols:"); - late final _sel_setWeekdaySymbols_1 = _registerName1("setWeekdaySymbols:"); - late final _sel_setShortWeekdaySymbols_1 = - _registerName1("setShortWeekdaySymbols:"); - late final _sel_setAMSymbol_1 = _registerName1("setAMSymbol:"); - late final _sel_setPMSymbol_1 = _registerName1("setPMSymbol:"); - late final _sel_setLongEraSymbols_1 = _registerName1("setLongEraSymbols:"); - late final _sel_setVeryShortMonthSymbols_1 = - _registerName1("setVeryShortMonthSymbols:"); - late final _sel_setStandaloneMonthSymbols_1 = - _registerName1("setStandaloneMonthSymbols:"); - late final _sel_setShortStandaloneMonthSymbols_1 = - _registerName1("setShortStandaloneMonthSymbols:"); - late final _sel_setVeryShortStandaloneMonthSymbols_1 = - _registerName1("setVeryShortStandaloneMonthSymbols:"); - late final _sel_setVeryShortWeekdaySymbols_1 = - _registerName1("setVeryShortWeekdaySymbols:"); - late final _sel_setStandaloneWeekdaySymbols_1 = - _registerName1("setStandaloneWeekdaySymbols:"); - late final _sel_setShortStandaloneWeekdaySymbols_1 = - _registerName1("setShortStandaloneWeekdaySymbols:"); - late final _sel_setVeryShortStandaloneWeekdaySymbols_1 = - _registerName1("setVeryShortStandaloneWeekdaySymbols:"); - late final _sel_setQuarterSymbols_1 = _registerName1("setQuarterSymbols:"); - late final _sel_setShortQuarterSymbols_1 = - _registerName1("setShortQuarterSymbols:"); - late final _sel_setStandaloneQuarterSymbols_1 = - _registerName1("setStandaloneQuarterSymbols:"); - late final _sel_setShortStandaloneQuarterSymbols_1 = - _registerName1("setShortStandaloneQuarterSymbols:"); - late final _sel_gregorianStartDate1 = _registerName1("gregorianStartDate"); - late final _sel_setGregorianStartDate_1 = - _registerName1("setGregorianStartDate:"); - late final _sel_doesRelativeDateFormatting1 = - _registerName1("doesRelativeDateFormatting"); - late final _sel_setDoesRelativeDateFormatting_1 = - _registerName1("setDoesRelativeDateFormatting:"); - late final _sel_initWithDateFormat_allowNaturalLanguage_1 = - _registerName1("initWithDateFormat:allowNaturalLanguage:"); - late final _sel_allowsNaturalLanguage1 = - _registerName1("allowsNaturalLanguage"); - late final _class_NSNumberFormatter1 = _getClass1("NSNumberFormatter"); - late final _sel_stringFromNumber_1 = _registerName1("stringFromNumber:"); - ffi.Pointer _objc_msgSend_802( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer number, - ) { - return __objc_msgSend_802( - obj, - sel, - number, - ); - } - - late final __objc_msgSend_802Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_802 = __objc_msgSend_802Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_numberFromString_1 = _registerName1("numberFromString:"); - ffi.Pointer _objc_msgSend_803( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - ) { - return __objc_msgSend_803( - obj, - sel, - string, - ); - } - - late final __objc_msgSend_803Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_803 = __objc_msgSend_803Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_localizedStringFromNumber_numberStyle_1 = - _registerName1("localizedStringFromNumber:numberStyle:"); - ffi.Pointer _objc_msgSend_804( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer num, - int nstyle, - ) { - return __objc_msgSend_804( - obj, - sel, - num, - nstyle, - ); - } - - late final __objc_msgSend_804Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_804 = __objc_msgSend_804Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - int _objc_msgSend_805( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_805( - obj, - sel, - ); - } - - late final __objc_msgSend_805Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_805 = __objc_msgSend_805Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_806( - ffi.Pointer obj, - ffi.Pointer sel, - int behavior, - ) { - return __objc_msgSend_806( - obj, - sel, - behavior, - ); - } - - late final __objc_msgSend_806Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_806 = __objc_msgSend_806Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_numberStyle1 = _registerName1("numberStyle"); - int _objc_msgSend_807( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_807( - obj, - sel, - ); - } - - late final __objc_msgSend_807Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_807 = __objc_msgSend_807Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setNumberStyle_1 = _registerName1("setNumberStyle:"); - void _objc_msgSend_808( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_808( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_808Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_808 = __objc_msgSend_808Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_generatesDecimalNumbers1 = - _registerName1("generatesDecimalNumbers"); - late final _sel_setGeneratesDecimalNumbers_1 = - _registerName1("setGeneratesDecimalNumbers:"); - void _objc_msgSend_809( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_809( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_809Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_809 = __objc_msgSend_809Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_negativeFormat1 = _registerName1("negativeFormat"); - late final _sel_setNegativeFormat_1 = _registerName1("setNegativeFormat:"); - late final _sel_textAttributesForNegativeValues1 = - _registerName1("textAttributesForNegativeValues"); - late final _sel_setTextAttributesForNegativeValues_1 = - _registerName1("setTextAttributesForNegativeValues:"); - late final _sel_positiveFormat1 = _registerName1("positiveFormat"); - late final _sel_setPositiveFormat_1 = _registerName1("setPositiveFormat:"); - late final _sel_textAttributesForPositiveValues1 = - _registerName1("textAttributesForPositiveValues"); - late final _sel_setTextAttributesForPositiveValues_1 = - _registerName1("setTextAttributesForPositiveValues:"); - late final _sel_allowsFloats1 = _registerName1("allowsFloats"); - late final _sel_setAllowsFloats_1 = _registerName1("setAllowsFloats:"); - late final _sel_setDecimalSeparator_1 = - _registerName1("setDecimalSeparator:"); - late final _sel_alwaysShowsDecimalSeparator1 = - _registerName1("alwaysShowsDecimalSeparator"); - late final _sel_setAlwaysShowsDecimalSeparator_1 = - _registerName1("setAlwaysShowsDecimalSeparator:"); - late final _sel_currencyDecimalSeparator1 = - _registerName1("currencyDecimalSeparator"); - late final _sel_setCurrencyDecimalSeparator_1 = - _registerName1("setCurrencyDecimalSeparator:"); - late final _sel_usesGroupingSeparator1 = - _registerName1("usesGroupingSeparator"); - late final _sel_setUsesGroupingSeparator_1 = - _registerName1("setUsesGroupingSeparator:"); - late final _sel_setGroupingSeparator_1 = - _registerName1("setGroupingSeparator:"); - late final _sel_zeroSymbol1 = _registerName1("zeroSymbol"); - late final _sel_setZeroSymbol_1 = _registerName1("setZeroSymbol:"); - late final _sel_textAttributesForZero1 = - _registerName1("textAttributesForZero"); - late final _sel_setTextAttributesForZero_1 = - _registerName1("setTextAttributesForZero:"); - late final _sel_nilSymbol1 = _registerName1("nilSymbol"); - late final _sel_setNilSymbol_1 = _registerName1("setNilSymbol:"); - late final _sel_textAttributesForNil1 = - _registerName1("textAttributesForNil"); - late final _sel_setTextAttributesForNil_1 = - _registerName1("setTextAttributesForNil:"); - late final _sel_notANumberSymbol1 = _registerName1("notANumberSymbol"); - late final _sel_setNotANumberSymbol_1 = - _registerName1("setNotANumberSymbol:"); - late final _sel_textAttributesForNotANumber1 = - _registerName1("textAttributesForNotANumber"); - late final _sel_setTextAttributesForNotANumber_1 = - _registerName1("setTextAttributesForNotANumber:"); - late final _sel_positiveInfinitySymbol1 = - _registerName1("positiveInfinitySymbol"); - late final _sel_setPositiveInfinitySymbol_1 = - _registerName1("setPositiveInfinitySymbol:"); - late final _sel_textAttributesForPositiveInfinity1 = - _registerName1("textAttributesForPositiveInfinity"); - late final _sel_setTextAttributesForPositiveInfinity_1 = - _registerName1("setTextAttributesForPositiveInfinity:"); - late final _sel_negativeInfinitySymbol1 = - _registerName1("negativeInfinitySymbol"); - late final _sel_setNegativeInfinitySymbol_1 = - _registerName1("setNegativeInfinitySymbol:"); - late final _sel_textAttributesForNegativeInfinity1 = - _registerName1("textAttributesForNegativeInfinity"); - late final _sel_setTextAttributesForNegativeInfinity_1 = - _registerName1("setTextAttributesForNegativeInfinity:"); - late final _sel_positivePrefix1 = _registerName1("positivePrefix"); - late final _sel_setPositivePrefix_1 = _registerName1("setPositivePrefix:"); - late final _sel_positiveSuffix1 = _registerName1("positiveSuffix"); - late final _sel_setPositiveSuffix_1 = _registerName1("setPositiveSuffix:"); - late final _sel_negativePrefix1 = _registerName1("negativePrefix"); - late final _sel_setNegativePrefix_1 = _registerName1("setNegativePrefix:"); - late final _sel_negativeSuffix1 = _registerName1("negativeSuffix"); - late final _sel_setNegativeSuffix_1 = _registerName1("setNegativeSuffix:"); - late final _sel_setCurrencyCode_1 = _registerName1("setCurrencyCode:"); - late final _sel_setCurrencySymbol_1 = _registerName1("setCurrencySymbol:"); - late final _sel_internationalCurrencySymbol1 = - _registerName1("internationalCurrencySymbol"); - late final _sel_setInternationalCurrencySymbol_1 = - _registerName1("setInternationalCurrencySymbol:"); - late final _sel_percentSymbol1 = _registerName1("percentSymbol"); - late final _sel_setPercentSymbol_1 = _registerName1("setPercentSymbol:"); - late final _sel_perMillSymbol1 = _registerName1("perMillSymbol"); - late final _sel_setPerMillSymbol_1 = _registerName1("setPerMillSymbol:"); - late final _sel_minusSign1 = _registerName1("minusSign"); - late final _sel_setMinusSign_1 = _registerName1("setMinusSign:"); - late final _sel_plusSign1 = _registerName1("plusSign"); - late final _sel_setPlusSign_1 = _registerName1("setPlusSign:"); - late final _sel_exponentSymbol1 = _registerName1("exponentSymbol"); - late final _sel_setExponentSymbol_1 = _registerName1("setExponentSymbol:"); - late final _sel_groupingSize1 = _registerName1("groupingSize"); - late final _sel_setGroupingSize_1 = _registerName1("setGroupingSize:"); - late final _sel_secondaryGroupingSize1 = - _registerName1("secondaryGroupingSize"); - late final _sel_setSecondaryGroupingSize_1 = - _registerName1("setSecondaryGroupingSize:"); - late final _sel_multiplier1 = _registerName1("multiplier"); - late final _sel_setMultiplier_1 = _registerName1("setMultiplier:"); - late final _sel_formatWidth1 = _registerName1("formatWidth"); - late final _sel_setFormatWidth_1 = _registerName1("setFormatWidth:"); - late final _sel_paddingCharacter1 = _registerName1("paddingCharacter"); - late final _sel_setPaddingCharacter_1 = - _registerName1("setPaddingCharacter:"); - late final _sel_paddingPosition1 = _registerName1("paddingPosition"); - int _objc_msgSend_810( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_810( - obj, - sel, - ); - } - - late final __objc_msgSend_810Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_810 = __objc_msgSend_810Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setPaddingPosition_1 = _registerName1("setPaddingPosition:"); - void _objc_msgSend_811( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_811( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_811Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_811 = __objc_msgSend_811Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_roundingMode1 = _registerName1("roundingMode"); - int _objc_msgSend_812( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_812( - obj, - sel, - ); - } - - late final __objc_msgSend_812Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_812 = __objc_msgSend_812Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setRoundingMode_1 = _registerName1("setRoundingMode:"); - void _objc_msgSend_813( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_813( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_813Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_813 = __objc_msgSend_813Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_roundingIncrement1 = _registerName1("roundingIncrement"); - ffi.Pointer _objc_msgSend_814( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_814( - obj, - sel, - ); - } - - late final __objc_msgSend_814Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_814 = __objc_msgSend_814Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setRoundingIncrement_1 = - _registerName1("setRoundingIncrement:"); - void _objc_msgSend_815( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_815( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_815Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_815 = __objc_msgSend_815Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_minimumIntegerDigits1 = - _registerName1("minimumIntegerDigits"); - late final _sel_setMinimumIntegerDigits_1 = - _registerName1("setMinimumIntegerDigits:"); - late final _sel_maximumIntegerDigits1 = - _registerName1("maximumIntegerDigits"); - late final _sel_setMaximumIntegerDigits_1 = - _registerName1("setMaximumIntegerDigits:"); - late final _sel_minimumFractionDigits1 = - _registerName1("minimumFractionDigits"); - late final _sel_setMinimumFractionDigits_1 = - _registerName1("setMinimumFractionDigits:"); - late final _sel_maximumFractionDigits1 = - _registerName1("maximumFractionDigits"); - late final _sel_setMaximumFractionDigits_1 = - _registerName1("setMaximumFractionDigits:"); - late final _sel_minimum1 = _registerName1("minimum"); - late final _sel_setMinimum_1 = _registerName1("setMinimum:"); - late final _sel_maximum1 = _registerName1("maximum"); - late final _sel_setMaximum_1 = _registerName1("setMaximum:"); - late final _sel_currencyGroupingSeparator1 = - _registerName1("currencyGroupingSeparator"); - late final _sel_setCurrencyGroupingSeparator_1 = - _registerName1("setCurrencyGroupingSeparator:"); - late final _sel_usesSignificantDigits1 = - _registerName1("usesSignificantDigits"); - late final _sel_setUsesSignificantDigits_1 = - _registerName1("setUsesSignificantDigits:"); - late final _sel_minimumSignificantDigits1 = - _registerName1("minimumSignificantDigits"); - late final _sel_setMinimumSignificantDigits_1 = - _registerName1("setMinimumSignificantDigits:"); - late final _sel_maximumSignificantDigits1 = - _registerName1("maximumSignificantDigits"); - late final _sel_setMaximumSignificantDigits_1 = - _registerName1("setMaximumSignificantDigits:"); - late final _sel_isPartialStringValidationEnabled1 = - _registerName1("isPartialStringValidationEnabled"); - late final _sel_setPartialStringValidationEnabled_1 = - _registerName1("setPartialStringValidationEnabled:"); - late final _sel_hasThousandSeparators1 = - _registerName1("hasThousandSeparators"); - late final _sel_setHasThousandSeparators_1 = - _registerName1("setHasThousandSeparators:"); - late final _sel_thousandSeparator1 = _registerName1("thousandSeparator"); - late final _sel_setThousandSeparator_1 = - _registerName1("setThousandSeparator:"); - late final _sel_localizesFormat1 = _registerName1("localizesFormat"); - late final _sel_setLocalizesFormat_1 = _registerName1("setLocalizesFormat:"); - late final _sel_format1 = _registerName1("format"); - late final _sel_setFormat_1 = _registerName1("setFormat:"); - late final _sel_attributedStringForZero1 = - _registerName1("attributedStringForZero"); - late final _sel_setAttributedStringForZero_1 = - _registerName1("setAttributedStringForZero:"); - void _objc_msgSend_816( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_816( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_816Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_816 = __objc_msgSend_816Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_attributedStringForNil1 = - _registerName1("attributedStringForNil"); - late final _sel_setAttributedStringForNil_1 = - _registerName1("setAttributedStringForNil:"); - late final _sel_attributedStringForNotANumber1 = - _registerName1("attributedStringForNotANumber"); - late final _sel_setAttributedStringForNotANumber_1 = - _registerName1("setAttributedStringForNotANumber:"); - late final _class_NSDecimalNumberHandler1 = - _getClass1("NSDecimalNumberHandler"); - late final _sel_defaultDecimalNumberHandler1 = - _registerName1("defaultDecimalNumberHandler"); - ffi.Pointer _objc_msgSend_817( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_817( - obj, - sel, - ); - } - - late final __objc_msgSend_817Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_817 = __objc_msgSend_817Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1 = - _registerName1( - "initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:"); - instancetype _objc_msgSend_818( - ffi.Pointer obj, - ffi.Pointer sel, - int roundingMode, - int scale, - bool exact, - bool overflow, - bool underflow, - bool divideByZero, - ) { - return __objc_msgSend_818( - obj, - sel, - roundingMode, - scale, - exact, - overflow, - underflow, - divideByZero, - ); - } - - late final __objc_msgSend_818Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Short, - ffi.Bool, - ffi.Bool, - ffi.Bool, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_818 = __objc_msgSend_818Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - int, bool, bool, bool, bool)>(); - - late final _sel_decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1 = - _registerName1( - "decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:"); - late final _sel_roundingBehavior1 = _registerName1("roundingBehavior"); - late final _sel_setRoundingBehavior_1 = - _registerName1("setRoundingBehavior:"); - void _objc_msgSend_819( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_819( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_819Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_819 = __objc_msgSend_819Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSScanner1 = _getClass1("NSScanner"); - late final _sel_scanLocation1 = _registerName1("scanLocation"); - late final _sel_setScanLocation_1 = _registerName1("setScanLocation:"); - late final _sel_charactersToBeSkipped1 = - _registerName1("charactersToBeSkipped"); - ffi.Pointer _objc_msgSend_820( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_820( - obj, - sel, - ); - } - - late final __objc_msgSend_820Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_820 = __objc_msgSend_820Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setCharactersToBeSkipped_1 = - _registerName1("setCharactersToBeSkipped:"); - void _objc_msgSend_821( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_821( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_821Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_821 = __objc_msgSend_821Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_caseSensitive1 = _registerName1("caseSensitive"); - late final _sel_setCaseSensitive_1 = _registerName1("setCaseSensitive:"); - late final _sel_scanInt_1 = _registerName1("scanInt:"); - bool _objc_msgSend_822( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ) { - return __objc_msgSend_822( - obj, - sel, - result, - ); - } - - late final __objc_msgSend_822Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_822 = __objc_msgSend_822Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scanInteger_1 = _registerName1("scanInteger:"); - bool _objc_msgSend_823( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ) { - return __objc_msgSend_823( - obj, - sel, - result, - ); - } - - late final __objc_msgSend_823Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_823 = __objc_msgSend_823Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scanLongLong_1 = _registerName1("scanLongLong:"); - bool _objc_msgSend_824( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ) { - return __objc_msgSend_824( - obj, - sel, - result, - ); - } - - late final __objc_msgSend_824Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_824 = __objc_msgSend_824Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scanUnsignedLongLong_1 = - _registerName1("scanUnsignedLongLong:"); - bool _objc_msgSend_825( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ) { - return __objc_msgSend_825( - obj, - sel, - result, - ); - } - - late final __objc_msgSend_825Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_825 = __objc_msgSend_825Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scanFloat_1 = _registerName1("scanFloat:"); - bool _objc_msgSend_826( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ) { - return __objc_msgSend_826( - obj, - sel, - result, - ); - } - - late final __objc_msgSend_826Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_826 = __objc_msgSend_826Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scanDouble_1 = _registerName1("scanDouble:"); - bool _objc_msgSend_827( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ) { - return __objc_msgSend_827( - obj, - sel, - result, - ); - } - - late final __objc_msgSend_827Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_827 = __objc_msgSend_827Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scanHexInt_1 = _registerName1("scanHexInt:"); - bool _objc_msgSend_828( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ) { - return __objc_msgSend_828( - obj, - sel, - result, - ); - } - - late final __objc_msgSend_828Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_828 = __objc_msgSend_828Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_scanHexLongLong_1 = _registerName1("scanHexLongLong:"); - late final _sel_scanHexFloat_1 = _registerName1("scanHexFloat:"); - late final _sel_scanHexDouble_1 = _registerName1("scanHexDouble:"); - late final _sel_scanString_intoString_1 = - _registerName1("scanString:intoString:"); - bool _objc_msgSend_829( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - ffi.Pointer> result, - ) { - return __objc_msgSend_829( - obj, - sel, - string, - result, - ); - } - - late final __objc_msgSend_829Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_829 = __objc_msgSend_829Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_scanCharactersFromSet_intoString_1 = - _registerName1("scanCharactersFromSet:intoString:"); - bool _objc_msgSend_830( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer set1, - ffi.Pointer> result, - ) { - return __objc_msgSend_830( - obj, - sel, - set1, - result, - ); - } - - late final __objc_msgSend_830Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_830 = __objc_msgSend_830Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_scanUpToString_intoString_1 = - _registerName1("scanUpToString:intoString:"); - late final _sel_scanUpToCharactersFromSet_intoString_1 = - _registerName1("scanUpToCharactersFromSet:intoString:"); - late final _sel_isAtEnd1 = _registerName1("isAtEnd"); - late final _sel_scannerWithString_1 = _registerName1("scannerWithString:"); - late final _sel_localizedScannerWithString_1 = - _registerName1("localizedScannerWithString:"); - late final _sel_scanDecimal_1 = _registerName1("scanDecimal:"); - bool _objc_msgSend_831( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer dcm, - ) { - return __objc_msgSend_831( - obj, - sel, - dcm, - ); - } - - late final __objc_msgSend_831Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_831 = __objc_msgSend_831Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSException1 = _getClass1("NSException"); - late final _sel_exceptionWithName_reason_userInfo_1 = - _registerName1("exceptionWithName:reason:userInfo:"); - ffi.Pointer _objc_msgSend_832( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer reason, - ffi.Pointer userInfo, - ) { - return __objc_msgSend_832( - obj, - sel, - name, - reason, - userInfo, - ); - } - - late final __objc_msgSend_832Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_832 = __objc_msgSend_832Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithName_reason_userInfo_1 = - _registerName1("initWithName:reason:userInfo:"); - instancetype _objc_msgSend_833( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aName, - ffi.Pointer aReason, - ffi.Pointer aUserInfo, - ) { - return __objc_msgSend_833( - obj, - sel, - aName, - aReason, - aUserInfo, - ); - } - - late final __objc_msgSend_833Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_833 = __objc_msgSend_833Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_reason1 = _registerName1("reason"); - late final _sel_raise1 = _registerName1("raise"); - late final _sel_raise_format_1 = _registerName1("raise:format:"); - late final _sel_raise_format_arguments_1 = - _registerName1("raise:format:arguments:"); - void _objc_msgSend_834( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer format, - ffi.Pointer<__va_list_tag> argList, - ) { - return __objc_msgSend_834( - obj, - sel, - name, - format, - argList, - ); - } - - late final __objc_msgSend_834Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); - late final __objc_msgSend_834 = __objc_msgSend_834Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__va_list_tag>)>(); - - late final _class_NSFileHandle1 = _getClass1("NSFileHandle"); - late final _sel_availableData1 = _registerName1("availableData"); - late final _sel_initWithFileDescriptor_closeOnDealloc_1 = - _registerName1("initWithFileDescriptor:closeOnDealloc:"); - instancetype _objc_msgSend_835( - ffi.Pointer obj, - ffi.Pointer sel, - int fd, - bool closeopt, - ) { - return __objc_msgSend_835( - obj, - sel, - fd, - closeopt, - ); - } - - late final __objc_msgSend_835Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_835 = __objc_msgSend_835Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int, bool)>(); - - late final _sel_readDataToEndOfFileAndReturnError_1 = - _registerName1("readDataToEndOfFileAndReturnError:"); - ffi.Pointer _objc_msgSend_836( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> error, - ) { - return __objc_msgSend_836( - obj, - sel, - error, - ); - } - - late final __objc_msgSend_836Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_836 = __objc_msgSend_836Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_readDataUpToLength_error_1 = - _registerName1("readDataUpToLength:error:"); - ffi.Pointer _objc_msgSend_837( - ffi.Pointer obj, - ffi.Pointer sel, - int length, - ffi.Pointer> error, - ) { - return __objc_msgSend_837( - obj, - sel, - length, - error, - ); - } - - late final __objc_msgSend_837Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_837 = __objc_msgSend_837Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer>)>(); - - late final _sel_writeData_error_1 = _registerName1("writeData:error:"); - bool _objc_msgSend_838( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ffi.Pointer> error, - ) { - return __objc_msgSend_838( - obj, - sel, - data, - error, - ); - } - - late final __objc_msgSend_838Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_838 = __objc_msgSend_838Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_getOffset_error_1 = _registerName1("getOffset:error:"); - bool _objc_msgSend_839( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer offsetInFile, - ffi.Pointer> error, - ) { - return __objc_msgSend_839( - obj, - sel, - offsetInFile, - error, - ); - } - - late final __objc_msgSend_839Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_839 = __objc_msgSend_839Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_seekToEndReturningOffset_error_1 = - _registerName1("seekToEndReturningOffset:error:"); - late final _sel_seekToOffset_error_1 = _registerName1("seekToOffset:error:"); - bool _objc_msgSend_840( - ffi.Pointer obj, - ffi.Pointer sel, - int offset, - ffi.Pointer> error, - ) { - return __objc_msgSend_840( - obj, - sel, - offset, - error, - ); - } - - late final __objc_msgSend_840Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLongLong, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_840 = __objc_msgSend_840Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer>)>(); - - late final _sel_truncateAtOffset_error_1 = - _registerName1("truncateAtOffset:error:"); - late final _sel_synchronizeAndReturnError_1 = - _registerName1("synchronizeAndReturnError:"); - late final _sel_closeAndReturnError_1 = - _registerName1("closeAndReturnError:"); - late final _sel_fileHandleWithStandardInput1 = - _registerName1("fileHandleWithStandardInput"); - ffi.Pointer _objc_msgSend_841( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_841( - obj, - sel, - ); - } - - late final __objc_msgSend_841Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_841 = __objc_msgSend_841Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_fileHandleWithStandardOutput1 = - _registerName1("fileHandleWithStandardOutput"); - late final _sel_fileHandleWithStandardError1 = - _registerName1("fileHandleWithStandardError"); - late final _sel_fileHandleWithNullDevice1 = - _registerName1("fileHandleWithNullDevice"); - late final _sel_fileHandleForReadingAtPath_1 = - _registerName1("fileHandleForReadingAtPath:"); - late final _sel_fileHandleForWritingAtPath_1 = - _registerName1("fileHandleForWritingAtPath:"); - late final _sel_fileHandleForUpdatingAtPath_1 = - _registerName1("fileHandleForUpdatingAtPath:"); - late final _sel_fileHandleForReadingFromURL_error_1 = - _registerName1("fileHandleForReadingFromURL:error:"); - instancetype _objc_msgSend_842( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer> error, - ) { - return __objc_msgSend_842( - obj, - sel, - url, - error, - ); - } - - late final __objc_msgSend_842Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_842 = __objc_msgSend_842Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); - - late final _sel_fileHandleForWritingToURL_error_1 = - _registerName1("fileHandleForWritingToURL:error:"); - late final _sel_fileHandleForUpdatingURL_error_1 = - _registerName1("fileHandleForUpdatingURL:error:"); - late final _sel_readInBackgroundAndNotifyForModes_1 = - _registerName1("readInBackgroundAndNotifyForModes:"); - void _objc_msgSend_843( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer modes, - ) { - return __objc_msgSend_843( - obj, - sel, - modes, - ); - } - - late final __objc_msgSend_843Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_843 = __objc_msgSend_843Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_readInBackgroundAndNotify1 = - _registerName1("readInBackgroundAndNotify"); - late final _sel_readToEndOfFileInBackgroundAndNotifyForModes_1 = - _registerName1("readToEndOfFileInBackgroundAndNotifyForModes:"); - late final _sel_readToEndOfFileInBackgroundAndNotify1 = - _registerName1("readToEndOfFileInBackgroundAndNotify"); - late final _sel_acceptConnectionInBackgroundAndNotifyForModes_1 = - _registerName1("acceptConnectionInBackgroundAndNotifyForModes:"); - late final _sel_acceptConnectionInBackgroundAndNotify1 = - _registerName1("acceptConnectionInBackgroundAndNotify"); - late final _sel_waitForDataInBackgroundAndNotifyForModes_1 = - _registerName1("waitForDataInBackgroundAndNotifyForModes:"); - late final _sel_waitForDataInBackgroundAndNotify1 = - _registerName1("waitForDataInBackgroundAndNotify"); - late final _sel_readabilityHandler1 = _registerName1("readabilityHandler"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_844( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_844( - obj, - sel, - ); - } - - late final __objc_msgSend_844Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_844 = __objc_msgSend_844Ptr.asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setReadabilityHandler_1 = - _registerName1("setReadabilityHandler:"); - void _objc_msgSend_845( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> value, - ) { - return __objc_msgSend_845( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_845Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_845 = __objc_msgSend_845Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_writeabilityHandler1 = _registerName1("writeabilityHandler"); - late final _sel_setWriteabilityHandler_1 = - _registerName1("setWriteabilityHandler:"); - late final _sel_initWithFileDescriptor_1 = - _registerName1("initWithFileDescriptor:"); - instancetype _objc_msgSend_846( - ffi.Pointer obj, - ffi.Pointer sel, - int fd, - ) { - return __objc_msgSend_846( - obj, - sel, - fd, - ); - } - - late final __objc_msgSend_846Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int)>>('objc_msgSend'); - late final __objc_msgSend_846 = __objc_msgSend_846Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_fileDescriptor1 = _registerName1("fileDescriptor"); - late final _sel_readDataToEndOfFile1 = _registerName1("readDataToEndOfFile"); - late final _sel_readDataOfLength_1 = _registerName1("readDataOfLength:"); - ffi.Pointer _objc_msgSend_847( - ffi.Pointer obj, - ffi.Pointer sel, - int length, - ) { - return __objc_msgSend_847( - obj, - sel, - length, - ); - } - - late final __objc_msgSend_847Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_847 = __objc_msgSend_847Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_offsetInFile1 = _registerName1("offsetInFile"); - late final _sel_seekToEndOfFile1 = _registerName1("seekToEndOfFile"); - late final _sel_seekToFileOffset_1 = _registerName1("seekToFileOffset:"); - void _objc_msgSend_848( - ffi.Pointer obj, - ffi.Pointer sel, - int offset, - ) { - return __objc_msgSend_848( - obj, - sel, - offset, - ); - } - - late final __objc_msgSend_848Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLongLong)>>('objc_msgSend'); - late final __objc_msgSend_848 = __objc_msgSend_848Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_truncateFileAtOffset_1 = - _registerName1("truncateFileAtOffset:"); - late final _sel_synchronizeFile1 = _registerName1("synchronizeFile"); - late final _sel_closeFile1 = _registerName1("closeFile"); - late final _class_NSHTTPCookieStorage1 = _getClass1("NSHTTPCookieStorage"); - late final _sel_sharedHTTPCookieStorage1 = - _registerName1("sharedHTTPCookieStorage"); - ffi.Pointer _objc_msgSend_849( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_849( - obj, - sel, - ); - } - - late final __objc_msgSend_849Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_849 = __objc_msgSend_849Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_sharedCookieStorageForGroupContainerIdentifier_1 = - _registerName1("sharedCookieStorageForGroupContainerIdentifier:"); - ffi.Pointer _objc_msgSend_850( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer identifier, - ) { - return __objc_msgSend_850( - obj, - sel, - identifier, - ); - } - - late final __objc_msgSend_850Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_850 = __objc_msgSend_850Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_cookies1 = _registerName1("cookies"); - late final _class_NSHTTPCookie1 = _getClass1("NSHTTPCookie"); - late final _sel_initWithProperties_1 = _registerName1("initWithProperties:"); - instancetype _objc_msgSend_851( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer properties, - ) { - return __objc_msgSend_851( - obj, - sel, - properties, - ); - } - - late final __objc_msgSend_851Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_851 = __objc_msgSend_851Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_cookieWithProperties_1 = - _registerName1("cookieWithProperties:"); - ffi.Pointer _objc_msgSend_852( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer properties, - ) { - return __objc_msgSend_852( - obj, - sel, - properties, - ); - } - - late final __objc_msgSend_852Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_852 = __objc_msgSend_852Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_requestHeaderFieldsWithCookies_1 = - _registerName1("requestHeaderFieldsWithCookies:"); - late final _sel_cookiesWithResponseHeaderFields_forURL_1 = - _registerName1("cookiesWithResponseHeaderFields:forURL:"); - ffi.Pointer _objc_msgSend_853( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer headerFields, - ffi.Pointer URL, - ) { - return __objc_msgSend_853( - obj, - sel, - headerFields, - URL, - ); - } - - late final __objc_msgSend_853Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_853 = __objc_msgSend_853Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_properties1 = _registerName1("properties"); - late final _sel_value1 = _registerName1("value"); - late final _sel_expiresDate1 = _registerName1("expiresDate"); - late final _sel_isSessionOnly1 = _registerName1("isSessionOnly"); - late final _sel_isSecure1 = _registerName1("isSecure"); - late final _sel_isHTTPOnly1 = _registerName1("isHTTPOnly"); - late final _sel_comment1 = _registerName1("comment"); - late final _sel_commentURL1 = _registerName1("commentURL"); - late final _sel_portList1 = _registerName1("portList"); - late final _sel_sameSitePolicy1 = _registerName1("sameSitePolicy"); - late final _sel_setCookie_1 = _registerName1("setCookie:"); - void _objc_msgSend_854( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer cookie, - ) { - return __objc_msgSend_854( - obj, - sel, - cookie, - ); - } - - late final __objc_msgSend_854Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_854 = __objc_msgSend_854Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_deleteCookie_1 = _registerName1("deleteCookie:"); - late final _sel_removeCookiesSinceDate_1 = - _registerName1("removeCookiesSinceDate:"); - late final _sel_cookiesForURL_1 = _registerName1("cookiesForURL:"); - late final _sel_setCookies_forURL_mainDocumentURL_1 = - _registerName1("setCookies:forURL:mainDocumentURL:"); - void _objc_msgSend_855( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer cookies, - ffi.Pointer URL, - ffi.Pointer mainDocumentURL, - ) { - return __objc_msgSend_855( - obj, - sel, - cookies, - URL, - mainDocumentURL, - ); - } - - late final __objc_msgSend_855Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_855 = __objc_msgSend_855Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_cookieAcceptPolicy1 = _registerName1("cookieAcceptPolicy"); - int _objc_msgSend_856( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_856( - obj, - sel, - ); - } - - late final __objc_msgSend_856Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_856 = __objc_msgSend_856Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setCookieAcceptPolicy_1 = - _registerName1("setCookieAcceptPolicy:"); - void _objc_msgSend_857( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_857( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_857Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_857 = __objc_msgSend_857Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_sortedCookiesUsingDescriptors_1 = - _registerName1("sortedCookiesUsingDescriptors:"); - late final _class_NSURLSessionTask1 = _getClass1("NSURLSessionTask"); - late final _sel_taskIdentifier1 = _registerName1("taskIdentifier"); - late final _class_NSURLRequest1 = _getClass1("NSURLRequest"); - late final _sel_requestWithURL_1 = _registerName1("requestWithURL:"); - late final _sel_supportsSecureCoding1 = - _registerName1("supportsSecureCoding"); - late final _sel_requestWithURL_cachePolicy_timeoutInterval_1 = - _registerName1("requestWithURL:cachePolicy:timeoutInterval:"); - instancetype _objc_msgSend_858( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer URL, - int cachePolicy, - double timeoutInterval, - ) { - return __objc_msgSend_858( - obj, - sel, - URL, - cachePolicy, - timeoutInterval, - ); - } - - late final __objc_msgSend_858Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32, ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_858 = __objc_msgSend_858Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, double)>(); - - late final _sel_initWithURL_cachePolicy_timeoutInterval_1 = - _registerName1("initWithURL:cachePolicy:timeoutInterval:"); - late final _sel_URL1 = _registerName1("URL"); - late final _sel_cachePolicy1 = _registerName1("cachePolicy"); - int _objc_msgSend_859( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_859( - obj, - sel, - ); - } - - late final __objc_msgSend_859Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_859 = __objc_msgSend_859Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_timeoutInterval1 = _registerName1("timeoutInterval"); - late final _sel_mainDocumentURL1 = _registerName1("mainDocumentURL"); - late final _sel_networkServiceType1 = _registerName1("networkServiceType"); - int _objc_msgSend_860( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_860( - obj, - sel, - ); - } - - late final __objc_msgSend_860Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_860 = __objc_msgSend_860Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_allowsCellularAccess1 = - _registerName1("allowsCellularAccess"); - late final _sel_allowsExpensiveNetworkAccess1 = - _registerName1("allowsExpensiveNetworkAccess"); - late final _sel_allowsConstrainedNetworkAccess1 = - _registerName1("allowsConstrainedNetworkAccess"); - late final _sel_assumesHTTP3Capable1 = _registerName1("assumesHTTP3Capable"); - late final _sel_attribution1 = _registerName1("attribution"); - int _objc_msgSend_861( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_861( - obj, - sel, - ); - } - - late final __objc_msgSend_861Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_861 = __objc_msgSend_861Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_requiresDNSSECValidation1 = - _registerName1("requiresDNSSECValidation"); - late final _sel_HTTPMethod1 = _registerName1("HTTPMethod"); - late final _sel_allHTTPHeaderFields1 = _registerName1("allHTTPHeaderFields"); - late final _sel_valueForHTTPHeaderField_1 = - _registerName1("valueForHTTPHeaderField:"); - late final _sel_HTTPBody1 = _registerName1("HTTPBody"); - late final _class_NSInputStream1 = _getClass1("NSInputStream"); - late final _class_NSStream1 = _getClass1("NSStream"); - late final _sel_open1 = _registerName1("open"); - late final _sel_close1 = _registerName1("close"); - bool _objc_msgSend_862( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer property, - ffi.Pointer key, - ) { - return __objc_msgSend_862( - obj, - sel, - property, - key, - ); - } - - late final __objc_msgSend_862Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_862 = __objc_msgSend_862Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_streamStatus1 = _registerName1("streamStatus"); - int _objc_msgSend_863( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_863( - obj, - sel, - ); - } - - late final __objc_msgSend_863Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_863 = __objc_msgSend_863Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_streamError1 = _registerName1("streamError"); - late final _class_NSOutputStream1 = _getClass1("NSOutputStream"); - late final _sel_write_maxLength_1 = _registerName1("write:maxLength:"); - int _objc_msgSend_864( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - int len, - ) { - return __objc_msgSend_864( - obj, - sel, - buffer, - len, - ); - } - - late final __objc_msgSend_864Ptr = _lookup< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_864 = __objc_msgSend_864Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_hasSpaceAvailable1 = _registerName1("hasSpaceAvailable"); - late final _sel_initToMemory1 = _registerName1("initToMemory"); - late final _sel_initToBuffer_capacity_1 = - _registerName1("initToBuffer:capacity:"); - instancetype _objc_msgSend_865( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer buffer, - int capacity, - ) { - return __objc_msgSend_865( - obj, - sel, - buffer, - capacity, - ); - } - - late final __objc_msgSend_865Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_865 = __objc_msgSend_865Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_initWithURL_append_1 = _registerName1("initWithURL:append:"); - instancetype _objc_msgSend_866( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - bool shouldAppend, - ) { - return __objc_msgSend_866( - obj, - sel, - url, - shouldAppend, - ); - } - - late final __objc_msgSend_866Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_866 = __objc_msgSend_866Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_initToFileAtPath_append_1 = - _registerName1("initToFileAtPath:append:"); - late final _sel_outputStreamToMemory1 = - _registerName1("outputStreamToMemory"); - late final _sel_outputStreamToBuffer_capacity_1 = - _registerName1("outputStreamToBuffer:capacity:"); - late final _sel_outputStreamToFileAtPath_append_1 = - _registerName1("outputStreamToFileAtPath:append:"); - late final _sel_outputStreamWithURL_append_1 = - _registerName1("outputStreamWithURL:append:"); - late final _sel_getStreamsToHostWithName_port_inputStream_outputStream_1 = - _registerName1("getStreamsToHostWithName:port:inputStream:outputStream:"); - void _objc_msgSend_867( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer hostname, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream, - ) { - return __objc_msgSend_867( - obj, - sel, - hostname, - port, - inputStream, - outputStream, - ); - } - - late final __objc_msgSend_867Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_867 = __objc_msgSend_867Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _class_NSHost1 = _getClass1("NSHost"); - late final _sel_currentHost1 = _registerName1("currentHost"); - late final _sel_hostWithName_1 = _registerName1("hostWithName:"); - instancetype _objc_msgSend_868( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ) { - return __objc_msgSend_868( - obj, - sel, - name, - ); - } - - late final __objc_msgSend_868Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_868 = __objc_msgSend_868Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_hostWithAddress_1 = _registerName1("hostWithAddress:"); - late final _sel_isEqualToHost_1 = _registerName1("isEqualToHost:"); - bool _objc_msgSend_869( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer aHost, - ) { - return __objc_msgSend_869( - obj, - sel, - aHost, - ); - } - - late final __objc_msgSend_869Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_869 = __objc_msgSend_869Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_names1 = _registerName1("names"); - late final _sel_address1 = _registerName1("address"); - late final _sel_addresses1 = _registerName1("addresses"); - late final _sel_localizedName1 = _registerName1("localizedName"); - late final _sel_setHostCacheEnabled_1 = - _registerName1("setHostCacheEnabled:"); - void _objc_msgSend_870( - ffi.Pointer obj, - ffi.Pointer sel, - bool flag, - ) { - return __objc_msgSend_870( - obj, - sel, - flag, - ); - } - - late final __objc_msgSend_870Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_870 = __objc_msgSend_870Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_isHostCacheEnabled1 = _registerName1("isHostCacheEnabled"); - late final _sel_flushHostCache1 = _registerName1("flushHostCache"); - late final _sel_getStreamsToHost_port_inputStream_outputStream_1 = - _registerName1("getStreamsToHost:port:inputStream:outputStream:"); - void _objc_msgSend_871( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer host, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream, - ) { - return __objc_msgSend_871( - obj, - sel, - host, - port, - inputStream, - outputStream, - ); - } - - late final __objc_msgSend_871Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_871 = __objc_msgSend_871Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1 = - _registerName1("getBoundStreamsWithBufferSize:inputStream:outputStream:"); - void _objc_msgSend_872( - ffi.Pointer obj, - ffi.Pointer sel, - int bufferSize, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream, - ) { - return __objc_msgSend_872( - obj, - sel, - bufferSize, - inputStream, - outputStream, - ); - } - - late final __objc_msgSend_872Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_872 = __objc_msgSend_872Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_read_maxLength_1 = _registerName1("read:maxLength:"); - late final _sel_getBuffer_length_1 = _registerName1("getBuffer:length:"); - bool _objc_msgSend_873( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> buffer, - ffi.Pointer len, - ) { - return __objc_msgSend_873( - obj, - sel, - buffer, - len, - ); - } - - late final __objc_msgSend_873Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_873 = __objc_msgSend_873Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer)>(); - - late final _sel_hasBytesAvailable1 = _registerName1("hasBytesAvailable"); - late final _sel_initWithFileAtPath_1 = _registerName1("initWithFileAtPath:"); - late final _sel_inputStreamWithData_1 = - _registerName1("inputStreamWithData:"); - instancetype _objc_msgSend_874( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ) { - return __objc_msgSend_874( - obj, - sel, - data, - ); - } - - late final __objc_msgSend_874Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_874 = __objc_msgSend_874Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_inputStreamWithFileAtPath_1 = - _registerName1("inputStreamWithFileAtPath:"); - late final _sel_inputStreamWithURL_1 = _registerName1("inputStreamWithURL:"); - late final _sel_HTTPBodyStream1 = _registerName1("HTTPBodyStream"); - ffi.Pointer _objc_msgSend_875( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_875( - obj, - sel, - ); - } - - late final __objc_msgSend_875Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_875 = __objc_msgSend_875Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_HTTPShouldHandleCookies1 = - _registerName1("HTTPShouldHandleCookies"); - late final _sel_HTTPShouldUsePipelining1 = - _registerName1("HTTPShouldUsePipelining"); - late final _sel_originalRequest1 = _registerName1("originalRequest"); - ffi.Pointer _objc_msgSend_876( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_876( - obj, - sel, - ); - } - - late final __objc_msgSend_876Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_876 = __objc_msgSend_876Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_currentRequest1 = _registerName1("currentRequest"); - late final _class_NSURLResponse1 = _getClass1("NSURLResponse"); - late final _sel_initWithURL_MIMEType_expectedContentLength_textEncodingName_1 = - _registerName1( - "initWithURL:MIMEType:expectedContentLength:textEncodingName:"); - instancetype _objc_msgSend_877( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer URL, - ffi.Pointer MIMEType, - int length, - ffi.Pointer name, - ) { - return __objc_msgSend_877( - obj, - sel, - URL, - MIMEType, - length, - name, - ); - } - - late final __objc_msgSend_877Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_877 = __objc_msgSend_877Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer)>(); - - late final _sel_MIMEType1 = _registerName1("MIMEType"); - late final _sel_expectedContentLength1 = - _registerName1("expectedContentLength"); - late final _sel_textEncodingName1 = _registerName1("textEncodingName"); - late final _sel_suggestedFilename1 = _registerName1("suggestedFilename"); - late final _sel_response1 = _registerName1("response"); - ffi.Pointer _objc_msgSend_878( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_878( - obj, - sel, - ); - } - - late final __objc_msgSend_878Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_878 = __objc_msgSend_878Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_progress1 = _registerName1("progress"); - ffi.Pointer _objc_msgSend_879( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_879( - obj, - sel, - ); - } - - late final __objc_msgSend_879Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_879 = __objc_msgSend_879Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_earliestBeginDate1 = _registerName1("earliestBeginDate"); - late final _sel_setEarliestBeginDate_1 = - _registerName1("setEarliestBeginDate:"); - late final _sel_countOfBytesClientExpectsToSend1 = - _registerName1("countOfBytesClientExpectsToSend"); - late final _sel_setCountOfBytesClientExpectsToSend_1 = - _registerName1("setCountOfBytesClientExpectsToSend:"); - late final _sel_countOfBytesClientExpectsToReceive1 = - _registerName1("countOfBytesClientExpectsToReceive"); - late final _sel_setCountOfBytesClientExpectsToReceive_1 = - _registerName1("setCountOfBytesClientExpectsToReceive:"); - late final _sel_countOfBytesSent1 = _registerName1("countOfBytesSent"); - late final _sel_countOfBytesReceived1 = - _registerName1("countOfBytesReceived"); - late final _sel_countOfBytesExpectedToSend1 = - _registerName1("countOfBytesExpectedToSend"); - late final _sel_countOfBytesExpectedToReceive1 = - _registerName1("countOfBytesExpectedToReceive"); - late final _sel_taskDescription1 = _registerName1("taskDescription"); - late final _sel_setTaskDescription_1 = _registerName1("setTaskDescription:"); - late final _sel_state1 = _registerName1("state"); - int _objc_msgSend_880( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_880( - obj, - sel, - ); - } - - late final __objc_msgSend_880Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_880 = __objc_msgSend_880Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_suspend1 = _registerName1("suspend"); - late final _sel_priority1 = _registerName1("priority"); - late final _sel_setPriority_1 = _registerName1("setPriority:"); - void _objc_msgSend_881( - ffi.Pointer obj, - ffi.Pointer sel, - double value, - ) { - return __objc_msgSend_881( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_881Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Float)>>('objc_msgSend'); - late final __objc_msgSend_881 = __objc_msgSend_881Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, double)>(); - - late final _sel_prefersIncrementalDelivery1 = - _registerName1("prefersIncrementalDelivery"); - late final _sel_setPrefersIncrementalDelivery_1 = - _registerName1("setPrefersIncrementalDelivery:"); - late final _sel_storeCookies_forTask_1 = - _registerName1("storeCookies:forTask:"); - void _objc_msgSend_882( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer cookies, - ffi.Pointer task, - ) { - return __objc_msgSend_882( - obj, - sel, - cookies, - task, - ); - } - - late final __objc_msgSend_882Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_882 = __objc_msgSend_882Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_getCookiesForTask_completionHandler_1 = - _registerName1("getCookiesForTask:completionHandler:"); - void _objc_msgSend_883( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer task, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_883( - obj, - sel, - task, - completionHandler, - ); - } - - late final __objc_msgSend_883Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_883 = __objc_msgSend_883Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _class_NSIndexPath1 = _getClass1("NSIndexPath"); - late final _sel_indexPathWithIndex_1 = _registerName1("indexPathWithIndex:"); - late final _sel_indexPathWithIndexes_length_1 = - _registerName1("indexPathWithIndexes:length:"); - instancetype _objc_msgSend_884( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexes, - int length, - ) { - return __objc_msgSend_884( - obj, - sel, - indexes, - length, - ); - } - - late final __objc_msgSend_884Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_884 = __objc_msgSend_884Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_initWithIndexes_length_1 = - _registerName1("initWithIndexes:length:"); - late final _sel_indexPathByAddingIndex_1 = - _registerName1("indexPathByAddingIndex:"); - ffi.Pointer _objc_msgSend_885( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_885( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_885Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_885 = __objc_msgSend_885Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_indexPathByRemovingLastIndex1 = - _registerName1("indexPathByRemovingLastIndex"); - ffi.Pointer _objc_msgSend_886( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_886( - obj, - sel, - ); - } - - late final __objc_msgSend_886Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_886 = __objc_msgSend_886Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_indexAtPosition_1 = _registerName1("indexAtPosition:"); - late final _sel_getIndexes_range_1 = _registerName1("getIndexes:range:"); - void _objc_msgSend_887( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexes, - _NSRange positionRange, - ) { - return __objc_msgSend_887( - obj, - sel, - indexes, - positionRange, - ); - } - - late final __objc_msgSend_887Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_887 = __objc_msgSend_887Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); - - int _objc_msgSend_888( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer otherObject, - ) { - return __objc_msgSend_888( - obj, - sel, - otherObject, - ); - } - - late final __objc_msgSend_888Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_888 = __objc_msgSend_888Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_getIndexes_1 = _registerName1("getIndexes:"); - void _objc_msgSend_889( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer indexes, - ) { - return __objc_msgSend_889( - obj, - sel, - indexes, - ); - } - - late final __objc_msgSend_889Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_889 = __objc_msgSend_889Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSInflectionRule1 = _getClass1("NSInflectionRule"); - late final _sel_automaticRule1 = _registerName1("automaticRule"); - ffi.Pointer _objc_msgSend_890( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_890( - obj, - sel, - ); - } - - late final __objc_msgSend_890Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_890 = __objc_msgSend_890Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_canInflectLanguage_1 = _registerName1("canInflectLanguage:"); - late final _sel_canInflectPreferredLocalization1 = - _registerName1("canInflectPreferredLocalization"); - late final _class_NSMorphology1 = _getClass1("NSMorphology"); - late final _sel_grammaticalGender1 = _registerName1("grammaticalGender"); - int _objc_msgSend_891( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_891( - obj, - sel, - ); - } - - late final __objc_msgSend_891Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_891 = __objc_msgSend_891Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setGrammaticalGender_1 = - _registerName1("setGrammaticalGender:"); - void _objc_msgSend_892( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_892( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_892Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_892 = __objc_msgSend_892Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_partOfSpeech1 = _registerName1("partOfSpeech"); - int _objc_msgSend_893( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_893( - obj, - sel, - ); - } - - late final __objc_msgSend_893Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_893 = __objc_msgSend_893Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setPartOfSpeech_1 = _registerName1("setPartOfSpeech:"); - void _objc_msgSend_894( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_894( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_894Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_894 = __objc_msgSend_894Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_number1 = _registerName1("number"); - int _objc_msgSend_895( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_895( - obj, - sel, - ); - } - - late final __objc_msgSend_895Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_895 = __objc_msgSend_895Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setNumber_1 = _registerName1("setNumber:"); - void _objc_msgSend_896( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_896( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_896Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_896 = __objc_msgSend_896Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_grammaticalCase1 = _registerName1("grammaticalCase"); - int _objc_msgSend_897( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_897( - obj, - sel, - ); - } - - late final __objc_msgSend_897Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_897 = __objc_msgSend_897Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setGrammaticalCase_1 = _registerName1("setGrammaticalCase:"); - void _objc_msgSend_898( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_898( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_898Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_898 = __objc_msgSend_898Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_determination1 = _registerName1("determination"); - int _objc_msgSend_899( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_899( - obj, - sel, - ); - } - - late final __objc_msgSend_899Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_899 = __objc_msgSend_899Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDetermination_1 = _registerName1("setDetermination:"); - void _objc_msgSend_900( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_900( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_900Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_900 = __objc_msgSend_900Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_grammaticalPerson1 = _registerName1("grammaticalPerson"); - int _objc_msgSend_901( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_901( - obj, - sel, - ); - } - - late final __objc_msgSend_901Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_901 = __objc_msgSend_901Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setGrammaticalPerson_1 = - _registerName1("setGrammaticalPerson:"); - void _objc_msgSend_902( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_902( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_902Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_902 = __objc_msgSend_902Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_pronounType1 = _registerName1("pronounType"); - int _objc_msgSend_903( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_903( - obj, - sel, - ); - } - - late final __objc_msgSend_903Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_903 = __objc_msgSend_903Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setPronounType_1 = _registerName1("setPronounType:"); - void _objc_msgSend_904( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_904( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_904Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_904 = __objc_msgSend_904Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_definiteness1 = _registerName1("definiteness"); - int _objc_msgSend_905( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_905( - obj, - sel, - ); - } - - late final __objc_msgSend_905Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_905 = __objc_msgSend_905Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDefiniteness_1 = _registerName1("setDefiniteness:"); - void _objc_msgSend_906( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_906( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_906Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_906 = __objc_msgSend_906Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _class_NSMorphologyCustomPronoun1 = - _getClass1("NSMorphologyCustomPronoun"); - late final _sel_isSupportedForLanguage_1 = - _registerName1("isSupportedForLanguage:"); - late final _sel_requiredKeysForLanguage_1 = - _registerName1("requiredKeysForLanguage:"); - late final _sel_subjectForm1 = _registerName1("subjectForm"); - late final _sel_setSubjectForm_1 = _registerName1("setSubjectForm:"); - late final _sel_objectForm1 = _registerName1("objectForm"); - late final _sel_setObjectForm_1 = _registerName1("setObjectForm:"); - late final _sel_possessiveForm1 = _registerName1("possessiveForm"); - late final _sel_setPossessiveForm_1 = _registerName1("setPossessiveForm:"); - late final _sel_possessiveAdjectiveForm1 = - _registerName1("possessiveAdjectiveForm"); - late final _sel_setPossessiveAdjectiveForm_1 = - _registerName1("setPossessiveAdjectiveForm:"); - late final _sel_reflexiveForm1 = _registerName1("reflexiveForm"); - late final _sel_setReflexiveForm_1 = _registerName1("setReflexiveForm:"); - late final _sel_customPronounForLanguage_1 = - _registerName1("customPronounForLanguage:"); - ffi.Pointer _objc_msgSend_907( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer language, - ) { - return __objc_msgSend_907( - obj, - sel, - language, - ); - } - - late final __objc_msgSend_907Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_907 = __objc_msgSend_907Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setCustomPronoun_forLanguage_error_1 = - _registerName1("setCustomPronoun:forLanguage:error:"); - bool _objc_msgSend_908( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer features, - ffi.Pointer language, - ffi.Pointer> error, - ) { - return __objc_msgSend_908( - obj, - sel, - features, - language, - error, - ); - } - - late final __objc_msgSend_908Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_908 = __objc_msgSend_908Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_isUnspecified1 = _registerName1("isUnspecified"); - late final _sel_userMorphology1 = _registerName1("userMorphology"); - ffi.Pointer _objc_msgSend_909( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_909( - obj, - sel, - ); - } - - late final __objc_msgSend_909Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_909 = __objc_msgSend_909Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSOperationQueue1 = _getClass1("NSOperationQueue"); - late final _class_NSOperation1 = _getClass1("NSOperation"); - late final _sel_isConcurrent1 = _registerName1("isConcurrent"); - late final _sel_isAsynchronous1 = _registerName1("isAsynchronous"); - late final _sel_isReady1 = _registerName1("isReady"); - late final _sel_addDependency_1 = _registerName1("addDependency:"); - void _objc_msgSend_910( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer op, - ) { - return __objc_msgSend_910( - obj, - sel, - op, - ); - } - - late final __objc_msgSend_910Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_910 = __objc_msgSend_910Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeDependency_1 = _registerName1("removeDependency:"); - late final _sel_dependencies1 = _registerName1("dependencies"); - late final _sel_queuePriority1 = _registerName1("queuePriority"); - int _objc_msgSend_911( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_911( - obj, - sel, - ); - } - - late final __objc_msgSend_911Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_911 = __objc_msgSend_911Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setQueuePriority_1 = _registerName1("setQueuePriority:"); - void _objc_msgSend_912( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_912( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_912Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_912 = __objc_msgSend_912Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_completionBlock1 = _registerName1("completionBlock"); - late final _sel_setCompletionBlock_1 = _registerName1("setCompletionBlock:"); - late final _sel_waitUntilFinished1 = _registerName1("waitUntilFinished"); - late final _sel_addOperation_1 = _registerName1("addOperation:"); - late final _sel_addOperations_waitUntilFinished_1 = - _registerName1("addOperations:waitUntilFinished:"); - void _objc_msgSend_913( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer ops, - bool wait, - ) { - return __objc_msgSend_913( - obj, - sel, - ops, - wait, - ); - } - - late final __objc_msgSend_913Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_913 = __objc_msgSend_913Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_addOperationWithBlock_1 = - _registerName1("addOperationWithBlock:"); - late final _sel_addBarrierBlock_1 = _registerName1("addBarrierBlock:"); - late final _sel_maxConcurrentOperationCount1 = - _registerName1("maxConcurrentOperationCount"); - late final _sel_setMaxConcurrentOperationCount_1 = - _registerName1("setMaxConcurrentOperationCount:"); - late final _sel_isSuspended1 = _registerName1("isSuspended"); - late final _sel_setSuspended_1 = _registerName1("setSuspended:"); - late final _sel_underlyingQueue1 = _registerName1("underlyingQueue"); - ffi.Pointer _objc_msgSend_914( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_914( - obj, - sel, - ); - } - - late final __objc_msgSend_914Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_914 = __objc_msgSend_914Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setUnderlyingQueue_1 = _registerName1("setUnderlyingQueue:"); - void _objc_msgSend_915( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_915( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_915Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_915 = __objc_msgSend_915Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_cancelAllOperations1 = _registerName1("cancelAllOperations"); - late final _sel_waitUntilAllOperationsAreFinished1 = - _registerName1("waitUntilAllOperationsAreFinished"); - late final _sel_currentQueue1 = _registerName1("currentQueue"); - ffi.Pointer _objc_msgSend_916( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_916( - obj, - sel, - ); - } - - late final __objc_msgSend_916Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_916 = __objc_msgSend_916Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_mainQueue1 = _registerName1("mainQueue"); - ffi.Pointer _objc_msgSend_917( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_917( - obj, - sel, - ); - } - - late final __objc_msgSend_917Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_917 = __objc_msgSend_917Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_operations1 = _registerName1("operations"); - late final _sel_operationCount1 = _registerName1("operationCount"); - late final _class_NSPointerArray1 = _getClass1("NSPointerArray"); - late final _sel_initWithOptions_1 = _registerName1("initWithOptions:"); - instancetype _objc_msgSend_918( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_918( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_918Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_918 = __objc_msgSend_918Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _class_NSPointerFunctions1 = _getClass1("NSPointerFunctions"); - late final _sel_pointerFunctionsWithOptions_1 = - _registerName1("pointerFunctionsWithOptions:"); - ffi.Pointer _objc_msgSend_919( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_919( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_919Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_919 = __objc_msgSend_919Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_hashFunction1 = _registerName1("hashFunction"); - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - _objc_msgSend_920( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_920( - obj, - sel, - ); - } - - late final __objc_msgSend_920Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); - late final __objc_msgSend_920 = __objc_msgSend_920Ptr.asFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setHashFunction_1 = _registerName1("setHashFunction:"); - void _objc_msgSend_921( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value, - ) { - return __objc_msgSend_921( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_921Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>>( - 'objc_msgSend'); - late final __objc_msgSend_921 = __objc_msgSend_921Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>(); - - late final _sel_isEqualFunction1 = _registerName1("isEqualFunction"); - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - _objc_msgSend_922( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_922( - obj, - sel, - ); - } - - late final __objc_msgSend_922Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); - late final __objc_msgSend_922 = __objc_msgSend_922Ptr.asFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setIsEqualFunction_1 = _registerName1("setIsEqualFunction:"); - void _objc_msgSend_923( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value, - ) { - return __objc_msgSend_923( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_923Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>>( - 'objc_msgSend'); - late final __objc_msgSend_923 = __objc_msgSend_923Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>(); - - late final _sel_sizeFunction1 = _registerName1("sizeFunction"); - ffi.Pointer< - ffi.NativeFunction)>> - _objc_msgSend_924( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_924( - obj, - sel, - ); - } - - late final __objc_msgSend_924Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); - late final __objc_msgSend_924 = __objc_msgSend_924Ptr.asFunction< - ffi.Pointer< - ffi - .NativeFunction)>> - Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setSizeFunction_1 = _registerName1("setSizeFunction:"); - void _objc_msgSend_925( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi - .NativeFunction)>> - value, - ) { - return __objc_msgSend_925( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_925Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>('objc_msgSend'); - late final __objc_msgSend_925 = __objc_msgSend_925Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>(); - - late final _sel_descriptionFunction1 = _registerName1("descriptionFunction"); - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>> - _objc_msgSend_926( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_926( - obj, - sel, - ); - } - - late final __objc_msgSend_926Ptr = - _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); - late final __objc_msgSend_926 = __objc_msgSend_926Ptr.asFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>> - Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDescriptionFunction_1 = - _registerName1("setDescriptionFunction:"); - void _objc_msgSend_927( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>> - value, - ) { - return __objc_msgSend_927( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_927Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer)>>)>>('objc_msgSend'); - late final __objc_msgSend_927 = __objc_msgSend_927Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>>)>(); - - late final _sel_relinquishFunction1 = _registerName1("relinquishFunction"); - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - _objc_msgSend_928( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_928( - obj, - sel, - ); - } - - late final __objc_msgSend_928Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); - late final __objc_msgSend_928 = __objc_msgSend_928Ptr.asFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setRelinquishFunction_1 = - _registerName1("setRelinquishFunction:"); - void _objc_msgSend_929( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value, - ) { - return __objc_msgSend_929( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_929Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>>( - 'objc_msgSend'); - late final __objc_msgSend_929 = __objc_msgSend_929Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>(); - - late final _sel_acquireFunction1 = _registerName1("acquireFunction"); - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>, - ffi.Bool)>> _objc_msgSend_930( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_930( - obj, - sel, - ); - } - - late final __objc_msgSend_930Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>, - ffi.Bool)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); - late final __objc_msgSend_930 = __objc_msgSend_930Ptr.asFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>, - ffi.Bool)>> - Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setAcquireFunction_1 = _registerName1("setAcquireFunction:"); - void _objc_msgSend_931( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>, - ffi.Bool)>> - value, - ) { - return __objc_msgSend_931( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_931Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>, - ffi.Bool)>>)>>('objc_msgSend'); - late final __objc_msgSend_931 = __objc_msgSend_931Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>, - ffi.Bool)>>)>(); - - late final _sel_usesStrongWriteBarrier1 = - _registerName1("usesStrongWriteBarrier"); - late final _sel_setUsesStrongWriteBarrier_1 = - _registerName1("setUsesStrongWriteBarrier:"); - late final _sel_usesWeakReadAndWriteBarriers1 = - _registerName1("usesWeakReadAndWriteBarriers"); - late final _sel_setUsesWeakReadAndWriteBarriers_1 = - _registerName1("setUsesWeakReadAndWriteBarriers:"); - late final _sel_initWithPointerFunctions_1 = - _registerName1("initWithPointerFunctions:"); - instancetype _objc_msgSend_932( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer functions, - ) { - return __objc_msgSend_932( - obj, - sel, - functions, - ); - } - - late final __objc_msgSend_932Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_932 = __objc_msgSend_932Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_pointerArrayWithOptions_1 = - _registerName1("pointerArrayWithOptions:"); - ffi.Pointer _objc_msgSend_933( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_933( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_933Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_933 = __objc_msgSend_933Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_pointerArrayWithPointerFunctions_1 = - _registerName1("pointerArrayWithPointerFunctions:"); - ffi.Pointer _objc_msgSend_934( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer functions, - ) { - return __objc_msgSend_934( - obj, - sel, - functions, - ); - } - - late final __objc_msgSend_934Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_934 = __objc_msgSend_934Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_pointerFunctions1 = _registerName1("pointerFunctions"); - ffi.Pointer _objc_msgSend_935( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_935( - obj, - sel, - ); - } - - late final __objc_msgSend_935Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_935 = __objc_msgSend_935Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_pointerAtIndex_1 = _registerName1("pointerAtIndex:"); - ffi.Pointer _objc_msgSend_936( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_936( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_936Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_936 = __objc_msgSend_936Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_addPointer_1 = _registerName1("addPointer:"); - late final _sel_removePointerAtIndex_1 = - _registerName1("removePointerAtIndex:"); - late final _sel_insertPointer_atIndex_1 = - _registerName1("insertPointer:atIndex:"); - late final _sel_replacePointerAtIndex_withPointer_1 = - _registerName1("replacePointerAtIndex:withPointer:"); - void _objc_msgSend_937( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ffi.Pointer item, - ) { - return __objc_msgSend_937( - obj, - sel, - index, - item, - ); - } - - late final __objc_msgSend_937Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_937 = __objc_msgSend_937Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_compact1 = _registerName1("compact"); - late final _sel_setCount_1 = _registerName1("setCount:"); - late final _sel_pointerArrayWithStrongObjects1 = - _registerName1("pointerArrayWithStrongObjects"); - late final _sel_pointerArrayWithWeakObjects1 = - _registerName1("pointerArrayWithWeakObjects"); - late final _sel_strongObjectsPointerArray1 = - _registerName1("strongObjectsPointerArray"); - ffi.Pointer _objc_msgSend_938( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_938( - obj, - sel, - ); - } - - late final __objc_msgSend_938Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_938 = __objc_msgSend_938Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_weakObjectsPointerArray1 = - _registerName1("weakObjectsPointerArray"); - late final _class_NSProcessInfo1 = _getClass1("NSProcessInfo"); - late final _sel_processInfo1 = _registerName1("processInfo"); - ffi.Pointer _objc_msgSend_939( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_939( - obj, - sel, - ); - } - - late final __objc_msgSend_939Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_939 = __objc_msgSend_939Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_environment1 = _registerName1("environment"); - late final _sel_hostName1 = _registerName1("hostName"); - late final _sel_processName1 = _registerName1("processName"); - late final _sel_setProcessName_1 = _registerName1("setProcessName:"); - late final _sel_processIdentifier1 = _registerName1("processIdentifier"); - late final _sel_globallyUniqueString1 = - _registerName1("globallyUniqueString"); - late final _sel_operatingSystem1 = _registerName1("operatingSystem"); - late final _sel_operatingSystemName1 = _registerName1("operatingSystemName"); - late final _sel_operatingSystemVersionString1 = - _registerName1("operatingSystemVersionString"); - late final _sel_operatingSystemVersion1 = - _registerName1("operatingSystemVersion"); - NSOperatingSystemVersion _objc_msgSend_940( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_940( - obj, - sel, - ); - } - - late final __objc_msgSend_940Ptr = _lookup< - ffi.NativeFunction< - NSOperatingSystemVersion Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_940 = __objc_msgSend_940Ptr.asFunction< - NSOperatingSystemVersion Function( - ffi.Pointer, ffi.Pointer)>(); - - void _objc_msgSend_940_stret( - ffi.Pointer stret, - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_940_stret( - stret, - obj, - sel, - ); - } - - late final __objc_msgSend_940_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); - late final __objc_msgSend_940_stret = __objc_msgSend_940_stretPtr.asFunction< - void Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_processorCount1 = _registerName1("processorCount"); - late final _sel_activeProcessorCount1 = - _registerName1("activeProcessorCount"); - late final _sel_physicalMemory1 = _registerName1("physicalMemory"); - late final _sel_isOperatingSystemAtLeastVersion_1 = - _registerName1("isOperatingSystemAtLeastVersion:"); - bool _objc_msgSend_941( - ffi.Pointer obj, - ffi.Pointer sel, - NSOperatingSystemVersion version, - ) { - return __objc_msgSend_941( - obj, - sel, - version, - ); - } - - late final __objc_msgSend_941Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - NSOperatingSystemVersion)>>('objc_msgSend'); - late final __objc_msgSend_941 = __objc_msgSend_941Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - NSOperatingSystemVersion)>(); - - late final _sel_systemUptime1 = _registerName1("systemUptime"); - late final _sel_disableSuddenTermination1 = - _registerName1("disableSuddenTermination"); - late final _sel_enableSuddenTermination1 = - _registerName1("enableSuddenTermination"); - late final _sel_disableAutomaticTermination_1 = - _registerName1("disableAutomaticTermination:"); - late final _sel_enableAutomaticTermination_1 = - _registerName1("enableAutomaticTermination:"); - late final _sel_automaticTerminationSupportEnabled1 = - _registerName1("automaticTerminationSupportEnabled"); - late final _sel_setAutomaticTerminationSupportEnabled_1 = - _registerName1("setAutomaticTerminationSupportEnabled:"); - late final _sel_beginActivityWithOptions_reason_1 = - _registerName1("beginActivityWithOptions:reason:"); - ffi.Pointer _objc_msgSend_942( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ffi.Pointer reason, - ) { - return __objc_msgSend_942( - obj, - sel, - options, - reason, - ); - } - - late final __objc_msgSend_942Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_942 = __objc_msgSend_942Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); - - late final _sel_endActivity_1 = _registerName1("endActivity:"); - late final _sel_performActivityWithOptions_reason_usingBlock_1 = - _registerName1("performActivityWithOptions:reason:usingBlock:"); - void _objc_msgSend_943( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ffi.Pointer reason, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_943( - obj, - sel, - options, - reason, - block, - ); - } - - late final __objc_msgSend_943Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_943 = __objc_msgSend_943Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_performExpiringActivityWithReason_usingBlock_1 = - _registerName1("performExpiringActivityWithReason:usingBlock:"); - void _objc_msgSend_944( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer reason, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_944( - obj, - sel, - reason, - block, - ); - } - - late final __objc_msgSend_944Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_944 = __objc_msgSend_944Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_userName1 = _registerName1("userName"); - late final _sel_fullUserName1 = _registerName1("fullUserName"); - late final _sel_thermalState1 = _registerName1("thermalState"); - int _objc_msgSend_945( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_945( - obj, - sel, - ); - } - - late final __objc_msgSend_945Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_945 = __objc_msgSend_945Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_isLowPowerModeEnabled1 = - _registerName1("isLowPowerModeEnabled"); - late final _sel_isMacCatalystApp1 = _registerName1("isMacCatalystApp"); - late final _sel_isiOSAppOnMac1 = _registerName1("isiOSAppOnMac"); - late final _class_NSTextCheckingResult1 = _getClass1("NSTextCheckingResult"); - late final _sel_resultType1 = _registerName1("resultType"); - int _objc_msgSend_946( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_946( - obj, - sel, - ); - } - - late final __objc_msgSend_946Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_946 = __objc_msgSend_946Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_range1 = _registerName1("range"); - late final _sel_orthography1 = _registerName1("orthography"); - ffi.Pointer _objc_msgSend_947( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_947( - obj, - sel, - ); - } - - late final __objc_msgSend_947Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_947 = __objc_msgSend_947Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_grammarDetails1 = _registerName1("grammarDetails"); - late final _sel_duration1 = _registerName1("duration"); - late final _sel_components1 = _registerName1("components"); - late final _sel_replacementString1 = _registerName1("replacementString"); - late final _sel_alternativeStrings1 = _registerName1("alternativeStrings"); - late final _class_NSRegularExpression1 = _getClass1("NSRegularExpression"); - late final _sel_regularExpressionWithPattern_options_error_1 = - _registerName1("regularExpressionWithPattern:options:error:"); - ffi.Pointer _objc_msgSend_948( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer pattern, - int options, - ffi.Pointer> error, - ) { - return __objc_msgSend_948( - obj, - sel, - pattern, - options, - error, - ); - } - - late final __objc_msgSend_948Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_948 = __objc_msgSend_948Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_initWithPattern_options_error_1 = - _registerName1("initWithPattern:options:error:"); - instancetype _objc_msgSend_949( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer pattern, - int options, - ffi.Pointer> error, - ) { - return __objc_msgSend_949( - obj, - sel, - pattern, - options, - error, - ); - } - - late final __objc_msgSend_949Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_949 = __objc_msgSend_949Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_pattern1 = _registerName1("pattern"); - late final _sel_options1 = _registerName1("options"); - int _objc_msgSend_950( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_950( - obj, - sel, - ); - } - - late final __objc_msgSend_950Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_950 = __objc_msgSend_950Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_numberOfCaptureGroups1 = - _registerName1("numberOfCaptureGroups"); - late final _sel_escapedPatternForString_1 = - _registerName1("escapedPatternForString:"); - late final _sel_enumerateMatchesInString_options_range_usingBlock_1 = - _registerName1("enumerateMatchesInString:options:range:usingBlock:"); - void _objc_msgSend_951( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ffi.Pointer<_ObjCBlock> block, - ) { - return __objc_msgSend_951( - obj, - sel, - string, - options, - range, - block, - ); - } - - late final __objc_msgSend_951Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_951 = __objc_msgSend_951Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_matchesInString_options_range_1 = - _registerName1("matchesInString:options:range:"); - ffi.Pointer _objc_msgSend_952( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ) { - return __objc_msgSend_952( - obj, - sel, - string, - options, - range, - ); - } - - late final __objc_msgSend_952Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_952 = __objc_msgSend_952Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - - late final _sel_numberOfMatchesInString_options_range_1 = - _registerName1("numberOfMatchesInString:options:range:"); - int _objc_msgSend_953( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ) { - return __objc_msgSend_953( - obj, - sel, - string, - options, - range, - ); - } - - late final __objc_msgSend_953Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_953 = __objc_msgSend_953Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange)>(); - - late final _sel_firstMatchInString_options_range_1 = - _registerName1("firstMatchInString:options:range:"); - ffi.Pointer _objc_msgSend_954( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ) { - return __objc_msgSend_954( - obj, - sel, - string, - options, - range, - ); - } - - late final __objc_msgSend_954Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_954 = __objc_msgSend_954Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - - late final _sel_rangeOfFirstMatchInString_options_range_1 = - _registerName1("rangeOfFirstMatchInString:options:range:"); - _NSRange _objc_msgSend_955( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ) { - return __objc_msgSend_955( - obj, - sel, - string, - options, - range, - ); - } - - late final __objc_msgSend_955Ptr = _lookup< - ffi.NativeFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_955 = __objc_msgSend_955Ptr.asFunction< - _NSRange Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange)>(); - - void _objc_msgSend_955_stret( - ffi.Pointer<_NSRange> stret, - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ) { - return __objc_msgSend_955_stret( - stret, - obj, - sel, - string, - options, - range, - ); - } - - late final __objc_msgSend_955_stretPtr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend_stret'); - late final __objc_msgSend_955_stret = __objc_msgSend_955_stretPtr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - - late final _sel_stringByReplacingMatchesInString_options_range_withTemplate_1 = - _registerName1( - "stringByReplacingMatchesInString:options:range:withTemplate:"); - ffi.Pointer _objc_msgSend_956( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ffi.Pointer templ, - ) { - return __objc_msgSend_956( - obj, - sel, - string, - options, - range, - templ, - ); - } - - late final __objc_msgSend_956Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_956 = __objc_msgSend_956Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - _NSRange, - ffi.Pointer)>(); - - late final _sel_replaceMatchesInString_options_range_withTemplate_1 = - _registerName1("replaceMatchesInString:options:range:withTemplate:"); - int _objc_msgSend_957( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ffi.Pointer templ, - ) { - return __objc_msgSend_957( - obj, - sel, - string, - options, - range, - templ, - ); - } - - late final __objc_msgSend_957Ptr = _lookup< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_957 = __objc_msgSend_957Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange, ffi.Pointer)>(); - - late final _sel_replacementStringForResult_inString_offset_template_1 = - _registerName1("replacementStringForResult:inString:offset:template:"); - ffi.Pointer _objc_msgSend_958( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, - ffi.Pointer string, - int offset, - ffi.Pointer templ, - ) { - return __objc_msgSend_958( - obj, - sel, - result, - string, - offset, - templ, - ); - } - - late final __objc_msgSend_958Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_958 = __objc_msgSend_958Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer)>(); - - late final _sel_escapedTemplateForString_1 = - _registerName1("escapedTemplateForString:"); - late final _sel_regularExpression1 = _registerName1("regularExpression"); - ffi.Pointer _objc_msgSend_959( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_959( - obj, - sel, - ); - } - - late final __objc_msgSend_959Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_959 = __objc_msgSend_959Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_phoneNumber1 = _registerName1("phoneNumber"); - late final _sel_numberOfRanges1 = _registerName1("numberOfRanges"); - late final _sel_rangeAtIndex_1 = _registerName1("rangeAtIndex:"); - late final _sel_rangeWithName_1 = _registerName1("rangeWithName:"); - late final _sel_resultByAdjustingRangesWithOffset_1 = - _registerName1("resultByAdjustingRangesWithOffset:"); - ffi.Pointer _objc_msgSend_960( - ffi.Pointer obj, - ffi.Pointer sel, - int offset, - ) { - return __objc_msgSend_960( - obj, - sel, - offset, - ); - } - - late final __objc_msgSend_960Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_960 = __objc_msgSend_960Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_addressComponents1 = _registerName1("addressComponents"); - late final _sel_orthographyCheckingResultWithRange_orthography_1 = - _registerName1("orthographyCheckingResultWithRange:orthography:"); - ffi.Pointer _objc_msgSend_961( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer orthography, - ) { - return __objc_msgSend_961( - obj, - sel, - range, - orthography, - ); - } - - late final __objc_msgSend_961Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_961 = __objc_msgSend_961Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); - - late final _sel_spellCheckingResultWithRange_1 = - _registerName1("spellCheckingResultWithRange:"); - ffi.Pointer _objc_msgSend_962( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ) { - return __objc_msgSend_962( - obj, - sel, - range, - ); - } - - late final __objc_msgSend_962Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); - late final __objc_msgSend_962 = __objc_msgSend_962Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); - - late final _sel_grammarCheckingResultWithRange_details_1 = - _registerName1("grammarCheckingResultWithRange:details:"); - ffi.Pointer _objc_msgSend_963( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer details, - ) { - return __objc_msgSend_963( - obj, - sel, - range, - details, - ); - } - - late final __objc_msgSend_963Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_963 = __objc_msgSend_963Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); - - late final _sel_dateCheckingResultWithRange_date_1 = - _registerName1("dateCheckingResultWithRange:date:"); - ffi.Pointer _objc_msgSend_964( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer date, - ) { - return __objc_msgSend_964( - obj, - sel, - range, - date, - ); - } - - late final __objc_msgSend_964Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_964 = __objc_msgSend_964Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); - - late final _sel_dateCheckingResultWithRange_date_timeZone_duration_1 = - _registerName1("dateCheckingResultWithRange:date:timeZone:duration:"); - ffi.Pointer _objc_msgSend_965( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer date, - ffi.Pointer timeZone, - double duration, - ) { - return __objc_msgSend_965( - obj, - sel, - range, - date, - timeZone, - duration, - ); - } - - late final __objc_msgSend_965Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - ffi.Pointer, - ffi.Double)>>('objc_msgSend'); - late final __objc_msgSend_965 = __objc_msgSend_965Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - ffi.Pointer, - double)>(); - - late final _sel_addressCheckingResultWithRange_components_1 = - _registerName1("addressCheckingResultWithRange:components:"); - ffi.Pointer _objc_msgSend_966( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer components, - ) { - return __objc_msgSend_966( - obj, - sel, - range, - components, - ); - } - - late final __objc_msgSend_966Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_966 = __objc_msgSend_966Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); - - late final _sel_linkCheckingResultWithRange_URL_1 = - _registerName1("linkCheckingResultWithRange:URL:"); - ffi.Pointer _objc_msgSend_967( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer url, - ) { - return __objc_msgSend_967( - obj, - sel, - range, - url, - ); - } - - late final __objc_msgSend_967Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_967 = __objc_msgSend_967Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); - - late final _sel_quoteCheckingResultWithRange_replacementString_1 = - _registerName1("quoteCheckingResultWithRange:replacementString:"); - ffi.Pointer _objc_msgSend_968( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer replacementString, - ) { - return __objc_msgSend_968( - obj, - sel, - range, - replacementString, - ); - } - - late final __objc_msgSend_968Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_968 = __objc_msgSend_968Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); - - late final _sel_dashCheckingResultWithRange_replacementString_1 = - _registerName1("dashCheckingResultWithRange:replacementString:"); - late final _sel_replacementCheckingResultWithRange_replacementString_1 = - _registerName1("replacementCheckingResultWithRange:replacementString:"); - late final _sel_correctionCheckingResultWithRange_replacementString_1 = - _registerName1("correctionCheckingResultWithRange:replacementString:"); - late final _sel_correctionCheckingResultWithRange_replacementString_alternativeStrings_1 = - _registerName1( - "correctionCheckingResultWithRange:replacementString:alternativeStrings:"); - ffi.Pointer _objc_msgSend_969( - ffi.Pointer obj, - ffi.Pointer sel, - _NSRange range, - ffi.Pointer replacementString, - ffi.Pointer alternativeStrings, - ) { - return __objc_msgSend_969( - obj, - sel, - range, - replacementString, - alternativeStrings, - ); - } - - late final __objc_msgSend_969Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_969 = __objc_msgSend_969Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_regularExpressionCheckingResultWithRanges_count_regularExpression_1 = - _registerName1( - "regularExpressionCheckingResultWithRanges:count:regularExpression:"); - ffi.Pointer _objc_msgSend_970( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_NSRange> ranges, - int count, - ffi.Pointer regularExpression, - ) { - return __objc_msgSend_970( - obj, - sel, - ranges, - count, - regularExpression, - ); - } - - late final __objc_msgSend_970Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_NSRange>, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_970 = __objc_msgSend_970Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_NSRange>, - int, - ffi.Pointer)>(); - - late final _sel_phoneNumberCheckingResultWithRange_phoneNumber_1 = - _registerName1("phoneNumberCheckingResultWithRange:phoneNumber:"); - late final _sel_transitInformationCheckingResultWithRange_components_1 = - _registerName1("transitInformationCheckingResultWithRange:components:"); - late final _class_NSURLCache1 = _getClass1("NSURLCache"); - late final _sel_sharedURLCache1 = _registerName1("sharedURLCache"); - ffi.Pointer _objc_msgSend_971( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_971( - obj, - sel, - ); - } - - late final __objc_msgSend_971Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_971 = __objc_msgSend_971Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setSharedURLCache_1 = _registerName1("setSharedURLCache:"); - void _objc_msgSend_972( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_972( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_972Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_972 = __objc_msgSend_972Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithMemoryCapacity_diskCapacity_diskPath_1 = - _registerName1("initWithMemoryCapacity:diskCapacity:diskPath:"); - instancetype _objc_msgSend_973( - ffi.Pointer obj, - ffi.Pointer sel, - int memoryCapacity, - int diskCapacity, - ffi.Pointer path, - ) { - return __objc_msgSend_973( - obj, - sel, - memoryCapacity, - diskCapacity, - path, - ); - } - - late final __objc_msgSend_973Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_973 = __objc_msgSend_973Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - int, ffi.Pointer)>(); - - late final _sel_initWithMemoryCapacity_diskCapacity_directoryURL_1 = - _registerName1("initWithMemoryCapacity:diskCapacity:directoryURL:"); - instancetype _objc_msgSend_974( - ffi.Pointer obj, - ffi.Pointer sel, - int memoryCapacity, - int diskCapacity, - ffi.Pointer directoryURL, - ) { - return __objc_msgSend_974( - obj, - sel, - memoryCapacity, - diskCapacity, - directoryURL, - ); - } - - late final __objc_msgSend_974Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_974 = __objc_msgSend_974Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - int, ffi.Pointer)>(); - - late final _class_NSCachedURLResponse1 = _getClass1("NSCachedURLResponse"); - late final _sel_initWithResponse_data_1 = - _registerName1("initWithResponse:data:"); - instancetype _objc_msgSend_975( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer response, - ffi.Pointer data, - ) { - return __objc_msgSend_975( - obj, - sel, - response, - data, - ); - } - - late final __objc_msgSend_975Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_975 = __objc_msgSend_975Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithResponse_data_userInfo_storagePolicy_1 = - _registerName1("initWithResponse:data:userInfo:storagePolicy:"); - instancetype _objc_msgSend_976( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer response, - ffi.Pointer data, - ffi.Pointer userInfo, - int storagePolicy, - ) { - return __objc_msgSend_976( - obj, - sel, - response, - data, - userInfo, - storagePolicy, - ); - } - - late final __objc_msgSend_976Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_976 = __objc_msgSend_976Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int)>(); - - ffi.Pointer _objc_msgSend_977( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_977( - obj, - sel, - ); - } - - late final __objc_msgSend_977Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_977 = __objc_msgSend_977Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_storagePolicy1 = _registerName1("storagePolicy"); - int _objc_msgSend_978( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_978( - obj, - sel, - ); - } - - late final __objc_msgSend_978Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_978 = __objc_msgSend_978Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_cachedResponseForRequest_1 = - _registerName1("cachedResponseForRequest:"); - ffi.Pointer _objc_msgSend_979( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_979( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_979Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_979 = __objc_msgSend_979Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_storeCachedResponse_forRequest_1 = - _registerName1("storeCachedResponse:forRequest:"); - void _objc_msgSend_980( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer cachedResponse, - ffi.Pointer request, - ) { - return __objc_msgSend_980( - obj, - sel, - cachedResponse, - request, - ); - } - - late final __objc_msgSend_980Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_980 = __objc_msgSend_980Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_removeCachedResponseForRequest_1 = - _registerName1("removeCachedResponseForRequest:"); - void _objc_msgSend_981( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_981( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_981Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_981 = __objc_msgSend_981Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeAllCachedResponses1 = - _registerName1("removeAllCachedResponses"); - late final _sel_removeCachedResponsesSinceDate_1 = - _registerName1("removeCachedResponsesSinceDate:"); - late final _sel_memoryCapacity1 = _registerName1("memoryCapacity"); - late final _sel_setMemoryCapacity_1 = _registerName1("setMemoryCapacity:"); - late final _sel_diskCapacity1 = _registerName1("diskCapacity"); - late final _sel_setDiskCapacity_1 = _registerName1("setDiskCapacity:"); - late final _sel_currentMemoryUsage1 = _registerName1("currentMemoryUsage"); - late final _sel_currentDiskUsage1 = _registerName1("currentDiskUsage"); - late final _class_NSURLSessionDataTask1 = _getClass1("NSURLSessionDataTask"); - late final _sel_storeCachedResponse_forDataTask_1 = - _registerName1("storeCachedResponse:forDataTask:"); - void _objc_msgSend_982( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer cachedResponse, - ffi.Pointer dataTask, - ) { - return __objc_msgSend_982( - obj, - sel, - cachedResponse, - dataTask, - ); - } - - late final __objc_msgSend_982Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_982 = __objc_msgSend_982Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_getCachedResponseForDataTask_completionHandler_1 = - _registerName1("getCachedResponseForDataTask:completionHandler:"); - void _objc_msgSend_983( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer dataTask, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_983( - obj, - sel, - dataTask, - completionHandler, - ); - } - - late final __objc_msgSend_983Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_983 = __objc_msgSend_983Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_removeCachedResponseForDataTask_1 = - _registerName1("removeCachedResponseForDataTask:"); - void _objc_msgSend_984( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer dataTask, - ) { - return __objc_msgSend_984( - obj, - sel, - dataTask, - ); - } - - late final __objc_msgSend_984Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_984 = __objc_msgSend_984Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSURLConnection1 = _getClass1("NSURLConnection"); - late final _sel_initWithRequest_delegate_startImmediately_1 = - _registerName1("initWithRequest:delegate:startImmediately:"); - instancetype _objc_msgSend_985( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer delegate, - bool startImmediately, - ) { - return __objc_msgSend_985( - obj, - sel, - request, - delegate, - startImmediately, - ); - } - - late final __objc_msgSend_985Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_985 = __objc_msgSend_985Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_initWithRequest_delegate_1 = - _registerName1("initWithRequest:delegate:"); - instancetype _objc_msgSend_986( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer delegate, - ) { - return __objc_msgSend_986( - obj, - sel, - request, - delegate, - ); - } - - late final __objc_msgSend_986Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_986 = __objc_msgSend_986Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_connectionWithRequest_delegate_1 = - _registerName1("connectionWithRequest:delegate:"); - ffi.Pointer _objc_msgSend_987( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer delegate, - ) { - return __objc_msgSend_987( - obj, - sel, - request, - delegate, - ); - } - - late final __objc_msgSend_987Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_987 = __objc_msgSend_987Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - ffi.Pointer _objc_msgSend_988( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_988( - obj, - sel, - ); - } - - late final __objc_msgSend_988Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_988 = __objc_msgSend_988Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_unscheduleFromRunLoop_forMode_1 = - _registerName1("unscheduleFromRunLoop:forMode:"); - late final _sel_setDelegateQueue_1 = _registerName1("setDelegateQueue:"); - void _objc_msgSend_989( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer queue, - ) { - return __objc_msgSend_989( - obj, - sel, - queue, - ); - } - - late final __objc_msgSend_989Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_989 = __objc_msgSend_989Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_canHandleRequest_1 = _registerName1("canHandleRequest:"); - bool _objc_msgSend_990( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_990( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_990Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_990 = __objc_msgSend_990Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_sendSynchronousRequest_returningResponse_error_1 = - _registerName1("sendSynchronousRequest:returningResponse:error:"); - ffi.Pointer _objc_msgSend_991( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer> response, - ffi.Pointer> error, - ) { - return __objc_msgSend_991( - obj, - sel, - request, - response, - error, - ); - } - - late final __objc_msgSend_991Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_991 = __objc_msgSend_991Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_sendAsynchronousRequest_queue_completionHandler_1 = - _registerName1("sendAsynchronousRequest:queue:completionHandler:"); - void _objc_msgSend_992( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer queue, - ffi.Pointer<_ObjCBlock> handler, - ) { - return __objc_msgSend_992( - obj, - sel, - request, - queue, - handler, - ); - } - - late final __objc_msgSend_992Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_992 = __objc_msgSend_992Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _class_NSURLCredential1 = _getClass1("NSURLCredential"); - late final _sel_persistence1 = _registerName1("persistence"); - int _objc_msgSend_993( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_993( - obj, - sel, - ); - } - - late final __objc_msgSend_993Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_993 = __objc_msgSend_993Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithUser_password_persistence_1 = - _registerName1("initWithUser:password:persistence:"); - instancetype _objc_msgSend_994( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer user, - ffi.Pointer password, - int persistence, - ) { - return __objc_msgSend_994( - obj, - sel, - user, - password, - persistence, - ); - } - - late final __objc_msgSend_994Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_994 = __objc_msgSend_994Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_credentialWithUser_password_persistence_1 = - _registerName1("credentialWithUser:password:persistence:"); - ffi.Pointer _objc_msgSend_995( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer user, - ffi.Pointer password, - int persistence, - ) { - return __objc_msgSend_995( - obj, - sel, - user, - password, - persistence, - ); - } - - late final __objc_msgSend_995Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_995 = __objc_msgSend_995Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _sel_hasPassword1 = _registerName1("hasPassword"); - late final _sel_initWithIdentity_certificates_persistence_1 = - _registerName1("initWithIdentity:certificates:persistence:"); - instancetype _objc_msgSend_996( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<__SecIdentity> identity, - ffi.Pointer certArray, - int persistence, - ) { - return __objc_msgSend_996( - obj, - sel, - identity, - certArray, - persistence, - ); - } - - late final __objc_msgSend_996Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__SecIdentity>, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_996 = __objc_msgSend_996Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<__SecIdentity>, ffi.Pointer, int)>(); - - late final _sel_credentialWithIdentity_certificates_persistence_1 = - _registerName1("credentialWithIdentity:certificates:persistence:"); - ffi.Pointer _objc_msgSend_997( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<__SecIdentity> identity, - ffi.Pointer certArray, - int persistence, - ) { - return __objc_msgSend_997( - obj, - sel, - identity, - certArray, - persistence, - ); - } - - late final __objc_msgSend_997Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__SecIdentity>, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_997 = __objc_msgSend_997Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__SecIdentity>, - ffi.Pointer, - int)>(); - - late final _sel_identity1 = _registerName1("identity"); - ffi.Pointer<__SecIdentity> _objc_msgSend_998( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_998( - obj, - sel, - ); - } - - late final __objc_msgSend_998Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<__SecIdentity> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_998 = __objc_msgSend_998Ptr.asFunction< - ffi.Pointer<__SecIdentity> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_certificates1 = _registerName1("certificates"); - late final _sel_initWithTrust_1 = _registerName1("initWithTrust:"); - instancetype _objc_msgSend_999( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<__SecTrust> trust, - ) { - return __objc_msgSend_999( - obj, - sel, - trust, - ); - } - - late final __objc_msgSend_999Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<__SecTrust>)>>('objc_msgSend'); - late final __objc_msgSend_999 = __objc_msgSend_999Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<__SecTrust>)>(); - - late final _sel_credentialForTrust_1 = _registerName1("credentialForTrust:"); - ffi.Pointer _objc_msgSend_1000( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<__SecTrust> trust, - ) { - return __objc_msgSend_1000( - obj, - sel, - trust, - ); - } - - late final __objc_msgSend_1000Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<__SecTrust>)>>('objc_msgSend'); - late final __objc_msgSend_1000 = __objc_msgSend_1000Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<__SecTrust>)>(); - - late final _class_NSURLProtectionSpace1 = _getClass1("NSURLProtectionSpace"); - late final _sel_initWithHost_port_protocol_realm_authenticationMethod_1 = - _registerName1("initWithHost:port:protocol:realm:authenticationMethod:"); - instancetype _objc_msgSend_1001( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer host, - int port, - ffi.Pointer protocol, - ffi.Pointer realm, - ffi.Pointer authenticationMethod, - ) { - return __objc_msgSend_1001( - obj, - sel, - host, - port, - protocol, - realm, - authenticationMethod, - ); - } - - late final __objc_msgSend_1001Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1001 = __objc_msgSend_1001Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithProxyHost_port_type_realm_authenticationMethod_1 = - _registerName1("initWithProxyHost:port:type:realm:authenticationMethod:"); - late final _sel_realm1 = _registerName1("realm"); - late final _sel_receivesCredentialSecurely1 = - _registerName1("receivesCredentialSecurely"); - late final _sel_isProxy1 = _registerName1("isProxy"); - late final _sel_proxyType1 = _registerName1("proxyType"); - late final _sel_protocol1 = _registerName1("protocol"); - late final _sel_authenticationMethod1 = - _registerName1("authenticationMethod"); - late final _sel_distinguishedNames1 = _registerName1("distinguishedNames"); - late final _sel_serverTrust1 = _registerName1("serverTrust"); - ffi.Pointer<__SecTrust> _objc_msgSend_1002( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1002( - obj, - sel, - ); - } - - late final __objc_msgSend_1002Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<__SecTrust> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1002 = __objc_msgSend_1002Ptr.asFunction< - ffi.Pointer<__SecTrust> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSURLCredentialStorage1 = - _getClass1("NSURLCredentialStorage"); - late final _sel_sharedCredentialStorage1 = - _registerName1("sharedCredentialStorage"); - ffi.Pointer _objc_msgSend_1003( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1003( - obj, - sel, - ); - } - - late final __objc_msgSend_1003Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1003 = __objc_msgSend_1003Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_credentialsForProtectionSpace_1 = - _registerName1("credentialsForProtectionSpace:"); - ffi.Pointer _objc_msgSend_1004( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer space, - ) { - return __objc_msgSend_1004( - obj, - sel, - space, - ); - } - - late final __objc_msgSend_1004Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1004 = __objc_msgSend_1004Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_allCredentials1 = _registerName1("allCredentials"); - late final _sel_setCredential_forProtectionSpace_1 = - _registerName1("setCredential:forProtectionSpace:"); - void _objc_msgSend_1005( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer credential, - ffi.Pointer space, - ) { - return __objc_msgSend_1005( - obj, - sel, - credential, - space, - ); - } - - late final __objc_msgSend_1005Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1005 = __objc_msgSend_1005Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_removeCredential_forProtectionSpace_1 = - _registerName1("removeCredential:forProtectionSpace:"); - late final _sel_removeCredential_forProtectionSpace_options_1 = - _registerName1("removeCredential:forProtectionSpace:options:"); - void _objc_msgSend_1006( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer credential, - ffi.Pointer space, - ffi.Pointer options, - ) { - return __objc_msgSend_1006( - obj, - sel, - credential, - space, - options, - ); - } - - late final __objc_msgSend_1006Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1006 = __objc_msgSend_1006Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_defaultCredentialForProtectionSpace_1 = - _registerName1("defaultCredentialForProtectionSpace:"); - ffi.Pointer _objc_msgSend_1007( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer space, - ) { - return __objc_msgSend_1007( - obj, - sel, - space, - ); - } - - late final __objc_msgSend_1007Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1007 = __objc_msgSend_1007Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDefaultCredential_forProtectionSpace_1 = - _registerName1("setDefaultCredential:forProtectionSpace:"); - late final _sel_getCredentialsForProtectionSpace_task_completionHandler_1 = - _registerName1( - "getCredentialsForProtectionSpace:task:completionHandler:"); - void _objc_msgSend_1008( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer protectionSpace, - ffi.Pointer task, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1008( - obj, - sel, - protectionSpace, - task, - completionHandler, - ); - } - - late final __objc_msgSend_1008Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1008 = __objc_msgSend_1008Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_setCredential_forProtectionSpace_task_1 = - _registerName1("setCredential:forProtectionSpace:task:"); - void _objc_msgSend_1009( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer credential, - ffi.Pointer protectionSpace, - ffi.Pointer task, - ) { - return __objc_msgSend_1009( - obj, - sel, - credential, - protectionSpace, - task, - ); - } - - late final __objc_msgSend_1009Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1009 = __objc_msgSend_1009Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeCredential_forProtectionSpace_options_task_1 = - _registerName1("removeCredential:forProtectionSpace:options:task:"); - void _objc_msgSend_1010( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer credential, - ffi.Pointer protectionSpace, - ffi.Pointer options, - ffi.Pointer task, - ) { - return __objc_msgSend_1010( - obj, - sel, - credential, - protectionSpace, - options, - task, - ); - } - - late final __objc_msgSend_1010Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1010 = __objc_msgSend_1010Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_getDefaultCredentialForProtectionSpace_task_completionHandler_1 = - _registerName1( - "getDefaultCredentialForProtectionSpace:task:completionHandler:"); - void _objc_msgSend_1011( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer space, - ffi.Pointer task, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1011( - obj, - sel, - space, - task, - completionHandler, - ); - } - - late final __objc_msgSend_1011Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1011 = __objc_msgSend_1011Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_setDefaultCredential_forProtectionSpace_task_1 = - _registerName1("setDefaultCredential:forProtectionSpace:task:"); - late final _class_NSURLProtocol1 = _getClass1("NSURLProtocol"); - late final _sel_initWithRequest_cachedResponse_client_1 = - _registerName1("initWithRequest:cachedResponse:client:"); - instancetype _objc_msgSend_1012( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer cachedResponse, - ffi.Pointer client, - ) { - return __objc_msgSend_1012( - obj, - sel, - request, - cachedResponse, - client, - ); - } - - late final __objc_msgSend_1012Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1012 = __objc_msgSend_1012Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_client1 = _registerName1("client"); - late final _sel_request1 = _registerName1("request"); - late final _sel_cachedResponse1 = _registerName1("cachedResponse"); - ffi.Pointer _objc_msgSend_1013( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1013( - obj, - sel, - ); - } - - late final __objc_msgSend_1013Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1013 = __objc_msgSend_1013Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_canInitWithRequest_1 = _registerName1("canInitWithRequest:"); - late final _sel_canonicalRequestForRequest_1 = - _registerName1("canonicalRequestForRequest:"); - ffi.Pointer _objc_msgSend_1014( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_1014( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_1014Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1014 = __objc_msgSend_1014Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_requestIsCacheEquivalent_toRequest_1 = - _registerName1("requestIsCacheEquivalent:toRequest:"); - bool _objc_msgSend_1015( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer a, - ffi.Pointer b, - ) { - return __objc_msgSend_1015( - obj, - sel, - a, - b, - ); - } - - late final __objc_msgSend_1015Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1015 = __objc_msgSend_1015Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_startLoading1 = _registerName1("startLoading"); - late final _sel_stopLoading1 = _registerName1("stopLoading"); - late final _sel_propertyForKey_inRequest_1 = - _registerName1("propertyForKey:inRequest:"); - ffi.Pointer _objc_msgSend_1016( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer request, - ) { - return __objc_msgSend_1016( - obj, - sel, - key, - request, - ); - } - - late final __objc_msgSend_1016Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1016 = __objc_msgSend_1016Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSMutableURLRequest1 = _getClass1("NSMutableURLRequest"); - late final _sel_setURL_1 = _registerName1("setURL:"); - late final _sel_setCachePolicy_1 = _registerName1("setCachePolicy:"); - void _objc_msgSend_1017( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1017( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1017Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1017 = __objc_msgSend_1017Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_setTimeoutInterval_1 = _registerName1("setTimeoutInterval:"); - late final _sel_setMainDocumentURL_1 = _registerName1("setMainDocumentURL:"); - late final _sel_setNetworkServiceType_1 = - _registerName1("setNetworkServiceType:"); - void _objc_msgSend_1018( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1018( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1018Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1018 = __objc_msgSend_1018Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_setAllowsCellularAccess_1 = - _registerName1("setAllowsCellularAccess:"); - late final _sel_setAllowsExpensiveNetworkAccess_1 = - _registerName1("setAllowsExpensiveNetworkAccess:"); - late final _sel_setAllowsConstrainedNetworkAccess_1 = - _registerName1("setAllowsConstrainedNetworkAccess:"); - late final _sel_setAssumesHTTP3Capable_1 = - _registerName1("setAssumesHTTP3Capable:"); - late final _sel_setAttribution_1 = _registerName1("setAttribution:"); - void _objc_msgSend_1019( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1019( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1019Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1019 = __objc_msgSend_1019Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_setRequiresDNSSECValidation_1 = - _registerName1("setRequiresDNSSECValidation:"); - late final _sel_setHTTPMethod_1 = _registerName1("setHTTPMethod:"); - late final _sel_setAllHTTPHeaderFields_1 = - _registerName1("setAllHTTPHeaderFields:"); - late final _sel_setValue_forHTTPHeaderField_1 = - _registerName1("setValue:forHTTPHeaderField:"); - void _objc_msgSend_1020( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer field, - ) { - return __objc_msgSend_1020( - obj, - sel, - value, - field, - ); - } - - late final __objc_msgSend_1020Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1020 = __objc_msgSend_1020Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addValue_forHTTPHeaderField_1 = - _registerName1("addValue:forHTTPHeaderField:"); - late final _sel_setHTTPBody_1 = _registerName1("setHTTPBody:"); - void _objc_msgSend_1021( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1021( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1021Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1021 = __objc_msgSend_1021Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setHTTPBodyStream_1 = _registerName1("setHTTPBodyStream:"); - void _objc_msgSend_1022( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1022( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1022Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1022 = __objc_msgSend_1022Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setHTTPShouldHandleCookies_1 = - _registerName1("setHTTPShouldHandleCookies:"); - late final _sel_setHTTPShouldUsePipelining_1 = - _registerName1("setHTTPShouldUsePipelining:"); - late final _sel_setProperty_forKey_inRequest_1 = - _registerName1("setProperty:forKey:inRequest:"); - void _objc_msgSend_1023( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer key, - ffi.Pointer request, - ) { - return __objc_msgSend_1023( - obj, - sel, - value, - key, - request, - ); - } - - late final __objc_msgSend_1023Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1023 = __objc_msgSend_1023Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removePropertyForKey_inRequest_1 = - _registerName1("removePropertyForKey:inRequest:"); - void _objc_msgSend_1024( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer request, - ) { - return __objc_msgSend_1024( - obj, - sel, - key, - request, - ); - } - - late final __objc_msgSend_1024Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1024 = __objc_msgSend_1024Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_registerClass_1 = _registerName1("registerClass:"); - late final _sel_unregisterClass_1 = _registerName1("unregisterClass:"); - late final _sel_canInitWithTask_1 = _registerName1("canInitWithTask:"); - bool _objc_msgSend_1025( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer task, - ) { - return __objc_msgSend_1025( - obj, - sel, - task, - ); - } - - late final __objc_msgSend_1025Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1025 = __objc_msgSend_1025Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_initWithTask_cachedResponse_client_1 = - _registerName1("initWithTask:cachedResponse:client:"); - instancetype _objc_msgSend_1026( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer task, - ffi.Pointer cachedResponse, - ffi.Pointer client, - ) { - return __objc_msgSend_1026( - obj, - sel, - task, - cachedResponse, - client, - ); - } - - late final __objc_msgSend_1026Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1026 = __objc_msgSend_1026Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_task1 = _registerName1("task"); - ffi.Pointer _objc_msgSend_1027( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1027( - obj, - sel, - ); - } - - late final __objc_msgSend_1027Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1027 = __objc_msgSend_1027Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSXMLParser1 = _getClass1("NSXMLParser"); - late final _sel_initWithStream_1 = _registerName1("initWithStream:"); - instancetype _objc_msgSend_1028( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer stream, - ) { - return __objc_msgSend_1028( - obj, - sel, - stream, - ); - } - - late final __objc_msgSend_1028Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1028 = __objc_msgSend_1028Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_shouldProcessNamespaces1 = - _registerName1("shouldProcessNamespaces"); - late final _sel_setShouldProcessNamespaces_1 = - _registerName1("setShouldProcessNamespaces:"); - late final _sel_shouldReportNamespacePrefixes1 = - _registerName1("shouldReportNamespacePrefixes"); - late final _sel_setShouldReportNamespacePrefixes_1 = - _registerName1("setShouldReportNamespacePrefixes:"); - late final _sel_externalEntityResolvingPolicy1 = - _registerName1("externalEntityResolvingPolicy"); - int _objc_msgSend_1029( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1029( - obj, - sel, - ); - } - - late final __objc_msgSend_1029Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1029 = __objc_msgSend_1029Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setExternalEntityResolvingPolicy_1 = - _registerName1("setExternalEntityResolvingPolicy:"); - void _objc_msgSend_1030( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1030( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1030Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1030 = __objc_msgSend_1030Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_allowedExternalEntityURLs1 = - _registerName1("allowedExternalEntityURLs"); - late final _sel_setAllowedExternalEntityURLs_1 = - _registerName1("setAllowedExternalEntityURLs:"); - void _objc_msgSend_1031( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1031( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1031Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1031 = __objc_msgSend_1031Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_parse1 = _registerName1("parse"); - late final _sel_abortParsing1 = _registerName1("abortParsing"); - late final _sel_parserError1 = _registerName1("parserError"); - late final _sel_shouldResolveExternalEntities1 = - _registerName1("shouldResolveExternalEntities"); - late final _sel_setShouldResolveExternalEntities_1 = - _registerName1("setShouldResolveExternalEntities:"); - late final _sel_publicID1 = _registerName1("publicID"); - late final _sel_systemID1 = _registerName1("systemID"); - late final _sel_lineNumber1 = _registerName1("lineNumber"); - late final _sel_columnNumber1 = _registerName1("columnNumber"); - late final _class_NSFileWrapper1 = _getClass1("NSFileWrapper"); - late final _sel_initWithURL_options_error_1 = - _registerName1("initWithURL:options:error:"); - instancetype _objc_msgSend_1032( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int options, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1032( - obj, - sel, - url, - options, - outError, - ); - } - - late final __objc_msgSend_1032Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1032 = __objc_msgSend_1032Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_initDirectoryWithFileWrappers_1 = - _registerName1("initDirectoryWithFileWrappers:"); - late final _sel_initRegularFileWithContents_1 = - _registerName1("initRegularFileWithContents:"); - late final _sel_initSymbolicLinkWithDestinationURL_1 = - _registerName1("initSymbolicLinkWithDestinationURL:"); - late final _sel_initWithSerializedRepresentation_1 = - _registerName1("initWithSerializedRepresentation:"); - late final _sel_isDirectory1 = _registerName1("isDirectory"); - late final _sel_isRegularFile1 = _registerName1("isRegularFile"); - late final _sel_isSymbolicLink1 = _registerName1("isSymbolicLink"); - late final _sel_preferredFilename1 = _registerName1("preferredFilename"); - late final _sel_setPreferredFilename_1 = - _registerName1("setPreferredFilename:"); - late final _sel_filename1 = _registerName1("filename"); - late final _sel_setFilename_1 = _registerName1("setFilename:"); - late final _sel_fileAttributes1 = _registerName1("fileAttributes"); - late final _sel_setFileAttributes_1 = _registerName1("setFileAttributes:"); - late final _sel_matchesContentsOfURL_1 = - _registerName1("matchesContentsOfURL:"); - late final _sel_readFromURL_options_error_1 = - _registerName1("readFromURL:options:error:"); - bool _objc_msgSend_1033( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int options, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1033( - obj, - sel, - url, - options, - outError, - ); - } - - late final __objc_msgSend_1033Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1033 = __objc_msgSend_1033Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_writeToURL_options_originalContentsURL_error_1 = - _registerName1("writeToURL:options:originalContentsURL:error:"); - bool _objc_msgSend_1034( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int options, - ffi.Pointer originalContentsURL, - ffi.Pointer> outError, - ) { - return __objc_msgSend_1034( - obj, - sel, - url, - options, - originalContentsURL, - outError, - ); - } - - late final __objc_msgSend_1034Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1034 = __objc_msgSend_1034Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_serializedRepresentation1 = - _registerName1("serializedRepresentation"); - late final _sel_addFileWrapper_1 = _registerName1("addFileWrapper:"); - ffi.Pointer _objc_msgSend_1035( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer child, - ) { - return __objc_msgSend_1035( - obj, - sel, - child, - ); - } - - late final __objc_msgSend_1035Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1035 = __objc_msgSend_1035Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_addRegularFileWithContents_preferredFilename_1 = - _registerName1("addRegularFileWithContents:preferredFilename:"); - ffi.Pointer _objc_msgSend_1036( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - ffi.Pointer fileName, - ) { - return __objc_msgSend_1036( - obj, - sel, - data, - fileName, - ); - } - - late final __objc_msgSend_1036Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1036 = __objc_msgSend_1036Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_removeFileWrapper_1 = _registerName1("removeFileWrapper:"); - void _objc_msgSend_1037( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer child, - ) { - return __objc_msgSend_1037( - obj, - sel, - child, - ); - } - - late final __objc_msgSend_1037Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1037 = __objc_msgSend_1037Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_fileWrappers1 = _registerName1("fileWrappers"); - late final _sel_keyForFileWrapper_1 = _registerName1("keyForFileWrapper:"); - ffi.Pointer _objc_msgSend_1038( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer child, - ) { - return __objc_msgSend_1038( - obj, - sel, - child, - ); - } - - late final __objc_msgSend_1038Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1038 = __objc_msgSend_1038Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_regularFileContents1 = _registerName1("regularFileContents"); - late final _sel_symbolicLinkDestinationURL1 = - _registerName1("symbolicLinkDestinationURL"); - late final _sel_initSymbolicLinkWithDestination_1 = - _registerName1("initSymbolicLinkWithDestination:"); - late final _sel_needsToBeUpdatedFromPath_1 = - _registerName1("needsToBeUpdatedFromPath:"); - late final _sel_updateFromPath_1 = _registerName1("updateFromPath:"); - late final _sel_writeToFile_atomically_updateFilenames_1 = - _registerName1("writeToFile:atomically:updateFilenames:"); - bool _objc_msgSend_1039( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - bool atomicFlag, - bool updateFilenamesFlag, - ) { - return __objc_msgSend_1039( - obj, - sel, - path, - atomicFlag, - updateFilenamesFlag, - ); - } - - late final __objc_msgSend_1039Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_1039 = __objc_msgSend_1039Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool, bool)>(); - - late final _sel_addFileWithPath_1 = _registerName1("addFileWithPath:"); - late final _sel_addSymbolicLinkWithDestination_preferredFilename_1 = - _registerName1("addSymbolicLinkWithDestination:preferredFilename:"); - late final _sel_symbolicLinkDestination1 = - _registerName1("symbolicLinkDestination"); - late final _class_NSURLSession1 = _getClass1("NSURLSession"); - late final _sel_sharedSession1 = _registerName1("sharedSession"); - ffi.Pointer _objc_msgSend_1040( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1040( - obj, - sel, - ); - } - - late final __objc_msgSend_1040Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1040 = __objc_msgSend_1040Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSURLSessionConfiguration1 = - _getClass1("NSURLSessionConfiguration"); - late final _sel_defaultSessionConfiguration1 = - _registerName1("defaultSessionConfiguration"); - ffi.Pointer _objc_msgSend_1041( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1041( - obj, - sel, - ); - } - - late final __objc_msgSend_1041Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1041 = __objc_msgSend_1041Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_ephemeralSessionConfiguration1 = - _registerName1("ephemeralSessionConfiguration"); - late final _sel_backgroundSessionConfigurationWithIdentifier_1 = - _registerName1("backgroundSessionConfigurationWithIdentifier:"); - ffi.Pointer _objc_msgSend_1042( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer identifier, - ) { - return __objc_msgSend_1042( - obj, - sel, - identifier, - ); - } - - late final __objc_msgSend_1042Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1042 = __objc_msgSend_1042Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_identifier1 = _registerName1("identifier"); - late final _sel_requestCachePolicy1 = _registerName1("requestCachePolicy"); - late final _sel_setRequestCachePolicy_1 = - _registerName1("setRequestCachePolicy:"); - late final _sel_timeoutIntervalForRequest1 = - _registerName1("timeoutIntervalForRequest"); - late final _sel_setTimeoutIntervalForRequest_1 = - _registerName1("setTimeoutIntervalForRequest:"); - late final _sel_timeoutIntervalForResource1 = - _registerName1("timeoutIntervalForResource"); - late final _sel_setTimeoutIntervalForResource_1 = - _registerName1("setTimeoutIntervalForResource:"); - late final _sel_waitsForConnectivity1 = - _registerName1("waitsForConnectivity"); - late final _sel_setWaitsForConnectivity_1 = - _registerName1("setWaitsForConnectivity:"); - late final _sel_isDiscretionary1 = _registerName1("isDiscretionary"); - late final _sel_setDiscretionary_1 = _registerName1("setDiscretionary:"); - late final _sel_sharedContainerIdentifier1 = - _registerName1("sharedContainerIdentifier"); - late final _sel_setSharedContainerIdentifier_1 = - _registerName1("setSharedContainerIdentifier:"); - late final _sel_sessionSendsLaunchEvents1 = - _registerName1("sessionSendsLaunchEvents"); - late final _sel_setSessionSendsLaunchEvents_1 = - _registerName1("setSessionSendsLaunchEvents:"); - late final _sel_connectionProxyDictionary1 = - _registerName1("connectionProxyDictionary"); - late final _sel_setConnectionProxyDictionary_1 = - _registerName1("setConnectionProxyDictionary:"); - late final _sel_TLSMinimumSupportedProtocol1 = - _registerName1("TLSMinimumSupportedProtocol"); - int _objc_msgSend_1043( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1043( - obj, - sel, - ); - } - - late final __objc_msgSend_1043Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1043 = __objc_msgSend_1043Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setTLSMinimumSupportedProtocol_1 = - _registerName1("setTLSMinimumSupportedProtocol:"); - void _objc_msgSend_1044( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1044( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1044Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1044 = __objc_msgSend_1044Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_TLSMaximumSupportedProtocol1 = - _registerName1("TLSMaximumSupportedProtocol"); - late final _sel_setTLSMaximumSupportedProtocol_1 = - _registerName1("setTLSMaximumSupportedProtocol:"); - late final _sel_TLSMinimumSupportedProtocolVersion1 = - _registerName1("TLSMinimumSupportedProtocolVersion"); - int _objc_msgSend_1045( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1045( - obj, - sel, - ); - } - - late final __objc_msgSend_1045Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1045 = __objc_msgSend_1045Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setTLSMinimumSupportedProtocolVersion_1 = - _registerName1("setTLSMinimumSupportedProtocolVersion:"); - void _objc_msgSend_1046( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1046( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1046Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1046 = __objc_msgSend_1046Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_TLSMaximumSupportedProtocolVersion1 = - _registerName1("TLSMaximumSupportedProtocolVersion"); - late final _sel_setTLSMaximumSupportedProtocolVersion_1 = - _registerName1("setTLSMaximumSupportedProtocolVersion:"); - late final _sel_HTTPShouldSetCookies1 = - _registerName1("HTTPShouldSetCookies"); - late final _sel_setHTTPShouldSetCookies_1 = - _registerName1("setHTTPShouldSetCookies:"); - late final _sel_HTTPCookieAcceptPolicy1 = - _registerName1("HTTPCookieAcceptPolicy"); - late final _sel_setHTTPCookieAcceptPolicy_1 = - _registerName1("setHTTPCookieAcceptPolicy:"); - late final _sel_HTTPAdditionalHeaders1 = - _registerName1("HTTPAdditionalHeaders"); - late final _sel_setHTTPAdditionalHeaders_1 = - _registerName1("setHTTPAdditionalHeaders:"); - late final _sel_HTTPMaximumConnectionsPerHost1 = - _registerName1("HTTPMaximumConnectionsPerHost"); - late final _sel_setHTTPMaximumConnectionsPerHost_1 = - _registerName1("setHTTPMaximumConnectionsPerHost:"); - late final _sel_HTTPCookieStorage1 = _registerName1("HTTPCookieStorage"); - ffi.Pointer _objc_msgSend_1047( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1047( - obj, - sel, - ); - } - - late final __objc_msgSend_1047Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1047 = __objc_msgSend_1047Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setHTTPCookieStorage_1 = - _registerName1("setHTTPCookieStorage:"); - void _objc_msgSend_1048( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1048( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1048Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1048 = __objc_msgSend_1048Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLCredentialStorage1 = - _registerName1("URLCredentialStorage"); - ffi.Pointer _objc_msgSend_1049( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1049( - obj, - sel, - ); - } - - late final __objc_msgSend_1049Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1049 = __objc_msgSend_1049Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setURLCredentialStorage_1 = - _registerName1("setURLCredentialStorage:"); - void _objc_msgSend_1050( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1050( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1050Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1050 = __objc_msgSend_1050Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_URLCache1 = _registerName1("URLCache"); - ffi.Pointer _objc_msgSend_1051( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1051( - obj, - sel, - ); - } - - late final __objc_msgSend_1051Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1051 = __objc_msgSend_1051Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setURLCache_1 = _registerName1("setURLCache:"); - void _objc_msgSend_1052( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1052( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1052Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1052 = __objc_msgSend_1052Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_shouldUseExtendedBackgroundIdleMode1 = - _registerName1("shouldUseExtendedBackgroundIdleMode"); - late final _sel_setShouldUseExtendedBackgroundIdleMode_1 = - _registerName1("setShouldUseExtendedBackgroundIdleMode:"); - late final _sel_protocolClasses1 = _registerName1("protocolClasses"); - late final _sel_setProtocolClasses_1 = _registerName1("setProtocolClasses:"); - void _objc_msgSend_1053( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1053( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1053Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1053 = __objc_msgSend_1053Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_multipathServiceType1 = - _registerName1("multipathServiceType"); - int _objc_msgSend_1054( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1054( - obj, - sel, - ); - } - - late final __objc_msgSend_1054Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1054 = __objc_msgSend_1054Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setMultipathServiceType_1 = - _registerName1("setMultipathServiceType:"); - void _objc_msgSend_1055( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1055( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1055Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1055 = __objc_msgSend_1055Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_backgroundSessionConfiguration_1 = - _registerName1("backgroundSessionConfiguration:"); - late final _sel_sessionWithConfiguration_1 = - _registerName1("sessionWithConfiguration:"); - ffi.Pointer _objc_msgSend_1056( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer configuration, - ) { - return __objc_msgSend_1056( - obj, - sel, - configuration, - ); - } - - late final __objc_msgSend_1056Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1056 = __objc_msgSend_1056Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_sessionWithConfiguration_delegate_delegateQueue_1 = - _registerName1("sessionWithConfiguration:delegate:delegateQueue:"); - ffi.Pointer _objc_msgSend_1057( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer configuration, - ffi.Pointer delegate, - ffi.Pointer queue, - ) { - return __objc_msgSend_1057( - obj, - sel, - configuration, - delegate, - queue, - ); - } - - late final __objc_msgSend_1057Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1057 = __objc_msgSend_1057Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_delegateQueue1 = _registerName1("delegateQueue"); - late final _sel_configuration1 = _registerName1("configuration"); - late final _sel_sessionDescription1 = _registerName1("sessionDescription"); - late final _sel_setSessionDescription_1 = - _registerName1("setSessionDescription:"); - late final _sel_finishTasksAndInvalidate1 = - _registerName1("finishTasksAndInvalidate"); - late final _sel_invalidateAndCancel1 = _registerName1("invalidateAndCancel"); - late final _sel_resetWithCompletionHandler_1 = - _registerName1("resetWithCompletionHandler:"); - late final _sel_flushWithCompletionHandler_1 = - _registerName1("flushWithCompletionHandler:"); - late final _sel_getTasksWithCompletionHandler_1 = - _registerName1("getTasksWithCompletionHandler:"); - void _objc_msgSend_1058( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1058( - obj, - sel, - completionHandler, - ); - } - - late final __objc_msgSend_1058Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1058 = __objc_msgSend_1058Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_getAllTasksWithCompletionHandler_1 = - _registerName1("getAllTasksWithCompletionHandler:"); - void _objc_msgSend_1059( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1059( - obj, - sel, - completionHandler, - ); - } - - late final __objc_msgSend_1059Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1059 = __objc_msgSend_1059Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_dataTaskWithRequest_1 = - _registerName1("dataTaskWithRequest:"); - ffi.Pointer _objc_msgSend_1060( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_1060( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_1060Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1060 = __objc_msgSend_1060Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dataTaskWithURL_1 = _registerName1("dataTaskWithURL:"); - ffi.Pointer _objc_msgSend_1061( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_1061( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_1061Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1061 = __objc_msgSend_1061Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSURLSessionUploadTask1 = - _getClass1("NSURLSessionUploadTask"); - late final _sel_cancelByProducingResumeData_1 = - _registerName1("cancelByProducingResumeData:"); - void _objc_msgSend_1062( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1062( - obj, - sel, - completionHandler, - ); - } - - late final __objc_msgSend_1062Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1062 = __objc_msgSend_1062Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_uploadTaskWithRequest_fromFile_1 = - _registerName1("uploadTaskWithRequest:fromFile:"); - ffi.Pointer _objc_msgSend_1063( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer fileURL, - ) { - return __objc_msgSend_1063( - obj, - sel, - request, - fileURL, - ); - } - - late final __objc_msgSend_1063Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1063 = __objc_msgSend_1063Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_uploadTaskWithRequest_fromData_1 = - _registerName1("uploadTaskWithRequest:fromData:"); - ffi.Pointer _objc_msgSend_1064( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer bodyData, - ) { - return __objc_msgSend_1064( - obj, - sel, - request, - bodyData, - ); - } - - late final __objc_msgSend_1064Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1064 = __objc_msgSend_1064Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_uploadTaskWithResumeData_1 = - _registerName1("uploadTaskWithResumeData:"); - ffi.Pointer _objc_msgSend_1065( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer resumeData, - ) { - return __objc_msgSend_1065( - obj, - sel, - resumeData, - ); - } - - late final __objc_msgSend_1065Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1065 = __objc_msgSend_1065Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_uploadTaskWithStreamedRequest_1 = - _registerName1("uploadTaskWithStreamedRequest:"); - ffi.Pointer _objc_msgSend_1066( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_1066( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_1066Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1066 = __objc_msgSend_1066Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSURLSessionDownloadTask1 = - _getClass1("NSURLSessionDownloadTask"); - late final _sel_downloadTaskWithRequest_1 = - _registerName1("downloadTaskWithRequest:"); - ffi.Pointer _objc_msgSend_1067( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_1067( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_1067Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1067 = __objc_msgSend_1067Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_downloadTaskWithURL_1 = - _registerName1("downloadTaskWithURL:"); - ffi.Pointer _objc_msgSend_1068( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_1068( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_1068Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1068 = __objc_msgSend_1068Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_downloadTaskWithResumeData_1 = - _registerName1("downloadTaskWithResumeData:"); - ffi.Pointer _objc_msgSend_1069( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer resumeData, - ) { - return __objc_msgSend_1069( - obj, - sel, - resumeData, - ); - } - - late final __objc_msgSend_1069Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1069 = __objc_msgSend_1069Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSURLSessionStreamTask1 = - _getClass1("NSURLSessionStreamTask"); - late final _sel_readDataOfMinLength_maxLength_timeout_completionHandler_1 = - _registerName1( - "readDataOfMinLength:maxLength:timeout:completionHandler:"); - void _objc_msgSend_1070( - ffi.Pointer obj, - ffi.Pointer sel, - int minBytes, - int maxBytes, - double timeout, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1070( - obj, - sel, - minBytes, - maxBytes, - timeout, - completionHandler, - ); - } - - late final __objc_msgSend_1070Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.Double, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1070 = __objc_msgSend_1070Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, int, - double, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_writeData_timeout_completionHandler_1 = - _registerName1("writeData:timeout:completionHandler:"); - void _objc_msgSend_1071( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - double timeout, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1071( - obj, - sel, - data, - timeout, - completionHandler, - ); - } - - late final __objc_msgSend_1071Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Double, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1071 = __objc_msgSend_1071Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, double, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_captureStreams1 = _registerName1("captureStreams"); - late final _sel_closeWrite1 = _registerName1("closeWrite"); - late final _sel_closeRead1 = _registerName1("closeRead"); - late final _sel_startSecureConnection1 = - _registerName1("startSecureConnection"); - late final _sel_stopSecureConnection1 = - _registerName1("stopSecureConnection"); - late final _sel_streamTaskWithHostName_port_1 = - _registerName1("streamTaskWithHostName:port:"); - ffi.Pointer _objc_msgSend_1072( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer hostname, - int port, - ) { - return __objc_msgSend_1072( - obj, - sel, - hostname, - port, - ); - } - - late final __objc_msgSend_1072Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long)>>('objc_msgSend'); - late final __objc_msgSend_1072 = __objc_msgSend_1072Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); - - late final _class_NSNetService1 = _getClass1("NSNetService"); - late final _sel_initWithDomain_type_name_port_1 = - _registerName1("initWithDomain:type:name:port:"); - instancetype _objc_msgSend_1073( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer domain, - ffi.Pointer type, - ffi.Pointer name, - int port, - ) { - return __objc_msgSend_1073( - obj, - sel, - domain, - type, - name, - port, - ); - } - - late final __objc_msgSend_1073Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int)>>('objc_msgSend'); - late final __objc_msgSend_1073 = __objc_msgSend_1073Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int)>(); - - late final _sel_initWithDomain_type_name_1 = - _registerName1("initWithDomain:type:name:"); - instancetype _objc_msgSend_1074( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer domain, - ffi.Pointer type, - ffi.Pointer name, - ) { - return __objc_msgSend_1074( - obj, - sel, - domain, - type, - name, - ); - } - - late final __objc_msgSend_1074Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1074 = __objc_msgSend_1074Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_includesPeerToPeer1 = _registerName1("includesPeerToPeer"); - late final _sel_setIncludesPeerToPeer_1 = - _registerName1("setIncludesPeerToPeer:"); - late final _sel_type1 = _registerName1("type"); - late final _sel_publishWithOptions_1 = _registerName1("publishWithOptions:"); - void _objc_msgSend_1075( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_1075( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_1075Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1075 = __objc_msgSend_1075Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_resolve1 = _registerName1("resolve"); - late final _sel_stop1 = _registerName1("stop"); - late final _sel_dictionaryFromTXTRecordData_1 = - _registerName1("dictionaryFromTXTRecordData:"); - ffi.Pointer _objc_msgSend_1076( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer txtData, - ) { - return __objc_msgSend_1076( - obj, - sel, - txtData, - ); - } - - late final __objc_msgSend_1076Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1076 = __objc_msgSend_1076Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dataFromTXTRecordDictionary_1 = - _registerName1("dataFromTXTRecordDictionary:"); - ffi.Pointer _objc_msgSend_1077( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer txtDictionary, - ) { - return __objc_msgSend_1077( - obj, - sel, - txtDictionary, - ); - } - - late final __objc_msgSend_1077Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1077 = __objc_msgSend_1077Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_resolveWithTimeout_1 = _registerName1("resolveWithTimeout:"); - late final _sel_getInputStream_outputStream_1 = - _registerName1("getInputStream:outputStream:"); - bool _objc_msgSend_1078( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream, - ) { - return __objc_msgSend_1078( - obj, - sel, - inputStream, - outputStream, - ); - } - - late final __objc_msgSend_1078Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1078 = __objc_msgSend_1078Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>(); - - late final _sel_setTXTRecordData_1 = _registerName1("setTXTRecordData:"); - bool _objc_msgSend_1079( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer recordData, - ) { - return __objc_msgSend_1079( - obj, - sel, - recordData, - ); - } - - late final __objc_msgSend_1079Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1079 = __objc_msgSend_1079Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_TXTRecordData1 = _registerName1("TXTRecordData"); - late final _sel_startMonitoring1 = _registerName1("startMonitoring"); - late final _sel_stopMonitoring1 = _registerName1("stopMonitoring"); - late final _sel_streamTaskWithNetService_1 = - _registerName1("streamTaskWithNetService:"); - ffi.Pointer _objc_msgSend_1080( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer service, - ) { - return __objc_msgSend_1080( - obj, - sel, - service, - ); - } - - late final __objc_msgSend_1080Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1080 = __objc_msgSend_1080Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _class_NSURLSessionWebSocketTask1 = - _getClass1("NSURLSessionWebSocketTask"); - late final _class_NSURLSessionWebSocketMessage1 = - _getClass1("NSURLSessionWebSocketMessage"); - int _objc_msgSend_1081( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1081( - obj, - sel, - ); - } - - late final __objc_msgSend_1081Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1081 = __objc_msgSend_1081Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_sendMessage_completionHandler_1 = - _registerName1("sendMessage:completionHandler:"); - void _objc_msgSend_1082( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer message, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1082( - obj, - sel, - message, - completionHandler, - ); - } - - late final __objc_msgSend_1082Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1082 = __objc_msgSend_1082Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_receiveMessageWithCompletionHandler_1 = - _registerName1("receiveMessageWithCompletionHandler:"); - void _objc_msgSend_1083( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1083( - obj, - sel, - completionHandler, - ); - } - - late final __objc_msgSend_1083Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1083 = __objc_msgSend_1083Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_sendPingWithPongReceiveHandler_1 = - _registerName1("sendPingWithPongReceiveHandler:"); - void _objc_msgSend_1084( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> pongReceiveHandler, - ) { - return __objc_msgSend_1084( - obj, - sel, - pongReceiveHandler, - ); - } - - late final __objc_msgSend_1084Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1084 = __objc_msgSend_1084Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_cancelWithCloseCode_reason_1 = - _registerName1("cancelWithCloseCode:reason:"); - void _objc_msgSend_1085( - ffi.Pointer obj, - ffi.Pointer sel, - int closeCode, - ffi.Pointer reason, - ) { - return __objc_msgSend_1085( - obj, - sel, - closeCode, - reason, - ); - } - - late final __objc_msgSend_1085Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1085 = __objc_msgSend_1085Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _sel_maximumMessageSize1 = _registerName1("maximumMessageSize"); - late final _sel_setMaximumMessageSize_1 = - _registerName1("setMaximumMessageSize:"); - late final _sel_closeCode1 = _registerName1("closeCode"); - int _objc_msgSend_1086( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1086( - obj, - sel, - ); - } - - late final __objc_msgSend_1086Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1086 = __objc_msgSend_1086Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_closeReason1 = _registerName1("closeReason"); - late final _sel_webSocketTaskWithURL_1 = - _registerName1("webSocketTaskWithURL:"); - ffi.Pointer _objc_msgSend_1087( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ) { - return __objc_msgSend_1087( - obj, - sel, - url, - ); - } - - late final __objc_msgSend_1087Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1087 = __objc_msgSend_1087Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_webSocketTaskWithURL_protocols_1 = - _registerName1("webSocketTaskWithURL:protocols:"); - ffi.Pointer _objc_msgSend_1088( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer protocols, - ) { - return __objc_msgSend_1088( - obj, - sel, - url, - protocols, - ); - } - - late final __objc_msgSend_1088Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1088 = __objc_msgSend_1088Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_webSocketTaskWithRequest_1 = - _registerName1("webSocketTaskWithRequest:"); - ffi.Pointer _objc_msgSend_1089( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ) { - return __objc_msgSend_1089( - obj, - sel, - request, - ); - } - - late final __objc_msgSend_1089Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1089 = __objc_msgSend_1089Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_dataTaskWithRequest_completionHandler_1 = - _registerName1("dataTaskWithRequest:completionHandler:"); - ffi.Pointer _objc_msgSend_1090( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1090( - obj, - sel, - request, - completionHandler, - ); - } - - late final __objc_msgSend_1090Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1090 = __objc_msgSend_1090Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_dataTaskWithURL_completionHandler_1 = - _registerName1("dataTaskWithURL:completionHandler:"); - ffi.Pointer _objc_msgSend_1091( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1091( - obj, - sel, - url, - completionHandler, - ); - } - - late final __objc_msgSend_1091Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1091 = __objc_msgSend_1091Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_uploadTaskWithRequest_fromFile_completionHandler_1 = - _registerName1("uploadTaskWithRequest:fromFile:completionHandler:"); - ffi.Pointer _objc_msgSend_1092( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer fileURL, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1092( - obj, - sel, - request, - fileURL, - completionHandler, - ); - } - - late final __objc_msgSend_1092Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1092 = __objc_msgSend_1092Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_uploadTaskWithRequest_fromData_completionHandler_1 = - _registerName1("uploadTaskWithRequest:fromData:completionHandler:"); - ffi.Pointer _objc_msgSend_1093( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer bodyData, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1093( - obj, - sel, - request, - bodyData, - completionHandler, - ); - } - - late final __objc_msgSend_1093Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1093 = __objc_msgSend_1093Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_uploadTaskWithResumeData_completionHandler_1 = - _registerName1("uploadTaskWithResumeData:completionHandler:"); - ffi.Pointer _objc_msgSend_1094( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer resumeData, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1094( - obj, - sel, - resumeData, - completionHandler, - ); - } - - late final __objc_msgSend_1094Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1094 = __objc_msgSend_1094Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_downloadTaskWithRequest_completionHandler_1 = - _registerName1("downloadTaskWithRequest:completionHandler:"); - ffi.Pointer _objc_msgSend_1095( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1095( - obj, - sel, - request, - completionHandler, - ); - } - - late final __objc_msgSend_1095Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1095 = __objc_msgSend_1095Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_downloadTaskWithURL_completionHandler_1 = - _registerName1("downloadTaskWithURL:completionHandler:"); - ffi.Pointer _objc_msgSend_1096( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1096( - obj, - sel, - url, - completionHandler, - ); - } - - late final __objc_msgSend_1096Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1096 = __objc_msgSend_1096Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_downloadTaskWithResumeData_completionHandler_1 = - _registerName1("downloadTaskWithResumeData:completionHandler:"); - ffi.Pointer _objc_msgSend_1097( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer resumeData, - ffi.Pointer<_ObjCBlock> completionHandler, - ) { - return __objc_msgSend_1097( - obj, - sel, - resumeData, - completionHandler, - ); - } - - late final __objc_msgSend_1097Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1097 = __objc_msgSend_1097Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _class_NSProtocolChecker1 = _getClass1("NSProtocolChecker"); - ffi.Pointer _objc_msgSend_1098( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1098( - obj, - sel, - ); - } - - late final __objc_msgSend_1098Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1098 = __objc_msgSend_1098Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - ffi.Pointer _objc_msgSend_1099( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1099( - obj, - sel, - ); - } - - late final __objc_msgSend_1099Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1099 = __objc_msgSend_1099Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_protocolCheckerWithTarget_protocol_1 = - _registerName1("protocolCheckerWithTarget:protocol:"); - instancetype _objc_msgSend_1100( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer anObject, - ffi.Pointer aProtocol, - ) { - return __objc_msgSend_1100( - obj, - sel, - anObject, - aProtocol, - ); - } - - late final __objc_msgSend_1100Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1100 = __objc_msgSend_1100Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithTarget_protocol_1 = - _registerName1("initWithTarget:protocol:"); - late final _class_NSTask1 = _getClass1("NSTask"); - late final _sel_setExecutableURL_1 = _registerName1("setExecutableURL:"); - late final _sel_setEnvironment_1 = _registerName1("setEnvironment:"); - late final _sel_currentDirectoryURL1 = _registerName1("currentDirectoryURL"); - late final _sel_setCurrentDirectoryURL_1 = - _registerName1("setCurrentDirectoryURL:"); - late final _sel_launchRequirementData1 = - _registerName1("launchRequirementData"); - late final _sel_setLaunchRequirementData_1 = - _registerName1("setLaunchRequirementData:"); - late final _sel_standardInput1 = _registerName1("standardInput"); - late final _sel_setStandardInput_1 = _registerName1("setStandardInput:"); - late final _sel_standardOutput1 = _registerName1("standardOutput"); - late final _sel_setStandardOutput_1 = _registerName1("setStandardOutput:"); - late final _sel_standardError1 = _registerName1("standardError"); - late final _sel_setStandardError_1 = _registerName1("setStandardError:"); - late final _sel_launchAndReturnError_1 = - _registerName1("launchAndReturnError:"); - late final _sel_interrupt1 = _registerName1("interrupt"); - late final _sel_terminate1 = _registerName1("terminate"); - late final _sel_isRunning1 = _registerName1("isRunning"); - late final _sel_terminationStatus1 = _registerName1("terminationStatus"); - late final _sel_terminationReason1 = _registerName1("terminationReason"); - int _objc_msgSend_1101( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1101( - obj, - sel, - ); - } - - late final __objc_msgSend_1101Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1101 = __objc_msgSend_1101Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_terminationHandler1 = _registerName1("terminationHandler"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_1102( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1102( - obj, - sel, - ); - } - - late final __objc_msgSend_1102Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1102 = __objc_msgSend_1102Ptr.asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setTerminationHandler_1 = - _registerName1("setTerminationHandler:"); - void _objc_msgSend_1103( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> value, - ) { - return __objc_msgSend_1103( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1103Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1103 = __objc_msgSend_1103Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_launchedTaskWithExecutableURL_arguments_error_terminationHandler_1 = - _registerName1( - "launchedTaskWithExecutableURL:arguments:error:terminationHandler:"); - ffi.Pointer _objc_msgSend_1104( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer arguments, - ffi.Pointer> error, - ffi.Pointer<_ObjCBlock> terminationHandler, - ) { - return __objc_msgSend_1104( - obj, - sel, - url, - arguments, - error, - terminationHandler, - ); - } - - late final __objc_msgSend_1104Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1104 = __objc_msgSend_1104Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer<_ObjCBlock>)>(); - - late final _sel_waitUntilExit1 = _registerName1("waitUntilExit"); - late final _sel_launchPath1 = _registerName1("launchPath"); - late final _sel_setLaunchPath_1 = _registerName1("setLaunchPath:"); - late final _sel_setCurrentDirectoryPath_1 = - _registerName1("setCurrentDirectoryPath:"); - late final _sel_launch1 = _registerName1("launch"); - late final _sel_launchedTaskWithLaunchPath_arguments_1 = - _registerName1("launchedTaskWithLaunchPath:arguments:"); - ffi.Pointer _objc_msgSend_1105( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer arguments, - ) { - return __objc_msgSend_1105( - obj, - sel, - path, - arguments, - ); - } - - late final __objc_msgSend_1105Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1105 = __objc_msgSend_1105Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _class_NSXMLElement1 = _getClass1("NSXMLElement"); - late final _class_NSXMLNode1 = _getClass1("NSXMLNode"); - late final _sel_initWithKind_1 = _registerName1("initWithKind:"); - instancetype _objc_msgSend_1106( - ffi.Pointer obj, - ffi.Pointer sel, - int kind, - ) { - return __objc_msgSend_1106( - obj, - sel, - kind, - ); - } - - late final __objc_msgSend_1106Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1106 = __objc_msgSend_1106Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_initWithKind_options_1 = - _registerName1("initWithKind:options:"); - instancetype _objc_msgSend_1107( - ffi.Pointer obj, - ffi.Pointer sel, - int kind, - int options, - ) { - return __objc_msgSend_1107( - obj, - sel, - kind, - options, - ); - } - - late final __objc_msgSend_1107Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1107 = __objc_msgSend_1107Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int, int)>(); - - late final _sel_document1 = _registerName1("document"); - late final _sel_documentWithRootElement_1 = - _registerName1("documentWithRootElement:"); - ffi.Pointer _objc_msgSend_1108( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer element, - ) { - return __objc_msgSend_1108( - obj, - sel, - element, - ); - } - - late final __objc_msgSend_1108Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1108 = __objc_msgSend_1108Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_elementWithName_1 = _registerName1("elementWithName:"); - late final _sel_elementWithName_URI_1 = - _registerName1("elementWithName:URI:"); - ffi.Pointer _objc_msgSend_1109( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer URI, - ) { - return __objc_msgSend_1109( - obj, - sel, - name, - URI, - ); - } - - late final __objc_msgSend_1109Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1109 = __objc_msgSend_1109Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_elementWithName_stringValue_1 = - _registerName1("elementWithName:stringValue:"); - late final _sel_elementWithName_children_attributes_1 = - _registerName1("elementWithName:children:attributes:"); - ffi.Pointer _objc_msgSend_1110( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer children, - ffi.Pointer attributes, - ) { - return __objc_msgSend_1110( - obj, - sel, - name, - children, - attributes, - ); - } - - late final __objc_msgSend_1110Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1110 = __objc_msgSend_1110Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_attributeWithName_stringValue_1 = - _registerName1("attributeWithName:stringValue:"); - late final _sel_attributeWithName_URI_stringValue_1 = - _registerName1("attributeWithName:URI:stringValue:"); - late final _sel_namespaceWithName_stringValue_1 = - _registerName1("namespaceWithName:stringValue:"); - late final _sel_processingInstructionWithName_stringValue_1 = - _registerName1("processingInstructionWithName:stringValue:"); - late final _sel_commentWithStringValue_1 = - _registerName1("commentWithStringValue:"); - late final _sel_textWithStringValue_1 = - _registerName1("textWithStringValue:"); - late final _sel_DTDNodeWithXMLString_1 = - _registerName1("DTDNodeWithXMLString:"); - int _objc_msgSend_1111( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1111( - obj, - sel, - ); - } - - late final __objc_msgSend_1111Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1111 = __objc_msgSend_1111Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_objectValue1 = _registerName1("objectValue"); - late final _sel_setObjectValue_1 = _registerName1("setObjectValue:"); - late final _sel_setStringValue_1 = _registerName1("setStringValue:"); - late final _sel_setStringValue_resolvingEntities_1 = - _registerName1("setStringValue:resolvingEntities:"); - void _objc_msgSend_1112( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - bool resolve, - ) { - return __objc_msgSend_1112( - obj, - sel, - string, - resolve, - ); - } - - late final __objc_msgSend_1112Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_1112 = __objc_msgSend_1112Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); - - late final _sel_index1 = _registerName1("index"); - late final _sel_level1 = _registerName1("level"); - late final _class_NSXMLDocument1 = _getClass1("NSXMLDocument"); - late final _sel_initWithXMLString_options_error_1 = - _registerName1("initWithXMLString:options:error:"); - instancetype _objc_msgSend_1113( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer string, - int mask, - ffi.Pointer> error, - ) { - return __objc_msgSend_1113( - obj, - sel, - string, - mask, - error, - ); - } - - late final __objc_msgSend_1113Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1113 = __objc_msgSend_1113Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - instancetype _objc_msgSend_1114( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer url, - int mask, - ffi.Pointer> error, - ) { - return __objc_msgSend_1114( - obj, - sel, - url, - mask, - error, - ); - } - - late final __objc_msgSend_1114Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1114 = __objc_msgSend_1114Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_initWithData_options_error_1 = - _registerName1("initWithData:options:error:"); - instancetype _objc_msgSend_1115( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer data, - int mask, - ffi.Pointer> error, - ) { - return __objc_msgSend_1115( - obj, - sel, - data, - mask, - error, - ); - } - - late final __objc_msgSend_1115Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1115 = __objc_msgSend_1115Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); - - late final _sel_initWithRootElement_1 = - _registerName1("initWithRootElement:"); - instancetype _objc_msgSend_1116( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer element, - ) { - return __objc_msgSend_1116( - obj, - sel, - element, - ); - } - - late final __objc_msgSend_1116Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1116 = __objc_msgSend_1116Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_replacementClassForClass_1 = - _registerName1("replacementClassForClass:"); - late final _sel_characterEncoding1 = _registerName1("characterEncoding"); - late final _sel_setCharacterEncoding_1 = - _registerName1("setCharacterEncoding:"); - late final _sel_isStandalone1 = _registerName1("isStandalone"); - late final _sel_setStandalone_1 = _registerName1("setStandalone:"); - late final _sel_documentContentKind1 = _registerName1("documentContentKind"); - int _objc_msgSend_1117( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1117( - obj, - sel, - ); - } - - late final __objc_msgSend_1117Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1117 = __objc_msgSend_1117Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDocumentContentKind_1 = - _registerName1("setDocumentContentKind:"); - void _objc_msgSend_1118( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1118( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1118Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1118 = __objc_msgSend_1118Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_setMIMEType_1 = _registerName1("setMIMEType:"); - late final _class_NSXMLDTD1 = _getClass1("NSXMLDTD"); - late final _sel_setPublicID_1 = _registerName1("setPublicID:"); - late final _sel_setSystemID_1 = _registerName1("setSystemID:"); - late final _sel_insertChild_atIndex_1 = - _registerName1("insertChild:atIndex:"); - void _objc_msgSend_1119( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer child, - int index, - ) { - return __objc_msgSend_1119( - obj, - sel, - child, - index, - ); - } - - late final __objc_msgSend_1119Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_1119 = __objc_msgSend_1119Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_insertChildren_atIndex_1 = - _registerName1("insertChildren:atIndex:"); - void _objc_msgSend_1120( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer children, - int index, - ) { - return __objc_msgSend_1120( - obj, - sel, - children, - index, - ); - } - - late final __objc_msgSend_1120Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_1120 = __objc_msgSend_1120Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_removeChildAtIndex_1 = _registerName1("removeChildAtIndex:"); - late final _sel_setChildren_1 = _registerName1("setChildren:"); - late final _sel_addChild_1 = _registerName1("addChild:"); - void _objc_msgSend_1121( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer child, - ) { - return __objc_msgSend_1121( - obj, - sel, - child, - ); - } - - late final __objc_msgSend_1121Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1121 = __objc_msgSend_1121Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_replaceChildAtIndex_withNode_1 = - _registerName1("replaceChildAtIndex:withNode:"); - void _objc_msgSend_1122( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ffi.Pointer node, - ) { - return __objc_msgSend_1122( - obj, - sel, - index, - node, - ); - } - - late final __objc_msgSend_1122Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1122 = __objc_msgSend_1122Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); - - late final _class_NSXMLDTDNode1 = _getClass1("NSXMLDTDNode"); - late final _sel_initWithXMLString_1 = _registerName1("initWithXMLString:"); - late final _sel_DTDKind1 = _registerName1("DTDKind"); - int _objc_msgSend_1123( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1123( - obj, - sel, - ); - } - - late final __objc_msgSend_1123Ptr = _lookup< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1123 = __objc_msgSend_1123Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDTDKind_1 = _registerName1("setDTDKind:"); - void _objc_msgSend_1124( - ffi.Pointer obj, - ffi.Pointer sel, - int value, - ) { - return __objc_msgSend_1124( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1124Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1124 = __objc_msgSend_1124Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_isExternal1 = _registerName1("isExternal"); - late final _sel_notationName1 = _registerName1("notationName"); - late final _sel_setNotationName_1 = _registerName1("setNotationName:"); - late final _sel_localNameForName_1 = _registerName1("localNameForName:"); - late final _sel_prefixForName_1 = _registerName1("prefixForName:"); - late final _sel_predefinedNamespaceForPrefix_1 = - _registerName1("predefinedNamespaceForPrefix:"); - ffi.Pointer _objc_msgSend_1125( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ) { - return __objc_msgSend_1125( - obj, - sel, - name, - ); - } - - late final __objc_msgSend_1125Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1125 = __objc_msgSend_1125Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_entityDeclarationForName_1 = - _registerName1("entityDeclarationForName:"); - ffi.Pointer _objc_msgSend_1126( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ) { - return __objc_msgSend_1126( - obj, - sel, - name, - ); - } - - late final __objc_msgSend_1126Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1126 = __objc_msgSend_1126Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_notationDeclarationForName_1 = - _registerName1("notationDeclarationForName:"); - late final _sel_elementDeclarationForName_1 = - _registerName1("elementDeclarationForName:"); - late final _sel_attributeDeclarationForName_elementName_1 = - _registerName1("attributeDeclarationForName:elementName:"); - ffi.Pointer _objc_msgSend_1127( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer elementName, - ) { - return __objc_msgSend_1127( - obj, - sel, - name, - elementName, - ); - } - - late final __objc_msgSend_1127Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1127 = __objc_msgSend_1127Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_predefinedEntityDeclarationForName_1 = - _registerName1("predefinedEntityDeclarationForName:"); - late final _sel_DTD1 = _registerName1("DTD"); - ffi.Pointer _objc_msgSend_1128( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1128( - obj, - sel, - ); - } - - late final __objc_msgSend_1128Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1128 = __objc_msgSend_1128Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_setDTD_1 = _registerName1("setDTD:"); - void _objc_msgSend_1129( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer value, - ) { - return __objc_msgSend_1129( - obj, - sel, - value, - ); - } - - late final __objc_msgSend_1129Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1129 = __objc_msgSend_1129Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_setRootElement_1 = _registerName1("setRootElement:"); - void _objc_msgSend_1130( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer root, - ) { - return __objc_msgSend_1130( - obj, - sel, - root, - ); - } - - late final __objc_msgSend_1130Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1130 = __objc_msgSend_1130Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_rootElement1 = _registerName1("rootElement"); - ffi.Pointer _objc_msgSend_1131( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1131( - obj, - sel, - ); - } - - late final __objc_msgSend_1131Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1131 = __objc_msgSend_1131Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_XMLData1 = _registerName1("XMLData"); - late final _sel_XMLDataWithOptions_1 = _registerName1("XMLDataWithOptions:"); - ffi.Pointer _objc_msgSend_1132( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_1132( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_1132Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1132 = __objc_msgSend_1132Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_objectByApplyingXSLT_arguments_error_1 = - _registerName1("objectByApplyingXSLT:arguments:error:"); - ffi.Pointer _objc_msgSend_1133( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer xslt, - ffi.Pointer arguments, - ffi.Pointer> error, - ) { - return __objc_msgSend_1133( - obj, - sel, - xslt, - arguments, - error, - ); - } - - late final __objc_msgSend_1133Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1133 = __objc_msgSend_1133Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_objectByApplyingXSLTString_arguments_error_1 = - _registerName1("objectByApplyingXSLTString:arguments:error:"); - ffi.Pointer _objc_msgSend_1134( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer xslt, - ffi.Pointer arguments, - ffi.Pointer> error, - ) { - return __objc_msgSend_1134( - obj, - sel, - xslt, - arguments, - error, - ); - } - - late final __objc_msgSend_1134Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1134 = __objc_msgSend_1134Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_objectByApplyingXSLTAtURL_arguments_error_1 = - _registerName1("objectByApplyingXSLTAtURL:arguments:error:"); - ffi.Pointer _objc_msgSend_1135( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer xsltURL, - ffi.Pointer argument, - ffi.Pointer> error, - ) { - return __objc_msgSend_1135( - obj, - sel, - xsltURL, - argument, - error, - ); - } - - late final __objc_msgSend_1135Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1135 = __objc_msgSend_1135Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_validateAndReturnError_1 = - _registerName1("validateAndReturnError:"); - late final _sel_rootDocument1 = _registerName1("rootDocument"); - ffi.Pointer _objc_msgSend_1136( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1136( - obj, - sel, - ); - } - - late final __objc_msgSend_1136Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1136 = __objc_msgSend_1136Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_parent1 = _registerName1("parent"); - ffi.Pointer _objc_msgSend_1137( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_1137( - obj, - sel, - ); - } - - late final __objc_msgSend_1137Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1137 = __objc_msgSend_1137Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_childCount1 = _registerName1("childCount"); - late final _sel_children1 = _registerName1("children"); - late final _sel_childAtIndex_1 = _registerName1("childAtIndex:"); - ffi.Pointer _objc_msgSend_1138( - ffi.Pointer obj, - ffi.Pointer sel, - int index, - ) { - return __objc_msgSend_1138( - obj, - sel, - index, - ); - } - - late final __objc_msgSend_1138Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_1138 = __objc_msgSend_1138Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_previousSibling1 = _registerName1("previousSibling"); - late final _sel_nextSibling1 = _registerName1("nextSibling"); - late final _sel_previousNode1 = _registerName1("previousNode"); - late final _sel_nextNode1 = _registerName1("nextNode"); - late final _sel_detach1 = _registerName1("detach"); - late final _sel_XPath1 = _registerName1("XPath"); - late final _sel_localName1 = _registerName1("localName"); - late final _sel_prefix1 = _registerName1("prefix"); - late final _sel_URI1 = _registerName1("URI"); - late final _sel_setURI_1 = _registerName1("setURI:"); - late final _sel_XMLString1 = _registerName1("XMLString"); - late final _sel_XMLStringWithOptions_1 = - _registerName1("XMLStringWithOptions:"); - ffi.Pointer _objc_msgSend_1139( - ffi.Pointer obj, - ffi.Pointer sel, - int options, - ) { - return __objc_msgSend_1139( - obj, - sel, - options, - ); - } - - late final __objc_msgSend_1139Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); - late final __objc_msgSend_1139 = __objc_msgSend_1139Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); - - late final _sel_canonicalXMLStringPreservingComments_1 = - _registerName1("canonicalXMLStringPreservingComments:"); - ffi.Pointer _objc_msgSend_1140( - ffi.Pointer obj, - ffi.Pointer sel, - bool comments, - ) { - return __objc_msgSend_1140( - obj, - sel, - comments, - ); - } - - late final __objc_msgSend_1140Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_1140 = __objc_msgSend_1140Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, bool)>(); - - late final _sel_nodesForXPath_error_1 = - _registerName1("nodesForXPath:error:"); - late final _sel_objectsForXQuery_constants_error_1 = - _registerName1("objectsForXQuery:constants:error:"); - ffi.Pointer _objc_msgSend_1141( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer xquery, - ffi.Pointer constants, - ffi.Pointer> error, - ) { - return __objc_msgSend_1141( - obj, - sel, - xquery, - constants, - error, - ); - } - - late final __objc_msgSend_1141Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); - late final __objc_msgSend_1141 = __objc_msgSend_1141Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); - - late final _sel_objectsForXQuery_error_1 = - _registerName1("objectsForXQuery:error:"); - late final _sel_initWithName_URI_1 = _registerName1("initWithName:URI:"); - instancetype _objc_msgSend_1142( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer URI, - ) { - return __objc_msgSend_1142( - obj, - sel, - name, - URI, - ); - } - - late final __objc_msgSend_1142Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1142 = __objc_msgSend_1142Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - - late final _sel_initWithName_stringValue_1 = - _registerName1("initWithName:stringValue:"); - late final _sel_initWithXMLString_error_1 = - _registerName1("initWithXMLString:error:"); - late final _sel_elementsForName_1 = _registerName1("elementsForName:"); - late final _sel_elementsForLocalName_URI_1 = - _registerName1("elementsForLocalName:URI:"); - ffi.Pointer _objc_msgSend_1143( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer localName, - ffi.Pointer URI, - ) { - return __objc_msgSend_1143( - obj, - sel, - localName, - URI, - ); - } - - late final __objc_msgSend_1143Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1143 = __objc_msgSend_1143Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_addAttribute_1 = _registerName1("addAttribute:"); - late final _sel_removeAttributeForName_1 = - _registerName1("removeAttributeForName:"); - late final _sel_attributes1 = _registerName1("attributes"); - late final _sel_setAttributes_1 = _registerName1("setAttributes:"); - late final _sel_setAttributesWithDictionary_1 = - _registerName1("setAttributesWithDictionary:"); - late final _sel_attributeForName_1 = _registerName1("attributeForName:"); - late final _sel_attributeForLocalName_URI_1 = - _registerName1("attributeForLocalName:URI:"); - ffi.Pointer _objc_msgSend_1144( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer localName, - ffi.Pointer URI, - ) { - return __objc_msgSend_1144( - obj, - sel, - localName, - URI, - ); - } - - late final __objc_msgSend_1144Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1144 = __objc_msgSend_1144Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_addNamespace_1 = _registerName1("addNamespace:"); - late final _sel_removeNamespaceForPrefix_1 = - _registerName1("removeNamespaceForPrefix:"); - late final _sel_namespaces1 = _registerName1("namespaces"); - late final _sel_setNamespaces_1 = _registerName1("setNamespaces:"); - late final _sel_namespaceForPrefix_1 = _registerName1("namespaceForPrefix:"); - late final _sel_resolveNamespaceForName_1 = - _registerName1("resolveNamespaceForName:"); - late final _sel_resolvePrefixForNamespaceURI_1 = - _registerName1("resolvePrefixForNamespaceURI:"); - late final _sel_normalizeAdjacentTextNodesPreservingCDATA_1 = - _registerName1("normalizeAdjacentTextNodesPreservingCDATA:"); - late final _sel_setAttributesAsDictionary_1 = - _registerName1("setAttributesAsDictionary:"); - late final _class_SwiftClass1 = _getClass1("swift_module.SwiftClass"); - late final _sel_sayHello1 = _registerName1("sayHello"); - late final _sel_someField1 = _registerName1("someField"); - late final _sel_setSomeField_1 = _registerName1("setSomeField:"); -} - -class _ObjCWrapper implements ffi.Finalizable { - final ffi.Pointer _id; - final SwiftLibrary _lib; - bool _pendingRelease; - - _ObjCWrapper._(this._id, this._lib, - {bool retain = false, bool release = false}) - : _pendingRelease = release { - if (retain) { - _lib._objc_retain(_id.cast()); - } - if (release) { - _lib._objc_releaseFinalizer2.attach(this, _id.cast(), detach: this); - } - } - - /// Releases the reference to the underlying ObjC object held by this wrapper. - /// Throws a StateError if this wrapper doesn't currently hold a reference. - void release() { - if (_pendingRelease) { - _pendingRelease = false; - _lib._objc_release(_id.cast()); - _lib._objc_releaseFinalizer2.detach(this); - } else { - throw StateError( - 'Released an ObjC object that was unowned or already released.'); - } - } - - @override - bool operator ==(Object other) { - return other is _ObjCWrapper && _id == other._id; - } - - @override - int get hashCode => _id.hashCode; - - /// Return a pointer to this object. - ffi.Pointer get pointer => _id; - - ffi.Pointer retainAndReturnPointer() { - _lib._objc_retain(_id.cast()); - return _id; - } -} - -class NSObject extends _ObjCWrapper { - NSObject._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSObject] that points to the same underlying object as [other]. - static NSObject castFrom(T other) { - return NSObject._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSObject] that wraps the given raw object pointer. - static NSObject castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSObject._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSObject]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSObject1); - } - - static void load(SwiftLibrary _lib) { - _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_load1); - } - - static void initialize(SwiftLibrary _lib) { - _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_initialize1); - } - - NSObject init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_new1); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static NSObject allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSObject1, _lib._sel_allocWithZone_1, zone); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static NSObject alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_alloc1); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - void dealloc() { - _lib._objc_msgSend_1(_id, _lib._sel_dealloc1); - } - - void finalize() { - _lib._objc_msgSend_1(_id, _lib._sel_finalize1); - } - - NSObject copy() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_copy1); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - NSObject mutableCopy() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_mutableCopy1); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static NSObject copyWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSObject1, _lib._sel_copyWithZone_1, zone); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static NSObject mutableCopyWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSObject1, _lib._sel_mutableCopyWithZone_1, zone); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static bool instancesRespondToSelector_( - SwiftLibrary _lib, ffi.Pointer aSelector) { - return _lib._objc_msgSend_4(_lib._class_NSObject1, - _lib._sel_instancesRespondToSelector_1, aSelector); - } - - static bool conformsToProtocol_(SwiftLibrary _lib, Protocol protocol) { - return _lib._objc_msgSend_5( - _lib._class_NSObject1, _lib._sel_conformsToProtocol_1, protocol._id); - } - - ffi.Pointer> methodForSelector_( - ffi.Pointer aSelector) { - return _lib._objc_msgSend_6(_id, _lib._sel_methodForSelector_1, aSelector); - } - - static ffi.Pointer> - instanceMethodForSelector_( - SwiftLibrary _lib, ffi.Pointer aSelector) { - return _lib._objc_msgSend_6(_lib._class_NSObject1, - _lib._sel_instanceMethodForSelector_1, aSelector); - } - - void doesNotRecognizeSelector_(ffi.Pointer aSelector) { - _lib._objc_msgSend_7(_id, _lib._sel_doesNotRecognizeSelector_1, aSelector); - } - - NSObject forwardingTargetForSelector_(ffi.Pointer aSelector) { - final _ret = _lib._objc_msgSend_8( - _id, _lib._sel_forwardingTargetForSelector_1, aSelector); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void forwardInvocation_(NSInvocation anInvocation) { - _lib._objc_msgSend_421( - _id, _lib._sel_forwardInvocation_1, anInvocation._id); - } - - NSMethodSignature methodSignatureForSelector_( - ffi.Pointer aSelector) { - final _ret = _lib._objc_msgSend_422( - _id, _lib._sel_methodSignatureForSelector_1, aSelector); - return NSMethodSignature._(_ret, _lib, retain: true, release: true); - } - - static NSMethodSignature instanceMethodSignatureForSelector_( - SwiftLibrary _lib, ffi.Pointer aSelector) { - final _ret = _lib._objc_msgSend_422(_lib._class_NSObject1, - _lib._sel_instanceMethodSignatureForSelector_1, aSelector); - return NSMethodSignature._(_ret, _lib, retain: true, release: true); - } - - bool allowsWeakReference() { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsWeakReference1); - } - - bool retainWeakReference() { - return _lib._objc_msgSend_12(_id, _lib._sel_retainWeakReference1); - } - - static bool isSubclassOfClass_(SwiftLibrary _lib, NSObject aClass) { - return _lib._objc_msgSend_0( - _lib._class_NSObject1, _lib._sel_isSubclassOfClass_1, aClass._id); - } - - static bool resolveClassMethod_(SwiftLibrary _lib, ffi.Pointer sel) { - return _lib._objc_msgSend_4( - _lib._class_NSObject1, _lib._sel_resolveClassMethod_1, sel); - } - - static bool resolveInstanceMethod_( - SwiftLibrary _lib, ffi.Pointer sel) { - return _lib._objc_msgSend_4( - _lib._class_NSObject1, _lib._sel_resolveInstanceMethod_1, sel); - } - - static int hash(SwiftLibrary _lib) { - return _lib._objc_msgSend_10(_lib._class_NSObject1, _lib._sel_hash1); - } - - static NSObject superclass(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_superclass1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject class1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_class1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSString description(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_21(_lib._class_NSObject1, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString debugDescription(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_21( - _lib._class_NSObject1, _lib._sel_debugDescription1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static int version(SwiftLibrary _lib) { - return _lib._objc_msgSend_83(_lib._class_NSObject1, _lib._sel_version1); - } - - static void setVersion_(SwiftLibrary _lib, int aVersion) { - _lib._objc_msgSend_423( - _lib._class_NSObject1, _lib._sel_setVersion_1, aVersion); - } - - NSObject get classForCoder { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_classForCoder1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? replacementObjectForCoder_(NSCoder coder) { - final _ret = _lib._objc_msgSend_47( - _id, _lib._sel_replacementObjectForCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? awakeAfterUsingCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_awakeAfterUsingCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: false, release: true); - } - - static void poseAsClass_(SwiftLibrary _lib, NSObject aClass) { - _lib._objc_msgSend_15( - _lib._class_NSObject1, _lib._sel_poseAsClass_1, aClass._id); - } - - NSObject get autoContentAccessingProxy { - final _ret = - _lib._objc_msgSend_2(_id, _lib._sel_autoContentAccessingProxy1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void - attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_( - NSError error, - int recoveryOptionIndex, - NSObject? delegate, - ffi.Pointer didRecoverSelector, - ffi.Pointer contextInfo) { - _lib._objc_msgSend_424( - _id, - _lib._sel_attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_1, - error._id, - recoveryOptionIndex, - delegate?._id ?? ffi.nullptr, - didRecoverSelector, - contextInfo); - } - - bool attemptRecoveryFromError_optionIndex_( - NSError error, int recoveryOptionIndex) { - return _lib._objc_msgSend_425( - _id, - _lib._sel_attemptRecoveryFromError_optionIndex_1, - error._id, - recoveryOptionIndex); - } - - void performSelector_withObject_afterDelay_inModes_( - ffi.Pointer aSelector, - NSObject? anArgument, - double delay, - NSArray modes) { - _lib._objc_msgSend_426( - _id, - _lib._sel_performSelector_withObject_afterDelay_inModes_1, - aSelector, - anArgument?._id ?? ffi.nullptr, - delay, - modes._id); - } - - void performSelector_withObject_afterDelay_( - ffi.Pointer aSelector, NSObject? anArgument, double delay) { - _lib._objc_msgSend_427( - _id, - _lib._sel_performSelector_withObject_afterDelay_1, - aSelector, - anArgument?._id ?? ffi.nullptr, - delay); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSObject1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSObject1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - void URL_resourceDataDidBecomeAvailable_(NSURL sender, NSData newBytes) { - _lib._objc_msgSend_428(_id, _lib._sel_URL_resourceDataDidBecomeAvailable_1, - sender._id, newBytes._id); - } - - void URLResourceDidFinishLoading_(NSURL sender) { - _lib._objc_msgSend_429( - _id, _lib._sel_URLResourceDidFinishLoading_1, sender._id); - } - - void URLResourceDidCancelLoading_(NSURL sender) { - _lib._objc_msgSend_429( - _id, _lib._sel_URLResourceDidCancelLoading_1, sender._id); - } - - void URL_resourceDidFailLoadingWithReason_(NSURL sender, NSString reason) { - _lib._objc_msgSend_430( - _id, - _lib._sel_URL_resourceDidFailLoadingWithReason_1, - sender._id, - reason._id); - } - - bool fileManager_shouldProceedAfterError_( - NSFileManager fm, NSDictionary errorInfo) { - return _lib._objc_msgSend_467(_id, - _lib._sel_fileManager_shouldProceedAfterError_1, fm._id, errorInfo._id); - } - - void fileManager_willProcessPath_(NSFileManager fm, NSString path) { - _lib._objc_msgSend_468( - _id, _lib._sel_fileManager_willProcessPath_1, fm._id, path._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSObject1, _lib._sel_accessInstanceVariablesDirectly1); - } - - NSObject? valueForKey_(NSString key) { - final _ret = _lib._objc_msgSend_38(_id, _lib._sel_valueForKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void setValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135( - _id, _lib._sel_setValue_forKey_1, value?._id ?? ffi.nullptr, key._id); - } - - bool validateValue_forKey_error_(ffi.Pointer> ioValue, - NSString inKey, ffi.Pointer> outError) { - return _lib._objc_msgSend_243(_id, _lib._sel_validateValue_forKey_error_1, - ioValue, inKey._id, outError); - } - - NSMutableArray mutableArrayValueForKey_(NSString key) { - final _ret = _lib._objc_msgSend_488( - _id, _lib._sel_mutableArrayValueForKey_1, key._id); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - NSMutableOrderedSet mutableOrderedSetValueForKey_(NSString key) { - final _ret = _lib._objc_msgSend_506( - _id, _lib._sel_mutableOrderedSetValueForKey_1, key._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSMutableSet mutableSetValueForKey_(NSString key) { - final _ret = - _lib._objc_msgSend_507(_id, _lib._sel_mutableSetValueForKey_1, key._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - NSObject? valueForKeyPath_(NSString keyPath) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_valueForKeyPath_1, keyPath._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void setValue_forKeyPath_(NSObject? value, NSString keyPath) { - _lib._objc_msgSend_135(_id, _lib._sel_setValue_forKeyPath_1, - value?._id ?? ffi.nullptr, keyPath._id); - } - - bool validateValue_forKeyPath_error_( - ffi.Pointer> ioValue, - NSString inKeyPath, - ffi.Pointer> outError) { - return _lib._objc_msgSend_243( - _id, - _lib._sel_validateValue_forKeyPath_error_1, - ioValue, - inKeyPath._id, - outError); - } - - NSMutableArray mutableArrayValueForKeyPath_(NSString keyPath) { - final _ret = _lib._objc_msgSend_488( - _id, _lib._sel_mutableArrayValueForKeyPath_1, keyPath._id); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - NSMutableOrderedSet mutableOrderedSetValueForKeyPath_(NSString keyPath) { - final _ret = _lib._objc_msgSend_506( - _id, _lib._sel_mutableOrderedSetValueForKeyPath_1, keyPath._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSMutableSet mutableSetValueForKeyPath_(NSString keyPath) { - final _ret = _lib._objc_msgSend_507( - _id, _lib._sel_mutableSetValueForKeyPath_1, keyPath._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - NSObject? valueForUndefinedKey_(NSString key) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_valueForUndefinedKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void setValue_forUndefinedKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_setValue_forUndefinedKey_1, - value?._id ?? ffi.nullptr, key._id); - } - - void setNilValueForKey_(NSString key) { - _lib._objc_msgSend_247(_id, _lib._sel_setNilValueForKey_1, key._id); - } - - NSDictionary dictionaryWithValuesForKeys_(NSArray keys) { - final _ret = _lib._objc_msgSend_508( - _id, _lib._sel_dictionaryWithValuesForKeys_1, keys._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - void setValuesForKeysWithDictionary_(NSDictionary keyedValues) { - _lib._objc_msgSend_509( - _id, _lib._sel_setValuesForKeysWithDictionary_1, keyedValues._id); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSObject1, _lib._sel_useStoredAccessor1); - } - - NSObject? storedValueForKey_(NSString key) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_storedValueForKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void takeStoredValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_takeStoredValue_forKey_1, - value?._id ?? ffi.nullptr, key._id); - } - - void takeValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135( - _id, _lib._sel_takeValue_forKey_1, value?._id ?? ffi.nullptr, key._id); - } - - void takeValue_forKeyPath_(NSObject? value, NSString keyPath) { - _lib._objc_msgSend_135(_id, _lib._sel_takeValue_forKeyPath_1, - value?._id ?? ffi.nullptr, keyPath._id); - } - - NSObject? handleQueryWithUnboundKey_(NSString key) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_handleQueryWithUnboundKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void handleTakeValue_forUnboundKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_handleTakeValue_forUnboundKey_1, - value?._id ?? ffi.nullptr, key._id); - } - - void unableToSetNilForKey_(NSString key) { - _lib._objc_msgSend_247(_id, _lib._sel_unableToSetNilForKey_1, key._id); - } - - NSDictionary valuesForKeys_(NSArray keys) { - final _ret = - _lib._objc_msgSend_508(_id, _lib._sel_valuesForKeys_1, keys._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - void takeValuesFromDictionary_(NSDictionary properties) { - _lib._objc_msgSend_509( - _id, _lib._sel_takeValuesFromDictionary_1, properties._id); - } - - void observeValueForKeyPath_ofObject_change_context_(NSString? keyPath, - NSObject? object, NSDictionary? change, ffi.Pointer context) { - _lib._objc_msgSend_510( - _id, - _lib._sel_observeValueForKeyPath_ofObject_change_context_1, - keyPath?._id ?? ffi.nullptr, - object?._id ?? ffi.nullptr, - change?._id ?? ffi.nullptr, - context); - } - - void addObserver_forKeyPath_options_context_(NSObject observer, - NSString keyPath, int options, ffi.Pointer context) { - _lib._objc_msgSend_139( - _id, - _lib._sel_addObserver_forKeyPath_options_context_1, - observer._id, - keyPath._id, - options, - context); - } - - void removeObserver_forKeyPath_context_( - NSObject observer, NSString keyPath, ffi.Pointer context) { - _lib._objc_msgSend_140(_id, _lib._sel_removeObserver_forKeyPath_context_1, - observer._id, keyPath._id, context); - } - - void removeObserver_forKeyPath_(NSObject observer, NSString keyPath) { - _lib._objc_msgSend_141( - _id, _lib._sel_removeObserver_forKeyPath_1, observer._id, keyPath._id); - } - - void willChangeValueForKey_(NSString key) { - _lib._objc_msgSend_247(_id, _lib._sel_willChangeValueForKey_1, key._id); - } - - void didChangeValueForKey_(NSString key) { - _lib._objc_msgSend_247(_id, _lib._sel_didChangeValueForKey_1, key._id); - } - - void willChange_valuesAtIndexes_forKey_( - int changeKind, NSIndexSet indexes, NSString key) { - _lib._objc_msgSend_511(_id, _lib._sel_willChange_valuesAtIndexes_forKey_1, - changeKind, indexes._id, key._id); - } - - void didChange_valuesAtIndexes_forKey_( - int changeKind, NSIndexSet indexes, NSString key) { - _lib._objc_msgSend_511(_id, _lib._sel_didChange_valuesAtIndexes_forKey_1, - changeKind, indexes._id, key._id); - } - - void willChangeValueForKey_withSetMutation_usingObjects_( - NSString key, int mutationKind, NSSet objects) { - _lib._objc_msgSend_512( - _id, - _lib._sel_willChangeValueForKey_withSetMutation_usingObjects_1, - key._id, - mutationKind, - objects._id); - } - - void didChangeValueForKey_withSetMutation_usingObjects_( - NSString key, int mutationKind, NSSet objects) { - _lib._objc_msgSend_512( - _id, - _lib._sel_didChangeValueForKey_withSetMutation_usingObjects_1, - key._id, - mutationKind, - objects._id); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSObject1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSObject1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - ffi.Pointer get observationInfo { - return _lib._objc_msgSend_20(_id, _lib._sel_observationInfo1); - } - - set observationInfo(ffi.Pointer value) { - return _lib._objc_msgSend_513(_id, _lib._sel_setObservationInfo_1, value); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSObject1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - NSObject? get classForKeyedArchiver { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_classForKeyedArchiver1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? replacementObjectForKeyedArchiver_(NSKeyedArchiver archiver) { - final _ret = _lib._objc_msgSend_528( - _id, _lib._sel_replacementObjectForKeyedArchiver_1, archiver._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSObject1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSObject1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void performSelectorOnMainThread_withObject_waitUntilDone_modes_( - ffi.Pointer aSelector, - NSObject? arg, - bool wait, - NSArray? array) { - _lib._objc_msgSend_529( - _id, - _lib._sel_performSelectorOnMainThread_withObject_waitUntilDone_modes_1, - aSelector, - arg?._id ?? ffi.nullptr, - wait, - array?._id ?? ffi.nullptr); - } - - void performSelectorOnMainThread_withObject_waitUntilDone_( - ffi.Pointer aSelector, NSObject? arg, bool wait) { - _lib._objc_msgSend_530( - _id, - _lib._sel_performSelectorOnMainThread_withObject_waitUntilDone_1, - aSelector, - arg?._id ?? ffi.nullptr, - wait); - } - - void performSelector_onThread_withObject_waitUntilDone_modes_( - ffi.Pointer aSelector, - NSThread thr, - NSObject? arg, - bool wait, - NSArray? array) { - _lib._objc_msgSend_548( - _id, - _lib._sel_performSelector_onThread_withObject_waitUntilDone_modes_1, - aSelector, - thr._id, - arg?._id ?? ffi.nullptr, - wait, - array?._id ?? ffi.nullptr); - } - - void performSelector_onThread_withObject_waitUntilDone_( - ffi.Pointer aSelector, NSThread thr, NSObject? arg, bool wait) { - _lib._objc_msgSend_549( - _id, - _lib._sel_performSelector_onThread_withObject_waitUntilDone_1, - aSelector, - thr._id, - arg?._id ?? ffi.nullptr, - wait); - } - - void performSelectorInBackground_withObject_( - ffi.Pointer aSelector, NSObject? arg) { - _lib._objc_msgSend_90( - _id, - _lib._sel_performSelectorInBackground_withObject_1, - aSelector, - arg?._id ?? ffi.nullptr); - } - - NSObject? get classForArchiver { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_classForArchiver1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? replacementObjectForArchiver_(NSArchiver archiver) { - final _ret = _lib._objc_msgSend_552( - _id, _lib._sel_replacementObjectForArchiver_1, archiver._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject get classForPortCoder { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_classForPortCoder1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? replacementObjectForPortCoder_(NSPortCoder coder) { - final _ret = _lib._objc_msgSend_597( - _id, _lib._sel_replacementObjectForPortCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSClassDescription get classDescription { - final _ret = _lib._objc_msgSend_600(_id, _lib._sel_classDescription1); - return NSClassDescription._(_ret, _lib, retain: true, release: true); - } - - NSArray get attributeKeys { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_attributeKeys1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray get toOneRelationshipKeys { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_toOneRelationshipKeys1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray get toManyRelationshipKeys { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_toManyRelationshipKeys1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString? inverseForRelationshipKey_(NSString relationshipKey) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_inverseForRelationshipKey_1, relationshipKey._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSObject? scriptingValueForSpecifier_( - NSScriptObjectSpecifier objectSpecifier) { - final _ret = _lib._objc_msgSend_649( - _id, _lib._sel_scriptingValueForSpecifier_1, objectSpecifier._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? get scriptingProperties { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_scriptingProperties1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - set scriptingProperties(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, _lib._sel_setScriptingProperties_1, value?._id ?? ffi.nullptr); - } - - NSObject? copyScriptingValue_forKey_withProperties_( - NSObject value, NSString key, NSDictionary properties) { - final _ret = _lib._objc_msgSend_650( - _id, - _lib._sel_copyScriptingValue_forKey_withProperties_1, - value._id, - key._id, - properties._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: false, release: true); - } - - NSObject? - newScriptingObjectOfClass_forValueForKey_withContentsValue_properties_( - NSObject objectClass, - NSString key, - NSObject? contentsValue, - NSDictionary properties) { - final _ret = _lib._objc_msgSend_651( - _id, - _lib._sel_newScriptingObjectOfClass_forValueForKey_withContentsValue_properties_1, - objectClass._id, - key._id, - contentsValue?._id ?? ffi.nullptr, - properties._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: false, release: true); - } - - int get classCode { - return _lib._objc_msgSend_214(_id, _lib._sel_classCode1); - } - - NSString? get className { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_className1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSObject? valueAtIndex_inPropertyWithKey_(int index, NSString key) { - final _ret = _lib._objc_msgSend_652( - _id, _lib._sel_valueAtIndex_inPropertyWithKey_1, index, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? valueWithName_inPropertyWithKey_(NSString name, NSString key) { - final _ret = _lib._objc_msgSend_175( - _id, _lib._sel_valueWithName_inPropertyWithKey_1, name._id, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? valueWithUniqueID_inPropertyWithKey_( - NSObject uniqueID, NSString key) { - final _ret = _lib._objc_msgSend_311(_id, - _lib._sel_valueWithUniqueID_inPropertyWithKey_1, uniqueID._id, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void insertValue_atIndex_inPropertyWithKey_( - NSObject value, int index, NSString key) { - _lib._objc_msgSend_653( - _id, - _lib._sel_insertValue_atIndex_inPropertyWithKey_1, - value._id, - index, - key._id); - } - - void removeValueAtIndex_fromPropertyWithKey_(int index, NSString key) { - _lib._objc_msgSend_654(_id, - _lib._sel_removeValueAtIndex_fromPropertyWithKey_1, index, key._id); - } - - void replaceValueAtIndex_inPropertyWithKey_withValue_( - int index, NSString key, NSObject value) { - _lib._objc_msgSend_655( - _id, - _lib._sel_replaceValueAtIndex_inPropertyWithKey_withValue_1, - index, - key._id, - value._id); - } - - void insertValue_inPropertyWithKey_(NSObject value, NSString key) { - _lib._objc_msgSend_656( - _id, _lib._sel_insertValue_inPropertyWithKey_1, value._id, key._id); - } - - NSObject? coerceValue_forKey_(NSObject? value, NSString key) { - final _ret = _lib._objc_msgSend_657(_id, _lib._sel_coerceValue_forKey_1, - value?._id ?? ffi.nullptr, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSScriptObjectSpecifier? get objectSpecifier { - final _ret = _lib._objc_msgSend_632(_id, _lib._sel_objectSpecifier1); - return _ret.address == 0 - ? null - : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); - } - - NSArray? indicesOfObjectsByEvaluatingObjectSpecifier_( - NSScriptObjectSpecifier specifier) { - final _ret = _lib._objc_msgSend_658(_id, - _lib._sel_indicesOfObjectsByEvaluatingObjectSpecifier_1, specifier._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - bool isEqualTo_(NSObject? object) { - return _lib._objc_msgSend_217( - _id, _lib._sel_isEqualTo_1, object?._id ?? ffi.nullptr); - } - - bool isLessThanOrEqualTo_(NSObject? object) { - return _lib._objc_msgSend_217( - _id, _lib._sel_isLessThanOrEqualTo_1, object?._id ?? ffi.nullptr); - } - - bool isLessThan_(NSObject? object) { - return _lib._objc_msgSend_217( - _id, _lib._sel_isLessThan_1, object?._id ?? ffi.nullptr); - } - - bool isGreaterThanOrEqualTo_(NSObject? object) { - return _lib._objc_msgSend_217( - _id, _lib._sel_isGreaterThanOrEqualTo_1, object?._id ?? ffi.nullptr); - } - - bool isGreaterThan_(NSObject? object) { - return _lib._objc_msgSend_217( - _id, _lib._sel_isGreaterThan_1, object?._id ?? ffi.nullptr); - } - - bool isNotEqualTo_(NSObject? object) { - return _lib._objc_msgSend_217( - _id, _lib._sel_isNotEqualTo_1, object?._id ?? ffi.nullptr); - } - - bool doesContain_(NSObject object) { - return _lib._objc_msgSend_0(_id, _lib._sel_doesContain_1, object._id); - } - - bool isLike_(NSString object) { - return _lib._objc_msgSend_64(_id, _lib._sel_isLike_1, object._id); - } - - bool isCaseInsensitiveLike_(NSString object) { - return _lib._objc_msgSend_64( - _id, _lib._sel_isCaseInsensitiveLike_1, object._id); - } - - bool scriptingIsEqualTo_(NSObject object) { - return _lib._objc_msgSend_0( - _id, _lib._sel_scriptingIsEqualTo_1, object._id); - } - - bool scriptingIsLessThanOrEqualTo_(NSObject object) { - return _lib._objc_msgSend_0( - _id, _lib._sel_scriptingIsLessThanOrEqualTo_1, object._id); - } - - bool scriptingIsLessThan_(NSObject object) { - return _lib._objc_msgSend_0( - _id, _lib._sel_scriptingIsLessThan_1, object._id); - } - - bool scriptingIsGreaterThanOrEqualTo_(NSObject object) { - return _lib._objc_msgSend_0( - _id, _lib._sel_scriptingIsGreaterThanOrEqualTo_1, object._id); - } - - bool scriptingIsGreaterThan_(NSObject object) { - return _lib._objc_msgSend_0( - _id, _lib._sel_scriptingIsGreaterThan_1, object._id); - } - - bool scriptingBeginsWith_(NSObject object) { - return _lib._objc_msgSend_0( - _id, _lib._sel_scriptingBeginsWith_1, object._id); - } - - bool scriptingEndsWith_(NSObject object) { - return _lib._objc_msgSend_0(_id, _lib._sel_scriptingEndsWith_1, object._id); - } - - bool scriptingContains_(NSObject object) { - return _lib._objc_msgSend_0(_id, _lib._sel_scriptingContains_1, object._id); - } -} - -final class ObjCSel extends ffi.Opaque {} - -final class ObjCObject extends ffi.Opaque {} - -typedef instancetype = ffi.Pointer; -typedef Dartinstancetype = NSObject; - -final class _NSZone extends ffi.Opaque {} - -class Protocol extends _ObjCWrapper { - Protocol._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [Protocol] that points to the same underlying object as [other]. - static Protocol castFrom(T other) { - return Protocol._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [Protocol] that wraps the given raw object pointer. - static Protocol castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return Protocol._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [Protocol]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_Protocol1); - } -} - -class NSInvocation extends NSObject { - NSInvocation._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSInvocation] that points to the same underlying object as [other]. - static NSInvocation castFrom(T other) { - return NSInvocation._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSInvocation] that wraps the given raw object pointer. - static NSInvocation castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSInvocation._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSInvocation]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSInvocation1); - } - - static NSInvocation invocationWithMethodSignature_( - SwiftLibrary _lib, NSMethodSignature sig) { - final _ret = _lib._objc_msgSend_414(_lib._class_NSInvocation1, - _lib._sel_invocationWithMethodSignature_1, sig._id); - return NSInvocation._(_ret, _lib, retain: true, release: true); - } - - NSMethodSignature get methodSignature { - final _ret = _lib._objc_msgSend_415(_id, _lib._sel_methodSignature1); - return NSMethodSignature._(_ret, _lib, retain: true, release: true); - } - - void retainArguments() { - _lib._objc_msgSend_1(_id, _lib._sel_retainArguments1); - } - - bool get argumentsRetained { - return _lib._objc_msgSend_12(_id, _lib._sel_argumentsRetained1); - } - - NSObject? get target { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_target1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - set target(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setTarget_1, value?._id ?? ffi.nullptr); - } - - ffi.Pointer get selector { - return _lib._objc_msgSend_417(_id, _lib._sel_selector1); - } - - set selector(ffi.Pointer value) { - return _lib._objc_msgSend_418(_id, _lib._sel_setSelector_1, value); - } - - void getReturnValue_(ffi.Pointer retLoc) { - _lib._objc_msgSend_52(_id, _lib._sel_getReturnValue_1, retLoc); - } - - void setReturnValue_(ffi.Pointer retLoc) { - _lib._objc_msgSend_52(_id, _lib._sel_setReturnValue_1, retLoc); - } - - void getArgument_atIndex_(ffi.Pointer argumentLocation, int idx) { - _lib._objc_msgSend_419( - _id, _lib._sel_getArgument_atIndex_1, argumentLocation, idx); - } - - void setArgument_atIndex_(ffi.Pointer argumentLocation, int idx) { - _lib._objc_msgSend_419( - _id, _lib._sel_setArgument_atIndex_1, argumentLocation, idx); - } - - void invoke() { - _lib._objc_msgSend_1(_id, _lib._sel_invoke1); - } - - void invokeWithTarget_(NSObject target) { - _lib._objc_msgSend_15(_id, _lib._sel_invokeWithTarget_1, target._id); - } - - void invokeUsingIMP_( - ffi.Pointer> imp) { - _lib._objc_msgSend_420(_id, _lib._sel_invokeUsingIMP_1, imp); - } - - @override - NSInvocation init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSInvocation._(_ret, _lib, retain: true, release: true); - } - - static NSInvocation new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSInvocation1, _lib._sel_new1); - return NSInvocation._(_ret, _lib, retain: false, release: true); - } - - static NSInvocation allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSInvocation1, _lib._sel_allocWithZone_1, zone); - return NSInvocation._(_ret, _lib, retain: false, release: true); - } - - static NSInvocation alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSInvocation1, _lib._sel_alloc1); - return NSInvocation._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSInvocation1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSInvocation1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSInvocation1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSInvocation1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSInvocation1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSInvocation1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSInvocation1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSInvocation1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSInvocation1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSMethodSignature extends NSObject { - NSMethodSignature._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSMethodSignature] that points to the same underlying object as [other]. - static NSMethodSignature castFrom(T other) { - return NSMethodSignature._(other._id, other._lib, - retain: true, release: true); - } - - /// Returns a [NSMethodSignature] that wraps the given raw object pointer. - static NSMethodSignature castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMethodSignature._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSMethodSignature]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMethodSignature1); - } - - static NSMethodSignature? signatureWithObjCTypes_( - SwiftLibrary _lib, ffi.Pointer types) { - final _ret = _lib._objc_msgSend_9(_lib._class_NSMethodSignature1, - _lib._sel_signatureWithObjCTypes_1, types); - return _ret.address == 0 - ? null - : NSMethodSignature._(_ret, _lib, retain: true, release: true); - } - - int get numberOfArguments { - return _lib._objc_msgSend_10(_id, _lib._sel_numberOfArguments1); - } - - ffi.Pointer getArgumentTypeAtIndex_(int idx) { - return _lib._objc_msgSend_11(_id, _lib._sel_getArgumentTypeAtIndex_1, idx); - } - - int get frameLength { - return _lib._objc_msgSend_10(_id, _lib._sel_frameLength1); - } - - bool isOneway() { - return _lib._objc_msgSend_12(_id, _lib._sel_isOneway1); - } - - ffi.Pointer get methodReturnType { - return _lib._objc_msgSend_13(_id, _lib._sel_methodReturnType1); - } - - int get methodReturnLength { - return _lib._objc_msgSend_10(_id, _lib._sel_methodReturnLength1); - } - - @override - NSMethodSignature init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMethodSignature._(_ret, _lib, retain: true, release: true); - } - - static NSMethodSignature new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMethodSignature1, _lib._sel_new1); - return NSMethodSignature._(_ret, _lib, retain: false, release: true); - } - - static NSMethodSignature allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMethodSignature1, _lib._sel_allocWithZone_1, zone); - return NSMethodSignature._(_ret, _lib, retain: false, release: true); - } - - static NSMethodSignature alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMethodSignature1, _lib._sel_alloc1); - return NSMethodSignature._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMethodSignature1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMethodSignature1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMethodSignature1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMethodSignature1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMethodSignature1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMethodSignature1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMethodSignature1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSMethodSignature1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMethodSignature1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSSet extends NSObject { - NSSet._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSSet] that points to the same underlying object as [other]. - static NSSet castFrom(T other) { - return NSSet._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSSet] that wraps the given raw object pointer. - static NSSet castFromPointer(SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSSet._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSSet]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSSet1); - } - - int get count { - return _lib._objc_msgSend_10(_id, _lib._sel_count1); - } - - NSObject? member_(NSObject object) { - final _ret = _lib._objc_msgSend_16(_id, _lib._sel_member_1, object._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSEnumerator objectEnumerator() { - final _ret = _lib._objc_msgSend_77(_id, _lib._sel_objectEnumerator1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - @override - NSSet init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet initWithObjects_count_( - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _id, _lib._sel_initWithObjects_count_1, objects, cnt); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSSet._(_ret, _lib, retain: true, release: true); - } - - NSArray get allObjects { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_allObjects1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject? anyObject() { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_anyObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - bool containsObject_(NSObject anObject) { - return _lib._objc_msgSend_0(_id, _lib._sel_containsObject_1, anObject._id); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_(NSObject? locale) { - final _ret = _lib._objc_msgSend_70( - _id, _lib._sel_descriptionWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - bool intersectsSet_(NSSet otherSet) { - return _lib._objc_msgSend_403(_id, _lib._sel_intersectsSet_1, otherSet._id); - } - - bool isEqualToSet_(NSSet otherSet) { - return _lib._objc_msgSend_403(_id, _lib._sel_isEqualToSet_1, otherSet._id); - } - - bool isSubsetOfSet_(NSSet otherSet) { - return _lib._objc_msgSend_403(_id, _lib._sel_isSubsetOfSet_1, otherSet._id); - } - - void makeObjectsPerformSelector_(ffi.Pointer aSelector) { - _lib._objc_msgSend_7( - _id, _lib._sel_makeObjectsPerformSelector_1, aSelector); - } - - void makeObjectsPerformSelector_withObject_( - ffi.Pointer aSelector, NSObject? argument) { - _lib._objc_msgSend_90( - _id, - _lib._sel_makeObjectsPerformSelector_withObject_1, - aSelector, - argument?._id ?? ffi.nullptr); - } - - NSSet setByAddingObject_(NSObject anObject) { - final _ret = _lib._objc_msgSend_404( - _id, _lib._sel_setByAddingObject_1, anObject._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet setByAddingObjectsFromSet_(NSSet other) { - final _ret = _lib._objc_msgSend_405( - _id, _lib._sel_setByAddingObjectsFromSet_1, other._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet setByAddingObjectsFromArray_(NSArray other) { - final _ret = _lib._objc_msgSend_406( - _id, _lib._sel_setByAddingObjectsFromArray_1, other._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - void enumerateObjectsUsingBlock_(ObjCBlock_ffiVoid_ObjCObject_bool block) { - _lib._objc_msgSend_407( - _id, _lib._sel_enumerateObjectsUsingBlock_1, block._id); - } - - void enumerateObjectsWithOptions_usingBlock_( - int opts, ObjCBlock_ffiVoid_ObjCObject_bool block) { - _lib._objc_msgSend_408(_id, - _lib._sel_enumerateObjectsWithOptions_usingBlock_1, opts, block._id); - } - - NSSet objectsPassingTest_(ObjCBlock_bool_ObjCObject_bool predicate) { - final _ret = _lib._objc_msgSend_409( - _id, _lib._sel_objectsPassingTest_1, predicate._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet objectsWithOptions_passingTest_( - int opts, ObjCBlock_bool_ObjCObject_bool predicate) { - final _ret = _lib._objc_msgSend_410( - _id, _lib._sel_objectsWithOptions_passingTest_1, opts, predicate._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static NSSet set1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSSet1, _lib._sel_set1); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static NSSet setWithObject_(SwiftLibrary _lib, NSObject object) { - final _ret = _lib._objc_msgSend_124( - _lib._class_NSSet1, _lib._sel_setWithObject_1, object._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static NSSet setWithObjects_count_(SwiftLibrary _lib, - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _lib._class_NSSet1, _lib._sel_setWithObjects_count_1, objects, cnt); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static NSSet setWithObjects_(SwiftLibrary _lib, NSObject firstObj) { - final _ret = _lib._objc_msgSend_124( - _lib._class_NSSet1, _lib._sel_setWithObjects_1, firstObj._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static NSSet setWithSet_(SwiftLibrary _lib, NSSet set) { - final _ret = _lib._objc_msgSend_411( - _lib._class_NSSet1, _lib._sel_setWithSet_1, set._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static NSSet setWithArray_(SwiftLibrary _lib, NSArray array) { - final _ret = _lib._objc_msgSend_125( - _lib._class_NSSet1, _lib._sel_setWithArray_1, array._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet initWithObjects_(NSObject firstObj) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObjects_1, firstObj._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet initWithSet_(NSSet set) { - final _ret = _lib._objc_msgSend_411(_id, _lib._sel_initWithSet_1, set._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSSet initWithSet_copyItems_(NSSet set, bool flag) { - final _ret = _lib._objc_msgSend_412( - _id, _lib._sel_initWithSet_copyItems_1, set._id, flag); - return NSSet._(_ret, _lib, retain: false, release: true); - } - - NSSet initWithArray_(NSArray array) { - final _ret = - _lib._objc_msgSend_125(_id, _lib._sel_initWithArray_1, array._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - NSObject valueForKey_(NSString key) { - final _ret = _lib._objc_msgSend_31(_id, _lib._sel_valueForKey_1, key._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - void setValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135( - _id, _lib._sel_setValue_forKey_1, value?._id ?? ffi.nullptr, key._id); - } - - @override - void addObserver_forKeyPath_options_context_(NSObject observer, - NSString keyPath, int options, ffi.Pointer context) { - _lib._objc_msgSend_139( - _id, - _lib._sel_addObserver_forKeyPath_options_context_1, - observer._id, - keyPath._id, - options, - context); - } - - @override - void removeObserver_forKeyPath_context_( - NSObject observer, NSString keyPath, ffi.Pointer context) { - _lib._objc_msgSend_140(_id, _lib._sel_removeObserver_forKeyPath_context_1, - observer._id, keyPath._id, context); - } - - @override - void removeObserver_forKeyPath_(NSObject observer, NSString keyPath) { - _lib._objc_msgSend_141( - _id, _lib._sel_removeObserver_forKeyPath_1, observer._id, keyPath._id); - } - - NSArray sortedArrayUsingDescriptors_(NSArray sortDescriptors) { - final _ret = _lib._objc_msgSend_68( - _id, _lib._sel_sortedArrayUsingDescriptors_1, sortDescriptors._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSSet filteredSetUsingPredicate_(NSPredicate predicate) { - final _ret = _lib._objc_msgSend_413( - _id, _lib._sel_filteredSetUsingPredicate_1, predicate._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static NSSet new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSSet1, _lib._sel_new1); - return NSSet._(_ret, _lib, retain: false, release: true); - } - - static NSSet allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSSet1, _lib._sel_allocWithZone_1, zone); - return NSSet._(_ret, _lib, retain: false, release: true); - } - - static NSSet alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSSet1, _lib._sel_alloc1); - return NSSet._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSSet1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSSet1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSSet1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSSet1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSSet1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSSet1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSSet1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSEnumerator extends NSObject { - NSEnumerator._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSEnumerator] that points to the same underlying object as [other]. - static NSEnumerator castFrom(T other) { - return NSEnumerator._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSEnumerator] that wraps the given raw object pointer. - static NSEnumerator castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSEnumerator._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSEnumerator]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSEnumerator1); - } - - NSObject? nextObject() { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_nextObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject get allObjects { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_allObjects1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - NSEnumerator init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - static NSEnumerator new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSEnumerator1, _lib._sel_new1); - return NSEnumerator._(_ret, _lib, retain: false, release: true); - } - - static NSEnumerator allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSEnumerator1, _lib._sel_allocWithZone_1, zone); - return NSEnumerator._(_ret, _lib, retain: false, release: true); - } - - static NSEnumerator alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSEnumerator1, _lib._sel_alloc1); - return NSEnumerator._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSEnumerator1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSEnumerator1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSEnumerator1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSEnumerator1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSEnumerator1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSEnumerator1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSEnumerator1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSEnumerator1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSEnumerator1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSString extends NSObject { - NSString._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSString] that points to the same underlying object as [other]. - static NSString castFrom(T other) { - return NSString._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSString] that wraps the given raw object pointer. - static NSString castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSString._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSString]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSString1); - } - - factory NSString(SwiftLibrary _lib, String str) { - final cstr = str.toNativeUtf16(); - final nsstr = stringWithCharacters_length_(_lib, cstr.cast(), str.length); - pkg_ffi.calloc.free(cstr); - return nsstr; - } - - @override - String toString() { - final data = - dataUsingEncoding_(0x94000100 /* NSUTF16LittleEndianStringEncoding */); - return data!.bytes.cast().toDartString(length: length); - } - - int get length { - return _lib._objc_msgSend_10(_id, _lib._sel_length1); - } - - int characterAtIndex_(int index) { - return _lib._objc_msgSend_18(_id, _lib._sel_characterAtIndex_1, index); - } - - @override - NSString init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString substringFromIndex_(int from) { - final _ret = - _lib._objc_msgSend_332(_id, _lib._sel_substringFromIndex_1, from); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString substringToIndex_(int to) { - final _ret = _lib._objc_msgSend_332(_id, _lib._sel_substringToIndex_1, to); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString substringWithRange_(_NSRange range) { - final _ret = - _lib._objc_msgSend_333(_id, _lib._sel_substringWithRange_1, range); - return NSString._(_ret, _lib, retain: true, release: true); - } - - void getCharacters_range_( - ffi.Pointer buffer, _NSRange range) { - _lib._objc_msgSend_334(_id, _lib._sel_getCharacters_range_1, buffer, range); - } - - int compare_(NSString string) { - return _lib._objc_msgSend_335(_id, _lib._sel_compare_1, string._id); - } - - int compare_options_(NSString string, int mask) { - return _lib._objc_msgSend_336( - _id, _lib._sel_compare_options_1, string._id, mask); - } - - int compare_options_range_( - NSString string, int mask, _NSRange rangeOfReceiverToCompare) { - return _lib._objc_msgSend_337(_id, _lib._sel_compare_options_range_1, - string._id, mask, rangeOfReceiverToCompare); - } - - int compare_options_range_locale_(NSString string, int mask, - _NSRange rangeOfReceiverToCompare, NSObject? locale) { - return _lib._objc_msgSend_338(_id, _lib._sel_compare_options_range_locale_1, - string._id, mask, rangeOfReceiverToCompare, locale?._id ?? ffi.nullptr); - } - - int caseInsensitiveCompare_(NSString string) { - return _lib._objc_msgSend_335( - _id, _lib._sel_caseInsensitiveCompare_1, string._id); - } - - int localizedCompare_(NSString string) { - return _lib._objc_msgSend_335( - _id, _lib._sel_localizedCompare_1, string._id); - } - - int localizedCaseInsensitiveCompare_(NSString string) { - return _lib._objc_msgSend_335( - _id, _lib._sel_localizedCaseInsensitiveCompare_1, string._id); - } - - int localizedStandardCompare_(NSString string) { - return _lib._objc_msgSend_335( - _id, _lib._sel_localizedStandardCompare_1, string._id); - } - - bool isEqualToString_(NSString aString) { - return _lib._objc_msgSend_64(_id, _lib._sel_isEqualToString_1, aString._id); - } - - bool hasPrefix_(NSString str) { - return _lib._objc_msgSend_64(_id, _lib._sel_hasPrefix_1, str._id); - } - - bool hasSuffix_(NSString str) { - return _lib._objc_msgSend_64(_id, _lib._sel_hasSuffix_1, str._id); - } - - NSString commonPrefixWithString_options_(NSString str, int mask) { - final _ret = _lib._objc_msgSend_339( - _id, _lib._sel_commonPrefixWithString_options_1, str._id, mask); - return NSString._(_ret, _lib, retain: true, release: true); - } - - bool containsString_(NSString str) { - return _lib._objc_msgSend_64(_id, _lib._sel_containsString_1, str._id); - } - - bool localizedCaseInsensitiveContainsString_(NSString str) { - return _lib._objc_msgSend_64( - _id, _lib._sel_localizedCaseInsensitiveContainsString_1, str._id); - } - - bool localizedStandardContainsString_(NSString str) { - return _lib._objc_msgSend_64( - _id, _lib._sel_localizedStandardContainsString_1, str._id); - } - - void localizedStandardRangeOfString_( - ffi.Pointer<_NSRange> stret, NSString str) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_340_stret( - stret, _id, _lib._sel_localizedStandardRangeOfString_1, str._id) - : stret.ref = _lib._objc_msgSend_340( - _id, _lib._sel_localizedStandardRangeOfString_1, str._id); - } - - void rangeOfString_(ffi.Pointer<_NSRange> stret, NSString searchString) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_340_stret( - stret, _id, _lib._sel_rangeOfString_1, searchString._id) - : stret.ref = _lib._objc_msgSend_340( - _id, _lib._sel_rangeOfString_1, searchString._id); - } - - void rangeOfString_options_( - ffi.Pointer<_NSRange> stret, NSString searchString, int mask) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_341_stret(stret, _id, - _lib._sel_rangeOfString_options_1, searchString._id, mask) - : stret.ref = _lib._objc_msgSend_341( - _id, _lib._sel_rangeOfString_options_1, searchString._id, mask); - } - - void rangeOfString_options_range_(ffi.Pointer<_NSRange> stret, - NSString searchString, int mask, _NSRange rangeOfReceiverToSearch) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_342_stret( - stret, - _id, - _lib._sel_rangeOfString_options_range_1, - searchString._id, - mask, - rangeOfReceiverToSearch) - : stret.ref = _lib._objc_msgSend_342( - _id, - _lib._sel_rangeOfString_options_range_1, - searchString._id, - mask, - rangeOfReceiverToSearch); - } - - void rangeOfString_options_range_locale_( - ffi.Pointer<_NSRange> stret, - NSString searchString, - int mask, - _NSRange rangeOfReceiverToSearch, - NSLocale? locale) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_343_stret( - stret, - _id, - _lib._sel_rangeOfString_options_range_locale_1, - searchString._id, - mask, - rangeOfReceiverToSearch, - locale?._id ?? ffi.nullptr) - : stret.ref = _lib._objc_msgSend_343( - _id, - _lib._sel_rangeOfString_options_range_locale_1, - searchString._id, - mask, - rangeOfReceiverToSearch, - locale?._id ?? ffi.nullptr); - } - - void rangeOfCharacterFromSet_( - ffi.Pointer<_NSRange> stret, NSCharacterSet searchSet) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_344_stret( - stret, _id, _lib._sel_rangeOfCharacterFromSet_1, searchSet._id) - : stret.ref = _lib._objc_msgSend_344( - _id, _lib._sel_rangeOfCharacterFromSet_1, searchSet._id); - } - - void rangeOfCharacterFromSet_options_( - ffi.Pointer<_NSRange> stret, NSCharacterSet searchSet, int mask) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_345_stret(stret, _id, - _lib._sel_rangeOfCharacterFromSet_options_1, searchSet._id, mask) - : stret.ref = _lib._objc_msgSend_345(_id, - _lib._sel_rangeOfCharacterFromSet_options_1, searchSet._id, mask); - } - - void rangeOfCharacterFromSet_options_range_(ffi.Pointer<_NSRange> stret, - NSCharacterSet searchSet, int mask, _NSRange rangeOfReceiverToSearch) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_346_stret( - stret, - _id, - _lib._sel_rangeOfCharacterFromSet_options_range_1, - searchSet._id, - mask, - rangeOfReceiverToSearch) - : stret.ref = _lib._objc_msgSend_346( - _id, - _lib._sel_rangeOfCharacterFromSet_options_range_1, - searchSet._id, - mask, - rangeOfReceiverToSearch); - } - - void rangeOfComposedCharacterSequenceAtIndex_( - ffi.Pointer<_NSRange> stret, int index) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_347_stret(stret, _id, - _lib._sel_rangeOfComposedCharacterSequenceAtIndex_1, index) - : stret.ref = _lib._objc_msgSend_347( - _id, _lib._sel_rangeOfComposedCharacterSequenceAtIndex_1, index); - } - - void rangeOfComposedCharacterSequencesForRange_( - ffi.Pointer<_NSRange> stret, _NSRange range) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_348_stret(stret, _id, - _lib._sel_rangeOfComposedCharacterSequencesForRange_1, range) - : stret.ref = _lib._objc_msgSend_348( - _id, _lib._sel_rangeOfComposedCharacterSequencesForRange_1, range); - } - - NSString stringByAppendingString_(NSString aString) { - final _ret = _lib._objc_msgSend_69( - _id, _lib._sel_stringByAppendingString_1, aString._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString stringByAppendingFormat_(NSString format) { - final _ret = _lib._objc_msgSend_69( - _id, _lib._sel_stringByAppendingFormat_1, format._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - double get doubleValue { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_doubleValue1) - : _lib._objc_msgSend_165(_id, _lib._sel_doubleValue1); - } - - double get floatValue { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_239_fpret(_id, _lib._sel_floatValue1) - : _lib._objc_msgSend_239(_id, _lib._sel_floatValue1); - } - - int get intValue { - return _lib._objc_msgSend_237(_id, _lib._sel_intValue1); - } - - int get integerValue { - return _lib._objc_msgSend_83(_id, _lib._sel_integerValue1); - } - - int get longLongValue { - return _lib._objc_msgSend_238(_id, _lib._sel_longLongValue1); - } - - bool get boolValue { - return _lib._objc_msgSend_12(_id, _lib._sel_boolValue1); - } - - NSString get uppercaseString { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_uppercaseString1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get lowercaseString { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_lowercaseString1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get capitalizedString { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_capitalizedString1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get localizedUppercaseString { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_localizedUppercaseString1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get localizedLowercaseString { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_localizedLowercaseString1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get localizedCapitalizedString { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_localizedCapitalizedString1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString uppercaseStringWithLocale_(NSLocale? locale) { - final _ret = _lib._objc_msgSend_349( - _id, _lib._sel_uppercaseStringWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString lowercaseStringWithLocale_(NSLocale? locale) { - final _ret = _lib._objc_msgSend_349( - _id, _lib._sel_lowercaseStringWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString capitalizedStringWithLocale_(NSLocale? locale) { - final _ret = _lib._objc_msgSend_349(_id, - _lib._sel_capitalizedStringWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - void getLineStart_end_contentsEnd_forRange_( - ffi.Pointer startPtr, - ffi.Pointer lineEndPtr, - ffi.Pointer contentsEndPtr, - _NSRange range) { - _lib._objc_msgSend_350( - _id, - _lib._sel_getLineStart_end_contentsEnd_forRange_1, - startPtr, - lineEndPtr, - contentsEndPtr, - range); - } - - void lineRangeForRange_(ffi.Pointer<_NSRange> stret, _NSRange range) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_348_stret( - stret, _id, _lib._sel_lineRangeForRange_1, range) - : stret.ref = - _lib._objc_msgSend_348(_id, _lib._sel_lineRangeForRange_1, range); - } - - void getParagraphStart_end_contentsEnd_forRange_( - ffi.Pointer startPtr, - ffi.Pointer parEndPtr, - ffi.Pointer contentsEndPtr, - _NSRange range) { - _lib._objc_msgSend_350( - _id, - _lib._sel_getParagraphStart_end_contentsEnd_forRange_1, - startPtr, - parEndPtr, - contentsEndPtr, - range); - } - - void paragraphRangeForRange_(ffi.Pointer<_NSRange> stret, _NSRange range) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_348_stret( - stret, _id, _lib._sel_paragraphRangeForRange_1, range) - : stret.ref = _lib._objc_msgSend_348( - _id, _lib._sel_paragraphRangeForRange_1, range); - } - - void enumerateSubstringsInRange_options_usingBlock_(_NSRange range, int opts, - ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool block) { - _lib._objc_msgSend_351( - _id, - _lib._sel_enumerateSubstringsInRange_options_usingBlock_1, - range, - opts, - block._id); - } - - void enumerateLinesUsingBlock_(ObjCBlock_ffiVoid_NSString_bool block) { - _lib._objc_msgSend_352( - _id, _lib._sel_enumerateLinesUsingBlock_1, block._id); - } - - ffi.Pointer get UTF8String { - return _lib._objc_msgSend_13(_id, _lib._sel_UTF8String1); - } - - int get fastestEncoding { - return _lib._objc_msgSend_10(_id, _lib._sel_fastestEncoding1); - } - - int get smallestEncoding { - return _lib._objc_msgSend_10(_id, _lib._sel_smallestEncoding1); - } - - NSData? dataUsingEncoding_allowLossyConversion_(int encoding, bool lossy) { - final _ret = _lib._objc_msgSend_353(_id, - _lib._sel_dataUsingEncoding_allowLossyConversion_1, encoding, lossy); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData? dataUsingEncoding_(int encoding) { - final _ret = - _lib._objc_msgSend_354(_id, _lib._sel_dataUsingEncoding_1, encoding); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - bool canBeConvertedToEncoding_(int encoding) { - return _lib._objc_msgSend_97( - _id, _lib._sel_canBeConvertedToEncoding_1, encoding); - } - - ffi.Pointer cStringUsingEncoding_(int encoding) { - return _lib._objc_msgSend_11( - _id, _lib._sel_cStringUsingEncoding_1, encoding); - } - - bool getCString_maxLength_encoding_( - ffi.Pointer buffer, int maxBufferCount, int encoding) { - return _lib._objc_msgSend_355( - _id, - _lib._sel_getCString_maxLength_encoding_1, - buffer, - maxBufferCount, - encoding); - } - - bool getBytes_maxLength_usedLength_encoding_options_range_remainingRange_( - ffi.Pointer buffer, - int maxBufferCount, - ffi.Pointer usedBufferCount, - int encoding, - int options, - _NSRange range, - ffi.Pointer<_NSRange> leftover) { - return _lib._objc_msgSend_356( - _id, - _lib._sel_getBytes_maxLength_usedLength_encoding_options_range_remainingRange_1, - buffer, - maxBufferCount, - usedBufferCount, - encoding, - options, - range, - leftover); - } - - int maximumLengthOfBytesUsingEncoding_(int enc) { - return _lib._objc_msgSend_94( - _id, _lib._sel_maximumLengthOfBytesUsingEncoding_1, enc); - } - - int lengthOfBytesUsingEncoding_(int enc) { - return _lib._objc_msgSend_94( - _id, _lib._sel_lengthOfBytesUsingEncoding_1, enc); - } - - static ffi.Pointer getAvailableStringEncodings( - SwiftLibrary _lib) { - return _lib._objc_msgSend_357( - _lib._class_NSString1, _lib._sel_availableStringEncodings1); - } - - static NSString localizedNameOfStringEncoding_( - SwiftLibrary _lib, int encoding) { - final _ret = _lib._objc_msgSend_332(_lib._class_NSString1, - _lib._sel_localizedNameOfStringEncoding_1, encoding); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static int getDefaultCStringEncoding(SwiftLibrary _lib) { - return _lib._objc_msgSend_10( - _lib._class_NSString1, _lib._sel_defaultCStringEncoding1); - } - - NSString get decomposedStringWithCanonicalMapping { - final _ret = _lib._objc_msgSend_21( - _id, _lib._sel_decomposedStringWithCanonicalMapping1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get precomposedStringWithCanonicalMapping { - final _ret = _lib._objc_msgSend_21( - _id, _lib._sel_precomposedStringWithCanonicalMapping1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get decomposedStringWithCompatibilityMapping { - final _ret = _lib._objc_msgSend_21( - _id, _lib._sel_decomposedStringWithCompatibilityMapping1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get precomposedStringWithCompatibilityMapping { - final _ret = _lib._objc_msgSend_21( - _id, _lib._sel_precomposedStringWithCompatibilityMapping1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray componentsSeparatedByString_(NSString separator) { - final _ret = _lib._objc_msgSend_358( - _id, _lib._sel_componentsSeparatedByString_1, separator._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray componentsSeparatedByCharactersInSet_(NSCharacterSet separator) { - final _ret = _lib._objc_msgSend_359( - _id, _lib._sel_componentsSeparatedByCharactersInSet_1, separator._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString stringByTrimmingCharactersInSet_(NSCharacterSet set) { - final _ret = _lib._objc_msgSend_360( - _id, _lib._sel_stringByTrimmingCharactersInSet_1, set._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString stringByPaddingToLength_withString_startingAtIndex_( - int newLength, NSString padString, int padIndex) { - final _ret = _lib._objc_msgSend_361( - _id, - _lib._sel_stringByPaddingToLength_withString_startingAtIndex_1, - newLength, - padString._id, - padIndex); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString stringByFoldingWithOptions_locale_(int options, NSLocale? locale) { - final _ret = _lib._objc_msgSend_362( - _id, - _lib._sel_stringByFoldingWithOptions_locale_1, - options, - locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString stringByReplacingOccurrencesOfString_withString_options_range_( - NSString target, - NSString replacement, - int options, - _NSRange searchRange) { - final _ret = _lib._objc_msgSend_363( - _id, - _lib._sel_stringByReplacingOccurrencesOfString_withString_options_range_1, - target._id, - replacement._id, - options, - searchRange); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString stringByReplacingOccurrencesOfString_withString_( - NSString target, NSString replacement) { - final _ret = _lib._objc_msgSend_364( - _id, - _lib._sel_stringByReplacingOccurrencesOfString_withString_1, - target._id, - replacement._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString stringByReplacingCharactersInRange_withString_( - _NSRange range, NSString replacement) { - final _ret = _lib._objc_msgSend_365( - _id, - _lib._sel_stringByReplacingCharactersInRange_withString_1, - range, - replacement._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? stringByApplyingTransform_reverse_( - NSString transform, bool reverse) { - final _ret = _lib._objc_msgSend_366(_id, - _lib._sel_stringByApplyingTransform_reverse_1, transform._id, reverse); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - bool writeToURL_atomically_encoding_error_(NSURL url, bool useAuxiliaryFile, - int enc, ffi.Pointer> error) { - return _lib._objc_msgSend_367( - _id, - _lib._sel_writeToURL_atomically_encoding_error_1, - url._id, - useAuxiliaryFile, - enc, - error); - } - - bool writeToFile_atomically_encoding_error_( - NSString path, - bool useAuxiliaryFile, - int enc, - ffi.Pointer> error) { - return _lib._objc_msgSend_368( - _id, - _lib._sel_writeToFile_atomically_encoding_error_1, - path._id, - useAuxiliaryFile, - enc, - error); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - int get hash { - return _lib._objc_msgSend_10(_id, _lib._sel_hash1); - } - - NSString initWithCharactersNoCopy_length_freeWhenDone_( - ffi.Pointer characters, int length, bool freeBuffer) { - final _ret = _lib._objc_msgSend_369( - _id, - _lib._sel_initWithCharactersNoCopy_length_freeWhenDone_1, - characters, - length, - freeBuffer); - return NSString._(_ret, _lib, retain: false, release: true); - } - - NSString initWithCharactersNoCopy_length_deallocator_( - ffi.Pointer chars, - int len, - ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong? deallocator) { - final _ret = _lib._objc_msgSend_370( - _id, - _lib._sel_initWithCharactersNoCopy_length_deallocator_1, - chars, - len, - deallocator?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: false, release: true); - } - - NSString initWithCharacters_length_( - ffi.Pointer characters, int length) { - final _ret = _lib._objc_msgSend_371( - _id, _lib._sel_initWithCharacters_length_1, characters, length); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithUTF8String_(ffi.Pointer nullTerminatedCString) { - final _ret = _lib._objc_msgSend_372( - _id, _lib._sel_initWithUTF8String_1, nullTerminatedCString); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString initWithString_(NSString aString) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithString_1, aString._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString initWithFormat_(NSString format) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithFormat_1, format._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString initWithFormat_arguments_( - NSString format, ffi.Pointer<__va_list_tag> argList) { - final _ret = _lib._objc_msgSend_373( - _id, _lib._sel_initWithFormat_arguments_1, format._id, argList); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString initWithFormat_locale_(NSString format, NSObject? locale) { - final _ret = _lib._objc_msgSend_374(_id, _lib._sel_initWithFormat_locale_1, - format._id, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString initWithFormat_locale_arguments_( - NSString format, NSObject? locale, ffi.Pointer<__va_list_tag> argList) { - final _ret = _lib._objc_msgSend_375( - _id, - _lib._sel_initWithFormat_locale_arguments_1, - format._id, - locale?._id ?? ffi.nullptr, - argList); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithValidatedFormat_validFormatSpecifiers_error_( - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_376( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_error_1, - format._id, - validFormatSpecifiers._id, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithValidatedFormat_validFormatSpecifiers_locale_error_( - NSString format, - NSString validFormatSpecifiers, - NSObject? locale, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_377( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_1, - format._id, - validFormatSpecifiers._id, - locale?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithValidatedFormat_validFormatSpecifiers_arguments_error_( - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer<__va_list_tag> argList, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_378( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_1, - format._id, - validFormatSpecifiers._id, - argList, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? - initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_( - NSString format, - NSString validFormatSpecifiers, - NSObject? locale, - ffi.Pointer<__va_list_tag> argList, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_379( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_1, - format._id, - validFormatSpecifiers._id, - locale?._id ?? ffi.nullptr, - argList, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithData_encoding_(NSData data, int encoding) { - final _ret = _lib._objc_msgSend_380( - _id, _lib._sel_initWithData_encoding_1, data._id, encoding); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithBytes_length_encoding_( - ffi.Pointer bytes, int len, int encoding) { - final _ret = _lib._objc_msgSend_381( - _id, _lib._sel_initWithBytes_length_encoding_1, bytes, len, encoding); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithBytesNoCopy_length_encoding_freeWhenDone_( - ffi.Pointer bytes, int len, int encoding, bool freeBuffer) { - final _ret = _lib._objc_msgSend_382( - _id, - _lib._sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1, - bytes, - len, - encoding, - freeBuffer); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: false, release: true); - } - - NSString? initWithBytesNoCopy_length_encoding_deallocator_( - ffi.Pointer bytes, - int len, - int encoding, - ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { - final _ret = _lib._objc_msgSend_383( - _id, - _lib._sel_initWithBytesNoCopy_length_encoding_deallocator_1, - bytes, - len, - encoding, - deallocator?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: false, release: true); - } - - static NSString string(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSString1, _lib._sel_string1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString stringWithString_(SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSString1, _lib._sel_stringWithString_1, string._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString stringWithCharacters_length_(SwiftLibrary _lib, - ffi.Pointer characters, int length) { - final _ret = _lib._objc_msgSend_371(_lib._class_NSString1, - _lib._sel_stringWithCharacters_length_1, characters, length); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? stringWithUTF8String_( - SwiftLibrary _lib, ffi.Pointer nullTerminatedCString) { - final _ret = _lib._objc_msgSend_372(_lib._class_NSString1, - _lib._sel_stringWithUTF8String_1, nullTerminatedCString); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString stringWithFormat_(SwiftLibrary _lib, NSString format) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSString1, _lib._sel_stringWithFormat_1, format._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString localizedStringWithFormat_( - SwiftLibrary _lib, NSString format) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSString1, - _lib._sel_localizedStringWithFormat_1, format._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? stringWithValidatedFormat_validFormatSpecifiers_error_( - SwiftLibrary _lib, - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_376( - _lib._class_NSString1, - _lib._sel_stringWithValidatedFormat_validFormatSpecifiers_error_1, - format._id, - validFormatSpecifiers._id, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? - localizedStringWithValidatedFormat_validFormatSpecifiers_error_( - SwiftLibrary _lib, - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_376( - _lib._class_NSString1, - _lib._sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_1, - format._id, - validFormatSpecifiers._id, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithCString_encoding_( - ffi.Pointer nullTerminatedCString, int encoding) { - final _ret = _lib._objc_msgSend_384(_id, - _lib._sel_initWithCString_encoding_1, nullTerminatedCString, encoding); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? stringWithCString_encoding_( - SwiftLibrary _lib, ffi.Pointer cString, int enc) { - final _ret = _lib._objc_msgSend_384(_lib._class_NSString1, - _lib._sel_stringWithCString_encoding_1, cString, enc); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithContentsOfURL_encoding_error_( - NSURL url, int enc, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_385(_id, - _lib._sel_initWithContentsOfURL_encoding_error_1, url._id, enc, error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithContentsOfFile_encoding_error_( - NSString path, int enc, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_386( - _id, - _lib._sel_initWithContentsOfFile_encoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? stringWithContentsOfURL_encoding_error_(SwiftLibrary _lib, - NSURL url, int enc, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_385( - _lib._class_NSString1, - _lib._sel_stringWithContentsOfURL_encoding_error_1, - url._id, - enc, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? stringWithContentsOfFile_encoding_error_(SwiftLibrary _lib, - NSString path, int enc, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_386( - _lib._class_NSString1, - _lib._sel_stringWithContentsOfFile_encoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithContentsOfURL_usedEncoding_error_( - NSURL url, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_387( - _id, - _lib._sel_initWithContentsOfURL_usedEncoding_error_1, - url._id, - enc, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? initWithContentsOfFile_usedEncoding_error_( - NSString path, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_388( - _id, - _lib._sel_initWithContentsOfFile_usedEncoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? stringWithContentsOfURL_usedEncoding_error_( - SwiftLibrary _lib, - NSURL url, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_387( - _lib._class_NSString1, - _lib._sel_stringWithContentsOfURL_usedEncoding_error_1, - url._id, - enc, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? stringWithContentsOfFile_usedEncoding_error_( - SwiftLibrary _lib, - NSString path, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_388( - _lib._class_NSString1, - _lib._sel_stringWithContentsOfFile_usedEncoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static int - stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_( - SwiftLibrary _lib, - NSData data, - NSDictionary? opts, - ffi.Pointer> string, - ffi.Pointer usedLossyConversion) { - return _lib._objc_msgSend_389( - _lib._class_NSString1, - _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1, - data._id, - opts?._id ?? ffi.nullptr, - string, - usedLossyConversion); - } - - NSObject propertyList() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_propertyList1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? propertyListFromStringsFileFormat() { - final _ret = _lib._objc_msgSend_390( - _id, _lib._sel_propertyListFromStringsFileFormat1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - ffi.Pointer cString() { - return _lib._objc_msgSend_13(_id, _lib._sel_cString1); - } - - ffi.Pointer lossyCString() { - return _lib._objc_msgSend_13(_id, _lib._sel_lossyCString1); - } - - int cStringLength() { - return _lib._objc_msgSend_10(_id, _lib._sel_cStringLength1); - } - - void getCString_(ffi.Pointer bytes) { - _lib._objc_msgSend_290(_id, _lib._sel_getCString_1, bytes); - } - - void getCString_maxLength_(ffi.Pointer bytes, int maxLength) { - _lib._objc_msgSend_391( - _id, _lib._sel_getCString_maxLength_1, bytes, maxLength); - } - - void getCString_maxLength_range_remainingRange_(ffi.Pointer bytes, - int maxLength, _NSRange aRange, ffi.Pointer<_NSRange> leftoverRange) { - _lib._objc_msgSend_392( - _id, - _lib._sel_getCString_maxLength_range_remainingRange_1, - bytes, - maxLength, - aRange, - leftoverRange); - } - - bool writeToFile_atomically_(NSString path, bool useAuxiliaryFile) { - return _lib._objc_msgSend_26( - _id, _lib._sel_writeToFile_atomically_1, path._id, useAuxiliaryFile); - } - - bool writeToURL_atomically_(NSURL url, bool atomically) { - return _lib._objc_msgSend_134( - _id, _lib._sel_writeToURL_atomically_1, url._id, atomically); - } - - NSObject? initWithContentsOfFile_(NSString path) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_initWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_277(_id, _lib._sel_initWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? stringWithContentsOfFile_(SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_38( - _lib._class_NSString1, _lib._sel_stringWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? stringWithContentsOfURL_(SwiftLibrary _lib, NSURL url) { - final _ret = _lib._objc_msgSend_277( - _lib._class_NSString1, _lib._sel_stringWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithCStringNoCopy_length_freeWhenDone_( - ffi.Pointer bytes, int length, bool freeBuffer) { - final _ret = _lib._objc_msgSend_393( - _id, - _lib._sel_initWithCStringNoCopy_length_freeWhenDone_1, - bytes, - length, - freeBuffer); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: false, release: true); - } - - NSObject? initWithCString_length_(ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_384( - _id, _lib._sel_initWithCString_length_1, bytes, length); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithCString_(ffi.Pointer bytes) { - final _ret = - _lib._objc_msgSend_372(_id, _lib._sel_initWithCString_1, bytes); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? stringWithCString_length_( - SwiftLibrary _lib, ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_384(_lib._class_NSString1, - _lib._sel_stringWithCString_length_1, bytes, length); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? stringWithCString_( - SwiftLibrary _lib, ffi.Pointer bytes) { - final _ret = _lib._objc_msgSend_372( - _lib._class_NSString1, _lib._sel_stringWithCString_1, bytes); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void getCharacters_(ffi.Pointer buffer) { - _lib._objc_msgSend_394(_id, _lib._sel_getCharacters_1, buffer); - } - - NSString variantFittingPresentationWidth_(int width) { - final _ret = _lib._objc_msgSend_395( - _id, _lib._sel_variantFittingPresentationWidth_1, width); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString pathWithComponents_(SwiftLibrary _lib, NSArray components) { - final _ret = _lib._objc_msgSend_396( - _lib._class_NSString1, _lib._sel_pathWithComponents_1, components._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray get pathComponents { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_pathComponents1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - bool get absolutePath { - return _lib._objc_msgSend_12(_id, _lib._sel_isAbsolutePath1); - } - - NSString get lastPathComponent { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_lastPathComponent1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get stringByDeletingLastPathComponent { - final _ret = _lib._objc_msgSend_21( - _id, _lib._sel_stringByDeletingLastPathComponent1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString stringByAppendingPathComponent_(NSString str) { - final _ret = _lib._objc_msgSend_69( - _id, _lib._sel_stringByAppendingPathComponent_1, str._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get pathExtension { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_pathExtension1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get stringByDeletingPathExtension { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_stringByDeletingPathExtension1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? stringByAppendingPathExtension_(NSString str) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_stringByAppendingPathExtension_1, str._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get stringByAbbreviatingWithTildeInPath { - final _ret = _lib._objc_msgSend_21( - _id, _lib._sel_stringByAbbreviatingWithTildeInPath1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get stringByExpandingTildeInPath { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_stringByExpandingTildeInPath1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get stringByStandardizingPath { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_stringByStandardizingPath1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get stringByResolvingSymlinksInPath { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_stringByResolvingSymlinksInPath1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray stringsByAppendingPaths_(NSArray paths) { - final _ret = _lib._objc_msgSend_68( - _id, _lib._sel_stringsByAppendingPaths_1, paths._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - int completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_( - ffi.Pointer> outputName, - bool flag, - ffi.Pointer> outputArray, - NSArray? filterTypes) { - return _lib._objc_msgSend_397( - _id, - _lib._sel_completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_1, - outputName, - flag, - outputArray, - filterTypes?._id ?? ffi.nullptr); - } - - ffi.Pointer get fileSystemRepresentation { - return _lib._objc_msgSend_13(_id, _lib._sel_fileSystemRepresentation1); - } - - bool getFileSystemRepresentation_maxLength_( - ffi.Pointer cname, int max) { - return _lib._objc_msgSend_242( - _id, _lib._sel_getFileSystemRepresentation_maxLength_1, cname, max); - } - - NSString? stringByAddingPercentEncodingWithAllowedCharacters_( - NSCharacterSet allowedCharacters) { - final _ret = _lib._objc_msgSend_398( - _id, - _lib._sel_stringByAddingPercentEncodingWithAllowedCharacters_1, - allowedCharacters._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get stringByRemovingPercentEncoding { - final _ret = - _lib._objc_msgSend_44(_id, _lib._sel_stringByRemovingPercentEncoding1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? stringByAddingPercentEscapesUsingEncoding_(int enc) { - final _ret = _lib._objc_msgSend_399( - _id, _lib._sel_stringByAddingPercentEscapesUsingEncoding_1, enc); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? stringByReplacingPercentEscapesUsingEncoding_(int enc) { - final _ret = _lib._objc_msgSend_399( - _id, _lib._sel_stringByReplacingPercentEscapesUsingEncoding_1, enc); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray linguisticTagsInRange_scheme_options_orthography_tokenRanges_( - _NSRange range, - NSString scheme, - int options, - NSOrthography? orthography, - ffi.Pointer> tokenRanges) { - final _ret = _lib._objc_msgSend_401( - _id, - _lib._sel_linguisticTagsInRange_scheme_options_orthography_tokenRanges_1, - range, - scheme._id, - options, - orthography?._id ?? ffi.nullptr, - tokenRanges); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - void enumerateLinguisticTagsInRange_scheme_options_orthography_usingBlock_( - _NSRange range, - NSString scheme, - int options, - NSOrthography? orthography, - ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool block) { - _lib._objc_msgSend_402( - _id, - _lib._sel_enumerateLinguisticTagsInRange_scheme_options_orthography_usingBlock_1, - range, - scheme._id, - options, - orthography?._id ?? ffi.nullptr, - block._id); - } - - static NSString new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSString1, _lib._sel_new1); - return NSString._(_ret, _lib, retain: false, release: true); - } - - static NSString allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSString1, _lib._sel_allocWithZone_1, zone); - return NSString._(_ret, _lib, retain: false, release: true); - } - - static NSString alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSString1, _lib._sel_alloc1); - return NSString._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSString1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSString1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSString1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSString1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSString1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSString1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSString1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -extension StringToNSString on String { - NSString toNSString(SwiftLibrary lib) => NSString(lib, this); -} - -class NSCoder extends NSObject { - NSCoder._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSCoder] that points to the same underlying object as [other]. - static NSCoder castFrom(T other) { - return NSCoder._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSCoder] that wraps the given raw object pointer. - static NSCoder castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSCoder._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSCoder]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSCoder1); - } - - void encodeValueOfObjCType_at_( - ffi.Pointer type, ffi.Pointer addr) { - _lib._objc_msgSend_19( - _id, _lib._sel_encodeValueOfObjCType_at_1, type, addr); - } - - void encodeDataObject_(NSData data) { - _lib._objc_msgSend_285(_id, _lib._sel_encodeDataObject_1, data._id); - } - - NSData? decodeDataObject() { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_decodeDataObject1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - void decodeValueOfObjCType_at_size_( - ffi.Pointer type, ffi.Pointer data, int size) { - _lib._objc_msgSend_287( - _id, _lib._sel_decodeValueOfObjCType_at_size_1, type, data, size); - } - - int versionForClassName_(NSString className) { - return _lib._objc_msgSend_288( - _id, _lib._sel_versionForClassName_1, className._id); - } - - void encodeObject_(NSObject? object) { - _lib._objc_msgSend_289( - _id, _lib._sel_encodeObject_1, object?._id ?? ffi.nullptr); - } - - void encodeRootObject_(NSObject rootObject) { - _lib._objc_msgSend_15(_id, _lib._sel_encodeRootObject_1, rootObject._id); - } - - void encodeBycopyObject_(NSObject? anObject) { - _lib._objc_msgSend_289( - _id, _lib._sel_encodeBycopyObject_1, anObject?._id ?? ffi.nullptr); - } - - void encodeByrefObject_(NSObject? anObject) { - _lib._objc_msgSend_289( - _id, _lib._sel_encodeByrefObject_1, anObject?._id ?? ffi.nullptr); - } - - void encodeConditionalObject_(NSObject? object) { - _lib._objc_msgSend_289( - _id, _lib._sel_encodeConditionalObject_1, object?._id ?? ffi.nullptr); - } - - void encodeValuesOfObjCTypes_(ffi.Pointer types) { - _lib._objc_msgSend_290(_id, _lib._sel_encodeValuesOfObjCTypes_1, types); - } - - void encodeArrayOfObjCType_count_at_( - ffi.Pointer type, int count, ffi.Pointer array) { - _lib._objc_msgSend_291( - _id, _lib._sel_encodeArrayOfObjCType_count_at_1, type, count, array); - } - - void encodeBytes_length_(ffi.Pointer byteaddr, int length) { - _lib._objc_msgSend_22( - _id, _lib._sel_encodeBytes_length_1, byteaddr, length); - } - - NSObject? decodeObject() { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_decodeObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? decodeTopLevelObjectAndReturnError_( - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_292( - _id, _lib._sel_decodeTopLevelObjectAndReturnError_1, error); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void decodeValuesOfObjCTypes_(ffi.Pointer types) { - _lib._objc_msgSend_290(_id, _lib._sel_decodeValuesOfObjCTypes_1, types); - } - - void decodeArrayOfObjCType_count_at_( - ffi.Pointer itemType, int count, ffi.Pointer array) { - _lib._objc_msgSend_291(_id, _lib._sel_decodeArrayOfObjCType_count_at_1, - itemType, count, array); - } - - ffi.Pointer decodeBytesWithReturnedLength_( - ffi.Pointer lengthp) { - return _lib._objc_msgSend_293( - _id, _lib._sel_decodeBytesWithReturnedLength_1, lengthp); - } - - void encodePropertyList_(NSObject aPropertyList) { - _lib._objc_msgSend_15( - _id, _lib._sel_encodePropertyList_1, aPropertyList._id); - } - - NSObject? decodePropertyList() { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_decodePropertyList1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void setObjectZone_(ffi.Pointer<_NSZone> zone) { - _lib._objc_msgSend_294(_id, _lib._sel_setObjectZone_1, zone); - } - - ffi.Pointer<_NSZone> objectZone() { - return _lib._objc_msgSend_295(_id, _lib._sel_objectZone1); - } - - int get systemVersion { - return _lib._objc_msgSend_214(_id, _lib._sel_systemVersion1); - } - - bool get allowsKeyedCoding { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsKeyedCoding1); - } - - void encodeObject_forKey_(NSObject? object, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_encodeObject_forKey_1, - object?._id ?? ffi.nullptr, key._id); - } - - void encodeConditionalObject_forKey_(NSObject? object, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_encodeConditionalObject_forKey_1, - object?._id ?? ffi.nullptr, key._id); - } - - void encodeBool_forKey_(bool value, NSString key) { - _lib._objc_msgSend_296(_id, _lib._sel_encodeBool_forKey_1, value, key._id); - } - - void encodeInt_forKey_(int value, NSString key) { - _lib._objc_msgSend_297(_id, _lib._sel_encodeInt_forKey_1, value, key._id); - } - - void encodeInt32_forKey_(int value, NSString key) { - _lib._objc_msgSend_298(_id, _lib._sel_encodeInt32_forKey_1, value, key._id); - } - - void encodeInt64_forKey_(int value, NSString key) { - _lib._objc_msgSend_299(_id, _lib._sel_encodeInt64_forKey_1, value, key._id); - } - - void encodeFloat_forKey_(double value, NSString key) { - _lib._objc_msgSend_300(_id, _lib._sel_encodeFloat_forKey_1, value, key._id); - } - - void encodeDouble_forKey_(double value, NSString key) { - _lib._objc_msgSend_301( - _id, _lib._sel_encodeDouble_forKey_1, value, key._id); - } - - void encodeBytes_length_forKey_( - ffi.Pointer bytes, int length, NSString key) { - _lib._objc_msgSend_302( - _id, _lib._sel_encodeBytes_length_forKey_1, bytes, length, key._id); - } - - bool containsValueForKey_(NSString key) { - return _lib._objc_msgSend_64(_id, _lib._sel_containsValueForKey_1, key._id); - } - - NSObject? decodeObjectForKey_(NSString key) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_decodeObjectForKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? decodeTopLevelObjectForKey_error_( - NSString key, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_303( - _id, _lib._sel_decodeTopLevelObjectForKey_error_1, key._id, error); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - bool decodeBoolForKey_(NSString key) { - return _lib._objc_msgSend_64(_id, _lib._sel_decodeBoolForKey_1, key._id); - } - - int decodeIntForKey_(NSString key) { - return _lib._objc_msgSend_304(_id, _lib._sel_decodeIntForKey_1, key._id); - } - - int decodeInt32ForKey_(NSString key) { - return _lib._objc_msgSend_305(_id, _lib._sel_decodeInt32ForKey_1, key._id); - } - - int decodeInt64ForKey_(NSString key) { - return _lib._objc_msgSend_306(_id, _lib._sel_decodeInt64ForKey_1, key._id); - } - - double decodeFloatForKey_(NSString key) { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_307_fpret( - _id, _lib._sel_decodeFloatForKey_1, key._id) - : _lib._objc_msgSend_307(_id, _lib._sel_decodeFloatForKey_1, key._id); - } - - double decodeDoubleForKey_(NSString key) { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_308_fpret( - _id, _lib._sel_decodeDoubleForKey_1, key._id) - : _lib._objc_msgSend_308(_id, _lib._sel_decodeDoubleForKey_1, key._id); - } - - ffi.Pointer decodeBytesForKey_returnedLength_( - NSString key, ffi.Pointer lengthp) { - return _lib._objc_msgSend_309( - _id, _lib._sel_decodeBytesForKey_returnedLength_1, key._id, lengthp); - } - - void encodeInteger_forKey_(int value, NSString key) { - _lib._objc_msgSend_310( - _id, _lib._sel_encodeInteger_forKey_1, value, key._id); - } - - int decodeIntegerForKey_(NSString key) { - return _lib._objc_msgSend_288( - _id, _lib._sel_decodeIntegerForKey_1, key._id); - } - - bool get requiresSecureCoding { - return _lib._objc_msgSend_12(_id, _lib._sel_requiresSecureCoding1); - } - - NSObject? decodeObjectOfClass_forKey_(NSObject aClass, NSString key) { - final _ret = _lib._objc_msgSend_311( - _id, _lib._sel_decodeObjectOfClass_forKey_1, aClass._id, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? decodeTopLevelObjectOfClass_forKey_error_(NSObject aClass, - NSString key, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_312( - _id, - _lib._sel_decodeTopLevelObjectOfClass_forKey_error_1, - aClass._id, - key._id, - error); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSArray? decodeArrayOfObjectsOfClass_forKey_(NSObject cls, NSString key) { - final _ret = _lib._objc_msgSend_313( - _id, _lib._sel_decodeArrayOfObjectsOfClass_forKey_1, cls._id, key._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? decodeDictionaryWithKeysOfClass_objectsOfClass_forKey_( - NSObject keyCls, NSObject objectCls, NSString key) { - final _ret = _lib._objc_msgSend_314( - _id, - _lib._sel_decodeDictionaryWithKeysOfClass_objectsOfClass_forKey_1, - keyCls._id, - objectCls._id, - key._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSObject? decodeObjectOfClasses_forKey_(NSSet? classes, NSString key) { - final _ret = _lib._objc_msgSend_315( - _id, - _lib._sel_decodeObjectOfClasses_forKey_1, - classes?._id ?? ffi.nullptr, - key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? decodeTopLevelObjectOfClasses_forKey_error_(NSSet? classes, - NSString key, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_316( - _id, - _lib._sel_decodeTopLevelObjectOfClasses_forKey_error_1, - classes?._id ?? ffi.nullptr, - key._id, - error); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSArray? decodeArrayOfObjectsOfClasses_forKey_(NSSet classes, NSString key) { - final _ret = _lib._objc_msgSend_317(_id, - _lib._sel_decodeArrayOfObjectsOfClasses_forKey_1, classes._id, key._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? decodeDictionaryWithKeysOfClasses_objectsOfClasses_forKey_( - NSSet keyClasses, NSSet objectClasses, NSString key) { - final _ret = _lib._objc_msgSend_318( - _id, - _lib._sel_decodeDictionaryWithKeysOfClasses_objectsOfClasses_forKey_1, - keyClasses._id, - objectClasses._id, - key._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSObject? decodePropertyListForKey_(NSString key) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_decodePropertyListForKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSSet? get allowedClasses { - final _ret = _lib._objc_msgSend_319(_id, _lib._sel_allowedClasses1); - return _ret.address == 0 - ? null - : NSSet._(_ret, _lib, retain: true, release: true); - } - - void failWithError_(NSError error) { - _lib._objc_msgSend_320(_id, _lib._sel_failWithError_1, error._id); - } - - int get decodingFailurePolicy { - return _lib._objc_msgSend_321(_id, _lib._sel_decodingFailurePolicy1); - } - - NSError? get error { - final _ret = _lib._objc_msgSend_322(_id, _lib._sel_error1); - return _ret.address == 0 - ? null - : NSError._(_ret, _lib, retain: true, release: true); - } - - void encodeNXObject_(NSObject object) { - _lib._objc_msgSend_15(_id, _lib._sel_encodeNXObject_1, object._id); - } - - NSObject? decodeNXObject() { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_decodeNXObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void decodeValueOfObjCType_at_( - ffi.Pointer type, ffi.Pointer data) { - _lib._objc_msgSend_19( - _id, _lib._sel_decodeValueOfObjCType_at_1, type, data); - } - - void encodePoint_(CGPoint point) { - _lib._objc_msgSend_323(_id, _lib._sel_encodePoint_1, point); - } - - void decodePoint(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_59_stret(stret, _id, _lib._sel_decodePoint1) - : stret.ref = _lib._objc_msgSend_59(_id, _lib._sel_decodePoint1); - } - - void encodeSize_(CGSize size) { - _lib._objc_msgSend_324(_id, _lib._sel_encodeSize_1, size); - } - - void decodeSize(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_60_stret(stret, _id, _lib._sel_decodeSize1) - : stret.ref = _lib._objc_msgSend_60(_id, _lib._sel_decodeSize1); - } - - void encodeRect_(CGRect rect) { - _lib._objc_msgSend_325(_id, _lib._sel_encodeRect_1, rect); - } - - void decodeRect(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_61_stret(stret, _id, _lib._sel_decodeRect1) - : stret.ref = _lib._objc_msgSend_61(_id, _lib._sel_decodeRect1); - } - - void encodePoint_forKey_(CGPoint point, NSString key) { - _lib._objc_msgSend_326(_id, _lib._sel_encodePoint_forKey_1, point, key._id); - } - - void encodeSize_forKey_(CGSize size, NSString key) { - _lib._objc_msgSend_327(_id, _lib._sel_encodeSize_forKey_1, size, key._id); - } - - void encodeRect_forKey_(CGRect rect, NSString key) { - _lib._objc_msgSend_328(_id, _lib._sel_encodeRect_forKey_1, rect, key._id); - } - - void decodePointForKey_(ffi.Pointer stret, NSString key) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_329_stret( - stret, _id, _lib._sel_decodePointForKey_1, key._id) - : stret.ref = - _lib._objc_msgSend_329(_id, _lib._sel_decodePointForKey_1, key._id); - } - - void decodeSizeForKey_(ffi.Pointer stret, NSString key) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_330_stret( - stret, _id, _lib._sel_decodeSizeForKey_1, key._id) - : stret.ref = - _lib._objc_msgSend_330(_id, _lib._sel_decodeSizeForKey_1, key._id); - } - - void decodeRectForKey_(ffi.Pointer stret, NSString key) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_331_stret( - stret, _id, _lib._sel_decodeRectForKey_1, key._id) - : stret.ref = - _lib._objc_msgSend_331(_id, _lib._sel_decodeRectForKey_1, key._id); - } - - @override - NSCoder init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSCoder._(_ret, _lib, retain: true, release: true); - } - - static NSCoder new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSCoder1, _lib._sel_new1); - return NSCoder._(_ret, _lib, retain: false, release: true); - } - - static NSCoder allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSCoder1, _lib._sel_allocWithZone_1, zone); - return NSCoder._(_ret, _lib, retain: false, release: true); - } - - static NSCoder alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSCoder1, _lib._sel_alloc1); - return NSCoder._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSCoder1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSCoder1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSCoder1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSCoder1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSCoder1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSCoder1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSCoder1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSCoder1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSCoder1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSData extends NSObject { - NSData._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSData] that points to the same underlying object as [other]. - static NSData castFrom(T other) { - return NSData._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSData] that wraps the given raw object pointer. - static NSData castFromPointer(SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSData._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSData]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSData1); - } - - int get length { - return _lib._objc_msgSend_10(_id, _lib._sel_length1); - } - - ffi.Pointer get bytes { - return _lib._objc_msgSend_20(_id, _lib._sel_bytes1); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - void getBytes_length_(ffi.Pointer buffer, int length) { - _lib._objc_msgSend_22(_id, _lib._sel_getBytes_length_1, buffer, length); - } - - void getBytes_range_(ffi.Pointer buffer, _NSRange range) { - _lib._objc_msgSend_23(_id, _lib._sel_getBytes_range_1, buffer, range); - } - - bool isEqualToData_(NSData other) { - return _lib._objc_msgSend_24(_id, _lib._sel_isEqualToData_1, other._id); - } - - NSData subdataWithRange_(_NSRange range) { - final _ret = - _lib._objc_msgSend_25(_id, _lib._sel_subdataWithRange_1, range); - return NSData._(_ret, _lib, retain: true, release: true); - } - - bool writeToFile_atomically_(NSString path, bool useAuxiliaryFile) { - return _lib._objc_msgSend_26( - _id, _lib._sel_writeToFile_atomically_1, path._id, useAuxiliaryFile); - } - - bool writeToURL_atomically_(NSURL url, bool atomically) { - return _lib._objc_msgSend_134( - _id, _lib._sel_writeToURL_atomically_1, url._id, atomically); - } - - bool writeToFile_options_error_(NSString path, int writeOptionsMask, - ffi.Pointer> errorPtr) { - return _lib._objc_msgSend_269(_id, _lib._sel_writeToFile_options_error_1, - path._id, writeOptionsMask, errorPtr); - } - - bool writeToURL_options_error_(NSURL url, int writeOptionsMask, - ffi.Pointer> errorPtr) { - return _lib._objc_msgSend_270(_id, _lib._sel_writeToURL_options_error_1, - url._id, writeOptionsMask, errorPtr); - } - - void rangeOfData_options_range_(ffi.Pointer<_NSRange> stret, - NSData dataToFind, int mask, _NSRange searchRange) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_271_stret( - stret, - _id, - _lib._sel_rangeOfData_options_range_1, - dataToFind._id, - mask, - searchRange) - : stret.ref = _lib._objc_msgSend_271( - _id, - _lib._sel_rangeOfData_options_range_1, - dataToFind._id, - mask, - searchRange); - } - - void enumerateByteRangesUsingBlock_( - ObjCBlock_ffiVoid_ffiVoid_NSRange_bool block) { - _lib._objc_msgSend_272( - _id, _lib._sel_enumerateByteRangesUsingBlock_1, block._id); - } - - static NSData data(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSData1, _lib._sel_data1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - static NSData dataWithBytes_length_( - SwiftLibrary _lib, ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273( - _lib._class_NSData1, _lib._sel_dataWithBytes_length_1, bytes, length); - return NSData._(_ret, _lib, retain: true, release: true); - } - - static NSData dataWithBytesNoCopy_length_( - SwiftLibrary _lib, ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273(_lib._class_NSData1, - _lib._sel_dataWithBytesNoCopy_length_1, bytes, length); - return NSData._(_ret, _lib, retain: false, release: true); - } - - static NSData dataWithBytesNoCopy_length_freeWhenDone_( - SwiftLibrary _lib, ffi.Pointer bytes, int length, bool b) { - final _ret = _lib._objc_msgSend_274(_lib._class_NSData1, - _lib._sel_dataWithBytesNoCopy_length_freeWhenDone_1, bytes, length, b); - return NSData._(_ret, _lib, retain: false, release: true); - } - - static NSData? dataWithContentsOfFile_options_error_( - SwiftLibrary _lib, - NSString path, - int readOptionsMask, - ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_275( - _lib._class_NSData1, - _lib._sel_dataWithContentsOfFile_options_error_1, - path._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - static NSData? dataWithContentsOfURL_options_error_( - SwiftLibrary _lib, - NSURL url, - int readOptionsMask, - ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_276( - _lib._class_NSData1, - _lib._sel_dataWithContentsOfURL_options_error_1, - url._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - static NSData? dataWithContentsOfFile_(SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_38( - _lib._class_NSData1, _lib._sel_dataWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - static NSData? dataWithContentsOfURL_(SwiftLibrary _lib, NSURL url) { - final _ret = _lib._objc_msgSend_277( - _lib._class_NSData1, _lib._sel_dataWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData initWithBytes_length_(ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273( - _id, _lib._sel_initWithBytes_length_1, bytes, length); - return NSData._(_ret, _lib, retain: true, release: true); - } - - NSData initWithBytesNoCopy_length_(ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273( - _id, _lib._sel_initWithBytesNoCopy_length_1, bytes, length); - return NSData._(_ret, _lib, retain: false, release: true); - } - - NSData initWithBytesNoCopy_length_freeWhenDone_( - ffi.Pointer bytes, int length, bool b) { - final _ret = _lib._objc_msgSend_274(_id, - _lib._sel_initWithBytesNoCopy_length_freeWhenDone_1, bytes, length, b); - return NSData._(_ret, _lib, retain: false, release: true); - } - - NSData initWithBytesNoCopy_length_deallocator_(ffi.Pointer bytes, - int length, ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { - final _ret = _lib._objc_msgSend_278( - _id, - _lib._sel_initWithBytesNoCopy_length_deallocator_1, - bytes, - length, - deallocator?._id ?? ffi.nullptr); - return NSData._(_ret, _lib, retain: false, release: true); - } - - NSData? initWithContentsOfFile_options_error_(NSString path, - int readOptionsMask, ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_275( - _id, - _lib._sel_initWithContentsOfFile_options_error_1, - path._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData? initWithContentsOfURL_options_error_(NSURL url, int readOptionsMask, - ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_276( - _id, - _lib._sel_initWithContentsOfURL_options_error_1, - url._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData? initWithContentsOfFile_(NSString path) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_initWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_277(_id, _lib._sel_initWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData initWithData_(NSData data) { - final _ret = - _lib._objc_msgSend_279(_id, _lib._sel_initWithData_1, data._id); - return NSData._(_ret, _lib, retain: true, release: true); - } - - static NSData dataWithData_(SwiftLibrary _lib, NSData data) { - final _ret = _lib._objc_msgSend_279( - _lib._class_NSData1, _lib._sel_dataWithData_1, data._id); - return NSData._(_ret, _lib, retain: true, release: true); - } - - NSData? initWithBase64EncodedString_options_( - NSString base64String, int options) { - final _ret = _lib._objc_msgSend_280( - _id, - _lib._sel_initWithBase64EncodedString_options_1, - base64String._id, - options); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSString base64EncodedStringWithOptions_(int options) { - final _ret = _lib._objc_msgSend_281( - _id, _lib._sel_base64EncodedStringWithOptions_1, options); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSData? initWithBase64EncodedData_options_(NSData base64Data, int options) { - final _ret = _lib._objc_msgSend_282(_id, - _lib._sel_initWithBase64EncodedData_options_1, base64Data._id, options); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData base64EncodedDataWithOptions_(int options) { - final _ret = _lib._objc_msgSend_283( - _id, _lib._sel_base64EncodedDataWithOptions_1, options); - return NSData._(_ret, _lib, retain: true, release: true); - } - - NSData? decompressedDataUsingAlgorithm_error_( - int algorithm, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_284(_id, - _lib._sel_decompressedDataUsingAlgorithm_error_1, algorithm, error); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData? compressedDataUsingAlgorithm_error_( - int algorithm, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_284( - _id, _lib._sel_compressedDataUsingAlgorithm_error_1, algorithm, error); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - void getBytes_(ffi.Pointer buffer) { - _lib._objc_msgSend_52(_id, _lib._sel_getBytes_1, buffer); - } - - static NSObject? dataWithContentsOfMappedFile_( - SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSData1, - _lib._sel_dataWithContentsOfMappedFile_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithContentsOfMappedFile_(NSString path) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_initWithContentsOfMappedFile_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithBase64Encoding_(NSString base64String) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_initWithBase64Encoding_1, base64String._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSString base64Encoding() { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_base64Encoding1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - @override - NSData init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - static NSData new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSData1, _lib._sel_new1); - return NSData._(_ret, _lib, retain: false, release: true); - } - - static NSData allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSData1, _lib._sel_allocWithZone_1, zone); - return NSData._(_ret, _lib, retain: false, release: true); - } - - static NSData alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSData1, _lib._sel_alloc1); - return NSData._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSData1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSData1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSData1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSData1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSData1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSData1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSData1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSData1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSData1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -final class _NSRange extends ffi.Struct { - @ffi.UnsignedLong() - external int location; - - @ffi.UnsignedLong() - external int length; -} - -class NSURL extends NSObject { - NSURL._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSURL] that points to the same underlying object as [other]. - static NSURL castFrom(T other) { - return NSURL._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSURL] that wraps the given raw object pointer. - static NSURL castFromPointer(SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURL._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSURL]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURL1); - } - - NSURL? initWithScheme_host_path_( - NSString scheme, NSString? host, NSString path) { - final _ret = _lib._objc_msgSend_27( - _id, - _lib._sel_initWithScheme_host_path_1, - scheme._id, - host?._id ?? ffi.nullptr, - path._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL initFileURLWithPath_isDirectory_relativeToURL_( - NSString path, bool isDir, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_28( - _id, - _lib._sel_initFileURLWithPath_isDirectory_relativeToURL_1, - path._id, - isDir, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL initFileURLWithPath_relativeToURL_(NSString path, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_29( - _id, - _lib._sel_initFileURLWithPath_relativeToURL_1, - path._id, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL initFileURLWithPath_isDirectory_(NSString path, bool isDir) { - final _ret = _lib._objc_msgSend_30( - _id, _lib._sel_initFileURLWithPath_isDirectory_1, path._id, isDir); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL initFileURLWithPath_(NSString path) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initFileURLWithPath_1, path._id); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL fileURLWithPath_isDirectory_relativeToURL_( - SwiftLibrary _lib, NSString path, bool isDir, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_32( - _lib._class_NSURL1, - _lib._sel_fileURLWithPath_isDirectory_relativeToURL_1, - path._id, - isDir, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL fileURLWithPath_relativeToURL_( - SwiftLibrary _lib, NSString path, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_33( - _lib._class_NSURL1, - _lib._sel_fileURLWithPath_relativeToURL_1, - path._id, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL fileURLWithPath_isDirectory_( - SwiftLibrary _lib, NSString path, bool isDir) { - final _ret = _lib._objc_msgSend_34(_lib._class_NSURL1, - _lib._sel_fileURLWithPath_isDirectory_1, path._id, isDir); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL fileURLWithPath_(SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_35( - _lib._class_NSURL1, _lib._sel_fileURLWithPath_1, path._id); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_( - ffi.Pointer path, bool isDir, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_36( - _id, - _lib._sel_initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1, - path, - isDir, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_( - SwiftLibrary _lib, - ffi.Pointer path, - bool isDir, - NSURL? baseURL) { - final _ret = _lib._objc_msgSend_37( - _lib._class_NSURL1, - _lib._sel_fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1, - path, - isDir, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? initWithString_(NSString URLString) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_initWithString_1, URLString._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? initWithString_relativeToURL_(NSString URLString, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_39( - _id, - _lib._sel_initWithString_relativeToURL_1, - URLString._id, - baseURL?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL? URLWithString_(SwiftLibrary _lib, NSString URLString) { - final _ret = _lib._objc_msgSend_38( - _lib._class_NSURL1, _lib._sel_URLWithString_1, URLString._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL? URLWithString_relativeToURL_( - SwiftLibrary _lib, NSString URLString, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_39( - _lib._class_NSURL1, - _lib._sel_URLWithString_relativeToURL_1, - URLString._id, - baseURL?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? initWithString_encodingInvalidCharacters_( - NSString URLString, bool encodingInvalidCharacters) { - final _ret = _lib._objc_msgSend_40( - _id, - _lib._sel_initWithString_encodingInvalidCharacters_1, - URLString._id, - encodingInvalidCharacters); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL? URLWithString_encodingInvalidCharacters_( - SwiftLibrary _lib, NSString URLString, bool encodingInvalidCharacters) { - final _ret = _lib._objc_msgSend_40( - _lib._class_NSURL1, - _lib._sel_URLWithString_encodingInvalidCharacters_1, - URLString._id, - encodingInvalidCharacters); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL initWithDataRepresentation_relativeToURL_(NSData data, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_41( - _id, - _lib._sel_initWithDataRepresentation_relativeToURL_1, - data._id, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL URLWithDataRepresentation_relativeToURL_( - SwiftLibrary _lib, NSData data, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_42( - _lib._class_NSURL1, - _lib._sel_URLWithDataRepresentation_relativeToURL_1, - data._id, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL initAbsoluteURLWithDataRepresentation_relativeToURL_( - NSData data, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_41( - _id, - _lib._sel_initAbsoluteURLWithDataRepresentation_relativeToURL_1, - data._id, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL absoluteURLWithDataRepresentation_relativeToURL_( - SwiftLibrary _lib, NSData data, NSURL? baseURL) { - final _ret = _lib._objc_msgSend_42( - _lib._class_NSURL1, - _lib._sel_absoluteURLWithDataRepresentation_relativeToURL_1, - data._id, - baseURL?._id ?? ffi.nullptr); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSData get dataRepresentation { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_dataRepresentation1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - NSString? get absoluteString { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_absoluteString1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get relativeString { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_relativeString1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSURL? get baseURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_baseURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? get absoluteURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_absoluteURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSString? get scheme { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_scheme1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get resourceSpecifier { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_resourceSpecifier1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get host { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_host1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSNumber? get port { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_port1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSString? get user { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_user1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get password { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_password1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get path { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_path1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get fragment { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_fragment1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get parameterString { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_parameterString1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get query { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_query1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get relativePath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_relativePath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - bool get hasDirectoryPath { - return _lib._objc_msgSend_12(_id, _lib._sel_hasDirectoryPath1); - } - - bool getFileSystemRepresentation_maxLength_( - ffi.Pointer buffer, int maxBufferLength) { - return _lib._objc_msgSend_242( - _id, - _lib._sel_getFileSystemRepresentation_maxLength_1, - buffer, - maxBufferLength); - } - - ffi.Pointer get fileSystemRepresentation { - return _lib._objc_msgSend_13(_id, _lib._sel_fileSystemRepresentation1); - } - - bool get fileURL { - return _lib._objc_msgSend_12(_id, _lib._sel_isFileURL1); - } - - NSURL? get standardizedURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_standardizedURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - bool isFileReferenceURL() { - return _lib._objc_msgSend_12(_id, _lib._sel_isFileReferenceURL1); - } - - NSURL? fileReferenceURL() { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_fileReferenceURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? get filePathURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_filePathURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - bool getResourceValue_forKey_error_( - ffi.Pointer> value, - NSString key, - ffi.Pointer> error) { - return _lib._objc_msgSend_243( - _id, _lib._sel_getResourceValue_forKey_error_1, value, key._id, error); - } - - NSObject? resourceValuesForKeys_error_( - NSArray keys, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_244( - _id, _lib._sel_resourceValuesForKeys_error_1, keys._id, error); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - bool setResourceValue_forKey_error_(NSObject? value, NSString key, - ffi.Pointer> error) { - return _lib._objc_msgSend_245( - _id, - _lib._sel_setResourceValue_forKey_error_1, - value?._id ?? ffi.nullptr, - key._id, - error); - } - - bool setResourceValues_error_( - NSObject keyedValues, ffi.Pointer> error) { - return _lib._objc_msgSend_246( - _id, _lib._sel_setResourceValues_error_1, keyedValues._id, error); - } - - void removeCachedResourceValueForKey_(NSString key) { - _lib._objc_msgSend_247( - _id, _lib._sel_removeCachedResourceValueForKey_1, key._id); - } - - void removeAllCachedResourceValues() { - _lib._objc_msgSend_1(_id, _lib._sel_removeAllCachedResourceValues1); - } - - void setTemporaryResourceValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_setTemporaryResourceValue_forKey_1, - value?._id ?? ffi.nullptr, key._id); - } - - NSData? - bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_( - int options, - NSArray? keys, - NSURL? relativeURL, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_248( - _id, - _lib._sel_bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_1, - options, - keys?._id ?? ffi.nullptr, - relativeURL?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSURL? - initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_( - NSData bookmarkData, - int options, - NSURL? relativeURL, - ffi.Pointer isStale, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_249( - _id, - _lib._sel_initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1, - bookmarkData._id, - options, - relativeURL?._id ?? ffi.nullptr, - isStale, - error); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL? - URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_( - SwiftLibrary _lib, - NSData bookmarkData, - int options, - NSURL? relativeURL, - ffi.Pointer isStale, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_249( - _lib._class_NSURL1, - _lib._sel_URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1, - bookmarkData._id, - options, - relativeURL?._id ?? ffi.nullptr, - isStale, - error); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSObject? resourceValuesForKeys_fromBookmarkData_( - SwiftLibrary _lib, NSArray keys, NSData bookmarkData) { - final _ret = _lib._objc_msgSend_250( - _lib._class_NSURL1, - _lib._sel_resourceValuesForKeys_fromBookmarkData_1, - keys._id, - bookmarkData._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static bool writeBookmarkData_toURL_options_error_( - SwiftLibrary _lib, - NSData bookmarkData, - NSURL bookmarkFileURL, - int options, - ffi.Pointer> error) { - return _lib._objc_msgSend_251( - _lib._class_NSURL1, - _lib._sel_writeBookmarkData_toURL_options_error_1, - bookmarkData._id, - bookmarkFileURL._id, - options, - error); - } - - static NSData? bookmarkDataWithContentsOfURL_error_(SwiftLibrary _lib, - NSURL bookmarkFileURL, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_252( - _lib._class_NSURL1, - _lib._sel_bookmarkDataWithContentsOfURL_error_1, - bookmarkFileURL._id, - error); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - static NSURL? URLByResolvingAliasFileAtURL_options_error_(SwiftLibrary _lib, - NSURL url, int options, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_253( - _lib._class_NSURL1, - _lib._sel_URLByResolvingAliasFileAtURL_options_error_1, - url._id, - options, - error); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - bool startAccessingSecurityScopedResource() { - return _lib._objc_msgSend_12( - _id, _lib._sel_startAccessingSecurityScopedResource1); - } - - void stopAccessingSecurityScopedResource() { - _lib._objc_msgSend_1(_id, _lib._sel_stopAccessingSecurityScopedResource1); - } - - bool getPromisedItemResourceValue_forKey_error_( - ffi.Pointer> value, - NSString key, - ffi.Pointer> error) { - return _lib._objc_msgSend_243( - _id, - _lib._sel_getPromisedItemResourceValue_forKey_error_1, - value, - key._id, - error); - } - - NSDictionary? promisedItemResourceValuesForKeys_error_( - NSArray keys, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_254(_id, - _lib._sel_promisedItemResourceValuesForKeys_error_1, keys._id, error); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - bool checkPromisedItemIsReachableAndReturnError_( - ffi.Pointer> error) { - return _lib._objc_msgSend_255( - _id, _lib._sel_checkPromisedItemIsReachableAndReturnError_1, error); - } - - static NSURL? fileURLWithPathComponents_( - SwiftLibrary _lib, NSArray components) { - final _ret = _lib._objc_msgSend_256(_lib._class_NSURL1, - _lib._sel_fileURLWithPathComponents_1, components._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSArray? get pathComponents { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_pathComponents1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString? get lastPathComponent { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_lastPathComponent1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get pathExtension { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_pathExtension1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSURL? URLByAppendingPathComponent_(NSString pathComponent) { - final _ret = _lib._objc_msgSend_257( - _id, _lib._sel_URLByAppendingPathComponent_1, pathComponent._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? URLByAppendingPathComponent_isDirectory_( - NSString pathComponent, bool isDirectory) { - final _ret = _lib._objc_msgSend_258( - _id, - _lib._sel_URLByAppendingPathComponent_isDirectory_1, - pathComponent._id, - isDirectory); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? get URLByDeletingLastPathComponent { - final _ret = - _lib._objc_msgSend_45(_id, _lib._sel_URLByDeletingLastPathComponent1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? URLByAppendingPathExtension_(NSString pathExtension) { - final _ret = _lib._objc_msgSend_257( - _id, _lib._sel_URLByAppendingPathExtension_1, pathExtension._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? get URLByDeletingPathExtension { - final _ret = - _lib._objc_msgSend_45(_id, _lib._sel_URLByDeletingPathExtension1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - bool checkResourceIsReachableAndReturnError_( - ffi.Pointer> error) { - return _lib._objc_msgSend_255( - _id, _lib._sel_checkResourceIsReachableAndReturnError_1, error); - } - - NSURL? get URLByStandardizingPath { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_URLByStandardizingPath1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? get URLByResolvingSymlinksInPath { - final _ret = - _lib._objc_msgSend_45(_id, _lib._sel_URLByResolvingSymlinksInPath1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSData? resourceDataUsingCache_(bool shouldUseCache) { - final _ret = _lib._objc_msgSend_259( - _id, _lib._sel_resourceDataUsingCache_1, shouldUseCache); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - void loadResourceDataNotifyingClient_usingCache_( - NSObject client, bool shouldUseCache) { - _lib._objc_msgSend_260( - _id, - _lib._sel_loadResourceDataNotifyingClient_usingCache_1, - client._id, - shouldUseCache); - } - - NSObject? propertyForKey_(NSString propertyKey) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_propertyForKey_1, propertyKey._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - bool setResourceData_(NSData data) { - return _lib._objc_msgSend_24(_id, _lib._sel_setResourceData_1, data._id); - } - - bool setProperty_forKey_(NSObject property, NSString propertyKey) { - return _lib._objc_msgSend_261( - _id, _lib._sel_setProperty_forKey_1, property._id, propertyKey._id); - } - - NSURLHandle? URLHandleUsingCache_(bool shouldUseCache) { - final _ret = _lib._objc_msgSend_268( - _id, _lib._sel_URLHandleUsingCache_1, shouldUseCache); - return _ret.address == 0 - ? null - : NSURLHandle._(_ret, _lib, retain: true, release: true); - } - - @override - NSURL init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - static NSURL new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURL1, _lib._sel_new1); - return NSURL._(_ret, _lib, retain: false, release: true); - } - - static NSURL allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURL1, _lib._sel_allocWithZone_1, zone); - return NSURL._(_ret, _lib, retain: false, release: true); - } - - static NSURL alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURL1, _lib._sel_alloc1); - return NSURL._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURL1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURL1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURL1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURL1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURL1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURL1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURL1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURL1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURL1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSNumber extends NSValue { - NSNumber._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSNumber] that points to the same underlying object as [other]. - static NSNumber castFrom(T other) { - return NSNumber._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSNumber] that wraps the given raw object pointer. - static NSNumber castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSNumber._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSNumber]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSNumber1); - } - - @override - NSNumber? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithChar_(int value) { - final _ret = _lib._objc_msgSend_220(_id, _lib._sel_initWithChar_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithUnsignedChar_(int value) { - final _ret = - _lib._objc_msgSend_221(_id, _lib._sel_initWithUnsignedChar_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithShort_(int value) { - final _ret = _lib._objc_msgSend_222(_id, _lib._sel_initWithShort_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithUnsignedShort_(int value) { - final _ret = - _lib._objc_msgSend_223(_id, _lib._sel_initWithUnsignedShort_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithInt_(int value) { - final _ret = _lib._objc_msgSend_224(_id, _lib._sel_initWithInt_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithUnsignedInt_(int value) { - final _ret = - _lib._objc_msgSend_225(_id, _lib._sel_initWithUnsignedInt_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithLong_(int value) { - final _ret = _lib._objc_msgSend_226(_id, _lib._sel_initWithLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithUnsignedLong_(int value) { - final _ret = - _lib._objc_msgSend_227(_id, _lib._sel_initWithUnsignedLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithLongLong_(int value) { - final _ret = - _lib._objc_msgSend_228(_id, _lib._sel_initWithLongLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithUnsignedLongLong_(int value) { - final _ret = _lib._objc_msgSend_229( - _id, _lib._sel_initWithUnsignedLongLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithFloat_(double value) { - final _ret = _lib._objc_msgSend_230(_id, _lib._sel_initWithFloat_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithDouble_(double value) { - final _ret = _lib._objc_msgSend_231(_id, _lib._sel_initWithDouble_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithBool_(bool value) { - final _ret = _lib._objc_msgSend_232(_id, _lib._sel_initWithBool_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithInteger_(int value) { - final _ret = - _lib._objc_msgSend_226(_id, _lib._sel_initWithInteger_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber initWithUnsignedInteger_(int value) { - final _ret = - _lib._objc_msgSend_227(_id, _lib._sel_initWithUnsignedInteger_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - int get charValue { - return _lib._objc_msgSend_233(_id, _lib._sel_charValue1); - } - - int get unsignedCharValue { - return _lib._objc_msgSend_234(_id, _lib._sel_unsignedCharValue1); - } - - int get shortValue { - return _lib._objc_msgSend_235(_id, _lib._sel_shortValue1); - } - - int get unsignedShortValue { - return _lib._objc_msgSend_236(_id, _lib._sel_unsignedShortValue1); - } - - int get intValue { - return _lib._objc_msgSend_237(_id, _lib._sel_intValue1); - } - - int get unsignedIntValue { - return _lib._objc_msgSend_214(_id, _lib._sel_unsignedIntValue1); - } - - int get longValue { - return _lib._objc_msgSend_83(_id, _lib._sel_longValue1); - } - - int get unsignedLongValue { - return _lib._objc_msgSend_10(_id, _lib._sel_unsignedLongValue1); - } - - int get longLongValue { - return _lib._objc_msgSend_238(_id, _lib._sel_longLongValue1); - } - - int get unsignedLongLongValue { - return _lib._objc_msgSend_164(_id, _lib._sel_unsignedLongLongValue1); - } - - double get floatValue { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_239_fpret(_id, _lib._sel_floatValue1) - : _lib._objc_msgSend_239(_id, _lib._sel_floatValue1); - } - - double get doubleValue { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_doubleValue1) - : _lib._objc_msgSend_165(_id, _lib._sel_doubleValue1); - } - - bool get boolValue { - return _lib._objc_msgSend_12(_id, _lib._sel_boolValue1); - } - - int get integerValue { - return _lib._objc_msgSend_83(_id, _lib._sel_integerValue1); - } - - int get unsignedIntegerValue { - return _lib._objc_msgSend_10(_id, _lib._sel_unsignedIntegerValue1); - } - - NSString get stringValue { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_stringValue1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - int compare_(NSNumber otherNumber) { - return _lib._objc_msgSend_240(_id, _lib._sel_compare_1, otherNumber._id); - } - - bool isEqualToNumber_(NSNumber number) { - return _lib._objc_msgSend_241(_id, _lib._sel_isEqualToNumber_1, number._id); - } - - NSString descriptionWithLocale_(NSObject? locale) { - final _ret = _lib._objc_msgSend_70( - _id, _lib._sel_descriptionWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithChar_(SwiftLibrary _lib, int value) { - final _ret = _lib._objc_msgSend_220( - _lib._class_NSNumber1, _lib._sel_numberWithChar_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithUnsignedChar_(SwiftLibrary _lib, int value) { - final _ret = _lib._objc_msgSend_221( - _lib._class_NSNumber1, _lib._sel_numberWithUnsignedChar_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithShort_(SwiftLibrary _lib, int value) { - final _ret = _lib._objc_msgSend_222( - _lib._class_NSNumber1, _lib._sel_numberWithShort_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithUnsignedShort_(SwiftLibrary _lib, int value) { - final _ret = _lib._objc_msgSend_223( - _lib._class_NSNumber1, _lib._sel_numberWithUnsignedShort_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithInt_(SwiftLibrary _lib, int value) { - final _ret = _lib._objc_msgSend_224( - _lib._class_NSNumber1, _lib._sel_numberWithInt_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithUnsignedInt_(SwiftLibrary _lib, int value) { - final _ret = _lib._objc_msgSend_225( - _lib._class_NSNumber1, _lib._sel_numberWithUnsignedInt_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithLong_(SwiftLibrary _lib, int value) { - final _ret = _lib._objc_msgSend_226( - _lib._class_NSNumber1, _lib._sel_numberWithLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithUnsignedLong_(SwiftLibrary _lib, int value) { - final _ret = _lib._objc_msgSend_227( - _lib._class_NSNumber1, _lib._sel_numberWithUnsignedLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithLongLong_(SwiftLibrary _lib, int value) { - final _ret = _lib._objc_msgSend_228( - _lib._class_NSNumber1, _lib._sel_numberWithLongLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithUnsignedLongLong_(SwiftLibrary _lib, int value) { - final _ret = _lib._objc_msgSend_229( - _lib._class_NSNumber1, _lib._sel_numberWithUnsignedLongLong_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithFloat_(SwiftLibrary _lib, double value) { - final _ret = _lib._objc_msgSend_230( - _lib._class_NSNumber1, _lib._sel_numberWithFloat_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithDouble_(SwiftLibrary _lib, double value) { - final _ret = _lib._objc_msgSend_231( - _lib._class_NSNumber1, _lib._sel_numberWithDouble_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithBool_(SwiftLibrary _lib, bool value) { - final _ret = _lib._objc_msgSend_232( - _lib._class_NSNumber1, _lib._sel_numberWithBool_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithInteger_(SwiftLibrary _lib, int value) { - final _ret = _lib._objc_msgSend_226( - _lib._class_NSNumber1, _lib._sel_numberWithInteger_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber numberWithUnsignedInteger_(SwiftLibrary _lib, int value) { - final _ret = _lib._objc_msgSend_227( - _lib._class_NSNumber1, _lib._sel_numberWithUnsignedInteger_1, value); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - @override - NSNumber initWithBytes_objCType_( - ffi.Pointer value, ffi.Pointer type) { - final _ret = _lib._objc_msgSend_46( - _id, _lib._sel_initWithBytes_objCType_1, value, type); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithBytes_objCType_(SwiftLibrary _lib, - ffi.Pointer value, ffi.Pointer type) { - final _ret = _lib._objc_msgSend_48(_lib._class_NSNumber1, - _lib._sel_valueWithBytes_objCType_1, value, type); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue value_withObjCType_(SwiftLibrary _lib, - ffi.Pointer value, ffi.Pointer type) { - final _ret = _lib._objc_msgSend_48( - _lib._class_NSNumber1, _lib._sel_value_withObjCType_1, value, type); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithNonretainedObject_( - SwiftLibrary _lib, NSObject? anObject) { - final _ret = _lib._objc_msgSend_49(_lib._class_NSNumber1, - _lib._sel_valueWithNonretainedObject_1, anObject?._id ?? ffi.nullptr); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithPointer_( - SwiftLibrary _lib, ffi.Pointer pointer) { - final _ret = _lib._objc_msgSend_50( - _lib._class_NSNumber1, _lib._sel_valueWithPointer_1, pointer); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithRange_(SwiftLibrary _lib, _NSRange range) { - final _ret = _lib._objc_msgSend_53( - _lib._class_NSNumber1, _lib._sel_valueWithRange_1, range); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithPoint_(SwiftLibrary _lib, CGPoint point) { - final _ret = _lib._objc_msgSend_55( - _lib._class_NSNumber1, _lib._sel_valueWithPoint_1, point); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithSize_(SwiftLibrary _lib, CGSize size) { - final _ret = _lib._objc_msgSend_56( - _lib._class_NSNumber1, _lib._sel_valueWithSize_1, size); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithRect_(SwiftLibrary _lib, CGRect rect) { - final _ret = _lib._objc_msgSend_57( - _lib._class_NSNumber1, _lib._sel_valueWithRect_1, rect); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithEdgeInsets_(SwiftLibrary _lib, NSEdgeInsets insets) { - final _ret = _lib._objc_msgSend_58( - _lib._class_NSNumber1, _lib._sel_valueWithEdgeInsets_1, insets); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - @override - NSNumber init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSNumber new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSNumber1, _lib._sel_new1); - return NSNumber._(_ret, _lib, retain: false, release: true); - } - - static NSNumber allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSNumber1, _lib._sel_allocWithZone_1, zone); - return NSNumber._(_ret, _lib, retain: false, release: true); - } - - static NSNumber alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSNumber1, _lib._sel_alloc1); - return NSNumber._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSNumber1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSNumber1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSNumber1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSNumber1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSNumber1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSNumber1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSNumber1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSNumber1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSNumber1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSValue extends NSObject { - NSValue._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSValue] that points to the same underlying object as [other]. - static NSValue castFrom(T other) { - return NSValue._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSValue] that wraps the given raw object pointer. - static NSValue castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSValue._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSValue]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSValue1); - } - - void getValue_size_(ffi.Pointer value, int size) { - _lib._objc_msgSend_22(_id, _lib._sel_getValue_size_1, value, size); - } - - ffi.Pointer get objCType { - return _lib._objc_msgSend_13(_id, _lib._sel_objCType1); - } - - NSValue initWithBytes_objCType_( - ffi.Pointer value, ffi.Pointer type) { - final _ret = _lib._objc_msgSend_46( - _id, _lib._sel_initWithBytes_objCType_1, value, type); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - NSValue? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithBytes_objCType_(SwiftLibrary _lib, - ffi.Pointer value, ffi.Pointer type) { - final _ret = _lib._objc_msgSend_48( - _lib._class_NSValue1, _lib._sel_valueWithBytes_objCType_1, value, type); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue value_withObjCType_(SwiftLibrary _lib, - ffi.Pointer value, ffi.Pointer type) { - final _ret = _lib._objc_msgSend_48( - _lib._class_NSValue1, _lib._sel_value_withObjCType_1, value, type); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithNonretainedObject_( - SwiftLibrary _lib, NSObject? anObject) { - final _ret = _lib._objc_msgSend_49(_lib._class_NSValue1, - _lib._sel_valueWithNonretainedObject_1, anObject?._id ?? ffi.nullptr); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - NSObject? get nonretainedObjectValue { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_nonretainedObjectValue1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithPointer_( - SwiftLibrary _lib, ffi.Pointer pointer) { - final _ret = _lib._objc_msgSend_50( - _lib._class_NSValue1, _lib._sel_valueWithPointer_1, pointer); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - ffi.Pointer get pointerValue { - return _lib._objc_msgSend_20(_id, _lib._sel_pointerValue1); - } - - bool isEqualToValue_(NSValue value) { - return _lib._objc_msgSend_51(_id, _lib._sel_isEqualToValue_1, value._id); - } - - void getValue_(ffi.Pointer value) { - _lib._objc_msgSend_52(_id, _lib._sel_getValue_1, value); - } - - static NSValue valueWithRange_(SwiftLibrary _lib, _NSRange range) { - final _ret = _lib._objc_msgSend_53( - _lib._class_NSValue1, _lib._sel_valueWithRange_1, range); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - void getRangeValue(ffi.Pointer<_NSRange> stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_54_stret(stret, _id, _lib._sel_rangeValue1) - : stret.ref = _lib._objc_msgSend_54(_id, _lib._sel_rangeValue1); - } - - static NSValue valueWithPoint_(SwiftLibrary _lib, CGPoint point) { - final _ret = _lib._objc_msgSend_55( - _lib._class_NSValue1, _lib._sel_valueWithPoint_1, point); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithSize_(SwiftLibrary _lib, CGSize size) { - final _ret = _lib._objc_msgSend_56( - _lib._class_NSValue1, _lib._sel_valueWithSize_1, size); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithRect_(SwiftLibrary _lib, CGRect rect) { - final _ret = _lib._objc_msgSend_57( - _lib._class_NSValue1, _lib._sel_valueWithRect_1, rect); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue valueWithEdgeInsets_(SwiftLibrary _lib, NSEdgeInsets insets) { - final _ret = _lib._objc_msgSend_58( - _lib._class_NSValue1, _lib._sel_valueWithEdgeInsets_1, insets); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - void getPointValue(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_59_stret(stret, _id, _lib._sel_pointValue1) - : stret.ref = _lib._objc_msgSend_59(_id, _lib._sel_pointValue1); - } - - void getSizeValue(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_60_stret(stret, _id, _lib._sel_sizeValue1) - : stret.ref = _lib._objc_msgSend_60(_id, _lib._sel_sizeValue1); - } - - void getRectValue(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_61_stret(stret, _id, _lib._sel_rectValue1) - : stret.ref = _lib._objc_msgSend_61(_id, _lib._sel_rectValue1); - } - - void getEdgeInsetsValue(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_62_stret(stret, _id, _lib._sel_edgeInsetsValue1) - : stret.ref = _lib._objc_msgSend_62(_id, _lib._sel_edgeInsetsValue1); - } - - @override - NSValue init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSValue._(_ret, _lib, retain: true, release: true); - } - - static NSValue new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSValue1, _lib._sel_new1); - return NSValue._(_ret, _lib, retain: false, release: true); - } - - static NSValue allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSValue1, _lib._sel_allocWithZone_1, zone); - return NSValue._(_ret, _lib, retain: false, release: true); - } - - static NSValue alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSValue1, _lib._sel_alloc1); - return NSValue._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSValue1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSValue1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSValue1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSValue1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSValue1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSValue1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSValue1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSValue1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSValue1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -final class CGPoint extends ffi.Struct { - @ffi.Double() - external double x; - - @ffi.Double() - external double y; -} - -final class CGSize extends ffi.Struct { - @ffi.Double() - external double width; - - @ffi.Double() - external double height; -} - -final class CGRect extends ffi.Struct { - external CGPoint origin; - - external CGSize size; -} - -final class NSEdgeInsets extends ffi.Struct { - @ffi.Double() - external double top; - - @ffi.Double() - external double left; - - @ffi.Double() - external double bottom; - - @ffi.Double() - external double right; -} - -class NSArray extends NSObject { - NSArray._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSArray] that points to the same underlying object as [other]. - static NSArray castFrom(T other) { - return NSArray._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSArray] that wraps the given raw object pointer. - static NSArray castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSArray._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSArray]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSArray1); - } - - int get count { - return _lib._objc_msgSend_10(_id, _lib._sel_count1); - } - - NSObject objectAtIndex_(int index) { - final _ret = _lib._objc_msgSend_65(_id, _lib._sel_objectAtIndex_1, index); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - NSArray init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray initWithObjects_count_( - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _id, _lib._sel_initWithObjects_count_1, objects, cnt); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray arrayByAddingObject_(NSObject anObject) { - final _ret = _lib._objc_msgSend_67( - _id, _lib._sel_arrayByAddingObject_1, anObject._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray arrayByAddingObjectsFromArray_(NSArray otherArray) { - final _ret = _lib._objc_msgSend_68( - _id, _lib._sel_arrayByAddingObjectsFromArray_1, otherArray._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString componentsJoinedByString_(NSString separator) { - final _ret = _lib._objc_msgSend_69( - _id, _lib._sel_componentsJoinedByString_1, separator._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - bool containsObject_(NSObject anObject) { - return _lib._objc_msgSend_0(_id, _lib._sel_containsObject_1, anObject._id); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_(NSObject? locale) { - final _ret = _lib._objc_msgSend_70( - _id, _lib._sel_descriptionWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_indent_(NSObject? locale, int level) { - final _ret = _lib._objc_msgSend_71( - _id, - _lib._sel_descriptionWithLocale_indent_1, - locale?._id ?? ffi.nullptr, - level); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSObject? firstObjectCommonWithArray_(NSArray otherArray) { - final _ret = _lib._objc_msgSend_72( - _id, _lib._sel_firstObjectCommonWithArray_1, otherArray._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void getObjects_range_( - ffi.Pointer> objects, _NSRange range) { - _lib._objc_msgSend_73(_id, _lib._sel_getObjects_range_1, objects, range); - } - - int indexOfObject_(NSObject anObject) { - return _lib._objc_msgSend_74(_id, _lib._sel_indexOfObject_1, anObject._id); - } - - int indexOfObject_inRange_(NSObject anObject, _NSRange range) { - return _lib._objc_msgSend_75( - _id, _lib._sel_indexOfObject_inRange_1, anObject._id, range); - } - - int indexOfObjectIdenticalTo_(NSObject anObject) { - return _lib._objc_msgSend_74( - _id, _lib._sel_indexOfObjectIdenticalTo_1, anObject._id); - } - - int indexOfObjectIdenticalTo_inRange_(NSObject anObject, _NSRange range) { - return _lib._objc_msgSend_75( - _id, _lib._sel_indexOfObjectIdenticalTo_inRange_1, anObject._id, range); - } - - bool isEqualToArray_(NSArray otherArray) { - return _lib._objc_msgSend_76( - _id, _lib._sel_isEqualToArray_1, otherArray._id); - } - - NSObject? get firstObject { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_firstObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? get lastObject { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_lastObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSEnumerator objectEnumerator() { - final _ret = _lib._objc_msgSend_77(_id, _lib._sel_objectEnumerator1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - NSEnumerator reverseObjectEnumerator() { - final _ret = _lib._objc_msgSend_77(_id, _lib._sel_reverseObjectEnumerator1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - NSData get sortedArrayHint { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_sortedArrayHint1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - NSArray sortedArrayUsingFunction_context_( - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>> - comparator, - ffi.Pointer context) { - final _ret = _lib._objc_msgSend_78( - _id, _lib._sel_sortedArrayUsingFunction_context_1, comparator, context); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray sortedArrayUsingFunction_context_hint_( - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>> - comparator, - ffi.Pointer context, - NSData? hint) { - final _ret = _lib._objc_msgSend_79( - _id, - _lib._sel_sortedArrayUsingFunction_context_hint_1, - comparator, - context, - hint?._id ?? ffi.nullptr); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray sortedArrayUsingSelector_(ffi.Pointer comparator) { - final _ret = _lib._objc_msgSend_80( - _id, _lib._sel_sortedArrayUsingSelector_1, comparator); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray subarrayWithRange_(_NSRange range) { - final _ret = - _lib._objc_msgSend_81(_id, _lib._sel_subarrayWithRange_1, range); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - bool writeToURL_error_( - NSURL url, ffi.Pointer> error) { - return _lib._objc_msgSend_89( - _id, _lib._sel_writeToURL_error_1, url._id, error); - } - - void makeObjectsPerformSelector_(ffi.Pointer aSelector) { - _lib._objc_msgSend_7( - _id, _lib._sel_makeObjectsPerformSelector_1, aSelector); - } - - void makeObjectsPerformSelector_withObject_( - ffi.Pointer aSelector, NSObject? argument) { - _lib._objc_msgSend_90( - _id, - _lib._sel_makeObjectsPerformSelector_withObject_1, - aSelector, - argument?._id ?? ffi.nullptr); - } - - NSArray objectsAtIndexes_(NSIndexSet indexes) { - final _ret = - _lib._objc_msgSend_111(_id, _lib._sel_objectsAtIndexes_1, indexes._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject objectAtIndexedSubscript_(int idx) { - final _ret = - _lib._objc_msgSend_65(_id, _lib._sel_objectAtIndexedSubscript_1, idx); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void enumerateObjectsUsingBlock_( - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_112( - _id, _lib._sel_enumerateObjectsUsingBlock_1, block._id); - } - - void enumerateObjectsWithOptions_usingBlock_( - int opts, ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_113(_id, - _lib._sel_enumerateObjectsWithOptions_usingBlock_1, opts, block._id); - } - - void enumerateObjectsAtIndexes_options_usingBlock_(NSIndexSet s, int opts, - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_114( - _id, - _lib._sel_enumerateObjectsAtIndexes_options_usingBlock_1, - s._id, - opts, - block._id); - } - - int indexOfObjectPassingTest_( - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_115( - _id, _lib._sel_indexOfObjectPassingTest_1, predicate._id); - } - - int indexOfObjectWithOptions_passingTest_( - int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_116(_id, - _lib._sel_indexOfObjectWithOptions_passingTest_1, opts, predicate._id); - } - - int indexOfObjectAtIndexes_options_passingTest_(NSIndexSet s, int opts, - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_117( - _id, - _lib._sel_indexOfObjectAtIndexes_options_passingTest_1, - s._id, - opts, - predicate._id); - } - - NSIndexSet indexesOfObjectsPassingTest_( - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_118( - _id, _lib._sel_indexesOfObjectsPassingTest_1, predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet indexesOfObjectsWithOptions_passingTest_( - int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_119( - _id, - _lib._sel_indexesOfObjectsWithOptions_passingTest_1, - opts, - predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet indexesOfObjectsAtIndexes_options_passingTest_(NSIndexSet s, - int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_120( - _id, - _lib._sel_indexesOfObjectsAtIndexes_options_passingTest_1, - s._id, - opts, - predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSArray sortedArrayUsingComparator_( - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - final _ret = _lib._objc_msgSend_121( - _id, _lib._sel_sortedArrayUsingComparator_1, cmptr._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray sortedArrayWithOptions_usingComparator_( - int opts, ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - final _ret = _lib._objc_msgSend_122(_id, - _lib._sel_sortedArrayWithOptions_usingComparator_1, opts, cmptr._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - int indexOfObject_inSortedRange_options_usingComparator_( - NSObject obj, - _NSRange r, - int opts, - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmp) { - return _lib._objc_msgSend_123( - _id, - _lib._sel_indexOfObject_inSortedRange_options_usingComparator_1, - obj._id, - r, - opts, - cmp._id); - } - - static NSArray array(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSArray1, _lib._sel_array1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray arrayWithObject_(SwiftLibrary _lib, NSObject anObject) { - final _ret = _lib._objc_msgSend_124( - _lib._class_NSArray1, _lib._sel_arrayWithObject_1, anObject._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray arrayWithObjects_count_(SwiftLibrary _lib, - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _lib._class_NSArray1, _lib._sel_arrayWithObjects_count_1, objects, cnt); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray arrayWithObjects_(SwiftLibrary _lib, NSObject firstObj) { - final _ret = _lib._objc_msgSend_124( - _lib._class_NSArray1, _lib._sel_arrayWithObjects_1, firstObj._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray arrayWithArray_(SwiftLibrary _lib, NSArray array) { - final _ret = _lib._objc_msgSend_125( - _lib._class_NSArray1, _lib._sel_arrayWithArray_1, array._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray initWithObjects_(NSObject firstObj) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObjects_1, firstObj._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray initWithArray_(NSArray array) { - final _ret = - _lib._objc_msgSend_125(_id, _lib._sel_initWithArray_1, array._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray initWithArray_copyItems_(NSArray array, bool flag) { - final _ret = _lib._objc_msgSend_126( - _id, _lib._sel_initWithArray_copyItems_1, array._id, flag); - return NSArray._(_ret, _lib, retain: false, release: true); - } - - NSArray? initWithContentsOfURL_error_( - NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_127( - _id, _lib._sel_initWithContentsOfURL_error_1, url._id, error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray? arrayWithContentsOfURL_error_(SwiftLibrary _lib, NSURL url, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_127(_lib._class_NSArray1, - _lib._sel_arrayWithContentsOfURL_error_1, url._id, error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject differenceFromArray_withOptions_usingEquivalenceTest_( - NSArray other, int options, ObjCBlock_bool_ObjCObject_ObjCObject block) { - final _ret = _lib._objc_msgSend_128( - _id, - _lib._sel_differenceFromArray_withOptions_usingEquivalenceTest_1, - other._id, - options, - block._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject differenceFromArray_withOptions_(NSArray other, int options) { - final _ret = _lib._objc_msgSend_129( - _id, _lib._sel_differenceFromArray_withOptions_1, other._id, options); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject differenceFromArray_(NSArray other) { - final _ret = - _lib._objc_msgSend_125(_id, _lib._sel_differenceFromArray_1, other._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSArray? arrayByApplyingDifference_(NSObject difference) { - final _ret = _lib._objc_msgSend_130( - _id, _lib._sel_arrayByApplyingDifference_1, difference._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - void getObjects_(ffi.Pointer> objects) { - _lib._objc_msgSend_131(_id, _lib._sel_getObjects_1, objects); - } - - static NSArray? arrayWithContentsOfFile_(SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_132( - _lib._class_NSArray1, _lib._sel_arrayWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray? arrayWithContentsOfURL_(SwiftLibrary _lib, NSURL url) { - final _ret = _lib._objc_msgSend_133( - _lib._class_NSArray1, _lib._sel_arrayWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray? initWithContentsOfFile_(NSString path) { - final _ret = _lib._objc_msgSend_132( - _id, _lib._sel_initWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_133(_id, _lib._sel_initWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - bool writeToFile_atomically_(NSString path, bool useAuxiliaryFile) { - return _lib._objc_msgSend_26( - _id, _lib._sel_writeToFile_atomically_1, path._id, useAuxiliaryFile); - } - - bool writeToURL_atomically_(NSURL url, bool atomically) { - return _lib._objc_msgSend_134( - _id, _lib._sel_writeToURL_atomically_1, url._id, atomically); - } - - NSArray pathsMatchingExtensions_(NSArray filterTypes) { - final _ret = _lib._objc_msgSend_68( - _id, _lib._sel_pathsMatchingExtensions_1, filterTypes._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject valueForKey_(NSString key) { - final _ret = _lib._objc_msgSend_31(_id, _lib._sel_valueForKey_1, key._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - void setValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135( - _id, _lib._sel_setValue_forKey_1, value?._id ?? ffi.nullptr, key._id); - } - - void addObserver_toObjectsAtIndexes_forKeyPath_options_context_( - NSObject observer, - NSIndexSet indexes, - NSString keyPath, - int options, - ffi.Pointer context) { - _lib._objc_msgSend_136( - _id, - _lib._sel_addObserver_toObjectsAtIndexes_forKeyPath_options_context_1, - observer._id, - indexes._id, - keyPath._id, - options, - context); - } - - void removeObserver_fromObjectsAtIndexes_forKeyPath_context_( - NSObject observer, - NSIndexSet indexes, - NSString keyPath, - ffi.Pointer context) { - _lib._objc_msgSend_137( - _id, - _lib._sel_removeObserver_fromObjectsAtIndexes_forKeyPath_context_1, - observer._id, - indexes._id, - keyPath._id, - context); - } - - void removeObserver_fromObjectsAtIndexes_forKeyPath_( - NSObject observer, NSIndexSet indexes, NSString keyPath) { - _lib._objc_msgSend_138( - _id, - _lib._sel_removeObserver_fromObjectsAtIndexes_forKeyPath_1, - observer._id, - indexes._id, - keyPath._id); - } - - @override - void addObserver_forKeyPath_options_context_(NSObject observer, - NSString keyPath, int options, ffi.Pointer context) { - _lib._objc_msgSend_139( - _id, - _lib._sel_addObserver_forKeyPath_options_context_1, - observer._id, - keyPath._id, - options, - context); - } - - @override - void removeObserver_forKeyPath_context_( - NSObject observer, NSString keyPath, ffi.Pointer context) { - _lib._objc_msgSend_140(_id, _lib._sel_removeObserver_forKeyPath_context_1, - observer._id, keyPath._id, context); - } - - @override - void removeObserver_forKeyPath_(NSObject observer, NSString keyPath) { - _lib._objc_msgSend_141( - _id, _lib._sel_removeObserver_forKeyPath_1, observer._id, keyPath._id); - } - - NSArray sortedArrayUsingDescriptors_(NSArray sortDescriptors) { - final _ret = _lib._objc_msgSend_68( - _id, _lib._sel_sortedArrayUsingDescriptors_1, sortDescriptors._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray filteredArrayUsingPredicate_(NSPredicate predicate) { - final _ret = _lib._objc_msgSend_219( - _id, _lib._sel_filteredArrayUsingPredicate_1, predicate._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSArray1, _lib._sel_new1); - return NSArray._(_ret, _lib, retain: false, release: true); - } - - static NSArray allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSArray1, _lib._sel_allocWithZone_1, zone); - return NSArray._(_ret, _lib, retain: false, release: true); - } - - static NSArray alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSArray1, _lib._sel_alloc1); - return NSArray._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSArray1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSArray1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSArray1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSArray1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSArray1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSArray1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSArray1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSArray1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSArray1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSError extends NSObject { - NSError._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSError] that points to the same underlying object as [other]. - static NSError castFrom(T other) { - return NSError._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSError] that wraps the given raw object pointer. - static NSError castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSError._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSError]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSError1); - } - - NSError initWithDomain_code_userInfo_( - NSString domain, int code, NSObject? dict) { - final _ret = _lib._objc_msgSend_82( - _id, - _lib._sel_initWithDomain_code_userInfo_1, - domain._id, - code, - dict?._id ?? ffi.nullptr); - return NSError._(_ret, _lib, retain: true, release: true); - } - - static NSError errorWithDomain_code_userInfo_( - SwiftLibrary _lib, NSString domain, int code, NSObject? dict) { - final _ret = _lib._objc_msgSend_82( - _lib._class_NSError1, - _lib._sel_errorWithDomain_code_userInfo_1, - domain._id, - code, - dict?._id ?? ffi.nullptr); - return NSError._(_ret, _lib, retain: true, release: true); - } - - NSString get domain { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_domain1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - int get code { - return _lib._objc_msgSend_83(_id, _lib._sel_code1); - } - - NSObject get userInfo { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_userInfo1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSString get localizedDescription { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_localizedDescription1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get localizedFailureReason { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_localizedFailureReason1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get localizedRecoverySuggestion { - final _ret = - _lib._objc_msgSend_44(_id, _lib._sel_localizedRecoverySuggestion1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray? get localizedRecoveryOptions { - final _ret = - _lib._objc_msgSend_84(_id, _lib._sel_localizedRecoveryOptions1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject? get recoveryAttempter { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_recoveryAttempter1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSString? get helpAnchor { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_helpAnchor1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray get underlyingErrors { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_underlyingErrors1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static void setUserInfoValueProviderForDomain_provider_(SwiftLibrary _lib, - NSString errorDomain, ObjCBlock_ObjCObject_NSError_NSString? provider) { - _lib._objc_msgSend_86( - _lib._class_NSError1, - _lib._sel_setUserInfoValueProviderForDomain_provider_1, - errorDomain._id, - provider?._id ?? ffi.nullptr); - } - - static ObjCBlock_ObjCObject_NSError_NSString? userInfoValueProviderForDomain_( - SwiftLibrary _lib, - NSError err, - NSString userInfoKey, - NSString errorDomain) { - final _ret = _lib._objc_msgSend_87( - _lib._class_NSError1, - _lib._sel_userInfoValueProviderForDomain_1, - err._id, - userInfoKey._id, - errorDomain._id); - return _ret.address == 0 - ? null - : ObjCBlock_ObjCObject_NSError_NSString._(_ret, _lib, - retain: true, release: true); - } - - @override - NSError init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSError._(_ret, _lib, retain: true, release: true); - } - - static NSError new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSError1, _lib._sel_new1); - return NSError._(_ret, _lib, retain: false, release: true); - } - - static NSError allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSError1, _lib._sel_allocWithZone_1, zone); - return NSError._(_ret, _lib, retain: false, release: true); - } - - static NSError alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSError1, _lib._sel_alloc1); - return NSError._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSError1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSError1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSError1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSError1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSError1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSError1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSError1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSError1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSError1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class _ObjCBlockBase implements ffi.Finalizable { - final ffi.Pointer<_ObjCBlock> _id; - final SwiftLibrary _lib; - bool _pendingRelease; - - _ObjCBlockBase._(this._id, this._lib, - {bool retain = false, bool release = false}) - : _pendingRelease = release { - if (retain) { - _lib._Block_copy(_id.cast()); - } - if (release) { - _lib._objc_releaseFinalizer11.attach(this, _id.cast(), detach: this); - } - } - - /// Releases the reference to the underlying ObjC block held by this wrapper. - /// Throws a StateError if this wrapper doesn't currently hold a reference. - void release() { - if (_pendingRelease) { - _pendingRelease = false; - _lib._Block_release(_id.cast()); - _lib._objc_releaseFinalizer11.detach(this); - } else { - throw StateError( - 'Released an ObjC block that was unowned or already released.'); - } - } - - @override - bool operator ==(Object other) { - return other is _ObjCBlockBase && _id == other._id; - } - - @override - int get hashCode => _id.hashCode; - - /// Return a pointer to this object. - ffi.Pointer<_ObjCBlock> get pointer => _id; - - ffi.Pointer<_ObjCBlock> retainAndReturnPointer() { - _lib._Block_copy(_id.cast()); - return _id; - } -} - -ffi.Pointer _ObjCBlock_ObjCObject_NSError_NSString_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ObjCObject_NSError_NSString_closureRegistry = Function( - ffi.Pointer, ffi.Pointer)>{}; -int _ObjCBlock_ObjCObject_NSError_NSString_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ObjCObject_NSError_NSString_registerClosure( - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer) - fn) { - final id = ++_ObjCBlock_ObjCObject_NSError_NSString_closureRegistryIndex; - _ObjCBlock_ObjCObject_NSError_NSString_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -ffi.Pointer - _ObjCBlock_ObjCObject_NSError_NSString_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ObjCObject_NSError_NSString_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_ObjCObject_NSError_NSString extends _ObjCBlockBase { - ObjCBlock_ObjCObject_NSError_NSString._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ObjCObject_NSError_NSString castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ObjCObject_NSError_NSString._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ObjCObject_NSError_NSString.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ObjCObject_NSError_NSString_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ObjCObject_NSError_NSString.fromFunction( - SwiftLibrary lib, NSObject? Function(NSError, NSString) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ObjCObject_NSError_NSString_closureTrampoline) - .cast(), - _ObjCBlock_ObjCObject_NSError_NSString_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => - fn(NSError._(arg0, lib, retain: true, release: true), NSString._(arg1, lib, retain: true, release: true)) - ?.retainAndReturnPointer() ?? - ffi.nullptr)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - NSObject? call(NSError arg0, NSString arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, ffi.Pointer)>() - (_id, arg0._id, arg1._id) - .address == - 0 - ? null - : NSObject._( - _id.ref.invoke - .cast Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, ffi.Pointer arg1)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, ffi.Pointer)>()(_id, arg0._id, arg1._id), - _lib, - retain: false, - release: true); -} - -final class _ObjCBlockDesc extends ffi.Struct { - @ffi.UnsignedLong() - external int reserved; - - @ffi.UnsignedLong() - external int size; - - external ffi.Pointer copy_helper; - - external ffi.Pointer dispose_helper; - - external ffi.Pointer signature; -} - -final class _ObjCBlock extends ffi.Struct { - external ffi.Pointer isa; - - @ffi.Int() - external int flags; - - @ffi.Int() - external int reserved; - - external ffi.Pointer invoke; - - external ffi.Pointer<_ObjCBlockDesc> descriptor; - - external ffi.Pointer target; -} - -class NSIndexSet extends NSObject { - NSIndexSet._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSIndexSet] that points to the same underlying object as [other]. - static NSIndexSet castFrom(T other) { - return NSIndexSet._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSIndexSet] that wraps the given raw object pointer. - static NSIndexSet castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSIndexSet._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSIndexSet]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSIndexSet1); - } - - static NSIndexSet indexSet(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSIndexSet1, _lib._sel_indexSet1); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - static NSIndexSet indexSetWithIndex_(SwiftLibrary _lib, int value) { - final _ret = _lib._objc_msgSend_65( - _lib._class_NSIndexSet1, _lib._sel_indexSetWithIndex_1, value); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - static NSIndexSet indexSetWithIndexesInRange_( - SwiftLibrary _lib, _NSRange range) { - final _ret = _lib._objc_msgSend_91( - _lib._class_NSIndexSet1, _lib._sel_indexSetWithIndexesInRange_1, range); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet initWithIndexesInRange_(_NSRange range) { - final _ret = - _lib._objc_msgSend_91(_id, _lib._sel_initWithIndexesInRange_1, range); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet initWithIndexSet_(NSIndexSet indexSet) { - final _ret = - _lib._objc_msgSend_92(_id, _lib._sel_initWithIndexSet_1, indexSet._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet initWithIndex_(int value) { - final _ret = _lib._objc_msgSend_65(_id, _lib._sel_initWithIndex_1, value); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - bool isEqualToIndexSet_(NSIndexSet indexSet) { - return _lib._objc_msgSend_93( - _id, _lib._sel_isEqualToIndexSet_1, indexSet._id); - } - - int get count { - return _lib._objc_msgSend_10(_id, _lib._sel_count1); - } - - int get firstIndex { - return _lib._objc_msgSend_10(_id, _lib._sel_firstIndex1); - } - - int get lastIndex { - return _lib._objc_msgSend_10(_id, _lib._sel_lastIndex1); - } - - int indexGreaterThanIndex_(int value) { - return _lib._objc_msgSend_94(_id, _lib._sel_indexGreaterThanIndex_1, value); - } - - int indexLessThanIndex_(int value) { - return _lib._objc_msgSend_94(_id, _lib._sel_indexLessThanIndex_1, value); - } - - int indexGreaterThanOrEqualToIndex_(int value) { - return _lib._objc_msgSend_94( - _id, _lib._sel_indexGreaterThanOrEqualToIndex_1, value); - } - - int indexLessThanOrEqualToIndex_(int value) { - return _lib._objc_msgSend_94( - _id, _lib._sel_indexLessThanOrEqualToIndex_1, value); - } - - int getIndexes_maxCount_inIndexRange_( - ffi.Pointer indexBuffer, - int bufferSize, - ffi.Pointer<_NSRange> range) { - return _lib._objc_msgSend_95( - _id, - _lib._sel_getIndexes_maxCount_inIndexRange_1, - indexBuffer, - bufferSize, - range); - } - - int countOfIndexesInRange_(_NSRange range) { - return _lib._objc_msgSend_96(_id, _lib._sel_countOfIndexesInRange_1, range); - } - - bool containsIndex_(int value) { - return _lib._objc_msgSend_97(_id, _lib._sel_containsIndex_1, value); - } - - bool containsIndexesInRange_(_NSRange range) { - return _lib._objc_msgSend_98( - _id, _lib._sel_containsIndexesInRange_1, range); - } - - bool containsIndexes_(NSIndexSet indexSet) { - return _lib._objc_msgSend_93( - _id, _lib._sel_containsIndexes_1, indexSet._id); - } - - bool intersectsIndexesInRange_(_NSRange range) { - return _lib._objc_msgSend_98( - _id, _lib._sel_intersectsIndexesInRange_1, range); - } - - void enumerateIndexesUsingBlock_( - ObjCBlock_ffiVoid_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_99( - _id, _lib._sel_enumerateIndexesUsingBlock_1, block._id); - } - - void enumerateIndexesWithOptions_usingBlock_( - int opts, ObjCBlock_ffiVoid_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_100(_id, - _lib._sel_enumerateIndexesWithOptions_usingBlock_1, opts, block._id); - } - - void enumerateIndexesInRange_options_usingBlock_( - _NSRange range, int opts, ObjCBlock_ffiVoid_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_101( - _id, - _lib._sel_enumerateIndexesInRange_options_usingBlock_1, - range, - opts, - block._id); - } - - int indexPassingTest_(ObjCBlock_bool_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_102( - _id, _lib._sel_indexPassingTest_1, predicate._id); - } - - int indexWithOptions_passingTest_( - int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_103( - _id, _lib._sel_indexWithOptions_passingTest_1, opts, predicate._id); - } - - int indexInRange_options_passingTest_( - _NSRange range, int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_104( - _id, - _lib._sel_indexInRange_options_passingTest_1, - range, - opts, - predicate._id); - } - - NSIndexSet indexesPassingTest_( - ObjCBlock_bool_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_105( - _id, _lib._sel_indexesPassingTest_1, predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet indexesWithOptions_passingTest_( - int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_106( - _id, _lib._sel_indexesWithOptions_passingTest_1, opts, predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet indexesInRange_options_passingTest_( - _NSRange range, int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_107( - _id, - _lib._sel_indexesInRange_options_passingTest_1, - range, - opts, - predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - void enumerateRangesUsingBlock_(ObjCBlock_ffiVoid_NSRange_bool block) { - _lib._objc_msgSend_108( - _id, _lib._sel_enumerateRangesUsingBlock_1, block._id); - } - - void enumerateRangesWithOptions_usingBlock_( - int opts, ObjCBlock_ffiVoid_NSRange_bool block) { - _lib._objc_msgSend_109(_id, - _lib._sel_enumerateRangesWithOptions_usingBlock_1, opts, block._id); - } - - void enumerateRangesInRange_options_usingBlock_( - _NSRange range, int opts, ObjCBlock_ffiVoid_NSRange_bool block) { - _lib._objc_msgSend_110( - _id, - _lib._sel_enumerateRangesInRange_options_usingBlock_1, - range, - opts, - block._id); - } - - @override - NSIndexSet init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - static NSIndexSet new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSIndexSet1, _lib._sel_new1); - return NSIndexSet._(_ret, _lib, retain: false, release: true); - } - - static NSIndexSet allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSIndexSet1, _lib._sel_allocWithZone_1, zone); - return NSIndexSet._(_ret, _lib, retain: false, release: true); - } - - static NSIndexSet alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSIndexSet1, _lib._sel_alloc1); - return NSIndexSet._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSIndexSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSIndexSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSIndexSet1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSIndexSet1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSIndexSet1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSIndexSet1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSIndexSet1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSIndexSet1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSIndexSet1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -void _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() - .asFunction)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_registerClosure( - void Function(int, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_ffiVoid_ffiUnsignedLong_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ffiUnsignedLong_bool._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ffiUnsignedLong_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ffiUnsignedLong_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiUnsignedLong_bool.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.UnsignedLong arg0, ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.UnsignedLong, ffi.Pointer)>( - _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiUnsignedLong_bool.fromFunction( - SwiftLibrary lib, void Function(int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.UnsignedLong, ffi.Pointer)>( - _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_registerClosure( - (int arg0, ffi.Pointer arg1) => fn(arg0, arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ffiUnsignedLong_bool.listener( - SwiftLibrary lib, void Function(int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.UnsignedLong, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_registerClosure( - (int arg0, ffi.Pointer arg1) => fn(arg0, arg1))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.UnsignedLong, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(int arg0, ffi.Pointer arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, int, - ffi.Pointer)>()(_id, arg0, arg1); -} - -abstract class NSEnumerationOptions { - static const int NSEnumerationConcurrent = 1; - static const int NSEnumerationReverse = 2; -} - -bool _ObjCBlock_bool_ffiUnsignedLong_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Bool Function( - ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() - .asFunction)>()(arg0, arg1); -final _ObjCBlock_bool_ffiUnsignedLong_bool_closureRegistry = - )>{}; -int _ObjCBlock_bool_ffiUnsignedLong_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_bool_ffiUnsignedLong_bool_registerClosure( - bool Function(int, ffi.Pointer) fn) { - final id = ++_ObjCBlock_bool_ffiUnsignedLong_bool_closureRegistryIndex; - _ObjCBlock_bool_ffiUnsignedLong_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -bool _ObjCBlock_bool_ffiUnsignedLong_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer arg1) => - _ObjCBlock_bool_ffiUnsignedLong_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_bool_ffiUnsignedLong_bool extends _ObjCBlockBase { - ObjCBlock_bool_ffiUnsignedLong_bool._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_bool_ffiUnsignedLong_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_bool_ffiUnsignedLong_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ffiUnsignedLong_bool.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.UnsignedLong arg0, ffi.Pointer arg1)>> - ptr) - : this._( - lib - ._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function(ffi.Pointer<_ObjCBlock>, - ffi.UnsignedLong, ffi.Pointer)>( - _ObjCBlock_bool_ffiUnsignedLong_bool_fnPtrTrampoline, - false) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ffiUnsignedLong_bool.fromFunction( - SwiftLibrary lib, bool Function(int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function(ffi.Pointer<_ObjCBlock>, - ffi.UnsignedLong, ffi.Pointer)>( - _ObjCBlock_bool_ffiUnsignedLong_bool_closureTrampoline, - false) - .cast(), - _ObjCBlock_bool_ffiUnsignedLong_bool_registerClosure( - (int arg0, ffi.Pointer arg1) => fn(arg0, arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - bool call(int arg0, ffi.Pointer arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer<_ObjCBlock> block, - ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer<_ObjCBlock>, int, - ffi.Pointer)>()(_id, arg0, arg1); -} - -void _ObjCBlock_ffiVoid_NSRange_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - _NSRange arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(_NSRange arg0, ffi.Pointer arg1)>>() - .asFunction< - void Function(_NSRange, ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_NSRange_bool_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSRange_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSRange_bool_registerClosure( - void Function(_NSRange, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSRange_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSRange_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSRange_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - _NSRange arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_NSRange_bool_closureRegistry[block.ref.target.address]!( - arg0, arg1); - -class ObjCBlock_ffiVoid_NSRange_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSRange_bool._(ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSRange_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSRange_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSRange_bool.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(_NSRange arg0, ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSRange_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSRange_bool.fromFunction( - SwiftLibrary lib, void Function(_NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSRange_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSRange_bool_registerClosure( - (_NSRange arg0, ffi.Pointer arg1) => - fn(arg0, arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSRange_bool.listener( - SwiftLibrary lib, void Function(_NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, _NSRange, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSRange_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSRange_bool_registerClosure( - (_NSRange arg0, ffi.Pointer arg1) => - fn(arg0, arg1))), - lib); - static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, _NSRange, ffi.Pointer)>? - _dartFuncListenerTrampoline; - - void call(_NSRange arg0, ffi.Pointer arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, _NSRange arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, _NSRange, - ffi.Pointer)>()(_id, arg0, arg1); -} - -void _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.UnsignedLong arg1, ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, int, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureRegistry = - , int, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_registerClosure( - void Function(ffi.Pointer, int, ffi.Pointer) fn) { - final id = - ++_ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); - -class ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.UnsignedLong arg1, ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool.fromFunction( - SwiftLibrary lib, void Function(NSObject, int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_registerClosure( - (ffi.Pointer arg0, int arg1, - ffi.Pointer arg2) => - fn(NSObject._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool.listener( - SwiftLibrary lib, void Function(NSObject, int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_registerClosure( - (ffi.Pointer arg0, int arg1, - ffi.Pointer arg2) => - fn(NSObject._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); - static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSObject arg0, int arg1, ffi.Pointer arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.UnsignedLong arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - int, ffi.Pointer)>()(_id, arg0._id, arg1, arg2); -} - -bool _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.UnsignedLong arg1, ffi.Pointer arg2)>>() - .asFunction< - bool Function(ffi.Pointer, int, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureRegistry = - , int, ffi.Pointer)>{}; -int _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_registerClosure( - bool Function(ffi.Pointer, int, ffi.Pointer) fn) { - final id = - ++_ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureRegistryIndex; - _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -bool _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1, - ffi.Pointer arg2) => - _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); - -class ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool extends _ObjCBlockBase { - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.UnsignedLong arg1, ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline, - false) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool.fromFunction( - SwiftLibrary lib, bool Function(NSObject, int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureTrampoline, false) - .cast(), - _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_registerClosure( - (ffi.Pointer arg0, int arg1, - ffi.Pointer arg2) => - fn(NSObject._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - bool call(NSObject arg0, int arg1, ffi.Pointer arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.UnsignedLong arg1, - ffi.Pointer arg2)>>() - .asFunction< - bool Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - int, ffi.Pointer)>()(_id, arg0._id, arg1, arg2); -} - -int _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - int Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureRegistryIndex = - 0; -ffi.Pointer - _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_registerClosure( - int Function(ffi.Pointer, ffi.Pointer) fn) { - final id = - ++_ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureRegistryIndex; - _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -int _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject - extends _ObjCBlockBase { - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Int32 Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_fnPtrTrampoline, - 0) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject.fromFunction( - SwiftLibrary lib, int Function(NSObject, NSObject) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Int32 Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureTrampoline, 0) - .cast(), - _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - NSObject._(arg0, lib, retain: true, release: true), - NSObject._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - int call(NSObject arg0, NSObject arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - int Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1._id); -} - -abstract class NSComparisonResult { - static const int NSOrderedAscending = -1; - static const int NSOrderedSame = 0; - static const int NSOrderedDescending = 1; -} - -abstract class NSSortOptions { - static const int NSSortConcurrent = 1; - static const int NSSortStable = 16; -} - -abstract class NSBinarySearchingOptions { - static const int NSBinarySearchingFirstEqual = 256; - static const int NSBinarySearchingLastEqual = 512; - static const int NSBinarySearchingInsertionIndex = 1024; -} - -abstract class NSOrderedCollectionDifferenceCalculationOptions { - static const int NSOrderedCollectionDifferenceCalculationOmitInsertedObjects = - 1; - static const int NSOrderedCollectionDifferenceCalculationOmitRemovedObjects = - 2; - static const int NSOrderedCollectionDifferenceCalculationInferMoves = 4; -} - -bool _ObjCBlock_bool_ObjCObject_ObjCObject_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_bool_ObjCObject_ObjCObject_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_bool_ObjCObject_ObjCObject_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_bool_ObjCObject_ObjCObject_registerClosure( - bool Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_bool_ObjCObject_ObjCObject_closureRegistryIndex; - _ObjCBlock_bool_ObjCObject_ObjCObject_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -bool _ObjCBlock_bool_ObjCObject_ObjCObject_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_bool_ObjCObject_ObjCObject_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_bool_ObjCObject_ObjCObject extends _ObjCBlockBase { - ObjCBlock_bool_ObjCObject_ObjCObject._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_bool_ObjCObject_ObjCObject castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_bool_ObjCObject_ObjCObject._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_ObjCObject.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi - .NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_ObjCObject_fnPtrTrampoline, - false) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_ObjCObject.fromFunction( - SwiftLibrary lib, bool Function(NSObject, NSObject) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_ObjCObject_closureTrampoline, - false) - .cast(), - _ObjCBlock_bool_ObjCObject_ObjCObject_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => - fn(NSObject._(arg0, lib, retain: true, release: true), NSObject._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - bool call(NSObject arg0, NSObject arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1._id); -} - -abstract class NSKeyValueObservingOptions { - static const int NSKeyValueObservingOptionNew = 1; - static const int NSKeyValueObservingOptionOld = 2; - static const int NSKeyValueObservingOptionInitial = 4; - static const int NSKeyValueObservingOptionPrior = 8; -} - -class NSPredicate extends NSObject { - NSPredicate._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSPredicate] that points to the same underlying object as [other]. - static NSPredicate castFrom(T other) { - return NSPredicate._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSPredicate] that wraps the given raw object pointer. - static NSPredicate castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSPredicate._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSPredicate]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSPredicate1); - } - - static NSPredicate predicateWithFormat_argumentArray_( - SwiftLibrary _lib, NSString predicateFormat, NSArray? arguments) { - final _ret = _lib._objc_msgSend_142( - _lib._class_NSPredicate1, - _lib._sel_predicateWithFormat_argumentArray_1, - predicateFormat._id, - arguments?._id ?? ffi.nullptr); - return NSPredicate._(_ret, _lib, retain: true, release: true); - } - - static NSPredicate predicateWithFormat_( - SwiftLibrary _lib, NSString predicateFormat) { - final _ret = _lib._objc_msgSend_143(_lib._class_NSPredicate1, - _lib._sel_predicateWithFormat_1, predicateFormat._id); - return NSPredicate._(_ret, _lib, retain: true, release: true); - } - - static NSPredicate predicateWithFormat_arguments_(SwiftLibrary _lib, - NSString predicateFormat, ffi.Pointer<__va_list_tag> argList) { - final _ret = _lib._objc_msgSend_144( - _lib._class_NSPredicate1, - _lib._sel_predicateWithFormat_arguments_1, - predicateFormat._id, - argList); - return NSPredicate._(_ret, _lib, retain: true, release: true); - } - - static NSPredicate? predicateFromMetadataQueryString_( - SwiftLibrary _lib, NSString queryString) { - final _ret = _lib._objc_msgSend_145(_lib._class_NSPredicate1, - _lib._sel_predicateFromMetadataQueryString_1, queryString._id); - return _ret.address == 0 - ? null - : NSPredicate._(_ret, _lib, retain: true, release: true); - } - - static NSPredicate predicateWithValue_(SwiftLibrary _lib, bool value) { - final _ret = _lib._objc_msgSend_146( - _lib._class_NSPredicate1, _lib._sel_predicateWithValue_1, value); - return NSPredicate._(_ret, _lib, retain: true, release: true); - } - - static NSPredicate predicateWithBlock_( - SwiftLibrary _lib, ObjCBlock_bool_ObjCObject_NSDictionary block) { - final _ret = _lib._objc_msgSend_216( - _lib._class_NSPredicate1, _lib._sel_predicateWithBlock_1, block._id); - return NSPredicate._(_ret, _lib, retain: true, release: true); - } - - NSString get predicateFormat { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_predicateFormat1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSPredicate predicateWithSubstitutionVariables_(NSDictionary variables) { - final _ret = _lib._objc_msgSend_159( - _id, _lib._sel_predicateWithSubstitutionVariables_1, variables._id); - return NSPredicate._(_ret, _lib, retain: true, release: true); - } - - bool evaluateWithObject_(NSObject? object) { - return _lib._objc_msgSend_217( - _id, _lib._sel_evaluateWithObject_1, object?._id ?? ffi.nullptr); - } - - bool evaluateWithObject_substitutionVariables_( - NSObject? object, NSDictionary? bindings) { - return _lib._objc_msgSend_218( - _id, - _lib._sel_evaluateWithObject_substitutionVariables_1, - object?._id ?? ffi.nullptr, - bindings?._id ?? ffi.nullptr); - } - - void allowEvaluation() { - _lib._objc_msgSend_1(_id, _lib._sel_allowEvaluation1); - } - - @override - NSPredicate init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSPredicate._(_ret, _lib, retain: true, release: true); - } - - static NSPredicate new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSPredicate1, _lib._sel_new1); - return NSPredicate._(_ret, _lib, retain: false, release: true); - } - - static NSPredicate allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSPredicate1, _lib._sel_allocWithZone_1, zone); - return NSPredicate._(_ret, _lib, retain: false, release: true); - } - - static NSPredicate alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPredicate1, _lib._sel_alloc1); - return NSPredicate._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSPredicate1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSPredicate1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPredicate1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPredicate1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSPredicate1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSPredicate1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSPredicate1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSPredicate1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPredicate1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -final class __va_list_tag extends ffi.Struct { - @ffi.UnsignedInt() - external int gp_offset; - - @ffi.UnsignedInt() - external int fp_offset; - - external ffi.Pointer overflow_arg_area; - - external ffi.Pointer reg_save_area; -} - -bool _ObjCBlock_bool_ObjCObject_NSDictionary_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_bool_ObjCObject_NSDictionary_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_bool_ObjCObject_NSDictionary_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_bool_ObjCObject_NSDictionary_registerClosure( - bool Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_bool_ObjCObject_NSDictionary_closureRegistryIndex; - _ObjCBlock_bool_ObjCObject_NSDictionary_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -bool _ObjCBlock_bool_ObjCObject_NSDictionary_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_bool_ObjCObject_NSDictionary_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_bool_ObjCObject_NSDictionary extends _ObjCBlockBase { - ObjCBlock_bool_ObjCObject_NSDictionary._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_bool_ObjCObject_NSDictionary castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_bool_ObjCObject_NSDictionary._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_NSDictionary.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_NSDictionary_fnPtrTrampoline, - false) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_NSDictionary.fromFunction( - SwiftLibrary lib, bool Function(NSObject?, NSDictionary?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= - ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_NSDictionary_closureTrampoline, false) - .cast(), - _ObjCBlock_bool_ObjCObject_NSDictionary_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSObject._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSDictionary._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - bool call(NSObject? arg0, NSDictionary? arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1?._id ?? ffi.nullptr); -} - -class NSDictionary extends NSObject { - NSDictionary._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSDictionary] that points to the same underlying object as [other]. - static NSDictionary castFrom(T other) { - return NSDictionary._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSDictionary] that wraps the given raw object pointer. - static NSDictionary castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSDictionary._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSDictionary]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSDictionary1); - } - - int get count { - return _lib._objc_msgSend_10(_id, _lib._sel_count1); - } - - NSObject? objectForKey_(NSObject aKey) { - final _ret = _lib._objc_msgSend_16(_id, _lib._sel_objectForKey_1, aKey._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSEnumerator keyEnumerator() { - final _ret = _lib._objc_msgSend_77(_id, _lib._sel_keyEnumerator1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - @override - NSDictionary init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary initWithObjects_forKeys_count_( - ffi.Pointer> objects, - ffi.Pointer> keys, - int cnt) { - final _ret = _lib._objc_msgSend_147( - _id, _lib._sel_initWithObjects_forKeys_count_1, objects, keys, cnt); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSArray get allKeys { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_allKeys1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray allKeysForObject_(NSObject anObject) { - final _ret = - _lib._objc_msgSend_67(_id, _lib._sel_allKeysForObject_1, anObject._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray get allValues { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_allValues1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get descriptionInStringsFileFormat { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_descriptionInStringsFileFormat1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_(NSObject? locale) { - final _ret = _lib._objc_msgSend_70( - _id, _lib._sel_descriptionWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_indent_(NSObject? locale, int level) { - final _ret = _lib._objc_msgSend_71( - _id, - _lib._sel_descriptionWithLocale_indent_1, - locale?._id ?? ffi.nullptr, - level); - return NSString._(_ret, _lib, retain: true, release: true); - } - - bool isEqualToDictionary_(NSDictionary otherDictionary) { - return _lib._objc_msgSend_148( - _id, _lib._sel_isEqualToDictionary_1, otherDictionary._id); - } - - NSEnumerator objectEnumerator() { - final _ret = _lib._objc_msgSend_77(_id, _lib._sel_objectEnumerator1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - NSArray objectsForKeys_notFoundMarker_(NSArray keys, NSObject marker) { - final _ret = _lib._objc_msgSend_149( - _id, _lib._sel_objectsForKeys_notFoundMarker_1, keys._id, marker._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - bool writeToURL_error_( - NSURL url, ffi.Pointer> error) { - return _lib._objc_msgSend_89( - _id, _lib._sel_writeToURL_error_1, url._id, error); - } - - NSArray keysSortedByValueUsingSelector_(ffi.Pointer comparator) { - final _ret = _lib._objc_msgSend_80( - _id, _lib._sel_keysSortedByValueUsingSelector_1, comparator); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - void getObjects_andKeys_count_(ffi.Pointer> objects, - ffi.Pointer> keys, int count) { - _lib._objc_msgSend_150( - _id, _lib._sel_getObjects_andKeys_count_1, objects, keys, count); - } - - NSObject? objectForKeyedSubscript_(NSObject key) { - final _ret = _lib._objc_msgSend_16( - _id, _lib._sel_objectForKeyedSubscript_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void enumerateKeysAndObjectsUsingBlock_( - ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool block) { - _lib._objc_msgSend_151( - _id, _lib._sel_enumerateKeysAndObjectsUsingBlock_1, block._id); - } - - void enumerateKeysAndObjectsWithOptions_usingBlock_( - int opts, ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool block) { - _lib._objc_msgSend_152( - _id, - _lib._sel_enumerateKeysAndObjectsWithOptions_usingBlock_1, - opts, - block._id); - } - - NSArray keysSortedByValueUsingComparator_( - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - final _ret = _lib._objc_msgSend_121( - _id, _lib._sel_keysSortedByValueUsingComparator_1, cmptr._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray keysSortedByValueWithOptions_usingComparator_( - int opts, ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - final _ret = _lib._objc_msgSend_122( - _id, - _lib._sel_keysSortedByValueWithOptions_usingComparator_1, - opts, - cmptr._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject keysOfEntriesPassingTest_( - ObjCBlock_bool_ObjCObject_ObjCObject_bool predicate) { - final _ret = _lib._objc_msgSend_153( - _id, _lib._sel_keysOfEntriesPassingTest_1, predicate._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject keysOfEntriesWithOptions_passingTest_( - int opts, ObjCBlock_bool_ObjCObject_ObjCObject_bool predicate) { - final _ret = _lib._objc_msgSend_154(_id, - _lib._sel_keysOfEntriesWithOptions_passingTest_1, opts, predicate._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void getObjects_andKeys_(ffi.Pointer> objects, - ffi.Pointer> keys) { - _lib._objc_msgSend_155(_id, _lib._sel_getObjects_andKeys_1, objects, keys); - } - - static NSDictionary? dictionaryWithContentsOfFile_( - SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_156(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary? dictionaryWithContentsOfURL_( - SwiftLibrary _lib, NSURL url) { - final _ret = _lib._objc_msgSend_157(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? initWithContentsOfFile_(NSString path) { - final _ret = _lib._objc_msgSend_156( - _id, _lib._sel_initWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_157(_id, _lib._sel_initWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - bool writeToFile_atomically_(NSString path, bool useAuxiliaryFile) { - return _lib._objc_msgSend_26( - _id, _lib._sel_writeToFile_atomically_1, path._id, useAuxiliaryFile); - } - - bool writeToURL_atomically_(NSURL url, bool atomically) { - return _lib._objc_msgSend_134( - _id, _lib._sel_writeToURL_atomically_1, url._id, atomically); - } - - static NSDictionary dictionary(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSDictionary1, _lib._sel_dictionary1); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary dictionaryWithObject_forKey_( - SwiftLibrary _lib, NSObject object, NSObject key) { - final _ret = _lib._objc_msgSend_158(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithObject_forKey_1, object._id, key._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary dictionaryWithObjects_forKeys_count_( - SwiftLibrary _lib, - ffi.Pointer> objects, - ffi.Pointer> keys, - int cnt) { - final _ret = _lib._objc_msgSend_147(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithObjects_forKeys_count_1, objects, keys, cnt); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary dictionaryWithObjectsAndKeys_( - SwiftLibrary _lib, NSObject firstObject) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithObjectsAndKeys_1, firstObject._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary dictionaryWithDictionary_( - SwiftLibrary _lib, NSDictionary dict) { - final _ret = _lib._objc_msgSend_159(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithDictionary_1, dict._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary dictionaryWithObjects_forKeys_( - SwiftLibrary _lib, NSArray objects, NSArray keys) { - final _ret = _lib._objc_msgSend_160(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithObjects_forKeys_1, objects._id, keys._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary initWithObjectsAndKeys_(NSObject firstObject) { - final _ret = _lib._objc_msgSend_124( - _id, _lib._sel_initWithObjectsAndKeys_1, firstObject._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary initWithDictionary_(NSDictionary otherDictionary) { - final _ret = _lib._objc_msgSend_159( - _id, _lib._sel_initWithDictionary_1, otherDictionary._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary initWithDictionary_copyItems_( - NSDictionary otherDictionary, bool flag) { - final _ret = _lib._objc_msgSend_161(_id, - _lib._sel_initWithDictionary_copyItems_1, otherDictionary._id, flag); - return NSDictionary._(_ret, _lib, retain: false, release: true); - } - - NSDictionary initWithObjects_forKeys_(NSArray objects, NSArray keys) { - final _ret = _lib._objc_msgSend_160( - _id, _lib._sel_initWithObjects_forKeys_1, objects._id, keys._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? initWithContentsOfURL_error_( - NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_162( - _id, _lib._sel_initWithContentsOfURL_error_1, url._id, error); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary? dictionaryWithContentsOfURL_error_(SwiftLibrary _lib, - NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_162(_lib._class_NSDictionary1, - _lib._sel_dictionaryWithContentsOfURL_error_1, url._id, error); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSObject sharedKeySetForKeys_(SwiftLibrary _lib, NSArray keys) { - final _ret = _lib._objc_msgSend_125( - _lib._class_NSDictionary1, _lib._sel_sharedKeySetForKeys_1, keys._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - int countByEnumeratingWithState_objects_count_( - ffi.Pointer state, - ffi.Pointer> buffer, - int len) { - return _lib._objc_msgSend_163( - _id, - _lib._sel_countByEnumeratingWithState_objects_count_1, - state, - buffer, - len); - } - - int fileSize() { - return _lib._objc_msgSend_164(_id, _lib._sel_fileSize1); - } - - NSDate? fileModificationDate() { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_fileModificationDate1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } - - NSString? fileType() { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_fileType1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - int filePosixPermissions() { - return _lib._objc_msgSend_10(_id, _lib._sel_filePosixPermissions1); - } - - NSString? fileOwnerAccountName() { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_fileOwnerAccountName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? fileGroupOwnerAccountName() { - final _ret = - _lib._objc_msgSend_44(_id, _lib._sel_fileGroupOwnerAccountName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - int fileSystemNumber() { - return _lib._objc_msgSend_83(_id, _lib._sel_fileSystemNumber1); - } - - int fileSystemFileNumber() { - return _lib._objc_msgSend_10(_id, _lib._sel_fileSystemFileNumber1); - } - - bool fileExtensionHidden() { - return _lib._objc_msgSend_12(_id, _lib._sel_fileExtensionHidden1); - } - - int fileHFSCreatorCode() { - return _lib._objc_msgSend_214(_id, _lib._sel_fileHFSCreatorCode1); - } - - int fileHFSTypeCode() { - return _lib._objc_msgSend_214(_id, _lib._sel_fileHFSTypeCode1); - } - - bool fileIsImmutable() { - return _lib._objc_msgSend_12(_id, _lib._sel_fileIsImmutable1); - } - - bool fileIsAppendOnly() { - return _lib._objc_msgSend_12(_id, _lib._sel_fileIsAppendOnly1); - } - - NSDate? fileCreationDate() { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_fileCreationDate1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } - - NSNumber? fileOwnerAccountID() { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_fileOwnerAccountID1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - NSNumber? fileGroupOwnerAccountID() { - final _ret = - _lib._objc_msgSend_215(_id, _lib._sel_fileGroupOwnerAccountID1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - @override - NSObject? valueForKey_(NSString key) { - final _ret = _lib._objc_msgSend_38(_id, _lib._sel_valueForKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSDictionary1, _lib._sel_new1); - return NSDictionary._(_ret, _lib, retain: false, release: true); - } - - static NSDictionary allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSDictionary1, _lib._sel_allocWithZone_1, zone); - return NSDictionary._(_ret, _lib, retain: false, release: true); - } - - static NSDictionary alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSDictionary1, _lib._sel_alloc1); - return NSDictionary._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSDictionary1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSDictionary1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSDictionary1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSDictionary1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSDictionary1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSDictionary1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSDictionary1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSDictionary1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSDictionary1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -void _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureRegistry = , ffi.Pointer, - ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_registerClosure( - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer) - fn) { - final id = - ++_ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); - -class ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool.fromFunction(SwiftLibrary lib, - void Function(NSObject, NSObject, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2) => fn( - NSObject._(arg0, lib, retain: true, release: true), - NSObject._(arg1, lib, retain: true, release: true), - arg2))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool.listener(SwiftLibrary lib, - void Function(NSObject, NSObject, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2) => - fn( - NSObject._(arg0, lib, retain: true, release: true), - NSObject._(arg1, lib, retain: true, release: true), - arg2))), - lib); - static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSObject arg0, NSObject arg1, ffi.Pointer arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1._id, arg2); -} - -bool _ObjCBlock_bool_ObjCObject_ObjCObject_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureRegistry = , ffi.Pointer, - ffi.Pointer)>{}; -int _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_bool_ObjCObject_ObjCObject_bool_registerClosure( - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer) - fn) { - final id = ++_ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureRegistryIndex; - _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -bool _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); - -class ObjCBlock_bool_ObjCObject_ObjCObject_bool extends _ObjCBlockBase { - ObjCBlock_bool_ObjCObject_ObjCObject_bool._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_bool_ObjCObject_ObjCObject_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_bool_ObjCObject_ObjCObject_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_ObjCObject_bool.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_ObjCObject_bool_fnPtrTrampoline, - false) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_ObjCObject_bool.fromFunction(SwiftLibrary lib, - bool Function(NSObject, NSObject, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureTrampoline, false) - .cast(), - _ObjCBlock_bool_ObjCObject_ObjCObject_bool_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) => - fn(NSObject._(arg0, lib, retain: true, release: true), NSObject._(arg1, lib, retain: true, release: true), arg2))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - bool call(NSObject arg0, NSObject arg1, ffi.Pointer arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1._id, arg2); -} - -final class NSFastEnumerationState extends ffi.Struct { - @ffi.UnsignedLong() - external int state; - - external ffi.Pointer> itemsPtr; - - external ffi.Pointer mutationsPtr; - - @ffi.Array.multi([5]) - external ffi.Array extra; -} - -class NSDate extends NSObject { - NSDate._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSDate] that points to the same underlying object as [other]. - static NSDate castFrom(T other) { - return NSDate._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSDate] that wraps the given raw object pointer. - static NSDate castFromPointer(SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSDate._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSDate]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSDate1); - } - - double get timeIntervalSinceReferenceDate { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret( - _id, _lib._sel_timeIntervalSinceReferenceDate1) - : _lib._objc_msgSend_165( - _id, _lib._sel_timeIntervalSinceReferenceDate1); - } - - @override - NSDate init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - NSDate initWithTimeIntervalSinceReferenceDate_(double ti) { - final _ret = _lib._objc_msgSend_166( - _id, _lib._sel_initWithTimeIntervalSinceReferenceDate_1, ti); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - NSDate? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } - - double timeIntervalSinceDate_(NSDate anotherDate) { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_167_fpret( - _id, _lib._sel_timeIntervalSinceDate_1, anotherDate._id) - : _lib._objc_msgSend_167( - _id, _lib._sel_timeIntervalSinceDate_1, anotherDate._id); - } - - double get timeIntervalSinceNow { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_timeIntervalSinceNow1) - : _lib._objc_msgSend_165(_id, _lib._sel_timeIntervalSinceNow1); - } - - double get timeIntervalSince1970 { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_timeIntervalSince19701) - : _lib._objc_msgSend_165(_id, _lib._sel_timeIntervalSince19701); - } - - NSObject addTimeInterval_(double seconds) { - final _ret = - _lib._objc_msgSend_166(_id, _lib._sel_addTimeInterval_1, seconds); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSDate dateByAddingTimeInterval_(double ti) { - final _ret = - _lib._objc_msgSend_166(_id, _lib._sel_dateByAddingTimeInterval_1, ti); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - NSDate earlierDate_(NSDate anotherDate) { - final _ret = - _lib._objc_msgSend_168(_id, _lib._sel_earlierDate_1, anotherDate._id); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - NSDate laterDate_(NSDate anotherDate) { - final _ret = - _lib._objc_msgSend_168(_id, _lib._sel_laterDate_1, anotherDate._id); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - int compare_(NSDate other) { - return _lib._objc_msgSend_169(_id, _lib._sel_compare_1, other._id); - } - - bool isEqualToDate_(NSDate otherDate) { - return _lib._objc_msgSend_170( - _id, _lib._sel_isEqualToDate_1, otherDate._id); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_(NSObject? locale) { - final _ret = _lib._objc_msgSend_70( - _id, _lib._sel_descriptionWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSDate date(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSDate1, _lib._sel_date1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate dateWithTimeIntervalSinceNow_(SwiftLibrary _lib, double secs) { - final _ret = _lib._objc_msgSend_166( - _lib._class_NSDate1, _lib._sel_dateWithTimeIntervalSinceNow_1, secs); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate dateWithTimeIntervalSinceReferenceDate_( - SwiftLibrary _lib, double ti) { - final _ret = _lib._objc_msgSend_166(_lib._class_NSDate1, - _lib._sel_dateWithTimeIntervalSinceReferenceDate_1, ti); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate dateWithTimeIntervalSince1970_(SwiftLibrary _lib, double secs) { - final _ret = _lib._objc_msgSend_166( - _lib._class_NSDate1, _lib._sel_dateWithTimeIntervalSince1970_1, secs); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate dateWithTimeInterval_sinceDate_( - SwiftLibrary _lib, double secsToBeAdded, NSDate date) { - final _ret = _lib._objc_msgSend_171(_lib._class_NSDate1, - _lib._sel_dateWithTimeInterval_sinceDate_1, secsToBeAdded, date._id); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate getDistantFuture(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_172(_lib._class_NSDate1, _lib._sel_distantFuture1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate getDistantPast(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_172(_lib._class_NSDate1, _lib._sel_distantPast1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate getNow(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_172(_lib._class_NSDate1, _lib._sel_now1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - NSDate initWithTimeIntervalSinceNow_(double secs) { - final _ret = _lib._objc_msgSend_166( - _id, _lib._sel_initWithTimeIntervalSinceNow_1, secs); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - NSDate initWithTimeIntervalSince1970_(double secs) { - final _ret = _lib._objc_msgSend_166( - _id, _lib._sel_initWithTimeIntervalSince1970_1, secs); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - NSDate initWithTimeInterval_sinceDate_(double secsToBeAdded, NSDate date) { - final _ret = _lib._objc_msgSend_171(_id, - _lib._sel_initWithTimeInterval_sinceDate_1, secsToBeAdded, date._id); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSObject? dateWithNaturalLanguageString_locale_( - SwiftLibrary _lib, NSString string, NSObject? locale) { - final _ret = _lib._objc_msgSend_173( - _lib._class_NSDate1, - _lib._sel_dateWithNaturalLanguageString_locale_1, - string._id, - locale?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? dateWithNaturalLanguageString_( - SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSDate1, - _lib._sel_dateWithNaturalLanguageString_1, string._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject dateWithString_(SwiftLibrary _lib, NSString aString) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSDate1, _lib._sel_dateWithString_1, aString._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSCalendarDate dateWithCalendarFormat_timeZone_( - NSString? format, NSTimeZone? aTimeZone) { - final _ret = _lib._objc_msgSend_212( - _id, - _lib._sel_dateWithCalendarFormat_timeZone_1, - format?._id ?? ffi.nullptr, - aTimeZone?._id ?? ffi.nullptr); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - NSString? descriptionWithCalendarFormat_timeZone_locale_( - NSString? format, NSTimeZone? aTimeZone, NSObject? locale) { - final _ret = _lib._objc_msgSend_213( - _id, - _lib._sel_descriptionWithCalendarFormat_timeZone_locale_1, - format?._id ?? ffi.nullptr, - aTimeZone?._id ?? ffi.nullptr, - locale?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithString_(NSString description) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_initWithString_1, description._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSDate new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSDate1, _lib._sel_new1); - return NSDate._(_ret, _lib, retain: false, release: true); - } - - static NSDate allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSDate1, _lib._sel_allocWithZone_1, zone); - return NSDate._(_ret, _lib, retain: false, release: true); - } - - static NSDate alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSDate1, _lib._sel_alloc1); - return NSDate._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSDate1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSDate1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSDate1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSDate1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSDate1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSDate1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSDate1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSDate1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSDate1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSCalendarDate extends NSDate { - NSCalendarDate._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSCalendarDate] that points to the same underlying object as [other]. - static NSCalendarDate castFrom(T other) { - return NSCalendarDate._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSCalendarDate] that wraps the given raw object pointer. - static NSCalendarDate castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSCalendarDate._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSCalendarDate]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSCalendarDate1); - } - - static NSObject calendarDate(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSCalendarDate1, _lib._sel_calendarDate1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? dateWithString_calendarFormat_locale_(SwiftLibrary _lib, - NSString description, NSString format, NSObject? locale) { - final _ret = _lib._objc_msgSend_174( - _lib._class_NSCalendarDate1, - _lib._sel_dateWithString_calendarFormat_locale_1, - description._id, - format._id, - locale?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? dateWithString_calendarFormat_( - SwiftLibrary _lib, NSString description, NSString format) { - final _ret = _lib._objc_msgSend_175(_lib._class_NSCalendarDate1, - _lib._sel_dateWithString_calendarFormat_1, description._id, format._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject dateWithYear_month_day_hour_minute_second_timeZone_( - SwiftLibrary _lib, - int year, - int month, - int day, - int hour, - int minute, - int second, - NSTimeZone? aTimeZone) { - final _ret = _lib._objc_msgSend_206( - _lib._class_NSCalendarDate1, - _lib._sel_dateWithYear_month_day_hour_minute_second_timeZone_1, - year, - month, - day, - hour, - minute, - second, - aTimeZone?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSCalendarDate dateByAddingYears_months_days_hours_minutes_seconds_( - int year, int month, int day, int hour, int minute, int second) { - final _ret = _lib._objc_msgSend_207( - _id, - _lib._sel_dateByAddingYears_months_days_hours_minutes_seconds_1, - year, - month, - day, - hour, - minute, - second); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - int dayOfCommonEra() { - return _lib._objc_msgSend_83(_id, _lib._sel_dayOfCommonEra1); - } - - int dayOfMonth() { - return _lib._objc_msgSend_83(_id, _lib._sel_dayOfMonth1); - } - - int dayOfWeek() { - return _lib._objc_msgSend_83(_id, _lib._sel_dayOfWeek1); - } - - int dayOfYear() { - return _lib._objc_msgSend_83(_id, _lib._sel_dayOfYear1); - } - - int hourOfDay() { - return _lib._objc_msgSend_83(_id, _lib._sel_hourOfDay1); - } - - int minuteOfHour() { - return _lib._objc_msgSend_83(_id, _lib._sel_minuteOfHour1); - } - - int monthOfYear() { - return _lib._objc_msgSend_83(_id, _lib._sel_monthOfYear1); - } - - int secondOfMinute() { - return _lib._objc_msgSend_83(_id, _lib._sel_secondOfMinute1); - } - - int yearOfCommonEra() { - return _lib._objc_msgSend_83(_id, _lib._sel_yearOfCommonEra1); - } - - NSString calendarFormat() { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_calendarFormat1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithCalendarFormat_locale_( - NSString format, NSObject? locale) { - final _ret = _lib._objc_msgSend_208( - _id, - _lib._sel_descriptionWithCalendarFormat_locale_1, - format._id, - locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithCalendarFormat_(NSString format) { - final _ret = _lib._objc_msgSend_69( - _id, _lib._sel_descriptionWithCalendarFormat_1, format._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - @override - NSString descriptionWithLocale_(NSObject? locale) { - final _ret = _lib._objc_msgSend_70( - _id, _lib._sel_descriptionWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSTimeZone timeZone() { - final _ret = _lib._objc_msgSend_179(_id, _lib._sel_timeZone1); - return NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithString_calendarFormat_locale_( - NSString description, NSString format, NSObject? locale) { - final _ret = _lib._objc_msgSend_174( - _id, - _lib._sel_initWithString_calendarFormat_locale_1, - description._id, - format._id, - locale?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? initWithString_calendarFormat_( - NSString description, NSString format) { - final _ret = _lib._objc_msgSend_175(_id, - _lib._sel_initWithString_calendarFormat_1, description._id, format._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - NSObject? initWithString_(NSString description) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_initWithString_1, description._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject initWithYear_month_day_hour_minute_second_timeZone_( - int year, - int month, - int day, - int hour, - int minute, - int second, - NSTimeZone? aTimeZone) { - final _ret = _lib._objc_msgSend_206( - _id, - _lib._sel_initWithYear_month_day_hour_minute_second_timeZone_1, - year, - month, - day, - hour, - minute, - second, - aTimeZone?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void setCalendarFormat_(NSString? format) { - _lib._objc_msgSend_209( - _id, _lib._sel_setCalendarFormat_1, format?._id ?? ffi.nullptr); - } - - void setTimeZone_(NSTimeZone? aTimeZone) { - _lib._objc_msgSend_210( - _id, _lib._sel_setTimeZone_1, aTimeZone?._id ?? ffi.nullptr); - } - - void years_months_days_hours_minutes_seconds_sinceDate_( - ffi.Pointer yp, - ffi.Pointer mop, - ffi.Pointer dp, - ffi.Pointer hp, - ffi.Pointer mip, - ffi.Pointer sp, - NSCalendarDate date) { - _lib._objc_msgSend_211( - _id, - _lib._sel_years_months_days_hours_minutes_seconds_sinceDate_1, - yp, - mop, - dp, - hp, - mip, - sp, - date._id); - } - - static NSDate getDistantFuture(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_172( - _lib._class_NSCalendarDate1, _lib._sel_distantFuture1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate getDistantPast(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_172( - _lib._class_NSCalendarDate1, _lib._sel_distantPast1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - @override - NSCalendarDate init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - @override - NSCalendarDate initWithTimeIntervalSinceReferenceDate_(double ti) { - final _ret = _lib._objc_msgSend_166( - _id, _lib._sel_initWithTimeIntervalSinceReferenceDate_1, ti); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - @override - NSCalendarDate? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - @override - NSCalendarDate dateByAddingTimeInterval_(double ti) { - final _ret = - _lib._objc_msgSend_166(_id, _lib._sel_dateByAddingTimeInterval_1, ti); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - static NSCalendarDate date(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSCalendarDate1, _lib._sel_date1); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - static NSCalendarDate dateWithTimeIntervalSinceNow_( - SwiftLibrary _lib, double secs) { - final _ret = _lib._objc_msgSend_166(_lib._class_NSCalendarDate1, - _lib._sel_dateWithTimeIntervalSinceNow_1, secs); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - static NSCalendarDate dateWithTimeIntervalSinceReferenceDate_( - SwiftLibrary _lib, double ti) { - final _ret = _lib._objc_msgSend_166(_lib._class_NSCalendarDate1, - _lib._sel_dateWithTimeIntervalSinceReferenceDate_1, ti); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - static NSCalendarDate dateWithTimeIntervalSince1970_( - SwiftLibrary _lib, double secs) { - final _ret = _lib._objc_msgSend_166(_lib._class_NSCalendarDate1, - _lib._sel_dateWithTimeIntervalSince1970_1, secs); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - static NSCalendarDate dateWithTimeInterval_sinceDate_( - SwiftLibrary _lib, double secsToBeAdded, NSDate date) { - final _ret = _lib._objc_msgSend_171(_lib._class_NSCalendarDate1, - _lib._sel_dateWithTimeInterval_sinceDate_1, secsToBeAdded, date._id); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - static NSDate getNow(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_172(_lib._class_NSCalendarDate1, _lib._sel_now1); - return NSDate._(_ret, _lib, retain: true, release: true); - } - - @override - NSCalendarDate initWithTimeIntervalSinceNow_(double secs) { - final _ret = _lib._objc_msgSend_166( - _id, _lib._sel_initWithTimeIntervalSinceNow_1, secs); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - @override - NSCalendarDate initWithTimeIntervalSince1970_(double secs) { - final _ret = _lib._objc_msgSend_166( - _id, _lib._sel_initWithTimeIntervalSince1970_1, secs); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - @override - NSCalendarDate initWithTimeInterval_sinceDate_( - double secsToBeAdded, NSDate date) { - final _ret = _lib._objc_msgSend_171(_id, - _lib._sel_initWithTimeInterval_sinceDate_1, secsToBeAdded, date._id); - return NSCalendarDate._(_ret, _lib, retain: true, release: true); - } - - static NSObject? dateWithNaturalLanguageString_locale_( - SwiftLibrary _lib, NSString string, NSObject? locale) { - final _ret = _lib._objc_msgSend_173( - _lib._class_NSCalendarDate1, - _lib._sel_dateWithNaturalLanguageString_locale_1, - string._id, - locale?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject? dateWithNaturalLanguageString_( - SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSCalendarDate1, - _lib._sel_dateWithNaturalLanguageString_1, string._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject dateWithString_(SwiftLibrary _lib, NSString aString) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSCalendarDate1, _lib._sel_dateWithString_1, aString._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSCalendarDate new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSCalendarDate1, _lib._sel_new1); - return NSCalendarDate._(_ret, _lib, retain: false, release: true); - } - - static NSCalendarDate allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSCalendarDate1, _lib._sel_allocWithZone_1, zone); - return NSCalendarDate._(_ret, _lib, retain: false, release: true); - } - - static NSCalendarDate alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSCalendarDate1, _lib._sel_alloc1); - return NSCalendarDate._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSCalendarDate1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSCalendarDate1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSCalendarDate1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSCalendarDate1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSCalendarDate1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSCalendarDate1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSCalendarDate1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSCalendarDate1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSCalendarDate1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSTimeZone extends NSObject { - NSTimeZone._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSTimeZone] that points to the same underlying object as [other]. - static NSTimeZone castFrom(T other) { - return NSTimeZone._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSTimeZone] that wraps the given raw object pointer. - static NSTimeZone castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSTimeZone._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSTimeZone]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSTimeZone1); - } - - NSString get name { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_name1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSData get data { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_data1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - int secondsFromGMTForDate_(NSDate aDate) { - return _lib._objc_msgSend_176( - _id, _lib._sel_secondsFromGMTForDate_1, aDate._id); - } - - NSString? abbreviationForDate_(NSDate aDate) { - final _ret = - _lib._objc_msgSend_177(_id, _lib._sel_abbreviationForDate_1, aDate._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - bool isDaylightSavingTimeForDate_(NSDate aDate) { - return _lib._objc_msgSend_170( - _id, _lib._sel_isDaylightSavingTimeForDate_1, aDate._id); - } - - double daylightSavingTimeOffsetForDate_(NSDate aDate) { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_167_fpret( - _id, _lib._sel_daylightSavingTimeOffsetForDate_1, aDate._id) - : _lib._objc_msgSend_167( - _id, _lib._sel_daylightSavingTimeOffsetForDate_1, aDate._id); - } - - NSDate? nextDaylightSavingTimeTransitionAfterDate_(NSDate aDate) { - final _ret = _lib._objc_msgSend_178( - _id, _lib._sel_nextDaylightSavingTimeTransitionAfterDate_1, aDate._id); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } - - static NSTimeZone getSystemTimeZone(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_179( - _lib._class_NSTimeZone1, _lib._sel_systemTimeZone1); - return NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - static void resetSystemTimeZone(SwiftLibrary _lib) { - _lib._objc_msgSend_1( - _lib._class_NSTimeZone1, _lib._sel_resetSystemTimeZone1); - } - - static NSTimeZone getDefaultTimeZone(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_179( - _lib._class_NSTimeZone1, _lib._sel_defaultTimeZone1); - return NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - static void setDefaultTimeZone(SwiftLibrary _lib, NSTimeZone value) { - return _lib._objc_msgSend_180( - _lib._class_NSTimeZone1, _lib._sel_setDefaultTimeZone_1, value._id); - } - - static NSTimeZone getLocalTimeZone(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_179( - _lib._class_NSTimeZone1, _lib._sel_localTimeZone1); - return NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - static NSArray getKnownTimeZoneNames(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSTimeZone1, _lib._sel_knownTimeZoneNames1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary getAbbreviationDictionary(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_181( - _lib._class_NSTimeZone1, _lib._sel_abbreviationDictionary1); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static void setAbbreviationDictionary(SwiftLibrary _lib, NSDictionary value) { - return _lib._objc_msgSend_182(_lib._class_NSTimeZone1, - _lib._sel_setAbbreviationDictionary_1, value._id); - } - - static NSString getTimeZoneDataVersion(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_21( - _lib._class_NSTimeZone1, _lib._sel_timeZoneDataVersion1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - int get secondsFromGMT { - return _lib._objc_msgSend_83(_id, _lib._sel_secondsFromGMT1); - } - - NSString? get abbreviation { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_abbreviation1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - bool get daylightSavingTime { - return _lib._objc_msgSend_12(_id, _lib._sel_isDaylightSavingTime1); - } - - double get daylightSavingTimeOffset { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_daylightSavingTimeOffset1) - : _lib._objc_msgSend_165(_id, _lib._sel_daylightSavingTimeOffset1); - } - - NSDate? get nextDaylightSavingTimeTransition { - final _ret = _lib._objc_msgSend_183( - _id, _lib._sel_nextDaylightSavingTimeTransition1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - bool isEqualToTimeZone_(NSTimeZone aTimeZone) { - return _lib._objc_msgSend_184( - _id, _lib._sel_isEqualToTimeZone_1, aTimeZone._id); - } - - NSString? localizedName_locale_(int style, NSLocale? locale) { - final _ret = _lib._objc_msgSend_203(_id, _lib._sel_localizedName_locale_1, - style, locale?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSTimeZone? timeZoneWithName_(SwiftLibrary _lib, NSString tzName) { - final _ret = _lib._objc_msgSend_38( - _lib._class_NSTimeZone1, _lib._sel_timeZoneWithName_1, tzName._id); - return _ret.address == 0 - ? null - : NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - static NSTimeZone? timeZoneWithName_data_( - SwiftLibrary _lib, NSString tzName, NSData? aData) { - final _ret = _lib._objc_msgSend_204( - _lib._class_NSTimeZone1, - _lib._sel_timeZoneWithName_data_1, - tzName._id, - aData?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - NSTimeZone? initWithName_(NSString tzName) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_initWithName_1, tzName._id); - return _ret.address == 0 - ? null - : NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - NSTimeZone? initWithName_data_(NSString tzName, NSData? aData) { - final _ret = _lib._objc_msgSend_204(_id, _lib._sel_initWithName_data_1, - tzName._id, aData?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - static NSTimeZone timeZoneForSecondsFromGMT_(SwiftLibrary _lib, int seconds) { - final _ret = _lib._objc_msgSend_205(_lib._class_NSTimeZone1, - _lib._sel_timeZoneForSecondsFromGMT_1, seconds); - return NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - static NSTimeZone? timeZoneWithAbbreviation_( - SwiftLibrary _lib, NSString abbreviation) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSTimeZone1, - _lib._sel_timeZoneWithAbbreviation_1, abbreviation._id); - return _ret.address == 0 - ? null - : NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - @override - NSTimeZone init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - static NSTimeZone new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSTimeZone1, _lib._sel_new1); - return NSTimeZone._(_ret, _lib, retain: false, release: true); - } - - static NSTimeZone allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSTimeZone1, _lib._sel_allocWithZone_1, zone); - return NSTimeZone._(_ret, _lib, retain: false, release: true); - } - - static NSTimeZone alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSTimeZone1, _lib._sel_alloc1); - return NSTimeZone._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSTimeZone1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSTimeZone1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSTimeZone1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSTimeZone1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSTimeZone1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSTimeZone1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSTimeZone1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSTimeZone1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSTimeZone1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSTimeZoneNameStyle { - static const int NSTimeZoneNameStyleStandard = 0; - static const int NSTimeZoneNameStyleShortStandard = 1; - static const int NSTimeZoneNameStyleDaylightSaving = 2; - static const int NSTimeZoneNameStyleShortDaylightSaving = 3; - static const int NSTimeZoneNameStyleGeneric = 4; - static const int NSTimeZoneNameStyleShortGeneric = 5; -} - -class NSLocale extends NSObject { - NSLocale._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSLocale] that points to the same underlying object as [other]. - static NSLocale castFrom(T other) { - return NSLocale._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSLocale] that wraps the given raw object pointer. - static NSLocale castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSLocale._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSLocale]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSLocale1); - } - - NSObject? objectForKey_(NSString key) { - final _ret = _lib._objc_msgSend_38(_id, _lib._sel_objectForKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSString? displayNameForKey_value_(NSString key, NSObject value) { - final _ret = _lib._objc_msgSend_185( - _id, _lib._sel_displayNameForKey_value_1, key._id, value._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSLocale initWithLocaleIdentifier_(NSString string) { - final _ret = _lib._objc_msgSend_31( - _id, _lib._sel_initWithLocaleIdentifier_1, string._id); - return NSLocale._(_ret, _lib, retain: true, release: true); - } - - NSLocale? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSLocale._(_ret, _lib, retain: true, release: true); - } - - NSString get localeIdentifier { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_localeIdentifier1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString localizedStringForLocaleIdentifier_(NSString localeIdentifier) { - final _ret = _lib._objc_msgSend_69(_id, - _lib._sel_localizedStringForLocaleIdentifier_1, localeIdentifier._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get languageCode { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_languageCode1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForLanguageCode_(NSString languageCode) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_localizedStringForLanguageCode_1, languageCode._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get languageIdentifier { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_languageIdentifier1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get countryCode { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_countryCode1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForCountryCode_(NSString countryCode) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_localizedStringForCountryCode_1, countryCode._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get regionCode { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_regionCode1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get scriptCode { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_scriptCode1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForScriptCode_(NSString scriptCode) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_localizedStringForScriptCode_1, scriptCode._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get variantCode { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_variantCode1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForVariantCode_(NSString variantCode) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_localizedStringForVariantCode_1, variantCode._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSCharacterSet get exemplarCharacterSet { - final _ret = _lib._objc_msgSend_187(_id, _lib._sel_exemplarCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - NSString get calendarIdentifier { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_calendarIdentifier1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForCalendarIdentifier_(NSString calendarIdentifier) { - final _ret = _lib._objc_msgSend_186( - _id, - _lib._sel_localizedStringForCalendarIdentifier_1, - calendarIdentifier._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get collationIdentifier { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_collationIdentifier1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForCollationIdentifier_( - NSString collationIdentifier) { - final _ret = _lib._objc_msgSend_186( - _id, - _lib._sel_localizedStringForCollationIdentifier_1, - collationIdentifier._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - bool get usesMetricSystem { - return _lib._objc_msgSend_12(_id, _lib._sel_usesMetricSystem1); - } - - NSString get decimalSeparator { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_decimalSeparator1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get groupingSeparator { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_groupingSeparator1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get currencySymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_currencySymbol1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get currencyCode { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_currencyCode1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForCurrencyCode_(NSString currencyCode) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_localizedStringForCurrencyCode_1, currencyCode._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get collatorIdentifier { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_collatorIdentifier1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? localizedStringForCollatorIdentifier_(NSString collatorIdentifier) { - final _ret = _lib._objc_msgSend_186( - _id, - _lib._sel_localizedStringForCollatorIdentifier_1, - collatorIdentifier._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get quotationBeginDelimiter { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_quotationBeginDelimiter1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get quotationEndDelimiter { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_quotationEndDelimiter1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get alternateQuotationBeginDelimiter { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_alternateQuotationBeginDelimiter1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get alternateQuotationEndDelimiter { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_alternateQuotationEndDelimiter1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSLocale getAutoupdatingCurrentLocale(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_197( - _lib._class_NSLocale1, _lib._sel_autoupdatingCurrentLocale1); - return NSLocale._(_ret, _lib, retain: true, release: true); - } - - static NSLocale getCurrentLocale(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_197(_lib._class_NSLocale1, _lib._sel_currentLocale1); - return NSLocale._(_ret, _lib, retain: true, release: true); - } - - static NSLocale getSystemLocale(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_197(_lib._class_NSLocale1, _lib._sel_systemLocale1); - return NSLocale._(_ret, _lib, retain: true, release: true); - } - - static NSLocale localeWithLocaleIdentifier_( - SwiftLibrary _lib, NSString ident) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSLocale1, - _lib._sel_localeWithLocaleIdentifier_1, ident._id); - return NSLocale._(_ret, _lib, retain: true, release: true); - } - - @override - NSLocale init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSLocale._(_ret, _lib, retain: true, release: true); - } - - static NSArray getAvailableLocaleIdentifiers(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSLocale1, _lib._sel_availableLocaleIdentifiers1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray getISOLanguageCodes(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSLocale1, _lib._sel_ISOLanguageCodes1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray getISOCountryCodes(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSLocale1, _lib._sel_ISOCountryCodes1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray getISOCurrencyCodes(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSLocale1, _lib._sel_ISOCurrencyCodes1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray getCommonISOCurrencyCodes(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSLocale1, _lib._sel_commonISOCurrencyCodes1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray getPreferredLanguages(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSLocale1, _lib._sel_preferredLanguages1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary componentsFromLocaleIdentifier_( - SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_198(_lib._class_NSLocale1, - _lib._sel_componentsFromLocaleIdentifier_1, string._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSString localeIdentifierFromComponents_( - SwiftLibrary _lib, NSDictionary dict) { - final _ret = _lib._objc_msgSend_199(_lib._class_NSLocale1, - _lib._sel_localeIdentifierFromComponents_1, dict._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString canonicalLocaleIdentifierFromString_( - SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_69(_lib._class_NSLocale1, - _lib._sel_canonicalLocaleIdentifierFromString_1, string._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString canonicalLanguageIdentifierFromString_( - SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_69(_lib._class_NSLocale1, - _lib._sel_canonicalLanguageIdentifierFromString_1, string._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString? localeIdentifierFromWindowsLocaleCode_( - SwiftLibrary _lib, int lcid) { - final _ret = _lib._objc_msgSend_200(_lib._class_NSLocale1, - _lib._sel_localeIdentifierFromWindowsLocaleCode_1, lcid); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static int windowsLocaleCodeFromLocaleIdentifier_( - SwiftLibrary _lib, NSString localeIdentifier) { - return _lib._objc_msgSend_201( - _lib._class_NSLocale1, - _lib._sel_windowsLocaleCodeFromLocaleIdentifier_1, - localeIdentifier._id); - } - - static int characterDirectionForLanguage_( - SwiftLibrary _lib, NSString isoLangCode) { - return _lib._objc_msgSend_202(_lib._class_NSLocale1, - _lib._sel_characterDirectionForLanguage_1, isoLangCode._id); - } - - static int lineDirectionForLanguage_( - SwiftLibrary _lib, NSString isoLangCode) { - return _lib._objc_msgSend_202(_lib._class_NSLocale1, - _lib._sel_lineDirectionForLanguage_1, isoLangCode._id); - } - - static NSLocale new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSLocale1, _lib._sel_new1); - return NSLocale._(_ret, _lib, retain: false, release: true); - } - - static NSLocale allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSLocale1, _lib._sel_allocWithZone_1, zone); - return NSLocale._(_ret, _lib, retain: false, release: true); - } - - static NSLocale alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSLocale1, _lib._sel_alloc1); - return NSLocale._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSLocale1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSLocale1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSLocale1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSLocale1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSLocale1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSLocale1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSLocale1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSLocale1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSLocale1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSCharacterSet extends NSObject { - NSCharacterSet._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSCharacterSet] that points to the same underlying object as [other]. - static NSCharacterSet castFrom(T other) { - return NSCharacterSet._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSCharacterSet] that wraps the given raw object pointer. - static NSCharacterSet castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSCharacterSet._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSCharacterSet]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSCharacterSet1); - } - - static NSCharacterSet getControlCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_controlCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getWhitespaceCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_whitespaceCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getWhitespaceAndNewlineCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187(_lib._class_NSCharacterSet1, - _lib._sel_whitespaceAndNewlineCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getDecimalDigitCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_decimalDigitCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getLetterCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_letterCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getLowercaseLetterCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_lowercaseLetterCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getUppercaseLetterCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_uppercaseLetterCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getNonBaseCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_nonBaseCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getAlphanumericCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_alphanumericCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getDecomposableCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_decomposableCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getIllegalCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_illegalCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getPunctuationCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_punctuationCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getCapitalizedLetterCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_capitalizedLetterCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getSymbolCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_symbolCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getNewlineCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_newlineCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: false, release: true); - } - - static NSCharacterSet characterSetWithRange_( - SwiftLibrary _lib, _NSRange aRange) { - final _ret = _lib._objc_msgSend_188( - _lib._class_NSCharacterSet1, _lib._sel_characterSetWithRange_1, aRange); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet characterSetWithCharactersInString_( - SwiftLibrary _lib, NSString aString) { - final _ret = _lib._objc_msgSend_189(_lib._class_NSCharacterSet1, - _lib._sel_characterSetWithCharactersInString_1, aString._id); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet characterSetWithBitmapRepresentation_( - SwiftLibrary _lib, NSData data) { - final _ret = _lib._objc_msgSend_190(_lib._class_NSCharacterSet1, - _lib._sel_characterSetWithBitmapRepresentation_1, data._id); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet? characterSetWithContentsOfFile_( - SwiftLibrary _lib, NSString fName) { - final _ret = _lib._objc_msgSend_191(_lib._class_NSCharacterSet1, - _lib._sel_characterSetWithContentsOfFile_1, fName._id); - return _ret.address == 0 - ? null - : NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - NSCharacterSet initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_192(_id, _lib._sel_initWithCoder_1, coder._id); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - bool characterIsMember_(int aCharacter) { - return _lib._objc_msgSend_193( - _id, _lib._sel_characterIsMember_1, aCharacter); - } - - NSData get bitmapRepresentation { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_bitmapRepresentation1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - NSCharacterSet get invertedSet { - final _ret = _lib._objc_msgSend_187(_id, _lib._sel_invertedSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - bool longCharacterIsMember_(int theLongChar) { - return _lib._objc_msgSend_194( - _id, _lib._sel_longCharacterIsMember_1, theLongChar); - } - - bool isSupersetOfSet_(NSCharacterSet theOtherSet) { - return _lib._objc_msgSend_195( - _id, _lib._sel_isSupersetOfSet_1, theOtherSet._id); - } - - bool hasMemberInPlane_(int thePlane) { - return _lib._objc_msgSend_196(_id, _lib._sel_hasMemberInPlane_1, thePlane); - } - - static NSCharacterSet getURLUserAllowedCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_URLUserAllowedCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getURLPasswordAllowedCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_URLPasswordAllowedCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getURLHostAllowedCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_URLHostAllowedCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getURLPathAllowedCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_URLPathAllowedCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getURLQueryAllowedCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_URLQueryAllowedCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet getURLFragmentAllowedCharacterSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_187( - _lib._class_NSCharacterSet1, _lib._sel_URLFragmentAllowedCharacterSet1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSCharacterSet init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSCharacterSet._(_ret, _lib, retain: true, release: true); - } - - static NSCharacterSet new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSCharacterSet1, _lib._sel_new1); - return NSCharacterSet._(_ret, _lib, retain: false, release: true); - } - - static NSCharacterSet allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSCharacterSet1, _lib._sel_allocWithZone_1, zone); - return NSCharacterSet._(_ret, _lib, retain: false, release: true); - } - - static NSCharacterSet alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSCharacterSet1, _lib._sel_alloc1); - return NSCharacterSet._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSCharacterSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSCharacterSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSCharacterSet1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSCharacterSet1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSCharacterSet1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSCharacterSet1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSCharacterSet1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSCharacterSet1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSCharacterSet1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSLocaleLanguageDirection { - static const int NSLocaleLanguageDirectionUnknown = 0; - static const int NSLocaleLanguageDirectionLeftToRight = 1; - static const int NSLocaleLanguageDirectionRightToLeft = 2; - static const int NSLocaleLanguageDirectionTopToBottom = 3; - static const int NSLocaleLanguageDirectionBottomToTop = 4; -} - -abstract class NSURLBookmarkCreationOptions { - static const int NSURLBookmarkCreationPreferFileIDResolution = 256; - static const int NSURLBookmarkCreationMinimalBookmark = 512; - static const int NSURLBookmarkCreationSuitableForBookmarkFile = 1024; - static const int NSURLBookmarkCreationWithSecurityScope = 2048; - static const int NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess = 4096; - static const int NSURLBookmarkCreationWithoutImplicitSecurityScope = - 536870912; -} - -abstract class NSURLBookmarkResolutionOptions { - static const int NSURLBookmarkResolutionWithoutUI = 256; - static const int NSURLBookmarkResolutionWithoutMounting = 512; - static const int NSURLBookmarkResolutionWithSecurityScope = 1024; - static const int NSURLBookmarkResolutionWithoutImplicitStartAccessing = 32768; -} - -class NSURLHandle extends NSObject { - NSURLHandle._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSURLHandle] that points to the same underlying object as [other]. - static NSURLHandle castFrom(T other) { - return NSURLHandle._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSURLHandle] that wraps the given raw object pointer. - static NSURLHandle castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLHandle._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSURLHandle]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLHandle1); - } - - static void registerURLHandleClass_( - SwiftLibrary _lib, NSObject anURLHandleSubclass) { - _lib._objc_msgSend_15(_lib._class_NSURLHandle1, - _lib._sel_registerURLHandleClass_1, anURLHandleSubclass._id); - } - - static NSObject URLHandleClassForURL_(SwiftLibrary _lib, NSURL anURL) { - final _ret = _lib._objc_msgSend_262( - _lib._class_NSURLHandle1, _lib._sel_URLHandleClassForURL_1, anURL._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - int status() { - return _lib._objc_msgSend_263(_id, _lib._sel_status1); - } - - NSString failureReason() { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_failureReason1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - void addClient_(NSObject client) { - _lib._objc_msgSend_15(_id, _lib._sel_addClient_1, client._id); - } - - void removeClient_(NSObject client) { - _lib._objc_msgSend_15(_id, _lib._sel_removeClient_1, client._id); - } - - void loadInBackground() { - _lib._objc_msgSend_1(_id, _lib._sel_loadInBackground1); - } - - void cancelLoadInBackground() { - _lib._objc_msgSend_1(_id, _lib._sel_cancelLoadInBackground1); - } - - NSData resourceData() { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_resourceData1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - NSData availableResourceData() { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_availableResourceData1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - int expectedResourceDataSize() { - return _lib._objc_msgSend_238(_id, _lib._sel_expectedResourceDataSize1); - } - - void flushCachedData() { - _lib._objc_msgSend_1(_id, _lib._sel_flushCachedData1); - } - - void backgroundLoadDidFailWithReason_(NSString reason) { - _lib._objc_msgSend_247( - _id, _lib._sel_backgroundLoadDidFailWithReason_1, reason._id); - } - - void didLoadBytes_loadComplete_(NSData newBytes, bool yorn) { - _lib._objc_msgSend_264( - _id, _lib._sel_didLoadBytes_loadComplete_1, newBytes._id, yorn); - } - - static bool canInitWithURL_(SwiftLibrary _lib, NSURL anURL) { - return _lib._objc_msgSend_265( - _lib._class_NSURLHandle1, _lib._sel_canInitWithURL_1, anURL._id); - } - - static NSURLHandle cachedHandleForURL_(SwiftLibrary _lib, NSURL anURL) { - final _ret = _lib._objc_msgSend_266( - _lib._class_NSURLHandle1, _lib._sel_cachedHandleForURL_1, anURL._id); - return NSURLHandle._(_ret, _lib, retain: true, release: true); - } - - NSObject initWithURL_cached_(NSURL anURL, bool willCache) { - final _ret = _lib._objc_msgSend_267( - _id, _lib._sel_initWithURL_cached_1, anURL._id, willCache); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject propertyForKey_(NSString propertyKey) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_propertyForKey_1, propertyKey._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject propertyForKeyIfAvailable_(NSString propertyKey) { - final _ret = _lib._objc_msgSend_31( - _id, _lib._sel_propertyForKeyIfAvailable_1, propertyKey._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - bool writeProperty_forKey_(NSObject propertyValue, NSString propertyKey) { - return _lib._objc_msgSend_261(_id, _lib._sel_writeProperty_forKey_1, - propertyValue._id, propertyKey._id); - } - - bool writeData_(NSData data) { - return _lib._objc_msgSend_24(_id, _lib._sel_writeData_1, data._id); - } - - NSData loadInForeground() { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_loadInForeground1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - void beginLoadInBackground() { - _lib._objc_msgSend_1(_id, _lib._sel_beginLoadInBackground1); - } - - void endLoadInBackground() { - _lib._objc_msgSend_1(_id, _lib._sel_endLoadInBackground1); - } - - @override - NSURLHandle init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLHandle._(_ret, _lib, retain: true, release: true); - } - - static NSURLHandle new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLHandle1, _lib._sel_new1); - return NSURLHandle._(_ret, _lib, retain: false, release: true); - } - - static NSURLHandle allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLHandle1, _lib._sel_allocWithZone_1, zone); - return NSURLHandle._(_ret, _lib, retain: false, release: true); - } - - static NSURLHandle alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLHandle1, _lib._sel_alloc1); - return NSURLHandle._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLHandle1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLHandle1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLHandle1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLHandle1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLHandle1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLHandle1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLHandle1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURLHandle1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLHandle1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSURLHandleStatus { - static const int NSURLHandleNotLoaded = 0; - static const int NSURLHandleLoadSucceeded = 1; - static const int NSURLHandleLoadInProgress = 2; - static const int NSURLHandleLoadFailed = 3; -} - -abstract class NSDataWritingOptions { - static const int NSDataWritingAtomic = 1; - static const int NSDataWritingWithoutOverwriting = 2; - static const int NSDataWritingFileProtectionNone = 268435456; - static const int NSDataWritingFileProtectionComplete = 536870912; - static const int NSDataWritingFileProtectionCompleteUnlessOpen = 805306368; - static const int - NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication = - 1073741824; - static const int NSDataWritingFileProtectionCompleteWhenUserInactive = - 1342177280; - static const int NSDataWritingFileProtectionMask = 4026531840; - static const int NSAtomicWrite = 1; -} - -abstract class NSDataSearchOptions { - static const int NSDataSearchBackwards = 1; - static const int NSDataSearchAnchored = 2; -} - -void _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, _NSRange, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureRegistry = , _NSRange, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_registerClosure( - void Function(ffi.Pointer, _NSRange, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); - -class ObjCBlock_ffiVoid_ffiVoid_NSRange_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ffiVoid_NSRange_bool._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ffiVoid_NSRange_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ffiVoid_NSRange_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiVoid_NSRange_bool.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiVoid_NSRange_bool.fromFunction(SwiftLibrary lib, - void Function(ffi.Pointer, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2) => - fn(arg0, arg1, arg2))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ffiVoid_NSRange_bool.listener(SwiftLibrary lib, - void Function(ffi.Pointer, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2) => - fn(arg0, arg1, arg2))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - _NSRange, ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - _NSRange, ffi.Pointer)>()(_id, arg0, arg1, arg2); -} - -abstract class NSDataReadingOptions { - static const int NSDataReadingMappedIfSafe = 1; - static const int NSDataReadingUncached = 2; - static const int NSDataReadingMappedAlways = 8; - static const int NSDataReadingMapped = 1; - static const int NSMappedRead = 1; - static const int NSUncachedRead = 2; -} - -void _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, int arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, ffi.UnsignedLong arg1)>>() - .asFunction, int)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistry = - , int)>{}; -int _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_registerClosure( - void Function(ffi.Pointer, int) fn) { - final id = ++_ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistryIndex; - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, int arg1) => - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, ffi.UnsignedLong arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer, ffi.UnsignedLong)>( - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong.fromFunction( - SwiftLibrary lib, void Function(ffi.Pointer, int) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer, ffi.UnsignedLong)>( - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_registerClosure( - (ffi.Pointer arg0, int arg1) => fn(arg0, arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong.listener( - SwiftLibrary lib, void Function(ffi.Pointer, int) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong)>.listener( - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_registerClosure( - (ffi.Pointer arg0, int arg1) => fn(arg0, arg1))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.UnsignedLong)>? _dartFuncListenerTrampoline; - - void call(ffi.Pointer arg0, int arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, ffi.UnsignedLong arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - int)>()(_id, arg0, arg1); -} - -abstract class NSDataBase64DecodingOptions { - static const int NSDataBase64DecodingIgnoreUnknownCharacters = 1; -} - -abstract class NSDataBase64EncodingOptions { - static const int NSDataBase64Encoding64CharacterLineLength = 1; - static const int NSDataBase64Encoding76CharacterLineLength = 2; - static const int NSDataBase64EncodingEndLineWithCarriageReturn = 16; - static const int NSDataBase64EncodingEndLineWithLineFeed = 32; -} - -abstract class NSDataCompressionAlgorithm { - static const int NSDataCompressionAlgorithmLZFSE = 0; - static const int NSDataCompressionAlgorithmLZ4 = 1; - static const int NSDataCompressionAlgorithmLZMA = 2; - static const int NSDataCompressionAlgorithmZlib = 3; -} - -abstract class NSDecodingFailurePolicy { - static const int NSDecodingFailurePolicyRaiseException = 0; - static const int NSDecodingFailurePolicySetErrorAndReturn = 1; -} - -abstract class NSStringCompareOptions { - static const int NSCaseInsensitiveSearch = 1; - static const int NSLiteralSearch = 2; - static const int NSBackwardsSearch = 4; - static const int NSAnchoredSearch = 8; - static const int NSNumericSearch = 64; - static const int NSDiacriticInsensitiveSearch = 128; - static const int NSWidthInsensitiveSearch = 256; - static const int NSForcedOrderingSearch = 512; - static const int NSRegularExpressionSearch = 1024; -} - -abstract class NSStringEnumerationOptions { - static const int NSStringEnumerationByLines = 0; - static const int NSStringEnumerationByParagraphs = 1; - static const int NSStringEnumerationByComposedCharacterSequences = 2; - static const int NSStringEnumerationByWords = 3; - static const int NSStringEnumerationBySentences = 4; - static const int NSStringEnumerationByCaretPositions = 5; - static const int NSStringEnumerationByDeletionClusters = 6; - static const int NSStringEnumerationReverse = 256; - static const int NSStringEnumerationSubstringNotRequired = 512; - static const int NSStringEnumerationLocalized = 1024; -} - -void _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - _NSRange arg2, - ffi.Pointer arg3) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - _NSRange arg2, ffi.Pointer arg3)>>() - .asFunction< - void Function(ffi.Pointer, _NSRange, _NSRange, - ffi.Pointer)>()(arg0, arg1, arg2, arg3); -final _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistry = , _NSRange, _NSRange, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_registerClosure( - void Function(ffi.Pointer, _NSRange, _NSRange, - ffi.Pointer) - fn) { - final id = - ++_ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - _NSRange arg2, - ffi.Pointer arg3) => - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2, arg3); - -class ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - _NSRange arg2, ffi.Pointer arg3)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool.fromFunction(SwiftLibrary lib, - void Function(NSString?, _NSRange, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, _NSRange arg2, - ffi.Pointer arg3) => - fn(arg0.address == 0 ? null : NSString._(arg0, lib, retain: true, release: true), arg1, arg2, arg3))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool.listener(SwiftLibrary lib, - void Function(NSString?, _NSRange, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - _NSRange, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, _NSRange arg2, - ffi.Pointer arg3) => - fn(arg0.address == 0 ? null : NSString._(arg0, lib, retain: true, release: true), arg1, arg2, arg3))), - lib); - static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - _NSRange, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSString? arg0, _NSRange arg1, _NSRange arg2, - ffi.Pointer arg3) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - _NSRange arg2, - ffi.Pointer arg3)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - _NSRange, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1, arg2, arg3); -} - -void _ObjCBlock_ffiVoid_NSString_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function( - ffi.Pointer, ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_NSString_bool_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSString_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSString_bool_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSString_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSString_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSString_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_NSString_bool_closureRegistry[block.ref.target.address]!( - arg0, arg1); - -class ObjCBlock_ffiVoid_NSString_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSString_bool._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSString_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSString_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSString_bool.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSString_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSString_bool.fromFunction( - SwiftLibrary lib, void Function(NSString, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSString_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSString_bool_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - NSString._(arg0, lib, retain: true, release: true), - arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSString_bool.listener( - SwiftLibrary lib, void Function(NSString, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSString_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSString_bool_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => - fn(NSString._(arg0, lib, retain: true, release: true), - arg1))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSString arg0, ffi.Pointer arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1); -} - -abstract class NSStringEncodingConversionOptions { - static const int NSStringEncodingConversionAllowLossy = 1; - static const int NSStringEncodingConversionExternalRepresentation = 2; -} - -void _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.UnsignedLong arg1)>>() - .asFunction, int)>()( - arg0, arg1); -final _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistry = - , int)>{}; -int _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistryIndex = - 0; -ffi.Pointer - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_registerClosure( - void Function(ffi.Pointer, int) fn) { - final id = - ++_ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistryIndex; - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1) => - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong - extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.UnsignedLong arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong)>( - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong.fromFunction( - SwiftLibrary lib, void Function(ffi.Pointer, int) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong)>( - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_registerClosure( - (ffi.Pointer arg0, int arg1) => - fn(arg0, arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong.listener( - SwiftLibrary lib, void Function(ffi.Pointer, int) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.UnsignedLong)>.listener( - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_registerClosure( - (ffi.Pointer arg0, int arg1) => - fn(arg0, arg1))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.UnsignedLong)>? _dartFuncListenerTrampoline; - - void call(ffi.Pointer arg0, int arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.UnsignedLong arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - int)>()(_id, arg0, arg1); -} - -abstract class NSLinguisticTaggerOptions { - static const int NSLinguisticTaggerOmitWords = 1; - static const int NSLinguisticTaggerOmitPunctuation = 2; - static const int NSLinguisticTaggerOmitWhitespace = 4; - static const int NSLinguisticTaggerOmitOther = 8; - static const int NSLinguisticTaggerJoinNames = 16; -} - -class NSOrthography extends NSObject { - NSOrthography._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSOrthography] that points to the same underlying object as [other]. - static NSOrthography castFrom(T other) { - return NSOrthography._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSOrthography] that wraps the given raw object pointer. - static NSOrthography castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSOrthography._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSOrthography]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSOrthography1); - } - - NSString get dominantScript { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_dominantScript1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSDictionary get languageMap { - final _ret = _lib._objc_msgSend_181(_id, _lib._sel_languageMap1); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSOrthography initWithDominantScript_languageMap_( - NSString script, NSDictionary map) { - final _ret = _lib._objc_msgSend_400(_id, - _lib._sel_initWithDominantScript_languageMap_1, script._id, map._id); - return NSOrthography._(_ret, _lib, retain: true, release: true); - } - - NSOrthography? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSOrthography._(_ret, _lib, retain: true, release: true); - } - - NSArray? languagesForScript_(NSString script) { - final _ret = - _lib._objc_msgSend_132(_id, _lib._sel_languagesForScript_1, script._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString? dominantLanguageForScript_(NSString script) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_dominantLanguageForScript_1, script._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString get dominantLanguage { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_dominantLanguage1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray get allScripts { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_allScripts1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray get allLanguages { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_allLanguages1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSOrthography defaultOrthographyForLanguage_( - SwiftLibrary _lib, NSString language) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSOrthography1, - _lib._sel_defaultOrthographyForLanguage_1, language._id); - return NSOrthography._(_ret, _lib, retain: true, release: true); - } - - static NSOrthography orthographyWithDominantScript_languageMap_( - SwiftLibrary _lib, NSString script, NSDictionary map) { - final _ret = _lib._objc_msgSend_400( - _lib._class_NSOrthography1, - _lib._sel_orthographyWithDominantScript_languageMap_1, - script._id, - map._id); - return NSOrthography._(_ret, _lib, retain: true, release: true); - } - - @override - NSOrthography init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSOrthography._(_ret, _lib, retain: true, release: true); - } - - static NSOrthography new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOrthography1, _lib._sel_new1); - return NSOrthography._(_ret, _lib, retain: false, release: true); - } - - static NSOrthography allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSOrthography1, _lib._sel_allocWithZone_1, zone); - return NSOrthography._(_ret, _lib, retain: false, release: true); - } - - static NSOrthography alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOrthography1, _lib._sel_alloc1); - return NSOrthography._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSOrthography1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSOrthography1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOrthography1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOrthography1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSOrthography1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSOrthography1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSOrthography1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSOrthography1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSOrthography1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -void _ObjCBlock_ffiVoid_ObjCObject_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function( - ffi.Pointer, ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_ObjCObject_bool_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ObjCObject_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_ObjCObject_bool_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_ObjCObject_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_ObjCObject_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_ObjCObject_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_ObjCObject_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_ffiVoid_ObjCObject_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ObjCObject_bool._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ObjCObject_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ObjCObject_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_bool.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_bool.fromFunction( - SwiftLibrary lib, void Function(NSObject, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_bool_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - NSObject._(arg0, lib, retain: true, release: true), - arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ObjCObject_bool.listener( - SwiftLibrary lib, void Function(NSObject, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ObjCObject_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_bool_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => - fn(NSObject._(arg0, lib, retain: true, release: true), - arg1))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSObject arg0, ffi.Pointer arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1); -} - -bool _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - bool Function( - ffi.Pointer, ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_bool_ObjCObject_bool_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_bool_ObjCObject_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_bool_ObjCObject_bool_registerClosure( - bool Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_bool_ObjCObject_bool_closureRegistryIndex; - _ObjCBlock_bool_ObjCObject_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -bool _ObjCBlock_bool_ObjCObject_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_bool_ObjCObject_bool_closureRegistry[block.ref.target.address]!( - arg0, arg1); - -class ObjCBlock_bool_ObjCObject_bool extends _ObjCBlockBase { - ObjCBlock_bool_ObjCObject_bool._(ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_bool_ObjCObject_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_bool_ObjCObject_bool._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_bool.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline, false) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_ObjCObject_bool.fromFunction( - SwiftLibrary lib, bool Function(NSObject, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_ObjCObject_bool_closureTrampoline, false) - .cast(), - _ObjCBlock_bool_ObjCObject_bool_registerClosure( - (ffi.Pointer arg0, - ffi.Pointer arg1) => - fn(NSObject._(arg0, lib, retain: true, release: true), arg1))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - bool call(NSObject arg0, ffi.Pointer arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1); -} - -class NSFileManager extends NSObject { - NSFileManager._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSFileManager] that points to the same underlying object as [other]. - static NSFileManager castFrom(T other) { - return NSFileManager._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSFileManager] that wraps the given raw object pointer. - static NSFileManager castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSFileManager._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSFileManager]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSFileManager1); - } - - static NSFileManager getDefaultManager(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_431( - _lib._class_NSFileManager1, _lib._sel_defaultManager1); - return NSFileManager._(_ret, _lib, retain: true, release: true); - } - - NSArray? mountedVolumeURLsIncludingResourceValuesForKeys_options_( - NSArray? propertyKeys, int options) { - final _ret = _lib._objc_msgSend_432( - _id, - _lib._sel_mountedVolumeURLsIncludingResourceValuesForKeys_options_1, - propertyKeys?._id ?? ffi.nullptr, - options); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - void unmountVolumeAtURL_options_completionHandler_( - NSURL url, int mask, ObjCBlock_ffiVoid_NSError completionHandler) { - _lib._objc_msgSend_433( - _id, - _lib._sel_unmountVolumeAtURL_options_completionHandler_1, - url._id, - mask, - completionHandler._id); - } - - NSArray? contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_( - NSURL url, - NSArray? keys, - int mask, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_434( - _id, - _lib._sel_contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_1, - url._id, - keys?._id ?? ffi.nullptr, - mask, - error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray URLsForDirectory_inDomains_(int directory, int domainMask) { - final _ret = _lib._objc_msgSend_435( - _id, _lib._sel_URLsForDirectory_inDomains_1, directory, domainMask); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSURL? URLForDirectory_inDomain_appropriateForURL_create_error_( - int directory, - int domain, - NSURL? url, - bool shouldCreate, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_436( - _id, - _lib._sel_URLForDirectory_inDomain_appropriateForURL_create_error_1, - directory, - domain, - url?._id ?? ffi.nullptr, - shouldCreate, - error); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - bool getRelationship_ofDirectoryAtURL_toItemAtURL_error_( - ffi.Pointer outRelationship, - NSURL directoryURL, - NSURL otherURL, - ffi.Pointer> error) { - return _lib._objc_msgSend_437( - _id, - _lib._sel_getRelationship_ofDirectoryAtURL_toItemAtURL_error_1, - outRelationship, - directoryURL._id, - otherURL._id, - error); - } - - bool getRelationship_ofDirectory_inDomain_toItemAtURL_error_( - ffi.Pointer outRelationship, - int directory, - int domainMask, - NSURL url, - ffi.Pointer> error) { - return _lib._objc_msgSend_438( - _id, - _lib._sel_getRelationship_ofDirectory_inDomain_toItemAtURL_error_1, - outRelationship, - directory, - domainMask, - url._id, - error); - } - - bool createDirectoryAtURL_withIntermediateDirectories_attributes_error_( - NSURL url, - bool createIntermediates, - NSDictionary? attributes, - ffi.Pointer> error) { - return _lib._objc_msgSend_439( - _id, - _lib._sel_createDirectoryAtURL_withIntermediateDirectories_attributes_error_1, - url._id, - createIntermediates, - attributes?._id ?? ffi.nullptr, - error); - } - - bool createSymbolicLinkAtURL_withDestinationURL_error_( - NSURL url, NSURL destURL, ffi.Pointer> error) { - return _lib._objc_msgSend_440( - _id, - _lib._sel_createSymbolicLinkAtURL_withDestinationURL_error_1, - url._id, - destURL._id, - error); - } - - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); - } - - bool setAttributes_ofItemAtPath_error_(NSDictionary attributes, NSString path, - ffi.Pointer> error) { - return _lib._objc_msgSend_441( - _id, - _lib._sel_setAttributes_ofItemAtPath_error_1, - attributes._id, - path._id, - error); - } - - bool createDirectoryAtPath_withIntermediateDirectories_attributes_error_( - NSString path, - bool createIntermediates, - NSDictionary? attributes, - ffi.Pointer> error) { - return _lib._objc_msgSend_442( - _id, - _lib._sel_createDirectoryAtPath_withIntermediateDirectories_attributes_error_1, - path._id, - createIntermediates, - attributes?._id ?? ffi.nullptr, - error); - } - - NSArray? contentsOfDirectoryAtPath_error_( - NSString path, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_443( - _id, _lib._sel_contentsOfDirectoryAtPath_error_1, path._id, error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray? subpathsOfDirectoryAtPath_error_( - NSString path, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_443( - _id, _lib._sel_subpathsOfDirectoryAtPath_error_1, path._id, error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? attributesOfItemAtPath_error_( - NSString path, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_444( - _id, _lib._sel_attributesOfItemAtPath_error_1, path._id, error); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? attributesOfFileSystemForPath_error_( - NSString path, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_444( - _id, _lib._sel_attributesOfFileSystemForPath_error_1, path._id, error); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - bool createSymbolicLinkAtPath_withDestinationPath_error_(NSString path, - NSString destPath, ffi.Pointer> error) { - return _lib._objc_msgSend_445( - _id, - _lib._sel_createSymbolicLinkAtPath_withDestinationPath_error_1, - path._id, - destPath._id, - error); - } - - NSString? destinationOfSymbolicLinkAtPath_error_( - NSString path, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_446(_id, - _lib._sel_destinationOfSymbolicLinkAtPath_error_1, path._id, error); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - bool copyItemAtPath_toPath_error_(NSString srcPath, NSString dstPath, - ffi.Pointer> error) { - return _lib._objc_msgSend_445(_id, _lib._sel_copyItemAtPath_toPath_error_1, - srcPath._id, dstPath._id, error); - } - - bool moveItemAtPath_toPath_error_(NSString srcPath, NSString dstPath, - ffi.Pointer> error) { - return _lib._objc_msgSend_445(_id, _lib._sel_moveItemAtPath_toPath_error_1, - srcPath._id, dstPath._id, error); - } - - bool linkItemAtPath_toPath_error_(NSString srcPath, NSString dstPath, - ffi.Pointer> error) { - return _lib._objc_msgSend_445(_id, _lib._sel_linkItemAtPath_toPath_error_1, - srcPath._id, dstPath._id, error); - } - - bool removeItemAtPath_error_( - NSString path, ffi.Pointer> error) { - return _lib._objc_msgSend_447( - _id, _lib._sel_removeItemAtPath_error_1, path._id, error); - } - - bool copyItemAtURL_toURL_error_( - NSURL srcURL, NSURL dstURL, ffi.Pointer> error) { - return _lib._objc_msgSend_440(_id, _lib._sel_copyItemAtURL_toURL_error_1, - srcURL._id, dstURL._id, error); - } - - bool moveItemAtURL_toURL_error_( - NSURL srcURL, NSURL dstURL, ffi.Pointer> error) { - return _lib._objc_msgSend_440(_id, _lib._sel_moveItemAtURL_toURL_error_1, - srcURL._id, dstURL._id, error); - } - - bool linkItemAtURL_toURL_error_( - NSURL srcURL, NSURL dstURL, ffi.Pointer> error) { - return _lib._objc_msgSend_440(_id, _lib._sel_linkItemAtURL_toURL_error_1, - srcURL._id, dstURL._id, error); - } - - bool removeItemAtURL_error_( - NSURL URL, ffi.Pointer> error) { - return _lib._objc_msgSend_89( - _id, _lib._sel_removeItemAtURL_error_1, URL._id, error); - } - - bool trashItemAtURL_resultingItemURL_error_( - NSURL url, - ffi.Pointer> outResultingURL, - ffi.Pointer> error) { - return _lib._objc_msgSend_448( - _id, - _lib._sel_trashItemAtURL_resultingItemURL_error_1, - url._id, - outResultingURL, - error); - } - - NSDictionary? fileAttributesAtPath_traverseLink_(NSString path, bool yorn) { - final _ret = _lib._objc_msgSend_449( - _id, _lib._sel_fileAttributesAtPath_traverseLink_1, path._id, yorn); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - bool changeFileAttributes_atPath_(NSDictionary attributes, NSString path) { - return _lib._objc_msgSend_450( - _id, _lib._sel_changeFileAttributes_atPath_1, attributes._id, path._id); - } - - NSArray? directoryContentsAtPath_(NSString path) { - final _ret = _lib._objc_msgSend_132( - _id, _lib._sel_directoryContentsAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSDictionary? fileSystemAttributesAtPath_(NSString path) { - final _ret = _lib._objc_msgSend_156( - _id, _lib._sel_fileSystemAttributesAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSString? pathContentOfSymbolicLinkAtPath_(NSString path) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_pathContentOfSymbolicLinkAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - bool createSymbolicLinkAtPath_pathContent_( - NSString path, NSString otherpath) { - return _lib._objc_msgSend_451( - _id, - _lib._sel_createSymbolicLinkAtPath_pathContent_1, - path._id, - otherpath._id); - } - - bool createDirectoryAtPath_attributes_( - NSString path, NSDictionary attributes) { - return _lib._objc_msgSend_452(_id, - _lib._sel_createDirectoryAtPath_attributes_1, path._id, attributes._id); - } - - bool linkPath_toPath_handler_( - NSString src, NSString dest, NSObject? handler) { - return _lib._objc_msgSend_453(_id, _lib._sel_linkPath_toPath_handler_1, - src._id, dest._id, handler?._id ?? ffi.nullptr); - } - - bool copyPath_toPath_handler_( - NSString src, NSString dest, NSObject? handler) { - return _lib._objc_msgSend_453(_id, _lib._sel_copyPath_toPath_handler_1, - src._id, dest._id, handler?._id ?? ffi.nullptr); - } - - bool movePath_toPath_handler_( - NSString src, NSString dest, NSObject? handler) { - return _lib._objc_msgSend_453(_id, _lib._sel_movePath_toPath_handler_1, - src._id, dest._id, handler?._id ?? ffi.nullptr); - } - - bool removeFileAtPath_handler_(NSString path, NSObject? handler) { - return _lib._objc_msgSend_454(_id, _lib._sel_removeFileAtPath_handler_1, - path._id, handler?._id ?? ffi.nullptr); - } - - NSString get currentDirectoryPath { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_currentDirectoryPath1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - bool changeCurrentDirectoryPath_(NSString path) { - return _lib._objc_msgSend_64( - _id, _lib._sel_changeCurrentDirectoryPath_1, path._id); - } - - bool fileExistsAtPath_(NSString path) { - return _lib._objc_msgSend_64(_id, _lib._sel_fileExistsAtPath_1, path._id); - } - - bool fileExistsAtPath_isDirectory_( - NSString path, ffi.Pointer isDirectory) { - return _lib._objc_msgSend_455( - _id, _lib._sel_fileExistsAtPath_isDirectory_1, path._id, isDirectory); - } - - bool isReadableFileAtPath_(NSString path) { - return _lib._objc_msgSend_64( - _id, _lib._sel_isReadableFileAtPath_1, path._id); - } - - bool isWritableFileAtPath_(NSString path) { - return _lib._objc_msgSend_64( - _id, _lib._sel_isWritableFileAtPath_1, path._id); - } - - bool isExecutableFileAtPath_(NSString path) { - return _lib._objc_msgSend_64( - _id, _lib._sel_isExecutableFileAtPath_1, path._id); - } - - bool isDeletableFileAtPath_(NSString path) { - return _lib._objc_msgSend_64( - _id, _lib._sel_isDeletableFileAtPath_1, path._id); - } - - bool contentsEqualAtPath_andPath_(NSString path1, NSString path2) { - return _lib._objc_msgSend_451( - _id, _lib._sel_contentsEqualAtPath_andPath_1, path1._id, path2._id); - } - - NSString displayNameAtPath_(NSString path) { - final _ret = - _lib._objc_msgSend_69(_id, _lib._sel_displayNameAtPath_1, path._id); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray? componentsToDisplayForPath_(NSString path) { - final _ret = _lib._objc_msgSend_132( - _id, _lib._sel_componentsToDisplayForPath_1, path._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject? enumeratorAtPath_(NSString path) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_enumeratorAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_( - NSURL url, - NSArray? keys, - int mask, - ObjCBlock_bool_NSURL_NSError? handler) { - final _ret = _lib._objc_msgSend_456( - _id, - _lib._sel_enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_1, - url._id, - keys?._id ?? ffi.nullptr, - mask, - handler?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSArray? subpathsAtPath_(NSString path) { - final _ret = - _lib._objc_msgSend_132(_id, _lib._sel_subpathsAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSData? contentsAtPath_(NSString path) { - final _ret = - _lib._objc_msgSend_457(_id, _lib._sel_contentsAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - bool createFileAtPath_contents_attributes_( - NSString path, NSData? data, NSDictionary? attr) { - return _lib._objc_msgSend_458( - _id, - _lib._sel_createFileAtPath_contents_attributes_1, - path._id, - data?._id ?? ffi.nullptr, - attr?._id ?? ffi.nullptr); - } - - ffi.Pointer fileSystemRepresentationWithPath_(NSString path) { - return _lib._objc_msgSend_459( - _id, _lib._sel_fileSystemRepresentationWithPath_1, path._id); - } - - NSString stringWithFileSystemRepresentation_length_( - ffi.Pointer str, int len) { - final _ret = _lib._objc_msgSend_460( - _id, _lib._sel_stringWithFileSystemRepresentation_length_1, str, len); - return NSString._(_ret, _lib, retain: true, release: true); - } - - bool - replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_( - NSURL originalItemURL, - NSURL newItemURL, - NSString? backupItemName, - int options, - ffi.Pointer> resultingURL, - ffi.Pointer> error) { - return _lib._objc_msgSend_461( - _id, - _lib._sel_replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_1, - originalItemURL._id, - newItemURL._id, - backupItemName?._id ?? ffi.nullptr, - options, - resultingURL, - error); - } - - bool setUbiquitous_itemAtURL_destinationURL_error_(bool flag, NSURL url, - NSURL destinationURL, ffi.Pointer> error) { - return _lib._objc_msgSend_462( - _id, - _lib._sel_setUbiquitous_itemAtURL_destinationURL_error_1, - flag, - url._id, - destinationURL._id, - error); - } - - bool isUbiquitousItemAtURL_(NSURL url) { - return _lib._objc_msgSend_265( - _id, _lib._sel_isUbiquitousItemAtURL_1, url._id); - } - - bool startDownloadingUbiquitousItemAtURL_error_( - NSURL url, ffi.Pointer> error) { - return _lib._objc_msgSend_89(_id, - _lib._sel_startDownloadingUbiquitousItemAtURL_error_1, url._id, error); - } - - bool evictUbiquitousItemAtURL_error_( - NSURL url, ffi.Pointer> error) { - return _lib._objc_msgSend_89( - _id, _lib._sel_evictUbiquitousItemAtURL_error_1, url._id, error); - } - - NSURL? URLForUbiquityContainerIdentifier_(NSString? containerIdentifier) { - final _ret = _lib._objc_msgSend_463( - _id, - _lib._sel_URLForUbiquityContainerIdentifier_1, - containerIdentifier?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? URLForPublishingUbiquitousItemAtURL_expirationDate_error_( - NSURL url, - ffi.Pointer> outDate, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_464( - _id, - _lib._sel_URLForPublishingUbiquitousItemAtURL_expirationDate_error_1, - url._id, - outDate, - error); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSObject? get ubiquityIdentityToken { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_ubiquityIdentityToken1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void getFileProviderServicesForItemAtURL_completionHandler_( - NSURL url, ObjCBlock_ffiVoid_NSDictionary_NSError completionHandler) { - _lib._objc_msgSend_465( - _id, - _lib._sel_getFileProviderServicesForItemAtURL_completionHandler_1, - url._id, - completionHandler._id); - } - - NSURL? containerURLForSecurityApplicationGroupIdentifier_( - NSString groupIdentifier) { - final _ret = _lib._objc_msgSend_257( - _id, - _lib._sel_containerURLForSecurityApplicationGroupIdentifier_1, - groupIdentifier._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL get homeDirectoryForCurrentUser { - final _ret = - _lib._objc_msgSend_466(_id, _lib._sel_homeDirectoryForCurrentUser1); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL get temporaryDirectory { - final _ret = _lib._objc_msgSend_466(_id, _lib._sel_temporaryDirectory1); - return NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? homeDirectoryForUser_(NSString userName) { - final _ret = _lib._objc_msgSend_257( - _id, _lib._sel_homeDirectoryForUser_1, userName._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - @override - NSFileManager init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSFileManager._(_ret, _lib, retain: true, release: true); - } - - static NSFileManager new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFileManager1, _lib._sel_new1); - return NSFileManager._(_ret, _lib, retain: false, release: true); - } - - static NSFileManager allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSFileManager1, _lib._sel_allocWithZone_1, zone); - return NSFileManager._(_ret, _lib, retain: false, release: true); - } - - static NSFileManager alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFileManager1, _lib._sel_alloc1); - return NSFileManager._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSFileManager1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSFileManager1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFileManager1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFileManager1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSFileManager1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSFileManager1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSFileManager1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSFileManager1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSFileManager1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSVolumeEnumerationOptions { - static const int NSVolumeEnumerationSkipHiddenVolumes = 2; - static const int NSVolumeEnumerationProduceFileReferenceURLs = 4; -} - -abstract class NSFileManagerUnmountOptions { - static const int NSFileManagerUnmountAllPartitionsAndEjectDisk = 1; - static const int NSFileManagerUnmountWithoutUI = 2; -} - -void _ObjCBlock_ffiVoid_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSError_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSError_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSError_closureRegistry[block.ref.target.address]!(arg0); - -class ObjCBlock_ffiVoid_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSError._(ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSError castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSError._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSError.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0)>> - ptr) - : this._( - lib - ._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSError.fromFunction( - SwiftLibrary lib, void Function(NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSError_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSError._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSError.listener( - SwiftLibrary lib, void Function(NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSError_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSError._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; - - void call(NSError? arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0?._id ?? ffi.nullptr); -} - -abstract class NSDirectoryEnumerationOptions { - static const int NSDirectoryEnumerationSkipsSubdirectoryDescendants = 1; - static const int NSDirectoryEnumerationSkipsPackageDescendants = 2; - static const int NSDirectoryEnumerationSkipsHiddenFiles = 4; - static const int NSDirectoryEnumerationIncludesDirectoriesPostOrder = 8; - static const int NSDirectoryEnumerationProducesRelativePathURLs = 16; -} - -abstract class NSSearchPathDirectory { - static const int NSApplicationDirectory = 1; - static const int NSDemoApplicationDirectory = 2; - static const int NSDeveloperApplicationDirectory = 3; - static const int NSAdminApplicationDirectory = 4; - static const int NSLibraryDirectory = 5; - static const int NSDeveloperDirectory = 6; - static const int NSUserDirectory = 7; - static const int NSDocumentationDirectory = 8; - static const int NSDocumentDirectory = 9; - static const int NSCoreServiceDirectory = 10; - static const int NSAutosavedInformationDirectory = 11; - static const int NSDesktopDirectory = 12; - static const int NSCachesDirectory = 13; - static const int NSApplicationSupportDirectory = 14; - static const int NSDownloadsDirectory = 15; - static const int NSInputMethodsDirectory = 16; - static const int NSMoviesDirectory = 17; - static const int NSMusicDirectory = 18; - static const int NSPicturesDirectory = 19; - static const int NSPrinterDescriptionDirectory = 20; - static const int NSSharedPublicDirectory = 21; - static const int NSPreferencePanesDirectory = 22; - static const int NSApplicationScriptsDirectory = 23; - static const int NSItemReplacementDirectory = 99; - static const int NSAllApplicationsDirectory = 100; - static const int NSAllLibrariesDirectory = 101; - static const int NSTrashDirectory = 102; -} - -abstract class NSSearchPathDomainMask { - static const int NSUserDomainMask = 1; - static const int NSLocalDomainMask = 2; - static const int NSNetworkDomainMask = 4; - static const int NSSystemDomainMask = 8; - static const int NSAllDomainsMask = 65535; -} - -abstract class NSURLRelationship { - static const int NSURLRelationshipContains = 0; - static const int NSURLRelationshipSame = 1; - static const int NSURLRelationshipOther = 2; -} - -bool _ObjCBlock_bool_NSURL_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_bool_NSURL_NSError_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_bool_NSURL_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_bool_NSURL_NSError_registerClosure( - bool Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_bool_NSURL_NSError_closureRegistryIndex; - _ObjCBlock_bool_NSURL_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -bool _ObjCBlock_bool_NSURL_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_bool_NSURL_NSError_closureRegistry[block.ref.target.address]!( - arg0, arg1); - -class ObjCBlock_bool_NSURL_NSError extends _ObjCBlockBase { - ObjCBlock_bool_NSURL_NSError._(ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_bool_NSURL_NSError castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_bool_NSURL_NSError._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_NSURL_NSError.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_NSURL_NSError_fnPtrTrampoline, false) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_bool_NSURL_NSError.fromFunction( - SwiftLibrary lib, bool Function(NSURL, NSError) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_bool_NSURL_NSError_closureTrampoline, false) - .cast(), - _ObjCBlock_bool_NSURL_NSError_registerClosure( - (ffi.Pointer arg0, - ffi.Pointer arg1) => - fn(NSURL._(arg0, lib, retain: true, release: true), NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - bool call(NSURL arg0, NSError arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - bool Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1._id); -} - -abstract class NSFileManagerItemReplacementOptions { - static const int NSFileManagerItemReplacementUsingNewMetadataOnly = 1; - static const int NSFileManagerItemReplacementWithoutDeletingBackupItem = 2; -} - -void _ObjCBlock_ffiVoid_NSDictionary_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSDictionary_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSDictionary_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1); - -class ObjCBlock_ffiVoid_NSDictionary_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSDictionary_NSError._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSDictionary_NSError castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSDictionary_NSError._(pointer, lib, - retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSDictionary_NSError.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDictionary_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSDictionary_NSError.fromFunction( - SwiftLibrary lib, void Function(NSDictionary?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDictionary_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSDictionary_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 ? null : NSDictionary._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSDictionary_NSError.listener( - SwiftLibrary lib, void Function(NSDictionary?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi - .NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSDictionary_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSDictionary_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSDictionary._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSDictionary? arg0, NSError? arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1?._id ?? ffi.nullptr); -} - -class NSMutableArray extends NSArray { - NSMutableArray._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSMutableArray] that points to the same underlying object as [other]. - static NSMutableArray castFrom(T other) { - return NSMutableArray._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSMutableArray] that wraps the given raw object pointer. - static NSMutableArray castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableArray._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSMutableArray]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMutableArray1); - } - - void addObject_(NSObject anObject) { - _lib._objc_msgSend_15(_id, _lib._sel_addObject_1, anObject._id); - } - - void insertObject_atIndex_(NSObject anObject, int index) { - _lib._objc_msgSend_469( - _id, _lib._sel_insertObject_atIndex_1, anObject._id, index); - } - - void removeLastObject() { - _lib._objc_msgSend_1(_id, _lib._sel_removeLastObject1); - } - - void removeObjectAtIndex_(int index) { - _lib._objc_msgSend_470(_id, _lib._sel_removeObjectAtIndex_1, index); - } - - void replaceObjectAtIndex_withObject_(int index, NSObject anObject) { - _lib._objc_msgSend_471( - _id, _lib._sel_replaceObjectAtIndex_withObject_1, index, anObject._id); - } - - @override - NSMutableArray init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - NSMutableArray initWithCapacity_(int numItems) { - final _ret = - _lib._objc_msgSend_65(_id, _lib._sel_initWithCapacity_1, numItems); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableArray? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - void addObjectsFromArray_(NSArray otherArray) { - _lib._objc_msgSend_472( - _id, _lib._sel_addObjectsFromArray_1, otherArray._id); - } - - void exchangeObjectAtIndex_withObjectAtIndex_(int idx1, int idx2) { - _lib._objc_msgSend_473( - _id, _lib._sel_exchangeObjectAtIndex_withObjectAtIndex_1, idx1, idx2); - } - - void removeAllObjects() { - _lib._objc_msgSend_1(_id, _lib._sel_removeAllObjects1); - } - - void removeObject_inRange_(NSObject anObject, _NSRange range) { - _lib._objc_msgSend_474( - _id, _lib._sel_removeObject_inRange_1, anObject._id, range); - } - - void removeObject_(NSObject anObject) { - _lib._objc_msgSend_15(_id, _lib._sel_removeObject_1, anObject._id); - } - - void removeObjectIdenticalTo_inRange_(NSObject anObject, _NSRange range) { - _lib._objc_msgSend_474( - _id, _lib._sel_removeObjectIdenticalTo_inRange_1, anObject._id, range); - } - - void removeObjectIdenticalTo_(NSObject anObject) { - _lib._objc_msgSend_15( - _id, _lib._sel_removeObjectIdenticalTo_1, anObject._id); - } - - void removeObjectsFromIndices_numIndices_( - ffi.Pointer indices, int cnt) { - _lib._objc_msgSend_475( - _id, _lib._sel_removeObjectsFromIndices_numIndices_1, indices, cnt); - } - - void removeObjectsInArray_(NSArray otherArray) { - _lib._objc_msgSend_472( - _id, _lib._sel_removeObjectsInArray_1, otherArray._id); - } - - void removeObjectsInRange_(_NSRange range) { - _lib._objc_msgSend_476(_id, _lib._sel_removeObjectsInRange_1, range); - } - - void replaceObjectsInRange_withObjectsFromArray_range_( - _NSRange range, NSArray otherArray, _NSRange otherRange) { - _lib._objc_msgSend_477( - _id, - _lib._sel_replaceObjectsInRange_withObjectsFromArray_range_1, - range, - otherArray._id, - otherRange); - } - - void replaceObjectsInRange_withObjectsFromArray_( - _NSRange range, NSArray otherArray) { - _lib._objc_msgSend_478( - _id, - _lib._sel_replaceObjectsInRange_withObjectsFromArray_1, - range, - otherArray._id); - } - - void setArray_(NSArray otherArray) { - _lib._objc_msgSend_472(_id, _lib._sel_setArray_1, otherArray._id); - } - - void sortUsingFunction_context_( - ffi.Pointer< - ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>> - compare, - ffi.Pointer context) { - _lib._objc_msgSend_479( - _id, _lib._sel_sortUsingFunction_context_1, compare, context); - } - - void sortUsingSelector_(ffi.Pointer comparator) { - _lib._objc_msgSend_7(_id, _lib._sel_sortUsingSelector_1, comparator); - } - - void insertObjects_atIndexes_(NSArray objects, NSIndexSet indexes) { - _lib._objc_msgSend_480( - _id, _lib._sel_insertObjects_atIndexes_1, objects._id, indexes._id); - } - - void removeObjectsAtIndexes_(NSIndexSet indexes) { - _lib._objc_msgSend_481( - _id, _lib._sel_removeObjectsAtIndexes_1, indexes._id); - } - - void replaceObjectsAtIndexes_withObjects_( - NSIndexSet indexes, NSArray objects) { - _lib._objc_msgSend_482(_id, _lib._sel_replaceObjectsAtIndexes_withObjects_1, - indexes._id, objects._id); - } - - void setObject_atIndexedSubscript_(NSObject obj, int idx) { - _lib._objc_msgSend_469( - _id, _lib._sel_setObject_atIndexedSubscript_1, obj._id, idx); - } - - void sortUsingComparator_( - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - _lib._objc_msgSend_483(_id, _lib._sel_sortUsingComparator_1, cmptr._id); - } - - void sortWithOptions_usingComparator_( - int opts, ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - _lib._objc_msgSend_484( - _id, _lib._sel_sortWithOptions_usingComparator_1, opts, cmptr._id); - } - - static NSMutableArray arrayWithCapacity_(SwiftLibrary _lib, int numItems) { - final _ret = _lib._objc_msgSend_65( - _lib._class_NSMutableArray1, _lib._sel_arrayWithCapacity_1, numItems); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray? arrayWithContentsOfFile_( - SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_485(_lib._class_NSMutableArray1, - _lib._sel_arrayWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray? arrayWithContentsOfURL_(SwiftLibrary _lib, NSURL url) { - final _ret = _lib._objc_msgSend_486(_lib._class_NSMutableArray1, - _lib._sel_arrayWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - NSMutableArray? initWithContentsOfFile_(NSString path) { - final _ret = _lib._objc_msgSend_485( - _id, _lib._sel_initWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - NSMutableArray? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_486(_id, _lib._sel_initWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - void applyDifference_(NSObject difference) { - _lib._objc_msgSend_15(_id, _lib._sel_applyDifference_1, difference._id); - } - - void sortUsingDescriptors_(NSArray sortDescriptors) { - _lib._objc_msgSend_472( - _id, _lib._sel_sortUsingDescriptors_1, sortDescriptors._id); - } - - void filterUsingPredicate_(NSPredicate predicate) { - _lib._objc_msgSend_487( - _id, _lib._sel_filterUsingPredicate_1, predicate._id); - } - - @override - NSMutableArray initWithObjects_count_( - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _id, _lib._sel_initWithObjects_count_1, objects, cnt); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray array(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableArray1, _lib._sel_array1); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray arrayWithObject_(SwiftLibrary _lib, NSObject anObject) { - final _ret = _lib._objc_msgSend_124( - _lib._class_NSMutableArray1, _lib._sel_arrayWithObject_1, anObject._id); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray arrayWithObjects_count_(SwiftLibrary _lib, - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66(_lib._class_NSMutableArray1, - _lib._sel_arrayWithObjects_count_1, objects, cnt); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray arrayWithObjects_( - SwiftLibrary _lib, NSObject firstObj) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSMutableArray1, - _lib._sel_arrayWithObjects_1, firstObj._id); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray arrayWithArray_(SwiftLibrary _lib, NSArray array) { - final _ret = _lib._objc_msgSend_125( - _lib._class_NSMutableArray1, _lib._sel_arrayWithArray_1, array._id); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableArray initWithObjects_(NSObject firstObj) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObjects_1, firstObj._id); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableArray initWithArray_(NSArray array) { - final _ret = - _lib._objc_msgSend_125(_id, _lib._sel_initWithArray_1, array._id); - return NSMutableArray._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableArray initWithArray_copyItems_(NSArray array, bool flag) { - final _ret = _lib._objc_msgSend_126( - _id, _lib._sel_initWithArray_copyItems_1, array._id, flag); - return NSMutableArray._(_ret, _lib, retain: false, release: true); - } - - static NSArray? arrayWithContentsOfURL_error_(SwiftLibrary _lib, NSURL url, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_127(_lib._class_NSMutableArray1, - _lib._sel_arrayWithContentsOfURL_error_1, url._id, error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSMutableArray new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableArray1, _lib._sel_new1); - return NSMutableArray._(_ret, _lib, retain: false, release: true); - } - - static NSMutableArray allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMutableArray1, _lib._sel_allocWithZone_1, zone); - return NSMutableArray._(_ret, _lib, retain: false, release: true); - } - - static NSMutableArray alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableArray1, _lib._sel_alloc1); - return NSMutableArray._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableArray1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableArray1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMutableArray1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableArray1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableArray1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableArray1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableArray1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSMutableArray1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableArray1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSMutableOrderedSet extends NSOrderedSet { - NSMutableOrderedSet._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSMutableOrderedSet] that points to the same underlying object as [other]. - static NSMutableOrderedSet castFrom(T other) { - return NSMutableOrderedSet._(other._id, other._lib, - retain: true, release: true); - } - - /// Returns a [NSMutableOrderedSet] that wraps the given raw object pointer. - static NSMutableOrderedSet castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableOrderedSet._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSMutableOrderedSet]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMutableOrderedSet1); - } - - void insertObject_atIndex_(NSObject object, int idx) { - _lib._objc_msgSend_469( - _id, _lib._sel_insertObject_atIndex_1, object._id, idx); - } - - void removeObjectAtIndex_(int idx) { - _lib._objc_msgSend_470(_id, _lib._sel_removeObjectAtIndex_1, idx); - } - - void replaceObjectAtIndex_withObject_(int idx, NSObject object) { - _lib._objc_msgSend_471( - _id, _lib._sel_replaceObjectAtIndex_withObject_1, idx, object._id); - } - - @override - NSMutableOrderedSet? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableOrderedSet init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSMutableOrderedSet initWithCapacity_(int numItems) { - final _ret = - _lib._objc_msgSend_65(_id, _lib._sel_initWithCapacity_1, numItems); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - void addObject_(NSObject object) { - _lib._objc_msgSend_15(_id, _lib._sel_addObject_1, object._id); - } - - void addObjects_count_( - ffi.Pointer> objects, int count) { - _lib._objc_msgSend_500(_id, _lib._sel_addObjects_count_1, objects, count); - } - - void addObjectsFromArray_(NSArray array) { - _lib._objc_msgSend_472(_id, _lib._sel_addObjectsFromArray_1, array._id); - } - - void exchangeObjectAtIndex_withObjectAtIndex_(int idx1, int idx2) { - _lib._objc_msgSend_473( - _id, _lib._sel_exchangeObjectAtIndex_withObjectAtIndex_1, idx1, idx2); - } - - void moveObjectsAtIndexes_toIndex_(NSIndexSet indexes, int idx) { - _lib._objc_msgSend_501( - _id, _lib._sel_moveObjectsAtIndexes_toIndex_1, indexes._id, idx); - } - - void insertObjects_atIndexes_(NSArray objects, NSIndexSet indexes) { - _lib._objc_msgSend_480( - _id, _lib._sel_insertObjects_atIndexes_1, objects._id, indexes._id); - } - - void setObject_atIndex_(NSObject obj, int idx) { - _lib._objc_msgSend_469(_id, _lib._sel_setObject_atIndex_1, obj._id, idx); - } - - void setObject_atIndexedSubscript_(NSObject obj, int idx) { - _lib._objc_msgSend_469( - _id, _lib._sel_setObject_atIndexedSubscript_1, obj._id, idx); - } - - void replaceObjectsInRange_withObjects_count_( - _NSRange range, ffi.Pointer> objects, int count) { - _lib._objc_msgSend_502( - _id, - _lib._sel_replaceObjectsInRange_withObjects_count_1, - range, - objects, - count); - } - - void replaceObjectsAtIndexes_withObjects_( - NSIndexSet indexes, NSArray objects) { - _lib._objc_msgSend_482(_id, _lib._sel_replaceObjectsAtIndexes_withObjects_1, - indexes._id, objects._id); - } - - void removeObjectsInRange_(_NSRange range) { - _lib._objc_msgSend_476(_id, _lib._sel_removeObjectsInRange_1, range); - } - - void removeObjectsAtIndexes_(NSIndexSet indexes) { - _lib._objc_msgSend_481( - _id, _lib._sel_removeObjectsAtIndexes_1, indexes._id); - } - - void removeAllObjects() { - _lib._objc_msgSend_1(_id, _lib._sel_removeAllObjects1); - } - - void removeObject_(NSObject object) { - _lib._objc_msgSend_15(_id, _lib._sel_removeObject_1, object._id); - } - - void removeObjectsInArray_(NSArray array) { - _lib._objc_msgSend_472(_id, _lib._sel_removeObjectsInArray_1, array._id); - } - - void intersectOrderedSet_(NSOrderedSet other) { - _lib._objc_msgSend_503(_id, _lib._sel_intersectOrderedSet_1, other._id); - } - - void minusOrderedSet_(NSOrderedSet other) { - _lib._objc_msgSend_503(_id, _lib._sel_minusOrderedSet_1, other._id); - } - - void unionOrderedSet_(NSOrderedSet other) { - _lib._objc_msgSend_503(_id, _lib._sel_unionOrderedSet_1, other._id); - } - - void intersectSet_(NSSet other) { - _lib._objc_msgSend_504(_id, _lib._sel_intersectSet_1, other._id); - } - - void minusSet_(NSSet other) { - _lib._objc_msgSend_504(_id, _lib._sel_minusSet_1, other._id); - } - - void unionSet_(NSSet other) { - _lib._objc_msgSend_504(_id, _lib._sel_unionSet_1, other._id); - } - - void sortUsingComparator_( - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - _lib._objc_msgSend_483(_id, _lib._sel_sortUsingComparator_1, cmptr._id); - } - - void sortWithOptions_usingComparator_( - int opts, ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - _lib._objc_msgSend_484( - _id, _lib._sel_sortWithOptions_usingComparator_1, opts, cmptr._id); - } - - void sortRange_options_usingComparator_(_NSRange range, int opts, - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - _lib._objc_msgSend_505(_id, _lib._sel_sortRange_options_usingComparator_1, - range, opts, cmptr._id); - } - - static NSMutableOrderedSet orderedSetWithCapacity_( - SwiftLibrary _lib, int numItems) { - final _ret = _lib._objc_msgSend_65(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithCapacity_1, numItems); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - void applyDifference_(NSObject difference) { - _lib._objc_msgSend_15(_id, _lib._sel_applyDifference_1, difference._id); - } - - void sortUsingDescriptors_(NSArray sortDescriptors) { - _lib._objc_msgSend_472( - _id, _lib._sel_sortUsingDescriptors_1, sortDescriptors._id); - } - - void filterUsingPredicate_(NSPredicate p) { - _lib._objc_msgSend_487(_id, _lib._sel_filterUsingPredicate_1, p._id); - } - - @override - NSMutableOrderedSet initWithObjects_count_( - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _id, _lib._sel_initWithObjects_count_1, objects, cnt); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSet(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableOrderedSet1, _lib._sel_orderedSet1); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSetWithObject_( - SwiftLibrary _lib, NSObject object) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithObject_1, object._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSetWithObjects_count_(SwiftLibrary _lib, - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithObjects_count_1, objects, cnt); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSetWithObjects_( - SwiftLibrary _lib, NSObject firstObj) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithObjects_1, firstObj._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSetWithOrderedSet_( - SwiftLibrary _lib, NSOrderedSet set) { - final _ret = _lib._objc_msgSend_492(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithOrderedSet_1, set._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSetWithOrderedSet_range_copyItems_( - SwiftLibrary _lib, NSOrderedSet set, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_493( - _lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithOrderedSet_range_copyItems_1, - set._id, - range, - flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSMutableOrderedSet orderedSetWithArray_( - SwiftLibrary _lib, NSArray array) { - final _ret = _lib._objc_msgSend_125(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithArray_1, array._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSetWithArray_range_copyItems_( - SwiftLibrary _lib, NSArray array, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_494( - _lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithArray_range_copyItems_1, - array._id, - range, - flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSMutableOrderedSet orderedSetWithSet_(SwiftLibrary _lib, NSSet set) { - final _ret = _lib._objc_msgSend_411(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithSet_1, set._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableOrderedSet orderedSetWithSet_copyItems_( - SwiftLibrary _lib, NSSet set, bool flag) { - final _ret = _lib._objc_msgSend_412(_lib._class_NSMutableOrderedSet1, - _lib._sel_orderedSetWithSet_copyItems_1, set._id, flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableOrderedSet initWithObject_(NSObject object) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObject_1, object._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableOrderedSet initWithObjects_(NSObject firstObj) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObjects_1, firstObj._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableOrderedSet initWithOrderedSet_(NSOrderedSet set) { - final _ret = - _lib._objc_msgSend_492(_id, _lib._sel_initWithOrderedSet_1, set._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableOrderedSet initWithOrderedSet_copyItems_( - NSOrderedSet set, bool flag) { - final _ret = _lib._objc_msgSend_495( - _id, _lib._sel_initWithOrderedSet_copyItems_1, set._id, flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableOrderedSet initWithOrderedSet_range_copyItems_( - NSOrderedSet set, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_493(_id, - _lib._sel_initWithOrderedSet_range_copyItems_1, set._id, range, flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableOrderedSet initWithArray_(NSArray array) { - final _ret = - _lib._objc_msgSend_125(_id, _lib._sel_initWithArray_1, array._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableOrderedSet initWithArray_copyItems_(NSArray set, bool flag) { - final _ret = _lib._objc_msgSend_126( - _id, _lib._sel_initWithArray_copyItems_1, set._id, flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableOrderedSet initWithArray_range_copyItems_( - NSArray set, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_494( - _id, _lib._sel_initWithArray_range_copyItems_1, set._id, range, flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableOrderedSet initWithSet_(NSSet set) { - final _ret = _lib._objc_msgSend_411(_id, _lib._sel_initWithSet_1, set._id); - return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableOrderedSet initWithSet_copyItems_(NSSet set, bool flag) { - final _ret = _lib._objc_msgSend_412( - _id, _lib._sel_initWithSet_copyItems_1, set._id, flag); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSMutableOrderedSet new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableOrderedSet1, _lib._sel_new1); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSMutableOrderedSet allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMutableOrderedSet1, _lib._sel_allocWithZone_1, zone); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSMutableOrderedSet alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableOrderedSet1, _lib._sel_alloc1); - return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableOrderedSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableOrderedSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMutableOrderedSet1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableOrderedSet1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableOrderedSet1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableOrderedSet1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableOrderedSet1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSMutableOrderedSet1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableOrderedSet1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSOrderedSet extends NSObject { - NSOrderedSet._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSOrderedSet] that points to the same underlying object as [other]. - static NSOrderedSet castFrom(T other) { - return NSOrderedSet._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSOrderedSet] that wraps the given raw object pointer. - static NSOrderedSet castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSOrderedSet._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSOrderedSet]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSOrderedSet1); - } - - int get count { - return _lib._objc_msgSend_10(_id, _lib._sel_count1); - } - - NSObject objectAtIndex_(int idx) { - final _ret = _lib._objc_msgSend_65(_id, _lib._sel_objectAtIndex_1, idx); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - int indexOfObject_(NSObject object) { - return _lib._objc_msgSend_74(_id, _lib._sel_indexOfObject_1, object._id); - } - - @override - NSOrderedSet init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet initWithObjects_count_( - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _id, _lib._sel_initWithObjects_count_1, objects, cnt); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - void getObjects_range_( - ffi.Pointer> objects, _NSRange range) { - _lib._objc_msgSend_73(_id, _lib._sel_getObjects_range_1, objects, range); - } - - NSArray objectsAtIndexes_(NSIndexSet indexes) { - final _ret = - _lib._objc_msgSend_111(_id, _lib._sel_objectsAtIndexes_1, indexes._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSObject? get firstObject { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_firstObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject? get lastObject { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_lastObject1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - bool isEqualToOrderedSet_(NSOrderedSet other) { - return _lib._objc_msgSend_489( - _id, _lib._sel_isEqualToOrderedSet_1, other._id); - } - - bool containsObject_(NSObject object) { - return _lib._objc_msgSend_0(_id, _lib._sel_containsObject_1, object._id); - } - - bool intersectsOrderedSet_(NSOrderedSet other) { - return _lib._objc_msgSend_489( - _id, _lib._sel_intersectsOrderedSet_1, other._id); - } - - bool intersectsSet_(NSSet set) { - return _lib._objc_msgSend_403(_id, _lib._sel_intersectsSet_1, set._id); - } - - bool isSubsetOfOrderedSet_(NSOrderedSet other) { - return _lib._objc_msgSend_489( - _id, _lib._sel_isSubsetOfOrderedSet_1, other._id); - } - - bool isSubsetOfSet_(NSSet set) { - return _lib._objc_msgSend_403(_id, _lib._sel_isSubsetOfSet_1, set._id); - } - - NSObject objectAtIndexedSubscript_(int idx) { - final _ret = - _lib._objc_msgSend_65(_id, _lib._sel_objectAtIndexedSubscript_1, idx); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSEnumerator objectEnumerator() { - final _ret = _lib._objc_msgSend_77(_id, _lib._sel_objectEnumerator1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - NSEnumerator reverseObjectEnumerator() { - final _ret = _lib._objc_msgSend_77(_id, _lib._sel_reverseObjectEnumerator1); - return NSEnumerator._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet get reversedOrderedSet { - final _ret = _lib._objc_msgSend_490(_id, _lib._sel_reversedOrderedSet1); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSArray get array { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_array1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSSet get set1 { - final _ret = _lib._objc_msgSend_491(_id, _lib._sel_set1); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - void enumerateObjectsUsingBlock_( - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_112( - _id, _lib._sel_enumerateObjectsUsingBlock_1, block._id); - } - - void enumerateObjectsWithOptions_usingBlock_( - int opts, ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_113(_id, - _lib._sel_enumerateObjectsWithOptions_usingBlock_1, opts, block._id); - } - - void enumerateObjectsAtIndexes_options_usingBlock_(NSIndexSet s, int opts, - ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { - _lib._objc_msgSend_114( - _id, - _lib._sel_enumerateObjectsAtIndexes_options_usingBlock_1, - s._id, - opts, - block._id); - } - - int indexOfObjectPassingTest_( - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_115( - _id, _lib._sel_indexOfObjectPassingTest_1, predicate._id); - } - - int indexOfObjectWithOptions_passingTest_( - int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_116(_id, - _lib._sel_indexOfObjectWithOptions_passingTest_1, opts, predicate._id); - } - - int indexOfObjectAtIndexes_options_passingTest_(NSIndexSet s, int opts, - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - return _lib._objc_msgSend_117( - _id, - _lib._sel_indexOfObjectAtIndexes_options_passingTest_1, - s._id, - opts, - predicate._id); - } - - NSIndexSet indexesOfObjectsPassingTest_( - ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_118( - _id, _lib._sel_indexesOfObjectsPassingTest_1, predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet indexesOfObjectsWithOptions_passingTest_( - int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_119( - _id, - _lib._sel_indexesOfObjectsWithOptions_passingTest_1, - opts, - predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - NSIndexSet indexesOfObjectsAtIndexes_options_passingTest_(NSIndexSet s, - int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { - final _ret = _lib._objc_msgSend_120( - _id, - _lib._sel_indexesOfObjectsAtIndexes_options_passingTest_1, - s._id, - opts, - predicate._id); - return NSIndexSet._(_ret, _lib, retain: true, release: true); - } - - int indexOfObject_inSortedRange_options_usingComparator_( - NSObject object, - _NSRange range, - int opts, - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmp) { - return _lib._objc_msgSend_123( - _id, - _lib._sel_indexOfObject_inSortedRange_options_usingComparator_1, - object._id, - range, - opts, - cmp._id); - } - - NSArray sortedArrayUsingComparator_( - ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - final _ret = _lib._objc_msgSend_121( - _id, _lib._sel_sortedArrayUsingComparator_1, cmptr._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray sortedArrayWithOptions_usingComparator_( - int opts, ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { - final _ret = _lib._objc_msgSend_122(_id, - _lib._sel_sortedArrayWithOptions_usingComparator_1, opts, cmptr._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_(NSObject? locale) { - final _ret = _lib._objc_msgSend_70( - _id, _lib._sel_descriptionWithLocale_1, locale?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSString descriptionWithLocale_indent_(NSObject? locale, int level) { - final _ret = _lib._objc_msgSend_71( - _id, - _lib._sel_descriptionWithLocale_indent_1, - locale?._id ?? ffi.nullptr, - level); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSet(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOrderedSet1, _lib._sel_orderedSet1); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSetWithObject_( - SwiftLibrary _lib, NSObject object) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSOrderedSet1, - _lib._sel_orderedSetWithObject_1, object._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSetWithObjects_count_(SwiftLibrary _lib, - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66(_lib._class_NSOrderedSet1, - _lib._sel_orderedSetWithObjects_count_1, objects, cnt); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSetWithObjects_( - SwiftLibrary _lib, NSObject firstObj) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSOrderedSet1, - _lib._sel_orderedSetWithObjects_1, firstObj._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSetWithOrderedSet_( - SwiftLibrary _lib, NSOrderedSet set) { - final _ret = _lib._objc_msgSend_492(_lib._class_NSOrderedSet1, - _lib._sel_orderedSetWithOrderedSet_1, set._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSetWithOrderedSet_range_copyItems_( - SwiftLibrary _lib, NSOrderedSet set, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_493( - _lib._class_NSOrderedSet1, - _lib._sel_orderedSetWithOrderedSet_range_copyItems_1, - set._id, - range, - flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSOrderedSet orderedSetWithArray_(SwiftLibrary _lib, NSArray array) { - final _ret = _lib._objc_msgSend_125( - _lib._class_NSOrderedSet1, _lib._sel_orderedSetWithArray_1, array._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSetWithArray_range_copyItems_( - SwiftLibrary _lib, NSArray array, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_494( - _lib._class_NSOrderedSet1, - _lib._sel_orderedSetWithArray_range_copyItems_1, - array._id, - range, - flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSOrderedSet orderedSetWithSet_(SwiftLibrary _lib, NSSet set) { - final _ret = _lib._objc_msgSend_411( - _lib._class_NSOrderedSet1, _lib._sel_orderedSetWithSet_1, set._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet orderedSetWithSet_copyItems_( - SwiftLibrary _lib, NSSet set, bool flag) { - final _ret = _lib._objc_msgSend_412(_lib._class_NSOrderedSet1, - _lib._sel_orderedSetWithSet_copyItems_1, set._id, flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - NSOrderedSet initWithObject_(NSObject object) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObject_1, object._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet initWithObjects_(NSObject firstObj) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObjects_1, firstObj._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet initWithOrderedSet_(NSOrderedSet set) { - final _ret = - _lib._objc_msgSend_492(_id, _lib._sel_initWithOrderedSet_1, set._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet initWithOrderedSet_copyItems_(NSOrderedSet set, bool flag) { - final _ret = _lib._objc_msgSend_495( - _id, _lib._sel_initWithOrderedSet_copyItems_1, set._id, flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - NSOrderedSet initWithOrderedSet_range_copyItems_( - NSOrderedSet set, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_493(_id, - _lib._sel_initWithOrderedSet_range_copyItems_1, set._id, range, flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - NSOrderedSet initWithArray_(NSArray array) { - final _ret = - _lib._objc_msgSend_125(_id, _lib._sel_initWithArray_1, array._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet initWithArray_copyItems_(NSArray set, bool flag) { - final _ret = _lib._objc_msgSend_126( - _id, _lib._sel_initWithArray_copyItems_1, set._id, flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - NSOrderedSet initWithArray_range_copyItems_( - NSArray set, _NSRange range, bool flag) { - final _ret = _lib._objc_msgSend_494( - _id, _lib._sel_initWithArray_range_copyItems_1, set._id, range, flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - NSOrderedSet initWithSet_(NSSet set) { - final _ret = _lib._objc_msgSend_411(_id, _lib._sel_initWithSet_1, set._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet initWithSet_copyItems_(NSSet set, bool flag) { - final _ret = _lib._objc_msgSend_412( - _id, _lib._sel_initWithSet_copyItems_1, set._id, flag); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - NSObject differenceFromOrderedSet_withOptions_usingEquivalenceTest_( - NSOrderedSet other, - int options, - ObjCBlock_bool_ObjCObject_ObjCObject block) { - final _ret = _lib._objc_msgSend_496( - _id, - _lib._sel_differenceFromOrderedSet_withOptions_usingEquivalenceTest_1, - other._id, - options, - block._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject differenceFromOrderedSet_withOptions_( - NSOrderedSet other, int options) { - final _ret = _lib._objc_msgSend_497(_id, - _lib._sel_differenceFromOrderedSet_withOptions_1, other._id, options); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject differenceFromOrderedSet_(NSOrderedSet other) { - final _ret = _lib._objc_msgSend_492( - _id, _lib._sel_differenceFromOrderedSet_1, other._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet? orderedSetByApplyingDifference_(NSObject difference) { - final _ret = _lib._objc_msgSend_498( - _id, _lib._sel_orderedSetByApplyingDifference_1, difference._id); - return _ret.address == 0 - ? null - : NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - NSObject valueForKey_(NSString key) { - final _ret = _lib._objc_msgSend_31(_id, _lib._sel_valueForKey_1, key._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - void setValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135( - _id, _lib._sel_setValue_forKey_1, value?._id ?? ffi.nullptr, key._id); - } - - @override - void addObserver_forKeyPath_options_context_(NSObject observer, - NSString keyPath, int options, ffi.Pointer context) { - _lib._objc_msgSend_139( - _id, - _lib._sel_addObserver_forKeyPath_options_context_1, - observer._id, - keyPath._id, - options, - context); - } - - @override - void removeObserver_forKeyPath_context_( - NSObject observer, NSString keyPath, ffi.Pointer context) { - _lib._objc_msgSend_140(_id, _lib._sel_removeObserver_forKeyPath_context_1, - observer._id, keyPath._id, context); - } - - @override - void removeObserver_forKeyPath_(NSObject observer, NSString keyPath) { - _lib._objc_msgSend_141( - _id, _lib._sel_removeObserver_forKeyPath_1, observer._id, keyPath._id); - } - - NSArray sortedArrayUsingDescriptors_(NSArray sortDescriptors) { - final _ret = _lib._objc_msgSend_68( - _id, _lib._sel_sortedArrayUsingDescriptors_1, sortDescriptors._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSOrderedSet filteredOrderedSetUsingPredicate_(NSPredicate p) { - final _ret = _lib._objc_msgSend_499( - _id, _lib._sel_filteredOrderedSetUsingPredicate_1, p._id); - return NSOrderedSet._(_ret, _lib, retain: true, release: true); - } - - static NSOrderedSet new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOrderedSet1, _lib._sel_new1); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSOrderedSet allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSOrderedSet1, _lib._sel_allocWithZone_1, zone); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static NSOrderedSet alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOrderedSet1, _lib._sel_alloc1); - return NSOrderedSet._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSOrderedSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSOrderedSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOrderedSet1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOrderedSet1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSOrderedSet1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSOrderedSet1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSOrderedSet1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSOrderedSet1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSOrderedSet1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSMutableSet extends NSSet { - NSMutableSet._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSMutableSet] that points to the same underlying object as [other]. - static NSMutableSet castFrom(T other) { - return NSMutableSet._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSMutableSet] that wraps the given raw object pointer. - static NSMutableSet castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableSet._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSMutableSet]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSMutableSet1); - } - - void addObject_(NSObject object) { - _lib._objc_msgSend_15(_id, _lib._sel_addObject_1, object._id); - } - - void removeObject_(NSObject object) { - _lib._objc_msgSend_15(_id, _lib._sel_removeObject_1, object._id); - } - - @override - NSMutableSet? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableSet init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - NSMutableSet initWithCapacity_(int numItems) { - final _ret = - _lib._objc_msgSend_65(_id, _lib._sel_initWithCapacity_1, numItems); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - void addObjectsFromArray_(NSArray array) { - _lib._objc_msgSend_472(_id, _lib._sel_addObjectsFromArray_1, array._id); - } - - void intersectSet_(NSSet otherSet) { - _lib._objc_msgSend_504(_id, _lib._sel_intersectSet_1, otherSet._id); - } - - void minusSet_(NSSet otherSet) { - _lib._objc_msgSend_504(_id, _lib._sel_minusSet_1, otherSet._id); - } - - void removeAllObjects() { - _lib._objc_msgSend_1(_id, _lib._sel_removeAllObjects1); - } - - void unionSet_(NSSet otherSet) { - _lib._objc_msgSend_504(_id, _lib._sel_unionSet_1, otherSet._id); - } - - void setSet_(NSSet otherSet) { - _lib._objc_msgSend_504(_id, _lib._sel_setSet_1, otherSet._id); - } - - static NSMutableSet setWithCapacity_(SwiftLibrary _lib, int numItems) { - final _ret = _lib._objc_msgSend_65( - _lib._class_NSMutableSet1, _lib._sel_setWithCapacity_1, numItems); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - void filterUsingPredicate_(NSPredicate predicate) { - _lib._objc_msgSend_487( - _id, _lib._sel_filterUsingPredicate_1, predicate._id); - } - - @override - NSMutableSet initWithObjects_count_( - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66( - _id, _lib._sel_initWithObjects_count_1, objects, cnt); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableSet set1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableSet1, _lib._sel_set1); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableSet setWithObject_(SwiftLibrary _lib, NSObject object) { - final _ret = _lib._objc_msgSend_124( - _lib._class_NSMutableSet1, _lib._sel_setWithObject_1, object._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableSet setWithObjects_count_(SwiftLibrary _lib, - ffi.Pointer> objects, int cnt) { - final _ret = _lib._objc_msgSend_66(_lib._class_NSMutableSet1, - _lib._sel_setWithObjects_count_1, objects, cnt); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableSet setWithObjects_(SwiftLibrary _lib, NSObject firstObj) { - final _ret = _lib._objc_msgSend_124( - _lib._class_NSMutableSet1, _lib._sel_setWithObjects_1, firstObj._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableSet setWithSet_(SwiftLibrary _lib, NSSet set) { - final _ret = _lib._objc_msgSend_411( - _lib._class_NSMutableSet1, _lib._sel_setWithSet_1, set._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableSet setWithArray_(SwiftLibrary _lib, NSArray array) { - final _ret = _lib._objc_msgSend_125( - _lib._class_NSMutableSet1, _lib._sel_setWithArray_1, array._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableSet initWithObjects_(NSObject firstObj) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObjects_1, firstObj._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableSet initWithSet_(NSSet set) { - final _ret = _lib._objc_msgSend_411(_id, _lib._sel_initWithSet_1, set._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableSet initWithSet_copyItems_(NSSet set, bool flag) { - final _ret = _lib._objc_msgSend_412( - _id, _lib._sel_initWithSet_copyItems_1, set._id, flag); - return NSMutableSet._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableSet initWithArray_(NSArray array) { - final _ret = - _lib._objc_msgSend_125(_id, _lib._sel_initWithArray_1, array._id); - return NSMutableSet._(_ret, _lib, retain: true, release: true); - } - - static NSMutableSet new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableSet1, _lib._sel_new1); - return NSMutableSet._(_ret, _lib, retain: false, release: true); - } - - static NSMutableSet allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMutableSet1, _lib._sel_allocWithZone_1, zone); - return NSMutableSet._(_ret, _lib, retain: false, release: true); - } - - static NSMutableSet alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableSet1, _lib._sel_alloc1); - return NSMutableSet._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableSet1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableSet1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableSet1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableSet1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableSet1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableSet1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSMutableSet1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableSet1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSKeyValueChange { - static const int NSKeyValueChangeSetting = 1; - static const int NSKeyValueChangeInsertion = 2; - static const int NSKeyValueChangeRemoval = 3; - static const int NSKeyValueChangeReplacement = 4; -} - -abstract class NSKeyValueSetMutationKind { - static const int NSKeyValueUnionSetMutation = 1; - static const int NSKeyValueMinusSetMutation = 2; - static const int NSKeyValueIntersectSetMutation = 3; - static const int NSKeyValueSetSetMutation = 4; -} - -class NSKeyedArchiver extends NSCoder { - NSKeyedArchiver._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSKeyedArchiver] that points to the same underlying object as [other]. - static NSKeyedArchiver castFrom(T other) { - return NSKeyedArchiver._(other._id, other._lib, - retain: true, release: true); - } - - /// Returns a [NSKeyedArchiver] that wraps the given raw object pointer. - static NSKeyedArchiver castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSKeyedArchiver._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSKeyedArchiver]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSKeyedArchiver1); - } - - NSKeyedArchiver initRequiringSecureCoding_(bool requiresSecureCoding) { - final _ret = _lib._objc_msgSend_514( - _id, _lib._sel_initRequiringSecureCoding_1, requiresSecureCoding); - return NSKeyedArchiver._(_ret, _lib, retain: true, release: true); - } - - static NSData? archivedDataWithRootObject_requiringSecureCoding_error_( - SwiftLibrary _lib, - NSObject object, - bool requiresSecureCoding, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_515( - _lib._class_NSKeyedArchiver1, - _lib._sel_archivedDataWithRootObject_requiringSecureCoding_error_1, - object._id, - requiresSecureCoding, - error); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - @override - NSKeyedArchiver init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSKeyedArchiver._(_ret, _lib, retain: true, release: true); - } - - NSKeyedArchiver initForWritingWithMutableData_(NSMutableData data) { - final _ret = _lib._objc_msgSend_521( - _id, _lib._sel_initForWritingWithMutableData_1, data._id); - return NSKeyedArchiver._(_ret, _lib, retain: true, release: true); - } - - static NSData archivedDataWithRootObject_( - SwiftLibrary _lib, NSObject rootObject) { - final _ret = _lib._objc_msgSend_522(_lib._class_NSKeyedArchiver1, - _lib._sel_archivedDataWithRootObject_1, rootObject._id); - return NSData._(_ret, _lib, retain: true, release: true); - } - - static bool archiveRootObject_toFile_( - SwiftLibrary _lib, NSObject rootObject, NSString path) { - return _lib._objc_msgSend_261(_lib._class_NSKeyedArchiver1, - _lib._sel_archiveRootObject_toFile_1, rootObject._id, path._id); - } - - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); - } - - int get outputFormat { - return _lib._objc_msgSend_523(_id, _lib._sel_outputFormat1); - } - - set outputFormat(int value) { - return _lib._objc_msgSend_524(_id, _lib._sel_setOutputFormat_1, value); - } - - NSData get encodedData { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_encodedData1); - return NSData._(_ret, _lib, retain: true, release: true); - } - - void finishEncoding() { - _lib._objc_msgSend_1(_id, _lib._sel_finishEncoding1); - } - - static void setClassName_forClass_( - SwiftLibrary _lib, NSString? codedName, NSObject cls) { - _lib._objc_msgSend_525( - _lib._class_NSKeyedArchiver1, - _lib._sel_setClassName_forClass_1, - codedName?._id ?? ffi.nullptr, - cls._id); - } - - static NSString? classNameForClass_(SwiftLibrary _lib, NSObject cls) { - final _ret = _lib._objc_msgSend_526( - _lib._class_NSKeyedArchiver1, _lib._sel_classNameForClass_1, cls._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - @override - void encodeObject_forKey_(NSObject? object, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_encodeObject_forKey_1, - object?._id ?? ffi.nullptr, key._id); - } - - @override - void encodeConditionalObject_forKey_(NSObject? object, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_encodeConditionalObject_forKey_1, - object?._id ?? ffi.nullptr, key._id); - } - - @override - void encodeBool_forKey_(bool value, NSString key) { - _lib._objc_msgSend_296(_id, _lib._sel_encodeBool_forKey_1, value, key._id); - } - - @override - void encodeInt_forKey_(int value, NSString key) { - _lib._objc_msgSend_297(_id, _lib._sel_encodeInt_forKey_1, value, key._id); - } - - @override - void encodeInt32_forKey_(int value, NSString key) { - _lib._objc_msgSend_298(_id, _lib._sel_encodeInt32_forKey_1, value, key._id); - } - - @override - void encodeInt64_forKey_(int value, NSString key) { - _lib._objc_msgSend_299(_id, _lib._sel_encodeInt64_forKey_1, value, key._id); - } - - @override - void encodeFloat_forKey_(double value, NSString key) { - _lib._objc_msgSend_300(_id, _lib._sel_encodeFloat_forKey_1, value, key._id); - } - - @override - void encodeDouble_forKey_(double value, NSString key) { - _lib._objc_msgSend_301( - _id, _lib._sel_encodeDouble_forKey_1, value, key._id); - } - - @override - void encodeBytes_length_forKey_( - ffi.Pointer bytes, int length, NSString key) { - _lib._objc_msgSend_302( - _id, _lib._sel_encodeBytes_length_forKey_1, bytes, length, key._id); - } - - @override - bool get requiresSecureCoding { - return _lib._objc_msgSend_12(_id, _lib._sel_requiresSecureCoding1); - } - - set requiresSecureCoding(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setRequiresSecureCoding_1, value); - } - - static NSKeyedArchiver new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSKeyedArchiver1, _lib._sel_new1); - return NSKeyedArchiver._(_ret, _lib, retain: false, release: true); - } - - static NSKeyedArchiver allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSKeyedArchiver1, _lib._sel_allocWithZone_1, zone); - return NSKeyedArchiver._(_ret, _lib, retain: false, release: true); - } - - static NSKeyedArchiver alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSKeyedArchiver1, _lib._sel_alloc1); - return NSKeyedArchiver._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSKeyedArchiver1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSKeyedArchiver1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSKeyedArchiver1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSKeyedArchiver1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSKeyedArchiver1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSKeyedArchiver1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSKeyedArchiver1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSKeyedArchiver1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSKeyedArchiver1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSMutableData extends NSData { - NSMutableData._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSMutableData] that points to the same underlying object as [other]. - static NSMutableData castFrom(T other) { - return NSMutableData._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSMutableData] that wraps the given raw object pointer. - static NSMutableData castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableData._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSMutableData]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSMutableData1); - } - - ffi.Pointer get mutableBytes { - return _lib._objc_msgSend_20(_id, _lib._sel_mutableBytes1); - } - - @override - int get length { - return _lib._objc_msgSend_10(_id, _lib._sel_length1); - } - - set length(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setLength_1, value); - } - - void appendBytes_length_(ffi.Pointer bytes, int length) { - _lib._objc_msgSend_22(_id, _lib._sel_appendBytes_length_1, bytes, length); - } - - void appendData_(NSData other) { - _lib._objc_msgSend_285(_id, _lib._sel_appendData_1, other._id); - } - - void increaseLengthBy_(int extraLength) { - _lib._objc_msgSend_470(_id, _lib._sel_increaseLengthBy_1, extraLength); - } - - void replaceBytesInRange_withBytes_( - _NSRange range, ffi.Pointer bytes) { - _lib._objc_msgSend_517( - _id, _lib._sel_replaceBytesInRange_withBytes_1, range, bytes); - } - - void resetBytesInRange_(_NSRange range) { - _lib._objc_msgSend_476(_id, _lib._sel_resetBytesInRange_1, range); - } - - void setData_(NSData data) { - _lib._objc_msgSend_285(_id, _lib._sel_setData_1, data._id); - } - - void replaceBytesInRange_withBytes_length_(_NSRange range, - ffi.Pointer replacementBytes, int replacementLength) { - _lib._objc_msgSend_518( - _id, - _lib._sel_replaceBytesInRange_withBytes_length_1, - range, - replacementBytes, - replacementLength); - } - - static NSMutableData? dataWithCapacity_(SwiftLibrary _lib, int aNumItems) { - final _ret = _lib._objc_msgSend_519( - _lib._class_NSMutableData1, _lib._sel_dataWithCapacity_1, aNumItems); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData? dataWithLength_(SwiftLibrary _lib, int length) { - final _ret = _lib._objc_msgSend_519( - _lib._class_NSMutableData1, _lib._sel_dataWithLength_1, length); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - NSMutableData? initWithCapacity_(int capacity) { - final _ret = - _lib._objc_msgSend_519(_id, _lib._sel_initWithCapacity_1, capacity); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - NSMutableData? initWithLength_(int length) { - final _ret = - _lib._objc_msgSend_519(_id, _lib._sel_initWithLength_1, length); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - bool decompressUsingAlgorithm_error_( - int algorithm, ffi.Pointer> error) { - return _lib._objc_msgSend_520( - _id, _lib._sel_decompressUsingAlgorithm_error_1, algorithm, error); - } - - bool compressUsingAlgorithm_error_( - int algorithm, ffi.Pointer> error) { - return _lib._objc_msgSend_520( - _id, _lib._sel_compressUsingAlgorithm_error_1, algorithm, error); - } - - static NSMutableData data(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableData1, _lib._sel_data1); - return NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData dataWithBytes_length_( - SwiftLibrary _lib, ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273(_lib._class_NSMutableData1, - _lib._sel_dataWithBytes_length_1, bytes, length); - return NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData dataWithBytesNoCopy_length_( - SwiftLibrary _lib, ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273(_lib._class_NSMutableData1, - _lib._sel_dataWithBytesNoCopy_length_1, bytes, length); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - static NSMutableData dataWithBytesNoCopy_length_freeWhenDone_( - SwiftLibrary _lib, ffi.Pointer bytes, int length, bool b) { - final _ret = _lib._objc_msgSend_274(_lib._class_NSMutableData1, - _lib._sel_dataWithBytesNoCopy_length_freeWhenDone_1, bytes, length, b); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - static NSMutableData? dataWithContentsOfFile_options_error_( - SwiftLibrary _lib, - NSString path, - int readOptionsMask, - ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_275( - _lib._class_NSMutableData1, - _lib._sel_dataWithContentsOfFile_options_error_1, - path._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData? dataWithContentsOfURL_options_error_( - SwiftLibrary _lib, - NSURL url, - int readOptionsMask, - ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_276( - _lib._class_NSMutableData1, - _lib._sel_dataWithContentsOfURL_options_error_1, - url._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData? dataWithContentsOfFile_( - SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSMutableData1, - _lib._sel_dataWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData? dataWithContentsOfURL_(SwiftLibrary _lib, NSURL url) { - final _ret = _lib._objc_msgSend_277( - _lib._class_NSMutableData1, _lib._sel_dataWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData initWithBytes_length_(ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273( - _id, _lib._sel_initWithBytes_length_1, bytes, length); - return NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData initWithBytesNoCopy_length_( - ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_273( - _id, _lib._sel_initWithBytesNoCopy_length_1, bytes, length); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableData initWithBytesNoCopy_length_freeWhenDone_( - ffi.Pointer bytes, int length, bool b) { - final _ret = _lib._objc_msgSend_274(_id, - _lib._sel_initWithBytesNoCopy_length_freeWhenDone_1, bytes, length, b); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableData initWithBytesNoCopy_length_deallocator_( - ffi.Pointer bytes, - int length, - ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { - final _ret = _lib._objc_msgSend_278( - _id, - _lib._sel_initWithBytesNoCopy_length_deallocator_1, - bytes, - length, - deallocator?._id ?? ffi.nullptr); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableData? initWithContentsOfFile_options_error_(NSString path, - int readOptionsMask, ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_275( - _id, - _lib._sel_initWithContentsOfFile_options_error_1, - path._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData? initWithContentsOfURL_options_error_(NSURL url, - int readOptionsMask, ffi.Pointer> errorPtr) { - final _ret = _lib._objc_msgSend_276( - _id, - _lib._sel_initWithContentsOfURL_options_error_1, - url._id, - readOptionsMask, - errorPtr); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData? initWithContentsOfFile_(NSString path) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_initWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_277(_id, _lib._sel_initWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData initWithData_(NSData data) { - final _ret = - _lib._objc_msgSend_279(_id, _lib._sel_initWithData_1, data._id); - return NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData dataWithData_(SwiftLibrary _lib, NSData data) { - final _ret = _lib._objc_msgSend_279( - _lib._class_NSMutableData1, _lib._sel_dataWithData_1, data._id); - return NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData? initWithBase64EncodedString_options_( - NSString base64String, int options) { - final _ret = _lib._objc_msgSend_280( - _id, - _lib._sel_initWithBase64EncodedString_options_1, - base64String._id, - options); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData? initWithBase64EncodedData_options_( - NSData base64Data, int options) { - final _ret = _lib._objc_msgSend_282(_id, - _lib._sel_initWithBase64EncodedData_options_1, base64Data._id, options); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData? decompressedDataUsingAlgorithm_error_( - int algorithm, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_284(_id, - _lib._sel_decompressedDataUsingAlgorithm_error_1, algorithm, error); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData? compressedDataUsingAlgorithm_error_( - int algorithm, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_284( - _id, _lib._sel_compressedDataUsingAlgorithm_error_1, algorithm, error); - return _ret.address == 0 - ? null - : NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSObject? dataWithContentsOfMappedFile_( - SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSMutableData1, - _lib._sel_dataWithContentsOfMappedFile_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableData init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableData._(_ret, _lib, retain: true, release: true); - } - - static NSMutableData new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableData1, _lib._sel_new1); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - static NSMutableData allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMutableData1, _lib._sel_allocWithZone_1, zone); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - static NSMutableData alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableData1, _lib._sel_alloc1); - return NSMutableData._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableData1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableData1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableData1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableData1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableData1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableData1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableData1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSMutableData1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableData1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSPropertyListFormat { - static const int NSPropertyListOpenStepFormat = 1; - static const int NSPropertyListXMLFormat_v1_0 = 100; - static const int NSPropertyListBinaryFormat_v1_0 = 200; -} - -class NSThread extends NSObject { - NSThread._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSThread] that points to the same underlying object as [other]. - static NSThread castFrom(T other) { - return NSThread._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSThread] that wraps the given raw object pointer. - static NSThread castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSThread._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSThread]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSThread1); - } - - static NSThread getCurrentThread(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_531(_lib._class_NSThread1, _lib._sel_currentThread1); - return NSThread._(_ret, _lib, retain: true, release: true); - } - - static void detachNewThreadWithBlock_( - SwiftLibrary _lib, ObjCBlock_ffiVoid block) { - _lib._objc_msgSend_532( - _lib._class_NSThread1, _lib._sel_detachNewThreadWithBlock_1, block._id); - } - - static void detachNewThreadSelector_toTarget_withObject_(SwiftLibrary _lib, - ffi.Pointer selector, NSObject target, NSObject? argument) { - _lib._objc_msgSend_533( - _lib._class_NSThread1, - _lib._sel_detachNewThreadSelector_toTarget_withObject_1, - selector, - target._id, - argument?._id ?? ffi.nullptr); - } - - static bool isMultiThreaded(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSThread1, _lib._sel_isMultiThreaded1); - } - - NSMutableDictionary get threadDictionary { - final _ret = _lib._objc_msgSend_539(_id, _lib._sel_threadDictionary1); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static void sleepUntilDate_(SwiftLibrary _lib, NSDate date) { - _lib._objc_msgSend_540( - _lib._class_NSThread1, _lib._sel_sleepUntilDate_1, date._id); - } - - static void sleepForTimeInterval_(SwiftLibrary _lib, double ti) { - _lib._objc_msgSend_541( - _lib._class_NSThread1, _lib._sel_sleepForTimeInterval_1, ti); - } - - static void exit(SwiftLibrary _lib) { - _lib._objc_msgSend_1(_lib._class_NSThread1, _lib._sel_exit1); - } - - double get threadPriority { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_threadPriority1) - : _lib._objc_msgSend_165(_id, _lib._sel_threadPriority1); - } - - set threadPriority(double value) { - return _lib._objc_msgSend_542(_id, _lib._sel_setThreadPriority_1, value); - } - - int get qualityOfService { - return _lib._objc_msgSend_543(_id, _lib._sel_qualityOfService1); - } - - set qualityOfService(int value) { - return _lib._objc_msgSend_544(_id, _lib._sel_setQualityOfService_1, value); - } - - static NSArray getCallStackReturnAddresses(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSThread1, _lib._sel_callStackReturnAddresses1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSArray getCallStackSymbols(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSThread1, _lib._sel_callStackSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString? get name { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_name1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - set name(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); - } - - int get stackSize { - return _lib._objc_msgSend_10(_id, _lib._sel_stackSize1); - } - - set stackSize(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setStackSize_1, value); - } - - bool get isMainThread { - return _lib._objc_msgSend_12(_id, _lib._sel_isMainThread1); - } - - static NSThread getMainThread(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_531(_lib._class_NSThread1, _lib._sel_mainThread1); - return NSThread._(_ret, _lib, retain: true, release: true); - } - - @override - NSThread init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSThread._(_ret, _lib, retain: true, release: true); - } - - NSThread initWithTarget_selector_object_( - NSObject target, ffi.Pointer selector, NSObject? argument) { - final _ret = _lib._objc_msgSend_546( - _id, - _lib._sel_initWithTarget_selector_object_1, - target._id, - selector, - argument?._id ?? ffi.nullptr); - return NSThread._(_ret, _lib, retain: true, release: true); - } - - NSThread initWithBlock_(ObjCBlock_ffiVoid block) { - final _ret = - _lib._objc_msgSend_547(_id, _lib._sel_initWithBlock_1, block._id); - return NSThread._(_ret, _lib, retain: true, release: true); - } - - bool get executing { - return _lib._objc_msgSend_12(_id, _lib._sel_isExecuting1); - } - - bool get finished { - return _lib._objc_msgSend_12(_id, _lib._sel_isFinished1); - } - - bool get cancelled { - return _lib._objc_msgSend_12(_id, _lib._sel_isCancelled1); - } - - void cancel() { - _lib._objc_msgSend_1(_id, _lib._sel_cancel1); - } - - void start() { - _lib._objc_msgSend_1(_id, _lib._sel_start1); - } - - void main() { - _lib._objc_msgSend_1(_id, _lib._sel_main1); - } - - static NSThread new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSThread1, _lib._sel_new1); - return NSThread._(_ret, _lib, retain: false, release: true); - } - - static NSThread allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSThread1, _lib._sel_allocWithZone_1, zone); - return NSThread._(_ret, _lib, retain: false, release: true); - } - - static NSThread alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSThread1, _lib._sel_alloc1); - return NSThread._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSThread1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSThread1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSThread1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSThread1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSThread1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSThread1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSThread1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSThread1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSThread1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -void _ObjCBlock_ffiVoid_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, -) => - block.ref.target - .cast>() - .asFunction()(); -final _ObjCBlock_ffiVoid_closureRegistry = {}; -int _ObjCBlock_ffiVoid_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_registerClosure(void Function() fn) { - final id = ++_ObjCBlock_ffiVoid_closureRegistryIndex; - _ObjCBlock_ffiVoid_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, -) => - _ObjCBlock_ffiVoid_closureRegistry[block.ref.target.address]!(); - -class ObjCBlock_ffiVoid extends _ObjCBlockBase { - ObjCBlock_ffiVoid._(ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid._(pointer, lib, retain: retain, release: release); - } - - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid.fromFunctionPointer(SwiftLibrary lib, - ffi.Pointer> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_ffiVoid_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid.fromFunction(SwiftLibrary lib, void Function() fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_ffiVoid_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_registerClosure(() => fn())), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid.listener(SwiftLibrary lib, void Function() fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>)>.listener( - _ObjCBlock_ffiVoid_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_registerClosure(() => fn())), - lib); - static ffi.NativeCallable)>? - _dartFuncListenerTrampoline; - - void call() => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block)>>() - .asFunction)>()( - _id, - ); -} - -class NSMutableDictionary extends NSDictionary { - NSMutableDictionary._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSMutableDictionary] that points to the same underlying object as [other]. - static NSMutableDictionary castFrom(T other) { - return NSMutableDictionary._(other._id, other._lib, - retain: true, release: true); - } - - /// Returns a [NSMutableDictionary] that wraps the given raw object pointer. - static NSMutableDictionary castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableDictionary._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSMutableDictionary]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMutableDictionary1); - } - - void removeObjectForKey_(NSObject aKey) { - _lib._objc_msgSend_15(_id, _lib._sel_removeObjectForKey_1, aKey._id); - } - - void setObject_forKey_(NSObject anObject, NSObject aKey) { - _lib._objc_msgSend_534( - _id, _lib._sel_setObject_forKey_1, anObject._id, aKey._id); - } - - @override - NSMutableDictionary init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - NSMutableDictionary initWithCapacity_(int numItems) { - final _ret = - _lib._objc_msgSend_65(_id, _lib._sel_initWithCapacity_1, numItems); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableDictionary? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - void addEntriesFromDictionary_(NSDictionary otherDictionary) { - _lib._objc_msgSend_509( - _id, _lib._sel_addEntriesFromDictionary_1, otherDictionary._id); - } - - void removeAllObjects() { - _lib._objc_msgSend_1(_id, _lib._sel_removeAllObjects1); - } - - void removeObjectsForKeys_(NSArray keyArray) { - _lib._objc_msgSend_472(_id, _lib._sel_removeObjectsForKeys_1, keyArray._id); - } - - void setDictionary_(NSDictionary otherDictionary) { - _lib._objc_msgSend_509(_id, _lib._sel_setDictionary_1, otherDictionary._id); - } - - void setObject_forKeyedSubscript_(NSObject? obj, NSObject key) { - _lib._objc_msgSend_535(_id, _lib._sel_setObject_forKeyedSubscript_1, - obj?._id ?? ffi.nullptr, key._id); - } - - static NSMutableDictionary dictionaryWithCapacity_( - SwiftLibrary _lib, int numItems) { - final _ret = _lib._objc_msgSend_65(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithCapacity_1, numItems); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary? dictionaryWithContentsOfFile_( - SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_536(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary? dictionaryWithContentsOfURL_( - SwiftLibrary _lib, NSURL url) { - final _ret = _lib._objc_msgSend_537(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - NSMutableDictionary? initWithContentsOfFile_(NSString path) { - final _ret = _lib._objc_msgSend_536( - _id, _lib._sel_initWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - NSMutableDictionary? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_537(_id, _lib._sel_initWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary dictionaryWithSharedKeySet_( - SwiftLibrary _lib, NSObject keyset) { - final _ret = _lib._objc_msgSend_538(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithSharedKeySet_1, keyset._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - void setValue_forKey_(NSObject? value, NSString key) { - _lib._objc_msgSend_135( - _id, _lib._sel_setValue_forKey_1, value?._id ?? ffi.nullptr, key._id); - } - - @override - NSMutableDictionary initWithObjects_forKeys_count_( - ffi.Pointer> objects, - ffi.Pointer> keys, - int cnt) { - final _ret = _lib._objc_msgSend_147( - _id, _lib._sel_initWithObjects_forKeys_count_1, objects, keys, cnt); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary dictionary(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableDictionary1, _lib._sel_dictionary1); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary dictionaryWithObject_forKey_( - SwiftLibrary _lib, NSObject object, NSObject key) { - final _ret = _lib._objc_msgSend_158(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithObject_forKey_1, object._id, key._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary dictionaryWithObjects_forKeys_count_( - SwiftLibrary _lib, - ffi.Pointer> objects, - ffi.Pointer> keys, - int cnt) { - final _ret = _lib._objc_msgSend_147(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithObjects_forKeys_count_1, objects, keys, cnt); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary dictionaryWithObjectsAndKeys_( - SwiftLibrary _lib, NSObject firstObject) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithObjectsAndKeys_1, firstObject._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary dictionaryWithDictionary_( - SwiftLibrary _lib, NSDictionary dict) { - final _ret = _lib._objc_msgSend_159(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithDictionary_1, dict._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary dictionaryWithObjects_forKeys_( - SwiftLibrary _lib, NSArray objects, NSArray keys) { - final _ret = _lib._objc_msgSend_160(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithObjects_forKeys_1, objects._id, keys._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableDictionary initWithObjectsAndKeys_(NSObject firstObject) { - final _ret = _lib._objc_msgSend_124( - _id, _lib._sel_initWithObjectsAndKeys_1, firstObject._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableDictionary initWithDictionary_(NSDictionary otherDictionary) { - final _ret = _lib._objc_msgSend_159( - _id, _lib._sel_initWithDictionary_1, otherDictionary._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableDictionary initWithDictionary_copyItems_( - NSDictionary otherDictionary, bool flag) { - final _ret = _lib._objc_msgSend_161(_id, - _lib._sel_initWithDictionary_copyItems_1, otherDictionary._id, flag); - return NSMutableDictionary._(_ret, _lib, retain: false, release: true); - } - - @override - NSMutableDictionary initWithObjects_forKeys_(NSArray objects, NSArray keys) { - final _ret = _lib._objc_msgSend_160( - _id, _lib._sel_initWithObjects_forKeys_1, objects._id, keys._id); - return NSMutableDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSDictionary? dictionaryWithContentsOfURL_error_(SwiftLibrary _lib, - NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_162(_lib._class_NSMutableDictionary1, - _lib._sel_dictionaryWithContentsOfURL_error_1, url._id, error); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - static NSObject sharedKeySetForKeys_(SwiftLibrary _lib, NSArray keys) { - final _ret = _lib._objc_msgSend_125(_lib._class_NSMutableDictionary1, - _lib._sel_sharedKeySetForKeys_1, keys._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSMutableDictionary new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableDictionary1, _lib._sel_new1); - return NSMutableDictionary._(_ret, _lib, retain: false, release: true); - } - - static NSMutableDictionary allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMutableDictionary1, _lib._sel_allocWithZone_1, zone); - return NSMutableDictionary._(_ret, _lib, retain: false, release: true); - } - - static NSMutableDictionary alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableDictionary1, _lib._sel_alloc1); - return NSMutableDictionary._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableDictionary1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableDictionary1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMutableDictionary1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableDictionary1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableDictionary1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableDictionary1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableDictionary1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSMutableDictionary1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableDictionary1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSQualityOfService { - static const int NSQualityOfServiceUserInteractive = 33; - static const int NSQualityOfServiceUserInitiated = 25; - static const int NSQualityOfServiceUtility = 17; - static const int NSQualityOfServiceBackground = 9; - static const int NSQualityOfServiceDefault = -1; -} - -class NSArchiver extends NSCoder { - NSArchiver._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSArchiver] that points to the same underlying object as [other]. - static NSArchiver castFrom(T other) { - return NSArchiver._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSArchiver] that wraps the given raw object pointer. - static NSArchiver castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSArchiver._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSArchiver]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSArchiver1); - } - - NSArchiver initForWritingWithMutableData_(NSMutableData mdata) { - final _ret = _lib._objc_msgSend_521( - _id, _lib._sel_initForWritingWithMutableData_1, mdata._id); - return NSArchiver._(_ret, _lib, retain: true, release: true); - } - - NSMutableData get archiverData { - final _ret = _lib._objc_msgSend_550(_id, _lib._sel_archiverData1); - return NSMutableData._(_ret, _lib, retain: true, release: true); - } - - @override - void encodeRootObject_(NSObject rootObject) { - _lib._objc_msgSend_15(_id, _lib._sel_encodeRootObject_1, rootObject._id); - } - - @override - void encodeConditionalObject_(NSObject? object) { - _lib._objc_msgSend_289( - _id, _lib._sel_encodeConditionalObject_1, object?._id ?? ffi.nullptr); - } - - static NSData archivedDataWithRootObject_( - SwiftLibrary _lib, NSObject rootObject) { - final _ret = _lib._objc_msgSend_522(_lib._class_NSArchiver1, - _lib._sel_archivedDataWithRootObject_1, rootObject._id); - return NSData._(_ret, _lib, retain: true, release: true); - } - - static bool archiveRootObject_toFile_( - SwiftLibrary _lib, NSObject rootObject, NSString path) { - return _lib._objc_msgSend_261(_lib._class_NSArchiver1, - _lib._sel_archiveRootObject_toFile_1, rootObject._id, path._id); - } - - void encodeClassName_intoClassName_( - NSString trueName, NSString inArchiveName) { - _lib._objc_msgSend_551(_id, _lib._sel_encodeClassName_intoClassName_1, - trueName._id, inArchiveName._id); - } - - NSString? classNameEncodedForTrueClassName_(NSString trueName) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_classNameEncodedForTrueClassName_1, trueName._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - void replaceObject_withObject_(NSObject object, NSObject newObject) { - _lib._objc_msgSend_534( - _id, _lib._sel_replaceObject_withObject_1, object._id, newObject._id); - } - - @override - NSArchiver init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSArchiver._(_ret, _lib, retain: true, release: true); - } - - static NSArchiver new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSArchiver1, _lib._sel_new1); - return NSArchiver._(_ret, _lib, retain: false, release: true); - } - - static NSArchiver allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSArchiver1, _lib._sel_allocWithZone_1, zone); - return NSArchiver._(_ret, _lib, retain: false, release: true); - } - - static NSArchiver alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSArchiver1, _lib._sel_alloc1); - return NSArchiver._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSArchiver1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSArchiver1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSArchiver1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSArchiver1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSArchiver1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSArchiver1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSArchiver1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSArchiver1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSArchiver1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSPortCoder extends NSCoder { - NSPortCoder._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSPortCoder] that points to the same underlying object as [other]. - static NSPortCoder castFrom(T other) { - return NSPortCoder._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSPortCoder] that wraps the given raw object pointer. - static NSPortCoder castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSPortCoder._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSPortCoder]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSPortCoder1); - } - - bool isBycopy() { - return _lib._objc_msgSend_12(_id, _lib._sel_isBycopy1); - } - - bool isByref() { - return _lib._objc_msgSend_12(_id, _lib._sel_isByref1); - } - - void encodePortObject_(NSPort aport) { - _lib._objc_msgSend_593(_id, _lib._sel_encodePortObject_1, aport._id); - } - - NSPort? decodePortObject() { - final _ret = _lib._objc_msgSend_594(_id, _lib._sel_decodePortObject1); - return _ret.address == 0 - ? null - : NSPort._(_ret, _lib, retain: true, release: true); - } - - NSConnection? connection() { - final _ret = _lib._objc_msgSend_595(_id, _lib._sel_connection1); - return _ret.address == 0 - ? null - : NSConnection._(_ret, _lib, retain: true, release: true); - } - - static NSObject portCoderWithReceivePort_sendPort_components_( - SwiftLibrary _lib, NSPort? rcvPort, NSPort? sndPort, NSArray? comps) { - final _ret = _lib._objc_msgSend_596( - _lib._class_NSPortCoder1, - _lib._sel_portCoderWithReceivePort_sendPort_components_1, - rcvPort?._id ?? ffi.nullptr, - sndPort?._id ?? ffi.nullptr, - comps?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject initWithReceivePort_sendPort_components_( - NSPort? rcvPort, NSPort? sndPort, NSArray? comps) { - final _ret = _lib._objc_msgSend_596( - _id, - _lib._sel_initWithReceivePort_sendPort_components_1, - rcvPort?._id ?? ffi.nullptr, - sndPort?._id ?? ffi.nullptr, - comps?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void dispatch() { - _lib._objc_msgSend_1(_id, _lib._sel_dispatch1); - } - - @override - NSPortCoder init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSPortCoder._(_ret, _lib, retain: true, release: true); - } - - static NSPortCoder new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSPortCoder1, _lib._sel_new1); - return NSPortCoder._(_ret, _lib, retain: false, release: true); - } - - static NSPortCoder allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSPortCoder1, _lib._sel_allocWithZone_1, zone); - return NSPortCoder._(_ret, _lib, retain: false, release: true); - } - - static NSPortCoder alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPortCoder1, _lib._sel_alloc1); - return NSPortCoder._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSPortCoder1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSPortCoder1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPortCoder1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPortCoder1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSPortCoder1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSPortCoder1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSPortCoder1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSPortCoder1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPortCoder1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSPort extends NSObject { - NSPort._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSPort] that points to the same underlying object as [other]. - static NSPort castFrom(T other) { - return NSPort._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSPort] that wraps the given raw object pointer. - static NSPort castFromPointer(SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSPort._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSPort]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSPort1); - } - - static NSPort port(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_553(_lib._class_NSPort1, _lib._sel_port1); - return NSPort._(_ret, _lib, retain: true, release: true); - } - - void invalidate() { - _lib._objc_msgSend_1(_id, _lib._sel_invalidate1); - } - - bool get valid { - return _lib._objc_msgSend_12(_id, _lib._sel_isValid1); - } - - void setDelegate_(NSObject? anObject) { - _lib._objc_msgSend_289( - _id, _lib._sel_setDelegate_1, anObject?._id ?? ffi.nullptr); - } - - NSObject? delegate() { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - void scheduleInRunLoop_forMode_(NSRunLoop runLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_scheduleInRunLoop_forMode_1, runLoop._id, mode._id); - } - - void removeFromRunLoop_forMode_(NSRunLoop runLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_removeFromRunLoop_forMode_1, runLoop._id, mode._id); - } - - int get reservedSpaceLength { - return _lib._objc_msgSend_10(_id, _lib._sel_reservedSpaceLength1); - } - - bool sendBeforeDate_components_from_reserved_( - NSDate limitDate, - NSMutableArray? components, - NSPort? receivePort, - int headerSpaceReserved) { - return _lib._objc_msgSend_570( - _id, - _lib._sel_sendBeforeDate_components_from_reserved_1, - limitDate._id, - components?._id ?? ffi.nullptr, - receivePort?._id ?? ffi.nullptr, - headerSpaceReserved); - } - - bool sendBeforeDate_msgid_components_from_reserved_( - NSDate limitDate, - int msgID, - NSMutableArray? components, - NSPort? receivePort, - int headerSpaceReserved) { - return _lib._objc_msgSend_571( - _id, - _lib._sel_sendBeforeDate_msgid_components_from_reserved_1, - limitDate._id, - msgID, - components?._id ?? ffi.nullptr, - receivePort?._id ?? ffi.nullptr, - headerSpaceReserved); - } - - void addConnection_toRunLoop_forMode_( - NSConnection conn, NSRunLoop runLoop, NSString mode) { - _lib._objc_msgSend_592(_id, _lib._sel_addConnection_toRunLoop_forMode_1, - conn._id, runLoop._id, mode._id); - } - - void removeConnection_fromRunLoop_forMode_( - NSConnection conn, NSRunLoop runLoop, NSString mode) { - _lib._objc_msgSend_592( - _id, - _lib._sel_removeConnection_fromRunLoop_forMode_1, - conn._id, - runLoop._id, - mode._id); - } - - @override - NSPort init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSPort._(_ret, _lib, retain: true, release: true); - } - - static NSPort new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSPort1, _lib._sel_new1); - return NSPort._(_ret, _lib, retain: false, release: true); - } - - static NSPort allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSPort1, _lib._sel_allocWithZone_1, zone); - return NSPort._(_ret, _lib, retain: false, release: true); - } - - static NSPort alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSPort1, _lib._sel_alloc1); - return NSPort._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSPort1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSPort1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPort1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPort1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSPort1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSPort1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSPort1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSPort1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPort1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSRunLoop extends NSObject { - NSRunLoop._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSRunLoop] that points to the same underlying object as [other]. - static NSRunLoop castFrom(T other) { - return NSRunLoop._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSRunLoop] that wraps the given raw object pointer. - static NSRunLoop castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSRunLoop._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSRunLoop]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSRunLoop1); - } - - static NSRunLoop getCurrentRunLoop(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_554( - _lib._class_NSRunLoop1, _lib._sel_currentRunLoop1); - return NSRunLoop._(_ret, _lib, retain: true, release: true); - } - - static NSRunLoop getMainRunLoop(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_554(_lib._class_NSRunLoop1, _lib._sel_mainRunLoop1); - return NSRunLoop._(_ret, _lib, retain: true, release: true); - } - - NSString? get currentMode { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_currentMode1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - ffi.Pointer<__CFRunLoop> getCFRunLoop() { - return _lib._objc_msgSend_555(_id, _lib._sel_getCFRunLoop1); - } - - void addTimer_forMode_(NSTimer timer, NSString mode) { - _lib._objc_msgSend_562( - _id, _lib._sel_addTimer_forMode_1, timer._id, mode._id); - } - - void addPort_forMode_(NSPort aPort, NSString mode) { - _lib._objc_msgSend_563( - _id, _lib._sel_addPort_forMode_1, aPort._id, mode._id); - } - - void removePort_forMode_(NSPort aPort, NSString mode) { - _lib._objc_msgSend_563( - _id, _lib._sel_removePort_forMode_1, aPort._id, mode._id); - } - - NSDate? limitDateForMode_(NSString mode) { - final _ret = - _lib._objc_msgSend_564(_id, _lib._sel_limitDateForMode_1, mode._id); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } - - void acceptInputForMode_beforeDate_(NSString mode, NSDate limitDate) { - _lib._objc_msgSend_565(_id, _lib._sel_acceptInputForMode_beforeDate_1, - mode._id, limitDate._id); - } - - void run() { - _lib._objc_msgSend_1(_id, _lib._sel_run1); - } - - void runUntilDate_(NSDate limitDate) { - _lib._objc_msgSend_540(_id, _lib._sel_runUntilDate_1, limitDate._id); - } - - bool runMode_beforeDate_(NSString mode, NSDate limitDate) { - return _lib._objc_msgSend_566( - _id, _lib._sel_runMode_beforeDate_1, mode._id, limitDate._id); - } - - void configureAsServer() { - _lib._objc_msgSend_1(_id, _lib._sel_configureAsServer1); - } - - void performInModes_block_(NSArray modes, ObjCBlock_ffiVoid block) { - _lib._objc_msgSend_567( - _id, _lib._sel_performInModes_block_1, modes._id, block._id); - } - - void performBlock_(ObjCBlock_ffiVoid block) { - _lib._objc_msgSend_532(_id, _lib._sel_performBlock_1, block._id); - } - - void performSelector_target_argument_order_modes_( - ffi.Pointer aSelector, - NSObject target, - NSObject? arg, - int order, - NSArray modes) { - _lib._objc_msgSend_568( - _id, - _lib._sel_performSelector_target_argument_order_modes_1, - aSelector, - target._id, - arg?._id ?? ffi.nullptr, - order, - modes._id); - } - - void cancelPerformSelector_target_argument_( - ffi.Pointer aSelector, NSObject target, NSObject? arg) { - _lib._objc_msgSend_533( - _id, - _lib._sel_cancelPerformSelector_target_argument_1, - aSelector, - target._id, - arg?._id ?? ffi.nullptr); - } - - void cancelPerformSelectorsWithTarget_(NSObject target) { - _lib._objc_msgSend_15( - _id, _lib._sel_cancelPerformSelectorsWithTarget_1, target._id); - } - - @override - NSRunLoop init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSRunLoop._(_ret, _lib, retain: true, release: true); - } - - static NSRunLoop new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSRunLoop1, _lib._sel_new1); - return NSRunLoop._(_ret, _lib, retain: false, release: true); - } - - static NSRunLoop allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSRunLoop1, _lib._sel_allocWithZone_1, zone); - return NSRunLoop._(_ret, _lib, retain: false, release: true); - } - - static NSRunLoop alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSRunLoop1, _lib._sel_alloc1); - return NSRunLoop._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSRunLoop1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSRunLoop1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSRunLoop1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSRunLoop1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSRunLoop1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSRunLoop1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSRunLoop1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSRunLoop1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSRunLoop1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -final class __CFRunLoop extends ffi.Opaque {} - -class NSTimer extends NSObject { - NSTimer._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSTimer] that points to the same underlying object as [other]. - static NSTimer castFrom(T other) { - return NSTimer._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSTimer] that wraps the given raw object pointer. - static NSTimer castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSTimer._(other, lib, retain: retain, release: release); - } +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. - /// Returns whether [obj] is an instance of [NSTimer]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSTimer1); - } - - static NSTimer timerWithTimeInterval_invocation_repeats_( - SwiftLibrary _lib, double ti, NSInvocation invocation, bool yesOrNo) { - final _ret = _lib._objc_msgSend_556( - _lib._class_NSTimer1, - _lib._sel_timerWithTimeInterval_invocation_repeats_1, - ti, - invocation._id, - yesOrNo); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - static NSTimer scheduledTimerWithTimeInterval_invocation_repeats_( - SwiftLibrary _lib, double ti, NSInvocation invocation, bool yesOrNo) { - final _ret = _lib._objc_msgSend_556( - _lib._class_NSTimer1, - _lib._sel_scheduledTimerWithTimeInterval_invocation_repeats_1, - ti, - invocation._id, - yesOrNo); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - static NSTimer timerWithTimeInterval_target_selector_userInfo_repeats_( - SwiftLibrary _lib, - double ti, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? userInfo, - bool yesOrNo) { - final _ret = _lib._objc_msgSend_557( - _lib._class_NSTimer1, - _lib._sel_timerWithTimeInterval_target_selector_userInfo_repeats_1, - ti, - aTarget._id, - aSelector, - userInfo?._id ?? ffi.nullptr, - yesOrNo); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - static NSTimer - scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_( - SwiftLibrary _lib, - double ti, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? userInfo, - bool yesOrNo) { - final _ret = _lib._objc_msgSend_557( - _lib._class_NSTimer1, - _lib._sel_scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_1, - ti, - aTarget._id, - aSelector, - userInfo?._id ?? ffi.nullptr, - yesOrNo); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - static NSTimer timerWithTimeInterval_repeats_block_(SwiftLibrary _lib, - double interval, bool repeats, ObjCBlock_ffiVoid_NSTimer block) { - final _ret = _lib._objc_msgSend_558( - _lib._class_NSTimer1, - _lib._sel_timerWithTimeInterval_repeats_block_1, - interval, - repeats, - block._id); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - static NSTimer scheduledTimerWithTimeInterval_repeats_block_( - SwiftLibrary _lib, - double interval, - bool repeats, - ObjCBlock_ffiVoid_NSTimer block) { - final _ret = _lib._objc_msgSend_558( - _lib._class_NSTimer1, - _lib._sel_scheduledTimerWithTimeInterval_repeats_block_1, - interval, - repeats, - block._id); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - NSTimer initWithFireDate_interval_repeats_block_(NSDate date, double interval, - bool repeats, ObjCBlock_ffiVoid_NSTimer block) { - final _ret = _lib._objc_msgSend_559( - _id, - _lib._sel_initWithFireDate_interval_repeats_block_1, - date._id, - interval, - repeats, - block._id); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - NSTimer initWithFireDate_interval_target_selector_userInfo_repeats_( - NSDate date, - double ti, - NSObject t, - ffi.Pointer s, - NSObject? ui, - bool rep) { - final _ret = _lib._objc_msgSend_560( - _id, - _lib._sel_initWithFireDate_interval_target_selector_userInfo_repeats_1, - date._id, - ti, - t._id, - s, - ui?._id ?? ffi.nullptr, - rep); - return NSTimer._(_ret, _lib, retain: true, release: true); - } +// ignore_for_file: camel_case_types, non_constant_identifier_names +// ignore_for_file: unused_element, unused_field, return_of_invalid_type +// ignore_for_file: void_checks, annotate_overrides +// ignore_for_file: no_leading_underscores_for_local_identifiers +// ignore_for_file: library_private_types_in_public_api - void fire() { - _lib._objc_msgSend_1(_id, _lib._sel_fire1); - } +// AUTO GENERATED FILE, DO NOT EDIT. +// +// Generated by `package:ffigen`. +// ignore_for_file: type=lint +import 'package:ffi/ffi.dart' as pkg_ffi; +import 'package:objective_c/objective_c.dart' as objc; +import 'dart:ffi' as ffi; - NSDate get fireDate { - final _ret = _lib._objc_msgSend_172(_id, _lib._sel_fireDate1); - return NSDate._(_ret, _lib, retain: true, release: true); - } +abstract class NSBinarySearchingOptions { + static const int NSBinarySearchingFirstEqual = 256; + static const int NSBinarySearchingLastEqual = 512; + static const int NSBinarySearchingInsertionIndex = 1024; +} - set fireDate(NSDate value) { - return _lib._objc_msgSend_561(_id, _lib._sel_setFireDate_1, value._id); - } +abstract class NSStringEnumerationOptions { + static const int NSStringEnumerationByLines = 0; + static const int NSStringEnumerationByParagraphs = 1; + static const int NSStringEnumerationByComposedCharacterSequences = 2; + static const int NSStringEnumerationByWords = 3; + static const int NSStringEnumerationBySentences = 4; + static const int NSStringEnumerationByCaretPositions = 5; + static const int NSStringEnumerationByDeletionClusters = 6; + static const int NSStringEnumerationReverse = 256; + static const int NSStringEnumerationSubstringNotRequired = 512; + static const int NSStringEnumerationLocalized = 1024; +} - double get timeInterval { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_timeInterval1) - : _lib._objc_msgSend_165(_id, _lib._sel_timeInterval1); - } +class NSBundle extends objc.NSObject { + NSBundle._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - double get tolerance { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_tolerance1) - : _lib._objc_msgSend_165(_id, _lib._sel_tolerance1); - } + /// Constructs a [NSBundle] that points to the same underlying object as [other]. + NSBundle.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - set tolerance(double value) { - return _lib._objc_msgSend_542(_id, _lib._sel_setTolerance_1, value); - } + /// Constructs a [NSBundle] that wraps the given raw object pointer. + NSBundle.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - void invalidate() { - _lib._objc_msgSend_1(_id, _lib._sel_invalidate1); + /// Returns whether [obj] is an instance of [NSBundle]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSBundle); } - bool get valid { - return _lib._objc_msgSend_12(_id, _lib._sel_isValid1); + static NSBundle getMainBundle() { + final _ret = _objc_msgSend_1(_class_NSBundle, _sel_mainBundle); + return NSBundle.castFromPointer(_ret, retain: true, release: true); } - NSObject? get userInfo { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_userInfo1); + static NSBundle? bundleWithPath_(objc.NSString path) { + final _ret = + _objc_msgSend_2(_class_NSBundle, _sel_bundleWithPath_, path.pointer); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - @override - NSTimer init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSTimer._(_ret, _lib, retain: true, release: true); - } - - static NSTimer new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSTimer1, _lib._sel_new1); - return NSTimer._(_ret, _lib, retain: false, release: true); - } - - static NSTimer allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSTimer1, _lib._sel_allocWithZone_1, zone); - return NSTimer._(_ret, _lib, retain: false, release: true); - } - - static NSTimer alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSTimer1, _lib._sel_alloc1); - return NSTimer._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSTimer1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSTimer1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSTimer1, _lib._sel_accessInstanceVariablesDirectly1); + : NSBundle.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSTimer1, _lib._sel_useStoredAccessor1); + NSBundle? initWithPath_(objc.NSString path) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_initWithPath_, path.pointer); + return _ret.address == 0 + ? null + : NSBundle.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSTimer1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static NSBundle? bundleWithURL_(objc.NSURL url) { + final _ret = + _objc_msgSend_3(_class_NSBundle, _sel_bundleWithURL_, url.pointer); + return _ret.address == 0 + ? null + : NSBundle.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSTimer1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + NSBundle? initWithURL_(objc.NSURL url) { + final _ret = _objc_msgSend_3(this.pointer, _sel_initWithURL_, url.pointer); + return _ret.address == 0 + ? null + : NSBundle.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSTimer1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static NSBundle bundleForClass_(objc.NSObject aClass) { + final _ret = + _objc_msgSend_4(_class_NSBundle, _sel_bundleForClass_, aClass.pointer); + return NSBundle.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSTimer1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSBundle? bundleWithIdentifier_(objc.NSString identifier) { + final _ret = _objc_msgSend_5( + _class_NSBundle, _sel_bundleWithIdentifier_, identifier.pointer); + return _ret.address == 0 + ? null + : NSBundle.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSTimer1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSArray getAllBundles() { + final _ret = _objc_msgSend_6(_class_NSBundle, _sel_allBundles); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } -} - -void _ObjCBlock_ffiVoid_NSTimer_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSTimer_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSTimer_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSTimer_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSTimer_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSTimer_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSTimer_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSTimer_closureRegistry[block.ref.target.address]!(arg0); -class ObjCBlock_ffiVoid_NSTimer extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSTimer._(ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSTimer castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSTimer._(pointer, lib, - retain: retain, release: release); + static objc.NSArray getAllFrameworks() { + final _ret = _objc_msgSend_6(_class_NSBundle, _sel_allFrameworks); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSTimer.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0)>> - ptr) - : this._( - lib - ._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSTimer_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSTimer.fromFunction( - SwiftLibrary lib, void Function(NSTimer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSTimer_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSTimer_registerClosure( - (ffi.Pointer arg0) => - fn(NSTimer._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSTimer.listener( - SwiftLibrary lib, void Function(NSTimer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSTimer_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSTimer_registerClosure( - (ffi.Pointer arg0) => - fn(NSTimer._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; - - void call(NSTimer arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0._id); -} - -class NSConnection extends NSObject { - NSConnection._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSConnection] that points to the same underlying object as [other]. - static NSConnection castFrom(T other) { - return NSConnection._(other._id, other._lib, retain: true, release: true); + bool load() { + return _objc_msgSend_7(this.pointer, _sel_load); } - /// Returns a [NSConnection] that wraps the given raw object pointer. - static NSConnection castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSConnection._(other, lib, retain: retain, release: release); + bool get loaded { + return _objc_msgSend_7(this.pointer, _sel_isLoaded); } - /// Returns whether [obj] is an instance of [NSConnection]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSConnection1); + bool unload() { + return _objc_msgSend_7(this.pointer, _sel_unload); } - NSDictionary get statistics { - final _ret = _lib._objc_msgSend_181(_id, _lib._sel_statistics1); - return NSDictionary._(_ret, _lib, retain: true, release: true); + bool preflightAndReturnError_( + ffi.Pointer> error) { + return _objc_msgSend_8(this.pointer, _sel_preflightAndReturnError_, error); } - static NSArray allConnections(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSConnection1, _lib._sel_allConnections1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool loadAndReturnError_(ffi.Pointer> error) { + return _objc_msgSend_8(this.pointer, _sel_loadAndReturnError_, error); } - static NSConnection defaultConnection(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_572( - _lib._class_NSConnection1, _lib._sel_defaultConnection1); - return NSConnection._(_ret, _lib, retain: true, release: true); + objc.NSURL get bundleURL { + final _ret = _objc_msgSend_9(this.pointer, _sel_bundleURL); + return objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static NSConnection? connectionWithRegisteredName_host_( - SwiftLibrary _lib, NSString name, NSString? hostName) { - final _ret = _lib._objc_msgSend_573( - _lib._class_NSConnection1, - _lib._sel_connectionWithRegisteredName_host_1, - name._id, - hostName?._id ?? ffi.nullptr); + objc.NSURL? get resourceURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_resourceURL); return _ret.address == 0 ? null - : NSConnection._(_ret, _lib, retain: true, release: true); + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static NSConnection? connectionWithRegisteredName_host_usingNameServer_( - SwiftLibrary _lib, - NSString name, - NSString? hostName, - NSPortNameServer server) { - final _ret = _lib._objc_msgSend_578( - _lib._class_NSConnection1, - _lib._sel_connectionWithRegisteredName_host_usingNameServer_1, - name._id, - hostName?._id ?? ffi.nullptr, - server._id); + objc.NSURL? get executableURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_executableURL); return _ret.address == 0 ? null - : NSConnection._(_ret, _lib, retain: true, release: true); + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static NSDistantObject? rootProxyForConnectionWithRegisteredName_host_( - SwiftLibrary _lib, NSString name, NSString? hostName) { - final _ret = _lib._objc_msgSend_583( - _lib._class_NSConnection1, - _lib._sel_rootProxyForConnectionWithRegisteredName_host_1, - name._id, - hostName?._id ?? ffi.nullptr); + objc.NSURL? URLForAuxiliaryExecutable_(objc.NSString executableName) { + final _ret = _objc_msgSend_11( + this.pointer, _sel_URLForAuxiliaryExecutable_, executableName.pointer); return _ret.address == 0 ? null - : NSDistantObject._(_ret, _lib, retain: true, release: true); + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static NSDistantObject? - rootProxyForConnectionWithRegisteredName_host_usingNameServer_( - SwiftLibrary _lib, - NSString name, - NSString? hostName, - NSPortNameServer server) { - final _ret = _lib._objc_msgSend_584( - _lib._class_NSConnection1, - _lib._sel_rootProxyForConnectionWithRegisteredName_host_usingNameServer_1, - name._id, - hostName?._id ?? ffi.nullptr, - server._id); + objc.NSURL? get privateFrameworksURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_privateFrameworksURL); return _ret.address == 0 ? null - : NSDistantObject._(_ret, _lib, retain: true, release: true); + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static NSConnection? serviceConnectionWithName_rootObject_usingNameServer_( - SwiftLibrary _lib, - NSString name, - NSObject root, - NSPortNameServer server) { - final _ret = _lib._objc_msgSend_585( - _lib._class_NSConnection1, - _lib._sel_serviceConnectionWithName_rootObject_usingNameServer_1, - name._id, - root._id, - server._id); + objc.NSURL? get sharedFrameworksURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_sharedFrameworksURL); return _ret.address == 0 ? null - : NSConnection._(_ret, _lib, retain: true, release: true); + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static NSConnection? serviceConnectionWithName_rootObject_( - SwiftLibrary _lib, NSString name, NSObject root) { - final _ret = _lib._objc_msgSend_586(_lib._class_NSConnection1, - _lib._sel_serviceConnectionWithName_rootObject_1, name._id, root._id); + objc.NSURL? get sharedSupportURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_sharedSupportURL); return _ret.address == 0 ? null - : NSConnection._(_ret, _lib, retain: true, release: true); - } - - double get requestTimeout { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_requestTimeout1) - : _lib._objc_msgSend_165(_id, _lib._sel_requestTimeout1); - } - - set requestTimeout(double value) { - return _lib._objc_msgSend_542(_id, _lib._sel_setRequestTimeout_1, value); - } - - double get replyTimeout { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_replyTimeout1) - : _lib._objc_msgSend_165(_id, _lib._sel_replyTimeout1); + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - set replyTimeout(double value) { - return _lib._objc_msgSend_542(_id, _lib._sel_setReplyTimeout_1, value); - } - - NSObject? get rootObject { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_rootObject1); + objc.NSURL? get builtInPlugInsURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_builtInPlugInsURL); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - set rootObject(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setRootObject_1, value?._id ?? ffi.nullptr); + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); + objc.NSURL? get appStoreReceiptURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_appStoreReceiptURL); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); - } - - bool get independentConversationQueueing { - return _lib._objc_msgSend_12( - _id, _lib._sel_independentConversationQueueing1); - } - - set independentConversationQueueing(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setIndependentConversationQueueing_1, value); - } - - bool get valid { - return _lib._objc_msgSend_12(_id, _lib._sel_isValid1); + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - NSDistantObject get rootProxy { - final _ret = _lib._objc_msgSend_587(_id, _lib._sel_rootProxy1); - return NSDistantObject._(_ret, _lib, retain: true, release: true); - } - - void invalidate() { - _lib._objc_msgSend_1(_id, _lib._sel_invalidate1); - } - - void addRequestMode_(NSString rmode) { - _lib._objc_msgSend_247(_id, _lib._sel_addRequestMode_1, rmode._id); - } - - void removeRequestMode_(NSString rmode) { - _lib._objc_msgSend_247(_id, _lib._sel_removeRequestMode_1, rmode._id); + objc.NSString get bundlePath { + final _ret = _objc_msgSend_12(this.pointer, _sel_bundlePath); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSArray get requestModes { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_requestModes1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - bool registerName_(NSString? name) { - return _lib._objc_msgSend_588( - _id, _lib._sel_registerName_1, name?._id ?? ffi.nullptr); - } - - bool registerName_withNameServer_(NSString? name, NSPortNameServer server) { - return _lib._objc_msgSend_589(_id, _lib._sel_registerName_withNameServer_1, - name?._id ?? ffi.nullptr, server._id); - } - - static NSConnection? connectionWithReceivePort_sendPort_( - SwiftLibrary _lib, NSPort? receivePort, NSPort? sendPort) { - final _ret = _lib._objc_msgSend_590( - _lib._class_NSConnection1, - _lib._sel_connectionWithReceivePort_sendPort_1, - receivePort?._id ?? ffi.nullptr, - sendPort?._id ?? ffi.nullptr); + objc.NSString? get resourcePath { + final _ret = _objc_msgSend_13(this.pointer, _sel_resourcePath); return _ret.address == 0 ? null - : NSConnection._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject? currentConversation(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_17( - _lib._class_NSConnection1, _lib._sel_currentConversation1); + objc.NSString? get executablePath { + final _ret = _objc_msgSend_13(this.pointer, _sel_executablePath); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSConnection? initWithReceivePort_sendPort_( - NSPort? receivePort, NSPort? sendPort) { - final _ret = _lib._objc_msgSend_590( - _id, - _lib._sel_initWithReceivePort_sendPort_1, - receivePort?._id ?? ffi.nullptr, - sendPort?._id ?? ffi.nullptr); + objc.NSString? pathForAuxiliaryExecutable_(objc.NSString executableName) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_pathForAuxiliaryExecutable_, executableName.pointer); return _ret.address == 0 ? null - : NSConnection._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSPort get sendPort { - final _ret = _lib._objc_msgSend_553(_id, _lib._sel_sendPort1); - return NSPort._(_ret, _lib, retain: true, release: true); + objc.NSString? get privateFrameworksPath { + final _ret = _objc_msgSend_13(this.pointer, _sel_privateFrameworksPath); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSPort get receivePort { - final _ret = _lib._objc_msgSend_553(_id, _lib._sel_receivePort1); - return NSPort._(_ret, _lib, retain: true, release: true); + objc.NSString? get sharedFrameworksPath { + final _ret = _objc_msgSend_13(this.pointer, _sel_sharedFrameworksPath); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void enableMultipleThreads() { - _lib._objc_msgSend_1(_id, _lib._sel_enableMultipleThreads1); + objc.NSString? get sharedSupportPath { + final _ret = _objc_msgSend_13(this.pointer, _sel_sharedSupportPath); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool get multipleThreadsEnabled { - return _lib._objc_msgSend_12(_id, _lib._sel_multipleThreadsEnabled1); + objc.NSString? get builtInPlugInsPath { + final _ret = _objc_msgSend_13(this.pointer, _sel_builtInPlugInsPath); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void addRunLoop_(NSRunLoop runloop) { - _lib._objc_msgSend_591(_id, _lib._sel_addRunLoop_1, runloop._id); + static objc.NSURL? URLForResource_withExtension_subdirectory_inBundleWithURL_( + objc.NSString? name, + objc.NSString? ext, + objc.NSString? subpath, + objc.NSURL bundleURL) { + final _ret = _objc_msgSend_15( + _class_NSBundle, + _sel_URLForResource_withExtension_subdirectory_inBundleWithURL_, + name?.pointer ?? ffi.nullptr, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr, + bundleURL.pointer); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - void removeRunLoop_(NSRunLoop runloop) { - _lib._objc_msgSend_591(_id, _lib._sel_removeRunLoop_1, runloop._id); + static objc.NSArray? + URLsForResourcesWithExtension_subdirectory_inBundleWithURL_( + objc.NSString? ext, objc.NSString? subpath, objc.NSURL bundleURL) { + final _ret = _objc_msgSend_16( + _class_NSBundle, + _sel_URLsForResourcesWithExtension_subdirectory_inBundleWithURL_, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr, + bundleURL.pointer); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void runInNewThread() { - _lib._objc_msgSend_1(_id, _lib._sel_runInNewThread1); + objc.NSURL? URLForResource_withExtension_( + objc.NSString? name, objc.NSString? ext) { + final _ret = _objc_msgSend_17( + this.pointer, + _sel_URLForResource_withExtension_, + name?.pointer ?? ffi.nullptr, + ext?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - NSArray get remoteObjects { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_remoteObjects1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSURL? URLForResource_withExtension_subdirectory_( + objc.NSString? name, objc.NSString? ext, objc.NSString? subpath) { + final _ret = _objc_msgSend_18( + this.pointer, + _sel_URLForResource_withExtension_subdirectory_, + name?.pointer ?? ffi.nullptr, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - NSArray get localObjects { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_localObjects1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSURL? URLForResource_withExtension_subdirectory_localization_( + objc.NSString? name, + objc.NSString? ext, + objc.NSString? subpath, + objc.NSString? localizationName) { + final _ret = _objc_msgSend_19( + this.pointer, + _sel_URLForResource_withExtension_subdirectory_localization_, + name?.pointer ?? ffi.nullptr, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr, + localizationName?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - void dispatchWithComponents_(NSArray components) { - _lib._objc_msgSend_472( - _id, _lib._sel_dispatchWithComponents_1, components._id); + objc.NSArray? URLsForResourcesWithExtension_subdirectory_( + objc.NSString? ext, objc.NSString? subpath) { + final _ret = _objc_msgSend_20( + this.pointer, + _sel_URLsForResourcesWithExtension_subdirectory_, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - @override - NSConnection init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSConnection._(_ret, _lib, retain: true, release: true); + objc.NSArray? URLsForResourcesWithExtension_subdirectory_localization_( + objc.NSString? ext, + objc.NSString? subpath, + objc.NSString? localizationName) { + final _ret = _objc_msgSend_21( + this.pointer, + _sel_URLsForResourcesWithExtension_subdirectory_localization_, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr, + localizationName?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSConnection new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSConnection1, _lib._sel_new1); - return NSConnection._(_ret, _lib, retain: false, release: true); + static objc.NSString? pathForResource_ofType_inDirectory_( + objc.NSString? name, objc.NSString? ext, objc.NSString bundlePath) { + final _ret = _objc_msgSend_22( + _class_NSBundle, + _sel_pathForResource_ofType_inDirectory_, + name?.pointer ?? ffi.nullptr, + ext?.pointer ?? ffi.nullptr, + bundlePath.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSConnection allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSConnection1, _lib._sel_allocWithZone_1, zone); - return NSConnection._(_ret, _lib, retain: false, release: true); + static objc.NSArray pathsForResourcesOfType_inDirectory_( + objc.NSString? ext, objc.NSString bundlePath) { + final _ret = _objc_msgSend_23( + _class_NSBundle, + _sel_pathsForResourcesOfType_inDirectory_, + ext?.pointer ?? ffi.nullptr, + bundlePath.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSConnection alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSConnection1, _lib._sel_alloc1); - return NSConnection._(_ret, _lib, retain: false, release: true); + objc.NSString? pathForResource_ofType_( + objc.NSString? name, objc.NSString? ext) { + final _ret = _objc_msgSend_24(this.pointer, _sel_pathForResource_ofType_, + name?.pointer ?? ffi.nullptr, ext?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSConnection1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + objc.NSString? pathForResource_ofType_inDirectory_forLocalization_( + objc.NSString? name, + objc.NSString? ext, + objc.NSString? subpath, + objc.NSString? localizationName) { + final _ret = _objc_msgSend_25( + this.pointer, + _sel_pathForResource_ofType_inDirectory_forLocalization_, + name?.pointer ?? ffi.nullptr, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr, + localizationName?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSConnection1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + objc.NSArray pathsForResourcesOfType_inDirectory_forLocalization_( + objc.NSString? ext, + objc.NSString? subpath, + objc.NSString? localizationName) { + final _ret = _objc_msgSend_26( + this.pointer, + _sel_pathsForResourcesOfType_inDirectory_forLocalization_, + ext?.pointer ?? ffi.nullptr, + subpath?.pointer ?? ffi.nullptr, + localizationName?.pointer ?? ffi.nullptr); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSConnection1, _lib._sel_accessInstanceVariablesDirectly1); + objc.NSString localizedStringForKey_value_table_( + objc.NSString key, objc.NSString? value, objc.NSString? tableName) { + final _ret = _objc_msgSend_27( + this.pointer, + _sel_localizedStringForKey_value_table_, + key.pointer, + value?.pointer ?? ffi.nullptr, + tableName?.pointer ?? ffi.nullptr); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSConnection1, _lib._sel_useStoredAccessor1); + NSAttributedString localizedAttributedStringForKey_value_table_( + objc.NSString key, objc.NSString? value, objc.NSString? tableName) { + final _ret = _objc_msgSend_64( + this.pointer, + _sel_localizedAttributedStringForKey_value_table_, + key.pointer, + value?.pointer ?? ffi.nullptr, + tableName?.pointer ?? ffi.nullptr); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSConnection1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSString? get bundleIdentifier { + final _ret = _objc_msgSend_13(this.pointer, _sel_bundleIdentifier); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSConnection1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + objc.NSDictionary? get infoDictionary { + final _ret = _objc_msgSend_65(this.pointer, _sel_infoDictionary); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSConnection1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSDictionary? get localizedInfoDictionary { + final _ret = _objc_msgSend_65(this.pointer, _sel_localizedInfoDictionary); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSConnection1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSObject? objectForInfoDictionaryKey_(objc.NSString key) { + final _ret = _objc_msgSend_2( + this.pointer, _sel_objectForInfoDictionaryKey_, key.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSConnection1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSObject? classNamed_(objc.NSString className) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_classNamed_, className.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } -} -class NSPortNameServer extends NSObject { - NSPortNameServer._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + objc.NSObject? get principalClass { + final _ret = _objc_msgSend_66(this.pointer, _sel_principalClass); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a [NSPortNameServer] that points to the same underlying object as [other]. - static NSPortNameServer castFrom(T other) { - return NSPortNameServer._(other._id, other._lib, - retain: true, release: true); + objc.NSArray get preferredLocalizations { + final _ret = _objc_msgSend_6(this.pointer, _sel_preferredLocalizations); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSPortNameServer] that wraps the given raw object pointer. - static NSPortNameServer castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSPortNameServer._(other, lib, retain: retain, release: release); + objc.NSArray get localizations { + final _ret = _objc_msgSend_6(this.pointer, _sel_localizations); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSPortNameServer]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSPortNameServer1); + objc.NSString? get developmentLocalization { + final _ret = _objc_msgSend_13(this.pointer, _sel_developmentLocalization); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSPortNameServer systemDefaultPortNameServer(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_574( - _lib._class_NSPortNameServer1, _lib._sel_systemDefaultPortNameServer1); - return NSPortNameServer._(_ret, _lib, retain: true, release: true); + static objc.NSArray preferredLocalizationsFromArray_( + objc.NSArray localizationsArray) { + final _ret = _objc_msgSend_67(_class_NSBundle, + _sel_preferredLocalizationsFromArray_, localizationsArray.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSPort? portForName_(NSString name) { - final _ret = _lib._objc_msgSend_575(_id, _lib._sel_portForName_1, name._id); - return _ret.address == 0 - ? null - : NSPort._(_ret, _lib, retain: true, release: true); + static objc.NSArray preferredLocalizationsFromArray_forPreferences_( + objc.NSArray localizationsArray, objc.NSArray? preferencesArray) { + final _ret = _objc_msgSend_68( + _class_NSBundle, + _sel_preferredLocalizationsFromArray_forPreferences_, + localizationsArray.pointer, + preferencesArray?.pointer ?? ffi.nullptr); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSPort? portForName_host_(NSString name, NSString? host) { - final _ret = _lib._objc_msgSend_576( - _id, _lib._sel_portForName_host_1, name._id, host?._id ?? ffi.nullptr); + objc.NSArray? get executableArchitectures { + final _ret = _objc_msgSend_69(this.pointer, _sel_executableArchitectures); return _ret.address == 0 ? null - : NSPort._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool registerPort_name_(NSPort port, NSString name) { - return _lib._objc_msgSend_577( - _id, _lib._sel_registerPort_name_1, port._id, name._id); + void setPreservationPriority_forTags_(double priority, objc.NSSet tags) { + _objc_msgSend_70(this.pointer, _sel_setPreservationPriority_forTags_, + priority, tags.pointer); } - bool removePortForName_(NSString name) { - return _lib._objc_msgSend_64(_id, _lib._sel_removePortForName_1, name._id); + double preservationPriorityForTag_(objc.NSString tag) { + return objc.useMsgSendVariants + ? _objc_msgSend_71Fpret( + this.pointer, _sel_preservationPriorityForTag_, tag.pointer) + : _objc_msgSend_71( + this.pointer, _sel_preservationPriorityForTag_, tag.pointer); } @override - NSPortNameServer init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSPortNameServer._(_ret, _lib, retain: true, release: true); + NSBundle init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSBundle.castFromPointer(_ret, retain: true, release: true); } - static NSPortNameServer new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPortNameServer1, _lib._sel_new1); - return NSPortNameServer._(_ret, _lib, retain: false, release: true); + static NSBundle new1() { + final _ret = _objc_msgSend_40(_class_NSBundle, _sel_new); + return NSBundle.castFromPointer(_ret, retain: false, release: true); } - static NSPortNameServer allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSPortNameServer1, _lib._sel_allocWithZone_1, zone); - return NSPortNameServer._(_ret, _lib, retain: false, release: true); + static NSBundle allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSBundle, _sel_allocWithZone_, zone); + return NSBundle.castFromPointer(_ret, retain: false, release: true); } - static NSPortNameServer alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPortNameServer1, _lib._sel_alloc1); - return NSPortNameServer._(_ret, _lib, retain: false, release: true); + static NSBundle alloc() { + final _ret = _objc_msgSend_40(_class_NSBundle, _sel_alloc); + return NSBundle.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSPortNameServer1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSBundle, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSPortNameServer1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSBundle, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSPortNameServer1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSBundle, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPortNameServer1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSBundle, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSPortNameServer1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSBundle, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSPortNameServer1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSBundle, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSPortNameServer1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSPortNameServer1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSBundle, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSBundle, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSBundle, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSBundle = objc.getClass("NSBundle"); +late final _sel_mainBundle = objc.registerName("mainBundle"); +final _objc_msgSend_1 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +typedef instancetype = ffi.Pointer; +typedef Dartinstancetype = objc.NSObject; +late final _sel_bundleWithPath_ = objc.registerName("bundleWithPath:"); +final _objc_msgSend_2 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithPath_ = objc.registerName("initWithPath:"); +late final _sel_bundleWithURL_ = objc.registerName("bundleWithURL:"); +final _objc_msgSend_3 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithURL_ = objc.registerName("initWithURL:"); +late final _sel_bundleForClass_ = objc.registerName("bundleForClass:"); +final _objc_msgSend_4 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_bundleWithIdentifier_ = + objc.registerName("bundleWithIdentifier:"); +final _objc_msgSend_5 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_allBundles = objc.registerName("allBundles"); +final _objc_msgSend_6 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_allFrameworks = objc.registerName("allFrameworks"); +late final _sel_load = objc.registerName("load"); +final _objc_msgSend_7 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isLoaded = objc.registerName("isLoaded"); +late final _sel_unload = objc.registerName("unload"); +late final _sel_preflightAndReturnError_ = + objc.registerName("preflightAndReturnError:"); +final _objc_msgSend_8 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_loadAndReturnError_ = objc.registerName("loadAndReturnError:"); +late final _sel_bundleURL = objc.registerName("bundleURL"); +final _objc_msgSend_9 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_resourceURL = objc.registerName("resourceURL"); +final _objc_msgSend_10 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_executableURL = objc.registerName("executableURL"); +late final _sel_URLForAuxiliaryExecutable_ = + objc.registerName("URLForAuxiliaryExecutable:"); +final _objc_msgSend_11 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_privateFrameworksURL = + objc.registerName("privateFrameworksURL"); +late final _sel_sharedFrameworksURL = objc.registerName("sharedFrameworksURL"); +late final _sel_sharedSupportURL = objc.registerName("sharedSupportURL"); +late final _sel_builtInPlugInsURL = objc.registerName("builtInPlugInsURL"); +late final _sel_appStoreReceiptURL = objc.registerName("appStoreReceiptURL"); +late final _sel_bundlePath = objc.registerName("bundlePath"); +final _objc_msgSend_12 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_resourcePath = objc.registerName("resourcePath"); +final _objc_msgSend_13 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_executablePath = objc.registerName("executablePath"); +late final _sel_pathForAuxiliaryExecutable_ = + objc.registerName("pathForAuxiliaryExecutable:"); +final _objc_msgSend_14 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_privateFrameworksPath = + objc.registerName("privateFrameworksPath"); +late final _sel_sharedFrameworksPath = + objc.registerName("sharedFrameworksPath"); +late final _sel_sharedSupportPath = objc.registerName("sharedSupportPath"); +late final _sel_builtInPlugInsPath = objc.registerName("builtInPlugInsPath"); +late final _sel_URLForResource_withExtension_subdirectory_inBundleWithURL_ = + objc.registerName( + "URLForResource:withExtension:subdirectory:inBundleWithURL:"); +final _objc_msgSend_15 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_URLsForResourcesWithExtension_subdirectory_inBundleWithURL_ = + objc.registerName( + "URLsForResourcesWithExtension:subdirectory:inBundleWithURL:"); +final _objc_msgSend_16 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_URLForResource_withExtension_ = + objc.registerName("URLForResource:withExtension:"); +final _objc_msgSend_17 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_URLForResource_withExtension_subdirectory_ = + objc.registerName("URLForResource:withExtension:subdirectory:"); +final _objc_msgSend_18 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_URLForResource_withExtension_subdirectory_localization_ = objc + .registerName("URLForResource:withExtension:subdirectory:localization:"); +final _objc_msgSend_19 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_URLsForResourcesWithExtension_subdirectory_ = + objc.registerName("URLsForResourcesWithExtension:subdirectory:"); +final _objc_msgSend_20 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_URLsForResourcesWithExtension_subdirectory_localization_ = objc + .registerName("URLsForResourcesWithExtension:subdirectory:localization:"); +final _objc_msgSend_21 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_pathForResource_ofType_inDirectory_ = + objc.registerName("pathForResource:ofType:inDirectory:"); +final _objc_msgSend_22 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_pathsForResourcesOfType_inDirectory_ = + objc.registerName("pathsForResourcesOfType:inDirectory:"); +final _objc_msgSend_23 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_pathForResource_ofType_ = + objc.registerName("pathForResource:ofType:"); +final _objc_msgSend_24 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_pathForResource_ofType_inDirectory_forLocalization_ = + objc.registerName("pathForResource:ofType:inDirectory:forLocalization:"); +final _objc_msgSend_25 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_pathsForResourcesOfType_inDirectory_forLocalization_ = + objc.registerName("pathsForResourcesOfType:inDirectory:forLocalization:"); +final _objc_msgSend_26 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_localizedStringForKey_value_table_ = + objc.registerName("localizedStringForKey:value:table:"); +final _objc_msgSend_27 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSAttributedString extends objc.NSObject { + NSAttributedString._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPortNameServer1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} + /// Constructs a [NSAttributedString] that points to the same underlying object as [other]. + NSAttributedString.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); -class NSDistantObject extends NSProxy { - NSDistantObject._(ffi.Pointer id, SwiftLibrary lib, + /// Constructs a [NSAttributedString] that wraps the given raw object pointer. + NSAttributedString.castFromPointer(ffi.Pointer other, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : this._(other, retain: retain, release: release); - /// Returns a [NSDistantObject] that points to the same underlying object as [other]. - static NSDistantObject castFrom(T other) { - return NSDistantObject._(other._id, other._lib, - retain: true, release: true); + /// Returns whether [obj] is an instance of [NSAttributedString]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSAttributedString); } - /// Returns a [NSDistantObject] that wraps the given raw object pointer. - static NSDistantObject castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSDistantObject._(other, lib, retain: retain, release: release); + objc.NSString get string { + final _ret = _objc_msgSend_12(this.pointer, _sel_string); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSDistantObject]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSDistantObject1); + objc.NSDictionary attributesAtIndex_effectiveRange_( + int location, ffi.Pointer<_NSRange> range) { + final _ret = _objc_msgSend_28( + this.pointer, _sel_attributesAtIndex_effectiveRange_, location, range); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSObject? proxyWithTarget_connection_( - SwiftLibrary _lib, NSObject target, NSConnection connection) { - final _ret = _lib._objc_msgSend_580(_lib._class_NSDistantObject1, - _lib._sel_proxyWithTarget_connection_1, target._id, connection._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + int get length { + return _objc_msgSend_29(this.pointer, _sel_length); } - NSDistantObject? initWithTarget_connection_( - NSObject target, NSConnection connection) { - final _ret = _lib._objc_msgSend_580( - _id, _lib._sel_initWithTarget_connection_1, target._id, connection._id); + objc.NSObject? attribute_atIndex_effectiveRange_( + objc.NSString attrName, int location, ffi.Pointer<_NSRange> range) { + final _ret = _objc_msgSend_30( + this.pointer, + _sel_attribute_atIndex_effectiveRange_, + attrName.pointer, + location, + range); return _ret.address == 0 ? null - : NSDistantObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject proxyWithLocal_connection_( - SwiftLibrary _lib, NSObject target, NSConnection connection) { - final _ret = _lib._objc_msgSend_581(_lib._class_NSDistantObject1, - _lib._sel_proxyWithLocal_connection_1, target._id, connection._id); - return NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSDistantObject initWithLocal_connection_( - NSObject target, NSConnection connection) { - final _ret = _lib._objc_msgSend_581( - _id, _lib._sel_initWithLocal_connection_1, target._id, connection._id); - return NSDistantObject._(_ret, _lib, retain: true, release: true); + NSAttributedString attributedSubstringFromRange_(_NSRange range) { + final _ret = _objc_msgSend_31( + this.pointer, _sel_attributedSubstringFromRange_, range); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSDistantObject? initWithCoder_(NSCoder inCoder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, inCoder._id); + objc.NSDictionary attributesAtIndex_longestEffectiveRange_inRange_( + int location, ffi.Pointer<_NSRange> range, _NSRange rangeLimit) { + final _ret = _objc_msgSend_32( + this.pointer, + _sel_attributesAtIndex_longestEffectiveRange_inRange_, + location, + range, + rangeLimit); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + objc.NSObject? attribute_atIndex_longestEffectiveRange_inRange_( + objc.NSString attrName, + int location, + ffi.Pointer<_NSRange> range, + _NSRange rangeLimit) { + final _ret = _objc_msgSend_33( + this.pointer, + _sel_attribute_atIndex_longestEffectiveRange_inRange_, + attrName.pointer, + location, + range, + rangeLimit); return _ret.address == 0 ? null - : NSDistantObject._(_ret, _lib, retain: true, release: true); - } - - void setProtocolForProxy_(Protocol? proto) { - _lib._objc_msgSend_582( - _id, _lib._sel_setProtocolForProxy_1, proto?._id ?? ffi.nullptr); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSConnection get connectionForProxy { - final _ret = _lib._objc_msgSend_572(_id, _lib._sel_connectionForProxy1); - return NSConnection._(_ret, _lib, retain: true, release: true); + bool isEqualToAttributedString_(NSAttributedString other) { + return _objc_msgSend_34( + this.pointer, _sel_isEqualToAttributedString_, other.pointer); } - static NSObject alloc(SwiftLibrary _lib) { + NSAttributedString initWithString_(objc.NSString str) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSDistantObject1, _lib._sel_alloc1); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static bool respondsToSelector_( - SwiftLibrary _lib, ffi.Pointer aSelector) { - return _lib._objc_msgSend_4(_lib._class_NSDistantObject1, - _lib._sel_respondsToSelector_1, aSelector); - } -} - -class NSProxy extends _ObjCWrapper { - NSProxy._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSProxy] that points to the same underlying object as [other]. - static NSProxy castFrom(T other) { - return NSProxy._(other._id, other._lib, retain: true, release: true); + _objc_msgSend_35(this.pointer, _sel_initWithString_, str.pointer); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - /// Returns a [NSProxy] that wraps the given raw object pointer. - static NSProxy castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSProxy._(other, lib, retain: retain, release: release); + NSAttributedString initWithString_attributes_( + objc.NSString str, objc.NSDictionary? attrs) { + final _ret = _objc_msgSend_36(this.pointer, _sel_initWithString_attributes_, + str.pointer, attrs?.pointer ?? ffi.nullptr); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSProxy]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSProxy1); + NSAttributedString initWithAttributedString_(NSAttributedString attrStr) { + final _ret = _objc_msgSend_37( + this.pointer, _sel_initWithAttributedString_, attrStr.pointer); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static NSObject alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSProxy1, _lib._sel_alloc1); - return NSObject._(_ret, _lib, retain: false, release: true); + void enumerateAttributesInRange_options_usingBlock_(_NSRange enumerationRange, + int opts, ObjCBlock_ffiVoid_NSDictionary_NSRange_bool block) { + _objc_msgSend_38( + this.pointer, + _sel_enumerateAttributesInRange_options_usingBlock_, + enumerationRange, + opts, + block.pointer); } - static NSObject allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSProxy1, _lib._sel_allocWithZone_1, zone); - return NSObject._(_ret, _lib, retain: false, release: true); + void enumerateAttribute_inRange_options_usingBlock_( + objc.NSString attrName, + _NSRange enumerationRange, + int opts, + ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool block) { + _objc_msgSend_39( + this.pointer, + _sel_enumerateAttribute_inRange_options_usingBlock_, + attrName.pointer, + enumerationRange, + opts, + block.pointer); } - static NSObject class1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSProxy1, _lib._sel_class1); - return NSObject._(_ret, _lib, retain: true, release: true); + NSAttributedString? + initWithContentsOfMarkdownFileAtURL_options_baseURL_error_( + objc.NSURL markdownFile, + NSAttributedStringMarkdownParsingOptions? options, + objc.NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _objc_msgSend_53( + this.pointer, + _sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_, + markdownFile.pointer, + options?.pointer ?? ffi.nullptr, + baseURL?.pointer ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : NSAttributedString.castFromPointer(_ret, retain: true, release: true); } - void forwardInvocation_(NSInvocation invocation) { - _lib._objc_msgSend_421(_id, _lib._sel_forwardInvocation_1, invocation._id); + NSAttributedString? initWithMarkdown_options_baseURL_error_( + objc.NSData markdown, + NSAttributedStringMarkdownParsingOptions? options, + objc.NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _objc_msgSend_54( + this.pointer, + _sel_initWithMarkdown_options_baseURL_error_, + markdown.pointer, + options?.pointer ?? ffi.nullptr, + baseURL?.pointer ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : NSAttributedString.castFromPointer(_ret, retain: true, release: true); } - NSMethodSignature? methodSignatureForSelector_(ffi.Pointer sel) { - final _ret = _lib._objc_msgSend_579( - _id, _lib._sel_methodSignatureForSelector_1, sel); + NSAttributedString? initWithMarkdownString_options_baseURL_error_( + objc.NSString markdownString, + NSAttributedStringMarkdownParsingOptions? options, + objc.NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _objc_msgSend_55( + this.pointer, + _sel_initWithMarkdownString_options_baseURL_error_, + markdownString.pointer, + options?.pointer ?? ffi.nullptr, + baseURL?.pointer ?? ffi.nullptr, + error); return _ret.address == 0 ? null - : NSMethodSignature._(_ret, _lib, retain: true, release: true); + : NSAttributedString.castFromPointer(_ret, retain: true, release: true); } - void dealloc() { - _lib._objc_msgSend_1(_id, _lib._sel_dealloc1); + NSAttributedString initWithFormat_options_locale_( + NSAttributedString format, int options, objc.NSLocale? locale) { + final _ret = _objc_msgSend_56( + this.pointer, + _sel_initWithFormat_options_locale_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - void finalize() { - _lib._objc_msgSend_1(_id, _lib._sel_finalize1); + NSAttributedString initWithFormat_options_locale_arguments_( + NSAttributedString format, + int options, + objc.NSLocale? locale, + ffi.Pointer<__va_list_tag> arguments) { + final _ret = _objc_msgSend_57( + this.pointer, + _sel_initWithFormat_options_locale_arguments_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr, + arguments); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSAttributedString localizedAttributedStringWithFormat_( + NSAttributedString format) { + final _ret = _objc_msgSend_37(_class_NSAttributedString, + _sel_localizedAttributedStringWithFormat_, format.pointer); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSString get debugDescription { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_debugDescription1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSAttributedString localizedAttributedStringWithFormat_options_( + NSAttributedString format, int options) { + final _ret = _objc_msgSend_58( + _class_NSAttributedString, + _sel_localizedAttributedStringWithFormat_options_, + format.pointer, + options); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static bool respondsToSelector_( - SwiftLibrary _lib, ffi.Pointer aSelector) { - return _lib._objc_msgSend_4( - _lib._class_NSProxy1, _lib._sel_respondsToSelector_1, aSelector); + NSAttributedString initWithFormat_options_locale_context_( + NSAttributedString format, + int options, + objc.NSLocale? locale, + objc.NSDictionary context) { + final _ret = _objc_msgSend_59( + this.pointer, + _sel_initWithFormat_options_locale_context_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr, + context.pointer); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - bool allowsWeakReference() { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsWeakReference1); + NSAttributedString initWithFormat_options_locale_context_arguments_( + NSAttributedString format, + int options, + objc.NSLocale? locale, + objc.NSDictionary context, + ffi.Pointer<__va_list_tag> arguments) { + final _ret = _objc_msgSend_60( + this.pointer, + _sel_initWithFormat_options_locale_context_arguments_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr, + context.pointer, + arguments); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - bool retainWeakReference() { - return _lib._objc_msgSend_12(_id, _lib._sel_retainWeakReference1); + static NSAttributedString localizedAttributedStringWithFormat_context_( + NSAttributedString format, objc.NSDictionary context) { + final _ret = _objc_msgSend_61( + _class_NSAttributedString, + _sel_localizedAttributedStringWithFormat_context_, + format.pointer, + context.pointer); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } -} - -class NSClassDescription extends NSObject { - NSClassDescription._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSClassDescription] that points to the same underlying object as [other]. - static NSClassDescription castFrom(T other) { - return NSClassDescription._(other._id, other._lib, + static NSAttributedString + localizedAttributedStringWithFormat_options_context_( + NSAttributedString format, int options, objc.NSDictionary context) { + final _ret = _objc_msgSend_62( + _class_NSAttributedString, + _sel_localizedAttributedStringWithFormat_options_context_, + format.pointer, + options, + context.pointer); + return NSAttributedString.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSClassDescription] that wraps the given raw object pointer. - static NSClassDescription castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSClassDescription._(other, lib, retain: retain, release: release); + NSAttributedString attributedStringByInflectingString() { + final _ret = + _objc_msgSend_63(this.pointer, _sel_attributedStringByInflectingString); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSClassDescription]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSClassDescription1); + @override + NSAttributedString init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static void registerClassDescription_forClass_( - SwiftLibrary _lib, NSClassDescription description, NSObject aClass) { - _lib._objc_msgSend_598( - _lib._class_NSClassDescription1, - _lib._sel_registerClassDescription_forClass_1, - description._id, - aClass._id); + static NSAttributedString new1() { + final _ret = _objc_msgSend_40(_class_NSAttributedString, _sel_new); + return NSAttributedString.castFromPointer(_ret, + retain: false, release: true); } - static void invalidateClassDescriptionCache(SwiftLibrary _lib) { - _lib._objc_msgSend_1(_lib._class_NSClassDescription1, - _lib._sel_invalidateClassDescriptionCache1); + static NSAttributedString allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSAttributedString, _sel_allocWithZone_, zone); + return NSAttributedString.castFromPointer(_ret, + retain: false, release: true); } - static NSClassDescription? classDescriptionForClass_( - SwiftLibrary _lib, NSObject aClass) { - final _ret = _lib._objc_msgSend_599(_lib._class_NSClassDescription1, - _lib._sel_classDescriptionForClass_1, aClass._id); - return _ret.address == 0 - ? null - : NSClassDescription._(_ret, _lib, retain: true, release: true); + static NSAttributedString alloc() { + final _ret = _objc_msgSend_40(_class_NSAttributedString, _sel_alloc); + return NSAttributedString.castFromPointer(_ret, + retain: false, release: true); } - @override - NSArray get attributeKeys { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_attributeKeys1); - return NSArray._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSAttributedString, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - @override - NSArray get toOneRelationshipKeys { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_toOneRelationshipKeys1); - return NSArray._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSAttributedString, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - @override - NSArray get toManyRelationshipKeys { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_toManyRelationshipKeys1); - return NSArray._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSAttributedString, _sel_accessInstanceVariablesDirectly); } - @override - NSString? inverseForRelationshipKey_(NSString relationshipKey) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_inverseForRelationshipKey_1, relationshipKey._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSAttributedString, _sel_useStoredAccessor); } - @override - NSClassDescription init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSClassDescription._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSAttributedString, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static NSClassDescription new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSClassDescription1, _lib._sel_new1); - return NSClassDescription._(_ret, _lib, retain: false, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSAttributedString, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static NSClassDescription allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSClassDescription1, _lib._sel_allocWithZone_1, zone); - return NSClassDescription._(_ret, _lib, retain: false, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSAttributedString, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSClassDescription alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSClassDescription1, _lib._sel_alloc1); - return NSClassDescription._(_ret, _lib, retain: false, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSAttributedString, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSClassDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSAttributedString, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSClassDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } +late final _class_NSAttributedString = objc.getClass("NSAttributedString"); +late final _sel_string = objc.registerName("string"); - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSClassDescription1, - _lib._sel_accessInstanceVariablesDirectly1); - } +final class _NSRange extends ffi.Struct { + @ffi.UnsignedLong() + external int location; - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSClassDescription1, _lib._sel_useStoredAccessor1); - } + @ffi.UnsignedLong() + external int length; +} - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSClassDescription1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } +late final _sel_attributesAtIndex_effectiveRange_ = + objc.registerName("attributesAtIndex:effectiveRange:"); +final _objc_msgSend_28 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_NSRange>)>(); +late final _sel_length = objc.registerName("length"); +final _objc_msgSend_29 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_attribute_atIndex_effectiveRange_ = + objc.registerName("attribute:atIndex:effectiveRange:"); +final _objc_msgSend_30 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_NSRange>)>(); +late final _sel_attributedSubstringFromRange_ = + objc.registerName("attributedSubstringFromRange:"); +final _objc_msgSend_31 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_attributesAtIndex_longestEffectiveRange_inRange_ = + objc.registerName("attributesAtIndex:longestEffectiveRange:inRange:"); +final _objc_msgSend_32 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>, + _NSRange)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_NSRange>, + _NSRange)>(); +late final _sel_attribute_atIndex_longestEffectiveRange_inRange_ = + objc.registerName("attribute:atIndex:longestEffectiveRange:inRange:"); +final _objc_msgSend_33 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>, + _NSRange)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_NSRange>, + _NSRange)>(); +late final _sel_isEqualToAttributedString_ = + objc.registerName("isEqualToAttributedString:"); +final _objc_msgSend_34 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithString_ = objc.registerName("initWithString:"); +final _objc_msgSend_35 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithString_attributes_ = + objc.registerName("initWithString:attributes:"); +final _objc_msgSend_36 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithAttributedString_ = + objc.registerName("initWithAttributedString:"); +final _objc_msgSend_37 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSAttributedStringEnumerationOptions { + static const int NSAttributedStringEnumerationReverse = 2; + static const int + NSAttributedStringEnumerationLongestEffectiveRangeNotRequired = 1048576; +} + +void _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + _NSRange arg1, ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer, _NSRange, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistry = , _NSRange, ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_registerClosure( + void Function( + ffi.Pointer, _NSRange, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); + +class ObjCBlock_ffiVoid_NSDictionary_NSRange_bool extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSDictionary_NSRange_bool._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSClassDescription1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSDictionary_NSRange_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSDictionary_NSRange_bool._(pointer, + retain: retain, release: release); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSClassDescription1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSDictionary_NSRange_bool.fromFunctionPointer( + ffi.Pointer< + ffi + .NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + _NSRange arg1, ffi.Pointer arg2)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSDictionary_NSRange_bool.fromFunction( + void Function(objc.NSDictionary, _NSRange, ffi.Pointer) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_registerClosure( + (ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2) => + fn(objc.NSDictionary.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.Pointer? _dartFuncTrampoline; - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSClassDescription1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSDictionary_NSRange_bool.listener( + void Function(objc.NSDictionary, _NSRange, ffi.Pointer) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_registerClosure( + (ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2) => + fn(objc.NSDictionary.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>? _dartFuncListenerTrampoline; - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSClassDescription1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } + void call( + objc.NSDictionary arg0, _NSRange arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>()(pointer, arg0.pointer, arg1, arg2); +} + +late final _sel_enumerateAttributesInRange_options_usingBlock_ = + objc.registerName("enumerateAttributesInRange:options:usingBlock:"); +final _objc_msgSend_38 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + int, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + _NSRange arg1, ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer, _NSRange, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureRegistry = , _NSRange, ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_registerClosure( + void Function( + ffi.Pointer, _NSRange, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); } -class NSScriptObjectSpecifier extends NSObject { - NSScriptObjectSpecifier._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); +void _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); - /// Returns a [NSScriptObjectSpecifier] that points to the same underlying object as [other]. - static NSScriptObjectSpecifier castFrom(T other) { - return NSScriptObjectSpecifier._(other._id, other._lib, - retain: true, release: true); - } +class ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); - /// Returns a [NSScriptObjectSpecifier] that wraps the given raw object pointer. - static NSScriptObjectSpecifier castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSScriptObjectSpecifier._(other, lib, + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool._(pointer, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSScriptObjectSpecifier]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSScriptObjectSpecifier1); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + _NSRange arg1, ffi.Pointer arg2)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - static NSScriptObjectSpecifier? objectSpecifierWithDescriptor_( - SwiftLibrary _lib, NSAppleEventDescriptor descriptor) { - final _ret = _lib._objc_msgSend_624(_lib._class_NSScriptObjectSpecifier1, - _lib._sel_objectSpecifierWithDescriptor_1, descriptor._id); - return _ret.address == 0 - ? null - : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool.fromFunction( + void Function(objc.NSObject?, _NSRange, ffi.Pointer) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_registerClosure( + (ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2) => + fn(arg0.address == 0 ? null : objc.NSObject.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.Pointer? _dartFuncTrampoline; - NSScriptObjectSpecifier initWithContainerSpecifier_key_( - NSScriptObjectSpecifier container, NSString property) { - final _ret = _lib._objc_msgSend_625( - _id, - _lib._sel_initWithContainerSpecifier_key_1, - container._id, - property._id); - return NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); - } + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool.listener( + void Function(objc.NSObject?, _NSRange, ffi.Pointer) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_objcObjCObject_NSRange_bool_registerClosure( + (ffi.Pointer arg0, _NSRange arg1, ffi.Pointer arg2) => + fn(arg0.address == 0 ? null : objc.NSObject.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>? _dartFuncListenerTrampoline; - NSScriptObjectSpecifier - initWithContainerClassDescription_containerSpecifier_key_( - NSScriptClassDescription classDesc, - NSScriptObjectSpecifier? container, - NSString property) { - final _ret = _lib._objc_msgSend_645( - _id, - _lib._sel_initWithContainerClassDescription_containerSpecifier_key_1, - classDesc._id, - container?._id ?? ffi.nullptr, - property._id); - return NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); - } + void call(objc.NSObject? arg0, _NSRange arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1, arg2); +} + +late final _sel_enumerateAttribute_inRange_options_usingBlock_ = + objc.registerName("enumerateAttribute:inRange:options:usingBlock:"); +final _objc_msgSend_39 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + int, + ffi.Pointer)>(); + +class NSAttributedStringMarkdownParsingOptions extends objc.NSObject { + NSAttributedStringMarkdownParsingOptions._( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSAttributedStringMarkdownParsingOptions] that points to the same underlying object as [other]. + NSAttributedStringMarkdownParsingOptions.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSAttributedStringMarkdownParsingOptions] that wraps the given raw object pointer. + NSAttributedStringMarkdownParsingOptions.castFromPointer( + ffi.Pointer other, + {bool retain = false, + bool release = false}) + : this._(other, retain: retain, release: release); - NSScriptObjectSpecifier? initWithCoder_(NSCoder inCoder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, inCoder._id); - return _ret.address == 0 - ? null - : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSAttributedStringMarkdownParsingOptions]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, + _class_NSAttributedStringMarkdownParsingOptions); } - NSScriptObjectSpecifier? get childSpecifier { - final _ret = _lib._objc_msgSend_632(_id, _lib._sel_childSpecifier1); - return _ret.address == 0 - ? null - : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + @override + NSAttributedStringMarkdownParsingOptions init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSAttributedStringMarkdownParsingOptions.castFromPointer(_ret, + retain: true, release: true); } - set childSpecifier(NSScriptObjectSpecifier? value) { - return _lib._objc_msgSend_633( - _id, _lib._sel_setChildSpecifier_1, value?._id ?? ffi.nullptr); + bool get allowsExtendedAttributes { + return _objc_msgSend_7(this.pointer, _sel_allowsExtendedAttributes); } - NSScriptObjectSpecifier? get containerSpecifier { - final _ret = _lib._objc_msgSend_632(_id, _lib._sel_containerSpecifier1); - return _ret.address == 0 - ? null - : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + set allowsExtendedAttributes(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAllowsExtendedAttributes_, value); } - set containerSpecifier(NSScriptObjectSpecifier? value) { - return _lib._objc_msgSend_633( - _id, _lib._sel_setContainerSpecifier_1, value?._id ?? ffi.nullptr); + int get interpretedSyntax { + return _objc_msgSend_42(this.pointer, _sel_interpretedSyntax); } - bool get containerIsObjectBeingTested { - return _lib._objc_msgSend_12(_id, _lib._sel_containerIsObjectBeingTested1); + set interpretedSyntax(int value) { + return _objc_msgSend_43(this.pointer, _sel_setInterpretedSyntax_, value); } - set containerIsObjectBeingTested(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setContainerIsObjectBeingTested_1, value); + int get failurePolicy { + return _objc_msgSend_44(this.pointer, _sel_failurePolicy); } - bool get containerIsRangeContainerObject { - return _lib._objc_msgSend_12( - _id, _lib._sel_containerIsRangeContainerObject1); + set failurePolicy(int value) { + return _objc_msgSend_45(this.pointer, _sel_setFailurePolicy_, value); } - set containerIsRangeContainerObject(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setContainerIsRangeContainerObject_1, value); + objc.NSString? get languageCode { + final _ret = _objc_msgSend_13(this.pointer, _sel_languageCode); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString get key { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_key1); - return NSString._(_ret, _lib, retain: true, release: true); + set languageCode(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setLanguageCode_, value?.pointer ?? ffi.nullptr); } - set key(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setKey_1, value._id); + bool get appliesSourcePositionAttributes { + return _objc_msgSend_7(this.pointer, _sel_appliesSourcePositionAttributes); } - NSScriptClassDescription? get containerClassDescription { - final _ret = - _lib._objc_msgSend_628(_id, _lib._sel_containerClassDescription1); - return _ret.address == 0 - ? null - : NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + set appliesSourcePositionAttributes(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAppliesSourcePositionAttributes_, value); } - set containerClassDescription(NSScriptClassDescription? value) { - return _lib._objc_msgSend_647(_id, _lib._sel_setContainerClassDescription_1, - value?._id ?? ffi.nullptr); + static NSAttributedStringMarkdownParsingOptions new1() { + final _ret = _objc_msgSend_40( + _class_NSAttributedStringMarkdownParsingOptions, _sel_new); + return NSAttributedStringMarkdownParsingOptions.castFromPointer(_ret, + retain: false, release: true); } - NSScriptClassDescription? get keyClassDescription { - final _ret = _lib._objc_msgSend_628(_id, _lib._sel_keyClassDescription1); - return _ret.address == 0 - ? null - : NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + static NSAttributedStringMarkdownParsingOptions allocWithZone_( + ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSAttributedStringMarkdownParsingOptions, + _sel_allocWithZone_, + zone); + return NSAttributedStringMarkdownParsingOptions.castFromPointer(_ret, + retain: false, release: true); } - ffi.Pointer indicesOfObjectsByEvaluatingWithContainer_count_( - NSObject container, ffi.Pointer count) { - return _lib._objc_msgSend_648( - _id, - _lib._sel_indicesOfObjectsByEvaluatingWithContainer_count_1, - container._id, - count); + static NSAttributedStringMarkdownParsingOptions alloc() { + final _ret = _objc_msgSend_40( + _class_NSAttributedStringMarkdownParsingOptions, _sel_alloc); + return NSAttributedStringMarkdownParsingOptions.castFromPointer(_ret, + retain: false, release: true); } - NSObject? objectsByEvaluatingWithContainers_(NSObject containers) { - final _ret = _lib._objc_msgSend_16( - _id, _lib._sel_objectsByEvaluatingWithContainers_1, containers._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSAttributedStringMarkdownParsingOptions, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSObject? get objectsByEvaluatingSpecifier { - final _ret = - _lib._objc_msgSend_17(_id, _lib._sel_objectsByEvaluatingSpecifier1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSAttributedStringMarkdownParsingOptions, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - int get evaluationErrorNumber { - return _lib._objc_msgSend_83(_id, _lib._sel_evaluationErrorNumber1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7(_class_NSAttributedStringMarkdownParsingOptions, + _sel_accessInstanceVariablesDirectly); } - set evaluationErrorNumber(int value) { - return _lib._objc_msgSend_635( - _id, _lib._sel_setEvaluationErrorNumber_1, value); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSAttributedStringMarkdownParsingOptions, + _sel_useStoredAccessor); } - NSScriptObjectSpecifier? get evaluationErrorSpecifier { - final _ret = - _lib._objc_msgSend_632(_id, _lib._sel_evaluationErrorSpecifier1); - return _ret.address == 0 - ? null - : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50( + _class_NSAttributedStringMarkdownParsingOptions, + _sel_keyPathsForValuesAffectingValueForKey_, + key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSAppleEventDescriptor? get descriptor { - final _ret = _lib._objc_msgSend_636(_id, _lib._sel_descriptor1); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSAttributedStringMarkdownParsingOptions, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - @override - NSScriptObjectSpecifier init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSAttributedStringMarkdownParsingOptions, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSAttributedStringMarkdownParsingOptions, + _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSAttributedStringMarkdownParsingOptions, + _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSAttributedStringMarkdownParsingOptions = + objc.getClass("NSAttributedStringMarkdownParsingOptions"); +late final _sel_init = objc.registerName("init"); +final _objc_msgSend_40 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_allowsExtendedAttributes = + objc.registerName("allowsExtendedAttributes"); +late final _sel_setAllowsExtendedAttributes_ = + objc.registerName("setAllowsExtendedAttributes:"); +final _objc_msgSend_41 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, bool)>(); - static NSScriptObjectSpecifier new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScriptObjectSpecifier1, _lib._sel_new1); - return NSScriptObjectSpecifier._(_ret, _lib, retain: false, release: true); - } +abstract class NSAttributedStringMarkdownInterpretedSyntax { + static const int NSAttributedStringMarkdownInterpretedSyntaxFull = 0; + static const int NSAttributedStringMarkdownInterpretedSyntaxInlineOnly = 1; + static const int + NSAttributedStringMarkdownInterpretedSyntaxInlineOnlyPreservingWhitespace = + 2; +} - static NSScriptObjectSpecifier allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSScriptObjectSpecifier1, _lib._sel_allocWithZone_1, zone); - return NSScriptObjectSpecifier._(_ret, _lib, retain: false, release: true); - } +late final _sel_interpretedSyntax = objc.registerName("interpretedSyntax"); +final _objc_msgSend_42 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setInterpretedSyntax_ = + objc.registerName("setInterpretedSyntax:"); +final _objc_msgSend_43 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); - static NSScriptObjectSpecifier alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScriptObjectSpecifier1, _lib._sel_alloc1); - return NSScriptObjectSpecifier._(_ret, _lib, retain: false, release: true); - } +abstract class NSAttributedStringMarkdownParsingFailurePolicy { + static const int NSAttributedStringMarkdownParsingFailureReturnError = 0; + static const int + NSAttributedStringMarkdownParsingFailureReturnPartiallyParsedIfPossible = + 1; +} - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSScriptObjectSpecifier1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } +late final _sel_failurePolicy = objc.registerName("failurePolicy"); +final _objc_msgSend_44 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setFailurePolicy_ = objc.registerName("setFailurePolicy:"); +final _objc_msgSend_45 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_languageCode = objc.registerName("languageCode"); +late final _sel_setLanguageCode_ = objc.registerName("setLanguageCode:"); +final _objc_msgSend_46 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_appliesSourcePositionAttributes = + objc.registerName("appliesSourcePositionAttributes"); +late final _sel_setAppliesSourcePositionAttributes_ = + objc.registerName("setAppliesSourcePositionAttributes:"); +late final _sel_new = objc.registerName("new"); - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSScriptObjectSpecifier1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } +final class _NSZone extends ffi.Opaque {} - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSScriptObjectSpecifier1, - _lib._sel_accessInstanceVariablesDirectly1); - } +late final _sel_allocWithZone_ = objc.registerName("allocWithZone:"); +final _objc_msgSend_47 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_NSZone>)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_NSZone>)>(); +late final _sel_alloc = objc.registerName("alloc"); +late final _sel_cancelPreviousPerformRequestsWithTarget_selector_object_ = objc + .registerName("cancelPreviousPerformRequestsWithTarget:selector:object:"); +final _objc_msgSend_48 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_cancelPreviousPerformRequestsWithTarget_ = + objc.registerName("cancelPreviousPerformRequestsWithTarget:"); +final _objc_msgSend_49 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_accessInstanceVariablesDirectly = + objc.registerName("accessInstanceVariablesDirectly"); +late final _sel_useStoredAccessor = objc.registerName("useStoredAccessor"); +late final _sel_keyPathsForValuesAffectingValueForKey_ = + objc.registerName("keyPathsForValuesAffectingValueForKey:"); +final _objc_msgSend_50 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_automaticallyNotifiesObserversForKey_ = + objc.registerName("automaticallyNotifiesObserversForKey:"); +final _objc_msgSend_51 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setKeys_triggerChangeNotificationsForDependentKey_ = + objc.registerName("setKeys:triggerChangeNotificationsForDependentKey:"); +final _objc_msgSend_52 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_classFallbacksForKeyedArchiver = + objc.registerName("classFallbacksForKeyedArchiver"); +late final _sel_classForKeyedUnarchiver = + objc.registerName("classForKeyedUnarchiver"); +final _objc_msgSend_0 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isKindOfClass_ = objc.registerName("isKindOfClass:"); +late final _sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_ = + objc.registerName( + "initWithContentsOfMarkdownFileAtURL:options:baseURL:error:"); +final _objc_msgSend_53 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_initWithMarkdown_options_baseURL_error_ = + objc.registerName("initWithMarkdown:options:baseURL:error:"); +final _objc_msgSend_54 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_initWithMarkdownString_options_baseURL_error_ = + objc.registerName("initWithMarkdownString:options:baseURL:error:"); +final _objc_msgSend_55 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSScriptObjectSpecifier1, _lib._sel_useStoredAccessor1); - } +abstract class NSAttributedStringFormattingOptions { + static const int + NSAttributedStringFormattingInsertArgumentAttributesWithoutMerging = 1; + static const int NSAttributedStringFormattingApplyReplacementIndexAttribute = + 2; +} - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSScriptObjectSpecifier1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } +late final _sel_initWithFormat_options_locale_ = + objc.registerName("initWithFormat:options:locale:"); +final _objc_msgSend_56 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSScriptObjectSpecifier1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } +final class __va_list_tag extends ffi.Struct { + @ffi.UnsignedInt() + external int gp_offset; - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSScriptObjectSpecifier1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } + @ffi.UnsignedInt() + external int fp_offset; - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSScriptObjectSpecifier1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + external ffi.Pointer overflow_arg_area; - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSScriptObjectSpecifier1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } + external ffi.Pointer reg_save_area; } -class NSAppleEventDescriptor extends NSObject { - NSAppleEventDescriptor._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); +late final _sel_initWithFormat_options_locale_arguments_ = + objc.registerName("initWithFormat:options:locale:arguments:"); +final _objc_msgSend_57 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>(); +late final _sel_localizedAttributedStringWithFormat_ = + objc.registerName("localizedAttributedStringWithFormat:"); +late final _sel_localizedAttributedStringWithFormat_options_ = + objc.registerName("localizedAttributedStringWithFormat:options:"); +final _objc_msgSend_58 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_initWithFormat_options_locale_context_ = + objc.registerName("initWithFormat:options:locale:context:"); +final _objc_msgSend_59 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithFormat_options_locale_context_arguments_ = + objc.registerName("initWithFormat:options:locale:context:arguments:"); +final _objc_msgSend_60 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>(); +late final _sel_localizedAttributedStringWithFormat_context_ = + objc.registerName("localizedAttributedStringWithFormat:context:"); +final _objc_msgSend_61 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_localizedAttributedStringWithFormat_options_context_ = + objc.registerName("localizedAttributedStringWithFormat:options:context:"); +final _objc_msgSend_62 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_attributedStringByInflectingString = + objc.registerName("attributedStringByInflectingString"); +final _objc_msgSend_63 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_localizedAttributedStringForKey_value_table_ = + objc.registerName("localizedAttributedStringForKey:value:table:"); +final _objc_msgSend_64 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_bundleIdentifier = objc.registerName("bundleIdentifier"); +late final _sel_infoDictionary = objc.registerName("infoDictionary"); +final _objc_msgSend_65 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_localizedInfoDictionary = + objc.registerName("localizedInfoDictionary"); +late final _sel_objectForInfoDictionaryKey_ = + objc.registerName("objectForInfoDictionaryKey:"); +late final _sel_classNamed_ = objc.registerName("classNamed:"); +late final _sel_principalClass = objc.registerName("principalClass"); +final _objc_msgSend_66 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_preferredLocalizations = + objc.registerName("preferredLocalizations"); +late final _sel_localizations = objc.registerName("localizations"); +late final _sel_developmentLocalization = + objc.registerName("developmentLocalization"); +late final _sel_preferredLocalizationsFromArray_ = + objc.registerName("preferredLocalizationsFromArray:"); +final _objc_msgSend_67 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_preferredLocalizationsFromArray_forPreferences_ = + objc.registerName("preferredLocalizationsFromArray:forPreferences:"); +final _objc_msgSend_68 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_executableArchitectures = + objc.registerName("executableArchitectures"); +final _objc_msgSend_69 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setPreservationPriority_forTags_ = + objc.registerName("setPreservationPriority:forTags:"); +final _objc_msgSend_70 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer)>(); +late final _sel_preservationPriorityForTag_ = + objc.registerName("preservationPriorityForTag:"); +final _objc_msgSend_71 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Double Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_71Fpret = objc.msgSendFpretPointer + .cast< + ffi.NativeFunction< + ffi.Double Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - /// Returns a [NSAppleEventDescriptor] that points to the same underlying object as [other]. - static NSAppleEventDescriptor castFrom(T other) { - return NSAppleEventDescriptor._(other._id, other._lib, - retain: true, release: true); - } +class NSMutableAttributedString extends NSAttributedString { + NSMutableAttributedString._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSAppleEventDescriptor] that wraps the given raw object pointer. - static NSAppleEventDescriptor castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSAppleEventDescriptor._(other, lib, - retain: retain, release: release); - } + /// Constructs a [NSMutableAttributedString] that points to the same underlying object as [other]. + NSMutableAttributedString.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns whether [obj] is an instance of [NSAppleEventDescriptor]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSAppleEventDescriptor1); - } + /// Constructs a [NSMutableAttributedString] that wraps the given raw object pointer. + NSMutableAttributedString.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static NSAppleEventDescriptor nullDescriptor(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_601( - _lib._class_NSAppleEventDescriptor1, _lib._sel_nullDescriptor1); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSMutableAttributedString]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMutableAttributedString); } - static NSAppleEventDescriptor? descriptorWithDescriptorType_bytes_length_( - SwiftLibrary _lib, - int descriptorType, - ffi.Pointer bytes, - int byteCount) { - final _ret = _lib._objc_msgSend_602( - _lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithDescriptorType_bytes_length_1, - descriptorType, - bytes, - byteCount); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void replaceCharactersInRange_withString_(_NSRange range, objc.NSString str) { + _objc_msgSend_72(this.pointer, _sel_replaceCharactersInRange_withString_, + range, str.pointer); } - static NSAppleEventDescriptor? descriptorWithDescriptorType_data_( - SwiftLibrary _lib, int descriptorType, NSData? data) { - final _ret = _lib._objc_msgSend_603( - _lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithDescriptorType_data_1, - descriptorType, - data?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void setAttributes_range_(objc.NSDictionary? attrs, _NSRange range) { + _objc_msgSend_73(this.pointer, _sel_setAttributes_range_, + attrs?.pointer ?? ffi.nullptr, range); } - static NSAppleEventDescriptor descriptorWithBoolean_( - SwiftLibrary _lib, int boolean) { - final _ret = _lib._objc_msgSend_604(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithBoolean_1, boolean); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + objc.NSMutableString get mutableString { + final _ret = _objc_msgSend_74(this.pointer, _sel_mutableString); + return objc.NSMutableString.castFromPointer(_ret, + retain: true, release: true); } - static NSAppleEventDescriptor descriptorWithEnumCode_( - SwiftLibrary _lib, int enumerator) { - final _ret = _lib._objc_msgSend_605(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithEnumCode_1, enumerator); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void addAttribute_value_range_( + objc.NSString name, objc.NSObject value, _NSRange range) { + _objc_msgSend_75(this.pointer, _sel_addAttribute_value_range_, name.pointer, + value.pointer, range); } - static NSAppleEventDescriptor descriptorWithInt32_( - SwiftLibrary _lib, int signedInt) { - final _ret = _lib._objc_msgSend_606(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithInt32_1, signedInt); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void addAttributes_range_(objc.NSDictionary attrs, _NSRange range) { + _objc_msgSend_76( + this.pointer, _sel_addAttributes_range_, attrs.pointer, range); } - static NSAppleEventDescriptor descriptorWithDouble_( - SwiftLibrary _lib, double doubleValue) { - final _ret = _lib._objc_msgSend_607(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithDouble_1, doubleValue); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void removeAttribute_range_(objc.NSString name, _NSRange range) { + _objc_msgSend_77( + this.pointer, _sel_removeAttribute_range_, name.pointer, range); } - static NSAppleEventDescriptor descriptorWithTypeCode_( - SwiftLibrary _lib, int typeCode) { - final _ret = _lib._objc_msgSend_605(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithTypeCode_1, typeCode); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void replaceCharactersInRange_withAttributedString_( + _NSRange range, NSAttributedString attrString) { + _objc_msgSend_78( + this.pointer, + _sel_replaceCharactersInRange_withAttributedString_, + range, + attrString.pointer); } - static NSAppleEventDescriptor descriptorWithString_( - SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_608(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithString_1, string._id); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void insertAttributedString_atIndex_(NSAttributedString attrString, int loc) { + _objc_msgSend_79(this.pointer, _sel_insertAttributedString_atIndex_, + attrString.pointer, loc); } - static NSAppleEventDescriptor descriptorWithDate_( - SwiftLibrary _lib, NSDate date) { - final _ret = _lib._objc_msgSend_609(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithDate_1, date._id); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void appendAttributedString_(NSAttributedString attrString) { + _objc_msgSend_80( + this.pointer, _sel_appendAttributedString_, attrString.pointer); } - static NSAppleEventDescriptor descriptorWithFileURL_( - SwiftLibrary _lib, NSURL fileURL) { - final _ret = _lib._objc_msgSend_610(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithFileURL_1, fileURL._id); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void deleteCharactersInRange_(_NSRange range) { + _objc_msgSend_81(this.pointer, _sel_deleteCharactersInRange_, range); } - static NSAppleEventDescriptor - appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_( - SwiftLibrary _lib, - int eventClass, - int eventID, - NSAppleEventDescriptor? targetDescriptor, - int returnID, - int transactionID) { - final _ret = _lib._objc_msgSend_611( - _lib._class_NSAppleEventDescriptor1, - _lib._sel_appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_1, - eventClass, - eventID, - targetDescriptor?._id ?? ffi.nullptr, - returnID, - transactionID); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void setAttributedString_(NSAttributedString attrString) { + _objc_msgSend_80( + this.pointer, _sel_setAttributedString_, attrString.pointer); } - static NSAppleEventDescriptor listDescriptor(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_601( - _lib._class_NSAppleEventDescriptor1, _lib._sel_listDescriptor1); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void beginEditing() { + _objc_msgSend_82(this.pointer, _sel_beginEditing); } - static NSAppleEventDescriptor recordDescriptor(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_601( - _lib._class_NSAppleEventDescriptor1, _lib._sel_recordDescriptor1); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void endEditing() { + _objc_msgSend_82(this.pointer, _sel_endEditing); } - static NSAppleEventDescriptor currentProcessDescriptor(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_601(_lib._class_NSAppleEventDescriptor1, - _lib._sel_currentProcessDescriptor1); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void appendLocalizedFormat_(NSAttributedString format) { + _objc_msgSend_80(this.pointer, _sel_appendLocalizedFormat_, format.pointer); } - static NSAppleEventDescriptor descriptorWithProcessIdentifier_( - SwiftLibrary _lib, int processIdentifier) { - final _ret = _lib._objc_msgSend_606(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithProcessIdentifier_1, processIdentifier); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + @override + NSMutableAttributedString initWithString_(objc.NSString str) { + final _ret = + _objc_msgSend_35(this.pointer, _sel_initWithString_, str.pointer); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static NSAppleEventDescriptor descriptorWithBundleIdentifier_( - SwiftLibrary _lib, NSString bundleIdentifier) { - final _ret = _lib._objc_msgSend_608(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithBundleIdentifier_1, bundleIdentifier._id); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + @override + NSMutableAttributedString initWithString_attributes_( + objc.NSString str, objc.NSDictionary? attrs) { + final _ret = _objc_msgSend_36(this.pointer, _sel_initWithString_attributes_, + str.pointer, attrs?.pointer ?? ffi.nullptr); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static NSAppleEventDescriptor descriptorWithApplicationURL_( - SwiftLibrary _lib, NSURL applicationURL) { - final _ret = _lib._objc_msgSend_610(_lib._class_NSAppleEventDescriptor1, - _lib._sel_descriptorWithApplicationURL_1, applicationURL._id); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + @override + NSMutableAttributedString initWithAttributedString_( + NSAttributedString attrStr) { + final _ret = _objc_msgSend_37( + this.pointer, _sel_initWithAttributedString_, attrStr.pointer); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSAppleEventDescriptor initWithAEDescNoCopy_(ffi.Pointer aeDesc) { - final _ret = - _lib._objc_msgSend_612(_id, _lib._sel_initWithAEDescNoCopy_1, aeDesc); - return NSAppleEventDescriptor._(_ret, _lib, retain: false, release: true); + @override + NSMutableAttributedString? + initWithContentsOfMarkdownFileAtURL_options_baseURL_error_( + objc.NSURL markdownFile, + NSAttributedStringMarkdownParsingOptions? options, + objc.NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _objc_msgSend_53( + this.pointer, + _sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_, + markdownFile.pointer, + options?.pointer ?? ffi.nullptr, + baseURL?.pointer ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSAppleEventDescriptor? initWithDescriptorType_bytes_length_( - int descriptorType, ffi.Pointer bytes, int byteCount) { - final _ret = _lib._objc_msgSend_613( - _id, - _lib._sel_initWithDescriptorType_bytes_length_1, - descriptorType, - bytes, - byteCount); + @override + NSMutableAttributedString? initWithMarkdown_options_baseURL_error_( + objc.NSData markdown, + NSAttributedStringMarkdownParsingOptions? options, + objc.NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _objc_msgSend_54( + this.pointer, + _sel_initWithMarkdown_options_baseURL_error_, + markdown.pointer, + options?.pointer ?? ffi.nullptr, + baseURL?.pointer ?? ffi.nullptr, + error); return _ret.address == 0 ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + : NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSAppleEventDescriptor? initWithDescriptorType_data_( - int descriptorType, NSData? data) { - final _ret = _lib._objc_msgSend_614( - _id, - _lib._sel_initWithDescriptorType_data_1, - descriptorType, - data?._id ?? ffi.nullptr); + @override + NSMutableAttributedString? initWithMarkdownString_options_baseURL_error_( + objc.NSString markdownString, + NSAttributedStringMarkdownParsingOptions? options, + objc.NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _objc_msgSend_55( + this.pointer, + _sel_initWithMarkdownString_options_baseURL_error_, + markdownString.pointer, + options?.pointer ?? ffi.nullptr, + baseURL?.pointer ?? ffi.nullptr, + error); return _ret.address == 0 ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + : NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSAppleEventDescriptor - initWithEventClass_eventID_targetDescriptor_returnID_transactionID_( - int eventClass, - int eventID, - NSAppleEventDescriptor? targetDescriptor, - int returnID, - int transactionID) { - final _ret = _lib._objc_msgSend_615( - _id, - _lib._sel_initWithEventClass_eventID_targetDescriptor_returnID_transactionID_1, - eventClass, - eventID, - targetDescriptor?._id ?? ffi.nullptr, - returnID, - transactionID); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + @override + NSMutableAttributedString initWithFormat_options_locale_( + NSAttributedString format, int options, objc.NSLocale? locale) { + final _ret = _objc_msgSend_56( + this.pointer, + _sel_initWithFormat_options_locale_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSAppleEventDescriptor initListDescriptor() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_initListDescriptor1); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + @override + NSMutableAttributedString initWithFormat_options_locale_arguments_( + NSAttributedString format, + int options, + objc.NSLocale? locale, + ffi.Pointer<__va_list_tag> arguments) { + final _ret = _objc_msgSend_57( + this.pointer, + _sel_initWithFormat_options_locale_arguments_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr, + arguments); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSAppleEventDescriptor initRecordDescriptor() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_initRecordDescriptor1); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + static NSMutableAttributedString localizedAttributedStringWithFormat_( + NSAttributedString format) { + final _ret = _objc_msgSend_37(_class_NSMutableAttributedString, + _sel_localizedAttributedStringWithFormat_, format.pointer); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - ffi.Pointer get aeDesc { - return _lib._objc_msgSend_616(_id, _lib._sel_aeDesc1); + static NSMutableAttributedString localizedAttributedStringWithFormat_options_( + NSAttributedString format, int options) { + final _ret = _objc_msgSend_58( + _class_NSMutableAttributedString, + _sel_localizedAttributedStringWithFormat_options_, + format.pointer, + options); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - int get descriptorType { - return _lib._objc_msgSend_214(_id, _lib._sel_descriptorType1); + @override + NSMutableAttributedString initWithFormat_options_locale_context_( + NSAttributedString format, + int options, + objc.NSLocale? locale, + objc.NSDictionary context) { + final _ret = _objc_msgSend_59( + this.pointer, + _sel_initWithFormat_options_locale_context_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr, + context.pointer); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSData get data { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_data1); - return NSData._(_ret, _lib, retain: true, release: true); + @override + NSMutableAttributedString initWithFormat_options_locale_context_arguments_( + NSAttributedString format, + int options, + objc.NSLocale? locale, + objc.NSDictionary context, + ffi.Pointer<__va_list_tag> arguments) { + final _ret = _objc_msgSend_60( + this.pointer, + _sel_initWithFormat_options_locale_context_arguments_, + format.pointer, + options, + locale?.pointer ?? ffi.nullptr, + context.pointer, + arguments); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - int get booleanValue { - return _lib._objc_msgSend_234(_id, _lib._sel_booleanValue1); + static NSMutableAttributedString localizedAttributedStringWithFormat_context_( + NSAttributedString format, objc.NSDictionary context) { + final _ret = _objc_msgSend_61( + _class_NSMutableAttributedString, + _sel_localizedAttributedStringWithFormat_context_, + format.pointer, + context.pointer); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - int get enumCodeValue { - return _lib._objc_msgSend_214(_id, _lib._sel_enumCodeValue1); + static NSMutableAttributedString + localizedAttributedStringWithFormat_options_context_( + NSAttributedString format, int options, objc.NSDictionary context) { + final _ret = _objc_msgSend_62( + _class_NSMutableAttributedString, + _sel_localizedAttributedStringWithFormat_options_context_, + format.pointer, + options, + context.pointer); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - int get int32Value { - return _lib._objc_msgSend_237(_id, _lib._sel_int32Value1); + @override + NSMutableAttributedString init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSMutableAttributedString.castFromPointer(_ret, + retain: true, release: true); } - double get doubleValue { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_doubleValue1) - : _lib._objc_msgSend_165(_id, _lib._sel_doubleValue1); + static NSMutableAttributedString new1() { + final _ret = _objc_msgSend_40(_class_NSMutableAttributedString, _sel_new); + return NSMutableAttributedString.castFromPointer(_ret, + retain: false, release: true); } - int get typeCodeValue { - return _lib._objc_msgSend_214(_id, _lib._sel_typeCodeValue1); + static NSMutableAttributedString allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSMutableAttributedString, _sel_allocWithZone_, zone); + return NSMutableAttributedString.castFromPointer(_ret, + retain: false, release: true); } - NSString? get stringValue { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_stringValue1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSMutableAttributedString alloc() { + final _ret = _objc_msgSend_40(_class_NSMutableAttributedString, _sel_alloc); + return NSMutableAttributedString.castFromPointer(_ret, + retain: false, release: true); } - NSDate? get dateValue { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_dateValue1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSMutableAttributedString, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSURL? get fileURLValue { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_fileURLValue1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSMutableAttributedString, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - int get eventClass { - return _lib._objc_msgSend_214(_id, _lib._sel_eventClass1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSMutableAttributedString, _sel_accessInstanceVariablesDirectly); } - int get eventID { - return _lib._objc_msgSend_214(_id, _lib._sel_eventID1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSMutableAttributedString, _sel_useStoredAccessor); } - int get returnID { - return _lib._objc_msgSend_235(_id, _lib._sel_returnID1); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSMutableAttributedString, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - int get transactionID { - return _lib._objc_msgSend_237(_id, _lib._sel_transactionID1); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSMutableAttributedString, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - void setParamDescriptor_forKeyword_( - NSAppleEventDescriptor descriptor, int keyword) { - _lib._objc_msgSend_617(_id, _lib._sel_setParamDescriptor_forKeyword_1, - descriptor._id, keyword); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSMutableAttributedString, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSMutableAttributedString, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSMutableAttributedString, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSMutableAttributedString = + objc.getClass("NSMutableAttributedString"); +late final _sel_replaceCharactersInRange_withString_ = + objc.registerName("replaceCharactersInRange:withString:"); +final _objc_msgSend_72 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_setAttributes_range_ = + objc.registerName("setAttributes:range:"); +final _objc_msgSend_73 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>(); +late final _sel_mutableString = objc.registerName("mutableString"); +final _objc_msgSend_74 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_addAttribute_value_range_ = + objc.registerName("addAttribute:value:range:"); +final _objc_msgSend_75 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>(); +late final _sel_addAttributes_range_ = + objc.registerName("addAttributes:range:"); +final _objc_msgSend_76 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>(); +late final _sel_removeAttribute_range_ = + objc.registerName("removeAttribute:range:"); +final _objc_msgSend_77 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>(); +late final _sel_replaceCharactersInRange_withAttributedString_ = + objc.registerName("replaceCharactersInRange:withAttributedString:"); +final _objc_msgSend_78 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_insertAttributedString_atIndex_ = + objc.registerName("insertAttributedString:atIndex:"); +final _objc_msgSend_79 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_appendAttributedString_ = + objc.registerName("appendAttributedString:"); +final _objc_msgSend_80 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_deleteCharactersInRange_ = + objc.registerName("deleteCharactersInRange:"); +final _objc_msgSend_81 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_setAttributedString_ = + objc.registerName("setAttributedString:"); +late final _sel_beginEditing = objc.registerName("beginEditing"); +final _objc_msgSend_82 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_endEditing = objc.registerName("endEditing"); +late final _sel_appendLocalizedFormat_ = + objc.registerName("appendLocalizedFormat:"); - NSAppleEventDescriptor? paramDescriptorForKeyword_(int keyword) { - final _ret = _lib._objc_msgSend_618( - _id, _lib._sel_paramDescriptorForKeyword_1, keyword); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); - } +class NSDateFormatter extends NSFormatter { + NSDateFormatter._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - void removeParamDescriptorWithKeyword_(int keyword) { - _lib._objc_msgSend_619( - _id, _lib._sel_removeParamDescriptorWithKeyword_1, keyword); - } + /// Constructs a [NSDateFormatter] that points to the same underlying object as [other]. + NSDateFormatter.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - void setAttributeDescriptor_forKeyword_( - NSAppleEventDescriptor descriptor, int keyword) { - _lib._objc_msgSend_617(_id, _lib._sel_setAttributeDescriptor_forKeyword_1, - descriptor._id, keyword); - } + /// Constructs a [NSDateFormatter] that wraps the given raw object pointer. + NSDateFormatter.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSAppleEventDescriptor? attributeDescriptorForKeyword_(int keyword) { - final _ret = _lib._objc_msgSend_618( - _id, _lib._sel_attributeDescriptorForKeyword_1, keyword); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSDateFormatter]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSDateFormatter); } - NSAppleEventDescriptor? sendEventWithOptions_timeout_error_(int sendOptions, - double timeoutInSeconds, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_620( - _id, - _lib._sel_sendEventWithOptions_timeout_error_1, - sendOptions, - timeoutInSeconds, - error); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + int get formattingContext { + return _objc_msgSend_89(this.pointer, _sel_formattingContext); } - bool get isRecordDescriptor { - return _lib._objc_msgSend_12(_id, _lib._sel_isRecordDescriptor1); + set formattingContext(int value) { + return _objc_msgSend_90(this.pointer, _sel_setFormattingContext_, value); } - int get numberOfItems { - return _lib._objc_msgSend_83(_id, _lib._sel_numberOfItems1); + bool getObjectValue_forString_range_error_( + ffi.Pointer> obj, + objc.NSString string, + ffi.Pointer<_NSRange> rangep, + ffi.Pointer> error) { + return _objc_msgSend_91( + this.pointer, + _sel_getObjectValue_forString_range_error_, + obj, + string.pointer, + rangep, + error); } - void insertDescriptor_atIndex_(NSAppleEventDescriptor descriptor, int index) { - _lib._objc_msgSend_621( - _id, _lib._sel_insertDescriptor_atIndex_1, descriptor._id, index); + objc.NSString stringFromDate_(objc.NSDate date) { + final _ret = + _objc_msgSend_92(this.pointer, _sel_stringFromDate_, date.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSAppleEventDescriptor? descriptorAtIndex_(int index) { + objc.NSDate? dateFromString_(objc.NSString string) { final _ret = - _lib._objc_msgSend_622(_id, _lib._sel_descriptorAtIndex_1, index); + _objc_msgSend_93(this.pointer, _sel_dateFromString_, string.pointer); return _ret.address == 0 ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - void removeDescriptorAtIndex_(int index) { - _lib._objc_msgSend_423(_id, _lib._sel_removeDescriptorAtIndex_1, index); - } - - void setDescriptor_forKeyword_( - NSAppleEventDescriptor descriptor, int keyword) { - _lib._objc_msgSend_617( - _id, _lib._sel_setDescriptor_forKeyword_1, descriptor._id, keyword); + static objc.NSString localizedStringFromDate_dateStyle_timeStyle_( + objc.NSDate date, int dstyle, int tstyle) { + final _ret = _objc_msgSend_94( + _class_NSDateFormatter, + _sel_localizedStringFromDate_dateStyle_timeStyle_, + date.pointer, + dstyle, + tstyle); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSAppleEventDescriptor? descriptorForKeyword_(int keyword) { - final _ret = - _lib._objc_msgSend_618(_id, _lib._sel_descriptorForKeyword_1, keyword); + static objc.NSString? dateFormatFromTemplate_options_locale_( + objc.NSString tmplate, int opts, objc.NSLocale? locale) { + final _ret = _objc_msgSend_95( + _class_NSDateFormatter, + _sel_dateFormatFromTemplate_options_locale_, + tmplate.pointer, + opts, + locale?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); - } - - void removeDescriptorWithKeyword_(int keyword) { - _lib._objc_msgSend_619( - _id, _lib._sel_removeDescriptorWithKeyword_1, keyword); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - int keywordForDescriptorAtIndex_(int index) { - return _lib._objc_msgSend_623( - _id, _lib._sel_keywordForDescriptorAtIndex_1, index); + static int getDefaultFormatterBehavior() { + return _objc_msgSend_96( + _class_NSDateFormatter, _sel_defaultFormatterBehavior); } - NSAppleEventDescriptor? coerceToDescriptorType_(int descriptorType) { - final _ret = _lib._objc_msgSend_618( - _id, _lib._sel_coerceToDescriptorType_1, descriptorType); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + static void setDefaultFormatterBehavior(int value) { + return _objc_msgSend_97( + _class_NSDateFormatter, _sel_setDefaultFormatterBehavior_, value); } - @override - NSAppleEventDescriptor init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + void setLocalizedDateFormatFromTemplate_(objc.NSString dateFormatTemplate) { + _objc_msgSend_98(this.pointer, _sel_setLocalizedDateFormatFromTemplate_, + dateFormatTemplate.pointer); } - static NSAppleEventDescriptor new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSAppleEventDescriptor1, _lib._sel_new1); - return NSAppleEventDescriptor._(_ret, _lib, retain: false, release: true); + objc.NSString get dateFormat { + final _ret = _objc_msgSend_12(this.pointer, _sel_dateFormat); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSAppleEventDescriptor allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSAppleEventDescriptor1, _lib._sel_allocWithZone_1, zone); - return NSAppleEventDescriptor._(_ret, _lib, retain: false, release: true); + set dateFormat(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setDateFormat_, value.pointer); } - static NSAppleEventDescriptor alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSAppleEventDescriptor1, _lib._sel_alloc1); - return NSAppleEventDescriptor._(_ret, _lib, retain: false, release: true); + int get dateStyle { + return _objc_msgSend_100(this.pointer, _sel_dateStyle); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSAppleEventDescriptor1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set dateStyle(int value) { + return _objc_msgSend_101(this.pointer, _sel_setDateStyle_, value); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSAppleEventDescriptor1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + int get timeStyle { + return _objc_msgSend_100(this.pointer, _sel_timeStyle); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSAppleEventDescriptor1, - _lib._sel_accessInstanceVariablesDirectly1); + set timeStyle(int value) { + return _objc_msgSend_101(this.pointer, _sel_setTimeStyle_, value); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSAppleEventDescriptor1, _lib._sel_useStoredAccessor1); + objc.NSLocale get locale { + final _ret = _objc_msgSend_102(this.pointer, _sel_locale); + return objc.NSLocale.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSAppleEventDescriptor1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + set locale(objc.NSLocale value) { + return _objc_msgSend_103(this.pointer, _sel_setLocale_, value.pointer); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSAppleEventDescriptor1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + bool get generatesCalendarDates { + return _objc_msgSend_7(this.pointer, _sel_generatesCalendarDates); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSAppleEventDescriptor1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set generatesCalendarDates(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setGeneratesCalendarDates_, value); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSAppleEventDescriptor1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + int get formatterBehavior { + return _objc_msgSend_96(this.pointer, _sel_formatterBehavior); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSAppleEventDescriptor1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + set formatterBehavior(int value) { + return _objc_msgSend_97(this.pointer, _sel_setFormatterBehavior_, value); } -} - -@ffi.Packed(2) -final class AEDesc extends ffi.Struct { - @ffi.UnsignedInt() - external int descriptorType; - - external ffi.Pointer> dataHandle; -} - -final class OpaqueAEDataStorageType extends ffi.Opaque {} - -abstract class NSAppleEventSendOptions { - static const int NSAppleEventSendNoReply = 1; - static const int NSAppleEventSendQueueReply = 2; - static const int NSAppleEventSendWaitForReply = 3; - static const int NSAppleEventSendNeverInteract = 16; - static const int NSAppleEventSendCanInteract = 32; - static const int NSAppleEventSendAlwaysInteract = 48; - static const int NSAppleEventSendCanSwitchLayer = 64; - static const int NSAppleEventSendDontRecord = 4096; - static const int NSAppleEventSendDontExecute = 8192; - static const int NSAppleEventSendDontAnnotate = 65536; - static const int NSAppleEventSendDefaultOptions = 35; -} - -class NSScriptClassDescription extends NSClassDescription { - NSScriptClassDescription._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSScriptClassDescription] that points to the same underlying object as [other]. - static NSScriptClassDescription castFrom(T other) { - return NSScriptClassDescription._(other._id, other._lib, - retain: true, release: true); + NSTimeZone get timeZone { + final _ret = _objc_msgSend_110(this.pointer, _sel_timeZone); + return NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSScriptClassDescription] that wraps the given raw object pointer. - static NSScriptClassDescription castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSScriptClassDescription._(other, lib, - retain: retain, release: release); + set timeZone(NSTimeZone value) { + return _objc_msgSend_111(this.pointer, _sel_setTimeZone_, value.pointer); } - /// Returns whether [obj] is an instance of [NSScriptClassDescription]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSScriptClassDescription1); + NSCalendar get calendar { + final _ret = _objc_msgSend_121(this.pointer, _sel_calendar); + return NSCalendar.castFromPointer(_ret, retain: true, release: true); } - static NSScriptClassDescription? classDescriptionForClass_( - SwiftLibrary _lib, NSObject aClass) { - final _ret = _lib._objc_msgSend_626(_lib._class_NSScriptClassDescription1, - _lib._sel_classDescriptionForClass_1, aClass._id); - return _ret.address == 0 - ? null - : NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + set calendar(NSCalendar value) { + return _objc_msgSend_161(this.pointer, _sel_setCalendar_, value.pointer); } - NSScriptClassDescription? initWithSuiteName_className_dictionary_( - NSString suiteName, NSString className, NSDictionary? classDeclaration) { - final _ret = _lib._objc_msgSend_627( - _id, - _lib._sel_initWithSuiteName_className_dictionary_1, - suiteName._id, - className._id, - classDeclaration?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + bool get lenient { + return _objc_msgSend_7(this.pointer, _sel_isLenient); } - NSString? get suiteName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_suiteName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + set lenient(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setLenient_, value); } - NSString? get className { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_className1); + objc.NSDate? get twoDigitStartDate { + final _ret = _objc_msgSend_116(this.pointer, _sel_twoDigitStartDate); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - NSString? get implementationClassName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_implementationClassName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + set twoDigitStartDate(objc.NSDate? value) { + return _objc_msgSend_162(this.pointer, _sel_setTwoDigitStartDate_, + value?.pointer ?? ffi.nullptr); } - NSScriptClassDescription? get superclassDescription { - final _ret = _lib._objc_msgSend_628(_id, _lib._sel_superclassDescription1); + objc.NSDate? get defaultDate { + final _ret = _objc_msgSend_116(this.pointer, _sel_defaultDate); return _ret.address == 0 ? null - : NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - int get appleEventCode { - return _lib._objc_msgSend_214(_id, _lib._sel_appleEventCode1); + set defaultDate(objc.NSDate? value) { + return _objc_msgSend_162( + this.pointer, _sel_setDefaultDate_, value?.pointer ?? ffi.nullptr); } - bool matchesAppleEventCode_(int appleEventCode) { - return _lib._objc_msgSend_194( - _id, _lib._sel_matchesAppleEventCode_1, appleEventCode); + objc.NSArray get eraSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_eraSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool supportsCommand_(NSScriptCommandDescription commandDescription) { - return _lib._objc_msgSend_641( - _id, _lib._sel_supportsCommand_1, commandDescription._id); + set eraSymbols(objc.NSArray value) { + return _objc_msgSend_163(this.pointer, _sel_setEraSymbols_, value.pointer); } - ffi.Pointer selectorForCommand_( - NSScriptCommandDescription commandDescription) { - return _lib._objc_msgSend_642( - _id, _lib._sel_selectorForCommand_1, commandDescription._id); + objc.NSArray get monthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_monthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString? typeForKey_(NSString key) { - final _ret = _lib._objc_msgSend_186(_id, _lib._sel_typeForKey_1, key._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + set monthSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setMonthSymbols_, value.pointer); } - NSScriptClassDescription? classDescriptionForKey_(NSString key) { - final _ret = _lib._objc_msgSend_643( - _id, _lib._sel_classDescriptionForKey_1, key._id); - return _ret.address == 0 - ? null - : NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + objc.NSArray get shortMonthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_shortMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int appleEventCodeForKey_(NSString key) { - return _lib._objc_msgSend_629( - _id, _lib._sel_appleEventCodeForKey_1, key._id); + set shortMonthSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setShortMonthSymbols_, value.pointer); } - NSString? keyWithAppleEventCode_(int appleEventCode) { - final _ret = _lib._objc_msgSend_644( - _id, _lib._sel_keyWithAppleEventCode_1, appleEventCode); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray get weekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_weekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString? get defaultSubcontainerAttributeKey { - final _ret = - _lib._objc_msgSend_44(_id, _lib._sel_defaultSubcontainerAttributeKey1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + set weekdaySymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setWeekdaySymbols_, value.pointer); } - bool isLocationRequiredToCreateForKey_(NSString toManyRelationshipKey) { - return _lib._objc_msgSend_64( - _id, - _lib._sel_isLocationRequiredToCreateForKey_1, - toManyRelationshipKey._id); + objc.NSArray get shortWeekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_shortWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool hasPropertyForKey_(NSString key) { - return _lib._objc_msgSend_64(_id, _lib._sel_hasPropertyForKey_1, key._id); + set shortWeekdaySymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setShortWeekdaySymbols_, value.pointer); } - bool hasOrderedToManyRelationshipForKey_(NSString key) { - return _lib._objc_msgSend_64( - _id, _lib._sel_hasOrderedToManyRelationshipForKey_1, key._id); + objc.NSString get AMSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_AMSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool hasReadablePropertyForKey_(NSString key) { - return _lib._objc_msgSend_64( - _id, _lib._sel_hasReadablePropertyForKey_1, key._id); + set AMSymbol(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setAMSymbol_, value.pointer); } - bool hasWritablePropertyForKey_(NSString key) { - return _lib._objc_msgSend_64( - _id, _lib._sel_hasWritablePropertyForKey_1, key._id); + objc.NSString get PMSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_PMSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool isReadOnlyKey_(NSString key) { - return _lib._objc_msgSend_64(_id, _lib._sel_isReadOnlyKey_1, key._id); + set PMSymbol(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setPMSymbol_, value.pointer); } - static void registerClassDescription_forClass_( - SwiftLibrary _lib, NSClassDescription description, NSObject aClass) { - _lib._objc_msgSend_598( - _lib._class_NSScriptClassDescription1, - _lib._sel_registerClassDescription_forClass_1, - description._id, - aClass._id); + objc.NSArray get longEraSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_longEraSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static void invalidateClassDescriptionCache(SwiftLibrary _lib) { - _lib._objc_msgSend_1(_lib._class_NSScriptClassDescription1, - _lib._sel_invalidateClassDescriptionCache1); + set longEraSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setLongEraSymbols_, value.pointer); } - @override - NSScriptClassDescription init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + objc.NSArray get veryShortMonthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_veryShortMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSScriptClassDescription new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScriptClassDescription1, _lib._sel_new1); - return NSScriptClassDescription._(_ret, _lib, retain: false, release: true); + set veryShortMonthSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setVeryShortMonthSymbols_, value.pointer); } - static NSScriptClassDescription allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSScriptClassDescription1, _lib._sel_allocWithZone_1, zone); - return NSScriptClassDescription._(_ret, _lib, retain: false, release: true); + objc.NSArray get standaloneMonthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_standaloneMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSScriptClassDescription alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScriptClassDescription1, _lib._sel_alloc1); - return NSScriptClassDescription._(_ret, _lib, retain: false, release: true); + set standaloneMonthSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setStandaloneMonthSymbols_, value.pointer); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSScriptClassDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + objc.NSArray get shortStandaloneMonthSymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_shortStandaloneMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSScriptClassDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + set shortStandaloneMonthSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setShortStandaloneMonthSymbols_, value.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSScriptClassDescription1, - _lib._sel_accessInstanceVariablesDirectly1); + objc.NSArray get veryShortStandaloneMonthSymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_veryShortStandaloneMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSScriptClassDescription1, _lib._sel_useStoredAccessor1); + set veryShortStandaloneMonthSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setVeryShortStandaloneMonthSymbols_, value.pointer); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSScriptClassDescription1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSArray get veryShortWeekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_veryShortWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSScriptClassDescription1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + set veryShortWeekdaySymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setVeryShortWeekdaySymbols_, value.pointer); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSScriptClassDescription1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray get standaloneWeekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_standaloneWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSScriptClassDescription1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + set standaloneWeekdaySymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setStandaloneWeekdaySymbols_, value.pointer); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSScriptClassDescription1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSArray get shortStandaloneWeekdaySymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_shortStandaloneWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } -} - -class NSScriptCommandDescription extends NSObject { - NSScriptCommandDescription._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSScriptCommandDescription] that points to the same underlying object as [other]. - static NSScriptCommandDescription castFrom(T other) { - return NSScriptCommandDescription._(other._id, other._lib, - retain: true, release: true); + set shortStandaloneWeekdaySymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setShortStandaloneWeekdaySymbols_, value.pointer); } - /// Returns a [NSScriptCommandDescription] that wraps the given raw object pointer. - static NSScriptCommandDescription castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSScriptCommandDescription._(other, lib, - retain: retain, release: release); + objc.NSArray get veryShortStandaloneWeekdaySymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_veryShortStandaloneWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSScriptCommandDescription]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSScriptCommandDescription1); + set veryShortStandaloneWeekdaySymbols(objc.NSArray value) { + return _objc_msgSend_163(this.pointer, + _sel_setVeryShortStandaloneWeekdaySymbols_, value.pointer); } - @override - NSObject init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSArray get quarterSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_quarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSScriptCommandDescription? initWithSuiteName_commandName_dictionary_( - NSString suiteName, - NSString commandName, - NSDictionary? commandDeclaration) { - final _ret = _lib._objc_msgSend_627( - _id, - _lib._sel_initWithSuiteName_commandName_dictionary_1, - suiteName._id, - commandName._id, - commandDeclaration?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSScriptCommandDescription._(_ret, _lib, retain: true, release: true); + set quarterSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setQuarterSymbols_, value.pointer); } - NSScriptCommandDescription? initWithCoder_(NSCoder inCoder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, inCoder._id); - return _ret.address == 0 - ? null - : NSScriptCommandDescription._(_ret, _lib, retain: true, release: true); + objc.NSArray get shortQuarterSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_shortQuarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString get suiteName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_suiteName1); - return NSString._(_ret, _lib, retain: true, release: true); + set shortQuarterSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setShortQuarterSymbols_, value.pointer); } - NSString get commandName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_commandName1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray get standaloneQuarterSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_standaloneQuarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int get appleEventClassCode { - return _lib._objc_msgSend_214(_id, _lib._sel_appleEventClassCode1); + set standaloneQuarterSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setStandaloneQuarterSymbols_, value.pointer); } - int get appleEventCode { - return _lib._objc_msgSend_214(_id, _lib._sel_appleEventCode1); + objc.NSArray get shortStandaloneQuarterSymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_shortStandaloneQuarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString get commandClassName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_commandClassName1); - return NSString._(_ret, _lib, retain: true, release: true); + set shortStandaloneQuarterSymbols(objc.NSArray value) { + return _objc_msgSend_163( + this.pointer, _sel_setShortStandaloneQuarterSymbols_, value.pointer); } - NSString? get returnType { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_returnType1); + objc.NSDate? get gregorianStartDate { + final _ret = _objc_msgSend_116(this.pointer, _sel_gregorianStartDate); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - int get appleEventCodeForReturnType { - return _lib._objc_msgSend_214(_id, _lib._sel_appleEventCodeForReturnType1); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - NSArray get argumentNames { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_argumentNames1); - return NSArray._(_ret, _lib, retain: true, release: true); + set gregorianStartDate(objc.NSDate? value) { + return _objc_msgSend_162(this.pointer, _sel_setGregorianStartDate_, + value?.pointer ?? ffi.nullptr); } - NSString? typeForArgumentWithName_(NSString argumentName) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_typeForArgumentWithName_1, argumentName._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + bool get doesRelativeDateFormatting { + return _objc_msgSend_7(this.pointer, _sel_doesRelativeDateFormatting); } - int appleEventCodeForArgumentWithName_(NSString argumentName) { - return _lib._objc_msgSend_629( - _id, _lib._sel_appleEventCodeForArgumentWithName_1, argumentName._id); + set doesRelativeDateFormatting(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setDoesRelativeDateFormatting_, value); } - bool isOptionalArgumentWithName_(NSString argumentName) { - return _lib._objc_msgSend_64( - _id, _lib._sel_isOptionalArgumentWithName_1, argumentName._id); + objc.NSObject initWithDateFormat_allowNaturalLanguage_( + objc.NSString format, bool flag) { + final _ret = _objc_msgSend_164(this.pointer, + _sel_initWithDateFormat_allowNaturalLanguage_, format.pointer, flag); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSScriptCommand createCommandInstance() { - final _ret = _lib._objc_msgSend_639(_id, _lib._sel_createCommandInstance1); - return NSScriptCommand._(_ret, _lib, retain: true, release: true); + bool allowsNaturalLanguage() { + return _objc_msgSend_7(this.pointer, _sel_allowsNaturalLanguage); } - NSScriptCommand createCommandInstanceWithZone_(ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_640( - _id, _lib._sel_createCommandInstanceWithZone_1, zone); - return NSScriptCommand._(_ret, _lib, retain: true, release: true); + @override + NSDateFormatter init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSDateFormatter.castFromPointer(_ret, retain: true, release: true); } - static NSScriptCommandDescription new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScriptCommandDescription1, _lib._sel_new1); - return NSScriptCommandDescription._(_ret, _lib, - retain: false, release: true); + static NSDateFormatter new1() { + final _ret = _objc_msgSend_40(_class_NSDateFormatter, _sel_new); + return NSDateFormatter.castFromPointer(_ret, retain: false, release: true); } - static NSScriptCommandDescription allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSScriptCommandDescription1, - _lib._sel_allocWithZone_1, zone); - return NSScriptCommandDescription._(_ret, _lib, - retain: false, release: true); + static NSDateFormatter allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSDateFormatter, _sel_allocWithZone_, zone); + return NSDateFormatter.castFromPointer(_ret, retain: false, release: true); } - static NSScriptCommandDescription alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScriptCommandDescription1, _lib._sel_alloc1); - return NSScriptCommandDescription._(_ret, _lib, - retain: false, release: true); + static NSDateFormatter alloc() { + final _ret = _objc_msgSend_40(_class_NSDateFormatter, _sel_alloc); + return NSDateFormatter.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSScriptCommandDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSDateFormatter, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSScriptCommandDescription1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSDateFormatter, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSScriptCommandDescription1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSDateFormatter, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSScriptCommandDescription1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSDateFormatter, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSScriptCommandDescription1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSDateFormatter, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSScriptCommandDescription1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSDateFormatter, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSScriptCommandDescription1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSDateFormatter, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSScriptCommandDescription1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSDateFormatter, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSScriptCommandDescription1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSDateFormatter, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -class NSScriptCommand extends NSObject { - NSScriptCommand._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); +late final _class_NSDateFormatter = objc.getClass("NSDateFormatter"); - /// Returns a [NSScriptCommand] that points to the same underlying object as [other]. - static NSScriptCommand castFrom(T other) { - return NSScriptCommand._(other._id, other._lib, - retain: true, release: true); - } +class NSFormatter extends objc.NSObject { + NSFormatter._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSScriptCommand] that wraps the given raw object pointer. - static NSScriptCommand castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSScriptCommand._(other, lib, retain: retain, release: release); - } + /// Constructs a [NSFormatter] that points to the same underlying object as [other]. + NSFormatter.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns whether [obj] is an instance of [NSScriptCommand]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSScriptCommand1); - } + /// Constructs a [NSFormatter] that wraps the given raw object pointer. + NSFormatter.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSScriptCommand initWithCommandDescription_( - NSScriptCommandDescription commandDef) { - final _ret = _lib._objc_msgSend_630( - _id, _lib._sel_initWithCommandDescription_1, commandDef._id); - return NSScriptCommand._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSFormatter]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSFormatter); } - NSScriptCommand? initWithCoder_(NSCoder inCoder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, inCoder._id); + objc.NSString? stringForObjectValue_(objc.NSObject? obj) { + final _ret = _objc_msgSend_83( + this.pointer, _sel_stringForObjectValue_, obj?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSScriptCommand._(_ret, _lib, retain: true, release: true); - } - - NSScriptCommandDescription get commandDescription { - final _ret = _lib._objc_msgSend_631(_id, _lib._sel_commandDescription1); - return NSScriptCommandDescription._(_ret, _lib, - retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSObject? get directParameter { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_directParameter1); + NSAttributedString? attributedStringForObjectValue_withDefaultAttributes_( + objc.NSObject obj, objc.NSDictionary? attrs) { + final _ret = _objc_msgSend_84( + this.pointer, + _sel_attributedStringForObjectValue_withDefaultAttributes_, + obj.pointer, + attrs?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - set directParameter(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDirectParameter_1, value?._id ?? ffi.nullptr); + : NSAttributedString.castFromPointer(_ret, retain: true, release: true); } - NSScriptObjectSpecifier? get receiversSpecifier { - final _ret = _lib._objc_msgSend_632(_id, _lib._sel_receiversSpecifier1); + objc.NSString? editingStringForObjectValue_(objc.NSObject obj) { + final _ret = _objc_msgSend_85( + this.pointer, _sel_editingStringForObjectValue_, obj.pointer); return _ret.address == 0 ? null - : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set receiversSpecifier(NSScriptObjectSpecifier? value) { - return _lib._objc_msgSend_633( - _id, _lib._sel_setReceiversSpecifier_1, value?._id ?? ffi.nullptr); + bool getObjectValue_forString_errorDescription_( + ffi.Pointer> obj, + objc.NSString string, + ffi.Pointer> error) { + return _objc_msgSend_86( + this.pointer, + _sel_getObjectValue_forString_errorDescription_, + obj, + string.pointer, + error); } - NSObject? get evaluatedReceivers { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_evaluatedReceivers1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + bool isPartialStringValid_newEditingString_errorDescription_( + objc.NSString partialString, + ffi.Pointer> newString, + ffi.Pointer> error) { + return _objc_msgSend_87( + this.pointer, + _sel_isPartialStringValid_newEditingString_errorDescription_, + partialString.pointer, + newString, + error); } - NSDictionary? get arguments { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_arguments1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + bool + isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_( + ffi.Pointer> partialStringPtr, + ffi.Pointer<_NSRange> proposedSelRangePtr, + objc.NSString origString, + _NSRange origSelRange, + ffi.Pointer> error) { + return _objc_msgSend_88( + this.pointer, + _sel_isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_, + partialStringPtr, + proposedSelRangePtr, + origString.pointer, + origSelRange, + error); } - set arguments(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, _lib._sel_setArguments_1, value?._id ?? ffi.nullptr); + @override + NSFormatter init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSFormatter.castFromPointer(_ret, retain: true, release: true); } - NSDictionary? get evaluatedArguments { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_evaluatedArguments1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static NSFormatter new1() { + final _ret = _objc_msgSend_40(_class_NSFormatter, _sel_new); + return NSFormatter.castFromPointer(_ret, retain: false, release: true); } - bool get wellFormed { - return _lib._objc_msgSend_12(_id, _lib._sel_isWellFormed1); + static NSFormatter allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSFormatter, _sel_allocWithZone_, zone); + return NSFormatter.castFromPointer(_ret, retain: false, release: true); } - NSObject? performDefaultImplementation() { - final _ret = - _lib._objc_msgSend_17(_id, _lib._sel_performDefaultImplementation1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static NSFormatter alloc() { + final _ret = _objc_msgSend_40(_class_NSFormatter, _sel_alloc); + return NSFormatter.castFromPointer(_ret, retain: false, release: true); } - NSObject? executeCommand() { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_executeCommand1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSFormatter, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - int get scriptErrorNumber { - return _lib._objc_msgSend_83(_id, _lib._sel_scriptErrorNumber1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSFormatter, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - set scriptErrorNumber(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setScriptErrorNumber_1, value); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSFormatter, _sel_accessInstanceVariablesDirectly); } - NSAppleEventDescriptor? get scriptErrorOffendingObjectDescriptor { - final _ret = _lib._objc_msgSend_636( - _id, _lib._sel_scriptErrorOffendingObjectDescriptor1); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSFormatter, _sel_useStoredAccessor); } - set scriptErrorOffendingObjectDescriptor(NSAppleEventDescriptor? value) { - return _lib._objc_msgSend_637( - _id, - _lib._sel_setScriptErrorOffendingObjectDescriptor_1, - value?._id ?? ffi.nullptr); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSFormatter, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSAppleEventDescriptor? get scriptErrorExpectedTypeDescriptor { - final _ret = _lib._objc_msgSend_636( - _id, _lib._sel_scriptErrorExpectedTypeDescriptor1); - return _ret.address == 0 - ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSFormatter, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - set scriptErrorExpectedTypeDescriptor(NSAppleEventDescriptor? value) { - return _lib._objc_msgSend_637( - _id, - _lib._sel_setScriptErrorExpectedTypeDescriptor_1, - value?._id ?? ffi.nullptr); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSFormatter, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSFormatter, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSFormatter, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSFormatter = objc.getClass("NSFormatter"); +late final _sel_stringForObjectValue_ = + objc.registerName("stringForObjectValue:"); +final _objc_msgSend_83 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_attributedStringForObjectValue_withDefaultAttributes_ = + objc.registerName("attributedStringForObjectValue:withDefaultAttributes:"); +final _objc_msgSend_84 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_editingStringForObjectValue_ = + objc.registerName("editingStringForObjectValue:"); +final _objc_msgSend_85 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_getObjectValue_forString_errorDescription_ = + objc.registerName("getObjectValue:forString:errorDescription:"); +final _objc_msgSend_86 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_isPartialStringValid_newEditingString_errorDescription_ = objc + .registerName("isPartialStringValid:newEditingString:errorDescription:"); +final _objc_msgSend_87 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); +late final _sel_isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_ = + objc.registerName( + "isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:"); +final _objc_msgSend_88 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer<_NSRange>, + ffi.Pointer, + _NSRange, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer<_NSRange>, + ffi.Pointer, + _NSRange, + ffi.Pointer>)>(); + +abstract class NSFormattingContext { + static const int NSFormattingContextUnknown = 0; + static const int NSFormattingContextDynamic = 1; + static const int NSFormattingContextStandalone = 2; + static const int NSFormattingContextListItem = 3; + static const int NSFormattingContextBeginningOfSentence = 4; + static const int NSFormattingContextMiddleOfSentence = 5; +} + +late final _sel_formattingContext = objc.registerName("formattingContext"); +final _objc_msgSend_89 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setFormattingContext_ = + objc.registerName("setFormattingContext:"); +final _objc_msgSend_90 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_getObjectValue_forString_range_error_ = + objc.registerName("getObjectValue:forString:range:error:"); +final _objc_msgSend_91 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer<_NSRange>, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer<_NSRange>, + ffi.Pointer>)>(); +late final _sel_stringFromDate_ = objc.registerName("stringFromDate:"); +final _objc_msgSend_92 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dateFromString_ = objc.registerName("dateFromString:"); +final _objc_msgSend_93 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSDateFormatterStyle { + static const int NSDateFormatterNoStyle = 0; + static const int NSDateFormatterShortStyle = 1; + static const int NSDateFormatterMediumStyle = 2; + static const int NSDateFormatterLongStyle = 3; + static const int NSDateFormatterFullStyle = 4; +} + +late final _sel_localizedStringFromDate_dateStyle_timeStyle_ = + objc.registerName("localizedStringFromDate:dateStyle:timeStyle:"); +final _objc_msgSend_94 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + int)>(); +late final _sel_dateFormatFromTemplate_options_locale_ = + objc.registerName("dateFormatFromTemplate:options:locale:"); +final _objc_msgSend_95 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); + +abstract class NSDateFormatterBehavior { + static const int NSDateFormatterBehaviorDefault = 0; + static const int NSDateFormatterBehavior10_0 = 1000; + static const int NSDateFormatterBehavior10_4 = 1040; +} + +late final _sel_defaultFormatterBehavior = + objc.registerName("defaultFormatterBehavior"); +final _objc_msgSend_96 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDefaultFormatterBehavior_ = + objc.registerName("setDefaultFormatterBehavior:"); +final _objc_msgSend_97 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setLocalizedDateFormatFromTemplate_ = + objc.registerName("setLocalizedDateFormatFromTemplate:"); +final _objc_msgSend_98 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dateFormat = objc.registerName("dateFormat"); +late final _sel_setDateFormat_ = objc.registerName("setDateFormat:"); +final _objc_msgSend_99 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dateStyle = objc.registerName("dateStyle"); +final _objc_msgSend_100 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDateStyle_ = objc.registerName("setDateStyle:"); +final _objc_msgSend_101 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_timeStyle = objc.registerName("timeStyle"); +late final _sel_setTimeStyle_ = objc.registerName("setTimeStyle:"); +late final _sel_locale = objc.registerName("locale"); +final _objc_msgSend_102 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setLocale_ = objc.registerName("setLocale:"); +final _objc_msgSend_103 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_generatesCalendarDates = + objc.registerName("generatesCalendarDates"); +late final _sel_setGeneratesCalendarDates_ = + objc.registerName("setGeneratesCalendarDates:"); +late final _sel_formatterBehavior = objc.registerName("formatterBehavior"); +late final _sel_setFormatterBehavior_ = + objc.registerName("setFormatterBehavior:"); + +class NSTimeZone extends objc.NSObject { + NSTimeZone._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSTimeZone] that points to the same underlying object as [other]. + NSTimeZone.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSTimeZone] that wraps the given raw object pointer. + NSTimeZone.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSTimeZone]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSTimeZone); } - NSString? get scriptErrorString { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_scriptErrorString1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + objc.NSString get name { + final _ret = _objc_msgSend_12(this.pointer, _sel_name); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set scriptErrorString(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setScriptErrorString_1, value?._id ?? ffi.nullptr); + objc.NSData get data { + final _ret = _objc_msgSend_104(this.pointer, _sel_data); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - static NSScriptCommand? currentCommand(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_638( - _lib._class_NSScriptCommand1, _lib._sel_currentCommand1); - return _ret.address == 0 - ? null - : NSScriptCommand._(_ret, _lib, retain: true, release: true); + int secondsFromGMTForDate_(objc.NSDate aDate) { + return _objc_msgSend_105( + this.pointer, _sel_secondsFromGMTForDate_, aDate.pointer); } - NSAppleEventDescriptor? get appleEvent { - final _ret = _lib._objc_msgSend_636(_id, _lib._sel_appleEvent1); + objc.NSString? abbreviationForDate_(objc.NSDate aDate) { + final _ret = _objc_msgSend_106( + this.pointer, _sel_abbreviationForDate_, aDate.pointer); return _ret.address == 0 ? null - : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void suspendExecution() { - _lib._objc_msgSend_1(_id, _lib._sel_suspendExecution1); + bool isDaylightSavingTimeForDate_(objc.NSDate aDate) { + return _objc_msgSend_107( + this.pointer, _sel_isDaylightSavingTimeForDate_, aDate.pointer); } - void resumeExecutionWithResult_(NSObject? result) { - _lib._objc_msgSend_289( - _id, _lib._sel_resumeExecutionWithResult_1, result?._id ?? ffi.nullptr); + double daylightSavingTimeOffsetForDate_(objc.NSDate aDate) { + return objc.useMsgSendVariants + ? _objc_msgSend_108Fpret( + this.pointer, _sel_daylightSavingTimeOffsetForDate_, aDate.pointer) + : _objc_msgSend_108( + this.pointer, _sel_daylightSavingTimeOffsetForDate_, aDate.pointer); } - @override - NSScriptCommand init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSScriptCommand._(_ret, _lib, retain: true, release: true); + objc.NSDate? nextDaylightSavingTimeTransitionAfterDate_(objc.NSDate aDate) { + final _ret = _objc_msgSend_109(this.pointer, + _sel_nextDaylightSavingTimeTransitionAfterDate_, aDate.pointer); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - static NSScriptCommand new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSScriptCommand1, _lib._sel_new1); - return NSScriptCommand._(_ret, _lib, retain: false, release: true); + static NSTimeZone getSystemTimeZone() { + final _ret = _objc_msgSend_110(_class_NSTimeZone, _sel_systemTimeZone); + return NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - static NSScriptCommand allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSScriptCommand1, _lib._sel_allocWithZone_1, zone); - return NSScriptCommand._(_ret, _lib, retain: false, release: true); + static void resetSystemTimeZone() { + _objc_msgSend_82(_class_NSTimeZone, _sel_resetSystemTimeZone); } - static NSScriptCommand alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSScriptCommand1, _lib._sel_alloc1); - return NSScriptCommand._(_ret, _lib, retain: false, release: true); + static NSTimeZone getDefaultTimeZone() { + final _ret = _objc_msgSend_110(_class_NSTimeZone, _sel_defaultTimeZone); + return NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSScriptCommand1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static void setDefaultTimeZone(NSTimeZone value) { + return _objc_msgSend_111( + _class_NSTimeZone, _sel_setDefaultTimeZone_, value.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSScriptCommand1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static NSTimeZone getLocalTimeZone() { + final _ret = _objc_msgSend_110(_class_NSTimeZone, _sel_localTimeZone); + return NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSScriptCommand1, - _lib._sel_accessInstanceVariablesDirectly1); + static objc.NSArray getKnownTimeZoneNames() { + final _ret = _objc_msgSend_6(_class_NSTimeZone, _sel_knownTimeZoneNames); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSScriptCommand1, _lib._sel_useStoredAccessor1); + static objc.NSDictionary getAbbreviationDictionary() { + final _ret = + _objc_msgSend_112(_class_NSTimeZone, _sel_abbreviationDictionary); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSScriptCommand1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static void setAbbreviationDictionary(objc.NSDictionary value) { + return _objc_msgSend_113( + _class_NSTimeZone, _sel_setAbbreviationDictionary_, value.pointer); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSScriptCommand1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static objc.NSString getTimeZoneDataVersion() { + final _ret = _objc_msgSend_12(_class_NSTimeZone, _sel_timeZoneDataVersion); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSScriptCommand1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + int get secondsFromGMT { + return _objc_msgSend_114(this.pointer, _sel_secondsFromGMT); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSScriptCommand1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSString? get abbreviation { + final _ret = _objc_msgSend_13(this.pointer, _sel_abbreviation); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScriptCommand1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + bool get daylightSavingTime { + return _objc_msgSend_7(this.pointer, _sel_isDaylightSavingTime); } -} - -class NSItemProvider extends NSObject { - NSItemProvider._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSItemProvider] that points to the same underlying object as [other]. - static NSItemProvider castFrom(T other) { - return NSItemProvider._(other._id, other._lib, retain: true, release: true); + double get daylightSavingTimeOffset { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_daylightSavingTimeOffset) + : _objc_msgSend_115(this.pointer, _sel_daylightSavingTimeOffset); } - /// Returns a [NSItemProvider] that wraps the given raw object pointer. - static NSItemProvider castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSItemProvider._(other, lib, retain: retain, release: release); + objc.NSDate? get nextDaylightSavingTimeTransition { + final _ret = + _objc_msgSend_116(this.pointer, _sel_nextDaylightSavingTimeTransition); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSItemProvider]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSItemProvider1); + objc.NSString get description { + final _ret = _objc_msgSend_12(this.pointer, _sel_description); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSItemProvider init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSItemProvider._(_ret, _lib, retain: true, release: true); - } - - void registerDataRepresentationForTypeIdentifier_visibility_loadHandler_( - NSString typeIdentifier, - int visibility, - ObjCBlock_NSProgress_ffiVoidNSDataNSError loadHandler) { - _lib._objc_msgSend_673( - _id, - _lib._sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_1, - typeIdentifier._id, - visibility, - loadHandler._id); - } - - void - registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_( - NSString typeIdentifier, - int fileOptions, - int visibility, - ObjCBlock_NSProgress_ffiVoidNSURLboolNSError loadHandler) { - _lib._objc_msgSend_674( - _id, - _lib._sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_1, - typeIdentifier._id, - fileOptions, - visibility, - loadHandler._id); - } - - NSArray get registeredTypeIdentifiers { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_registeredTypeIdentifiers1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool isEqualToTimeZone_(NSTimeZone aTimeZone) { + return _objc_msgSend_117( + this.pointer, _sel_isEqualToTimeZone_, aTimeZone.pointer); } - NSArray registeredTypeIdentifiersWithFileOptions_(int fileOptions) { - final _ret = _lib._objc_msgSend_675( - _id, _lib._sel_registeredTypeIdentifiersWithFileOptions_1, fileOptions); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSString? localizedName_locale_(int style, objc.NSLocale? locale) { + final _ret = _objc_msgSend_118(this.pointer, _sel_localizedName_locale_, + style, locale?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool hasItemConformingToTypeIdentifier_(NSString typeIdentifier) { - return _lib._objc_msgSend_64( - _id, _lib._sel_hasItemConformingToTypeIdentifier_1, typeIdentifier._id); + static NSTimeZone? timeZoneWithName_(objc.NSString tzName) { + final _ret = _objc_msgSend_2( + _class_NSTimeZone, _sel_timeZoneWithName_, tzName.pointer); + return _ret.address == 0 + ? null + : NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - bool hasRepresentationConformingToTypeIdentifier_fileOptions_( - NSString typeIdentifier, int fileOptions) { - return _lib._objc_msgSend_676( - _id, - _lib._sel_hasRepresentationConformingToTypeIdentifier_fileOptions_1, - typeIdentifier._id, - fileOptions); + static NSTimeZone? timeZoneWithName_data_( + objc.NSString tzName, objc.NSData? aData) { + final _ret = _objc_msgSend_119( + _class_NSTimeZone, + _sel_timeZoneWithName_data_, + tzName.pointer, + aData?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - NSProgress loadDataRepresentationForTypeIdentifier_completionHandler_( - NSString typeIdentifier, - ObjCBlock_ffiVoid_NSData_NSError completionHandler) { - final _ret = _lib._objc_msgSend_677( - _id, - _lib._sel_loadDataRepresentationForTypeIdentifier_completionHandler_1, - typeIdentifier._id, - completionHandler._id); - return NSProgress._(_ret, _lib, retain: true, release: true); + NSTimeZone? initWithName_(objc.NSString tzName) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_initWithName_, tzName.pointer); + return _ret.address == 0 + ? null + : NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - NSProgress loadFileRepresentationForTypeIdentifier_completionHandler_( - NSString typeIdentifier, - ObjCBlock_ffiVoid_NSURL_NSError completionHandler) { - final _ret = _lib._objc_msgSend_678( - _id, - _lib._sel_loadFileRepresentationForTypeIdentifier_completionHandler_1, - typeIdentifier._id, - completionHandler._id); - return NSProgress._(_ret, _lib, retain: true, release: true); + NSTimeZone? initWithName_data_(objc.NSString tzName, objc.NSData? aData) { + final _ret = _objc_msgSend_119(this.pointer, _sel_initWithName_data_, + tzName.pointer, aData?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - NSProgress loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_( - NSString typeIdentifier, - ObjCBlock_ffiVoid_NSURL_bool_NSError completionHandler) { - final _ret = _lib._objc_msgSend_679( - _id, - _lib._sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_1, - typeIdentifier._id, - completionHandler._id); - return NSProgress._(_ret, _lib, retain: true, release: true); + static NSTimeZone timeZoneForSecondsFromGMT_(int seconds) { + final _ret = _objc_msgSend_120( + _class_NSTimeZone, _sel_timeZoneForSecondsFromGMT_, seconds); + return NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - NSString? get suggestedName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_suggestedName1); + static NSTimeZone? timeZoneWithAbbreviation_(objc.NSString abbreviation) { + final _ret = _objc_msgSend_2(_class_NSTimeZone, + _sel_timeZoneWithAbbreviation_, abbreviation.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - set suggestedName(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setSuggestedName_1, value?._id ?? ffi.nullptr); + @override + NSTimeZone init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - NSItemProvider initWithObject_(NSObject object) { - final _ret = - _lib._objc_msgSend_124(_id, _lib._sel_initWithObject_1, object._id); - return NSItemProvider._(_ret, _lib, retain: true, release: true); + static NSTimeZone new1() { + final _ret = _objc_msgSend_40(_class_NSTimeZone, _sel_new); + return NSTimeZone.castFromPointer(_ret, retain: false, release: true); } - void registerObject_visibility_(NSObject object, int visibility) { - _lib._objc_msgSend_680( - _id, _lib._sel_registerObject_visibility_1, object._id, visibility); + static NSTimeZone allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSTimeZone, _sel_allocWithZone_, zone); + return NSTimeZone.castFromPointer(_ret, retain: false, release: true); } - void registerObjectOfClass_visibility_loadHandler_( - NSObject aClass, - int visibility, - ObjCBlock_NSProgress_ffiVoidObjCObjectNSError loadHandler) { - _lib._objc_msgSend_681( - _id, - _lib._sel_registerObjectOfClass_visibility_loadHandler_1, - aClass._id, - visibility, - loadHandler._id); + static NSTimeZone alloc() { + final _ret = _objc_msgSend_40(_class_NSTimeZone, _sel_alloc); + return NSTimeZone.castFromPointer(_ret, retain: false, release: true); } - bool canLoadObjectOfClass_(NSObject aClass) { - return _lib._objc_msgSend_0( - _id, _lib._sel_canLoadObjectOfClass_1, aClass._id); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSTimeZone, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSProgress loadObjectOfClass_completionHandler_( - NSObject aClass, ObjCBlock_ffiVoid_ObjCObject_NSError completionHandler) { - final _ret = _lib._objc_msgSend_682( - _id, - _lib._sel_loadObjectOfClass_completionHandler_1, - aClass._id, - completionHandler._id); - return NSProgress._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSTimeZone, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSItemProvider initWithItem_typeIdentifier_( - NSObject? item, NSString? typeIdentifier) { - final _ret = _lib._objc_msgSend_683( - _id, - _lib._sel_initWithItem_typeIdentifier_1, - item?._id ?? ffi.nullptr, - typeIdentifier?._id ?? ffi.nullptr); - return NSItemProvider._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSTimeZone, _sel_accessInstanceVariablesDirectly); } - NSItemProvider? initWithContentsOfURL_(NSURL fileURL) { - final _ret = _lib._objc_msgSend_277( - _id, _lib._sel_initWithContentsOfURL_1, fileURL._id); - return _ret.address == 0 - ? null - : NSItemProvider._(_ret, _lib, retain: true, release: true); - } - - void registerItemForTypeIdentifier_loadHandler_( - NSString typeIdentifier, - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary - loadHandler) { - _lib._objc_msgSend_684( - _id, - _lib._sel_registerItemForTypeIdentifier_loadHandler_1, - typeIdentifier._id, - loadHandler._id); - } - - void loadItemForTypeIdentifier_options_completionHandler_( - NSString typeIdentifier, - NSDictionary? options, - ObjCBlock_ffiVoid_ObjCObject_NSError1? completionHandler) { - _lib._objc_msgSend_685( - _id, - _lib._sel_loadItemForTypeIdentifier_options_completionHandler_1, - typeIdentifier._id, - options?._id ?? ffi.nullptr, - completionHandler?._id ?? ffi.nullptr); - } - - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary? - get previewImageHandler { - final _ret = _lib._objc_msgSend_686(_id, _lib._sel_previewImageHandler1); - return _ret.address == 0 - ? null - : ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary._( - _ret, _lib, - retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSTimeZone, _sel_useStoredAccessor); } - set previewImageHandler( - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary? - value) { - return _lib._objc_msgSend_687( - _id, _lib._sel_setPreviewImageHandler_1, value?._id ?? ffi.nullptr); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSTimeZone, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - void loadPreviewImageWithOptions_completionHandler_(NSDictionary options, - ObjCBlock_ffiVoid_ObjCObject_NSError1 completionHandler) { - _lib._objc_msgSend_688( - _id, - _lib._sel_loadPreviewImageWithOptions_completionHandler_1, - options._id, - completionHandler._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSTimeZone, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static NSItemProvider new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSItemProvider1, _lib._sel_new1); - return NSItemProvider._(_ret, _lib, retain: false, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSTimeZone, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSTimeZone, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSTimeZone, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSTimeZone = objc.getClass("NSTimeZone"); +late final _sel_name = objc.registerName("name"); +late final _sel_data = objc.registerName("data"); +final _objc_msgSend_104 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_secondsFromGMTForDate_ = + objc.registerName("secondsFromGMTForDate:"); +final _objc_msgSend_105 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Long Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_abbreviationForDate_ = + objc.registerName("abbreviationForDate:"); +final _objc_msgSend_106 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isDaylightSavingTimeForDate_ = + objc.registerName("isDaylightSavingTimeForDate:"); +final _objc_msgSend_107 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_daylightSavingTimeOffsetForDate_ = + objc.registerName("daylightSavingTimeOffsetForDate:"); +final _objc_msgSend_108 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Double Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_108Fpret = objc.msgSendFpretPointer + .cast< + ffi.NativeFunction< + ffi.Double Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_nextDaylightSavingTimeTransitionAfterDate_ = + objc.registerName("nextDaylightSavingTimeTransitionAfterDate:"); +final _objc_msgSend_109 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_systemTimeZone = objc.registerName("systemTimeZone"); +final _objc_msgSend_110 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_resetSystemTimeZone = objc.registerName("resetSystemTimeZone"); +late final _sel_defaultTimeZone = objc.registerName("defaultTimeZone"); +late final _sel_setDefaultTimeZone_ = objc.registerName("setDefaultTimeZone:"); +final _objc_msgSend_111 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_localTimeZone = objc.registerName("localTimeZone"); +late final _sel_knownTimeZoneNames = objc.registerName("knownTimeZoneNames"); +late final _sel_abbreviationDictionary = + objc.registerName("abbreviationDictionary"); +final _objc_msgSend_112 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setAbbreviationDictionary_ = + objc.registerName("setAbbreviationDictionary:"); +final _objc_msgSend_113 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_timeZoneDataVersion = objc.registerName("timeZoneDataVersion"); +late final _sel_secondsFromGMT = objc.registerName("secondsFromGMT"); +final _objc_msgSend_114 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_abbreviation = objc.registerName("abbreviation"); +late final _sel_isDaylightSavingTime = + objc.registerName("isDaylightSavingTime"); +late final _sel_daylightSavingTimeOffset = + objc.registerName("daylightSavingTimeOffset"); +final _objc_msgSend_115 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Double Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_115Fpret = objc.msgSendFpretPointer + .cast< + ffi.NativeFunction< + ffi.Double Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_nextDaylightSavingTimeTransition = + objc.registerName("nextDaylightSavingTimeTransition"); +final _objc_msgSend_116 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_description = objc.registerName("description"); +late final _sel_isEqualToTimeZone_ = objc.registerName("isEqualToTimeZone:"); +final _objc_msgSend_117 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSTimeZoneNameStyle { + static const int NSTimeZoneNameStyleStandard = 0; + static const int NSTimeZoneNameStyleShortStandard = 1; + static const int NSTimeZoneNameStyleDaylightSaving = 2; + static const int NSTimeZoneNameStyleShortDaylightSaving = 3; + static const int NSTimeZoneNameStyleGeneric = 4; + static const int NSTimeZoneNameStyleShortGeneric = 5; +} + +late final _sel_localizedName_locale_ = + objc.registerName("localizedName:locale:"); +final _objc_msgSend_118 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_timeZoneWithName_ = objc.registerName("timeZoneWithName:"); +late final _sel_timeZoneWithName_data_ = + objc.registerName("timeZoneWithName:data:"); +final _objc_msgSend_119 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithName_ = objc.registerName("initWithName:"); +late final _sel_initWithName_data_ = objc.registerName("initWithName:data:"); +late final _sel_timeZoneForSecondsFromGMT_ = + objc.registerName("timeZoneForSecondsFromGMT:"); +final _objc_msgSend_120 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_timeZoneWithAbbreviation_ = + objc.registerName("timeZoneWithAbbreviation:"); +late final _sel_timeZone = objc.registerName("timeZone"); +late final _sel_setTimeZone_ = objc.registerName("setTimeZone:"); + +class NSCalendar extends objc.NSObject { + NSCalendar._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSCalendar] that points to the same underlying object as [other]. + NSCalendar.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSCalendar] that wraps the given raw object pointer. + NSCalendar.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSCalendar]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSCalendar); } - static NSItemProvider allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSItemProvider1, _lib._sel_allocWithZone_1, zone); - return NSItemProvider._(_ret, _lib, retain: false, release: true); + static NSCalendar getCurrentCalendar() { + final _ret = _objc_msgSend_121(_class_NSCalendar, _sel_currentCalendar); + return NSCalendar.castFromPointer(_ret, retain: true, release: true); } - static NSItemProvider alloc(SwiftLibrary _lib) { + static NSCalendar getAutoupdatingCurrentCalendar() { final _ret = - _lib._objc_msgSend_2(_lib._class_NSItemProvider1, _lib._sel_alloc1); - return NSItemProvider._(_ret, _lib, retain: false, release: true); + _objc_msgSend_121(_class_NSCalendar, _sel_autoupdatingCurrentCalendar); + return NSCalendar.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSItemProvider1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static NSCalendar? calendarWithIdentifier_( + objc.NSString calendarIdentifierConstant) { + final _ret = _objc_msgSend_122(_class_NSCalendar, + _sel_calendarWithIdentifier_, calendarIdentifierConstant.pointer); + return _ret.address == 0 + ? null + : NSCalendar.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSItemProvider1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + @override + NSCalendar init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSCalendar.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSItemProvider1, - _lib._sel_accessInstanceVariablesDirectly1); + objc.NSObject? initWithCalendarIdentifier_(objc.NSString ident) { + final _ret = _objc_msgSend_2( + this.pointer, _sel_initWithCalendarIdentifier_, ident.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSItemProvider1, _lib._sel_useStoredAccessor1); + objc.NSString get calendarIdentifier { + final _ret = _objc_msgSend_12(this.pointer, _sel_calendarIdentifier); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSItemProvider1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSLocale? get locale { + final _ret = _objc_msgSend_123(this.pointer, _sel_locale); + return _ret.address == 0 + ? null + : objc.NSLocale.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSItemProvider1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + set locale(objc.NSLocale? value) { + return _objc_msgSend_124( + this.pointer, _sel_setLocale_, value?.pointer ?? ffi.nullptr); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSItemProvider1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + NSTimeZone get timeZone { + final _ret = _objc_msgSend_110(this.pointer, _sel_timeZone); + return NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSItemProvider1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + set timeZone(NSTimeZone value) { + return _objc_msgSend_111(this.pointer, _sel_setTimeZone_, value.pointer); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSItemProvider1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + int get firstWeekday { + return _objc_msgSend_29(this.pointer, _sel_firstWeekday); } -} - -abstract class NSItemProviderRepresentationVisibility { - static const int NSItemProviderRepresentationVisibilityAll = 0; - static const int NSItemProviderRepresentationVisibilityTeam = 1; - static const int NSItemProviderRepresentationVisibilityGroup = 2; - static const int NSItemProviderRepresentationVisibilityOwnProcess = 3; -} - -ffi.Pointer< - ObjCObject> _ObjCBlock_NSProgress_ffiVoidNSDataNSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction< - ffi.Pointer Function(ffi.Pointer<_ObjCBlock>)>()(arg0); -final _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistry = - Function(ffi.Pointer<_ObjCBlock>)>{}; -int _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_registerClosure( - ffi.Pointer Function(ffi.Pointer<_ObjCBlock>) fn) { - final id = ++_ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistryIndex; - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) => - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistry[ - block.ref.target.address]!(arg0); - -class ObjCBlock_NSProgress_ffiVoidNSDataNSError extends _ObjCBlockBase { - ObjCBlock_NSProgress_ffiVoidNSDataNSError._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_NSProgress_ffiVoidNSDataNSError castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_NSProgress_ffiVoidNSDataNSError._(pointer, lib, - retain: retain, release: release); + set firstWeekday(int value) { + return _objc_msgSend_125(this.pointer, _sel_setFirstWeekday_, value); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSProgress_ffiVoidNSDataNSError.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSProgress_ffiVoidNSDataNSError.fromFunction(SwiftLibrary lib, - NSProgress? Function(ObjCBlock_ffiVoid_NSData_NSError) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureTrampoline) - .cast(), - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_registerClosure((ffi - .Pointer<_ObjCBlock> - arg0) => - fn(ObjCBlock_ffiVoid_NSData_NSError._(arg0, lib, retain: true, release: true)) - ?.retainAndReturnPointer() ?? - ffi.nullptr)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - NSProgress? call(ObjCBlock_ffiVoid_NSData_NSError arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer<_ObjCBlock>)>() - (_id, arg0._id) - .address == - 0 - ? null - : NSProgress._( - _id.ref.invoke - .cast Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer<_ObjCBlock>)>()(_id, arg0._id), - _lib, - retain: false, - release: true); -} - -class NSProgress extends NSObject { - NSProgress._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + int get minimumDaysInFirstWeek { + return _objc_msgSend_29(this.pointer, _sel_minimumDaysInFirstWeek); + } - /// Returns a [NSProgress] that points to the same underlying object as [other]. - static NSProgress castFrom(T other) { - return NSProgress._(other._id, other._lib, retain: true, release: true); + set minimumDaysInFirstWeek(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setMinimumDaysInFirstWeek_, value); } - /// Returns a [NSProgress] that wraps the given raw object pointer. - static NSProgress castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSProgress._(other, lib, retain: retain, release: release); + objc.NSArray get eraSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_eraSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSProgress]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSProgress1); + objc.NSArray get longEraSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_longEraSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSProgress? currentProgress(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_659( - _lib._class_NSProgress1, _lib._sel_currentProgress1); - return _ret.address == 0 - ? null - : NSProgress._(_ret, _lib, retain: true, release: true); + objc.NSArray get monthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_monthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSProgress progressWithTotalUnitCount_( - SwiftLibrary _lib, int unitCount) { - final _ret = _lib._objc_msgSend_660(_lib._class_NSProgress1, - _lib._sel_progressWithTotalUnitCount_1, unitCount); - return NSProgress._(_ret, _lib, retain: true, release: true); + objc.NSArray get shortMonthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_shortMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSProgress discreteProgressWithTotalUnitCount_( - SwiftLibrary _lib, int unitCount) { - final _ret = _lib._objc_msgSend_660(_lib._class_NSProgress1, - _lib._sel_discreteProgressWithTotalUnitCount_1, unitCount); - return NSProgress._(_ret, _lib, retain: true, release: true); + objc.NSArray get veryShortMonthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_veryShortMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSProgress progressWithTotalUnitCount_parent_pendingUnitCount_( - SwiftLibrary _lib, - int unitCount, - NSProgress parent, - int portionOfParentTotalUnitCount) { - final _ret = _lib._objc_msgSend_661( - _lib._class_NSProgress1, - _lib._sel_progressWithTotalUnitCount_parent_pendingUnitCount_1, - unitCount, - parent._id, - portionOfParentTotalUnitCount); - return NSProgress._(_ret, _lib, retain: true, release: true); + objc.NSArray get standaloneMonthSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_standaloneMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSProgress initWithParent_userInfo_( - NSProgress? parentProgressOrNil, NSObject? userInfoOrNil) { - final _ret = _lib._objc_msgSend_662( - _id, - _lib._sel_initWithParent_userInfo_1, - parentProgressOrNil?._id ?? ffi.nullptr, - userInfoOrNil?._id ?? ffi.nullptr); - return NSProgress._(_ret, _lib, retain: true, release: true); + objc.NSArray get shortStandaloneMonthSymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_shortStandaloneMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void becomeCurrentWithPendingUnitCount_(int unitCount) { - _lib._objc_msgSend_663( - _id, _lib._sel_becomeCurrentWithPendingUnitCount_1, unitCount); + objc.NSArray get veryShortStandaloneMonthSymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_veryShortStandaloneMonthSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void performAsCurrentWithPendingUnitCount_usingBlock_( - int unitCount, ObjCBlock_ffiVoid work) { - _lib._objc_msgSend_664( - _id, - _lib._sel_performAsCurrentWithPendingUnitCount_usingBlock_1, - unitCount, - work._id); + objc.NSArray get weekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_weekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void resignCurrent() { - _lib._objc_msgSend_1(_id, _lib._sel_resignCurrent1); + objc.NSArray get shortWeekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_shortWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void addChild_withPendingUnitCount_(NSProgress child, int inUnitCount) { - _lib._objc_msgSend_665( - _id, _lib._sel_addChild_withPendingUnitCount_1, child._id, inUnitCount); + objc.NSArray get veryShortWeekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_veryShortWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int get totalUnitCount { - return _lib._objc_msgSend_666(_id, _lib._sel_totalUnitCount1); + objc.NSArray get standaloneWeekdaySymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_standaloneWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set totalUnitCount(int value) { - return _lib._objc_msgSend_667(_id, _lib._sel_setTotalUnitCount_1, value); + objc.NSArray get shortStandaloneWeekdaySymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_shortStandaloneWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int get completedUnitCount { - return _lib._objc_msgSend_666(_id, _lib._sel_completedUnitCount1); + objc.NSArray get veryShortStandaloneWeekdaySymbols { + final _ret = + _objc_msgSend_6(this.pointer, _sel_veryShortStandaloneWeekdaySymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set completedUnitCount(int value) { - return _lib._objc_msgSend_667( - _id, _lib._sel_setCompletedUnitCount_1, value); + objc.NSArray get quarterSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_quarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString get localizedDescription { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_localizedDescription1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray get shortQuarterSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_shortQuarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set localizedDescription(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setLocalizedDescription_1, value._id); + objc.NSArray get standaloneQuarterSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_standaloneQuarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString get localizedAdditionalDescription { + objc.NSArray get shortStandaloneQuarterSymbols { final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_localizedAdditionalDescription1); - return NSString._(_ret, _lib, retain: true, release: true); + _objc_msgSend_6(this.pointer, _sel_shortStandaloneQuarterSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set localizedAdditionalDescription(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setLocalizedAdditionalDescription_1, value._id); + objc.NSString get AMSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_AMSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool get cancellable { - return _lib._objc_msgSend_12(_id, _lib._sel_isCancellable1); + objc.NSString get PMSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_PMSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set cancellable(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setCancellable_1, value); + void minimumRangeOfUnit_(ffi.Pointer<_NSRange> stret, int unit) { + objc.useMsgSendVariants + ? _objc_msgSend_126Stret( + stret, this.pointer, _sel_minimumRangeOfUnit_, unit) + : stret.ref = + _objc_msgSend_126(this.pointer, _sel_minimumRangeOfUnit_, unit); } - bool get pausable { - return _lib._objc_msgSend_12(_id, _lib._sel_isPausable1); + void maximumRangeOfUnit_(ffi.Pointer<_NSRange> stret, int unit) { + objc.useMsgSendVariants + ? _objc_msgSend_126Stret( + stret, this.pointer, _sel_maximumRangeOfUnit_, unit) + : stret.ref = + _objc_msgSend_126(this.pointer, _sel_maximumRangeOfUnit_, unit); } - set pausable(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setPausable_1, value); + void rangeOfUnit_inUnit_forDate_( + ffi.Pointer<_NSRange> stret, int smaller, int larger, objc.NSDate date) { + objc.useMsgSendVariants + ? _objc_msgSend_127Stret(stret, this.pointer, + _sel_rangeOfUnit_inUnit_forDate_, smaller, larger, date.pointer) + : stret.ref = _objc_msgSend_127(this.pointer, + _sel_rangeOfUnit_inUnit_forDate_, smaller, larger, date.pointer); } - bool get cancelled { - return _lib._objc_msgSend_12(_id, _lib._sel_isCancelled1); + int ordinalityOfUnit_inUnit_forDate_( + int smaller, int larger, objc.NSDate date) { + return _objc_msgSend_128(this.pointer, + _sel_ordinalityOfUnit_inUnit_forDate_, smaller, larger, date.pointer); } - bool get paused { - return _lib._objc_msgSend_12(_id, _lib._sel_isPaused1); + bool rangeOfUnit_startDate_interval_forDate_( + int unit, + ffi.Pointer> datep, + ffi.Pointer tip, + objc.NSDate date) { + return _objc_msgSend_129( + this.pointer, + _sel_rangeOfUnit_startDate_interval_forDate_, + unit, + datep, + tip, + date.pointer); } - ObjCBlock_ffiVoid? get cancellationHandler { - final _ret = _lib._objc_msgSend_668(_id, _lib._sel_cancellationHandler1); + objc.NSDate? dateFromComponents_(NSDateComponents comps) { + final _ret = _objc_msgSend_139( + this.pointer, _sel_dateFromComponents_, comps.pointer); return _ret.address == 0 ? null - : ObjCBlock_ffiVoid._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - set cancellationHandler(ObjCBlock_ffiVoid? value) { - return _lib._objc_msgSend_669( - _id, _lib._sel_setCancellationHandler_1, value?._id ?? ffi.nullptr); + NSDateComponents components_fromDate_(int unitFlags, objc.NSDate date) { + final _ret = _objc_msgSend_140( + this.pointer, _sel_components_fromDate_, unitFlags, date.pointer); + return NSDateComponents.castFromPointer(_ret, retain: true, release: true); } - ObjCBlock_ffiVoid? get pausingHandler { - final _ret = _lib._objc_msgSend_668(_id, _lib._sel_pausingHandler1); + objc.NSDate? dateByAddingComponents_toDate_options_( + NSDateComponents comps, objc.NSDate date, int opts) { + final _ret = _objc_msgSend_141( + this.pointer, + _sel_dateByAddingComponents_toDate_options_, + comps.pointer, + date.pointer, + opts); return _ret.address == 0 ? null - : ObjCBlock_ffiVoid._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - set pausingHandler(ObjCBlock_ffiVoid? value) { - return _lib._objc_msgSend_669( - _id, _lib._sel_setPausingHandler_1, value?._id ?? ffi.nullptr); + NSDateComponents components_fromDate_toDate_options_(int unitFlags, + objc.NSDate startingDate, objc.NSDate resultDate, int opts) { + final _ret = _objc_msgSend_142( + this.pointer, + _sel_components_fromDate_toDate_options_, + unitFlags, + startingDate.pointer, + resultDate.pointer, + opts); + return NSDateComponents.castFromPointer(_ret, retain: true, release: true); } - ObjCBlock_ffiVoid? get resumingHandler { - final _ret = _lib._objc_msgSend_668(_id, _lib._sel_resumingHandler1); - return _ret.address == 0 - ? null - : ObjCBlock_ffiVoid._(_ret, _lib, retain: true, release: true); + void getEra_year_month_day_fromDate_( + ffi.Pointer eraValuePointer, + ffi.Pointer yearValuePointer, + ffi.Pointer monthValuePointer, + ffi.Pointer dayValuePointer, + objc.NSDate date) { + _objc_msgSend_143( + this.pointer, + _sel_getEra_year_month_day_fromDate_, + eraValuePointer, + yearValuePointer, + monthValuePointer, + dayValuePointer, + date.pointer); + } + + void getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_( + ffi.Pointer eraValuePointer, + ffi.Pointer yearValuePointer, + ffi.Pointer weekValuePointer, + ffi.Pointer weekdayValuePointer, + objc.NSDate date) { + _objc_msgSend_143( + this.pointer, + _sel_getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_, + eraValuePointer, + yearValuePointer, + weekValuePointer, + weekdayValuePointer, + date.pointer); + } + + void getHour_minute_second_nanosecond_fromDate_( + ffi.Pointer hourValuePointer, + ffi.Pointer minuteValuePointer, + ffi.Pointer secondValuePointer, + ffi.Pointer nanosecondValuePointer, + objc.NSDate date) { + _objc_msgSend_143( + this.pointer, + _sel_getHour_minute_second_nanosecond_fromDate_, + hourValuePointer, + minuteValuePointer, + secondValuePointer, + nanosecondValuePointer, + date.pointer); } - set resumingHandler(ObjCBlock_ffiVoid? value) { - return _lib._objc_msgSend_669( - _id, _lib._sel_setResumingHandler_1, value?._id ?? ffi.nullptr); + int component_fromDate_(int unit, objc.NSDate date) { + return _objc_msgSend_144( + this.pointer, _sel_component_fromDate_, unit, date.pointer); } - void setUserInfoObject_forKey_(NSObject? objectOrNil, NSString key) { - _lib._objc_msgSend_135(_id, _lib._sel_setUserInfoObject_forKey_1, - objectOrNil?._id ?? ffi.nullptr, key._id); + objc.NSDate? dateWithEra_year_month_day_hour_minute_second_nanosecond_( + int eraValue, + int yearValue, + int monthValue, + int dayValue, + int hourValue, + int minuteValue, + int secondValue, + int nanosecondValue) { + final _ret = _objc_msgSend_145( + this.pointer, + _sel_dateWithEra_year_month_day_hour_minute_second_nanosecond_, + eraValue, + yearValue, + monthValue, + dayValue, + hourValue, + minuteValue, + secondValue, + nanosecondValue); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - bool get indeterminate { - return _lib._objc_msgSend_12(_id, _lib._sel_isIndeterminate1); + objc.NSDate? + dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_( + int eraValue, + int yearValue, + int weekValue, + int weekdayValue, + int hourValue, + int minuteValue, + int secondValue, + int nanosecondValue) { + final _ret = _objc_msgSend_145( + this.pointer, + _sel_dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_, + eraValue, + yearValue, + weekValue, + weekdayValue, + hourValue, + minuteValue, + secondValue, + nanosecondValue); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - double get fractionCompleted { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_fractionCompleted1) - : _lib._objc_msgSend_165(_id, _lib._sel_fractionCompleted1); + objc.NSDate startOfDayForDate_(objc.NSDate date) { + final _ret = + _objc_msgSend_146(this.pointer, _sel_startOfDayForDate_, date.pointer); + return objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - bool get finished { - return _lib._objc_msgSend_12(_id, _lib._sel_isFinished1); + NSDateComponents componentsInTimeZone_fromDate_( + NSTimeZone timezone, objc.NSDate date) { + final _ret = _objc_msgSend_147(this.pointer, + _sel_componentsInTimeZone_fromDate_, timezone.pointer, date.pointer); + return NSDateComponents.castFromPointer(_ret, retain: true, release: true); } - void cancel() { - _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + int compareDate_toDate_toUnitGranularity_( + objc.NSDate date1, objc.NSDate date2, int unit) { + return _objc_msgSend_148( + this.pointer, + _sel_compareDate_toDate_toUnitGranularity_, + date1.pointer, + date2.pointer, + unit); } - void pause() { - _lib._objc_msgSend_1(_id, _lib._sel_pause1); + bool isDate_equalToDate_toUnitGranularity_( + objc.NSDate date1, objc.NSDate date2, int unit) { + return _objc_msgSend_149( + this.pointer, + _sel_isDate_equalToDate_toUnitGranularity_, + date1.pointer, + date2.pointer, + unit); } - void resume() { - _lib._objc_msgSend_1(_id, _lib._sel_resume1); + bool isDate_inSameDayAsDate_(objc.NSDate date1, objc.NSDate date2) { + return _objc_msgSend_150(this.pointer, _sel_isDate_inSameDayAsDate_, + date1.pointer, date2.pointer); } - NSObject get userInfo { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_userInfo1); - return NSObject._(_ret, _lib, retain: true, release: true); + bool isDateInToday_(objc.NSDate date) { + return _objc_msgSend_107(this.pointer, _sel_isDateInToday_, date.pointer); } - NSString? get kind { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_kind1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + bool isDateInYesterday_(objc.NSDate date) { + return _objc_msgSend_107( + this.pointer, _sel_isDateInYesterday_, date.pointer); } - set kind(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setKind_1, value?._id ?? ffi.nullptr); + bool isDateInTomorrow_(objc.NSDate date) { + return _objc_msgSend_107( + this.pointer, _sel_isDateInTomorrow_, date.pointer); } - NSNumber? get estimatedTimeRemaining { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_estimatedTimeRemaining1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); + bool isDateInWeekend_(objc.NSDate date) { + return _objc_msgSend_107(this.pointer, _sel_isDateInWeekend_, date.pointer); } - set estimatedTimeRemaining(NSNumber? value) { - return _lib._objc_msgSend_670( - _id, _lib._sel_setEstimatedTimeRemaining_1, value?._id ?? ffi.nullptr); + bool rangeOfWeekendStartDate_interval_containingDate_( + ffi.Pointer> datep, + ffi.Pointer tip, + objc.NSDate date) { + return _objc_msgSend_151( + this.pointer, + _sel_rangeOfWeekendStartDate_interval_containingDate_, + datep, + tip, + date.pointer); } - NSNumber? get throughput { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_throughput1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); + bool nextWeekendStartDate_interval_options_afterDate_( + ffi.Pointer> datep, + ffi.Pointer tip, + int options, + objc.NSDate date) { + return _objc_msgSend_152( + this.pointer, + _sel_nextWeekendStartDate_interval_options_afterDate_, + datep, + tip, + options, + date.pointer); } - set throughput(NSNumber? value) { - return _lib._objc_msgSend_670( - _id, _lib._sel_setThroughput_1, value?._id ?? ffi.nullptr); + NSDateComponents components_fromDateComponents_toDateComponents_options_( + int unitFlags, + NSDateComponents startingDateComp, + NSDateComponents resultDateComp, + int options) { + final _ret = _objc_msgSend_153( + this.pointer, + _sel_components_fromDateComponents_toDateComponents_options_, + unitFlags, + startingDateComp.pointer, + resultDateComp.pointer, + options); + return NSDateComponents.castFromPointer(_ret, retain: true, release: true); } - NSString? get fileOperationKind { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_fileOperationKind1); + objc.NSDate? dateByAddingUnit_value_toDate_options_( + int unit, int value, objc.NSDate date, int options) { + final _ret = _objc_msgSend_154( + this.pointer, + _sel_dateByAddingUnit_value_toDate_options_, + unit, + value, + date.pointer, + options); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - set fileOperationKind(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setFileOperationKind_1, value?._id ?? ffi.nullptr); + void enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_( + objc.NSDate start, + NSDateComponents comps, + int opts, + ObjCBlock_ffiVoid_NSDate_bool_bool block) { + _objc_msgSend_155( + this.pointer, + _sel_enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_, + start.pointer, + comps.pointer, + opts, + block.pointer); } - NSURL? get fileURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_fileURL1); + objc.NSDate? nextDateAfterDate_matchingComponents_options_( + objc.NSDate date, NSDateComponents comps, int options) { + final _ret = _objc_msgSend_156( + this.pointer, + _sel_nextDateAfterDate_matchingComponents_options_, + date.pointer, + comps.pointer, + options); return _ret.address == 0 ? null - : NSURL._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - set fileURL(NSURL? value) { - return _lib._objc_msgSend_671( - _id, _lib._sel_setFileURL_1, value?._id ?? ffi.nullptr); + objc.NSDate? nextDateAfterDate_matchingUnit_value_options_( + objc.NSDate date, int unit, int value, int options) { + final _ret = _objc_msgSend_157( + this.pointer, + _sel_nextDateAfterDate_matchingUnit_value_options_, + date.pointer, + unit, + value, + options); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - NSNumber? get fileTotalCount { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_fileTotalCount1); + objc.NSDate? nextDateAfterDate_matchingHour_minute_second_options_( + objc.NSDate date, + int hourValue, + int minuteValue, + int secondValue, + int options) { + final _ret = _objc_msgSend_158( + this.pointer, + _sel_nextDateAfterDate_matchingHour_minute_second_options_, + date.pointer, + hourValue, + minuteValue, + secondValue, + options); return _ret.address == 0 ? null - : NSNumber._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - set fileTotalCount(NSNumber? value) { - return _lib._objc_msgSend_670( - _id, _lib._sel_setFileTotalCount_1, value?._id ?? ffi.nullptr); + objc.NSDate? dateBySettingUnit_value_ofDate_options_( + int unit, int v, objc.NSDate date, int opts) { + final _ret = _objc_msgSend_154( + this.pointer, + _sel_dateBySettingUnit_value_ofDate_options_, + unit, + v, + date.pointer, + opts); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - NSNumber? get fileCompletedCount { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_fileCompletedCount1); + objc.NSDate? dateBySettingHour_minute_second_ofDate_options_( + int h, int m, int s, objc.NSDate date, int opts) { + final _ret = _objc_msgSend_159( + this.pointer, + _sel_dateBySettingHour_minute_second_ofDate_options_, + h, + m, + s, + date.pointer, + opts); return _ret.address == 0 ? null - : NSNumber._(_ret, _lib, retain: true, release: true); + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - set fileCompletedCount(NSNumber? value) { - return _lib._objc_msgSend_670( - _id, _lib._sel_setFileCompletedCount_1, value?._id ?? ffi.nullptr); + bool date_matchesComponents_(objc.NSDate date, NSDateComponents components) { + return _objc_msgSend_160(this.pointer, _sel_date_matchesComponents_, + date.pointer, components.pointer); } - void publish() { - _lib._objc_msgSend_1(_id, _lib._sel_publish1); + static NSCalendar new1() { + final _ret = _objc_msgSend_40(_class_NSCalendar, _sel_new); + return NSCalendar.castFromPointer(_ret, retain: false, release: true); } - void unpublish() { - _lib._objc_msgSend_1(_id, _lib._sel_unpublish1); + static NSCalendar allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSCalendar, _sel_allocWithZone_, zone); + return NSCalendar.castFromPointer(_ret, retain: false, release: true); } - static NSObject addSubscriberForFileURL_withPublishingHandler_( - SwiftLibrary _lib, - NSURL url, - ObjCBlock_ffiVoid_NSProgress publishingHandler) { - final _ret = _lib._objc_msgSend_672( - _lib._class_NSProgress1, - _lib._sel_addSubscriberForFileURL_withPublishingHandler_1, - url._id, - publishingHandler._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSCalendar alloc() { + final _ret = _objc_msgSend_40(_class_NSCalendar, _sel_alloc); + return NSCalendar.castFromPointer(_ret, retain: false, release: true); } - static void removeSubscriber_(SwiftLibrary _lib, NSObject subscriber) { - _lib._objc_msgSend_15( - _lib._class_NSProgress1, _lib._sel_removeSubscriber_1, subscriber._id); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSCalendar, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - bool get old { - return _lib._objc_msgSend_12(_id, _lib._sel_isOld1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSCalendar, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - @override - NSProgress init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSProgress._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSCalendar, _sel_accessInstanceVariablesDirectly); } - static NSProgress new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSProgress1, _lib._sel_new1); - return NSProgress._(_ret, _lib, retain: false, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSCalendar, _sel_useStoredAccessor); } - static NSProgress allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSProgress1, _lib._sel_allocWithZone_1, zone); - return NSProgress._(_ret, _lib, retain: false, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSCalendar, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static NSProgress alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSProgress1, _lib._sel_alloc1); - return NSProgress._(_ret, _lib, retain: false, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSCalendar, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSProgress1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSCalendar, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSCalendar, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSCalendar, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSCalendar = objc.getClass("NSCalendar"); +late final _sel_currentCalendar = objc.registerName("currentCalendar"); +final _objc_msgSend_121 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_autoupdatingCurrentCalendar = + objc.registerName("autoupdatingCurrentCalendar"); +late final _sel_calendarWithIdentifier_ = + objc.registerName("calendarWithIdentifier:"); +final _objc_msgSend_122 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithCalendarIdentifier_ = + objc.registerName("initWithCalendarIdentifier:"); +late final _sel_calendarIdentifier = objc.registerName("calendarIdentifier"); +final _objc_msgSend_123 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_124 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_firstWeekday = objc.registerName("firstWeekday"); +late final _sel_setFirstWeekday_ = objc.registerName("setFirstWeekday:"); +final _objc_msgSend_125 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_minimumDaysInFirstWeek = + objc.registerName("minimumDaysInFirstWeek"); +late final _sel_setMinimumDaysInFirstWeek_ = + objc.registerName("setMinimumDaysInFirstWeek:"); +late final _sel_eraSymbols = objc.registerName("eraSymbols"); +late final _sel_longEraSymbols = objc.registerName("longEraSymbols"); +late final _sel_monthSymbols = objc.registerName("monthSymbols"); +late final _sel_shortMonthSymbols = objc.registerName("shortMonthSymbols"); +late final _sel_veryShortMonthSymbols = + objc.registerName("veryShortMonthSymbols"); +late final _sel_standaloneMonthSymbols = + objc.registerName("standaloneMonthSymbols"); +late final _sel_shortStandaloneMonthSymbols = + objc.registerName("shortStandaloneMonthSymbols"); +late final _sel_veryShortStandaloneMonthSymbols = + objc.registerName("veryShortStandaloneMonthSymbols"); +late final _sel_weekdaySymbols = objc.registerName("weekdaySymbols"); +late final _sel_shortWeekdaySymbols = objc.registerName("shortWeekdaySymbols"); +late final _sel_veryShortWeekdaySymbols = + objc.registerName("veryShortWeekdaySymbols"); +late final _sel_standaloneWeekdaySymbols = + objc.registerName("standaloneWeekdaySymbols"); +late final _sel_shortStandaloneWeekdaySymbols = + objc.registerName("shortStandaloneWeekdaySymbols"); +late final _sel_veryShortStandaloneWeekdaySymbols = + objc.registerName("veryShortStandaloneWeekdaySymbols"); +late final _sel_quarterSymbols = objc.registerName("quarterSymbols"); +late final _sel_shortQuarterSymbols = objc.registerName("shortQuarterSymbols"); +late final _sel_standaloneQuarterSymbols = + objc.registerName("standaloneQuarterSymbols"); +late final _sel_shortStandaloneQuarterSymbols = + objc.registerName("shortStandaloneQuarterSymbols"); +late final _sel_AMSymbol = objc.registerName("AMSymbol"); +late final _sel_PMSymbol = objc.registerName("PMSymbol"); + +abstract class NSCalendarUnit { + static const int NSCalendarUnitEra = 2; + static const int NSCalendarUnitYear = 4; + static const int NSCalendarUnitMonth = 8; + static const int NSCalendarUnitDay = 16; + static const int NSCalendarUnitHour = 32; + static const int NSCalendarUnitMinute = 64; + static const int NSCalendarUnitSecond = 128; + static const int NSCalendarUnitWeekday = 512; + static const int NSCalendarUnitWeekdayOrdinal = 1024; + static const int NSCalendarUnitQuarter = 2048; + static const int NSCalendarUnitWeekOfMonth = 4096; + static const int NSCalendarUnitWeekOfYear = 8192; + static const int NSCalendarUnitYearForWeekOfYear = 16384; + static const int NSCalendarUnitNanosecond = 32768; + static const int NSCalendarUnitCalendar = 1048576; + static const int NSCalendarUnitTimeZone = 2097152; + static const int NSEraCalendarUnit = 2; + static const int NSYearCalendarUnit = 4; + static const int NSMonthCalendarUnit = 8; + static const int NSDayCalendarUnit = 16; + static const int NSHourCalendarUnit = 32; + static const int NSMinuteCalendarUnit = 64; + static const int NSSecondCalendarUnit = 128; + static const int NSWeekCalendarUnit = 256; + static const int NSWeekdayCalendarUnit = 512; + static const int NSWeekdayOrdinalCalendarUnit = 1024; + static const int NSQuarterCalendarUnit = 2048; + static const int NSWeekOfMonthCalendarUnit = 4096; + static const int NSWeekOfYearCalendarUnit = 8192; + static const int NSYearForWeekOfYearCalendarUnit = 16384; + static const int NSCalendarCalendarUnit = 1048576; + static const int NSTimeZoneCalendarUnit = 2097152; +} + +late final _sel_minimumRangeOfUnit_ = objc.registerName("minimumRangeOfUnit:"); +final _objc_msgSend_126 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, int)>(); +final _objc_msgSend_126Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_maximumRangeOfUnit_ = objc.registerName("maximumRangeOfUnit:"); +late final _sel_rangeOfUnit_inUnit_forDate_ = + objc.registerName("rangeOfUnit:inUnit:forDate:"); +final _objc_msgSend_127 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer)>(); +final _objc_msgSend_127Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer)>(); +late final _sel_ordinalityOfUnit_inUnit_forDate_ = + objc.registerName("ordinalityOfUnit:inUnit:forDate:"); +final _objc_msgSend_128 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer)>(); +late final _sel_rangeOfUnit_startDate_interval_forDate_ = + objc.registerName("rangeOfUnit:startDate:interval:forDate:"); +final _objc_msgSend_129 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer)>(); + +class NSDateComponents extends objc.NSObject { + NSDateComponents._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSDateComponents] that points to the same underlying object as [other]. + NSDateComponents.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSDateComponents] that wraps the given raw object pointer. + NSDateComponents.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSDateComponents]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSDateComponents); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSProgress1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + NSCalendar? get calendar { + final _ret = _objc_msgSend_130(this.pointer, _sel_calendar); + return _ret.address == 0 + ? null + : NSCalendar.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSProgress1, _lib._sel_accessInstanceVariablesDirectly1); + set calendar(NSCalendar? value) { + return _objc_msgSend_131( + this.pointer, _sel_setCalendar_, value?.pointer ?? ffi.nullptr); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSProgress1, _lib._sel_useStoredAccessor1); + NSTimeZone? get timeZone { + final _ret = _objc_msgSend_132(this.pointer, _sel_timeZone); + return _ret.address == 0 + ? null + : NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSProgress1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + set timeZone(NSTimeZone? value) { + return _objc_msgSend_133( + this.pointer, _sel_setTimeZone_, value?.pointer ?? ffi.nullptr); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSProgress1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + int get era { + return _objc_msgSend_114(this.pointer, _sel_era); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSProgress1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set era(int value) { + return _objc_msgSend_134(this.pointer, _sel_setEra_, value); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSProgress1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + int get year { + return _objc_msgSend_114(this.pointer, _sel_year); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSProgress1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + set year(int value) { + return _objc_msgSend_134(this.pointer, _sel_setYear_, value); } -} -ffi.Pointer<_ObjCBlock> _ObjCBlock_ffiVoid_NSProgress_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer arg0)>>() - .asFunction< - ffi.Pointer<_ObjCBlock> Function(ffi.Pointer)>()(arg0); -final _ObjCBlock_ffiVoid_NSProgress_closureRegistry = - Function(ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSProgress_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSProgress_registerClosure( - ffi.Pointer<_ObjCBlock> Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSProgress_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSProgress_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + int get month { + return _objc_msgSend_114(this.pointer, _sel_month); + } -ffi.Pointer<_ObjCBlock> _ObjCBlock_ffiVoid_NSProgress_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSProgress_closureRegistry[block.ref.target.address]!( - arg0); + set month(int value) { + return _objc_msgSend_134(this.pointer, _sel_setMonth_, value); + } -class ObjCBlock_ffiVoid_NSProgress extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSProgress._(ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + int get day { + return _objc_msgSend_114(this.pointer, _sel_day); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSProgress castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSProgress._(pointer, lib, - retain: retain, release: release); + set day(int value) { + return _objc_msgSend_134(this.pointer, _sel_setDay_, value); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSProgress.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSProgress_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + int get hour { + return _objc_msgSend_114(this.pointer, _sel_hour); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSProgress.fromFunction( - SwiftLibrary lib, ObjCBlock_ffiVoid? Function(NSProgress) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSProgress_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSProgress_registerClosure( - (ffi.Pointer arg0) => - fn(NSProgress._(arg0, lib, retain: true, release: true)) - ?.retainAndReturnPointer() ?? - ffi.nullptr)), - lib); - static ffi.Pointer? _dartFuncTrampoline; + set hour(int value) { + return _objc_msgSend_134(this.pointer, _sel_setHour_, value); + } - ObjCBlock_ffiVoid? call(NSProgress arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>() - (_id, arg0._id) - .address == - 0 - ? null - : ObjCBlock_ffiVoid._( - _id.ref.invoke - .cast Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>()(_id, arg0._id), - _lib, - retain: false, - release: true); -} + int get minute { + return _objc_msgSend_114(this.pointer, _sel_minute); + } -void _ObjCBlock_ffiVoid_NSData_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_NSData_NSError_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSData_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSData_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSData_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSData_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + set minute(int value) { + return _objc_msgSend_134(this.pointer, _sel_setMinute_, value); + } -void _ObjCBlock_ffiVoid_NSData_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_NSData_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1); + int get second { + return _objc_msgSend_114(this.pointer, _sel_second); + } -class ObjCBlock_ffiVoid_NSData_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSData_NSError._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + set second(int value) { + return _objc_msgSend_134(this.pointer, _sel_setSecond_, value); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSData_NSError castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSData_NSError._(pointer, lib, - retain: retain, release: release); + int get nanosecond { + return _objc_msgSend_114(this.pointer, _sel_nanosecond); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSData_NSError.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + set nanosecond(int value) { + return _objc_msgSend_134(this.pointer, _sel_setNanosecond_, value); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSData_NSError.fromFunction( - SwiftLibrary lib, void Function(NSData?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= - ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSData_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSData._(arg0, lib, retain: true, release: true), - arg1.address == 0 - ? null - : NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + int get weekday { + return _objc_msgSend_114(this.pointer, _sel_weekday); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSData_NSError.listener( - SwiftLibrary lib, void Function(NSData?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= - ffi.NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSData_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSData_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSData._(arg0, lib, retain: true, release: true), - arg1.address == 0 - ? null - : NSError._(arg1, lib, - retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; + set weekday(int value) { + return _objc_msgSend_134(this.pointer, _sel_setWeekday_, value); + } - void call(NSData? arg0, NSError? arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1?._id ?? ffi.nullptr); -} + int get weekdayOrdinal { + return _objc_msgSend_114(this.pointer, _sel_weekdayOrdinal); + } -abstract class NSItemProviderFileOptions { - static const int NSItemProviderFileOptionOpenInPlace = 1; -} + set weekdayOrdinal(int value) { + return _objc_msgSend_134(this.pointer, _sel_setWeekdayOrdinal_, value); + } -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>)>()(arg0); -final _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureRegistry = - Function(ffi.Pointer<_ObjCBlock>)>{}; -int _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_registerClosure( - ffi.Pointer Function(ffi.Pointer<_ObjCBlock>) fn) { - final id = - ++_ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureRegistryIndex; - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + int get quarter { + return _objc_msgSend_114(this.pointer, _sel_quarter); + } -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) => - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureRegistry[ - block.ref.target.address]!(arg0); + set quarter(int value) { + return _objc_msgSend_134(this.pointer, _sel_setQuarter_, value); + } -class ObjCBlock_NSProgress_ffiVoidNSURLboolNSError extends _ObjCBlockBase { - ObjCBlock_NSProgress_ffiVoidNSURLboolNSError._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + int get weekOfMonth { + return _objc_msgSend_114(this.pointer, _sel_weekOfMonth); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_NSProgress_ffiVoidNSURLboolNSError castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_NSProgress_ffiVoidNSURLboolNSError._(pointer, lib, - retain: retain, release: release); + set weekOfMonth(int value) { + return _objc_msgSend_134(this.pointer, _sel_setWeekOfMonth_, value); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSProgress_ffiVoidNSURLboolNSError.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + int get weekOfYear { + return _objc_msgSend_114(this.pointer, _sel_weekOfYear); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSProgress_ffiVoidNSURLboolNSError.fromFunction(SwiftLibrary lib, - NSProgress? Function(ObjCBlock_ffiVoid_NSURL_bool_NSError) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureTrampoline) - .cast(), - _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_registerClosure( - (ffi.Pointer<_ObjCBlock> arg0) => - fn(ObjCBlock_ffiVoid_NSURL_bool_NSError._(arg0, lib, retain: true, release: true)) - ?.retainAndReturnPointer() ?? - ffi.nullptr)), - lib); - static ffi.Pointer? _dartFuncTrampoline; + set weekOfYear(int value) { + return _objc_msgSend_134(this.pointer, _sel_setWeekOfYear_, value); + } - NSProgress? call(ObjCBlock_ffiVoid_NSURL_bool_NSError arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer<_ObjCBlock>)>() - (_id, arg0._id) - .address == - 0 - ? null - : NSProgress._( - _id.ref.invoke - .cast Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer<_ObjCBlock>)>()(_id, arg0._id), - _lib, - retain: false, - release: true); -} + int get yearForWeekOfYear { + return _objc_msgSend_114(this.pointer, _sel_yearForWeekOfYear); + } -void _ObjCBlock_ffiVoid_NSURL_bool_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - bool arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, bool, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureRegistry = , bool, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSURL_bool_NSError_registerClosure( - void Function(ffi.Pointer, bool, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSURL_bool_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + set yearForWeekOfYear(int value) { + return _objc_msgSend_134(this.pointer, _sel_setYearForWeekOfYear_, value); + } -void _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - bool arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); + bool get leapMonth { + return _objc_msgSend_7(this.pointer, _sel_isLeapMonth); + } -class ObjCBlock_ffiVoid_NSURL_bool_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURL_bool_NSError._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + set leapMonth(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setLeapMonth_, value); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSURL_bool_NSError castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSURL_bool_NSError._(pointer, lib, - retain: retain, release: release); + objc.NSDate? get date { + final _ret = _objc_msgSend_116(this.pointer, _sel_date); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURL_bool_NSError.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURL_bool_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + int week() { + return _objc_msgSend_114(this.pointer, _sel_week); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURL_bool_NSError.fromFunction( - SwiftLibrary lib, void Function(NSURL?, bool, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= - ffi.Pointer.fromFunction, ffi.Pointer, ffi.Bool, ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURL_bool_NSError_registerClosure( - (ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) => fn( - arg0.address == 0 - ? null - : NSURL._(arg0, lib, retain: true, release: true), - arg1, - arg2.address == 0 - ? null - : NSError._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + void setWeek_(int v) { + _objc_msgSend_135(this.pointer, _sel_setWeek_, v); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSURL_bool_NSError.listener( - SwiftLibrary lib, void Function(NSURL?, bool, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= - ffi.NativeCallable, ffi.Pointer, ffi.Bool, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSURL_bool_NSError_registerClosure( - (ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) => fn( - arg0.address == 0 - ? null - : NSURL._(arg0, lib, retain: true, release: true), - arg1, - arg2.address == 0 - ? null - : NSError._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Bool, ffi.Pointer)>? _dartFuncListenerTrampoline; + void setValue_forComponent_(int value, int unit) { + _objc_msgSend_136(this.pointer, _sel_setValue_forComponent_, value, unit); + } - void call(NSURL? arg0, bool arg1, NSError? arg2) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Bool arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - bool, ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1, arg2?._id ?? ffi.nullptr); -} + int valueForComponent_(int unit) { + return _objc_msgSend_137(this.pointer, _sel_valueForComponent_, unit); + } -void _ObjCBlock_ffiVoid_NSURL_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_NSURL_NSError_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSURL_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSURL_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSURL_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURL_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + bool get validDate { + return _objc_msgSend_7(this.pointer, _sel_isValidDate); + } -void _ObjCBlock_ffiVoid_NSURL_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_NSURL_NSError_closureRegistry[block.ref.target.address]!( - arg0, arg1); + bool isValidDateInCalendar_(NSCalendar calendar) { + return _objc_msgSend_138( + this.pointer, _sel_isValidDateInCalendar_, calendar.pointer); + } -class ObjCBlock_ffiVoid_NSURL_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURL_NSError._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + @override + NSDateComponents init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSDateComponents.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSURL_NSError castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSURL_NSError._(pointer, lib, - retain: retain, release: release); + static NSDateComponents new1() { + final _ret = _objc_msgSend_40(_class_NSDateComponents, _sel_new); + return NSDateComponents.castFromPointer(_ret, retain: false, release: true); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURL_NSError.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURL_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + static NSDateComponents allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSDateComponents, _sel_allocWithZone_, zone); + return NSDateComponents.castFromPointer(_ret, retain: false, release: true); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURL_NSError.fromFunction( - SwiftLibrary lib, void Function(NSURL?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURL_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURL_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 ? null : NSURL._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + static NSDateComponents alloc() { + final _ret = _objc_msgSend_40(_class_NSDateComponents, _sel_alloc); + return NSDateComponents.castFromPointer(_ret, retain: false, release: true); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSURL_NSError.listener( - SwiftLibrary lib, void Function(NSURL?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= - ffi.NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSURL_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSURL_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSURL._(arg0, lib, retain: true, release: true), - arg1.address == 0 - ? null - : NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSDateComponents, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); + } - void call(NSURL? arg0, NSError? arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1?._id ?? ffi.nullptr); -} + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSDateComponents, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); + } -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>)>()(arg0); -final _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureRegistry = - Function(ffi.Pointer<_ObjCBlock>)>{}; -int _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_registerClosure( - ffi.Pointer Function(ffi.Pointer<_ObjCBlock>) fn) { - final id = - ++_ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureRegistryIndex; - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSDateComponents, _sel_accessInstanceVariablesDirectly); + } -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) => - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureRegistry[ - block.ref.target.address]!(arg0); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSDateComponents, _sel_useStoredAccessor); + } -class ObjCBlock_NSProgress_ffiVoidObjCObjectNSError extends _ObjCBlockBase { - ObjCBlock_NSProgress_ffiVoidObjCObjectNSError._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSDateComponents, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_NSProgress_ffiVoidObjCObjectNSError castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_NSProgress_ffiVoidObjCObjectNSError._(pointer, lib, - retain: retain, release: release); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSDateComponents, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSProgress_ffiVoidObjCObjectNSError.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSDateComponents, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSDateComponents, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSDateComponents, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSDateComponents = objc.getClass("NSDateComponents"); +late final _sel_calendar = objc.registerName("calendar"); +final _objc_msgSend_130 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCalendar_ = objc.registerName("setCalendar:"); +final _objc_msgSend_131 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_132 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_133 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_era = objc.registerName("era"); +late final _sel_setEra_ = objc.registerName("setEra:"); +final _objc_msgSend_134 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_year = objc.registerName("year"); +late final _sel_setYear_ = objc.registerName("setYear:"); +late final _sel_month = objc.registerName("month"); +late final _sel_setMonth_ = objc.registerName("setMonth:"); +late final _sel_day = objc.registerName("day"); +late final _sel_setDay_ = objc.registerName("setDay:"); +late final _sel_hour = objc.registerName("hour"); +late final _sel_setHour_ = objc.registerName("setHour:"); +late final _sel_minute = objc.registerName("minute"); +late final _sel_setMinute_ = objc.registerName("setMinute:"); +late final _sel_second = objc.registerName("second"); +late final _sel_setSecond_ = objc.registerName("setSecond:"); +late final _sel_nanosecond = objc.registerName("nanosecond"); +late final _sel_setNanosecond_ = objc.registerName("setNanosecond:"); +late final _sel_weekday = objc.registerName("weekday"); +late final _sel_setWeekday_ = objc.registerName("setWeekday:"); +late final _sel_weekdayOrdinal = objc.registerName("weekdayOrdinal"); +late final _sel_setWeekdayOrdinal_ = objc.registerName("setWeekdayOrdinal:"); +late final _sel_quarter = objc.registerName("quarter"); +late final _sel_setQuarter_ = objc.registerName("setQuarter:"); +late final _sel_weekOfMonth = objc.registerName("weekOfMonth"); +late final _sel_setWeekOfMonth_ = objc.registerName("setWeekOfMonth:"); +late final _sel_weekOfYear = objc.registerName("weekOfYear"); +late final _sel_setWeekOfYear_ = objc.registerName("setWeekOfYear:"); +late final _sel_yearForWeekOfYear = objc.registerName("yearForWeekOfYear"); +late final _sel_setYearForWeekOfYear_ = + objc.registerName("setYearForWeekOfYear:"); +late final _sel_isLeapMonth = objc.registerName("isLeapMonth"); +late final _sel_setLeapMonth_ = objc.registerName("setLeapMonth:"); +late final _sel_date = objc.registerName("date"); +late final _sel_week = objc.registerName("week"); +late final _sel_setWeek_ = objc.registerName("setWeek:"); +final _objc_msgSend_135 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setValue_forComponent_ = + objc.registerName("setValue:forComponent:"); +final _objc_msgSend_136 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Long, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int, int)>(); +late final _sel_valueForComponent_ = objc.registerName("valueForComponent:"); +final _objc_msgSend_137 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_isValidDate = objc.registerName("isValidDate"); +late final _sel_isValidDateInCalendar_ = + objc.registerName("isValidDateInCalendar:"); +final _objc_msgSend_138 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dateFromComponents_ = objc.registerName("dateFromComponents:"); +final _objc_msgSend_139 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_components_fromDate_ = + objc.registerName("components:fromDate:"); +final _objc_msgSend_140 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_NSProgress_ffiVoidObjCObjectNSError.fromFunction(SwiftLibrary lib, - NSProgress? Function(ObjCBlock_ffiVoid_ObjCObject_NSError) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>)>( - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureTrampoline) - .cast(), - _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_registerClosure( - (ffi.Pointer<_ObjCBlock> arg0) => - fn(ObjCBlock_ffiVoid_ObjCObject_NSError._(arg0, lib, retain: true, release: true)) - ?.retainAndReturnPointer() ?? - ffi.nullptr)), - lib); - static ffi.Pointer? _dartFuncTrampoline; +abstract class NSCalendarOptions { + static const int NSCalendarWrapComponents = 1; + static const int NSCalendarMatchStrictly = 2; + static const int NSCalendarSearchBackwards = 4; + static const int NSCalendarMatchPreviousTimePreservingSmallerUnits = 256; + static const int NSCalendarMatchNextTimePreservingSmallerUnits = 512; + static const int NSCalendarMatchNextTime = 1024; + static const int NSCalendarMatchFirst = 4096; + static const int NSCalendarMatchLast = 8192; +} - NSProgress? call(ObjCBlock_ffiVoid_ObjCObject_NSError arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer<_ObjCBlock>)>() - (_id, arg0._id) - .address == - 0 - ? null - : NSProgress._( - _id.ref.invoke - .cast Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer<_ObjCBlock>)>()(_id, arg0._id), - _lib, - retain: false, - release: true); +late final _sel_dateByAddingComponents_toDate_options_ = + objc.registerName("dateByAddingComponents:toDate:options:"); +final _objc_msgSend_141 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_components_fromDate_toDate_options_ = + objc.registerName("components:fromDate:toDate:options:"); +final _objc_msgSend_142 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_getEra_year_month_day_fromDate_ = + objc.registerName("getEra:year:month:day:fromDate:"); +final _objc_msgSend_143 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_ = + objc.registerName("getEra:yearForWeekOfYear:weekOfYear:weekday:fromDate:"); +late final _sel_getHour_minute_second_nanosecond_fromDate_ = + objc.registerName("getHour:minute:second:nanosecond:fromDate:"); +late final _sel_component_fromDate_ = objc.registerName("component:fromDate:"); +final _objc_msgSend_144 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Long Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_dateWithEra_year_month_day_hour_minute_second_nanosecond_ = objc + .registerName("dateWithEra:year:month:day:hour:minute:second:nanosecond:"); +final _objc_msgSend_145 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + int, + int, + int, + int, + int, + int)>(); +late final _sel_dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_ = + objc.registerName( + "dateWithEra:yearForWeekOfYear:weekOfYear:weekday:hour:minute:second:nanosecond:"); +late final _sel_startOfDayForDate_ = objc.registerName("startOfDayForDate:"); +final _objc_msgSend_146 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_componentsInTimeZone_fromDate_ = + objc.registerName("componentsInTimeZone:fromDate:"); +final _objc_msgSend_147 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +abstract class NSComparisonResult { + static const int NSOrderedAscending = -1; + static const int NSOrderedSame = 0; + static const int NSOrderedDescending = 1; } -void _ObjCBlock_ffiVoid_ObjCObject_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => +late final _sel_compareDate_toDate_toUnitGranularity_ = + objc.registerName("compareDate:toDate:toUnitGranularity:"); +final _objc_msgSend_148 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_isDate_equalToDate_toUnitGranularity_ = + objc.registerName("isDate:equalToDate:toUnitGranularity:"); +final _objc_msgSend_149 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_isDate_inSameDayAsDate_ = + objc.registerName("isDate:inSameDayAsDate:"); +final _objc_msgSend_150 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_isDateInToday_ = objc.registerName("isDateInToday:"); +late final _sel_isDateInYesterday_ = objc.registerName("isDateInYesterday:"); +late final _sel_isDateInTomorrow_ = objc.registerName("isDateInTomorrow:"); +late final _sel_isDateInWeekend_ = objc.registerName("isDateInWeekend:"); +late final _sel_rangeOfWeekendStartDate_interval_containingDate_ = + objc.registerName("rangeOfWeekendStartDate:interval:containingDate:"); +final _objc_msgSend_151 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_nextWeekendStartDate_interval_options_afterDate_ = + objc.registerName("nextWeekendStartDate:interval:options:afterDate:"); +final _objc_msgSend_152 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_components_fromDateComponents_toDateComponents_options_ = objc + .registerName("components:fromDateComponents:toDateComponents:options:"); +final _objc_msgSend_153 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_dateByAddingUnit_value_toDate_options_ = + objc.registerName("dateByAddingUnit:value:toDate:options:"); +final _objc_msgSend_154 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Long, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer, + int)>(); +void _ObjCBlock_ffiVoid_NSDate_bool_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) => block.ref.target .cast< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() + ffi.Void Function(ffi.Pointer arg0, + ffi.Bool arg1, ffi.Pointer arg2)>>() .asFunction< - void Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_ObjCObject_NSError_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ObjCObject_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_ObjCObject_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_ObjCObject_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_ObjCObject_NSError_closureRegistry[id] = fn; + void Function(ffi.Pointer, bool, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistry = , bool, ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSDate_bool_bool_registerClosure( + void Function(ffi.Pointer, bool, ffi.Pointer) + fn) { + final id = ++_ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_ObjCObject_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_ObjCObject_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1); +void _ObjCBlock_ffiVoid_NSDate_bool_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); -class ObjCBlock_ffiVoid_ObjCObject_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ObjCObject_NSError._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, +class ObjCBlock_ffiVoid_NSDate_bool_bool extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSDate_bool_bool._(ffi.Pointer pointer, {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ObjCObject_NSError castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ObjCObject_NSError._(pointer, lib, + static ObjCBlock_ffiVoid_NSDate_bool_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSDate_bool_bool._(pointer, retain: retain, release: release); } @@ -54139,24 +6314,22 @@ class ObjCBlock_ffiVoid_ObjCObject_NSError extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_NSError.fromFunctionPointer( - SwiftLibrary lib, + ObjCBlock_ffiVoid_NSDate_bool_bool.fromFunctionPointer( ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> + ffi.Void Function(ffi.Pointer arg0, + ffi.Bool arg1, ffi.Pointer arg2)>> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDate_bool_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -54164,21 +6337,21 @@ class ObjCBlock_ffiVoid_ObjCObject_NSError extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_NSError.fromFunction(SwiftLibrary lib, void Function(NSObject?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 ? null : NSObject._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSError._(arg1, lib, retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSDate_bool_bool.fromFunction( + void Function(objc.NSDate?, bool, ffi.Pointer) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDate_bool_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSDate_bool_bool_registerClosure( + (ffi.Pointer arg0, bool arg1, + ffi.Pointer arg2) => + fn(arg0.address == 0 ? null : objc.NSDate.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -54190,4800 +6363,7067 @@ class ObjCBlock_ffiVoid_ObjCObject_NSError extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ObjCObject_NSError.listener( - SwiftLibrary lib, void Function(NSObject?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= - ffi.NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ObjCObject_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSObject._(arg0, lib, - retain: true, release: true), - arg1.address == 0 - ? null - : NSError._(arg1, lib, retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSDate_bool_bool.listener( + void Function(objc.NSDate?, bool, ffi.Pointer) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSDate_bool_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSDate_bool_bool_registerClosure( + (ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) => + fn(arg0.address == 0 ? null : objc.NSDate.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>? _dartFuncListenerTrampoline; - void call(NSObject? arg0, NSError? arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1?._id ?? ffi.nullptr); -} + void call(objc.NSDate? arg0, bool arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1, arg2); +} + +late final _sel_enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_ = + objc.registerName( + "enumerateDatesStartingAfterDate:matchingComponents:options:usingBlock:"); +final _objc_msgSend_155 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_nextDateAfterDate_matchingComponents_options_ = + objc.registerName("nextDateAfterDate:matchingComponents:options:"); +final _objc_msgSend_156 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_nextDateAfterDate_matchingUnit_value_options_ = + objc.registerName("nextDateAfterDate:matchingUnit:value:options:"); +final _objc_msgSend_157 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Long, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + int, + int)>(); +late final _sel_nextDateAfterDate_matchingHour_minute_second_options_ = + objc.registerName("nextDateAfterDate:matchingHour:minute:second:options:"); +final _objc_msgSend_158 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + int, + int, + int)>(); +late final _sel_dateBySettingUnit_value_ofDate_options_ = + objc.registerName("dateBySettingUnit:value:ofDate:options:"); +late final _sel_dateBySettingHour_minute_second_ofDate_options_ = + objc.registerName("dateBySettingHour:minute:second:ofDate:options:"); +final _objc_msgSend_159 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + int, + ffi.Pointer, + int)>(); +late final _sel_date_matchesComponents_ = + objc.registerName("date:matchesComponents:"); +final _objc_msgSend_160 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +final _objc_msgSend_161 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isLenient = objc.registerName("isLenient"); +late final _sel_setLenient_ = objc.registerName("setLenient:"); +late final _sel_twoDigitStartDate = objc.registerName("twoDigitStartDate"); +late final _sel_setTwoDigitStartDate_ = + objc.registerName("setTwoDigitStartDate:"); +final _objc_msgSend_162 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_defaultDate = objc.registerName("defaultDate"); +late final _sel_setDefaultDate_ = objc.registerName("setDefaultDate:"); +late final _sel_setEraSymbols_ = objc.registerName("setEraSymbols:"); +final _objc_msgSend_163 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setMonthSymbols_ = objc.registerName("setMonthSymbols:"); +late final _sel_setShortMonthSymbols_ = + objc.registerName("setShortMonthSymbols:"); +late final _sel_setWeekdaySymbols_ = objc.registerName("setWeekdaySymbols:"); +late final _sel_setShortWeekdaySymbols_ = + objc.registerName("setShortWeekdaySymbols:"); +late final _sel_setAMSymbol_ = objc.registerName("setAMSymbol:"); +late final _sel_setPMSymbol_ = objc.registerName("setPMSymbol:"); +late final _sel_setLongEraSymbols_ = objc.registerName("setLongEraSymbols:"); +late final _sel_setVeryShortMonthSymbols_ = + objc.registerName("setVeryShortMonthSymbols:"); +late final _sel_setStandaloneMonthSymbols_ = + objc.registerName("setStandaloneMonthSymbols:"); +late final _sel_setShortStandaloneMonthSymbols_ = + objc.registerName("setShortStandaloneMonthSymbols:"); +late final _sel_setVeryShortStandaloneMonthSymbols_ = + objc.registerName("setVeryShortStandaloneMonthSymbols:"); +late final _sel_setVeryShortWeekdaySymbols_ = + objc.registerName("setVeryShortWeekdaySymbols:"); +late final _sel_setStandaloneWeekdaySymbols_ = + objc.registerName("setStandaloneWeekdaySymbols:"); +late final _sel_setShortStandaloneWeekdaySymbols_ = + objc.registerName("setShortStandaloneWeekdaySymbols:"); +late final _sel_setVeryShortStandaloneWeekdaySymbols_ = + objc.registerName("setVeryShortStandaloneWeekdaySymbols:"); +late final _sel_setQuarterSymbols_ = objc.registerName("setQuarterSymbols:"); +late final _sel_setShortQuarterSymbols_ = + objc.registerName("setShortQuarterSymbols:"); +late final _sel_setStandaloneQuarterSymbols_ = + objc.registerName("setStandaloneQuarterSymbols:"); +late final _sel_setShortStandaloneQuarterSymbols_ = + objc.registerName("setShortStandaloneQuarterSymbols:"); +late final _sel_gregorianStartDate = objc.registerName("gregorianStartDate"); +late final _sel_setGregorianStartDate_ = + objc.registerName("setGregorianStartDate:"); +late final _sel_doesRelativeDateFormatting = + objc.registerName("doesRelativeDateFormatting"); +late final _sel_setDoesRelativeDateFormatting_ = + objc.registerName("setDoesRelativeDateFormatting:"); +late final _sel_initWithDateFormat_allowNaturalLanguage_ = + objc.registerName("initWithDateFormat:allowNaturalLanguage:"); +final _objc_msgSend_164 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_allowsNaturalLanguage = + objc.registerName("allowsNaturalLanguage"); -void - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureRegistry = - , ffi.Pointer, - ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureRegistryIndex = - 0; -ffi.Pointer - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_registerClosure( - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer) - fn) { - final id = - ++_ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureRegistryIndex; - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureRegistry[ - id] = fn; - return ffi.Pointer.fromAddress(id); -} +class NSNumberFormatter extends NSFormatter { + NSNumberFormatter._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); -void _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); + /// Constructs a [NSNumberFormatter] that points to the same underlying object as [other]. + NSNumberFormatter.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); -class ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary - extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + /// Constructs a [NSNumberFormatter] that wraps the given raw object pointer. + NSNumberFormatter.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary - castFromPointer(SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary._( - pointer, lib, - retain: retain, release: release); + /// Returns whether [obj] is an instance of [NSNumberFormatter]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSNumberFormatter); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + int get formattingContext { + return _objc_msgSend_89(this.pointer, _sel_formattingContext); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary.fromFunction( - SwiftLibrary lib, - void Function(ObjCBlock_ffiVoid_ObjCObject_NSError1, NSObject, NSDictionary) - fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= - ffi.Pointer.fromFunction, ffi.Pointer<_ObjCBlock>, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_registerClosure( - (ffi.Pointer<_ObjCBlock> arg0, ffi.Pointer arg1, ffi.Pointer arg2) => fn( - ObjCBlock_ffiVoid_ObjCObject_NSError1._(arg0, lib, retain: true, release: true), - NSObject._(arg1, lib, retain: true, release: true), - NSDictionary._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + set formattingContext(int value) { + return _objc_msgSend_90(this.pointer, _sel_setFormattingContext_, value); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary.listener( - SwiftLibrary lib, - void Function(ObjCBlock_ffiVoid_ObjCObject_NSError1, NSObject, NSDictionary) - fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable, ffi.Pointer<_ObjCBlock>, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_registerClosure( - (ffi.Pointer<_ObjCBlock> arg0, ffi.Pointer arg1, - ffi.Pointer arg2) => - fn( - ObjCBlock_ffiVoid_ObjCObject_NSError1._(arg0, lib, retain: true, release: true), - NSObject._(arg1, lib, retain: true, release: true), - NSDictionary._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(ObjCBlock_ffiVoid_ObjCObject_NSError1 arg0, NSObject arg1, - NSDictionary arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>()( - _id, arg0._id, arg1._id, arg2._id); -} + bool getObjectValue_forString_range_error_( + ffi.Pointer> obj, + objc.NSString string, + ffi.Pointer<_NSRange> rangep, + ffi.Pointer> error) { + return _objc_msgSend_91( + this.pointer, + _sel_getObjectValue_forString_range_error_, + obj, + string.pointer, + rangep, + error); + } -void _ObjCBlock_ffiVoid_ObjCObject_NSError1_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_ObjCObject_NSError1_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ObjCObject_NSError1_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_ObjCObject_NSError1_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_ObjCObject_NSError1_closureRegistryIndex; - _ObjCBlock_ffiVoid_ObjCObject_NSError1_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + objc.NSString? stringFromNumber_(objc.NSNumber number) { + final _ret = + _objc_msgSend_165(this.pointer, _sel_stringFromNumber_, number.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); + } -void _ObjCBlock_ffiVoid_ObjCObject_NSError1_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_ObjCObject_NSError1_closureRegistry[ - block.ref.target.address]!(arg0, arg1); + objc.NSNumber? numberFromString_(objc.NSString string) { + final _ret = + _objc_msgSend_166(this.pointer, _sel_numberFromString_, string.pointer); + return _ret.address == 0 + ? null + : objc.NSNumber.castFromPointer(_ret, retain: true, release: true); + } -class ObjCBlock_ffiVoid_ObjCObject_NSError1 extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ObjCObject_NSError1._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + static objc.NSString localizedStringFromNumber_numberStyle_( + objc.NSNumber num, int nstyle) { + final _ret = _objc_msgSend_167(_class_NSNumberFormatter, + _sel_localizedStringFromNumber_numberStyle_, num.pointer, nstyle); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ObjCObject_NSError1 castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ObjCObject_NSError1._(pointer, lib, - retain: retain, release: release); + static int defaultFormatterBehavior() { + return _objc_msgSend_168( + _class_NSNumberFormatter, _sel_defaultFormatterBehavior); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_NSError1.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_NSError1_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + static void setDefaultFormatterBehavior_(int behavior) { + _objc_msgSend_169( + _class_NSNumberFormatter, _sel_setDefaultFormatterBehavior_, behavior); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_NSError1.fromFunction(SwiftLibrary lib, void Function(NSObject?, NSError) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_NSError1_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_NSError1_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 ? null : NSObject._(arg0, lib, retain: true, release: true), - NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + int get numberStyle { + return _objc_msgSend_170(this.pointer, _sel_numberStyle); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ObjCObject_NSError1.listener( - SwiftLibrary lib, void Function(NSObject?, NSError) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi - .NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ObjCObject_NSError1_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_NSError1_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSObject._(arg0, lib, retain: true, release: true), - NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; + set numberStyle(int value) { + return _objc_msgSend_171(this.pointer, _sel_setNumberStyle_, value); + } + + objc.NSLocale get locale { + final _ret = _objc_msgSend_102(this.pointer, _sel_locale); + return objc.NSLocale.castFromPointer(_ret, retain: true, release: true); + } + + set locale(objc.NSLocale value) { + return _objc_msgSend_103(this.pointer, _sel_setLocale_, value.pointer); + } + + bool get generatesDecimalNumbers { + return _objc_msgSend_7(this.pointer, _sel_generatesDecimalNumbers); + } + + set generatesDecimalNumbers(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setGeneratesDecimalNumbers_, value); + } + + int get formatterBehavior { + return _objc_msgSend_168(this.pointer, _sel_formatterBehavior); + } + + set formatterBehavior(int value) { + return _objc_msgSend_172(this.pointer, _sel_setFormatterBehavior_, value); + } + + objc.NSString get negativeFormat { + final _ret = _objc_msgSend_12(this.pointer, _sel_negativeFormat); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set negativeFormat(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setNegativeFormat_, value.pointer); + } + + objc.NSDictionary? get textAttributesForNegativeValues { + final _ret = + _objc_msgSend_65(this.pointer, _sel_textAttributesForNegativeValues); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + set textAttributesForNegativeValues(objc.NSDictionary? value) { + return _objc_msgSend_173( + this.pointer, + _sel_setTextAttributesForNegativeValues_, + value?.pointer ?? ffi.nullptr); + } + + objc.NSString get positiveFormat { + final _ret = _objc_msgSend_12(this.pointer, _sel_positiveFormat); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set positiveFormat(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setPositiveFormat_, value.pointer); + } + + objc.NSDictionary? get textAttributesForPositiveValues { + final _ret = + _objc_msgSend_65(this.pointer, _sel_textAttributesForPositiveValues); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + set textAttributesForPositiveValues(objc.NSDictionary? value) { + return _objc_msgSend_173( + this.pointer, + _sel_setTextAttributesForPositiveValues_, + value?.pointer ?? ffi.nullptr); + } + + bool get allowsFloats { + return _objc_msgSend_7(this.pointer, _sel_allowsFloats); + } + + set allowsFloats(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setAllowsFloats_, value); + } + + objc.NSString get decimalSeparator { + final _ret = _objc_msgSend_12(this.pointer, _sel_decimalSeparator); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set decimalSeparator(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setDecimalSeparator_, value.pointer); + } - void call(NSObject? arg0, NSError arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1._id); -} + bool get alwaysShowsDecimalSeparator { + return _objc_msgSend_7(this.pointer, _sel_alwaysShowsDecimalSeparator); + } -class NSMutableString extends NSString { - NSMutableString._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + set alwaysShowsDecimalSeparator(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAlwaysShowsDecimalSeparator_, value); + } - /// Returns a [NSMutableString] that points to the same underlying object as [other]. - static NSMutableString castFrom(T other) { - return NSMutableString._(other._id, other._lib, - retain: true, release: true); + objc.NSString get currencyDecimalSeparator { + final _ret = _objc_msgSend_12(this.pointer, _sel_currencyDecimalSeparator); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSMutableString] that wraps the given raw object pointer. - static NSMutableString castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableString._(other, lib, retain: retain, release: release); + set currencyDecimalSeparator(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setCurrencyDecimalSeparator_, value.pointer); } - /// Returns whether [obj] is an instance of [NSMutableString]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMutableString1); + bool get usesGroupingSeparator { + return _objc_msgSend_7(this.pointer, _sel_usesGroupingSeparator); } - void replaceCharactersInRange_withString_(_NSRange range, NSString aString) { - _lib._objc_msgSend_689(_id, _lib._sel_replaceCharactersInRange_withString_1, - range, aString._id); + set usesGroupingSeparator(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setUsesGroupingSeparator_, value); } - void insertString_atIndex_(NSString aString, int loc) { - _lib._objc_msgSend_690( - _id, _lib._sel_insertString_atIndex_1, aString._id, loc); + objc.NSString get groupingSeparator { + final _ret = _objc_msgSend_12(this.pointer, _sel_groupingSeparator); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void deleteCharactersInRange_(_NSRange range) { - _lib._objc_msgSend_476(_id, _lib._sel_deleteCharactersInRange_1, range); + set groupingSeparator(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setGroupingSeparator_, value.pointer); + } + + objc.NSString? get zeroSymbol { + final _ret = _objc_msgSend_13(this.pointer, _sel_zeroSymbol); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void appendString_(NSString aString) { - _lib._objc_msgSend_247(_id, _lib._sel_appendString_1, aString._id); + set zeroSymbol(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setZeroSymbol_, value?.pointer ?? ffi.nullptr); } - void appendFormat_(NSString format) { - _lib._objc_msgSend_247(_id, _lib._sel_appendFormat_1, format._id); + objc.NSDictionary? get textAttributesForZero { + final _ret = _objc_msgSend_65(this.pointer, _sel_textAttributesForZero); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - void setString_(NSString aString) { - _lib._objc_msgSend_247(_id, _lib._sel_setString_1, aString._id); + set textAttributesForZero(objc.NSDictionary? value) { + return _objc_msgSend_173(this.pointer, _sel_setTextAttributesForZero_, + value?.pointer ?? ffi.nullptr); } - int replaceOccurrencesOfString_withString_options_range_(NSString target, - NSString replacement, int options, _NSRange searchRange) { - return _lib._objc_msgSend_691( - _id, - _lib._sel_replaceOccurrencesOfString_withString_options_range_1, - target._id, - replacement._id, - options, - searchRange); + objc.NSString get nilSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_nilSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool applyTransform_reverse_range_updatedRange_(NSString transform, - bool reverse, _NSRange range, ffi.Pointer<_NSRange> resultingRange) { - return _lib._objc_msgSend_692( - _id, - _lib._sel_applyTransform_reverse_range_updatedRange_1, - transform._id, - reverse, - range, - resultingRange); + set nilSymbol(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setNilSymbol_, value.pointer); } - NSMutableString initWithCapacity_(int capacity) { - final _ret = - _lib._objc_msgSend_693(_id, _lib._sel_initWithCapacity_1, capacity); - return NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSDictionary? get textAttributesForNil { + final _ret = _objc_msgSend_65(this.pointer, _sel_textAttributesForNil); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSMutableString stringWithCapacity_(SwiftLibrary _lib, int capacity) { - final _ret = _lib._objc_msgSend_693( - _lib._class_NSMutableString1, _lib._sel_stringWithCapacity_1, capacity); - return NSMutableString._(_ret, _lib, retain: true, release: true); + set textAttributesForNil(objc.NSDictionary? value) { + return _objc_msgSend_173(this.pointer, _sel_setTextAttributesForNil_, + value?.pointer ?? ffi.nullptr); } - @override - NSMutableString init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get notANumberSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_notANumberSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithCoder_(NSCoder coder) { + set notANumberSymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setNotANumberSymbol_, value.pointer); + } + + objc.NSDictionary? get textAttributesForNotANumber { final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); + _objc_msgSend_65(this.pointer, _sel_textAttributesForNotANumber); return _ret.address == 0 ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static ffi.Pointer getAvailableStringEncodings( - SwiftLibrary _lib) { - return _lib._objc_msgSend_357( - _lib._class_NSMutableString1, _lib._sel_availableStringEncodings1); + set textAttributesForNotANumber(objc.NSDictionary? value) { + return _objc_msgSend_173(this.pointer, _sel_setTextAttributesForNotANumber_, + value?.pointer ?? ffi.nullptr); } - static NSString localizedNameOfStringEncoding_( - SwiftLibrary _lib, int encoding) { - final _ret = _lib._objc_msgSend_332(_lib._class_NSMutableString1, - _lib._sel_localizedNameOfStringEncoding_1, encoding); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSString get positiveInfinitySymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_positiveInfinitySymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static int getDefaultCStringEncoding(SwiftLibrary _lib) { - return _lib._objc_msgSend_10( - _lib._class_NSMutableString1, _lib._sel_defaultCStringEncoding1); + set positiveInfinitySymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setPositiveInfinitySymbol_, value.pointer); } - @override - NSMutableString initWithCharactersNoCopy_length_freeWhenDone_( - ffi.Pointer characters, int length, bool freeBuffer) { - final _ret = _lib._objc_msgSend_369( - _id, - _lib._sel_initWithCharactersNoCopy_length_freeWhenDone_1, - characters, - length, - freeBuffer); - return NSMutableString._(_ret, _lib, retain: false, release: true); + objc.NSDictionary? get textAttributesForPositiveInfinity { + final _ret = + _objc_msgSend_65(this.pointer, _sel_textAttributesForPositiveInfinity); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString initWithCharactersNoCopy_length_deallocator_( - ffi.Pointer chars, - int len, - ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong? deallocator) { - final _ret = _lib._objc_msgSend_370( - _id, - _lib._sel_initWithCharactersNoCopy_length_deallocator_1, - chars, - len, - deallocator?._id ?? ffi.nullptr); - return NSMutableString._(_ret, _lib, retain: false, release: true); + set textAttributesForPositiveInfinity(objc.NSDictionary? value) { + return _objc_msgSend_173( + this.pointer, + _sel_setTextAttributesForPositiveInfinity_, + value?.pointer ?? ffi.nullptr); } - @override - NSMutableString initWithCharacters_length_( - ffi.Pointer characters, int length) { - final _ret = _lib._objc_msgSend_371( - _id, _lib._sel_initWithCharacters_length_1, characters, length); - return NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get negativeInfinitySymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_negativeInfinitySymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithUTF8String_( - ffi.Pointer nullTerminatedCString) { - final _ret = _lib._objc_msgSend_372( - _id, _lib._sel_initWithUTF8String_1, nullTerminatedCString); + set negativeInfinitySymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setNegativeInfinitySymbol_, value.pointer); + } + + objc.NSDictionary? get textAttributesForNegativeInfinity { + final _ret = + _objc_msgSend_65(this.pointer, _sel_textAttributesForNegativeInfinity); return _ret.address == 0 ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString initWithString_(NSString aString) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithString_1, aString._id); - return NSMutableString._(_ret, _lib, retain: true, release: true); + set textAttributesForNegativeInfinity(objc.NSDictionary? value) { + return _objc_msgSend_173( + this.pointer, + _sel_setTextAttributesForNegativeInfinity_, + value?.pointer ?? ffi.nullptr); } - @override - NSMutableString initWithFormat_(NSString format) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithFormat_1, format._id); - return NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get positivePrefix { + final _ret = _objc_msgSend_12(this.pointer, _sel_positivePrefix); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString initWithFormat_arguments_( - NSString format, ffi.Pointer<__va_list_tag> argList) { - final _ret = _lib._objc_msgSend_373( - _id, _lib._sel_initWithFormat_arguments_1, format._id, argList); - return NSMutableString._(_ret, _lib, retain: true, release: true); + set positivePrefix(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setPositivePrefix_, value.pointer); } - @override - NSMutableString initWithFormat_locale_(NSString format, NSObject? locale) { - final _ret = _lib._objc_msgSend_374(_id, _lib._sel_initWithFormat_locale_1, - format._id, locale?._id ?? ffi.nullptr); - return NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get positiveSuffix { + final _ret = _objc_msgSend_12(this.pointer, _sel_positiveSuffix); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString initWithFormat_locale_arguments_( - NSString format, NSObject? locale, ffi.Pointer<__va_list_tag> argList) { - final _ret = _lib._objc_msgSend_375( - _id, - _lib._sel_initWithFormat_locale_arguments_1, - format._id, - locale?._id ?? ffi.nullptr, - argList); - return NSMutableString._(_ret, _lib, retain: true, release: true); + set positiveSuffix(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setPositiveSuffix_, value.pointer); } - @override - NSMutableString? initWithValidatedFormat_validFormatSpecifiers_error_( - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_376( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_error_1, - format._id, - validFormatSpecifiers._id, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get negativePrefix { + final _ret = _objc_msgSend_12(this.pointer, _sel_negativePrefix); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithValidatedFormat_validFormatSpecifiers_locale_error_( - NSString format, - NSString validFormatSpecifiers, - NSObject? locale, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_377( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_1, - format._id, - validFormatSpecifiers._id, - locale?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + set negativePrefix(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setNegativePrefix_, value.pointer); } - @override - NSMutableString? - initWithValidatedFormat_validFormatSpecifiers_arguments_error_( - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer<__va_list_tag> argList, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_378( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_1, - format._id, - validFormatSpecifiers._id, - argList, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get negativeSuffix { + final _ret = _objc_msgSend_12(this.pointer, _sel_negativeSuffix); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? - initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_( - NSString format, - NSString validFormatSpecifiers, - NSObject? locale, - ffi.Pointer<__va_list_tag> argList, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_379( - _id, - _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_1, - format._id, - validFormatSpecifiers._id, - locale?._id ?? ffi.nullptr, - argList, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + set negativeSuffix(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setNegativeSuffix_, value.pointer); } - @override - NSMutableString? initWithData_encoding_(NSData data, int encoding) { - final _ret = _lib._objc_msgSend_380( - _id, _lib._sel_initWithData_encoding_1, data._id, encoding); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get currencyCode { + final _ret = _objc_msgSend_12(this.pointer, _sel_currencyCode); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithBytes_length_encoding_( - ffi.Pointer bytes, int len, int encoding) { - final _ret = _lib._objc_msgSend_381( - _id, _lib._sel_initWithBytes_length_encoding_1, bytes, len, encoding); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + set currencyCode(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setCurrencyCode_, value.pointer); } - @override - NSMutableString? initWithBytesNoCopy_length_encoding_freeWhenDone_( - ffi.Pointer bytes, int len, int encoding, bool freeBuffer) { - final _ret = _lib._objc_msgSend_382( - _id, - _lib._sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1, - bytes, - len, - encoding, - freeBuffer); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: false, release: true); + objc.NSString get currencySymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_currencySymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithBytesNoCopy_length_encoding_deallocator_( - ffi.Pointer bytes, - int len, - int encoding, - ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { - final _ret = _lib._objc_msgSend_383( - _id, - _lib._sel_initWithBytesNoCopy_length_encoding_deallocator_1, - bytes, - len, - encoding, - deallocator?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: false, release: true); + set currencySymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setCurrencySymbol_, value.pointer); } - static NSMutableString string(SwiftLibrary _lib) { + objc.NSString get internationalCurrencySymbol { final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableString1, _lib._sel_string1); - return NSMutableString._(_ret, _lib, retain: true, release: true); + _objc_msgSend_12(this.pointer, _sel_internationalCurrencySymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSMutableString stringWithString_(SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSMutableString1, _lib._sel_stringWithString_1, string._id); - return NSMutableString._(_ret, _lib, retain: true, release: true); + set internationalCurrencySymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setInternationalCurrencySymbol_, value.pointer); } - static NSMutableString stringWithCharacters_length_(SwiftLibrary _lib, - ffi.Pointer characters, int length) { - final _ret = _lib._objc_msgSend_371(_lib._class_NSMutableString1, - _lib._sel_stringWithCharacters_length_1, characters, length); - return NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get percentSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_percentSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSMutableString? stringWithUTF8String_( - SwiftLibrary _lib, ffi.Pointer nullTerminatedCString) { - final _ret = _lib._objc_msgSend_372(_lib._class_NSMutableString1, - _lib._sel_stringWithUTF8String_1, nullTerminatedCString); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + set percentSymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setPercentSymbol_, value.pointer); } - static NSMutableString stringWithFormat_(SwiftLibrary _lib, NSString format) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSMutableString1, _lib._sel_stringWithFormat_1, format._id); - return NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get perMillSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_perMillSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSMutableString localizedStringWithFormat_( - SwiftLibrary _lib, NSString format) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSMutableString1, - _lib._sel_localizedStringWithFormat_1, format._id); - return NSMutableString._(_ret, _lib, retain: true, release: true); + set perMillSymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setPerMillSymbol_, value.pointer); } - static NSMutableString? - stringWithValidatedFormat_validFormatSpecifiers_error_( - SwiftLibrary _lib, - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_376( - _lib._class_NSMutableString1, - _lib._sel_stringWithValidatedFormat_validFormatSpecifiers_error_1, - format._id, - validFormatSpecifiers._id, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); - } - - static NSMutableString? - localizedStringWithValidatedFormat_validFormatSpecifiers_error_( - SwiftLibrary _lib, - NSString format, - NSString validFormatSpecifiers, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_376( - _lib._class_NSMutableString1, - _lib._sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_1, - format._id, - validFormatSpecifiers._id, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get minusSign { + final _ret = _objc_msgSend_12(this.pointer, _sel_minusSign); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithCString_encoding_( - ffi.Pointer nullTerminatedCString, int encoding) { - final _ret = _lib._objc_msgSend_384(_id, - _lib._sel_initWithCString_encoding_1, nullTerminatedCString, encoding); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + set minusSign(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setMinusSign_, value.pointer); } - static NSMutableString? stringWithCString_encoding_( - SwiftLibrary _lib, ffi.Pointer cString, int enc) { - final _ret = _lib._objc_msgSend_384(_lib._class_NSMutableString1, - _lib._sel_stringWithCString_encoding_1, cString, enc); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get plusSign { + final _ret = _objc_msgSend_12(this.pointer, _sel_plusSign); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithContentsOfURL_encoding_error_( - NSURL url, int enc, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_385(_id, - _lib._sel_initWithContentsOfURL_encoding_error_1, url._id, enc, error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + set plusSign(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setPlusSign_, value.pointer); } - @override - NSMutableString? initWithContentsOfFile_encoding_error_( - NSString path, int enc, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_386( - _id, - _lib._sel_initWithContentsOfFile_encoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); - } - - static NSMutableString? stringWithContentsOfURL_encoding_error_( - SwiftLibrary _lib, - NSURL url, - int enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_385( - _lib._class_NSMutableString1, - _lib._sel_stringWithContentsOfURL_encoding_error_1, - url._id, - enc, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); - } - - static NSMutableString? stringWithContentsOfFile_encoding_error_( - SwiftLibrary _lib, - NSString path, - int enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_386( - _lib._class_NSMutableString1, - _lib._sel_stringWithContentsOfFile_encoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + objc.NSString get exponentSymbol { + final _ret = _objc_msgSend_12(this.pointer, _sel_exponentSymbol); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableString? initWithContentsOfURL_usedEncoding_error_( - NSURL url, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_387( - _id, - _lib._sel_initWithContentsOfURL_usedEncoding_error_1, - url._id, - enc, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); + set exponentSymbol(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setExponentSymbol_, value.pointer); } - @override - NSMutableString? initWithContentsOfFile_usedEncoding_error_( - NSString path, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_388( - _id, - _lib._sel_initWithContentsOfFile_usedEncoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); - } - - static NSMutableString? stringWithContentsOfURL_usedEncoding_error_( - SwiftLibrary _lib, - NSURL url, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_387( - _lib._class_NSMutableString1, - _lib._sel_stringWithContentsOfURL_usedEncoding_error_1, - url._id, - enc, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); - } - - static NSMutableString? stringWithContentsOfFile_usedEncoding_error_( - SwiftLibrary _lib, - NSString path, - ffi.Pointer enc, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_388( - _lib._class_NSMutableString1, - _lib._sel_stringWithContentsOfFile_usedEncoding_error_1, - path._id, - enc, - error); - return _ret.address == 0 - ? null - : NSMutableString._(_ret, _lib, retain: true, release: true); - } - - static int - stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_( - SwiftLibrary _lib, - NSData data, - NSDictionary? opts, - ffi.Pointer> string, - ffi.Pointer usedLossyConversion) { - return _lib._objc_msgSend_389( - _lib._class_NSMutableString1, - _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1, - data._id, - opts?._id ?? ffi.nullptr, - string, - usedLossyConversion); - } - - static NSObject? stringWithContentsOfFile_(SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSMutableString1, - _lib._sel_stringWithContentsOfFile_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + int get groupingSize { + return _objc_msgSend_29(this.pointer, _sel_groupingSize); } - static NSObject? stringWithContentsOfURL_(SwiftLibrary _lib, NSURL url) { - final _ret = _lib._objc_msgSend_277(_lib._class_NSMutableString1, - _lib._sel_stringWithContentsOfURL_1, url._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + set groupingSize(int value) { + return _objc_msgSend_125(this.pointer, _sel_setGroupingSize_, value); } - static NSObject? stringWithCString_length_( - SwiftLibrary _lib, ffi.Pointer bytes, int length) { - final _ret = _lib._objc_msgSend_384(_lib._class_NSMutableString1, - _lib._sel_stringWithCString_length_1, bytes, length); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + int get secondaryGroupingSize { + return _objc_msgSend_29(this.pointer, _sel_secondaryGroupingSize); + } + + set secondaryGroupingSize(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setSecondaryGroupingSize_, value); } - static NSObject? stringWithCString_( - SwiftLibrary _lib, ffi.Pointer bytes) { - final _ret = _lib._objc_msgSend_372( - _lib._class_NSMutableString1, _lib._sel_stringWithCString_1, bytes); + objc.NSNumber? get multiplier { + final _ret = _objc_msgSend_174(this.pointer, _sel_multiplier); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSNumber.castFromPointer(_ret, retain: true, release: true); } - static NSString pathWithComponents_(SwiftLibrary _lib, NSArray components) { - final _ret = _lib._objc_msgSend_396(_lib._class_NSMutableString1, - _lib._sel_pathWithComponents_1, components._id); - return NSString._(_ret, _lib, retain: true, release: true); + set multiplier(objc.NSNumber? value) { + return _objc_msgSend_175( + this.pointer, _sel_setMultiplier_, value?.pointer ?? ffi.nullptr); } - static NSMutableString new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableString1, _lib._sel_new1); - return NSMutableString._(_ret, _lib, retain: false, release: true); + int get formatWidth { + return _objc_msgSend_29(this.pointer, _sel_formatWidth); } - static NSMutableString allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMutableString1, _lib._sel_allocWithZone_1, zone); - return NSMutableString._(_ret, _lib, retain: false, release: true); + set formatWidth(int value) { + return _objc_msgSend_125(this.pointer, _sel_setFormatWidth_, value); } - static NSMutableString alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableString1, _lib._sel_alloc1); - return NSMutableString._(_ret, _lib, retain: false, release: true); + objc.NSString get paddingCharacter { + final _ret = _objc_msgSend_12(this.pointer, _sel_paddingCharacter); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set paddingCharacter(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setPaddingCharacter_, value.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + int get paddingPosition { + return _objc_msgSend_176(this.pointer, _sel_paddingPosition); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMutableString1, - _lib._sel_accessInstanceVariablesDirectly1); + set paddingPosition(int value) { + return _objc_msgSend_177(this.pointer, _sel_setPaddingPosition_, value); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableString1, _lib._sel_useStoredAccessor1); + int get roundingMode { + return _objc_msgSend_178(this.pointer, _sel_roundingMode); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableString1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + set roundingMode(int value) { + return _objc_msgSend_179(this.pointer, _sel_setRoundingMode_, value); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableString1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + objc.NSNumber get roundingIncrement { + final _ret = _objc_msgSend_180(this.pointer, _sel_roundingIncrement); + return objc.NSNumber.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableString1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set roundingIncrement(objc.NSNumber value) { + return _objc_msgSend_181( + this.pointer, _sel_setRoundingIncrement_, value.pointer); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSMutableString1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + int get minimumIntegerDigits { + return _objc_msgSend_29(this.pointer, _sel_minimumIntegerDigits); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableString1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + set minimumIntegerDigits(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setMinimumIntegerDigits_, value); } -} -class NSNotification extends NSObject { - NSNotification._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + int get maximumIntegerDigits { + return _objc_msgSend_29(this.pointer, _sel_maximumIntegerDigits); + } - /// Returns a [NSNotification] that points to the same underlying object as [other]. - static NSNotification castFrom(T other) { - return NSNotification._(other._id, other._lib, retain: true, release: true); + set maximumIntegerDigits(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setMaximumIntegerDigits_, value); } - /// Returns a [NSNotification] that wraps the given raw object pointer. - static NSNotification castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSNotification._(other, lib, retain: retain, release: release); + int get minimumFractionDigits { + return _objc_msgSend_29(this.pointer, _sel_minimumFractionDigits); } - /// Returns whether [obj] is an instance of [NSNotification]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSNotification1); + set minimumFractionDigits(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setMinimumFractionDigits_, value); } - NSString get name { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_name1); - return NSString._(_ret, _lib, retain: true, release: true); + int get maximumFractionDigits { + return _objc_msgSend_29(this.pointer, _sel_maximumFractionDigits); } - NSObject? get object { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_object1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + set maximumFractionDigits(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setMaximumFractionDigits_, value); } - NSDictionary? get userInfo { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_userInfo1); + objc.NSNumber? get minimum { + final _ret = _objc_msgSend_174(this.pointer, _sel_minimum); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + : objc.NSNumber.castFromPointer(_ret, retain: true, release: true); } - NSNotification initWithName_object_userInfo_( - NSString name, NSObject? object, NSDictionary? userInfo) { - final _ret = _lib._objc_msgSend_694( - _id, - _lib._sel_initWithName_object_userInfo_1, - name._id, - object?._id ?? ffi.nullptr, - userInfo?._id ?? ffi.nullptr); - return NSNotification._(_ret, _lib, retain: true, release: true); + set minimum(objc.NSNumber? value) { + return _objc_msgSend_175( + this.pointer, _sel_setMinimum_, value?.pointer ?? ffi.nullptr); } - NSNotification? initWithCoder_(NSCoder coder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); + objc.NSNumber? get maximum { + final _ret = _objc_msgSend_174(this.pointer, _sel_maximum); return _ret.address == 0 ? null - : NSNotification._(_ret, _lib, retain: true, release: true); + : objc.NSNumber.castFromPointer(_ret, retain: true, release: true); } - static NSNotification notificationWithName_object_( - SwiftLibrary _lib, NSString aName, NSObject? anObject) { - final _ret = _lib._objc_msgSend_374( - _lib._class_NSNotification1, - _lib._sel_notificationWithName_object_1, - aName._id, - anObject?._id ?? ffi.nullptr); - return NSNotification._(_ret, _lib, retain: true, release: true); + set maximum(objc.NSNumber? value) { + return _objc_msgSend_175( + this.pointer, _sel_setMaximum_, value?.pointer ?? ffi.nullptr); } - static NSNotification notificationWithName_object_userInfo_(SwiftLibrary _lib, - NSString aName, NSObject? anObject, NSDictionary? aUserInfo) { - final _ret = _lib._objc_msgSend_694( - _lib._class_NSNotification1, - _lib._sel_notificationWithName_object_userInfo_1, - aName._id, - anObject?._id ?? ffi.nullptr, - aUserInfo?._id ?? ffi.nullptr); - return NSNotification._(_ret, _lib, retain: true, release: true); + objc.NSString get currencyGroupingSeparator { + final _ret = _objc_msgSend_12(this.pointer, _sel_currencyGroupingSeparator); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSNotification init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSNotification._(_ret, _lib, retain: true, release: true); + set currencyGroupingSeparator(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setCurrencyGroupingSeparator_, value.pointer); } - static NSNotification new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSNotification1, _lib._sel_new1); - return NSNotification._(_ret, _lib, retain: false, release: true); + bool get lenient { + return _objc_msgSend_7(this.pointer, _sel_isLenient); } - static NSNotification allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSNotification1, _lib._sel_allocWithZone_1, zone); - return NSNotification._(_ret, _lib, retain: false, release: true); + set lenient(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setLenient_, value); } - static NSNotification alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSNotification1, _lib._sel_alloc1); - return NSNotification._(_ret, _lib, retain: false, release: true); + bool get usesSignificantDigits { + return _objc_msgSend_7(this.pointer, _sel_usesSignificantDigits); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSNotification1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set usesSignificantDigits(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setUsesSignificantDigits_, value); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSNotification1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + int get minimumSignificantDigits { + return _objc_msgSend_29(this.pointer, _sel_minimumSignificantDigits); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSNotification1, - _lib._sel_accessInstanceVariablesDirectly1); + set minimumSignificantDigits(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setMinimumSignificantDigits_, value); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSNotification1, _lib._sel_useStoredAccessor1); + int get maximumSignificantDigits { + return _objc_msgSend_29(this.pointer, _sel_maximumSignificantDigits); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSNotification1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + set maximumSignificantDigits(int value) { + return _objc_msgSend_125( + this.pointer, _sel_setMaximumSignificantDigits_, value); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSNotification1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + bool get partialStringValidationEnabled { + return _objc_msgSend_7(this.pointer, _sel_isPartialStringValidationEnabled); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSNotification1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set partialStringValidationEnabled(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setPartialStringValidationEnabled_, value); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSNotification1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool get hasThousandSeparators { + return _objc_msgSend_7(this.pointer, _sel_hasThousandSeparators); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSNotification1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + set hasThousandSeparators(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setHasThousandSeparators_, value); } -} - -class NSBundle extends NSObject { - NSBundle._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSBundle] that points to the same underlying object as [other]. - static NSBundle castFrom(T other) { - return NSBundle._(other._id, other._lib, retain: true, release: true); + objc.NSString get thousandSeparator { + final _ret = _objc_msgSend_12(this.pointer, _sel_thousandSeparator); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSBundle] that wraps the given raw object pointer. - static NSBundle castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSBundle._(other, lib, retain: retain, release: release); + set thousandSeparator(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setThousandSeparator_, value.pointer); } - /// Returns whether [obj] is an instance of [NSBundle]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSBundle1); + bool get localizesFormat { + return _objc_msgSend_7(this.pointer, _sel_localizesFormat); } - static NSBundle getMainBundle(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_695(_lib._class_NSBundle1, _lib._sel_mainBundle1); - return NSBundle._(_ret, _lib, retain: true, release: true); + set localizesFormat(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setLocalizesFormat_, value); } - static NSBundle? bundleWithPath_(SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_38( - _lib._class_NSBundle1, _lib._sel_bundleWithPath_1, path._id); - return _ret.address == 0 - ? null - : NSBundle._(_ret, _lib, retain: true, release: true); + objc.NSString get format { + final _ret = _objc_msgSend_12(this.pointer, _sel_format); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSBundle? initWithPath_(NSString path) { - final _ret = _lib._objc_msgSend_38(_id, _lib._sel_initWithPath_1, path._id); - return _ret.address == 0 - ? null - : NSBundle._(_ret, _lib, retain: true, release: true); + set format(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setFormat_, value.pointer); } - static NSBundle? bundleWithURL_(SwiftLibrary _lib, NSURL url) { - final _ret = _lib._objc_msgSend_277( - _lib._class_NSBundle1, _lib._sel_bundleWithURL_1, url._id); - return _ret.address == 0 - ? null - : NSBundle._(_ret, _lib, retain: true, release: true); + NSAttributedString get attributedStringForZero { + final _ret = _objc_msgSend_63(this.pointer, _sel_attributedStringForZero); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - NSBundle? initWithURL_(NSURL url) { - final _ret = _lib._objc_msgSend_277(_id, _lib._sel_initWithURL_1, url._id); - return _ret.address == 0 - ? null - : NSBundle._(_ret, _lib, retain: true, release: true); + set attributedStringForZero(NSAttributedString value) { + return _objc_msgSend_182( + this.pointer, _sel_setAttributedStringForZero_, value.pointer); } - static NSBundle bundleForClass_(SwiftLibrary _lib, NSObject aClass) { - final _ret = _lib._objc_msgSend_696( - _lib._class_NSBundle1, _lib._sel_bundleForClass_1, aClass._id); - return NSBundle._(_ret, _lib, retain: true, release: true); + NSAttributedString get attributedStringForNil { + final _ret = _objc_msgSend_63(this.pointer, _sel_attributedStringForNil); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); } - static NSBundle? bundleWithIdentifier_( - SwiftLibrary _lib, NSString identifier) { - final _ret = _lib._objc_msgSend_697(_lib._class_NSBundle1, - _lib._sel_bundleWithIdentifier_1, identifier._id); - return _ret.address == 0 - ? null - : NSBundle._(_ret, _lib, retain: true, release: true); + set attributedStringForNil(NSAttributedString value) { + return _objc_msgSend_182( + this.pointer, _sel_setAttributedStringForNil_, value.pointer); } - static NSArray getAllBundles(SwiftLibrary _lib) { + NSAttributedString get attributedStringForNotANumber { final _ret = - _lib._objc_msgSend_85(_lib._class_NSBundle1, _lib._sel_allBundles1); - return NSArray._(_ret, _lib, retain: true, release: true); + _objc_msgSend_63(this.pointer, _sel_attributedStringForNotANumber); + return NSAttributedString.castFromPointer(_ret, + retain: true, release: true); + } + + set attributedStringForNotANumber(NSAttributedString value) { + return _objc_msgSend_182( + this.pointer, _sel_setAttributedStringForNotANumber_, value.pointer); + } + + NSDecimalNumberHandler get roundingBehavior { + final _ret = _objc_msgSend_183(this.pointer, _sel_roundingBehavior); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: true, release: true); + } + + set roundingBehavior(NSDecimalNumberHandler value) { + return _objc_msgSend_185( + this.pointer, _sel_setRoundingBehavior_, value.pointer); + } + + @override + NSNumberFormatter init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSNumberFormatter.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumberFormatter new1() { + final _ret = _objc_msgSend_40(_class_NSNumberFormatter, _sel_new); + return NSNumberFormatter.castFromPointer(_ret, + retain: false, release: true); } - static NSArray getAllFrameworks(SwiftLibrary _lib) { + static NSNumberFormatter allocWithZone_(ffi.Pointer<_NSZone> zone) { final _ret = - _lib._objc_msgSend_85(_lib._class_NSBundle1, _lib._sel_allFrameworks1); - return NSArray._(_ret, _lib, retain: true, release: true); + _objc_msgSend_47(_class_NSNumberFormatter, _sel_allocWithZone_, zone); + return NSNumberFormatter.castFromPointer(_ret, + retain: false, release: true); } - bool load() { - return _lib._objc_msgSend_12(_id, _lib._sel_load1); + static NSNumberFormatter alloc() { + final _ret = _objc_msgSend_40(_class_NSNumberFormatter, _sel_alloc); + return NSNumberFormatter.castFromPointer(_ret, + retain: false, release: true); } - bool get loaded { - return _lib._objc_msgSend_12(_id, _lib._sel_isLoaded1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSNumberFormatter, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); + } + + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSNumberFormatter, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); + } + + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSNumberFormatter, _sel_accessInstanceVariablesDirectly); + } + + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSNumberFormatter, _sel_useStoredAccessor); + } + + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSNumberFormatter, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSNumberFormatter, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - bool unload() { - return _lib._objc_msgSend_12(_id, _lib._sel_unload1); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSNumberFormatter, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSNumberFormatter, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSNumberFormatter, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSNumberFormatter = objc.getClass("NSNumberFormatter"); +late final _sel_stringFromNumber_ = objc.registerName("stringFromNumber:"); +final _objc_msgSend_165 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_numberFromString_ = objc.registerName("numberFromString:"); +final _objc_msgSend_166 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSNumberFormatterStyle { + static const int NSNumberFormatterNoStyle = 0; + static const int NSNumberFormatterDecimalStyle = 1; + static const int NSNumberFormatterCurrencyStyle = 2; + static const int NSNumberFormatterPercentStyle = 3; + static const int NSNumberFormatterScientificStyle = 4; + static const int NSNumberFormatterSpellOutStyle = 5; + static const int NSNumberFormatterOrdinalStyle = 6; + static const int NSNumberFormatterCurrencyISOCodeStyle = 8; + static const int NSNumberFormatterCurrencyPluralStyle = 9; + static const int NSNumberFormatterCurrencyAccountingStyle = 10; +} + +late final _sel_localizedStringFromNumber_numberStyle_ = + objc.registerName("localizedStringFromNumber:numberStyle:"); +final _objc_msgSend_167 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); + +abstract class NSNumberFormatterBehavior { + static const int NSNumberFormatterBehaviorDefault = 0; + static const int NSNumberFormatterBehavior10_0 = 1000; + static const int NSNumberFormatterBehavior10_4 = 1040; +} + +final _objc_msgSend_168 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_169 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_numberStyle = objc.registerName("numberStyle"); +final _objc_msgSend_170 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setNumberStyle_ = objc.registerName("setNumberStyle:"); +final _objc_msgSend_171 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_generatesDecimalNumbers = + objc.registerName("generatesDecimalNumbers"); +late final _sel_setGeneratesDecimalNumbers_ = + objc.registerName("setGeneratesDecimalNumbers:"); +final _objc_msgSend_172 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_negativeFormat = objc.registerName("negativeFormat"); +late final _sel_setNegativeFormat_ = objc.registerName("setNegativeFormat:"); +late final _sel_textAttributesForNegativeValues = + objc.registerName("textAttributesForNegativeValues"); +late final _sel_setTextAttributesForNegativeValues_ = + objc.registerName("setTextAttributesForNegativeValues:"); +final _objc_msgSend_173 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_positiveFormat = objc.registerName("positiveFormat"); +late final _sel_setPositiveFormat_ = objc.registerName("setPositiveFormat:"); +late final _sel_textAttributesForPositiveValues = + objc.registerName("textAttributesForPositiveValues"); +late final _sel_setTextAttributesForPositiveValues_ = + objc.registerName("setTextAttributesForPositiveValues:"); +late final _sel_allowsFloats = objc.registerName("allowsFloats"); +late final _sel_setAllowsFloats_ = objc.registerName("setAllowsFloats:"); +late final _sel_decimalSeparator = objc.registerName("decimalSeparator"); +late final _sel_setDecimalSeparator_ = + objc.registerName("setDecimalSeparator:"); +late final _sel_alwaysShowsDecimalSeparator = + objc.registerName("alwaysShowsDecimalSeparator"); +late final _sel_setAlwaysShowsDecimalSeparator_ = + objc.registerName("setAlwaysShowsDecimalSeparator:"); +late final _sel_currencyDecimalSeparator = + objc.registerName("currencyDecimalSeparator"); +late final _sel_setCurrencyDecimalSeparator_ = + objc.registerName("setCurrencyDecimalSeparator:"); +late final _sel_usesGroupingSeparator = + objc.registerName("usesGroupingSeparator"); +late final _sel_setUsesGroupingSeparator_ = + objc.registerName("setUsesGroupingSeparator:"); +late final _sel_groupingSeparator = objc.registerName("groupingSeparator"); +late final _sel_setGroupingSeparator_ = + objc.registerName("setGroupingSeparator:"); +late final _sel_zeroSymbol = objc.registerName("zeroSymbol"); +late final _sel_setZeroSymbol_ = objc.registerName("setZeroSymbol:"); +late final _sel_textAttributesForZero = + objc.registerName("textAttributesForZero"); +late final _sel_setTextAttributesForZero_ = + objc.registerName("setTextAttributesForZero:"); +late final _sel_nilSymbol = objc.registerName("nilSymbol"); +late final _sel_setNilSymbol_ = objc.registerName("setNilSymbol:"); +late final _sel_textAttributesForNil = + objc.registerName("textAttributesForNil"); +late final _sel_setTextAttributesForNil_ = + objc.registerName("setTextAttributesForNil:"); +late final _sel_notANumberSymbol = objc.registerName("notANumberSymbol"); +late final _sel_setNotANumberSymbol_ = + objc.registerName("setNotANumberSymbol:"); +late final _sel_textAttributesForNotANumber = + objc.registerName("textAttributesForNotANumber"); +late final _sel_setTextAttributesForNotANumber_ = + objc.registerName("setTextAttributesForNotANumber:"); +late final _sel_positiveInfinitySymbol = + objc.registerName("positiveInfinitySymbol"); +late final _sel_setPositiveInfinitySymbol_ = + objc.registerName("setPositiveInfinitySymbol:"); +late final _sel_textAttributesForPositiveInfinity = + objc.registerName("textAttributesForPositiveInfinity"); +late final _sel_setTextAttributesForPositiveInfinity_ = + objc.registerName("setTextAttributesForPositiveInfinity:"); +late final _sel_negativeInfinitySymbol = + objc.registerName("negativeInfinitySymbol"); +late final _sel_setNegativeInfinitySymbol_ = + objc.registerName("setNegativeInfinitySymbol:"); +late final _sel_textAttributesForNegativeInfinity = + objc.registerName("textAttributesForNegativeInfinity"); +late final _sel_setTextAttributesForNegativeInfinity_ = + objc.registerName("setTextAttributesForNegativeInfinity:"); +late final _sel_positivePrefix = objc.registerName("positivePrefix"); +late final _sel_setPositivePrefix_ = objc.registerName("setPositivePrefix:"); +late final _sel_positiveSuffix = objc.registerName("positiveSuffix"); +late final _sel_setPositiveSuffix_ = objc.registerName("setPositiveSuffix:"); +late final _sel_negativePrefix = objc.registerName("negativePrefix"); +late final _sel_setNegativePrefix_ = objc.registerName("setNegativePrefix:"); +late final _sel_negativeSuffix = objc.registerName("negativeSuffix"); +late final _sel_setNegativeSuffix_ = objc.registerName("setNegativeSuffix:"); +late final _sel_currencyCode = objc.registerName("currencyCode"); +late final _sel_setCurrencyCode_ = objc.registerName("setCurrencyCode:"); +late final _sel_currencySymbol = objc.registerName("currencySymbol"); +late final _sel_setCurrencySymbol_ = objc.registerName("setCurrencySymbol:"); +late final _sel_internationalCurrencySymbol = + objc.registerName("internationalCurrencySymbol"); +late final _sel_setInternationalCurrencySymbol_ = + objc.registerName("setInternationalCurrencySymbol:"); +late final _sel_percentSymbol = objc.registerName("percentSymbol"); +late final _sel_setPercentSymbol_ = objc.registerName("setPercentSymbol:"); +late final _sel_perMillSymbol = objc.registerName("perMillSymbol"); +late final _sel_setPerMillSymbol_ = objc.registerName("setPerMillSymbol:"); +late final _sel_minusSign = objc.registerName("minusSign"); +late final _sel_setMinusSign_ = objc.registerName("setMinusSign:"); +late final _sel_plusSign = objc.registerName("plusSign"); +late final _sel_setPlusSign_ = objc.registerName("setPlusSign:"); +late final _sel_exponentSymbol = objc.registerName("exponentSymbol"); +late final _sel_setExponentSymbol_ = objc.registerName("setExponentSymbol:"); +late final _sel_groupingSize = objc.registerName("groupingSize"); +late final _sel_setGroupingSize_ = objc.registerName("setGroupingSize:"); +late final _sel_secondaryGroupingSize = + objc.registerName("secondaryGroupingSize"); +late final _sel_setSecondaryGroupingSize_ = + objc.registerName("setSecondaryGroupingSize:"); +late final _sel_multiplier = objc.registerName("multiplier"); +final _objc_msgSend_174 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setMultiplier_ = objc.registerName("setMultiplier:"); +final _objc_msgSend_175 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_formatWidth = objc.registerName("formatWidth"); +late final _sel_setFormatWidth_ = objc.registerName("setFormatWidth:"); +late final _sel_paddingCharacter = objc.registerName("paddingCharacter"); +late final _sel_setPaddingCharacter_ = + objc.registerName("setPaddingCharacter:"); + +abstract class NSNumberFormatterPadPosition { + static const int NSNumberFormatterPadBeforePrefix = 0; + static const int NSNumberFormatterPadAfterPrefix = 1; + static const int NSNumberFormatterPadBeforeSuffix = 2; + static const int NSNumberFormatterPadAfterSuffix = 3; +} - bool preflightAndReturnError_(ffi.Pointer> error) { - return _lib._objc_msgSend_255( - _id, _lib._sel_preflightAndReturnError_1, error); - } +late final _sel_paddingPosition = objc.registerName("paddingPosition"); +final _objc_msgSend_176 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setPaddingPosition_ = objc.registerName("setPaddingPosition:"); +final _objc_msgSend_177 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); - bool loadAndReturnError_(ffi.Pointer> error) { - return _lib._objc_msgSend_255(_id, _lib._sel_loadAndReturnError_1, error); - } +abstract class NSNumberFormatterRoundingMode { + static const int NSNumberFormatterRoundCeiling = 0; + static const int NSNumberFormatterRoundFloor = 1; + static const int NSNumberFormatterRoundDown = 2; + static const int NSNumberFormatterRoundUp = 3; + static const int NSNumberFormatterRoundHalfEven = 4; + static const int NSNumberFormatterRoundHalfDown = 5; + static const int NSNumberFormatterRoundHalfUp = 6; +} - NSURL get bundleURL { - final _ret = _lib._objc_msgSend_466(_id, _lib._sel_bundleURL1); - return NSURL._(_ret, _lib, retain: true, release: true); - } +late final _sel_roundingMode = objc.registerName("roundingMode"); +final _objc_msgSend_178 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setRoundingMode_ = objc.registerName("setRoundingMode:"); +final _objc_msgSend_179 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_roundingIncrement = objc.registerName("roundingIncrement"); +final _objc_msgSend_180 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setRoundingIncrement_ = + objc.registerName("setRoundingIncrement:"); +final _objc_msgSend_181 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_minimumIntegerDigits = + objc.registerName("minimumIntegerDigits"); +late final _sel_setMinimumIntegerDigits_ = + objc.registerName("setMinimumIntegerDigits:"); +late final _sel_maximumIntegerDigits = + objc.registerName("maximumIntegerDigits"); +late final _sel_setMaximumIntegerDigits_ = + objc.registerName("setMaximumIntegerDigits:"); +late final _sel_minimumFractionDigits = + objc.registerName("minimumFractionDigits"); +late final _sel_setMinimumFractionDigits_ = + objc.registerName("setMinimumFractionDigits:"); +late final _sel_maximumFractionDigits = + objc.registerName("maximumFractionDigits"); +late final _sel_setMaximumFractionDigits_ = + objc.registerName("setMaximumFractionDigits:"); +late final _sel_minimum = objc.registerName("minimum"); +late final _sel_setMinimum_ = objc.registerName("setMinimum:"); +late final _sel_maximum = objc.registerName("maximum"); +late final _sel_setMaximum_ = objc.registerName("setMaximum:"); +late final _sel_currencyGroupingSeparator = + objc.registerName("currencyGroupingSeparator"); +late final _sel_setCurrencyGroupingSeparator_ = + objc.registerName("setCurrencyGroupingSeparator:"); +late final _sel_usesSignificantDigits = + objc.registerName("usesSignificantDigits"); +late final _sel_setUsesSignificantDigits_ = + objc.registerName("setUsesSignificantDigits:"); +late final _sel_minimumSignificantDigits = + objc.registerName("minimumSignificantDigits"); +late final _sel_setMinimumSignificantDigits_ = + objc.registerName("setMinimumSignificantDigits:"); +late final _sel_maximumSignificantDigits = + objc.registerName("maximumSignificantDigits"); +late final _sel_setMaximumSignificantDigits_ = + objc.registerName("setMaximumSignificantDigits:"); +late final _sel_isPartialStringValidationEnabled = + objc.registerName("isPartialStringValidationEnabled"); +late final _sel_setPartialStringValidationEnabled_ = + objc.registerName("setPartialStringValidationEnabled:"); +late final _sel_hasThousandSeparators = + objc.registerName("hasThousandSeparators"); +late final _sel_setHasThousandSeparators_ = + objc.registerName("setHasThousandSeparators:"); +late final _sel_thousandSeparator = objc.registerName("thousandSeparator"); +late final _sel_setThousandSeparator_ = + objc.registerName("setThousandSeparator:"); +late final _sel_localizesFormat = objc.registerName("localizesFormat"); +late final _sel_setLocalizesFormat_ = objc.registerName("setLocalizesFormat:"); +late final _sel_format = objc.registerName("format"); +late final _sel_setFormat_ = objc.registerName("setFormat:"); +late final _sel_attributedStringForZero = + objc.registerName("attributedStringForZero"); +late final _sel_setAttributedStringForZero_ = + objc.registerName("setAttributedStringForZero:"); +final _objc_msgSend_182 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_attributedStringForNil = + objc.registerName("attributedStringForNil"); +late final _sel_setAttributedStringForNil_ = + objc.registerName("setAttributedStringForNil:"); +late final _sel_attributedStringForNotANumber = + objc.registerName("attributedStringForNotANumber"); +late final _sel_setAttributedStringForNotANumber_ = + objc.registerName("setAttributedStringForNotANumber:"); + +class NSDecimalNumberHandler extends objc.NSObject { + NSDecimalNumberHandler._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSURL? get resourceURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_resourceURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSDecimalNumberHandler] that points to the same underlying object as [other]. + NSDecimalNumberHandler.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSURL? get executableURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_executableURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSDecimalNumberHandler] that wraps the given raw object pointer. + NSDecimalNumberHandler.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSURL? URLForAuxiliaryExecutable_(NSString executableName) { - final _ret = _lib._objc_msgSend_257( - _id, _lib._sel_URLForAuxiliaryExecutable_1, executableName._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSDecimalNumberHandler]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSDecimalNumberHandler); } - NSURL? get privateFrameworksURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_privateFrameworksURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static NSDecimalNumberHandler getDefaultDecimalNumberHandler() { + final _ret = _objc_msgSend_183( + _class_NSDecimalNumberHandler, _sel_defaultDecimalNumberHandler); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: true, release: true); } - NSURL? get sharedFrameworksURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_sharedFrameworksURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + NSDecimalNumberHandler + initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_( + int roundingMode, + int scale, + bool exact, + bool overflow, + bool underflow, + bool divideByZero) { + final _ret = _objc_msgSend_184( + this.pointer, + _sel_initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_, + roundingMode, + scale, + exact, + overflow, + underflow, + divideByZero); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: true, release: true); } - NSURL? get sharedSupportURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_sharedSupportURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static NSDecimalNumberHandler + decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_( + int roundingMode, + int scale, + bool exact, + bool overflow, + bool underflow, + bool divideByZero) { + final _ret = _objc_msgSend_184( + _class_NSDecimalNumberHandler, + _sel_decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_, + roundingMode, + scale, + exact, + overflow, + underflow, + divideByZero); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: true, release: true); } - NSURL? get builtInPlugInsURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_builtInPlugInsURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + @override + NSDecimalNumberHandler init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: true, release: true); } - NSURL? get appStoreReceiptURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_appStoreReceiptURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static NSDecimalNumberHandler new1() { + final _ret = _objc_msgSend_40(_class_NSDecimalNumberHandler, _sel_new); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: false, release: true); } - NSString get bundlePath { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_bundlePath1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSDecimalNumberHandler allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSDecimalNumberHandler, _sel_allocWithZone_, zone); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: false, release: true); } - NSString? get resourcePath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_resourcePath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSDecimalNumberHandler alloc() { + final _ret = _objc_msgSend_40(_class_NSDecimalNumberHandler, _sel_alloc); + return NSDecimalNumberHandler.castFromPointer(_ret, + retain: false, release: true); } - NSString? get executablePath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_executablePath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSDecimalNumberHandler, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSString? pathForAuxiliaryExecutable_(NSString executableName) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_pathForAuxiliaryExecutable_1, executableName._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSDecimalNumberHandler, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSString? get privateFrameworksPath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_privateFrameworksPath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSDecimalNumberHandler, _sel_accessInstanceVariablesDirectly); } - NSString? get sharedFrameworksPath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_sharedFrameworksPath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSDecimalNumberHandler, _sel_useStoredAccessor); } - NSString? get sharedSupportPath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_sharedSupportPath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSDecimalNumberHandler, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSString? get builtInPlugInsPath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_builtInPlugInsPath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSURL? URLForResource_withExtension_subdirectory_inBundleWithURL_( - SwiftLibrary _lib, - NSString? name, - NSString? ext, - NSString? subpath, - NSURL bundleURL) { - final _ret = _lib._objc_msgSend_698( - _lib._class_NSBundle1, - _lib._sel_URLForResource_withExtension_subdirectory_inBundleWithURL_1, - name?._id ?? ffi.nullptr, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr, - bundleURL._id); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSDecimalNumberHandler, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static NSArray? URLsForResourcesWithExtension_subdirectory_inBundleWithURL_( - SwiftLibrary _lib, NSString? ext, NSString? subpath, NSURL bundleURL) { - final _ret = _lib._objc_msgSend_699( - _lib._class_NSBundle1, - _lib._sel_URLsForResourcesWithExtension_subdirectory_inBundleWithURL_1, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr, - bundleURL._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSDecimalNumberHandler, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - NSURL? URLForResource_withExtension_(NSString? name, NSString? ext) { - final _ret = _lib._objc_msgSend_700( - _id, - _lib._sel_URLForResource_withExtension_1, - name?._id ?? ffi.nullptr, - ext?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSDecimalNumberHandler, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSURL? URLForResource_withExtension_subdirectory_( - NSString? name, NSString? ext, NSString? subpath) { - final _ret = _lib._objc_msgSend_701( - _id, - _lib._sel_URLForResource_withExtension_subdirectory_1, - name?._id ?? ffi.nullptr, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSURL? URLForResource_withExtension_subdirectory_localization_(NSString? name, - NSString? ext, NSString? subpath, NSString? localizationName) { - final _ret = _lib._objc_msgSend_702( - _id, - _lib._sel_URLForResource_withExtension_subdirectory_localization_1, - name?._id ?? ffi.nullptr, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr, - localizationName?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSDecimalNumberHandler, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - NSArray? URLsForResourcesWithExtension_subdirectory_( - NSString? ext, NSString? subpath) { - final _ret = _lib._objc_msgSend_703( - _id, - _lib._sel_URLsForResourcesWithExtension_subdirectory_1, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } +late final _class_NSDecimalNumberHandler = + objc.getClass("NSDecimalNumberHandler"); +late final _sel_defaultDecimalNumberHandler = + objc.registerName("defaultDecimalNumberHandler"); +final _objc_msgSend_183 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - NSArray? URLsForResourcesWithExtension_subdirectory_localization_( - NSString? ext, NSString? subpath, NSString? localizationName) { - final _ret = _lib._objc_msgSend_704( - _id, - _lib._sel_URLsForResourcesWithExtension_subdirectory_localization_1, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr, - localizationName?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } +abstract class NSRoundingMode { + static const int NSRoundPlain = 0; + static const int NSRoundDown = 1; + static const int NSRoundUp = 2; + static const int NSRoundBankers = 3; +} - static NSString? pathForResource_ofType_inDirectory_( - SwiftLibrary _lib, NSString? name, NSString? ext, NSString bundlePath) { - final _ret = _lib._objc_msgSend_705( - _lib._class_NSBundle1, - _lib._sel_pathForResource_ofType_inDirectory_1, - name?._id ?? ffi.nullptr, - ext?._id ?? ffi.nullptr, - bundlePath._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } +late final _sel_initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_ = + objc.registerName( + "initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:"); +final _objc_msgSend_184 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Short, + ffi.Bool, + ffi.Bool, + ffi.Bool, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + bool, + bool, + bool, + bool)>(); +late final _sel_decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_ = + objc.registerName( + "decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:"); +late final _sel_roundingBehavior = objc.registerName("roundingBehavior"); +late final _sel_setRoundingBehavior_ = + objc.registerName("setRoundingBehavior:"); +final _objc_msgSend_185 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - static NSArray pathsForResourcesOfType_inDirectory_( - SwiftLibrary _lib, NSString? ext, NSString bundlePath) { - final _ret = _lib._objc_msgSend_706( - _lib._class_NSBundle1, - _lib._sel_pathsForResourcesOfType_inDirectory_1, - ext?._id ?? ffi.nullptr, - bundlePath._id); - return NSArray._(_ret, _lib, retain: true, release: true); - } +abstract class NSLocaleLanguageDirection { + static const int NSLocaleLanguageDirectionUnknown = 0; + static const int NSLocaleLanguageDirectionLeftToRight = 1; + static const int NSLocaleLanguageDirectionRightToLeft = 2; + static const int NSLocaleLanguageDirectionTopToBottom = 3; + static const int NSLocaleLanguageDirectionBottomToTop = 4; +} - NSString? pathForResource_ofType_(NSString? name, NSString? ext) { - final _ret = _lib._objc_msgSend_707(_id, _lib._sel_pathForResource_ofType_1, - name?._id ?? ffi.nullptr, ext?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? pathForResource_ofType_inDirectory_forLocalization_(NSString? name, - NSString? ext, NSString? subpath, NSString? localizationName) { - final _ret = _lib._objc_msgSend_708( - _id, - _lib._sel_pathForResource_ofType_inDirectory_forLocalization_1, - name?._id ?? ffi.nullptr, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr, - localizationName?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } +class NSScanner extends objc.NSObject { + NSScanner._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSArray pathsForResourcesOfType_inDirectory_forLocalization_( - NSString? ext, NSString? subpath, NSString? localizationName) { - final _ret = _lib._objc_msgSend_709( - _id, - _lib._sel_pathsForResourcesOfType_inDirectory_forLocalization_1, - ext?._id ?? ffi.nullptr, - subpath?._id ?? ffi.nullptr, - localizationName?._id ?? ffi.nullptr); - return NSArray._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSScanner] that points to the same underlying object as [other]. + NSScanner.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSString localizedStringForKey_value_table_( - NSString key, NSString? value, NSString? tableName) { - final _ret = _lib._objc_msgSend_710( - _id, - _lib._sel_localizedStringForKey_value_table_1, - key._id, - value?._id ?? ffi.nullptr, - tableName?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSScanner] that wraps the given raw object pointer. + NSScanner.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSAttributedString localizedAttributedStringForKey_value_table_( - NSString key, NSString? value, NSString? tableName) { - final _ret = _lib._objc_msgSend_736( - _id, - _lib._sel_localizedAttributedStringForKey_value_table_1, - key._id, - value?._id ?? ffi.nullptr, - tableName?._id ?? ffi.nullptr); - return NSAttributedString._(_ret, _lib, retain: true, release: true); - } - - NSString? get bundleIdentifier { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_bundleIdentifier1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSScanner]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSScanner); } - NSDictionary? get infoDictionary { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_infoDictionary1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + objc.NSString get string { + final _ret = _objc_msgSend_12(this.pointer, _sel_string); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSDictionary? get localizedInfoDictionary { - final _ret = - _lib._objc_msgSend_390(_id, _lib._sel_localizedInfoDictionary1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + int get scanLocation { + return _objc_msgSend_29(this.pointer, _sel_scanLocation); } - NSObject? objectForInfoDictionaryKey_(NSString key) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_objectForInfoDictionaryKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + set scanLocation(int value) { + return _objc_msgSend_125(this.pointer, _sel_setScanLocation_, value); } - NSObject? classNamed_(NSString className) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_classNamed_1, className._id); + objc.NSCharacterSet? get charactersToBeSkipped { + final _ret = _objc_msgSend_186(this.pointer, _sel_charactersToBeSkipped); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSCharacterSet.castFromPointer(_ret, + retain: true, release: true); } - NSObject? get principalClass { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_principalClass1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + set charactersToBeSkipped(objc.NSCharacterSet? value) { + return _objc_msgSend_187(this.pointer, _sel_setCharactersToBeSkipped_, + value?.pointer ?? ffi.nullptr); } - NSArray get preferredLocalizations { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_preferredLocalizations1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool get caseSensitive { + return _objc_msgSend_7(this.pointer, _sel_caseSensitive); } - NSArray get localizations { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_localizations1); - return NSArray._(_ret, _lib, retain: true, release: true); + set caseSensitive(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setCaseSensitive_, value); } - NSString? get developmentLocalization { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_developmentLocalization1); + objc.NSObject? get locale { + final _ret = _objc_msgSend_66(this.pointer, _sel_locale); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static NSArray preferredLocalizationsFromArray_( - SwiftLibrary _lib, NSArray localizationsArray) { - final _ret = _lib._objc_msgSend_68(_lib._class_NSBundle1, - _lib._sel_preferredLocalizationsFromArray_1, localizationsArray._id); - return NSArray._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSArray preferredLocalizationsFromArray_forPreferences_( - SwiftLibrary _lib, - NSArray localizationsArray, - NSArray? preferencesArray) { - final _ret = _lib._objc_msgSend_737( - _lib._class_NSBundle1, - _lib._sel_preferredLocalizationsFromArray_forPreferences_1, - localizationsArray._id, - preferencesArray?._id ?? ffi.nullptr); - return NSArray._(_ret, _lib, retain: true, release: true); + set locale(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setLocale_, value?.pointer ?? ffi.nullptr); } - NSArray? get executableArchitectures { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_executableArchitectures1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + NSScanner initWithString_(objc.NSString string) { + final _ret = + _objc_msgSend_35(this.pointer, _sel_initWithString_, string.pointer); + return NSScanner.castFromPointer(_ret, retain: true, release: true); } - void setPreservationPriority_forTags_(double priority, NSSet tags) { - _lib._objc_msgSend_738( - _id, _lib._sel_setPreservationPriority_forTags_1, priority, tags._id); + bool scanInt_(ffi.Pointer result) { + return _objc_msgSend_189(this.pointer, _sel_scanInt_, result); } - double preservationPriorityForTag_(NSString tag) { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_308_fpret( - _id, _lib._sel_preservationPriorityForTag_1, tag._id) - : _lib._objc_msgSend_308( - _id, _lib._sel_preservationPriorityForTag_1, tag._id); + bool scanInteger_(ffi.Pointer result) { + return _objc_msgSend_190(this.pointer, _sel_scanInteger_, result); } - @override - NSBundle init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSBundle._(_ret, _lib, retain: true, release: true); + bool scanLongLong_(ffi.Pointer result) { + return _objc_msgSend_191(this.pointer, _sel_scanLongLong_, result); } - static NSBundle new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSBundle1, _lib._sel_new1); - return NSBundle._(_ret, _lib, retain: false, release: true); + bool scanUnsignedLongLong_(ffi.Pointer result) { + return _objc_msgSend_192(this.pointer, _sel_scanUnsignedLongLong_, result); } - static NSBundle allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSBundle1, _lib._sel_allocWithZone_1, zone); - return NSBundle._(_ret, _lib, retain: false, release: true); + bool scanFloat_(ffi.Pointer result) { + return _objc_msgSend_193(this.pointer, _sel_scanFloat_, result); } - static NSBundle alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSBundle1, _lib._sel_alloc1); - return NSBundle._(_ret, _lib, retain: false, release: true); + bool scanDouble_(ffi.Pointer result) { + return _objc_msgSend_194(this.pointer, _sel_scanDouble_, result); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSBundle1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + bool scanHexInt_(ffi.Pointer result) { + return _objc_msgSend_195(this.pointer, _sel_scanHexInt_, result); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSBundle1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + bool scanHexLongLong_(ffi.Pointer result) { + return _objc_msgSend_192(this.pointer, _sel_scanHexLongLong_, result); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSBundle1, _lib._sel_accessInstanceVariablesDirectly1); + bool scanHexFloat_(ffi.Pointer result) { + return _objc_msgSend_193(this.pointer, _sel_scanHexFloat_, result); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSBundle1, _lib._sel_useStoredAccessor1); + bool scanHexDouble_(ffi.Pointer result) { + return _objc_msgSend_194(this.pointer, _sel_scanHexDouble_, result); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSBundle1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + bool scanString_intoString_( + objc.NSString string, ffi.Pointer> result) { + return _objc_msgSend_196( + this.pointer, _sel_scanString_intoString_, string.pointer, result); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSBundle1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + bool scanCharactersFromSet_intoString_(objc.NSCharacterSet set, + ffi.Pointer> result) { + return _objc_msgSend_197(this.pointer, + _sel_scanCharactersFromSet_intoString_, set.pointer, result); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSBundle1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + bool scanUpToString_intoString_( + objc.NSString string, ffi.Pointer> result) { + return _objc_msgSend_196( + this.pointer, _sel_scanUpToString_intoString_, string.pointer, result); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSBundle1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool scanUpToCharactersFromSet_intoString_(objc.NSCharacterSet set, + ffi.Pointer> result) { + return _objc_msgSend_197(this.pointer, + _sel_scanUpToCharactersFromSet_intoString_, set.pointer, result); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSBundle1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + bool get atEnd { + return _objc_msgSend_7(this.pointer, _sel_isAtEnd); } -} - -class NSAttributedString extends NSObject { - NSAttributedString._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSAttributedString] that points to the same underlying object as [other]. - static NSAttributedString castFrom(T other) { - return NSAttributedString._(other._id, other._lib, - retain: true, release: true); + static NSScanner scannerWithString_(objc.NSString string) { + final _ret = _objc_msgSend_35( + _class_NSScanner, _sel_scannerWithString_, string.pointer); + return NSScanner.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSAttributedString] that wraps the given raw object pointer. - static NSAttributedString castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSAttributedString._(other, lib, retain: retain, release: release); + static objc.NSObject localizedScannerWithString_(objc.NSString string) { + final _ret = _objc_msgSend_35( + _class_NSScanner, _sel_localizedScannerWithString_, string.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSAttributedString]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSAttributedString1); + bool scanDecimal_(ffi.Pointer dcm) { + return _objc_msgSend_198(this.pointer, _sel_scanDecimal_, dcm); } - NSString get string { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_string1); - return NSString._(_ret, _lib, retain: true, release: true); + @override + NSScanner init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSScanner.castFromPointer(_ret, retain: true, release: true); } - NSDictionary attributesAtIndex_effectiveRange_( - int location, ffi.Pointer<_NSRange> range) { - final _ret = _lib._objc_msgSend_711( - _id, _lib._sel_attributesAtIndex_effectiveRange_1, location, range); - return NSDictionary._(_ret, _lib, retain: true, release: true); + static NSScanner new1() { + final _ret = _objc_msgSend_40(_class_NSScanner, _sel_new); + return NSScanner.castFromPointer(_ret, retain: false, release: true); } - int get length { - return _lib._objc_msgSend_10(_id, _lib._sel_length1); + static NSScanner allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSScanner, _sel_allocWithZone_, zone); + return NSScanner.castFromPointer(_ret, retain: false, release: true); } - NSObject? attribute_atIndex_effectiveRange_( - NSString attrName, int location, ffi.Pointer<_NSRange> range) { - final _ret = _lib._objc_msgSend_712( - _id, - _lib._sel_attribute_atIndex_effectiveRange_1, - attrName._id, - location, - range); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static NSScanner alloc() { + final _ret = _objc_msgSend_40(_class_NSScanner, _sel_alloc); + return NSScanner.castFromPointer(_ret, retain: false, release: true); } - NSAttributedString attributedSubstringFromRange_(_NSRange range) { - final _ret = _lib._objc_msgSend_713( - _id, _lib._sel_attributedSubstringFromRange_1, range); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSScanner, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSDictionary attributesAtIndex_longestEffectiveRange_inRange_( - int location, ffi.Pointer<_NSRange> range, _NSRange rangeLimit) { - final _ret = _lib._objc_msgSend_714( - _id, - _lib._sel_attributesAtIndex_longestEffectiveRange_inRange_1, - location, - range, - rangeLimit); - return NSDictionary._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSScanner, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSObject? attribute_atIndex_longestEffectiveRange_inRange_(NSString attrName, - int location, ffi.Pointer<_NSRange> range, _NSRange rangeLimit) { - final _ret = _lib._objc_msgSend_715( - _id, - _lib._sel_attribute_atIndex_longestEffectiveRange_inRange_1, - attrName._id, - location, - range, - rangeLimit); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSScanner, _sel_accessInstanceVariablesDirectly); } - bool isEqualToAttributedString_(NSAttributedString other) { - return _lib._objc_msgSend_716( - _id, _lib._sel_isEqualToAttributedString_1, other._id); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSScanner, _sel_useStoredAccessor); } - NSAttributedString initWithString_(NSString str) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithString_1, str._id); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSScanner, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSAttributedString initWithString_attributes_( - NSString str, NSDictionary? attrs) { - final _ret = _lib._objc_msgSend_717( - _id, - _lib._sel_initWithString_attributes_1, - str._id, - attrs?._id ?? ffi.nullptr); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSScanner, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSAttributedString initWithAttributedString_(NSAttributedString attrStr) { - final _ret = _lib._objc_msgSend_718( - _id, _lib._sel_initWithAttributedString_1, attrStr._id); - return NSAttributedString._(_ret, _lib, retain: true, release: true); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSScanner, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSScanner, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSScanner, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSScanner = objc.getClass("NSScanner"); +late final _sel_scanLocation = objc.registerName("scanLocation"); +late final _sel_setScanLocation_ = objc.registerName("setScanLocation:"); +late final _sel_charactersToBeSkipped = + objc.registerName("charactersToBeSkipped"); +final _objc_msgSend_186 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCharactersToBeSkipped_ = + objc.registerName("setCharactersToBeSkipped:"); +final _objc_msgSend_187 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_caseSensitive = objc.registerName("caseSensitive"); +late final _sel_setCaseSensitive_ = objc.registerName("setCaseSensitive:"); +final _objc_msgSend_188 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scanInt_ = objc.registerName("scanInt:"); +final _objc_msgSend_189 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scanInteger_ = objc.registerName("scanInteger:"); +final _objc_msgSend_190 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scanLongLong_ = objc.registerName("scanLongLong:"); +final _objc_msgSend_191 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scanUnsignedLongLong_ = + objc.registerName("scanUnsignedLongLong:"); +final _objc_msgSend_192 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_scanFloat_ = objc.registerName("scanFloat:"); +final _objc_msgSend_193 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scanDouble_ = objc.registerName("scanDouble:"); +final _objc_msgSend_194 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scanHexInt_ = objc.registerName("scanHexInt:"); +final _objc_msgSend_195 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scanHexLongLong_ = objc.registerName("scanHexLongLong:"); +late final _sel_scanHexFloat_ = objc.registerName("scanHexFloat:"); +late final _sel_scanHexDouble_ = objc.registerName("scanHexDouble:"); +late final _sel_scanString_intoString_ = + objc.registerName("scanString:intoString:"); +final _objc_msgSend_196 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_scanCharactersFromSet_intoString_ = + objc.registerName("scanCharactersFromSet:intoString:"); +final _objc_msgSend_197 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_scanUpToString_intoString_ = + objc.registerName("scanUpToString:intoString:"); +late final _sel_scanUpToCharactersFromSet_intoString_ = + objc.registerName("scanUpToCharactersFromSet:intoString:"); +late final _sel_isAtEnd = objc.registerName("isAtEnd"); +late final _sel_scannerWithString_ = objc.registerName("scannerWithString:"); +late final _sel_localizedScannerWithString_ = + objc.registerName("localizedScannerWithString:"); - void enumerateAttributesInRange_options_usingBlock_(_NSRange enumerationRange, - int opts, ObjCBlock_ffiVoid_NSDictionary_NSRange_bool block) { - _lib._objc_msgSend_719( - _id, - _lib._sel_enumerateAttributesInRange_options_usingBlock_1, - enumerationRange, - opts, - block._id); - } +final class NSDecimal extends ffi.Opaque {} - void enumerateAttribute_inRange_options_usingBlock_( - NSString attrName, - _NSRange enumerationRange, - int opts, - ObjCBlock_ffiVoid_ObjCObject_NSRange_bool block) { - _lib._objc_msgSend_720( - _id, - _lib._sel_enumerateAttribute_inRange_options_usingBlock_1, - attrName._id, - enumerationRange, - opts, - block._id); - } +late final _sel_scanDecimal_ = objc.registerName("scanDecimal:"); +final _objc_msgSend_198 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSException extends objc.NSObject { + NSException._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSAttributedString? - initWithContentsOfMarkdownFileAtURL_options_baseURL_error_( - NSURL markdownFile, - NSAttributedStringMarkdownParsingOptions? options, - NSURL? baseURL, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_725( - _id, - _lib._sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_1, - markdownFile._id, - options?._id ?? ffi.nullptr, - baseURL?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSAttributedString._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSException] that points to the same underlying object as [other]. + NSException.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSAttributedString? initWithMarkdown_options_baseURL_error_( - NSData markdown, - NSAttributedStringMarkdownParsingOptions? options, - NSURL? baseURL, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_726( - _id, - _lib._sel_initWithMarkdown_options_baseURL_error_1, - markdown._id, - options?._id ?? ffi.nullptr, - baseURL?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSAttributedString._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSException] that wraps the given raw object pointer. + NSException.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSAttributedString? initWithMarkdownString_options_baseURL_error_( - NSString markdownString, - NSAttributedStringMarkdownParsingOptions? options, - NSURL? baseURL, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_727( - _id, - _lib._sel_initWithMarkdownString_options_baseURL_error_1, - markdownString._id, - options?._id ?? ffi.nullptr, - baseURL?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSAttributedString._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSException]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSException); } - NSAttributedString initWithFormat_options_locale_( - NSAttributedString format, int options, NSLocale? locale) { - final _ret = _lib._objc_msgSend_728( - _id, - _lib._sel_initWithFormat_options_locale_1, - format._id, - options, - locale?._id ?? ffi.nullptr); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + static NSException exceptionWithName_reason_userInfo_( + objc.NSString name, objc.NSString? reason, objc.NSDictionary? userInfo) { + final _ret = _objc_msgSend_199( + _class_NSException, + _sel_exceptionWithName_reason_userInfo_, + name.pointer, + reason?.pointer ?? ffi.nullptr, + userInfo?.pointer ?? ffi.nullptr); + return NSException.castFromPointer(_ret, retain: true, release: true); } - - NSAttributedString initWithFormat_options_locale_arguments_( - NSAttributedString format, - int options, - NSLocale? locale, - ffi.Pointer<__va_list_tag> arguments) { - final _ret = _lib._objc_msgSend_729( - _id, - _lib._sel_initWithFormat_options_locale_arguments_1, - format._id, - options, - locale?._id ?? ffi.nullptr, - arguments); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + + NSException initWithName_reason_userInfo_(objc.NSString aName, + objc.NSString? aReason, objc.NSDictionary? aUserInfo) { + final _ret = _objc_msgSend_200( + this.pointer, + _sel_initWithName_reason_userInfo_, + aName.pointer, + aReason?.pointer ?? ffi.nullptr, + aUserInfo?.pointer ?? ffi.nullptr); + return NSException.castFromPointer(_ret, retain: true, release: true); } - static NSAttributedString localizedAttributedStringWithFormat_( - SwiftLibrary _lib, NSAttributedString format) { - final _ret = _lib._objc_msgSend_718(_lib._class_NSAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_1, format._id); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + objc.NSString get name { + final _ret = _objc_msgSend_12(this.pointer, _sel_name); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSAttributedString localizedAttributedStringWithFormat_options_( - SwiftLibrary _lib, NSAttributedString format, int options) { - final _ret = _lib._objc_msgSend_730( - _lib._class_NSAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_options_1, - format._id, - options); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + objc.NSString? get reason { + final _ret = _objc_msgSend_13(this.pointer, _sel_reason); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSAttributedString initWithFormat_options_locale_context_( - NSAttributedString format, - int options, - NSLocale? locale, - NSDictionary context) { - final _ret = _lib._objc_msgSend_731( - _id, - _lib._sel_initWithFormat_options_locale_context_1, - format._id, - options, - locale?._id ?? ffi.nullptr, - context._id); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + objc.NSDictionary? get userInfo { + final _ret = _objc_msgSend_65(this.pointer, _sel_userInfo); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - NSAttributedString initWithFormat_options_locale_context_arguments_( - NSAttributedString format, - int options, - NSLocale? locale, - NSDictionary context, - ffi.Pointer<__va_list_tag> arguments) { - final _ret = _lib._objc_msgSend_732( - _id, - _lib._sel_initWithFormat_options_locale_context_arguments_1, - format._id, - options, - locale?._id ?? ffi.nullptr, - context._id, - arguments); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + objc.NSArray get callStackReturnAddresses { + final _ret = _objc_msgSend_6(this.pointer, _sel_callStackReturnAddresses); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSAttributedString localizedAttributedStringWithFormat_context_( - SwiftLibrary _lib, NSAttributedString format, NSDictionary context) { - final _ret = _lib._objc_msgSend_733( - _lib._class_NSAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_context_1, - format._id, - context._id); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + objc.NSArray get callStackSymbols { + final _ret = _objc_msgSend_6(this.pointer, _sel_callStackSymbols); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSAttributedString - localizedAttributedStringWithFormat_options_context_(SwiftLibrary _lib, - NSAttributedString format, int options, NSDictionary context) { - final _ret = _lib._objc_msgSend_734( - _lib._class_NSAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_options_context_1, - format._id, - options, - context._id); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + void raise() { + _objc_msgSend_82(this.pointer, _sel_raise); } - NSAttributedString attributedStringByInflectingString() { - final _ret = _lib._objc_msgSend_735( - _id, _lib._sel_attributedStringByInflectingString1); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + static void raise_format_(objc.NSString name, objc.NSString format) { + _objc_msgSend_201( + _class_NSException, _sel_raise_format_, name.pointer, format.pointer); } - @override - NSAttributedString init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + static void raise_format_arguments_(objc.NSString name, objc.NSString format, + ffi.Pointer<__va_list_tag> argList) { + _objc_msgSend_202(_class_NSException, _sel_raise_format_arguments_, + name.pointer, format.pointer, argList); } - static NSAttributedString new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSAttributedString1, _lib._sel_new1); - return NSAttributedString._(_ret, _lib, retain: false, release: true); + @override + NSException init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSException.castFromPointer(_ret, retain: true, release: true); } - static NSAttributedString allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSAttributedString1, _lib._sel_allocWithZone_1, zone); - return NSAttributedString._(_ret, _lib, retain: false, release: true); + static NSException new1() { + final _ret = _objc_msgSend_40(_class_NSException, _sel_new); + return NSException.castFromPointer(_ret, retain: false, release: true); } - static NSAttributedString alloc(SwiftLibrary _lib) { + static NSException allocWithZone_(ffi.Pointer<_NSZone> zone) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSAttributedString1, _lib._sel_alloc1); - return NSAttributedString._(_ret, _lib, retain: false, release: true); + _objc_msgSend_47(_class_NSException, _sel_allocWithZone_, zone); + return NSException.castFromPointer(_ret, retain: false, release: true); + } + + static NSException alloc() { + final _ret = _objc_msgSend_40(_class_NSException, _sel_alloc); + return NSException.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSAttributedString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSException, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSAttributedString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSException, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSAttributedString1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSException, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSAttributedString1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSException, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSAttributedString1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSException, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSAttributedString1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSException, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSAttributedString1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSException, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSException, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSException, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSException = objc.getClass("NSException"); +late final _sel_exceptionWithName_reason_userInfo_ = + objc.registerName("exceptionWithName:reason:userInfo:"); +final _objc_msgSend_199 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithName_reason_userInfo_ = + objc.registerName("initWithName:reason:userInfo:"); +final _objc_msgSend_200 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_reason = objc.registerName("reason"); +late final _sel_userInfo = objc.registerName("userInfo"); +late final _sel_callStackReturnAddresses = + objc.registerName("callStackReturnAddresses"); +late final _sel_callStackSymbols = objc.registerName("callStackSymbols"); +late final _sel_raise = objc.registerName("raise"); +late final _sel_raise_format_ = objc.registerName("raise:format:"); +final _objc_msgSend_201 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_raise_format_arguments_ = + objc.registerName("raise:format:arguments:"); +final _objc_msgSend_202 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>(); + +class NSRunLoop extends objc.NSObject { + NSRunLoop._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSRunLoop] that points to the same underlying object as [other]. + NSRunLoop.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSRunLoop] that wraps the given raw object pointer. + NSRunLoop.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSRunLoop]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSRunLoop); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSAttributedString1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSRunLoop getCurrentRunLoop() { + final _ret = _objc_msgSend_203(_class_NSRunLoop, _sel_currentRunLoop); + return NSRunLoop.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSAttributedString1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSRunLoop getMainRunLoop() { + final _ret = _objc_msgSend_203(_class_NSRunLoop, _sel_mainRunLoop); + return NSRunLoop.castFromPointer(_ret, retain: true, release: true); } -} -abstract class NSAttributedStringEnumerationOptions { - static const int NSAttributedStringEnumerationReverse = 2; - static const int - NSAttributedStringEnumerationLongestEffectiveRangeNotRequired = 1048576; -} + objc.NSString? get currentMode { + final _ret = _objc_msgSend_13(this.pointer, _sel_currentMode); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); + } -void _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, _NSRange, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistry = , _NSRange, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_registerClosure( - void Function(ffi.Pointer, _NSRange, ffi.Pointer) - fn) { - final id = - ++_ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + ffi.Pointer<__CFRunLoop> getCFRunLoop() { + return _objc_msgSend_204(this.pointer, _sel_getCFRunLoop); + } -void _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); + void addTimer_forMode_(NSTimer timer, objc.NSString mode) { + _objc_msgSend_213( + this.pointer, _sel_addTimer_forMode_, timer.pointer, mode.pointer); + } -class ObjCBlock_ffiVoid_NSDictionary_NSRange_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSDictionary_NSRange_bool._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + void addPort_forMode_(NSPort aPort, objc.NSString mode) { + _objc_msgSend_244( + this.pointer, _sel_addPort_forMode_, aPort.pointer, mode.pointer); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSDictionary_NSRange_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSDictionary_NSRange_bool._(pointer, lib, - retain: retain, release: release); + void removePort_forMode_(NSPort aPort, objc.NSString mode) { + _objc_msgSend_244( + this.pointer, _sel_removePort_forMode_, aPort.pointer, mode.pointer); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSDictionary_NSRange_bool.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + objc.NSDate? limitDateForMode_(objc.NSString mode) { + final _ret = + _objc_msgSend_93(this.pointer, _sel_limitDateForMode_, mode.pointer); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSDictionary_NSRange_bool.fromFunction(SwiftLibrary lib, - void Function(NSDictionary, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2) => - fn(NSDictionary._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + void acceptInputForMode_beforeDate_( + objc.NSString mode, objc.NSDate limitDate) { + _objc_msgSend_245(this.pointer, _sel_acceptInputForMode_beforeDate_, + mode.pointer, limitDate.pointer); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSDictionary_NSRange_bool.listener(SwiftLibrary lib, - void Function(NSDictionary, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2) => - fn(NSDictionary._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - _NSRange, ffi.Pointer)>? _dartFuncListenerTrampoline; + void run() { + _objc_msgSend_82(this.pointer, _sel_run); + } - void call(NSDictionary arg0, _NSRange arg1, ffi.Pointer arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>()(_id, arg0._id, arg1, arg2); -} + void runUntilDate_(objc.NSDate limitDate) { + _objc_msgSend_246(this.pointer, _sel_runUntilDate_, limitDate.pointer); + } -void _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, _NSRange, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureRegistry = , _NSRange, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_registerClosure( - void Function(ffi.Pointer, _NSRange, ffi.Pointer) - fn) { - final id = ++_ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + bool runMode_beforeDate_(objc.NSString mode, objc.NSDate limitDate) { + return _objc_msgSend_247(this.pointer, _sel_runMode_beforeDate_, + mode.pointer, limitDate.pointer); + } -void _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); + void configureAsServer() { + _objc_msgSend_82(this.pointer, _sel_configureAsServer); + } -class ObjCBlock_ffiVoid_ObjCObject_NSRange_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_ObjCObject_NSRange_bool._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + void performInModes_block_(objc.NSArray modes, ObjCBlock_ffiVoid block) { + _objc_msgSend_248( + this.pointer, _sel_performInModes_block_, modes.pointer, block.pointer); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_ObjCObject_NSRange_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_ObjCObject_NSRange_bool._(pointer, lib, - retain: retain, release: release); + void performBlock_(ObjCBlock_ffiVoid block) { + _objc_msgSend_249(this.pointer, _sel_performBlock_, block.pointer); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_NSRange_bool.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + void performSelector_target_argument_order_modes_( + ffi.Pointer aSelector, + objc.NSObject target, + objc.NSObject? arg, + int order, + objc.NSArray modes) { + _objc_msgSend_250( + this.pointer, + _sel_performSelector_target_argument_order_modes_, + aSelector, + target.pointer, + arg?.pointer ?? ffi.nullptr, + order, + modes.pointer); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_ObjCObject_NSRange_bool.fromFunction(SwiftLibrary lib, - void Function(NSObject?, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2) => - fn(arg0.address == 0 ? null : NSObject._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + void cancelPerformSelector_target_argument_( + ffi.Pointer aSelector, + objc.NSObject target, + objc.NSObject? arg) { + _objc_msgSend_251(this.pointer, _sel_cancelPerformSelector_target_argument_, + aSelector, target.pointer, arg?.pointer ?? ffi.nullptr); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_ObjCObject_NSRange_bool.listener(SwiftLibrary lib, - void Function(NSObject?, _NSRange, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - _NSRange, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_registerClosure( - (ffi.Pointer arg0, _NSRange arg1, - ffi.Pointer arg2) => - fn(arg0.address == 0 ? null : NSObject._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - _NSRange, ffi.Pointer)>? _dartFuncListenerTrampoline; + void cancelPerformSelectorsWithTarget_(objc.NSObject target) { + _objc_msgSend_49( + this.pointer, _sel_cancelPerformSelectorsWithTarget_, target.pointer); + } - void call(NSObject? arg0, _NSRange arg1, ffi.Pointer arg2) => _id - .ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - _NSRange arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - _NSRange, ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1, arg2); -} + @override + NSRunLoop init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSRunLoop.castFromPointer(_ret, retain: true, release: true); + } -class NSAttributedStringMarkdownParsingOptions extends NSObject { - NSAttributedStringMarkdownParsingOptions._( - ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + static NSRunLoop new1() { + final _ret = _objc_msgSend_40(_class_NSRunLoop, _sel_new); + return NSRunLoop.castFromPointer(_ret, retain: false, release: true); + } - /// Returns a [NSAttributedStringMarkdownParsingOptions] that points to the same underlying object as [other]. - static NSAttributedStringMarkdownParsingOptions - castFrom(T other) { - return NSAttributedStringMarkdownParsingOptions._(other._id, other._lib, - retain: true, release: true); + static NSRunLoop allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSRunLoop, _sel_allocWithZone_, zone); + return NSRunLoop.castFromPointer(_ret, retain: false, release: true); } - /// Returns a [NSAttributedStringMarkdownParsingOptions] that wraps the given raw object pointer. - static NSAttributedStringMarkdownParsingOptions castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSAttributedStringMarkdownParsingOptions._(other, lib, - retain: retain, release: release); + static NSRunLoop alloc() { + final _ret = _objc_msgSend_40(_class_NSRunLoop, _sel_alloc); + return NSRunLoop.castFromPointer(_ret, retain: false, release: true); } - /// Returns whether [obj] is an instance of [NSAttributedStringMarkdownParsingOptions]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSAttributedStringMarkdownParsingOptions1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSRunLoop, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - @override - NSAttributedStringMarkdownParsingOptions init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSAttributedStringMarkdownParsingOptions._(_ret, _lib, - retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSRunLoop, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - bool get allowsExtendedAttributes { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsExtendedAttributes1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSRunLoop, _sel_accessInstanceVariablesDirectly); } - set allowsExtendedAttributes(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAllowsExtendedAttributes_1, value); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSRunLoop, _sel_useStoredAccessor); } - int get interpretedSyntax { - return _lib._objc_msgSend_721(_id, _lib._sel_interpretedSyntax1); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSRunLoop, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - set interpretedSyntax(int value) { - return _lib._objc_msgSend_722(_id, _lib._sel_setInterpretedSyntax_1, value); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSRunLoop, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - int get failurePolicy { - return _lib._objc_msgSend_723(_id, _lib._sel_failurePolicy1); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSRunLoop, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - set failurePolicy(int value) { - return _lib._objc_msgSend_724(_id, _lib._sel_setFailurePolicy_1, value); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSRunLoop, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString? get languageCode { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_languageCode1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSRunLoop, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSRunLoop = objc.getClass("NSRunLoop"); +late final _sel_currentRunLoop = objc.registerName("currentRunLoop"); +final _objc_msgSend_203 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_mainRunLoop = objc.registerName("mainRunLoop"); +late final _sel_currentMode = objc.registerName("currentMode"); + +final class __CFRunLoop extends ffi.Opaque {} + +late final _sel_getCFRunLoop = objc.registerName("getCFRunLoop"); +final _objc_msgSend_204 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer<__CFRunLoop> Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer<__CFRunLoop> Function( + ffi.Pointer, ffi.Pointer)>(); + +class NSTimer extends objc.NSObject { + NSTimer._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSTimer] that points to the same underlying object as [other]. + NSTimer.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSTimer] that wraps the given raw object pointer. + NSTimer.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSTimer]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSTimer); + } + + static NSTimer timerWithTimeInterval_invocation_repeats_( + double ti, objc.NSInvocation invocation, bool yesOrNo) { + final _ret = _objc_msgSend_205( + _class_NSTimer, + _sel_timerWithTimeInterval_invocation_repeats_, + ti, + invocation.pointer, + yesOrNo); + return NSTimer.castFromPointer(_ret, retain: true, release: true); + } + + static NSTimer scheduledTimerWithTimeInterval_invocation_repeats_( + double ti, objc.NSInvocation invocation, bool yesOrNo) { + final _ret = _objc_msgSend_205( + _class_NSTimer, + _sel_scheduledTimerWithTimeInterval_invocation_repeats_, + ti, + invocation.pointer, + yesOrNo); + return NSTimer.castFromPointer(_ret, retain: true, release: true); + } + + static NSTimer timerWithTimeInterval_target_selector_userInfo_repeats_( + double ti, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? userInfo, + bool yesOrNo) { + final _ret = _objc_msgSend_206( + _class_NSTimer, + _sel_timerWithTimeInterval_target_selector_userInfo_repeats_, + ti, + aTarget.pointer, + aSelector, + userInfo?.pointer ?? ffi.nullptr, + yesOrNo); + return NSTimer.castFromPointer(_ret, retain: true, release: true); + } + + static NSTimer + scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_( + double ti, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? userInfo, + bool yesOrNo) { + final _ret = _objc_msgSend_206( + _class_NSTimer, + _sel_scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_, + ti, + aTarget.pointer, + aSelector, + userInfo?.pointer ?? ffi.nullptr, + yesOrNo); + return NSTimer.castFromPointer(_ret, retain: true, release: true); } - set languageCode(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setLanguageCode_1, value?._id ?? ffi.nullptr); + static NSTimer timerWithTimeInterval_repeats_block_( + double interval, bool repeats, ObjCBlock_ffiVoid_NSTimer block) { + final _ret = _objc_msgSend_207( + _class_NSTimer, + _sel_timerWithTimeInterval_repeats_block_, + interval, + repeats, + block.pointer); + return NSTimer.castFromPointer(_ret, retain: true, release: true); } - bool get appliesSourcePositionAttributes { - return _lib._objc_msgSend_12( - _id, _lib._sel_appliesSourcePositionAttributes1); + static NSTimer scheduledTimerWithTimeInterval_repeats_block_( + double interval, bool repeats, ObjCBlock_ffiVoid_NSTimer block) { + final _ret = _objc_msgSend_207( + _class_NSTimer, + _sel_scheduledTimerWithTimeInterval_repeats_block_, + interval, + repeats, + block.pointer); + return NSTimer.castFromPointer(_ret, retain: true, release: true); } - set appliesSourcePositionAttributes(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAppliesSourcePositionAttributes_1, value); + NSTimer initWithFireDate_interval_repeats_block_(objc.NSDate date, + double interval, bool repeats, ObjCBlock_ffiVoid_NSTimer block) { + final _ret = _objc_msgSend_208( + this.pointer, + _sel_initWithFireDate_interval_repeats_block_, + date.pointer, + interval, + repeats, + block.pointer); + return NSTimer.castFromPointer(_ret, retain: true, release: true); } - static NSAttributedStringMarkdownParsingOptions new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSAttributedStringMarkdownParsingOptions1, _lib._sel_new1); - return NSAttributedStringMarkdownParsingOptions._(_ret, _lib, - retain: false, release: true); + NSTimer initWithFireDate_interval_target_selector_userInfo_repeats_( + objc.NSDate date, + double ti, + objc.NSObject t, + ffi.Pointer s, + objc.NSObject? ui, + bool rep) { + final _ret = _objc_msgSend_209( + this.pointer, + _sel_initWithFireDate_interval_target_selector_userInfo_repeats_, + date.pointer, + ti, + t.pointer, + s, + ui?.pointer ?? ffi.nullptr, + rep); + return NSTimer.castFromPointer(_ret, retain: true, release: true); } - static NSAttributedStringMarkdownParsingOptions allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_allocWithZone_1, - zone); - return NSAttributedStringMarkdownParsingOptions._(_ret, _lib, - retain: false, release: true); + void fire() { + _objc_msgSend_82(this.pointer, _sel_fire); } - static NSAttributedStringMarkdownParsingOptions alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_alloc1); - return NSAttributedStringMarkdownParsingOptions._(_ret, _lib, - retain: false, release: true); + objc.NSDate get fireDate { + final _ret = _objc_msgSend_210(this.pointer, _sel_fireDate); + return objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set fireDate(objc.NSDate value) { + return _objc_msgSend_211(this.pointer, _sel_setFireDate_, value.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + double get timeInterval { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_timeInterval) + : _objc_msgSend_115(this.pointer, _sel_timeInterval); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_accessInstanceVariablesDirectly1); + double get tolerance { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_tolerance) + : _objc_msgSend_115(this.pointer, _sel_tolerance); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_useStoredAccessor1); + set tolerance(double value) { + return _objc_msgSend_212(this.pointer, _sel_setTolerance_, value); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + void invalidate() { + _objc_msgSend_82(this.pointer, _sel_invalidate); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_automaticallyNotifiesObserversForKey_1, - key._id); + bool get valid { + return _objc_msgSend_7(this.pointer, _sel_isValid); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSObject? get userInfo { + final _ret = _objc_msgSend_66(this.pointer, _sel_userInfo); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + @override + NSTimer init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSTimer.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSAttributedStringMarkdownParsingOptions1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSTimer new1() { + final _ret = _objc_msgSend_40(_class_NSTimer, _sel_new); + return NSTimer.castFromPointer(_ret, retain: false, release: true); } -} - -abstract class NSAttributedStringMarkdownInterpretedSyntax { - static const int NSAttributedStringMarkdownInterpretedSyntaxFull = 0; - static const int NSAttributedStringMarkdownInterpretedSyntaxInlineOnly = 1; - static const int - NSAttributedStringMarkdownInterpretedSyntaxInlineOnlyPreservingWhitespace = - 2; -} - -abstract class NSAttributedStringMarkdownParsingFailurePolicy { - static const int NSAttributedStringMarkdownParsingFailureReturnError = 0; - static const int - NSAttributedStringMarkdownParsingFailureReturnPartiallyParsedIfPossible = - 1; -} - -abstract class NSAttributedStringFormattingOptions { - static const int - NSAttributedStringFormattingInsertArgumentAttributesWithoutMerging = 1; - static const int NSAttributedStringFormattingApplyReplacementIndexAttribute = - 2; -} -class NSMutableAttributedString extends NSAttributedString { - NSMutableAttributedString._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSMutableAttributedString] that points to the same underlying object as [other]. - static NSMutableAttributedString castFrom(T other) { - return NSMutableAttributedString._(other._id, other._lib, - retain: true, release: true); + static NSTimer allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSTimer, _sel_allocWithZone_, zone); + return NSTimer.castFromPointer(_ret, retain: false, release: true); } - /// Returns a [NSMutableAttributedString] that wraps the given raw object pointer. - static NSMutableAttributedString castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableAttributedString._(other, lib, - retain: retain, release: release); + static NSTimer alloc() { + final _ret = _objc_msgSend_40(_class_NSTimer, _sel_alloc); + return NSTimer.castFromPointer(_ret, retain: false, release: true); } - /// Returns whether [obj] is an instance of [NSMutableAttributedString]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMutableAttributedString1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSTimer, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - void replaceCharactersInRange_withString_(_NSRange range, NSString str) { - _lib._objc_msgSend_689( - _id, _lib._sel_replaceCharactersInRange_withString_1, range, str._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSTimer, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - void setAttributes_range_(NSDictionary? attrs, _NSRange range) { - _lib._objc_msgSend_739( - _id, _lib._sel_setAttributes_range_1, attrs?._id ?? ffi.nullptr, range); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSTimer, _sel_accessInstanceVariablesDirectly); } - NSMutableString get mutableString { - final _ret = _lib._objc_msgSend_740(_id, _lib._sel_mutableString1); - return NSMutableString._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSTimer, _sel_useStoredAccessor); } - void addAttribute_value_range_( - NSString name, NSObject value, _NSRange range) { - _lib._objc_msgSend_741( - _id, _lib._sel_addAttribute_value_range_1, name._id, value._id, range); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSTimer, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - void addAttributes_range_(NSDictionary attrs, _NSRange range) { - _lib._objc_msgSend_742( - _id, _lib._sel_addAttributes_range_1, attrs._id, range); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSTimer, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - void removeAttribute_range_(NSString name, _NSRange range) { - _lib._objc_msgSend_743( - _id, _lib._sel_removeAttribute_range_1, name._id, range); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSTimer, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSTimer, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40(_class_NSTimer, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSTimer = objc.getClass("NSTimer"); +late final _sel_timerWithTimeInterval_invocation_repeats_ = + objc.registerName("timerWithTimeInterval:invocation:repeats:"); +final _objc_msgSend_205 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer, + bool)>(); +late final _sel_scheduledTimerWithTimeInterval_invocation_repeats_ = + objc.registerName("scheduledTimerWithTimeInterval:invocation:repeats:"); +late final _sel_timerWithTimeInterval_target_selector_userInfo_repeats_ = objc + .registerName("timerWithTimeInterval:target:selector:userInfo:repeats:"); +final _objc_msgSend_206 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_ = + objc.registerName( + "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:"); +void _ObjCBlock_ffiVoid_NSTimer_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSTimer_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSTimer_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSTimer_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSTimer_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSTimer_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - void replaceCharactersInRange_withAttributedString_( - _NSRange range, NSAttributedString attrString) { - _lib._objc_msgSend_744( - _id, - _lib._sel_replaceCharactersInRange_withAttributedString_1, - range, - attrString._id); - } +void _ObjCBlock_ffiVoid_NSTimer_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSTimer_closureRegistry[block.ref.target.address]!(arg0); - void insertAttributedString_atIndex_(NSAttributedString attrString, int loc) { - _lib._objc_msgSend_745( - _id, _lib._sel_insertAttributedString_atIndex_1, attrString._id, loc); - } +class ObjCBlock_ffiVoid_NSTimer extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSTimer._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - void appendAttributedString_(NSAttributedString attrString) { - _lib._objc_msgSend_746( - _id, _lib._sel_appendAttributedString_1, attrString._id); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSTimer castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSTimer._(pointer, + retain: retain, release: release); } - void deleteCharactersInRange_(_NSRange range) { - _lib._objc_msgSend_476(_id, _lib._sel_deleteCharactersInRange_1, range); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSTimer.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSTimer_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - void setAttributedString_(NSAttributedString attrString) { - _lib._objc_msgSend_746( - _id, _lib._sel_setAttributedString_1, attrString._id); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSTimer.fromFunction(void Function(NSTimer) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSTimer_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSTimer_registerClosure( + (ffi.Pointer arg0) => fn( + NSTimer.castFromPointer(arg0, + retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; - void beginEditing() { - _lib._objc_msgSend_1(_id, _lib._sel_beginEditing1); - } + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSTimer.listener(void Function(NSTimer) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSTimer_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSTimer_registerClosure( + (ffi.Pointer arg0) => fn( + NSTimer.castFromPointer(arg0, + retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; - void endEditing() { - _lib._objc_msgSend_1(_id, _lib._sel_endEditing1); - } + void call(NSTimer arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(pointer, arg0.pointer); +} + +late final _sel_timerWithTimeInterval_repeats_block_ = + objc.registerName("timerWithTimeInterval:repeats:block:"); +final _objc_msgSend_207 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Bool, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + double, + bool, + ffi.Pointer)>(); +late final _sel_scheduledTimerWithTimeInterval_repeats_block_ = + objc.registerName("scheduledTimerWithTimeInterval:repeats:block:"); +late final _sel_initWithFireDate_interval_repeats_block_ = + objc.registerName("initWithFireDate:interval:repeats:block:"); +final _objc_msgSend_208 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Bool, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + double, + bool, + ffi.Pointer)>(); +late final _sel_initWithFireDate_interval_target_selector_userInfo_repeats_ = + objc.registerName( + "initWithFireDate:interval:target:selector:userInfo:repeats:"); +final _objc_msgSend_209 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_fire = objc.registerName("fire"); +late final _sel_fireDate = objc.registerName("fireDate"); +final _objc_msgSend_210 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setFireDate_ = objc.registerName("setFireDate:"); +final _objc_msgSend_211 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_timeInterval = objc.registerName("timeInterval"); +late final _sel_tolerance = objc.registerName("tolerance"); +late final _sel_setTolerance_ = objc.registerName("setTolerance:"); +final _objc_msgSend_212 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Double)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, double)>(); +late final _sel_invalidate = objc.registerName("invalidate"); +late final _sel_isValid = objc.registerName("isValid"); +late final _sel_addTimer_forMode_ = objc.registerName("addTimer:forMode:"); +final _objc_msgSend_213 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSPort extends objc.NSObject { + NSPort._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - void appendLocalizedFormat_(NSAttributedString format) { - _lib._objc_msgSend_746(_id, _lib._sel_appendLocalizedFormat_1, format._id); - } + /// Constructs a [NSPort] that points to the same underlying object as [other]. + NSPort.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - @override - NSMutableAttributedString initWithString_(NSString str) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithString_1, str._id); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + /// Constructs a [NSPort] that wraps the given raw object pointer. + NSPort.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSPort]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSPort); } - @override - NSMutableAttributedString initWithString_attributes_( - NSString str, NSDictionary? attrs) { - final _ret = _lib._objc_msgSend_717( - _id, - _lib._sel_initWithString_attributes_1, - str._id, - attrs?._id ?? ffi.nullptr); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + static NSPort port() { + final _ret = _objc_msgSend_214(_class_NSPort, _sel_port); + return NSPort.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableAttributedString initWithAttributedString_( - NSAttributedString attrStr) { - final _ret = _lib._objc_msgSend_718( - _id, _lib._sel_initWithAttributedString_1, attrStr._id); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + void invalidate() { + _objc_msgSend_82(this.pointer, _sel_invalidate); } - @override - NSMutableAttributedString? - initWithContentsOfMarkdownFileAtURL_options_baseURL_error_( - NSURL markdownFile, - NSAttributedStringMarkdownParsingOptions? options, - NSURL? baseURL, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_725( - _id, - _lib._sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_1, - markdownFile._id, - options?._id ?? ffi.nullptr, - baseURL?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + bool get valid { + return _objc_msgSend_7(this.pointer, _sel_isValid); } - @override - NSMutableAttributedString? initWithMarkdown_options_baseURL_error_( - NSData markdown, - NSAttributedStringMarkdownParsingOptions? options, - NSURL? baseURL, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_726( - _id, - _lib._sel_initWithMarkdown_options_baseURL_error_1, - markdown._id, - options?._id ?? ffi.nullptr, - baseURL?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + void setDelegate_(objc.NSObject? anObject) { + _objc_msgSend_215( + this.pointer, _sel_setDelegate_, anObject?.pointer ?? ffi.nullptr); } - @override - NSMutableAttributedString? initWithMarkdownString_options_baseURL_error_( - NSString markdownString, - NSAttributedStringMarkdownParsingOptions? options, - NSURL? baseURL, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_727( - _id, - _lib._sel_initWithMarkdownString_options_baseURL_error_1, - markdownString._id, - options?._id ?? ffi.nullptr, - baseURL?._id ?? ffi.nullptr, - error); + objc.NSObject? delegate() { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); return _ret.address == 0 ? null - : NSMutableAttributedString._(_ret, _lib, retain: true, release: true); - } - - @override - NSMutableAttributedString initWithFormat_options_locale_( - NSAttributedString format, int options, NSLocale? locale) { - final _ret = _lib._objc_msgSend_728( - _id, - _lib._sel_initWithFormat_options_locale_1, - format._id, - options, - locale?._id ?? ffi.nullptr); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - @override - NSMutableAttributedString initWithFormat_options_locale_arguments_( - NSAttributedString format, - int options, - NSLocale? locale, - ffi.Pointer<__va_list_tag> arguments) { - final _ret = _lib._objc_msgSend_729( - _id, - _lib._sel_initWithFormat_options_locale_arguments_1, - format._id, - options, - locale?._id ?? ffi.nullptr, - arguments); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + void scheduleInRunLoop_forMode_(NSRunLoop runLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_scheduleInRunLoop_forMode_, + runLoop.pointer, mode.pointer); } - static NSMutableAttributedString localizedAttributedStringWithFormat_( - SwiftLibrary _lib, NSAttributedString format) { - final _ret = _lib._objc_msgSend_718(_lib._class_NSMutableAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_1, format._id); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + void removeFromRunLoop_forMode_(NSRunLoop runLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_removeFromRunLoop_forMode_, + runLoop.pointer, mode.pointer); } - static NSMutableAttributedString localizedAttributedStringWithFormat_options_( - SwiftLibrary _lib, NSAttributedString format, int options) { - final _ret = _lib._objc_msgSend_730( - _lib._class_NSMutableAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_options_1, - format._id, - options); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + int get reservedSpaceLength { + return _objc_msgSend_29(this.pointer, _sel_reservedSpaceLength); } - @override - NSMutableAttributedString initWithFormat_options_locale_context_( - NSAttributedString format, - int options, - NSLocale? locale, - NSDictionary context) { - final _ret = _lib._objc_msgSend_731( - _id, - _lib._sel_initWithFormat_options_locale_context_1, - format._id, - options, - locale?._id ?? ffi.nullptr, - context._id); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + bool sendBeforeDate_components_from_reserved_( + objc.NSDate limitDate, + objc.NSMutableArray? components, + NSPort? receivePort, + int headerSpaceReserved) { + return _objc_msgSend_217( + this.pointer, + _sel_sendBeforeDate_components_from_reserved_, + limitDate.pointer, + components?.pointer ?? ffi.nullptr, + receivePort?.pointer ?? ffi.nullptr, + headerSpaceReserved); } - @override - NSMutableAttributedString initWithFormat_options_locale_context_arguments_( - NSAttributedString format, - int options, - NSLocale? locale, - NSDictionary context, - ffi.Pointer<__va_list_tag> arguments) { - final _ret = _lib._objc_msgSend_732( - _id, - _lib._sel_initWithFormat_options_locale_context_arguments_1, - format._id, - options, - locale?._id ?? ffi.nullptr, - context._id, - arguments); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + bool sendBeforeDate_msgid_components_from_reserved_( + objc.NSDate limitDate, + int msgID, + objc.NSMutableArray? components, + NSPort? receivePort, + int headerSpaceReserved) { + return _objc_msgSend_218( + this.pointer, + _sel_sendBeforeDate_msgid_components_from_reserved_, + limitDate.pointer, + msgID, + components?.pointer ?? ffi.nullptr, + receivePort?.pointer ?? ffi.nullptr, + headerSpaceReserved); } - static NSMutableAttributedString localizedAttributedStringWithFormat_context_( - SwiftLibrary _lib, NSAttributedString format, NSDictionary context) { - final _ret = _lib._objc_msgSend_733( - _lib._class_NSMutableAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_context_1, - format._id, - context._id); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + void addConnection_toRunLoop_forMode_( + NSConnection conn, NSRunLoop runLoop, objc.NSString mode) { + _objc_msgSend_243(this.pointer, _sel_addConnection_toRunLoop_forMode_, + conn.pointer, runLoop.pointer, mode.pointer); } - static NSMutableAttributedString - localizedAttributedStringWithFormat_options_context_(SwiftLibrary _lib, - NSAttributedString format, int options, NSDictionary context) { - final _ret = _lib._objc_msgSend_734( - _lib._class_NSMutableAttributedString1, - _lib._sel_localizedAttributedStringWithFormat_options_context_1, - format._id, - options, - context._id); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + void removeConnection_fromRunLoop_forMode_( + NSConnection conn, NSRunLoop runLoop, objc.NSString mode) { + _objc_msgSend_243(this.pointer, _sel_removeConnection_fromRunLoop_forMode_, + conn.pointer, runLoop.pointer, mode.pointer); } @override - NSMutableAttributedString init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + NSPort init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSPort.castFromPointer(_ret, retain: true, release: true); } - static NSMutableAttributedString new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableAttributedString1, _lib._sel_new1); - return NSMutableAttributedString._(_ret, _lib, - retain: false, release: true); + static NSPort new1() { + final _ret = _objc_msgSend_40(_class_NSPort, _sel_new); + return NSPort.castFromPointer(_ret, retain: false, release: true); } - static NSMutableAttributedString allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSMutableAttributedString1, - _lib._sel_allocWithZone_1, zone); - return NSMutableAttributedString._(_ret, _lib, - retain: false, release: true); + static NSPort allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSPort, _sel_allocWithZone_, zone); + return NSPort.castFromPointer(_ret, retain: false, release: true); } - static NSMutableAttributedString alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableAttributedString1, _lib._sel_alloc1); - return NSMutableAttributedString._(_ret, _lib, - retain: false, release: true); + static NSPort alloc() { + final _ret = _objc_msgSend_40(_class_NSPort, _sel_alloc); + return NSPort.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableAttributedString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSPort, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableAttributedString1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSPort, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMutableAttributedString1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7(_class_NSPort, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableAttributedString1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSPort, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableAttributedString1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSPort, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableAttributedString1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51( + _class_NSPort, _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableAttributedString1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSMutableAttributedString1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSPort, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSPort, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40(_class_NSPort, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSPort = objc.getClass("NSPort"); +late final _sel_port = objc.registerName("port"); +final _objc_msgSend_214 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDelegate_ = objc.registerName("setDelegate:"); +final _objc_msgSend_215 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_delegate = objc.registerName("delegate"); +late final _sel_scheduleInRunLoop_forMode_ = + objc.registerName("scheduleInRunLoop:forMode:"); +final _objc_msgSend_216 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeFromRunLoop_forMode_ = + objc.registerName("removeFromRunLoop:forMode:"); +late final _sel_reservedSpaceLength = objc.registerName("reservedSpaceLength"); +late final _sel_sendBeforeDate_components_from_reserved_ = + objc.registerName("sendBeforeDate:components:from:reserved:"); +final _objc_msgSend_217 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_sendBeforeDate_msgid_components_from_reserved_ = + objc.registerName("sendBeforeDate:msgid:components:from:reserved:"); +final _objc_msgSend_218 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + int)>(); + +class NSConnection extends objc.NSObject { + NSConnection._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSMutableAttributedString1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} + /// Constructs a [NSConnection] that points to the same underlying object as [other]. + NSConnection.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); -class NSDateFormatter extends NSFormatter { - NSDateFormatter._(ffi.Pointer id, SwiftLibrary lib, + /// Constructs a [NSConnection] that wraps the given raw object pointer. + NSConnection.castFromPointer(ffi.Pointer other, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSDateFormatter] that points to the same underlying object as [other]. - static NSDateFormatter castFrom(T other) { - return NSDateFormatter._(other._id, other._lib, - retain: true, release: true); - } + : this._(other, retain: retain, release: release); - /// Returns a [NSDateFormatter] that wraps the given raw object pointer. - static NSDateFormatter castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSDateFormatter._(other, lib, retain: retain, release: release); + /// Returns whether [obj] is an instance of [NSConnection]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSConnection); } - /// Returns whether [obj] is an instance of [NSDateFormatter]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSDateFormatter1); + objc.NSDictionary get statistics { + final _ret = _objc_msgSend_112(this.pointer, _sel_statistics); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - int get formattingContext { - return _lib._objc_msgSend_752(_id, _lib._sel_formattingContext1); + static objc.NSArray allConnections() { + final _ret = _objc_msgSend_6(_class_NSConnection, _sel_allConnections); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set formattingContext(int value) { - return _lib._objc_msgSend_753(_id, _lib._sel_setFormattingContext_1, value); + static NSConnection defaultConnection() { + final _ret = _objc_msgSend_219(_class_NSConnection, _sel_defaultConnection); + return NSConnection.castFromPointer(_ret, retain: true, release: true); } - bool getObjectValue_forString_range_error_( - ffi.Pointer> obj, - NSString string, - ffi.Pointer<_NSRange> rangep, - ffi.Pointer> error) { - return _lib._objc_msgSend_754( - _id, - _lib._sel_getObjectValue_forString_range_error_1, - obj, - string._id, - rangep, - error); + static NSConnection? connectionWithRegisteredName_host_( + objc.NSString name, objc.NSString? hostName) { + final _ret = _objc_msgSend_220( + _class_NSConnection, + _sel_connectionWithRegisteredName_host_, + name.pointer, + hostName?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSConnection.castFromPointer(_ret, retain: true, release: true); } - NSString stringFromDate_(NSDate date) { - final _ret = - _lib._objc_msgSend_755(_id, _lib._sel_stringFromDate_1, date._id); - return NSString._(_ret, _lib, retain: true, release: true); + static NSConnection? connectionWithRegisteredName_host_usingNameServer_( + objc.NSString name, objc.NSString? hostName, NSPortNameServer server) { + final _ret = _objc_msgSend_225( + _class_NSConnection, + _sel_connectionWithRegisteredName_host_usingNameServer_, + name.pointer, + hostName?.pointer ?? ffi.nullptr, + server.pointer); + return _ret.address == 0 + ? null + : NSConnection.castFromPointer(_ret, retain: true, release: true); } - NSDate? dateFromString_(NSString string) { - final _ret = - _lib._objc_msgSend_564(_id, _lib._sel_dateFromString_1, string._id); + static NSDistantObject? rootProxyForConnectionWithRegisteredName_host_( + objc.NSString name, objc.NSString? hostName) { + final _ret = _objc_msgSend_233( + _class_NSConnection, + _sel_rootProxyForConnectionWithRegisteredName_host_, + name.pointer, + hostName?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : NSDistantObject.castFromPointer(_ret, retain: true, release: true); } - static NSString localizedStringFromDate_dateStyle_timeStyle_( - SwiftLibrary _lib, NSDate date, int dstyle, int tstyle) { - final _ret = _lib._objc_msgSend_756( - _lib._class_NSDateFormatter1, - _lib._sel_localizedStringFromDate_dateStyle_timeStyle_1, - date._id, - dstyle, - tstyle); - return NSString._(_ret, _lib, retain: true, release: true); + static NSDistantObject? + rootProxyForConnectionWithRegisteredName_host_usingNameServer_( + objc.NSString name, + objc.NSString? hostName, + NSPortNameServer server) { + final _ret = _objc_msgSend_234( + _class_NSConnection, + _sel_rootProxyForConnectionWithRegisteredName_host_usingNameServer_, + name.pointer, + hostName?.pointer ?? ffi.nullptr, + server.pointer); + return _ret.address == 0 + ? null + : NSDistantObject.castFromPointer(_ret, retain: true, release: true); } - static NSString? dateFormatFromTemplate_options_locale_( - SwiftLibrary _lib, NSString tmplate, int opts, NSLocale? locale) { - final _ret = _lib._objc_msgSend_757( - _lib._class_NSDateFormatter1, - _lib._sel_dateFormatFromTemplate_options_locale_1, - tmplate._id, - opts, - locale?._id ?? ffi.nullptr); + static NSConnection? serviceConnectionWithName_rootObject_usingNameServer_( + objc.NSString name, objc.NSObject root, NSPortNameServer server) { + final _ret = _objc_msgSend_235( + _class_NSConnection, + _sel_serviceConnectionWithName_rootObject_usingNameServer_, + name.pointer, + root.pointer, + server.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSConnection.castFromPointer(_ret, retain: true, release: true); } - static int getDefaultFormatterBehavior(SwiftLibrary _lib) { - return _lib._objc_msgSend_758( - _lib._class_NSDateFormatter1, _lib._sel_defaultFormatterBehavior1); + static NSConnection? serviceConnectionWithName_rootObject_( + objc.NSString name, objc.NSObject root) { + final _ret = _objc_msgSend_236(_class_NSConnection, + _sel_serviceConnectionWithName_rootObject_, name.pointer, root.pointer); + return _ret.address == 0 + ? null + : NSConnection.castFromPointer(_ret, retain: true, release: true); } - static void setDefaultFormatterBehavior(SwiftLibrary _lib, int value) { - return _lib._objc_msgSend_759(_lib._class_NSDateFormatter1, - _lib._sel_setDefaultFormatterBehavior_1, value); + double get requestTimeout { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_requestTimeout) + : _objc_msgSend_115(this.pointer, _sel_requestTimeout); } - void setLocalizedDateFormatFromTemplate_(NSString dateFormatTemplate) { - _lib._objc_msgSend_247(_id, _lib._sel_setLocalizedDateFormatFromTemplate_1, - dateFormatTemplate._id); + set requestTimeout(double value) { + return _objc_msgSend_212(this.pointer, _sel_setRequestTimeout_, value); } - NSString get dateFormat { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_dateFormat1); - return NSString._(_ret, _lib, retain: true, release: true); + double get replyTimeout { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_replyTimeout) + : _objc_msgSend_115(this.pointer, _sel_replyTimeout); } - set dateFormat(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setDateFormat_1, value._id); + set replyTimeout(double value) { + return _objc_msgSend_212(this.pointer, _sel_setReplyTimeout_, value); } - int get dateStyle { - return _lib._objc_msgSend_760(_id, _lib._sel_dateStyle1); + objc.NSObject? get rootObject { + final _ret = _objc_msgSend_66(this.pointer, _sel_rootObject); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set dateStyle(int value) { - return _lib._objc_msgSend_761(_id, _lib._sel_setDateStyle_1, value); + set rootObject(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setRootObject_, value?.pointer ?? ffi.nullptr); } - int get timeStyle { - return _lib._objc_msgSend_760(_id, _lib._sel_timeStyle1); + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set timeStyle(int value) { - return _lib._objc_msgSend_761(_id, _lib._sel_setTimeStyle_1, value); + set delegate(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDelegate_, value?.pointer ?? ffi.nullptr); } - NSLocale get locale { - final _ret = _lib._objc_msgSend_197(_id, _lib._sel_locale1); - return NSLocale._(_ret, _lib, retain: true, release: true); + bool get independentConversationQueueing { + return _objc_msgSend_7(this.pointer, _sel_independentConversationQueueing); } - set locale(NSLocale value) { - return _lib._objc_msgSend_762(_id, _lib._sel_setLocale_1, value._id); + set independentConversationQueueing(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setIndependentConversationQueueing_, value); } - bool get generatesCalendarDates { - return _lib._objc_msgSend_12(_id, _lib._sel_generatesCalendarDates1); + bool get valid { + return _objc_msgSend_7(this.pointer, _sel_isValid); } - set generatesCalendarDates(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setGeneratesCalendarDates_1, value); + NSDistantObject get rootProxy { + final _ret = _objc_msgSend_237(this.pointer, _sel_rootProxy); + return NSDistantObject.castFromPointer(_ret, retain: true, release: true); } - int get formatterBehavior { - return _lib._objc_msgSend_758(_id, _lib._sel_formatterBehavior1); + void invalidate() { + _objc_msgSend_82(this.pointer, _sel_invalidate); } - set formatterBehavior(int value) { - return _lib._objc_msgSend_759(_id, _lib._sel_setFormatterBehavior_1, value); + void addRequestMode_(objc.NSString rmode) { + _objc_msgSend_98(this.pointer, _sel_addRequestMode_, rmode.pointer); } - NSTimeZone get timeZone { - final _ret = _lib._objc_msgSend_179(_id, _lib._sel_timeZone1); - return NSTimeZone._(_ret, _lib, retain: true, release: true); + void removeRequestMode_(objc.NSString rmode) { + _objc_msgSend_98(this.pointer, _sel_removeRequestMode_, rmode.pointer); } - set timeZone(NSTimeZone value) { - return _lib._objc_msgSend_180(_id, _lib._sel_setTimeZone_1, value._id); + objc.NSArray get requestModes { + final _ret = _objc_msgSend_6(this.pointer, _sel_requestModes); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSCalendar get calendar { - final _ret = _lib._objc_msgSend_763(_id, _lib._sel_calendar1); - return NSCalendar._(_ret, _lib, retain: true, release: true); + bool registerName_(objc.NSString? name) { + return _objc_msgSend_238( + this.pointer, _sel_registerName_, name?.pointer ?? ffi.nullptr); } - set calendar(NSCalendar value) { - return _lib._objc_msgSend_799(_id, _lib._sel_setCalendar_1, value._id); + bool registerName_withNameServer_( + objc.NSString? name, NSPortNameServer server) { + return _objc_msgSend_239(this.pointer, _sel_registerName_withNameServer_, + name?.pointer ?? ffi.nullptr, server.pointer); } - bool get lenient { - return _lib._objc_msgSend_12(_id, _lib._sel_isLenient1); + static NSConnection? connectionWithReceivePort_sendPort_( + NSPort? receivePort, NSPort? sendPort) { + final _ret = _objc_msgSend_240( + _class_NSConnection, + _sel_connectionWithReceivePort_sendPort_, + receivePort?.pointer ?? ffi.nullptr, + sendPort?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSConnection.castFromPointer(_ret, retain: true, release: true); } - set lenient(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setLenient_1, value); + static objc.NSObject? currentConversation() { + final _ret = + _objc_msgSend_66(_class_NSConnection, _sel_currentConversation); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSDate? get twoDigitStartDate { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_twoDigitStartDate1); + NSConnection? initWithReceivePort_sendPort_( + NSPort? receivePort, NSPort? sendPort) { + final _ret = _objc_msgSend_240( + this.pointer, + _sel_initWithReceivePort_sendPort_, + receivePort?.pointer ?? ffi.nullptr, + sendPort?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : NSConnection.castFromPointer(_ret, retain: true, release: true); } - set twoDigitStartDate(NSDate? value) { - return _lib._objc_msgSend_800( - _id, _lib._sel_setTwoDigitStartDate_1, value?._id ?? ffi.nullptr); + NSPort get sendPort { + final _ret = _objc_msgSend_214(this.pointer, _sel_sendPort); + return NSPort.castFromPointer(_ret, retain: true, release: true); } - NSDate? get defaultDate { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_defaultDate1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + NSPort get receivePort { + final _ret = _objc_msgSend_214(this.pointer, _sel_receivePort); + return NSPort.castFromPointer(_ret, retain: true, release: true); } - set defaultDate(NSDate? value) { - return _lib._objc_msgSend_800( - _id, _lib._sel_setDefaultDate_1, value?._id ?? ffi.nullptr); + void enableMultipleThreads() { + _objc_msgSend_82(this.pointer, _sel_enableMultipleThreads); } - NSArray get eraSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_eraSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool get multipleThreadsEnabled { + return _objc_msgSend_7(this.pointer, _sel_multipleThreadsEnabled); } - set eraSymbols(NSArray value) { - return _lib._objc_msgSend_801(_id, _lib._sel_setEraSymbols_1, value._id); + void addRunLoop_(NSRunLoop runloop) { + _objc_msgSend_241(this.pointer, _sel_addRunLoop_, runloop.pointer); } - NSArray get monthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_monthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + void removeRunLoop_(NSRunLoop runloop) { + _objc_msgSend_241(this.pointer, _sel_removeRunLoop_, runloop.pointer); } - set monthSymbols(NSArray value) { - return _lib._objc_msgSend_801(_id, _lib._sel_setMonthSymbols_1, value._id); + void runInNewThread() { + _objc_msgSend_82(this.pointer, _sel_runInNewThread); } - NSArray get shortMonthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_shortMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSArray get remoteObjects { + final _ret = _objc_msgSend_6(this.pointer, _sel_remoteObjects); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set shortMonthSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setShortMonthSymbols_1, value._id); + objc.NSArray get localObjects { + final _ret = _objc_msgSend_6(this.pointer, _sel_localObjects); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSArray get weekdaySymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_weekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + void dispatchWithComponents_(objc.NSArray components) { + _objc_msgSend_242( + this.pointer, _sel_dispatchWithComponents_, components.pointer); } - set weekdaySymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setWeekdaySymbols_1, value._id); + @override + NSConnection init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSConnection.castFromPointer(_ret, retain: true, release: true); } - NSArray get shortWeekdaySymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_shortWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSConnection new1() { + final _ret = _objc_msgSend_40(_class_NSConnection, _sel_new); + return NSConnection.castFromPointer(_ret, retain: false, release: true); } - set shortWeekdaySymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setShortWeekdaySymbols_1, value._id); + static NSConnection allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSConnection, _sel_allocWithZone_, zone); + return NSConnection.castFromPointer(_ret, retain: false, release: true); } - NSString get AMSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_AMSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSConnection alloc() { + final _ret = _objc_msgSend_40(_class_NSConnection, _sel_alloc); + return NSConnection.castFromPointer(_ret, retain: false, release: true); } - set AMSymbol(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setAMSymbol_1, value._id); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSConnection, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSString get PMSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_PMSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSConnection, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - set PMSymbol(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setPMSymbol_1, value._id); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSConnection, _sel_accessInstanceVariablesDirectly); } - NSArray get longEraSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_longEraSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSConnection, _sel_useStoredAccessor); } - set longEraSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setLongEraSymbols_1, value._id); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSConnection, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSArray get veryShortMonthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_veryShortMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSConnection, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - set veryShortMonthSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setVeryShortMonthSymbols_1, value._id); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSConnection, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSConnection, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSConnection, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSConnection = objc.getClass("NSConnection"); +late final _sel_statistics = objc.registerName("statistics"); +late final _sel_allConnections = objc.registerName("allConnections"); +late final _sel_defaultConnection = objc.registerName("defaultConnection"); +final _objc_msgSend_219 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_connectionWithRegisteredName_host_ = + objc.registerName("connectionWithRegisteredName:host:"); +final _objc_msgSend_220 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSPortNameServer extends objc.NSObject { + NSPortNameServer._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSPortNameServer] that points to the same underlying object as [other]. + NSPortNameServer.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSPortNameServer] that wraps the given raw object pointer. + NSPortNameServer.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSArray get standaloneMonthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_standaloneMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSPortNameServer]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSPortNameServer); } - set standaloneMonthSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setStandaloneMonthSymbols_1, value._id); + static NSPortNameServer systemDefaultPortNameServer() { + final _ret = _objc_msgSend_221( + _class_NSPortNameServer, _sel_systemDefaultPortNameServer); + return NSPortNameServer.castFromPointer(_ret, retain: true, release: true); } - NSArray get shortStandaloneMonthSymbols { + NSPort? portForName_(objc.NSString name) { final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_shortStandaloneMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + _objc_msgSend_222(this.pointer, _sel_portForName_, name.pointer); + return _ret.address == 0 + ? null + : NSPort.castFromPointer(_ret, retain: true, release: true); } - set shortStandaloneMonthSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setShortStandaloneMonthSymbols_1, value._id); + NSPort? portForName_host_(objc.NSString name, objc.NSString? host) { + final _ret = _objc_msgSend_223(this.pointer, _sel_portForName_host_, + name.pointer, host?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSPort.castFromPointer(_ret, retain: true, release: true); } - NSArray get veryShortStandaloneMonthSymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_veryShortStandaloneMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool registerPort_name_(NSPort port, objc.NSString name) { + return _objc_msgSend_224( + this.pointer, _sel_registerPort_name_, port.pointer, name.pointer); } - set veryShortStandaloneMonthSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setVeryShortStandaloneMonthSymbols_1, value._id); + bool removePortForName_(objc.NSString name) { + return _objc_msgSend_51( + this.pointer, _sel_removePortForName_, name.pointer); } - NSArray get veryShortWeekdaySymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_veryShortWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + @override + NSPortNameServer init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSPortNameServer.castFromPointer(_ret, retain: true, release: true); } - set veryShortWeekdaySymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setVeryShortWeekdaySymbols_1, value._id); + static NSPortNameServer new1() { + final _ret = _objc_msgSend_40(_class_NSPortNameServer, _sel_new); + return NSPortNameServer.castFromPointer(_ret, retain: false, release: true); } - NSArray get standaloneWeekdaySymbols { + static NSPortNameServer allocWithZone_(ffi.Pointer<_NSZone> zone) { final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_standaloneWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + _objc_msgSend_47(_class_NSPortNameServer, _sel_allocWithZone_, zone); + return NSPortNameServer.castFromPointer(_ret, retain: false, release: true); } - set standaloneWeekdaySymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setStandaloneWeekdaySymbols_1, value._id); + static NSPortNameServer alloc() { + final _ret = _objc_msgSend_40(_class_NSPortNameServer, _sel_alloc); + return NSPortNameServer.castFromPointer(_ret, retain: false, release: true); } - NSArray get shortStandaloneWeekdaySymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_shortStandaloneWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSPortNameServer, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - set shortStandaloneWeekdaySymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setShortStandaloneWeekdaySymbols_1, value._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSPortNameServer, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSArray get veryShortStandaloneWeekdaySymbols { - final _ret = _lib._objc_msgSend_85( - _id, _lib._sel_veryShortStandaloneWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSPortNameServer, _sel_accessInstanceVariablesDirectly); } - set veryShortStandaloneWeekdaySymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setVeryShortStandaloneWeekdaySymbols_1, value._id); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSPortNameServer, _sel_useStoredAccessor); } - NSArray get quarterSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_quarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSPortNameServer, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - set quarterSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setQuarterSymbols_1, value._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSPortNameServer, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSArray get shortQuarterSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_shortQuarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSPortNameServer, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSPortNameServer, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSPortNameServer, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSPortNameServer = objc.getClass("NSPortNameServer"); +late final _sel_systemDefaultPortNameServer = + objc.registerName("systemDefaultPortNameServer"); +final _objc_msgSend_221 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_portForName_ = objc.registerName("portForName:"); +final _objc_msgSend_222 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_portForName_host_ = objc.registerName("portForName:host:"); +final _objc_msgSend_223 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_registerPort_name_ = objc.registerName("registerPort:name:"); +final _objc_msgSend_224 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removePortForName_ = objc.registerName("removePortForName:"); +late final _sel_connectionWithRegisteredName_host_usingNameServer_ = + objc.registerName("connectionWithRegisteredName:host:usingNameServer:"); +final _objc_msgSend_225 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSDistantObject extends NSProxy { + NSDistantObject._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - set shortQuarterSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setShortQuarterSymbols_1, value._id); + /// Constructs a [NSDistantObject] that points to the same underlying object as [other]. + NSDistantObject.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSDistantObject] that wraps the given raw object pointer. + NSDistantObject.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSDistantObject]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSDistantObject); } - NSArray get standaloneQuarterSymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_standaloneQuarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSObject? proxyWithTarget_connection_( + objc.NSObject target, NSConnection connection) { + final _ret = _objc_msgSend_229(_class_NSDistantObject, + _sel_proxyWithTarget_connection_, target.pointer, connection.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set standaloneQuarterSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setStandaloneQuarterSymbols_1, value._id); + NSDistantObject? initWithTarget_connection_( + objc.NSObject target, NSConnection connection) { + final _ret = _objc_msgSend_229(this.pointer, + _sel_initWithTarget_connection_, target.pointer, connection.pointer); + return _ret.address == 0 + ? null + : NSDistantObject.castFromPointer(_ret, retain: true, release: true); } - NSArray get shortStandaloneQuarterSymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_shortStandaloneQuarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSObject proxyWithLocal_connection_( + objc.NSObject target, NSConnection connection) { + final _ret = _objc_msgSend_230(_class_NSDistantObject, + _sel_proxyWithLocal_connection_, target.pointer, connection.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set shortStandaloneQuarterSymbols(NSArray value) { - return _lib._objc_msgSend_801( - _id, _lib._sel_setShortStandaloneQuarterSymbols_1, value._id); + NSDistantObject initWithLocal_connection_( + objc.NSObject target, NSConnection connection) { + final _ret = _objc_msgSend_230(this.pointer, _sel_initWithLocal_connection_, + target.pointer, connection.pointer); + return NSDistantObject.castFromPointer(_ret, retain: true, release: true); } - NSDate? get gregorianStartDate { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_gregorianStartDate1); + NSDistantObject? initWithCoder_(objc.NSCoder inCoder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, inCoder.pointer); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : NSDistantObject.castFromPointer(_ret, retain: true, release: true); } - set gregorianStartDate(NSDate? value) { - return _lib._objc_msgSend_800( - _id, _lib._sel_setGregorianStartDate_1, value?._id ?? ffi.nullptr); + void setProtocolForProxy_(objc.Protocol? proto) { + _objc_msgSend_232( + this.pointer, _sel_setProtocolForProxy_, proto?.pointer ?? ffi.nullptr); } - bool get doesRelativeDateFormatting { - return _lib._objc_msgSend_12(_id, _lib._sel_doesRelativeDateFormatting1); + NSConnection get connectionForProxy { + final _ret = _objc_msgSend_219(this.pointer, _sel_connectionForProxy); + return NSConnection.castFromPointer(_ret, retain: true, release: true); } - set doesRelativeDateFormatting(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setDoesRelativeDateFormatting_1, value); + static objc.NSObject alloc() { + final _ret = _objc_msgSend_40(_class_NSDistantObject, _sel_alloc); + return objc.NSObject.castFromPointer(_ret, retain: false, release: true); } - NSObject initWithDateFormat_allowNaturalLanguage_( - NSString format, bool flag) { - final _ret = _lib._objc_msgSend_30(_id, - _lib._sel_initWithDateFormat_allowNaturalLanguage_1, format._id, flag); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool respondsToSelector_(ffi.Pointer aSelector) { + return _objc_msgSend_228( + _class_NSDistantObject, _sel_respondsToSelector_, aSelector); } +} - bool allowsNaturalLanguage() { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsNaturalLanguage1); - } +late final _class_NSDistantObject = objc.getClass("NSDistantObject"); - @override - NSDateFormatter init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSDateFormatter._(_ret, _lib, retain: true, release: true); +class NSProxy extends objc.ObjCObjectBase { + NSProxy._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super(pointer, retain: retain, release: release); + + /// Constructs a [NSProxy] that points to the same underlying object as [other]. + NSProxy.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSProxy] that wraps the given raw object pointer. + NSProxy.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSProxy]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSProxy); } - static NSDateFormatter new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSDateFormatter1, _lib._sel_new1); - return NSDateFormatter._(_ret, _lib, retain: false, release: true); + static objc.NSObject alloc() { + final _ret = _objc_msgSend_40(_class_NSProxy, _sel_alloc); + return objc.NSObject.castFromPointer(_ret, retain: false, release: true); } - static NSDateFormatter allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSDateFormatter1, _lib._sel_allocWithZone_1, zone); - return NSDateFormatter._(_ret, _lib, retain: false, release: true); + static objc.NSObject allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSProxy, _sel_allocWithZone_, zone); + return objc.NSObject.castFromPointer(_ret, retain: false, release: true); } - static NSDateFormatter alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSDateFormatter1, _lib._sel_alloc1); - return NSDateFormatter._(_ret, _lib, retain: false, release: true); + static objc.NSObject class1() { + final _ret = _objc_msgSend_40(_class_NSProxy, _sel_class); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSDateFormatter1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + void forwardInvocation_(objc.NSInvocation invocation) { + _objc_msgSend_226( + this.pointer, _sel_forwardInvocation_, invocation.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSDateFormatter1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + objc.NSMethodSignature? methodSignatureForSelector_( + ffi.Pointer sel) { + final _ret = + _objc_msgSend_227(this.pointer, _sel_methodSignatureForSelector_, sel); + return _ret.address == 0 + ? null + : objc.NSMethodSignature.castFromPointer(_ret, + retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSDateFormatter1, - _lib._sel_accessInstanceVariablesDirectly1); + void dealloc() { + _objc_msgSend_82(this.pointer, _sel_dealloc); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSDateFormatter1, _lib._sel_useStoredAccessor1); + void finalize() { + _objc_msgSend_82(this.pointer, _sel_finalize); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSDateFormatter1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSString get description { + final _ret = _objc_msgSend_12(this.pointer, _sel_description); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSDateFormatter1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + objc.NSString get debugDescription { + final _ret = _objc_msgSend_12(this.pointer, _sel_debugDescription); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSDateFormatter1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static bool respondsToSelector_(ffi.Pointer aSelector) { + return _objc_msgSend_228( + _class_NSProxy, _sel_respondsToSelector_, aSelector); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSDateFormatter1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool allowsWeakReference() { + return _objc_msgSend_7(this.pointer, _sel_allowsWeakReference); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSDateFormatter1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + bool retainWeakReference() { + return _objc_msgSend_7(this.pointer, _sel_retainWeakReference); + } +} + +late final _class_NSProxy = objc.getClass("NSProxy"); +late final _sel_class = objc.registerName("class"); +late final _sel_forwardInvocation_ = objc.registerName("forwardInvocation:"); +final _objc_msgSend_226 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_methodSignatureForSelector_ = + objc.registerName("methodSignatureForSelector:"); +final _objc_msgSend_227 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dealloc = objc.registerName("dealloc"); +late final _sel_finalize = objc.registerName("finalize"); +late final _sel_debugDescription = objc.registerName("debugDescription"); +late final _sel_respondsToSelector_ = objc.registerName("respondsToSelector:"); +final _objc_msgSend_228 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_allowsWeakReference = objc.registerName("allowsWeakReference"); +late final _sel_retainWeakReference = objc.registerName("retainWeakReference"); +late final _sel_proxyWithTarget_connection_ = + objc.registerName("proxyWithTarget:connection:"); +final _objc_msgSend_229 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithTarget_connection_ = + objc.registerName("initWithTarget:connection:"); +late final _sel_proxyWithLocal_connection_ = + objc.registerName("proxyWithLocal:connection:"); +final _objc_msgSend_230 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithLocal_connection_ = + objc.registerName("initWithLocal:connection:"); +late final _sel_initWithCoder_ = objc.registerName("initWithCoder:"); +final _objc_msgSend_231 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setProtocolForProxy_ = + objc.registerName("setProtocolForProxy:"); +final _objc_msgSend_232 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_connectionForProxy = objc.registerName("connectionForProxy"); +late final _sel_rootProxyForConnectionWithRegisteredName_host_ = + objc.registerName("rootProxyForConnectionWithRegisteredName:host:"); +final _objc_msgSend_233 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_rootProxyForConnectionWithRegisteredName_host_usingNameServer_ = + objc.registerName( + "rootProxyForConnectionWithRegisteredName:host:usingNameServer:"); +final _objc_msgSend_234 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_serviceConnectionWithName_rootObject_usingNameServer_ = + objc.registerName("serviceConnectionWithName:rootObject:usingNameServer:"); +final _objc_msgSend_235 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_serviceConnectionWithName_rootObject_ = + objc.registerName("serviceConnectionWithName:rootObject:"); +final _objc_msgSend_236 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_requestTimeout = objc.registerName("requestTimeout"); +late final _sel_setRequestTimeout_ = objc.registerName("setRequestTimeout:"); +late final _sel_replyTimeout = objc.registerName("replyTimeout"); +late final _sel_setReplyTimeout_ = objc.registerName("setReplyTimeout:"); +late final _sel_rootObject = objc.registerName("rootObject"); +late final _sel_setRootObject_ = objc.registerName("setRootObject:"); +late final _sel_independentConversationQueueing = + objc.registerName("independentConversationQueueing"); +late final _sel_setIndependentConversationQueueing_ = + objc.registerName("setIndependentConversationQueueing:"); +late final _sel_rootProxy = objc.registerName("rootProxy"); +final _objc_msgSend_237 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_addRequestMode_ = objc.registerName("addRequestMode:"); +late final _sel_removeRequestMode_ = objc.registerName("removeRequestMode:"); +late final _sel_requestModes = objc.registerName("requestModes"); +late final _sel_registerName_ = objc.registerName("registerName:"); +final _objc_msgSend_238 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_registerName_withNameServer_ = + objc.registerName("registerName:withNameServer:"); +final _objc_msgSend_239 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_connectionWithReceivePort_sendPort_ = + objc.registerName("connectionWithReceivePort:sendPort:"); +final _objc_msgSend_240 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_currentConversation = objc.registerName("currentConversation"); +late final _sel_initWithReceivePort_sendPort_ = + objc.registerName("initWithReceivePort:sendPort:"); +late final _sel_sendPort = objc.registerName("sendPort"); +late final _sel_receivePort = objc.registerName("receivePort"); +late final _sel_enableMultipleThreads = + objc.registerName("enableMultipleThreads"); +late final _sel_multipleThreadsEnabled = + objc.registerName("multipleThreadsEnabled"); +late final _sel_addRunLoop_ = objc.registerName("addRunLoop:"); +final _objc_msgSend_241 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_removeRunLoop_ = objc.registerName("removeRunLoop:"); +late final _sel_runInNewThread = objc.registerName("runInNewThread"); +late final _sel_remoteObjects = objc.registerName("remoteObjects"); +late final _sel_localObjects = objc.registerName("localObjects"); +late final _sel_dispatchWithComponents_ = + objc.registerName("dispatchWithComponents:"); +final _objc_msgSend_242 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_addConnection_toRunLoop_forMode_ = + objc.registerName("addConnection:toRunLoop:forMode:"); +final _objc_msgSend_243 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeConnection_fromRunLoop_forMode_ = + objc.registerName("removeConnection:fromRunLoop:forMode:"); +late final _sel_addPort_forMode_ = objc.registerName("addPort:forMode:"); +final _objc_msgSend_244 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removePort_forMode_ = objc.registerName("removePort:forMode:"); +late final _sel_limitDateForMode_ = objc.registerName("limitDateForMode:"); +late final _sel_acceptInputForMode_beforeDate_ = + objc.registerName("acceptInputForMode:beforeDate:"); +final _objc_msgSend_245 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_run = objc.registerName("run"); +late final _sel_runUntilDate_ = objc.registerName("runUntilDate:"); +final _objc_msgSend_246 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_runMode_beforeDate_ = objc.registerName("runMode:beforeDate:"); +final _objc_msgSend_247 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_configureAsServer = objc.registerName("configureAsServer"); +void _ObjCBlock_ffiVoid_fnPtrTrampoline( + ffi.Pointer block, +) => + block.ref.target + .cast>() + .asFunction()(); +final _ObjCBlock_ffiVoid_closureRegistry = {}; +int _ObjCBlock_ffiVoid_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_registerClosure(void Function() fn) { + final id = ++_ObjCBlock_ffiVoid_closureRegistryIndex; + _ObjCBlock_ffiVoid_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_closureTrampoline( + ffi.Pointer block, +) => + _ObjCBlock_ffiVoid_closureRegistry[block.ref.target.address]!(); + +class ObjCBlock_ffiVoid extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid castFromPointer(ffi.Pointer pointer, + {bool retain = false, bool release = false}) { + return ObjCBlock_ffiVoid._(pointer, retain: retain, release: release); } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid.fromFunctionPointer( + ffi.Pointer> ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer)>( + _ObjCBlock_ffiVoid_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid.fromFunction(void Function() fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer)>( + _ObjCBlock_ffiVoid_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_registerClosure(() => fn()))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid.listener(void Function() fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_registerClosure(() => fn()))); + static ffi.NativeCallable)>? + _dartFuncListenerTrampoline; + + void call() => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block)>>() + .asFunction)>()( + pointer, + ); } -class NSFormatter extends NSObject { - NSFormatter._(ffi.Pointer id, SwiftLibrary lib, +late final _sel_performInModes_block_ = + objc.registerName("performInModes:block:"); +final _objc_msgSend_248 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_performBlock_ = objc.registerName("performBlock:"); +final _objc_msgSend_249 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_performSelector_target_argument_order_modes_ = + objc.registerName("performSelector:target:argument:order:modes:"); +final _objc_msgSend_250 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_cancelPerformSelector_target_argument_ = + objc.registerName("cancelPerformSelector:target:argument:"); +final _objc_msgSend_251 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_cancelPerformSelectorsWithTarget_ = + objc.registerName("cancelPerformSelectorsWithTarget:"); + +class NSFileHandle extends objc.NSObject { + NSFileHandle._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSFileHandle] that points to the same underlying object as [other]. + NSFileHandle.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSFileHandle] that wraps the given raw object pointer. + NSFileHandle.castFromPointer(ffi.Pointer other, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : this._(other, retain: retain, release: release); - /// Returns a [NSFormatter] that points to the same underlying object as [other]. - static NSFormatter castFrom(T other) { - return NSFormatter._(other._id, other._lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSFileHandle]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSFileHandle); } - /// Returns a [NSFormatter] that wraps the given raw object pointer. - static NSFormatter castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSFormatter._(other, lib, retain: retain, release: release); + objc.NSData get availableData { + final _ret = _objc_msgSend_104(this.pointer, _sel_availableData); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSFormatter]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSFormatter1); + NSFileHandle initWithFileDescriptor_closeOnDealloc_(int fd, bool closeopt) { + final _ret = _objc_msgSend_252(this.pointer, + _sel_initWithFileDescriptor_closeOnDealloc_, fd, closeopt); + return NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - NSString? stringForObjectValue_(NSObject? obj) { - final _ret = _lib._objc_msgSend_747( - _id, _lib._sel_stringForObjectValue_1, obj?._id ?? ffi.nullptr); + NSFileHandle? initWithCoder_(objc.NSCoder coder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, coder.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - NSAttributedString? attributedStringForObjectValue_withDefaultAttributes_( - NSObject obj, NSDictionary? attrs) { - final _ret = _lib._objc_msgSend_748( - _id, - _lib._sel_attributedStringForObjectValue_withDefaultAttributes_1, - obj._id, - attrs?._id ?? ffi.nullptr); + objc.NSData? readDataToEndOfFileAndReturnError_( + ffi.Pointer> error) { + final _ret = _objc_msgSend_253( + this.pointer, _sel_readDataToEndOfFileAndReturnError_, error); return _ret.address == 0 ? null - : NSAttributedString._(_ret, _lib, retain: true, release: true); + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - NSString? editingStringForObjectValue_(NSObject obj) { - final _ret = _lib._objc_msgSend_526( - _id, _lib._sel_editingStringForObjectValue_1, obj._id); + objc.NSData? readDataUpToLength_error_( + int length, ffi.Pointer> error) { + final _ret = _objc_msgSend_254( + this.pointer, _sel_readDataUpToLength_error_, length, error); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - bool getObjectValue_forString_errorDescription_( - ffi.Pointer> obj, - NSString string, - ffi.Pointer> error) { - return _lib._objc_msgSend_749( - _id, - _lib._sel_getObjectValue_forString_errorDescription_1, - obj, - string._id, - error); + bool writeData_error_( + objc.NSData data, ffi.Pointer> error) { + return _objc_msgSend_255( + this.pointer, _sel_writeData_error_, data.pointer, error); } - bool isPartialStringValid_newEditingString_errorDescription_( - NSString partialString, - ffi.Pointer> newString, - ffi.Pointer> error) { - return _lib._objc_msgSend_750( - _id, - _lib._sel_isPartialStringValid_newEditingString_errorDescription_1, - partialString._id, - newString, - error); + bool getOffset_error_(ffi.Pointer offsetInFile, + ffi.Pointer> error) { + return _objc_msgSend_256( + this.pointer, _sel_getOffset_error_, offsetInFile, error); } - bool - isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_( - ffi.Pointer> partialStringPtr, - ffi.Pointer<_NSRange> proposedSelRangePtr, - NSString origString, - _NSRange origSelRange, - ffi.Pointer> error) { - return _lib._objc_msgSend_751( - _id, - _lib._sel_isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_1, - partialStringPtr, - proposedSelRangePtr, - origString._id, - origSelRange, - error); + bool seekToEndReturningOffset_error_( + ffi.Pointer offsetInFile, + ffi.Pointer> error) { + return _objc_msgSend_256(this.pointer, _sel_seekToEndReturningOffset_error_, + offsetInFile, error); } - @override - NSFormatter init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSFormatter._(_ret, _lib, retain: true, release: true); + bool seekToOffset_error_( + int offset, ffi.Pointer> error) { + return _objc_msgSend_257( + this.pointer, _sel_seekToOffset_error_, offset, error); } - static NSFormatter new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSFormatter1, _lib._sel_new1); - return NSFormatter._(_ret, _lib, retain: false, release: true); + bool truncateAtOffset_error_( + int offset, ffi.Pointer> error) { + return _objc_msgSend_257( + this.pointer, _sel_truncateAtOffset_error_, offset, error); } - static NSFormatter allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSFormatter1, _lib._sel_allocWithZone_1, zone); - return NSFormatter._(_ret, _lib, retain: false, release: true); + bool synchronizeAndReturnError_( + ffi.Pointer> error) { + return _objc_msgSend_8( + this.pointer, _sel_synchronizeAndReturnError_, error); } - static NSFormatter alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFormatter1, _lib._sel_alloc1); - return NSFormatter._(_ret, _lib, retain: false, release: true); + bool closeAndReturnError_(ffi.Pointer> error) { + return _objc_msgSend_8(this.pointer, _sel_closeAndReturnError_, error); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSFormatter1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static NSFileHandle getFileHandleWithStandardInput() { + final _ret = _objc_msgSend_258( + _class_NSFileHandle, _sel_fileHandleWithStandardInput); + return NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSFormatter1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static NSFileHandle getFileHandleWithStandardOutput() { + final _ret = _objc_msgSend_258( + _class_NSFileHandle, _sel_fileHandleWithStandardOutput); + return NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFormatter1, _lib._sel_accessInstanceVariablesDirectly1); + static NSFileHandle getFileHandleWithStandardError() { + final _ret = _objc_msgSend_258( + _class_NSFileHandle, _sel_fileHandleWithStandardError); + return NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFormatter1, _lib._sel_useStoredAccessor1); + static NSFileHandle getFileHandleWithNullDevice() { + final _ret = + _objc_msgSend_258(_class_NSFileHandle, _sel_fileHandleWithNullDevice); + return NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSFormatter1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static NSFileHandle? fileHandleForReadingAtPath_(objc.NSString path) { + final _ret = _objc_msgSend_2( + _class_NSFileHandle, _sel_fileHandleForReadingAtPath_, path.pointer); + return _ret.address == 0 + ? null + : NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSFormatter1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static NSFileHandle? fileHandleForWritingAtPath_(objc.NSString path) { + final _ret = _objc_msgSend_2( + _class_NSFileHandle, _sel_fileHandleForWritingAtPath_, path.pointer); + return _ret.address == 0 + ? null + : NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSFormatter1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static NSFileHandle? fileHandleForUpdatingAtPath_(objc.NSString path) { + final _ret = _objc_msgSend_2( + _class_NSFileHandle, _sel_fileHandleForUpdatingAtPath_, path.pointer); + return _ret.address == 0 + ? null + : NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSFormatter1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSFileHandle? fileHandleForReadingFromURL_error_( + objc.NSURL url, ffi.Pointer> error) { + final _ret = _objc_msgSend_259(_class_NSFileHandle, + _sel_fileHandleForReadingFromURL_error_, url.pointer, error); + return _ret.address == 0 + ? null + : NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSFormatter1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSFileHandle? fileHandleForWritingToURL_error_( + objc.NSURL url, ffi.Pointer> error) { + final _ret = _objc_msgSend_259(_class_NSFileHandle, + _sel_fileHandleForWritingToURL_error_, url.pointer, error); + return _ret.address == 0 + ? null + : NSFileHandle.castFromPointer(_ret, retain: true, release: true); } -} - -abstract class NSFormattingContext { - static const int NSFormattingContextUnknown = 0; - static const int NSFormattingContextDynamic = 1; - static const int NSFormattingContextStandalone = 2; - static const int NSFormattingContextListItem = 3; - static const int NSFormattingContextBeginningOfSentence = 4; - static const int NSFormattingContextMiddleOfSentence = 5; -} - -abstract class NSDateFormatterStyle { - static const int NSDateFormatterNoStyle = 0; - static const int NSDateFormatterShortStyle = 1; - static const int NSDateFormatterMediumStyle = 2; - static const int NSDateFormatterLongStyle = 3; - static const int NSDateFormatterFullStyle = 4; -} -abstract class NSDateFormatterBehavior { - static const int NSDateFormatterBehaviorDefault = 0; - static const int NSDateFormatterBehavior10_0 = 1000; - static const int NSDateFormatterBehavior10_4 = 1040; -} + static NSFileHandle? fileHandleForUpdatingURL_error_( + objc.NSURL url, ffi.Pointer> error) { + final _ret = _objc_msgSend_259(_class_NSFileHandle, + _sel_fileHandleForUpdatingURL_error_, url.pointer, error); + return _ret.address == 0 + ? null + : NSFileHandle.castFromPointer(_ret, retain: true, release: true); + } -class NSCalendar extends NSObject { - NSCalendar._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + void readInBackgroundAndNotifyForModes_(objc.NSArray? modes) { + _objc_msgSend_260(this.pointer, _sel_readInBackgroundAndNotifyForModes_, + modes?.pointer ?? ffi.nullptr); + } - /// Returns a [NSCalendar] that points to the same underlying object as [other]. - static NSCalendar castFrom(T other) { - return NSCalendar._(other._id, other._lib, retain: true, release: true); + void readInBackgroundAndNotify() { + _objc_msgSend_82(this.pointer, _sel_readInBackgroundAndNotify); } - /// Returns a [NSCalendar] that wraps the given raw object pointer. - static NSCalendar castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSCalendar._(other, lib, retain: retain, release: release); + void readToEndOfFileInBackgroundAndNotifyForModes_(objc.NSArray? modes) { + _objc_msgSend_260( + this.pointer, + _sel_readToEndOfFileInBackgroundAndNotifyForModes_, + modes?.pointer ?? ffi.nullptr); } - /// Returns whether [obj] is an instance of [NSCalendar]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSCalendar1); + void readToEndOfFileInBackgroundAndNotify() { + _objc_msgSend_82(this.pointer, _sel_readToEndOfFileInBackgroundAndNotify); } - static NSCalendar getCurrentCalendar(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_763( - _lib._class_NSCalendar1, _lib._sel_currentCalendar1); - return NSCalendar._(_ret, _lib, retain: true, release: true); + void acceptConnectionInBackgroundAndNotifyForModes_(objc.NSArray? modes) { + _objc_msgSend_260( + this.pointer, + _sel_acceptConnectionInBackgroundAndNotifyForModes_, + modes?.pointer ?? ffi.nullptr); } - static NSCalendar getAutoupdatingCurrentCalendar(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_763( - _lib._class_NSCalendar1, _lib._sel_autoupdatingCurrentCalendar1); - return NSCalendar._(_ret, _lib, retain: true, release: true); + void acceptConnectionInBackgroundAndNotify() { + _objc_msgSend_82(this.pointer, _sel_acceptConnectionInBackgroundAndNotify); } - static NSCalendar? calendarWithIdentifier_( - SwiftLibrary _lib, NSString calendarIdentifierConstant) { - final _ret = _lib._objc_msgSend_764(_lib._class_NSCalendar1, - _lib._sel_calendarWithIdentifier_1, calendarIdentifierConstant._id); - return _ret.address == 0 - ? null - : NSCalendar._(_ret, _lib, retain: true, release: true); + void waitForDataInBackgroundAndNotifyForModes_(objc.NSArray? modes) { + _objc_msgSend_260( + this.pointer, + _sel_waitForDataInBackgroundAndNotifyForModes_, + modes?.pointer ?? ffi.nullptr); } - @override - NSCalendar init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSCalendar._(_ret, _lib, retain: true, release: true); + void waitForDataInBackgroundAndNotify() { + _objc_msgSend_82(this.pointer, _sel_waitForDataInBackgroundAndNotify); } - NSObject? initWithCalendarIdentifier_(NSString ident) { - final _ret = _lib._objc_msgSend_38( - _id, _lib._sel_initWithCalendarIdentifier_1, ident._id); + ObjCBlock_ffiVoid_NSFileHandle? get readabilityHandler { + final _ret = _objc_msgSend_261(this.pointer, _sel_readabilityHandler); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : ObjCBlock_ffiVoid_NSFileHandle.castFromPointer(_ret, + retain: true, release: true); } - NSString get calendarIdentifier { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_calendarIdentifier1); - return NSString._(_ret, _lib, retain: true, release: true); + set readabilityHandler(ObjCBlock_ffiVoid_NSFileHandle? value) { + return _objc_msgSend_262(this.pointer, _sel_setReadabilityHandler_, + value?.pointer ?? ffi.nullptr); } - NSLocale? get locale { - final _ret = _lib._objc_msgSend_765(_id, _lib._sel_locale1); + ObjCBlock_ffiVoid_NSFileHandle? get writeabilityHandler { + final _ret = _objc_msgSend_261(this.pointer, _sel_writeabilityHandler); return _ret.address == 0 ? null - : NSLocale._(_ret, _lib, retain: true, release: true); + : ObjCBlock_ffiVoid_NSFileHandle.castFromPointer(_ret, + retain: true, release: true); + } + + set writeabilityHandler(ObjCBlock_ffiVoid_NSFileHandle? value) { + return _objc_msgSend_262(this.pointer, _sel_setWriteabilityHandler_, + value?.pointer ?? ffi.nullptr); } - set locale(NSLocale? value) { - return _lib._objc_msgSend_766( - _id, _lib._sel_setLocale_1, value?._id ?? ffi.nullptr); + NSFileHandle initWithFileDescriptor_(int fd) { + final _ret = + _objc_msgSend_263(this.pointer, _sel_initWithFileDescriptor_, fd); + return NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - NSTimeZone get timeZone { - final _ret = _lib._objc_msgSend_179(_id, _lib._sel_timeZone1); - return NSTimeZone._(_ret, _lib, retain: true, release: true); + int get fileDescriptor { + return _objc_msgSend_264(this.pointer, _sel_fileDescriptor); } - set timeZone(NSTimeZone value) { - return _lib._objc_msgSend_180(_id, _lib._sel_setTimeZone_1, value._id); + objc.NSData readDataToEndOfFile() { + final _ret = _objc_msgSend_104(this.pointer, _sel_readDataToEndOfFile); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - int get firstWeekday { - return _lib._objc_msgSend_10(_id, _lib._sel_firstWeekday1); + objc.NSData readDataOfLength_(int length) { + final _ret = + _objc_msgSend_265(this.pointer, _sel_readDataOfLength_, length); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - set firstWeekday(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setFirstWeekday_1, value); + void writeData_(objc.NSData data) { + _objc_msgSend_266(this.pointer, _sel_writeData_, data.pointer); } - int get minimumDaysInFirstWeek { - return _lib._objc_msgSend_10(_id, _lib._sel_minimumDaysInFirstWeek1); + int get offsetInFile { + return _objc_msgSend_267(this.pointer, _sel_offsetInFile); } - set minimumDaysInFirstWeek(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setMinimumDaysInFirstWeek_1, value); + int seekToEndOfFile() { + return _objc_msgSend_267(this.pointer, _sel_seekToEndOfFile); } - NSArray get eraSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_eraSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + void seekToFileOffset_(int offset) { + _objc_msgSend_268(this.pointer, _sel_seekToFileOffset_, offset); } - NSArray get longEraSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_longEraSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + void truncateFileAtOffset_(int offset) { + _objc_msgSend_268(this.pointer, _sel_truncateFileAtOffset_, offset); } - NSArray get monthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_monthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + void synchronizeFile() { + _objc_msgSend_82(this.pointer, _sel_synchronizeFile); } - NSArray get shortMonthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_shortMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + void closeFile() { + _objc_msgSend_82(this.pointer, _sel_closeFile); } - NSArray get veryShortMonthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_veryShortMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + @override + NSFileHandle init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSFileHandle.castFromPointer(_ret, retain: true, release: true); } - NSArray get standaloneMonthSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_standaloneMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSFileHandle new1() { + final _ret = _objc_msgSend_40(_class_NSFileHandle, _sel_new); + return NSFileHandle.castFromPointer(_ret, retain: false, release: true); } - NSArray get shortStandaloneMonthSymbols { + static NSFileHandle allocWithZone_(ffi.Pointer<_NSZone> zone) { final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_shortStandaloneMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + _objc_msgSend_47(_class_NSFileHandle, _sel_allocWithZone_, zone); + return NSFileHandle.castFromPointer(_ret, retain: false, release: true); } - NSArray get veryShortStandaloneMonthSymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_veryShortStandaloneMonthSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSFileHandle alloc() { + final _ret = _objc_msgSend_40(_class_NSFileHandle, _sel_alloc); + return NSFileHandle.castFromPointer(_ret, retain: false, release: true); } - NSArray get weekdaySymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_weekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSFileHandle, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSArray get shortWeekdaySymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_shortWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSFileHandle, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSArray get veryShortWeekdaySymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_veryShortWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSFileHandle, _sel_accessInstanceVariablesDirectly); } - NSArray get standaloneWeekdaySymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_standaloneWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSFileHandle, _sel_useStoredAccessor); } - NSArray get shortStandaloneWeekdaySymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_shortStandaloneWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSFileHandle, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSArray get veryShortStandaloneWeekdaySymbols { - final _ret = _lib._objc_msgSend_85( - _id, _lib._sel_veryShortStandaloneWeekdaySymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSFileHandle, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSArray get quarterSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_quarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSFileHandle, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSFileHandle, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSFileHandle, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSFileHandle = objc.getClass("NSFileHandle"); +late final _sel_availableData = objc.registerName("availableData"); +late final _sel_initWithFileDescriptor_closeOnDealloc_ = + objc.registerName("initWithFileDescriptor:closeOnDealloc:"); +final _objc_msgSend_252 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Int, ffi.Bool)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int, bool)>(); +late final _sel_readDataToEndOfFileAndReturnError_ = + objc.registerName("readDataToEndOfFileAndReturnError:"); +final _objc_msgSend_253 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_readDataUpToLength_error_ = + objc.registerName("readDataUpToLength:error:"); +final _objc_msgSend_254 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_writeData_error_ = objc.registerName("writeData:error:"); +final _objc_msgSend_255 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_getOffset_error_ = objc.registerName("getOffset:error:"); +final _objc_msgSend_256 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_seekToEndReturningOffset_error_ = + objc.registerName("seekToEndReturningOffset:error:"); +late final _sel_seekToOffset_error_ = objc.registerName("seekToOffset:error:"); +final _objc_msgSend_257 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLongLong, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_truncateAtOffset_error_ = + objc.registerName("truncateAtOffset:error:"); +late final _sel_synchronizeAndReturnError_ = + objc.registerName("synchronizeAndReturnError:"); +late final _sel_closeAndReturnError_ = + objc.registerName("closeAndReturnError:"); +late final _sel_fileHandleWithStandardInput = + objc.registerName("fileHandleWithStandardInput"); +final _objc_msgSend_258 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_fileHandleWithStandardOutput = + objc.registerName("fileHandleWithStandardOutput"); +late final _sel_fileHandleWithStandardError = + objc.registerName("fileHandleWithStandardError"); +late final _sel_fileHandleWithNullDevice = + objc.registerName("fileHandleWithNullDevice"); +late final _sel_fileHandleForReadingAtPath_ = + objc.registerName("fileHandleForReadingAtPath:"); +late final _sel_fileHandleForWritingAtPath_ = + objc.registerName("fileHandleForWritingAtPath:"); +late final _sel_fileHandleForUpdatingAtPath_ = + objc.registerName("fileHandleForUpdatingAtPath:"); +late final _sel_fileHandleForReadingFromURL_error_ = + objc.registerName("fileHandleForReadingFromURL:error:"); +final _objc_msgSend_259 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_fileHandleForWritingToURL_error_ = + objc.registerName("fileHandleForWritingToURL:error:"); +late final _sel_fileHandleForUpdatingURL_error_ = + objc.registerName("fileHandleForUpdatingURL:error:"); +late final _sel_readInBackgroundAndNotifyForModes_ = + objc.registerName("readInBackgroundAndNotifyForModes:"); +final _objc_msgSend_260 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_readInBackgroundAndNotify = + objc.registerName("readInBackgroundAndNotify"); +late final _sel_readToEndOfFileInBackgroundAndNotifyForModes_ = + objc.registerName("readToEndOfFileInBackgroundAndNotifyForModes:"); +late final _sel_readToEndOfFileInBackgroundAndNotify = + objc.registerName("readToEndOfFileInBackgroundAndNotify"); +late final _sel_acceptConnectionInBackgroundAndNotifyForModes_ = + objc.registerName("acceptConnectionInBackgroundAndNotifyForModes:"); +late final _sel_acceptConnectionInBackgroundAndNotify = + objc.registerName("acceptConnectionInBackgroundAndNotify"); +late final _sel_waitForDataInBackgroundAndNotifyForModes_ = + objc.registerName("waitForDataInBackgroundAndNotifyForModes:"); +late final _sel_waitForDataInBackgroundAndNotify = + objc.registerName("waitForDataInBackgroundAndNotify"); +void _ObjCBlock_ffiVoid_NSFileHandle_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSFileHandle_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSFileHandle_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSFileHandle_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSFileHandle_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSFileHandle_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - NSArray get shortQuarterSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_shortQuarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); - } +void _ObjCBlock_ffiVoid_NSFileHandle_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSFileHandle_closureRegistry[block.ref.target.address]!( + arg0); - NSArray get standaloneQuarterSymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_standaloneQuarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); - } +class ObjCBlock_ffiVoid_NSFileHandle extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSFileHandle._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - NSArray get shortStandaloneQuarterSymbols { - final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_shortStandaloneQuarterSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSFileHandle castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSFileHandle._(pointer, + retain: retain, release: release); } - NSString get AMSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_AMSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSFileHandle.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSFileHandle_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - NSString get PMSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_PMSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSFileHandle.fromFunction(void Function(NSFileHandle) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSFileHandle_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSFileHandle_registerClosure( + (ffi.Pointer arg0) => fn( + NSFileHandle.castFromPointer(arg0, + retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; - void minimumRangeOfUnit_(ffi.Pointer<_NSRange> stret, int unit) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_767_stret( - stret, _id, _lib._sel_minimumRangeOfUnit_1, unit) - : stret.ref = - _lib._objc_msgSend_767(_id, _lib._sel_minimumRangeOfUnit_1, unit); - } + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSFileHandle.listener(void Function(NSFileHandle) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSFileHandle_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSFileHandle_registerClosure( + (ffi.Pointer arg0) => fn( + NSFileHandle.castFromPointer(arg0, + retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; - void maximumRangeOfUnit_(ffi.Pointer<_NSRange> stret, int unit) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_767_stret( - stret, _id, _lib._sel_maximumRangeOfUnit_1, unit) - : stret.ref = - _lib._objc_msgSend_767(_id, _lib._sel_maximumRangeOfUnit_1, unit); - } + void call(NSFileHandle arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(pointer, arg0.pointer); +} + +late final _sel_readabilityHandler = objc.registerName("readabilityHandler"); +final _objc_msgSend_261 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setReadabilityHandler_ = + objc.registerName("setReadabilityHandler:"); +final _objc_msgSend_262 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_writeabilityHandler = objc.registerName("writeabilityHandler"); +late final _sel_setWriteabilityHandler_ = + objc.registerName("setWriteabilityHandler:"); +late final _sel_initWithFileDescriptor_ = + objc.registerName("initWithFileDescriptor:"); +final _objc_msgSend_263 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Int)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_fileDescriptor = objc.registerName("fileDescriptor"); +final _objc_msgSend_264 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_readDataToEndOfFile = objc.registerName("readDataToEndOfFile"); +late final _sel_readDataOfLength_ = objc.registerName("readDataOfLength:"); +final _objc_msgSend_265 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_writeData_ = objc.registerName("writeData:"); +final _objc_msgSend_266 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_offsetInFile = objc.registerName("offsetInFile"); +final _objc_msgSend_267 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLongLong Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_seekToEndOfFile = objc.registerName("seekToEndOfFile"); +late final _sel_seekToFileOffset_ = objc.registerName("seekToFileOffset:"); +final _objc_msgSend_268 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLongLong)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_truncateFileAtOffset_ = + objc.registerName("truncateFileAtOffset:"); +late final _sel_synchronizeFile = objc.registerName("synchronizeFile"); +late final _sel_closeFile = objc.registerName("closeFile"); - void rangeOfUnit_inUnit_forDate_( - ffi.Pointer<_NSRange> stret, int smaller, int larger, NSDate date) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_768_stret(stret, _id, - _lib._sel_rangeOfUnit_inUnit_forDate_1, smaller, larger, date._id) - : stret.ref = _lib._objc_msgSend_768(_id, - _lib._sel_rangeOfUnit_inUnit_forDate_1, smaller, larger, date._id); +abstract class NSURLBookmarkCreationOptions { + static const int NSURLBookmarkCreationPreferFileIDResolution = 256; + static const int NSURLBookmarkCreationMinimalBookmark = 512; + static const int NSURLBookmarkCreationSuitableForBookmarkFile = 1024; + static const int NSURLBookmarkCreationWithSecurityScope = 2048; + static const int NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess = 4096; + static const int NSURLBookmarkCreationWithoutImplicitSecurityScope = + 536870912; +} + +abstract class NSURLBookmarkResolutionOptions { + static const int NSURLBookmarkResolutionWithoutUI = 256; + static const int NSURLBookmarkResolutionWithoutMounting = 512; + static const int NSURLBookmarkResolutionWithSecurityScope = 1024; + static const int NSURLBookmarkResolutionWithoutImplicitStartAccessing = 32768; +} + +class NSFileManager extends objc.NSObject { + NSFileManager._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSFileManager] that points to the same underlying object as [other]. + NSFileManager.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSFileManager] that wraps the given raw object pointer. + NSFileManager.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSFileManager]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSFileManager); } - int ordinalityOfUnit_inUnit_forDate_(int smaller, int larger, NSDate date) { - return _lib._objc_msgSend_769(_id, - _lib._sel_ordinalityOfUnit_inUnit_forDate_1, smaller, larger, date._id); + static NSFileManager getDefaultManager() { + final _ret = _objc_msgSend_269(_class_NSFileManager, _sel_defaultManager); + return NSFileManager.castFromPointer(_ret, retain: true, release: true); } - bool rangeOfUnit_startDate_interval_forDate_( - int unit, - ffi.Pointer> datep, - ffi.Pointer tip, - NSDate date) { - return _lib._objc_msgSend_770( - _id, - _lib._sel_rangeOfUnit_startDate_interval_forDate_1, - unit, - datep, - tip, - date._id); + objc.NSArray? mountedVolumeURLsIncludingResourceValuesForKeys_options_( + objc.NSArray? propertyKeys, int options) { + final _ret = _objc_msgSend_270( + this.pointer, + _sel_mountedVolumeURLsIncludingResourceValuesForKeys_options_, + propertyKeys?.pointer ?? ffi.nullptr, + options); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSDate? dateFromComponents_(NSDateComponents comps) { - final _ret = - _lib._objc_msgSend_778(_id, _lib._sel_dateFromComponents_1, comps._id); + void unmountVolumeAtURL_options_completionHandler_( + objc.NSURL url, int mask, ObjCBlock_ffiVoid_NSError completionHandler) { + _objc_msgSend_271( + this.pointer, + _sel_unmountVolumeAtURL_options_completionHandler_, + url.pointer, + mask, + completionHandler.pointer); + } + + objc.NSArray? + contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_( + objc.NSURL url, + objc.NSArray? keys, + int mask, + ffi.Pointer> error) { + final _ret = _objc_msgSend_272( + this.pointer, + _sel_contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_, + url.pointer, + keys?.pointer ?? ffi.nullptr, + mask, + error); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSDateComponents components_fromDate_(int unitFlags, NSDate date) { - final _ret = _lib._objc_msgSend_779( - _id, _lib._sel_components_fromDate_1, unitFlags, date._id); - return NSDateComponents._(_ret, _lib, retain: true, release: true); + objc.NSArray URLsForDirectory_inDomains_(int directory, int domainMask) { + final _ret = _objc_msgSend_273( + this.pointer, _sel_URLsForDirectory_inDomains_, directory, domainMask); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSDate? dateByAddingComponents_toDate_options_( - NSDateComponents comps, NSDate date, int opts) { - final _ret = _lib._objc_msgSend_780( - _id, - _lib._sel_dateByAddingComponents_toDate_options_1, - comps._id, - date._id, - opts); + objc.NSURL? URLForDirectory_inDomain_appropriateForURL_create_error_( + int directory, + int domain, + objc.NSURL? url, + bool shouldCreate, + ffi.Pointer> error) { + final _ret = _objc_msgSend_274( + this.pointer, + _sel_URLForDirectory_inDomain_appropriateForURL_create_error_, + directory, + domain, + url?.pointer ?? ffi.nullptr, + shouldCreate, + error); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } - - NSDateComponents components_fromDate_toDate_options_( - int unitFlags, NSDate startingDate, NSDate resultDate, int opts) { - final _ret = _lib._objc_msgSend_781( - _id, - _lib._sel_components_fromDate_toDate_options_1, - unitFlags, - startingDate._id, - resultDate._id, - opts); - return NSDateComponents._(_ret, _lib, retain: true, release: true); + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - void getEra_year_month_day_fromDate_( - ffi.Pointer eraValuePointer, - ffi.Pointer yearValuePointer, - ffi.Pointer monthValuePointer, - ffi.Pointer dayValuePointer, - NSDate date) { - _lib._objc_msgSend_782( - _id, - _lib._sel_getEra_year_month_day_fromDate_1, - eraValuePointer, - yearValuePointer, - monthValuePointer, - dayValuePointer, - date._id); + bool getRelationship_ofDirectoryAtURL_toItemAtURL_error_( + ffi.Pointer outRelationship, + objc.NSURL directoryURL, + objc.NSURL otherURL, + ffi.Pointer> error) { + return _objc_msgSend_275( + this.pointer, + _sel_getRelationship_ofDirectoryAtURL_toItemAtURL_error_, + outRelationship, + directoryURL.pointer, + otherURL.pointer, + error); } - void getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_( - ffi.Pointer eraValuePointer, - ffi.Pointer yearValuePointer, - ffi.Pointer weekValuePointer, - ffi.Pointer weekdayValuePointer, - NSDate date) { - _lib._objc_msgSend_782( - _id, - _lib._sel_getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_1, - eraValuePointer, - yearValuePointer, - weekValuePointer, - weekdayValuePointer, - date._id); + bool getRelationship_ofDirectory_inDomain_toItemAtURL_error_( + ffi.Pointer outRelationship, + int directory, + int domainMask, + objc.NSURL url, + ffi.Pointer> error) { + return _objc_msgSend_276( + this.pointer, + _sel_getRelationship_ofDirectory_inDomain_toItemAtURL_error_, + outRelationship, + directory, + domainMask, + url.pointer, + error); } - void getHour_minute_second_nanosecond_fromDate_( - ffi.Pointer hourValuePointer, - ffi.Pointer minuteValuePointer, - ffi.Pointer secondValuePointer, - ffi.Pointer nanosecondValuePointer, - NSDate date) { - _lib._objc_msgSend_782( - _id, - _lib._sel_getHour_minute_second_nanosecond_fromDate_1, - hourValuePointer, - minuteValuePointer, - secondValuePointer, - nanosecondValuePointer, - date._id); + bool createDirectoryAtURL_withIntermediateDirectories_attributes_error_( + objc.NSURL url, + bool createIntermediates, + objc.NSDictionary? attributes, + ffi.Pointer> error) { + return _objc_msgSend_277( + this.pointer, + _sel_createDirectoryAtURL_withIntermediateDirectories_attributes_error_, + url.pointer, + createIntermediates, + attributes?.pointer ?? ffi.nullptr, + error); } - int component_fromDate_(int unit, NSDate date) { - return _lib._objc_msgSend_783( - _id, _lib._sel_component_fromDate_1, unit, date._id); + bool createSymbolicLinkAtURL_withDestinationURL_error_(objc.NSURL url, + objc.NSURL destURL, ffi.Pointer> error) { + return _objc_msgSend_278( + this.pointer, + _sel_createSymbolicLinkAtURL_withDestinationURL_error_, + url.pointer, + destURL.pointer, + error); } - NSDate? dateWithEra_year_month_day_hour_minute_second_nanosecond_( - int eraValue, - int yearValue, - int monthValue, - int dayValue, - int hourValue, - int minuteValue, - int secondValue, - int nanosecondValue) { - final _ret = _lib._objc_msgSend_784( - _id, - _lib._sel_dateWithEra_year_month_day_hour_minute_second_nanosecond_1, - eraValue, - yearValue, - monthValue, - dayValue, - hourValue, - minuteValue, - secondValue, - nanosecondValue); + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSDate? - dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_( - int eraValue, - int yearValue, - int weekValue, - int weekdayValue, - int hourValue, - int minuteValue, - int secondValue, - int nanosecondValue) { - final _ret = _lib._objc_msgSend_784( - _id, - _lib._sel_dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_1, - eraValue, - yearValue, - weekValue, - weekdayValue, - hourValue, - minuteValue, - secondValue, - nanosecondValue); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + set delegate(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDelegate_, value?.pointer ?? ffi.nullptr); } - NSDate startOfDayForDate_(NSDate date) { - final _ret = - _lib._objc_msgSend_168(_id, _lib._sel_startOfDayForDate_1, date._id); - return NSDate._(_ret, _lib, retain: true, release: true); + bool setAttributes_ofItemAtPath_error_(objc.NSDictionary attributes, + objc.NSString path, ffi.Pointer> error) { + return _objc_msgSend_279( + this.pointer, + _sel_setAttributes_ofItemAtPath_error_, + attributes.pointer, + path.pointer, + error); } - NSDateComponents componentsInTimeZone_fromDate_( - NSTimeZone timezone, NSDate date) { - final _ret = _lib._objc_msgSend_785( - _id, _lib._sel_componentsInTimeZone_fromDate_1, timezone._id, date._id); - return NSDateComponents._(_ret, _lib, retain: true, release: true); + bool createDirectoryAtPath_withIntermediateDirectories_attributes_error_( + objc.NSString path, + bool createIntermediates, + objc.NSDictionary? attributes, + ffi.Pointer> error) { + return _objc_msgSend_280( + this.pointer, + _sel_createDirectoryAtPath_withIntermediateDirectories_attributes_error_, + path.pointer, + createIntermediates, + attributes?.pointer ?? ffi.nullptr, + error); } - int compareDate_toDate_toUnitGranularity_( - NSDate date1, NSDate date2, int unit) { - return _lib._objc_msgSend_786( - _id, - _lib._sel_compareDate_toDate_toUnitGranularity_1, - date1._id, - date2._id, - unit); + objc.NSArray? contentsOfDirectoryAtPath_error_( + objc.NSString path, ffi.Pointer> error) { + final _ret = _objc_msgSend_281(this.pointer, + _sel_contentsOfDirectoryAtPath_error_, path.pointer, error); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool isDate_equalToDate_toUnitGranularity_( - NSDate date1, NSDate date2, int unit) { - return _lib._objc_msgSend_787( - _id, - _lib._sel_isDate_equalToDate_toUnitGranularity_1, - date1._id, - date2._id, - unit); + objc.NSArray? subpathsOfDirectoryAtPath_error_( + objc.NSString path, ffi.Pointer> error) { + final _ret = _objc_msgSend_281(this.pointer, + _sel_subpathsOfDirectoryAtPath_error_, path.pointer, error); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool isDate_inSameDayAsDate_(NSDate date1, NSDate date2) { - return _lib._objc_msgSend_788( - _id, _lib._sel_isDate_inSameDayAsDate_1, date1._id, date2._id); + objc.NSDictionary? attributesOfItemAtPath_error_( + objc.NSString path, ffi.Pointer> error) { + final _ret = _objc_msgSend_282( + this.pointer, _sel_attributesOfItemAtPath_error_, path.pointer, error); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - bool isDateInToday_(NSDate date) { - return _lib._objc_msgSend_170(_id, _lib._sel_isDateInToday_1, date._id); + objc.NSDictionary? attributesOfFileSystemForPath_error_( + objc.NSString path, ffi.Pointer> error) { + final _ret = _objc_msgSend_282(this.pointer, + _sel_attributesOfFileSystemForPath_error_, path.pointer, error); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - bool isDateInYesterday_(NSDate date) { - return _lib._objc_msgSend_170(_id, _lib._sel_isDateInYesterday_1, date._id); + bool createSymbolicLinkAtPath_withDestinationPath_error_(objc.NSString path, + objc.NSString destPath, ffi.Pointer> error) { + return _objc_msgSend_283( + this.pointer, + _sel_createSymbolicLinkAtPath_withDestinationPath_error_, + path.pointer, + destPath.pointer, + error); } - bool isDateInTomorrow_(NSDate date) { - return _lib._objc_msgSend_170(_id, _lib._sel_isDateInTomorrow_1, date._id); + objc.NSString? destinationOfSymbolicLinkAtPath_error_( + objc.NSString path, ffi.Pointer> error) { + final _ret = _objc_msgSend_284(this.pointer, + _sel_destinationOfSymbolicLinkAtPath_error_, path.pointer, error); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool isDateInWeekend_(NSDate date) { - return _lib._objc_msgSend_170(_id, _lib._sel_isDateInWeekend_1, date._id); + bool copyItemAtPath_toPath_error_(objc.NSString srcPath, + objc.NSString dstPath, ffi.Pointer> error) { + return _objc_msgSend_283(this.pointer, _sel_copyItemAtPath_toPath_error_, + srcPath.pointer, dstPath.pointer, error); } - bool rangeOfWeekendStartDate_interval_containingDate_( - ffi.Pointer> datep, - ffi.Pointer tip, - NSDate date) { - return _lib._objc_msgSend_789( - _id, - _lib._sel_rangeOfWeekendStartDate_interval_containingDate_1, - datep, - tip, - date._id); + bool moveItemAtPath_toPath_error_(objc.NSString srcPath, + objc.NSString dstPath, ffi.Pointer> error) { + return _objc_msgSend_283(this.pointer, _sel_moveItemAtPath_toPath_error_, + srcPath.pointer, dstPath.pointer, error); } - bool nextWeekendStartDate_interval_options_afterDate_( - ffi.Pointer> datep, - ffi.Pointer tip, - int options, - NSDate date) { - return _lib._objc_msgSend_790( - _id, - _lib._sel_nextWeekendStartDate_interval_options_afterDate_1, - datep, - tip, - options, - date._id); + bool linkItemAtPath_toPath_error_(objc.NSString srcPath, + objc.NSString dstPath, ffi.Pointer> error) { + return _objc_msgSend_283(this.pointer, _sel_linkItemAtPath_toPath_error_, + srcPath.pointer, dstPath.pointer, error); } - NSDateComponents components_fromDateComponents_toDateComponents_options_( - int unitFlags, - NSDateComponents startingDateComp, - NSDateComponents resultDateComp, - int options) { - final _ret = _lib._objc_msgSend_791( - _id, - _lib._sel_components_fromDateComponents_toDateComponents_options_1, - unitFlags, - startingDateComp._id, - resultDateComp._id, - options); - return NSDateComponents._(_ret, _lib, retain: true, release: true); + bool removeItemAtPath_error_( + objc.NSString path, ffi.Pointer> error) { + return _objc_msgSend_285( + this.pointer, _sel_removeItemAtPath_error_, path.pointer, error); + } + + bool copyItemAtURL_toURL_error_(objc.NSURL srcURL, objc.NSURL dstURL, + ffi.Pointer> error) { + return _objc_msgSend_278(this.pointer, _sel_copyItemAtURL_toURL_error_, + srcURL.pointer, dstURL.pointer, error); } - NSDate? dateByAddingUnit_value_toDate_options_( - int unit, int value, NSDate date, int options) { - final _ret = _lib._objc_msgSend_792( - _id, - _lib._sel_dateByAddingUnit_value_toDate_options_1, - unit, - value, - date._id, - options); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + bool moveItemAtURL_toURL_error_(objc.NSURL srcURL, objc.NSURL dstURL, + ffi.Pointer> error) { + return _objc_msgSend_278(this.pointer, _sel_moveItemAtURL_toURL_error_, + srcURL.pointer, dstURL.pointer, error); } - void enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_( - NSDate start, - NSDateComponents comps, - int opts, - ObjCBlock_ffiVoid_NSDate_bool_bool block) { - _lib._objc_msgSend_793( - _id, - _lib._sel_enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_1, - start._id, - comps._id, - opts, - block._id); + bool linkItemAtURL_toURL_error_(objc.NSURL srcURL, objc.NSURL dstURL, + ffi.Pointer> error) { + return _objc_msgSend_278(this.pointer, _sel_linkItemAtURL_toURL_error_, + srcURL.pointer, dstURL.pointer, error); } - NSDate? nextDateAfterDate_matchingComponents_options_( - NSDate date, NSDateComponents comps, int options) { - final _ret = _lib._objc_msgSend_794( - _id, - _lib._sel_nextDateAfterDate_matchingComponents_options_1, - date._id, - comps._id, - options); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + bool removeItemAtURL_error_( + objc.NSURL URL, ffi.Pointer> error) { + return _objc_msgSend_286( + this.pointer, _sel_removeItemAtURL_error_, URL.pointer, error); } - NSDate? nextDateAfterDate_matchingUnit_value_options_( - NSDate date, int unit, int value, int options) { - final _ret = _lib._objc_msgSend_795( - _id, - _lib._sel_nextDateAfterDate_matchingUnit_value_options_1, - date._id, - unit, - value, - options); + bool trashItemAtURL_resultingItemURL_error_( + objc.NSURL url, + ffi.Pointer> outResultingURL, + ffi.Pointer> error) { + return _objc_msgSend_287( + this.pointer, + _sel_trashItemAtURL_resultingItemURL_error_, + url.pointer, + outResultingURL, + error); + } + + objc.NSDictionary? fileAttributesAtPath_traverseLink_( + objc.NSString path, bool yorn) { + final _ret = _objc_msgSend_288(this.pointer, + _sel_fileAttributesAtPath_traverseLink_, path.pointer, yorn); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - NSDate? nextDateAfterDate_matchingHour_minute_second_options_(NSDate date, - int hourValue, int minuteValue, int secondValue, int options) { - final _ret = _lib._objc_msgSend_796( - _id, - _lib._sel_nextDateAfterDate_matchingHour_minute_second_options_1, - date._id, - hourValue, - minuteValue, - secondValue, - options); + bool changeFileAttributes_atPath_( + objc.NSDictionary attributes, objc.NSString path) { + return _objc_msgSend_289(this.pointer, _sel_changeFileAttributes_atPath_, + attributes.pointer, path.pointer); + } + + objc.NSArray? directoryContentsAtPath_(objc.NSString path) { + final _ret = _objc_msgSend_290( + this.pointer, _sel_directoryContentsAtPath_, path.pointer); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSDate? dateBySettingUnit_value_ofDate_options_( - int unit, int v, NSDate date, int opts) { - final _ret = _lib._objc_msgSend_792( - _id, - _lib._sel_dateBySettingUnit_value_ofDate_options_1, - unit, - v, - date._id, - opts); + objc.NSDictionary? fileSystemAttributesAtPath_(objc.NSString path) { + final _ret = _objc_msgSend_291( + this.pointer, _sel_fileSystemAttributesAtPath_, path.pointer); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - NSDate? dateBySettingHour_minute_second_ofDate_options_( - int h, int m, int s, NSDate date, int opts) { - final _ret = _lib._objc_msgSend_797( - _id, - _lib._sel_dateBySettingHour_minute_second_ofDate_options_1, - h, - m, - s, - date._id, - opts); + objc.NSString? pathContentOfSymbolicLinkAtPath_(objc.NSString path) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_pathContentOfSymbolicLinkAtPath_, path.pointer); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool date_matchesComponents_(NSDate date, NSDateComponents components) { - return _lib._objc_msgSend_798( - _id, _lib._sel_date_matchesComponents_1, date._id, components._id); + bool createSymbolicLinkAtPath_pathContent_( + objc.NSString path, objc.NSString otherpath) { + return _objc_msgSend_292( + this.pointer, + _sel_createSymbolicLinkAtPath_pathContent_, + path.pointer, + otherpath.pointer); } - static NSCalendar new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSCalendar1, _lib._sel_new1); - return NSCalendar._(_ret, _lib, retain: false, release: true); + bool createDirectoryAtPath_attributes_( + objc.NSString path, objc.NSDictionary attributes) { + return _objc_msgSend_293( + this.pointer, + _sel_createDirectoryAtPath_attributes_, + path.pointer, + attributes.pointer); } - static NSCalendar allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSCalendar1, _lib._sel_allocWithZone_1, zone); - return NSCalendar._(_ret, _lib, retain: false, release: true); + bool linkPath_toPath_handler_( + objc.NSString src, objc.NSString dest, objc.NSObject? handler) { + return _objc_msgSend_294(this.pointer, _sel_linkPath_toPath_handler_, + src.pointer, dest.pointer, handler?.pointer ?? ffi.nullptr); } - static NSCalendar alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSCalendar1, _lib._sel_alloc1); - return NSCalendar._(_ret, _lib, retain: false, release: true); + bool copyPath_toPath_handler_( + objc.NSString src, objc.NSString dest, objc.NSObject? handler) { + return _objc_msgSend_294(this.pointer, _sel_copyPath_toPath_handler_, + src.pointer, dest.pointer, handler?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSCalendar1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + bool movePath_toPath_handler_( + objc.NSString src, objc.NSString dest, objc.NSObject? handler) { + return _objc_msgSend_294(this.pointer, _sel_movePath_toPath_handler_, + src.pointer, dest.pointer, handler?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSCalendar1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + bool removeFileAtPath_handler_(objc.NSString path, objc.NSObject? handler) { + return _objc_msgSend_295(this.pointer, _sel_removeFileAtPath_handler_, + path.pointer, handler?.pointer ?? ffi.nullptr); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSCalendar1, _lib._sel_accessInstanceVariablesDirectly1); + objc.NSString get currentDirectoryPath { + final _ret = _objc_msgSend_12(this.pointer, _sel_currentDirectoryPath); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSCalendar1, _lib._sel_useStoredAccessor1); + bool changeCurrentDirectoryPath_(objc.NSString path) { + return _objc_msgSend_51( + this.pointer, _sel_changeCurrentDirectoryPath_, path.pointer); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSCalendar1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + bool fileExistsAtPath_(objc.NSString path) { + return _objc_msgSend_51(this.pointer, _sel_fileExistsAtPath_, path.pointer); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSCalendar1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + bool fileExistsAtPath_isDirectory_( + objc.NSString path, ffi.Pointer isDirectory) { + return _objc_msgSend_296(this.pointer, _sel_fileExistsAtPath_isDirectory_, + path.pointer, isDirectory); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSCalendar1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + bool isReadableFileAtPath_(objc.NSString path) { + return _objc_msgSend_51( + this.pointer, _sel_isReadableFileAtPath_, path.pointer); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSCalendar1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool isWritableFileAtPath_(objc.NSString path) { + return _objc_msgSend_51( + this.pointer, _sel_isWritableFileAtPath_, path.pointer); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSCalendar1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + bool isExecutableFileAtPath_(objc.NSString path) { + return _objc_msgSend_51( + this.pointer, _sel_isExecutableFileAtPath_, path.pointer); } -} - -abstract class NSCalendarUnit { - static const int NSCalendarUnitEra = 2; - static const int NSCalendarUnitYear = 4; - static const int NSCalendarUnitMonth = 8; - static const int NSCalendarUnitDay = 16; - static const int NSCalendarUnitHour = 32; - static const int NSCalendarUnitMinute = 64; - static const int NSCalendarUnitSecond = 128; - static const int NSCalendarUnitWeekday = 512; - static const int NSCalendarUnitWeekdayOrdinal = 1024; - static const int NSCalendarUnitQuarter = 2048; - static const int NSCalendarUnitWeekOfMonth = 4096; - static const int NSCalendarUnitWeekOfYear = 8192; - static const int NSCalendarUnitYearForWeekOfYear = 16384; - static const int NSCalendarUnitNanosecond = 32768; - static const int NSCalendarUnitCalendar = 1048576; - static const int NSCalendarUnitTimeZone = 2097152; - static const int NSEraCalendarUnit = 2; - static const int NSYearCalendarUnit = 4; - static const int NSMonthCalendarUnit = 8; - static const int NSDayCalendarUnit = 16; - static const int NSHourCalendarUnit = 32; - static const int NSMinuteCalendarUnit = 64; - static const int NSSecondCalendarUnit = 128; - static const int NSWeekCalendarUnit = 256; - static const int NSWeekdayCalendarUnit = 512; - static const int NSWeekdayOrdinalCalendarUnit = 1024; - static const int NSQuarterCalendarUnit = 2048; - static const int NSWeekOfMonthCalendarUnit = 4096; - static const int NSWeekOfYearCalendarUnit = 8192; - static const int NSYearForWeekOfYearCalendarUnit = 16384; - static const int NSCalendarCalendarUnit = 1048576; - static const int NSTimeZoneCalendarUnit = 2097152; -} - -class NSDateComponents extends NSObject { - NSDateComponents._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSDateComponents] that points to the same underlying object as [other]. - static NSDateComponents castFrom(T other) { - return NSDateComponents._(other._id, other._lib, - retain: true, release: true); + bool isDeletableFileAtPath_(objc.NSString path) { + return _objc_msgSend_51( + this.pointer, _sel_isDeletableFileAtPath_, path.pointer); } - /// Returns a [NSDateComponents] that wraps the given raw object pointer. - static NSDateComponents castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSDateComponents._(other, lib, retain: retain, release: release); + bool contentsEqualAtPath_andPath_(objc.NSString path1, objc.NSString path2) { + return _objc_msgSend_292(this.pointer, _sel_contentsEqualAtPath_andPath_, + path1.pointer, path2.pointer); } - /// Returns whether [obj] is an instance of [NSDateComponents]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSDateComponents1); + objc.NSString displayNameAtPath_(objc.NSString path) { + final _ret = + _objc_msgSend_297(this.pointer, _sel_displayNameAtPath_, path.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSCalendar? get calendar { - final _ret = _lib._objc_msgSend_771(_id, _lib._sel_calendar1); + objc.NSArray? componentsToDisplayForPath_(objc.NSString path) { + final _ret = _objc_msgSend_290( + this.pointer, _sel_componentsToDisplayForPath_, path.pointer); return _ret.address == 0 ? null - : NSCalendar._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set calendar(NSCalendar? value) { - return _lib._objc_msgSend_772( - _id, _lib._sel_setCalendar_1, value?._id ?? ffi.nullptr); + objc.NSObject? enumeratorAtPath_(objc.NSString path) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_enumeratorAtPath_, path.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSTimeZone? get timeZone { - final _ret = _lib._objc_msgSend_773(_id, _lib._sel_timeZone1); + objc.NSObject? + enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_( + objc.NSURL url, + objc.NSArray? keys, + int mask, + ObjCBlock_bool_NSURL_NSError? handler) { + final _ret = _objc_msgSend_298( + this.pointer, + _sel_enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_, + url.pointer, + keys?.pointer ?? ffi.nullptr, + mask, + handler?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSTimeZone._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set timeZone(NSTimeZone? value) { - return _lib._objc_msgSend_774( - _id, _lib._sel_setTimeZone_1, value?._id ?? ffi.nullptr); + objc.NSArray? subpathsAtPath_(objc.NSString path) { + final _ret = + _objc_msgSend_290(this.pointer, _sel_subpathsAtPath_, path.pointer); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int get era { - return _lib._objc_msgSend_83(_id, _lib._sel_era1); + objc.NSData? contentsAtPath_(objc.NSString path) { + final _ret = + _objc_msgSend_299(this.pointer, _sel_contentsAtPath_, path.pointer); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - set era(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setEra_1, value); + bool createFileAtPath_contents_attributes_( + objc.NSString path, objc.NSData? data, objc.NSDictionary? attr) { + return _objc_msgSend_300( + this.pointer, + _sel_createFileAtPath_contents_attributes_, + path.pointer, + data?.pointer ?? ffi.nullptr, + attr?.pointer ?? ffi.nullptr); } - int get year { - return _lib._objc_msgSend_83(_id, _lib._sel_year1); + ffi.Pointer fileSystemRepresentationWithPath_(objc.NSString path) { + return _objc_msgSend_301( + this.pointer, _sel_fileSystemRepresentationWithPath_, path.pointer); } - set year(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setYear_1, value); + objc.NSString stringWithFileSystemRepresentation_length_( + ffi.Pointer str, int len) { + final _ret = _objc_msgSend_302(this.pointer, + _sel_stringWithFileSystemRepresentation_length_, str, len); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - int get month { - return _lib._objc_msgSend_83(_id, _lib._sel_month1); + bool + replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_( + objc.NSURL originalItemURL, + objc.NSURL newItemURL, + objc.NSString? backupItemName, + int options, + ffi.Pointer> resultingURL, + ffi.Pointer> error) { + return _objc_msgSend_303( + this.pointer, + _sel_replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_, + originalItemURL.pointer, + newItemURL.pointer, + backupItemName?.pointer ?? ffi.nullptr, + options, + resultingURL, + error); } - set month(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setMonth_1, value); + bool setUbiquitous_itemAtURL_destinationURL_error_( + bool flag, + objc.NSURL url, + objc.NSURL destinationURL, + ffi.Pointer> error) { + return _objc_msgSend_304( + this.pointer, + _sel_setUbiquitous_itemAtURL_destinationURL_error_, + flag, + url.pointer, + destinationURL.pointer, + error); } - int get day { - return _lib._objc_msgSend_83(_id, _lib._sel_day1); + bool isUbiquitousItemAtURL_(objc.NSURL url) { + return _objc_msgSend_305( + this.pointer, _sel_isUbiquitousItemAtURL_, url.pointer); } - set day(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setDay_1, value); + bool startDownloadingUbiquitousItemAtURL_error_( + objc.NSURL url, ffi.Pointer> error) { + return _objc_msgSend_286(this.pointer, + _sel_startDownloadingUbiquitousItemAtURL_error_, url.pointer, error); } - int get hour { - return _lib._objc_msgSend_83(_id, _lib._sel_hour1); + bool evictUbiquitousItemAtURL_error_( + objc.NSURL url, ffi.Pointer> error) { + return _objc_msgSend_286( + this.pointer, _sel_evictUbiquitousItemAtURL_error_, url.pointer, error); } - set hour(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setHour_1, value); + objc.NSURL? URLForUbiquityContainerIdentifier_( + objc.NSString? containerIdentifier) { + final _ret = _objc_msgSend_306( + this.pointer, + _sel_URLForUbiquityContainerIdentifier_, + containerIdentifier?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - int get minute { - return _lib._objc_msgSend_83(_id, _lib._sel_minute1); + objc.NSURL? URLForPublishingUbiquitousItemAtURL_expirationDate_error_( + objc.NSURL url, + ffi.Pointer> outDate, + ffi.Pointer> error) { + final _ret = _objc_msgSend_307( + this.pointer, + _sel_URLForPublishingUbiquitousItemAtURL_expirationDate_error_, + url.pointer, + outDate, + error); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - set minute(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setMinute_1, value); + objc.NSObject? get ubiquityIdentityToken { + final _ret = _objc_msgSend_66(this.pointer, _sel_ubiquityIdentityToken); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - int get second { - return _lib._objc_msgSend_83(_id, _lib._sel_second1); + void getFileProviderServicesForItemAtURL_completionHandler_(objc.NSURL url, + ObjCBlock_ffiVoid_NSDictionary_NSError completionHandler) { + _objc_msgSend_308( + this.pointer, + _sel_getFileProviderServicesForItemAtURL_completionHandler_, + url.pointer, + completionHandler.pointer); } - set second(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setSecond_1, value); + objc.NSURL? containerURLForSecurityApplicationGroupIdentifier_( + objc.NSString groupIdentifier) { + final _ret = _objc_msgSend_11( + this.pointer, + _sel_containerURLForSecurityApplicationGroupIdentifier_, + groupIdentifier.pointer); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - int get nanosecond { - return _lib._objc_msgSend_83(_id, _lib._sel_nanosecond1); + objc.NSURL get homeDirectoryForCurrentUser { + final _ret = + _objc_msgSend_9(this.pointer, _sel_homeDirectoryForCurrentUser); + return objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - set nanosecond(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setNanosecond_1, value); + objc.NSURL get temporaryDirectory { + final _ret = _objc_msgSend_9(this.pointer, _sel_temporaryDirectory); + return objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - int get weekday { - return _lib._objc_msgSend_83(_id, _lib._sel_weekday1); + objc.NSURL? homeDirectoryForUser_(objc.NSString userName) { + final _ret = _objc_msgSend_11( + this.pointer, _sel_homeDirectoryForUser_, userName.pointer); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - set weekday(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setWeekday_1, value); + @override + NSFileManager init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSFileManager.castFromPointer(_ret, retain: true, release: true); } - int get weekdayOrdinal { - return _lib._objc_msgSend_83(_id, _lib._sel_weekdayOrdinal1); + static NSFileManager new1() { + final _ret = _objc_msgSend_40(_class_NSFileManager, _sel_new); + return NSFileManager.castFromPointer(_ret, retain: false, release: true); } - set weekdayOrdinal(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setWeekdayOrdinal_1, value); + static NSFileManager allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSFileManager, _sel_allocWithZone_, zone); + return NSFileManager.castFromPointer(_ret, retain: false, release: true); } - int get quarter { - return _lib._objc_msgSend_83(_id, _lib._sel_quarter1); + static NSFileManager alloc() { + final _ret = _objc_msgSend_40(_class_NSFileManager, _sel_alloc); + return NSFileManager.castFromPointer(_ret, retain: false, release: true); } - set quarter(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setQuarter_1, value); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSFileManager, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - int get weekOfMonth { - return _lib._objc_msgSend_83(_id, _lib._sel_weekOfMonth1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSFileManager, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - set weekOfMonth(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setWeekOfMonth_1, value); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSFileManager, _sel_accessInstanceVariablesDirectly); } - int get weekOfYear { - return _lib._objc_msgSend_83(_id, _lib._sel_weekOfYear1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSFileManager, _sel_useStoredAccessor); } - set weekOfYear(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setWeekOfYear_1, value); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSFileManager, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - int get yearForWeekOfYear { - return _lib._objc_msgSend_83(_id, _lib._sel_yearForWeekOfYear1); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSFileManager, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - set yearForWeekOfYear(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setYearForWeekOfYear_1, value); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSFileManager, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - bool get leapMonth { - return _lib._objc_msgSend_12(_id, _lib._sel_isLeapMonth1); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSFileManager, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set leapMonth(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setLeapMonth_1, value); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSFileManager, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - NSDate? get date { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_date1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); - } +late final _class_NSFileManager = objc.getClass("NSFileManager"); +late final _sel_defaultManager = objc.registerName("defaultManager"); +final _objc_msgSend_269 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - int week() { - return _lib._objc_msgSend_83(_id, _lib._sel_week1); - } +abstract class NSVolumeEnumerationOptions { + static const int NSVolumeEnumerationSkipHiddenVolumes = 2; + static const int NSVolumeEnumerationProduceFileReferenceURLs = 4; +} - void setWeek_(int v) { - _lib._objc_msgSend_423(_id, _lib._sel_setWeek_1, v); - } +late final _sel_mountedVolumeURLsIncludingResourceValuesForKeys_options_ = objc + .registerName("mountedVolumeURLsIncludingResourceValuesForKeys:options:"); +final _objc_msgSend_270 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); - void setValue_forComponent_(int value, int unit) { - _lib._objc_msgSend_775(_id, _lib._sel_setValue_forComponent_1, value, unit); - } +abstract class NSFileManagerUnmountOptions { + static const int NSFileManagerUnmountAllPartitionsAndEjectDisk = 1; + static const int NSFileManagerUnmountWithoutUI = 2; +} - int valueForComponent_(int unit) { - return _lib._objc_msgSend_776(_id, _lib._sel_valueForComponent_1, unit); - } +void _ObjCBlock_ffiVoid_NSError_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSError_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSError_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - bool get validDate { - return _lib._objc_msgSend_12(_id, _lib._sel_isValidDate1); - } +void _ObjCBlock_ffiVoid_NSError_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSError_closureRegistry[block.ref.target.address]!(arg0); - bool isValidDateInCalendar_(NSCalendar calendar) { - return _lib._objc_msgSend_777( - _id, _lib._sel_isValidDateInCalendar_1, calendar._id); - } +class ObjCBlock_ffiVoid_NSError extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSError._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - @override - NSDateComponents init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSDateComponents._(_ret, _lib, retain: true, release: true); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSError._(pointer, + retain: retain, release: release); } - static NSDateComponents new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSDateComponents1, _lib._sel_new1); - return NSDateComponents._(_ret, _lib, retain: false, release: true); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSError.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - static NSDateComponents allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSDateComponents1, _lib._sel_allocWithZone_1, zone); - return NSDateComponents._(_ret, _lib, retain: false, release: true); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSError.fromFunction(void Function(objc.NSError?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSError_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSError.castFromPointer(arg0, + retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSError.listener(void Function(objc.NSError?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSError_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSError_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSError.castFromPointer(arg0, retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; + + void call(objc.NSError? arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function( + ffi.Pointer, ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr); +} + +late final _sel_unmountVolumeAtURL_options_completionHandler_ = + objc.registerName("unmountVolumeAtURL:options:completionHandler:"); +final _objc_msgSend_271 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); + +abstract class NSDirectoryEnumerationOptions { + static const int NSDirectoryEnumerationSkipsSubdirectoryDescendants = 1; + static const int NSDirectoryEnumerationSkipsPackageDescendants = 2; + static const int NSDirectoryEnumerationSkipsHiddenFiles = 4; + static const int NSDirectoryEnumerationIncludesDirectoriesPostOrder = 8; + static const int NSDirectoryEnumerationProducesRelativePathURLs = 16; +} + +late final _sel_contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_ = + objc.registerName( + "contentsOfDirectoryAtURL:includingPropertiesForKeys:options:error:"); +final _objc_msgSend_272 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + +abstract class NSSearchPathDirectory { + static const int NSApplicationDirectory = 1; + static const int NSDemoApplicationDirectory = 2; + static const int NSDeveloperApplicationDirectory = 3; + static const int NSAdminApplicationDirectory = 4; + static const int NSLibraryDirectory = 5; + static const int NSDeveloperDirectory = 6; + static const int NSUserDirectory = 7; + static const int NSDocumentationDirectory = 8; + static const int NSDocumentDirectory = 9; + static const int NSCoreServiceDirectory = 10; + static const int NSAutosavedInformationDirectory = 11; + static const int NSDesktopDirectory = 12; + static const int NSCachesDirectory = 13; + static const int NSApplicationSupportDirectory = 14; + static const int NSDownloadsDirectory = 15; + static const int NSInputMethodsDirectory = 16; + static const int NSMoviesDirectory = 17; + static const int NSMusicDirectory = 18; + static const int NSPicturesDirectory = 19; + static const int NSPrinterDescriptionDirectory = 20; + static const int NSSharedPublicDirectory = 21; + static const int NSPreferencePanesDirectory = 22; + static const int NSApplicationScriptsDirectory = 23; + static const int NSItemReplacementDirectory = 99; + static const int NSAllApplicationsDirectory = 100; + static const int NSAllLibrariesDirectory = 101; + static const int NSTrashDirectory = 102; +} - static NSDateComponents alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSDateComponents1, _lib._sel_alloc1); - return NSDateComponents._(_ret, _lib, retain: false, release: true); - } +abstract class NSSearchPathDomainMask { + static const int NSUserDomainMask = 1; + static const int NSLocalDomainMask = 2; + static const int NSNetworkDomainMask = 4; + static const int NSSystemDomainMask = 8; + static const int NSAllDomainsMask = 65535; +} - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSDateComponents1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } +late final _sel_URLsForDirectory_inDomains_ = + objc.registerName("URLsForDirectory:inDomains:"); +final _objc_msgSend_273 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32, ffi.Int32)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, int)>(); +late final _sel_URLForDirectory_inDomain_appropriateForURL_create_error_ = objc + .registerName("URLForDirectory:inDomain:appropriateForURL:create:error:"); +final _objc_msgSend_274 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer, + ffi.Bool, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer, + bool, + ffi.Pointer>)>(); - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSDateComponents1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } +abstract class NSURLRelationship { + static const int NSURLRelationshipContains = 0; + static const int NSURLRelationshipSame = 1; + static const int NSURLRelationshipOther = 2; +} - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSDateComponents1, - _lib._sel_accessInstanceVariablesDirectly1); - } +late final _sel_getRelationship_ofDirectoryAtURL_toItemAtURL_error_ = + objc.registerName("getRelationship:ofDirectoryAtURL:toItemAtURL:error:"); +final _objc_msgSend_275 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_getRelationship_ofDirectory_inDomain_toItemAtURL_error_ = objc + .registerName("getRelationship:ofDirectory:inDomain:toItemAtURL:error:"); +final _objc_msgSend_276 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_createDirectoryAtURL_withIntermediateDirectories_attributes_error_ = + objc.registerName( + "createDirectoryAtURL:withIntermediateDirectories:attributes:error:"); +final _objc_msgSend_277 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_createSymbolicLinkAtURL_withDestinationURL_error_ = + objc.registerName("createSymbolicLinkAtURL:withDestinationURL:error:"); +final _objc_msgSend_278 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_setAttributes_ofItemAtPath_error_ = + objc.registerName("setAttributes:ofItemAtPath:error:"); +final _objc_msgSend_279 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_createDirectoryAtPath_withIntermediateDirectories_attributes_error_ = + objc.registerName( + "createDirectoryAtPath:withIntermediateDirectories:attributes:error:"); +final _objc_msgSend_280 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_contentsOfDirectoryAtPath_error_ = + objc.registerName("contentsOfDirectoryAtPath:error:"); +final _objc_msgSend_281 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_subpathsOfDirectoryAtPath_error_ = + objc.registerName("subpathsOfDirectoryAtPath:error:"); +late final _sel_attributesOfItemAtPath_error_ = + objc.registerName("attributesOfItemAtPath:error:"); +final _objc_msgSend_282 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_attributesOfFileSystemForPath_error_ = + objc.registerName("attributesOfFileSystemForPath:error:"); +late final _sel_createSymbolicLinkAtPath_withDestinationPath_error_ = + objc.registerName("createSymbolicLinkAtPath:withDestinationPath:error:"); +final _objc_msgSend_283 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_destinationOfSymbolicLinkAtPath_error_ = + objc.registerName("destinationOfSymbolicLinkAtPath:error:"); +final _objc_msgSend_284 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_copyItemAtPath_toPath_error_ = + objc.registerName("copyItemAtPath:toPath:error:"); +late final _sel_moveItemAtPath_toPath_error_ = + objc.registerName("moveItemAtPath:toPath:error:"); +late final _sel_linkItemAtPath_toPath_error_ = + objc.registerName("linkItemAtPath:toPath:error:"); +late final _sel_removeItemAtPath_error_ = + objc.registerName("removeItemAtPath:error:"); +final _objc_msgSend_285 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_copyItemAtURL_toURL_error_ = + objc.registerName("copyItemAtURL:toURL:error:"); +late final _sel_moveItemAtURL_toURL_error_ = + objc.registerName("moveItemAtURL:toURL:error:"); +late final _sel_linkItemAtURL_toURL_error_ = + objc.registerName("linkItemAtURL:toURL:error:"); +late final _sel_removeItemAtURL_error_ = + objc.registerName("removeItemAtURL:error:"); +final _objc_msgSend_286 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_trashItemAtURL_resultingItemURL_error_ = + objc.registerName("trashItemAtURL:resultingItemURL:error:"); +final _objc_msgSend_287 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); +late final _sel_fileAttributesAtPath_traverseLink_ = + objc.registerName("fileAttributesAtPath:traverseLink:"); +final _objc_msgSend_288 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_changeFileAttributes_atPath_ = + objc.registerName("changeFileAttributes:atPath:"); +final _objc_msgSend_289 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_directoryContentsAtPath_ = + objc.registerName("directoryContentsAtPath:"); +final _objc_msgSend_290 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_fileSystemAttributesAtPath_ = + objc.registerName("fileSystemAttributesAtPath:"); +final _objc_msgSend_291 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_pathContentOfSymbolicLinkAtPath_ = + objc.registerName("pathContentOfSymbolicLinkAtPath:"); +late final _sel_createSymbolicLinkAtPath_pathContent_ = + objc.registerName("createSymbolicLinkAtPath:pathContent:"); +final _objc_msgSend_292 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_createDirectoryAtPath_attributes_ = + objc.registerName("createDirectoryAtPath:attributes:"); +final _objc_msgSend_293 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_linkPath_toPath_handler_ = + objc.registerName("linkPath:toPath:handler:"); +final _objc_msgSend_294 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_copyPath_toPath_handler_ = + objc.registerName("copyPath:toPath:handler:"); +late final _sel_movePath_toPath_handler_ = + objc.registerName("movePath:toPath:handler:"); +late final _sel_removeFileAtPath_handler_ = + objc.registerName("removeFileAtPath:handler:"); +final _objc_msgSend_295 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_currentDirectoryPath = + objc.registerName("currentDirectoryPath"); +late final _sel_changeCurrentDirectoryPath_ = + objc.registerName("changeCurrentDirectoryPath:"); +late final _sel_fileExistsAtPath_ = objc.registerName("fileExistsAtPath:"); +late final _sel_fileExistsAtPath_isDirectory_ = + objc.registerName("fileExistsAtPath:isDirectory:"); +final _objc_msgSend_296 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_isReadableFileAtPath_ = + objc.registerName("isReadableFileAtPath:"); +late final _sel_isWritableFileAtPath_ = + objc.registerName("isWritableFileAtPath:"); +late final _sel_isExecutableFileAtPath_ = + objc.registerName("isExecutableFileAtPath:"); +late final _sel_isDeletableFileAtPath_ = + objc.registerName("isDeletableFileAtPath:"); +late final _sel_contentsEqualAtPath_andPath_ = + objc.registerName("contentsEqualAtPath:andPath:"); +late final _sel_displayNameAtPath_ = objc.registerName("displayNameAtPath:"); +final _objc_msgSend_297 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_componentsToDisplayForPath_ = + objc.registerName("componentsToDisplayForPath:"); +late final _sel_enumeratorAtPath_ = objc.registerName("enumeratorAtPath:"); +bool _ObjCBlock_bool_NSURL_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +final _ObjCBlock_bool_NSURL_NSError_closureRegistry = , ffi.Pointer)>{}; +int _ObjCBlock_bool_NSURL_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_bool_NSURL_NSError_registerClosure( + bool Function(ffi.Pointer, ffi.Pointer) + fn) { + final id = ++_ObjCBlock_bool_NSURL_NSError_closureRegistryIndex; + _ObjCBlock_bool_NSURL_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSDateComponents1, _lib._sel_useStoredAccessor1); - } +bool _ObjCBlock_bool_NSURL_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + _ObjCBlock_bool_NSURL_NSError_closureRegistry[block.ref.target.address]!( + arg0, arg1); - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSDateComponents1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } +class ObjCBlock_bool_NSURL_NSError extends objc.ObjCBlockBase { + ObjCBlock_bool_NSURL_NSError._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSDateComponents1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_bool_NSURL_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_bool_NSURL_NSError._(pointer, + retain: retain, release: release); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSDateComponents1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_NSURL_NSError.fromFunctionPointer( + ffi.Pointer arg0, ffi.Pointer arg1)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_NSURL_NSError_fnPtrTrampoline, false) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSDateComponents1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_NSURL_NSError.fromFunction(bool Function(objc.NSURL, objc.NSError) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_NSURL_NSError_closureTrampoline, false) + .cast(), + _ObjCBlock_bool_NSURL_NSError_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1) => + fn(objc.NSURL.castFromPointer(arg0, retain: true, release: true), objc.NSError.castFromPointer(arg1, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSDateComponents1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} + bool call(objc.NSURL arg0, objc.NSError arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0.pointer, arg1.pointer); +} + +late final _sel_enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_ = + objc.registerName( + "enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:"); +final _objc_msgSend_298 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_subpathsAtPath_ = objc.registerName("subpathsAtPath:"); +late final _sel_contentsAtPath_ = objc.registerName("contentsAtPath:"); +final _objc_msgSend_299 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_createFileAtPath_contents_attributes_ = + objc.registerName("createFileAtPath:contents:attributes:"); +final _objc_msgSend_300 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_fileSystemRepresentationWithPath_ = + objc.registerName("fileSystemRepresentationWithPath:"); +final _objc_msgSend_301 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_stringWithFileSystemRepresentation_length_ = + objc.registerName("stringWithFileSystemRepresentation:length:"); +final _objc_msgSend_302 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); -abstract class NSCalendarOptions { - static const int NSCalendarWrapComponents = 1; - static const int NSCalendarMatchStrictly = 2; - static const int NSCalendarSearchBackwards = 4; - static const int NSCalendarMatchPreviousTimePreservingSmallerUnits = 256; - static const int NSCalendarMatchNextTimePreservingSmallerUnits = 512; - static const int NSCalendarMatchNextTime = 1024; - static const int NSCalendarMatchFirst = 4096; - static const int NSCalendarMatchLast = 8192; +abstract class NSFileManagerItemReplacementOptions { + static const int NSFileManagerItemReplacementUsingNewMetadataOnly = 1; + static const int NSFileManagerItemReplacementWithoutDeletingBackupItem = 2; } -void _ObjCBlock_ffiVoid_NSDate_bool_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - bool arg1, - ffi.Pointer arg2) => +late final _sel_replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_ = + objc.registerName( + "replaceItemAtURL:withItemAtURL:backupItemName:options:resultingItemURL:error:"); +final _objc_msgSend_303 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer>)>(); +late final _sel_setUbiquitous_itemAtURL_destinationURL_error_ = + objc.registerName("setUbiquitous:itemAtURL:destinationURL:error:"); +final _objc_msgSend_304 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_isUbiquitousItemAtURL_ = + objc.registerName("isUbiquitousItemAtURL:"); +final _objc_msgSend_305 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_startDownloadingUbiquitousItemAtURL_error_ = + objc.registerName("startDownloadingUbiquitousItemAtURL:error:"); +late final _sel_evictUbiquitousItemAtURL_error_ = + objc.registerName("evictUbiquitousItemAtURL:error:"); +late final _sel_URLForUbiquityContainerIdentifier_ = + objc.registerName("URLForUbiquityContainerIdentifier:"); +final _objc_msgSend_306 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_URLForPublishingUbiquitousItemAtURL_expirationDate_error_ = objc + .registerName("URLForPublishingUbiquitousItemAtURL:expirationDate:error:"); +final _objc_msgSend_307 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); +late final _sel_ubiquityIdentityToken = + objc.registerName("ubiquityIdentityToken"); +void _ObjCBlock_ffiVoid_NSDictionary_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => block.ref.target .cast< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, - ffi.Pointer arg2)>>() + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() .asFunction< - void Function(ffi.Pointer, bool, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistry = , bool, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSDate_bool_bool_registerClosure( - void Function(ffi.Pointer, bool, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistry[id] = fn; + void Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +final _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistry = , ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSDictionary_NSError_registerClosure( + void Function(ffi.Pointer, ffi.Pointer) + fn) { + final id = ++_ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSDate_bool_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - bool arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); +void _ObjCBlock_ffiVoid_NSDictionary_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistry[ + block.ref.target.address]!(arg0, arg1); -class ObjCBlock_ffiVoid_NSDate_bool_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSDate_bool_bool._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, +class ObjCBlock_ffiVoid_NSDictionary_NSError extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSDictionary_NSError._(ffi.Pointer pointer, {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSDate_bool_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSDate_bool_bool._(pointer, lib, + static ObjCBlock_ffiVoid_NSDictionary_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSDictionary_NSError._(pointer, retain: retain, release: release); } @@ -58992,25 +13432,21 @@ class ObjCBlock_ffiVoid_NSDate_bool_bool extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSDate_bool_bool.fromFunctionPointer( - SwiftLibrary lib, + ObjCBlock_ffiVoid_NSDictionary_NSError.fromFunctionPointer( ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, - ffi.Pointer arg2)>> + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDate_bool_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDictionary_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -59018,23 +13454,19 @@ class ObjCBlock_ffiVoid_NSDate_bool_bool extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSDate_bool_bool.fromFunction( - SwiftLibrary lib, void Function(NSDate?, bool, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDate_bool_bool_closureTrampoline) + ObjCBlock_ffiVoid_NSDictionary_NSError.fromFunction( + void Function(objc.NSDictionary?, objc.NSError?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= + ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDictionary_NSError_closureTrampoline) .cast(), - _ObjCBlock_ffiVoid_NSDate_bool_bool_registerClosure( - (ffi.Pointer arg0, bool arg1, - ffi.Pointer arg2) => - fn(arg0.address == 0 ? null : NSDate._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); + _ObjCBlock_ffiVoid_NSDictionary_NSError_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : objc.NSDictionary.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : objc.NSError.castFromPointer(arg1, retain: true, release: true))))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -59046,1902 +13478,2608 @@ class ObjCBlock_ffiVoid_NSDate_bool_bool extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSDate_bool_bool.listener( - SwiftLibrary lib, void Function(NSDate?, bool, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSDate_bool_bool_closureTrampoline) + ObjCBlock_ffiVoid_NSDictionary_NSError.listener( + void Function(objc.NSDictionary?, objc.NSError?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= + ffi.NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSDictionary_NSError_closureTrampoline) ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSDate_bool_bool_registerClosure( - (ffi.Pointer arg0, bool arg1, - ffi.Pointer arg2) => - fn(arg0.address == 0 ? null : NSDate._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSDictionary_NSError_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : objc.NSDictionary.castFromPointer(arg0, + retain: true, release: true), + arg1.address == 0 ? null : objc.NSError.castFromPointer(arg1, retain: true, release: true))))); static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Bool, ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSDate? arg0, bool arg1, ffi.Pointer arg2) => - _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Bool arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer, bool, ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1, arg2); -} + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; -class NSNumberFormatter extends NSFormatter { - NSNumberFormatter._(ffi.Pointer id, SwiftLibrary lib, + void call(objc.NSDictionary? arg0, objc.NSError? arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1?.pointer ?? ffi.nullptr); +} + +late final _sel_getFileProviderServicesForItemAtURL_completionHandler_ = + objc.registerName("getFileProviderServicesForItemAtURL:completionHandler:"); +final _objc_msgSend_308 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_containerURLForSecurityApplicationGroupIdentifier_ = + objc.registerName("containerURLForSecurityApplicationGroupIdentifier:"); +late final _sel_homeDirectoryForCurrentUser = + objc.registerName("homeDirectoryForCurrentUser"); +late final _sel_temporaryDirectory = objc.registerName("temporaryDirectory"); +late final _sel_homeDirectoryForUser_ = + objc.registerName("homeDirectoryForUser:"); + +class NSHTTPCookieStorage extends objc.NSObject { + NSHTTPCookieStorage._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSNumberFormatter] that points to the same underlying object as [other]. - static NSNumberFormatter castFrom(T other) { - return NSNumberFormatter._(other._id, other._lib, - retain: true, release: true); - } - - /// Returns a [NSNumberFormatter] that wraps the given raw object pointer. - static NSNumberFormatter castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSNumberFormatter._(other, lib, retain: retain, release: release); - } + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns whether [obj] is an instance of [NSNumberFormatter]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSNumberFormatter1); - } + /// Constructs a [NSHTTPCookieStorage] that points to the same underlying object as [other]. + NSHTTPCookieStorage.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - int get formattingContext { - return _lib._objc_msgSend_752(_id, _lib._sel_formattingContext1); - } + /// Constructs a [NSHTTPCookieStorage] that wraps the given raw object pointer. + NSHTTPCookieStorage.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - set formattingContext(int value) { - return _lib._objc_msgSend_753(_id, _lib._sel_setFormattingContext_1, value); + /// Returns whether [obj] is an instance of [NSHTTPCookieStorage]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSHTTPCookieStorage); } - bool getObjectValue_forString_range_error_( - ffi.Pointer> obj, - NSString string, - ffi.Pointer<_NSRange> rangep, - ffi.Pointer> error) { - return _lib._objc_msgSend_754( - _id, - _lib._sel_getObjectValue_forString_range_error_1, - obj, - string._id, - rangep, - error); + static NSHTTPCookieStorage getSharedHTTPCookieStorage() { + final _ret = _objc_msgSend_309( + _class_NSHTTPCookieStorage, _sel_sharedHTTPCookieStorage); + return NSHTTPCookieStorage.castFromPointer(_ret, + retain: true, release: true); } - NSString? stringFromNumber_(NSNumber number) { - final _ret = - _lib._objc_msgSend_802(_id, _lib._sel_stringFromNumber_1, number._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSHTTPCookieStorage sharedCookieStorageForGroupContainerIdentifier_( + objc.NSString identifier) { + final _ret = _objc_msgSend_310( + _class_NSHTTPCookieStorage, + _sel_sharedCookieStorageForGroupContainerIdentifier_, + identifier.pointer); + return NSHTTPCookieStorage.castFromPointer(_ret, + retain: true, release: true); } - NSNumber? numberFromString_(NSString string) { - final _ret = - _lib._objc_msgSend_803(_id, _lib._sel_numberFromString_1, string._id); + objc.NSArray? get cookies { + final _ret = _objc_msgSend_69(this.pointer, _sel_cookies); return _ret.address == 0 ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - static NSString localizedStringFromNumber_numberStyle_( - SwiftLibrary _lib, NSNumber num, int nstyle) { - final _ret = _lib._objc_msgSend_804(_lib._class_NSNumberFormatter1, - _lib._sel_localizedStringFromNumber_numberStyle_1, num._id, nstyle); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static int defaultFormatterBehavior(SwiftLibrary _lib) { - return _lib._objc_msgSend_805( - _lib._class_NSNumberFormatter1, _lib._sel_defaultFormatterBehavior1); - } - - static void setDefaultFormatterBehavior_(SwiftLibrary _lib, int behavior) { - _lib._objc_msgSend_806(_lib._class_NSNumberFormatter1, - _lib._sel_setDefaultFormatterBehavior_1, behavior); - } - - int get numberStyle { - return _lib._objc_msgSend_807(_id, _lib._sel_numberStyle1); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set numberStyle(int value) { - return _lib._objc_msgSend_808(_id, _lib._sel_setNumberStyle_1, value); - } - - NSLocale get locale { - final _ret = _lib._objc_msgSend_197(_id, _lib._sel_locale1); - return NSLocale._(_ret, _lib, retain: true, release: true); - } - - set locale(NSLocale value) { - return _lib._objc_msgSend_762(_id, _lib._sel_setLocale_1, value._id); - } - - bool get generatesDecimalNumbers { - return _lib._objc_msgSend_12(_id, _lib._sel_generatesDecimalNumbers1); - } - - set generatesDecimalNumbers(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setGeneratesDecimalNumbers_1, value); - } - - int get formatterBehavior { - return _lib._objc_msgSend_805(_id, _lib._sel_formatterBehavior1); - } - - set formatterBehavior(int value) { - return _lib._objc_msgSend_809(_id, _lib._sel_setFormatterBehavior_1, value); + void setCookie_(NSHTTPCookie cookie) { + _objc_msgSend_315(this.pointer, _sel_setCookie_, cookie.pointer); } - NSString get negativeFormat { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_negativeFormat1); - return NSString._(_ret, _lib, retain: true, release: true); + void deleteCookie_(NSHTTPCookie cookie) { + _objc_msgSend_315(this.pointer, _sel_deleteCookie_, cookie.pointer); } - set negativeFormat(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setNegativeFormat_1, value._id); + void removeCookiesSinceDate_(objc.NSDate date) { + _objc_msgSend_246(this.pointer, _sel_removeCookiesSinceDate_, date.pointer); } - NSDictionary? get textAttributesForNegativeValues { + objc.NSArray? cookiesForURL_(objc.NSURL URL) { final _ret = - _lib._objc_msgSend_390(_id, _lib._sel_textAttributesForNegativeValues1); + _objc_msgSend_316(this.pointer, _sel_cookiesForURL_, URL.pointer); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - set textAttributesForNegativeValues(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, - _lib._sel_setTextAttributesForNegativeValues_1, - value?._id ?? ffi.nullptr); - } - - NSString get positiveFormat { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_positiveFormat1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - set positiveFormat(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setPositiveFormat_1, value._id); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSDictionary? get textAttributesForPositiveValues { - final _ret = - _lib._objc_msgSend_390(_id, _lib._sel_textAttributesForPositiveValues1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + void setCookies_forURL_mainDocumentURL_( + objc.NSArray cookies, objc.NSURL? URL, objc.NSURL? mainDocumentURL) { + _objc_msgSend_317( + this.pointer, + _sel_setCookies_forURL_mainDocumentURL_, + cookies.pointer, + URL?.pointer ?? ffi.nullptr, + mainDocumentURL?.pointer ?? ffi.nullptr); } - set textAttributesForPositiveValues(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, - _lib._sel_setTextAttributesForPositiveValues_1, - value?._id ?? ffi.nullptr); + int get cookieAcceptPolicy { + return _objc_msgSend_318(this.pointer, _sel_cookieAcceptPolicy); } - bool get allowsFloats { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsFloats1); + set cookieAcceptPolicy(int value) { + return _objc_msgSend_319(this.pointer, _sel_setCookieAcceptPolicy_, value); } - set allowsFloats(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setAllowsFloats_1, value); + objc.NSArray sortedCookiesUsingDescriptors_(objc.NSArray sortOrder) { + final _ret = _objc_msgSend_67( + this.pointer, _sel_sortedCookiesUsingDescriptors_, sortOrder.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString get decimalSeparator { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_decimalSeparator1); - return NSString._(_ret, _lib, retain: true, release: true); + void storeCookies_forTask_(objc.NSArray cookies, NSURLSessionTask task) { + _objc_msgSend_353(this.pointer, _sel_storeCookies_forTask_, cookies.pointer, + task.pointer); } - set decimalSeparator(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setDecimalSeparator_1, value._id); + void getCookiesForTask_completionHandler_( + NSURLSessionTask task, ObjCBlock_ffiVoid_NSArray completionHandler) { + _objc_msgSend_354(this.pointer, _sel_getCookiesForTask_completionHandler_, + task.pointer, completionHandler.pointer); } - bool get alwaysShowsDecimalSeparator { - return _lib._objc_msgSend_12(_id, _lib._sel_alwaysShowsDecimalSeparator1); + @override + NSHTTPCookieStorage init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSHTTPCookieStorage.castFromPointer(_ret, + retain: true, release: true); } - set alwaysShowsDecimalSeparator(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAlwaysShowsDecimalSeparator_1, value); + static NSHTTPCookieStorage new1() { + final _ret = _objc_msgSend_40(_class_NSHTTPCookieStorage, _sel_new); + return NSHTTPCookieStorage.castFromPointer(_ret, + retain: false, release: true); } - NSString get currencyDecimalSeparator { + static NSHTTPCookieStorage allocWithZone_(ffi.Pointer<_NSZone> zone) { final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_currencyDecimalSeparator1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - set currencyDecimalSeparator(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setCurrencyDecimalSeparator_1, value._id); - } - - bool get usesGroupingSeparator { - return _lib._objc_msgSend_12(_id, _lib._sel_usesGroupingSeparator1); - } - - set usesGroupingSeparator(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setUsesGroupingSeparator_1, value); - } - - NSString get groupingSeparator { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_groupingSeparator1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - set groupingSeparator(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setGroupingSeparator_1, value._id); - } - - NSString? get zeroSymbol { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_zeroSymbol1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - set zeroSymbol(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setZeroSymbol_1, value?._id ?? ffi.nullptr); - } - - NSDictionary? get textAttributesForZero { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_textAttributesForZero1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + _objc_msgSend_47(_class_NSHTTPCookieStorage, _sel_allocWithZone_, zone); + return NSHTTPCookieStorage.castFromPointer(_ret, + retain: false, release: true); } - set textAttributesForZero(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, _lib._sel_setTextAttributesForZero_1, value?._id ?? ffi.nullptr); + static NSHTTPCookieStorage alloc() { + final _ret = _objc_msgSend_40(_class_NSHTTPCookieStorage, _sel_alloc); + return NSHTTPCookieStorage.castFromPointer(_ret, + retain: false, release: true); } - NSString get nilSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_nilSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSHTTPCookieStorage, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - set nilSymbol(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setNilSymbol_1, value._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSHTTPCookieStorage, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSDictionary? get textAttributesForNil { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_textAttributesForNil1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSHTTPCookieStorage, _sel_accessInstanceVariablesDirectly); } - set textAttributesForNil(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, _lib._sel_setTextAttributesForNil_1, value?._id ?? ffi.nullptr); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSHTTPCookieStorage, _sel_useStoredAccessor); } - NSString get notANumberSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_notANumberSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSHTTPCookieStorage, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - set notANumberSymbol(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setNotANumberSymbol_1, value._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSHTTPCookieStorage, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSDictionary? get textAttributesForNotANumber { - final _ret = - _lib._objc_msgSend_390(_id, _lib._sel_textAttributesForNotANumber1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSHTTPCookieStorage, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSHTTPCookieStorage, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSHTTPCookieStorage, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSHTTPCookieStorage = objc.getClass("NSHTTPCookieStorage"); +late final _sel_sharedHTTPCookieStorage = + objc.registerName("sharedHTTPCookieStorage"); +final _objc_msgSend_309 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_sharedCookieStorageForGroupContainerIdentifier_ = + objc.registerName("sharedCookieStorageForGroupContainerIdentifier:"); +final _objc_msgSend_310 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_cookies = objc.registerName("cookies"); + +class NSHTTPCookie extends objc.NSObject { + NSHTTPCookie._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - set textAttributesForNotANumber(NSDictionary? value) { - return _lib._objc_msgSend_634(_id, - _lib._sel_setTextAttributesForNotANumber_1, value?._id ?? ffi.nullptr); - } + /// Constructs a [NSHTTPCookie] that points to the same underlying object as [other]. + NSHTTPCookie.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSString get positiveInfinitySymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_positiveInfinitySymbol1); - return NSString._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSHTTPCookie] that wraps the given raw object pointer. + NSHTTPCookie.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - set positiveInfinitySymbol(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setPositiveInfinitySymbol_1, value._id); + /// Returns whether [obj] is an instance of [NSHTTPCookie]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSHTTPCookie); } - NSDictionary? get textAttributesForPositiveInfinity { - final _ret = _lib._objc_msgSend_390( - _id, _lib._sel_textAttributesForPositiveInfinity1); + NSHTTPCookie? initWithProperties_(objc.NSDictionary properties) { + final _ret = _objc_msgSend_311( + this.pointer, _sel_initWithProperties_, properties.pointer); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + : NSHTTPCookie.castFromPointer(_ret, retain: true, release: true); } - set textAttributesForPositiveInfinity(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, - _lib._sel_setTextAttributesForPositiveInfinity_1, - value?._id ?? ffi.nullptr); + static NSHTTPCookie? cookieWithProperties_(objc.NSDictionary properties) { + final _ret = _objc_msgSend_312( + _class_NSHTTPCookie, _sel_cookieWithProperties_, properties.pointer); + return _ret.address == 0 + ? null + : NSHTTPCookie.castFromPointer(_ret, retain: true, release: true); } - NSString get negativeInfinitySymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_negativeInfinitySymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + static objc.NSDictionary requestHeaderFieldsWithCookies_( + objc.NSArray cookies) { + final _ret = _objc_msgSend_313(_class_NSHTTPCookie, + _sel_requestHeaderFieldsWithCookies_, cookies.pointer); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - set negativeInfinitySymbol(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setNegativeInfinitySymbol_1, value._id); + static objc.NSArray cookiesWithResponseHeaderFields_forURL_( + objc.NSDictionary headerFields, objc.NSURL URL) { + final _ret = _objc_msgSend_314( + _class_NSHTTPCookie, + _sel_cookiesWithResponseHeaderFields_forURL_, + headerFields.pointer, + URL.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSDictionary? get textAttributesForNegativeInfinity { - final _ret = _lib._objc_msgSend_390( - _id, _lib._sel_textAttributesForNegativeInfinity1); + objc.NSDictionary? get properties { + final _ret = _objc_msgSend_65(this.pointer, _sel_properties); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - set textAttributesForNegativeInfinity(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, - _lib._sel_setTextAttributesForNegativeInfinity_1, - value?._id ?? ffi.nullptr); + int get version { + return _objc_msgSend_29(this.pointer, _sel_version); } - NSString get positivePrefix { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_positivePrefix1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSString get name { + final _ret = _objc_msgSend_12(this.pointer, _sel_name); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set positivePrefix(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setPositivePrefix_1, value._id); + objc.NSString get value { + final _ret = _objc_msgSend_12(this.pointer, _sel_value); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString get positiveSuffix { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_positiveSuffix1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSDate? get expiresDate { + final _ret = _objc_msgSend_116(this.pointer, _sel_expiresDate); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - set positiveSuffix(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setPositiveSuffix_1, value._id); + bool get sessionOnly { + return _objc_msgSend_7(this.pointer, _sel_isSessionOnly); } - NSString get negativePrefix { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_negativePrefix1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSString get domain { + final _ret = _objc_msgSend_12(this.pointer, _sel_domain); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set negativePrefix(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setNegativePrefix_1, value._id); + objc.NSString get path { + final _ret = _objc_msgSend_12(this.pointer, _sel_path); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString get negativeSuffix { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_negativeSuffix1); - return NSString._(_ret, _lib, retain: true, release: true); + bool get secure { + return _objc_msgSend_7(this.pointer, _sel_isSecure); } - set negativeSuffix(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setNegativeSuffix_1, value._id); + bool get HTTPOnly { + return _objc_msgSend_7(this.pointer, _sel_isHTTPOnly); } - NSString get currencyCode { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_currencyCode1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSString? get comment { + final _ret = _objc_msgSend_13(this.pointer, _sel_comment); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set currencyCode(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setCurrencyCode_1, value._id); + objc.NSURL? get commentURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_commentURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - NSString get currencySymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_currencySymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray? get portList { + final _ret = _objc_msgSend_69(this.pointer, _sel_portList); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set currencySymbol(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setCurrencySymbol_1, value._id); + objc.NSString? get sameSitePolicy { + final _ret = _objc_msgSend_13(this.pointer, _sel_sameSitePolicy); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString get internationalCurrencySymbol { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_internationalCurrencySymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + @override + NSHTTPCookie init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSHTTPCookie.castFromPointer(_ret, retain: true, release: true); } - set internationalCurrencySymbol(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setInternationalCurrencySymbol_1, value._id); + static NSHTTPCookie new1() { + final _ret = _objc_msgSend_40(_class_NSHTTPCookie, _sel_new); + return NSHTTPCookie.castFromPointer(_ret, retain: false, release: true); } - NSString get percentSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_percentSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSHTTPCookie allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSHTTPCookie, _sel_allocWithZone_, zone); + return NSHTTPCookie.castFromPointer(_ret, retain: false, release: true); } - set percentSymbol(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setPercentSymbol_1, value._id); + static NSHTTPCookie alloc() { + final _ret = _objc_msgSend_40(_class_NSHTTPCookie, _sel_alloc); + return NSHTTPCookie.castFromPointer(_ret, retain: false, release: true); } - NSString get perMillSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_perMillSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSHTTPCookie, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - set perMillSymbol(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setPerMillSymbol_1, value._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSHTTPCookie, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSString get minusSign { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_minusSign1); - return NSString._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSHTTPCookie, _sel_accessInstanceVariablesDirectly); } - set minusSign(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setMinusSign_1, value._id); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSHTTPCookie, _sel_useStoredAccessor); } - NSString get plusSign { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_plusSign1); - return NSString._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSHTTPCookie, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - set plusSign(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setPlusSign_1, value._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSHTTPCookie, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSString get exponentSymbol { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_exponentSymbol1); - return NSString._(_ret, _lib, retain: true, release: true); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSHTTPCookie, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSHTTPCookie, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSHTTPCookie, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSHTTPCookie = objc.getClass("NSHTTPCookie"); +late final _sel_initWithProperties_ = objc.registerName("initWithProperties:"); +final _objc_msgSend_311 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_cookieWithProperties_ = + objc.registerName("cookieWithProperties:"); +final _objc_msgSend_312 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_requestHeaderFieldsWithCookies_ = + objc.registerName("requestHeaderFieldsWithCookies:"); +final _objc_msgSend_313 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_cookiesWithResponseHeaderFields_forURL_ = + objc.registerName("cookiesWithResponseHeaderFields:forURL:"); +final _objc_msgSend_314 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_properties = objc.registerName("properties"); +late final _sel_version = objc.registerName("version"); +late final _sel_value = objc.registerName("value"); +late final _sel_expiresDate = objc.registerName("expiresDate"); +late final _sel_isSessionOnly = objc.registerName("isSessionOnly"); +late final _sel_domain = objc.registerName("domain"); +late final _sel_path = objc.registerName("path"); +late final _sel_isSecure = objc.registerName("isSecure"); +late final _sel_isHTTPOnly = objc.registerName("isHTTPOnly"); +late final _sel_comment = objc.registerName("comment"); +late final _sel_commentURL = objc.registerName("commentURL"); +late final _sel_portList = objc.registerName("portList"); +late final _sel_sameSitePolicy = objc.registerName("sameSitePolicy"); +late final _sel_setCookie_ = objc.registerName("setCookie:"); +final _objc_msgSend_315 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_deleteCookie_ = objc.registerName("deleteCookie:"); +late final _sel_removeCookiesSinceDate_ = + objc.registerName("removeCookiesSinceDate:"); +late final _sel_cookiesForURL_ = objc.registerName("cookiesForURL:"); +final _objc_msgSend_316 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCookies_forURL_mainDocumentURL_ = + objc.registerName("setCookies:forURL:mainDocumentURL:"); +final _objc_msgSend_317 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - set exponentSymbol(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setExponentSymbol_1, value._id); - } +abstract class NSHTTPCookieAcceptPolicy { + static const int NSHTTPCookieAcceptPolicyAlways = 0; + static const int NSHTTPCookieAcceptPolicyNever = 1; + static const int NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain = 2; +} - int get groupingSize { - return _lib._objc_msgSend_10(_id, _lib._sel_groupingSize1); - } +late final _sel_cookieAcceptPolicy = objc.registerName("cookieAcceptPolicy"); +final _objc_msgSend_318 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCookieAcceptPolicy_ = + objc.registerName("setCookieAcceptPolicy:"); +final _objc_msgSend_319 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_sortedCookiesUsingDescriptors_ = + objc.registerName("sortedCookiesUsingDescriptors:"); + +class NSURLSessionTask extends objc.NSObject { + NSURLSessionTask._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - set groupingSize(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setGroupingSize_1, value); - } + /// Constructs a [NSURLSessionTask] that points to the same underlying object as [other]. + NSURLSessionTask.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - int get secondaryGroupingSize { - return _lib._objc_msgSend_10(_id, _lib._sel_secondaryGroupingSize1); + /// Constructs a [NSURLSessionTask] that wraps the given raw object pointer. + NSURLSessionTask.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLSessionTask]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionTask); } - set secondaryGroupingSize(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setSecondaryGroupingSize_1, value); + int get taskIdentifier { + return _objc_msgSend_29(this.pointer, _sel_taskIdentifier); } - NSNumber? get multiplier { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_multiplier1); + NSURLRequest? get originalRequest { + final _ret = _objc_msgSend_343(this.pointer, _sel_originalRequest); return _ret.address == 0 ? null - : NSNumber._(_ret, _lib, retain: true, release: true); + : NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - set multiplier(NSNumber? value) { - return _lib._objc_msgSend_670( - _id, _lib._sel_setMultiplier_1, value?._id ?? ffi.nullptr); + NSURLRequest? get currentRequest { + final _ret = _objc_msgSend_343(this.pointer, _sel_currentRequest); + return _ret.address == 0 + ? null + : NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - int get formatWidth { - return _lib._objc_msgSend_10(_id, _lib._sel_formatWidth1); + NSURLResponse? get response { + final _ret = _objc_msgSend_346(this.pointer, _sel_response); + return _ret.address == 0 + ? null + : NSURLResponse.castFromPointer(_ret, retain: true, release: true); } - set formatWidth(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setFormatWidth_1, value); + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSString get paddingCharacter { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_paddingCharacter1); - return NSString._(_ret, _lib, retain: true, release: true); + set delegate(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDelegate_, value?.pointer ?? ffi.nullptr); } - set paddingCharacter(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setPaddingCharacter_1, value._id); + objc.NSProgress get progress { + final _ret = _objc_msgSend_347(this.pointer, _sel_progress); + return objc.NSProgress.castFromPointer(_ret, retain: true, release: true); } - int get paddingPosition { - return _lib._objc_msgSend_810(_id, _lib._sel_paddingPosition1); + objc.NSDate? get earliestBeginDate { + final _ret = _objc_msgSend_116(this.pointer, _sel_earliestBeginDate); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - set paddingPosition(int value) { - return _lib._objc_msgSend_811(_id, _lib._sel_setPaddingPosition_1, value); + set earliestBeginDate(objc.NSDate? value) { + return _objc_msgSend_162(this.pointer, _sel_setEarliestBeginDate_, + value?.pointer ?? ffi.nullptr); } - int get roundingMode { - return _lib._objc_msgSend_812(_id, _lib._sel_roundingMode1); + int get countOfBytesClientExpectsToSend { + return _objc_msgSend_348( + this.pointer, _sel_countOfBytesClientExpectsToSend); } - set roundingMode(int value) { - return _lib._objc_msgSend_813(_id, _lib._sel_setRoundingMode_1, value); + set countOfBytesClientExpectsToSend(int value) { + return _objc_msgSend_349( + this.pointer, _sel_setCountOfBytesClientExpectsToSend_, value); } - NSNumber get roundingIncrement { - final _ret = _lib._objc_msgSend_814(_id, _lib._sel_roundingIncrement1); - return NSNumber._(_ret, _lib, retain: true, release: true); + int get countOfBytesClientExpectsToReceive { + return _objc_msgSend_348( + this.pointer, _sel_countOfBytesClientExpectsToReceive); } - set roundingIncrement(NSNumber value) { - return _lib._objc_msgSend_815( - _id, _lib._sel_setRoundingIncrement_1, value._id); + set countOfBytesClientExpectsToReceive(int value) { + return _objc_msgSend_349( + this.pointer, _sel_setCountOfBytesClientExpectsToReceive_, value); } - int get minimumIntegerDigits { - return _lib._objc_msgSend_10(_id, _lib._sel_minimumIntegerDigits1); + int get countOfBytesSent { + return _objc_msgSend_348(this.pointer, _sel_countOfBytesSent); } - set minimumIntegerDigits(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setMinimumIntegerDigits_1, value); + int get countOfBytesReceived { + return _objc_msgSend_348(this.pointer, _sel_countOfBytesReceived); } - int get maximumIntegerDigits { - return _lib._objc_msgSend_10(_id, _lib._sel_maximumIntegerDigits1); + int get countOfBytesExpectedToSend { + return _objc_msgSend_348(this.pointer, _sel_countOfBytesExpectedToSend); } - set maximumIntegerDigits(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setMaximumIntegerDigits_1, value); + int get countOfBytesExpectedToReceive { + return _objc_msgSend_348(this.pointer, _sel_countOfBytesExpectedToReceive); } - int get minimumFractionDigits { - return _lib._objc_msgSend_10(_id, _lib._sel_minimumFractionDigits1); + objc.NSString? get taskDescription { + final _ret = _objc_msgSend_13(this.pointer, _sel_taskDescription); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set minimumFractionDigits(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setMinimumFractionDigits_1, value); + set taskDescription(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setTaskDescription_, value?.pointer ?? ffi.nullptr); } - int get maximumFractionDigits { - return _lib._objc_msgSend_10(_id, _lib._sel_maximumFractionDigits1); + void cancel() { + _objc_msgSend_82(this.pointer, _sel_cancel); } - set maximumFractionDigits(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setMaximumFractionDigits_1, value); + int get state { + return _objc_msgSend_350(this.pointer, _sel_state); } - NSNumber? get minimum { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_minimum1); + objc.NSError? get error { + final _ret = _objc_msgSend_328(this.pointer, _sel_error); return _ret.address == 0 ? null - : NSNumber._(_ret, _lib, retain: true, release: true); + : objc.NSError.castFromPointer(_ret, retain: true, release: true); } - set minimum(NSNumber? value) { - return _lib._objc_msgSend_670( - _id, _lib._sel_setMinimum_1, value?._id ?? ffi.nullptr); + void suspend() { + _objc_msgSend_82(this.pointer, _sel_suspend); } - NSNumber? get maximum { - final _ret = _lib._objc_msgSend_215(_id, _lib._sel_maximum1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); + void resume() { + _objc_msgSend_82(this.pointer, _sel_resume); } - set maximum(NSNumber? value) { - return _lib._objc_msgSend_670( - _id, _lib._sel_setMaximum_1, value?._id ?? ffi.nullptr); + double get priority { + return objc.useMsgSendVariants + ? _objc_msgSend_351Fpret(this.pointer, _sel_priority) + : _objc_msgSend_351(this.pointer, _sel_priority); } - NSString get currencyGroupingSeparator { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_currencyGroupingSeparator1); - return NSString._(_ret, _lib, retain: true, release: true); + set priority(double value) { + return _objc_msgSend_352(this.pointer, _sel_setPriority_, value); } - set currencyGroupingSeparator(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setCurrencyGroupingSeparator_1, value._id); + bool get prefersIncrementalDelivery { + return _objc_msgSend_7(this.pointer, _sel_prefersIncrementalDelivery); } - bool get lenient { - return _lib._objc_msgSend_12(_id, _lib._sel_isLenient1); + set prefersIncrementalDelivery(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setPrefersIncrementalDelivery_, value); } - set lenient(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setLenient_1, value); + @override + NSURLSessionTask init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionTask.castFromPointer(_ret, retain: true, release: true); } - bool get usesSignificantDigits { - return _lib._objc_msgSend_12(_id, _lib._sel_usesSignificantDigits1); + static NSURLSessionTask new1() { + final _ret = _objc_msgSend_40(_class_NSURLSessionTask, _sel_new); + return NSURLSessionTask.castFromPointer(_ret, retain: false, release: true); } - set usesSignificantDigits(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setUsesSignificantDigits_1, value); + static NSURLSessionTask allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSURLSessionTask, _sel_allocWithZone_, zone); + return NSURLSessionTask.castFromPointer(_ret, retain: false, release: true); } - int get minimumSignificantDigits { - return _lib._objc_msgSend_10(_id, _lib._sel_minimumSignificantDigits1); + static NSURLSessionTask alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSessionTask, _sel_alloc); + return NSURLSessionTask.castFromPointer(_ret, retain: false, release: true); } - set minimumSignificantDigits(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setMinimumSignificantDigits_1, value); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionTask, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - int get maximumSignificantDigits { - return _lib._objc_msgSend_10(_id, _lib._sel_maximumSignificantDigits1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionTask, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - set maximumSignificantDigits(int value) { - return _lib._objc_msgSend_516( - _id, _lib._sel_setMaximumSignificantDigits_1, value); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSessionTask, _sel_accessInstanceVariablesDirectly); } - bool get partialStringValidationEnabled { - return _lib._objc_msgSend_12( - _id, _lib._sel_isPartialStringValidationEnabled1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLSessionTask, _sel_useStoredAccessor); } - set partialStringValidationEnabled(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setPartialStringValidationEnabled_1, value); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionTask, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - bool get hasThousandSeparators { - return _lib._objc_msgSend_12(_id, _lib._sel_hasThousandSeparators1); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionTask, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - set hasThousandSeparators(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setHasThousandSeparators_1, value); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionTask, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - NSString get thousandSeparator { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_thousandSeparator1); - return NSString._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSessionTask, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set thousandSeparator(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setThousandSeparator_1, value._id); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSURLSessionTask, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - bool get localizesFormat { - return _lib._objc_msgSend_12(_id, _lib._sel_localizesFormat1); - } +late final _class_NSURLSessionTask = objc.getClass("NSURLSessionTask"); +late final _sel_taskIdentifier = objc.registerName("taskIdentifier"); - set localizesFormat(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setLocalizesFormat_1, value); - } +class NSURLRequest extends objc.NSObject { + NSURLRequest._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSString get format { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_format1); - return NSString._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSURLRequest] that points to the same underlying object as [other]. + NSURLRequest.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - set format(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setFormat_1, value._id); - } + /// Constructs a [NSURLRequest] that wraps the given raw object pointer. + NSURLRequest.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSAttributedString get attributedStringForZero { - final _ret = - _lib._objc_msgSend_735(_id, _lib._sel_attributedStringForZero1); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSURLRequest]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLRequest); } - set attributedStringForZero(NSAttributedString value) { - return _lib._objc_msgSend_816( - _id, _lib._sel_setAttributedStringForZero_1, value._id); + static NSURLRequest requestWithURL_(objc.NSURL URL) { + final _ret = _objc_msgSend_320( + _class_NSURLRequest, _sel_requestWithURL_, URL.pointer); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - NSAttributedString get attributedStringForNil { - final _ret = _lib._objc_msgSend_735(_id, _lib._sel_attributedStringForNil1); - return NSAttributedString._(_ret, _lib, retain: true, release: true); + static bool getSupportsSecureCoding() { + return _objc_msgSend_7(_class_NSURLRequest, _sel_supportsSecureCoding); } - set attributedStringForNil(NSAttributedString value) { - return _lib._objc_msgSend_816( - _id, _lib._sel_setAttributedStringForNil_1, value._id); + static NSURLRequest requestWithURL_cachePolicy_timeoutInterval_( + objc.NSURL URL, int cachePolicy, double timeoutInterval) { + final _ret = _objc_msgSend_321( + _class_NSURLRequest, + _sel_requestWithURL_cachePolicy_timeoutInterval_, + URL.pointer, + cachePolicy, + timeoutInterval); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - NSAttributedString get attributedStringForNotANumber { + NSURLRequest initWithURL_(objc.NSURL URL) { final _ret = - _lib._objc_msgSend_735(_id, _lib._sel_attributedStringForNotANumber1); - return NSAttributedString._(_ret, _lib, retain: true, release: true); - } - - set attributedStringForNotANumber(NSAttributedString value) { - return _lib._objc_msgSend_816( - _id, _lib._sel_setAttributedStringForNotANumber_1, value._id); - } - - NSDecimalNumberHandler get roundingBehavior { - final _ret = _lib._objc_msgSend_817(_id, _lib._sel_roundingBehavior1); - return NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); - } - - set roundingBehavior(NSDecimalNumberHandler value) { - return _lib._objc_msgSend_819( - _id, _lib._sel_setRoundingBehavior_1, value._id); + _objc_msgSend_320(this.pointer, _sel_initWithURL_, URL.pointer); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - @override - NSNumberFormatter init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSNumberFormatter._(_ret, _lib, retain: true, release: true); + NSURLRequest initWithURL_cachePolicy_timeoutInterval_( + objc.NSURL URL, int cachePolicy, double timeoutInterval) { + final _ret = _objc_msgSend_321( + this.pointer, + _sel_initWithURL_cachePolicy_timeoutInterval_, + URL.pointer, + cachePolicy, + timeoutInterval); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - static NSNumberFormatter new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSNumberFormatter1, _lib._sel_new1); - return NSNumberFormatter._(_ret, _lib, retain: false, release: true); + objc.NSURL? get URL { + final _ret = _objc_msgSend_10(this.pointer, _sel_URL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static NSNumberFormatter allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSNumberFormatter1, _lib._sel_allocWithZone_1, zone); - return NSNumberFormatter._(_ret, _lib, retain: false, release: true); + int get cachePolicy { + return _objc_msgSend_322(this.pointer, _sel_cachePolicy); } - static NSNumberFormatter alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSNumberFormatter1, _lib._sel_alloc1); - return NSNumberFormatter._(_ret, _lib, retain: false, release: true); + double get timeoutInterval { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_timeoutInterval) + : _objc_msgSend_115(this.pointer, _sel_timeoutInterval); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSNumberFormatter1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + objc.NSURL? get mainDocumentURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_mainDocumentURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSNumberFormatter1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + int get networkServiceType { + return _objc_msgSend_323(this.pointer, _sel_networkServiceType); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSNumberFormatter1, - _lib._sel_accessInstanceVariablesDirectly1); + bool get allowsCellularAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsCellularAccess); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSNumberFormatter1, _lib._sel_useStoredAccessor1); + bool get allowsExpensiveNetworkAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsExpensiveNetworkAccess); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSNumberFormatter1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + bool get allowsConstrainedNetworkAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsConstrainedNetworkAccess); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSNumberFormatter1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + bool get assumesHTTP3Capable { + return _objc_msgSend_7(this.pointer, _sel_assumesHTTP3Capable); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSNumberFormatter1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + int get attribution { + return _objc_msgSend_324(this.pointer, _sel_attribution); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSNumberFormatter1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool get requiresDNSSECValidation { + return _objc_msgSend_7(this.pointer, _sel_requiresDNSSECValidation); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSNumberFormatter1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSString? get HTTPMethod { + final _ret = _objc_msgSend_13(this.pointer, _sel_HTTPMethod); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } -} - -abstract class NSNumberFormatterStyle { - static const int NSNumberFormatterNoStyle = 0; - static const int NSNumberFormatterDecimalStyle = 1; - static const int NSNumberFormatterCurrencyStyle = 2; - static const int NSNumberFormatterPercentStyle = 3; - static const int NSNumberFormatterScientificStyle = 4; - static const int NSNumberFormatterSpellOutStyle = 5; - static const int NSNumberFormatterOrdinalStyle = 6; - static const int NSNumberFormatterCurrencyISOCodeStyle = 8; - static const int NSNumberFormatterCurrencyPluralStyle = 9; - static const int NSNumberFormatterCurrencyAccountingStyle = 10; -} - -abstract class NSNumberFormatterBehavior { - static const int NSNumberFormatterBehaviorDefault = 0; - static const int NSNumberFormatterBehavior10_0 = 1000; - static const int NSNumberFormatterBehavior10_4 = 1040; -} - -abstract class NSNumberFormatterPadPosition { - static const int NSNumberFormatterPadBeforePrefix = 0; - static const int NSNumberFormatterPadAfterPrefix = 1; - static const int NSNumberFormatterPadBeforeSuffix = 2; - static const int NSNumberFormatterPadAfterSuffix = 3; -} - -abstract class NSNumberFormatterRoundingMode { - static const int NSNumberFormatterRoundCeiling = 0; - static const int NSNumberFormatterRoundFloor = 1; - static const int NSNumberFormatterRoundDown = 2; - static const int NSNumberFormatterRoundUp = 3; - static const int NSNumberFormatterRoundHalfEven = 4; - static const int NSNumberFormatterRoundHalfDown = 5; - static const int NSNumberFormatterRoundHalfUp = 6; -} - -class NSDecimalNumberHandler extends NSObject { - NSDecimalNumberHandler._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSDecimalNumberHandler] that points to the same underlying object as [other]. - static NSDecimalNumberHandler castFrom(T other) { - return NSDecimalNumberHandler._(other._id, other._lib, - retain: true, release: true); + objc.NSDictionary? get allHTTPHeaderFields { + final _ret = _objc_msgSend_65(this.pointer, _sel_allHTTPHeaderFields); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSDecimalNumberHandler] that wraps the given raw object pointer. - static NSDecimalNumberHandler castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSDecimalNumberHandler._(other, lib, - retain: retain, release: release); + objc.NSString? valueForHTTPHeaderField_(objc.NSString field) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_valueForHTTPHeaderField_, field.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSDecimalNumberHandler]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSDecimalNumberHandler1); + objc.NSData? get HTTPBody { + final _ret = _objc_msgSend_325(this.pointer, _sel_HTTPBody); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - static NSDecimalNumberHandler getDefaultDecimalNumberHandler( - SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_817(_lib._class_NSDecimalNumberHandler1, - _lib._sel_defaultDecimalNumberHandler1); - return NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); + NSInputStream? get HTTPBodyStream { + final _ret = _objc_msgSend_342(this.pointer, _sel_HTTPBodyStream); + return _ret.address == 0 + ? null + : NSInputStream.castFromPointer(_ret, retain: true, release: true); } - NSDecimalNumberHandler - initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_( - int roundingMode, - int scale, - bool exact, - bool overflow, - bool underflow, - bool divideByZero) { - final _ret = _lib._objc_msgSend_818( - _id, - _lib._sel_initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1, - roundingMode, - scale, - exact, - overflow, - underflow, - divideByZero); - return NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); + bool get HTTPShouldHandleCookies { + return _objc_msgSend_7(this.pointer, _sel_HTTPShouldHandleCookies); } - static NSDecimalNumberHandler - decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_( - SwiftLibrary _lib, - int roundingMode, - int scale, - bool exact, - bool overflow, - bool underflow, - bool divideByZero) { - final _ret = _lib._objc_msgSend_818( - _lib._class_NSDecimalNumberHandler1, - _lib._sel_decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1, - roundingMode, - scale, - exact, - overflow, - underflow, - divideByZero); - return NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); + bool get HTTPShouldUsePipelining { + return _objc_msgSend_7(this.pointer, _sel_HTTPShouldUsePipelining); } @override - NSDecimalNumberHandler init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); + NSURLRequest init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - static NSDecimalNumberHandler new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSDecimalNumberHandler1, _lib._sel_new1); - return NSDecimalNumberHandler._(_ret, _lib, retain: false, release: true); + static NSURLRequest new1() { + final _ret = _objc_msgSend_40(_class_NSURLRequest, _sel_new); + return NSURLRequest.castFromPointer(_ret, retain: false, release: true); } - static NSDecimalNumberHandler allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSDecimalNumberHandler1, _lib._sel_allocWithZone_1, zone); - return NSDecimalNumberHandler._(_ret, _lib, retain: false, release: true); + static NSURLRequest allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSURLRequest, _sel_allocWithZone_, zone); + return NSURLRequest.castFromPointer(_ret, retain: false, release: true); } - static NSDecimalNumberHandler alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSDecimalNumberHandler1, _lib._sel_alloc1); - return NSDecimalNumberHandler._(_ret, _lib, retain: false, release: true); + static NSURLRequest alloc() { + final _ret = _objc_msgSend_40(_class_NSURLRequest, _sel_alloc); + return NSURLRequest.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSDecimalNumberHandler1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLRequest, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSDecimalNumberHandler1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLRequest, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSDecimalNumberHandler1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLRequest, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSDecimalNumberHandler1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLRequest, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSDecimalNumberHandler1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLRequest, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSDecimalNumberHandler1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLRequest, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSDecimalNumberHandler1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLRequest, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSDecimalNumberHandler1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLRequest, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSDecimalNumberHandler1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSURLRequest, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -abstract class NSRoundingMode { - static const int NSRoundPlain = 0; - static const int NSRoundDown = 1; - static const int NSRoundUp = 2; - static const int NSRoundBankers = 3; +late final _class_NSURLRequest = objc.getClass("NSURLRequest"); +late final _sel_requestWithURL_ = objc.registerName("requestWithURL:"); +final _objc_msgSend_320 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_supportsSecureCoding = + objc.registerName("supportsSecureCoding"); + +abstract class NSURLRequestCachePolicy { + static const int NSURLRequestUseProtocolCachePolicy = 0; + static const int NSURLRequestReloadIgnoringLocalCacheData = 1; + static const int NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4; + static const int NSURLRequestReloadIgnoringCacheData = 1; + static const int NSURLRequestReturnCacheDataElseLoad = 2; + static const int NSURLRequestReturnCacheDataDontLoad = 3; + static const int NSURLRequestReloadRevalidatingCacheData = 5; +} + +late final _sel_requestWithURL_cachePolicy_timeoutInterval_ = + objc.registerName("requestWithURL:cachePolicy:timeoutInterval:"); +final _objc_msgSend_321 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Double)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + double)>(); +late final _sel_initWithURL_cachePolicy_timeoutInterval_ = + objc.registerName("initWithURL:cachePolicy:timeoutInterval:"); +late final _sel_URL = objc.registerName("URL"); +late final _sel_cachePolicy = objc.registerName("cachePolicy"); +final _objc_msgSend_322 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_timeoutInterval = objc.registerName("timeoutInterval"); +late final _sel_mainDocumentURL = objc.registerName("mainDocumentURL"); + +abstract class NSURLRequestNetworkServiceType { + static const int NSURLNetworkServiceTypeDefault = 0; + static const int NSURLNetworkServiceTypeVoIP = 1; + static const int NSURLNetworkServiceTypeVideo = 2; + static const int NSURLNetworkServiceTypeBackground = 3; + static const int NSURLNetworkServiceTypeVoice = 4; + static const int NSURLNetworkServiceTypeResponsiveData = 6; + static const int NSURLNetworkServiceTypeAVStreaming = 8; + static const int NSURLNetworkServiceTypeResponsiveAV = 9; + static const int NSURLNetworkServiceTypeCallSignaling = 11; +} + +late final _sel_networkServiceType = objc.registerName("networkServiceType"); +final _objc_msgSend_323 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_allowsCellularAccess = + objc.registerName("allowsCellularAccess"); +late final _sel_allowsExpensiveNetworkAccess = + objc.registerName("allowsExpensiveNetworkAccess"); +late final _sel_allowsConstrainedNetworkAccess = + objc.registerName("allowsConstrainedNetworkAccess"); +late final _sel_assumesHTTP3Capable = objc.registerName("assumesHTTP3Capable"); + +abstract class NSURLRequestAttribution { + static const int NSURLRequestAttributionDeveloper = 0; + static const int NSURLRequestAttributionUser = 1; } -class NSScanner extends NSObject { - NSScanner._(ffi.Pointer id, SwiftLibrary lib, +late final _sel_attribution = objc.registerName("attribution"); +final _objc_msgSend_324 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_requiresDNSSECValidation = + objc.registerName("requiresDNSSECValidation"); +late final _sel_HTTPMethod = objc.registerName("HTTPMethod"); +late final _sel_allHTTPHeaderFields = objc.registerName("allHTTPHeaderFields"); +late final _sel_valueForHTTPHeaderField_ = + objc.registerName("valueForHTTPHeaderField:"); +late final _sel_HTTPBody = objc.registerName("HTTPBody"); +final _objc_msgSend_325 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + +class NSInputStream extends NSStream { + NSInputStream._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSScanner] that points to the same underlying object as [other]. - static NSScanner castFrom(T other) { - return NSScanner._(other._id, other._lib, retain: true, release: true); - } + /// Constructs a [NSInputStream] that points to the same underlying object as [other]. + NSInputStream.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSScanner] that wraps the given raw object pointer. - static NSScanner castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSScanner._(other, lib, retain: retain, release: release); + /// Constructs a [NSInputStream] that wraps the given raw object pointer. + NSInputStream.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSInputStream]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSInputStream); } - /// Returns whether [obj] is an instance of [NSScanner]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSScanner1); + int read_maxLength_(ffi.Pointer buffer, int len) { + return _objc_msgSend_329(this.pointer, _sel_read_maxLength_, buffer, len); } - NSString get string { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_string1); - return NSString._(_ret, _lib, retain: true, release: true); + bool getBuffer_length_(ffi.Pointer> buffer, + ffi.Pointer len) { + return _objc_msgSend_339(this.pointer, _sel_getBuffer_length_, buffer, len); } - int get scanLocation { - return _lib._objc_msgSend_10(_id, _lib._sel_scanLocation1); + bool get hasBytesAvailable { + return _objc_msgSend_7(this.pointer, _sel_hasBytesAvailable); } - set scanLocation(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setScanLocation_1, value); + NSInputStream initWithData_(objc.NSData data) { + final _ret = + _objc_msgSend_340(this.pointer, _sel_initWithData_, data.pointer); + return NSInputStream.castFromPointer(_ret, retain: true, release: true); } - NSCharacterSet? get charactersToBeSkipped { - final _ret = _lib._objc_msgSend_820(_id, _lib._sel_charactersToBeSkipped1); + NSInputStream? initWithURL_(objc.NSURL url) { + final _ret = _objc_msgSend_3(this.pointer, _sel_initWithURL_, url.pointer); return _ret.address == 0 ? null - : NSCharacterSet._(_ret, _lib, retain: true, release: true); + : NSInputStream.castFromPointer(_ret, retain: true, release: true); } - set charactersToBeSkipped(NSCharacterSet? value) { - return _lib._objc_msgSend_821( - _id, _lib._sel_setCharactersToBeSkipped_1, value?._id ?? ffi.nullptr); + NSInputStream? initWithFileAtPath_(objc.NSString path) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_initWithFileAtPath_, path.pointer); + return _ret.address == 0 + ? null + : NSInputStream.castFromPointer(_ret, retain: true, release: true); } - bool get caseSensitive { - return _lib._objc_msgSend_12(_id, _lib._sel_caseSensitive1); + static NSInputStream? inputStreamWithData_(objc.NSData data) { + final _ret = _objc_msgSend_341( + _class_NSInputStream, _sel_inputStreamWithData_, data.pointer); + return _ret.address == 0 + ? null + : NSInputStream.castFromPointer(_ret, retain: true, release: true); } - set caseSensitive(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setCaseSensitive_1, value); + static NSInputStream? inputStreamWithFileAtPath_(objc.NSString path) { + final _ret = _objc_msgSend_2( + _class_NSInputStream, _sel_inputStreamWithFileAtPath_, path.pointer); + return _ret.address == 0 + ? null + : NSInputStream.castFromPointer(_ret, retain: true, release: true); } - NSObject? get locale { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_locale1); + static NSInputStream? inputStreamWithURL_(objc.NSURL url) { + final _ret = _objc_msgSend_3( + _class_NSInputStream, _sel_inputStreamWithURL_, url.pointer); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : NSInputStream.castFromPointer(_ret, retain: true, release: true); } - set locale(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setLocale_1, value?._id ?? ffi.nullptr); + static void getStreamsToHostWithName_port_inputStream_outputStream_( + objc.NSString hostname, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_333( + _class_NSInputStream, + _sel_getStreamsToHostWithName_port_inputStream_outputStream_, + hostname.pointer, + port, + inputStream, + outputStream); } - NSScanner initWithString_(NSString string) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithString_1, string._id); - return NSScanner._(_ret, _lib, retain: true, release: true); + static void getStreamsToHost_port_inputStream_outputStream_( + NSHost host, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_337( + _class_NSInputStream, + _sel_getStreamsToHost_port_inputStream_outputStream_, + host.pointer, + port, + inputStream, + outputStream); } - bool scanInt_(ffi.Pointer result) { - return _lib._objc_msgSend_822(_id, _lib._sel_scanInt_1, result); + static void getBoundStreamsWithBufferSize_inputStream_outputStream_( + int bufferSize, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_338( + _class_NSInputStream, + _sel_getBoundStreamsWithBufferSize_inputStream_outputStream_, + bufferSize, + inputStream, + outputStream); } - bool scanInteger_(ffi.Pointer result) { - return _lib._objc_msgSend_823(_id, _lib._sel_scanInteger_1, result); + @override + NSInputStream init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSInputStream.castFromPointer(_ret, retain: true, release: true); } - bool scanLongLong_(ffi.Pointer result) { - return _lib._objc_msgSend_824(_id, _lib._sel_scanLongLong_1, result); + static NSInputStream new1() { + final _ret = _objc_msgSend_40(_class_NSInputStream, _sel_new); + return NSInputStream.castFromPointer(_ret, retain: false, release: true); } - bool scanUnsignedLongLong_(ffi.Pointer result) { - return _lib._objc_msgSend_825( - _id, _lib._sel_scanUnsignedLongLong_1, result); + static NSInputStream allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSInputStream, _sel_allocWithZone_, zone); + return NSInputStream.castFromPointer(_ret, retain: false, release: true); } - bool scanFloat_(ffi.Pointer result) { - return _lib._objc_msgSend_826(_id, _lib._sel_scanFloat_1, result); + static NSInputStream alloc() { + final _ret = _objc_msgSend_40(_class_NSInputStream, _sel_alloc); + return NSInputStream.castFromPointer(_ret, retain: false, release: true); } - bool scanDouble_(ffi.Pointer result) { - return _lib._objc_msgSend_827(_id, _lib._sel_scanDouble_1, result); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSInputStream, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - bool scanHexInt_(ffi.Pointer result) { - return _lib._objc_msgSend_828(_id, _lib._sel_scanHexInt_1, result); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSInputStream, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - bool scanHexLongLong_(ffi.Pointer result) { - return _lib._objc_msgSend_825(_id, _lib._sel_scanHexLongLong_1, result); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSInputStream, _sel_accessInstanceVariablesDirectly); } - bool scanHexFloat_(ffi.Pointer result) { - return _lib._objc_msgSend_826(_id, _lib._sel_scanHexFloat_1, result); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSInputStream, _sel_useStoredAccessor); } - bool scanHexDouble_(ffi.Pointer result) { - return _lib._objc_msgSend_827(_id, _lib._sel_scanHexDouble_1, result); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSInputStream, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - bool scanString_intoString_( - NSString string, ffi.Pointer> result) { - return _lib._objc_msgSend_829( - _id, _lib._sel_scanString_intoString_1, string._id, result); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSInputStream, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - bool scanCharactersFromSet_intoString_( - NSCharacterSet set, ffi.Pointer> result) { - return _lib._objc_msgSend_830( - _id, _lib._sel_scanCharactersFromSet_intoString_1, set._id, result); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSInputStream, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - bool scanUpToString_intoString_( - NSString string, ffi.Pointer> result) { - return _lib._objc_msgSend_829( - _id, _lib._sel_scanUpToString_intoString_1, string._id, result); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSInputStream, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool scanUpToCharactersFromSet_intoString_( - NSCharacterSet set, ffi.Pointer> result) { - return _lib._objc_msgSend_830( - _id, _lib._sel_scanUpToCharactersFromSet_intoString_1, set._id, result); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSInputStream, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - bool get atEnd { - return _lib._objc_msgSend_12(_id, _lib._sel_isAtEnd1); - } +late final _class_NSInputStream = objc.getClass("NSInputStream"); - static NSScanner scannerWithString_(SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSScanner1, _lib._sel_scannerWithString_1, string._id); - return NSScanner._(_ret, _lib, retain: true, release: true); - } +class NSStream extends objc.NSObject { + NSStream._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSStream] that points to the same underlying object as [other]. + NSStream.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSStream] that wraps the given raw object pointer. + NSStream.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static NSObject localizedScannerWithString_( - SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSScanner1, - _lib._sel_localizedScannerWithString_1, string._id); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSStream]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSStream); } - bool scanDecimal_(ffi.Pointer dcm) { - return _lib._objc_msgSend_831(_id, _lib._sel_scanDecimal_1, dcm); + void open() { + _objc_msgSend_82(this.pointer, _sel_open); } - @override - NSScanner init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSScanner._(_ret, _lib, retain: true, release: true); + void close() { + _objc_msgSend_82(this.pointer, _sel_close); } - static NSScanner new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSScanner1, _lib._sel_new1); - return NSScanner._(_ret, _lib, retain: false, release: true); + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSScanner allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSScanner1, _lib._sel_allocWithZone_1, zone); - return NSScanner._(_ret, _lib, retain: false, release: true); + set delegate(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDelegate_, value?.pointer ?? ffi.nullptr); } - static NSScanner alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSScanner1, _lib._sel_alloc1); - return NSScanner._(_ret, _lib, retain: false, release: true); + objc.NSObject? propertyForKey_(objc.NSString key) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_propertyForKey_, key.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSScanner1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + bool setProperty_forKey_(objc.NSObject? property, objc.NSString key) { + return _objc_msgSend_326(this.pointer, _sel_setProperty_forKey_, + property?.pointer ?? ffi.nullptr, key.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSScanner1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + void scheduleInRunLoop_forMode_(NSRunLoop aRunLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_scheduleInRunLoop_forMode_, + aRunLoop.pointer, mode.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSScanner1, _lib._sel_accessInstanceVariablesDirectly1); + void removeFromRunLoop_forMode_(NSRunLoop aRunLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_removeFromRunLoop_forMode_, + aRunLoop.pointer, mode.pointer); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSScanner1, _lib._sel_useStoredAccessor1); + int get streamStatus { + return _objc_msgSend_327(this.pointer, _sel_streamStatus); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSScanner1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSError? get streamError { + final _ret = _objc_msgSend_328(this.pointer, _sel_streamError); + return _ret.address == 0 + ? null + : objc.NSError.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSScanner1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static void getStreamsToHostWithName_port_inputStream_outputStream_( + objc.NSString hostname, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_333( + _class_NSStream, + _sel_getStreamsToHostWithName_port_inputStream_outputStream_, + hostname.pointer, + port, + inputStream, + outputStream); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSScanner1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static void getStreamsToHost_port_inputStream_outputStream_( + NSHost host, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_337( + _class_NSStream, + _sel_getStreamsToHost_port_inputStream_outputStream_, + host.pointer, + port, + inputStream, + outputStream); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSScanner1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static void getBoundStreamsWithBufferSize_inputStream_outputStream_( + int bufferSize, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_338( + _class_NSStream, + _sel_getBoundStreamsWithBufferSize_inputStream_outputStream_, + bufferSize, + inputStream, + outputStream); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSScanner1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + @override + NSStream init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSStream.castFromPointer(_ret, retain: true, release: true); } -} -final class NSDecimal extends ffi.Opaque {} + static NSStream new1() { + final _ret = _objc_msgSend_40(_class_NSStream, _sel_new); + return NSStream.castFromPointer(_ret, retain: false, release: true); + } -class NSException extends NSObject { - NSException._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + static NSStream allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSStream, _sel_allocWithZone_, zone); + return NSStream.castFromPointer(_ret, retain: false, release: true); + } - /// Returns a [NSException] that points to the same underlying object as [other]. - static NSException castFrom(T other) { - return NSException._(other._id, other._lib, retain: true, release: true); + static NSStream alloc() { + final _ret = _objc_msgSend_40(_class_NSStream, _sel_alloc); + return NSStream.castFromPointer(_ret, retain: false, release: true); } - /// Returns a [NSException] that wraps the given raw object pointer. - static NSException castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSException._(other, lib, retain: retain, release: release); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSStream, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - /// Returns whether [obj] is an instance of [NSException]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSException1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSStream, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static NSException exceptionWithName_reason_userInfo_(SwiftLibrary _lib, - NSString name, NSString? reason, NSDictionary? userInfo) { - final _ret = _lib._objc_msgSend_832( - _lib._class_NSException1, - _lib._sel_exceptionWithName_reason_userInfo_1, - name._id, - reason?._id ?? ffi.nullptr, - userInfo?._id ?? ffi.nullptr); - return NSException._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSStream, _sel_accessInstanceVariablesDirectly); } - NSException initWithName_reason_userInfo_( - NSString aName, NSString? aReason, NSDictionary? aUserInfo) { - final _ret = _lib._objc_msgSend_833( - _id, - _lib._sel_initWithName_reason_userInfo_1, - aName._id, - aReason?._id ?? ffi.nullptr, - aUserInfo?._id ?? ffi.nullptr); - return NSException._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSStream, _sel_useStoredAccessor); } - NSString get name { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_name1); - return NSString._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSStream, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSString? get reason { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_reason1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSStream, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSDictionary? get userInfo { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_userInfo1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSStream, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - NSArray get callStackReturnAddresses { + static objc.NSArray classFallbacksForKeyedArchiver() { final _ret = - _lib._objc_msgSend_85(_id, _lib._sel_callStackReturnAddresses1); - return NSArray._(_ret, _lib, retain: true, release: true); + _objc_msgSend_6(_class_NSStream, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSArray get callStackSymbols { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_callStackSymbols1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSStream, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - void raise() { - _lib._objc_msgSend_1(_id, _lib._sel_raise1); - } +late final _class_NSStream = objc.getClass("NSStream"); +late final _sel_open = objc.registerName("open"); +late final _sel_close = objc.registerName("close"); +late final _sel_propertyForKey_ = objc.registerName("propertyForKey:"); +late final _sel_setProperty_forKey_ = objc.registerName("setProperty:forKey:"); +final _objc_msgSend_326 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - static void raise_format_(SwiftLibrary _lib, NSString name, NSString format) { - _lib._objc_msgSend_551(_lib._class_NSException1, _lib._sel_raise_format_1, - name._id, format._id); - } +abstract class NSStreamStatus { + static const int NSStreamStatusNotOpen = 0; + static const int NSStreamStatusOpening = 1; + static const int NSStreamStatusOpen = 2; + static const int NSStreamStatusReading = 3; + static const int NSStreamStatusWriting = 4; + static const int NSStreamStatusAtEnd = 5; + static const int NSStreamStatusClosed = 6; + static const int NSStreamStatusError = 7; +} - static void raise_format_arguments_(SwiftLibrary _lib, NSString name, - NSString format, ffi.Pointer<__va_list_tag> argList) { - _lib._objc_msgSend_834(_lib._class_NSException1, - _lib._sel_raise_format_arguments_1, name._id, format._id, argList); - } +late final _sel_streamStatus = objc.registerName("streamStatus"); +final _objc_msgSend_327 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_streamError = objc.registerName("streamError"); +final _objc_msgSend_328 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - @override - NSException init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSException._(_ret, _lib, retain: true, release: true); - } +class NSOutputStream extends NSStream { + NSOutputStream._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - static NSException new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSException1, _lib._sel_new1); - return NSException._(_ret, _lib, retain: false, release: true); - } + /// Constructs a [NSOutputStream] that points to the same underlying object as [other]. + NSOutputStream.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - static NSException allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSException1, _lib._sel_allocWithZone_1, zone); - return NSException._(_ret, _lib, retain: false, release: true); - } + /// Constructs a [NSOutputStream] that wraps the given raw object pointer. + NSOutputStream.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static NSException alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSException1, _lib._sel_alloc1); - return NSException._(_ret, _lib, retain: false, release: true); + /// Returns whether [obj] is an instance of [NSOutputStream]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSOutputStream); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSException1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + int write_maxLength_(ffi.Pointer buffer, int len) { + return _objc_msgSend_329(this.pointer, _sel_write_maxLength_, buffer, len); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSException1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + bool get hasSpaceAvailable { + return _objc_msgSend_7(this.pointer, _sel_hasSpaceAvailable); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSException1, _lib._sel_accessInstanceVariablesDirectly1); + NSOutputStream initToMemory() { + final _ret = _objc_msgSend_40(this.pointer, _sel_initToMemory); + return NSOutputStream.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSException1, _lib._sel_useStoredAccessor1); + NSOutputStream initToBuffer_capacity_( + ffi.Pointer buffer, int capacity) { + final _ret = _objc_msgSend_330( + this.pointer, _sel_initToBuffer_capacity_, buffer, capacity); + return NSOutputStream.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSException1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + NSOutputStream? initWithURL_append_(objc.NSURL url, bool shouldAppend) { + final _ret = _objc_msgSend_331( + this.pointer, _sel_initWithURL_append_, url.pointer, shouldAppend); + return _ret.address == 0 + ? null + : NSOutputStream.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSException1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + NSOutputStream? initToFileAtPath_append_( + objc.NSString path, bool shouldAppend) { + final _ret = _objc_msgSend_332(this.pointer, _sel_initToFileAtPath_append_, + path.pointer, shouldAppend); + return _ret.address == 0 + ? null + : NSOutputStream.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSException1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static NSOutputStream outputStreamToMemory() { + final _ret = + _objc_msgSend_40(_class_NSOutputStream, _sel_outputStreamToMemory); + return NSOutputStream.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSException1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSOutputStream outputStreamToBuffer_capacity_( + ffi.Pointer buffer, int capacity) { + final _ret = _objc_msgSend_330(_class_NSOutputStream, + _sel_outputStreamToBuffer_capacity_, buffer, capacity); + return NSOutputStream.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSException1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSOutputStream outputStreamToFileAtPath_append_( + objc.NSString path, bool shouldAppend) { + final _ret = _objc_msgSend_164(_class_NSOutputStream, + _sel_outputStreamToFileAtPath_append_, path.pointer, shouldAppend); + return NSOutputStream.castFromPointer(_ret, retain: true, release: true); } -} -class NSFileHandle extends NSObject { - NSFileHandle._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + static NSOutputStream? outputStreamWithURL_append_( + objc.NSURL url, bool shouldAppend) { + final _ret = _objc_msgSend_331(_class_NSOutputStream, + _sel_outputStreamWithURL_append_, url.pointer, shouldAppend); + return _ret.address == 0 + ? null + : NSOutputStream.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a [NSFileHandle] that points to the same underlying object as [other]. - static NSFileHandle castFrom(T other) { - return NSFileHandle._(other._id, other._lib, retain: true, release: true); + static void getStreamsToHostWithName_port_inputStream_outputStream_( + objc.NSString hostname, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_333( + _class_NSOutputStream, + _sel_getStreamsToHostWithName_port_inputStream_outputStream_, + hostname.pointer, + port, + inputStream, + outputStream); } - /// Returns a [NSFileHandle] that wraps the given raw object pointer. - static NSFileHandle castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSFileHandle._(other, lib, retain: retain, release: release); + static void getStreamsToHost_port_inputStream_outputStream_( + NSHost host, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_337( + _class_NSOutputStream, + _sel_getStreamsToHost_port_inputStream_outputStream_, + host.pointer, + port, + inputStream, + outputStream); } - /// Returns whether [obj] is an instance of [NSFileHandle]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSFileHandle1); + static void getBoundStreamsWithBufferSize_inputStream_outputStream_( + int bufferSize, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _objc_msgSend_338( + _class_NSOutputStream, + _sel_getBoundStreamsWithBufferSize_inputStream_outputStream_, + bufferSize, + inputStream, + outputStream); } - NSData get availableData { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_availableData1); - return NSData._(_ret, _lib, retain: true, release: true); + @override + NSOutputStream init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSOutputStream.castFromPointer(_ret, retain: true, release: true); } - NSFileHandle initWithFileDescriptor_closeOnDealloc_(int fd, bool closeopt) { - final _ret = _lib._objc_msgSend_835( - _id, _lib._sel_initWithFileDescriptor_closeOnDealloc_1, fd, closeopt); - return NSFileHandle._(_ret, _lib, retain: true, release: true); + static NSOutputStream new1() { + final _ret = _objc_msgSend_40(_class_NSOutputStream, _sel_new); + return NSOutputStream.castFromPointer(_ret, retain: false, release: true); } - NSFileHandle? initWithCoder_(NSCoder coder) { + static NSOutputStream allocWithZone_(ffi.Pointer<_NSZone> zone) { final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, coder._id); - return _ret.address == 0 - ? null - : NSFileHandle._(_ret, _lib, retain: true, release: true); + _objc_msgSend_47(_class_NSOutputStream, _sel_allocWithZone_, zone); + return NSOutputStream.castFromPointer(_ret, retain: false, release: true); } - NSData? readDataToEndOfFileAndReturnError_( - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_836( - _id, _lib._sel_readDataToEndOfFileAndReturnError_1, error); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + static NSOutputStream alloc() { + final _ret = _objc_msgSend_40(_class_NSOutputStream, _sel_alloc); + return NSOutputStream.castFromPointer(_ret, retain: false, release: true); } - NSData? readDataUpToLength_error_( - int length, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_837( - _id, _lib._sel_readDataUpToLength_error_1, length, error); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSOutputStream, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - bool writeData_error_( - NSData data, ffi.Pointer> error) { - return _lib._objc_msgSend_838( - _id, _lib._sel_writeData_error_1, data._id, error); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSOutputStream, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - bool getOffset_error_(ffi.Pointer offsetInFile, - ffi.Pointer> error) { - return _lib._objc_msgSend_839( - _id, _lib._sel_getOffset_error_1, offsetInFile, error); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSOutputStream, _sel_accessInstanceVariablesDirectly); } - bool seekToEndReturningOffset_error_( - ffi.Pointer offsetInFile, - ffi.Pointer> error) { - return _lib._objc_msgSend_839( - _id, _lib._sel_seekToEndReturningOffset_error_1, offsetInFile, error); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSOutputStream, _sel_useStoredAccessor); } - bool seekToOffset_error_( - int offset, ffi.Pointer> error) { - return _lib._objc_msgSend_840( - _id, _lib._sel_seekToOffset_error_1, offset, error); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSOutputStream, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - bool truncateAtOffset_error_( - int offset, ffi.Pointer> error) { - return _lib._objc_msgSend_840( - _id, _lib._sel_truncateAtOffset_error_1, offset, error); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSOutputStream, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - bool synchronizeAndReturnError_(ffi.Pointer> error) { - return _lib._objc_msgSend_255( - _id, _lib._sel_synchronizeAndReturnError_1, error); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSOutputStream, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSOutputStream, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSOutputStream, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSOutputStream = objc.getClass("NSOutputStream"); +late final _sel_write_maxLength_ = objc.registerName("write:maxLength:"); +final _objc_msgSend_329 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Long Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); +late final _sel_hasSpaceAvailable = objc.registerName("hasSpaceAvailable"); +late final _sel_initToMemory = objc.registerName("initToMemory"); +late final _sel_initToBuffer_capacity_ = + objc.registerName("initToBuffer:capacity:"); +final _objc_msgSend_330 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); +late final _sel_initWithURL_append_ = objc.registerName("initWithURL:append:"); +final _objc_msgSend_331 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_initToFileAtPath_append_ = + objc.registerName("initToFileAtPath:append:"); +final _objc_msgSend_332 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_outputStreamToMemory = + objc.registerName("outputStreamToMemory"); +late final _sel_outputStreamToBuffer_capacity_ = + objc.registerName("outputStreamToBuffer:capacity:"); +late final _sel_outputStreamToFileAtPath_append_ = + objc.registerName("outputStreamToFileAtPath:append:"); +late final _sel_outputStreamWithURL_append_ = + objc.registerName("outputStreamWithURL:append:"); +late final _sel_getStreamsToHostWithName_port_inputStream_outputStream_ = objc + .registerName("getStreamsToHostWithName:port:inputStream:outputStream:"); +final _objc_msgSend_333 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer>)>(); + +class NSHost extends objc.NSObject { + NSHost._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - bool closeAndReturnError_(ffi.Pointer> error) { - return _lib._objc_msgSend_255(_id, _lib._sel_closeAndReturnError_1, error); - } + /// Constructs a [NSHost] that points to the same underlying object as [other]. + NSHost.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSHost] that wraps the given raw object pointer. + NSHost.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static NSFileHandle getFileHandleWithStandardInput(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_841( - _lib._class_NSFileHandle1, _lib._sel_fileHandleWithStandardInput1); - return NSFileHandle._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSHost]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSHost); } - static NSFileHandle getFileHandleWithStandardOutput(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_841( - _lib._class_NSFileHandle1, _lib._sel_fileHandleWithStandardOutput1); - return NSFileHandle._(_ret, _lib, retain: true, release: true); + static NSHost currentHost() { + final _ret = _objc_msgSend_40(_class_NSHost, _sel_currentHost); + return NSHost.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle getFileHandleWithStandardError(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_841( - _lib._class_NSFileHandle1, _lib._sel_fileHandleWithStandardError1); - return NSFileHandle._(_ret, _lib, retain: true, release: true); + static NSHost hostWithName_(objc.NSString? name) { + final _ret = _objc_msgSend_334( + _class_NSHost, _sel_hostWithName_, name?.pointer ?? ffi.nullptr); + return NSHost.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle getFileHandleWithNullDevice(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_841( - _lib._class_NSFileHandle1, _lib._sel_fileHandleWithNullDevice1); - return NSFileHandle._(_ret, _lib, retain: true, release: true); + static NSHost hostWithAddress_(objc.NSString address) { + final _ret = + _objc_msgSend_35(_class_NSHost, _sel_hostWithAddress_, address.pointer); + return NSHost.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle? fileHandleForReadingAtPath_( - SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSFileHandle1, - _lib._sel_fileHandleForReadingAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSFileHandle._(_ret, _lib, retain: true, release: true); + bool isEqualToHost_(NSHost aHost) { + return _objc_msgSend_335(this.pointer, _sel_isEqualToHost_, aHost.pointer); } - static NSFileHandle? fileHandleForWritingAtPath_( - SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSFileHandle1, - _lib._sel_fileHandleForWritingAtPath_1, path._id); + objc.NSString? get name { + final _ret = _objc_msgSend_13(this.pointer, _sel_name); return _ret.address == 0 ? null - : NSFileHandle._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle? fileHandleForUpdatingAtPath_( - SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSFileHandle1, - _lib._sel_fileHandleForUpdatingAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSFileHandle._(_ret, _lib, retain: true, release: true); + objc.NSArray get names { + final _ret = _objc_msgSend_6(this.pointer, _sel_names); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle? fileHandleForReadingFromURL_error_(SwiftLibrary _lib, - NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_842(_lib._class_NSFileHandle1, - _lib._sel_fileHandleForReadingFromURL_error_1, url._id, error); + objc.NSString? get address { + final _ret = _objc_msgSend_13(this.pointer, _sel_address); return _ret.address == 0 ? null - : NSFileHandle._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle? fileHandleForWritingToURL_error_(SwiftLibrary _lib, - NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_842(_lib._class_NSFileHandle1, - _lib._sel_fileHandleForWritingToURL_error_1, url._id, error); - return _ret.address == 0 - ? null - : NSFileHandle._(_ret, _lib, retain: true, release: true); + objc.NSArray get addresses { + final _ret = _objc_msgSend_6(this.pointer, _sel_addresses); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle? fileHandleForUpdatingURL_error_(SwiftLibrary _lib, - NSURL url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_842(_lib._class_NSFileHandle1, - _lib._sel_fileHandleForUpdatingURL_error_1, url._id, error); + objc.NSString? get localizedName { + final _ret = _objc_msgSend_13(this.pointer, _sel_localizedName); return _ret.address == 0 ? null - : NSFileHandle._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void readInBackgroundAndNotifyForModes_(NSArray? modes) { - _lib._objc_msgSend_843(_id, _lib._sel_readInBackgroundAndNotifyForModes_1, - modes?._id ?? ffi.nullptr); + static void setHostCacheEnabled_(bool flag) { + _objc_msgSend_336(_class_NSHost, _sel_setHostCacheEnabled_, flag); } - void readInBackgroundAndNotify() { - _lib._objc_msgSend_1(_id, _lib._sel_readInBackgroundAndNotify1); + static bool isHostCacheEnabled() { + return _objc_msgSend_7(_class_NSHost, _sel_isHostCacheEnabled); } - void readToEndOfFileInBackgroundAndNotifyForModes_(NSArray? modes) { - _lib._objc_msgSend_843( - _id, - _lib._sel_readToEndOfFileInBackgroundAndNotifyForModes_1, - modes?._id ?? ffi.nullptr); + static void flushHostCache() { + _objc_msgSend_82(_class_NSHost, _sel_flushHostCache); } - void readToEndOfFileInBackgroundAndNotify() { - _lib._objc_msgSend_1(_id, _lib._sel_readToEndOfFileInBackgroundAndNotify1); + @override + NSHost init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSHost.castFromPointer(_ret, retain: true, release: true); } - void acceptConnectionInBackgroundAndNotifyForModes_(NSArray? modes) { - _lib._objc_msgSend_843( - _id, - _lib._sel_acceptConnectionInBackgroundAndNotifyForModes_1, - modes?._id ?? ffi.nullptr); + static NSHost new1() { + final _ret = _objc_msgSend_40(_class_NSHost, _sel_new); + return NSHost.castFromPointer(_ret, retain: false, release: true); } - void acceptConnectionInBackgroundAndNotify() { - _lib._objc_msgSend_1(_id, _lib._sel_acceptConnectionInBackgroundAndNotify1); + static NSHost allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSHost, _sel_allocWithZone_, zone); + return NSHost.castFromPointer(_ret, retain: false, release: true); } - void waitForDataInBackgroundAndNotifyForModes_(NSArray? modes) { - _lib._objc_msgSend_843( - _id, - _lib._sel_waitForDataInBackgroundAndNotifyForModes_1, - modes?._id ?? ffi.nullptr); + static NSHost alloc() { + final _ret = _objc_msgSend_40(_class_NSHost, _sel_alloc); + return NSHost.castFromPointer(_ret, retain: false, release: true); } - void waitForDataInBackgroundAndNotify() { - _lib._objc_msgSend_1(_id, _lib._sel_waitForDataInBackgroundAndNotify1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSHost, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - ObjCBlock_ffiVoid_NSFileHandle? get readabilityHandler { - final _ret = _lib._objc_msgSend_844(_id, _lib._sel_readabilityHandler1); - return _ret.address == 0 - ? null - : ObjCBlock_ffiVoid_NSFileHandle._(_ret, _lib, - retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSHost, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - set readabilityHandler(ObjCBlock_ffiVoid_NSFileHandle? value) { - return _lib._objc_msgSend_845( - _id, _lib._sel_setReadabilityHandler_1, value?._id ?? ffi.nullptr); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7(_class_NSHost, _sel_accessInstanceVariablesDirectly); } - ObjCBlock_ffiVoid_NSFileHandle? get writeabilityHandler { - final _ret = _lib._objc_msgSend_844(_id, _lib._sel_writeabilityHandler1); - return _ret.address == 0 - ? null - : ObjCBlock_ffiVoid_NSFileHandle._(_ret, _lib, - retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSHost, _sel_useStoredAccessor); } - set writeabilityHandler(ObjCBlock_ffiVoid_NSFileHandle? value) { - return _lib._objc_msgSend_845( - _id, _lib._sel_setWriteabilityHandler_1, value?._id ?? ffi.nullptr); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSHost, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSFileHandle initWithFileDescriptor_(int fd) { - final _ret = - _lib._objc_msgSend_846(_id, _lib._sel_initWithFileDescriptor_1, fd); - return NSFileHandle._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51( + _class_NSHost, _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - int get fileDescriptor { - return _lib._objc_msgSend_237(_id, _lib._sel_fileDescriptor1); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSHost, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSHost, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40(_class_NSHost, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSHost = objc.getClass("NSHost"); +late final _sel_currentHost = objc.registerName("currentHost"); +late final _sel_hostWithName_ = objc.registerName("hostWithName:"); +final _objc_msgSend_334 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_hostWithAddress_ = objc.registerName("hostWithAddress:"); +late final _sel_isEqualToHost_ = objc.registerName("isEqualToHost:"); +final _objc_msgSend_335 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_names = objc.registerName("names"); +late final _sel_address = objc.registerName("address"); +late final _sel_addresses = objc.registerName("addresses"); +late final _sel_localizedName = objc.registerName("localizedName"); +late final _sel_setHostCacheEnabled_ = + objc.registerName("setHostCacheEnabled:"); +final _objc_msgSend_336 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, bool)>(); +late final _sel_isHostCacheEnabled = objc.registerName("isHostCacheEnabled"); +late final _sel_flushHostCache = objc.registerName("flushHostCache"); +late final _sel_getStreamsToHost_port_inputStream_outputStream_ = + objc.registerName("getStreamsToHost:port:inputStream:outputStream:"); +final _objc_msgSend_337 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer>)>(); +late final _sel_getBoundStreamsWithBufferSize_inputStream_outputStream_ = objc + .registerName("getBoundStreamsWithBufferSize:inputStream:outputStream:"); +final _objc_msgSend_338 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer>)>(); +late final _sel_read_maxLength_ = objc.registerName("read:maxLength:"); +late final _sel_getBuffer_length_ = objc.registerName("getBuffer:length:"); +final _objc_msgSend_339 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>(); +late final _sel_hasBytesAvailable = objc.registerName("hasBytesAvailable"); +late final _sel_initWithData_ = objc.registerName("initWithData:"); +final _objc_msgSend_340 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithFileAtPath_ = objc.registerName("initWithFileAtPath:"); +late final _sel_inputStreamWithData_ = + objc.registerName("inputStreamWithData:"); +final _objc_msgSend_341 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_inputStreamWithFileAtPath_ = + objc.registerName("inputStreamWithFileAtPath:"); +late final _sel_inputStreamWithURL_ = objc.registerName("inputStreamWithURL:"); +late final _sel_HTTPBodyStream = objc.registerName("HTTPBodyStream"); +final _objc_msgSend_342 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_HTTPShouldHandleCookies = + objc.registerName("HTTPShouldHandleCookies"); +late final _sel_HTTPShouldUsePipelining = + objc.registerName("HTTPShouldUsePipelining"); +late final _sel_originalRequest = objc.registerName("originalRequest"); +final _objc_msgSend_343 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_currentRequest = objc.registerName("currentRequest"); + +class NSURLResponse extends objc.NSObject { + NSURLResponse._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - NSData readDataToEndOfFile() { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_readDataToEndOfFile1); - return NSData._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSURLResponse] that points to the same underlying object as [other]. + NSURLResponse.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSData readDataOfLength_(int length) { - final _ret = - _lib._objc_msgSend_847(_id, _lib._sel_readDataOfLength_1, length); - return NSData._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSURLResponse] that wraps the given raw object pointer. + NSURLResponse.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - void writeData_(NSData data) { - _lib._objc_msgSend_285(_id, _lib._sel_writeData_1, data._id); + /// Returns whether [obj] is an instance of [NSURLResponse]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLResponse); } - int get offsetInFile { - return _lib._objc_msgSend_164(_id, _lib._sel_offsetInFile1); + NSURLResponse initWithURL_MIMEType_expectedContentLength_textEncodingName_( + objc.NSURL URL, + objc.NSString? MIMEType, + int length, + objc.NSString? name) { + final _ret = _objc_msgSend_344( + this.pointer, + _sel_initWithURL_MIMEType_expectedContentLength_textEncodingName_, + URL.pointer, + MIMEType?.pointer ?? ffi.nullptr, + length, + name?.pointer ?? ffi.nullptr); + return NSURLResponse.castFromPointer(_ret, retain: true, release: true); } - int seekToEndOfFile() { - return _lib._objc_msgSend_164(_id, _lib._sel_seekToEndOfFile1); + objc.NSURL? get URL { + final _ret = _objc_msgSend_10(this.pointer, _sel_URL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - void seekToFileOffset_(int offset) { - _lib._objc_msgSend_848(_id, _lib._sel_seekToFileOffset_1, offset); + objc.NSString? get MIMEType { + final _ret = _objc_msgSend_13(this.pointer, _sel_MIMEType); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void truncateFileAtOffset_(int offset) { - _lib._objc_msgSend_848(_id, _lib._sel_truncateFileAtOffset_1, offset); + int get expectedContentLength { + return _objc_msgSend_345(this.pointer, _sel_expectedContentLength); } - void synchronizeFile() { - _lib._objc_msgSend_1(_id, _lib._sel_synchronizeFile1); + objc.NSString? get textEncodingName { + final _ret = _objc_msgSend_13(this.pointer, _sel_textEncodingName); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void closeFile() { - _lib._objc_msgSend_1(_id, _lib._sel_closeFile1); + objc.NSString? get suggestedFilename { + final _ret = _objc_msgSend_13(this.pointer, _sel_suggestedFilename); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } @override - NSFileHandle init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSFileHandle._(_ret, _lib, retain: true, release: true); + NSURLResponse init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLResponse.castFromPointer(_ret, retain: true, release: true); } - static NSFileHandle new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFileHandle1, _lib._sel_new1); - return NSFileHandle._(_ret, _lib, retain: false, release: true); + static NSURLResponse new1() { + final _ret = _objc_msgSend_40(_class_NSURLResponse, _sel_new); + return NSURLResponse.castFromPointer(_ret, retain: false, release: true); } - static NSFileHandle allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSFileHandle1, _lib._sel_allocWithZone_1, zone); - return NSFileHandle._(_ret, _lib, retain: false, release: true); + static NSURLResponse allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSURLResponse, _sel_allocWithZone_, zone); + return NSURLResponse.castFromPointer(_ret, retain: false, release: true); } - static NSFileHandle alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFileHandle1, _lib._sel_alloc1); - return NSFileHandle._(_ret, _lib, retain: false, release: true); + static NSURLResponse alloc() { + final _ret = _objc_msgSend_40(_class_NSURLResponse, _sel_alloc); + return NSURLResponse.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSFileHandle1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLResponse, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSFileHandle1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLResponse, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFileHandle1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLResponse, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFileHandle1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLResponse, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSFileHandle1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLResponse, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSFileHandle1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLResponse, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSFileHandle1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSFileHandle1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLResponse, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLResponse, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSURLResponse, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLResponse = objc.getClass("NSURLResponse"); +late final _sel_initWithURL_MIMEType_expectedContentLength_textEncodingName_ = + objc.registerName( + "initWithURL:MIMEType:expectedContentLength:textEncodingName:"); +final _objc_msgSend_344 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_MIMEType = objc.registerName("MIMEType"); +late final _sel_expectedContentLength = + objc.registerName("expectedContentLength"); +final _objc_msgSend_345 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.LongLong Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_textEncodingName = objc.registerName("textEncodingName"); +late final _sel_suggestedFilename = objc.registerName("suggestedFilename"); +late final _sel_response = objc.registerName("response"); +final _objc_msgSend_346 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_progress = objc.registerName("progress"); +final _objc_msgSend_347 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_earliestBeginDate = objc.registerName("earliestBeginDate"); +late final _sel_setEarliestBeginDate_ = + objc.registerName("setEarliestBeginDate:"); +late final _sel_countOfBytesClientExpectsToSend = + objc.registerName("countOfBytesClientExpectsToSend"); +final _objc_msgSend_348 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int64 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCountOfBytesClientExpectsToSend_ = + objc.registerName("setCountOfBytesClientExpectsToSend:"); +final _objc_msgSend_349 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int64)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_countOfBytesClientExpectsToReceive = + objc.registerName("countOfBytesClientExpectsToReceive"); +late final _sel_setCountOfBytesClientExpectsToReceive_ = + objc.registerName("setCountOfBytesClientExpectsToReceive:"); +late final _sel_countOfBytesSent = objc.registerName("countOfBytesSent"); +late final _sel_countOfBytesReceived = + objc.registerName("countOfBytesReceived"); +late final _sel_countOfBytesExpectedToSend = + objc.registerName("countOfBytesExpectedToSend"); +late final _sel_countOfBytesExpectedToReceive = + objc.registerName("countOfBytesExpectedToReceive"); +late final _sel_taskDescription = objc.registerName("taskDescription"); +late final _sel_setTaskDescription_ = objc.registerName("setTaskDescription:"); +late final _sel_cancel = objc.registerName("cancel"); - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSFileHandle1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } +abstract class NSURLSessionTaskState { + static const int NSURLSessionTaskStateRunning = 0; + static const int NSURLSessionTaskStateSuspended = 1; + static const int NSURLSessionTaskStateCanceling = 2; + static const int NSURLSessionTaskStateCompleted = 3; } -void _ObjCBlock_ffiVoid_NSFileHandle_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => +late final _sel_state = objc.registerName("state"); +final _objc_msgSend_350 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_error = objc.registerName("error"); +late final _sel_suspend = objc.registerName("suspend"); +late final _sel_resume = objc.registerName("resume"); +late final _sel_priority = objc.registerName("priority"); +final _objc_msgSend_351 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Float Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_351Fpret = objc.msgSendFpretPointer + .cast< + ffi.NativeFunction< + ffi.Float Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setPriority_ = objc.registerName("setPriority:"); +final _objc_msgSend_352 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Float)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, double)>(); +late final _sel_prefersIncrementalDelivery = + objc.registerName("prefersIncrementalDelivery"); +late final _sel_setPrefersIncrementalDelivery_ = + objc.registerName("setPrefersIncrementalDelivery:"); +late final _sel_storeCookies_forTask_ = + objc.registerName("storeCookies:forTask:"); +final _objc_msgSend_353 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSArray_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => block.ref.target .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSFileHandle_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSFileHandle_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSFileHandle_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSFileHandle_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSFileHandle_closureRegistry[id] = fn; + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSArray_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSArray_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSArray_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSArray_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSArray_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSFileHandle_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSFileHandle_closureRegistry[block.ref.target.address]!( - arg0); +void _ObjCBlock_ffiVoid_NSArray_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSArray_closureRegistry[block.ref.target.address]!(arg0); -class ObjCBlock_ffiVoid_NSFileHandle extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSFileHandle._(ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, +class ObjCBlock_ffiVoid_NSArray extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSArray._(ffi.Pointer pointer, {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSFileHandle castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSFileHandle._(pointer, lib, + static ObjCBlock_ffiVoid_NSArray castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSArray._(pointer, retain: retain, release: release); } @@ -60950,22 +16088,18 @@ class ObjCBlock_ffiVoid_NSFileHandle extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSFileHandle.fromFunctionPointer( - SwiftLibrary lib, + ObjCBlock_ffiVoid_NSArray.fromFunctionPointer( ffi.Pointer< - ffi - .NativeFunction arg0)>> + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> ptr) - : this._( - lib - ._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSFileHandle_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSArray_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -60973,20 +16107,18 @@ class ObjCBlock_ffiVoid_NSFileHandle extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSFileHandle.fromFunction( - SwiftLibrary lib, void Function(NSFileHandle) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSFileHandle_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSFileHandle_registerClosure((ffi - .Pointer - arg0) => - fn(NSFileHandle._(arg0, lib, retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSArray.fromFunction(void Function(objc.NSArray?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSArray_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSArray_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSArray.castFromPointer(arg0, + retain: true, release: true))))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -60998,4133 +16130,6859 @@ class ObjCBlock_ffiVoid_NSFileHandle extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSFileHandle.listener( - SwiftLibrary lib, void Function(NSFileHandle) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSFileHandle_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSFileHandle_registerClosure( - (ffi.Pointer arg0) => fn(NSFileHandle._( - arg0, lib, - retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSArray.listener(void Function(objc.NSArray?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSArray_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSArray_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSArray.castFromPointer(arg0, retain: true, release: true))))); static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? _dartFuncListenerTrampoline; - void call(NSFileHandle arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0._id); -} - -class NSHTTPCookieStorage extends NSObject { - NSHTTPCookieStorage._(ffi.Pointer id, SwiftLibrary lib, + void call(objc.NSArray? arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function( + ffi.Pointer, ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr); +} + +late final _sel_getCookiesForTask_completionHandler_ = + objc.registerName("getCookiesForTask:completionHandler:"); +final _objc_msgSend_354 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSIndexPath extends objc.NSObject { + NSIndexPath._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSHTTPCookieStorage] that points to the same underlying object as [other]. - static NSHTTPCookieStorage castFrom(T other) { - return NSHTTPCookieStorage._(other._id, other._lib, - retain: true, release: true); - } - - /// Returns a [NSHTTPCookieStorage] that wraps the given raw object pointer. - static NSHTTPCookieStorage castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSHTTPCookieStorage._(other, lib, retain: retain, release: release); - } + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns whether [obj] is an instance of [NSHTTPCookieStorage]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSHTTPCookieStorage1); - } + /// Constructs a [NSIndexPath] that points to the same underlying object as [other]. + NSIndexPath.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - static NSHTTPCookieStorage getSharedHTTPCookieStorage(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_849( - _lib._class_NSHTTPCookieStorage1, _lib._sel_sharedHTTPCookieStorage1); - return NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSIndexPath] that wraps the given raw object pointer. + NSIndexPath.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static NSHTTPCookieStorage sharedCookieStorageForGroupContainerIdentifier_( - SwiftLibrary _lib, NSString identifier) { - final _ret = _lib._objc_msgSend_850( - _lib._class_NSHTTPCookieStorage1, - _lib._sel_sharedCookieStorageForGroupContainerIdentifier_1, - identifier._id); - return NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSIndexPath]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSIndexPath); } - NSArray? get cookies { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_cookies1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + static NSIndexPath indexPathWithIndex_(int index) { + final _ret = + _objc_msgSend_355(_class_NSIndexPath, _sel_indexPathWithIndex_, index); + return NSIndexPath.castFromPointer(_ret, retain: true, release: true); } - void setCookie_(NSHTTPCookie cookie) { - _lib._objc_msgSend_854(_id, _lib._sel_setCookie_1, cookie._id); + static NSIndexPath indexPathWithIndexes_length_( + ffi.Pointer indexes, int length) { + final _ret = _objc_msgSend_356( + _class_NSIndexPath, _sel_indexPathWithIndexes_length_, indexes, length); + return NSIndexPath.castFromPointer(_ret, retain: true, release: true); } - void deleteCookie_(NSHTTPCookie cookie) { - _lib._objc_msgSend_854(_id, _lib._sel_deleteCookie_1, cookie._id); + NSIndexPath initWithIndexes_length_( + ffi.Pointer indexes, int length) { + final _ret = _objc_msgSend_356( + this.pointer, _sel_initWithIndexes_length_, indexes, length); + return NSIndexPath.castFromPointer(_ret, retain: true, release: true); } - void removeCookiesSinceDate_(NSDate date) { - _lib._objc_msgSend_540(_id, _lib._sel_removeCookiesSinceDate_1, date._id); + NSIndexPath initWithIndex_(int index) { + final _ret = _objc_msgSend_355(this.pointer, _sel_initWithIndex_, index); + return NSIndexPath.castFromPointer(_ret, retain: true, release: true); } - NSArray? cookiesForURL_(NSURL URL) { + NSIndexPath indexPathByAddingIndex_(int index) { final _ret = - _lib._objc_msgSend_133(_id, _lib._sel_cookiesForURL_1, URL._id); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + _objc_msgSend_357(this.pointer, _sel_indexPathByAddingIndex_, index); + return NSIndexPath.castFromPointer(_ret, retain: true, release: true); } - void setCookies_forURL_mainDocumentURL_( - NSArray cookies, NSURL? URL, NSURL? mainDocumentURL) { - _lib._objc_msgSend_855( - _id, - _lib._sel_setCookies_forURL_mainDocumentURL_1, - cookies._id, - URL?._id ?? ffi.nullptr, - mainDocumentURL?._id ?? ffi.nullptr); + NSIndexPath indexPathByRemovingLastIndex() { + final _ret = + _objc_msgSend_358(this.pointer, _sel_indexPathByRemovingLastIndex); + return NSIndexPath.castFromPointer(_ret, retain: true, release: true); } - int get cookieAcceptPolicy { - return _lib._objc_msgSend_856(_id, _lib._sel_cookieAcceptPolicy1); + int indexAtPosition_(int position) { + return _objc_msgSend_359(this.pointer, _sel_indexAtPosition_, position); } - set cookieAcceptPolicy(int value) { - return _lib._objc_msgSend_857( - _id, _lib._sel_setCookieAcceptPolicy_1, value); + int get length { + return _objc_msgSend_29(this.pointer, _sel_length); } - NSArray sortedCookiesUsingDescriptors_(NSArray sortOrder) { - final _ret = _lib._objc_msgSend_68( - _id, _lib._sel_sortedCookiesUsingDescriptors_1, sortOrder._id); - return NSArray._(_ret, _lib, retain: true, release: true); + void getIndexes_range_( + ffi.Pointer indexes, _NSRange positionRange) { + _objc_msgSend_360( + this.pointer, _sel_getIndexes_range_, indexes, positionRange); } - void storeCookies_forTask_(NSArray cookies, NSURLSessionTask task) { - _lib._objc_msgSend_882( - _id, _lib._sel_storeCookies_forTask_1, cookies._id, task._id); + int compare_(NSIndexPath otherObject) { + return _objc_msgSend_361(this.pointer, _sel_compare_, otherObject.pointer); } - void getCookiesForTask_completionHandler_( - NSURLSessionTask task, ObjCBlock_ffiVoid_NSArray completionHandler) { - _lib._objc_msgSend_883(_id, _lib._sel_getCookiesForTask_completionHandler_1, - task._id, completionHandler._id); + void getIndexes_(ffi.Pointer indexes) { + _objc_msgSend_362(this.pointer, _sel_getIndexes_, indexes); } @override - NSHTTPCookieStorage init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); + NSIndexPath init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSIndexPath.castFromPointer(_ret, retain: true, release: true); } - static NSHTTPCookieStorage new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSHTTPCookieStorage1, _lib._sel_new1); - return NSHTTPCookieStorage._(_ret, _lib, retain: false, release: true); + static NSIndexPath new1() { + final _ret = _objc_msgSend_40(_class_NSIndexPath, _sel_new); + return NSIndexPath.castFromPointer(_ret, retain: false, release: true); } - static NSHTTPCookieStorage allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSHTTPCookieStorage1, _lib._sel_allocWithZone_1, zone); - return NSHTTPCookieStorage._(_ret, _lib, retain: false, release: true); + static NSIndexPath allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSIndexPath, _sel_allocWithZone_, zone); + return NSIndexPath.castFromPointer(_ret, retain: false, release: true); } - static NSHTTPCookieStorage alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSHTTPCookieStorage1, _lib._sel_alloc1); - return NSHTTPCookieStorage._(_ret, _lib, retain: false, release: true); + static NSIndexPath alloc() { + final _ret = _objc_msgSend_40(_class_NSIndexPath, _sel_alloc); + return NSIndexPath.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSHTTPCookieStorage1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSIndexPath, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSHTTPCookieStorage1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSIndexPath, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSHTTPCookieStorage1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSIndexPath, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSHTTPCookieStorage1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSIndexPath, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSHTTPCookieStorage1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSIndexPath, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSHTTPCookieStorage1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSIndexPath, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSHTTPCookieStorage1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSHTTPCookieStorage1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSHTTPCookieStorage1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSHTTPCookie extends NSObject { - NSHTTPCookie._(ffi.Pointer id, SwiftLibrary lib, + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSIndexPath, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSIndexPath, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSIndexPath, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSIndexPath = objc.getClass("NSIndexPath"); +late final _sel_indexPathWithIndex_ = objc.registerName("indexPathWithIndex:"); +final _objc_msgSend_355 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_indexPathWithIndexes_length_ = + objc.registerName("indexPathWithIndexes:length:"); +final _objc_msgSend_356 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_initWithIndexes_length_ = + objc.registerName("initWithIndexes:length:"); +late final _sel_initWithIndex_ = objc.registerName("initWithIndex:"); +late final _sel_indexPathByAddingIndex_ = + objc.registerName("indexPathByAddingIndex:"); +final _objc_msgSend_357 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_indexPathByRemovingLastIndex = + objc.registerName("indexPathByRemovingLastIndex"); +final _objc_msgSend_358 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_indexAtPosition_ = objc.registerName("indexAtPosition:"); +final _objc_msgSend_359 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_getIndexes_range_ = objc.registerName("getIndexes:range:"); +final _objc_msgSend_360 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>(); +late final _sel_compare_ = objc.registerName("compare:"); +final _objc_msgSend_361 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_getIndexes_ = objc.registerName("getIndexes:"); +final _objc_msgSend_362 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSInflectionRule extends objc.NSObject { + NSInflectionRule._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSHTTPCookie] that points to the same underlying object as [other]. - static NSHTTPCookie castFrom(T other) { - return NSHTTPCookie._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSHTTPCookie] that wraps the given raw object pointer. - static NSHTTPCookie castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSHTTPCookie._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSHTTPCookie]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSHTTPCookie1); - } - - NSHTTPCookie? initWithProperties_(NSDictionary properties) { - final _ret = _lib._objc_msgSend_851( - _id, _lib._sel_initWithProperties_1, properties._id); - return _ret.address == 0 - ? null - : NSHTTPCookie._(_ret, _lib, retain: true, release: true); - } - - static NSHTTPCookie? cookieWithProperties_( - SwiftLibrary _lib, NSDictionary properties) { - final _ret = _lib._objc_msgSend_852(_lib._class_NSHTTPCookie1, - _lib._sel_cookieWithProperties_1, properties._id); - return _ret.address == 0 - ? null - : NSHTTPCookie._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSInflectionRule] that points to the same underlying object as [other]. + NSInflectionRule.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - static NSDictionary requestHeaderFieldsWithCookies_( - SwiftLibrary _lib, NSArray cookies) { - final _ret = _lib._objc_msgSend_508(_lib._class_NSHTTPCookie1, - _lib._sel_requestHeaderFieldsWithCookies_1, cookies._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSInflectionRule] that wraps the given raw object pointer. + NSInflectionRule.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static NSArray cookiesWithResponseHeaderFields_forURL_( - SwiftLibrary _lib, NSDictionary headerFields, NSURL URL) { - final _ret = _lib._objc_msgSend_853( - _lib._class_NSHTTPCookie1, - _lib._sel_cookiesWithResponseHeaderFields_forURL_1, - headerFields._id, - URL._id); - return NSArray._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSInflectionRule]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSInflectionRule); } - NSDictionary? get properties { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_properties1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + @override + objc.NSObject init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - int get version { - return _lib._objc_msgSend_10(_id, _lib._sel_version1); + static NSInflectionRule getAutomaticRule() { + final _ret = _objc_msgSend_363(_class_NSInflectionRule, _sel_automaticRule); + return NSInflectionRule.castFromPointer(_ret, retain: true, release: true); } - NSString get name { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_name1); - return NSString._(_ret, _lib, retain: true, release: true); + static bool canInflectLanguage_(objc.NSString language) { + return _objc_msgSend_51( + _class_NSInflectionRule, _sel_canInflectLanguage_, language.pointer); } - NSString get value { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_value1); - return NSString._(_ret, _lib, retain: true, release: true); + static bool getCanInflectPreferredLocalization() { + return _objc_msgSend_7( + _class_NSInflectionRule, _sel_canInflectPreferredLocalization); } - NSDate? get expiresDate { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_expiresDate1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + static NSInflectionRule new1() { + final _ret = _objc_msgSend_40(_class_NSInflectionRule, _sel_new); + return NSInflectionRule.castFromPointer(_ret, retain: false, release: true); } - bool get sessionOnly { - return _lib._objc_msgSend_12(_id, _lib._sel_isSessionOnly1); + static NSInflectionRule allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSInflectionRule, _sel_allocWithZone_, zone); + return NSInflectionRule.castFromPointer(_ret, retain: false, release: true); } - NSString get domain { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_domain1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSInflectionRule alloc() { + final _ret = _objc_msgSend_40(_class_NSInflectionRule, _sel_alloc); + return NSInflectionRule.castFromPointer(_ret, retain: false, release: true); } - NSString get path { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_path1); - return NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSInflectionRule, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - bool get secure { - return _lib._objc_msgSend_12(_id, _lib._sel_isSecure1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSInflectionRule, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - bool get HTTPOnly { - return _lib._objc_msgSend_12(_id, _lib._sel_isHTTPOnly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSInflectionRule, _sel_accessInstanceVariablesDirectly); } - NSString? get comment { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_comment1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSInflectionRule, _sel_useStoredAccessor); } - NSURL? get commentURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_commentURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSInflectionRule, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSArray? get portList { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_portList1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSInflectionRule, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSString? get sameSitePolicy { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_sameSitePolicy1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSInflectionRule, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - @override - NSHTTPCookie init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSHTTPCookie._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSInflectionRule, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSHTTPCookie new1(SwiftLibrary _lib) { + static objc.NSObject classForKeyedUnarchiver() { final _ret = - _lib._objc_msgSend_2(_lib._class_NSHTTPCookie1, _lib._sel_new1); - return NSHTTPCookie._(_ret, _lib, retain: false, release: true); + _objc_msgSend_40(_class_NSInflectionRule, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - static NSHTTPCookie allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSHTTPCookie1, _lib._sel_allocWithZone_1, zone); - return NSHTTPCookie._(_ret, _lib, retain: false, release: true); - } +late final _class_NSInflectionRule = objc.getClass("NSInflectionRule"); +late final _sel_automaticRule = objc.registerName("automaticRule"); +final _objc_msgSend_363 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_canInflectLanguage_ = objc.registerName("canInflectLanguage:"); +late final _sel_canInflectPreferredLocalization = + objc.registerName("canInflectPreferredLocalization"); - static NSHTTPCookie alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSHTTPCookie1, _lib._sel_alloc1); - return NSHTTPCookie._(_ret, _lib, retain: false, release: true); - } +class NSOrderedSet extends objc.NSObject { + NSOrderedSet._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSHTTPCookie1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } + /// Constructs a [NSOrderedSet] that points to the same underlying object as [other]. + NSOrderedSet.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSHTTPCookie1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } + /// Constructs a [NSOrderedSet] that wraps the given raw object pointer. + NSOrderedSet.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSHTTPCookie1, _lib._sel_accessInstanceVariablesDirectly1); + /// Returns whether [obj] is an instance of [NSOrderedSet]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSOrderedSet); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSHTTPCookie1, _lib._sel_useStoredAccessor1); + int get count { + return _objc_msgSend_29(this.pointer, _sel_count); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSHTTPCookie1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSObject objectAtIndex_(int idx) { + final _ret = _objc_msgSend_355(this.pointer, _sel_objectAtIndex_, idx); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSHTTPCookie1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + int indexOfObject_(objc.NSObject object) { + return _objc_msgSend_364(this.pointer, _sel_indexOfObject_, object.pointer); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSHTTPCookie1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + @override + NSOrderedSet init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSHTTPCookie1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + NSOrderedSet initWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_365( + this.pointer, _sel_initWithObjects_count_, objects, cnt); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSHTTPCookie1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + NSOrderedSet? initWithCoder_(objc.NSCoder coder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } -} - -abstract class NSHTTPCookieAcceptPolicy { - static const int NSHTTPCookieAcceptPolicyAlways = 0; - static const int NSHTTPCookieAcceptPolicyNever = 1; - static const int NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain = 2; -} -class NSURLSessionTask extends NSObject { - NSURLSessionTask._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + void getObjects_range_( + ffi.Pointer> objects, _NSRange range) { + _objc_msgSend_366(this.pointer, _sel_getObjects_range_, objects, range); + } - /// Returns a [NSURLSessionTask] that points to the same underlying object as [other]. - static NSURLSessionTask castFrom(T other) { - return NSURLSessionTask._(other._id, other._lib, - retain: true, release: true); + objc.NSArray objectsAtIndexes_(objc.NSIndexSet indexes) { + final _ret = _objc_msgSend_367( + this.pointer, _sel_objectsAtIndexes_, indexes.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSURLSessionTask] that wraps the given raw object pointer. - static NSURLSessionTask castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionTask._(other, lib, retain: retain, release: release); + objc.NSObject? get firstObject { + final _ret = _objc_msgSend_66(this.pointer, _sel_firstObject); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSURLSessionTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionTask1); + objc.NSObject? get lastObject { + final _ret = _objc_msgSend_66(this.pointer, _sel_lastObject); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - int get taskIdentifier { - return _lib._objc_msgSend_10(_id, _lib._sel_taskIdentifier1); + bool isEqualToOrderedSet_(NSOrderedSet other) { + return _objc_msgSend_368( + this.pointer, _sel_isEqualToOrderedSet_, other.pointer); } - NSURLRequest? get originalRequest { - final _ret = _lib._objc_msgSend_876(_id, _lib._sel_originalRequest1); - return _ret.address == 0 - ? null - : NSURLRequest._(_ret, _lib, retain: true, release: true); + bool containsObject_(objc.NSObject object) { + return _objc_msgSend_0(this.pointer, _sel_containsObject_, object.pointer); } - NSURLRequest? get currentRequest { - final _ret = _lib._objc_msgSend_876(_id, _lib._sel_currentRequest1); - return _ret.address == 0 - ? null - : NSURLRequest._(_ret, _lib, retain: true, release: true); + bool intersectsOrderedSet_(NSOrderedSet other) { + return _objc_msgSend_368( + this.pointer, _sel_intersectsOrderedSet_, other.pointer); } - NSURLResponse? get response { - final _ret = _lib._objc_msgSend_878(_id, _lib._sel_response1); - return _ret.address == 0 - ? null - : NSURLResponse._(_ret, _lib, retain: true, release: true); + bool intersectsSet_(objc.NSSet set) { + return _objc_msgSend_369(this.pointer, _sel_intersectsSet_, set.pointer); } - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + bool isSubsetOfOrderedSet_(NSOrderedSet other) { + return _objc_msgSend_368( + this.pointer, _sel_isSubsetOfOrderedSet_, other.pointer); } - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + bool isSubsetOfSet_(objc.NSSet set) { + return _objc_msgSend_369(this.pointer, _sel_isSubsetOfSet_, set.pointer); } - NSProgress get progress { - final _ret = _lib._objc_msgSend_879(_id, _lib._sel_progress1); - return NSProgress._(_ret, _lib, retain: true, release: true); + objc.NSObject objectAtIndexedSubscript_(int idx) { + final _ret = + _objc_msgSend_355(this.pointer, _sel_objectAtIndexedSubscript_, idx); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSDate? get earliestBeginDate { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_earliestBeginDate1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + objc.NSEnumerator objectEnumerator() { + final _ret = _objc_msgSend_370(this.pointer, _sel_objectEnumerator); + return objc.NSEnumerator.castFromPointer(_ret, retain: true, release: true); } - set earliestBeginDate(NSDate? value) { - return _lib._objc_msgSend_800( - _id, _lib._sel_setEarliestBeginDate_1, value?._id ?? ffi.nullptr); + objc.NSEnumerator reverseObjectEnumerator() { + final _ret = _objc_msgSend_370(this.pointer, _sel_reverseObjectEnumerator); + return objc.NSEnumerator.castFromPointer(_ret, retain: true, release: true); } - int get countOfBytesClientExpectsToSend { - return _lib._objc_msgSend_666( - _id, _lib._sel_countOfBytesClientExpectsToSend1); + NSOrderedSet get reversedOrderedSet { + final _ret = _objc_msgSend_371(this.pointer, _sel_reversedOrderedSet); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - set countOfBytesClientExpectsToSend(int value) { - return _lib._objc_msgSend_667( - _id, _lib._sel_setCountOfBytesClientExpectsToSend_1, value); + objc.NSArray get array { + final _ret = _objc_msgSend_6(this.pointer, _sel_array); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int get countOfBytesClientExpectsToReceive { - return _lib._objc_msgSend_666( - _id, _lib._sel_countOfBytesClientExpectsToReceive1); + objc.NSSet get set1 { + final _ret = _objc_msgSend_372(this.pointer, _sel_set); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - set countOfBytesClientExpectsToReceive(int value) { - return _lib._objc_msgSend_667( - _id, _lib._sel_setCountOfBytesClientExpectsToReceive_1, value); + void enumerateObjectsUsingBlock_( + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool block) { + _objc_msgSend_373( + this.pointer, _sel_enumerateObjectsUsingBlock_, block.pointer); } - int get countOfBytesSent { - return _lib._objc_msgSend_666(_id, _lib._sel_countOfBytesSent1); + void enumerateObjectsWithOptions_usingBlock_( + int opts, ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool block) { + _objc_msgSend_374(this.pointer, + _sel_enumerateObjectsWithOptions_usingBlock_, opts, block.pointer); } - int get countOfBytesReceived { - return _lib._objc_msgSend_666(_id, _lib._sel_countOfBytesReceived1); + void enumerateObjectsAtIndexes_options_usingBlock_(objc.NSIndexSet s, + int opts, ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool block) { + _objc_msgSend_375( + this.pointer, + _sel_enumerateObjectsAtIndexes_options_usingBlock_, + s.pointer, + opts, + block.pointer); } - int get countOfBytesExpectedToSend { - return _lib._objc_msgSend_666(_id, _lib._sel_countOfBytesExpectedToSend1); + int indexOfObjectPassingTest_( + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + return _objc_msgSend_376( + this.pointer, _sel_indexOfObjectPassingTest_, predicate.pointer); } - int get countOfBytesExpectedToReceive { - return _lib._objc_msgSend_666( - _id, _lib._sel_countOfBytesExpectedToReceive1); + int indexOfObjectWithOptions_passingTest_( + int opts, ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + return _objc_msgSend_377(this.pointer, + _sel_indexOfObjectWithOptions_passingTest_, opts, predicate.pointer); } - NSString? get taskDescription { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_taskDescription1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + int indexOfObjectAtIndexes_options_passingTest_(objc.NSIndexSet s, int opts, + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + return _objc_msgSend_378( + this.pointer, + _sel_indexOfObjectAtIndexes_options_passingTest_, + s.pointer, + opts, + predicate.pointer); } - set taskDescription(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setTaskDescription_1, value?._id ?? ffi.nullptr); + objc.NSIndexSet indexesOfObjectsPassingTest_( + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + final _ret = _objc_msgSend_379( + this.pointer, _sel_indexesOfObjectsPassingTest_, predicate.pointer); + return objc.NSIndexSet.castFromPointer(_ret, retain: true, release: true); } - void cancel() { - _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + objc.NSIndexSet indexesOfObjectsWithOptions_passingTest_( + int opts, ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + final _ret = _objc_msgSend_380(this.pointer, + _sel_indexesOfObjectsWithOptions_passingTest_, opts, predicate.pointer); + return objc.NSIndexSet.castFromPointer(_ret, retain: true, release: true); } - int get state { - return _lib._objc_msgSend_880(_id, _lib._sel_state1); + objc.NSIndexSet indexesOfObjectsAtIndexes_options_passingTest_( + objc.NSIndexSet s, + int opts, + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + final _ret = _objc_msgSend_381( + this.pointer, + _sel_indexesOfObjectsAtIndexes_options_passingTest_, + s.pointer, + opts, + predicate.pointer); + return objc.NSIndexSet.castFromPointer(_ret, retain: true, release: true); } - NSError? get error { - final _ret = _lib._objc_msgSend_322(_id, _lib._sel_error1); - return _ret.address == 0 - ? null - : NSError._(_ret, _lib, retain: true, release: true); + int indexOfObject_inSortedRange_options_usingComparator_( + objc.NSObject object, + _NSRange range, + int opts, + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmp) { + return _objc_msgSend_382( + this.pointer, + _sel_indexOfObject_inSortedRange_options_usingComparator_, + object.pointer, + range, + opts, + cmp.pointer); } - void suspend() { - _lib._objc_msgSend_1(_id, _lib._sel_suspend1); + objc.NSArray sortedArrayUsingComparator_( + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + final _ret = _objc_msgSend_383( + this.pointer, _sel_sortedArrayUsingComparator_, cmptr.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void resume() { - _lib._objc_msgSend_1(_id, _lib._sel_resume1); + objc.NSArray sortedArrayWithOptions_usingComparator_(int opts, + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + final _ret = _objc_msgSend_384(this.pointer, + _sel_sortedArrayWithOptions_usingComparator_, opts, cmptr.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - double get priority { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_239_fpret(_id, _lib._sel_priority1) - : _lib._objc_msgSend_239(_id, _lib._sel_priority1); + objc.NSString get description { + final _ret = _objc_msgSend_12(this.pointer, _sel_description); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set priority(double value) { - return _lib._objc_msgSend_881(_id, _lib._sel_setPriority_1, value); + objc.NSString descriptionWithLocale_(objc.NSObject? locale) { + final _ret = _objc_msgSend_385(this.pointer, _sel_descriptionWithLocale_, + locale?.pointer ?? ffi.nullptr); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool get prefersIncrementalDelivery { - return _lib._objc_msgSend_12(_id, _lib._sel_prefersIncrementalDelivery1); + objc.NSString descriptionWithLocale_indent_( + objc.NSObject? locale, int level) { + final _ret = _objc_msgSend_386( + this.pointer, + _sel_descriptionWithLocale_indent_, + locale?.pointer ?? ffi.nullptr, + level); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set prefersIncrementalDelivery(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setPrefersIncrementalDelivery_1, value); + static NSOrderedSet orderedSet() { + final _ret = _objc_msgSend_40(_class_NSOrderedSet, _sel_orderedSet); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - @override - NSURLSessionTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionTask._(_ret, _lib, retain: true, release: true); + static NSOrderedSet orderedSetWithObject_(objc.NSObject object) { + final _ret = _objc_msgSend_387( + _class_NSOrderedSet, _sel_orderedSetWithObject_, object.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionTask new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLSessionTask1, _lib._sel_new1); - return NSURLSessionTask._(_ret, _lib, retain: false, release: true); + static NSOrderedSet orderedSetWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_365( + _class_NSOrderedSet, _sel_orderedSetWithObjects_count_, objects, cnt); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionTask allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSessionTask1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionTask._(_ret, _lib, retain: false, release: true); + static NSOrderedSet orderedSetWithObjects_(objc.NSObject firstObj) { + final _ret = _objc_msgSend_387( + _class_NSOrderedSet, _sel_orderedSetWithObjects_, firstObj.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionTask alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLSessionTask1, _lib._sel_alloc1); - return NSURLSessionTask._(_ret, _lib, retain: false, release: true); + static NSOrderedSet orderedSetWithOrderedSet_(NSOrderedSet set) { + final _ret = _objc_msgSend_388( + _class_NSOrderedSet, _sel_orderedSetWithOrderedSet_, set.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static NSOrderedSet orderedSetWithOrderedSet_range_copyItems_( + NSOrderedSet set, _NSRange range, bool flag) { + final _ret = _objc_msgSend_389( + _class_NSOrderedSet, + _sel_orderedSetWithOrderedSet_range_copyItems_, + set.pointer, + range, + flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static NSOrderedSet orderedSetWithArray_(objc.NSArray array) { + final _ret = _objc_msgSend_390( + _class_NSOrderedSet, _sel_orderedSetWithArray_, array.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionTask1, - _lib._sel_accessInstanceVariablesDirectly1); + static NSOrderedSet orderedSetWithArray_range_copyItems_( + objc.NSArray array, _NSRange range, bool flag) { + final _ret = _objc_msgSend_391(_class_NSOrderedSet, + _sel_orderedSetWithArray_range_copyItems_, array.pointer, range, flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionTask1, _lib._sel_useStoredAccessor1); + static NSOrderedSet orderedSetWithSet_(objc.NSSet set) { + final _ret = _objc_msgSend_392( + _class_NSOrderedSet, _sel_orderedSetWithSet_, set.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSessionTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static NSOrderedSet orderedSetWithSet_copyItems_(objc.NSSet set, bool flag) { + final _ret = _objc_msgSend_393(_class_NSOrderedSet, + _sel_orderedSetWithSet_copyItems_, set.pointer, flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + NSOrderedSet initWithObject_(objc.NSObject object) { + final _ret = + _objc_msgSend_387(this.pointer, _sel_initWithObject_, object.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + NSOrderedSet initWithObjects_(objc.NSObject firstObj) { + final _ret = _objc_msgSend_387( + this.pointer, _sel_initWithObjects_, firstObj.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLSessionTask1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + NSOrderedSet initWithOrderedSet_(NSOrderedSet set) { + final _ret = + _objc_msgSend_388(this.pointer, _sel_initWithOrderedSet_, set.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionTask1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + NSOrderedSet initWithOrderedSet_copyItems_(NSOrderedSet set, bool flag) { + final _ret = _objc_msgSend_394( + this.pointer, _sel_initWithOrderedSet_copyItems_, set.pointer, flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } -} -class NSURLRequest extends NSObject { - NSURLRequest._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + NSOrderedSet initWithOrderedSet_range_copyItems_( + NSOrderedSet set, _NSRange range, bool flag) { + final _ret = _objc_msgSend_389(this.pointer, + _sel_initWithOrderedSet_range_copyItems_, set.pointer, range, flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); + } - /// Returns a [NSURLRequest] that points to the same underlying object as [other]. - static NSURLRequest castFrom(T other) { - return NSURLRequest._(other._id, other._lib, retain: true, release: true); + NSOrderedSet initWithArray_(objc.NSArray array) { + final _ret = + _objc_msgSend_390(this.pointer, _sel_initWithArray_, array.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSURLRequest] that wraps the given raw object pointer. - static NSURLRequest castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLRequest._(other, lib, retain: retain, release: release); + NSOrderedSet initWithArray_copyItems_(objc.NSArray set, bool flag) { + final _ret = _objc_msgSend_395( + this.pointer, _sel_initWithArray_copyItems_, set.pointer, flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - /// Returns whether [obj] is an instance of [NSURLRequest]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLRequest1); + NSOrderedSet initWithArray_range_copyItems_( + objc.NSArray set, _NSRange range, bool flag) { + final _ret = _objc_msgSend_391(this.pointer, + _sel_initWithArray_range_copyItems_, set.pointer, range, flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - static NSURLRequest requestWithURL_(SwiftLibrary _lib, NSURL URL) { - final _ret = _lib._objc_msgSend_262( - _lib._class_NSURLRequest1, _lib._sel_requestWithURL_1, URL._id); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + NSOrderedSet initWithSet_(objc.NSSet set) { + final _ret = + _objc_msgSend_392(this.pointer, _sel_initWithSet_, set.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - static bool getSupportsSecureCoding(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLRequest1, _lib._sel_supportsSecureCoding1); + NSOrderedSet initWithSet_copyItems_(objc.NSSet set, bool flag) { + final _ret = _objc_msgSend_393( + this.pointer, _sel_initWithSet_copyItems_, set.pointer, flag); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - static NSURLRequest requestWithURL_cachePolicy_timeoutInterval_( - SwiftLibrary _lib, NSURL URL, int cachePolicy, double timeoutInterval) { - final _ret = _lib._objc_msgSend_858( - _lib._class_NSURLRequest1, - _lib._sel_requestWithURL_cachePolicy_timeoutInterval_1, - URL._id, - cachePolicy, - timeoutInterval); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + objc.NSObject differenceFromOrderedSet_withOptions_usingEquivalenceTest_( + NSOrderedSet other, + int options, + ObjCBlock_bool_objcObjCObject_objcObjCObject block) { + final _ret = _objc_msgSend_396( + this.pointer, + _sel_differenceFromOrderedSet_withOptions_usingEquivalenceTest_, + other.pointer, + options, + block.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSURLRequest initWithURL_(NSURL URL) { - final _ret = _lib._objc_msgSend_262(_id, _lib._sel_initWithURL_1, URL._id); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + objc.NSObject differenceFromOrderedSet_withOptions_( + NSOrderedSet other, int options) { + final _ret = _objc_msgSend_397(this.pointer, + _sel_differenceFromOrderedSet_withOptions_, other.pointer, options); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSURLRequest initWithURL_cachePolicy_timeoutInterval_( - NSURL URL, int cachePolicy, double timeoutInterval) { - final _ret = _lib._objc_msgSend_858( - _id, - _lib._sel_initWithURL_cachePolicy_timeoutInterval_1, - URL._id, - cachePolicy, - timeoutInterval); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + objc.NSObject differenceFromOrderedSet_(NSOrderedSet other) { + final _ret = _objc_msgSend_388( + this.pointer, _sel_differenceFromOrderedSet_, other.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSURL? get URL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_URL1); + NSOrderedSet? orderedSetByApplyingDifference_(objc.NSObject difference) { + final _ret = _objc_msgSend_398( + this.pointer, _sel_orderedSetByApplyingDifference_, difference.pointer); return _ret.address == 0 ? null - : NSURL._(_ret, _lib, retain: true, release: true); + : NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - int get cachePolicy { - return _lib._objc_msgSend_859(_id, _lib._sel_cachePolicy1); + objc.NSObject valueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_35(this.pointer, _sel_valueForKey_, key.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - double get timeoutInterval { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_timeoutInterval1) - : _lib._objc_msgSend_165(_id, _lib._sel_timeoutInterval1); + void setValue_forKey_(objc.NSObject? value, objc.NSString key) { + _objc_msgSend_399(this.pointer, _sel_setValue_forKey_, + value?.pointer ?? ffi.nullptr, key.pointer); } - NSURL? get mainDocumentURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_mainDocumentURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + void addObserver_forKeyPath_options_context_(objc.NSObject observer, + objc.NSString keyPath, int options, ffi.Pointer context) { + _objc_msgSend_400( + this.pointer, + _sel_addObserver_forKeyPath_options_context_, + observer.pointer, + keyPath.pointer, + options, + context); } - int get networkServiceType { - return _lib._objc_msgSend_860(_id, _lib._sel_networkServiceType1); + void removeObserver_forKeyPath_context_(objc.NSObject observer, + objc.NSString keyPath, ffi.Pointer context) { + _objc_msgSend_401(this.pointer, _sel_removeObserver_forKeyPath_context_, + observer.pointer, keyPath.pointer, context); } - bool get allowsCellularAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsCellularAccess1); + void removeObserver_forKeyPath_( + objc.NSObject observer, objc.NSString keyPath) { + _objc_msgSend_402(this.pointer, _sel_removeObserver_forKeyPath_, + observer.pointer, keyPath.pointer); } - bool get allowsExpensiveNetworkAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsExpensiveNetworkAccess1); + objc.NSArray sortedArrayUsingDescriptors_(objc.NSArray sortDescriptors) { + final _ret = _objc_msgSend_67(this.pointer, + _sel_sortedArrayUsingDescriptors_, sortDescriptors.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool get allowsConstrainedNetworkAccess { - return _lib._objc_msgSend_12( - _id, _lib._sel_allowsConstrainedNetworkAccess1); + NSOrderedSet filteredOrderedSetUsingPredicate_(NSPredicate p) { + final _ret = _objc_msgSend_412( + this.pointer, _sel_filteredOrderedSetUsingPredicate_, p.pointer); + return NSOrderedSet.castFromPointer(_ret, retain: true, release: true); } - bool get assumesHTTP3Capable { - return _lib._objc_msgSend_12(_id, _lib._sel_assumesHTTP3Capable1); + static NSOrderedSet new1() { + final _ret = _objc_msgSend_40(_class_NSOrderedSet, _sel_new); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - int get attribution { - return _lib._objc_msgSend_861(_id, _lib._sel_attribution1); + static NSOrderedSet allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSOrderedSet, _sel_allocWithZone_, zone); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - bool get requiresDNSSECValidation { - return _lib._objc_msgSend_12(_id, _lib._sel_requiresDNSSECValidation1); + static NSOrderedSet alloc() { + final _ret = _objc_msgSend_40(_class_NSOrderedSet, _sel_alloc); + return NSOrderedSet.castFromPointer(_ret, retain: false, release: true); } - NSString? get HTTPMethod { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_HTTPMethod1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSOrderedSet, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSDictionary? get allHTTPHeaderFields { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_allHTTPHeaderFields1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSOrderedSet, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSString? valueForHTTPHeaderField_(NSString field) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_valueForHTTPHeaderField_1, field._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSOrderedSet, _sel_accessInstanceVariablesDirectly); } - NSData? get HTTPBody { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_HTTPBody1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSOrderedSet, _sel_useStoredAccessor); } - NSInputStream? get HTTPBodyStream { - final _ret = _lib._objc_msgSend_875(_id, _lib._sel_HTTPBodyStream1); - return _ret.address == 0 - ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSOrderedSet, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - bool get HTTPShouldHandleCookies { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldHandleCookies1); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSOrderedSet, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - bool get HTTPShouldUsePipelining { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldUsePipelining1); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSOrderedSet, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSOrderedSet, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSOrderedSet, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSOrderedSet = objc.getClass("NSOrderedSet"); +late final _sel_count = objc.registerName("count"); +late final _sel_objectAtIndex_ = objc.registerName("objectAtIndex:"); +late final _sel_indexOfObject_ = objc.registerName("indexOfObject:"); +final _objc_msgSend_364 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithObjects_count_ = + objc.registerName("initWithObjects:count:"); +final _objc_msgSend_365 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.UnsignedLong)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + int)>(); +late final _sel_getObjects_range_ = objc.registerName("getObjects:range:"); +final _objc_msgSend_366 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + _NSRange)>(); +late final _sel_objectsAtIndexes_ = objc.registerName("objectsAtIndexes:"); +final _objc_msgSend_367 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_firstObject = objc.registerName("firstObject"); +late final _sel_lastObject = objc.registerName("lastObject"); +late final _sel_isEqualToOrderedSet_ = + objc.registerName("isEqualToOrderedSet:"); +final _objc_msgSend_368 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_containsObject_ = objc.registerName("containsObject:"); +late final _sel_intersectsOrderedSet_ = + objc.registerName("intersectsOrderedSet:"); +late final _sel_intersectsSet_ = objc.registerName("intersectsSet:"); +final _objc_msgSend_369 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isSubsetOfOrderedSet_ = + objc.registerName("isSubsetOfOrderedSet:"); +late final _sel_isSubsetOfSet_ = objc.registerName("isSubsetOfSet:"); +late final _sel_objectAtIndexedSubscript_ = + objc.registerName("objectAtIndexedSubscript:"); +late final _sel_objectEnumerator = objc.registerName("objectEnumerator"); +final _objc_msgSend_370 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_reverseObjectEnumerator = + objc.registerName("reverseObjectEnumerator"); +late final _sel_reversedOrderedSet = objc.registerName("reversedOrderedSet"); +final _objc_msgSend_371 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_array = objc.registerName("array"); +late final _sel_set = objc.registerName("set"); +final _objc_msgSend_372 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer, int, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureRegistry = + , int, ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_registerClosure( + void Function(ffi.Pointer, int, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureRegistry[id] = + fn; + return ffi.Pointer.fromAddress(id); +} - @override - NSURLRequest init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLRequest._(_ret, _lib, retain: true, release: true); - } +void _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); - static NSURLRequest new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLRequest1, _lib._sel_new1); - return NSURLRequest._(_ret, _lib, retain: false, release: true); - } +class ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool + extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); - static NSURLRequest allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLRequest1, _lib._sel_allocWithZone_1, zone); - return NSURLRequest._(_ret, _lib, retain: false, release: true); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool._(pointer, + retain: retain, release: release); } - static NSURLRequest alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLRequest1, _lib._sel_alloc1); - return NSURLRequest._(_ret, _lib, retain: false, release: true); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLRequest1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool.fromFunction( + void Function(objc.NSObject, int, ffi.Pointer) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_registerClosure( + (ffi.Pointer arg0, int arg1, + ffi.Pointer arg2) => + fn(objc.NSObject.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.Pointer? _dartFuncTrampoline; - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLRequest1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool.listener( + void Function(objc.NSObject, int, ffi.Pointer) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_registerClosure( + (ffi.Pointer arg0, int arg1, + ffi.Pointer arg2) => + fn(objc.NSObject.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(objc.NSObject arg0, int arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>()(pointer, arg0.pointer, arg1, arg2); +} + +late final _sel_enumerateObjectsUsingBlock_ = + objc.registerName("enumerateObjectsUsingBlock:"); +final _objc_msgSend_373 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSEnumerationOptions { + static const int NSEnumerationConcurrent = 1; + static const int NSEnumerationReverse = 2; +} - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLRequest1, _lib._sel_accessInstanceVariablesDirectly1); +late final _sel_enumerateObjectsWithOptions_usingBlock_ = + objc.registerName("enumerateObjectsWithOptions:usingBlock:"); +final _objc_msgSend_374 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_enumerateObjectsAtIndexes_options_usingBlock_ = + objc.registerName("enumerateObjectsAtIndexes:options:usingBlock:"); +final _objc_msgSend_375 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +bool _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>>() + .asFunction< + bool Function(ffi.Pointer, int, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureRegistry = + , int, ffi.Pointer)>{}; +int _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_registerClosure( + bool Function(ffi.Pointer, int, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureRegistryIndex; + _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +bool _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); + +class ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool + extends objc.ObjCBlockBase { + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool._(pointer, + retain: retain, release: release); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLRequest1, _lib._sel_useStoredAccessor1); + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline, + false) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool.fromFunction( + bool Function(objc.NSObject, int, ffi.Pointer) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureTrampoline, false) + .cast(), + _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_registerClosure( + (ffi.Pointer arg0, int arg1, ffi.Pointer arg2) => + fn(objc.NSObject.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.Pointer? _dartFuncTrampoline; + + bool call(objc.NSObject arg0, int arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1, + ffi.Pointer arg2)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>()(pointer, arg0.pointer, arg1, arg2); +} + +late final _sel_indexOfObjectPassingTest_ = + objc.registerName("indexOfObjectPassingTest:"); +final _objc_msgSend_376 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_indexOfObjectWithOptions_passingTest_ = + objc.registerName("indexOfObjectWithOptions:passingTest:"); +final _objc_msgSend_377 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_indexOfObjectAtIndexes_options_passingTest_ = + objc.registerName("indexOfObjectAtIndexes:options:passingTest:"); +final _objc_msgSend_378 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_indexesOfObjectsPassingTest_ = + objc.registerName("indexesOfObjectsPassingTest:"); +final _objc_msgSend_379 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_indexesOfObjectsWithOptions_passingTest_ = + objc.registerName("indexesOfObjectsWithOptions:passingTest:"); +final _objc_msgSend_380 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_indexesOfObjectsAtIndexes_options_passingTest_ = + objc.registerName("indexesOfObjectsAtIndexes:options:passingTest:"); +final _objc_msgSend_381 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +int _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +final _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureRegistry = + , ffi.Pointer)>{}; +int _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_registerClosure( + int Function(ffi.Pointer, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureRegistryIndex; + _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureRegistry[ + id] = fn; + return ffi.Pointer.fromAddress(id); +} + +int _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureRegistry[ + block.ref.target.address]!(arg0, arg1); + +class ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject + extends objc.ObjCBlockBase { + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject + castFromPointer(ffi.Pointer pointer, + {bool retain = false, bool release = false}) { + return ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject._(pointer, + retain: retain, release: release); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLRequest1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_fnPtrTrampoline, + 0) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject.fromFunction( + int Function(objc.NSObject, objc.NSObject) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureTrampoline, 0) + .cast(), + _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => + fn(objc.NSObject.castFromPointer(arg0, retain: true, release: true), objc.NSObject.castFromPointer(arg1, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; + + int call(objc.NSObject arg0, objc.NSObject arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0.pointer, arg1.pointer); +} + +late final _sel_indexOfObject_inSortedRange_options_usingComparator_ = + objc.registerName("indexOfObject:inSortedRange:options:usingComparator:"); +final _objc_msgSend_382 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + int, + ffi.Pointer)>(); +late final _sel_sortedArrayUsingComparator_ = + objc.registerName("sortedArrayUsingComparator:"); +final _objc_msgSend_383 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSSortOptions { + static const int NSSortConcurrent = 1; + static const int NSSortStable = 16; +} + +late final _sel_sortedArrayWithOptions_usingComparator_ = + objc.registerName("sortedArrayWithOptions:usingComparator:"); +final _objc_msgSend_384 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_descriptionWithLocale_ = + objc.registerName("descriptionWithLocale:"); +final _objc_msgSend_385 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_descriptionWithLocale_indent_ = + objc.registerName("descriptionWithLocale:indent:"); +final _objc_msgSend_386 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_orderedSet = objc.registerName("orderedSet"); +late final _sel_orderedSetWithObject_ = + objc.registerName("orderedSetWithObject:"); +final _objc_msgSend_387 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_orderedSetWithObjects_count_ = + objc.registerName("orderedSetWithObjects:count:"); +late final _sel_orderedSetWithObjects_ = + objc.registerName("orderedSetWithObjects:"); +late final _sel_orderedSetWithOrderedSet_ = + objc.registerName("orderedSetWithOrderedSet:"); +final _objc_msgSend_388 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_orderedSetWithOrderedSet_range_copyItems_ = + objc.registerName("orderedSetWithOrderedSet:range:copyItems:"); +final _objc_msgSend_389 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + bool)>(); +late final _sel_orderedSetWithArray_ = + objc.registerName("orderedSetWithArray:"); +final _objc_msgSend_390 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_orderedSetWithArray_range_copyItems_ = + objc.registerName("orderedSetWithArray:range:copyItems:"); +final _objc_msgSend_391 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + bool)>(); +late final _sel_orderedSetWithSet_ = objc.registerName("orderedSetWithSet:"); +final _objc_msgSend_392 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_orderedSetWithSet_copyItems_ = + objc.registerName("orderedSetWithSet:copyItems:"); +final _objc_msgSend_393 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_initWithObject_ = objc.registerName("initWithObject:"); +late final _sel_initWithObjects_ = objc.registerName("initWithObjects:"); +late final _sel_initWithOrderedSet_ = objc.registerName("initWithOrderedSet:"); +late final _sel_initWithOrderedSet_copyItems_ = + objc.registerName("initWithOrderedSet:copyItems:"); +final _objc_msgSend_394 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_initWithOrderedSet_range_copyItems_ = + objc.registerName("initWithOrderedSet:range:copyItems:"); +late final _sel_initWithArray_ = objc.registerName("initWithArray:"); +late final _sel_initWithArray_copyItems_ = + objc.registerName("initWithArray:copyItems:"); +final _objc_msgSend_395 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_initWithArray_range_copyItems_ = + objc.registerName("initWithArray:range:copyItems:"); +late final _sel_initWithSet_ = objc.registerName("initWithSet:"); +late final _sel_initWithSet_copyItems_ = + objc.registerName("initWithSet:copyItems:"); + +abstract class NSOrderedCollectionDifferenceCalculationOptions { + static const int NSOrderedCollectionDifferenceCalculationOmitInsertedObjects = + 1; + static const int NSOrderedCollectionDifferenceCalculationOmitRemovedObjects = + 2; + static const int NSOrderedCollectionDifferenceCalculationInferMoves = 4; +} + +bool _ObjCBlock_bool_objcObjCObject_objcObjCObject_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +final _ObjCBlock_bool_objcObjCObject_objcObjCObject_closureRegistry = , ffi.Pointer)>{}; +int _ObjCBlock_bool_objcObjCObject_objcObjCObject_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_bool_objcObjCObject_objcObjCObject_registerClosure( + bool Function( + ffi.Pointer, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_bool_objcObjCObject_objcObjCObject_closureRegistryIndex; + _ObjCBlock_bool_objcObjCObject_objcObjCObject_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLRequest1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } +bool _ObjCBlock_bool_objcObjCObject_objcObjCObject_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + _ObjCBlock_bool_objcObjCObject_objcObjCObject_closureRegistry[ + block.ref.target.address]!(arg0, arg1); - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLRequest1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } +class ObjCBlock_bool_objcObjCObject_objcObjCObject extends objc.ObjCBlockBase { + ObjCBlock_bool_objcObjCObject_objcObjCObject._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURLRequest1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_bool_objcObjCObject_objcObjCObject castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_bool_objcObjCObject_objcObjCObject._(pointer, + retain: retain, release: release); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLRequest1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_objcObjCObject.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_objcObjCObject_fnPtrTrampoline, + false) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; -abstract class NSURLRequestCachePolicy { - static const int NSURLRequestUseProtocolCachePolicy = 0; - static const int NSURLRequestReloadIgnoringLocalCacheData = 1; - static const int NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4; - static const int NSURLRequestReloadIgnoringCacheData = 1; - static const int NSURLRequestReturnCacheDataElseLoad = 2; - static const int NSURLRequestReturnCacheDataDontLoad = 3; - static const int NSURLRequestReloadRevalidatingCacheData = 5; -} + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_objcObjCObject.fromFunction( + bool Function(objc.NSObject, objc.NSObject) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_objcObjCObject_closureTrampoline, false) + .cast(), + _ObjCBlock_bool_objcObjCObject_objcObjCObject_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => + fn(objc.NSObject.castFromPointer(arg0, retain: true, release: true), objc.NSObject.castFromPointer(arg1, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; -abstract class NSURLRequestNetworkServiceType { - static const int NSURLNetworkServiceTypeDefault = 0; - static const int NSURLNetworkServiceTypeVoIP = 1; - static const int NSURLNetworkServiceTypeVideo = 2; - static const int NSURLNetworkServiceTypeBackground = 3; - static const int NSURLNetworkServiceTypeVoice = 4; - static const int NSURLNetworkServiceTypeResponsiveData = 6; - static const int NSURLNetworkServiceTypeAVStreaming = 8; - static const int NSURLNetworkServiceTypeResponsiveAV = 9; - static const int NSURLNetworkServiceTypeCallSignaling = 11; -} + bool call(objc.NSObject arg0, objc.NSObject arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0.pointer, arg1.pointer); +} + +late final _sel_differenceFromOrderedSet_withOptions_usingEquivalenceTest_ = + objc.registerName( + "differenceFromOrderedSet:withOptions:usingEquivalenceTest:"); +final _objc_msgSend_396 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_differenceFromOrderedSet_withOptions_ = + objc.registerName("differenceFromOrderedSet:withOptions:"); +final _objc_msgSend_397 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_differenceFromOrderedSet_ = + objc.registerName("differenceFromOrderedSet:"); +late final _sel_orderedSetByApplyingDifference_ = + objc.registerName("orderedSetByApplyingDifference:"); +final _objc_msgSend_398 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_valueForKey_ = objc.registerName("valueForKey:"); +late final _sel_setValue_forKey_ = objc.registerName("setValue:forKey:"); +final _objc_msgSend_399 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); -abstract class NSURLRequestAttribution { - static const int NSURLRequestAttributionDeveloper = 0; - static const int NSURLRequestAttributionUser = 1; +abstract class NSKeyValueObservingOptions { + static const int NSKeyValueObservingOptionNew = 1; + static const int NSKeyValueObservingOptionOld = 2; + static const int NSKeyValueObservingOptionInitial = 4; + static const int NSKeyValueObservingOptionPrior = 8; } -class NSInputStream extends NSStream { - NSInputStream._(ffi.Pointer id, SwiftLibrary lib, +late final _sel_addObserver_forKeyPath_options_context_ = + objc.registerName("addObserver:forKeyPath:options:context:"); +final _objc_msgSend_400 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_removeObserver_forKeyPath_context_ = + objc.registerName("removeObserver:forKeyPath:context:"); +final _objc_msgSend_401 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeObserver_forKeyPath_ = + objc.registerName("removeObserver:forKeyPath:"); +final _objc_msgSend_402 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_sortedArrayUsingDescriptors_ = + objc.registerName("sortedArrayUsingDescriptors:"); + +class NSPredicate extends objc.NSObject { + NSPredicate._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSInputStream] that points to the same underlying object as [other]. - static NSInputStream castFrom(T other) { - return NSInputStream._(other._id, other._lib, retain: true, release: true); - } + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSInputStream] that wraps the given raw object pointer. - static NSInputStream castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSInputStream._(other, lib, retain: retain, release: release); - } + /// Constructs a [NSPredicate] that points to the same underlying object as [other]. + NSPredicate.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns whether [obj] is an instance of [NSInputStream]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSInputStream1); - } + /// Constructs a [NSPredicate] that wraps the given raw object pointer. + NSPredicate.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - int read_maxLength_(ffi.Pointer buffer, int len) { - return _lib._objc_msgSend_864(_id, _lib._sel_read_maxLength_1, buffer, len); + /// Returns whether [obj] is an instance of [NSPredicate]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSPredicate); } - bool getBuffer_length_(ffi.Pointer> buffer, - ffi.Pointer len) { - return _lib._objc_msgSend_873( - _id, _lib._sel_getBuffer_length_1, buffer, len); + static NSPredicate predicateWithFormat_argumentArray_( + objc.NSString predicateFormat, objc.NSArray? arguments) { + final _ret = _objc_msgSend_403( + _class_NSPredicate, + _sel_predicateWithFormat_argumentArray_, + predicateFormat.pointer, + arguments?.pointer ?? ffi.nullptr); + return NSPredicate.castFromPointer(_ret, retain: true, release: true); } - bool get hasBytesAvailable { - return _lib._objc_msgSend_12(_id, _lib._sel_hasBytesAvailable1); + static NSPredicate predicateWithFormat_(objc.NSString predicateFormat) { + final _ret = _objc_msgSend_404( + _class_NSPredicate, _sel_predicateWithFormat_, predicateFormat.pointer); + return NSPredicate.castFromPointer(_ret, retain: true, release: true); } - NSInputStream initWithData_(NSData data) { - final _ret = - _lib._objc_msgSend_279(_id, _lib._sel_initWithData_1, data._id); - return NSInputStream._(_ret, _lib, retain: true, release: true); + static NSPredicate predicateWithFormat_arguments_( + objc.NSString predicateFormat, ffi.Pointer<__va_list_tag> argList) { + final _ret = _objc_msgSend_405(_class_NSPredicate, + _sel_predicateWithFormat_arguments_, predicateFormat.pointer, argList); + return NSPredicate.castFromPointer(_ret, retain: true, release: true); } - NSInputStream? initWithURL_(NSURL url) { - final _ret = _lib._objc_msgSend_277(_id, _lib._sel_initWithURL_1, url._id); + static NSPredicate? predicateFromMetadataQueryString_( + objc.NSString queryString) { + final _ret = _objc_msgSend_406(_class_NSPredicate, + _sel_predicateFromMetadataQueryString_, queryString.pointer); return _ret.address == 0 ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); + : NSPredicate.castFromPointer(_ret, retain: true, release: true); } - NSInputStream? initWithFileAtPath_(NSString path) { + static NSPredicate predicateWithValue_(bool value) { final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_initWithFileAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); + _objc_msgSend_407(_class_NSPredicate, _sel_predicateWithValue_, value); + return NSPredicate.castFromPointer(_ret, retain: true, release: true); } - static NSInputStream? inputStreamWithData_(SwiftLibrary _lib, NSData data) { - final _ret = _lib._objc_msgSend_874( - _lib._class_NSInputStream1, _lib._sel_inputStreamWithData_1, data._id); - return _ret.address == 0 - ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); + static NSPredicate predicateWithBlock_( + ObjCBlock_bool_objcObjCObject_NSDictionary block) { + final _ret = _objc_msgSend_408( + _class_NSPredicate, _sel_predicateWithBlock_, block.pointer); + return NSPredicate.castFromPointer(_ret, retain: true, release: true); } - static NSInputStream? inputStreamWithFileAtPath_( - SwiftLibrary _lib, NSString path) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSInputStream1, - _lib._sel_inputStreamWithFileAtPath_1, path._id); - return _ret.address == 0 - ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); + objc.NSString get predicateFormat { + final _ret = _objc_msgSend_12(this.pointer, _sel_predicateFormat); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSInputStream? inputStreamWithURL_(SwiftLibrary _lib, NSURL url) { - final _ret = _lib._objc_msgSend_277( - _lib._class_NSInputStream1, _lib._sel_inputStreamWithURL_1, url._id); - return _ret.address == 0 - ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); + NSPredicate predicateWithSubstitutionVariables_(objc.NSDictionary variables) { + final _ret = _objc_msgSend_409(this.pointer, + _sel_predicateWithSubstitutionVariables_, variables.pointer); + return NSPredicate.castFromPointer(_ret, retain: true, release: true); } - static void getStreamsToHostWithName_port_inputStream_outputStream_( - SwiftLibrary _lib, - NSString hostname, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_867( - _lib._class_NSInputStream1, - _lib._sel_getStreamsToHostWithName_port_inputStream_outputStream_1, - hostname._id, - port, - inputStream, - outputStream); + bool evaluateWithObject_(objc.NSObject? object) { + return _objc_msgSend_410( + this.pointer, _sel_evaluateWithObject_, object?.pointer ?? ffi.nullptr); } - static void getStreamsToHost_port_inputStream_outputStream_( - SwiftLibrary _lib, - NSHost host, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_871( - _lib._class_NSInputStream1, - _lib._sel_getStreamsToHost_port_inputStream_outputStream_1, - host._id, - port, - inputStream, - outputStream); + bool evaluateWithObject_substitutionVariables_( + objc.NSObject? object, objc.NSDictionary? bindings) { + return _objc_msgSend_411( + this.pointer, + _sel_evaluateWithObject_substitutionVariables_, + object?.pointer ?? ffi.nullptr, + bindings?.pointer ?? ffi.nullptr); } - static void getBoundStreamsWithBufferSize_inputStream_outputStream_( - SwiftLibrary _lib, - int bufferSize, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_872( - _lib._class_NSInputStream1, - _lib._sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1, - bufferSize, - inputStream, - outputStream); + void allowEvaluation() { + _objc_msgSend_82(this.pointer, _sel_allowEvaluation); } @override - NSInputStream init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSInputStream._(_ret, _lib, retain: true, release: true); + NSPredicate init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSPredicate.castFromPointer(_ret, retain: true, release: true); } - static NSInputStream new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSInputStream1, _lib._sel_new1); - return NSInputStream._(_ret, _lib, retain: false, release: true); + static NSPredicate new1() { + final _ret = _objc_msgSend_40(_class_NSPredicate, _sel_new); + return NSPredicate.castFromPointer(_ret, retain: false, release: true); } - static NSInputStream allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSInputStream1, _lib._sel_allocWithZone_1, zone); - return NSInputStream._(_ret, _lib, retain: false, release: true); + static NSPredicate allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSPredicate, _sel_allocWithZone_, zone); + return NSPredicate.castFromPointer(_ret, retain: false, release: true); } - static NSInputStream alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSInputStream1, _lib._sel_alloc1); - return NSInputStream._(_ret, _lib, retain: false, release: true); + static NSPredicate alloc() { + final _ret = _objc_msgSend_40(_class_NSPredicate, _sel_alloc); + return NSPredicate.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSInputStream1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSPredicate, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSInputStream1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSPredicate, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSInputStream1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSPredicate, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSInputStream1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSPredicate, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSInputStream1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSPredicate, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSInputStream1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSPredicate, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSInputStream1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSInputStream1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSInputStream1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSPredicate, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSPredicate, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSPredicate, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSPredicate = objc.getClass("NSPredicate"); +late final _sel_predicateWithFormat_argumentArray_ = + objc.registerName("predicateWithFormat:argumentArray:"); +final _objc_msgSend_403 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_predicateWithFormat_ = + objc.registerName("predicateWithFormat:"); +final _objc_msgSend_404 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_predicateWithFormat_arguments_ = + objc.registerName("predicateWithFormat:arguments:"); +final _objc_msgSend_405 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>(); +late final _sel_predicateFromMetadataQueryString_ = + objc.registerName("predicateFromMetadataQueryString:"); +final _objc_msgSend_406 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_predicateWithValue_ = objc.registerName("predicateWithValue:"); +final _objc_msgSend_407 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, bool)>(); +bool _ObjCBlock_bool_objcObjCObject_NSDictionary_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +final _ObjCBlock_bool_objcObjCObject_NSDictionary_closureRegistry = , ffi.Pointer)>{}; +int _ObjCBlock_bool_objcObjCObject_NSDictionary_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_bool_objcObjCObject_NSDictionary_registerClosure( + bool Function( + ffi.Pointer, ffi.Pointer) + fn) { + final id = ++_ObjCBlock_bool_objcObjCObject_NSDictionary_closureRegistryIndex; + _ObjCBlock_bool_objcObjCObject_NSDictionary_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); } -class NSStream extends NSObject { - NSStream._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); +bool _ObjCBlock_bool_objcObjCObject_NSDictionary_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + _ObjCBlock_bool_objcObjCObject_NSDictionary_closureRegistry[ + block.ref.target.address]!(arg0, arg1); - /// Returns a [NSStream] that points to the same underlying object as [other]. - static NSStream castFrom(T other) { - return NSStream._(other._id, other._lib, retain: true, release: true); - } +class ObjCBlock_bool_objcObjCObject_NSDictionary extends objc.ObjCBlockBase { + ObjCBlock_bool_objcObjCObject_NSDictionary._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); - /// Returns a [NSStream] that wraps the given raw object pointer. - static NSStream castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSStream._(other, lib, retain: retain, release: release); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_bool_objcObjCObject_NSDictionary castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_bool_objcObjCObject_NSDictionary._(pointer, + retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSStream]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSStream1); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_NSDictionary.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_NSDictionary_fnPtrTrampoline, + false) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - void open() { - _lib._objc_msgSend_1(_id, _lib._sel_open1); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_NSDictionary.fromFunction( + bool Function(objc.NSObject?, objc.NSDictionary?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= + ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_NSDictionary_closureTrampoline, false) + .cast(), + _ObjCBlock_bool_objcObjCObject_NSDictionary_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : objc.NSObject.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : objc.NSDictionary.castFromPointer(arg1, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; - void close() { - _lib._objc_msgSend_1(_id, _lib._sel_close1); - } + bool call(objc.NSObject? arg0, objc.NSDictionary? arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1?.pointer ?? ffi.nullptr); +} + +late final _sel_predicateWithBlock_ = objc.registerName("predicateWithBlock:"); +final _objc_msgSend_408 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_predicateFormat = objc.registerName("predicateFormat"); +late final _sel_predicateWithSubstitutionVariables_ = + objc.registerName("predicateWithSubstitutionVariables:"); +final _objc_msgSend_409 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_evaluateWithObject_ = objc.registerName("evaluateWithObject:"); +final _objc_msgSend_410 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_evaluateWithObject_substitutionVariables_ = + objc.registerName("evaluateWithObject:substitutionVariables:"); +final _objc_msgSend_411 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_allowEvaluation = objc.registerName("allowEvaluation"); +late final _sel_filteredOrderedSetUsingPredicate_ = + objc.registerName("filteredOrderedSetUsingPredicate:"); +final _objc_msgSend_412 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } +class NSMutableOrderedSet extends NSOrderedSet { + NSMutableOrderedSet._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); - } + /// Constructs a [NSMutableOrderedSet] that points to the same underlying object as [other]. + NSMutableOrderedSet.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSObject? propertyForKey_(NSString key) { - final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_propertyForKey_1, key._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSMutableOrderedSet] that wraps the given raw object pointer. + NSMutableOrderedSet.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - bool setProperty_forKey_(NSObject? property, NSString key) { - return _lib._objc_msgSend_862(_id, _lib._sel_setProperty_forKey_1, - property?._id ?? ffi.nullptr, key._id); + /// Returns whether [obj] is an instance of [NSMutableOrderedSet]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMutableOrderedSet); } - void scheduleInRunLoop_forMode_(NSRunLoop aRunLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_scheduleInRunLoop_forMode_1, aRunLoop._id, mode._id); + void insertObject_atIndex_(objc.NSObject object, int idx) { + _objc_msgSend_413( + this.pointer, _sel_insertObject_atIndex_, object.pointer, idx); } - void removeFromRunLoop_forMode_(NSRunLoop aRunLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_removeFromRunLoop_forMode_1, aRunLoop._id, mode._id); + void removeObjectAtIndex_(int idx) { + _objc_msgSend_414(this.pointer, _sel_removeObjectAtIndex_, idx); } - int get streamStatus { - return _lib._objc_msgSend_863(_id, _lib._sel_streamStatus1); + void replaceObjectAtIndex_withObject_(int idx, objc.NSObject object) { + _objc_msgSend_415(this.pointer, _sel_replaceObjectAtIndex_withObject_, idx, + object.pointer); } - NSError? get streamError { - final _ret = _lib._objc_msgSend_322(_id, _lib._sel_streamError1); + @override + NSMutableOrderedSet? initWithCoder_(objc.NSCoder coder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, coder.pointer); return _ret.address == 0 ? null - : NSError._(_ret, _lib, retain: true, release: true); - } - - static void getStreamsToHostWithName_port_inputStream_outputStream_( - SwiftLibrary _lib, - NSString hostname, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_867( - _lib._class_NSStream1, - _lib._sel_getStreamsToHostWithName_port_inputStream_outputStream_1, - hostname._id, - port, - inputStream, - outputStream); - } - - static void getStreamsToHost_port_inputStream_outputStream_( - SwiftLibrary _lib, - NSHost host, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_871( - _lib._class_NSStream1, - _lib._sel_getStreamsToHost_port_inputStream_outputStream_1, - host._id, - port, - inputStream, - outputStream); - } - - static void getBoundStreamsWithBufferSize_inputStream_outputStream_( - SwiftLibrary _lib, - int bufferSize, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_872( - _lib._class_NSStream1, - _lib._sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1, - bufferSize, - inputStream, - outputStream); + : NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } @override - NSStream init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSStream._(_ret, _lib, retain: true, release: true); + NSMutableOrderedSet init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSStream new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSStream1, _lib._sel_new1); - return NSStream._(_ret, _lib, retain: false, release: true); + NSMutableOrderedSet initWithCapacity_(int numItems) { + final _ret = + _objc_msgSend_355(this.pointer, _sel_initWithCapacity_, numItems); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSStream allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSStream1, _lib._sel_allocWithZone_1, zone); - return NSStream._(_ret, _lib, retain: false, release: true); + void addObject_(objc.NSObject object) { + _objc_msgSend_49(this.pointer, _sel_addObject_, object.pointer); } - static NSStream alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSStream1, _lib._sel_alloc1); - return NSStream._(_ret, _lib, retain: false, release: true); + void addObjects_count_( + ffi.Pointer> objects, int count) { + _objc_msgSend_416(this.pointer, _sel_addObjects_count_, objects, count); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSStream1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + void addObjectsFromArray_(objc.NSArray array) { + _objc_msgSend_242(this.pointer, _sel_addObjectsFromArray_, array.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSStream1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + void exchangeObjectAtIndex_withObjectAtIndex_(int idx1, int idx2) { + _objc_msgSend_417(this.pointer, + _sel_exchangeObjectAtIndex_withObjectAtIndex_, idx1, idx2); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSStream1, _lib._sel_accessInstanceVariablesDirectly1); + void moveObjectsAtIndexes_toIndex_(objc.NSIndexSet indexes, int idx) { + _objc_msgSend_418( + this.pointer, _sel_moveObjectsAtIndexes_toIndex_, indexes.pointer, idx); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSStream1, _lib._sel_useStoredAccessor1); + void insertObjects_atIndexes_(objc.NSArray objects, objc.NSIndexSet indexes) { + _objc_msgSend_419(this.pointer, _sel_insertObjects_atIndexes_, + objects.pointer, indexes.pointer); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSStream1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + void setObject_atIndex_(objc.NSObject obj, int idx) { + _objc_msgSend_413(this.pointer, _sel_setObject_atIndex_, obj.pointer, idx); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSStream1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + void setObject_atIndexedSubscript_(objc.NSObject obj, int idx) { + _objc_msgSend_413( + this.pointer, _sel_setObject_atIndexedSubscript_, obj.pointer, idx); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSStream1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + void replaceObjectsInRange_withObjects_count_(_NSRange range, + ffi.Pointer> objects, int count) { + _objc_msgSend_420(this.pointer, + _sel_replaceObjectsInRange_withObjects_count_, range, objects, count); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSStream1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + void replaceObjectsAtIndexes_withObjects_( + objc.NSIndexSet indexes, objc.NSArray objects) { + _objc_msgSend_421(this.pointer, _sel_replaceObjectsAtIndexes_withObjects_, + indexes.pointer, objects.pointer); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSStream1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + void removeObjectsInRange_(_NSRange range) { + _objc_msgSend_81(this.pointer, _sel_removeObjectsInRange_, range); } -} - -abstract class NSStreamStatus { - static const int NSStreamStatusNotOpen = 0; - static const int NSStreamStatusOpening = 1; - static const int NSStreamStatusOpen = 2; - static const int NSStreamStatusReading = 3; - static const int NSStreamStatusWriting = 4; - static const int NSStreamStatusAtEnd = 5; - static const int NSStreamStatusClosed = 6; - static const int NSStreamStatusError = 7; -} -class NSOutputStream extends NSStream { - NSOutputStream._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + void removeObjectsAtIndexes_(objc.NSIndexSet indexes) { + _objc_msgSend_422( + this.pointer, _sel_removeObjectsAtIndexes_, indexes.pointer); + } - /// Returns a [NSOutputStream] that points to the same underlying object as [other]. - static NSOutputStream castFrom(T other) { - return NSOutputStream._(other._id, other._lib, retain: true, release: true); + void removeAllObjects() { + _objc_msgSend_82(this.pointer, _sel_removeAllObjects); } - /// Returns a [NSOutputStream] that wraps the given raw object pointer. - static NSOutputStream castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSOutputStream._(other, lib, retain: retain, release: release); + void removeObject_(objc.NSObject object) { + _objc_msgSend_49(this.pointer, _sel_removeObject_, object.pointer); } - /// Returns whether [obj] is an instance of [NSOutputStream]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSOutputStream1); + void removeObjectsInArray_(objc.NSArray array) { + _objc_msgSend_242(this.pointer, _sel_removeObjectsInArray_, array.pointer); } - int write_maxLength_(ffi.Pointer buffer, int len) { - return _lib._objc_msgSend_864( - _id, _lib._sel_write_maxLength_1, buffer, len); + void intersectOrderedSet_(NSOrderedSet other) { + _objc_msgSend_423(this.pointer, _sel_intersectOrderedSet_, other.pointer); } - bool get hasSpaceAvailable { - return _lib._objc_msgSend_12(_id, _lib._sel_hasSpaceAvailable1); + void minusOrderedSet_(NSOrderedSet other) { + _objc_msgSend_423(this.pointer, _sel_minusOrderedSet_, other.pointer); } - NSOutputStream initToMemory() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_initToMemory1); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + void unionOrderedSet_(NSOrderedSet other) { + _objc_msgSend_423(this.pointer, _sel_unionOrderedSet_, other.pointer); } - NSOutputStream initToBuffer_capacity_( - ffi.Pointer buffer, int capacity) { - final _ret = _lib._objc_msgSend_865( - _id, _lib._sel_initToBuffer_capacity_1, buffer, capacity); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + void intersectSet_(objc.NSSet other) { + _objc_msgSend_424(this.pointer, _sel_intersectSet_, other.pointer); } - NSOutputStream? initWithURL_append_(NSURL url, bool shouldAppend) { - final _ret = _lib._objc_msgSend_866( - _id, _lib._sel_initWithURL_append_1, url._id, shouldAppend); - return _ret.address == 0 - ? null - : NSOutputStream._(_ret, _lib, retain: true, release: true); + void minusSet_(objc.NSSet other) { + _objc_msgSend_424(this.pointer, _sel_minusSet_, other.pointer); } - NSOutputStream? initToFileAtPath_append_(NSString path, bool shouldAppend) { - final _ret = _lib._objc_msgSend_40( - _id, _lib._sel_initToFileAtPath_append_1, path._id, shouldAppend); - return _ret.address == 0 - ? null - : NSOutputStream._(_ret, _lib, retain: true, release: true); + void unionSet_(objc.NSSet other) { + _objc_msgSend_424(this.pointer, _sel_unionSet_, other.pointer); } - static NSOutputStream outputStreamToMemory(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSOutputStream1, _lib._sel_outputStreamToMemory1); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + void sortUsingComparator_( + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + _objc_msgSend_425(this.pointer, _sel_sortUsingComparator_, cmptr.pointer); } - static NSOutputStream outputStreamToBuffer_capacity_( - SwiftLibrary _lib, ffi.Pointer buffer, int capacity) { - final _ret = _lib._objc_msgSend_865(_lib._class_NSOutputStream1, - _lib._sel_outputStreamToBuffer_capacity_1, buffer, capacity); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + void sortWithOptions_usingComparator_(int opts, + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + _objc_msgSend_426(this.pointer, _sel_sortWithOptions_usingComparator_, opts, + cmptr.pointer); } - static NSOutputStream outputStreamToFileAtPath_append_( - SwiftLibrary _lib, NSString path, bool shouldAppend) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSOutputStream1, - _lib._sel_outputStreamToFileAtPath_append_1, path._id, shouldAppend); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + void sortRange_options_usingComparator_(_NSRange range, int opts, + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + _objc_msgSend_427(this.pointer, _sel_sortRange_options_usingComparator_, + range, opts, cmptr.pointer); } - static NSOutputStream? outputStreamWithURL_append_( - SwiftLibrary _lib, NSURL url, bool shouldAppend) { - final _ret = _lib._objc_msgSend_866(_lib._class_NSOutputStream1, - _lib._sel_outputStreamWithURL_append_1, url._id, shouldAppend); - return _ret.address == 0 - ? null - : NSOutputStream._(_ret, _lib, retain: true, release: true); + static NSMutableOrderedSet orderedSetWithCapacity_(int numItems) { + final _ret = _objc_msgSend_355( + _class_NSMutableOrderedSet, _sel_orderedSetWithCapacity_, numItems); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static void getStreamsToHostWithName_port_inputStream_outputStream_( - SwiftLibrary _lib, - NSString hostname, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_867( - _lib._class_NSOutputStream1, - _lib._sel_getStreamsToHostWithName_port_inputStream_outputStream_1, - hostname._id, - port, - inputStream, - outputStream); + void applyDifference_(objc.NSObject difference) { + _objc_msgSend_49(this.pointer, _sel_applyDifference_, difference.pointer); } - static void getStreamsToHost_port_inputStream_outputStream_( - SwiftLibrary _lib, - NSHost host, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_871( - _lib._class_NSOutputStream1, - _lib._sel_getStreamsToHost_port_inputStream_outputStream_1, - host._id, - port, - inputStream, - outputStream); + void sortUsingDescriptors_(objc.NSArray sortDescriptors) { + _objc_msgSend_242( + this.pointer, _sel_sortUsingDescriptors_, sortDescriptors.pointer); } - static void getBoundStreamsWithBufferSize_inputStream_outputStream_( - SwiftLibrary _lib, - int bufferSize, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_872( - _lib._class_NSOutputStream1, - _lib._sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1, - bufferSize, - inputStream, - outputStream); + void filterUsingPredicate_(NSPredicate p) { + _objc_msgSend_428(this.pointer, _sel_filterUsingPredicate_, p.pointer); } @override - NSOutputStream init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + NSMutableOrderedSet initWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_365( + this.pointer, _sel_initWithObjects_count_, objects, cnt); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSOutputStream new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOutputStream1, _lib._sel_new1); - return NSOutputStream._(_ret, _lib, retain: false, release: true); + static NSMutableOrderedSet orderedSet() { + final _ret = _objc_msgSend_40(_class_NSMutableOrderedSet, _sel_orderedSet); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSOutputStream allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSOutputStream1, _lib._sel_allocWithZone_1, zone); - return NSOutputStream._(_ret, _lib, retain: false, release: true); + static NSMutableOrderedSet orderedSetWithObject_(objc.NSObject object) { + final _ret = _objc_msgSend_387( + _class_NSMutableOrderedSet, _sel_orderedSetWithObject_, object.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSOutputStream alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOutputStream1, _lib._sel_alloc1); - return NSOutputStream._(_ret, _lib, retain: false, release: true); + static NSMutableOrderedSet orderedSetWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_365(_class_NSMutableOrderedSet, + _sel_orderedSetWithObjects_count_, objects, cnt); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSOutputStream1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static NSMutableOrderedSet orderedSetWithObjects_(objc.NSObject firstObj) { + final _ret = _objc_msgSend_387(_class_NSMutableOrderedSet, + _sel_orderedSetWithObjects_, firstObj.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSOutputStream1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static NSMutableOrderedSet orderedSetWithOrderedSet_(NSOrderedSet set) { + final _ret = _objc_msgSend_388(_class_NSMutableOrderedSet, + _sel_orderedSetWithOrderedSet_, set.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSOutputStream1, - _lib._sel_accessInstanceVariablesDirectly1); + static NSMutableOrderedSet orderedSetWithOrderedSet_range_copyItems_( + NSOrderedSet set, _NSRange range, bool flag) { + final _ret = _objc_msgSend_389( + _class_NSMutableOrderedSet, + _sel_orderedSetWithOrderedSet_range_copyItems_, + set.pointer, + range, + flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOutputStream1, _lib._sel_useStoredAccessor1); + static NSMutableOrderedSet orderedSetWithArray_(objc.NSArray array) { + final _ret = _objc_msgSend_390( + _class_NSMutableOrderedSet, _sel_orderedSetWithArray_, array.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSOutputStream1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static NSMutableOrderedSet orderedSetWithArray_range_copyItems_( + objc.NSArray array, _NSRange range, bool flag) { + final _ret = _objc_msgSend_391(_class_NSMutableOrderedSet, + _sel_orderedSetWithArray_range_copyItems_, array.pointer, range, flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSOutputStream1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static NSMutableOrderedSet orderedSetWithSet_(objc.NSSet set) { + final _ret = _objc_msgSend_392( + _class_NSMutableOrderedSet, _sel_orderedSetWithSet_, set.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSOutputStream1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static NSMutableOrderedSet orderedSetWithSet_copyItems_( + objc.NSSet set, bool flag) { + final _ret = _objc_msgSend_393(_class_NSMutableOrderedSet, + _sel_orderedSetWithSet_copyItems_, set.pointer, flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSOutputStream1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + @override + NSMutableOrderedSet initWithObject_(objc.NSObject object) { + final _ret = + _objc_msgSend_387(this.pointer, _sel_initWithObject_, object.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSOutputStream1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + @override + NSMutableOrderedSet initWithObjects_(objc.NSObject firstObj) { + final _ret = _objc_msgSend_387( + this.pointer, _sel_initWithObjects_, firstObj.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } -} - -class NSHost extends NSObject { - NSHost._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSHost] that points to the same underlying object as [other]. - static NSHost castFrom(T other) { - return NSHost._(other._id, other._lib, retain: true, release: true); + @override + NSMutableOrderedSet initWithOrderedSet_(NSOrderedSet set) { + final _ret = + _objc_msgSend_388(this.pointer, _sel_initWithOrderedSet_, set.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - /// Returns a [NSHost] that wraps the given raw object pointer. - static NSHost castFromPointer(SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSHost._(other, lib, retain: retain, release: release); + @override + NSMutableOrderedSet initWithOrderedSet_copyItems_( + NSOrderedSet set, bool flag) { + final _ret = _objc_msgSend_394( + this.pointer, _sel_initWithOrderedSet_copyItems_, set.pointer, flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - /// Returns whether [obj] is an instance of [NSHost]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSHost1); + @override + NSMutableOrderedSet initWithOrderedSet_range_copyItems_( + NSOrderedSet set, _NSRange range, bool flag) { + final _ret = _objc_msgSend_389(this.pointer, + _sel_initWithOrderedSet_range_copyItems_, set.pointer, range, flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - static NSHost currentHost(SwiftLibrary _lib) { + @override + NSMutableOrderedSet initWithArray_(objc.NSArray array) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSHost1, _lib._sel_currentHost1); - return NSHost._(_ret, _lib, retain: true, release: true); + _objc_msgSend_390(this.pointer, _sel_initWithArray_, array.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - static NSHost hostWithName_(SwiftLibrary _lib, NSString? name) { - final _ret = _lib._objc_msgSend_868(_lib._class_NSHost1, - _lib._sel_hostWithName_1, name?._id ?? ffi.nullptr); - return NSHost._(_ret, _lib, retain: true, release: true); + @override + NSMutableOrderedSet initWithArray_copyItems_(objc.NSArray set, bool flag) { + final _ret = _objc_msgSend_395( + this.pointer, _sel_initWithArray_copyItems_, set.pointer, flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - static NSHost hostWithAddress_(SwiftLibrary _lib, NSString address) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSHost1, _lib._sel_hostWithAddress_1, address._id); - return NSHost._(_ret, _lib, retain: true, release: true); + @override + NSMutableOrderedSet initWithArray_range_copyItems_( + objc.NSArray set, _NSRange range, bool flag) { + final _ret = _objc_msgSend_391(this.pointer, + _sel_initWithArray_range_copyItems_, set.pointer, range, flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - bool isEqualToHost_(NSHost aHost) { - return _lib._objc_msgSend_869(_id, _lib._sel_isEqualToHost_1, aHost._id); + @override + NSMutableOrderedSet initWithSet_(objc.NSSet set) { + final _ret = + _objc_msgSend_392(this.pointer, _sel_initWithSet_, set.pointer); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: true, release: true); } - NSString? get name { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_name1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + @override + NSMutableOrderedSet initWithSet_copyItems_(objc.NSSet set, bool flag) { + final _ret = _objc_msgSend_393( + this.pointer, _sel_initWithSet_copyItems_, set.pointer, flag); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - NSArray get names { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_names1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSMutableOrderedSet new1() { + final _ret = _objc_msgSend_40(_class_NSMutableOrderedSet, _sel_new); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - NSString? get address { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_address1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSMutableOrderedSet allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSMutableOrderedSet, _sel_allocWithZone_, zone); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - NSArray get addresses { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_addresses1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSMutableOrderedSet alloc() { + final _ret = _objc_msgSend_40(_class_NSMutableOrderedSet, _sel_alloc); + return NSMutableOrderedSet.castFromPointer(_ret, + retain: false, release: true); } - NSString? get localizedName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_localizedName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSMutableOrderedSet, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - static void setHostCacheEnabled_(SwiftLibrary _lib, bool flag) { - _lib._objc_msgSend_870( - _lib._class_NSHost1, _lib._sel_setHostCacheEnabled_1, flag); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSMutableOrderedSet, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool isHostCacheEnabled(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSHost1, _lib._sel_isHostCacheEnabled1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSMutableOrderedSet, _sel_accessInstanceVariablesDirectly); } - static void flushHostCache(SwiftLibrary _lib) { - _lib._objc_msgSend_1(_lib._class_NSHost1, _lib._sel_flushHostCache1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSMutableOrderedSet, _sel_useStoredAccessor); } - @override - NSHost init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSHost._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSMutableOrderedSet, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static NSHost new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSHost1, _lib._sel_new1); - return NSHost._(_ret, _lib, retain: false, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSMutableOrderedSet, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static NSHost allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSHost1, _lib._sel_allocWithZone_1, zone); - return NSHost._(_ret, _lib, retain: false, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSMutableOrderedSet, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSMutableOrderedSet, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSMutableOrderedSet, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSMutableOrderedSet = objc.getClass("NSMutableOrderedSet"); +late final _sel_insertObject_atIndex_ = + objc.registerName("insertObject:atIndex:"); +final _objc_msgSend_413 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_removeObjectAtIndex_ = + objc.registerName("removeObjectAtIndex:"); +final _objc_msgSend_414 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_replaceObjectAtIndex_withObject_ = + objc.registerName("replaceObjectAtIndex:withObject:"); +final _objc_msgSend_415 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_initWithCapacity_ = objc.registerName("initWithCapacity:"); +late final _sel_addObject_ = objc.registerName("addObject:"); +late final _sel_addObjects_count_ = objc.registerName("addObjects:count:"); +final _objc_msgSend_416 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + int)>(); +late final _sel_addObjectsFromArray_ = + objc.registerName("addObjectsFromArray:"); +late final _sel_exchangeObjectAtIndex_withObjectAtIndex_ = + objc.registerName("exchangeObjectAtIndex:withObjectAtIndex:"); +final _objc_msgSend_417 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int, int)>(); +late final _sel_moveObjectsAtIndexes_toIndex_ = + objc.registerName("moveObjectsAtIndexes:toIndex:"); +final _objc_msgSend_418 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_insertObjects_atIndexes_ = + objc.registerName("insertObjects:atIndexes:"); +final _objc_msgSend_419 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_setObject_atIndex_ = objc.registerName("setObject:atIndex:"); +late final _sel_setObject_atIndexedSubscript_ = + objc.registerName("setObject:atIndexedSubscript:"); +late final _sel_replaceObjectsInRange_withObjects_count_ = + objc.registerName("replaceObjectsInRange:withObjects:count:"); +final _objc_msgSend_420 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer>, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer>, + int)>(); +late final _sel_replaceObjectsAtIndexes_withObjects_ = + objc.registerName("replaceObjectsAtIndexes:withObjects:"); +final _objc_msgSend_421 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeObjectsInRange_ = + objc.registerName("removeObjectsInRange:"); +late final _sel_removeObjectsAtIndexes_ = + objc.registerName("removeObjectsAtIndexes:"); +final _objc_msgSend_422 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_removeAllObjects = objc.registerName("removeAllObjects"); +late final _sel_removeObject_ = objc.registerName("removeObject:"); +late final _sel_removeObjectsInArray_ = + objc.registerName("removeObjectsInArray:"); +late final _sel_intersectOrderedSet_ = + objc.registerName("intersectOrderedSet:"); +final _objc_msgSend_423 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_minusOrderedSet_ = objc.registerName("minusOrderedSet:"); +late final _sel_unionOrderedSet_ = objc.registerName("unionOrderedSet:"); +late final _sel_intersectSet_ = objc.registerName("intersectSet:"); +final _objc_msgSend_424 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_minusSet_ = objc.registerName("minusSet:"); +late final _sel_unionSet_ = objc.registerName("unionSet:"); +late final _sel_sortUsingComparator_ = + objc.registerName("sortUsingComparator:"); +final _objc_msgSend_425 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_sortWithOptions_usingComparator_ = + objc.registerName("sortWithOptions:usingComparator:"); +final _objc_msgSend_426 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_sortRange_options_usingComparator_ = + objc.registerName("sortRange:options:usingComparator:"); +final _objc_msgSend_427 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + int, + ffi.Pointer)>(); +late final _sel_orderedSetWithCapacity_ = + objc.registerName("orderedSetWithCapacity:"); +late final _sel_applyDifference_ = objc.registerName("applyDifference:"); +late final _sel_sortUsingDescriptors_ = + objc.registerName("sortUsingDescriptors:"); +late final _sel_filterUsingPredicate_ = + objc.registerName("filterUsingPredicate:"); +final _objc_msgSend_428 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSMorphology extends objc.NSObject { + NSMorphology._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSMorphology] that points to the same underlying object as [other]. + NSMorphology.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSMorphology] that wraps the given raw object pointer. + NSMorphology.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSMorphology]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMorphology); } - static NSHost alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSHost1, _lib._sel_alloc1); - return NSHost._(_ret, _lib, retain: false, release: true); + int get grammaticalGender { + return _objc_msgSend_429(this.pointer, _sel_grammaticalGender); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSHost1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set grammaticalGender(int value) { + return _objc_msgSend_430(this.pointer, _sel_setGrammaticalGender_, value); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSHost1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + int get partOfSpeech { + return _objc_msgSend_431(this.pointer, _sel_partOfSpeech); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSHost1, _lib._sel_accessInstanceVariablesDirectly1); + set partOfSpeech(int value) { + return _objc_msgSend_432(this.pointer, _sel_setPartOfSpeech_, value); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSHost1, _lib._sel_useStoredAccessor1); + int get number { + return _objc_msgSend_433(this.pointer, _sel_number); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSHost1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + set number(int value) { + return _objc_msgSend_434(this.pointer, _sel_setNumber_, value); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSHost1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + int get grammaticalCase { + return _objc_msgSend_435(this.pointer, _sel_grammaticalCase); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSHost1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set grammaticalCase(int value) { + return _objc_msgSend_436(this.pointer, _sel_setGrammaticalCase_, value); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSHost1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + int get determination { + return _objc_msgSend_437(this.pointer, _sel_determination); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSHost1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + set determination(int value) { + return _objc_msgSend_438(this.pointer, _sel_setDetermination_, value); } -} -class NSURLResponse extends NSObject { - NSURLResponse._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + int get grammaticalPerson { + return _objc_msgSend_439(this.pointer, _sel_grammaticalPerson); + } - /// Returns a [NSURLResponse] that points to the same underlying object as [other]. - static NSURLResponse castFrom(T other) { - return NSURLResponse._(other._id, other._lib, retain: true, release: true); + set grammaticalPerson(int value) { + return _objc_msgSend_440(this.pointer, _sel_setGrammaticalPerson_, value); } - /// Returns a [NSURLResponse] that wraps the given raw object pointer. - static NSURLResponse castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLResponse._(other, lib, retain: retain, release: release); + int get pronounType { + return _objc_msgSend_441(this.pointer, _sel_pronounType); } - /// Returns whether [obj] is an instance of [NSURLResponse]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLResponse1); + set pronounType(int value) { + return _objc_msgSend_442(this.pointer, _sel_setPronounType_, value); } - NSURLResponse initWithURL_MIMEType_expectedContentLength_textEncodingName_( - NSURL URL, NSString? MIMEType, int length, NSString? name) { - final _ret = _lib._objc_msgSend_877( - _id, - _lib._sel_initWithURL_MIMEType_expectedContentLength_textEncodingName_1, - URL._id, - MIMEType?._id ?? ffi.nullptr, - length, - name?._id ?? ffi.nullptr); - return NSURLResponse._(_ret, _lib, retain: true, release: true); + int get definiteness { + return _objc_msgSend_443(this.pointer, _sel_definiteness); } - NSURL? get URL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_URL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + set definiteness(int value) { + return _objc_msgSend_444(this.pointer, _sel_setDefiniteness_, value); } - NSString? get MIMEType { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_MIMEType1); + NSMorphologyCustomPronoun? customPronounForLanguage_(objc.NSString language) { + final _ret = _objc_msgSend_446( + this.pointer, _sel_customPronounForLanguage_, language.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSMorphologyCustomPronoun.castFromPointer(_ret, + retain: true, release: true); } - int get expectedContentLength { - return _lib._objc_msgSend_238(_id, _lib._sel_expectedContentLength1); + bool setCustomPronoun_forLanguage_error_(NSMorphologyCustomPronoun? features, + objc.NSString language, ffi.Pointer> error) { + return _objc_msgSend_447( + this.pointer, + _sel_setCustomPronoun_forLanguage_error_, + features?.pointer ?? ffi.nullptr, + language.pointer, + error); } - NSString? get textEncodingName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_textEncodingName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + bool get unspecified { + return _objc_msgSend_7(this.pointer, _sel_isUnspecified); } - NSString? get suggestedFilename { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_suggestedFilename1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSMorphology getUserMorphology() { + final _ret = _objc_msgSend_448(_class_NSMorphology, _sel_userMorphology); + return NSMorphology.castFromPointer(_ret, retain: true, release: true); } @override - NSURLResponse init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLResponse._(_ret, _lib, retain: true, release: true); + NSMorphology init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSMorphology.castFromPointer(_ret, retain: true, release: true); } - static NSURLResponse new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLResponse1, _lib._sel_new1); - return NSURLResponse._(_ret, _lib, retain: false, release: true); + static NSMorphology new1() { + final _ret = _objc_msgSend_40(_class_NSMorphology, _sel_new); + return NSMorphology.castFromPointer(_ret, retain: false, release: true); } - static NSURLResponse allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLResponse1, _lib._sel_allocWithZone_1, zone); - return NSURLResponse._(_ret, _lib, retain: false, release: true); + static NSMorphology allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSMorphology, _sel_allocWithZone_, zone); + return NSMorphology.castFromPointer(_ret, retain: false, release: true); } - static NSURLResponse alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLResponse1, _lib._sel_alloc1); - return NSURLResponse._(_ret, _lib, retain: false, release: true); + static NSMorphology alloc() { + final _ret = _objc_msgSend_40(_class_NSMorphology, _sel_alloc); + return NSMorphology.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLResponse1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSMorphology, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLResponse1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSMorphology, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLResponse1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSMorphology, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLResponse1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSMorphology, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLResponse1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSMorphology, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLResponse1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSMorphology, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLResponse1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSMorphology, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURLResponse1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSMorphology, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLResponse1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSMorphology, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -abstract class NSURLSessionTaskState { - static const int NSURLSessionTaskStateRunning = 0; - static const int NSURLSessionTaskStateSuspended = 1; - static const int NSURLSessionTaskStateCanceling = 2; - static const int NSURLSessionTaskStateCompleted = 3; +late final _class_NSMorphology = objc.getClass("NSMorphology"); + +abstract class NSGrammaticalGender { + static const int NSGrammaticalGenderNotSet = 0; + static const int NSGrammaticalGenderFeminine = 1; + static const int NSGrammaticalGenderMasculine = 2; + static const int NSGrammaticalGenderNeuter = 3; } -void _ObjCBlock_ffiVoid_NSArray_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSArray_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSArray_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSArray_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSArray_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSArray_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); +late final _sel_grammaticalGender = objc.registerName("grammaticalGender"); +final _objc_msgSend_429 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setGrammaticalGender_ = + objc.registerName("setGrammaticalGender:"); +final _objc_msgSend_430 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); + +abstract class NSGrammaticalPartOfSpeech { + static const int NSGrammaticalPartOfSpeechNotSet = 0; + static const int NSGrammaticalPartOfSpeechDeterminer = 1; + static const int NSGrammaticalPartOfSpeechPronoun = 2; + static const int NSGrammaticalPartOfSpeechLetter = 3; + static const int NSGrammaticalPartOfSpeechAdverb = 4; + static const int NSGrammaticalPartOfSpeechParticle = 5; + static const int NSGrammaticalPartOfSpeechAdjective = 6; + static const int NSGrammaticalPartOfSpeechAdposition = 7; + static const int NSGrammaticalPartOfSpeechVerb = 8; + static const int NSGrammaticalPartOfSpeechNoun = 9; + static const int NSGrammaticalPartOfSpeechConjunction = 10; + static const int NSGrammaticalPartOfSpeechNumeral = 11; + static const int NSGrammaticalPartOfSpeechInterjection = 12; + static const int NSGrammaticalPartOfSpeechPreposition = 13; + static const int NSGrammaticalPartOfSpeechAbbreviation = 14; } -void _ObjCBlock_ffiVoid_NSArray_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSArray_closureRegistry[block.ref.target.address]!(arg0); +late final _sel_partOfSpeech = objc.registerName("partOfSpeech"); +final _objc_msgSend_431 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setPartOfSpeech_ = objc.registerName("setPartOfSpeech:"); +final _objc_msgSend_432 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); -class ObjCBlock_ffiVoid_NSArray extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSArray._(ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); +abstract class NSGrammaticalNumber { + static const int NSGrammaticalNumberNotSet = 0; + static const int NSGrammaticalNumberSingular = 1; + static const int NSGrammaticalNumberZero = 2; + static const int NSGrammaticalNumberPlural = 3; + static const int NSGrammaticalNumberPluralTwo = 4; + static const int NSGrammaticalNumberPluralFew = 5; + static const int NSGrammaticalNumberPluralMany = 6; +} - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSArray castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSArray._(pointer, lib, - retain: retain, release: release); - } +late final _sel_number = objc.registerName("number"); +final _objc_msgSend_433 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setNumber_ = objc.registerName("setNumber:"); +final _objc_msgSend_434 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSArray.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0)>> - ptr) - : this._( - lib - ._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSArray_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; +abstract class NSGrammaticalCase { + static const int NSGrammaticalCaseNotSet = 0; + static const int NSGrammaticalCaseNominative = 1; + static const int NSGrammaticalCaseAccusative = 2; + static const int NSGrammaticalCaseDative = 3; + static const int NSGrammaticalCaseGenitive = 4; + static const int NSGrammaticalCasePrepositional = 5; + static const int NSGrammaticalCaseAblative = 6; + static const int NSGrammaticalCaseAdessive = 7; + static const int NSGrammaticalCaseAllative = 8; + static const int NSGrammaticalCaseElative = 9; + static const int NSGrammaticalCaseIllative = 10; + static const int NSGrammaticalCaseEssive = 11; + static const int NSGrammaticalCaseInessive = 12; + static const int NSGrammaticalCaseLocative = 13; + static const int NSGrammaticalCaseTranslative = 14; +} - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSArray.fromFunction( - SwiftLibrary lib, void Function(NSArray?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSArray_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSArray_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSArray._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; +late final _sel_grammaticalCase = objc.registerName("grammaticalCase"); +final _objc_msgSend_435 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setGrammaticalCase_ = objc.registerName("setGrammaticalCase:"); +final _objc_msgSend_436 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSArray.listener( - SwiftLibrary lib, void Function(NSArray?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSArray_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSArray_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSArray._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; +abstract class NSGrammaticalDetermination { + static const int NSGrammaticalDeterminationNotSet = 0; + static const int NSGrammaticalDeterminationIndependent = 1; + static const int NSGrammaticalDeterminationDependent = 2; +} + +late final _sel_determination = objc.registerName("determination"); +final _objc_msgSend_437 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDetermination_ = objc.registerName("setDetermination:"); +final _objc_msgSend_438 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); + +abstract class NSGrammaticalPerson { + static const int NSGrammaticalPersonNotSet = 0; + static const int NSGrammaticalPersonFirst = 1; + static const int NSGrammaticalPersonSecond = 2; + static const int NSGrammaticalPersonThird = 3; +} - void call(NSArray? arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0?._id ?? ffi.nullptr); +late final _sel_grammaticalPerson = objc.registerName("grammaticalPerson"); +final _objc_msgSend_439 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setGrammaticalPerson_ = + objc.registerName("setGrammaticalPerson:"); +final _objc_msgSend_440 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); + +abstract class NSGrammaticalPronounType { + static const int NSGrammaticalPronounTypeNotSet = 0; + static const int NSGrammaticalPronounTypePersonal = 1; + static const int NSGrammaticalPronounTypeReflexive = 2; + static const int NSGrammaticalPronounTypePossessive = 3; +} + +late final _sel_pronounType = objc.registerName("pronounType"); +final _objc_msgSend_441 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setPronounType_ = objc.registerName("setPronounType:"); +final _objc_msgSend_442 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); + +abstract class NSGrammaticalDefiniteness { + static const int NSGrammaticalDefinitenessNotSet = 0; + static const int NSGrammaticalDefinitenessIndefinite = 1; + static const int NSGrammaticalDefinitenessDefinite = 2; } -class NSIndexPath extends NSObject { - NSIndexPath._(ffi.Pointer id, SwiftLibrary lib, +late final _sel_definiteness = objc.registerName("definiteness"); +final _objc_msgSend_443 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDefiniteness_ = objc.registerName("setDefiniteness:"); +final _objc_msgSend_444 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); + +class NSMorphologyCustomPronoun extends objc.NSObject { + NSMorphologyCustomPronoun._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSIndexPath] that points to the same underlying object as [other]. - static NSIndexPath castFrom(T other) { - return NSIndexPath._(other._id, other._lib, retain: true, release: true); - } + /// Constructs a [NSMorphologyCustomPronoun] that points to the same underlying object as [other]. + NSMorphologyCustomPronoun.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSIndexPath] that wraps the given raw object pointer. - static NSIndexPath castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSIndexPath._(other, lib, retain: retain, release: release); + /// Constructs a [NSMorphologyCustomPronoun] that wraps the given raw object pointer. + NSMorphologyCustomPronoun.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSMorphologyCustomPronoun]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMorphologyCustomPronoun); } - /// Returns whether [obj] is an instance of [NSIndexPath]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSIndexPath1); + static bool isSupportedForLanguage_(objc.NSString language) { + return _objc_msgSend_51(_class_NSMorphologyCustomPronoun, + _sel_isSupportedForLanguage_, language.pointer); } - static NSIndexPath indexPathWithIndex_(SwiftLibrary _lib, int index) { - final _ret = _lib._objc_msgSend_65( - _lib._class_NSIndexPath1, _lib._sel_indexPathWithIndex_1, index); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + static objc.NSArray requiredKeysForLanguage_(objc.NSString language) { + final _ret = _objc_msgSend_445(_class_NSMorphologyCustomPronoun, + _sel_requiredKeysForLanguage_, language.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSIndexPath indexPathWithIndexes_length_( - SwiftLibrary _lib, ffi.Pointer indexes, int length) { - final _ret = _lib._objc_msgSend_884(_lib._class_NSIndexPath1, - _lib._sel_indexPathWithIndexes_length_1, indexes, length); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + objc.NSString? get subjectForm { + final _ret = _objc_msgSend_13(this.pointer, _sel_subjectForm); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSIndexPath initWithIndexes_length_( - ffi.Pointer indexes, int length) { - final _ret = _lib._objc_msgSend_884( - _id, _lib._sel_initWithIndexes_length_1, indexes, length); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + set subjectForm(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setSubjectForm_, value?.pointer ?? ffi.nullptr); } - NSIndexPath initWithIndex_(int index) { - final _ret = _lib._objc_msgSend_65(_id, _lib._sel_initWithIndex_1, index); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + objc.NSString? get objectForm { + final _ret = _objc_msgSend_13(this.pointer, _sel_objectForm); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSIndexPath indexPathByAddingIndex_(int index) { - final _ret = - _lib._objc_msgSend_885(_id, _lib._sel_indexPathByAddingIndex_1, index); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + set objectForm(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setObjectForm_, value?.pointer ?? ffi.nullptr); } - NSIndexPath indexPathByRemovingLastIndex() { - final _ret = - _lib._objc_msgSend_886(_id, _lib._sel_indexPathByRemovingLastIndex1); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + objc.NSString? get possessiveForm { + final _ret = _objc_msgSend_13(this.pointer, _sel_possessiveForm); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - int indexAtPosition_(int position) { - return _lib._objc_msgSend_94(_id, _lib._sel_indexAtPosition_1, position); + set possessiveForm(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setPossessiveForm_, value?.pointer ?? ffi.nullptr); } - int get length { - return _lib._objc_msgSend_10(_id, _lib._sel_length1); + objc.NSString? get possessiveAdjectiveForm { + final _ret = _objc_msgSend_13(this.pointer, _sel_possessiveAdjectiveForm); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void getIndexes_range_( - ffi.Pointer indexes, _NSRange positionRange) { - _lib._objc_msgSend_887( - _id, _lib._sel_getIndexes_range_1, indexes, positionRange); + set possessiveAdjectiveForm(objc.NSString? value) { + return _objc_msgSend_46(this.pointer, _sel_setPossessiveAdjectiveForm_, + value?.pointer ?? ffi.nullptr); } - int compare_(NSIndexPath otherObject) { - return _lib._objc_msgSend_888(_id, _lib._sel_compare_1, otherObject._id); + objc.NSString? get reflexiveForm { + final _ret = _objc_msgSend_13(this.pointer, _sel_reflexiveForm); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void getIndexes_(ffi.Pointer indexes) { - _lib._objc_msgSend_889(_id, _lib._sel_getIndexes_1, indexes); + set reflexiveForm(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setReflexiveForm_, value?.pointer ?? ffi.nullptr); } @override - NSIndexPath init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + NSMorphologyCustomPronoun init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSMorphologyCustomPronoun.castFromPointer(_ret, + retain: true, release: true); } - static NSIndexPath new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSIndexPath1, _lib._sel_new1); - return NSIndexPath._(_ret, _lib, retain: false, release: true); + static NSMorphologyCustomPronoun new1() { + final _ret = _objc_msgSend_40(_class_NSMorphologyCustomPronoun, _sel_new); + return NSMorphologyCustomPronoun.castFromPointer(_ret, + retain: false, release: true); } - static NSIndexPath allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSIndexPath1, _lib._sel_allocWithZone_1, zone); - return NSIndexPath._(_ret, _lib, retain: false, release: true); + static NSMorphologyCustomPronoun allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSMorphologyCustomPronoun, _sel_allocWithZone_, zone); + return NSMorphologyCustomPronoun.castFromPointer(_ret, + retain: false, release: true); } - static NSIndexPath alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSIndexPath1, _lib._sel_alloc1); - return NSIndexPath._(_ret, _lib, retain: false, release: true); + static NSMorphologyCustomPronoun alloc() { + final _ret = _objc_msgSend_40(_class_NSMorphologyCustomPronoun, _sel_alloc); + return NSMorphologyCustomPronoun.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSIndexPath1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSMorphologyCustomPronoun, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSIndexPath1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSMorphologyCustomPronoun, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSIndexPath1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSMorphologyCustomPronoun, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSIndexPath1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSMorphologyCustomPronoun, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSIndexPath1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSMorphologyCustomPronoun, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSIndexPath1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSMorphologyCustomPronoun, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSIndexPath1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSMorphologyCustomPronoun, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSMorphologyCustomPronoun, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSMorphologyCustomPronoun, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSMorphologyCustomPronoun = + objc.getClass("NSMorphologyCustomPronoun"); +late final _sel_isSupportedForLanguage_ = + objc.registerName("isSupportedForLanguage:"); +late final _sel_requiredKeysForLanguage_ = + objc.registerName("requiredKeysForLanguage:"); +final _objc_msgSend_445 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_subjectForm = objc.registerName("subjectForm"); +late final _sel_setSubjectForm_ = objc.registerName("setSubjectForm:"); +late final _sel_objectForm = objc.registerName("objectForm"); +late final _sel_setObjectForm_ = objc.registerName("setObjectForm:"); +late final _sel_possessiveForm = objc.registerName("possessiveForm"); +late final _sel_setPossessiveForm_ = objc.registerName("setPossessiveForm:"); +late final _sel_possessiveAdjectiveForm = + objc.registerName("possessiveAdjectiveForm"); +late final _sel_setPossessiveAdjectiveForm_ = + objc.registerName("setPossessiveAdjectiveForm:"); +late final _sel_reflexiveForm = objc.registerName("reflexiveForm"); +late final _sel_setReflexiveForm_ = objc.registerName("setReflexiveForm:"); +late final _sel_customPronounForLanguage_ = + objc.registerName("customPronounForLanguage:"); +final _objc_msgSend_446 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCustomPronoun_forLanguage_error_ = + objc.registerName("setCustomPronoun:forLanguage:error:"); +final _objc_msgSend_447 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_isUnspecified = objc.registerName("isUnspecified"); +late final _sel_userMorphology = objc.registerName("userMorphology"); +final _objc_msgSend_448 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + +class NSOperationQueue extends objc.NSObject { + NSOperationQueue._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSOperationQueue] that points to the same underlying object as [other]. + NSOperationQueue.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSOperationQueue] that wraps the given raw object pointer. + NSOperationQueue.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSOperationQueue]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSOperationQueue); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSIndexPath1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSProgress get progress { + final _ret = _objc_msgSend_347(this.pointer, _sel_progress); + return objc.NSProgress.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSIndexPath1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + void addOperation_(NSOperation op) { + _objc_msgSend_449(this.pointer, _sel_addOperation_, op.pointer); } -} -class NSInflectionRule extends NSObject { - NSInflectionRule._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + void addOperations_waitUntilFinished_(objc.NSArray ops, bool wait) { + _objc_msgSend_456( + this.pointer, _sel_addOperations_waitUntilFinished_, ops.pointer, wait); + } - /// Returns a [NSInflectionRule] that points to the same underlying object as [other]. - static NSInflectionRule castFrom(T other) { - return NSInflectionRule._(other._id, other._lib, - retain: true, release: true); + void addOperationWithBlock_(ObjCBlock_ffiVoid block) { + _objc_msgSend_249(this.pointer, _sel_addOperationWithBlock_, block.pointer); } - /// Returns a [NSInflectionRule] that wraps the given raw object pointer. - static NSInflectionRule castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSInflectionRule._(other, lib, retain: retain, release: release); + void addBarrierBlock_(ObjCBlock_ffiVoid barrier) { + _objc_msgSend_249(this.pointer, _sel_addBarrierBlock_, barrier.pointer); } - /// Returns whether [obj] is an instance of [NSInflectionRule]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSInflectionRule1); + int get maxConcurrentOperationCount { + return _objc_msgSend_114(this.pointer, _sel_maxConcurrentOperationCount); } - @override - NSObject init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSObject._(_ret, _lib, retain: true, release: true); + set maxConcurrentOperationCount(int value) { + return _objc_msgSend_134( + this.pointer, _sel_setMaxConcurrentOperationCount_, value); } - static NSInflectionRule getAutomaticRule(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_890( - _lib._class_NSInflectionRule1, _lib._sel_automaticRule1); - return NSInflectionRule._(_ret, _lib, retain: true, release: true); + bool get suspended { + return _objc_msgSend_7(this.pointer, _sel_isSuspended); } - static bool canInflectLanguage_(SwiftLibrary _lib, NSString language) { - return _lib._objc_msgSend_64(_lib._class_NSInflectionRule1, - _lib._sel_canInflectLanguage_1, language._id); + set suspended(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setSuspended_, value); } - static bool getCanInflectPreferredLocalization(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSInflectionRule1, - _lib._sel_canInflectPreferredLocalization1); + objc.NSString? get name { + final _ret = _objc_msgSend_13(this.pointer, _sel_name); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSInflectionRule new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSInflectionRule1, _lib._sel_new1); - return NSInflectionRule._(_ret, _lib, retain: false, release: true); + set name(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setName_, value?.pointer ?? ffi.nullptr); } - static NSInflectionRule allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSInflectionRule1, _lib._sel_allocWithZone_1, zone); - return NSInflectionRule._(_ret, _lib, retain: false, release: true); + int get qualityOfService { + return _objc_msgSend_454(this.pointer, _sel_qualityOfService); } - static NSInflectionRule alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSInflectionRule1, _lib._sel_alloc1); - return NSInflectionRule._(_ret, _lib, retain: false, release: true); + set qualityOfService(int value) { + return _objc_msgSend_455(this.pointer, _sel_setQualityOfService_, value); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSInflectionRule1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + objc.NSObject? get underlyingQueue { + final _ret = _objc_msgSend_457(this.pointer, _sel_underlyingQueue); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSInflectionRule1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + set underlyingQueue(objc.NSObject? value) { + return _objc_msgSend_458( + this.pointer, _sel_setUnderlyingQueue_, value?.pointer ?? ffi.nullptr); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSInflectionRule1, - _lib._sel_accessInstanceVariablesDirectly1); + void cancelAllOperations() { + _objc_msgSend_82(this.pointer, _sel_cancelAllOperations); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSInflectionRule1, _lib._sel_useStoredAccessor1); + void waitUntilAllOperationsAreFinished() { + _objc_msgSend_82(this.pointer, _sel_waitUntilAllOperationsAreFinished); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSInflectionRule1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static NSOperationQueue? getCurrentQueue() { + final _ret = _objc_msgSend_459(_class_NSOperationQueue, _sel_currentQueue); + return _ret.address == 0 + ? null + : NSOperationQueue.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSInflectionRule1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static NSOperationQueue getMainQueue() { + final _ret = _objc_msgSend_460(_class_NSOperationQueue, _sel_mainQueue); + return NSOperationQueue.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSInflectionRule1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray get operations { + final _ret = _objc_msgSend_6(this.pointer, _sel_operations); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSInflectionRule1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + int get operationCount { + return _objc_msgSend_29(this.pointer, _sel_operationCount); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSInflectionRule1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + @override + NSOperationQueue init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSOperationQueue.castFromPointer(_ret, retain: true, release: true); } -} -class NSMorphology extends NSObject { - NSMorphology._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + static NSOperationQueue new1() { + final _ret = _objc_msgSend_40(_class_NSOperationQueue, _sel_new); + return NSOperationQueue.castFromPointer(_ret, retain: false, release: true); + } - /// Returns a [NSMorphology] that points to the same underlying object as [other]. - static NSMorphology castFrom(T other) { - return NSMorphology._(other._id, other._lib, retain: true, release: true); + static NSOperationQueue allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSOperationQueue, _sel_allocWithZone_, zone); + return NSOperationQueue.castFromPointer(_ret, retain: false, release: true); } - /// Returns a [NSMorphology] that wraps the given raw object pointer. - static NSMorphology castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMorphology._(other, lib, retain: retain, release: release); + static NSOperationQueue alloc() { + final _ret = _objc_msgSend_40(_class_NSOperationQueue, _sel_alloc); + return NSOperationQueue.castFromPointer(_ret, retain: false, release: true); } - /// Returns whether [obj] is an instance of [NSMorphology]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSMorphology1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSOperationQueue, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - int get grammaticalGender { - return _lib._objc_msgSend_891(_id, _lib._sel_grammaticalGender1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSOperationQueue, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - set grammaticalGender(int value) { - return _lib._objc_msgSend_892(_id, _lib._sel_setGrammaticalGender_1, value); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSOperationQueue, _sel_accessInstanceVariablesDirectly); } - int get partOfSpeech { - return _lib._objc_msgSend_893(_id, _lib._sel_partOfSpeech1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSOperationQueue, _sel_useStoredAccessor); } - set partOfSpeech(int value) { - return _lib._objc_msgSend_894(_id, _lib._sel_setPartOfSpeech_1, value); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSOperationQueue, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - int get number { - return _lib._objc_msgSend_895(_id, _lib._sel_number1); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSOperationQueue, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - set number(int value) { - return _lib._objc_msgSend_896(_id, _lib._sel_setNumber_1, value); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSOperationQueue, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - int get grammaticalCase { - return _lib._objc_msgSend_897(_id, _lib._sel_grammaticalCase1); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSOperationQueue, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set grammaticalCase(int value) { - return _lib._objc_msgSend_898(_id, _lib._sel_setGrammaticalCase_1, value); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSOperationQueue, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - int get determination { - return _lib._objc_msgSend_899(_id, _lib._sel_determination1); +late final _class_NSOperationQueue = objc.getClass("NSOperationQueue"); + +class NSOperation extends objc.NSObject { + NSOperation._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSOperation] that points to the same underlying object as [other]. + NSOperation.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSOperation] that wraps the given raw object pointer. + NSOperation.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSOperation]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSOperation); } - set determination(int value) { - return _lib._objc_msgSend_900(_id, _lib._sel_setDetermination_1, value); + void start() { + _objc_msgSend_82(this.pointer, _sel_start); } - int get grammaticalPerson { - return _lib._objc_msgSend_901(_id, _lib._sel_grammaticalPerson1); + void main() { + _objc_msgSend_82(this.pointer, _sel_main); } - set grammaticalPerson(int value) { - return _lib._objc_msgSend_902(_id, _lib._sel_setGrammaticalPerson_1, value); + bool get cancelled { + return _objc_msgSend_7(this.pointer, _sel_isCancelled); } - int get pronounType { - return _lib._objc_msgSend_903(_id, _lib._sel_pronounType1); + void cancel() { + _objc_msgSend_82(this.pointer, _sel_cancel); } - set pronounType(int value) { - return _lib._objc_msgSend_904(_id, _lib._sel_setPronounType_1, value); + bool get executing { + return _objc_msgSend_7(this.pointer, _sel_isExecuting); } - int get definiteness { - return _lib._objc_msgSend_905(_id, _lib._sel_definiteness1); + bool get finished { + return _objc_msgSend_7(this.pointer, _sel_isFinished); } - set definiteness(int value) { - return _lib._objc_msgSend_906(_id, _lib._sel_setDefiniteness_1, value); + bool get concurrent { + return _objc_msgSend_7(this.pointer, _sel_isConcurrent); } - NSMorphologyCustomPronoun? customPronounForLanguage_(NSString language) { - final _ret = _lib._objc_msgSend_907( - _id, _lib._sel_customPronounForLanguage_1, language._id); - return _ret.address == 0 - ? null - : NSMorphologyCustomPronoun._(_ret, _lib, retain: true, release: true); + bool get asynchronous { + return _objc_msgSend_7(this.pointer, _sel_isAsynchronous); } - bool setCustomPronoun_forLanguage_error_(NSMorphologyCustomPronoun? features, - NSString language, ffi.Pointer> error) { - return _lib._objc_msgSend_908( - _id, - _lib._sel_setCustomPronoun_forLanguage_error_1, - features?._id ?? ffi.nullptr, - language._id, - error); + bool get ready { + return _objc_msgSend_7(this.pointer, _sel_isReady); } - bool get unspecified { - return _lib._objc_msgSend_12(_id, _lib._sel_isUnspecified1); + void addDependency_(NSOperation op) { + _objc_msgSend_449(this.pointer, _sel_addDependency_, op.pointer); } - static NSMorphology getUserMorphology(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_909( - _lib._class_NSMorphology1, _lib._sel_userMorphology1); - return NSMorphology._(_ret, _lib, retain: true, release: true); + void removeDependency_(NSOperation op) { + _objc_msgSend_449(this.pointer, _sel_removeDependency_, op.pointer); } - @override - NSMorphology init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMorphology._(_ret, _lib, retain: true, release: true); + objc.NSArray get dependencies { + final _ret = _objc_msgSend_6(this.pointer, _sel_dependencies); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSMorphology new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMorphology1, _lib._sel_new1); - return NSMorphology._(_ret, _lib, retain: false, release: true); + int get queuePriority { + return _objc_msgSend_450(this.pointer, _sel_queuePriority); } - static NSMorphology allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMorphology1, _lib._sel_allocWithZone_1, zone); - return NSMorphology._(_ret, _lib, retain: false, release: true); + set queuePriority(int value) { + return _objc_msgSend_451(this.pointer, _sel_setQueuePriority_, value); } - static NSMorphology alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMorphology1, _lib._sel_alloc1); - return NSMorphology._(_ret, _lib, retain: false, release: true); + ObjCBlock_ffiVoid? get completionBlock { + final _ret = _objc_msgSend_452(this.pointer, _sel_completionBlock); + return _ret.address == 0 + ? null + : ObjCBlock_ffiVoid.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMorphology1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set completionBlock(ObjCBlock_ffiVoid? value) { + return _objc_msgSend_453( + this.pointer, _sel_setCompletionBlock_, value?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMorphology1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + void waitUntilFinished() { + _objc_msgSend_82(this.pointer, _sel_waitUntilFinished); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMorphology1, _lib._sel_accessInstanceVariablesDirectly1); + double get threadPriority { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_threadPriority) + : _objc_msgSend_115(this.pointer, _sel_threadPriority); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMorphology1, _lib._sel_useStoredAccessor1); + set threadPriority(double value) { + return _objc_msgSend_212(this.pointer, _sel_setThreadPriority_, value); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMorphology1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + int get qualityOfService { + return _objc_msgSend_454(this.pointer, _sel_qualityOfService); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMorphology1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + set qualityOfService(int value) { + return _objc_msgSend_455(this.pointer, _sel_setQualityOfService_, value); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMorphology1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSString? get name { + final _ret = _objc_msgSend_13(this.pointer, _sel_name); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSMorphology1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + set name(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setName_, value?.pointer ?? ffi.nullptr); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMorphology1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + @override + NSOperation init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSOperation.castFromPointer(_ret, retain: true, release: true); } -} -abstract class NSGrammaticalGender { - static const int NSGrammaticalGenderNotSet = 0; - static const int NSGrammaticalGenderFeminine = 1; - static const int NSGrammaticalGenderMasculine = 2; - static const int NSGrammaticalGenderNeuter = 3; -} + static NSOperation new1() { + final _ret = _objc_msgSend_40(_class_NSOperation, _sel_new); + return NSOperation.castFromPointer(_ret, retain: false, release: true); + } -abstract class NSGrammaticalPartOfSpeech { - static const int NSGrammaticalPartOfSpeechNotSet = 0; - static const int NSGrammaticalPartOfSpeechDeterminer = 1; - static const int NSGrammaticalPartOfSpeechPronoun = 2; - static const int NSGrammaticalPartOfSpeechLetter = 3; - static const int NSGrammaticalPartOfSpeechAdverb = 4; - static const int NSGrammaticalPartOfSpeechParticle = 5; - static const int NSGrammaticalPartOfSpeechAdjective = 6; - static const int NSGrammaticalPartOfSpeechAdposition = 7; - static const int NSGrammaticalPartOfSpeechVerb = 8; - static const int NSGrammaticalPartOfSpeechNoun = 9; - static const int NSGrammaticalPartOfSpeechConjunction = 10; - static const int NSGrammaticalPartOfSpeechNumeral = 11; - static const int NSGrammaticalPartOfSpeechInterjection = 12; - static const int NSGrammaticalPartOfSpeechPreposition = 13; - static const int NSGrammaticalPartOfSpeechAbbreviation = 14; -} + static NSOperation allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSOperation, _sel_allocWithZone_, zone); + return NSOperation.castFromPointer(_ret, retain: false, release: true); + } -abstract class NSGrammaticalNumber { - static const int NSGrammaticalNumberNotSet = 0; - static const int NSGrammaticalNumberSingular = 1; - static const int NSGrammaticalNumberZero = 2; - static const int NSGrammaticalNumberPlural = 3; - static const int NSGrammaticalNumberPluralTwo = 4; - static const int NSGrammaticalNumberPluralFew = 5; - static const int NSGrammaticalNumberPluralMany = 6; -} + static NSOperation alloc() { + final _ret = _objc_msgSend_40(_class_NSOperation, _sel_alloc); + return NSOperation.castFromPointer(_ret, retain: false, release: true); + } -abstract class NSGrammaticalCase { - static const int NSGrammaticalCaseNotSet = 0; - static const int NSGrammaticalCaseNominative = 1; - static const int NSGrammaticalCaseAccusative = 2; - static const int NSGrammaticalCaseDative = 3; - static const int NSGrammaticalCaseGenitive = 4; - static const int NSGrammaticalCasePrepositional = 5; - static const int NSGrammaticalCaseAblative = 6; - static const int NSGrammaticalCaseAdessive = 7; - static const int NSGrammaticalCaseAllative = 8; - static const int NSGrammaticalCaseElative = 9; - static const int NSGrammaticalCaseIllative = 10; - static const int NSGrammaticalCaseEssive = 11; - static const int NSGrammaticalCaseInessive = 12; - static const int NSGrammaticalCaseLocative = 13; - static const int NSGrammaticalCaseTranslative = 14; -} + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSOperation, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); + } -abstract class NSGrammaticalDetermination { - static const int NSGrammaticalDeterminationNotSet = 0; - static const int NSGrammaticalDeterminationIndependent = 1; - static const int NSGrammaticalDeterminationDependent = 2; -} + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSOperation, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); + } -abstract class NSGrammaticalPerson { - static const int NSGrammaticalPersonNotSet = 0; - static const int NSGrammaticalPersonFirst = 1; - static const int NSGrammaticalPersonSecond = 2; - static const int NSGrammaticalPersonThird = 3; -} + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSOperation, _sel_accessInstanceVariablesDirectly); + } -abstract class NSGrammaticalPronounType { - static const int NSGrammaticalPronounTypeNotSet = 0; - static const int NSGrammaticalPronounTypePersonal = 1; - static const int NSGrammaticalPronounTypeReflexive = 2; - static const int NSGrammaticalPronounTypePossessive = 3; -} + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSOperation, _sel_useStoredAccessor); + } -abstract class NSGrammaticalDefiniteness { - static const int NSGrammaticalDefinitenessNotSet = 0; - static const int NSGrammaticalDefinitenessIndefinite = 1; - static const int NSGrammaticalDefinitenessDefinite = 2; + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSOperation, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSOperation, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSOperation, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSOperation, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSOperation, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSOperation = objc.getClass("NSOperation"); +late final _sel_start = objc.registerName("start"); +late final _sel_main = objc.registerName("main"); +late final _sel_isCancelled = objc.registerName("isCancelled"); +late final _sel_isExecuting = objc.registerName("isExecuting"); +late final _sel_isFinished = objc.registerName("isFinished"); +late final _sel_isConcurrent = objc.registerName("isConcurrent"); +late final _sel_isAsynchronous = objc.registerName("isAsynchronous"); +late final _sel_isReady = objc.registerName("isReady"); +late final _sel_addDependency_ = objc.registerName("addDependency:"); +final _objc_msgSend_449 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_removeDependency_ = objc.registerName("removeDependency:"); +late final _sel_dependencies = objc.registerName("dependencies"); + +abstract class NSOperationQueuePriority { + static const int NSOperationQueuePriorityVeryLow = -8; + static const int NSOperationQueuePriorityLow = -4; + static const int NSOperationQueuePriorityNormal = 0; + static const int NSOperationQueuePriorityHigh = 4; + static const int NSOperationQueuePriorityVeryHigh = 8; } -class NSMorphologyCustomPronoun extends NSObject { - NSMorphologyCustomPronoun._(ffi.Pointer id, SwiftLibrary lib, +late final _sel_queuePriority = objc.registerName("queuePriority"); +final _objc_msgSend_450 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setQueuePriority_ = objc.registerName("setQueuePriority:"); +final _objc_msgSend_451 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_completionBlock = objc.registerName("completionBlock"); +final _objc_msgSend_452 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCompletionBlock_ = objc.registerName("setCompletionBlock:"); +final _objc_msgSend_453 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_waitUntilFinished = objc.registerName("waitUntilFinished"); +late final _sel_threadPriority = objc.registerName("threadPriority"); +late final _sel_setThreadPriority_ = objc.registerName("setThreadPriority:"); + +abstract class NSQualityOfService { + static const int NSQualityOfServiceUserInteractive = 33; + static const int NSQualityOfServiceUserInitiated = 25; + static const int NSQualityOfServiceUtility = 17; + static const int NSQualityOfServiceBackground = 9; + static const int NSQualityOfServiceDefault = -1; +} + +late final _sel_qualityOfService = objc.registerName("qualityOfService"); +final _objc_msgSend_454 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setQualityOfService_ = + objc.registerName("setQualityOfService:"); +final _objc_msgSend_455 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setName_ = objc.registerName("setName:"); +late final _sel_addOperation_ = objc.registerName("addOperation:"); +late final _sel_addOperations_waitUntilFinished_ = + objc.registerName("addOperations:waitUntilFinished:"); +final _objc_msgSend_456 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_addOperationWithBlock_ = + objc.registerName("addOperationWithBlock:"); +late final _sel_addBarrierBlock_ = objc.registerName("addBarrierBlock:"); +late final _sel_maxConcurrentOperationCount = + objc.registerName("maxConcurrentOperationCount"); +late final _sel_setMaxConcurrentOperationCount_ = + objc.registerName("setMaxConcurrentOperationCount:"); +late final _sel_isSuspended = objc.registerName("isSuspended"); +late final _sel_setSuspended_ = objc.registerName("setSuspended:"); +late final _sel_underlyingQueue = objc.registerName("underlyingQueue"); +final _objc_msgSend_457 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setUnderlyingQueue_ = objc.registerName("setUnderlyingQueue:"); +final _objc_msgSend_458 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_cancelAllOperations = objc.registerName("cancelAllOperations"); +late final _sel_waitUntilAllOperationsAreFinished = + objc.registerName("waitUntilAllOperationsAreFinished"); +late final _sel_currentQueue = objc.registerName("currentQueue"); +final _objc_msgSend_459 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_mainQueue = objc.registerName("mainQueue"); +final _objc_msgSend_460 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_operations = objc.registerName("operations"); +late final _sel_operationCount = objc.registerName("operationCount"); + +class NSOrthography extends objc.NSObject { + NSOrthography._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSMorphologyCustomPronoun] that points to the same underlying object as [other]. - static NSMorphologyCustomPronoun castFrom(T other) { - return NSMorphologyCustomPronoun._(other._id, other._lib, - retain: true, release: true); - } + /// Constructs a [NSOrthography] that points to the same underlying object as [other]. + NSOrthography.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSMorphologyCustomPronoun] that wraps the given raw object pointer. - static NSMorphologyCustomPronoun castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMorphologyCustomPronoun._(other, lib, - retain: retain, release: release); + /// Constructs a [NSOrthography] that wraps the given raw object pointer. + NSOrthography.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSOrthography]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSOrthography); } - /// Returns whether [obj] is an instance of [NSMorphologyCustomPronoun]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMorphologyCustomPronoun1); + objc.NSString get dominantScript { + final _ret = _objc_msgSend_12(this.pointer, _sel_dominantScript); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool isSupportedForLanguage_(SwiftLibrary _lib, NSString language) { - return _lib._objc_msgSend_64(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_isSupportedForLanguage_1, language._id); + objc.NSDictionary get languageMap { + final _ret = _objc_msgSend_112(this.pointer, _sel_languageMap); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSArray requiredKeysForLanguage_( - SwiftLibrary _lib, NSString language) { - final _ret = _lib._objc_msgSend_358(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_requiredKeysForLanguage_1, language._id); - return NSArray._(_ret, _lib, retain: true, release: true); + NSOrthography initWithDominantScript_languageMap_( + objc.NSString script, objc.NSDictionary map) { + final _ret = _objc_msgSend_461(this.pointer, + _sel_initWithDominantScript_languageMap_, script.pointer, map.pointer); + return NSOrthography.castFromPointer(_ret, retain: true, release: true); } - NSString? get subjectForm { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_subjectForm1); + NSOrthography? initWithCoder_(objc.NSCoder coder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, coder.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - set subjectForm(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setSubjectForm_1, value?._id ?? ffi.nullptr); + : NSOrthography.castFromPointer(_ret, retain: true, release: true); } - NSString? get objectForm { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_objectForm1); + objc.NSArray? languagesForScript_(objc.NSString script) { + final _ret = _objc_msgSend_290( + this.pointer, _sel_languagesForScript_, script.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - set objectForm(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setObjectForm_1, value?._id ?? ffi.nullptr); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString? get possessiveForm { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_possessiveForm1); + objc.NSString? dominantLanguageForScript_(objc.NSString script) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_dominantLanguageForScript_, script.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set possessiveForm(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setPossessiveForm_1, value?._id ?? ffi.nullptr); + objc.NSString get dominantLanguage { + final _ret = _objc_msgSend_12(this.pointer, _sel_dominantLanguage); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? get possessiveAdjectiveForm { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_possessiveAdjectiveForm1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray get allScripts { + final _ret = _objc_msgSend_6(this.pointer, _sel_allScripts); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set possessiveAdjectiveForm(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setPossessiveAdjectiveForm_1, value?._id ?? ffi.nullptr); + objc.NSArray get allLanguages { + final _ret = _objc_msgSend_6(this.pointer, _sel_allLanguages); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString? get reflexiveForm { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_reflexiveForm1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSOrthography defaultOrthographyForLanguage_(objc.NSString language) { + final _ret = _objc_msgSend_35(_class_NSOrthography, + _sel_defaultOrthographyForLanguage_, language.pointer); + return NSOrthography.castFromPointer(_ret, retain: true, release: true); } - set reflexiveForm(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setReflexiveForm_1, value?._id ?? ffi.nullptr); + static NSOrthography orthographyWithDominantScript_languageMap_( + objc.NSString script, objc.NSDictionary map) { + final _ret = _objc_msgSend_461( + _class_NSOrthography, + _sel_orthographyWithDominantScript_languageMap_, + script.pointer, + map.pointer); + return NSOrthography.castFromPointer(_ret, retain: true, release: true); } @override - NSMorphologyCustomPronoun init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMorphologyCustomPronoun._(_ret, _lib, retain: true, release: true); + NSOrthography init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSOrthography.castFromPointer(_ret, retain: true, release: true); } - static NSMorphologyCustomPronoun new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMorphologyCustomPronoun1, _lib._sel_new1); - return NSMorphologyCustomPronoun._(_ret, _lib, - retain: false, release: true); + static NSOrthography new1() { + final _ret = _objc_msgSend_40(_class_NSOrthography, _sel_new); + return NSOrthography.castFromPointer(_ret, retain: false, release: true); } - static NSMorphologyCustomPronoun allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_allocWithZone_1, zone); - return NSMorphologyCustomPronoun._(_ret, _lib, - retain: false, release: true); + static NSOrthography allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSOrthography, _sel_allocWithZone_, zone); + return NSOrthography.castFromPointer(_ret, retain: false, release: true); } - static NSMorphologyCustomPronoun alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMorphologyCustomPronoun1, _lib._sel_alloc1); - return NSMorphologyCustomPronoun._(_ret, _lib, - retain: false, release: true); + static NSOrthography alloc() { + final _ret = _objc_msgSend_40(_class_NSOrthography, _sel_alloc); + return NSOrthography.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMorphologyCustomPronoun1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSOrthography, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSOrthography, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSOrthography, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMorphologyCustomPronoun1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSOrthography, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSOrthography, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSOrthography, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMorphologyCustomPronoun1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSOrthography, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSOrthography, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSOrthography, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSOrthography = objc.getClass("NSOrthography"); +late final _sel_dominantScript = objc.registerName("dominantScript"); +late final _sel_languageMap = objc.registerName("languageMap"); +late final _sel_initWithDominantScript_languageMap_ = + objc.registerName("initWithDominantScript:languageMap:"); +final _objc_msgSend_461 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_languagesForScript_ = objc.registerName("languagesForScript:"); +late final _sel_dominantLanguageForScript_ = + objc.registerName("dominantLanguageForScript:"); +late final _sel_dominantLanguage = objc.registerName("dominantLanguage"); +late final _sel_allScripts = objc.registerName("allScripts"); +late final _sel_allLanguages = objc.registerName("allLanguages"); +late final _sel_defaultOrthographyForLanguage_ = + objc.registerName("defaultOrthographyForLanguage:"); +late final _sel_orthographyWithDominantScript_languageMap_ = + objc.registerName("orthographyWithDominantScript:languageMap:"); + +class NSPointerArray extends objc.NSObject { + NSPointerArray._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} + /// Constructs a [NSPointerArray] that points to the same underlying object as [other]. + NSPointerArray.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); -class NSOperationQueue extends NSObject { - NSOperationQueue._(ffi.Pointer id, SwiftLibrary lib, + /// Constructs a [NSPointerArray] that wraps the given raw object pointer. + NSPointerArray.castFromPointer(ffi.Pointer other, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : this._(other, retain: retain, release: release); - /// Returns a [NSOperationQueue] that points to the same underlying object as [other]. - static NSOperationQueue castFrom(T other) { - return NSOperationQueue._(other._id, other._lib, - retain: true, release: true); + /// Returns whether [obj] is an instance of [NSPointerArray]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSPointerArray); } - /// Returns a [NSOperationQueue] that wraps the given raw object pointer. - static NSOperationQueue castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSOperationQueue._(other, lib, retain: retain, release: release); + NSPointerArray initWithOptions_(int options) { + final _ret = + _objc_msgSend_462(this.pointer, _sel_initWithOptions_, options); + return NSPointerArray.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSOperationQueue]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSOperationQueue1); + NSPointerArray initWithPointerFunctions_(NSPointerFunctions functions) { + final _ret = _objc_msgSend_476( + this.pointer, _sel_initWithPointerFunctions_, functions.pointer); + return NSPointerArray.castFromPointer(_ret, retain: true, release: true); } - NSProgress get progress { - final _ret = _lib._objc_msgSend_879(_id, _lib._sel_progress1); - return NSProgress._(_ret, _lib, retain: true, release: true); + static NSPointerArray pointerArrayWithOptions_(int options) { + final _ret = _objc_msgSend_477( + _class_NSPointerArray, _sel_pointerArrayWithOptions_, options); + return NSPointerArray.castFromPointer(_ret, retain: true, release: true); } - void addOperation_(NSOperation op) { - _lib._objc_msgSend_910(_id, _lib._sel_addOperation_1, op._id); + static NSPointerArray pointerArrayWithPointerFunctions_( + NSPointerFunctions functions) { + final _ret = _objc_msgSend_478(_class_NSPointerArray, + _sel_pointerArrayWithPointerFunctions_, functions.pointer); + return NSPointerArray.castFromPointer(_ret, retain: true, release: true); } - void addOperations_waitUntilFinished_(NSArray ops, bool wait) { - _lib._objc_msgSend_913( - _id, _lib._sel_addOperations_waitUntilFinished_1, ops._id, wait); + NSPointerFunctions get pointerFunctions { + final _ret = _objc_msgSend_479(this.pointer, _sel_pointerFunctions); + return NSPointerFunctions.castFromPointer(_ret, + retain: true, release: true); } - void addOperationWithBlock_(ObjCBlock_ffiVoid block) { - _lib._objc_msgSend_532(_id, _lib._sel_addOperationWithBlock_1, block._id); + ffi.Pointer pointerAtIndex_(int index) { + return _objc_msgSend_480(this.pointer, _sel_pointerAtIndex_, index); } - void addBarrierBlock_(ObjCBlock_ffiVoid barrier) { - _lib._objc_msgSend_532(_id, _lib._sel_addBarrierBlock_1, barrier._id); + void addPointer_(ffi.Pointer pointer) { + _objc_msgSend_481(this.pointer, _sel_addPointer_, pointer); } - int get maxConcurrentOperationCount { - return _lib._objc_msgSend_83(_id, _lib._sel_maxConcurrentOperationCount1); + void removePointerAtIndex_(int index) { + _objc_msgSend_414(this.pointer, _sel_removePointerAtIndex_, index); } - set maxConcurrentOperationCount(int value) { - return _lib._objc_msgSend_635( - _id, _lib._sel_setMaxConcurrentOperationCount_1, value); + void insertPointer_atIndex_(ffi.Pointer item, int index) { + _objc_msgSend_482(this.pointer, _sel_insertPointer_atIndex_, item, index); } - bool get suspended { - return _lib._objc_msgSend_12(_id, _lib._sel_isSuspended1); + void replacePointerAtIndex_withPointer_( + int index, ffi.Pointer item) { + _objc_msgSend_483( + this.pointer, _sel_replacePointerAtIndex_withPointer_, index, item); } - set suspended(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setSuspended_1, value); + void compact() { + _objc_msgSend_82(this.pointer, _sel_compact); } - NSString? get name { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_name1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + int get count { + return _objc_msgSend_29(this.pointer, _sel_count); } - set name(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); + set count(int value) { + return _objc_msgSend_125(this.pointer, _sel_setCount_, value); } - int get qualityOfService { - return _lib._objc_msgSend_543(_id, _lib._sel_qualityOfService1); + static objc.NSObject pointerArrayWithStrongObjects() { + final _ret = _objc_msgSend_40( + _class_NSPointerArray, _sel_pointerArrayWithStrongObjects); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set qualityOfService(int value) { - return _lib._objc_msgSend_544(_id, _lib._sel_setQualityOfService_1, value); + static objc.NSObject pointerArrayWithWeakObjects() { + final _ret = _objc_msgSend_40( + _class_NSPointerArray, _sel_pointerArrayWithWeakObjects); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - ffi.Pointer get underlyingQueue { - return _lib._objc_msgSend_914(_id, _lib._sel_underlyingQueue1); + static NSPointerArray strongObjectsPointerArray() { + final _ret = _objc_msgSend_484( + _class_NSPointerArray, _sel_strongObjectsPointerArray); + return NSPointerArray.castFromPointer(_ret, retain: true, release: true); } - set underlyingQueue(ffi.Pointer value) { - return _lib._objc_msgSend_915(_id, _lib._sel_setUnderlyingQueue_1, value); + static NSPointerArray weakObjectsPointerArray() { + final _ret = + _objc_msgSend_484(_class_NSPointerArray, _sel_weakObjectsPointerArray); + return NSPointerArray.castFromPointer(_ret, retain: true, release: true); } - void cancelAllOperations() { - _lib._objc_msgSend_1(_id, _lib._sel_cancelAllOperations1); + objc.NSArray get allObjects { + final _ret = _objc_msgSend_6(this.pointer, _sel_allObjects); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void waitUntilAllOperationsAreFinished() { - _lib._objc_msgSend_1(_id, _lib._sel_waitUntilAllOperationsAreFinished1); + @override + NSPointerArray init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSPointerArray.castFromPointer(_ret, retain: true, release: true); } - static NSOperationQueue? getCurrentQueue(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_916( - _lib._class_NSOperationQueue1, _lib._sel_currentQueue1); - return _ret.address == 0 - ? null - : NSOperationQueue._(_ret, _lib, retain: true, release: true); + static NSPointerArray new1() { + final _ret = _objc_msgSend_40(_class_NSPointerArray, _sel_new); + return NSPointerArray.castFromPointer(_ret, retain: false, release: true); } - static NSOperationQueue getMainQueue(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_917( - _lib._class_NSOperationQueue1, _lib._sel_mainQueue1); - return NSOperationQueue._(_ret, _lib, retain: true, release: true); + static NSPointerArray allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSPointerArray, _sel_allocWithZone_, zone); + return NSPointerArray.castFromPointer(_ret, retain: false, release: true); } - NSArray get operations { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_operations1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSPointerArray alloc() { + final _ret = _objc_msgSend_40(_class_NSPointerArray, _sel_alloc); + return NSPointerArray.castFromPointer(_ret, retain: false, release: true); } - int get operationCount { - return _lib._objc_msgSend_10(_id, _lib._sel_operationCount1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSPointerArray, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - @override - NSOperationQueue init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSOperationQueue._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSPointerArray, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static NSOperationQueue new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOperationQueue1, _lib._sel_new1); - return NSOperationQueue._(_ret, _lib, retain: false, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSPointerArray, _sel_accessInstanceVariablesDirectly); } - static NSOperationQueue allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSOperationQueue1, _lib._sel_allocWithZone_1, zone); - return NSOperationQueue._(_ret, _lib, retain: false, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSPointerArray, _sel_useStoredAccessor); } - static NSOperationQueue alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOperationQueue1, _lib._sel_alloc1); - return NSOperationQueue._(_ret, _lib, retain: false, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSPointerArray, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSOperationQueue1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSPointerArray, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSOperationQueue1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSPointerArray, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSOperationQueue1, - _lib._sel_accessInstanceVariablesDirectly1); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSPointerArray, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOperationQueue1, _lib._sel_useStoredAccessor1); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSPointerArray, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSOperationQueue1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } +late final _class_NSPointerArray = objc.getClass("NSPointerArray"); + +abstract class NSPointerFunctionsOptions { + static const int NSPointerFunctionsStrongMemory = 0; + static const int NSPointerFunctionsZeroingWeakMemory = 1; + static const int NSPointerFunctionsOpaqueMemory = 2; + static const int NSPointerFunctionsMallocMemory = 3; + static const int NSPointerFunctionsMachVirtualMemory = 4; + static const int NSPointerFunctionsWeakMemory = 5; + static const int NSPointerFunctionsObjectPersonality = 0; + static const int NSPointerFunctionsOpaquePersonality = 256; + static const int NSPointerFunctionsObjectPointerPersonality = 512; + static const int NSPointerFunctionsCStringPersonality = 768; + static const int NSPointerFunctionsStructPersonality = 1024; + static const int NSPointerFunctionsIntegerPersonality = 1280; + static const int NSPointerFunctionsCopyIn = 65536; +} + +late final _sel_initWithOptions_ = objc.registerName("initWithOptions:"); +final _objc_msgSend_462 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int)>(); + +class NSPointerFunctions extends objc.NSObject { + NSPointerFunctions._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSPointerFunctions] that points to the same underlying object as [other]. + NSPointerFunctions.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSPointerFunctions] that wraps the given raw object pointer. + NSPointerFunctions.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSOperationQueue1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + /// Returns whether [obj] is an instance of [NSPointerFunctions]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSPointerFunctions); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSOperationQueue1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + NSPointerFunctions initWithOptions_(int options) { + final _ret = + _objc_msgSend_462(this.pointer, _sel_initWithOptions_, options); + return NSPointerFunctions.castFromPointer(_ret, + retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSOperationQueue1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSPointerFunctions pointerFunctionsWithOptions_(int options) { + final _ret = _objc_msgSend_463( + _class_NSPointerFunctions, _sel_pointerFunctionsWithOptions_, options); + return NSPointerFunctions.castFromPointer(_ret, + retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSOperationQueue1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + get hashFunction { + return _objc_msgSend_464(this.pointer, _sel_hashFunction); } -} -class NSOperation extends NSObject { - NSOperation._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + set hashFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value) { + return _objc_msgSend_465(this.pointer, _sel_setHashFunction_, value); + } - /// Returns a [NSOperation] that points to the same underlying object as [other]. - static NSOperation castFrom(T other) { - return NSOperation._(other._id, other._lib, retain: true, release: true); + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + get isEqualFunction { + return _objc_msgSend_466(this.pointer, _sel_isEqualFunction); } - /// Returns a [NSOperation] that wraps the given raw object pointer. - static NSOperation castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSOperation._(other, lib, retain: retain, release: release); + set isEqualFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value) { + return _objc_msgSend_467(this.pointer, _sel_setIsEqualFunction_, value); } - /// Returns whether [obj] is an instance of [NSOperation]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSOperation1); + ffi.Pointer< + ffi.NativeFunction)>> + get sizeFunction { + return _objc_msgSend_468(this.pointer, _sel_sizeFunction); } - void start() { - _lib._objc_msgSend_1(_id, _lib._sel_start1); + set sizeFunction( + ffi.Pointer< + ffi + .NativeFunction)>> + value) { + return _objc_msgSend_469(this.pointer, _sel_setSizeFunction_, value); } - void main() { - _lib._objc_msgSend_1(_id, _lib._sel_main1); + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> + get descriptionFunction { + return _objc_msgSend_470(this.pointer, _sel_descriptionFunction); } - bool get cancelled { - return _lib._objc_msgSend_12(_id, _lib._sel_isCancelled1); + set descriptionFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> + value) { + return _objc_msgSend_471(this.pointer, _sel_setDescriptionFunction_, value); } - void cancel() { - _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + get relinquishFunction { + return _objc_msgSend_472(this.pointer, _sel_relinquishFunction); } - bool get executing { - return _lib._objc_msgSend_12(_id, _lib._sel_isExecuting1); + set relinquishFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value) { + return _objc_msgSend_473(this.pointer, _sel_setRelinquishFunction_, value); } - bool get finished { - return _lib._objc_msgSend_12(_id, _lib._sel_isFinished1); + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>, + ffi.Bool)>> get acquireFunction { + return _objc_msgSend_474(this.pointer, _sel_acquireFunction); } - bool get concurrent { - return _lib._objc_msgSend_12(_id, _lib._sel_isConcurrent1); + set acquireFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>> + value) { + return _objc_msgSend_475(this.pointer, _sel_setAcquireFunction_, value); } - bool get asynchronous { - return _lib._objc_msgSend_12(_id, _lib._sel_isAsynchronous1); + bool get usesStrongWriteBarrier { + return _objc_msgSend_7(this.pointer, _sel_usesStrongWriteBarrier); } - bool get ready { - return _lib._objc_msgSend_12(_id, _lib._sel_isReady1); + set usesStrongWriteBarrier(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setUsesStrongWriteBarrier_, value); } - void addDependency_(NSOperation op) { - _lib._objc_msgSend_910(_id, _lib._sel_addDependency_1, op._id); + bool get usesWeakReadAndWriteBarriers { + return _objc_msgSend_7(this.pointer, _sel_usesWeakReadAndWriteBarriers); } - void removeDependency_(NSOperation op) { - _lib._objc_msgSend_910(_id, _lib._sel_removeDependency_1, op._id); + set usesWeakReadAndWriteBarriers(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setUsesWeakReadAndWriteBarriers_, value); } - NSArray get dependencies { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_dependencies1); - return NSArray._(_ret, _lib, retain: true, release: true); + @override + NSPointerFunctions init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSPointerFunctions.castFromPointer(_ret, + retain: true, release: true); } - int get queuePriority { - return _lib._objc_msgSend_911(_id, _lib._sel_queuePriority1); + static NSPointerFunctions new1() { + final _ret = _objc_msgSend_40(_class_NSPointerFunctions, _sel_new); + return NSPointerFunctions.castFromPointer(_ret, + retain: false, release: true); } - set queuePriority(int value) { - return _lib._objc_msgSend_912(_id, _lib._sel_setQueuePriority_1, value); + static NSPointerFunctions allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSPointerFunctions, _sel_allocWithZone_, zone); + return NSPointerFunctions.castFromPointer(_ret, + retain: false, release: true); } - ObjCBlock_ffiVoid? get completionBlock { - final _ret = _lib._objc_msgSend_668(_id, _lib._sel_completionBlock1); - return _ret.address == 0 - ? null - : ObjCBlock_ffiVoid._(_ret, _lib, retain: true, release: true); + static NSPointerFunctions alloc() { + final _ret = _objc_msgSend_40(_class_NSPointerFunctions, _sel_alloc); + return NSPointerFunctions.castFromPointer(_ret, + retain: false, release: true); } - set completionBlock(ObjCBlock_ffiVoid? value) { - return _lib._objc_msgSend_669( - _id, _lib._sel_setCompletionBlock_1, value?._id ?? ffi.nullptr); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSPointerFunctions, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - void waitUntilFinished() { - _lib._objc_msgSend_1(_id, _lib._sel_waitUntilFinished1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSPointerFunctions, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - double get threadPriority { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_threadPriority1) - : _lib._objc_msgSend_165(_id, _lib._sel_threadPriority1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSPointerFunctions, _sel_accessInstanceVariablesDirectly); } - set threadPriority(double value) { - return _lib._objc_msgSend_542(_id, _lib._sel_setThreadPriority_1, value); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSPointerFunctions, _sel_useStoredAccessor); } - int get qualityOfService { - return _lib._objc_msgSend_543(_id, _lib._sel_qualityOfService1); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSPointerFunctions, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - set qualityOfService(int value) { - return _lib._objc_msgSend_544(_id, _lib._sel_setQualityOfService_1, value); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSPointerFunctions, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSString? get name { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_name1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSPointerFunctions, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSPointerFunctions, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSPointerFunctions, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSPointerFunctions = objc.getClass("NSPointerFunctions"); +late final _sel_pointerFunctionsWithOptions_ = + objc.registerName("pointerFunctionsWithOptions:"); +final _objc_msgSend_463 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_hashFunction = objc.registerName("hashFunction"); +final _objc_msgSend_464 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer, ffi.Pointer)>>)>> Function( + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>(); +late final _sel_setHashFunction_ = objc.registerName("setHashFunction:"); +final _objc_msgSend_465 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>(); +late final _sel_isEqualFunction = objc.registerName("isEqualFunction"); +final _objc_msgSend_466 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer, ffi.Pointer, ffi.Pointer)>>)>> Function( + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>(); +late final _sel_setIsEqualFunction_ = objc.registerName("setIsEqualFunction:"); +final _objc_msgSend_467 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>>)>(); +late final _sel_sizeFunction = objc.registerName("sizeFunction"); +final _objc_msgSend_468 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer)>> Function( + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>> + Function(ffi.Pointer, ffi.Pointer)>(); +late final _sel_setSizeFunction_ = objc.registerName("setSizeFunction:"); +final _objc_msgSend_469 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>(); +late final _sel_descriptionFunction = objc.registerName("descriptionFunction"); +final _objc_msgSend_470 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> Function( + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>> + Function(ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDescriptionFunction_ = + objc.registerName("setDescriptionFunction:"); +final _objc_msgSend_471 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>)>(); +late final _sel_relinquishFunction = objc.registerName("relinquishFunction"); +final _objc_msgSend_472 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer, ffi.Pointer)>>)>> Function( + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>(); +late final _sel_setRelinquishFunction_ = + objc.registerName("setRelinquishFunction:"); +final _objc_msgSend_473 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>(); +late final _sel_acquireFunction = objc.registerName("acquireFunction"); +final _objc_msgSend_474 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, ffi.Pointer)>>, ffi.Bool)>> Function( + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>> + Function(ffi.Pointer, ffi.Pointer)>(); +late final _sel_setAcquireFunction_ = objc.registerName("setAcquireFunction:"); +final _objc_msgSend_475 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi + .NativeFunction)>>, + ffi.Bool)>>)>(); +late final _sel_usesStrongWriteBarrier = + objc.registerName("usesStrongWriteBarrier"); +late final _sel_setUsesStrongWriteBarrier_ = + objc.registerName("setUsesStrongWriteBarrier:"); +late final _sel_usesWeakReadAndWriteBarriers = + objc.registerName("usesWeakReadAndWriteBarriers"); +late final _sel_setUsesWeakReadAndWriteBarriers_ = + objc.registerName("setUsesWeakReadAndWriteBarriers:"); +late final _sel_initWithPointerFunctions_ = + objc.registerName("initWithPointerFunctions:"); +final _objc_msgSend_476 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_pointerArrayWithOptions_ = + objc.registerName("pointerArrayWithOptions:"); +final _objc_msgSend_477 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_pointerArrayWithPointerFunctions_ = + objc.registerName("pointerArrayWithPointerFunctions:"); +final _objc_msgSend_478 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_pointerFunctions = objc.registerName("pointerFunctions"); +final _objc_msgSend_479 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_pointerAtIndex_ = objc.registerName("pointerAtIndex:"); +final _objc_msgSend_480 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_addPointer_ = objc.registerName("addPointer:"); +final _objc_msgSend_481 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_removePointerAtIndex_ = + objc.registerName("removePointerAtIndex:"); +late final _sel_insertPointer_atIndex_ = + objc.registerName("insertPointer:atIndex:"); +final _objc_msgSend_482 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); +late final _sel_replacePointerAtIndex_withPointer_ = + objc.registerName("replacePointerAtIndex:withPointer:"); +final _objc_msgSend_483 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); +late final _sel_compact = objc.registerName("compact"); +late final _sel_setCount_ = objc.registerName("setCount:"); +late final _sel_pointerArrayWithStrongObjects = + objc.registerName("pointerArrayWithStrongObjects"); +late final _sel_pointerArrayWithWeakObjects = + objc.registerName("pointerArrayWithWeakObjects"); +late final _sel_strongObjectsPointerArray = + objc.registerName("strongObjectsPointerArray"); +final _objc_msgSend_484 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_weakObjectsPointerArray = + objc.registerName("weakObjectsPointerArray"); +late final _sel_allObjects = objc.registerName("allObjects"); + +class NSProcessInfo extends objc.NSObject { + NSProcessInfo._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSProcessInfo] that points to the same underlying object as [other]. + NSProcessInfo.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - set name(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); - } + /// Constructs a [NSProcessInfo] that wraps the given raw object pointer. + NSProcessInfo.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - @override - NSOperation init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSOperation._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSProcessInfo]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSProcessInfo); } - static NSOperation new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSOperation1, _lib._sel_new1); - return NSOperation._(_ret, _lib, retain: false, release: true); + static NSProcessInfo getProcessInfo() { + final _ret = _objc_msgSend_485(_class_NSProcessInfo, _sel_processInfo); + return NSProcessInfo.castFromPointer(_ret, retain: true, release: true); } - static NSOperation allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSOperation1, _lib._sel_allocWithZone_1, zone); - return NSOperation._(_ret, _lib, retain: false, release: true); + objc.NSDictionary get environment { + final _ret = _objc_msgSend_112(this.pointer, _sel_environment); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSOperation alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOperation1, _lib._sel_alloc1); - return NSOperation._(_ret, _lib, retain: false, release: true); + objc.NSArray get arguments { + final _ret = _objc_msgSend_6(this.pointer, _sel_arguments); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSOperation1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + objc.NSString get hostName { + final _ret = _objc_msgSend_12(this.pointer, _sel_hostName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSOperation1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + objc.NSString get processName { + final _ret = _objc_msgSend_12(this.pointer, _sel_processName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOperation1, _lib._sel_accessInstanceVariablesDirectly1); + set processName(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setProcessName_, value.pointer); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSOperation1, _lib._sel_useStoredAccessor1); + int get processIdentifier { + return _objc_msgSend_264(this.pointer, _sel_processIdentifier); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSOperation1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSString get globallyUniqueString { + final _ret = _objc_msgSend_12(this.pointer, _sel_globallyUniqueString); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSOperation1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + int operatingSystem() { + return _objc_msgSend_29(this.pointer, _sel_operatingSystem); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSOperation1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSString operatingSystemName() { + final _ret = _objc_msgSend_12(this.pointer, _sel_operatingSystemName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSOperation1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSString get operatingSystemVersionString { + final _ret = + _objc_msgSend_12(this.pointer, _sel_operatingSystemVersionString); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSOperation1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + void getOperatingSystemVersion(ffi.Pointer stret) { + objc.useMsgSendVariants + ? _objc_msgSend_486Stret( + stret, this.pointer, _sel_operatingSystemVersion) + : stret.ref = + _objc_msgSend_486(this.pointer, _sel_operatingSystemVersion); } -} - -abstract class NSOperationQueuePriority { - static const int NSOperationQueuePriorityVeryLow = -8; - static const int NSOperationQueuePriorityLow = -4; - static const int NSOperationQueuePriorityNormal = 0; - static const int NSOperationQueuePriorityHigh = 4; - static const int NSOperationQueuePriorityVeryHigh = 8; -} -final class dispatch_queue_s extends ffi.Opaque {} - -class NSPointerArray extends NSObject { - NSPointerArray._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSPointerArray] that points to the same underlying object as [other]. - static NSPointerArray castFrom(T other) { - return NSPointerArray._(other._id, other._lib, retain: true, release: true); + int get processorCount { + return _objc_msgSend_29(this.pointer, _sel_processorCount); } - /// Returns a [NSPointerArray] that wraps the given raw object pointer. - static NSPointerArray castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSPointerArray._(other, lib, retain: retain, release: release); + int get activeProcessorCount { + return _objc_msgSend_29(this.pointer, _sel_activeProcessorCount); } - /// Returns whether [obj] is an instance of [NSPointerArray]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSPointerArray1); + int get physicalMemory { + return _objc_msgSend_267(this.pointer, _sel_physicalMemory); } - NSPointerArray initWithOptions_(int options) { - final _ret = - _lib._objc_msgSend_918(_id, _lib._sel_initWithOptions_1, options); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + bool isOperatingSystemAtLeastVersion_(NSOperatingSystemVersion version) { + return _objc_msgSend_487( + this.pointer, _sel_isOperatingSystemAtLeastVersion_, version); } - NSPointerArray initWithPointerFunctions_(NSPointerFunctions functions) { - final _ret = _lib._objc_msgSend_932( - _id, _lib._sel_initWithPointerFunctions_1, functions._id); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + double get systemUptime { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_systemUptime) + : _objc_msgSend_115(this.pointer, _sel_systemUptime); } - static NSPointerArray pointerArrayWithOptions_( - SwiftLibrary _lib, int options) { - final _ret = _lib._objc_msgSend_933(_lib._class_NSPointerArray1, - _lib._sel_pointerArrayWithOptions_1, options); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + void disableSuddenTermination() { + _objc_msgSend_82(this.pointer, _sel_disableSuddenTermination); } - static NSPointerArray pointerArrayWithPointerFunctions_( - SwiftLibrary _lib, NSPointerFunctions functions) { - final _ret = _lib._objc_msgSend_934(_lib._class_NSPointerArray1, - _lib._sel_pointerArrayWithPointerFunctions_1, functions._id); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + void enableSuddenTermination() { + _objc_msgSend_82(this.pointer, _sel_enableSuddenTermination); } - NSPointerFunctions get pointerFunctions { - final _ret = _lib._objc_msgSend_935(_id, _lib._sel_pointerFunctions1); - return NSPointerFunctions._(_ret, _lib, retain: true, release: true); + void disableAutomaticTermination_(objc.NSString reason) { + _objc_msgSend_98( + this.pointer, _sel_disableAutomaticTermination_, reason.pointer); } - ffi.Pointer pointerAtIndex_(int index) { - return _lib._objc_msgSend_936(_id, _lib._sel_pointerAtIndex_1, index); + void enableAutomaticTermination_(objc.NSString reason) { + _objc_msgSend_98( + this.pointer, _sel_enableAutomaticTermination_, reason.pointer); } - void addPointer_(ffi.Pointer pointer) { - _lib._objc_msgSend_52(_id, _lib._sel_addPointer_1, pointer); + bool get automaticTerminationSupportEnabled { + return _objc_msgSend_7( + this.pointer, _sel_automaticTerminationSupportEnabled); } - void removePointerAtIndex_(int index) { - _lib._objc_msgSend_470(_id, _lib._sel_removePointerAtIndex_1, index); + set automaticTerminationSupportEnabled(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAutomaticTerminationSupportEnabled_, value); } - void insertPointer_atIndex_(ffi.Pointer item, int index) { - _lib._objc_msgSend_22(_id, _lib._sel_insertPointer_atIndex_1, item, index); + objc.NSObject beginActivityWithOptions_reason_( + int options, objc.NSString reason) { + final _ret = _objc_msgSend_488(this.pointer, + _sel_beginActivityWithOptions_reason_, options, reason.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void replacePointerAtIndex_withPointer_( - int index, ffi.Pointer item) { - _lib._objc_msgSend_937( - _id, _lib._sel_replacePointerAtIndex_withPointer_1, index, item); + void endActivity_(objc.NSObject activity) { + _objc_msgSend_49(this.pointer, _sel_endActivity_, activity.pointer); } - void compact() { - _lib._objc_msgSend_1(_id, _lib._sel_compact1); + void performActivityWithOptions_reason_usingBlock_( + int options, objc.NSString reason, ObjCBlock_ffiVoid block) { + _objc_msgSend_489( + this.pointer, + _sel_performActivityWithOptions_reason_usingBlock_, + options, + reason.pointer, + block.pointer); } - int get count { - return _lib._objc_msgSend_10(_id, _lib._sel_count1); + void performExpiringActivityWithReason_usingBlock_( + objc.NSString reason, ObjCBlock_ffiVoid_bool block) { + _objc_msgSend_490( + this.pointer, + _sel_performExpiringActivityWithReason_usingBlock_, + reason.pointer, + block.pointer); } - set count(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setCount_1, value); + objc.NSString get userName { + final _ret = _objc_msgSend_12(this.pointer, _sel_userName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject pointerArrayWithStrongObjects(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPointerArray1, _lib._sel_pointerArrayWithStrongObjects1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSString get fullUserName { + final _ret = _objc_msgSend_12(this.pointer, _sel_fullUserName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject pointerArrayWithWeakObjects(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPointerArray1, _lib._sel_pointerArrayWithWeakObjects1); - return NSObject._(_ret, _lib, retain: true, release: true); + int get thermalState { + return _objc_msgSend_491(this.pointer, _sel_thermalState); } - static NSPointerArray strongObjectsPointerArray(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_938( - _lib._class_NSPointerArray1, _lib._sel_strongObjectsPointerArray1); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + bool get lowPowerModeEnabled { + return _objc_msgSend_7(this.pointer, _sel_isLowPowerModeEnabled); } - static NSPointerArray weakObjectsPointerArray(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_938( - _lib._class_NSPointerArray1, _lib._sel_weakObjectsPointerArray1); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + bool get macCatalystApp { + return _objc_msgSend_7(this.pointer, _sel_isMacCatalystApp); } - NSArray get allObjects { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_allObjects1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool get iOSAppOnMac { + return _objc_msgSend_7(this.pointer, _sel_isiOSAppOnMac); } @override - NSPointerArray init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + NSProcessInfo init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSProcessInfo.castFromPointer(_ret, retain: true, release: true); } - static NSPointerArray new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPointerArray1, _lib._sel_new1); - return NSPointerArray._(_ret, _lib, retain: false, release: true); + static NSProcessInfo new1() { + final _ret = _objc_msgSend_40(_class_NSProcessInfo, _sel_new); + return NSProcessInfo.castFromPointer(_ret, retain: false, release: true); } - static NSPointerArray allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSPointerArray1, _lib._sel_allocWithZone_1, zone); - return NSPointerArray._(_ret, _lib, retain: false, release: true); + static NSProcessInfo allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSProcessInfo, _sel_allocWithZone_, zone); + return NSProcessInfo.castFromPointer(_ret, retain: false, release: true); } - static NSPointerArray alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPointerArray1, _lib._sel_alloc1); - return NSPointerArray._(_ret, _lib, retain: false, release: true); + static NSProcessInfo alloc() { + final _ret = _objc_msgSend_40(_class_NSProcessInfo, _sel_alloc); + return NSProcessInfo.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSPointerArray1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSProcessInfo, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSPointerArray1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSProcessInfo, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSPointerArray1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSProcessInfo, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPointerArray1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSProcessInfo, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSPointerArray1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSProcessInfo, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSPointerArray1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSProcessInfo, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSPointerArray1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSProcessInfo, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSProcessInfo, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSProcessInfo, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSProcessInfo = objc.getClass("NSProcessInfo"); +late final _sel_processInfo = objc.registerName("processInfo"); +final _objc_msgSend_485 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_environment = objc.registerName("environment"); +late final _sel_arguments = objc.registerName("arguments"); +late final _sel_hostName = objc.registerName("hostName"); +late final _sel_processName = objc.registerName("processName"); +late final _sel_setProcessName_ = objc.registerName("setProcessName:"); +late final _sel_processIdentifier = objc.registerName("processIdentifier"); +late final _sel_globallyUniqueString = + objc.registerName("globallyUniqueString"); +late final _sel_operatingSystem = objc.registerName("operatingSystem"); +late final _sel_operatingSystemName = objc.registerName("operatingSystemName"); +late final _sel_operatingSystemVersionString = + objc.registerName("operatingSystemVersionString"); - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSPointerArray1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } +final class NSOperatingSystemVersion extends ffi.Struct { + @ffi.Long() + external int majorVersion; - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPointerArray1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } + @ffi.Long() + external int minorVersion; + + @ffi.Long() + external int patchVersion; } -abstract class NSPointerFunctionsOptions { - static const int NSPointerFunctionsStrongMemory = 0; - static const int NSPointerFunctionsZeroingWeakMemory = 1; - static const int NSPointerFunctionsOpaqueMemory = 2; - static const int NSPointerFunctionsMallocMemory = 3; - static const int NSPointerFunctionsMachVirtualMemory = 4; - static const int NSPointerFunctionsWeakMemory = 5; - static const int NSPointerFunctionsObjectPersonality = 0; - static const int NSPointerFunctionsOpaquePersonality = 256; - static const int NSPointerFunctionsObjectPointerPersonality = 512; - static const int NSPointerFunctionsCStringPersonality = 768; - static const int NSPointerFunctionsStructPersonality = 1024; - static const int NSPointerFunctionsIntegerPersonality = 1280; - static const int NSPointerFunctionsCopyIn = 65536; +late final _sel_operatingSystemVersion = + objc.registerName("operatingSystemVersion"); +final _objc_msgSend_486 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + NSOperatingSystemVersion Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + NSOperatingSystemVersion Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_486Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_processorCount = objc.registerName("processorCount"); +late final _sel_activeProcessorCount = + objc.registerName("activeProcessorCount"); +late final _sel_physicalMemory = objc.registerName("physicalMemory"); +late final _sel_isOperatingSystemAtLeastVersion_ = + objc.registerName("isOperatingSystemAtLeastVersion:"); +final _objc_msgSend_487 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, NSOperatingSystemVersion)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, NSOperatingSystemVersion)>(); +late final _sel_systemUptime = objc.registerName("systemUptime"); +late final _sel_disableSuddenTermination = + objc.registerName("disableSuddenTermination"); +late final _sel_enableSuddenTermination = + objc.registerName("enableSuddenTermination"); +late final _sel_disableAutomaticTermination_ = + objc.registerName("disableAutomaticTermination:"); +late final _sel_enableAutomaticTermination_ = + objc.registerName("enableAutomaticTermination:"); +late final _sel_automaticTerminationSupportEnabled = + objc.registerName("automaticTerminationSupportEnabled"); +late final _sel_setAutomaticTerminationSupportEnabled_ = + objc.registerName("setAutomaticTerminationSupportEnabled:"); + +abstract class NSActivityOptions { + static const int NSActivityIdleDisplaySleepDisabled = 1099511627776; + static const int NSActivityIdleSystemSleepDisabled = 1048576; + static const int NSActivitySuddenTerminationDisabled = 16384; + static const int NSActivityAutomaticTerminationDisabled = 32768; + static const int NSActivityAnimationTrackingEnabled = 35184372088832; + static const int NSActivityTrackingEnabled = 70368744177664; + static const int NSActivityUserInitiated = 16777215; + static const int NSActivityUserInitiatedAllowingIdleSystemSleep = 15728639; + static const int NSActivityBackground = 255; + static const int NSActivityLatencyCritical = 1095216660480; + static const int NSActivityUserInteractive = 1095233437695; } -class NSPointerFunctions extends NSObject { - NSPointerFunctions._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); +late final _sel_beginActivityWithOptions_reason_ = + objc.registerName("beginActivityWithOptions:reason:"); +final _objc_msgSend_488 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_endActivity_ = objc.registerName("endActivity:"); +late final _sel_performActivityWithOptions_reason_usingBlock_ = + objc.registerName("performActivityWithOptions:reason:usingBlock:"); +final _objc_msgSend_489 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_bool_fnPtrTrampoline( + ffi.Pointer block, bool arg0) => + block.ref.target + .cast>() + .asFunction()(arg0); +final _ObjCBlock_ffiVoid_bool_closureRegistry = {}; +int _ObjCBlock_ffiVoid_bool_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_bool_registerClosure( + void Function(bool) fn) { + final id = ++_ObjCBlock_ffiVoid_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - /// Returns a [NSPointerFunctions] that points to the same underlying object as [other]. - static NSPointerFunctions castFrom(T other) { - return NSPointerFunctions._(other._id, other._lib, - retain: true, release: true); - } +void _ObjCBlock_ffiVoid_bool_closureTrampoline( + ffi.Pointer block, bool arg0) => + _ObjCBlock_ffiVoid_bool_closureRegistry[block.ref.target.address]!(arg0); - /// Returns a [NSPointerFunctions] that wraps the given raw object pointer. - static NSPointerFunctions castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSPointerFunctions._(other, lib, retain: retain, release: release); - } +class ObjCBlock_ffiVoid_bool extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_bool._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - /// Returns whether [obj] is an instance of [NSPointerFunctions]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSPointerFunctions1); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_bool._(pointer, retain: retain, release: release); } - NSPointerFunctions initWithOptions_(int options) { - final _ret = - _lib._objc_msgSend_918(_id, _lib._sel_initWithOptions_1, options); - return NSPointerFunctions._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_bool.fromFunctionPointer( + ffi.Pointer> ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Bool)>(_ObjCBlock_ffiVoid_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; - static NSPointerFunctions pointerFunctionsWithOptions_( - SwiftLibrary _lib, int options) { - final _ret = _lib._objc_msgSend_919(_lib._class_NSPointerFunctions1, - _lib._sel_pointerFunctionsWithOptions_1, options); - return NSPointerFunctions._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_bool.fromFunction(void Function(bool) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Bool)>(_ObjCBlock_ffiVoid_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_bool_registerClosure((bool arg0) => fn(arg0)))); + static ffi.Pointer? _dartFuncTrampoline; - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - get hashFunction { - return _lib._objc_msgSend_920(_id, _lib._sel_hashFunction1); - } + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_bool.listener(void Function(bool) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, ffi.Bool)>.listener( + _ObjCBlock_ffiVoid_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_bool_registerClosure((bool arg0) => fn(arg0)))); + static ffi + .NativeCallable, ffi.Bool)>? + _dartFuncListenerTrampoline; - set hashFunction( - ffi.Pointer< + void call(bool arg0) => pointer.ref.invoke + .cast< ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value) { - return _lib._objc_msgSend_921(_id, _lib._sel_setHashFunction_1, value); - } + ffi.Void Function( + ffi.Pointer block, ffi.Bool arg0)>>() + .asFunction, bool)>()( + pointer, arg0); +} + +late final _sel_performExpiringActivityWithReason_usingBlock_ = + objc.registerName("performExpiringActivityWithReason:usingBlock:"); +final _objc_msgSend_490 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_userName = objc.registerName("userName"); +late final _sel_fullUserName = objc.registerName("fullUserName"); - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - get isEqualFunction { - return _lib._objc_msgSend_922(_id, _lib._sel_isEqualFunction1); - } +abstract class NSProcessInfoThermalState { + static const int NSProcessInfoThermalStateNominal = 0; + static const int NSProcessInfoThermalStateFair = 1; + static const int NSProcessInfoThermalStateSerious = 2; + static const int NSProcessInfoThermalStateCritical = 3; +} - set isEqualFunction( - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value) { - return _lib._objc_msgSend_923(_id, _lib._sel_setIsEqualFunction_1, value); - } +late final _sel_thermalState = objc.registerName("thermalState"); +final _objc_msgSend_491 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isLowPowerModeEnabled = + objc.registerName("isLowPowerModeEnabled"); +late final _sel_isMacCatalystApp = objc.registerName("isMacCatalystApp"); +late final _sel_isiOSAppOnMac = objc.registerName("isiOSAppOnMac"); + +class NSTextCheckingResult extends objc.NSObject { + NSTextCheckingResult._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - ffi.Pointer< - ffi.NativeFunction)>> - get sizeFunction { - return _lib._objc_msgSend_924(_id, _lib._sel_sizeFunction1); - } + /// Constructs a [NSTextCheckingResult] that points to the same underlying object as [other]. + NSTextCheckingResult.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - set sizeFunction( - ffi.Pointer< - ffi - .NativeFunction)>> - value) { - return _lib._objc_msgSend_925(_id, _lib._sel_setSizeFunction_1, value); - } + /// Constructs a [NSTextCheckingResult] that wraps the given raw object pointer. + NSTextCheckingResult.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>> - get descriptionFunction { - return _lib._objc_msgSend_926(_id, _lib._sel_descriptionFunction1); + /// Returns whether [obj] is an instance of [NSTextCheckingResult]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSTextCheckingResult); } - set descriptionFunction( - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>> - value) { - return _lib._objc_msgSend_927( - _id, _lib._sel_setDescriptionFunction_1, value); + int get resultType { + return _objc_msgSend_492(this.pointer, _sel_resultType); } - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - get relinquishFunction { - return _lib._objc_msgSend_928(_id, _lib._sel_relinquishFunction1); + void getRange(ffi.Pointer<_NSRange> stret) { + objc.useMsgSendVariants + ? _objc_msgSend_493Stret(stret, this.pointer, _sel_range) + : stret.ref = _objc_msgSend_493(this.pointer, _sel_range); } - set relinquishFunction( - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value) { - return _lib._objc_msgSend_929( - _id, _lib._sel_setRelinquishFunction_1, value); + NSOrthography? get orthography { + final _ret = _objc_msgSend_494(this.pointer, _sel_orthography); + return _ret.address == 0 + ? null + : NSOrthography.castFromPointer(_ret, retain: true, release: true); } - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>, - ffi.Bool)>> get acquireFunction { - return _lib._objc_msgSend_930(_id, _lib._sel_acquireFunction1); + objc.NSArray? get grammarDetails { + final _ret = _objc_msgSend_69(this.pointer, _sel_grammarDetails); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set acquireFunction( - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>, - ffi.Bool)>> - value) { - return _lib._objc_msgSend_931(_id, _lib._sel_setAcquireFunction_1, value); + objc.NSDate? get date { + final _ret = _objc_msgSend_116(this.pointer, _sel_date); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - bool get usesStrongWriteBarrier { - return _lib._objc_msgSend_12(_id, _lib._sel_usesStrongWriteBarrier1); + NSTimeZone? get timeZone { + final _ret = _objc_msgSend_132(this.pointer, _sel_timeZone); + return _ret.address == 0 + ? null + : NSTimeZone.castFromPointer(_ret, retain: true, release: true); } - set usesStrongWriteBarrier(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setUsesStrongWriteBarrier_1, value); + double get duration { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_duration) + : _objc_msgSend_115(this.pointer, _sel_duration); } - bool get usesWeakReadAndWriteBarriers { - return _lib._objc_msgSend_12(_id, _lib._sel_usesWeakReadAndWriteBarriers1); + objc.NSDictionary? get components { + final _ret = _objc_msgSend_65(this.pointer, _sel_components); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - set usesWeakReadAndWriteBarriers(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setUsesWeakReadAndWriteBarriers_1, value); + objc.NSURL? get URL { + final _ret = _objc_msgSend_10(this.pointer, _sel_URL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - @override - NSPointerFunctions init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSPointerFunctions._(_ret, _lib, retain: true, release: true); + objc.NSString? get replacementString { + final _ret = _objc_msgSend_13(this.pointer, _sel_replacementString); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSPointerFunctions new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPointerFunctions1, _lib._sel_new1); - return NSPointerFunctions._(_ret, _lib, retain: false, release: true); + objc.NSArray? get alternativeStrings { + final _ret = _objc_msgSend_69(this.pointer, _sel_alternativeStrings); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSPointerFunctions allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSPointerFunctions1, _lib._sel_allocWithZone_1, zone); - return NSPointerFunctions._(_ret, _lib, retain: false, release: true); + NSRegularExpression? get regularExpression { + final _ret = _objc_msgSend_506(this.pointer, _sel_regularExpression); + return _ret.address == 0 + ? null + : NSRegularExpression.castFromPointer(_ret, + retain: true, release: true); } - static NSPointerFunctions alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPointerFunctions1, _lib._sel_alloc1); - return NSPointerFunctions._(_ret, _lib, retain: false, release: true); + objc.NSString? get phoneNumber { + final _ret = _objc_msgSend_13(this.pointer, _sel_phoneNumber); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSPointerFunctions1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + int get numberOfRanges { + return _objc_msgSend_29(this.pointer, _sel_numberOfRanges); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSPointerFunctions1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + void rangeAtIndex_(ffi.Pointer<_NSRange> stret, int idx) { + objc.useMsgSendVariants + ? _objc_msgSend_507Stret(stret, this.pointer, _sel_rangeAtIndex_, idx) + : stret.ref = _objc_msgSend_507(this.pointer, _sel_rangeAtIndex_, idx); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSPointerFunctions1, - _lib._sel_accessInstanceVariablesDirectly1); + void rangeWithName_(ffi.Pointer<_NSRange> stret, objc.NSString name) { + objc.useMsgSendVariants + ? _objc_msgSend_508Stret( + stret, this.pointer, _sel_rangeWithName_, name.pointer) + : stret.ref = + _objc_msgSend_508(this.pointer, _sel_rangeWithName_, name.pointer); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSPointerFunctions1, _lib._sel_useStoredAccessor1); + NSTextCheckingResult resultByAdjustingRangesWithOffset_(int offset) { + final _ret = _objc_msgSend_509( + this.pointer, _sel_resultByAdjustingRangesWithOffset_, offset); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSPointerFunctions1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSDictionary? get addressComponents { + final _ret = _objc_msgSend_65(this.pointer, _sel_addressComponents); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSPointerFunctions1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static NSTextCheckingResult orthographyCheckingResultWithRange_orthography_( + _NSRange range, NSOrthography orthography) { + final _ret = _objc_msgSend_510( + _class_NSTextCheckingResult, + _sel_orthographyCheckingResultWithRange_orthography_, + range, + orthography.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSPointerFunctions1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static NSTextCheckingResult spellCheckingResultWithRange_(_NSRange range) { + final _ret = _objc_msgSend_511( + _class_NSTextCheckingResult, _sel_spellCheckingResultWithRange_, range); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSPointerFunctions1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult grammarCheckingResultWithRange_details_( + _NSRange range, objc.NSArray details) { + final _ret = _objc_msgSend_512(_class_NSTextCheckingResult, + _sel_grammarCheckingResultWithRange_details_, range, details.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPointerFunctions1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult dateCheckingResultWithRange_date_( + _NSRange range, objc.NSDate date) { + final _ret = _objc_msgSend_513(_class_NSTextCheckingResult, + _sel_dateCheckingResultWithRange_date_, range, date.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } -} -class NSProcessInfo extends NSObject { - NSProcessInfo._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + static NSTextCheckingResult + dateCheckingResultWithRange_date_timeZone_duration_(_NSRange range, + objc.NSDate date, NSTimeZone timeZone, double duration) { + final _ret = _objc_msgSend_514( + _class_NSTextCheckingResult, + _sel_dateCheckingResultWithRange_date_timeZone_duration_, + range, + date.pointer, + timeZone.pointer, + duration); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); + } - /// Returns a [NSProcessInfo] that points to the same underlying object as [other]. - static NSProcessInfo castFrom(T other) { - return NSProcessInfo._(other._id, other._lib, retain: true, release: true); + static NSTextCheckingResult addressCheckingResultWithRange_components_( + _NSRange range, objc.NSDictionary components) { + final _ret = _objc_msgSend_515( + _class_NSTextCheckingResult, + _sel_addressCheckingResultWithRange_components_, + range, + components.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - /// Returns a [NSProcessInfo] that wraps the given raw object pointer. - static NSProcessInfo castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSProcessInfo._(other, lib, retain: retain, release: release); + static NSTextCheckingResult linkCheckingResultWithRange_URL_( + _NSRange range, objc.NSURL url) { + final _ret = _objc_msgSend_516(_class_NSTextCheckingResult, + _sel_linkCheckingResultWithRange_URL_, range, url.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSProcessInfo]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSProcessInfo1); + static NSTextCheckingResult quoteCheckingResultWithRange_replacementString_( + _NSRange range, objc.NSString replacementString) { + final _ret = _objc_msgSend_517( + _class_NSTextCheckingResult, + _sel_quoteCheckingResultWithRange_replacementString_, + range, + replacementString.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - static NSProcessInfo getProcessInfo(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_939( - _lib._class_NSProcessInfo1, _lib._sel_processInfo1); - return NSProcessInfo._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult dashCheckingResultWithRange_replacementString_( + _NSRange range, objc.NSString replacementString) { + final _ret = _objc_msgSend_517( + _class_NSTextCheckingResult, + _sel_dashCheckingResultWithRange_replacementString_, + range, + replacementString.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - NSDictionary get environment { - final _ret = _lib._objc_msgSend_181(_id, _lib._sel_environment1); - return NSDictionary._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult + replacementCheckingResultWithRange_replacementString_( + _NSRange range, objc.NSString replacementString) { + final _ret = _objc_msgSend_517( + _class_NSTextCheckingResult, + _sel_replacementCheckingResultWithRange_replacementString_, + range, + replacementString.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - NSArray get arguments { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_arguments1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult + correctionCheckingResultWithRange_replacementString_( + _NSRange range, objc.NSString replacementString) { + final _ret = _objc_msgSend_517( + _class_NSTextCheckingResult, + _sel_correctionCheckingResultWithRange_replacementString_, + range, + replacementString.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - NSString get hostName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_hostName1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult + correctionCheckingResultWithRange_replacementString_alternativeStrings_( + _NSRange range, + objc.NSString replacementString, + objc.NSArray alternativeStrings) { + final _ret = _objc_msgSend_518( + _class_NSTextCheckingResult, + _sel_correctionCheckingResultWithRange_replacementString_alternativeStrings_, + range, + replacementString.pointer, + alternativeStrings.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - NSString get processName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_processName1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult + regularExpressionCheckingResultWithRanges_count_regularExpression_( + ffi.Pointer<_NSRange> ranges, + int count, + NSRegularExpression regularExpression) { + final _ret = _objc_msgSend_519( + _class_NSTextCheckingResult, + _sel_regularExpressionCheckingResultWithRanges_count_regularExpression_, + ranges, + count, + regularExpression.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - set processName(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setProcessName_1, value._id); + static NSTextCheckingResult phoneNumberCheckingResultWithRange_phoneNumber_( + _NSRange range, objc.NSString phoneNumber) { + final _ret = _objc_msgSend_517( + _class_NSTextCheckingResult, + _sel_phoneNumberCheckingResultWithRange_phoneNumber_, + range, + phoneNumber.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - int get processIdentifier { - return _lib._objc_msgSend_237(_id, _lib._sel_processIdentifier1); + static NSTextCheckingResult + transitInformationCheckingResultWithRange_components_( + _NSRange range, objc.NSDictionary components) { + final _ret = _objc_msgSend_515( + _class_NSTextCheckingResult, + _sel_transitInformationCheckingResultWithRange_components_, + range, + components.pointer); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - NSString get globallyUniqueString { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_globallyUniqueString1); - return NSString._(_ret, _lib, retain: true, release: true); + @override + NSTextCheckingResult init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - int operatingSystem() { - return _lib._objc_msgSend_10(_id, _lib._sel_operatingSystem1); + static NSTextCheckingResult new1() { + final _ret = _objc_msgSend_40(_class_NSTextCheckingResult, _sel_new); + return NSTextCheckingResult.castFromPointer(_ret, + retain: false, release: true); } - NSString operatingSystemName() { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_operatingSystemName1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSTextCheckingResult, _sel_allocWithZone_, zone); + return NSTextCheckingResult.castFromPointer(_ret, + retain: false, release: true); } - NSString get operatingSystemVersionString { - final _ret = - _lib._objc_msgSend_21(_id, _lib._sel_operatingSystemVersionString1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSTextCheckingResult alloc() { + final _ret = _objc_msgSend_40(_class_NSTextCheckingResult, _sel_alloc); + return NSTextCheckingResult.castFromPointer(_ret, + retain: false, release: true); } - void getOperatingSystemVersion(ffi.Pointer stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_940_stret( - stret, _id, _lib._sel_operatingSystemVersion1) - : stret.ref = - _lib._objc_msgSend_940(_id, _lib._sel_operatingSystemVersion1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSTextCheckingResult, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - int get processorCount { - return _lib._objc_msgSend_10(_id, _lib._sel_processorCount1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSTextCheckingResult, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - int get activeProcessorCount { - return _lib._objc_msgSend_10(_id, _lib._sel_activeProcessorCount1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSTextCheckingResult, _sel_accessInstanceVariablesDirectly); } - int get physicalMemory { - return _lib._objc_msgSend_164(_id, _lib._sel_physicalMemory1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSTextCheckingResult, _sel_useStoredAccessor); } - bool isOperatingSystemAtLeastVersion_(NSOperatingSystemVersion version) { - return _lib._objc_msgSend_941( - _id, _lib._sel_isOperatingSystemAtLeastVersion_1, version); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSTextCheckingResult, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - double get systemUptime { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_systemUptime1) - : _lib._objc_msgSend_165(_id, _lib._sel_systemUptime1); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSTextCheckingResult, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - void disableSuddenTermination() { - _lib._objc_msgSend_1(_id, _lib._sel_disableSuddenTermination1); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSTextCheckingResult, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - void enableSuddenTermination() { - _lib._objc_msgSend_1(_id, _lib._sel_enableSuddenTermination1); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSTextCheckingResult, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSTextCheckingResult, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSTextCheckingResult = objc.getClass("NSTextCheckingResult"); + +abstract class NSTextCheckingType { + static const int NSTextCheckingTypeOrthography = 1; + static const int NSTextCheckingTypeSpelling = 2; + static const int NSTextCheckingTypeGrammar = 4; + static const int NSTextCheckingTypeDate = 8; + static const int NSTextCheckingTypeAddress = 16; + static const int NSTextCheckingTypeLink = 32; + static const int NSTextCheckingTypeQuote = 64; + static const int NSTextCheckingTypeDash = 128; + static const int NSTextCheckingTypeReplacement = 256; + static const int NSTextCheckingTypeCorrection = 512; + static const int NSTextCheckingTypeRegularExpression = 1024; + static const int NSTextCheckingTypePhoneNumber = 2048; + static const int NSTextCheckingTypeTransitInformation = 4096; +} + +late final _sel_resultType = objc.registerName("resultType"); +final _objc_msgSend_492 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_range = objc.registerName("range"); +final _objc_msgSend_493 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + _NSRange Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_493Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer)>(); +late final _sel_orthography = objc.registerName("orthography"); +final _objc_msgSend_494 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_grammarDetails = objc.registerName("grammarDetails"); +late final _sel_duration = objc.registerName("duration"); +late final _sel_components = objc.registerName("components"); +late final _sel_replacementString = objc.registerName("replacementString"); +late final _sel_alternativeStrings = objc.registerName("alternativeStrings"); + +class NSRegularExpression extends objc.NSObject { + NSRegularExpression._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSRegularExpression] that points to the same underlying object as [other]. + NSRegularExpression.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSRegularExpression] that wraps the given raw object pointer. + NSRegularExpression.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSRegularExpression]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSRegularExpression); } - void disableAutomaticTermination_(NSString reason) { - _lib._objc_msgSend_247( - _id, _lib._sel_disableAutomaticTermination_1, reason._id); + static NSRegularExpression? regularExpressionWithPattern_options_error_( + objc.NSString pattern, + int options, + ffi.Pointer> error) { + final _ret = _objc_msgSend_495( + _class_NSRegularExpression, + _sel_regularExpressionWithPattern_options_error_, + pattern.pointer, + options, + error); + return _ret.address == 0 + ? null + : NSRegularExpression.castFromPointer(_ret, + retain: true, release: true); } - void enableAutomaticTermination_(NSString reason) { - _lib._objc_msgSend_247( - _id, _lib._sel_enableAutomaticTermination_1, reason._id); + NSRegularExpression? initWithPattern_options_error_(objc.NSString pattern, + int options, ffi.Pointer> error) { + final _ret = _objc_msgSend_496(this.pointer, + _sel_initWithPattern_options_error_, pattern.pointer, options, error); + return _ret.address == 0 + ? null + : NSRegularExpression.castFromPointer(_ret, + retain: true, release: true); } - bool get automaticTerminationSupportEnabled { - return _lib._objc_msgSend_12( - _id, _lib._sel_automaticTerminationSupportEnabled1); + objc.NSString get pattern { + final _ret = _objc_msgSend_12(this.pointer, _sel_pattern); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set automaticTerminationSupportEnabled(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAutomaticTerminationSupportEnabled_1, value); + int get options { + return _objc_msgSend_497(this.pointer, _sel_options); } - NSObject beginActivityWithOptions_reason_(int options, NSString reason) { - final _ret = _lib._objc_msgSend_942( - _id, _lib._sel_beginActivityWithOptions_reason_1, options, reason._id); - return NSObject._(_ret, _lib, retain: true, release: true); + int get numberOfCaptureGroups { + return _objc_msgSend_29(this.pointer, _sel_numberOfCaptureGroups); } - void endActivity_(NSObject activity) { - _lib._objc_msgSend_15(_id, _lib._sel_endActivity_1, activity._id); + static objc.NSString escapedPatternForString_(objc.NSString string) { + final _ret = _objc_msgSend_297(_class_NSRegularExpression, + _sel_escapedPatternForString_, string.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void performActivityWithOptions_reason_usingBlock_( - int options, NSString reason, ObjCBlock_ffiVoid block) { - _lib._objc_msgSend_943( - _id, - _lib._sel_performActivityWithOptions_reason_usingBlock_1, + void enumerateMatchesInString_options_range_usingBlock_( + objc.NSString string, + int options, + _NSRange range, + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool block) { + _objc_msgSend_498( + this.pointer, + _sel_enumerateMatchesInString_options_range_usingBlock_, + string.pointer, options, - reason._id, - block._id); + range, + block.pointer); } - void performExpiringActivityWithReason_usingBlock_( - NSString reason, ObjCBlock_ffiVoid_bool block) { - _lib._objc_msgSend_944( - _id, - _lib._sel_performExpiringActivityWithReason_usingBlock_1, - reason._id, - block._id); + objc.NSArray matchesInString_options_range_( + objc.NSString string, int options, _NSRange range) { + final _ret = _objc_msgSend_499(this.pointer, + _sel_matchesInString_options_range_, string.pointer, options, range); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + int numberOfMatchesInString_options_range_( + objc.NSString string, int options, _NSRange range) { + return _objc_msgSend_500( + this.pointer, + _sel_numberOfMatchesInString_options_range_, + string.pointer, + options, + range); } - NSString get userName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_userName1); - return NSString._(_ret, _lib, retain: true, release: true); + NSTextCheckingResult? firstMatchInString_options_range_( + objc.NSString string, int options, _NSRange range) { + final _ret = _objc_msgSend_501(this.pointer, + _sel_firstMatchInString_options_range_, string.pointer, options, range); + return _ret.address == 0 + ? null + : NSTextCheckingResult.castFromPointer(_ret, + retain: true, release: true); } - NSString get fullUserName { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_fullUserName1); - return NSString._(_ret, _lib, retain: true, release: true); + void rangeOfFirstMatchInString_options_range_(ffi.Pointer<_NSRange> stret, + objc.NSString string, int options, _NSRange range) { + objc.useMsgSendVariants + ? _objc_msgSend_502Stret( + stret, + this.pointer, + _sel_rangeOfFirstMatchInString_options_range_, + string.pointer, + options, + range) + : stret.ref = _objc_msgSend_502( + this.pointer, + _sel_rangeOfFirstMatchInString_options_range_, + string.pointer, + options, + range); } - int get thermalState { - return _lib._objc_msgSend_945(_id, _lib._sel_thermalState1); + objc.NSString stringByReplacingMatchesInString_options_range_withTemplate_( + objc.NSString string, int options, _NSRange range, objc.NSString templ) { + final _ret = _objc_msgSend_503( + this.pointer, + _sel_stringByReplacingMatchesInString_options_range_withTemplate_, + string.pointer, + options, + range, + templ.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool get lowPowerModeEnabled { - return _lib._objc_msgSend_12(_id, _lib._sel_isLowPowerModeEnabled1); + int replaceMatchesInString_options_range_withTemplate_( + objc.NSMutableString string, + int options, + _NSRange range, + objc.NSString templ) { + return _objc_msgSend_504( + this.pointer, + _sel_replaceMatchesInString_options_range_withTemplate_, + string.pointer, + options, + range, + templ.pointer); } - bool get macCatalystApp { - return _lib._objc_msgSend_12(_id, _lib._sel_isMacCatalystApp1); + objc.NSString replacementStringForResult_inString_offset_template_( + NSTextCheckingResult result, + objc.NSString string, + int offset, + objc.NSString templ) { + final _ret = _objc_msgSend_505( + this.pointer, + _sel_replacementStringForResult_inString_offset_template_, + result.pointer, + string.pointer, + offset, + templ.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - bool get iOSAppOnMac { - return _lib._objc_msgSend_12(_id, _lib._sel_isiOSAppOnMac1); + static objc.NSString escapedTemplateForString_(objc.NSString string) { + final _ret = _objc_msgSend_297(_class_NSRegularExpression, + _sel_escapedTemplateForString_, string.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } @override - NSProcessInfo init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSProcessInfo._(_ret, _lib, retain: true, release: true); + NSRegularExpression init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSRegularExpression.castFromPointer(_ret, + retain: true, release: true); } - static NSProcessInfo new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSProcessInfo1, _lib._sel_new1); - return NSProcessInfo._(_ret, _lib, retain: false, release: true); + static NSRegularExpression new1() { + final _ret = _objc_msgSend_40(_class_NSRegularExpression, _sel_new); + return NSRegularExpression.castFromPointer(_ret, + retain: false, release: true); } - static NSProcessInfo allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSProcessInfo1, _lib._sel_allocWithZone_1, zone); - return NSProcessInfo._(_ret, _lib, retain: false, release: true); + static NSRegularExpression allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSRegularExpression, _sel_allocWithZone_, zone); + return NSRegularExpression.castFromPointer(_ret, + retain: false, release: true); } - static NSProcessInfo alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSProcessInfo1, _lib._sel_alloc1); - return NSProcessInfo._(_ret, _lib, retain: false, release: true); + static NSRegularExpression alloc() { + final _ret = _objc_msgSend_40(_class_NSRegularExpression, _sel_alloc); + return NSRegularExpression.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSProcessInfo1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSRegularExpression, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSProcessInfo1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSRegularExpression, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSProcessInfo1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSRegularExpression, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSProcessInfo1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSRegularExpression, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSProcessInfo1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSRegularExpression, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSProcessInfo1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSRegularExpression, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSProcessInfo1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSRegularExpression, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSProcessInfo1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSRegularExpression, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSProcessInfo1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSRegularExpression, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -final class NSOperatingSystemVersion extends ffi.Struct { - @ffi.Long() - external int majorVersion; - - @ffi.Long() - external int minorVersion; +late final _class_NSRegularExpression = objc.getClass("NSRegularExpression"); - @ffi.Long() - external int patchVersion; +abstract class NSRegularExpressionOptions { + static const int NSRegularExpressionCaseInsensitive = 1; + static const int NSRegularExpressionAllowCommentsAndWhitespace = 2; + static const int NSRegularExpressionIgnoreMetacharacters = 4; + static const int NSRegularExpressionDotMatchesLineSeparators = 8; + static const int NSRegularExpressionAnchorsMatchLines = 16; + static const int NSRegularExpressionUseUnixLineSeparators = 32; + static const int NSRegularExpressionUseUnicodeWordBoundaries = 64; } -abstract class NSActivityOptions { - static const int NSActivityIdleDisplaySleepDisabled = 1099511627776; - static const int NSActivityIdleSystemSleepDisabled = 1048576; - static const int NSActivitySuddenTerminationDisabled = 16384; - static const int NSActivityAutomaticTerminationDisabled = 32768; - static const int NSActivityAnimationTrackingEnabled = 35184372088832; - static const int NSActivityTrackingEnabled = 70368744177664; - static const int NSActivityUserInitiated = 16777215; - static const int NSActivityUserInitiatedAllowingIdleSystemSleep = 15728639; - static const int NSActivityBackground = 255; - static const int NSActivityLatencyCritical = 1095216660480; - static const int NSActivityUserInteractive = 1095233437695; +late final _sel_regularExpressionWithPattern_options_error_ = + objc.registerName("regularExpressionWithPattern:options:error:"); +final _objc_msgSend_495 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_initWithPattern_options_error_ = + objc.registerName("initWithPattern:options:error:"); +final _objc_msgSend_496 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_pattern = objc.registerName("pattern"); +late final _sel_options = objc.registerName("options"); +final _objc_msgSend_497 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_numberOfCaptureGroups = + objc.registerName("numberOfCaptureGroups"); +late final _sel_escapedPatternForString_ = + objc.registerName("escapedPatternForString:"); + +abstract class NSMatchingOptions { + static const int NSMatchingReportProgress = 1; + static const int NSMatchingReportCompletion = 2; + static const int NSMatchingAnchored = 4; + static const int NSMatchingWithTransparentBounds = 8; + static const int NSMatchingWithoutAnchoringBounds = 16; } -void _ObjCBlock_ffiVoid_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, bool arg0) => - block.ref.target - .cast>() - .asFunction()(arg0); -final _ObjCBlock_ffiVoid_bool_closureRegistry = {}; -int _ObjCBlock_ffiVoid_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_bool_registerClosure( - void Function(bool) fn) { - final id = ++_ObjCBlock_ffiVoid_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_bool_closureRegistry[id] = fn; +void + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Int32 arg1, ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer, int, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry = + , int, ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( + void Function(ffi.Pointer, int, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry[ + id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, bool arg0) => - _ObjCBlock_ffiVoid_bool_closureRegistry[block.ref.target.address]!(arg0); +void _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); -class ObjCBlock_ffiVoid_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_bool._(ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); +class ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool + extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_bool castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_bool._(pointer, lib, - retain: retain, release: release); + static ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool + castFromPointer(ffi.Pointer pointer, + {bool retain = false, bool release = false}) { + return ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool._( + pointer, + retain: retain, + release: release); } /// Creates a block from a C function pointer. @@ -65132,16 +22990,22 @@ class ObjCBlock_ffiVoid_bool extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_bool.fromFunctionPointer(SwiftLibrary lib, - ffi.Pointer> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Bool)>(_ObjCBlock_ffiVoid_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Int32 arg1, ffi.Pointer arg2)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -65149,17 +23013,21 @@ class ObjCBlock_ffiVoid_bool extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_bool.fromFunction(SwiftLibrary lib, void Function(bool) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, ffi.Bool)>( - _ObjCBlock_ffiVoid_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_bool_registerClosure( - (bool arg0) => fn(arg0))), - lib); + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.fromFunction( + void Function(NSTextCheckingResult?, int, ffi.Pointer) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( + (ffi.Pointer arg0, int arg1, + ffi.Pointer arg2) => + fn(arg0.address == 0 ? null : NSTextCheckingResult.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -65171,771 +23039,1610 @@ class ObjCBlock_ffiVoid_bool extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_bool.listener(SwiftLibrary lib, void Function(bool) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, ffi.Bool)>.listener( - _ObjCBlock_ffiVoid_bool_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_bool_registerClosure( - (bool arg0) => fn(arg0))), - lib); - static ffi - .NativeCallable, ffi.Bool)>? - _dartFuncListenerTrampoline; + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.listener( + void Function(NSTextCheckingResult?, int, ffi.Pointer) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( + (ffi.Pointer arg0, int arg1, ffi.Pointer arg2) => + fn(arg0.address == 0 ? null : NSTextCheckingResult.castFromPointer(arg0, retain: true, release: true), arg1, arg2)))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>? _dartFuncListenerTrampoline; - void call(bool arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, ffi.Bool arg0)>>() - .asFunction, bool)>()(_id, arg0); + void call(NSTextCheckingResult? arg0, int arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Int32 arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1, arg2); } -abstract class NSProcessInfoThermalState { - static const int NSProcessInfoThermalStateNominal = 0; - static const int NSProcessInfoThermalStateFair = 1; - static const int NSProcessInfoThermalStateSerious = 2; - static const int NSProcessInfoThermalStateCritical = 3; +abstract class NSMatchingFlags { + static const int NSMatchingProgress = 1; + static const int NSMatchingCompleted = 2; + static const int NSMatchingHitEnd = 4; + static const int NSMatchingRequiredEnd = 8; + static const int NSMatchingInternalError = 16; } -class NSTextCheckingResult extends NSObject { - NSTextCheckingResult._(ffi.Pointer id, SwiftLibrary lib, +late final _sel_enumerateMatchesInString_options_range_usingBlock_ = + objc.registerName("enumerateMatchesInString:options:range:usingBlock:"); +final _objc_msgSend_498 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange, + ffi.Pointer)>(); +late final _sel_matchesInString_options_range_ = + objc.registerName("matchesInString:options:range:"); +final _objc_msgSend_499 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +late final _sel_numberOfMatchesInString_options_range_ = + objc.registerName("numberOfMatchesInString:options:range:"); +final _objc_msgSend_500 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +late final _sel_firstMatchInString_options_range_ = + objc.registerName("firstMatchInString:options:range:"); +final _objc_msgSend_501 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +late final _sel_rangeOfFirstMatchInString_options_range_ = + objc.registerName("rangeOfFirstMatchInString:options:range:"); +final _objc_msgSend_502 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +final _objc_msgSend_502Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +late final _sel_stringByReplacingMatchesInString_options_range_withTemplate_ = + objc.registerName( + "stringByReplacingMatchesInString:options:range:withTemplate:"); +final _objc_msgSend_503 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange, + ffi.Pointer)>(); +late final _sel_replaceMatchesInString_options_range_withTemplate_ = + objc.registerName("replaceMatchesInString:options:range:withTemplate:"); +final _objc_msgSend_504 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange, + ffi.Pointer)>(); +late final _sel_replacementStringForResult_inString_offset_template_ = + objc.registerName("replacementStringForResult:inString:offset:template:"); +final _objc_msgSend_505 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_escapedTemplateForString_ = + objc.registerName("escapedTemplateForString:"); +late final _sel_regularExpression = objc.registerName("regularExpression"); +final _objc_msgSend_506 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_phoneNumber = objc.registerName("phoneNumber"); +late final _sel_numberOfRanges = objc.registerName("numberOfRanges"); +late final _sel_rangeAtIndex_ = objc.registerName("rangeAtIndex:"); +final _objc_msgSend_507 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, int)>(); +final _objc_msgSend_507Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_rangeWithName_ = objc.registerName("rangeWithName:"); +final _objc_msgSend_508 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_508Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_resultByAdjustingRangesWithOffset_ = + objc.registerName("resultByAdjustingRangesWithOffset:"); +final _objc_msgSend_509 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_addressComponents = objc.registerName("addressComponents"); +late final _sel_orthographyCheckingResultWithRange_orthography_ = + objc.registerName("orthographyCheckingResultWithRange:orthography:"); +final _objc_msgSend_510 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_spellCheckingResultWithRange_ = + objc.registerName("spellCheckingResultWithRange:"); +final _objc_msgSend_511 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_grammarCheckingResultWithRange_details_ = + objc.registerName("grammarCheckingResultWithRange:details:"); +final _objc_msgSend_512 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_dateCheckingResultWithRange_date_ = + objc.registerName("dateCheckingResultWithRange:date:"); +final _objc_msgSend_513 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_dateCheckingResultWithRange_date_timeZone_duration_ = + objc.registerName("dateCheckingResultWithRange:date:timeZone:duration:"); +final _objc_msgSend_514 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Pointer, + ffi.Double)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Pointer, + double)>(); +late final _sel_addressCheckingResultWithRange_components_ = + objc.registerName("addressCheckingResultWithRange:components:"); +final _objc_msgSend_515 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_linkCheckingResultWithRange_URL_ = + objc.registerName("linkCheckingResultWithRange:URL:"); +final _objc_msgSend_516 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_quoteCheckingResultWithRange_replacementString_ = + objc.registerName("quoteCheckingResultWithRange:replacementString:"); +final _objc_msgSend_517 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_dashCheckingResultWithRange_replacementString_ = + objc.registerName("dashCheckingResultWithRange:replacementString:"); +late final _sel_replacementCheckingResultWithRange_replacementString_ = + objc.registerName("replacementCheckingResultWithRange:replacementString:"); +late final _sel_correctionCheckingResultWithRange_replacementString_ = + objc.registerName("correctionCheckingResultWithRange:replacementString:"); +late final _sel_correctionCheckingResultWithRange_replacementString_alternativeStrings_ = + objc.registerName( + "correctionCheckingResultWithRange:replacementString:alternativeStrings:"); +final _objc_msgSend_518 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_regularExpressionCheckingResultWithRanges_count_regularExpression_ = + objc.registerName( + "regularExpressionCheckingResultWithRanges:count:regularExpression:"); +final _objc_msgSend_519 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_NSRange>, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_NSRange>, + int, + ffi.Pointer)>(); +late final _sel_phoneNumberCheckingResultWithRange_phoneNumber_ = + objc.registerName("phoneNumberCheckingResultWithRange:phoneNumber:"); +late final _sel_transitInformationCheckingResultWithRange_components_ = + objc.registerName("transitInformationCheckingResultWithRange:components:"); + +class NSURLCache extends objc.NSObject { + NSURLCache._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSTextCheckingResult] that points to the same underlying object as [other]. - static NSTextCheckingResult castFrom(T other) { - return NSTextCheckingResult._(other._id, other._lib, - retain: true, release: true); + /// Constructs a [NSURLCache] that points to the same underlying object as [other]. + NSURLCache.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSURLCache] that wraps the given raw object pointer. + NSURLCache.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLCache]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSURLCache); } - /// Returns a [NSTextCheckingResult] that wraps the given raw object pointer. - static NSTextCheckingResult castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSTextCheckingResult._(other, lib, retain: retain, release: release); + static NSURLCache getSharedURLCache() { + final _ret = _objc_msgSend_520(_class_NSURLCache, _sel_sharedURLCache); + return NSURLCache.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSTextCheckingResult]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSTextCheckingResult1); + static void setSharedURLCache(NSURLCache value) { + return _objc_msgSend_521( + _class_NSURLCache, _sel_setSharedURLCache_, value.pointer); } - int get resultType { - return _lib._objc_msgSend_946(_id, _lib._sel_resultType1); + NSURLCache initWithMemoryCapacity_diskCapacity_diskPath_( + int memoryCapacity, int diskCapacity, objc.NSString? path) { + final _ret = _objc_msgSend_522( + this.pointer, + _sel_initWithMemoryCapacity_diskCapacity_diskPath_, + memoryCapacity, + diskCapacity, + path?.pointer ?? ffi.nullptr); + return NSURLCache.castFromPointer(_ret, retain: true, release: true); } - void getRange(ffi.Pointer<_NSRange> stret) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_54_stret(stret, _id, _lib._sel_range1) - : stret.ref = _lib._objc_msgSend_54(_id, _lib._sel_range1); + NSURLCache initWithMemoryCapacity_diskCapacity_directoryURL_( + int memoryCapacity, int diskCapacity, objc.NSURL? directoryURL) { + final _ret = _objc_msgSend_523( + this.pointer, + _sel_initWithMemoryCapacity_diskCapacity_directoryURL_, + memoryCapacity, + diskCapacity, + directoryURL?.pointer ?? ffi.nullptr); + return NSURLCache.castFromPointer(_ret, retain: true, release: true); } - NSOrthography? get orthography { - final _ret = _lib._objc_msgSend_947(_id, _lib._sel_orthography1); + NSCachedURLResponse? cachedResponseForRequest_(NSURLRequest request) { + final _ret = _objc_msgSend_528( + this.pointer, _sel_cachedResponseForRequest_, request.pointer); return _ret.address == 0 ? null - : NSOrthography._(_ret, _lib, retain: true, release: true); + : NSCachedURLResponse.castFromPointer(_ret, + retain: true, release: true); } - NSArray? get grammarDetails { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_grammarDetails1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + void storeCachedResponse_forRequest_( + NSCachedURLResponse cachedResponse, NSURLRequest request) { + _objc_msgSend_529(this.pointer, _sel_storeCachedResponse_forRequest_, + cachedResponse.pointer, request.pointer); } - NSDate? get date { - final _ret = _lib._objc_msgSend_183(_id, _lib._sel_date1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + void removeCachedResponseForRequest_(NSURLRequest request) { + _objc_msgSend_530( + this.pointer, _sel_removeCachedResponseForRequest_, request.pointer); } - NSTimeZone? get timeZone { - final _ret = _lib._objc_msgSend_773(_id, _lib._sel_timeZone1); - return _ret.address == 0 - ? null - : NSTimeZone._(_ret, _lib, retain: true, release: true); + void removeAllCachedResponses() { + _objc_msgSend_82(this.pointer, _sel_removeAllCachedResponses); } - double get duration { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_duration1) - : _lib._objc_msgSend_165(_id, _lib._sel_duration1); + void removeCachedResponsesSinceDate_(objc.NSDate date) { + _objc_msgSend_246( + this.pointer, _sel_removeCachedResponsesSinceDate_, date.pointer); } - NSDictionary? get components { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_components1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + int get memoryCapacity { + return _objc_msgSend_29(this.pointer, _sel_memoryCapacity); } - NSURL? get URL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_URL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + set memoryCapacity(int value) { + return _objc_msgSend_125(this.pointer, _sel_setMemoryCapacity_, value); } - NSString? get replacementString { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_replacementString1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + int get diskCapacity { + return _objc_msgSend_29(this.pointer, _sel_diskCapacity); } - NSArray? get alternativeStrings { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_alternativeStrings1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + set diskCapacity(int value) { + return _objc_msgSend_125(this.pointer, _sel_setDiskCapacity_, value); } - NSRegularExpression? get regularExpression { - final _ret = _lib._objc_msgSend_959(_id, _lib._sel_regularExpression1); - return _ret.address == 0 - ? null - : NSRegularExpression._(_ret, _lib, retain: true, release: true); + int get currentMemoryUsage { + return _objc_msgSend_29(this.pointer, _sel_currentMemoryUsage); } - NSString? get phoneNumber { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_phoneNumber1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + int get currentDiskUsage { + return _objc_msgSend_29(this.pointer, _sel_currentDiskUsage); } - int get numberOfRanges { - return _lib._objc_msgSend_10(_id, _lib._sel_numberOfRanges1); + void storeCachedResponse_forDataTask_( + NSCachedURLResponse cachedResponse, NSURLSessionDataTask dataTask) { + _objc_msgSend_531(this.pointer, _sel_storeCachedResponse_forDataTask_, + cachedResponse.pointer, dataTask.pointer); } - void rangeAtIndex_(ffi.Pointer<_NSRange> stret, int idx) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_347_stret( - stret, _id, _lib._sel_rangeAtIndex_1, idx) - : stret.ref = - _lib._objc_msgSend_347(_id, _lib._sel_rangeAtIndex_1, idx); + void getCachedResponseForDataTask_completionHandler_( + NSURLSessionDataTask dataTask, + ObjCBlock_ffiVoid_NSCachedURLResponse completionHandler) { + _objc_msgSend_532( + this.pointer, + _sel_getCachedResponseForDataTask_completionHandler_, + dataTask.pointer, + completionHandler.pointer); } - void rangeWithName_(ffi.Pointer<_NSRange> stret, NSString name) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_340_stret( - stret, _id, _lib._sel_rangeWithName_1, name._id) - : stret.ref = - _lib._objc_msgSend_340(_id, _lib._sel_rangeWithName_1, name._id); + void removeCachedResponseForDataTask_(NSURLSessionDataTask dataTask) { + _objc_msgSend_533( + this.pointer, _sel_removeCachedResponseForDataTask_, dataTask.pointer); } - NSTextCheckingResult resultByAdjustingRangesWithOffset_(int offset) { - final _ret = _lib._objc_msgSend_960( - _id, _lib._sel_resultByAdjustingRangesWithOffset_1, offset); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + @override + NSURLCache init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLCache.castFromPointer(_ret, retain: true, release: true); } - NSDictionary? get addressComponents { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_addressComponents1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static NSURLCache new1() { + final _ret = _objc_msgSend_40(_class_NSURLCache, _sel_new); + return NSURLCache.castFromPointer(_ret, retain: false, release: true); } - static NSTextCheckingResult orthographyCheckingResultWithRange_orthography_( - SwiftLibrary _lib, _NSRange range, NSOrthography orthography) { - final _ret = _lib._objc_msgSend_961( - _lib._class_NSTextCheckingResult1, - _lib._sel_orthographyCheckingResultWithRange_orthography_1, - range, - orthography._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static NSURLCache allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSURLCache, _sel_allocWithZone_, zone); + return NSURLCache.castFromPointer(_ret, retain: false, release: true); } - static NSTextCheckingResult spellCheckingResultWithRange_( - SwiftLibrary _lib, _NSRange range) { - final _ret = _lib._objc_msgSend_962(_lib._class_NSTextCheckingResult1, - _lib._sel_spellCheckingResultWithRange_1, range); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static NSURLCache alloc() { + final _ret = _objc_msgSend_40(_class_NSURLCache, _sel_alloc); + return NSURLCache.castFromPointer(_ret, retain: false, release: true); } - static NSTextCheckingResult grammarCheckingResultWithRange_details_( - SwiftLibrary _lib, _NSRange range, NSArray details) { - final _ret = _lib._objc_msgSend_963(_lib._class_NSTextCheckingResult1, - _lib._sel_grammarCheckingResultWithRange_details_1, range, details._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLCache, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - static NSTextCheckingResult dateCheckingResultWithRange_date_( - SwiftLibrary _lib, _NSRange range, NSDate date) { - final _ret = _lib._objc_msgSend_964(_lib._class_NSTextCheckingResult1, - _lib._sel_dateCheckingResultWithRange_date_1, range, date._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLCache, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static NSTextCheckingResult - dateCheckingResultWithRange_date_timeZone_duration_(SwiftLibrary _lib, - _NSRange range, NSDate date, NSTimeZone timeZone, double duration) { - final _ret = _lib._objc_msgSend_965( - _lib._class_NSTextCheckingResult1, - _lib._sel_dateCheckingResultWithRange_date_timeZone_duration_1, - range, - date._id, - timeZone._id, - duration); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLCache, _sel_accessInstanceVariablesDirectly); } - static NSTextCheckingResult addressCheckingResultWithRange_components_( - SwiftLibrary _lib, _NSRange range, NSDictionary components) { - final _ret = _lib._objc_msgSend_966( - _lib._class_NSTextCheckingResult1, - _lib._sel_addressCheckingResultWithRange_components_1, - range, - components._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLCache, _sel_useStoredAccessor); } - static NSTextCheckingResult linkCheckingResultWithRange_URL_( - SwiftLibrary _lib, _NSRange range, NSURL url) { - final _ret = _lib._objc_msgSend_967(_lib._class_NSTextCheckingResult1, - _lib._sel_linkCheckingResultWithRange_URL_1, range, url._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLCache, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static NSTextCheckingResult quoteCheckingResultWithRange_replacementString_( - SwiftLibrary _lib, _NSRange range, NSString replacementString) { - final _ret = _lib._objc_msgSend_968( - _lib._class_NSTextCheckingResult1, - _lib._sel_quoteCheckingResultWithRange_replacementString_1, - range, - replacementString._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLCache, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static NSTextCheckingResult dashCheckingResultWithRange_replacementString_( - SwiftLibrary _lib, _NSRange range, NSString replacementString) { - final _ret = _lib._objc_msgSend_968( - _lib._class_NSTextCheckingResult1, - _lib._sel_dashCheckingResultWithRange_replacementString_1, - range, - replacementString._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLCache, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSURLCache, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSURLCache, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLCache = objc.getClass("NSURLCache"); +late final _sel_sharedURLCache = objc.registerName("sharedURLCache"); +final _objc_msgSend_520 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setSharedURLCache_ = objc.registerName("setSharedURLCache:"); +final _objc_msgSend_521 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithMemoryCapacity_diskCapacity_diskPath_ = + objc.registerName("initWithMemoryCapacity:diskCapacity:diskPath:"); +final _objc_msgSend_522 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer)>(); +late final _sel_initWithMemoryCapacity_diskCapacity_directoryURL_ = + objc.registerName("initWithMemoryCapacity:diskCapacity:directoryURL:"); +final _objc_msgSend_523 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer)>(); + +class NSCachedURLResponse extends objc.NSObject { + NSCachedURLResponse._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSCachedURLResponse] that points to the same underlying object as [other]. + NSCachedURLResponse.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSCachedURLResponse] that wraps the given raw object pointer. + NSCachedURLResponse.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSCachedURLResponse]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSCachedURLResponse); } - static NSTextCheckingResult - replacementCheckingResultWithRange_replacementString_( - SwiftLibrary _lib, _NSRange range, NSString replacementString) { - final _ret = _lib._objc_msgSend_968( - _lib._class_NSTextCheckingResult1, - _lib._sel_replacementCheckingResultWithRange_replacementString_1, - range, - replacementString._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + NSCachedURLResponse initWithResponse_data_( + NSURLResponse response, objc.NSData data) { + final _ret = _objc_msgSend_524(this.pointer, _sel_initWithResponse_data_, + response.pointer, data.pointer); + return NSCachedURLResponse.castFromPointer(_ret, + retain: true, release: true); } - static NSTextCheckingResult - correctionCheckingResultWithRange_replacementString_( - SwiftLibrary _lib, _NSRange range, NSString replacementString) { - final _ret = _lib._objc_msgSend_968( - _lib._class_NSTextCheckingResult1, - _lib._sel_correctionCheckingResultWithRange_replacementString_1, - range, - replacementString._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + NSCachedURLResponse initWithResponse_data_userInfo_storagePolicy_( + NSURLResponse response, + objc.NSData data, + objc.NSDictionary? userInfo, + int storagePolicy) { + final _ret = _objc_msgSend_525( + this.pointer, + _sel_initWithResponse_data_userInfo_storagePolicy_, + response.pointer, + data.pointer, + userInfo?.pointer ?? ffi.nullptr, + storagePolicy); + return NSCachedURLResponse.castFromPointer(_ret, + retain: true, release: true); } - static NSTextCheckingResult - correctionCheckingResultWithRange_replacementString_alternativeStrings_( - SwiftLibrary _lib, - _NSRange range, - NSString replacementString, - NSArray alternativeStrings) { - final _ret = _lib._objc_msgSend_969( - _lib._class_NSTextCheckingResult1, - _lib._sel_correctionCheckingResultWithRange_replacementString_alternativeStrings_1, - range, - replacementString._id, - alternativeStrings._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + NSURLResponse get response { + final _ret = _objc_msgSend_526(this.pointer, _sel_response); + return NSURLResponse.castFromPointer(_ret, retain: true, release: true); } - static NSTextCheckingResult - regularExpressionCheckingResultWithRanges_count_regularExpression_( - SwiftLibrary _lib, - ffi.Pointer<_NSRange> ranges, - int count, - NSRegularExpression regularExpression) { - final _ret = _lib._objc_msgSend_970( - _lib._class_NSTextCheckingResult1, - _lib._sel_regularExpressionCheckingResultWithRanges_count_regularExpression_1, - ranges, - count, - regularExpression._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + objc.NSData get data { + final _ret = _objc_msgSend_104(this.pointer, _sel_data); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - static NSTextCheckingResult phoneNumberCheckingResultWithRange_phoneNumber_( - SwiftLibrary _lib, _NSRange range, NSString phoneNumber) { - final _ret = _lib._objc_msgSend_968( - _lib._class_NSTextCheckingResult1, - _lib._sel_phoneNumberCheckingResultWithRange_phoneNumber_1, - range, - phoneNumber._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + objc.NSDictionary? get userInfo { + final _ret = _objc_msgSend_65(this.pointer, _sel_userInfo); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSTextCheckingResult - transitInformationCheckingResultWithRange_components_( - SwiftLibrary _lib, _NSRange range, NSDictionary components) { - final _ret = _lib._objc_msgSend_966( - _lib._class_NSTextCheckingResult1, - _lib._sel_transitInformationCheckingResultWithRange_components_1, - range, - components._id); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + int get storagePolicy { + return _objc_msgSend_527(this.pointer, _sel_storagePolicy); + } + + @override + NSCachedURLResponse init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSCachedURLResponse.castFromPointer(_ret, + retain: true, release: true); + } + + static NSCachedURLResponse new1() { + final _ret = _objc_msgSend_40(_class_NSCachedURLResponse, _sel_new); + return NSCachedURLResponse.castFromPointer(_ret, + retain: false, release: true); + } + + static NSCachedURLResponse allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSCachedURLResponse, _sel_allocWithZone_, zone); + return NSCachedURLResponse.castFromPointer(_ret, + retain: false, release: true); + } + + static NSCachedURLResponse alloc() { + final _ret = _objc_msgSend_40(_class_NSCachedURLResponse, _sel_alloc); + return NSCachedURLResponse.castFromPointer(_ret, + retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSCachedURLResponse, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); + } + + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSCachedURLResponse, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); + } + + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSCachedURLResponse, _sel_accessInstanceVariablesDirectly); + } + + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSCachedURLResponse, _sel_useStoredAccessor); + } + + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSCachedURLResponse, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSCachedURLResponse, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSCachedURLResponse, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSCachedURLResponse, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSCachedURLResponse, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSCachedURLResponse = objc.getClass("NSCachedURLResponse"); +late final _sel_initWithResponse_data_ = + objc.registerName("initWithResponse:data:"); +final _objc_msgSend_524 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +abstract class NSURLCacheStoragePolicy { + static const int NSURLCacheStorageAllowed = 0; + static const int NSURLCacheStorageAllowedInMemoryOnly = 1; + static const int NSURLCacheStorageNotAllowed = 2; +} + +late final _sel_initWithResponse_data_userInfo_storagePolicy_ = + objc.registerName("initWithResponse:data:userInfo:storagePolicy:"); +final _objc_msgSend_525 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +final _objc_msgSend_526 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_storagePolicy = objc.registerName("storagePolicy"); +final _objc_msgSend_527 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_cachedResponseForRequest_ = + objc.registerName("cachedResponseForRequest:"); +final _objc_msgSend_528 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_storeCachedResponse_forRequest_ = + objc.registerName("storeCachedResponse:forRequest:"); +final _objc_msgSend_529 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeCachedResponseForRequest_ = + objc.registerName("removeCachedResponseForRequest:"); +final _objc_msgSend_530 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_removeAllCachedResponses = + objc.registerName("removeAllCachedResponses"); +late final _sel_removeCachedResponsesSinceDate_ = + objc.registerName("removeCachedResponsesSinceDate:"); +late final _sel_memoryCapacity = objc.registerName("memoryCapacity"); +late final _sel_setMemoryCapacity_ = objc.registerName("setMemoryCapacity:"); +late final _sel_diskCapacity = objc.registerName("diskCapacity"); +late final _sel_setDiskCapacity_ = objc.registerName("setDiskCapacity:"); +late final _sel_currentMemoryUsage = objc.registerName("currentMemoryUsage"); +late final _sel_currentDiskUsage = objc.registerName("currentDiskUsage"); + +class NSURLSessionDataTask extends NSURLSessionTask { + NSURLSessionDataTask._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSURLSessionDataTask] that points to the same underlying object as [other]. + NSURLSessionDataTask.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSURLSessionDataTask] that wraps the given raw object pointer. + NSURLSessionDataTask.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLSessionDataTask]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionDataTask); } @override - NSTextCheckingResult init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + NSURLSessionDataTask init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionDataTask.castFromPointer(_ret, + retain: true, release: true); } - static NSTextCheckingResult new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSTextCheckingResult1, _lib._sel_new1); - return NSTextCheckingResult._(_ret, _lib, retain: false, release: true); + static NSURLSessionDataTask new1() { + final _ret = _objc_msgSend_40(_class_NSURLSessionDataTask, _sel_new); + return NSURLSessionDataTask.castFromPointer(_ret, + retain: false, release: true); } - static NSTextCheckingResult allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSTextCheckingResult1, _lib._sel_allocWithZone_1, zone); - return NSTextCheckingResult._(_ret, _lib, retain: false, release: true); + static NSURLSessionDataTask allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLSessionDataTask, _sel_allocWithZone_, zone); + return NSURLSessionDataTask.castFromPointer(_ret, + retain: false, release: true); } - static NSTextCheckingResult alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSTextCheckingResult1, _lib._sel_alloc1); - return NSTextCheckingResult._(_ret, _lib, retain: false, release: true); + static NSURLSessionDataTask alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSessionDataTask, _sel_alloc); + return NSURLSessionDataTask.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSTextCheckingResult1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionDataTask, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSTextCheckingResult1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionDataTask, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSTextCheckingResult1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSessionDataTask, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSTextCheckingResult1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLSessionDataTask, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSTextCheckingResult1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionDataTask, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSTextCheckingResult1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionDataTask, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSTextCheckingResult1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionDataTask, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSessionDataTask, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLSessionDataTask, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLSessionDataTask = objc.getClass("NSURLSessionDataTask"); +late final _sel_storeCachedResponse_forDataTask_ = + objc.registerName("storeCachedResponse:forDataTask:"); +final _objc_msgSend_531 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSCachedURLResponse_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSTextCheckingResult1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } +void _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry[ + block.ref.target.address]!(arg0); + +class ObjCBlock_ffiVoid_NSCachedURLResponse extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSCachedURLResponse._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSTextCheckingResult1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSCachedURLResponse castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSCachedURLResponse._(pointer, + retain: retain, release: release); } -} -abstract class NSTextCheckingType { - static const int NSTextCheckingTypeOrthography = 1; - static const int NSTextCheckingTypeSpelling = 2; - static const int NSTextCheckingTypeGrammar = 4; - static const int NSTextCheckingTypeDate = 8; - static const int NSTextCheckingTypeAddress = 16; - static const int NSTextCheckingTypeLink = 32; - static const int NSTextCheckingTypeQuote = 64; - static const int NSTextCheckingTypeDash = 128; - static const int NSTextCheckingTypeReplacement = 256; - static const int NSTextCheckingTypeCorrection = 512; - static const int NSTextCheckingTypeRegularExpression = 1024; - static const int NSTextCheckingTypePhoneNumber = 2048; - static const int NSTextCheckingTypeTransitInformation = 4096; -} + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSCachedURLResponse.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSCachedURLResponse_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSCachedURLResponse.fromFunction( + void Function(NSCachedURLResponse?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : NSCachedURLResponse.castFromPointer(arg0, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSCachedURLResponse.listener(void Function(NSCachedURLResponse?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : NSCachedURLResponse.castFromPointer(arg0, retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; -class NSRegularExpression extends NSObject { - NSRegularExpression._(ffi.Pointer id, SwiftLibrary lib, + void call(NSCachedURLResponse? arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function( + ffi.Pointer, ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr); +} + +late final _sel_getCachedResponseForDataTask_completionHandler_ = + objc.registerName("getCachedResponseForDataTask:completionHandler:"); +final _objc_msgSend_532 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeCachedResponseForDataTask_ = + objc.registerName("removeCachedResponseForDataTask:"); +final _objc_msgSend_533 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSURLConnection extends objc.NSObject { + NSURLConnection._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSRegularExpression] that points to the same underlying object as [other]. - static NSRegularExpression castFrom(T other) { - return NSRegularExpression._(other._id, other._lib, - retain: true, release: true); - } + /// Constructs a [NSURLConnection] that points to the same underlying object as [other]. + NSURLConnection.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSRegularExpression] that wraps the given raw object pointer. - static NSRegularExpression castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSRegularExpression._(other, lib, retain: retain, release: release); - } + /// Constructs a [NSURLConnection] that wraps the given raw object pointer. + NSURLConnection.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - /// Returns whether [obj] is an instance of [NSRegularExpression]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSRegularExpression1); + /// Returns whether [obj] is an instance of [NSURLConnection]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLConnection); } - static NSRegularExpression? regularExpressionWithPattern_options_error_( - SwiftLibrary _lib, - NSString pattern, - int options, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_948( - _lib._class_NSRegularExpression1, - _lib._sel_regularExpressionWithPattern_options_error_1, - pattern._id, - options, - error); + NSURLConnection? initWithRequest_delegate_startImmediately_( + NSURLRequest request, objc.NSObject? delegate, bool startImmediately) { + final _ret = _objc_msgSend_534( + this.pointer, + _sel_initWithRequest_delegate_startImmediately_, + request.pointer, + delegate?.pointer ?? ffi.nullptr, + startImmediately); return _ret.address == 0 ? null - : NSRegularExpression._(_ret, _lib, retain: true, release: true); + : NSURLConnection.castFromPointer(_ret, retain: true, release: true); } - NSRegularExpression? initWithPattern_options_error_(NSString pattern, - int options, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_949(_id, - _lib._sel_initWithPattern_options_error_1, pattern._id, options, error); + NSURLConnection? initWithRequest_delegate_( + NSURLRequest request, objc.NSObject? delegate) { + final _ret = _objc_msgSend_535(this.pointer, _sel_initWithRequest_delegate_, + request.pointer, delegate?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSRegularExpression._(_ret, _lib, retain: true, release: true); + : NSURLConnection.castFromPointer(_ret, retain: true, release: true); } - NSString get pattern { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_pattern1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - int get options { - return _lib._objc_msgSend_950(_id, _lib._sel_options1); - } - - int get numberOfCaptureGroups { - return _lib._objc_msgSend_10(_id, _lib._sel_numberOfCaptureGroups1); + static NSURLConnection? connectionWithRequest_delegate_( + NSURLRequest request, objc.NSObject? delegate) { + final _ret = _objc_msgSend_536( + _class_NSURLConnection, + _sel_connectionWithRequest_delegate_, + request.pointer, + delegate?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSURLConnection.castFromPointer(_ret, retain: true, release: true); } - static NSString escapedPatternForString_(SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_69(_lib._class_NSRegularExpression1, - _lib._sel_escapedPatternForString_1, string._id); - return NSString._(_ret, _lib, retain: true, release: true); + NSURLRequest get originalRequest { + final _ret = _objc_msgSend_537(this.pointer, _sel_originalRequest); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - void enumerateMatchesInString_options_range_usingBlock_( - NSString string, - int options, - _NSRange range, - ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool block) { - _lib._objc_msgSend_951( - _id, - _lib._sel_enumerateMatchesInString_options_range_usingBlock_1, - string._id, - options, - range, - block._id); + NSURLRequest get currentRequest { + final _ret = _objc_msgSend_537(this.pointer, _sel_currentRequest); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - NSArray matchesInString_options_range_( - NSString string, int options, _NSRange range) { - final _ret = _lib._objc_msgSend_952(_id, - _lib._sel_matchesInString_options_range_1, string._id, options, range); - return NSArray._(_ret, _lib, retain: true, release: true); + void start() { + _objc_msgSend_82(this.pointer, _sel_start); } - int numberOfMatchesInString_options_range_( - NSString string, int options, _NSRange range) { - return _lib._objc_msgSend_953( - _id, - _lib._sel_numberOfMatchesInString_options_range_1, - string._id, - options, - range); + void cancel() { + _objc_msgSend_82(this.pointer, _sel_cancel); } - NSTextCheckingResult? firstMatchInString_options_range_( - NSString string, int options, _NSRange range) { - final _ret = _lib._objc_msgSend_954( - _id, - _lib._sel_firstMatchInString_options_range_1, - string._id, - options, - range); - return _ret.address == 0 - ? null - : NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + void scheduleInRunLoop_forMode_(NSRunLoop aRunLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_scheduleInRunLoop_forMode_, + aRunLoop.pointer, mode.pointer); } - void rangeOfFirstMatchInString_options_range_(ffi.Pointer<_NSRange> stret, - NSString string, int options, _NSRange range) { - _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_955_stret( - stret, - _id, - _lib._sel_rangeOfFirstMatchInString_options_range_1, - string._id, - options, - range) - : stret.ref = _lib._objc_msgSend_955( - _id, - _lib._sel_rangeOfFirstMatchInString_options_range_1, - string._id, - options, - range); + void unscheduleFromRunLoop_forMode_(NSRunLoop aRunLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_unscheduleFromRunLoop_forMode_, + aRunLoop.pointer, mode.pointer); } - NSString stringByReplacingMatchesInString_options_range_withTemplate_( - NSString string, int options, _NSRange range, NSString templ) { - final _ret = _lib._objc_msgSend_956( - _id, - _lib._sel_stringByReplacingMatchesInString_options_range_withTemplate_1, - string._id, - options, - range, - templ._id); - return NSString._(_ret, _lib, retain: true, release: true); + void setDelegateQueue_(NSOperationQueue? queue) { + _objc_msgSend_538( + this.pointer, _sel_setDelegateQueue_, queue?.pointer ?? ffi.nullptr); } - int replaceMatchesInString_options_range_withTemplate_( - NSMutableString string, int options, _NSRange range, NSString templ) { - return _lib._objc_msgSend_957( - _id, - _lib._sel_replaceMatchesInString_options_range_withTemplate_1, - string._id, - options, - range, - templ._id); + static bool canHandleRequest_(NSURLRequest request) { + return _objc_msgSend_539( + _class_NSURLConnection, _sel_canHandleRequest_, request.pointer); } - NSString replacementStringForResult_inString_offset_template_( - NSTextCheckingResult result, - NSString string, - int offset, - NSString templ) { - final _ret = _lib._objc_msgSend_958( - _id, - _lib._sel_replacementStringForResult_inString_offset_template_1, - result._id, - string._id, - offset, - templ._id); - return NSString._(_ret, _lib, retain: true, release: true); + static objc.NSData? sendSynchronousRequest_returningResponse_error_( + NSURLRequest request, + ffi.Pointer> response, + ffi.Pointer> error) { + final _ret = _objc_msgSend_540( + _class_NSURLConnection, + _sel_sendSynchronousRequest_returningResponse_error_, + request.pointer, + response, + error); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - static NSString escapedTemplateForString_( - SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_69(_lib._class_NSRegularExpression1, - _lib._sel_escapedTemplateForString_1, string._id); - return NSString._(_ret, _lib, retain: true, release: true); + static void sendAsynchronousRequest_queue_completionHandler_( + NSURLRequest request, + NSOperationQueue queue, + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError handler) { + _objc_msgSend_541( + _class_NSURLConnection, + _sel_sendAsynchronousRequest_queue_completionHandler_, + request.pointer, + queue.pointer, + handler.pointer); } @override - NSRegularExpression init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSRegularExpression._(_ret, _lib, retain: true, release: true); + NSURLConnection init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLConnection.castFromPointer(_ret, retain: true, release: true); } - static NSRegularExpression new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSRegularExpression1, _lib._sel_new1); - return NSRegularExpression._(_ret, _lib, retain: false, release: true); + static NSURLConnection new1() { + final _ret = _objc_msgSend_40(_class_NSURLConnection, _sel_new); + return NSURLConnection.castFromPointer(_ret, retain: false, release: true); } - static NSRegularExpression allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSRegularExpression1, _lib._sel_allocWithZone_1, zone); - return NSRegularExpression._(_ret, _lib, retain: false, release: true); + static NSURLConnection allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSURLConnection, _sel_allocWithZone_, zone); + return NSURLConnection.castFromPointer(_ret, retain: false, release: true); } - static NSRegularExpression alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSRegularExpression1, _lib._sel_alloc1); - return NSRegularExpression._(_ret, _lib, retain: false, release: true); + static NSURLConnection alloc() { + final _ret = _objc_msgSend_40(_class_NSURLConnection, _sel_alloc); + return NSURLConnection.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSRegularExpression1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLConnection, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSRegularExpression1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLConnection, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSRegularExpression1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLConnection, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSRegularExpression1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLConnection, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSRegularExpression1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLConnection, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSRegularExpression1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLConnection, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSRegularExpression1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSRegularExpression1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSRegularExpression1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSRegularExpressionOptions { - static const int NSRegularExpressionCaseInsensitive = 1; - static const int NSRegularExpressionAllowCommentsAndWhitespace = 2; - static const int NSRegularExpressionIgnoreMetacharacters = 4; - static const int NSRegularExpressionDotMatchesLineSeparators = 8; - static const int NSRegularExpressionAnchorsMatchLines = 16; - static const int NSRegularExpressionUseUnixLineSeparators = 32; - static const int NSRegularExpressionUseUnicodeWordBoundaries = 64; -} - -abstract class NSMatchingOptions { - static const int NSMatchingReportProgress = 1; - static const int NSMatchingReportCompletion = 2; - static const int NSMatchingAnchored = 4; - static const int NSMatchingWithTransparentBounds = 8; - static const int NSMatchingWithoutAnchoringBounds = 16; -} - -void - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Int32 arg1, ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, int, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry = - , int, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistryIndex = - 0; + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLConnection, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLConnection, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSURLConnection, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLConnection = objc.getClass("NSURLConnection"); +late final _sel_initWithRequest_delegate_startImmediately_ = + objc.registerName("initWithRequest:delegate:startImmediately:"); +final _objc_msgSend_534 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_initWithRequest_delegate_ = + objc.registerName("initWithRequest:delegate:"); +final _objc_msgSend_535 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_connectionWithRequest_delegate_ = + objc.registerName("connectionWithRequest:delegate:"); +final _objc_msgSend_536 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +final _objc_msgSend_537 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_unscheduleFromRunLoop_forMode_ = + objc.registerName("unscheduleFromRunLoop:forMode:"); +late final _sel_setDelegateQueue_ = objc.registerName("setDelegateQueue:"); +final _objc_msgSend_538 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_canHandleRequest_ = objc.registerName("canHandleRequest:"); +final _objc_msgSend_539 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_sendSynchronousRequest_returningResponse_error_ = + objc.registerName("sendSynchronousRequest:returningResponse:error:"); +final _objc_msgSend_540 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); +void _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry = , ffi.Pointer, + ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistryIndex = 0; ffi.Pointer - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( - void Function(ffi.Pointer, int, ffi.Pointer) fn) { + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer) + fn) { final id = - ++_ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry[ - id] = fn; + ++_ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry[ +void _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry[ block.ref.target.address]!(arg0, arg1, arg2); -class ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool - extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); +class ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError + extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool - castFromPointer(SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool._( - pointer, lib, + static ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError._(pointer, retain: retain, release: release); } @@ -65944,25 +24651,24 @@ class ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.fromFunctionPointer( - SwiftLibrary lib, + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.fromFunctionPointer( ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Int32 arg1, ffi.Pointer arg2)>> + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -65970,24 +24676,21 @@ class ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.fromFunction( - SwiftLibrary lib, - void Function(NSTextCheckingResult?, int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline) + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.fromFunction( + void Function(NSURLResponse?, objc.NSData?, objc.NSError?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= + ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline) .cast(), - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( - (ffi.Pointer arg0, int arg1, - ffi.Pointer arg2) => - fn(arg0.address == 0 ? null : NSTextCheckingResult._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + arg0.address == 0 ? null : NSURLResponse.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : objc.NSData.castFromPointer(arg1, retain: true, release: true), + arg2.address == 0 ? null : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -65999,578 +24702,1127 @@ class ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.listener( - SwiftLibrary lib, - void Function(NSTextCheckingResult?, int, ffi.Pointer) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline) + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.listener( + void Function(NSURLResponse?, objc.NSData?, objc.NSError?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= + ffi.NativeCallable, ffi.Pointer, ffi.Pointer, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline) ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( - (ffi.Pointer arg0, int arg1, - ffi.Pointer arg2) => - fn(arg0.address == 0 ? null : NSTextCheckingResult._(arg0, lib, retain: true, release: true), arg1, arg2))), - lib); + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + arg0.address == 0 + ? null + : NSURLResponse.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : objc.NSData.castFromPointer(arg1, retain: true, release: true), + arg2.address == 0 ? null : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Int32, ffi.Pointer)>? _dartFuncListenerTrampoline; + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; - void call(NSTextCheckingResult? arg0, int arg1, ffi.Pointer arg2) => - _id.ref.invoke + void call(NSURLResponse? arg0, objc.NSData? arg1, objc.NSError? arg2) => + pointer.ref.invoke .cast< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Int32 arg1, - ffi.Pointer arg2)>>() + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer, int, ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1, arg2); -} - -abstract class NSMatchingFlags { - static const int NSMatchingProgress = 1; - static const int NSMatchingCompleted = 2; - static const int NSMatchingHitEnd = 4; - static const int NSMatchingRequiredEnd = 8; - static const int NSMatchingInternalError = 16; -} - -class NSURLCache extends NSObject { - NSURLCache._(ffi.Pointer id, SwiftLibrary lib, + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, + arg0?.pointer ?? ffi.nullptr, + arg1?.pointer ?? ffi.nullptr, + arg2?.pointer ?? ffi.nullptr); +} + +late final _sel_sendAsynchronousRequest_queue_completionHandler_ = + objc.registerName("sendAsynchronousRequest:queue:completionHandler:"); +final _objc_msgSend_541 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSURLCredential extends objc.NSObject { + NSURLCredential._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSURLCache] that points to the same underlying object as [other]. - static NSURLCache castFrom(T other) { - return NSURLCache._(other._id, other._lib, retain: true, release: true); - } + /// Constructs a [NSURLCredential] that points to the same underlying object as [other]. + NSURLCredential.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSURLCache] that wraps the given raw object pointer. - static NSURLCache castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLCache._(other, lib, retain: retain, release: release); - } + /// Constructs a [NSURLCredential] that wraps the given raw object pointer. + NSURLCredential.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - /// Returns whether [obj] is an instance of [NSURLCache]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLCache1); + /// Returns whether [obj] is an instance of [NSURLCredential]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLCredential); } - static NSURLCache getSharedURLCache(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_971( - _lib._class_NSURLCache1, _lib._sel_sharedURLCache1); - return NSURLCache._(_ret, _lib, retain: true, release: true); + int get persistence { + return _objc_msgSend_542(this.pointer, _sel_persistence); } - static void setSharedURLCache(SwiftLibrary _lib, NSURLCache value) { - return _lib._objc_msgSend_972( - _lib._class_NSURLCache1, _lib._sel_setSharedURLCache_1, value._id); + NSURLCredential initWithUser_password_persistence_( + objc.NSString user, objc.NSString password, int persistence) { + final _ret = _objc_msgSend_543( + this.pointer, + _sel_initWithUser_password_persistence_, + user.pointer, + password.pointer, + persistence); + return NSURLCredential.castFromPointer(_ret, retain: true, release: true); } - NSURLCache initWithMemoryCapacity_diskCapacity_diskPath_( - int memoryCapacity, int diskCapacity, NSString? path) { - final _ret = _lib._objc_msgSend_973( - _id, - _lib._sel_initWithMemoryCapacity_diskCapacity_diskPath_1, - memoryCapacity, - diskCapacity, - path?._id ?? ffi.nullptr); - return NSURLCache._(_ret, _lib, retain: true, release: true); + static NSURLCredential credentialWithUser_password_persistence_( + objc.NSString user, objc.NSString password, int persistence) { + final _ret = _objc_msgSend_544( + _class_NSURLCredential, + _sel_credentialWithUser_password_persistence_, + user.pointer, + password.pointer, + persistence); + return NSURLCredential.castFromPointer(_ret, retain: true, release: true); } - NSURLCache initWithMemoryCapacity_diskCapacity_directoryURL_( - int memoryCapacity, int diskCapacity, NSURL? directoryURL) { - final _ret = _lib._objc_msgSend_974( - _id, - _lib._sel_initWithMemoryCapacity_diskCapacity_directoryURL_1, - memoryCapacity, - diskCapacity, - directoryURL?._id ?? ffi.nullptr); - return NSURLCache._(_ret, _lib, retain: true, release: true); + objc.NSString? get user { + final _ret = _objc_msgSend_13(this.pointer, _sel_user); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSCachedURLResponse? cachedResponseForRequest_(NSURLRequest request) { - final _ret = _lib._objc_msgSend_979( - _id, _lib._sel_cachedResponseForRequest_1, request._id); + objc.NSString? get password { + final _ret = _objc_msgSend_13(this.pointer, _sel_password); return _ret.address == 0 ? null - : NSCachedURLResponse._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void storeCachedResponse_forRequest_( - NSCachedURLResponse cachedResponse, NSURLRequest request) { - _lib._objc_msgSend_980(_id, _lib._sel_storeCachedResponse_forRequest_1, - cachedResponse._id, request._id); + bool get hasPassword { + return _objc_msgSend_7(this.pointer, _sel_hasPassword); } - void removeCachedResponseForRequest_(NSURLRequest request) { - _lib._objc_msgSend_981( - _id, _lib._sel_removeCachedResponseForRequest_1, request._id); + NSURLCredential initWithIdentity_certificates_persistence_( + ffi.Pointer<__SecIdentity> identity, + objc.NSArray? certArray, + int persistence) { + final _ret = _objc_msgSend_545( + this.pointer, + _sel_initWithIdentity_certificates_persistence_, + identity, + certArray?.pointer ?? ffi.nullptr, + persistence); + return NSURLCredential.castFromPointer(_ret, retain: true, release: true); } - void removeAllCachedResponses() { - _lib._objc_msgSend_1(_id, _lib._sel_removeAllCachedResponses1); + static NSURLCredential credentialWithIdentity_certificates_persistence_( + ffi.Pointer<__SecIdentity> identity, + objc.NSArray? certArray, + int persistence) { + final _ret = _objc_msgSend_546( + _class_NSURLCredential, + _sel_credentialWithIdentity_certificates_persistence_, + identity, + certArray?.pointer ?? ffi.nullptr, + persistence); + return NSURLCredential.castFromPointer(_ret, retain: true, release: true); } - void removeCachedResponsesSinceDate_(NSDate date) { - _lib._objc_msgSend_540( - _id, _lib._sel_removeCachedResponsesSinceDate_1, date._id); + ffi.Pointer<__SecIdentity> get identity { + return _objc_msgSend_547(this.pointer, _sel_identity); } - int get memoryCapacity { - return _lib._objc_msgSend_10(_id, _lib._sel_memoryCapacity1); + objc.NSArray get certificates { + final _ret = _objc_msgSend_6(this.pointer, _sel_certificates); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set memoryCapacity(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setMemoryCapacity_1, value); + NSURLCredential initWithTrust_(ffi.Pointer<__SecTrust> trust) { + final _ret = _objc_msgSend_548(this.pointer, _sel_initWithTrust_, trust); + return NSURLCredential.castFromPointer(_ret, retain: true, release: true); } - int get diskCapacity { - return _lib._objc_msgSend_10(_id, _lib._sel_diskCapacity1); + static NSURLCredential credentialForTrust_(ffi.Pointer<__SecTrust> trust) { + final _ret = _objc_msgSend_549( + _class_NSURLCredential, _sel_credentialForTrust_, trust); + return NSURLCredential.castFromPointer(_ret, retain: true, release: true); } - set diskCapacity(int value) { - return _lib._objc_msgSend_516(_id, _lib._sel_setDiskCapacity_1, value); + @override + NSURLCredential init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLCredential.castFromPointer(_ret, retain: true, release: true); } - int get currentMemoryUsage { - return _lib._objc_msgSend_10(_id, _lib._sel_currentMemoryUsage1); + static NSURLCredential new1() { + final _ret = _objc_msgSend_40(_class_NSURLCredential, _sel_new); + return NSURLCredential.castFromPointer(_ret, retain: false, release: true); } - int get currentDiskUsage { - return _lib._objc_msgSend_10(_id, _lib._sel_currentDiskUsage1); + static NSURLCredential allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSURLCredential, _sel_allocWithZone_, zone); + return NSURLCredential.castFromPointer(_ret, retain: false, release: true); } - void storeCachedResponse_forDataTask_( - NSCachedURLResponse cachedResponse, NSURLSessionDataTask dataTask) { - _lib._objc_msgSend_982(_id, _lib._sel_storeCachedResponse_forDataTask_1, - cachedResponse._id, dataTask._id); + static NSURLCredential alloc() { + final _ret = _objc_msgSend_40(_class_NSURLCredential, _sel_alloc); + return NSURLCredential.castFromPointer(_ret, retain: false, release: true); } - void getCachedResponseForDataTask_completionHandler_( - NSURLSessionDataTask dataTask, - ObjCBlock_ffiVoid_NSCachedURLResponse completionHandler) { - _lib._objc_msgSend_983( - _id, - _lib._sel_getCachedResponseForDataTask_completionHandler_1, - dataTask._id, - completionHandler._id); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLCredential, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - void removeCachedResponseForDataTask_(NSURLSessionDataTask dataTask) { - _lib._objc_msgSend_984( - _id, _lib._sel_removeCachedResponseForDataTask_1, dataTask._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLCredential, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - @override - NSURLCache init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLCache._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLCredential, _sel_accessInstanceVariablesDirectly); } - static NSURLCache new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLCache1, _lib._sel_new1); - return NSURLCache._(_ret, _lib, retain: false, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLCredential, _sel_useStoredAccessor); } - static NSURLCache allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLCache1, _lib._sel_allocWithZone_1, zone); - return NSURLCache._(_ret, _lib, retain: false, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLCredential, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static NSURLCache alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLCache1, _lib._sel_alloc1); - return NSURLCache._(_ret, _lib, retain: false, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLCredential, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLCache1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLCredential, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLCache1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLCredential, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLCache1, _lib._sel_accessInstanceVariablesDirectly1); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSURLCredential, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLCache1, _lib._sel_useStoredAccessor1); - } +late final _class_NSURLCredential = objc.getClass("NSURLCredential"); - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLCache1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); - } +abstract class NSURLCredentialPersistence { + static const int NSURLCredentialPersistenceNone = 0; + static const int NSURLCredentialPersistenceForSession = 1; + static const int NSURLCredentialPersistencePermanent = 2; + static const int NSURLCredentialPersistenceSynchronizable = 3; +} - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLCache1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); - } +late final _sel_persistence = objc.registerName("persistence"); +final _objc_msgSend_542 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithUser_password_persistence_ = + objc.registerName("initWithUser:password:persistence:"); +final _objc_msgSend_543 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_credentialWithUser_password_persistence_ = + objc.registerName("credentialWithUser:password:persistence:"); +final _objc_msgSend_544 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_user = objc.registerName("user"); +late final _sel_password = objc.registerName("password"); +late final _sel_hasPassword = objc.registerName("hasPassword"); - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLCache1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); +final class __SecIdentity extends ffi.Opaque {} + +late final _sel_initWithIdentity_certificates_persistence_ = + objc.registerName("initWithIdentity:certificates:persistence:"); +final _objc_msgSend_545 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__SecIdentity>, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__SecIdentity>, + ffi.Pointer, + int)>(); +late final _sel_credentialWithIdentity_certificates_persistence_ = + objc.registerName("credentialWithIdentity:certificates:persistence:"); +final _objc_msgSend_546 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__SecIdentity>, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__SecIdentity>, + ffi.Pointer, + int)>(); +late final _sel_identity = objc.registerName("identity"); +final _objc_msgSend_547 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer<__SecIdentity> Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer<__SecIdentity> Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_certificates = objc.registerName("certificates"); + +final class __SecTrust extends ffi.Opaque {} + +late final _sel_initWithTrust_ = objc.registerName("initWithTrust:"); +final _objc_msgSend_548 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<__SecTrust>)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<__SecTrust>)>(); +late final _sel_credentialForTrust_ = objc.registerName("credentialForTrust:"); +final _objc_msgSend_549 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<__SecTrust>)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<__SecTrust>)>(); + +class NSURLProtectionSpace extends objc.NSObject { + NSURLProtectionSpace._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSURLProtectionSpace] that points to the same underlying object as [other]. + NSURLProtectionSpace.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSURLProtectionSpace] that wraps the given raw object pointer. + NSURLProtectionSpace.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLProtectionSpace]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLProtectionSpace); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURLCache1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + NSURLProtectionSpace initWithHost_port_protocol_realm_authenticationMethod_( + objc.NSString host, + int port, + objc.NSString? protocol, + objc.NSString? realm, + objc.NSString? authenticationMethod) { + final _ret = _objc_msgSend_550( + this.pointer, + _sel_initWithHost_port_protocol_realm_authenticationMethod_, + host.pointer, + port, + protocol?.pointer ?? ffi.nullptr, + realm?.pointer ?? ffi.nullptr, + authenticationMethod?.pointer ?? ffi.nullptr); + return NSURLProtectionSpace.castFromPointer(_ret, + retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLCache1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + NSURLProtectionSpace initWithProxyHost_port_type_realm_authenticationMethod_( + objc.NSString host, + int port, + objc.NSString? type, + objc.NSString? realm, + objc.NSString? authenticationMethod) { + final _ret = _objc_msgSend_550( + this.pointer, + _sel_initWithProxyHost_port_type_realm_authenticationMethod_, + host.pointer, + port, + type?.pointer ?? ffi.nullptr, + realm?.pointer ?? ffi.nullptr, + authenticationMethod?.pointer ?? ffi.nullptr); + return NSURLProtectionSpace.castFromPointer(_ret, + retain: true, release: true); } -} -class NSCachedURLResponse extends NSObject { - NSCachedURLResponse._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + objc.NSString? get realm { + final _ret = _objc_msgSend_13(this.pointer, _sel_realm); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a [NSCachedURLResponse] that points to the same underlying object as [other]. - static NSCachedURLResponse castFrom(T other) { - return NSCachedURLResponse._(other._id, other._lib, - retain: true, release: true); + bool get receivesCredentialSecurely { + return _objc_msgSend_7(this.pointer, _sel_receivesCredentialSecurely); } - /// Returns a [NSCachedURLResponse] that wraps the given raw object pointer. - static NSCachedURLResponse castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSCachedURLResponse._(other, lib, retain: retain, release: release); + bool get isProxy { + return _objc_msgSend_7(this.pointer, _sel_isProxy); } - /// Returns whether [obj] is an instance of [NSCachedURLResponse]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSCachedURLResponse1); + objc.NSString get host { + final _ret = _objc_msgSend_12(this.pointer, _sel_host); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSCachedURLResponse initWithResponse_data_( - NSURLResponse response, NSData data) { - final _ret = _lib._objc_msgSend_975( - _id, _lib._sel_initWithResponse_data_1, response._id, data._id); - return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); + int get port { + return _objc_msgSend_114(this.pointer, _sel_port); } - NSCachedURLResponse initWithResponse_data_userInfo_storagePolicy_( - NSURLResponse response, - NSData data, - NSDictionary? userInfo, - int storagePolicy) { - final _ret = _lib._objc_msgSend_976( - _id, - _lib._sel_initWithResponse_data_userInfo_storagePolicy_1, - response._id, - data._id, - userInfo?._id ?? ffi.nullptr, - storagePolicy); - return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); + objc.NSString? get proxyType { + final _ret = _objc_msgSend_13(this.pointer, _sel_proxyType); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSURLResponse get response { - final _ret = _lib._objc_msgSend_977(_id, _lib._sel_response1); - return NSURLResponse._(_ret, _lib, retain: true, release: true); + objc.NSString? get protocol { + final _ret = _objc_msgSend_13(this.pointer, _sel_protocol); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSData get data { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_data1); - return NSData._(_ret, _lib, retain: true, release: true); + objc.NSString get authenticationMethod { + final _ret = _objc_msgSend_12(this.pointer, _sel_authenticationMethod); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSDictionary? get userInfo { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_userInfo1); + objc.NSArray? get distinguishedNames { + final _ret = _objc_msgSend_69(this.pointer, _sel_distinguishedNames); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - int get storagePolicy { - return _lib._objc_msgSend_978(_id, _lib._sel_storagePolicy1); + ffi.Pointer<__SecTrust> get serverTrust { + return _objc_msgSend_551(this.pointer, _sel_serverTrust); } @override - NSCachedURLResponse init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); + NSURLProtectionSpace init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLProtectionSpace.castFromPointer(_ret, + retain: true, release: true); } - static NSCachedURLResponse new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSCachedURLResponse1, _lib._sel_new1); - return NSCachedURLResponse._(_ret, _lib, retain: false, release: true); + static NSURLProtectionSpace new1() { + final _ret = _objc_msgSend_40(_class_NSURLProtectionSpace, _sel_new); + return NSURLProtectionSpace.castFromPointer(_ret, + retain: false, release: true); } - static NSCachedURLResponse allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSCachedURLResponse1, _lib._sel_allocWithZone_1, zone); - return NSCachedURLResponse._(_ret, _lib, retain: false, release: true); + static NSURLProtectionSpace allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLProtectionSpace, _sel_allocWithZone_, zone); + return NSURLProtectionSpace.castFromPointer(_ret, + retain: false, release: true); } - static NSCachedURLResponse alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSCachedURLResponse1, _lib._sel_alloc1); - return NSCachedURLResponse._(_ret, _lib, retain: false, release: true); + static NSURLProtectionSpace alloc() { + final _ret = _objc_msgSend_40(_class_NSURLProtectionSpace, _sel_alloc); + return NSURLProtectionSpace.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSCachedURLResponse1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLProtectionSpace, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSCachedURLResponse1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLProtectionSpace, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSCachedURLResponse1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLProtectionSpace, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSCachedURLResponse1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLProtectionSpace, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSCachedURLResponse1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLProtectionSpace, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSCachedURLResponse1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLProtectionSpace, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSCachedURLResponse1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLProtectionSpace, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLProtectionSpace, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLProtectionSpace, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLProtectionSpace = objc.getClass("NSURLProtectionSpace"); +late final _sel_initWithHost_port_protocol_realm_authenticationMethod_ = + objc.registerName("initWithHost:port:protocol:realm:authenticationMethod:"); +final _objc_msgSend_550 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithProxyHost_port_type_realm_authenticationMethod_ = objc + .registerName("initWithProxyHost:port:type:realm:authenticationMethod:"); +late final _sel_realm = objc.registerName("realm"); +late final _sel_receivesCredentialSecurely = + objc.registerName("receivesCredentialSecurely"); +late final _sel_isProxy = objc.registerName("isProxy"); +late final _sel_host = objc.registerName("host"); +late final _sel_proxyType = objc.registerName("proxyType"); +late final _sel_protocol = objc.registerName("protocol"); +late final _sel_authenticationMethod = + objc.registerName("authenticationMethod"); +late final _sel_distinguishedNames = objc.registerName("distinguishedNames"); +late final _sel_serverTrust = objc.registerName("serverTrust"); +final _objc_msgSend_551 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer<__SecTrust> Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer<__SecTrust> Function( + ffi.Pointer, ffi.Pointer)>(); + +class NSURLCredentialStorage extends objc.NSObject { + NSURLCredentialStorage._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSURLCredentialStorage] that points to the same underlying object as [other]. + NSURLCredentialStorage.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSURLCredentialStorage] that wraps the given raw object pointer. + NSURLCredentialStorage.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLCredentialStorage]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLCredentialStorage); + } + + static NSURLCredentialStorage getSharedCredentialStorage() { + final _ret = _objc_msgSend_552( + _class_NSURLCredentialStorage, _sel_sharedCredentialStorage); + return NSURLCredentialStorage.castFromPointer(_ret, + retain: true, release: true); + } + + objc.NSDictionary? credentialsForProtectionSpace_( + NSURLProtectionSpace space) { + final _ret = _objc_msgSend_553( + this.pointer, _sel_credentialsForProtectionSpace_, space.pointer); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSCachedURLResponse1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSDictionary get allCredentials { + final _ret = _objc_msgSend_112(this.pointer, _sel_allCredentials); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSCachedURLResponse1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + void setCredential_forProtectionSpace_( + NSURLCredential credential, NSURLProtectionSpace space) { + _objc_msgSend_554(this.pointer, _sel_setCredential_forProtectionSpace_, + credential.pointer, space.pointer); } -} -abstract class NSURLCacheStoragePolicy { - static const int NSURLCacheStorageAllowed = 0; - static const int NSURLCacheStorageAllowedInMemoryOnly = 1; - static const int NSURLCacheStorageNotAllowed = 2; -} + void removeCredential_forProtectionSpace_( + NSURLCredential credential, NSURLProtectionSpace space) { + _objc_msgSend_554(this.pointer, _sel_removeCredential_forProtectionSpace_, + credential.pointer, space.pointer); + } -class NSURLSessionDataTask extends NSURLSessionTask { - NSURLSessionDataTask._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + void removeCredential_forProtectionSpace_options_(NSURLCredential credential, + NSURLProtectionSpace space, objc.NSDictionary? options) { + _objc_msgSend_555( + this.pointer, + _sel_removeCredential_forProtectionSpace_options_, + credential.pointer, + space.pointer, + options?.pointer ?? ffi.nullptr); + } - /// Returns a [NSURLSessionDataTask] that points to the same underlying object as [other]. - static NSURLSessionDataTask castFrom(T other) { - return NSURLSessionDataTask._(other._id, other._lib, - retain: true, release: true); + NSURLCredential? defaultCredentialForProtectionSpace_( + NSURLProtectionSpace space) { + final _ret = _objc_msgSend_556( + this.pointer, _sel_defaultCredentialForProtectionSpace_, space.pointer); + return _ret.address == 0 + ? null + : NSURLCredential.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSURLSessionDataTask] that wraps the given raw object pointer. - static NSURLSessionDataTask castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionDataTask._(other, lib, retain: retain, release: release); + void setDefaultCredential_forProtectionSpace_( + NSURLCredential credential, NSURLProtectionSpace space) { + _objc_msgSend_554( + this.pointer, + _sel_setDefaultCredential_forProtectionSpace_, + credential.pointer, + space.pointer); } - /// Returns whether [obj] is an instance of [NSURLSessionDataTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionDataTask1); + void getCredentialsForProtectionSpace_task_completionHandler_( + NSURLProtectionSpace protectionSpace, + NSURLSessionTask task, + ObjCBlock_ffiVoid_NSDictionary completionHandler) { + _objc_msgSend_557( + this.pointer, + _sel_getCredentialsForProtectionSpace_task_completionHandler_, + protectionSpace.pointer, + task.pointer, + completionHandler.pointer); + } + + void setCredential_forProtectionSpace_task_(NSURLCredential credential, + NSURLProtectionSpace protectionSpace, NSURLSessionTask task) { + _objc_msgSend_558(this.pointer, _sel_setCredential_forProtectionSpace_task_, + credential.pointer, protectionSpace.pointer, task.pointer); + } + + void removeCredential_forProtectionSpace_options_task_( + NSURLCredential credential, + NSURLProtectionSpace protectionSpace, + objc.NSDictionary? options, + NSURLSessionTask task) { + _objc_msgSend_559( + this.pointer, + _sel_removeCredential_forProtectionSpace_options_task_, + credential.pointer, + protectionSpace.pointer, + options?.pointer ?? ffi.nullptr, + task.pointer); + } + + void getDefaultCredentialForProtectionSpace_task_completionHandler_( + NSURLProtectionSpace space, + NSURLSessionTask task, + ObjCBlock_ffiVoid_NSURLCredential completionHandler) { + _objc_msgSend_560( + this.pointer, + _sel_getDefaultCredentialForProtectionSpace_task_completionHandler_, + space.pointer, + task.pointer, + completionHandler.pointer); + } + + void setDefaultCredential_forProtectionSpace_task_(NSURLCredential credential, + NSURLProtectionSpace protectionSpace, NSURLSessionTask task) { + _objc_msgSend_558( + this.pointer, + _sel_setDefaultCredential_forProtectionSpace_task_, + credential.pointer, + protectionSpace.pointer, + task.pointer); } @override - NSURLSessionDataTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + NSURLCredentialStorage init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLCredentialStorage.castFromPointer(_ret, + retain: true, release: true); } - static NSURLSessionDataTask new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLSessionDataTask1, _lib._sel_new1); - return NSURLSessionDataTask._(_ret, _lib, retain: false, release: true); + static NSURLCredentialStorage new1() { + final _ret = _objc_msgSend_40(_class_NSURLCredentialStorage, _sel_new); + return NSURLCredentialStorage.castFromPointer(_ret, + retain: false, release: true); } - static NSURLSessionDataTask allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSessionDataTask1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionDataTask._(_ret, _lib, retain: false, release: true); + static NSURLCredentialStorage allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLCredentialStorage, _sel_allocWithZone_, zone); + return NSURLCredentialStorage.castFromPointer(_ret, + retain: false, release: true); } - static NSURLSessionDataTask alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionDataTask1, _lib._sel_alloc1); - return NSURLSessionDataTask._(_ret, _lib, retain: false, release: true); + static NSURLCredentialStorage alloc() { + final _ret = _objc_msgSend_40(_class_NSURLCredentialStorage, _sel_alloc); + return NSURLCredentialStorage.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionDataTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLCredentialStorage, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionDataTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLCredentialStorage, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionDataTask1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLCredentialStorage, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionDataTask1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSURLCredentialStorage, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSessionDataTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLCredentialStorage, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionDataTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLCredentialStorage, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionDataTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLCredentialStorage, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLCredentialStorage, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLCredentialStorage, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLCredentialStorage = + objc.getClass("NSURLCredentialStorage"); +late final _sel_sharedCredentialStorage = + objc.registerName("sharedCredentialStorage"); +final _objc_msgSend_552 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_credentialsForProtectionSpace_ = + objc.registerName("credentialsForProtectionSpace:"); +final _objc_msgSend_553 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_allCredentials = objc.registerName("allCredentials"); +late final _sel_setCredential_forProtectionSpace_ = + objc.registerName("setCredential:forProtectionSpace:"); +final _objc_msgSend_554 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeCredential_forProtectionSpace_ = + objc.registerName("removeCredential:forProtectionSpace:"); +late final _sel_removeCredential_forProtectionSpace_options_ = + objc.registerName("removeCredential:forProtectionSpace:options:"); +final _objc_msgSend_555 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_defaultCredentialForProtectionSpace_ = + objc.registerName("defaultCredentialForProtectionSpace:"); +final _objc_msgSend_556 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDefaultCredential_forProtectionSpace_ = + objc.registerName("setDefaultCredential:forProtectionSpace:"); +void _ObjCBlock_ffiVoid_NSDictionary_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSDictionary_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSDictionary_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSDictionary_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSDictionary_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSDictionary_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLSessionDataTask1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } +void _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSDictionary_closureRegistry[block.ref.target.address]!( + arg0); + +class ObjCBlock_ffiVoid_NSDictionary extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSDictionary._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionDataTask1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSDictionary castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSDictionary._(pointer, + retain: retain, release: release); } -} -void _ObjCBlock_ffiVoid_NSCachedURLResponse_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSDictionary.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDictionary_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSDictionary.fromFunction(void Function(objc.NSDictionary?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSDictionary_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSDictionary.castFromPointer(arg0, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSDictionary.listener(void Function(objc.NSDictionary?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSDictionary_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSDictionary.castFromPointer(arg0, retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; + + void call(objc.NSDictionary? arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function( + ffi.Pointer, ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr); +} + +late final _sel_getCredentialsForProtectionSpace_task_completionHandler_ = objc + .registerName("getCredentialsForProtectionSpace:task:completionHandler:"); +final _objc_msgSend_557 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_setCredential_forProtectionSpace_task_ = + objc.registerName("setCredential:forProtectionSpace:task:"); +final _objc_msgSend_558 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeCredential_forProtectionSpace_options_task_ = + objc.registerName("removeCredential:forProtectionSpace:options:task:"); +final _objc_msgSend_559 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSURLCredential_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => block.ref.target .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry[id] = fn; + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSURLCredential_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSURLCredential_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSURLCredential_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry[ +void _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry[ block.ref.target.address]!(arg0); -class ObjCBlock_ffiVoid_NSCachedURLResponse extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSCachedURLResponse._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, +class ObjCBlock_ffiVoid_NSURLCredential extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSURLCredential._(ffi.Pointer pointer, {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSCachedURLResponse castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSCachedURLResponse._(pointer, lib, + static ObjCBlock_ffiVoid_NSURLCredential castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSURLCredential._(pointer, retain: retain, release: release); } @@ -66579,21 +25831,18 @@ class ObjCBlock_ffiVoid_NSCachedURLResponse extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSCachedURLResponse.fromFunctionPointer( - SwiftLibrary lib, + ObjCBlock_ffiVoid_NSURLCredential.fromFunctionPointer( ffi.Pointer< - ffi - .NativeFunction arg0)>> + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSCachedURLResponse_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURLCredential_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -66601,20 +25850,18 @@ class ObjCBlock_ffiVoid_NSCachedURLResponse extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSCachedURLResponse.fromFunction( - SwiftLibrary lib, void Function(NSCachedURLResponse?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSCachedURLResponse._(arg0, lib, retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSURLCredential.fromFunction( + void Function(NSURLCredential?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSURLCredential_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : NSURLCredential.castFromPointer(arg0, retain: true, release: true))))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -66626,3352 +25873,4914 @@ class ObjCBlock_ffiVoid_NSCachedURLResponse extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSCachedURLResponse.listener( - SwiftLibrary lib, void Function(NSCachedURLResponse?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure( - (ffi.Pointer arg0) => fn( - arg0.address == 0 ? null : NSCachedURLResponse._(arg0, lib, retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSURLCredential.listener(void Function(NSURLCredential?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSURLCredential_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : NSURLCredential.castFromPointer(arg0, retain: true, release: true))))); static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? _dartFuncListenerTrampoline; - void call(NSCachedURLResponse? arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0?._id ?? ffi.nullptr); -} - -class NSURLConnection extends NSObject { - NSURLConnection._(ffi.Pointer id, SwiftLibrary lib, + void call(NSURLCredential? arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function( + ffi.Pointer, ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr); +} + +late final _sel_getDefaultCredentialForProtectionSpace_task_completionHandler_ = + objc.registerName( + "getDefaultCredentialForProtectionSpace:task:completionHandler:"); +final _objc_msgSend_560 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_setDefaultCredential_forProtectionSpace_task_ = + objc.registerName("setDefaultCredential:forProtectionSpace:task:"); + +class NSURLProtocol extends objc.NSObject { + NSURLProtocol._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSURLConnection] that points to the same underlying object as [other]. - static NSURLConnection castFrom(T other) { - return NSURLConnection._(other._id, other._lib, - retain: true, release: true); - } + /// Constructs a [NSURLProtocol] that points to the same underlying object as [other]. + NSURLProtocol.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSURLConnection] that wraps the given raw object pointer. - static NSURLConnection castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLConnection._(other, lib, retain: retain, release: release); + /// Constructs a [NSURLProtocol] that wraps the given raw object pointer. + NSURLProtocol.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLProtocol]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLProtocol); } - /// Returns whether [obj] is an instance of [NSURLConnection]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLConnection1); + NSURLProtocol initWithRequest_cachedResponse_client_(NSURLRequest request, + NSCachedURLResponse? cachedResponse, objc.NSObject? client) { + final _ret = _objc_msgSend_561( + this.pointer, + _sel_initWithRequest_cachedResponse_client_, + request.pointer, + cachedResponse?.pointer ?? ffi.nullptr, + client?.pointer ?? ffi.nullptr); + return NSURLProtocol.castFromPointer(_ret, retain: true, release: true); } - NSURLConnection? initWithRequest_delegate_startImmediately_( - NSURLRequest request, NSObject? delegate, bool startImmediately) { - final _ret = _lib._objc_msgSend_985( - _id, - _lib._sel_initWithRequest_delegate_startImmediately_1, - request._id, - delegate?._id ?? ffi.nullptr, - startImmediately); + objc.NSObject? get client { + final _ret = _objc_msgSend_66(this.pointer, _sel_client); return _ret.address == 0 ? null - : NSURLConnection._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSURLConnection? initWithRequest_delegate_( - NSURLRequest request, NSObject? delegate) { - final _ret = _lib._objc_msgSend_986( - _id, - _lib._sel_initWithRequest_delegate_1, - request._id, - delegate?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSURLConnection._(_ret, _lib, retain: true, release: true); + NSURLRequest get request { + final _ret = _objc_msgSend_537(this.pointer, _sel_request); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - static NSURLConnection? connectionWithRequest_delegate_( - SwiftLibrary _lib, NSURLRequest request, NSObject? delegate) { - final _ret = _lib._objc_msgSend_987( - _lib._class_NSURLConnection1, - _lib._sel_connectionWithRequest_delegate_1, - request._id, - delegate?._id ?? ffi.nullptr); + NSCachedURLResponse? get cachedResponse { + final _ret = _objc_msgSend_562(this.pointer, _sel_cachedResponse); return _ret.address == 0 ? null - : NSURLConnection._(_ret, _lib, retain: true, release: true); - } - - NSURLRequest get originalRequest { - final _ret = _lib._objc_msgSend_988(_id, _lib._sel_originalRequest1); - return NSURLRequest._(_ret, _lib, retain: true, release: true); - } - - NSURLRequest get currentRequest { - final _ret = _lib._objc_msgSend_988(_id, _lib._sel_currentRequest1); - return NSURLRequest._(_ret, _lib, retain: true, release: true); - } - - void start() { - _lib._objc_msgSend_1(_id, _lib._sel_start1); + : NSCachedURLResponse.castFromPointer(_ret, + retain: true, release: true); } - void cancel() { - _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + static bool canInitWithRequest_(NSURLRequest request) { + return _objc_msgSend_539( + _class_NSURLProtocol, _sel_canInitWithRequest_, request.pointer); } - void scheduleInRunLoop_forMode_(NSRunLoop aRunLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_scheduleInRunLoop_forMode_1, aRunLoop._id, mode._id); + static NSURLRequest canonicalRequestForRequest_(NSURLRequest request) { + final _ret = _objc_msgSend_563(_class_NSURLProtocol, + _sel_canonicalRequestForRequest_, request.pointer); + return NSURLRequest.castFromPointer(_ret, retain: true, release: true); } - void unscheduleFromRunLoop_forMode_(NSRunLoop aRunLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_unscheduleFromRunLoop_forMode_1, aRunLoop._id, mode._id); + static bool requestIsCacheEquivalent_toRequest_( + NSURLRequest a, NSURLRequest b) { + return _objc_msgSend_564(_class_NSURLProtocol, + _sel_requestIsCacheEquivalent_toRequest_, a.pointer, b.pointer); } - void setDelegateQueue_(NSOperationQueue? queue) { - _lib._objc_msgSend_989( - _id, _lib._sel_setDelegateQueue_1, queue?._id ?? ffi.nullptr); + void startLoading() { + _objc_msgSend_82(this.pointer, _sel_startLoading); } - static bool canHandleRequest_(SwiftLibrary _lib, NSURLRequest request) { - return _lib._objc_msgSend_990(_lib._class_NSURLConnection1, - _lib._sel_canHandleRequest_1, request._id); + void stopLoading() { + _objc_msgSend_82(this.pointer, _sel_stopLoading); } - static NSData? sendSynchronousRequest_returningResponse_error_( - SwiftLibrary _lib, - NSURLRequest request, - ffi.Pointer> response, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_991( - _lib._class_NSURLConnection1, - _lib._sel_sendSynchronousRequest_returningResponse_error_1, - request._id, - response, - error); + static objc.NSObject? propertyForKey_inRequest_( + objc.NSString key, NSURLRequest request) { + final _ret = _objc_msgSend_565(_class_NSURLProtocol, + _sel_propertyForKey_inRequest_, key.pointer, request.pointer); return _ret.address == 0 ? null - : NSData._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void sendAsynchronousRequest_queue_completionHandler_( - SwiftLibrary _lib, - NSURLRequest request, - NSOperationQueue queue, - ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError handler) { - _lib._objc_msgSend_992( - _lib._class_NSURLConnection1, - _lib._sel_sendAsynchronousRequest_queue_completionHandler_1, - request._id, - queue._id, - handler._id); + static void setProperty_forKey_inRequest_( + objc.NSObject value, objc.NSString key, NSMutableURLRequest request) { + _objc_msgSend_573(_class_NSURLProtocol, _sel_setProperty_forKey_inRequest_, + value.pointer, key.pointer, request.pointer); } - @override - NSURLConnection init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLConnection._(_ret, _lib, retain: true, release: true); + static void removePropertyForKey_inRequest_( + objc.NSString key, NSMutableURLRequest request) { + _objc_msgSend_574(_class_NSURLProtocol, + _sel_removePropertyForKey_inRequest_, key.pointer, request.pointer); } - static NSURLConnection new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLConnection1, _lib._sel_new1); - return NSURLConnection._(_ret, _lib, retain: false, release: true); + static bool registerClass_(objc.NSObject protocolClass) { + return _objc_msgSend_0( + _class_NSURLProtocol, _sel_registerClass_, protocolClass.pointer); } - static NSURLConnection allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLConnection1, _lib._sel_allocWithZone_1, zone); - return NSURLConnection._(_ret, _lib, retain: false, release: true); + static void unregisterClass_(objc.NSObject protocolClass) { + _objc_msgSend_49( + _class_NSURLProtocol, _sel_unregisterClass_, protocolClass.pointer); } - static NSURLConnection alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLConnection1, _lib._sel_alloc1); - return NSURLConnection._(_ret, _lib, retain: false, release: true); + static bool canInitWithTask_(NSURLSessionTask task) { + return _objc_msgSend_575( + _class_NSURLProtocol, _sel_canInitWithTask_, task.pointer); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLConnection1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + NSURLProtocol initWithTask_cachedResponse_client_(NSURLSessionTask task, + NSCachedURLResponse? cachedResponse, objc.NSObject? client) { + final _ret = _objc_msgSend_576( + this.pointer, + _sel_initWithTask_cachedResponse_client_, + task.pointer, + cachedResponse?.pointer ?? ffi.nullptr, + client?.pointer ?? ffi.nullptr); + return NSURLProtocol.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLConnection1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + NSURLSessionTask? get task { + final _ret = _objc_msgSend_577(this.pointer, _sel_task); + return _ret.address == 0 + ? null + : NSURLSessionTask.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLConnection1, - _lib._sel_accessInstanceVariablesDirectly1); + @override + NSURLProtocol init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLProtocol.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLConnection1, _lib._sel_useStoredAccessor1); + static NSURLProtocol new1() { + final _ret = _objc_msgSend_40(_class_NSURLProtocol, _sel_new); + return NSURLProtocol.castFromPointer(_ret, retain: false, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLConnection1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static NSURLProtocol allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSURLProtocol, _sel_allocWithZone_, zone); + return NSURLProtocol.castFromPointer(_ret, retain: false, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLConnection1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static NSURLProtocol alloc() { + final _ret = _objc_msgSend_40(_class_NSURLProtocol, _sel_alloc); + return NSURLProtocol.castFromPointer(_ret, retain: false, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLConnection1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLProtocol, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLConnection1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLProtocol, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLConnection1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLProtocol, _sel_accessInstanceVariablesDirectly); } -} - -void _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry = , ffi.Pointer, - ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer) - fn) { - final id = - ++_ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); -class ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLProtocol, _sel_useStoredAccessor); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError._(pointer, lib, - retain: retain, release: release); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLProtocol, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLProtocol, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.fromFunction( - SwiftLibrary lib, void Function(NSURLResponse?, NSData?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) => - fn( - arg0.address == 0 - ? null - : NSURLResponse._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSData._(arg1, lib, retain: true, release: true), - arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLProtocol, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLProtocol, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSURLProtocol, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLProtocol = objc.getClass("NSURLProtocol"); +late final _sel_initWithRequest_cachedResponse_client_ = + objc.registerName("initWithRequest:cachedResponse:client:"); +final _objc_msgSend_561 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_client = objc.registerName("client"); +late final _sel_request = objc.registerName("request"); +late final _sel_cachedResponse = objc.registerName("cachedResponse"); +final _objc_msgSend_562 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_canInitWithRequest_ = objc.registerName("canInitWithRequest:"); +late final _sel_canonicalRequestForRequest_ = + objc.registerName("canonicalRequestForRequest:"); +final _objc_msgSend_563 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_requestIsCacheEquivalent_toRequest_ = + objc.registerName("requestIsCacheEquivalent:toRequest:"); +final _objc_msgSend_564 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_startLoading = objc.registerName("startLoading"); +late final _sel_stopLoading = objc.registerName("stopLoading"); +late final _sel_propertyForKey_inRequest_ = + objc.registerName("propertyForKey:inRequest:"); +final _objc_msgSend_565 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.listener( - SwiftLibrary lib, void Function(NSURLResponse?, NSData?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= - ffi.NativeCallable, ffi.Pointer, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) => - fn( - arg0.address == 0 - ? null - : NSURLResponse._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSData._(arg1, lib, retain: true, release: true), - arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; +class NSMutableURLRequest extends NSURLRequest { + NSMutableURLRequest._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - void call(NSURLResponse? arg0, NSData? arg1, NSError? arg2) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>()( - _id, - arg0?._id ?? ffi.nullptr, - arg1?._id ?? ffi.nullptr, - arg2?._id ?? ffi.nullptr); -} + /// Constructs a [NSMutableURLRequest] that points to the same underlying object as [other]. + NSMutableURLRequest.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); -class NSURLCredential extends NSObject { - NSURLCredential._(ffi.Pointer id, SwiftLibrary lib, + /// Constructs a [NSMutableURLRequest] that wraps the given raw object pointer. + NSMutableURLRequest.castFromPointer(ffi.Pointer other, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : this._(other, retain: retain, release: release); - /// Returns a [NSURLCredential] that points to the same underlying object as [other]. - static NSURLCredential castFrom(T other) { - return NSURLCredential._(other._id, other._lib, - retain: true, release: true); + /// Returns whether [obj] is an instance of [NSMutableURLRequest]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMutableURLRequest); } - /// Returns a [NSURLCredential] that wraps the given raw object pointer. - static NSURLCredential castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLCredential._(other, lib, retain: retain, release: release); + @override + objc.NSURL? get URL { + final _ret = _objc_msgSend_10(this.pointer, _sel_URL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSURLCredential]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLCredential1); + set URL(objc.NSURL? value) { + return _objc_msgSend_566( + this.pointer, _sel_setURL_, value?.pointer ?? ffi.nullptr); } - int get persistence { - return _lib._objc_msgSend_993(_id, _lib._sel_persistence1); + @override + int get cachePolicy { + return _objc_msgSend_322(this.pointer, _sel_cachePolicy); } - NSURLCredential initWithUser_password_persistence_( - NSString user, NSString password, int persistence) { - final _ret = _lib._objc_msgSend_994( - _id, - _lib._sel_initWithUser_password_persistence_1, - user._id, - password._id, - persistence); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + set cachePolicy(int value) { + return _objc_msgSend_567(this.pointer, _sel_setCachePolicy_, value); } - static NSURLCredential credentialWithUser_password_persistence_( - SwiftLibrary _lib, NSString user, NSString password, int persistence) { - final _ret = _lib._objc_msgSend_995( - _lib._class_NSURLCredential1, - _lib._sel_credentialWithUser_password_persistence_1, - user._id, - password._id, - persistence); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + @override + double get timeoutInterval { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_timeoutInterval) + : _objc_msgSend_115(this.pointer, _sel_timeoutInterval); } - NSString? get user { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_user1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + set timeoutInterval(double value) { + return _objc_msgSend_212(this.pointer, _sel_setTimeoutInterval_, value); } - NSString? get password { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_password1); + @override + objc.NSURL? get mainDocumentURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_mainDocumentURL); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - bool get hasPassword { - return _lib._objc_msgSend_12(_id, _lib._sel_hasPassword1); - } - - NSURLCredential initWithIdentity_certificates_persistence_( - ffi.Pointer<__SecIdentity> identity, - NSArray? certArray, - int persistence) { - final _ret = _lib._objc_msgSend_996( - _id, - _lib._sel_initWithIdentity_certificates_persistence_1, - identity, - certArray?._id ?? ffi.nullptr, - persistence); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static NSURLCredential credentialWithIdentity_certificates_persistence_( - SwiftLibrary _lib, - ffi.Pointer<__SecIdentity> identity, - NSArray? certArray, - int persistence) { - final _ret = _lib._objc_msgSend_997( - _lib._class_NSURLCredential1, - _lib._sel_credentialWithIdentity_certificates_persistence_1, - identity, - certArray?._id ?? ffi.nullptr, - persistence); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + set mainDocumentURL(objc.NSURL? value) { + return _objc_msgSend_566( + this.pointer, _sel_setMainDocumentURL_, value?.pointer ?? ffi.nullptr); } - ffi.Pointer<__SecIdentity> get identity { - return _lib._objc_msgSend_998(_id, _lib._sel_identity1); + @override + int get networkServiceType { + return _objc_msgSend_323(this.pointer, _sel_networkServiceType); } - NSArray get certificates { - final _ret = _lib._objc_msgSend_85(_id, _lib._sel_certificates1); - return NSArray._(_ret, _lib, retain: true, release: true); + set networkServiceType(int value) { + return _objc_msgSend_568(this.pointer, _sel_setNetworkServiceType_, value); } - NSURLCredential initWithTrust_(ffi.Pointer<__SecTrust> trust) { - final _ret = _lib._objc_msgSend_999(_id, _lib._sel_initWithTrust_1, trust); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + @override + bool get allowsCellularAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsCellularAccess); } - static NSURLCredential credentialForTrust_( - SwiftLibrary _lib, ffi.Pointer<__SecTrust> trust) { - final _ret = _lib._objc_msgSend_1000( - _lib._class_NSURLCredential1, _lib._sel_credentialForTrust_1, trust); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + set allowsCellularAccess(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setAllowsCellularAccess_, value); } @override - NSURLCredential init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + bool get allowsExpensiveNetworkAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsExpensiveNetworkAccess); } - static NSURLCredential new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLCredential1, _lib._sel_new1); - return NSURLCredential._(_ret, _lib, retain: false, release: true); + set allowsExpensiveNetworkAccess(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAllowsExpensiveNetworkAccess_, value); } - static NSURLCredential allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLCredential1, _lib._sel_allocWithZone_1, zone); - return NSURLCredential._(_ret, _lib, retain: false, release: true); + @override + bool get allowsConstrainedNetworkAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsConstrainedNetworkAccess); } - static NSURLCredential alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLCredential1, _lib._sel_alloc1); - return NSURLCredential._(_ret, _lib, retain: false, release: true); + set allowsConstrainedNetworkAccess(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAllowsConstrainedNetworkAccess_, value); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLCredential1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + @override + bool get assumesHTTP3Capable { + return _objc_msgSend_7(this.pointer, _sel_assumesHTTP3Capable); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLCredential1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + set assumesHTTP3Capable(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setAssumesHTTP3Capable_, value); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLCredential1, - _lib._sel_accessInstanceVariablesDirectly1); + @override + int get attribution { + return _objc_msgSend_324(this.pointer, _sel_attribution); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLCredential1, _lib._sel_useStoredAccessor1); + set attribution(int value) { + return _objc_msgSend_569(this.pointer, _sel_setAttribution_, value); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLCredential1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + @override + bool get requiresDNSSECValidation { + return _objc_msgSend_7(this.pointer, _sel_requiresDNSSECValidation); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLCredential1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + set requiresDNSSECValidation(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setRequiresDNSSECValidation_, value); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLCredential1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSString get HTTPMethod { + final _ret = _objc_msgSend_12(this.pointer, _sel_HTTPMethod); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLCredential1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + set HTTPMethod(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setHTTPMethod_, value.pointer); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLCredential1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + @override + objc.NSDictionary? get allHTTPHeaderFields { + final _ret = _objc_msgSend_65(this.pointer, _sel_allHTTPHeaderFields); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } -} -abstract class NSURLCredentialPersistence { - static const int NSURLCredentialPersistenceNone = 0; - static const int NSURLCredentialPersistenceForSession = 1; - static const int NSURLCredentialPersistencePermanent = 2; - static const int NSURLCredentialPersistenceSynchronizable = 3; -} - -final class __SecIdentity extends ffi.Opaque {} - -final class __SecTrust extends ffi.Opaque {} - -class NSURLProtectionSpace extends NSObject { - NSURLProtectionSpace._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSURLProtectionSpace] that points to the same underlying object as [other]. - static NSURLProtectionSpace castFrom(T other) { - return NSURLProtectionSpace._(other._id, other._lib, - retain: true, release: true); + set allHTTPHeaderFields(objc.NSDictionary? value) { + return _objc_msgSend_173(this.pointer, _sel_setAllHTTPHeaderFields_, + value?.pointer ?? ffi.nullptr); } - /// Returns a [NSURLProtectionSpace] that wraps the given raw object pointer. - static NSURLProtectionSpace castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLProtectionSpace._(other, lib, retain: retain, release: release); + void setValue_forHTTPHeaderField_(objc.NSString? value, objc.NSString field) { + _objc_msgSend_570(this.pointer, _sel_setValue_forHTTPHeaderField_, + value?.pointer ?? ffi.nullptr, field.pointer); } - /// Returns whether [obj] is an instance of [NSURLProtectionSpace]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLProtectionSpace1); + void addValue_forHTTPHeaderField_(objc.NSString value, objc.NSString field) { + _objc_msgSend_201(this.pointer, _sel_addValue_forHTTPHeaderField_, + value.pointer, field.pointer); } - NSURLProtectionSpace initWithHost_port_protocol_realm_authenticationMethod_( - NSString host, - int port, - NSString? protocol, - NSString? realm, - NSString? authenticationMethod) { - final _ret = _lib._objc_msgSend_1001( - _id, - _lib._sel_initWithHost_port_protocol_realm_authenticationMethod_1, - host._id, - port, - protocol?._id ?? ffi.nullptr, - realm?._id ?? ffi.nullptr, - authenticationMethod?._id ?? ffi.nullptr); - return NSURLProtectionSpace._(_ret, _lib, retain: true, release: true); + @override + objc.NSData? get HTTPBody { + final _ret = _objc_msgSend_325(this.pointer, _sel_HTTPBody); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - NSURLProtectionSpace initWithProxyHost_port_type_realm_authenticationMethod_( - NSString host, - int port, - NSString? type, - NSString? realm, - NSString? authenticationMethod) { - final _ret = _lib._objc_msgSend_1001( - _id, - _lib._sel_initWithProxyHost_port_type_realm_authenticationMethod_1, - host._id, - port, - type?._id ?? ffi.nullptr, - realm?._id ?? ffi.nullptr, - authenticationMethod?._id ?? ffi.nullptr); - return NSURLProtectionSpace._(_ret, _lib, retain: true, release: true); + set HTTPBody(objc.NSData? value) { + return _objc_msgSend_571( + this.pointer, _sel_setHTTPBody_, value?.pointer ?? ffi.nullptr); } - NSString? get realm { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_realm1); + @override + NSInputStream? get HTTPBodyStream { + final _ret = _objc_msgSend_342(this.pointer, _sel_HTTPBodyStream); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSInputStream.castFromPointer(_ret, retain: true, release: true); } - bool get receivesCredentialSecurely { - return _lib._objc_msgSend_12(_id, _lib._sel_receivesCredentialSecurely1); + set HTTPBodyStream(NSInputStream? value) { + return _objc_msgSend_572( + this.pointer, _sel_setHTTPBodyStream_, value?.pointer ?? ffi.nullptr); + } + + @override + bool get HTTPShouldHandleCookies { + return _objc_msgSend_7(this.pointer, _sel_HTTPShouldHandleCookies); } - bool get isProxy { - return _lib._objc_msgSend_12(_id, _lib._sel_isProxy1); + set HTTPShouldHandleCookies(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setHTTPShouldHandleCookies_, value); } - NSString get host { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_host1); - return NSString._(_ret, _lib, retain: true, release: true); + @override + bool get HTTPShouldUsePipelining { + return _objc_msgSend_7(this.pointer, _sel_HTTPShouldUsePipelining); } - int get port { - return _lib._objc_msgSend_83(_id, _lib._sel_port1); + set HTTPShouldUsePipelining(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setHTTPShouldUsePipelining_, value); } - NSString? get proxyType { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_proxyType1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSMutableURLRequest requestWithURL_(objc.NSURL URL) { + final _ret = _objc_msgSend_320( + _class_NSMutableURLRequest, _sel_requestWithURL_, URL.pointer); + return NSMutableURLRequest.castFromPointer(_ret, + retain: true, release: true); } - NSString? get protocol { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_protocol1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static bool getSupportsSecureCoding() { + return _objc_msgSend_7( + _class_NSMutableURLRequest, _sel_supportsSecureCoding); } - NSString get authenticationMethod { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_authenticationMethod1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSMutableURLRequest requestWithURL_cachePolicy_timeoutInterval_( + objc.NSURL URL, int cachePolicy, double timeoutInterval) { + final _ret = _objc_msgSend_321( + _class_NSMutableURLRequest, + _sel_requestWithURL_cachePolicy_timeoutInterval_, + URL.pointer, + cachePolicy, + timeoutInterval); + return NSMutableURLRequest.castFromPointer(_ret, + retain: true, release: true); } - NSArray? get distinguishedNames { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_distinguishedNames1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + @override + NSMutableURLRequest initWithURL_(objc.NSURL URL) { + final _ret = + _objc_msgSend_320(this.pointer, _sel_initWithURL_, URL.pointer); + return NSMutableURLRequest.castFromPointer(_ret, + retain: true, release: true); } - ffi.Pointer<__SecTrust> get serverTrust { - return _lib._objc_msgSend_1002(_id, _lib._sel_serverTrust1); + @override + NSMutableURLRequest initWithURL_cachePolicy_timeoutInterval_( + objc.NSURL URL, int cachePolicy, double timeoutInterval) { + final _ret = _objc_msgSend_321( + this.pointer, + _sel_initWithURL_cachePolicy_timeoutInterval_, + URL.pointer, + cachePolicy, + timeoutInterval); + return NSMutableURLRequest.castFromPointer(_ret, + retain: true, release: true); } @override - NSURLProtectionSpace init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLProtectionSpace._(_ret, _lib, retain: true, release: true); + NSMutableURLRequest init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSMutableURLRequest.castFromPointer(_ret, + retain: true, release: true); } - static NSURLProtectionSpace new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLProtectionSpace1, _lib._sel_new1); - return NSURLProtectionSpace._(_ret, _lib, retain: false, release: true); + static NSMutableURLRequest new1() { + final _ret = _objc_msgSend_40(_class_NSMutableURLRequest, _sel_new); + return NSMutableURLRequest.castFromPointer(_ret, + retain: false, release: true); } - static NSURLProtectionSpace allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLProtectionSpace1, _lib._sel_allocWithZone_1, zone); - return NSURLProtectionSpace._(_ret, _lib, retain: false, release: true); + static NSMutableURLRequest allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSMutableURLRequest, _sel_allocWithZone_, zone); + return NSMutableURLRequest.castFromPointer(_ret, + retain: false, release: true); } - static NSURLProtectionSpace alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLProtectionSpace1, _lib._sel_alloc1); - return NSURLProtectionSpace._(_ret, _lib, retain: false, release: true); + static NSMutableURLRequest alloc() { + final _ret = _objc_msgSend_40(_class_NSMutableURLRequest, _sel_alloc); + return NSMutableURLRequest.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLProtectionSpace1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSMutableURLRequest, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLProtectionSpace1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSMutableURLRequest, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLProtectionSpace1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSMutableURLRequest, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLProtectionSpace1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSMutableURLRequest, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLProtectionSpace1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSMutableURLRequest, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLProtectionSpace1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSMutableURLRequest, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLProtectionSpace1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSMutableURLRequest, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSMutableURLRequest, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSMutableURLRequest, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSMutableURLRequest = objc.getClass("NSMutableURLRequest"); +late final _sel_setURL_ = objc.registerName("setURL:"); +final _objc_msgSend_566 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setCachePolicy_ = objc.registerName("setCachePolicy:"); +final _objc_msgSend_567 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setTimeoutInterval_ = objc.registerName("setTimeoutInterval:"); +late final _sel_setMainDocumentURL_ = objc.registerName("setMainDocumentURL:"); +late final _sel_setNetworkServiceType_ = + objc.registerName("setNetworkServiceType:"); +final _objc_msgSend_568 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setAllowsCellularAccess_ = + objc.registerName("setAllowsCellularAccess:"); +late final _sel_setAllowsExpensiveNetworkAccess_ = + objc.registerName("setAllowsExpensiveNetworkAccess:"); +late final _sel_setAllowsConstrainedNetworkAccess_ = + objc.registerName("setAllowsConstrainedNetworkAccess:"); +late final _sel_setAssumesHTTP3Capable_ = + objc.registerName("setAssumesHTTP3Capable:"); +late final _sel_setAttribution_ = objc.registerName("setAttribution:"); +final _objc_msgSend_569 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setRequiresDNSSECValidation_ = + objc.registerName("setRequiresDNSSECValidation:"); +late final _sel_setHTTPMethod_ = objc.registerName("setHTTPMethod:"); +late final _sel_setAllHTTPHeaderFields_ = + objc.registerName("setAllHTTPHeaderFields:"); +late final _sel_setValue_forHTTPHeaderField_ = + objc.registerName("setValue:forHTTPHeaderField:"); +final _objc_msgSend_570 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_addValue_forHTTPHeaderField_ = + objc.registerName("addValue:forHTTPHeaderField:"); +late final _sel_setHTTPBody_ = objc.registerName("setHTTPBody:"); +final _objc_msgSend_571 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setHTTPBodyStream_ = objc.registerName("setHTTPBodyStream:"); +final _objc_msgSend_572 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setHTTPShouldHandleCookies_ = + objc.registerName("setHTTPShouldHandleCookies:"); +late final _sel_setHTTPShouldUsePipelining_ = + objc.registerName("setHTTPShouldUsePipelining:"); +late final _sel_setProperty_forKey_inRequest_ = + objc.registerName("setProperty:forKey:inRequest:"); +final _objc_msgSend_573 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removePropertyForKey_inRequest_ = + objc.registerName("removePropertyForKey:inRequest:"); +final _objc_msgSend_574 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_registerClass_ = objc.registerName("registerClass:"); +late final _sel_unregisterClass_ = objc.registerName("unregisterClass:"); +late final _sel_canInitWithTask_ = objc.registerName("canInitWithTask:"); +final _objc_msgSend_575 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithTask_cachedResponse_client_ = + objc.registerName("initWithTask:cachedResponse:client:"); +final _objc_msgSend_576 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_task = objc.registerName("task"); +final _objc_msgSend_577 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + +class NSXMLParser extends objc.NSObject { + NSXMLParser._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSXMLParser] that points to the same underlying object as [other]. + NSXMLParser.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSXMLParser] that wraps the given raw object pointer. + NSXMLParser.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSXMLParser]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSXMLParser); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLProtectionSpace1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + NSXMLParser? initWithContentsOfURL_(objc.NSURL url) { + final _ret = + _objc_msgSend_3(this.pointer, _sel_initWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSXMLParser.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLProtectionSpace1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + NSXMLParser initWithData_(objc.NSData data) { + final _ret = + _objc_msgSend_340(this.pointer, _sel_initWithData_, data.pointer); + return NSXMLParser.castFromPointer(_ret, retain: true, release: true); } -} -class NSURLCredentialStorage extends NSObject { - NSURLCredentialStorage._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + NSXMLParser initWithStream_(NSInputStream stream) { + final _ret = + _objc_msgSend_578(this.pointer, _sel_initWithStream_, stream.pointer); + return NSXMLParser.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a [NSURLCredentialStorage] that points to the same underlying object as [other]. - static NSURLCredentialStorage castFrom(T other) { - return NSURLCredentialStorage._(other._id, other._lib, - retain: true, release: true); + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSURLCredentialStorage] that wraps the given raw object pointer. - static NSURLCredentialStorage castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLCredentialStorage._(other, lib, - retain: retain, release: release); + set delegate(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDelegate_, value?.pointer ?? ffi.nullptr); } - /// Returns whether [obj] is an instance of [NSURLCredentialStorage]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLCredentialStorage1); + bool get shouldProcessNamespaces { + return _objc_msgSend_7(this.pointer, _sel_shouldProcessNamespaces); } - static NSURLCredentialStorage getSharedCredentialStorage(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_1003(_lib._class_NSURLCredentialStorage1, - _lib._sel_sharedCredentialStorage1); - return NSURLCredentialStorage._(_ret, _lib, retain: true, release: true); + set shouldProcessNamespaces(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setShouldProcessNamespaces_, value); } - NSDictionary? credentialsForProtectionSpace_(NSURLProtectionSpace space) { - final _ret = _lib._objc_msgSend_1004( - _id, _lib._sel_credentialsForProtectionSpace_1, space._id); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + bool get shouldReportNamespacePrefixes { + return _objc_msgSend_7(this.pointer, _sel_shouldReportNamespacePrefixes); } - NSDictionary get allCredentials { - final _ret = _lib._objc_msgSend_181(_id, _lib._sel_allCredentials1); - return NSDictionary._(_ret, _lib, retain: true, release: true); + set shouldReportNamespacePrefixes(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setShouldReportNamespacePrefixes_, value); } - void setCredential_forProtectionSpace_( - NSURLCredential credential, NSURLProtectionSpace space) { - _lib._objc_msgSend_1005(_id, _lib._sel_setCredential_forProtectionSpace_1, - credential._id, space._id); + int get externalEntityResolvingPolicy { + return _objc_msgSend_579(this.pointer, _sel_externalEntityResolvingPolicy); } - void removeCredential_forProtectionSpace_( - NSURLCredential credential, NSURLProtectionSpace space) { - _lib._objc_msgSend_1005( - _id, - _lib._sel_removeCredential_forProtectionSpace_1, - credential._id, - space._id); + set externalEntityResolvingPolicy(int value) { + return _objc_msgSend_580( + this.pointer, _sel_setExternalEntityResolvingPolicy_, value); } - void removeCredential_forProtectionSpace_options_(NSURLCredential credential, - NSURLProtectionSpace space, NSDictionary? options) { - _lib._objc_msgSend_1006( - _id, - _lib._sel_removeCredential_forProtectionSpace_options_1, - credential._id, - space._id, - options?._id ?? ffi.nullptr); + objc.NSSet? get allowedExternalEntityURLs { + final _ret = + _objc_msgSend_581(this.pointer, _sel_allowedExternalEntityURLs); + return _ret.address == 0 + ? null + : objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSURLCredential? defaultCredentialForProtectionSpace_( - NSURLProtectionSpace space) { - final _ret = _lib._objc_msgSend_1007( - _id, _lib._sel_defaultCredentialForProtectionSpace_1, space._id); + set allowedExternalEntityURLs(objc.NSSet? value) { + return _objc_msgSend_582(this.pointer, _sel_setAllowedExternalEntityURLs_, + value?.pointer ?? ffi.nullptr); + } + + bool parse() { + return _objc_msgSend_7(this.pointer, _sel_parse); + } + + void abortParsing() { + _objc_msgSend_82(this.pointer, _sel_abortParsing); + } + + objc.NSError? get parserError { + final _ret = _objc_msgSend_328(this.pointer, _sel_parserError); return _ret.address == 0 ? null - : NSURLCredential._(_ret, _lib, retain: true, release: true); + : objc.NSError.castFromPointer(_ret, retain: true, release: true); } - void setDefaultCredential_forProtectionSpace_( - NSURLCredential credential, NSURLProtectionSpace space) { - _lib._objc_msgSend_1005( - _id, - _lib._sel_setDefaultCredential_forProtectionSpace_1, - credential._id, - space._id); + bool get shouldResolveExternalEntities { + return _objc_msgSend_7(this.pointer, _sel_shouldResolveExternalEntities); } - void getCredentialsForProtectionSpace_task_completionHandler_( - NSURLProtectionSpace protectionSpace, - NSURLSessionTask task, - ObjCBlock_ffiVoid_NSDictionary completionHandler) { - _lib._objc_msgSend_1008( - _id, - _lib._sel_getCredentialsForProtectionSpace_task_completionHandler_1, - protectionSpace._id, - task._id, - completionHandler._id); + set shouldResolveExternalEntities(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setShouldResolveExternalEntities_, value); } - void setCredential_forProtectionSpace_task_(NSURLCredential credential, - NSURLProtectionSpace protectionSpace, NSURLSessionTask task) { - _lib._objc_msgSend_1009( - _id, - _lib._sel_setCredential_forProtectionSpace_task_1, - credential._id, - protectionSpace._id, - task._id); + objc.NSString? get publicID { + final _ret = _objc_msgSend_13(this.pointer, _sel_publicID); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void removeCredential_forProtectionSpace_options_task_( - NSURLCredential credential, - NSURLProtectionSpace protectionSpace, - NSDictionary? options, - NSURLSessionTask task) { - _lib._objc_msgSend_1010( - _id, - _lib._sel_removeCredential_forProtectionSpace_options_task_1, - credential._id, - protectionSpace._id, - options?._id ?? ffi.nullptr, - task._id); + objc.NSString? get systemID { + final _ret = _objc_msgSend_13(this.pointer, _sel_systemID); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void getDefaultCredentialForProtectionSpace_task_completionHandler_( - NSURLProtectionSpace space, - NSURLSessionTask task, - ObjCBlock_ffiVoid_NSURLCredential completionHandler) { - _lib._objc_msgSend_1011( - _id, - _lib._sel_getDefaultCredentialForProtectionSpace_task_completionHandler_1, - space._id, - task._id, - completionHandler._id); + int get lineNumber { + return _objc_msgSend_114(this.pointer, _sel_lineNumber); } - void setDefaultCredential_forProtectionSpace_task_(NSURLCredential credential, - NSURLProtectionSpace protectionSpace, NSURLSessionTask task) { - _lib._objc_msgSend_1009( - _id, - _lib._sel_setDefaultCredential_forProtectionSpace_task_1, - credential._id, - protectionSpace._id, - task._id); + int get columnNumber { + return _objc_msgSend_114(this.pointer, _sel_columnNumber); } @override - NSURLCredentialStorage init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLCredentialStorage._(_ret, _lib, retain: true, release: true); + NSXMLParser init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSXMLParser.castFromPointer(_ret, retain: true, release: true); } - static NSURLCredentialStorage new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLCredentialStorage1, _lib._sel_new1); - return NSURLCredentialStorage._(_ret, _lib, retain: false, release: true); + static NSXMLParser new1() { + final _ret = _objc_msgSend_40(_class_NSXMLParser, _sel_new); + return NSXMLParser.castFromPointer(_ret, retain: false, release: true); } - static NSURLCredentialStorage allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLCredentialStorage1, _lib._sel_allocWithZone_1, zone); - return NSURLCredentialStorage._(_ret, _lib, retain: false, release: true); + static NSXMLParser allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSXMLParser, _sel_allocWithZone_, zone); + return NSXMLParser.castFromPointer(_ret, retain: false, release: true); } - static NSURLCredentialStorage alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLCredentialStorage1, _lib._sel_alloc1); - return NSURLCredentialStorage._(_ret, _lib, retain: false, release: true); + static NSXMLParser alloc() { + final _ret = _objc_msgSend_40(_class_NSXMLParser, _sel_alloc); + return NSXMLParser.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLCredentialStorage1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSXMLParser, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLCredentialStorage1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSXMLParser, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLCredentialStorage1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSXMLParser, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLCredentialStorage1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSXMLParser, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLCredentialStorage1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSXMLParser, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLCredentialStorage1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSXMLParser, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLCredentialStorage1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSXMLParser, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSXMLParser, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSXMLParser, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSXMLParser = objc.getClass("NSXMLParser"); +late final _sel_initWithContentsOfURL_ = + objc.registerName("initWithContentsOfURL:"); +late final _sel_initWithStream_ = objc.registerName("initWithStream:"); +final _objc_msgSend_578 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_shouldProcessNamespaces = + objc.registerName("shouldProcessNamespaces"); +late final _sel_setShouldProcessNamespaces_ = + objc.registerName("setShouldProcessNamespaces:"); +late final _sel_shouldReportNamespacePrefixes = + objc.registerName("shouldReportNamespacePrefixes"); +late final _sel_setShouldReportNamespacePrefixes_ = + objc.registerName("setShouldReportNamespacePrefixes:"); - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLCredentialStorage1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLCredentialStorage1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } +abstract class NSXMLParserExternalEntityResolvingPolicy { + static const int NSXMLParserResolveExternalEntitiesNever = 0; + static const int NSXMLParserResolveExternalEntitiesNoNetwork = 1; + static const int NSXMLParserResolveExternalEntitiesSameOriginOnly = 2; + static const int NSXMLParserResolveExternalEntitiesAlways = 3; } -void _ObjCBlock_ffiVoid_NSDictionary_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSDictionary_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSDictionary_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSDictionary_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSDictionary_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSDictionary_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} +late final _sel_externalEntityResolvingPolicy = + objc.registerName("externalEntityResolvingPolicy"); +final _objc_msgSend_579 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setExternalEntityResolvingPolicy_ = + objc.registerName("setExternalEntityResolvingPolicy:"); +final _objc_msgSend_580 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_allowedExternalEntityURLs = + objc.registerName("allowedExternalEntityURLs"); +final _objc_msgSend_581 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setAllowedExternalEntityURLs_ = + objc.registerName("setAllowedExternalEntityURLs:"); +final _objc_msgSend_582 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_parse = objc.registerName("parse"); +late final _sel_abortParsing = objc.registerName("abortParsing"); +late final _sel_parserError = objc.registerName("parserError"); +late final _sel_shouldResolveExternalEntities = + objc.registerName("shouldResolveExternalEntities"); +late final _sel_setShouldResolveExternalEntities_ = + objc.registerName("setShouldResolveExternalEntities:"); +late final _sel_publicID = objc.registerName("publicID"); +late final _sel_systemID = objc.registerName("systemID"); +late final _sel_lineNumber = objc.registerName("lineNumber"); +late final _sel_columnNumber = objc.registerName("columnNumber"); + +class NSFileWrapper extends objc.NSObject { + NSFileWrapper._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); -void _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSDictionary_closureRegistry[block.ref.target.address]!( - arg0); + /// Constructs a [NSFileWrapper] that points to the same underlying object as [other]. + NSFileWrapper.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); -class ObjCBlock_ffiVoid_NSDictionary extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSDictionary._(ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + /// Constructs a [NSFileWrapper] that wraps the given raw object pointer. + NSFileWrapper.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSDictionary castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSDictionary._(pointer, lib, - retain: retain, release: release); + /// Returns whether [obj] is an instance of [NSFileWrapper]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSFileWrapper); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSDictionary.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi - .NativeFunction arg0)>> - ptr) - : this._( - lib - ._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDictionary_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + NSFileWrapper? initWithURL_options_error_(objc.NSURL url, int options, + ffi.Pointer> outError) { + final _ret = _objc_msgSend_583(this.pointer, + _sel_initWithURL_options_error_, url.pointer, options, outError); + return _ret.address == 0 + ? null + : NSFileWrapper.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSDictionary.fromFunction( - SwiftLibrary lib, void Function(NSDictionary?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSDictionary_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSDictionary._(arg0, lib, - retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + NSFileWrapper initDirectoryWithFileWrappers_( + objc.NSDictionary childrenByPreferredName) { + final _ret = _objc_msgSend_409(this.pointer, + _sel_initDirectoryWithFileWrappers_, childrenByPreferredName.pointer); + return NSFileWrapper.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSDictionary.listener( - SwiftLibrary lib, void Function(NSDictionary?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSDictionary_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSDictionary._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; + NSFileWrapper initRegularFileWithContents_(objc.NSData contents) { + final _ret = _objc_msgSend_340( + this.pointer, _sel_initRegularFileWithContents_, contents.pointer); + return NSFileWrapper.castFromPointer(_ret, retain: true, release: true); + } - void call(NSDictionary? arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0?._id ?? ffi.nullptr); -} + NSFileWrapper initSymbolicLinkWithDestinationURL_(objc.NSURL url) { + final _ret = _objc_msgSend_320( + this.pointer, _sel_initSymbolicLinkWithDestinationURL_, url.pointer); + return NSFileWrapper.castFromPointer(_ret, retain: true, release: true); + } -void _ObjCBlock_ffiVoid_NSURLCredential_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSURLCredential_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSURLCredential_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSURLCredential_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + NSFileWrapper? initWithSerializedRepresentation_( + objc.NSData serializeRepresentation) { + final _ret = _objc_msgSend_341( + this.pointer, + _sel_initWithSerializedRepresentation_, + serializeRepresentation.pointer); + return _ret.address == 0 + ? null + : NSFileWrapper.castFromPointer(_ret, retain: true, release: true); + } -void _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry[ - block.ref.target.address]!(arg0); + NSFileWrapper? initWithCoder_(objc.NSCoder inCoder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, inCoder.pointer); + return _ret.address == 0 + ? null + : NSFileWrapper.castFromPointer(_ret, retain: true, release: true); + } -class ObjCBlock_ffiVoid_NSURLCredential extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURLCredential._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + bool get directory { + return _objc_msgSend_7(this.pointer, _sel_isDirectory); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSURLCredential castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSURLCredential._(pointer, lib, - retain: retain, release: release); + bool get regularFile { + return _objc_msgSend_7(this.pointer, _sel_isRegularFile); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURLCredential.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi - .NativeFunction arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURLCredential_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + bool get symbolicLink { + return _objc_msgSend_7(this.pointer, _sel_isSymbolicLink); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURLCredential.fromFunction( - SwiftLibrary lib, void Function(NSURLCredential?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURLCredential_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSURLCredential._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + objc.NSString? get preferredFilename { + final _ret = _objc_msgSend_13(this.pointer, _sel_preferredFilename); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSURLCredential.listener( - SwiftLibrary lib, void Function(NSURLCredential?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSURLCredential_registerClosure( - (ffi.Pointer arg0) => fn( - arg0.address == 0 ? null : NSURLCredential._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; + set preferredFilename(objc.NSString? value) { + return _objc_msgSend_46(this.pointer, _sel_setPreferredFilename_, + value?.pointer ?? ffi.nullptr); + } + + objc.NSString? get filename { + final _ret = _objc_msgSend_13(this.pointer, _sel_filename); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); + } - void call(NSURLCredential? arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0?._id ?? ffi.nullptr); -} + set filename(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setFilename_, value?.pointer ?? ffi.nullptr); + } -class NSURLProtocol extends NSObject { - NSURLProtocol._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + objc.NSDictionary get fileAttributes { + final _ret = _objc_msgSend_112(this.pointer, _sel_fileAttributes); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a [NSURLProtocol] that points to the same underlying object as [other]. - static NSURLProtocol castFrom(T other) { - return NSURLProtocol._(other._id, other._lib, retain: true, release: true); + set fileAttributes(objc.NSDictionary value) { + return _objc_msgSend_113( + this.pointer, _sel_setFileAttributes_, value.pointer); } - /// Returns a [NSURLProtocol] that wraps the given raw object pointer. - static NSURLProtocol castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLProtocol._(other, lib, retain: retain, release: release); + bool matchesContentsOfURL_(objc.NSURL url) { + return _objc_msgSend_305( + this.pointer, _sel_matchesContentsOfURL_, url.pointer); } - /// Returns whether [obj] is an instance of [NSURLProtocol]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLProtocol1); + bool readFromURL_options_error_(objc.NSURL url, int options, + ffi.Pointer> outError) { + return _objc_msgSend_584(this.pointer, _sel_readFromURL_options_error_, + url.pointer, options, outError); } - NSURLProtocol initWithRequest_cachedResponse_client_(NSURLRequest request, - NSCachedURLResponse? cachedResponse, NSObject? client) { - final _ret = _lib._objc_msgSend_1012( - _id, - _lib._sel_initWithRequest_cachedResponse_client_1, - request._id, - cachedResponse?._id ?? ffi.nullptr, - client?._id ?? ffi.nullptr); - return NSURLProtocol._(_ret, _lib, retain: true, release: true); - } - - NSObject? get client { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_client1); + bool writeToURL_options_originalContentsURL_error_( + objc.NSURL url, + int options, + objc.NSURL? originalContentsURL, + ffi.Pointer> outError) { + return _objc_msgSend_585( + this.pointer, + _sel_writeToURL_options_originalContentsURL_error_, + url.pointer, + options, + originalContentsURL?.pointer ?? ffi.nullptr, + outError); + } + + objc.NSData? get serializedRepresentation { + final _ret = _objc_msgSend_325(this.pointer, _sel_serializedRepresentation); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - NSURLRequest get request { - final _ret = _lib._objc_msgSend_988(_id, _lib._sel_request1); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + objc.NSString addFileWrapper_(NSFileWrapper child) { + final _ret = + _objc_msgSend_586(this.pointer, _sel_addFileWrapper_, child.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSCachedURLResponse? get cachedResponse { - final _ret = _lib._objc_msgSend_1013(_id, _lib._sel_cachedResponse1); - return _ret.address == 0 - ? null - : NSCachedURLResponse._(_ret, _lib, retain: true, release: true); + objc.NSString addRegularFileWithContents_preferredFilename_( + objc.NSData data, objc.NSString fileName) { + final _ret = _objc_msgSend_587( + this.pointer, + _sel_addRegularFileWithContents_preferredFilename_, + data.pointer, + fileName.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool canInitWithRequest_(SwiftLibrary _lib, NSURLRequest request) { - return _lib._objc_msgSend_990(_lib._class_NSURLProtocol1, - _lib._sel_canInitWithRequest_1, request._id); + void removeFileWrapper_(NSFileWrapper child) { + _objc_msgSend_588(this.pointer, _sel_removeFileWrapper_, child.pointer); } - static NSURLRequest canonicalRequestForRequest_( - SwiftLibrary _lib, NSURLRequest request) { - final _ret = _lib._objc_msgSend_1014(_lib._class_NSURLProtocol1, - _lib._sel_canonicalRequestForRequest_1, request._id); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + objc.NSDictionary? get fileWrappers { + final _ret = _objc_msgSend_65(this.pointer, _sel_fileWrappers); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static bool requestIsCacheEquivalent_toRequest_( - SwiftLibrary _lib, NSURLRequest a, NSURLRequest b) { - return _lib._objc_msgSend_1015(_lib._class_NSURLProtocol1, - _lib._sel_requestIsCacheEquivalent_toRequest_1, a._id, b._id); + objc.NSString? keyForFileWrapper_(NSFileWrapper child) { + final _ret = + _objc_msgSend_589(this.pointer, _sel_keyForFileWrapper_, child.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void startLoading() { - _lib._objc_msgSend_1(_id, _lib._sel_startLoading1); + objc.NSData? get regularFileContents { + final _ret = _objc_msgSend_325(this.pointer, _sel_regularFileContents); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - void stopLoading() { - _lib._objc_msgSend_1(_id, _lib._sel_stopLoading1); + objc.NSURL? get symbolicLinkDestinationURL { + final _ret = + _objc_msgSend_10(this.pointer, _sel_symbolicLinkDestinationURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static NSObject? propertyForKey_inRequest_( - SwiftLibrary _lib, NSString key, NSURLRequest request) { - final _ret = _lib._objc_msgSend_1016(_lib._class_NSURLProtocol1, - _lib._sel_propertyForKey_inRequest_1, key._id, request._id); + objc.NSObject? initWithPath_(objc.NSString path) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_initWithPath_, path.pointer); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void setProperty_forKey_inRequest_(SwiftLibrary _lib, NSObject value, - NSString key, NSMutableURLRequest request) { - _lib._objc_msgSend_1023( - _lib._class_NSURLProtocol1, - _lib._sel_setProperty_forKey_inRequest_1, - value._id, - key._id, - request._id); + objc.NSObject initSymbolicLinkWithDestination_(objc.NSString path) { + final _ret = _objc_msgSend_35( + this.pointer, _sel_initSymbolicLinkWithDestination_, path.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void removePropertyForKey_inRequest_( - SwiftLibrary _lib, NSString key, NSMutableURLRequest request) { - _lib._objc_msgSend_1024(_lib._class_NSURLProtocol1, - _lib._sel_removePropertyForKey_inRequest_1, key._id, request._id); + bool needsToBeUpdatedFromPath_(objc.NSString path) { + return _objc_msgSend_51( + this.pointer, _sel_needsToBeUpdatedFromPath_, path.pointer); } - static bool registerClass_(SwiftLibrary _lib, NSObject protocolClass) { - return _lib._objc_msgSend_0(_lib._class_NSURLProtocol1, - _lib._sel_registerClass_1, protocolClass._id); + bool updateFromPath_(objc.NSString path) { + return _objc_msgSend_51(this.pointer, _sel_updateFromPath_, path.pointer); } - static void unregisterClass_(SwiftLibrary _lib, NSObject protocolClass) { - _lib._objc_msgSend_15(_lib._class_NSURLProtocol1, - _lib._sel_unregisterClass_1, protocolClass._id); + bool writeToFile_atomically_updateFilenames_( + objc.NSString path, bool atomicFlag, bool updateFilenamesFlag) { + return _objc_msgSend_590( + this.pointer, + _sel_writeToFile_atomically_updateFilenames_, + path.pointer, + atomicFlag, + updateFilenamesFlag); } - static bool canInitWithTask_(SwiftLibrary _lib, NSURLSessionTask task) { - return _lib._objc_msgSend_1025( - _lib._class_NSURLProtocol1, _lib._sel_canInitWithTask_1, task._id); + objc.NSString addFileWithPath_(objc.NSString path) { + final _ret = + _objc_msgSend_297(this.pointer, _sel_addFileWithPath_, path.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSURLProtocol initWithTask_cachedResponse_client_(NSURLSessionTask task, - NSCachedURLResponse? cachedResponse, NSObject? client) { - final _ret = _lib._objc_msgSend_1026( - _id, - _lib._sel_initWithTask_cachedResponse_client_1, - task._id, - cachedResponse?._id ?? ffi.nullptr, - client?._id ?? ffi.nullptr); - return NSURLProtocol._(_ret, _lib, retain: true, release: true); + objc.NSString addSymbolicLinkWithDestination_preferredFilename_( + objc.NSString path, objc.NSString filename) { + final _ret = _objc_msgSend_591( + this.pointer, + _sel_addSymbolicLinkWithDestination_preferredFilename_, + path.pointer, + filename.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSURLSessionTask? get task { - final _ret = _lib._objc_msgSend_1027(_id, _lib._sel_task1); - return _ret.address == 0 - ? null - : NSURLSessionTask._(_ret, _lib, retain: true, release: true); + objc.NSString symbolicLinkDestination() { + final _ret = _objc_msgSend_12(this.pointer, _sel_symbolicLinkDestination); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } @override - NSURLProtocol init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLProtocol._(_ret, _lib, retain: true, release: true); + NSFileWrapper init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSFileWrapper.castFromPointer(_ret, retain: true, release: true); } - static NSURLProtocol new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLProtocol1, _lib._sel_new1); - return NSURLProtocol._(_ret, _lib, retain: false, release: true); + static NSFileWrapper new1() { + final _ret = _objc_msgSend_40(_class_NSFileWrapper, _sel_new); + return NSFileWrapper.castFromPointer(_ret, retain: false, release: true); } - static NSURLProtocol allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLProtocol1, _lib._sel_allocWithZone_1, zone); - return NSURLProtocol._(_ret, _lib, retain: false, release: true); + static NSFileWrapper allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSFileWrapper, _sel_allocWithZone_, zone); + return NSFileWrapper.castFromPointer(_ret, retain: false, release: true); } - static NSURLProtocol alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLProtocol1, _lib._sel_alloc1); - return NSURLProtocol._(_ret, _lib, retain: false, release: true); + static NSFileWrapper alloc() { + final _ret = _objc_msgSend_40(_class_NSFileWrapper, _sel_alloc); + return NSFileWrapper.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLProtocol1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSFileWrapper, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLProtocol1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSFileWrapper, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLProtocol1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSFileWrapper, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLProtocol1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSFileWrapper, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLProtocol1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSFileWrapper, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLProtocol1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSFileWrapper, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLProtocol1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSFileWrapper, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURLProtocol1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSFileWrapper, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLProtocol1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSFileWrapper, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -class NSMutableURLRequest extends NSURLRequest { - NSMutableURLRequest._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); +late final _class_NSFileWrapper = objc.getClass("NSFileWrapper"); - /// Returns a [NSMutableURLRequest] that points to the same underlying object as [other]. - static NSMutableURLRequest castFrom(T other) { - return NSMutableURLRequest._(other._id, other._lib, - retain: true, release: true); - } +abstract class NSFileWrapperReadingOptions { + static const int NSFileWrapperReadingImmediate = 1; + static const int NSFileWrapperReadingWithoutMapping = 2; +} - /// Returns a [NSMutableURLRequest] that wraps the given raw object pointer. - static NSMutableURLRequest castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSMutableURLRequest._(other, lib, retain: retain, release: release); - } +late final _sel_initWithURL_options_error_ = + objc.registerName("initWithURL:options:error:"); +final _objc_msgSend_583 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_initDirectoryWithFileWrappers_ = + objc.registerName("initDirectoryWithFileWrappers:"); +late final _sel_initRegularFileWithContents_ = + objc.registerName("initRegularFileWithContents:"); +late final _sel_initSymbolicLinkWithDestinationURL_ = + objc.registerName("initSymbolicLinkWithDestinationURL:"); +late final _sel_initWithSerializedRepresentation_ = + objc.registerName("initWithSerializedRepresentation:"); +late final _sel_isDirectory = objc.registerName("isDirectory"); +late final _sel_isRegularFile = objc.registerName("isRegularFile"); +late final _sel_isSymbolicLink = objc.registerName("isSymbolicLink"); +late final _sel_preferredFilename = objc.registerName("preferredFilename"); +late final _sel_setPreferredFilename_ = + objc.registerName("setPreferredFilename:"); +late final _sel_filename = objc.registerName("filename"); +late final _sel_setFilename_ = objc.registerName("setFilename:"); +late final _sel_fileAttributes = objc.registerName("fileAttributes"); +late final _sel_setFileAttributes_ = objc.registerName("setFileAttributes:"); +late final _sel_matchesContentsOfURL_ = + objc.registerName("matchesContentsOfURL:"); +late final _sel_readFromURL_options_error_ = + objc.registerName("readFromURL:options:error:"); +final _objc_msgSend_584 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); - /// Returns whether [obj] is an instance of [NSMutableURLRequest]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMutableURLRequest1); - } +abstract class NSFileWrapperWritingOptions { + static const int NSFileWrapperWritingAtomic = 1; + static const int NSFileWrapperWritingWithNameUpdating = 2; +} - @override - NSURL? get URL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_URL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } +late final _sel_writeToURL_options_originalContentsURL_error_ = + objc.registerName("writeToURL:options:originalContentsURL:error:"); +final _objc_msgSend_585 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_serializedRepresentation = + objc.registerName("serializedRepresentation"); +late final _sel_addFileWrapper_ = objc.registerName("addFileWrapper:"); +final _objc_msgSend_586 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_addRegularFileWithContents_preferredFilename_ = + objc.registerName("addRegularFileWithContents:preferredFilename:"); +final _objc_msgSend_587 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeFileWrapper_ = objc.registerName("removeFileWrapper:"); +final _objc_msgSend_588 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_fileWrappers = objc.registerName("fileWrappers"); +late final _sel_keyForFileWrapper_ = objc.registerName("keyForFileWrapper:"); +final _objc_msgSend_589 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_regularFileContents = objc.registerName("regularFileContents"); +late final _sel_symbolicLinkDestinationURL = + objc.registerName("symbolicLinkDestinationURL"); +late final _sel_initSymbolicLinkWithDestination_ = + objc.registerName("initSymbolicLinkWithDestination:"); +late final _sel_needsToBeUpdatedFromPath_ = + objc.registerName("needsToBeUpdatedFromPath:"); +late final _sel_updateFromPath_ = objc.registerName("updateFromPath:"); +late final _sel_writeToFile_atomically_updateFilenames_ = + objc.registerName("writeToFile:atomically:updateFilenames:"); +final _objc_msgSend_590 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Bool)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + bool)>(); +late final _sel_addFileWithPath_ = objc.registerName("addFileWithPath:"); +late final _sel_addSymbolicLinkWithDestination_preferredFilename_ = + objc.registerName("addSymbolicLinkWithDestination:preferredFilename:"); +final _objc_msgSend_591 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_symbolicLinkDestination = + objc.registerName("symbolicLinkDestination"); + +class NSURLSession extends objc.NSObject { + NSURLSession._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - set URL(NSURL? value) { - return _lib._objc_msgSend_671( - _id, _lib._sel_setURL_1, value?._id ?? ffi.nullptr); - } + /// Constructs a [NSURLSession] that points to the same underlying object as [other]. + NSURLSession.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - @override - int get cachePolicy { - return _lib._objc_msgSend_859(_id, _lib._sel_cachePolicy1); - } + /// Constructs a [NSURLSession] that wraps the given raw object pointer. + NSURLSession.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - set cachePolicy(int value) { - return _lib._objc_msgSend_1017(_id, _lib._sel_setCachePolicy_1, value); + /// Returns whether [obj] is an instance of [NSURLSession]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSession); } - @override - double get timeoutInterval { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret(_id, _lib._sel_timeoutInterval1) - : _lib._objc_msgSend_165(_id, _lib._sel_timeoutInterval1); + static NSURLSession getSharedSession() { + final _ret = _objc_msgSend_592(_class_NSURLSession, _sel_sharedSession); + return NSURLSession.castFromPointer(_ret, retain: true, release: true); } - set timeoutInterval(double value) { - return _lib._objc_msgSend_542(_id, _lib._sel_setTimeoutInterval_1, value); + static NSURLSession sessionWithConfiguration_( + NSURLSessionConfiguration configuration) { + final _ret = _objc_msgSend_608(_class_NSURLSession, + _sel_sessionWithConfiguration_, configuration.pointer); + return NSURLSession.castFromPointer(_ret, retain: true, release: true); } - @override - NSURL? get mainDocumentURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_mainDocumentURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static NSURLSession sessionWithConfiguration_delegate_delegateQueue_( + NSURLSessionConfiguration configuration, + objc.NSObject? delegate, + NSOperationQueue? queue) { + final _ret = _objc_msgSend_609( + _class_NSURLSession, + _sel_sessionWithConfiguration_delegate_delegateQueue_, + configuration.pointer, + delegate?.pointer ?? ffi.nullptr, + queue?.pointer ?? ffi.nullptr); + return NSURLSession.castFromPointer(_ret, retain: true, release: true); } - set mainDocumentURL(NSURL? value) { - return _lib._objc_msgSend_671( - _id, _lib._sel_setMainDocumentURL_1, value?._id ?? ffi.nullptr); + NSOperationQueue get delegateQueue { + final _ret = _objc_msgSend_460(this.pointer, _sel_delegateQueue); + return NSOperationQueue.castFromPointer(_ret, retain: true, release: true); } - @override - int get networkServiceType { - return _lib._objc_msgSend_860(_id, _lib._sel_networkServiceType1); + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set networkServiceType(int value) { - return _lib._objc_msgSend_1018( - _id, _lib._sel_setNetworkServiceType_1, value); + NSURLSessionConfiguration get configuration { + final _ret = _objc_msgSend_593(this.pointer, _sel_configuration); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: true, release: true); } - @override - bool get allowsCellularAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsCellularAccess1); + objc.NSString? get sessionDescription { + final _ret = _objc_msgSend_13(this.pointer, _sel_sessionDescription); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set allowsCellularAccess(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAllowsCellularAccess_1, value); + set sessionDescription(objc.NSString? value) { + return _objc_msgSend_46(this.pointer, _sel_setSessionDescription_, + value?.pointer ?? ffi.nullptr); } - @override - bool get allowsExpensiveNetworkAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsExpensiveNetworkAccess1); + void finishTasksAndInvalidate() { + _objc_msgSend_82(this.pointer, _sel_finishTasksAndInvalidate); } - set allowsExpensiveNetworkAccess(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAllowsExpensiveNetworkAccess_1, value); + void invalidateAndCancel() { + _objc_msgSend_82(this.pointer, _sel_invalidateAndCancel); } - @override - bool get allowsConstrainedNetworkAccess { - return _lib._objc_msgSend_12( - _id, _lib._sel_allowsConstrainedNetworkAccess1); + void resetWithCompletionHandler_(ObjCBlock_ffiVoid completionHandler) { + _objc_msgSend_249(this.pointer, _sel_resetWithCompletionHandler_, + completionHandler.pointer); } - set allowsConstrainedNetworkAccess(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAllowsConstrainedNetworkAccess_1, value); + void flushWithCompletionHandler_(ObjCBlock_ffiVoid completionHandler) { + _objc_msgSend_249(this.pointer, _sel_flushWithCompletionHandler_, + completionHandler.pointer); } - @override - bool get assumesHTTP3Capable { - return _lib._objc_msgSend_12(_id, _lib._sel_assumesHTTP3Capable1); + void getTasksWithCompletionHandler_( + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray completionHandler) { + _objc_msgSend_610(this.pointer, _sel_getTasksWithCompletionHandler_, + completionHandler.pointer); } - set assumesHTTP3Capable(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAssumesHTTP3Capable_1, value); + void getAllTasksWithCompletionHandler_( + ObjCBlock_ffiVoid_NSArray1 completionHandler) { + _objc_msgSend_611(this.pointer, _sel_getAllTasksWithCompletionHandler_, + completionHandler.pointer); } - @override - int get attribution { - return _lib._objc_msgSend_861(_id, _lib._sel_attribution1); + NSURLSessionDataTask dataTaskWithRequest_(NSURLRequest request) { + final _ret = _objc_msgSend_612( + this.pointer, _sel_dataTaskWithRequest_, request.pointer); + return NSURLSessionDataTask.castFromPointer(_ret, + retain: true, release: true); } - set attribution(int value) { - return _lib._objc_msgSend_1019(_id, _lib._sel_setAttribution_1, value); + NSURLSessionDataTask dataTaskWithURL_(objc.NSURL url) { + final _ret = + _objc_msgSend_613(this.pointer, _sel_dataTaskWithURL_, url.pointer); + return NSURLSessionDataTask.castFromPointer(_ret, + retain: true, release: true); } - @override - bool get requiresDNSSECValidation { - return _lib._objc_msgSend_12(_id, _lib._sel_requiresDNSSECValidation1); + NSURLSessionUploadTask uploadTaskWithRequest_fromFile_( + NSURLRequest request, objc.NSURL fileURL) { + final _ret = _objc_msgSend_615(this.pointer, + _sel_uploadTaskWithRequest_fromFile_, request.pointer, fileURL.pointer); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); } - set requiresDNSSECValidation(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setRequiresDNSSECValidation_1, value); + NSURLSessionUploadTask uploadTaskWithRequest_fromData_( + NSURLRequest request, objc.NSData bodyData) { + final _ret = _objc_msgSend_616( + this.pointer, + _sel_uploadTaskWithRequest_fromData_, + request.pointer, + bodyData.pointer); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); } - NSString get HTTPMethod { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_HTTPMethod1); - return NSString._(_ret, _lib, retain: true, release: true); + NSURLSessionUploadTask uploadTaskWithResumeData_(objc.NSData resumeData) { + final _ret = _objc_msgSend_617( + this.pointer, _sel_uploadTaskWithResumeData_, resumeData.pointer); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); } - set HTTPMethod(NSString value) { - return _lib._objc_msgSend_646(_id, _lib._sel_setHTTPMethod_1, value._id); + NSURLSessionUploadTask uploadTaskWithStreamedRequest_(NSURLRequest request) { + final _ret = _objc_msgSend_618( + this.pointer, _sel_uploadTaskWithStreamedRequest_, request.pointer); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); } - @override - NSDictionary? get allHTTPHeaderFields { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_allHTTPHeaderFields1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + NSURLSessionDownloadTask downloadTaskWithRequest_(NSURLRequest request) { + final _ret = _objc_msgSend_619( + this.pointer, _sel_downloadTaskWithRequest_, request.pointer); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: true, release: true); } - set allHTTPHeaderFields(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, _lib._sel_setAllHTTPHeaderFields_1, value?._id ?? ffi.nullptr); + NSURLSessionDownloadTask downloadTaskWithURL_(objc.NSURL url) { + final _ret = + _objc_msgSend_620(this.pointer, _sel_downloadTaskWithURL_, url.pointer); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: true, release: true); } - void setValue_forHTTPHeaderField_(NSString? value, NSString field) { - _lib._objc_msgSend_1020(_id, _lib._sel_setValue_forHTTPHeaderField_1, - value?._id ?? ffi.nullptr, field._id); + NSURLSessionDownloadTask downloadTaskWithResumeData_(objc.NSData resumeData) { + final _ret = _objc_msgSend_621( + this.pointer, _sel_downloadTaskWithResumeData_, resumeData.pointer); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: true, release: true); } - void addValue_forHTTPHeaderField_(NSString value, NSString field) { - _lib._objc_msgSend_551( - _id, _lib._sel_addValue_forHTTPHeaderField_1, value._id, field._id); + NSURLSessionStreamTask streamTaskWithHostName_port_( + objc.NSString hostname, int port) { + final _ret = _objc_msgSend_624(this.pointer, + _sel_streamTaskWithHostName_port_, hostname.pointer, port); + return NSURLSessionStreamTask.castFromPointer(_ret, + retain: true, release: true); } - @override - NSData? get HTTPBody { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_HTTPBody1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + NSURLSessionStreamTask streamTaskWithNetService_(NSNetService service) { + final _ret = _objc_msgSend_633( + this.pointer, _sel_streamTaskWithNetService_, service.pointer); + return NSURLSessionStreamTask.castFromPointer(_ret, + retain: true, release: true); } - set HTTPBody(NSData? value) { - return _lib._objc_msgSend_1021( - _id, _lib._sel_setHTTPBody_1, value?._id ?? ffi.nullptr); + NSURLSessionWebSocketTask webSocketTaskWithURL_(objc.NSURL url) { + final _ret = _objc_msgSend_640( + this.pointer, _sel_webSocketTaskWithURL_, url.pointer); + return NSURLSessionWebSocketTask.castFromPointer(_ret, + retain: true, release: true); } - @override - NSInputStream? get HTTPBodyStream { - final _ret = _lib._objc_msgSend_875(_id, _lib._sel_HTTPBodyStream1); - return _ret.address == 0 - ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); + NSURLSessionWebSocketTask webSocketTaskWithURL_protocols_( + objc.NSURL url, objc.NSArray protocols) { + final _ret = _objc_msgSend_641(this.pointer, + _sel_webSocketTaskWithURL_protocols_, url.pointer, protocols.pointer); + return NSURLSessionWebSocketTask.castFromPointer(_ret, + retain: true, release: true); } - set HTTPBodyStream(NSInputStream? value) { - return _lib._objc_msgSend_1022( - _id, _lib._sel_setHTTPBodyStream_1, value?._id ?? ffi.nullptr); + NSURLSessionWebSocketTask webSocketTaskWithRequest_(NSURLRequest request) { + final _ret = _objc_msgSend_642( + this.pointer, _sel_webSocketTaskWithRequest_, request.pointer); + return NSURLSessionWebSocketTask.castFromPointer(_ret, + retain: true, release: true); } @override - bool get HTTPShouldHandleCookies { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldHandleCookies1); + NSURLSession init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSession.castFromPointer(_ret, retain: true, release: true); } - set HTTPShouldHandleCookies(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setHTTPShouldHandleCookies_1, value); + static NSURLSession new1() { + final _ret = _objc_msgSend_40(_class_NSURLSession, _sel_new); + return NSURLSession.castFromPointer(_ret, retain: false, release: true); } - @override - bool get HTTPShouldUsePipelining { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldUsePipelining1); + NSURLSessionDataTask dataTaskWithRequest_completionHandler_( + NSURLRequest request, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_643( + this.pointer, + _sel_dataTaskWithRequest_completionHandler_, + request.pointer, + completionHandler.pointer); + return NSURLSessionDataTask.castFromPointer(_ret, + retain: true, release: true); } - set HTTPShouldUsePipelining(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setHTTPShouldUsePipelining_1, value); + NSURLSessionDataTask dataTaskWithURL_completionHandler_(objc.NSURL url, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_644( + this.pointer, + _sel_dataTaskWithURL_completionHandler_, + url.pointer, + completionHandler.pointer); + return NSURLSessionDataTask.castFromPointer(_ret, + retain: true, release: true); } - static NSMutableURLRequest requestWithURL_(SwiftLibrary _lib, NSURL URL) { - final _ret = _lib._objc_msgSend_262( - _lib._class_NSMutableURLRequest1, _lib._sel_requestWithURL_1, URL._id); - return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + NSURLSessionUploadTask uploadTaskWithRequest_fromFile_completionHandler_( + NSURLRequest request, + objc.NSURL fileURL, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_645( + this.pointer, + _sel_uploadTaskWithRequest_fromFile_completionHandler_, + request.pointer, + fileURL.pointer, + completionHandler.pointer); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); } - static bool getSupportsSecureCoding(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableURLRequest1, _lib._sel_supportsSecureCoding1); + NSURLSessionUploadTask uploadTaskWithRequest_fromData_completionHandler_( + NSURLRequest request, + objc.NSData? bodyData, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_646( + this.pointer, + _sel_uploadTaskWithRequest_fromData_completionHandler_, + request.pointer, + bodyData?.pointer ?? ffi.nullptr, + completionHandler.pointer); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); } - static NSMutableURLRequest requestWithURL_cachePolicy_timeoutInterval_( - SwiftLibrary _lib, NSURL URL, int cachePolicy, double timeoutInterval) { - final _ret = _lib._objc_msgSend_858( - _lib._class_NSMutableURLRequest1, - _lib._sel_requestWithURL_cachePolicy_timeoutInterval_1, - URL._id, - cachePolicy, - timeoutInterval); - return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + NSURLSessionUploadTask uploadTaskWithResumeData_completionHandler_( + objc.NSData resumeData, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_647( + this.pointer, + _sel_uploadTaskWithResumeData_completionHandler_, + resumeData.pointer, + completionHandler.pointer); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); } - @override - NSMutableURLRequest initWithURL_(NSURL URL) { - final _ret = _lib._objc_msgSend_262(_id, _lib._sel_initWithURL_1, URL._id); - return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + NSURLSessionDownloadTask downloadTaskWithRequest_completionHandler_( + NSURLRequest request, + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_648( + this.pointer, + _sel_downloadTaskWithRequest_completionHandler_, + request.pointer, + completionHandler.pointer); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: true, release: true); } - @override - NSMutableURLRequest initWithURL_cachePolicy_timeoutInterval_( - NSURL URL, int cachePolicy, double timeoutInterval) { - final _ret = _lib._objc_msgSend_858( - _id, - _lib._sel_initWithURL_cachePolicy_timeoutInterval_1, - URL._id, - cachePolicy, - timeoutInterval); - return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + NSURLSessionDownloadTask downloadTaskWithURL_completionHandler_( + objc.NSURL url, + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_649( + this.pointer, + _sel_downloadTaskWithURL_completionHandler_, + url.pointer, + completionHandler.pointer); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: true, release: true); } - @override - NSMutableURLRequest init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + NSURLSessionDownloadTask downloadTaskWithResumeData_completionHandler_( + objc.NSData resumeData, + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { + final _ret = _objc_msgSend_650( + this.pointer, + _sel_downloadTaskWithResumeData_completionHandler_, + resumeData.pointer, + completionHandler.pointer); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: true, release: true); } - static NSMutableURLRequest new1(SwiftLibrary _lib) { + static NSURLSession allocWithZone_(ffi.Pointer<_NSZone> zone) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableURLRequest1, _lib._sel_new1); - return NSMutableURLRequest._(_ret, _lib, retain: false, release: true); - } - - static NSMutableURLRequest allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSMutableURLRequest1, _lib._sel_allocWithZone_1, zone); - return NSMutableURLRequest._(_ret, _lib, retain: false, release: true); + _objc_msgSend_47(_class_NSURLSession, _sel_allocWithZone_, zone); + return NSURLSession.castFromPointer(_ret, retain: false, release: true); } - static NSMutableURLRequest alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableURLRequest1, _lib._sel_alloc1); - return NSMutableURLRequest._(_ret, _lib, retain: false, release: true); + static NSURLSession alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSession, _sel_alloc); + return NSURLSession.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSMutableURLRequest1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSession, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableURLRequest1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSession, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMutableURLRequest1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSession, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSMutableURLRequest1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSURLSession, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSMutableURLRequest1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSession, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSMutableURLRequest1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSession, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSMutableURLRequest1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSession, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSMutableURLRequest1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSession, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableURLRequest1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSURLSession, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -class NSXMLParser extends NSObject { - NSXMLParser._(ffi.Pointer id, SwiftLibrary lib, +late final _class_NSURLSession = objc.getClass("NSURLSession"); +late final _sel_sharedSession = objc.registerName("sharedSession"); +final _objc_msgSend_592 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + +class NSURLSessionConfiguration extends objc.NSObject { + NSURLSessionConfiguration._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSURLSessionConfiguration] that points to the same underlying object as [other]. + NSURLSessionConfiguration.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSURLSessionConfiguration] that wraps the given raw object pointer. + NSURLSessionConfiguration.castFromPointer(ffi.Pointer other, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : this._(other, retain: retain, release: release); - /// Returns a [NSXMLParser] that points to the same underlying object as [other]. - static NSXMLParser castFrom(T other) { - return NSXMLParser._(other._id, other._lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSURLSessionConfiguration]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionConfiguration); } - /// Returns a [NSXMLParser] that wraps the given raw object pointer. - static NSXMLParser castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSXMLParser._(other, lib, retain: retain, release: release); + static NSURLSessionConfiguration getDefaultSessionConfiguration() { + final _ret = _objc_msgSend_593( + _class_NSURLSessionConfiguration, _sel_defaultSessionConfiguration); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSXMLParser]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLParser1); + static NSURLSessionConfiguration getEphemeralSessionConfiguration() { + final _ret = _objc_msgSend_593( + _class_NSURLSessionConfiguration, _sel_ephemeralSessionConfiguration); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: true, release: true); } - NSXMLParser? initWithContentsOfURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_277(_id, _lib._sel_initWithContentsOfURL_1, url._id); + static NSURLSessionConfiguration + backgroundSessionConfigurationWithIdentifier_(objc.NSString identifier) { + final _ret = _objc_msgSend_594(_class_NSURLSessionConfiguration, + _sel_backgroundSessionConfigurationWithIdentifier_, identifier.pointer); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: true, release: true); + } + + objc.NSString? get identifier { + final _ret = _objc_msgSend_13(this.pointer, _sel_identifier); return _ret.address == 0 ? null - : NSXMLParser._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSXMLParser initWithData_(NSData data) { - final _ret = - _lib._objc_msgSend_279(_id, _lib._sel_initWithData_1, data._id); - return NSXMLParser._(_ret, _lib, retain: true, release: true); + int get requestCachePolicy { + return _objc_msgSend_322(this.pointer, _sel_requestCachePolicy); } - NSXMLParser initWithStream_(NSInputStream stream) { - final _ret = - _lib._objc_msgSend_1028(_id, _lib._sel_initWithStream_1, stream._id); - return NSXMLParser._(_ret, _lib, retain: true, release: true); + set requestCachePolicy(int value) { + return _objc_msgSend_567(this.pointer, _sel_setRequestCachePolicy_, value); } - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + double get timeoutIntervalForRequest { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_timeoutIntervalForRequest) + : _objc_msgSend_115(this.pointer, _sel_timeoutIntervalForRequest); } - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + set timeoutIntervalForRequest(double value) { + return _objc_msgSend_212( + this.pointer, _sel_setTimeoutIntervalForRequest_, value); } - bool get shouldProcessNamespaces { - return _lib._objc_msgSend_12(_id, _lib._sel_shouldProcessNamespaces1); + double get timeoutIntervalForResource { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_timeoutIntervalForResource) + : _objc_msgSend_115(this.pointer, _sel_timeoutIntervalForResource); } - set shouldProcessNamespaces(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setShouldProcessNamespaces_1, value); + set timeoutIntervalForResource(double value) { + return _objc_msgSend_212( + this.pointer, _sel_setTimeoutIntervalForResource_, value); } - bool get shouldReportNamespacePrefixes { - return _lib._objc_msgSend_12(_id, _lib._sel_shouldReportNamespacePrefixes1); + int get networkServiceType { + return _objc_msgSend_323(this.pointer, _sel_networkServiceType); } - set shouldReportNamespacePrefixes(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setShouldReportNamespacePrefixes_1, value); + set networkServiceType(int value) { + return _objc_msgSend_568(this.pointer, _sel_setNetworkServiceType_, value); } - int get externalEntityResolvingPolicy { - return _lib._objc_msgSend_1029( - _id, _lib._sel_externalEntityResolvingPolicy1); + bool get allowsCellularAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsCellularAccess); } - set externalEntityResolvingPolicy(int value) { - return _lib._objc_msgSend_1030( - _id, _lib._sel_setExternalEntityResolvingPolicy_1, value); + set allowsCellularAccess(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setAllowsCellularAccess_, value); } - NSSet? get allowedExternalEntityURLs { - final _ret = - _lib._objc_msgSend_319(_id, _lib._sel_allowedExternalEntityURLs1); - return _ret.address == 0 - ? null - : NSSet._(_ret, _lib, retain: true, release: true); + bool get allowsExpensiveNetworkAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsExpensiveNetworkAccess); } - set allowedExternalEntityURLs(NSSet? value) { - return _lib._objc_msgSend_1031(_id, - _lib._sel_setAllowedExternalEntityURLs_1, value?._id ?? ffi.nullptr); + set allowsExpensiveNetworkAccess(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAllowsExpensiveNetworkAccess_, value); } - bool parse() { - return _lib._objc_msgSend_12(_id, _lib._sel_parse1); + bool get allowsConstrainedNetworkAccess { + return _objc_msgSend_7(this.pointer, _sel_allowsConstrainedNetworkAccess); } - void abortParsing() { - _lib._objc_msgSend_1(_id, _lib._sel_abortParsing1); + set allowsConstrainedNetworkAccess(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setAllowsConstrainedNetworkAccess_, value); + } + + bool get requiresDNSSECValidation { + return _objc_msgSend_7(this.pointer, _sel_requiresDNSSECValidation); + } + + set requiresDNSSECValidation(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setRequiresDNSSECValidation_, value); } - NSError? get parserError { - final _ret = _lib._objc_msgSend_322(_id, _lib._sel_parserError1); - return _ret.address == 0 - ? null - : NSError._(_ret, _lib, retain: true, release: true); + bool get waitsForConnectivity { + return _objc_msgSend_7(this.pointer, _sel_waitsForConnectivity); } - bool get shouldResolveExternalEntities { - return _lib._objc_msgSend_12(_id, _lib._sel_shouldResolveExternalEntities1); + set waitsForConnectivity(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setWaitsForConnectivity_, value); } - set shouldResolveExternalEntities(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setShouldResolveExternalEntities_1, value); + bool get discretionary { + return _objc_msgSend_7(this.pointer, _sel_isDiscretionary); } - NSString? get publicID { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_publicID1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + set discretionary(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setDiscretionary_, value); } - NSString? get systemID { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_systemID1); + objc.NSString? get sharedContainerIdentifier { + final _ret = _objc_msgSend_13(this.pointer, _sel_sharedContainerIdentifier); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - int get lineNumber { - return _lib._objc_msgSend_83(_id, _lib._sel_lineNumber1); + set sharedContainerIdentifier(objc.NSString? value) { + return _objc_msgSend_46(this.pointer, _sel_setSharedContainerIdentifier_, + value?.pointer ?? ffi.nullptr); } - int get columnNumber { - return _lib._objc_msgSend_83(_id, _lib._sel_columnNumber1); + bool get sessionSendsLaunchEvents { + return _objc_msgSend_7(this.pointer, _sel_sessionSendsLaunchEvents); } - @override - NSXMLParser init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLParser._(_ret, _lib, retain: true, release: true); + set sessionSendsLaunchEvents(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setSessionSendsLaunchEvents_, value); } - static NSXMLParser new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLParser1, _lib._sel_new1); - return NSXMLParser._(_ret, _lib, retain: false, release: true); + objc.NSDictionary? get connectionProxyDictionary { + final _ret = _objc_msgSend_65(this.pointer, _sel_connectionProxyDictionary); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSXMLParser allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLParser1, _lib._sel_allocWithZone_1, zone); - return NSXMLParser._(_ret, _lib, retain: false, release: true); + set connectionProxyDictionary(objc.NSDictionary? value) { + return _objc_msgSend_173(this.pointer, _sel_setConnectionProxyDictionary_, + value?.pointer ?? ffi.nullptr); } - static NSXMLParser alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLParser1, _lib._sel_alloc1); - return NSXMLParser._(_ret, _lib, retain: false, release: true); + int get TLSMinimumSupportedProtocol { + return _objc_msgSend_595(this.pointer, _sel_TLSMinimumSupportedProtocol); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSXMLParser1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set TLSMinimumSupportedProtocol(int value) { + return _objc_msgSend_596( + this.pointer, _sel_setTLSMinimumSupportedProtocol_, value); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLParser1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + int get TLSMaximumSupportedProtocol { + return _objc_msgSend_595(this.pointer, _sel_TLSMaximumSupportedProtocol); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLParser1, _lib._sel_accessInstanceVariablesDirectly1); + set TLSMaximumSupportedProtocol(int value) { + return _objc_msgSend_596( + this.pointer, _sel_setTLSMaximumSupportedProtocol_, value); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLParser1, _lib._sel_useStoredAccessor1); + int get TLSMinimumSupportedProtocolVersion { + return _objc_msgSend_597( + this.pointer, _sel_TLSMinimumSupportedProtocolVersion); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSXMLParser1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + set TLSMinimumSupportedProtocolVersion(int value) { + return _objc_msgSend_598( + this.pointer, _sel_setTLSMinimumSupportedProtocolVersion_, value); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSXMLParser1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + int get TLSMaximumSupportedProtocolVersion { + return _objc_msgSend_597( + this.pointer, _sel_TLSMaximumSupportedProtocolVersion); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSXMLParser1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set TLSMaximumSupportedProtocolVersion(int value) { + return _objc_msgSend_598( + this.pointer, _sel_setTLSMaximumSupportedProtocolVersion_, value); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSXMLParser1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + bool get HTTPShouldUsePipelining { + return _objc_msgSend_7(this.pointer, _sel_HTTPShouldUsePipelining); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLParser1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + set HTTPShouldUsePipelining(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setHTTPShouldUsePipelining_, value); } -} - -abstract class NSXMLParserExternalEntityResolvingPolicy { - static const int NSXMLParserResolveExternalEntitiesNever = 0; - static const int NSXMLParserResolveExternalEntitiesNoNetwork = 1; - static const int NSXMLParserResolveExternalEntitiesSameOriginOnly = 2; - static const int NSXMLParserResolveExternalEntitiesAlways = 3; -} -class NSFileWrapper extends NSObject { - NSFileWrapper._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + bool get HTTPShouldSetCookies { + return _objc_msgSend_7(this.pointer, _sel_HTTPShouldSetCookies); + } - /// Returns a [NSFileWrapper] that points to the same underlying object as [other]. - static NSFileWrapper castFrom(T other) { - return NSFileWrapper._(other._id, other._lib, retain: true, release: true); + set HTTPShouldSetCookies(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setHTTPShouldSetCookies_, value); } - /// Returns a [NSFileWrapper] that wraps the given raw object pointer. - static NSFileWrapper castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSFileWrapper._(other, lib, retain: retain, release: release); + int get HTTPCookieAcceptPolicy { + return _objc_msgSend_318(this.pointer, _sel_HTTPCookieAcceptPolicy); } - /// Returns whether [obj] is an instance of [NSFileWrapper]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSFileWrapper1); + set HTTPCookieAcceptPolicy(int value) { + return _objc_msgSend_319( + this.pointer, _sel_setHTTPCookieAcceptPolicy_, value); } - NSFileWrapper? initWithURL_options_error_( - NSURL url, int options, ffi.Pointer> outError) { - final _ret = _lib._objc_msgSend_1032( - _id, _lib._sel_initWithURL_options_error_1, url._id, options, outError); + objc.NSDictionary? get HTTPAdditionalHeaders { + final _ret = _objc_msgSend_65(this.pointer, _sel_HTTPAdditionalHeaders); return _ret.address == 0 ? null - : NSFileWrapper._(_ret, _lib, retain: true, release: true); + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - NSFileWrapper initDirectoryWithFileWrappers_( - NSDictionary childrenByPreferredName) { - final _ret = _lib._objc_msgSend_159(_id, - _lib._sel_initDirectoryWithFileWrappers_1, childrenByPreferredName._id); - return NSFileWrapper._(_ret, _lib, retain: true, release: true); + set HTTPAdditionalHeaders(objc.NSDictionary? value) { + return _objc_msgSend_173(this.pointer, _sel_setHTTPAdditionalHeaders_, + value?.pointer ?? ffi.nullptr); } - NSFileWrapper initRegularFileWithContents_(NSData contents) { - final _ret = _lib._objc_msgSend_279( - _id, _lib._sel_initRegularFileWithContents_1, contents._id); - return NSFileWrapper._(_ret, _lib, retain: true, release: true); + int get HTTPMaximumConnectionsPerHost { + return _objc_msgSend_114(this.pointer, _sel_HTTPMaximumConnectionsPerHost); } - NSFileWrapper initSymbolicLinkWithDestinationURL_(NSURL url) { - final _ret = _lib._objc_msgSend_262( - _id, _lib._sel_initSymbolicLinkWithDestinationURL_1, url._id); - return NSFileWrapper._(_ret, _lib, retain: true, release: true); + set HTTPMaximumConnectionsPerHost(int value) { + return _objc_msgSend_134( + this.pointer, _sel_setHTTPMaximumConnectionsPerHost_, value); } - NSFileWrapper? initWithSerializedRepresentation_( - NSData serializeRepresentation) { - final _ret = _lib._objc_msgSend_874( - _id, - _lib._sel_initWithSerializedRepresentation_1, - serializeRepresentation._id); + NSHTTPCookieStorage? get HTTPCookieStorage { + final _ret = _objc_msgSend_599(this.pointer, _sel_HTTPCookieStorage); return _ret.address == 0 ? null - : NSFileWrapper._(_ret, _lib, retain: true, release: true); + : NSHTTPCookieStorage.castFromPointer(_ret, + retain: true, release: true); } - NSFileWrapper? initWithCoder_(NSCoder inCoder) { - final _ret = - _lib._objc_msgSend_47(_id, _lib._sel_initWithCoder_1, inCoder._id); + set HTTPCookieStorage(NSHTTPCookieStorage? value) { + return _objc_msgSend_600(this.pointer, _sel_setHTTPCookieStorage_, + value?.pointer ?? ffi.nullptr); + } + + NSURLCredentialStorage? get URLCredentialStorage { + final _ret = _objc_msgSend_601(this.pointer, _sel_URLCredentialStorage); return _ret.address == 0 ? null - : NSFileWrapper._(_ret, _lib, retain: true, release: true); + : NSURLCredentialStorage.castFromPointer(_ret, + retain: true, release: true); } - bool get directory { - return _lib._objc_msgSend_12(_id, _lib._sel_isDirectory1); + set URLCredentialStorage(NSURLCredentialStorage? value) { + return _objc_msgSend_602(this.pointer, _sel_setURLCredentialStorage_, + value?.pointer ?? ffi.nullptr); } - bool get regularFile { - return _lib._objc_msgSend_12(_id, _lib._sel_isRegularFile1); + NSURLCache? get URLCache { + final _ret = _objc_msgSend_603(this.pointer, _sel_URLCache); + return _ret.address == 0 + ? null + : NSURLCache.castFromPointer(_ret, retain: true, release: true); } - bool get symbolicLink { - return _lib._objc_msgSend_12(_id, _lib._sel_isSymbolicLink1); + set URLCache(NSURLCache? value) { + return _objc_msgSend_604( + this.pointer, _sel_setURLCache_, value?.pointer ?? ffi.nullptr); } - NSString? get preferredFilename { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_preferredFilename1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + bool get shouldUseExtendedBackgroundIdleMode { + return _objc_msgSend_7( + this.pointer, _sel_shouldUseExtendedBackgroundIdleMode); } - set preferredFilename(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setPreferredFilename_1, value?._id ?? ffi.nullptr); + set shouldUseExtendedBackgroundIdleMode(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setShouldUseExtendedBackgroundIdleMode_, value); } - NSString? get filename { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_filename1); + objc.NSArray? get protocolClasses { + final _ret = _objc_msgSend_69(this.pointer, _sel_protocolClasses); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set filename(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setFilename_1, value?._id ?? ffi.nullptr); + set protocolClasses(objc.NSArray? value) { + return _objc_msgSend_605( + this.pointer, _sel_setProtocolClasses_, value?.pointer ?? ffi.nullptr); } - NSDictionary get fileAttributes { - final _ret = _lib._objc_msgSend_181(_id, _lib._sel_fileAttributes1); - return NSDictionary._(_ret, _lib, retain: true, release: true); + int get multipathServiceType { + return _objc_msgSend_606(this.pointer, _sel_multipathServiceType); } - set fileAttributes(NSDictionary value) { - return _lib._objc_msgSend_182( - _id, _lib._sel_setFileAttributes_1, value._id); + set multipathServiceType(int value) { + return _objc_msgSend_607( + this.pointer, _sel_setMultipathServiceType_, value); } - bool matchesContentsOfURL_(NSURL url) { - return _lib._objc_msgSend_265( - _id, _lib._sel_matchesContentsOfURL_1, url._id); + @override + NSURLSessionConfiguration init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: true, release: true); } - bool readFromURL_options_error_( - NSURL url, int options, ffi.Pointer> outError) { - return _lib._objc_msgSend_1033( - _id, _lib._sel_readFromURL_options_error_1, url._id, options, outError); + static NSURLSessionConfiguration new1() { + final _ret = _objc_msgSend_40(_class_NSURLSessionConfiguration, _sel_new); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: false, release: true); } - bool writeToURL_options_originalContentsURL_error_( - NSURL url, - int options, - NSURL? originalContentsURL, - ffi.Pointer> outError) { - return _lib._objc_msgSend_1034( - _id, - _lib._sel_writeToURL_options_originalContentsURL_error_1, - url._id, - options, - originalContentsURL?._id ?? ffi.nullptr, - outError); + static NSURLSessionConfiguration backgroundSessionConfiguration_( + objc.NSString identifier) { + final _ret = _objc_msgSend_594(_class_NSURLSessionConfiguration, + _sel_backgroundSessionConfiguration_, identifier.pointer); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: true, release: true); } - NSData? get serializedRepresentation { - final _ret = - _lib._objc_msgSend_286(_id, _lib._sel_serializedRepresentation1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + static NSURLSessionConfiguration allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLSessionConfiguration, _sel_allocWithZone_, zone); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: false, release: true); } - NSString addFileWrapper_(NSFileWrapper child) { - final _ret = - _lib._objc_msgSend_1035(_id, _lib._sel_addFileWrapper_1, child._id); - return NSString._(_ret, _lib, retain: true, release: true); + static NSURLSessionConfiguration alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSessionConfiguration, _sel_alloc); + return NSURLSessionConfiguration.castFromPointer(_ret, + retain: false, release: true); } - NSString addRegularFileWithContents_preferredFilename_( - NSData data, NSString fileName) { - final _ret = _lib._objc_msgSend_1036( - _id, - _lib._sel_addRegularFileWithContents_preferredFilename_1, - data._id, - fileName._id); - return NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionConfiguration, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - void removeFileWrapper_(NSFileWrapper child) { - _lib._objc_msgSend_1037(_id, _lib._sel_removeFileWrapper_1, child._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionConfiguration, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSDictionary? get fileWrappers { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_fileWrappers1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSessionConfiguration, _sel_accessInstanceVariablesDirectly); } - NSString? keyForFileWrapper_(NSFileWrapper child) { - final _ret = - _lib._objc_msgSend_1038(_id, _lib._sel_keyForFileWrapper_1, child._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSURLSessionConfiguration, _sel_useStoredAccessor); } - NSData? get regularFileContents { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_regularFileContents1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionConfiguration, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSURL? get symbolicLinkDestinationURL { - final _ret = - _lib._objc_msgSend_45(_id, _lib._sel_symbolicLinkDestinationURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionConfiguration, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSObject? initWithPath_(NSString path) { - final _ret = _lib._objc_msgSend_38(_id, _lib._sel_initWithPath_1, path._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionConfiguration, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSessionConfiguration, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLSessionConfiguration, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLSessionConfiguration = + objc.getClass("NSURLSessionConfiguration"); +late final _sel_defaultSessionConfiguration = + objc.registerName("defaultSessionConfiguration"); +final _objc_msgSend_593 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_ephemeralSessionConfiguration = + objc.registerName("ephemeralSessionConfiguration"); +late final _sel_backgroundSessionConfigurationWithIdentifier_ = + objc.registerName("backgroundSessionConfigurationWithIdentifier:"); +final _objc_msgSend_594 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_identifier = objc.registerName("identifier"); +late final _sel_requestCachePolicy = objc.registerName("requestCachePolicy"); +late final _sel_setRequestCachePolicy_ = + objc.registerName("setRequestCachePolicy:"); +late final _sel_timeoutIntervalForRequest = + objc.registerName("timeoutIntervalForRequest"); +late final _sel_setTimeoutIntervalForRequest_ = + objc.registerName("setTimeoutIntervalForRequest:"); +late final _sel_timeoutIntervalForResource = + objc.registerName("timeoutIntervalForResource"); +late final _sel_setTimeoutIntervalForResource_ = + objc.registerName("setTimeoutIntervalForResource:"); +late final _sel_waitsForConnectivity = + objc.registerName("waitsForConnectivity"); +late final _sel_setWaitsForConnectivity_ = + objc.registerName("setWaitsForConnectivity:"); +late final _sel_isDiscretionary = objc.registerName("isDiscretionary"); +late final _sel_setDiscretionary_ = objc.registerName("setDiscretionary:"); +late final _sel_sharedContainerIdentifier = + objc.registerName("sharedContainerIdentifier"); +late final _sel_setSharedContainerIdentifier_ = + objc.registerName("setSharedContainerIdentifier:"); +late final _sel_sessionSendsLaunchEvents = + objc.registerName("sessionSendsLaunchEvents"); +late final _sel_setSessionSendsLaunchEvents_ = + objc.registerName("setSessionSendsLaunchEvents:"); +late final _sel_connectionProxyDictionary = + objc.registerName("connectionProxyDictionary"); +late final _sel_setConnectionProxyDictionary_ = + objc.registerName("setConnectionProxyDictionary:"); + +abstract class SSLProtocol { + static const int kSSLProtocolUnknown = 0; + static const int kTLSProtocol1 = 4; + static const int kTLSProtocol11 = 7; + static const int kTLSProtocol12 = 8; + static const int kDTLSProtocol1 = 9; + static const int kTLSProtocol13 = 10; + static const int kDTLSProtocol12 = 11; + static const int kTLSProtocolMaxSupported = 999; + static const int kSSLProtocol2 = 1; + static const int kSSLProtocol3 = 2; + static const int kSSLProtocol3Only = 3; + static const int kTLSProtocol1Only = 5; + static const int kSSLProtocolAll = 6; +} + +late final _sel_TLSMinimumSupportedProtocol = + objc.registerName("TLSMinimumSupportedProtocol"); +final _objc_msgSend_595 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setTLSMinimumSupportedProtocol_ = + objc.registerName("setTLSMinimumSupportedProtocol:"); +final _objc_msgSend_596 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_TLSMaximumSupportedProtocol = + objc.registerName("TLSMaximumSupportedProtocol"); +late final _sel_setTLSMaximumSupportedProtocol_ = + objc.registerName("setTLSMaximumSupportedProtocol:"); + +abstract class tls_protocol_version_t { + static const int tls_protocol_version_TLSv10 = 769; + static const int tls_protocol_version_TLSv11 = 770; + static const int tls_protocol_version_TLSv12 = 771; + static const int tls_protocol_version_TLSv13 = 772; + static const int tls_protocol_version_DTLSv10 = -257; + static const int tls_protocol_version_DTLSv12 = -259; +} + +late final _sel_TLSMinimumSupportedProtocolVersion = + objc.registerName("TLSMinimumSupportedProtocolVersion"); +final _objc_msgSend_597 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setTLSMinimumSupportedProtocolVersion_ = + objc.registerName("setTLSMinimumSupportedProtocolVersion:"); +final _objc_msgSend_598 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_TLSMaximumSupportedProtocolVersion = + objc.registerName("TLSMaximumSupportedProtocolVersion"); +late final _sel_setTLSMaximumSupportedProtocolVersion_ = + objc.registerName("setTLSMaximumSupportedProtocolVersion:"); +late final _sel_HTTPShouldSetCookies = + objc.registerName("HTTPShouldSetCookies"); +late final _sel_setHTTPShouldSetCookies_ = + objc.registerName("setHTTPShouldSetCookies:"); +late final _sel_HTTPCookieAcceptPolicy = + objc.registerName("HTTPCookieAcceptPolicy"); +late final _sel_setHTTPCookieAcceptPolicy_ = + objc.registerName("setHTTPCookieAcceptPolicy:"); +late final _sel_HTTPAdditionalHeaders = + objc.registerName("HTTPAdditionalHeaders"); +late final _sel_setHTTPAdditionalHeaders_ = + objc.registerName("setHTTPAdditionalHeaders:"); +late final _sel_HTTPMaximumConnectionsPerHost = + objc.registerName("HTTPMaximumConnectionsPerHost"); +late final _sel_setHTTPMaximumConnectionsPerHost_ = + objc.registerName("setHTTPMaximumConnectionsPerHost:"); +late final _sel_HTTPCookieStorage = objc.registerName("HTTPCookieStorage"); +final _objc_msgSend_599 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setHTTPCookieStorage_ = + objc.registerName("setHTTPCookieStorage:"); +final _objc_msgSend_600 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_URLCredentialStorage = + objc.registerName("URLCredentialStorage"); +final _objc_msgSend_601 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setURLCredentialStorage_ = + objc.registerName("setURLCredentialStorage:"); +final _objc_msgSend_602 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_URLCache = objc.registerName("URLCache"); +final _objc_msgSend_603 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setURLCache_ = objc.registerName("setURLCache:"); +final _objc_msgSend_604 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_shouldUseExtendedBackgroundIdleMode = + objc.registerName("shouldUseExtendedBackgroundIdleMode"); +late final _sel_setShouldUseExtendedBackgroundIdleMode_ = + objc.registerName("setShouldUseExtendedBackgroundIdleMode:"); +late final _sel_protocolClasses = objc.registerName("protocolClasses"); +late final _sel_setProtocolClasses_ = objc.registerName("setProtocolClasses:"); +final _objc_msgSend_605 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSURLSessionMultipathServiceType { + static const int NSURLSessionMultipathServiceTypeNone = 0; + static const int NSURLSessionMultipathServiceTypeHandover = 1; + static const int NSURLSessionMultipathServiceTypeInteractive = 2; + static const int NSURLSessionMultipathServiceTypeAggregate = 3; +} + +late final _sel_multipathServiceType = + objc.registerName("multipathServiceType"); +final _objc_msgSend_606 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setMultipathServiceType_ = + objc.registerName("setMultipathServiceType:"); +final _objc_msgSend_607 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_backgroundSessionConfiguration_ = + objc.registerName("backgroundSessionConfiguration:"); +late final _sel_sessionWithConfiguration_ = + objc.registerName("sessionWithConfiguration:"); +final _objc_msgSend_608 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_sessionWithConfiguration_delegate_delegateQueue_ = + objc.registerName("sessionWithConfiguration:delegate:delegateQueue:"); +final _objc_msgSend_609 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_delegateQueue = objc.registerName("delegateQueue"); +late final _sel_configuration = objc.registerName("configuration"); +late final _sel_sessionDescription = objc.registerName("sessionDescription"); +late final _sel_setSessionDescription_ = + objc.registerName("setSessionDescription:"); +late final _sel_finishTasksAndInvalidate = + objc.registerName("finishTasksAndInvalidate"); +late final _sel_invalidateAndCancel = objc.registerName("invalidateAndCancel"); +late final _sel_resetWithCompletionHandler_ = + objc.registerName("resetWithCompletionHandler:"); +late final _sel_flushWithCompletionHandler_ = + objc.registerName("flushWithCompletionHandler:"); +void _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry = , ffi.Pointer, + ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure( + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer) + fn) { + final id = ++_ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); + +class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSArray_NSArray_NSArray castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSArray_NSArray_NSArray._(pointer, + retain: retain, release: release); } - NSObject initSymbolicLinkWithDestination_(NSString path) { - final _ret = _lib._objc_msgSend_31( - _id, _lib._sel_initSymbolicLinkWithDestination_1, path._id); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.fromFunction( + void Function(objc.NSArray, objc.NSArray, objc.NSArray) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= + ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + objc.NSArray.castFromPointer(arg0, retain: true, release: true), + objc.NSArray.castFromPointer(arg1, retain: true, release: true), + objc.NSArray.castFromPointer(arg2, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.listener( + void Function(objc.NSArray, objc.NSArray, objc.NSArray) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= + ffi.NativeCallable, ffi.Pointer, ffi.Pointer, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + objc.NSArray.castFromPointer(arg0, retain: true, release: true), + objc.NSArray.castFromPointer(arg1, retain: true, release: true), + objc.NSArray.castFromPointer(arg2, retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(objc.NSArray arg0, objc.NSArray arg1, objc.NSArray arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0.pointer, arg1.pointer, arg2.pointer); +} + +late final _sel_getTasksWithCompletionHandler_ = + objc.registerName("getTasksWithCompletionHandler:"); +final _objc_msgSend_610 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSArray1_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSArray1_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSArray1_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSArray1_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSArray1_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSArray1_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSArray1_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSArray1_closureRegistry[block.ref.target.address]!( + arg0); + +class ObjCBlock_ffiVoid_NSArray1 extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSArray1._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSArray1 castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSArray1._(pointer, + retain: retain, release: release); } - bool needsToBeUpdatedFromPath_(NSString path) { - return _lib._objc_msgSend_64( - _id, _lib._sel_needsToBeUpdatedFromPath_1, path._id); - } + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSArray1.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSArray1_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSArray1.fromFunction(void Function(objc.NSArray) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSArray1_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSArray1_registerClosure( + (ffi.Pointer arg0) => fn( + objc.NSArray.castFromPointer(arg0, + retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSArray1.listener(void Function(objc.NSArray) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSArray1_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSArray1_registerClosure( + (ffi.Pointer arg0) => fn( + objc.NSArray.castFromPointer(arg0, + retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; + + void call(objc.NSArray arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(pointer, arg0.pointer); +} + +late final _sel_getAllTasksWithCompletionHandler_ = + objc.registerName("getAllTasksWithCompletionHandler:"); +final _objc_msgSend_611 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dataTaskWithRequest_ = + objc.registerName("dataTaskWithRequest:"); +final _objc_msgSend_612 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dataTaskWithURL_ = objc.registerName("dataTaskWithURL:"); +final _objc_msgSend_613 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - bool updateFromPath_(NSString path) { - return _lib._objc_msgSend_64(_id, _lib._sel_updateFromPath_1, path._id); - } +class NSURLSessionUploadTask extends NSURLSessionDataTask { + NSURLSessionUploadTask._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - bool writeToFile_atomically_updateFilenames_( - NSString path, bool atomicFlag, bool updateFilenamesFlag) { - return _lib._objc_msgSend_1039( - _id, - _lib._sel_writeToFile_atomically_updateFilenames_1, - path._id, - atomicFlag, - updateFilenamesFlag); - } + /// Constructs a [NSURLSessionUploadTask] that points to the same underlying object as [other]. + NSURLSessionUploadTask.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSString addFileWithPath_(NSString path) { - final _ret = - _lib._objc_msgSend_69(_id, _lib._sel_addFileWithPath_1, path._id); - return NSString._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSURLSessionUploadTask] that wraps the given raw object pointer. + NSURLSessionUploadTask.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSString addSymbolicLinkWithDestination_preferredFilename_( - NSString path, NSString filename) { - final _ret = _lib._objc_msgSend_364( - _id, - _lib._sel_addSymbolicLinkWithDestination_preferredFilename_1, - path._id, - filename._id); - return NSString._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSURLSessionUploadTask]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionUploadTask); } - NSString symbolicLinkDestination() { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_symbolicLinkDestination1); - return NSString._(_ret, _lib, retain: true, release: true); + @override + NSURLSessionUploadTask init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: true, release: true); } - @override - NSFileWrapper init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSFileWrapper._(_ret, _lib, retain: true, release: true); + static NSURLSessionUploadTask new1() { + final _ret = _objc_msgSend_40(_class_NSURLSessionUploadTask, _sel_new); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: false, release: true); } - static NSFileWrapper new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFileWrapper1, _lib._sel_new1); - return NSFileWrapper._(_ret, _lib, retain: false, release: true); + void cancelByProducingResumeData_( + ObjCBlock_ffiVoid_NSData completionHandler) { + _objc_msgSend_614(this.pointer, _sel_cancelByProducingResumeData_, + completionHandler.pointer); } - static NSFileWrapper allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSFileWrapper1, _lib._sel_allocWithZone_1, zone); - return NSFileWrapper._(_ret, _lib, retain: false, release: true); + static NSURLSessionUploadTask allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLSessionUploadTask, _sel_allocWithZone_, zone); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: false, release: true); } - static NSFileWrapper alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFileWrapper1, _lib._sel_alloc1); - return NSFileWrapper._(_ret, _lib, retain: false, release: true); + static NSURLSessionUploadTask alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSessionUploadTask, _sel_alloc); + return NSURLSessionUploadTask.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSFileWrapper1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionUploadTask, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSFileWrapper1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionUploadTask, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFileWrapper1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSessionUploadTask, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFileWrapper1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSURLSessionUploadTask, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSFileWrapper1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionUploadTask, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSFileWrapper1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionUploadTask, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSFileWrapper1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionUploadTask, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSFileWrapper1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSessionUploadTask, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSFileWrapper1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLSessionUploadTask, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -abstract class NSFileWrapperReadingOptions { - static const int NSFileWrapperReadingImmediate = 1; - static const int NSFileWrapperReadingWithoutMapping = 2; +late final _class_NSURLSessionUploadTask = + objc.getClass("NSURLSessionUploadTask"); +void _ObjCBlock_ffiVoid_NSData_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSData_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSData_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSData_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSData_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSData_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); } -abstract class NSFileWrapperWritingOptions { - static const int NSFileWrapperWritingAtomic = 1; - static const int NSFileWrapperWritingWithNameUpdating = 2; -} +void _ObjCBlock_ffiVoid_NSData_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSData_closureRegistry[block.ref.target.address]!(arg0); -class NSURLSession extends NSObject { - NSURLSession._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); +class ObjCBlock_ffiVoid_NSData extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSData._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); - /// Returns a [NSURLSession] that points to the same underlying object as [other]. - static NSURLSession castFrom(T other) { - return NSURLSession._(other._id, other._lib, retain: true, release: true); + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSData castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSData._(pointer, + retain: retain, release: release); } - /// Returns a [NSURLSession] that wraps the given raw object pointer. - static NSURLSession castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSession._(other, lib, retain: retain, release: release); + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSData.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSData_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSData.fromFunction(void Function(objc.NSData?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSData_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSData_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSData.castFromPointer(arg0, + retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSData.listener(void Function(objc.NSData?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSData_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSData_registerClosure( + (ffi.Pointer arg0) => fn(arg0.address == 0 + ? null + : objc.NSData.castFromPointer(arg0, retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; + + void call(objc.NSData? arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function( + ffi.Pointer, ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr); +} + +late final _sel_cancelByProducingResumeData_ = + objc.registerName("cancelByProducingResumeData:"); +final _objc_msgSend_614 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_uploadTaskWithRequest_fromFile_ = + objc.registerName("uploadTaskWithRequest:fromFile:"); +final _objc_msgSend_615 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_uploadTaskWithRequest_fromData_ = + objc.registerName("uploadTaskWithRequest:fromData:"); +final _objc_msgSend_616 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_uploadTaskWithResumeData_ = + objc.registerName("uploadTaskWithResumeData:"); +final _objc_msgSend_617 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_uploadTaskWithStreamedRequest_ = + objc.registerName("uploadTaskWithStreamedRequest:"); +final _objc_msgSend_618 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSURLSessionDownloadTask extends NSURLSessionTask { + NSURLSessionDownloadTask._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSURLSessionDownloadTask] that points to the same underlying object as [other]. + NSURLSessionDownloadTask.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSURLSessionDownloadTask] that wraps the given raw object pointer. + NSURLSessionDownloadTask.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLSessionDownloadTask]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionDownloadTask); } - /// Returns whether [obj] is an instance of [NSURLSession]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLSession1); + void cancelByProducingResumeData_( + ObjCBlock_ffiVoid_NSData completionHandler) { + _objc_msgSend_614(this.pointer, _sel_cancelByProducingResumeData_, + completionHandler.pointer); } - static NSURLSession getSharedSession(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_1040( - _lib._class_NSURLSession1, _lib._sel_sharedSession1); - return NSURLSession._(_ret, _lib, retain: true, release: true); + @override + NSURLSessionDownloadTask init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: true, release: true); } - static NSURLSession sessionWithConfiguration_( - SwiftLibrary _lib, NSURLSessionConfiguration configuration) { - final _ret = _lib._objc_msgSend_1056(_lib._class_NSURLSession1, - _lib._sel_sessionWithConfiguration_1, configuration._id); - return NSURLSession._(_ret, _lib, retain: true, release: true); + static NSURLSessionDownloadTask new1() { + final _ret = _objc_msgSend_40(_class_NSURLSessionDownloadTask, _sel_new); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: false, release: true); } - static NSURLSession sessionWithConfiguration_delegate_delegateQueue_( - SwiftLibrary _lib, - NSURLSessionConfiguration configuration, - NSObject? delegate, - NSOperationQueue? queue) { - final _ret = _lib._objc_msgSend_1057( - _lib._class_NSURLSession1, - _lib._sel_sessionWithConfiguration_delegate_delegateQueue_1, - configuration._id, - delegate?._id ?? ffi.nullptr, - queue?._id ?? ffi.nullptr); - return NSURLSession._(_ret, _lib, retain: true, release: true); + static NSURLSessionDownloadTask allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLSessionDownloadTask, _sel_allocWithZone_, zone); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: false, release: true); } - NSOperationQueue get delegateQueue { - final _ret = _lib._objc_msgSend_917(_id, _lib._sel_delegateQueue1); - return NSOperationQueue._(_ret, _lib, retain: true, release: true); + static NSURLSessionDownloadTask alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSessionDownloadTask, _sel_alloc); + return NSURLSessionDownloadTask.castFromPointer(_ret, + retain: false, release: true); } - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionDownloadTask, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSURLSessionConfiguration get configuration { - final _ret = _lib._objc_msgSend_1041(_id, _lib._sel_configuration1); - return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionDownloadTask, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSString? get sessionDescription { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_sessionDescription1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSessionDownloadTask, _sel_accessInstanceVariablesDirectly); } - set sessionDescription(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setSessionDescription_1, value?._id ?? ffi.nullptr); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSURLSessionDownloadTask, _sel_useStoredAccessor); } - void finishTasksAndInvalidate() { - _lib._objc_msgSend_1(_id, _lib._sel_finishTasksAndInvalidate1); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionDownloadTask, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - void invalidateAndCancel() { - _lib._objc_msgSend_1(_id, _lib._sel_invalidateAndCancel1); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionDownloadTask, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - void resetWithCompletionHandler_(ObjCBlock_ffiVoid completionHandler) { - _lib._objc_msgSend_532( - _id, _lib._sel_resetWithCompletionHandler_1, completionHandler._id); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionDownloadTask, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSessionDownloadTask, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLSessionDownloadTask, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSURLSessionDownloadTask = + objc.getClass("NSURLSessionDownloadTask"); +late final _sel_downloadTaskWithRequest_ = + objc.registerName("downloadTaskWithRequest:"); +final _objc_msgSend_619 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_downloadTaskWithURL_ = + objc.registerName("downloadTaskWithURL:"); +final _objc_msgSend_620 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_downloadTaskWithResumeData_ = + objc.registerName("downloadTaskWithResumeData:"); +final _objc_msgSend_621 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSURLSessionStreamTask extends NSURLSessionTask { + NSURLSessionStreamTask._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSURLSessionStreamTask] that points to the same underlying object as [other]. + NSURLSessionStreamTask.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSURLSessionStreamTask] that wraps the given raw object pointer. + NSURLSessionStreamTask.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLSessionStreamTask]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionStreamTask); } - void flushWithCompletionHandler_(ObjCBlock_ffiVoid completionHandler) { - _lib._objc_msgSend_532( - _id, _lib._sel_flushWithCompletionHandler_1, completionHandler._id); + void readDataOfMinLength_maxLength_timeout_completionHandler_( + int minBytes, + int maxBytes, + double timeout, + ObjCBlock_ffiVoid_NSData_bool_NSError completionHandler) { + _objc_msgSend_622( + this.pointer, + _sel_readDataOfMinLength_maxLength_timeout_completionHandler_, + minBytes, + maxBytes, + timeout, + completionHandler.pointer); } - void getTasksWithCompletionHandler_( - ObjCBlock_ffiVoid_NSArray_NSArray_NSArray completionHandler) { - _lib._objc_msgSend_1058( - _id, _lib._sel_getTasksWithCompletionHandler_1, completionHandler._id); + void writeData_timeout_completionHandler_(objc.NSData data, double timeout, + ObjCBlock_ffiVoid_NSError completionHandler) { + _objc_msgSend_623(this.pointer, _sel_writeData_timeout_completionHandler_, + data.pointer, timeout, completionHandler.pointer); } - void getAllTasksWithCompletionHandler_( - ObjCBlock_ffiVoid_NSArray1 completionHandler) { - _lib._objc_msgSend_1059(_id, _lib._sel_getAllTasksWithCompletionHandler_1, - completionHandler._id); + void captureStreams() { + _objc_msgSend_82(this.pointer, _sel_captureStreams); } - NSURLSessionDataTask dataTaskWithRequest_(NSURLRequest request) { - final _ret = _lib._objc_msgSend_1060( - _id, _lib._sel_dataTaskWithRequest_1, request._id); - return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + void closeWrite() { + _objc_msgSend_82(this.pointer, _sel_closeWrite); } - NSURLSessionDataTask dataTaskWithURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_1061(_id, _lib._sel_dataTaskWithURL_1, url._id); - return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + void closeRead() { + _objc_msgSend_82(this.pointer, _sel_closeRead); } - NSURLSessionUploadTask uploadTaskWithRequest_fromFile_( - NSURLRequest request, NSURL fileURL) { - final _ret = _lib._objc_msgSend_1063(_id, - _lib._sel_uploadTaskWithRequest_fromFile_1, request._id, fileURL._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + void startSecureConnection() { + _objc_msgSend_82(this.pointer, _sel_startSecureConnection); } - NSURLSessionUploadTask uploadTaskWithRequest_fromData_( - NSURLRequest request, NSData bodyData) { - final _ret = _lib._objc_msgSend_1064(_id, - _lib._sel_uploadTaskWithRequest_fromData_1, request._id, bodyData._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + void stopSecureConnection() { + _objc_msgSend_82(this.pointer, _sel_stopSecureConnection); } - NSURLSessionUploadTask uploadTaskWithResumeData_(NSData resumeData) { - final _ret = _lib._objc_msgSend_1065( - _id, _lib._sel_uploadTaskWithResumeData_1, resumeData._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + @override + NSURLSessionStreamTask init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionStreamTask.castFromPointer(_ret, + retain: true, release: true); } - NSURLSessionUploadTask uploadTaskWithStreamedRequest_(NSURLRequest request) { - final _ret = _lib._objc_msgSend_1066( - _id, _lib._sel_uploadTaskWithStreamedRequest_1, request._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + static NSURLSessionStreamTask new1() { + final _ret = _objc_msgSend_40(_class_NSURLSessionStreamTask, _sel_new); + return NSURLSessionStreamTask.castFromPointer(_ret, + retain: false, release: true); } - NSURLSessionDownloadTask downloadTaskWithRequest_(NSURLRequest request) { - final _ret = _lib._objc_msgSend_1067( - _id, _lib._sel_downloadTaskWithRequest_1, request._id); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + static NSURLSessionStreamTask allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLSessionStreamTask, _sel_allocWithZone_, zone); + return NSURLSessionStreamTask.castFromPointer(_ret, + retain: false, release: true); } - NSURLSessionDownloadTask downloadTaskWithURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_1068(_id, _lib._sel_downloadTaskWithURL_1, url._id); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + static NSURLSessionStreamTask alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSessionStreamTask, _sel_alloc); + return NSURLSessionStreamTask.castFromPointer(_ret, + retain: false, release: true); } - NSURLSessionDownloadTask downloadTaskWithResumeData_(NSData resumeData) { - final _ret = _lib._objc_msgSend_1069( - _id, _lib._sel_downloadTaskWithResumeData_1, resumeData._id); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionStreamTask, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSURLSessionStreamTask streamTaskWithHostName_port_( - NSString hostname, int port) { - final _ret = _lib._objc_msgSend_1072( - _id, _lib._sel_streamTaskWithHostName_port_1, hostname._id, port); - return NSURLSessionStreamTask._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionStreamTask, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSURLSessionStreamTask streamTaskWithNetService_(NSNetService service) { - final _ret = _lib._objc_msgSend_1080( - _id, _lib._sel_streamTaskWithNetService_1, service._id); - return NSURLSessionStreamTask._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSessionStreamTask, _sel_accessInstanceVariablesDirectly); } - NSURLSessionWebSocketTask webSocketTaskWithURL_(NSURL url) { - final _ret = - _lib._objc_msgSend_1087(_id, _lib._sel_webSocketTaskWithURL_1, url._id); - return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSURLSessionStreamTask, _sel_useStoredAccessor); } - NSURLSessionWebSocketTask webSocketTaskWithURL_protocols_( - NSURL url, NSArray protocols) { - final _ret = _lib._objc_msgSend_1088(_id, - _lib._sel_webSocketTaskWithURL_protocols_1, url._id, protocols._id); - return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionStreamTask, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSURLSessionWebSocketTask webSocketTaskWithRequest_(NSURLRequest request) { - final _ret = _lib._objc_msgSend_1089( - _id, _lib._sel_webSocketTaskWithRequest_1, request._id); - return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionStreamTask, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - @override - NSURLSession init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSession._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionStreamTask, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSURLSession new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLSession1, _lib._sel_new1); - return NSURLSession._(_ret, _lib, retain: false, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSessionStreamTask, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSURLSessionDataTask dataTaskWithRequest_completionHandler_( - NSURLRequest request, - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1090( - _id, - _lib._sel_dataTaskWithRequest_completionHandler_1, - request._id, - completionHandler._id); - return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLSessionStreamTask, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - NSURLSessionDataTask dataTaskWithURL_completionHandler_(NSURL url, - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1091( - _id, - _lib._sel_dataTaskWithURL_completionHandler_1, - url._id, - completionHandler._id); - return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); +late final _class_NSURLSessionStreamTask = + objc.getClass("NSURLSessionStreamTask"); +void _ObjCBlock_ffiVoid_NSData_bool_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Bool arg1, ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer, bool, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry = , bool, ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure( + void Function( + ffi.Pointer, bool, ffi.Pointer) + fn) { + final id = ++_ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); + +class ObjCBlock_ffiVoid_NSData_bool_NSError extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSData_bool_NSError._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSData_bool_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSData_bool_NSError._(pointer, + retain: retain, release: release); } - NSURLSessionUploadTask uploadTaskWithRequest_fromFile_completionHandler_( - NSURLRequest request, - NSURL fileURL, - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1092( - _id, - _lib._sel_uploadTaskWithRequest_fromFile_completionHandler_1, - request._id, - fileURL._id, - completionHandler._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSData_bool_NSError.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Bool arg1, ffi.Pointer arg2)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSData_bool_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSData_bool_NSError.fromFunction( + void Function(objc.NSData, bool, objc.NSError?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure( + (ffi.Pointer arg0, bool arg1, + ffi.Pointer arg2) => + fn(objc.NSData.castFromPointer(arg0, retain: true, release: true), arg1, arg2.address == 0 ? null : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSData_bool_NSError.listener( + void Function(objc.NSData, bool, objc.NSError?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= + ffi.NativeCallable, ffi.Pointer, ffi.Bool, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure( + (ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) => fn( + objc.NSData.castFromPointer(arg0, + retain: true, release: true), + arg1, + arg2.address == 0 + ? null + : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(objc.NSData arg0, bool arg1, objc.NSError? arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer)>()( + pointer, arg0.pointer, arg1, arg2?.pointer ?? ffi.nullptr); +} + +late final _sel_readDataOfMinLength_maxLength_timeout_completionHandler_ = objc + .registerName("readDataOfMinLength:maxLength:timeout:completionHandler:"); +final _objc_msgSend_622 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Double, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + double, + ffi.Pointer)>(); +late final _sel_writeData_timeout_completionHandler_ = + objc.registerName("writeData:timeout:completionHandler:"); +final _objc_msgSend_623 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer)>(); +late final _sel_captureStreams = objc.registerName("captureStreams"); +late final _sel_closeWrite = objc.registerName("closeWrite"); +late final _sel_closeRead = objc.registerName("closeRead"); +late final _sel_startSecureConnection = + objc.registerName("startSecureConnection"); +late final _sel_stopSecureConnection = + objc.registerName("stopSecureConnection"); +late final _sel_streamTaskWithHostName_port_ = + objc.registerName("streamTaskWithHostName:port:"); +final _objc_msgSend_624 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); + +class NSNetService extends objc.NSObject { + NSNetService._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSNetService] that points to the same underlying object as [other]. + NSNetService.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSNetService] that wraps the given raw object pointer. + NSNetService.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSNetService]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSNetService); } - NSURLSessionUploadTask uploadTaskWithRequest_fromData_completionHandler_( - NSURLRequest request, - NSData? bodyData, - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1093( - _id, - _lib._sel_uploadTaskWithRequest_fromData_completionHandler_1, - request._id, - bodyData?._id ?? ffi.nullptr, - completionHandler._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + NSNetService initWithDomain_type_name_port_( + objc.NSString domain, objc.NSString type, objc.NSString name, int port) { + final _ret = _objc_msgSend_625( + this.pointer, + _sel_initWithDomain_type_name_port_, + domain.pointer, + type.pointer, + name.pointer, + port); + return NSNetService.castFromPointer(_ret, retain: true, release: true); } - NSURLSessionUploadTask uploadTaskWithResumeData_completionHandler_( - NSData resumeData, - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1094( - _id, - _lib._sel_uploadTaskWithResumeData_completionHandler_1, - resumeData._id, - completionHandler._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + NSNetService initWithDomain_type_name_( + objc.NSString domain, objc.NSString type, objc.NSString name) { + final _ret = _objc_msgSend_626(this.pointer, _sel_initWithDomain_type_name_, + domain.pointer, type.pointer, name.pointer); + return NSNetService.castFromPointer(_ret, retain: true, release: true); } - NSURLSessionDownloadTask downloadTaskWithRequest_completionHandler_( - NSURLRequest request, - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1095( - _id, - _lib._sel_downloadTaskWithRequest_completionHandler_1, - request._id, - completionHandler._id); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + void scheduleInRunLoop_forMode_(NSRunLoop aRunLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_scheduleInRunLoop_forMode_, + aRunLoop.pointer, mode.pointer); } - NSURLSessionDownloadTask downloadTaskWithURL_completionHandler_(NSURL url, - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1096( - _id, - _lib._sel_downloadTaskWithURL_completionHandler_1, - url._id, - completionHandler._id); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + void removeFromRunLoop_forMode_(NSRunLoop aRunLoop, objc.NSString mode) { + _objc_msgSend_216(this.pointer, _sel_removeFromRunLoop_forMode_, + aRunLoop.pointer, mode.pointer); } - NSURLSessionDownloadTask downloadTaskWithResumeData_completionHandler_( - NSData resumeData, - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1097( - _id, - _lib._sel_downloadTaskWithResumeData_completionHandler_1, - resumeData._id, - completionHandler._id); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + objc.NSObject? get delegate { + final _ret = _objc_msgSend_66(this.pointer, _sel_delegate); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSURLSession allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSession1, _lib._sel_allocWithZone_1, zone); - return NSURLSession._(_ret, _lib, retain: false, release: true); + set delegate(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDelegate_, value?.pointer ?? ffi.nullptr); } - static NSURLSession alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLSession1, _lib._sel_alloc1); - return NSURLSession._(_ret, _lib, retain: false, release: true); + bool get includesPeerToPeer { + return _objc_msgSend_7(this.pointer, _sel_includesPeerToPeer); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSession1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + set includesPeerToPeer(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setIncludesPeerToPeer_, value); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSession1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + objc.NSString get name { + final _ret = _objc_msgSend_12(this.pointer, _sel_name); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSession1, _lib._sel_accessInstanceVariablesDirectly1); + objc.NSString get type { + final _ret = _objc_msgSend_12(this.pointer, _sel_type); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSession1, _lib._sel_useStoredAccessor1); + objc.NSString get domain { + final _ret = _objc_msgSend_12(this.pointer, _sel_domain); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSession1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSString? get hostName { + final _ret = _objc_msgSend_13(this.pointer, _sel_hostName); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSession1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + objc.NSArray? get addresses { + final _ret = _objc_msgSend_69(this.pointer, _sel_addresses); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSession1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + int get port { + return _objc_msgSend_114(this.pointer, _sel_port); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURLSession1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + void publish() { + _objc_msgSend_82(this.pointer, _sel_publish); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSession1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + void publishWithOptions_(int options) { + _objc_msgSend_627(this.pointer, _sel_publishWithOptions_, options); } -} -class NSURLSessionConfiguration extends NSObject { - NSURLSessionConfiguration._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + void resolve() { + _objc_msgSend_82(this.pointer, _sel_resolve); + } - /// Returns a [NSURLSessionConfiguration] that points to the same underlying object as [other]. - static NSURLSessionConfiguration castFrom(T other) { - return NSURLSessionConfiguration._(other._id, other._lib, - retain: true, release: true); + void stop() { + _objc_msgSend_82(this.pointer, _sel_stop); } - /// Returns a [NSURLSessionConfiguration] that wraps the given raw object pointer. - static NSURLSessionConfiguration castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionConfiguration._(other, lib, - retain: retain, release: release); + static objc.NSDictionary dictionaryFromTXTRecordData_(objc.NSData txtData) { + final _ret = _objc_msgSend_628(_class_NSNetService, + _sel_dictionaryFromTXTRecordData_, txtData.pointer); + return objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSURLSessionConfiguration]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionConfiguration1); + static objc.NSData dataFromTXTRecordDictionary_( + objc.NSDictionary txtDictionary) { + final _ret = _objc_msgSend_629(_class_NSNetService, + _sel_dataFromTXTRecordDictionary_, txtDictionary.pointer); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionConfiguration getDefaultSessionConfiguration( - SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_1041(_lib._class_NSURLSessionConfiguration1, - _lib._sel_defaultSessionConfiguration1); - return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + void resolveWithTimeout_(double timeout) { + _objc_msgSend_630(this.pointer, _sel_resolveWithTimeout_, timeout); } - static NSURLSessionConfiguration getEphemeralSessionConfiguration( - SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_1041(_lib._class_NSURLSessionConfiguration1, - _lib._sel_ephemeralSessionConfiguration1); - return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + bool getInputStream_outputStream_( + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + return _objc_msgSend_631(this.pointer, _sel_getInputStream_outputStream_, + inputStream, outputStream); } - static NSURLSessionConfiguration - backgroundSessionConfigurationWithIdentifier_( - SwiftLibrary _lib, NSString identifier) { - final _ret = _lib._objc_msgSend_1042( - _lib._class_NSURLSessionConfiguration1, - _lib._sel_backgroundSessionConfigurationWithIdentifier_1, - identifier._id); - return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + bool setTXTRecordData_(objc.NSData? recordData) { + return _objc_msgSend_632(this.pointer, _sel_setTXTRecordData_, + recordData?.pointer ?? ffi.nullptr); } - NSString? get identifier { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_identifier1); + objc.NSData? TXTRecordData() { + final _ret = _objc_msgSend_325(this.pointer, _sel_TXTRecordData); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - int get requestCachePolicy { - return _lib._objc_msgSend_859(_id, _lib._sel_requestCachePolicy1); + void startMonitoring() { + _objc_msgSend_82(this.pointer, _sel_startMonitoring); } - set requestCachePolicy(int value) { - return _lib._objc_msgSend_1017( - _id, _lib._sel_setRequestCachePolicy_1, value); + void stopMonitoring() { + _objc_msgSend_82(this.pointer, _sel_stopMonitoring); } - double get timeoutIntervalForRequest { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret( - _id, _lib._sel_timeoutIntervalForRequest1) - : _lib._objc_msgSend_165(_id, _lib._sel_timeoutIntervalForRequest1); + @override + NSNetService init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSNetService.castFromPointer(_ret, retain: true, release: true); } - set timeoutIntervalForRequest(double value) { - return _lib._objc_msgSend_542( - _id, _lib._sel_setTimeoutIntervalForRequest_1, value); + static NSNetService new1() { + final _ret = _objc_msgSend_40(_class_NSNetService, _sel_new); + return NSNetService.castFromPointer(_ret, retain: false, release: true); } - double get timeoutIntervalForResource { - return _lib._objc_msgSend_useVariants1 - ? _lib._objc_msgSend_165_fpret( - _id, _lib._sel_timeoutIntervalForResource1) - : _lib._objc_msgSend_165(_id, _lib._sel_timeoutIntervalForResource1); + static NSNetService allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSNetService, _sel_allocWithZone_, zone); + return NSNetService.castFromPointer(_ret, retain: false, release: true); } - set timeoutIntervalForResource(double value) { - return _lib._objc_msgSend_542( - _id, _lib._sel_setTimeoutIntervalForResource_1, value); + static NSNetService alloc() { + final _ret = _objc_msgSend_40(_class_NSNetService, _sel_alloc); + return NSNetService.castFromPointer(_ret, retain: false, release: true); } - int get networkServiceType { - return _lib._objc_msgSend_860(_id, _lib._sel_networkServiceType1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSNetService, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - set networkServiceType(int value) { - return _lib._objc_msgSend_1018( - _id, _lib._sel_setNetworkServiceType_1, value); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSNetService, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - bool get allowsCellularAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsCellularAccess1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSNetService, _sel_accessInstanceVariablesDirectly); } - set allowsCellularAccess(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAllowsCellularAccess_1, value); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSNetService, _sel_useStoredAccessor); } - bool get allowsExpensiveNetworkAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsExpensiveNetworkAccess1); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSNetService, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - set allowsExpensiveNetworkAccess(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAllowsExpensiveNetworkAccess_1, value); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSNetService, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - bool get allowsConstrainedNetworkAccess { - return _lib._objc_msgSend_12( - _id, _lib._sel_allowsConstrainedNetworkAccess1); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSNetService, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSNetService, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSNetService, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSNetService = objc.getClass("NSNetService"); +late final _sel_initWithDomain_type_name_port_ = + objc.registerName("initWithDomain:type:name:port:"); +final _objc_msgSend_625 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_initWithDomain_type_name_ = + objc.registerName("initWithDomain:type:name:"); +final _objc_msgSend_626 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_includesPeerToPeer = objc.registerName("includesPeerToPeer"); +late final _sel_setIncludesPeerToPeer_ = + objc.registerName("setIncludesPeerToPeer:"); +late final _sel_type = objc.registerName("type"); +late final _sel_publish = objc.registerName("publish"); - set allowsConstrainedNetworkAccess(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setAllowsConstrainedNetworkAccess_1, value); - } +abstract class NSNetServiceOptions { + static const int NSNetServiceNoAutoRename = 1; + static const int NSNetServiceListenForConnections = 2; +} - bool get requiresDNSSECValidation { - return _lib._objc_msgSend_12(_id, _lib._sel_requiresDNSSECValidation1); - } +late final _sel_publishWithOptions_ = objc.registerName("publishWithOptions:"); +final _objc_msgSend_627 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_resolve = objc.registerName("resolve"); +late final _sel_stop = objc.registerName("stop"); +late final _sel_dictionaryFromTXTRecordData_ = + objc.registerName("dictionaryFromTXTRecordData:"); +final _objc_msgSend_628 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dataFromTXTRecordDictionary_ = + objc.registerName("dataFromTXTRecordDictionary:"); +final _objc_msgSend_629 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_resolveWithTimeout_ = objc.registerName("resolveWithTimeout:"); +final _objc_msgSend_630 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Double)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, double)>(); +late final _sel_getInputStream_outputStream_ = + objc.registerName("getInputStream:outputStream:"); +final _objc_msgSend_631 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); +late final _sel_setTXTRecordData_ = objc.registerName("setTXTRecordData:"); +final _objc_msgSend_632 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_TXTRecordData = objc.registerName("TXTRecordData"); +late final _sel_startMonitoring = objc.registerName("startMonitoring"); +late final _sel_stopMonitoring = objc.registerName("stopMonitoring"); +late final _sel_streamTaskWithNetService_ = + objc.registerName("streamTaskWithNetService:"); +final _objc_msgSend_633 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - set requiresDNSSECValidation(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setRequiresDNSSECValidation_1, value); - } +class NSURLSessionWebSocketTask extends NSURLSessionTask { + NSURLSessionWebSocketTask._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - bool get waitsForConnectivity { - return _lib._objc_msgSend_12(_id, _lib._sel_waitsForConnectivity1); - } + /// Constructs a [NSURLSessionWebSocketTask] that points to the same underlying object as [other]. + NSURLSessionWebSocketTask.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - set waitsForConnectivity(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setWaitsForConnectivity_1, value); - } + /// Constructs a [NSURLSessionWebSocketTask] that wraps the given raw object pointer. + NSURLSessionWebSocketTask.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - bool get discretionary { - return _lib._objc_msgSend_12(_id, _lib._sel_isDiscretionary1); + /// Returns whether [obj] is an instance of [NSURLSessionWebSocketTask]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionWebSocketTask); } - set discretionary(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setDiscretionary_1, value); + void sendMessage_completionHandler_(NSURLSessionWebSocketMessage message, + ObjCBlock_ffiVoid_NSError completionHandler) { + _objc_msgSend_635(this.pointer, _sel_sendMessage_completionHandler_, + message.pointer, completionHandler.pointer); } - NSString? get sharedContainerIdentifier { - final _ret = - _lib._objc_msgSend_44(_id, _lib._sel_sharedContainerIdentifier1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + void receiveMessageWithCompletionHandler_( + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError + completionHandler) { + _objc_msgSend_636(this.pointer, _sel_receiveMessageWithCompletionHandler_, + completionHandler.pointer); } - set sharedContainerIdentifier(NSString? value) { - return _lib._objc_msgSend_545(_id, _lib._sel_setSharedContainerIdentifier_1, - value?._id ?? ffi.nullptr); + void sendPingWithPongReceiveHandler_( + ObjCBlock_ffiVoid_NSError pongReceiveHandler) { + _objc_msgSend_637(this.pointer, _sel_sendPingWithPongReceiveHandler_, + pongReceiveHandler.pointer); } - bool get sessionSendsLaunchEvents { - return _lib._objc_msgSend_12(_id, _lib._sel_sessionSendsLaunchEvents1); + void cancelWithCloseCode_reason_(int closeCode, objc.NSData? reason) { + _objc_msgSend_638(this.pointer, _sel_cancelWithCloseCode_reason_, closeCode, + reason?.pointer ?? ffi.nullptr); } - set sessionSendsLaunchEvents(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setSessionSendsLaunchEvents_1, value); + int get maximumMessageSize { + return _objc_msgSend_114(this.pointer, _sel_maximumMessageSize); } - NSDictionary? get connectionProxyDictionary { - final _ret = - _lib._objc_msgSend_390(_id, _lib._sel_connectionProxyDictionary1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + set maximumMessageSize(int value) { + return _objc_msgSend_134(this.pointer, _sel_setMaximumMessageSize_, value); } - set connectionProxyDictionary(NSDictionary? value) { - return _lib._objc_msgSend_634(_id, _lib._sel_setConnectionProxyDictionary_1, - value?._id ?? ffi.nullptr); + int get closeCode { + return _objc_msgSend_639(this.pointer, _sel_closeCode); } - int get TLSMinimumSupportedProtocol { - return _lib._objc_msgSend_1043(_id, _lib._sel_TLSMinimumSupportedProtocol1); + objc.NSData? get closeReason { + final _ret = _objc_msgSend_325(this.pointer, _sel_closeReason); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - set TLSMinimumSupportedProtocol(int value) { - return _lib._objc_msgSend_1044( - _id, _lib._sel_setTLSMinimumSupportedProtocol_1, value); + @override + NSURLSessionWebSocketTask init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionWebSocketTask.castFromPointer(_ret, + retain: true, release: true); } - int get TLSMaximumSupportedProtocol { - return _lib._objc_msgSend_1043(_id, _lib._sel_TLSMaximumSupportedProtocol1); + static NSURLSessionWebSocketTask new1() { + final _ret = _objc_msgSend_40(_class_NSURLSessionWebSocketTask, _sel_new); + return NSURLSessionWebSocketTask.castFromPointer(_ret, + retain: false, release: true); } - set TLSMaximumSupportedProtocol(int value) { - return _lib._objc_msgSend_1044( - _id, _lib._sel_setTLSMaximumSupportedProtocol_1, value); + static NSURLSessionWebSocketTask allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLSessionWebSocketTask, _sel_allocWithZone_, zone); + return NSURLSessionWebSocketTask.castFromPointer(_ret, + retain: false, release: true); } - int get TLSMinimumSupportedProtocolVersion { - return _lib._objc_msgSend_1045( - _id, _lib._sel_TLSMinimumSupportedProtocolVersion1); + static NSURLSessionWebSocketTask alloc() { + final _ret = _objc_msgSend_40(_class_NSURLSessionWebSocketTask, _sel_alloc); + return NSURLSessionWebSocketTask.castFromPointer(_ret, + retain: false, release: true); } - set TLSMinimumSupportedProtocolVersion(int value) { - return _lib._objc_msgSend_1046( - _id, _lib._sel_setTLSMinimumSupportedProtocolVersion_1, value); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionWebSocketTask, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - int get TLSMaximumSupportedProtocolVersion { - return _lib._objc_msgSend_1045( - _id, _lib._sel_TLSMaximumSupportedProtocolVersion1); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionWebSocketTask, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - set TLSMaximumSupportedProtocolVersion(int value) { - return _lib._objc_msgSend_1046( - _id, _lib._sel_setTLSMaximumSupportedProtocolVersion_1, value); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSURLSessionWebSocketTask, _sel_accessInstanceVariablesDirectly); } - bool get HTTPShouldUsePipelining { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldUsePipelining1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSURLSessionWebSocketTask, _sel_useStoredAccessor); } - set HTTPShouldUsePipelining(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setHTTPShouldUsePipelining_1, value); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionWebSocketTask, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - bool get HTTPShouldSetCookies { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldSetCookies1); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionWebSocketTask, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - set HTTPShouldSetCookies(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setHTTPShouldSetCookies_1, value); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionWebSocketTask, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - int get HTTPCookieAcceptPolicy { - return _lib._objc_msgSend_856(_id, _lib._sel_HTTPCookieAcceptPolicy1); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSURLSessionWebSocketTask, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set HTTPCookieAcceptPolicy(int value) { - return _lib._objc_msgSend_857( - _id, _lib._sel_setHTTPCookieAcceptPolicy_1, value); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLSessionWebSocketTask, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - NSDictionary? get HTTPAdditionalHeaders { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_HTTPAdditionalHeaders1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } +late final _class_NSURLSessionWebSocketTask = + objc.getClass("NSURLSessionWebSocketTask"); - set HTTPAdditionalHeaders(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, _lib._sel_setHTTPAdditionalHeaders_1, value?._id ?? ffi.nullptr); - } +class NSURLSessionWebSocketMessage extends objc.NSObject { + NSURLSessionWebSocketMessage._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - int get HTTPMaximumConnectionsPerHost { - return _lib._objc_msgSend_83(_id, _lib._sel_HTTPMaximumConnectionsPerHost1); - } + /// Constructs a [NSURLSessionWebSocketMessage] that points to the same underlying object as [other]. + NSURLSessionWebSocketMessage.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - set HTTPMaximumConnectionsPerHost(int value) { - return _lib._objc_msgSend_635( - _id, _lib._sel_setHTTPMaximumConnectionsPerHost_1, value); - } + /// Constructs a [NSURLSessionWebSocketMessage] that wraps the given raw object pointer. + NSURLSessionWebSocketMessage.castFromPointer( + ffi.Pointer other, + {bool retain = false, + bool release = false}) + : this._(other, retain: retain, release: release); - NSHTTPCookieStorage? get HTTPCookieStorage { - final _ret = _lib._objc_msgSend_1047(_id, _lib._sel_HTTPCookieStorage1); - return _ret.address == 0 - ? null - : NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSURLSessionWebSocketMessage]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLSessionWebSocketMessage); } - set HTTPCookieStorage(NSHTTPCookieStorage? value) { - return _lib._objc_msgSend_1048( - _id, _lib._sel_setHTTPCookieStorage_1, value?._id ?? ffi.nullptr); + NSURLSessionWebSocketMessage initWithData_(objc.NSData data) { + final _ret = + _objc_msgSend_340(this.pointer, _sel_initWithData_, data.pointer); + return NSURLSessionWebSocketMessage.castFromPointer(_ret, + retain: true, release: true); } - NSURLCredentialStorage? get URLCredentialStorage { - final _ret = _lib._objc_msgSend_1049(_id, _lib._sel_URLCredentialStorage1); - return _ret.address == 0 - ? null - : NSURLCredentialStorage._(_ret, _lib, retain: true, release: true); + NSURLSessionWebSocketMessage initWithString_(objc.NSString string) { + final _ret = + _objc_msgSend_35(this.pointer, _sel_initWithString_, string.pointer); + return NSURLSessionWebSocketMessage.castFromPointer(_ret, + retain: true, release: true); } - set URLCredentialStorage(NSURLCredentialStorage? value) { - return _lib._objc_msgSend_1050( - _id, _lib._sel_setURLCredentialStorage_1, value?._id ?? ffi.nullptr); + int get type { + return _objc_msgSend_634(this.pointer, _sel_type); } - NSURLCache? get URLCache { - final _ret = _lib._objc_msgSend_1051(_id, _lib._sel_URLCache1); + objc.NSData? get data { + final _ret = _objc_msgSend_325(this.pointer, _sel_data); return _ret.address == 0 ? null - : NSURLCache._(_ret, _lib, retain: true, release: true); - } - - set URLCache(NSURLCache? value) { - return _lib._objc_msgSend_1052( - _id, _lib._sel_setURLCache_1, value?._id ?? ffi.nullptr); - } - - bool get shouldUseExtendedBackgroundIdleMode { - return _lib._objc_msgSend_12( - _id, _lib._sel_shouldUseExtendedBackgroundIdleMode1); - } - - set shouldUseExtendedBackgroundIdleMode(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setShouldUseExtendedBackgroundIdleMode_1, value); + : objc.NSData.castFromPointer(_ret, retain: true, release: true); } - NSArray? get protocolClasses { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_protocolClasses1); + objc.NSString? get string { + final _ret = _objc_msgSend_13(this.pointer, _sel_string); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - set protocolClasses(NSArray? value) { - return _lib._objc_msgSend_1053( - _id, _lib._sel_setProtocolClasses_1, value?._id ?? ffi.nullptr); - } - - int get multipathServiceType { - return _lib._objc_msgSend_1054(_id, _lib._sel_multipathServiceType1); - } - - set multipathServiceType(int value) { - return _lib._objc_msgSend_1055( - _id, _lib._sel_setMultipathServiceType_1, value); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } @override - NSURLSessionConfiguration init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + NSURLSessionWebSocketMessage init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSURLSessionWebSocketMessage.castFromPointer(_ret, + retain: true, release: true); } - static NSURLSessionConfiguration new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionConfiguration1, _lib._sel_new1); - return NSURLSessionConfiguration._(_ret, _lib, + static NSURLSessionWebSocketMessage new1() { + final _ret = + _objc_msgSend_40(_class_NSURLSessionWebSocketMessage, _sel_new); + return NSURLSessionWebSocketMessage.castFromPointer(_ret, retain: false, release: true); } - static NSURLSessionConfiguration backgroundSessionConfiguration_( - SwiftLibrary _lib, NSString identifier) { - final _ret = _lib._objc_msgSend_1042(_lib._class_NSURLSessionConfiguration1, - _lib._sel_backgroundSessionConfiguration_1, identifier._id); - return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); - } - - static NSURLSessionConfiguration allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSURLSessionConfiguration1, - _lib._sel_allocWithZone_1, zone); - return NSURLSessionConfiguration._(_ret, _lib, + static NSURLSessionWebSocketMessage allocWithZone_( + ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSURLSessionWebSocketMessage, _sel_allocWithZone_, zone); + return NSURLSessionWebSocketMessage.castFromPointer(_ret, retain: false, release: true); } - static NSURLSessionConfiguration alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionConfiguration1, _lib._sel_alloc1); - return NSURLSessionConfiguration._(_ret, _lib, + static NSURLSessionWebSocketMessage alloc() { + final _ret = + _objc_msgSend_40(_class_NSURLSessionWebSocketMessage, _sel_alloc); + return NSURLSessionWebSocketMessage.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionConfiguration1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSURLSessionWebSocketMessage, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionConfiguration1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSURLSessionWebSocketMessage, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionConfiguration1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7(_class_NSURLSessionWebSocketMessage, + _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionConfiguration1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSURLSessionWebSocketMessage, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSessionConfiguration1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSURLSessionWebSocketMessage, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionConfiguration1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSURLSessionWebSocketMessage, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionConfiguration1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSURLSessionWebSocketMessage, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLSessionConfiguration1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6(_class_NSURLSessionWebSocketMessage, + _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionConfiguration1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSURLSessionWebSocketMessage, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -abstract class SSLProtocol { - static const int kSSLProtocolUnknown = 0; - static const int kTLSProtocol1 = 4; - static const int kTLSProtocol11 = 7; - static const int kTLSProtocol12 = 8; - static const int kDTLSProtocol1 = 9; - static const int kTLSProtocol13 = 10; - static const int kDTLSProtocol12 = 11; - static const int kTLSProtocolMaxSupported = 999; - static const int kSSLProtocol2 = 1; - static const int kSSLProtocol3 = 2; - static const int kSSLProtocol3Only = 3; - static const int kTLSProtocol1Only = 5; - static const int kSSLProtocolAll = 6; +late final _class_NSURLSessionWebSocketMessage = + objc.getClass("NSURLSessionWebSocketMessage"); + +abstract class NSURLSessionWebSocketMessageType { + static const int NSURLSessionWebSocketMessageTypeData = 0; + static const int NSURLSessionWebSocketMessageTypeString = 1; +} + +final _objc_msgSend_634 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_sendMessage_completionHandler_ = + objc.registerName("sendMessage:completionHandler:"); +final _objc_msgSend_635 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +final _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry = + , ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( + void Function( + ffi.Pointer, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry[id] = + fn; + return ffi.Pointer.fromAddress(id); } -abstract class tls_protocol_version_t { - static const int tls_protocol_version_TLSv10 = 769; - static const int tls_protocol_version_TLSv11 = 770; - static const int tls_protocol_version_TLSv12 = 771; - static const int tls_protocol_version_TLSv13 = 772; - static const int tls_protocol_version_DTLSv10 = -257; - static const int tls_protocol_version_DTLSv12 = -259; -} +void _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry[ + block.ref.target.address]!(arg0, arg1); + +class ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError + extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.fromFunction( + void Function(NSURLSessionWebSocketMessage?, objc.NSError?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : NSURLSessionWebSocketMessage.castFromPointer(arg0, + retain: true, release: true), + arg1.address == 0 ? null : objc.NSError.castFromPointer(arg1, retain: true, release: true))))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.listener( + void Function(NSURLSessionWebSocketMessage?, objc.NSError?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : NSURLSessionWebSocketMessage.castFromPointer(arg0, + retain: true, release: true), + arg1.address == 0 + ? null + : objc.NSError.castFromPointer(arg1, retain: true, release: true))))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(NSURLSessionWebSocketMessage? arg0, objc.NSError? arg1) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1?.pointer ?? ffi.nullptr); +} + +late final _sel_receiveMessageWithCompletionHandler_ = + objc.registerName("receiveMessageWithCompletionHandler:"); +final _objc_msgSend_636 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_sendPingWithPongReceiveHandler_ = + objc.registerName("sendPingWithPongReceiveHandler:"); +final _objc_msgSend_637 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); -abstract class NSURLSessionMultipathServiceType { - static const int NSURLSessionMultipathServiceTypeNone = 0; - static const int NSURLSessionMultipathServiceTypeHandover = 1; - static const int NSURLSessionMultipathServiceTypeInteractive = 2; - static const int NSURLSessionMultipathServiceTypeAggregate = 3; +abstract class NSURLSessionWebSocketCloseCode { + static const int NSURLSessionWebSocketCloseCodeInvalid = 0; + static const int NSURLSessionWebSocketCloseCodeNormalClosure = 1000; + static const int NSURLSessionWebSocketCloseCodeGoingAway = 1001; + static const int NSURLSessionWebSocketCloseCodeProtocolError = 1002; + static const int NSURLSessionWebSocketCloseCodeUnsupportedData = 1003; + static const int NSURLSessionWebSocketCloseCodeNoStatusReceived = 1005; + static const int NSURLSessionWebSocketCloseCodeAbnormalClosure = 1006; + static const int NSURLSessionWebSocketCloseCodeInvalidFramePayloadData = 1007; + static const int NSURLSessionWebSocketCloseCodePolicyViolation = 1008; + static const int NSURLSessionWebSocketCloseCodeMessageTooBig = 1009; + static const int NSURLSessionWebSocketCloseCodeMandatoryExtensionMissing = + 1010; + static const int NSURLSessionWebSocketCloseCodeInternalServerError = 1011; + static const int NSURLSessionWebSocketCloseCodeTLSHandshakeFailure = 1015; } -void _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => +late final _sel_cancelWithCloseCode_reason_ = + objc.registerName("cancelWithCloseCode:reason:"); +final _objc_msgSend_638 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_maximumMessageSize = objc.registerName("maximumMessageSize"); +late final _sel_setMaximumMessageSize_ = + objc.registerName("setMaximumMessageSize:"); +late final _sel_closeCode = objc.registerName("closeCode"); +final _objc_msgSend_639 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_closeReason = objc.registerName("closeReason"); +late final _sel_webSocketTaskWithURL_ = + objc.registerName("webSocketTaskWithURL:"); +final _objc_msgSend_640 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_webSocketTaskWithURL_protocols_ = + objc.registerName("webSocketTaskWithURL:protocols:"); +final _objc_msgSend_641 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_webSocketTaskWithRequest_ = + objc.registerName("webSocketTaskWithRequest:"); +final _objc_msgSend_642 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => block.ref.target .cast< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() .asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry = , ffi.Pointer, - ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistryIndex = 0; + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry = , ffi.Pointer, + ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistryIndex = 0; ffi.Pointer - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure( - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer) + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry[id] = fn; + final id = + ++_ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry[ +void _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry[ block.ref.target.address]!(arg0, arg1, arg2); -class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSArray_NSArray_NSArray._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); +class ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError + extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSArray_NSArray_NSArray castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSArray_NSArray_NSArray._(pointer, lib, + static ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError._(pointer, retain: retain, release: release); } @@ -69980,27 +30789,24 @@ class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.fromFunctionPointer( - SwiftLibrary lib, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.fromFunctionPointer( ffi.Pointer< ffi.NativeFunction< ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -70008,23 +30814,21 @@ class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.fromFunction(SwiftLibrary lib, void Function(NSArray, NSArray, NSArray) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline) + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.fromFunction( + void Function(objc.NSData?, NSURLResponse?, objc.NSError?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= + ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline) .cast(), - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2) => fn( - NSArray._(arg0, lib, retain: true, release: true), - NSArray._(arg1, lib, retain: true, release: true), - NSArray._(arg2, lib, retain: true, release: true)))), - lib); + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + arg0.address == 0 ? null : objc.NSData.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : NSURLResponse.castFromPointer(arg1, retain: true, release: true), + arg2.address == 0 ? null : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -70036,80 +30840,190 @@ class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.listener(SwiftLibrary lib, void Function(NSArray, NSArray, NSArray) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline) + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.listener( + void Function(objc.NSData?, NSURLResponse?, objc.NSError?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= + ffi.NativeCallable, ffi.Pointer, ffi.Pointer, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline) ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2) => fn( - NSArray._(arg0, lib, retain: true, release: true), - NSArray._(arg1, lib, retain: true, release: true), - NSArray._(arg2, lib, retain: true, release: true)))), - lib); + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + arg0.address == 0 + ? null + : objc.NSData.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : NSURLResponse.castFromPointer(arg1, retain: true, release: true), + arg2.address == 0 ? null : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); static ffi.NativeCallable< ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; - - void call(NSArray arg0, NSArray arg1, NSArray arg2) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>()(_id, arg0._id, arg1._id, arg2._id); -} + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; -void _ObjCBlock_ffiVoid_NSArray1_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => + void call(objc.NSData? arg0, NSURLResponse? arg1, objc.NSError? arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, + arg0?.pointer ?? ffi.nullptr, + arg1?.pointer ?? ffi.nullptr, + arg2?.pointer ?? ffi.nullptr); +} + +late final _sel_dataTaskWithRequest_completionHandler_ = + objc.registerName("dataTaskWithRequest:completionHandler:"); +final _objc_msgSend_643 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_dataTaskWithURL_completionHandler_ = + objc.registerName("dataTaskWithURL:completionHandler:"); +final _objc_msgSend_644 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_uploadTaskWithRequest_fromFile_completionHandler_ = + objc.registerName("uploadTaskWithRequest:fromFile:completionHandler:"); +final _objc_msgSend_645 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_uploadTaskWithRequest_fromData_completionHandler_ = + objc.registerName("uploadTaskWithRequest:fromData:completionHandler:"); +final _objc_msgSend_646 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_uploadTaskWithResumeData_completionHandler_ = + objc.registerName("uploadTaskWithResumeData:completionHandler:"); +final _objc_msgSend_647 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => block.ref.target .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSArray1_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSArray1_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSArray1_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSArray1_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSArray1_closureRegistry[id] = fn; + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()(arg0, arg1, arg2); +final _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry = , ffi.Pointer, + ffi.Pointer)>{}; +int _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer) + fn) { + final id = + ++_ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSArray1_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSArray1_closureRegistry[block.ref.target.address]!( - arg0); +void _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry[ + block.ref.target.address]!(arg0, arg1, arg2); -class ObjCBlock_ffiVoid_NSArray1 extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSArray1._(ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); +class ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSArray1 castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSArray1._(pointer, lib, + static ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError._(pointer, retain: retain, release: release); } @@ -70118,22 +31032,24 @@ class ObjCBlock_ffiVoid_NSArray1 extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSArray1.fromFunctionPointer( - SwiftLibrary lib, + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.fromFunctionPointer( ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0)>> + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> ptr) - : this._( - lib - ._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSArray1_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -70141,19 +31057,21 @@ class ObjCBlock_ffiVoid_NSArray1 extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSArray1.fromFunction( - SwiftLibrary lib, void Function(NSArray) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSArray1_closureTrampoline) + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.fromFunction( + void Function(objc.NSURL?, NSURLResponse?, objc.NSError?) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= + ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline) .cast(), - _ObjCBlock_ffiVoid_NSArray1_registerClosure( - (ffi.Pointer arg0) => - fn(NSArray._(arg0, lib, retain: true, release: true)))), - lib); + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( + (ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + arg0.address == 0 ? null : objc.NSURL.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : NSURLResponse.castFromPointer(arg1, retain: true, release: true), + arg2.address == 0 ? null : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -70165,591 +31083,568 @@ class ObjCBlock_ffiVoid_NSArray1 extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSArray1.listener( - SwiftLibrary lib, void Function(NSArray) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSArray1_closureTrampoline) + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.listener( + void Function(objc.NSURL?, NSURLResponse?, objc.NSError?) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= + ffi.NativeCallable, ffi.Pointer, ffi.Pointer, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline) ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSArray1_registerClosure( - (ffi.Pointer arg0) => - fn(NSArray._(arg0, lib, retain: true, release: true)))), - lib); + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure((ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + arg0.address == 0 + ? null + : objc.NSURL.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : NSURLResponse.castFromPointer(arg1, retain: true, release: true), + arg2.address == 0 ? null : objc.NSError.castFromPointer(arg2, retain: true, release: true))))); static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; - void call(NSArray arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0._id); -} + void call(objc.NSURL? arg0, NSURLResponse? arg1, objc.NSError? arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, + arg0?.pointer ?? ffi.nullptr, + arg1?.pointer ?? ffi.nullptr, + arg2?.pointer ?? ffi.nullptr); +} + +late final _sel_downloadTaskWithRequest_completionHandler_ = + objc.registerName("downloadTaskWithRequest:completionHandler:"); +final _objc_msgSend_648 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_downloadTaskWithURL_completionHandler_ = + objc.registerName("downloadTaskWithURL:completionHandler:"); +final _objc_msgSend_649 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_downloadTaskWithResumeData_completionHandler_ = + objc.registerName("downloadTaskWithResumeData:completionHandler:"); +final _objc_msgSend_650 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); -class NSURLSessionUploadTask extends NSURLSessionDataTask { - NSURLSessionUploadTask._(ffi.Pointer id, SwiftLibrary lib, +class NSProtocolChecker extends NSProxy { + NSProtocolChecker._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSURLSessionUploadTask] that points to the same underlying object as [other]. - static NSURLSessionUploadTask castFrom(T other) { - return NSURLSessionUploadTask._(other._id, other._lib, - retain: true, release: true); - } + /// Constructs a [NSProtocolChecker] that points to the same underlying object as [other]. + NSProtocolChecker.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSURLSessionUploadTask] that wraps the given raw object pointer. - static NSURLSessionUploadTask castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionUploadTask._(other, lib, - retain: retain, release: release); - } + /// Constructs a [NSProtocolChecker] that wraps the given raw object pointer. + NSProtocolChecker.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - /// Returns whether [obj] is an instance of [NSURLSessionUploadTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionUploadTask1); + /// Returns whether [obj] is an instance of [NSProtocolChecker]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSProtocolChecker); } - @override - NSURLSessionUploadTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + objc.Protocol get protocol { + final _ret = _objc_msgSend_651(this.pointer, _sel_protocol); + return objc.Protocol.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionUploadTask new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionUploadTask1, _lib._sel_new1); - return NSURLSessionUploadTask._(_ret, _lib, retain: false, release: true); + objc.NSObject? get target { + final _ret = _objc_msgSend_457(this.pointer, _sel_target); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void cancelByProducingResumeData_( - ObjCBlock_ffiVoid_NSData completionHandler) { - _lib._objc_msgSend_1062( - _id, _lib._sel_cancelByProducingResumeData_1, completionHandler._id); + static NSProtocolChecker protocolCheckerWithTarget_protocol_( + objc.NSObject anObject, objc.Protocol aProtocol) { + final _ret = _objc_msgSend_652( + _class_NSProtocolChecker, + _sel_protocolCheckerWithTarget_protocol_, + anObject.pointer, + aProtocol.pointer); + return NSProtocolChecker.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionUploadTask allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSessionUploadTask1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionUploadTask._(_ret, _lib, retain: false, release: true); - } + NSProtocolChecker initWithTarget_protocol_( + objc.NSObject anObject, objc.Protocol aProtocol) { + final _ret = _objc_msgSend_652(this.pointer, _sel_initWithTarget_protocol_, + anObject.pointer, aProtocol.pointer); + return NSProtocolChecker.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject alloc() { + final _ret = _objc_msgSend_40(_class_NSProtocolChecker, _sel_alloc); + return objc.NSObject.castFromPointer(_ret, retain: false, release: true); + } + + static bool respondsToSelector_(ffi.Pointer aSelector) { + return _objc_msgSend_228( + _class_NSProtocolChecker, _sel_respondsToSelector_, aSelector); + } +} + +late final _class_NSProtocolChecker = objc.getClass("NSProtocolChecker"); +final _objc_msgSend_651 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_target = objc.registerName("target"); +late final _sel_protocolCheckerWithTarget_protocol_ = + objc.registerName("protocolCheckerWithTarget:protocol:"); +final _objc_msgSend_652 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithTarget_protocol_ = + objc.registerName("initWithTarget:protocol:"); + +class NSTask extends objc.NSObject { + NSTask._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - static NSURLSessionUploadTask alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionUploadTask1, _lib._sel_alloc1); - return NSURLSessionUploadTask._(_ret, _lib, retain: false, release: true); - } + /// Constructs a [NSTask] that points to the same underlying object as [other]. + NSTask.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionUploadTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); - } + /// Constructs a [NSTask] that wraps the given raw object pointer. + NSTask.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionUploadTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + /// Returns whether [obj] is an instance of [NSTask]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSTask); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionUploadTask1, - _lib._sel_accessInstanceVariablesDirectly1); + @override + NSTask init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSTask.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionUploadTask1, _lib._sel_useStoredAccessor1); + objc.NSURL? get executableURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_executableURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSessionUploadTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + set executableURL(objc.NSURL? value) { + return _objc_msgSend_566( + this.pointer, _sel_setExecutableURL_, value?.pointer ?? ffi.nullptr); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionUploadTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + objc.NSArray? get arguments { + final _ret = _objc_msgSend_69(this.pointer, _sel_arguments); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionUploadTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + set arguments(objc.NSArray? value) { + return _objc_msgSend_605( + this.pointer, _sel_setArguments_, value?.pointer ?? ffi.nullptr); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLSessionUploadTask1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + objc.NSDictionary? get environment { + final _ret = _objc_msgSend_65(this.pointer, _sel_environment); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionUploadTask1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + set environment(objc.NSDictionary? value) { + return _objc_msgSend_173( + this.pointer, _sel_setEnvironment_, value?.pointer ?? ffi.nullptr); } -} - -void _ObjCBlock_ffiVoid_NSData_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSData_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSData_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSData_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSData_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSData_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSData_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSData_closureRegistry[block.ref.target.address]!(arg0); - -class ObjCBlock_ffiVoid_NSData extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSData._(ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSData castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSData._(pointer, lib, - retain: retain, release: release); + objc.NSURL? get currentDirectoryURL { + final _ret = _objc_msgSend_10(this.pointer, _sel_currentDirectoryURL); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSData.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0)>> - ptr) - : this._( - lib - ._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSData.fromFunction( - SwiftLibrary lib, void Function(NSData?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSData_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSData._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; - - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSData.listener(SwiftLibrary lib, void Function(NSData?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSData_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSData_registerClosure( - (ffi.Pointer arg0) => fn(arg0.address == 0 - ? null - : NSData._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; - - void call(NSData? arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0?._id ?? ffi.nullptr); -} + set currentDirectoryURL(objc.NSURL? value) { + return _objc_msgSend_566(this.pointer, _sel_setCurrentDirectoryURL_, + value?.pointer ?? ffi.nullptr); + } -class NSURLSessionDownloadTask extends NSURLSessionTask { - NSURLSessionDownloadTask._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + objc.NSData? get launchRequirementData { + final _ret = _objc_msgSend_325(this.pointer, _sel_launchRequirementData); + return _ret.address == 0 + ? null + : objc.NSData.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a [NSURLSessionDownloadTask] that points to the same underlying object as [other]. - static NSURLSessionDownloadTask castFrom(T other) { - return NSURLSessionDownloadTask._(other._id, other._lib, - retain: true, release: true); + set launchRequirementData(objc.NSData? value) { + return _objc_msgSend_571(this.pointer, _sel_setLaunchRequirementData_, + value?.pointer ?? ffi.nullptr); } - /// Returns a [NSURLSessionDownloadTask] that wraps the given raw object pointer. - static NSURLSessionDownloadTask castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionDownloadTask._(other, lib, - retain: retain, release: release); + objc.NSObject? get standardInput { + final _ret = _objc_msgSend_66(this.pointer, _sel_standardInput); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSURLSessionDownloadTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionDownloadTask1); + set standardInput(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setStandardInput_, value?.pointer ?? ffi.nullptr); } - void cancelByProducingResumeData_( - ObjCBlock_ffiVoid_NSData completionHandler) { - _lib._objc_msgSend_1062( - _id, _lib._sel_cancelByProducingResumeData_1, completionHandler._id); + objc.NSObject? get standardOutput { + final _ret = _objc_msgSend_66(this.pointer, _sel_standardOutput); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - @override - NSURLSessionDownloadTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + set standardOutput(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setStandardOutput_, value?.pointer ?? ffi.nullptr); } - static NSURLSessionDownloadTask new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionDownloadTask1, _lib._sel_new1); - return NSURLSessionDownloadTask._(_ret, _lib, retain: false, release: true); + objc.NSObject? get standardError { + final _ret = _objc_msgSend_66(this.pointer, _sel_standardError); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionDownloadTask allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSessionDownloadTask1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionDownloadTask._(_ret, _lib, retain: false, release: true); + set standardError(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setStandardError_, value?.pointer ?? ffi.nullptr); } - static NSURLSessionDownloadTask alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionDownloadTask1, _lib._sel_alloc1); - return NSURLSessionDownloadTask._(_ret, _lib, retain: false, release: true); + bool launchAndReturnError_(ffi.Pointer> error) { + return _objc_msgSend_8(this.pointer, _sel_launchAndReturnError_, error); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionDownloadTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + void interrupt() { + _objc_msgSend_82(this.pointer, _sel_interrupt); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionDownloadTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + void terminate() { + _objc_msgSend_82(this.pointer, _sel_terminate); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionDownloadTask1, - _lib._sel_accessInstanceVariablesDirectly1); + bool suspend() { + return _objc_msgSend_7(this.pointer, _sel_suspend); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionDownloadTask1, _lib._sel_useStoredAccessor1); + bool resume() { + return _objc_msgSend_7(this.pointer, _sel_resume); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSessionDownloadTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + int get processIdentifier { + return _objc_msgSend_264(this.pointer, _sel_processIdentifier); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionDownloadTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + bool get running { + return _objc_msgSend_7(this.pointer, _sel_isRunning); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionDownloadTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + int get terminationStatus { + return _objc_msgSend_264(this.pointer, _sel_terminationStatus); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLSessionDownloadTask1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + int get terminationReason { + return _objc_msgSend_653(this.pointer, _sel_terminationReason); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionDownloadTask1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + ObjCBlock_ffiVoid_NSTask? get terminationHandler { + final _ret = _objc_msgSend_654(this.pointer, _sel_terminationHandler); + return _ret.address == 0 + ? null + : ObjCBlock_ffiVoid_NSTask.castFromPointer(_ret, + retain: true, release: true); } -} - -class NSURLSessionStreamTask extends NSURLSessionTask { - NSURLSessionStreamTask._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLSessionStreamTask] that points to the same underlying object as [other]. - static NSURLSessionStreamTask castFrom(T other) { - return NSURLSessionStreamTask._(other._id, other._lib, - retain: true, release: true); + set terminationHandler(ObjCBlock_ffiVoid_NSTask? value) { + return _objc_msgSend_655(this.pointer, _sel_setTerminationHandler_, + value?.pointer ?? ffi.nullptr); } - /// Returns a [NSURLSessionStreamTask] that wraps the given raw object pointer. - static NSURLSessionStreamTask castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionStreamTask._(other, lib, - retain: retain, release: release); + int get qualityOfService { + return _objc_msgSend_454(this.pointer, _sel_qualityOfService); } - /// Returns whether [obj] is an instance of [NSURLSessionStreamTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionStreamTask1); + set qualityOfService(int value) { + return _objc_msgSend_455(this.pointer, _sel_setQualityOfService_, value); } - void readDataOfMinLength_maxLength_timeout_completionHandler_( - int minBytes, - int maxBytes, - double timeout, - ObjCBlock_ffiVoid_NSData_bool_NSError completionHandler) { - _lib._objc_msgSend_1070( - _id, - _lib._sel_readDataOfMinLength_maxLength_timeout_completionHandler_1, - minBytes, - maxBytes, - timeout, - completionHandler._id); + static NSTask? + launchedTaskWithExecutableURL_arguments_error_terminationHandler_( + objc.NSURL url, + objc.NSArray arguments, + ffi.Pointer> error, + ObjCBlock_ffiVoid_NSTask? terminationHandler) { + final _ret = _objc_msgSend_656( + _class_NSTask, + _sel_launchedTaskWithExecutableURL_arguments_error_terminationHandler_, + url.pointer, + arguments.pointer, + error, + terminationHandler?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSTask.castFromPointer(_ret, retain: true, release: true); } - void writeData_timeout_completionHandler_(NSData data, double timeout, - ObjCBlock_ffiVoid_NSError completionHandler) { - _lib._objc_msgSend_1071( - _id, - _lib._sel_writeData_timeout_completionHandler_1, - data._id, - timeout, - completionHandler._id); + void waitUntilExit() { + _objc_msgSend_82(this.pointer, _sel_waitUntilExit); } - void captureStreams() { - _lib._objc_msgSend_1(_id, _lib._sel_captureStreams1); + objc.NSString? get launchPath { + final _ret = _objc_msgSend_13(this.pointer, _sel_launchPath); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void closeWrite() { - _lib._objc_msgSend_1(_id, _lib._sel_closeWrite1); + set launchPath(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setLaunchPath_, value?.pointer ?? ffi.nullptr); } - void closeRead() { - _lib._objc_msgSend_1(_id, _lib._sel_closeRead1); + objc.NSString get currentDirectoryPath { + final _ret = _objc_msgSend_12(this.pointer, _sel_currentDirectoryPath); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void startSecureConnection() { - _lib._objc_msgSend_1(_id, _lib._sel_startSecureConnection1); + set currentDirectoryPath(objc.NSString value) { + return _objc_msgSend_99( + this.pointer, _sel_setCurrentDirectoryPath_, value.pointer); } - void stopSecureConnection() { - _lib._objc_msgSend_1(_id, _lib._sel_stopSecureConnection1); + void launch() { + _objc_msgSend_82(this.pointer, _sel_launch); } - @override - NSURLSessionStreamTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionStreamTask._(_ret, _lib, retain: true, release: true); + static NSTask launchedTaskWithLaunchPath_arguments_( + objc.NSString path, objc.NSArray arguments) { + final _ret = _objc_msgSend_657( + _class_NSTask, + _sel_launchedTaskWithLaunchPath_arguments_, + path.pointer, + arguments.pointer); + return NSTask.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionStreamTask new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionStreamTask1, _lib._sel_new1); - return NSURLSessionStreamTask._(_ret, _lib, retain: false, release: true); + static NSTask new1() { + final _ret = _objc_msgSend_40(_class_NSTask, _sel_new); + return NSTask.castFromPointer(_ret, retain: false, release: true); } - static NSURLSessionStreamTask allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSessionStreamTask1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionStreamTask._(_ret, _lib, retain: false, release: true); + static NSTask allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSTask, _sel_allocWithZone_, zone); + return NSTask.castFromPointer(_ret, retain: false, release: true); } - static NSURLSessionStreamTask alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionStreamTask1, _lib._sel_alloc1); - return NSURLSessionStreamTask._(_ret, _lib, retain: false, release: true); + static NSTask alloc() { + final _ret = _objc_msgSend_40(_class_NSTask, _sel_alloc); + return NSTask.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionStreamTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSTask, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionStreamTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSTask, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionStreamTask1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7(_class_NSTask, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionStreamTask1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSTask, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSessionStreamTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSTask, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionStreamTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51( + _class_NSTask, _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionStreamTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSTask, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSTask, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40(_class_NSTask, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSTask = objc.getClass("NSTask"); +late final _sel_setExecutableURL_ = objc.registerName("setExecutableURL:"); +late final _sel_setArguments_ = objc.registerName("setArguments:"); +late final _sel_setEnvironment_ = objc.registerName("setEnvironment:"); +late final _sel_currentDirectoryURL = objc.registerName("currentDirectoryURL"); +late final _sel_setCurrentDirectoryURL_ = + objc.registerName("setCurrentDirectoryURL:"); +late final _sel_launchRequirementData = + objc.registerName("launchRequirementData"); +late final _sel_setLaunchRequirementData_ = + objc.registerName("setLaunchRequirementData:"); +late final _sel_standardInput = objc.registerName("standardInput"); +late final _sel_setStandardInput_ = objc.registerName("setStandardInput:"); +late final _sel_standardOutput = objc.registerName("standardOutput"); +late final _sel_setStandardOutput_ = objc.registerName("setStandardOutput:"); +late final _sel_standardError = objc.registerName("standardError"); +late final _sel_setStandardError_ = objc.registerName("setStandardError:"); +late final _sel_launchAndReturnError_ = + objc.registerName("launchAndReturnError:"); +late final _sel_interrupt = objc.registerName("interrupt"); +late final _sel_terminate = objc.registerName("terminate"); +late final _sel_isRunning = objc.registerName("isRunning"); +late final _sel_terminationStatus = objc.registerName("terminationStatus"); - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLSessionStreamTask1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionStreamTask1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } +abstract class NSTaskTerminationReason { + static const int NSTaskTerminationReasonExit = 1; + static const int NSTaskTerminationReasonUncaughtSignal = 2; } -void _ObjCBlock_ffiVoid_NSData_bool_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - bool arg1, - ffi.Pointer arg2) => +late final _sel_terminationReason = objc.registerName("terminationReason"); +final _objc_msgSend_653 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSTask_fnPtrTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => block.ref.target .cast< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, bool, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry = , bool, ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure( - void Function(ffi.Pointer, bool, ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry[id] = fn; + ffi.Void Function(ffi.Pointer arg0)>>() + .asFunction)>()(arg0); +final _ObjCBlock_ffiVoid_NSTask_closureRegistry = + )>{}; +int _ObjCBlock_ffiVoid_NSTask_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSTask_registerClosure( + void Function(ffi.Pointer) fn) { + final id = ++_ObjCBlock_ffiVoid_NSTask_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSTask_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - bool arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); +void _ObjCBlock_ffiVoid_NSTask_closureTrampoline( + ffi.Pointer block, ffi.Pointer arg0) => + _ObjCBlock_ffiVoid_NSTask_closureRegistry[block.ref.target.address]!(arg0); -class ObjCBlock_ffiVoid_NSData_bool_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSData_bool_NSError._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, +class ObjCBlock_ffiVoid_NSTask extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSTask._(ffi.Pointer pointer, {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + : super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSData_bool_NSError castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSData_bool_NSError._(pointer, lib, + static ObjCBlock_ffiVoid_NSTask castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSTask._(pointer, retain: retain, release: release); } @@ -70758,25 +31653,18 @@ class ObjCBlock_ffiVoid_NSData_bool_NSError extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSData_bool_NSError.fromFunctionPointer( - SwiftLibrary lib, + ObjCBlock_ffiVoid_NSTask.fromFunctionPointer( ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, - ffi.Pointer arg2)>> + ffi.Void Function(ffi.Pointer arg0)>> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_bool_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); + : this._(objc.newBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSTask_fnPtrTrampoline) + .cast(), + ptr.cast())); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -70784,23 +31672,17 @@ class ObjCBlock_ffiVoid_NSData_bool_NSError extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - ObjCBlock_ffiVoid_NSData_bool_NSError.fromFunction(SwiftLibrary lib, void Function(NSData, bool, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure( - (ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) => fn( - NSData._(arg0, lib, retain: true, release: true), - arg1, - arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSTask.fromFunction(void Function(NSTask) fn) + : this._(objc.newBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSTask_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSTask_registerClosure( + (ffi.Pointer arg0) => fn( + NSTask.castFromPointer(arg0, + retain: true, release: true))))); static ffi.Pointer? _dartFuncTrampoline; /// Creates a listener block from a Dart function. @@ -70812,3785 +31694,5303 @@ class ObjCBlock_ffiVoid_NSData_bool_NSError extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSData_bool_NSError.listener( - SwiftLibrary lib, void Function(NSData, bool, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Bool, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure( - (ffi.Pointer arg0, bool arg1, - ffi.Pointer arg2) => - fn(NSData._(arg0, lib, retain: true, release: true), arg1, arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); + ObjCBlock_ffiVoid_NSTask.listener(void Function(NSTask) fn) + : this._(objc.newBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSTask_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + _ObjCBlock_ffiVoid_NSTask_registerClosure( + (ffi.Pointer arg0) => fn( + NSTask.castFromPointer(arg0, + retain: true, release: true))))); static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Bool, ffi.Pointer)>? _dartFuncListenerTrampoline; + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>? + _dartFuncListenerTrampoline; - void call(NSData arg0, bool arg1, NSError? arg2) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Bool arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - bool, ffi.Pointer)>()( - _id, arg0._id, arg1, arg2?._id ?? ffi.nullptr); -} + void call(NSTask arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(pointer, arg0.pointer); +} + +late final _sel_terminationHandler = objc.registerName("terminationHandler"); +final _objc_msgSend_654 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setTerminationHandler_ = + objc.registerName("setTerminationHandler:"); +final _objc_msgSend_655 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_launchedTaskWithExecutableURL_arguments_error_terminationHandler_ = + objc.registerName( + "launchedTaskWithExecutableURL:arguments:error:terminationHandler:"); +final _objc_msgSend_656 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>(); +late final _sel_waitUntilExit = objc.registerName("waitUntilExit"); +late final _sel_launchPath = objc.registerName("launchPath"); +late final _sel_setLaunchPath_ = objc.registerName("setLaunchPath:"); +late final _sel_setCurrentDirectoryPath_ = + objc.registerName("setCurrentDirectoryPath:"); +late final _sel_launch = objc.registerName("launch"); +late final _sel_launchedTaskWithLaunchPath_arguments_ = + objc.registerName("launchedTaskWithLaunchPath:arguments:"); +final _objc_msgSend_657 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); -class NSNetService extends NSObject { - NSNetService._(ffi.Pointer id, SwiftLibrary lib, +class NSXMLElement extends NSXMLNode { + NSXMLElement._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSNetService] that points to the same underlying object as [other]. - static NSNetService castFrom(T other) { - return NSNetService._(other._id, other._lib, retain: true, release: true); - } + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSNetService] that wraps the given raw object pointer. - static NSNetService castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSNetService._(other, lib, retain: retain, release: release); - } + /// Constructs a [NSXMLElement] that points to the same underlying object as [other]. + NSXMLElement.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns whether [obj] is an instance of [NSNetService]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSNetService1); - } + /// Constructs a [NSXMLElement] that wraps the given raw object pointer. + NSXMLElement.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSNetService initWithDomain_type_name_port_( - NSString domain, NSString type, NSString name, int port) { - final _ret = _lib._objc_msgSend_1073( - _id, - _lib._sel_initWithDomain_type_name_port_1, - domain._id, - type._id, - name._id, - port); - return NSNetService._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSXMLElement]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSXMLElement); } - NSNetService initWithDomain_type_name_( - NSString domain, NSString type, NSString name) { - final _ret = _lib._objc_msgSend_1074(_id, - _lib._sel_initWithDomain_type_name_1, domain._id, type._id, name._id); - return NSNetService._(_ret, _lib, retain: true, release: true); + NSXMLElement initWithName_(objc.NSString name) { + final _ret = + _objc_msgSend_35(this.pointer, _sel_initWithName_, name.pointer); + return NSXMLElement.castFromPointer(_ret, retain: true, release: true); } - void scheduleInRunLoop_forMode_(NSRunLoop aRunLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_scheduleInRunLoop_forMode_1, aRunLoop._id, mode._id); + NSXMLElement initWithName_URI_(objc.NSString name, objc.NSString? URI) { + final _ret = _objc_msgSend_694(this.pointer, _sel_initWithName_URI_, + name.pointer, URI?.pointer ?? ffi.nullptr); + return NSXMLElement.castFromPointer(_ret, retain: true, release: true); } - void removeFromRunLoop_forMode_(NSRunLoop aRunLoop, NSString mode) { - _lib._objc_msgSend_569( - _id, _lib._sel_removeFromRunLoop_forMode_1, aRunLoop._id, mode._id); + NSXMLElement initWithName_stringValue_( + objc.NSString name, objc.NSString? string) { + final _ret = _objc_msgSend_694(this.pointer, _sel_initWithName_stringValue_, + name.pointer, string?.pointer ?? ffi.nullptr); + return NSXMLElement.castFromPointer(_ret, retain: true, release: true); } - NSObject? get delegate { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_delegate1); + NSXMLElement? initWithXMLString_error_( + objc.NSString string, ffi.Pointer> error) { + final _ret = _objc_msgSend_695( + this.pointer, _sel_initWithXMLString_error_, string.pointer, error); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - set delegate(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + : NSXMLElement.castFromPointer(_ret, retain: true, release: true); } - bool get includesPeerToPeer { - return _lib._objc_msgSend_12(_id, _lib._sel_includesPeerToPeer1); - } - - set includesPeerToPeer(bool value) { - return _lib._objc_msgSend_527( - _id, _lib._sel_setIncludesPeerToPeer_1, value); + @override + NSXMLElement initWithKind_options_(int kind, int options) { + final _ret = _objc_msgSend_659( + this.pointer, _sel_initWithKind_options_, kind, options); + return NSXMLElement.castFromPointer(_ret, retain: true, release: true); } - NSString get name { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_name1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray elementsForName_(objc.NSString name) { + final _ret = + _objc_msgSend_445(this.pointer, _sel_elementsForName_, name.pointer); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString get type { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_type1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray elementsForLocalName_URI_( + objc.NSString localName, objc.NSString? URI) { + final _ret = _objc_msgSend_696(this.pointer, _sel_elementsForLocalName_URI_, + localName.pointer, URI?.pointer ?? ffi.nullptr); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString get domain { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_domain1); - return NSString._(_ret, _lib, retain: true, release: true); + void addAttribute_(NSXMLNode attribute) { + _objc_msgSend_673(this.pointer, _sel_addAttribute_, attribute.pointer); } - NSString? get hostName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_hostName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + void removeAttributeForName_(objc.NSString name) { + _objc_msgSend_98(this.pointer, _sel_removeAttributeForName_, name.pointer); } - NSArray? get addresses { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_addresses1); + objc.NSArray? get attributes { + final _ret = _objc_msgSend_69(this.pointer, _sel_attributes); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - int get port { - return _lib._objc_msgSend_83(_id, _lib._sel_port1); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - void publish() { - _lib._objc_msgSend_1(_id, _lib._sel_publish1); + set attributes(objc.NSArray? value) { + return _objc_msgSend_605( + this.pointer, _sel_setAttributes_, value?.pointer ?? ffi.nullptr); } - void publishWithOptions_(int options) { - _lib._objc_msgSend_1075(_id, _lib._sel_publishWithOptions_1, options); + void setAttributesWithDictionary_(objc.NSDictionary attributes) { + _objc_msgSend_697( + this.pointer, _sel_setAttributesWithDictionary_, attributes.pointer); } - void resolve() { - _lib._objc_msgSend_1(_id, _lib._sel_resolve1); + NSXMLNode? attributeForName_(objc.NSString name) { + final _ret = + _objc_msgSend_677(this.pointer, _sel_attributeForName_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - void stop() { - _lib._objc_msgSend_1(_id, _lib._sel_stop1); + NSXMLNode? attributeForLocalName_URI_( + objc.NSString localName, objc.NSString? URI) { + final _ret = _objc_msgSend_698( + this.pointer, + _sel_attributeForLocalName_URI_, + localName.pointer, + URI?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - static NSDictionary dictionaryFromTXTRecordData_( - SwiftLibrary _lib, NSData txtData) { - final _ret = _lib._objc_msgSend_1076(_lib._class_NSNetService1, - _lib._sel_dictionaryFromTXTRecordData_1, txtData._id); - return NSDictionary._(_ret, _lib, retain: true, release: true); + void addNamespace_(NSXMLNode aNamespace) { + _objc_msgSend_673(this.pointer, _sel_addNamespace_, aNamespace.pointer); } - static NSData dataFromTXTRecordDictionary_( - SwiftLibrary _lib, NSDictionary txtDictionary) { - final _ret = _lib._objc_msgSend_1077(_lib._class_NSNetService1, - _lib._sel_dataFromTXTRecordDictionary_1, txtDictionary._id); - return NSData._(_ret, _lib, retain: true, release: true); + void removeNamespaceForPrefix_(objc.NSString name) { + _objc_msgSend_98( + this.pointer, _sel_removeNamespaceForPrefix_, name.pointer); } - void resolveWithTimeout_(double timeout) { - _lib._objc_msgSend_541(_id, _lib._sel_resolveWithTimeout_1, timeout); + objc.NSArray? get namespaces { + final _ret = _objc_msgSend_69(this.pointer, _sel_namespaces); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - bool getInputStream_outputStream_( - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - return _lib._objc_msgSend_1078(_id, _lib._sel_getInputStream_outputStream_1, - inputStream, outputStream); + set namespaces(objc.NSArray? value) { + return _objc_msgSend_605( + this.pointer, _sel_setNamespaces_, value?.pointer ?? ffi.nullptr); } - bool setTXTRecordData_(NSData? recordData) { - return _lib._objc_msgSend_1079( - _id, _lib._sel_setTXTRecordData_1, recordData?._id ?? ffi.nullptr); + NSXMLNode? namespaceForPrefix_(objc.NSString name) { + final _ret = + _objc_msgSend_677(this.pointer, _sel_namespaceForPrefix_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - NSData? TXTRecordData() { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_TXTRecordData1); + NSXMLNode? resolveNamespaceForName_(objc.NSString name) { + final _ret = _objc_msgSend_677( + this.pointer, _sel_resolveNamespaceForName_, name.pointer); return _ret.address == 0 ? null - : NSData._(_ret, _lib, retain: true, release: true); + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - void startMonitoring() { - _lib._objc_msgSend_1(_id, _lib._sel_startMonitoring1); + objc.NSString? resolvePrefixForNamespaceURI_(objc.NSString namespaceURI) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_resolvePrefixForNamespaceURI_, namespaceURI.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void stopMonitoring() { - _lib._objc_msgSend_1(_id, _lib._sel_stopMonitoring1); + void insertChild_atIndex_(NSXMLNode child, int index) { + _objc_msgSend_671( + this.pointer, _sel_insertChild_atIndex_, child.pointer, index); } - @override - NSNetService init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSNetService._(_ret, _lib, retain: true, release: true); + void insertChildren_atIndex_(objc.NSArray children, int index) { + _objc_msgSend_672( + this.pointer, _sel_insertChildren_atIndex_, children.pointer, index); } - static NSNetService new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSNetService1, _lib._sel_new1); - return NSNetService._(_ret, _lib, retain: false, release: true); + void removeChildAtIndex_(int index) { + _objc_msgSend_414(this.pointer, _sel_removeChildAtIndex_, index); } - static NSNetService allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSNetService1, _lib._sel_allocWithZone_1, zone); - return NSNetService._(_ret, _lib, retain: false, release: true); + void setChildren_(objc.NSArray? children) { + _objc_msgSend_260( + this.pointer, _sel_setChildren_, children?.pointer ?? ffi.nullptr); } - static NSNetService alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSNetService1, _lib._sel_alloc1); - return NSNetService._(_ret, _lib, retain: false, release: true); + void addChild_(NSXMLNode child) { + _objc_msgSend_673(this.pointer, _sel_addChild_, child.pointer); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSNetService1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + void replaceChildAtIndex_withNode_(int index, NSXMLNode node) { + _objc_msgSend_674( + this.pointer, _sel_replaceChildAtIndex_withNode_, index, node.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSNetService1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + void normalizeAdjacentTextNodesPreservingCDATA_(bool preserve) { + _objc_msgSend_336(this.pointer, + _sel_normalizeAdjacentTextNodesPreservingCDATA_, preserve); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSNetService1, _lib._sel_accessInstanceVariablesDirectly1); + void setAttributesAsDictionary_(objc.NSDictionary attributes) { + _objc_msgSend_697( + this.pointer, _sel_setAttributesAsDictionary_, attributes.pointer); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSNetService1, _lib._sel_useStoredAccessor1); + @override + NSXMLElement init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSXMLElement.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSNetService1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + @override + NSXMLElement initWithKind_(int kind) { + final _ret = _objc_msgSend_658(this.pointer, _sel_initWithKind_, kind); + return NSXMLElement.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSNetService1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static objc.NSObject document() { + final _ret = _objc_msgSend_40(_class_NSXMLElement, _sel_document); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSNetService1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static objc.NSObject documentWithRootElement_(NSXMLElement element) { + final _ret = _objc_msgSend_660( + _class_NSXMLElement, _sel_documentWithRootElement_, element.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSNetService1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_(objc.NSString name) { + final _ret = _objc_msgSend_35( + _class_NSXMLElement, _sel_elementWithName_, name.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSNetService1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_URI_( + objc.NSString name, objc.NSString URI) { + final _ret = _objc_msgSend_661(_class_NSXMLElement, + _sel_elementWithName_URI_, name.pointer, URI.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } -} - -abstract class NSNetServiceOptions { - static const int NSNetServiceNoAutoRename = 1; - static const int NSNetServiceListenForConnections = 2; -} - -class NSURLSessionWebSocketTask extends NSURLSessionTask { - NSURLSessionWebSocketTask._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLSessionWebSocketTask] that points to the same underlying object as [other]. - static NSURLSessionWebSocketTask castFrom(T other) { - return NSURLSessionWebSocketTask._(other._id, other._lib, - retain: true, release: true); + static objc.NSObject elementWithName_stringValue_( + objc.NSString name, objc.NSString string) { + final _ret = _objc_msgSend_661(_class_NSXMLElement, + _sel_elementWithName_stringValue_, name.pointer, string.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSURLSessionWebSocketTask] that wraps the given raw object pointer. - static NSURLSessionWebSocketTask castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionWebSocketTask._(other, lib, - retain: retain, release: release); + static objc.NSObject elementWithName_children_attributes_( + objc.NSString name, objc.NSArray? children, objc.NSArray? attributes) { + final _ret = _objc_msgSend_662( + _class_NSXMLElement, + _sel_elementWithName_children_attributes_, + name.pointer, + children?.pointer ?? ffi.nullptr, + attributes?.pointer ?? ffi.nullptr); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSURLSessionWebSocketTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionWebSocketTask1); + static objc.NSObject attributeWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLElement, + _sel_attributeWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void sendMessage_completionHandler_(NSURLSessionWebSocketMessage message, - ObjCBlock_ffiVoid_NSError completionHandler) { - _lib._objc_msgSend_1082(_id, _lib._sel_sendMessage_completionHandler_1, - message._id, completionHandler._id); + static objc.NSObject attributeWithName_URI_stringValue_( + objc.NSString name, objc.NSString URI, objc.NSString stringValue) { + final _ret = _objc_msgSend_626( + _class_NSXMLElement, + _sel_attributeWithName_URI_stringValue_, + name.pointer, + URI.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void receiveMessageWithCompletionHandler_( - ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError - completionHandler) { - _lib._objc_msgSend_1083(_id, - _lib._sel_receiveMessageWithCompletionHandler_1, completionHandler._id); + static objc.NSObject namespaceWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLElement, + _sel_namespaceWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void sendPingWithPongReceiveHandler_( - ObjCBlock_ffiVoid_NSError pongReceiveHandler) { - _lib._objc_msgSend_1084(_id, _lib._sel_sendPingWithPongReceiveHandler_1, - pongReceiveHandler._id); + static objc.NSObject processingInstructionWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661( + _class_NSXMLElement, + _sel_processingInstructionWithName_stringValue_, + name.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - void cancelWithCloseCode_reason_(int closeCode, NSData? reason) { - _lib._objc_msgSend_1085(_id, _lib._sel_cancelWithCloseCode_reason_1, - closeCode, reason?._id ?? ffi.nullptr); + static objc.NSObject commentWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLElement, _sel_commentWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - int get maximumMessageSize { - return _lib._objc_msgSend_83(_id, _lib._sel_maximumMessageSize1); + static objc.NSObject textWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLElement, _sel_textWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set maximumMessageSize(int value) { - return _lib._objc_msgSend_635( - _id, _lib._sel_setMaximumMessageSize_1, value); + static objc.NSObject? DTDNodeWithXMLString_(objc.NSString string) { + final _ret = _objc_msgSend_2( + _class_NSXMLElement, _sel_DTDNodeWithXMLString_, string.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - int get closeCode { - return _lib._objc_msgSend_1086(_id, _lib._sel_closeCode1); + static objc.NSString localNameForName_(objc.NSString name) { + final _ret = _objc_msgSend_297( + _class_NSXMLElement, _sel_localNameForName_, name.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSData? get closeReason { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_closeReason1); + static objc.NSString? prefixForName_(objc.NSString name) { + final _ret = _objc_msgSend_14( + _class_NSXMLElement, _sel_prefixForName_, name.pointer); return _ret.address == 0 ? null - : NSData._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSURLSessionWebSocketTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + static NSXMLNode? predefinedNamespaceForPrefix_(objc.NSString name) { + final _ret = _objc_msgSend_677( + _class_NSXMLElement, _sel_predefinedNamespaceForPrefix_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - static NSURLSessionWebSocketTask new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionWebSocketTask1, _lib._sel_new1); - return NSURLSessionWebSocketTask._(_ret, _lib, - retain: false, release: true); + static NSXMLElement new1() { + final _ret = _objc_msgSend_40(_class_NSXMLElement, _sel_new); + return NSXMLElement.castFromPointer(_ret, retain: false, release: true); } - static NSURLSessionWebSocketTask allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_allocWithZone_1, zone); - return NSURLSessionWebSocketTask._(_ret, _lib, - retain: false, release: true); + static NSXMLElement allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSXMLElement, _sel_allocWithZone_, zone); + return NSXMLElement.castFromPointer(_ret, retain: false, release: true); } - static NSURLSessionWebSocketTask alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionWebSocketTask1, _lib._sel_alloc1); - return NSURLSessionWebSocketTask._(_ret, _lib, - retain: false, release: true); + static NSXMLElement alloc() { + final _ret = _objc_msgSend_40(_class_NSXMLElement, _sel_alloc); + return NSXMLElement.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionWebSocketTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSXMLElement, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSXMLElement, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSXMLElement, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionWebSocketTask1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSXMLElement, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSXMLElement, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSXMLElement, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionWebSocketTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSXMLElement, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSXMLElement, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSXMLElement, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } -class NSURLSessionWebSocketMessage extends NSObject { - NSURLSessionWebSocketMessage._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSURLSessionWebSocketMessage] that points to the same underlying object as [other]. - static NSURLSessionWebSocketMessage castFrom( - T other) { - return NSURLSessionWebSocketMessage._(other._id, other._lib, - retain: true, release: true); - } - - /// Returns a [NSURLSessionWebSocketMessage] that wraps the given raw object pointer. - static NSURLSessionWebSocketMessage castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionWebSocketMessage._(other, lib, - retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSURLSessionWebSocketMessage]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionWebSocketMessage1); - } - - NSURLSessionWebSocketMessage initWithData_(NSData data) { - final _ret = - _lib._objc_msgSend_279(_id, _lib._sel_initWithData_1, data._id); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: true, release: true); - } +late final _class_NSXMLElement = objc.getClass("NSXMLElement"); - NSURLSessionWebSocketMessage initWithString_(NSString string) { - final _ret = - _lib._objc_msgSend_31(_id, _lib._sel_initWithString_1, string._id); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: true, release: true); - } +class NSXMLNode extends objc.NSObject { + NSXMLNode._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); - int get type { - return _lib._objc_msgSend_1081(_id, _lib._sel_type1); - } + /// Constructs a [NSXMLNode] that points to the same underlying object as [other]. + NSXMLNode.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - NSData? get data { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_data1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } + /// Constructs a [NSXMLNode] that wraps the given raw object pointer. + NSXMLNode.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSString? get string { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_string1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSXMLNode]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSXMLNode); } @override - NSURLSessionWebSocketMessage init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: true, release: true); - } - - static NSURLSessionWebSocketMessage new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionWebSocketMessage1, _lib._sel_new1); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: false, release: true); - } - - static NSURLSessionWebSocketMessage allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_allocWithZone_1, zone); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: false, release: true); - } - - static NSURLSessionWebSocketMessage alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionWebSocketMessage1, _lib._sel_alloc1); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + NSXMLNode init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + NSXMLNode initWithKind_(int kind) { + final _ret = _objc_msgSend_658(this.pointer, _sel_initWithKind_, kind); + return NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_accessInstanceVariablesDirectly1); + NSXMLNode initWithKind_options_(int kind, int options) { + final _ret = _objc_msgSend_659( + this.pointer, _sel_initWithKind_options_, kind, options); + return NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_useStoredAccessor1); + static objc.NSObject document() { + final _ret = _objc_msgSend_40(_class_NSXMLNode, _sel_document); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63( - _lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSObject documentWithRootElement_(NSXMLElement element) { + final _ret = _objc_msgSend_660( + _class_NSXMLNode, _sel_documentWithRootElement_, element.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static objc.NSObject elementWithName_(objc.NSString name) { + final _ret = + _objc_msgSend_35(_class_NSXMLNode, _sel_elementWithName_, name.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static objc.NSObject elementWithName_URI_( + objc.NSString name, objc.NSString URI) { + final _ret = _objc_msgSend_661( + _class_NSXMLNode, _sel_elementWithName_URI_, name.pointer, URI.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_stringValue_( + objc.NSString name, objc.NSString string) { + final _ret = _objc_msgSend_661(_class_NSXMLNode, + _sel_elementWithName_stringValue_, name.pointer, string.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_children_attributes_( + objc.NSString name, objc.NSArray? children, objc.NSArray? attributes) { + final _ret = _objc_msgSend_662( + _class_NSXMLNode, + _sel_elementWithName_children_attributes_, + name.pointer, + children?.pointer ?? ffi.nullptr, + attributes?.pointer ?? ffi.nullptr); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } -} - -abstract class NSURLSessionWebSocketMessageType { - static const int NSURLSessionWebSocketMessageTypeData = 0; - static const int NSURLSessionWebSocketMessageTypeString = 1; -} -void _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer, - ffi.Pointer)>()(arg0, arg1); -final _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry = - , ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistryIndex = - 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer) fn) { - final id = - ++_ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry[id] = - fn; - return ffi.Pointer.fromAddress(id); -} + static objc.NSObject attributeWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLNode, + _sel_attributeWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } -void _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) => - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1); + static objc.NSObject attributeWithName_URI_stringValue_( + objc.NSString name, objc.NSString URI, objc.NSString stringValue) { + final _ret = _objc_msgSend_626( + _class_NSXMLNode, + _sel_attributeWithName_URI_stringValue_, + name.pointer, + URI.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } -class ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError - extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + static objc.NSObject namespaceWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLNode, + _sel_namespaceWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError._( - pointer, lib, - retain: retain, release: release); + static objc.NSObject processingInstructionWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661( + _class_NSXMLNode, + _sel_processingInstructionWithName_stringValue_, + name.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + static objc.NSObject commentWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLNode, _sel_commentWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.fromFunction( - SwiftLibrary lib, - void Function(NSURLSessionWebSocketMessage?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 ? null : NSURLSessionWebSocketMessage._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + static objc.NSObject textWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLNode, _sel_textWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.listener( - SwiftLibrary lib, - void Function(NSURLSessionWebSocketMessage?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= - ffi.NativeCallable, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1) => fn( - arg0.address == 0 - ? null - : NSURLSessionWebSocketMessage._(arg0, lib, - retain: true, release: true), - arg1.address == 0 - ? null - : NSError._(arg1, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; + static objc.NSObject? DTDNodeWithXMLString_(objc.NSString string) { + final _ret = _objc_msgSend_2( + _class_NSXMLNode, _sel_DTDNodeWithXMLString_, string.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } - void call(NSURLSessionWebSocketMessage? arg0, NSError? arg1) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer)>()( - _id, arg0?._id ?? ffi.nullptr, arg1?._id ?? ffi.nullptr); -} + int get kind { + return _objc_msgSend_663(this.pointer, _sel_kind); + } -abstract class NSURLSessionWebSocketCloseCode { - static const int NSURLSessionWebSocketCloseCodeInvalid = 0; - static const int NSURLSessionWebSocketCloseCodeNormalClosure = 1000; - static const int NSURLSessionWebSocketCloseCodeGoingAway = 1001; - static const int NSURLSessionWebSocketCloseCodeProtocolError = 1002; - static const int NSURLSessionWebSocketCloseCodeUnsupportedData = 1003; - static const int NSURLSessionWebSocketCloseCodeNoStatusReceived = 1005; - static const int NSURLSessionWebSocketCloseCodeAbnormalClosure = 1006; - static const int NSURLSessionWebSocketCloseCodeInvalidFramePayloadData = 1007; - static const int NSURLSessionWebSocketCloseCodePolicyViolation = 1008; - static const int NSURLSessionWebSocketCloseCodeMessageTooBig = 1009; - static const int NSURLSessionWebSocketCloseCodeMandatoryExtensionMissing = - 1010; - static const int NSURLSessionWebSocketCloseCodeInternalServerError = 1011; - static const int NSURLSessionWebSocketCloseCodeTLSHandshakeFailure = 1015; -} + objc.NSString? get name { + final _ret = _objc_msgSend_13(this.pointer, _sel_name); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); + } -void _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry = , ffi.Pointer, - ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer) - fn) { - final id = - ++_ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + set name(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setName_, value?.pointer ?? ffi.nullptr); + } -void _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); + objc.NSObject? get objectValue { + final _ret = _objc_msgSend_66(this.pointer, _sel_objectValue); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } -class ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + set objectValue(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setObjectValue_, value?.pointer ?? ffi.nullptr); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError._(pointer, lib, - retain: retain, release: release); + objc.NSString? get stringValue { + final _ret = _objc_msgSend_13(this.pointer, _sel_stringValue); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + set stringValue(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setStringValue_, value?.pointer ?? ffi.nullptr); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.fromFunction( - SwiftLibrary lib, void Function(NSData?, NSURLResponse?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= - ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) => - fn( - arg0.address == 0 - ? null - : NSData._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSURLResponse._(arg1, lib, retain: true, release: true), - arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + void setStringValue_resolvingEntities_(objc.NSString string, bool resolve) { + _objc_msgSend_664(this.pointer, _sel_setStringValue_resolvingEntities_, + string.pointer, resolve); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.listener( - SwiftLibrary lib, void Function(NSData?, NSURLResponse?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= - ffi.NativeCallable, ffi.Pointer, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure((ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - fn( - arg0.address == 0 - ? null - : NSData._(arg0, lib, retain: true, release: true), - arg1.address == 0 - ? null - : NSURLResponse._(arg1, lib, retain: true, release: true), - arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; + int get index { + return _objc_msgSend_29(this.pointer, _sel_index); + } - void call(NSData? arg0, NSURLResponse? arg1, NSError? arg2) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>()( - _id, - arg0?._id ?? ffi.nullptr, - arg1?._id ?? ffi.nullptr, - arg2?._id ?? ffi.nullptr); -} + int get level { + return _objc_msgSend_29(this.pointer, _sel_level); + } -void _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>()(arg0, arg1, arg2); -final _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry = , ffi.Pointer, - ffi.Pointer)>{}; -int _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer) - fn) { - final id = - ++_ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + NSXMLDocument? get rootDocument { + final _ret = _objc_msgSend_688(this.pointer, _sel_rootDocument); + return _ret.address == 0 + ? null + : NSXMLDocument.castFromPointer(_ret, retain: true, release: true); + } -void _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) => - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry[ - block.ref.target.address]!(arg0, arg1, arg2); + NSXMLNode? get parent { + final _ret = _objc_msgSend_689(this.pointer, _sel_parent); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); + } -class ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError._( - ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + int get childCount { + return _objc_msgSend_29(this.pointer, _sel_childCount); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError._(pointer, lib, - retain: retain, release: release); + objc.NSArray? get children { + final _ret = _objc_msgSend_69(this.pointer, _sel_children); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + NSXMLNode? childAtIndex_(int index) { + final _ret = _objc_msgSend_690(this.pointer, _sel_childAtIndex_, index); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.fromFunction( - SwiftLibrary lib, void Function(NSURL?, NSURLResponse?, NSError?) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= - ffi.Pointer.fromFunction, ffi.Pointer, ffi.Pointer, ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2) => fn( - arg0.address == 0 - ? null - : NSURL._(arg0, lib, retain: true, release: true), - arg1.address == 0 - ? null - : NSURLResponse._(arg1, lib, retain: true, release: true), - arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + NSXMLNode? get previousSibling { + final _ret = _objc_msgSend_689(this.pointer, _sel_previousSibling); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.listener( - SwiftLibrary lib, void Function(NSURL?, NSURLResponse?, NSError?) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= - ffi.NativeCallable, ffi.Pointer, ffi.Pointer, ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( - (ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) => - fn( - arg0.address == 0 - ? null - : NSURL._(arg0, lib, retain: true, release: true), - arg1.address == 0 ? null : NSURLResponse._(arg1, lib, retain: true, release: true), - arg2.address == 0 ? null : NSError._(arg2, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function( - ffi.Pointer<_ObjCBlock>, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>? _dartFuncListenerTrampoline; + NSXMLNode? get nextSibling { + final _ret = _objc_msgSend_689(this.pointer, _sel_nextSibling); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); + } - void call(NSURL? arg0, NSURLResponse? arg1, NSError? arg2) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>()( - _id, - arg0?._id ?? ffi.nullptr, - arg1?._id ?? ffi.nullptr, - arg2?._id ?? ffi.nullptr); -} + NSXMLNode? get previousNode { + final _ret = _objc_msgSend_689(this.pointer, _sel_previousNode); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); + } -class NSProtocolChecker extends NSProxy { - NSProtocolChecker._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + NSXMLNode? get nextNode { + final _ret = _objc_msgSend_689(this.pointer, _sel_nextNode); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a [NSProtocolChecker] that points to the same underlying object as [other]. - static NSProtocolChecker castFrom(T other) { - return NSProtocolChecker._(other._id, other._lib, - retain: true, release: true); + void detach() { + _objc_msgSend_82(this.pointer, _sel_detach); } - /// Returns a [NSProtocolChecker] that wraps the given raw object pointer. - static NSProtocolChecker castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSProtocolChecker._(other, lib, retain: retain, release: release); + objc.NSString? get XPath { + final _ret = _objc_msgSend_13(this.pointer, _sel_XPath); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSProtocolChecker]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSProtocolChecker1); + objc.NSString? get localName { + final _ret = _objc_msgSend_13(this.pointer, _sel_localName); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - Protocol get protocol { - final _ret = _lib._objc_msgSend_1098(_id, _lib._sel_protocol1); - return Protocol._(_ret, _lib, retain: true, release: true); + objc.NSString? get prefix { + final _ret = _objc_msgSend_13(this.pointer, _sel_prefix); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSObject? get target { - final _ret = _lib._objc_msgSend_1099(_id, _lib._sel_target1); + objc.NSString? get URI { + final _ret = _objc_msgSend_13(this.pointer, _sel_URI); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSProtocolChecker protocolCheckerWithTarget_protocol_( - SwiftLibrary _lib, NSObject anObject, Protocol aProtocol) { - final _ret = _lib._objc_msgSend_1100( - _lib._class_NSProtocolChecker1, - _lib._sel_protocolCheckerWithTarget_protocol_1, - anObject._id, - aProtocol._id); - return NSProtocolChecker._(_ret, _lib, retain: true, release: true); + set URI(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setURI_, value?.pointer ?? ffi.nullptr); } - NSProtocolChecker initWithTarget_protocol_( - NSObject anObject, Protocol aProtocol) { - final _ret = _lib._objc_msgSend_1100( - _id, _lib._sel_initWithTarget_protocol_1, anObject._id, aProtocol._id); - return NSProtocolChecker._(_ret, _lib, retain: true, release: true); + static objc.NSString localNameForName_(objc.NSString name) { + final _ret = _objc_msgSend_297( + _class_NSXMLNode, _sel_localNameForName_, name.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject alloc(SwiftLibrary _lib) { + static objc.NSString? prefixForName_(objc.NSString name) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSProtocolChecker1, _lib._sel_alloc1); - return NSObject._(_ret, _lib, retain: false, release: true); + _objc_msgSend_14(_class_NSXMLNode, _sel_prefixForName_, name.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static bool respondsToSelector_( - SwiftLibrary _lib, ffi.Pointer aSelector) { - return _lib._objc_msgSend_4(_lib._class_NSProtocolChecker1, - _lib._sel_respondsToSelector_1, aSelector); + static NSXMLNode? predefinedNamespaceForPrefix_(objc.NSString name) { + final _ret = _objc_msgSend_677( + _class_NSXMLNode, _sel_predefinedNamespaceForPrefix_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } -} - -class NSTask extends NSObject { - NSTask._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSTask] that points to the same underlying object as [other]. - static NSTask castFrom(T other) { - return NSTask._(other._id, other._lib, retain: true, release: true); + objc.NSString get description { + final _ret = _objc_msgSend_12(this.pointer, _sel_description); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSTask] that wraps the given raw object pointer. - static NSTask castFromPointer(SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSTask._(other, lib, retain: retain, release: release); + objc.NSString get XMLString { + final _ret = _objc_msgSend_12(this.pointer, _sel_XMLString); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSTask1); + objc.NSString XMLStringWithOptions_(int options) { + final _ret = + _objc_msgSend_691(this.pointer, _sel_XMLStringWithOptions_, options); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - @override - NSTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSTask._(_ret, _lib, retain: true, release: true); + objc.NSString canonicalXMLStringPreservingComments_(bool comments) { + final _ret = _objc_msgSend_692( + this.pointer, _sel_canonicalXMLStringPreservingComments_, comments); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSURL? get executableURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_executableURL1); + objc.NSArray? nodesForXPath_error_( + objc.NSString xpath, ffi.Pointer> error) { + final _ret = _objc_msgSend_281( + this.pointer, _sel_nodesForXPath_error_, xpath.pointer, error); return _ret.address == 0 ? null - : NSURL._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set executableURL(NSURL? value) { - return _lib._objc_msgSend_671( - _id, _lib._sel_setExecutableURL_1, value?._id ?? ffi.nullptr); + objc.NSArray? objectsForXQuery_constants_error_( + objc.NSString xquery, + objc.NSDictionary? constants, + ffi.Pointer> error) { + final _ret = _objc_msgSend_693( + this.pointer, + _sel_objectsForXQuery_constants_error_, + xquery.pointer, + constants?.pointer ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSArray? get arguments { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_arguments1); + objc.NSArray? objectsForXQuery_error_( + objc.NSString xquery, ffi.Pointer> error) { + final _ret = _objc_msgSend_281( + this.pointer, _sel_objectsForXQuery_error_, xquery.pointer, error); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set arguments(NSArray? value) { - return _lib._objc_msgSend_1053( - _id, _lib._sel_setArguments_1, value?._id ?? ffi.nullptr); + static NSXMLNode new1() { + final _ret = _objc_msgSend_40(_class_NSXMLNode, _sel_new); + return NSXMLNode.castFromPointer(_ret, retain: false, release: true); } - NSDictionary? get environment { - final _ret = _lib._objc_msgSend_390(_id, _lib._sel_environment1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static NSXMLNode allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSXMLNode, _sel_allocWithZone_, zone); + return NSXMLNode.castFromPointer(_ret, retain: false, release: true); } - set environment(NSDictionary? value) { - return _lib._objc_msgSend_634( - _id, _lib._sel_setEnvironment_1, value?._id ?? ffi.nullptr); + static NSXMLNode alloc() { + final _ret = _objc_msgSend_40(_class_NSXMLNode, _sel_alloc); + return NSXMLNode.castFromPointer(_ret, retain: false, release: true); } - NSURL? get currentDirectoryURL { - final _ret = _lib._objc_msgSend_45(_id, _lib._sel_currentDirectoryURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSXMLNode, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - set currentDirectoryURL(NSURL? value) { - return _lib._objc_msgSend_671( - _id, _lib._sel_setCurrentDirectoryURL_1, value?._id ?? ffi.nullptr); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSXMLNode, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSData? get launchRequirementData { - final _ret = _lib._objc_msgSend_286(_id, _lib._sel_launchRequirementData1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSXMLNode, _sel_accessInstanceVariablesDirectly); } - set launchRequirementData(NSData? value) { - return _lib._objc_msgSend_1021( - _id, _lib._sel_setLaunchRequirementData_1, value?._id ?? ffi.nullptr); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSXMLNode, _sel_useStoredAccessor); } - NSObject? get standardInput { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_standardInput1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSXMLNode, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - set standardInput(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setStandardInput_1, value?._id ?? ffi.nullptr); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSXMLNode, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSObject? get standardOutput { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_standardOutput1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSXMLNode, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - set standardOutput(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setStandardOutput_1, value?._id ?? ffi.nullptr); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSXMLNode, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSObject? get standardError { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_standardError1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSXMLNode, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - set standardError(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setStandardError_1, value?._id ?? ffi.nullptr); - } +late final _class_NSXMLNode = objc.getClass("NSXMLNode"); + +abstract class NSXMLNodeKind { + static const int NSXMLInvalidKind = 0; + static const int NSXMLDocumentKind = 1; + static const int NSXMLElementKind = 2; + static const int NSXMLAttributeKind = 3; + static const int NSXMLNamespaceKind = 4; + static const int NSXMLProcessingInstructionKind = 5; + static const int NSXMLCommentKind = 6; + static const int NSXMLTextKind = 7; + static const int NSXMLDTDKind = 8; + static const int NSXMLEntityDeclarationKind = 9; + static const int NSXMLAttributeDeclarationKind = 10; + static const int NSXMLElementDeclarationKind = 11; + static const int NSXMLNotationDeclarationKind = 12; +} + +late final _sel_initWithKind_ = objc.registerName("initWithKind:"); +final _objc_msgSend_658 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int)>(); + +abstract class NSXMLNodeOptions { + static const int NSXMLNodeOptionsNone = 0; + static const int NSXMLNodeIsCDATA = 1; + static const int NSXMLNodeExpandEmptyElement = 2; + static const int NSXMLNodeCompactEmptyElement = 4; + static const int NSXMLNodeUseSingleQuotes = 8; + static const int NSXMLNodeUseDoubleQuotes = 16; + static const int NSXMLNodeNeverEscapeContents = 32; + static const int NSXMLDocumentTidyHTML = 512; + static const int NSXMLDocumentTidyXML = 1024; + static const int NSXMLDocumentValidate = 8192; + static const int NSXMLNodeLoadExternalEntitiesAlways = 16384; + static const int NSXMLNodeLoadExternalEntitiesSameOriginOnly = 32768; + static const int NSXMLNodeLoadExternalEntitiesNever = 524288; + static const int NSXMLDocumentXInclude = 65536; + static const int NSXMLNodePrettyPrint = 131072; + static const int NSXMLDocumentIncludeContentTypeDeclaration = 262144; + static const int NSXMLNodePreserveNamespaceOrder = 1048576; + static const int NSXMLNodePreserveAttributeOrder = 2097152; + static const int NSXMLNodePreserveEntities = 4194304; + static const int NSXMLNodePreservePrefixes = 8388608; + static const int NSXMLNodePreserveCDATA = 16777216; + static const int NSXMLNodePreserveWhitespace = 33554432; + static const int NSXMLNodePreserveDTD = 67108864; + static const int NSXMLNodePreserveCharacterReferences = 134217728; + static const int NSXMLNodePromoteSignificantWhitespace = 268435456; + static const int NSXMLNodePreserveEmptyElements = 6; + static const int NSXMLNodePreserveQuotes = 24; + static const int NSXMLNodePreserveAll = 4293918750; +} + +late final _sel_initWithKind_options_ = + objc.registerName("initWithKind:options:"); +final _objc_msgSend_659 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Int32, ffi.Int32)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int, int)>(); +late final _sel_document = objc.registerName("document"); +late final _sel_documentWithRootElement_ = + objc.registerName("documentWithRootElement:"); +final _objc_msgSend_660 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_elementWithName_ = objc.registerName("elementWithName:"); +late final _sel_elementWithName_URI_ = + objc.registerName("elementWithName:URI:"); +final _objc_msgSend_661 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_elementWithName_stringValue_ = + objc.registerName("elementWithName:stringValue:"); +late final _sel_elementWithName_children_attributes_ = + objc.registerName("elementWithName:children:attributes:"); +final _objc_msgSend_662 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_attributeWithName_stringValue_ = + objc.registerName("attributeWithName:stringValue:"); +late final _sel_attributeWithName_URI_stringValue_ = + objc.registerName("attributeWithName:URI:stringValue:"); +late final _sel_namespaceWithName_stringValue_ = + objc.registerName("namespaceWithName:stringValue:"); +late final _sel_processingInstructionWithName_stringValue_ = + objc.registerName("processingInstructionWithName:stringValue:"); +late final _sel_commentWithStringValue_ = + objc.registerName("commentWithStringValue:"); +late final _sel_textWithStringValue_ = + objc.registerName("textWithStringValue:"); +late final _sel_DTDNodeWithXMLString_ = + objc.registerName("DTDNodeWithXMLString:"); +late final _sel_kind = objc.registerName("kind"); +final _objc_msgSend_663 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_objectValue = objc.registerName("objectValue"); +late final _sel_setObjectValue_ = objc.registerName("setObjectValue:"); +late final _sel_stringValue = objc.registerName("stringValue"); +late final _sel_setStringValue_ = objc.registerName("setStringValue:"); +late final _sel_setStringValue_resolvingEntities_ = + objc.registerName("setStringValue:resolvingEntities:"); +final _objc_msgSend_664 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_index = objc.registerName("index"); +late final _sel_level = objc.registerName("level"); + +class NSXMLDocument extends NSXMLNode { + NSXMLDocument._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSXMLDocument] that points to the same underlying object as [other]. + NSXMLDocument.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSXMLDocument] that wraps the given raw object pointer. + NSXMLDocument.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - bool launchAndReturnError_(ffi.Pointer> error) { - return _lib._objc_msgSend_255(_id, _lib._sel_launchAndReturnError_1, error); + /// Returns whether [obj] is an instance of [NSXMLDocument]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSXMLDocument); } - void interrupt() { - _lib._objc_msgSend_1(_id, _lib._sel_interrupt1); + @override + NSXMLDocument init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSXMLDocument.castFromPointer(_ret, retain: true, release: true); } - void terminate() { - _lib._objc_msgSend_1(_id, _lib._sel_terminate1); + NSXMLDocument? initWithXMLString_options_error_(objc.NSString string, + int mask, ffi.Pointer> error) { + final _ret = _objc_msgSend_665(this.pointer, + _sel_initWithXMLString_options_error_, string.pointer, mask, error); + return _ret.address == 0 + ? null + : NSXMLDocument.castFromPointer(_ret, retain: true, release: true); } - bool suspend() { - return _lib._objc_msgSend_12(_id, _lib._sel_suspend1); + NSXMLDocument? initWithContentsOfURL_options_error_(objc.NSURL url, int mask, + ffi.Pointer> error) { + final _ret = _objc_msgSend_666(this.pointer, + _sel_initWithContentsOfURL_options_error_, url.pointer, mask, error); + return _ret.address == 0 + ? null + : NSXMLDocument.castFromPointer(_ret, retain: true, release: true); } - bool resume() { - return _lib._objc_msgSend_12(_id, _lib._sel_resume1); + NSXMLDocument? initWithData_options_error_(objc.NSData data, int mask, + ffi.Pointer> error) { + final _ret = _objc_msgSend_667(this.pointer, + _sel_initWithData_options_error_, data.pointer, mask, error); + return _ret.address == 0 + ? null + : NSXMLDocument.castFromPointer(_ret, retain: true, release: true); } - int get processIdentifier { - return _lib._objc_msgSend_237(_id, _lib._sel_processIdentifier1); + NSXMLDocument initWithRootElement_(NSXMLElement? element) { + final _ret = _objc_msgSend_668(this.pointer, _sel_initWithRootElement_, + element?.pointer ?? ffi.nullptr); + return NSXMLDocument.castFromPointer(_ret, retain: true, release: true); } - bool get running { - return _lib._objc_msgSend_12(_id, _lib._sel_isRunning1); + static objc.NSObject replacementClassForClass_(objc.NSObject cls) { + final _ret = _objc_msgSend_387( + _class_NSXMLDocument, _sel_replacementClassForClass_, cls.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - int get terminationStatus { - return _lib._objc_msgSend_237(_id, _lib._sel_terminationStatus1); + objc.NSString? get characterEncoding { + final _ret = _objc_msgSend_13(this.pointer, _sel_characterEncoding); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - int get terminationReason { - return _lib._objc_msgSend_1101(_id, _lib._sel_terminationReason1); + set characterEncoding(objc.NSString? value) { + return _objc_msgSend_46(this.pointer, _sel_setCharacterEncoding_, + value?.pointer ?? ffi.nullptr); } - ObjCBlock_ffiVoid_NSTask? get terminationHandler { - final _ret = _lib._objc_msgSend_1102(_id, _lib._sel_terminationHandler1); + objc.NSString? get version { + final _ret = _objc_msgSend_13(this.pointer, _sel_version); return _ret.address == 0 ? null - : ObjCBlock_ffiVoid_NSTask._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set terminationHandler(ObjCBlock_ffiVoid_NSTask? value) { - return _lib._objc_msgSend_1103( - _id, _lib._sel_setTerminationHandler_1, value?._id ?? ffi.nullptr); + set version(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setVersion_, value?.pointer ?? ffi.nullptr); } - int get qualityOfService { - return _lib._objc_msgSend_543(_id, _lib._sel_qualityOfService1); + bool get standalone { + return _objc_msgSend_7(this.pointer, _sel_isStandalone); } - set qualityOfService(int value) { - return _lib._objc_msgSend_544(_id, _lib._sel_setQualityOfService_1, value); + set standalone(bool value) { + return _objc_msgSend_41(this.pointer, _sel_setStandalone_, value); } - static NSTask? - launchedTaskWithExecutableURL_arguments_error_terminationHandler_( - SwiftLibrary _lib, - NSURL url, - NSArray arguments, - ffi.Pointer> error, - ObjCBlock_ffiVoid_NSTask? terminationHandler) { - final _ret = _lib._objc_msgSend_1104( - _lib._class_NSTask1, - _lib._sel_launchedTaskWithExecutableURL_arguments_error_terminationHandler_1, - url._id, - arguments._id, - error, - terminationHandler?._id ?? ffi.nullptr); + int get documentContentKind { + return _objc_msgSend_669(this.pointer, _sel_documentContentKind); + } + + set documentContentKind(int value) { + return _objc_msgSend_670(this.pointer, _sel_setDocumentContentKind_, value); + } + + objc.NSString? get MIMEType { + final _ret = _objc_msgSend_13(this.pointer, _sel_MIMEType); return _ret.address == 0 ? null - : NSTask._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void waitUntilExit() { - _lib._objc_msgSend_1(_id, _lib._sel_waitUntilExit1); + set MIMEType(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setMIMEType_, value?.pointer ?? ffi.nullptr); } - NSString? get launchPath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_launchPath1); + NSXMLDTD? get DTD { + final _ret = _objc_msgSend_680(this.pointer, _sel_DTD); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSXMLDTD.castFromPointer(_ret, retain: true, release: true); } - set launchPath(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setLaunchPath_1, value?._id ?? ffi.nullptr); + set DTD(NSXMLDTD? value) { + return _objc_msgSend_681( + this.pointer, _sel_setDTD_, value?.pointer ?? ffi.nullptr); } - NSString get currentDirectoryPath { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_currentDirectoryPath1); - return NSString._(_ret, _lib, retain: true, release: true); + void setRootElement_(NSXMLElement root) { + _objc_msgSend_682(this.pointer, _sel_setRootElement_, root.pointer); } - set currentDirectoryPath(NSString value) { - return _lib._objc_msgSend_646( - _id, _lib._sel_setCurrentDirectoryPath_1, value._id); + NSXMLElement? rootElement() { + final _ret = _objc_msgSend_683(this.pointer, _sel_rootElement); + return _ret.address == 0 + ? null + : NSXMLElement.castFromPointer(_ret, retain: true, release: true); } - void launch() { - _lib._objc_msgSend_1(_id, _lib._sel_launch1); + void insertChild_atIndex_(NSXMLNode child, int index) { + _objc_msgSend_671( + this.pointer, _sel_insertChild_atIndex_, child.pointer, index); } - static NSTask launchedTaskWithLaunchPath_arguments_( - SwiftLibrary _lib, NSString path, NSArray arguments) { - final _ret = _lib._objc_msgSend_1105( - _lib._class_NSTask1, - _lib._sel_launchedTaskWithLaunchPath_arguments_1, - path._id, - arguments._id); - return NSTask._(_ret, _lib, retain: true, release: true); + void insertChildren_atIndex_(objc.NSArray children, int index) { + _objc_msgSend_672( + this.pointer, _sel_insertChildren_atIndex_, children.pointer, index); } - static NSTask new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSTask1, _lib._sel_new1); - return NSTask._(_ret, _lib, retain: false, release: true); + void removeChildAtIndex_(int index) { + _objc_msgSend_414(this.pointer, _sel_removeChildAtIndex_, index); } - static NSTask allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSTask1, _lib._sel_allocWithZone_1, zone); - return NSTask._(_ret, _lib, retain: false, release: true); + void setChildren_(objc.NSArray? children) { + _objc_msgSend_260( + this.pointer, _sel_setChildren_, children?.pointer ?? ffi.nullptr); } - static NSTask alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSTask1, _lib._sel_alloc1); - return NSTask._(_ret, _lib, retain: false, release: true); + void addChild_(NSXMLNode child) { + _objc_msgSend_673(this.pointer, _sel_addChild_, child.pointer); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + void replaceChildAtIndex_withNode_(int index, NSXMLNode node) { + _objc_msgSend_674( + this.pointer, _sel_replaceChildAtIndex_withNode_, index, node.pointer); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + objc.NSData get XMLData { + final _ret = _objc_msgSend_104(this.pointer, _sel_XMLData); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSTask1, _lib._sel_accessInstanceVariablesDirectly1); + objc.NSData XMLDataWithOptions_(int options) { + final _ret = + _objc_msgSend_684(this.pointer, _sel_XMLDataWithOptions_, options); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSTask1, _lib._sel_useStoredAccessor1); + objc.NSObject? objectByApplyingXSLT_arguments_error_( + objc.NSData xslt, + objc.NSDictionary? arguments, + ffi.Pointer> error) { + final _ret = _objc_msgSend_685( + this.pointer, + _sel_objectByApplyingXSLT_arguments_error_, + xslt.pointer, + arguments?.pointer ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + objc.NSObject? objectByApplyingXSLTString_arguments_error_( + objc.NSString xslt, + objc.NSDictionary? arguments, + ffi.Pointer> error) { + final _ret = _objc_msgSend_686( + this.pointer, + _sel_objectByApplyingXSLTString_arguments_error_, + xslt.pointer, + arguments?.pointer ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + objc.NSObject? objectByApplyingXSLTAtURL_arguments_error_( + objc.NSURL xsltURL, + objc.NSDictionary? argument, + ffi.Pointer> error) { + final _ret = _objc_msgSend_687( + this.pointer, + _sel_objectByApplyingXSLTAtURL_arguments_error_, + xsltURL.pointer, + argument?.pointer ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + bool validateAndReturnError_( + ffi.Pointer> error) { + return _objc_msgSend_8(this.pointer, _sel_validateAndReturnError_, error); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSTask1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + @override + NSXMLDocument initWithKind_(int kind) { + final _ret = _objc_msgSend_658(this.pointer, _sel_initWithKind_, kind); + return NSXMLDocument.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSTask1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + @override + NSXMLDocument initWithKind_options_(int kind, int options) { + final _ret = _objc_msgSend_659( + this.pointer, _sel_initWithKind_options_, kind, options); + return NSXMLDocument.castFromPointer(_ret, retain: true, release: true); } -} -abstract class NSTaskTerminationReason { - static const int NSTaskTerminationReasonExit = 1; - static const int NSTaskTerminationReasonUncaughtSignal = 2; -} - -void _ObjCBlock_ffiVoid_NSTask_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - block.ref.target - .cast< - ffi - .NativeFunction arg0)>>() - .asFunction)>()(arg0); -final _ObjCBlock_ffiVoid_NSTask_closureRegistry = - )>{}; -int _ObjCBlock_ffiVoid_NSTask_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSTask_registerClosure( - void Function(ffi.Pointer) fn) { - final id = ++_ObjCBlock_ffiVoid_NSTask_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSTask_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + static objc.NSObject document() { + final _ret = _objc_msgSend_40(_class_NSXMLDocument, _sel_document); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } -void _ObjCBlock_ffiVoid_NSTask_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) => - _ObjCBlock_ffiVoid_NSTask_closureRegistry[block.ref.target.address]!(arg0); + static objc.NSObject documentWithRootElement_(NSXMLElement element) { + final _ret = _objc_msgSend_660( + _class_NSXMLDocument, _sel_documentWithRootElement_, element.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } -class ObjCBlock_ffiVoid_NSTask extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSTask._(ffi.Pointer<_ObjCBlock> id, SwiftLibrary lib, - {bool retain = false, bool release = true}) - : super._(id, lib, retain: retain, release: release); + static objc.NSObject elementWithName_(objc.NSString name) { + final _ret = _objc_msgSend_35( + _class_NSXMLDocument, _sel_elementWithName_, name.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a block that wraps the given raw block pointer. - static ObjCBlock_ffiVoid_NSTask castFromPointer( - SwiftLibrary lib, ffi.Pointer<_ObjCBlock> pointer, - {bool retain = false, bool release = false}) { - return ObjCBlock_ffiVoid_NSTask._(pointer, lib, - retain: retain, release: release); + static objc.NSObject elementWithName_URI_( + objc.NSString name, objc.NSString URI) { + final _ret = _objc_msgSend_661(_class_NSXMLDocument, + _sel_elementWithName_URI_, name.pointer, URI.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Creates a block from a C function pointer. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSTask.fromFunctionPointer( - SwiftLibrary lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0)>> - ptr) - : this._( - lib - ._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSTask_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + static objc.NSObject elementWithName_stringValue_( + objc.NSString name, objc.NSString string) { + final _ret = _objc_msgSend_661(_class_NSXMLDocument, + _sel_elementWithName_stringValue_, name.pointer, string.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a block from a Dart function. - /// - /// This block must be invoked by native code running on the same thread as - /// the isolate that registered it. Invoking the block on the wrong thread - /// will result in a crash. - ObjCBlock_ffiVoid_NSTask.fromFunction( - SwiftLibrary lib, void Function(NSTask) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>( - _ObjCBlock_ffiVoid_NSTask_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSTask_registerClosure( - (ffi.Pointer arg0) => - fn(NSTask._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.Pointer? _dartFuncTrampoline; + static objc.NSObject elementWithName_children_attributes_( + objc.NSString name, objc.NSArray? children, objc.NSArray? attributes) { + final _ret = _objc_msgSend_662( + _class_NSXMLDocument, + _sel_elementWithName_children_attributes_, + name.pointer, + children?.pointer ?? ffi.nullptr, + attributes?.pointer ?? ffi.nullptr); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } - /// Creates a listener block from a Dart function. - /// - /// This is based on FFI's NativeCallable.listener, and has the same - /// capabilities and limitations. This block can be invoked from any thread, - /// but only supports void functions, and is not run synchronously. See - /// NativeCallable.listener for more details. - /// - /// Note that unlike the default behavior of NativeCallable.listener, listener - /// blocks do not keep the isolate alive. - ObjCBlock_ffiVoid_NSTask.listener(SwiftLibrary lib, void Function(NSTask) fn) - : this._( - lib._newBlock1( - (_dartFuncListenerTrampoline ??= ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>.listener( - _ObjCBlock_ffiVoid_NSTask_closureTrampoline) - ..keepIsolateAlive = false) - .nativeFunction - .cast(), - _ObjCBlock_ffiVoid_NSTask_registerClosure( - (ffi.Pointer arg0) => - fn(NSTask._(arg0, lib, retain: true, release: true)))), - lib); - static ffi.NativeCallable< - ffi.Void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer)>? - _dartFuncListenerTrampoline; + static objc.NSObject attributeWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLDocument, + _sel_attributeWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } - void call(NSTask arg0) => _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock>, - ffi.Pointer)>()(_id, arg0._id); -} + static objc.NSObject attributeWithName_URI_stringValue_( + objc.NSString name, objc.NSString URI, objc.NSString stringValue) { + final _ret = _objc_msgSend_626( + _class_NSXMLDocument, + _sel_attributeWithName_URI_stringValue_, + name.pointer, + URI.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } -class NSXMLElement extends NSXMLNode { - NSXMLElement._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + static objc.NSObject namespaceWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLDocument, + _sel_namespaceWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a [NSXMLElement] that points to the same underlying object as [other]. - static NSXMLElement castFrom(T other) { - return NSXMLElement._(other._id, other._lib, retain: true, release: true); + static objc.NSObject processingInstructionWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661( + _class_NSXMLDocument, + _sel_processingInstructionWithName_stringValue_, + name.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Returns a [NSXMLElement] that wraps the given raw object pointer. - static NSXMLElement castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSXMLElement._(other, lib, retain: retain, release: release); + static objc.NSObject commentWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35(_class_NSXMLDocument, + _sel_commentWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSXMLElement]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLElement1); + static objc.NSObject textWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLDocument, _sel_textWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSXMLElement initWithName_(NSString name) { - final _ret = _lib._objc_msgSend_31(_id, _lib._sel_initWithName_1, name._id); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + static objc.NSObject? DTDNodeWithXMLString_(objc.NSString string) { + final _ret = _objc_msgSend_2( + _class_NSXMLDocument, _sel_DTDNodeWithXMLString_, string.pointer); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSXMLElement initWithName_URI_(NSString name, NSString? URI) { - final _ret = _lib._objc_msgSend_1142( - _id, _lib._sel_initWithName_URI_1, name._id, URI?._id ?? ffi.nullptr); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + static objc.NSString localNameForName_(objc.NSString name) { + final _ret = _objc_msgSend_297( + _class_NSXMLDocument, _sel_localNameForName_, name.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSXMLElement initWithName_stringValue_(NSString name, NSString? string) { - final _ret = _lib._objc_msgSend_1142( - _id, - _lib._sel_initWithName_stringValue_1, - name._id, - string?._id ?? ffi.nullptr); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + static objc.NSString? prefixForName_(objc.NSString name) { + final _ret = _objc_msgSend_14( + _class_NSXMLDocument, _sel_prefixForName_, name.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSXMLElement? initWithXMLString_error_( - NSString string, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_303( - _id, _lib._sel_initWithXMLString_error_1, string._id, error); + static NSXMLNode? predefinedNamespaceForPrefix_(objc.NSString name) { + final _ret = _objc_msgSend_677( + _class_NSXMLDocument, _sel_predefinedNamespaceForPrefix_, name.pointer); return _ret.address == 0 ? null - : NSXMLElement._(_ret, _lib, retain: true, release: true); + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - @override - NSXMLElement initWithKind_options_(int kind, int options) { - final _ret = _lib._objc_msgSend_1107( - _id, _lib._sel_initWithKind_options_1, kind, options); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + static NSXMLDocument new1() { + final _ret = _objc_msgSend_40(_class_NSXMLDocument, _sel_new); + return NSXMLDocument.castFromPointer(_ret, retain: false, release: true); } - NSArray elementsForName_(NSString name) { + static NSXMLDocument allocWithZone_(ffi.Pointer<_NSZone> zone) { final _ret = - _lib._objc_msgSend_358(_id, _lib._sel_elementsForName_1, name._id); - return NSArray._(_ret, _lib, retain: true, release: true); + _objc_msgSend_47(_class_NSXMLDocument, _sel_allocWithZone_, zone); + return NSXMLDocument.castFromPointer(_ret, retain: false, release: true); } - NSArray elementsForLocalName_URI_(NSString localName, NSString? URI) { - final _ret = _lib._objc_msgSend_1143( - _id, - _lib._sel_elementsForLocalName_URI_1, - localName._id, - URI?._id ?? ffi.nullptr); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSXMLDocument alloc() { + final _ret = _objc_msgSend_40(_class_NSXMLDocument, _sel_alloc); + return NSXMLDocument.castFromPointer(_ret, retain: false, release: true); } - void addAttribute_(NSXMLNode attribute) { - _lib._objc_msgSend_1121(_id, _lib._sel_addAttribute_1, attribute._id); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSXMLDocument, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - void removeAttributeForName_(NSString name) { - _lib._objc_msgSend_247(_id, _lib._sel_removeAttributeForName_1, name._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSXMLDocument, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - NSArray? get attributes { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_attributes1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSXMLDocument, _sel_accessInstanceVariablesDirectly); } - set attributes(NSArray? value) { - return _lib._objc_msgSend_1053( - _id, _lib._sel_setAttributes_1, value?._id ?? ffi.nullptr); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSXMLDocument, _sel_useStoredAccessor); } - void setAttributesWithDictionary_(NSDictionary attributes) { - _lib._objc_msgSend_509( - _id, _lib._sel_setAttributesWithDictionary_1, attributes._id); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSXMLDocument, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - NSXMLNode? attributeForName_(NSString name) { - final _ret = - _lib._objc_msgSend_1125(_id, _lib._sel_attributeForName_1, name._id); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSXMLDocument, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - NSXMLNode? attributeForLocalName_URI_(NSString localName, NSString? URI) { - final _ret = _lib._objc_msgSend_1144( - _id, - _lib._sel_attributeForLocalName_URI_1, - localName._id, - URI?._id ?? ffi.nullptr); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSXMLDocument, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSXMLDocument, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSXMLDocument, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSXMLDocument = objc.getClass("NSXMLDocument"); +late final _sel_initWithXMLString_options_error_ = + objc.registerName("initWithXMLString:options:error:"); +final _objc_msgSend_665 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_initWithContentsOfURL_options_error_ = + objc.registerName("initWithContentsOfURL:options:error:"); +final _objc_msgSend_666 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_initWithData_options_error_ = + objc.registerName("initWithData:options:error:"); +final _objc_msgSend_667 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_initWithRootElement_ = + objc.registerName("initWithRootElement:"); +final _objc_msgSend_668 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_replacementClassForClass_ = + objc.registerName("replacementClassForClass:"); +late final _sel_characterEncoding = objc.registerName("characterEncoding"); +late final _sel_setCharacterEncoding_ = + objc.registerName("setCharacterEncoding:"); +late final _sel_setVersion_ = objc.registerName("setVersion:"); +late final _sel_isStandalone = objc.registerName("isStandalone"); +late final _sel_setStandalone_ = objc.registerName("setStandalone:"); + +abstract class NSXMLDocumentContentKind { + static const int NSXMLDocumentXMLKind = 0; + static const int NSXMLDocumentXHTMLKind = 1; + static const int NSXMLDocumentHTMLKind = 2; + static const int NSXMLDocumentTextKind = 3; +} + +late final _sel_documentContentKind = objc.registerName("documentContentKind"); +final _objc_msgSend_669 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDocumentContentKind_ = + objc.registerName("setDocumentContentKind:"); +final _objc_msgSend_670 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setMIMEType_ = objc.registerName("setMIMEType:"); + +class NSXMLDTD extends NSXMLNode { + NSXMLDTD._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSXMLDTD] that points to the same underlying object as [other]. + NSXMLDTD.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSXMLDTD] that wraps the given raw object pointer. + NSXMLDTD.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSXMLDTD]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSXMLDTD); } - void addNamespace_(NSXMLNode aNamespace) { - _lib._objc_msgSend_1121(_id, _lib._sel_addNamespace_1, aNamespace._id); + @override + NSXMLDTD init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSXMLDTD.castFromPointer(_ret, retain: true, release: true); } - void removeNamespaceForPrefix_(NSString name) { - _lib._objc_msgSend_247(_id, _lib._sel_removeNamespaceForPrefix_1, name._id); + @override + NSXMLDTD initWithKind_options_(int kind, int options) { + final _ret = _objc_msgSend_659( + this.pointer, _sel_initWithKind_options_, kind, options); + return NSXMLDTD.castFromPointer(_ret, retain: true, release: true); } - NSArray? get namespaces { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_namespaces1); + NSXMLDTD? initWithContentsOfURL_options_error_(objc.NSURL url, int mask, + ffi.Pointer> error) { + final _ret = _objc_msgSend_666(this.pointer, + _sel_initWithContentsOfURL_options_error_, url.pointer, mask, error); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - set namespaces(NSArray? value) { - return _lib._objc_msgSend_1053( - _id, _lib._sel_setNamespaces_1, value?._id ?? ffi.nullptr); + : NSXMLDTD.castFromPointer(_ret, retain: true, release: true); } - NSXMLNode? namespaceForPrefix_(NSString name) { - final _ret = - _lib._objc_msgSend_1125(_id, _lib._sel_namespaceForPrefix_1, name._id); + NSXMLDTD? initWithData_options_error_(objc.NSData data, int mask, + ffi.Pointer> error) { + final _ret = _objc_msgSend_667(this.pointer, + _sel_initWithData_options_error_, data.pointer, mask, error); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : NSXMLDTD.castFromPointer(_ret, retain: true, release: true); } - NSXMLNode? resolveNamespaceForName_(NSString name) { - final _ret = _lib._objc_msgSend_1125( - _id, _lib._sel_resolveNamespaceForName_1, name._id); + objc.NSString? get publicID { + final _ret = _objc_msgSend_13(this.pointer, _sel_publicID); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set publicID(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setPublicID_, value?.pointer ?? ffi.nullptr); } - NSString? resolvePrefixForNamespaceURI_(NSString namespaceURI) { - final _ret = _lib._objc_msgSend_186( - _id, _lib._sel_resolvePrefixForNamespaceURI_1, namespaceURI._id); + objc.NSString? get systemID { + final _ret = _objc_msgSend_13(this.pointer, _sel_systemID); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); + } + + set systemID(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setSystemID_, value?.pointer ?? ffi.nullptr); } void insertChild_atIndex_(NSXMLNode child, int index) { - _lib._objc_msgSend_1119( - _id, _lib._sel_insertChild_atIndex_1, child._id, index); + _objc_msgSend_671( + this.pointer, _sel_insertChild_atIndex_, child.pointer, index); } - void insertChildren_atIndex_(NSArray children, int index) { - _lib._objc_msgSend_1120( - _id, _lib._sel_insertChildren_atIndex_1, children._id, index); + void insertChildren_atIndex_(objc.NSArray children, int index) { + _objc_msgSend_672( + this.pointer, _sel_insertChildren_atIndex_, children.pointer, index); } void removeChildAtIndex_(int index) { - _lib._objc_msgSend_470(_id, _lib._sel_removeChildAtIndex_1, index); + _objc_msgSend_414(this.pointer, _sel_removeChildAtIndex_, index); } - void setChildren_(NSArray? children) { - _lib._objc_msgSend_843( - _id, _lib._sel_setChildren_1, children?._id ?? ffi.nullptr); + void setChildren_(objc.NSArray? children) { + _objc_msgSend_260( + this.pointer, _sel_setChildren_, children?.pointer ?? ffi.nullptr); } void addChild_(NSXMLNode child) { - _lib._objc_msgSend_1121(_id, _lib._sel_addChild_1, child._id); + _objc_msgSend_673(this.pointer, _sel_addChild_, child.pointer); } void replaceChildAtIndex_withNode_(int index, NSXMLNode node) { - _lib._objc_msgSend_1122( - _id, _lib._sel_replaceChildAtIndex_withNode_1, index, node._id); + _objc_msgSend_674( + this.pointer, _sel_replaceChildAtIndex_withNode_, index, node.pointer); } - void normalizeAdjacentTextNodesPreservingCDATA_(bool preserve) { - _lib._objc_msgSend_870( - _id, _lib._sel_normalizeAdjacentTextNodesPreservingCDATA_1, preserve); + NSXMLDTDNode? entityDeclarationForName_(objc.NSString name) { + final _ret = _objc_msgSend_678( + this.pointer, _sel_entityDeclarationForName_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); } - void setAttributesAsDictionary_(NSDictionary attributes) { - _lib._objc_msgSend_509( - _id, _lib._sel_setAttributesAsDictionary_1, attributes._id); + NSXMLDTDNode? notationDeclarationForName_(objc.NSString name) { + final _ret = _objc_msgSend_678( + this.pointer, _sel_notationDeclarationForName_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); } - @override - NSXMLElement init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + NSXMLDTDNode? elementDeclarationForName_(objc.NSString name) { + final _ret = _objc_msgSend_678( + this.pointer, _sel_elementDeclarationForName_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); + } + + NSXMLDTDNode? attributeDeclarationForName_elementName_( + objc.NSString name, objc.NSString elementName) { + final _ret = _objc_msgSend_679( + this.pointer, + _sel_attributeDeclarationForName_elementName_, + name.pointer, + elementName.pointer); + return _ret.address == 0 + ? null + : NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); + } + + static NSXMLDTDNode? predefinedEntityDeclarationForName_(objc.NSString name) { + final _ret = _objc_msgSend_678(_class_NSXMLDTD, + _sel_predefinedEntityDeclarationForName_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); } @override - NSXMLElement initWithKind_(int kind) { - final _ret = _lib._objc_msgSend_1106(_id, _lib._sel_initWithKind_1, kind); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + NSXMLDTD initWithKind_(int kind) { + final _ret = _objc_msgSend_658(this.pointer, _sel_initWithKind_, kind); + return NSXMLDTD.castFromPointer(_ret, retain: true, release: true); } - static NSObject document(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLElement1, _lib._sel_document1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject document() { + final _ret = _objc_msgSend_40(_class_NSXMLDTD, _sel_document); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject documentWithRootElement_( - SwiftLibrary _lib, NSXMLElement element) { - final _ret = _lib._objc_msgSend_1108(_lib._class_NSXMLElement1, - _lib._sel_documentWithRootElement_1, element._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject documentWithRootElement_(NSXMLElement element) { + final _ret = _objc_msgSend_660( + _class_NSXMLDTD, _sel_documentWithRootElement_, element.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_(SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSXMLElement1, _lib._sel_elementWithName_1, name._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_(objc.NSString name) { + final _ret = + _objc_msgSend_35(_class_NSXMLDTD, _sel_elementWithName_, name.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_URI_( - SwiftLibrary _lib, NSString name, NSString URI) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLElement1, - _lib._sel_elementWithName_URI_1, name._id, URI._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_URI_( + objc.NSString name, objc.NSString URI) { + final _ret = _objc_msgSend_661( + _class_NSXMLDTD, _sel_elementWithName_URI_, name.pointer, URI.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString string) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLElement1, - _lib._sel_elementWithName_stringValue_1, name._id, string._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_stringValue_( + objc.NSString name, objc.NSString string) { + final _ret = _objc_msgSend_661(_class_NSXMLDTD, + _sel_elementWithName_stringValue_, name.pointer, string.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_children_attributes_(SwiftLibrary _lib, - NSString name, NSArray? children, NSArray? attributes) { - final _ret = _lib._objc_msgSend_1110( - _lib._class_NSXMLElement1, - _lib._sel_elementWithName_children_attributes_1, - name._id, - children?._id ?? ffi.nullptr, - attributes?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_children_attributes_( + objc.NSString name, objc.NSArray? children, objc.NSArray? attributes) { + final _ret = _objc_msgSend_662( + _class_NSXMLDTD, + _sel_elementWithName_children_attributes_, + name.pointer, + children?.pointer ?? ffi.nullptr, + attributes?.pointer ?? ffi.nullptr); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject attributeWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLElement1, - _lib._sel_attributeWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject attributeWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLDTD, + _sel_attributeWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject attributeWithName_URI_stringValue_( - SwiftLibrary _lib, NSString name, NSString URI, NSString stringValue) { - final _ret = _lib._objc_msgSend_1074( - _lib._class_NSXMLElement1, - _lib._sel_attributeWithName_URI_stringValue_1, - name._id, - URI._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject attributeWithName_URI_stringValue_( + objc.NSString name, objc.NSString URI, objc.NSString stringValue) { + final _ret = _objc_msgSend_626( + _class_NSXMLDTD, + _sel_attributeWithName_URI_stringValue_, + name.pointer, + URI.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject namespaceWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLElement1, - _lib._sel_namespaceWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject namespaceWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLDTD, + _sel_namespaceWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject processingInstructionWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109( - _lib._class_NSXMLElement1, - _lib._sel_processingInstructionWithName_stringValue_1, - name._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject processingInstructionWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661( + _class_NSXMLDTD, + _sel_processingInstructionWithName_stringValue_, + name.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject commentWithStringValue_( - SwiftLibrary _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLElement1, - _lib._sel_commentWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject commentWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLDTD, _sel_commentWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject textWithStringValue_( - SwiftLibrary _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLElement1, - _lib._sel_textWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject textWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLDTD, _sel_textWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject? DTDNodeWithXMLString_(SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSXMLElement1, - _lib._sel_DTDNodeWithXMLString_1, string._id); + static objc.NSObject? DTDNodeWithXMLString_(objc.NSString string) { + final _ret = _objc_msgSend_2( + _class_NSXMLDTD, _sel_DTDNodeWithXMLString_, string.pointer); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSString localNameForName_(SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_69( - _lib._class_NSXMLElement1, _lib._sel_localNameForName_1, name._id); - return NSString._(_ret, _lib, retain: true, release: true); + static objc.NSString localNameForName_(objc.NSString name) { + final _ret = _objc_msgSend_297( + _class_NSXMLDTD, _sel_localNameForName_, name.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSString? prefixForName_(SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_186( - _lib._class_NSXMLElement1, _lib._sel_prefixForName_1, name._id); + static objc.NSString? prefixForName_(objc.NSString name) { + final _ret = + _objc_msgSend_14(_class_NSXMLDTD, _sel_prefixForName_, name.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSXMLNode? predefinedNamespaceForPrefix_( - SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_1125(_lib._class_NSXMLElement1, - _lib._sel_predefinedNamespaceForPrefix_1, name._id); + static NSXMLNode? predefinedNamespaceForPrefix_(objc.NSString name) { + final _ret = _objc_msgSend_677( + _class_NSXMLDTD, _sel_predefinedNamespaceForPrefix_, name.pointer); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - static NSXMLElement new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLElement1, _lib._sel_new1); - return NSXMLElement._(_ret, _lib, retain: false, release: true); + static NSXMLDTD new1() { + final _ret = _objc_msgSend_40(_class_NSXMLDTD, _sel_new); + return NSXMLDTD.castFromPointer(_ret, retain: false, release: true); } - static NSXMLElement allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLElement1, _lib._sel_allocWithZone_1, zone); - return NSXMLElement._(_ret, _lib, retain: false, release: true); + static NSXMLDTD allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_NSXMLDTD, _sel_allocWithZone_, zone); + return NSXMLDTD.castFromPointer(_ret, retain: false, release: true); } - static NSXMLElement alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLElement1, _lib._sel_alloc1); - return NSXMLElement._(_ret, _lib, retain: false, release: true); + static NSXMLDTD alloc() { + final _ret = _objc_msgSend_40(_class_NSXMLDTD, _sel_alloc); + return NSXMLDTD.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSXMLElement1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSXMLDTD, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLElement1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSXMLDTD, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLElement1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSXMLDTD, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLElement1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSXMLDTD, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSXMLElement1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSXMLDTD, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSXMLElement1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSXMLDTD, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSXMLElement1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSXMLDTD, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_NSXMLDTD, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSXMLDTD, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSXMLDTD = objc.getClass("NSXMLDTD"); +late final _sel_setPublicID_ = objc.registerName("setPublicID:"); +late final _sel_setSystemID_ = objc.registerName("setSystemID:"); +late final _sel_insertChild_atIndex_ = + objc.registerName("insertChild:atIndex:"); +final _objc_msgSend_671 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_insertChildren_atIndex_ = + objc.registerName("insertChildren:atIndex:"); +final _objc_msgSend_672 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_removeChildAtIndex_ = objc.registerName("removeChildAtIndex:"); +late final _sel_setChildren_ = objc.registerName("setChildren:"); +late final _sel_addChild_ = objc.registerName("addChild:"); +final _objc_msgSend_673 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_replaceChildAtIndex_withNode_ = + objc.registerName("replaceChildAtIndex:withNode:"); +final _objc_msgSend_674 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); + +class NSXMLDTDNode extends NSXMLNode { + NSXMLDTDNode._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSXMLDTDNode] that points to the same underlying object as [other]. + NSXMLDTDNode.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSXMLDTDNode] that wraps the given raw object pointer. + NSXMLDTDNode.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSXMLDTDNode]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSXMLDTDNode); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSXMLElement1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + NSXMLDTDNode? initWithXMLString_(objc.NSString string) { + final _ret = + _objc_msgSend_2(this.pointer, _sel_initWithXMLString_, string.pointer); + return _ret.address == 0 + ? null + : NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLElement1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + @override + NSXMLDTDNode initWithKind_options_(int kind, int options) { + final _ret = _objc_msgSend_659( + this.pointer, _sel_initWithKind_options_, kind, options); + return NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); } -} -class NSXMLNode extends NSObject { - NSXMLNode._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + @override + NSXMLDTDNode init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); + } - /// Returns a [NSXMLNode] that points to the same underlying object as [other]. - static NSXMLNode castFrom(T other) { - return NSXMLNode._(other._id, other._lib, retain: true, release: true); + int get DTDKind { + return _objc_msgSend_675(this.pointer, _sel_DTDKind); } - /// Returns a [NSXMLNode] that wraps the given raw object pointer. - static NSXMLNode castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSXMLNode._(other, lib, retain: retain, release: release); + set DTDKind(int value) { + return _objc_msgSend_676(this.pointer, _sel_setDTDKind_, value); } - /// Returns whether [obj] is an instance of [NSXMLNode]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLNode1); + bool get external1 { + return _objc_msgSend_7(this.pointer, _sel_isExternal); } - @override - NSXMLNode init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLNode._(_ret, _lib, retain: true, release: true); + objc.NSString? get publicID { + final _ret = _objc_msgSend_13(this.pointer, _sel_publicID); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSXMLNode initWithKind_(int kind) { - final _ret = _lib._objc_msgSend_1106(_id, _lib._sel_initWithKind_1, kind); - return NSXMLNode._(_ret, _lib, retain: true, release: true); + set publicID(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setPublicID_, value?.pointer ?? ffi.nullptr); } - NSXMLNode initWithKind_options_(int kind, int options) { - final _ret = _lib._objc_msgSend_1107( - _id, _lib._sel_initWithKind_options_1, kind, options); - return NSXMLNode._(_ret, _lib, retain: true, release: true); + objc.NSString? get systemID { + final _ret = _objc_msgSend_13(this.pointer, _sel_systemID); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject document(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLNode1, _lib._sel_document1); - return NSObject._(_ret, _lib, retain: true, release: true); + set systemID(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setSystemID_, value?.pointer ?? ffi.nullptr); } - static NSObject documentWithRootElement_( - SwiftLibrary _lib, NSXMLElement element) { - final _ret = _lib._objc_msgSend_1108(_lib._class_NSXMLNode1, - _lib._sel_documentWithRootElement_1, element._id); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSString? get notationName { + final _ret = _objc_msgSend_13(this.pointer, _sel_notationName); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_(SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSXMLNode1, _lib._sel_elementWithName_1, name._id); - return NSObject._(_ret, _lib, retain: true, release: true); + set notationName(objc.NSString? value) { + return _objc_msgSend_46( + this.pointer, _sel_setNotationName_, value?.pointer ?? ffi.nullptr); } - static NSObject elementWithName_URI_( - SwiftLibrary _lib, NSString name, NSString URI) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLNode1, - _lib._sel_elementWithName_URI_1, name._id, URI._id); - return NSObject._(_ret, _lib, retain: true, release: true); + @override + NSXMLDTDNode initWithKind_(int kind) { + final _ret = _objc_msgSend_658(this.pointer, _sel_initWithKind_, kind); + return NSXMLDTDNode.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString string) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLNode1, - _lib._sel_elementWithName_stringValue_1, name._id, string._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject document() { + final _ret = _objc_msgSend_40(_class_NSXMLDTDNode, _sel_document); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_children_attributes_(SwiftLibrary _lib, - NSString name, NSArray? children, NSArray? attributes) { - final _ret = _lib._objc_msgSend_1110( - _lib._class_NSXMLNode1, - _lib._sel_elementWithName_children_attributes_1, - name._id, - children?._id ?? ffi.nullptr, - attributes?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject documentWithRootElement_(NSXMLElement element) { + final _ret = _objc_msgSend_660( + _class_NSXMLDTDNode, _sel_documentWithRootElement_, element.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject attributeWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLNode1, - _lib._sel_attributeWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_(objc.NSString name) { + final _ret = _objc_msgSend_35( + _class_NSXMLDTDNode, _sel_elementWithName_, name.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject attributeWithName_URI_stringValue_( - SwiftLibrary _lib, NSString name, NSString URI, NSString stringValue) { - final _ret = _lib._objc_msgSend_1074( - _lib._class_NSXMLNode1, - _lib._sel_attributeWithName_URI_stringValue_1, - name._id, - URI._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_URI_( + objc.NSString name, objc.NSString URI) { + final _ret = _objc_msgSend_661(_class_NSXMLDTDNode, + _sel_elementWithName_URI_, name.pointer, URI.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject namespaceWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLNode1, - _lib._sel_namespaceWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_stringValue_( + objc.NSString name, objc.NSString string) { + final _ret = _objc_msgSend_661(_class_NSXMLDTDNode, + _sel_elementWithName_stringValue_, name.pointer, string.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject processingInstructionWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109( - _lib._class_NSXMLNode1, - _lib._sel_processingInstructionWithName_stringValue_1, - name._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject elementWithName_children_attributes_( + objc.NSString name, objc.NSArray? children, objc.NSArray? attributes) { + final _ret = _objc_msgSend_662( + _class_NSXMLDTDNode, + _sel_elementWithName_children_attributes_, + name.pointer, + children?.pointer ?? ffi.nullptr, + attributes?.pointer ?? ffi.nullptr); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject commentWithStringValue_( - SwiftLibrary _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLNode1, - _lib._sel_commentWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject attributeWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLDTDNode, + _sel_attributeWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject textWithStringValue_( - SwiftLibrary _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLNode1, - _lib._sel_textWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject attributeWithName_URI_stringValue_( + objc.NSString name, objc.NSString URI, objc.NSString stringValue) { + final _ret = _objc_msgSend_626( + _class_NSXMLDTDNode, + _sel_attributeWithName_URI_stringValue_, + name.pointer, + URI.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject? DTDNodeWithXMLString_(SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_38( - _lib._class_NSXMLNode1, _lib._sel_DTDNodeWithXMLString_1, string._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject namespaceWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661(_class_NSXMLDTDNode, + _sel_namespaceWithName_stringValue_, name.pointer, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - int get kind { - return _lib._objc_msgSend_1111(_id, _lib._sel_kind1); + static objc.NSObject processingInstructionWithName_stringValue_( + objc.NSString name, objc.NSString stringValue) { + final _ret = _objc_msgSend_661( + _class_NSXMLDTDNode, + _sel_processingInstructionWithName_stringValue_, + name.pointer, + stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSString? get name { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_name1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static objc.NSObject commentWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLDTDNode, _sel_commentWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set name(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); + static objc.NSObject textWithStringValue_(objc.NSString stringValue) { + final _ret = _objc_msgSend_35( + _class_NSXMLDTDNode, _sel_textWithStringValue_, stringValue.pointer); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSObject? get objectValue { - final _ret = _lib._objc_msgSend_17(_id, _lib._sel_objectValue1); + static objc.NSObject? DTDNodeWithXMLString_(objc.NSString string) { + final _ret = _objc_msgSend_2( + _class_NSXMLDTDNode, _sel_DTDNodeWithXMLString_, string.pointer); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - set objectValue(NSObject? value) { - return _lib._objc_msgSend_416( - _id, _lib._sel_setObjectValue_1, value?._id ?? ffi.nullptr); + static objc.NSString localNameForName_(objc.NSString name) { + final _ret = _objc_msgSend_297( + _class_NSXMLDTDNode, _sel_localNameForName_, name.pointer); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? get stringValue { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_stringValue1); + static objc.NSString? prefixForName_(objc.NSString name) { + final _ret = _objc_msgSend_14( + _class_NSXMLDTDNode, _sel_prefixForName_, name.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set stringValue(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setStringValue_1, value?._id ?? ffi.nullptr); + static NSXMLNode? predefinedNamespaceForPrefix_(objc.NSString name) { + final _ret = _objc_msgSend_677( + _class_NSXMLDTDNode, _sel_predefinedNamespaceForPrefix_, name.pointer); + return _ret.address == 0 + ? null + : NSXMLNode.castFromPointer(_ret, retain: true, release: true); } - void setStringValue_resolvingEntities_(NSString string, bool resolve) { - _lib._objc_msgSend_1112( - _id, _lib._sel_setStringValue_resolvingEntities_1, string._id, resolve); + static NSXMLDTDNode new1() { + final _ret = _objc_msgSend_40(_class_NSXMLDTDNode, _sel_new); + return NSXMLDTDNode.castFromPointer(_ret, retain: false, release: true); } - int get index { - return _lib._objc_msgSend_10(_id, _lib._sel_index1); + static NSXMLDTDNode allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSXMLDTDNode, _sel_allocWithZone_, zone); + return NSXMLDTDNode.castFromPointer(_ret, retain: false, release: true); } - int get level { - return _lib._objc_msgSend_10(_id, _lib._sel_level1); + static NSXMLDTDNode alloc() { + final _ret = _objc_msgSend_40(_class_NSXMLDTDNode, _sel_alloc); + return NSXMLDTDNode.castFromPointer(_ret, retain: false, release: true); } - NSXMLDocument? get rootDocument { - final _ret = _lib._objc_msgSend_1136(_id, _lib._sel_rootDocument1); - return _ret.address == 0 - ? null - : NSXMLDocument._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSXMLDTDNode, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - NSXMLNode? get parent { - final _ret = _lib._objc_msgSend_1137(_id, _lib._sel_parent1); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSXMLDTDNode, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - int get childCount { - return _lib._objc_msgSend_10(_id, _lib._sel_childCount1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSXMLDTDNode, _sel_accessInstanceVariablesDirectly); } - NSArray? get children { - final _ret = _lib._objc_msgSend_84(_id, _lib._sel_children1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSXMLDTDNode, _sel_useStoredAccessor); } - NSXMLNode? childAtIndex_(int index) { - final _ret = _lib._objc_msgSend_1138(_id, _lib._sel_childAtIndex_1, index); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSXMLDTDNode, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSXMLDTDNode, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSXMLDTDNode, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSXMLDTDNode, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSXMLDTDNode, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSXMLDTDNode = objc.getClass("NSXMLDTDNode"); +late final _sel_initWithXMLString_ = objc.registerName("initWithXMLString:"); + +abstract class NSXMLDTDNodeKind { + static const int NSXMLEntityGeneralKind = 1; + static const int NSXMLEntityParsedKind = 2; + static const int NSXMLEntityUnparsedKind = 3; + static const int NSXMLEntityParameterKind = 4; + static const int NSXMLEntityPredefined = 5; + static const int NSXMLAttributeCDATAKind = 6; + static const int NSXMLAttributeIDKind = 7; + static const int NSXMLAttributeIDRefKind = 8; + static const int NSXMLAttributeIDRefsKind = 9; + static const int NSXMLAttributeEntityKind = 10; + static const int NSXMLAttributeEntitiesKind = 11; + static const int NSXMLAttributeNMTokenKind = 12; + static const int NSXMLAttributeNMTokensKind = 13; + static const int NSXMLAttributeEnumerationKind = 14; + static const int NSXMLAttributeNotationKind = 15; + static const int NSXMLElementDeclarationUndefinedKind = 16; + static const int NSXMLElementDeclarationEmptyKind = 17; + static const int NSXMLElementDeclarationAnyKind = 18; + static const int NSXMLElementDeclarationMixedKind = 19; + static const int NSXMLElementDeclarationElementKind = 20; +} + +late final _sel_DTDKind = objc.registerName("DTDKind"); +final _objc_msgSend_675 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDTDKind_ = objc.registerName("setDTDKind:"); +final _objc_msgSend_676 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_isExternal = objc.registerName("isExternal"); +late final _sel_notationName = objc.registerName("notationName"); +late final _sel_setNotationName_ = objc.registerName("setNotationName:"); +late final _sel_localNameForName_ = objc.registerName("localNameForName:"); +late final _sel_prefixForName_ = objc.registerName("prefixForName:"); +late final _sel_predefinedNamespaceForPrefix_ = + objc.registerName("predefinedNamespaceForPrefix:"); +final _objc_msgSend_677 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_entityDeclarationForName_ = + objc.registerName("entityDeclarationForName:"); +final _objc_msgSend_678 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_notationDeclarationForName_ = + objc.registerName("notationDeclarationForName:"); +late final _sel_elementDeclarationForName_ = + objc.registerName("elementDeclarationForName:"); +late final _sel_attributeDeclarationForName_elementName_ = + objc.registerName("attributeDeclarationForName:elementName:"); +final _objc_msgSend_679 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_predefinedEntityDeclarationForName_ = + objc.registerName("predefinedEntityDeclarationForName:"); +late final _sel_DTD = objc.registerName("DTD"); +final _objc_msgSend_680 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setDTD_ = objc.registerName("setDTD:"); +final _objc_msgSend_681 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setRootElement_ = objc.registerName("setRootElement:"); +final _objc_msgSend_682 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_rootElement = objc.registerName("rootElement"); +final _objc_msgSend_683 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_XMLData = objc.registerName("XMLData"); +late final _sel_XMLDataWithOptions_ = objc.registerName("XMLDataWithOptions:"); +final _objc_msgSend_684 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_objectByApplyingXSLT_arguments_error_ = + objc.registerName("objectByApplyingXSLT:arguments:error:"); +final _objc_msgSend_685 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_objectByApplyingXSLTString_arguments_error_ = + objc.registerName("objectByApplyingXSLTString:arguments:error:"); +final _objc_msgSend_686 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_objectByApplyingXSLTAtURL_arguments_error_ = + objc.registerName("objectByApplyingXSLTAtURL:arguments:error:"); +final _objc_msgSend_687 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_validateAndReturnError_ = + objc.registerName("validateAndReturnError:"); +late final _sel_rootDocument = objc.registerName("rootDocument"); +final _objc_msgSend_688 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_parent = objc.registerName("parent"); +final _objc_msgSend_689 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_childCount = objc.registerName("childCount"); +late final _sel_children = objc.registerName("children"); +late final _sel_childAtIndex_ = objc.registerName("childAtIndex:"); +final _objc_msgSend_690 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_previousSibling = objc.registerName("previousSibling"); +late final _sel_nextSibling = objc.registerName("nextSibling"); +late final _sel_previousNode = objc.registerName("previousNode"); +late final _sel_nextNode = objc.registerName("nextNode"); +late final _sel_detach = objc.registerName("detach"); +late final _sel_XPath = objc.registerName("XPath"); +late final _sel_localName = objc.registerName("localName"); +late final _sel_prefix = objc.registerName("prefix"); +late final _sel_URI = objc.registerName("URI"); +late final _sel_setURI_ = objc.registerName("setURI:"); +late final _sel_XMLString = objc.registerName("XMLString"); +late final _sel_XMLStringWithOptions_ = + objc.registerName("XMLStringWithOptions:"); +final _objc_msgSend_691 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_canonicalXMLStringPreservingComments_ = + objc.registerName("canonicalXMLStringPreservingComments:"); +final _objc_msgSend_692 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, bool)>(); +late final _sel_nodesForXPath_error_ = + objc.registerName("nodesForXPath:error:"); +late final _sel_objectsForXQuery_constants_error_ = + objc.registerName("objectsForXQuery:constants:error:"); +final _objc_msgSend_693 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_objectsForXQuery_error_ = + objc.registerName("objectsForXQuery:error:"); +late final _sel_initWithName_URI_ = objc.registerName("initWithName:URI:"); +final _objc_msgSend_694 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithName_stringValue_ = + objc.registerName("initWithName:stringValue:"); +late final _sel_initWithXMLString_error_ = + objc.registerName("initWithXMLString:error:"); +final _objc_msgSend_695 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_elementsForName_ = objc.registerName("elementsForName:"); +late final _sel_elementsForLocalName_URI_ = + objc.registerName("elementsForLocalName:URI:"); +final _objc_msgSend_696 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_addAttribute_ = objc.registerName("addAttribute:"); +late final _sel_removeAttributeForName_ = + objc.registerName("removeAttributeForName:"); +late final _sel_attributes = objc.registerName("attributes"); +late final _sel_setAttributes_ = objc.registerName("setAttributes:"); +late final _sel_setAttributesWithDictionary_ = + objc.registerName("setAttributesWithDictionary:"); +final _objc_msgSend_697 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_attributeForName_ = objc.registerName("attributeForName:"); +late final _sel_attributeForLocalName_URI_ = + objc.registerName("attributeForLocalName:URI:"); +final _objc_msgSend_698 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_addNamespace_ = objc.registerName("addNamespace:"); +late final _sel_removeNamespaceForPrefix_ = + objc.registerName("removeNamespaceForPrefix:"); +late final _sel_namespaces = objc.registerName("namespaces"); +late final _sel_setNamespaces_ = objc.registerName("setNamespaces:"); +late final _sel_namespaceForPrefix_ = objc.registerName("namespaceForPrefix:"); +late final _sel_resolveNamespaceForName_ = + objc.registerName("resolveNamespaceForName:"); +late final _sel_resolvePrefixForNamespaceURI_ = + objc.registerName("resolvePrefixForNamespaceURI:"); +late final _sel_normalizeAdjacentTextNodesPreservingCDATA_ = + objc.registerName("normalizeAdjacentTextNodesPreservingCDATA:"); +late final _sel_setAttributesAsDictionary_ = + objc.registerName("setAttributesAsDictionary:"); + +class NSScriptClassDescription extends NSClassDescription { + NSScriptClassDescription._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSScriptClassDescription] that points to the same underlying object as [other]. + NSScriptClassDescription.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSScriptClassDescription] that wraps the given raw object pointer. + NSScriptClassDescription.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSScriptClassDescription]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSScriptClassDescription); + } + + static NSScriptClassDescription? classDescriptionForClass_( + objc.NSObject aClass) { + final _ret = _objc_msgSend_701(_class_NSScriptClassDescription, + _sel_classDescriptionForClass_, aClass.pointer); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : NSScriptClassDescription.castFromPointer(_ret, + retain: true, release: true); } - NSXMLNode? get previousSibling { - final _ret = _lib._objc_msgSend_1137(_id, _lib._sel_previousSibling1); + NSScriptClassDescription? initWithSuiteName_className_dictionary_( + objc.NSString suiteName, + objc.NSString className, + objc.NSDictionary? classDeclaration) { + final _ret = _objc_msgSend_702( + this.pointer, + _sel_initWithSuiteName_className_dictionary_, + suiteName.pointer, + className.pointer, + classDeclaration?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSScriptClassDescription.castFromPointer(_ret, + retain: true, release: true); + } + + objc.NSString? get suiteName { + final _ret = _objc_msgSend_13(this.pointer, _sel_suiteName); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSXMLNode? get nextSibling { - final _ret = _lib._objc_msgSend_1137(_id, _lib._sel_nextSibling1); + objc.NSString? get className { + final _ret = _objc_msgSend_13(this.pointer, _sel_className); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSXMLNode? get previousNode { - final _ret = _lib._objc_msgSend_1137(_id, _lib._sel_previousNode1); + objc.NSString? get implementationClassName { + final _ret = _objc_msgSend_13(this.pointer, _sel_implementationClassName); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSXMLNode? get nextNode { - final _ret = _lib._objc_msgSend_1137(_id, _lib._sel_nextNode1); + NSScriptClassDescription? get superclassDescription { + final _ret = _objc_msgSend_703(this.pointer, _sel_superclassDescription); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : NSScriptClassDescription.castFromPointer(_ret, + retain: true, release: true); } - void detach() { - _lib._objc_msgSend_1(_id, _lib._sel_detach1); + int get appleEventCode { + return _objc_msgSend_704(this.pointer, _sel_appleEventCode); + } + + bool matchesAppleEventCode_(int appleEventCode) { + return _objc_msgSend_705( + this.pointer, _sel_matchesAppleEventCode_, appleEventCode); + } + + bool supportsCommand_(NSScriptCommandDescription commandDescription) { + return _objc_msgSend_747( + this.pointer, _sel_supportsCommand_, commandDescription.pointer); } - NSString? get XPath { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_XPath1); + ffi.Pointer selectorForCommand_( + NSScriptCommandDescription commandDescription) { + return _objc_msgSend_748( + this.pointer, _sel_selectorForCommand_, commandDescription.pointer); + } + + objc.NSString? typeForKey_(objc.NSString key) { + final _ret = _objc_msgSend_14(this.pointer, _sel_typeForKey_, key.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? get localName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_localName1); + NSScriptClassDescription? classDescriptionForKey_(objc.NSString key) { + final _ret = _objc_msgSend_749( + this.pointer, _sel_classDescriptionForKey_, key.pointer); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSScriptClassDescription.castFromPointer(_ret, + retain: true, release: true); } - NSString? get prefix { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_prefix1); + int appleEventCodeForKey_(objc.NSString key) { + return _objc_msgSend_706( + this.pointer, _sel_appleEventCodeForKey_, key.pointer); + } + + objc.NSString? keyWithAppleEventCode_(int appleEventCode) { + final _ret = _objc_msgSend_750( + this.pointer, _sel_keyWithAppleEventCode_, appleEventCode); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? get URI { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_URI1); + objc.NSString? get defaultSubcontainerAttributeKey { + final _ret = + _objc_msgSend_13(this.pointer, _sel_defaultSubcontainerAttributeKey); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set URI(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setURI_1, value?._id ?? ffi.nullptr); + bool isLocationRequiredToCreateForKey_(objc.NSString toManyRelationshipKey) { + return _objc_msgSend_51(this.pointer, + _sel_isLocationRequiredToCreateForKey_, toManyRelationshipKey.pointer); } - static NSString localNameForName_(SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_69( - _lib._class_NSXMLNode1, _lib._sel_localNameForName_1, name._id); - return NSString._(_ret, _lib, retain: true, release: true); + bool hasPropertyForKey_(objc.NSString key) { + return _objc_msgSend_51(this.pointer, _sel_hasPropertyForKey_, key.pointer); } - static NSString? prefixForName_(SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_186( - _lib._class_NSXMLNode1, _lib._sel_prefixForName_1, name._id); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + bool hasOrderedToManyRelationshipForKey_(objc.NSString key) { + return _objc_msgSend_51( + this.pointer, _sel_hasOrderedToManyRelationshipForKey_, key.pointer); + } + + bool hasReadablePropertyForKey_(objc.NSString key) { + return _objc_msgSend_51( + this.pointer, _sel_hasReadablePropertyForKey_, key.pointer); + } + + bool hasWritablePropertyForKey_(objc.NSString key) { + return _objc_msgSend_51( + this.pointer, _sel_hasWritablePropertyForKey_, key.pointer); + } + + bool isReadOnlyKey_(objc.NSString key) { + return _objc_msgSend_51(this.pointer, _sel_isReadOnlyKey_, key.pointer); + } + + static void registerClassDescription_forClass_( + NSClassDescription description, objc.NSObject aClass) { + _objc_msgSend_699( + _class_NSScriptClassDescription, + _sel_registerClassDescription_forClass_, + description.pointer, + aClass.pointer); + } + + static void invalidateClassDescriptionCache() { + _objc_msgSend_82( + _class_NSScriptClassDescription, _sel_invalidateClassDescriptionCache); + } + + @override + NSScriptClassDescription init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSScriptClassDescription.castFromPointer(_ret, + retain: true, release: true); + } + + static NSScriptClassDescription new1() { + final _ret = _objc_msgSend_40(_class_NSScriptClassDescription, _sel_new); + return NSScriptClassDescription.castFromPointer(_ret, + retain: false, release: true); + } + + static NSScriptClassDescription allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSScriptClassDescription, _sel_allocWithZone_, zone); + return NSScriptClassDescription.castFromPointer(_ret, + retain: false, release: true); + } + + static NSScriptClassDescription alloc() { + final _ret = _objc_msgSend_40(_class_NSScriptClassDescription, _sel_alloc); + return NSScriptClassDescription.castFromPointer(_ret, + retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSScriptClassDescription, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); + } + + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSScriptClassDescription, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); + } + + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSScriptClassDescription, _sel_accessInstanceVariablesDirectly); + } + + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSScriptClassDescription, _sel_useStoredAccessor); + } + + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSScriptClassDescription, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSScriptClassDescription, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSScriptClassDescription, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSScriptClassDescription, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSScriptClassDescription, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSScriptClassDescription = + objc.getClass("NSScriptClassDescription"); + +class NSClassDescription extends objc.NSObject { + NSClassDescription._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSClassDescription] that points to the same underlying object as [other]. + NSClassDescription.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSClassDescription] that wraps the given raw object pointer. + NSClassDescription.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSClassDescription]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSClassDescription); } - static NSXMLNode? predefinedNamespaceForPrefix_( - SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_1125(_lib._class_NSXMLNode1, - _lib._sel_predefinedNamespaceForPrefix_1, name._id); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + static void registerClassDescription_forClass_( + NSClassDescription description, objc.NSObject aClass) { + _objc_msgSend_699( + _class_NSClassDescription, + _sel_registerClassDescription_forClass_, + description.pointer, + aClass.pointer); } - NSString get description { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); + static void invalidateClassDescriptionCache() { + _objc_msgSend_82( + _class_NSClassDescription, _sel_invalidateClassDescriptionCache); } - NSString get XMLString { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_XMLString1); - return NSString._(_ret, _lib, retain: true, release: true); + static NSClassDescription? classDescriptionForClass_(objc.NSObject aClass) { + final _ret = _objc_msgSend_700(_class_NSClassDescription, + _sel_classDescriptionForClass_, aClass.pointer); + return _ret.address == 0 + ? null + : NSClassDescription.castFromPointer(_ret, retain: true, release: true); } - NSString XMLStringWithOptions_(int options) { - final _ret = - _lib._objc_msgSend_1139(_id, _lib._sel_XMLStringWithOptions_1, options); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray get attributeKeys { + final _ret = _objc_msgSend_6(this.pointer, _sel_attributeKeys); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSString canonicalXMLStringPreservingComments_(bool comments) { - final _ret = _lib._objc_msgSend_1140( - _id, _lib._sel_canonicalXMLStringPreservingComments_1, comments); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSArray get toOneRelationshipKeys { + final _ret = _objc_msgSend_6(this.pointer, _sel_toOneRelationshipKeys); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSArray? nodesForXPath_error_( - NSString xpath, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_443( - _id, _lib._sel_nodesForXPath_error_1, xpath._id, error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + objc.NSArray get toManyRelationshipKeys { + final _ret = _objc_msgSend_6(this.pointer, _sel_toManyRelationshipKeys); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - NSArray? objectsForXQuery_constants_error_(NSString xquery, - NSDictionary? constants, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1141( - _id, - _lib._sel_objectsForXQuery_constants_error_1, - xquery._id, - constants?._id ?? ffi.nullptr, - error); + objc.NSString? inverseForRelationshipKey_(objc.NSString relationshipKey) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_inverseForRelationshipKey_, relationshipKey.pointer); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSArray? objectsForXQuery_error_( - NSString xquery, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_443( - _id, _lib._sel_objectsForXQuery_error_1, xquery._id, error); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + @override + NSClassDescription init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSClassDescription.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLNode new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLNode1, _lib._sel_new1); - return NSXMLNode._(_ret, _lib, retain: false, release: true); + static NSClassDescription new1() { + final _ret = _objc_msgSend_40(_class_NSClassDescription, _sel_new); + return NSClassDescription.castFromPointer(_ret, + retain: false, release: true); } - static NSXMLNode allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLNode1, _lib._sel_allocWithZone_1, zone); - return NSXMLNode._(_ret, _lib, retain: false, release: true); + static NSClassDescription allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSClassDescription, _sel_allocWithZone_, zone); + return NSClassDescription.castFromPointer(_ret, + retain: false, release: true); } - static NSXMLNode alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLNode1, _lib._sel_alloc1); - return NSXMLNode._(_ret, _lib, retain: false, release: true); + static NSClassDescription alloc() { + final _ret = _objc_msgSend_40(_class_NSClassDescription, _sel_alloc); + return NSClassDescription.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSXMLNode1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSClassDescription, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLNode1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSClassDescription, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLNode1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSClassDescription, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLNode1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSClassDescription, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSXMLNode1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSClassDescription, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSXMLNode1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSClassDescription, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSXMLNode1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } - - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSXMLNode1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLNode1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSXMLNodeKind { - static const int NSXMLInvalidKind = 0; - static const int NSXMLDocumentKind = 1; - static const int NSXMLElementKind = 2; - static const int NSXMLAttributeKind = 3; - static const int NSXMLNamespaceKind = 4; - static const int NSXMLProcessingInstructionKind = 5; - static const int NSXMLCommentKind = 6; - static const int NSXMLTextKind = 7; - static const int NSXMLDTDKind = 8; - static const int NSXMLEntityDeclarationKind = 9; - static const int NSXMLAttributeDeclarationKind = 10; - static const int NSXMLElementDeclarationKind = 11; - static const int NSXMLNotationDeclarationKind = 12; -} - -abstract class NSXMLNodeOptions { - static const int NSXMLNodeOptionsNone = 0; - static const int NSXMLNodeIsCDATA = 1; - static const int NSXMLNodeExpandEmptyElement = 2; - static const int NSXMLNodeCompactEmptyElement = 4; - static const int NSXMLNodeUseSingleQuotes = 8; - static const int NSXMLNodeUseDoubleQuotes = 16; - static const int NSXMLNodeNeverEscapeContents = 32; - static const int NSXMLDocumentTidyHTML = 512; - static const int NSXMLDocumentTidyXML = 1024; - static const int NSXMLDocumentValidate = 8192; - static const int NSXMLNodeLoadExternalEntitiesAlways = 16384; - static const int NSXMLNodeLoadExternalEntitiesSameOriginOnly = 32768; - static const int NSXMLNodeLoadExternalEntitiesNever = 524288; - static const int NSXMLDocumentXInclude = 65536; - static const int NSXMLNodePrettyPrint = 131072; - static const int NSXMLDocumentIncludeContentTypeDeclaration = 262144; - static const int NSXMLNodePreserveNamespaceOrder = 1048576; - static const int NSXMLNodePreserveAttributeOrder = 2097152; - static const int NSXMLNodePreserveEntities = 4194304; - static const int NSXMLNodePreservePrefixes = 8388608; - static const int NSXMLNodePreserveCDATA = 16777216; - static const int NSXMLNodePreserveWhitespace = 33554432; - static const int NSXMLNodePreserveDTD = 67108864; - static const int NSXMLNodePreserveCharacterReferences = 134217728; - static const int NSXMLNodePromoteSignificantWhitespace = 268435456; - static const int NSXMLNodePreserveEmptyElements = 6; - static const int NSXMLNodePreserveQuotes = 24; - static const int NSXMLNodePreserveAll = 4293918750; -} - -class NSXMLDocument extends NSXMLNode { - NSXMLDocument._(ffi.Pointer id, SwiftLibrary lib, + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSClassDescription, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSClassDescription, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSClassDescription, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSClassDescription = objc.getClass("NSClassDescription"); +late final _sel_registerClassDescription_forClass_ = + objc.registerName("registerClassDescription:forClass:"); +final _objc_msgSend_699 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_invalidateClassDescriptionCache = + objc.registerName("invalidateClassDescriptionCache"); +late final _sel_classDescriptionForClass_ = + objc.registerName("classDescriptionForClass:"); +final _objc_msgSend_700 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_attributeKeys = objc.registerName("attributeKeys"); +late final _sel_toOneRelationshipKeys = + objc.registerName("toOneRelationshipKeys"); +late final _sel_toManyRelationshipKeys = + objc.registerName("toManyRelationshipKeys"); +late final _sel_inverseForRelationshipKey_ = + objc.registerName("inverseForRelationshipKey:"); +final _objc_msgSend_701 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithSuiteName_className_dictionary_ = + objc.registerName("initWithSuiteName:className:dictionary:"); +final _objc_msgSend_702 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_suiteName = objc.registerName("suiteName"); +late final _sel_className = objc.registerName("className"); +late final _sel_implementationClassName = + objc.registerName("implementationClassName"); +late final _sel_superclassDescription = + objc.registerName("superclassDescription"); +final _objc_msgSend_703 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_appleEventCode = objc.registerName("appleEventCode"); +final _objc_msgSend_704 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedInt Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_matchesAppleEventCode_ = + objc.registerName("matchesAppleEventCode:"); +final _objc_msgSend_705 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, int)>(); + +class NSScriptCommandDescription extends objc.NSObject { + NSScriptCommandDescription._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSXMLDocument] that points to the same underlying object as [other]. - static NSXMLDocument castFrom(T other) { - return NSXMLDocument._(other._id, other._lib, retain: true, release: true); - } + /// Constructs a [NSScriptCommandDescription] that points to the same underlying object as [other]. + NSScriptCommandDescription.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSXMLDocument] that wraps the given raw object pointer. - static NSXMLDocument castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSXMLDocument._(other, lib, retain: retain, release: release); - } + /// Constructs a [NSScriptCommandDescription] that wraps the given raw object pointer. + NSScriptCommandDescription.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - /// Returns whether [obj] is an instance of [NSXMLDocument]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLDocument1); + /// Returns whether [obj] is an instance of [NSScriptCommandDescription]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSScriptCommandDescription); } @override - NSXMLDocument init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLDocument._(_ret, _lib, retain: true, release: true); + objc.NSObject init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSXMLDocument? initWithXMLString_options_error_( - NSString string, int mask, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1113(_id, - _lib._sel_initWithXMLString_options_error_1, string._id, mask, error); - return _ret.address == 0 - ? null - : NSXMLDocument._(_ret, _lib, retain: true, release: true); + NSScriptCommandDescription? initWithSuiteName_commandName_dictionary_( + objc.NSString suiteName, + objc.NSString commandName, + objc.NSDictionary? commandDeclaration) { + final _ret = _objc_msgSend_702( + this.pointer, + _sel_initWithSuiteName_commandName_dictionary_, + suiteName.pointer, + commandName.pointer, + commandDeclaration?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSScriptCommandDescription.castFromPointer(_ret, + retain: true, release: true); } - NSXMLDocument? initWithContentsOfURL_options_error_( - NSURL url, int mask, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1114(_id, - _lib._sel_initWithContentsOfURL_options_error_1, url._id, mask, error); + NSScriptCommandDescription? initWithCoder_(objc.NSCoder inCoder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, inCoder.pointer); return _ret.address == 0 ? null - : NSXMLDocument._(_ret, _lib, retain: true, release: true); + : NSScriptCommandDescription.castFromPointer(_ret, + retain: true, release: true); } - NSXMLDocument? initWithData_options_error_( - NSData data, int mask, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1115( - _id, _lib._sel_initWithData_options_error_1, data._id, mask, error); - return _ret.address == 0 - ? null - : NSXMLDocument._(_ret, _lib, retain: true, release: true); + objc.NSString get suiteName { + final _ret = _objc_msgSend_12(this.pointer, _sel_suiteName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSXMLDocument initWithRootElement_(NSXMLElement? element) { - final _ret = _lib._objc_msgSend_1116( - _id, _lib._sel_initWithRootElement_1, element?._id ?? ffi.nullptr); - return NSXMLDocument._(_ret, _lib, retain: true, release: true); + objc.NSString get commandName { + final _ret = _objc_msgSend_12(this.pointer, _sel_commandName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSObject replacementClassForClass_(SwiftLibrary _lib, NSObject cls) { - final _ret = _lib._objc_msgSend_124(_lib._class_NSXMLDocument1, - _lib._sel_replacementClassForClass_1, cls._id); - return NSObject._(_ret, _lib, retain: true, release: true); + int get appleEventClassCode { + return _objc_msgSend_704(this.pointer, _sel_appleEventClassCode); } - NSString? get characterEncoding { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_characterEncoding1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + int get appleEventCode { + return _objc_msgSend_704(this.pointer, _sel_appleEventCode); } - set characterEncoding(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setCharacterEncoding_1, value?._id ?? ffi.nullptr); + objc.NSString get commandClassName { + final _ret = _objc_msgSend_12(this.pointer, _sel_commandClassName); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - NSString? get version { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_version1); + objc.NSString? get returnType { + final _ret = _objc_msgSend_13(this.pointer, _sel_returnType); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set version(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setVersion_1, value?._id ?? ffi.nullptr); + int get appleEventCodeForReturnType { + return _objc_msgSend_704(this.pointer, _sel_appleEventCodeForReturnType); } - bool get standalone { - return _lib._objc_msgSend_12(_id, _lib._sel_isStandalone1); + objc.NSArray get argumentNames { + final _ret = _objc_msgSend_6(this.pointer, _sel_argumentNames); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - set standalone(bool value) { - return _lib._objc_msgSend_527(_id, _lib._sel_setStandalone_1, value); + objc.NSString? typeForArgumentWithName_(objc.NSString argumentName) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_typeForArgumentWithName_, argumentName.pointer); + return _ret.address == 0 + ? null + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - int get documentContentKind { - return _lib._objc_msgSend_1117(_id, _lib._sel_documentContentKind1); + int appleEventCodeForArgumentWithName_(objc.NSString argumentName) { + return _objc_msgSend_706(this.pointer, + _sel_appleEventCodeForArgumentWithName_, argumentName.pointer); } - set documentContentKind(int value) { - return _lib._objc_msgSend_1118( - _id, _lib._sel_setDocumentContentKind_1, value); + bool isOptionalArgumentWithName_(objc.NSString argumentName) { + return _objc_msgSend_51( + this.pointer, _sel_isOptionalArgumentWithName_, argumentName.pointer); } - NSString? get MIMEType { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_MIMEType1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + NSScriptCommand createCommandInstance() { + final _ret = _objc_msgSend_745(this.pointer, _sel_createCommandInstance); + return NSScriptCommand.castFromPointer(_ret, retain: true, release: true); } - set MIMEType(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setMIMEType_1, value?._id ?? ffi.nullptr); + NSScriptCommand createCommandInstanceWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_746( + this.pointer, _sel_createCommandInstanceWithZone_, zone); + return NSScriptCommand.castFromPointer(_ret, retain: true, release: true); } - NSXMLDTD? get DTD { - final _ret = _lib._objc_msgSend_1128(_id, _lib._sel_DTD1); - return _ret.address == 0 - ? null - : NSXMLDTD._(_ret, _lib, retain: true, release: true); + static NSScriptCommandDescription new1() { + final _ret = _objc_msgSend_40(_class_NSScriptCommandDescription, _sel_new); + return NSScriptCommandDescription.castFromPointer(_ret, + retain: false, release: true); } - set DTD(NSXMLDTD? value) { - return _lib._objc_msgSend_1129( - _id, _lib._sel_setDTD_1, value?._id ?? ffi.nullptr); + static NSScriptCommandDescription allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSScriptCommandDescription, _sel_allocWithZone_, zone); + return NSScriptCommandDescription.castFromPointer(_ret, + retain: false, release: true); } - void setRootElement_(NSXMLElement root) { - _lib._objc_msgSend_1130(_id, _lib._sel_setRootElement_1, root._id); + static NSScriptCommandDescription alloc() { + final _ret = + _objc_msgSend_40(_class_NSScriptCommandDescription, _sel_alloc); + return NSScriptCommandDescription.castFromPointer(_ret, + retain: false, release: true); } - NSXMLElement? rootElement() { - final _ret = _lib._objc_msgSend_1131(_id, _lib._sel_rootElement1); - return _ret.address == 0 - ? null - : NSXMLElement._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSScriptCommandDescription, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - void insertChild_atIndex_(NSXMLNode child, int index) { - _lib._objc_msgSend_1119( - _id, _lib._sel_insertChild_atIndex_1, child._id, index); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSScriptCommandDescription, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - void insertChildren_atIndex_(NSArray children, int index) { - _lib._objc_msgSend_1120( - _id, _lib._sel_insertChildren_atIndex_1, children._id, index); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7(_class_NSScriptCommandDescription, + _sel_accessInstanceVariablesDirectly); } - void removeChildAtIndex_(int index) { - _lib._objc_msgSend_470(_id, _lib._sel_removeChildAtIndex_1, index); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSScriptCommandDescription, _sel_useStoredAccessor); } - void setChildren_(NSArray? children) { - _lib._objc_msgSend_843( - _id, _lib._sel_setChildren_1, children?._id ?? ffi.nullptr); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSScriptCommandDescription, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - void addChild_(NSXMLNode child) { - _lib._objc_msgSend_1121(_id, _lib._sel_addChild_1, child._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSScriptCommandDescription, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - void replaceChildAtIndex_withNode_(int index, NSXMLNode node) { - _lib._objc_msgSend_1122( - _id, _lib._sel_replaceChildAtIndex_withNode_1, index, node._id); - } + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSScriptCommandDescription, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSScriptCommandDescription, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSScriptCommandDescription, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSScriptCommandDescription = + objc.getClass("NSScriptCommandDescription"); +late final _sel_initWithSuiteName_commandName_dictionary_ = + objc.registerName("initWithSuiteName:commandName:dictionary:"); +late final _sel_commandName = objc.registerName("commandName"); +late final _sel_appleEventClassCode = objc.registerName("appleEventClassCode"); +late final _sel_commandClassName = objc.registerName("commandClassName"); +late final _sel_returnType = objc.registerName("returnType"); +late final _sel_appleEventCodeForReturnType = + objc.registerName("appleEventCodeForReturnType"); +late final _sel_argumentNames = objc.registerName("argumentNames"); +late final _sel_typeForArgumentWithName_ = + objc.registerName("typeForArgumentWithName:"); +late final _sel_appleEventCodeForArgumentWithName_ = + objc.registerName("appleEventCodeForArgumentWithName:"); +final _objc_msgSend_706 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedInt Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isOptionalArgumentWithName_ = + objc.registerName("isOptionalArgumentWithName:"); + +class NSScriptCommand extends objc.NSObject { + NSScriptCommand._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSScriptCommand] that points to the same underlying object as [other]. + NSScriptCommand.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSScriptCommand] that wraps the given raw object pointer. + NSScriptCommand.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); - NSData get XMLData { - final _ret = _lib._objc_msgSend_43(_id, _lib._sel_XMLData1); - return NSData._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSScriptCommand]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSScriptCommand); } - NSData XMLDataWithOptions_(int options) { - final _ret = - _lib._objc_msgSend_1132(_id, _lib._sel_XMLDataWithOptions_1, options); - return NSData._(_ret, _lib, retain: true, release: true); + NSScriptCommand initWithCommandDescription_( + NSScriptCommandDescription commandDef) { + final _ret = _objc_msgSend_707( + this.pointer, _sel_initWithCommandDescription_, commandDef.pointer); + return NSScriptCommand.castFromPointer(_ret, retain: true, release: true); } - NSObject? objectByApplyingXSLT_arguments_error_(NSData xslt, - NSDictionary? arguments, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1133( - _id, - _lib._sel_objectByApplyingXSLT_arguments_error_1, - xslt._id, - arguments?._id ?? ffi.nullptr, - error); + NSScriptCommand? initWithCoder_(objc.NSCoder inCoder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, inCoder.pointer); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : NSScriptCommand.castFromPointer(_ret, retain: true, release: true); } - NSObject? objectByApplyingXSLTString_arguments_error_(NSString xslt, - NSDictionary? arguments, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1134( - _id, - _lib._sel_objectByApplyingXSLTString_arguments_error_1, - xslt._id, - arguments?._id ?? ffi.nullptr, - error); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + NSScriptCommandDescription get commandDescription { + final _ret = _objc_msgSend_708(this.pointer, _sel_commandDescription); + return NSScriptCommandDescription.castFromPointer(_ret, + retain: true, release: true); } - NSObject? objectByApplyingXSLTAtURL_arguments_error_(NSURL xsltURL, - NSDictionary? argument, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1135( - _id, - _lib._sel_objectByApplyingXSLTAtURL_arguments_error_1, - xsltURL._id, - argument?._id ?? ffi.nullptr, - error); + objc.NSObject? get directParameter { + final _ret = _objc_msgSend_66(this.pointer, _sel_directParameter); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - bool validateAndReturnError_(ffi.Pointer> error) { - return _lib._objc_msgSend_255( - _id, _lib._sel_validateAndReturnError_1, error); + set directParameter(objc.NSObject? value) { + return _objc_msgSend_188( + this.pointer, _sel_setDirectParameter_, value?.pointer ?? ffi.nullptr); } - @override - NSXMLDocument initWithKind_(int kind) { - final _ret = _lib._objc_msgSend_1106(_id, _lib._sel_initWithKind_1, kind); - return NSXMLDocument._(_ret, _lib, retain: true, release: true); + NSScriptObjectSpecifier? get receiversSpecifier { + final _ret = _objc_msgSend_737(this.pointer, _sel_receiversSpecifier); + return _ret.address == 0 + ? null + : NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - @override - NSXMLDocument initWithKind_options_(int kind, int options) { - final _ret = _lib._objc_msgSend_1107( - _id, _lib._sel_initWithKind_options_1, kind, options); - return NSXMLDocument._(_ret, _lib, retain: true, release: true); + set receiversSpecifier(NSScriptObjectSpecifier? value) { + return _objc_msgSend_738(this.pointer, _sel_setReceiversSpecifier_, + value?.pointer ?? ffi.nullptr); } - static NSObject document(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDocument1, _lib._sel_document1); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSObject? get evaluatedReceivers { + final _ret = _objc_msgSend_66(this.pointer, _sel_evaluatedReceivers); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } + + objc.NSDictionary? get arguments { + final _ret = _objc_msgSend_65(this.pointer, _sel_arguments); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSObject documentWithRootElement_( - SwiftLibrary _lib, NSXMLElement element) { - final _ret = _lib._objc_msgSend_1108(_lib._class_NSXMLDocument1, - _lib._sel_documentWithRootElement_1, element._id); - return NSObject._(_ret, _lib, retain: true, release: true); + set arguments(objc.NSDictionary? value) { + return _objc_msgSend_173( + this.pointer, _sel_setArguments_, value?.pointer ?? ffi.nullptr); } - static NSObject elementWithName_(SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSXMLDocument1, _lib._sel_elementWithName_1, name._id); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSDictionary? get evaluatedArguments { + final _ret = _objc_msgSend_65(this.pointer, _sel_evaluatedArguments); + return _ret.address == 0 + ? null + : objc.NSDictionary.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_URI_( - SwiftLibrary _lib, NSString name, NSString URI) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDocument1, - _lib._sel_elementWithName_URI_1, name._id, URI._id); - return NSObject._(_ret, _lib, retain: true, release: true); + bool get wellFormed { + return _objc_msgSend_7(this.pointer, _sel_isWellFormed); } - static NSObject elementWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString string) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDocument1, - _lib._sel_elementWithName_stringValue_1, name._id, string._id); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSObject? performDefaultImplementation() { + final _ret = + _objc_msgSend_66(this.pointer, _sel_performDefaultImplementation); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject elementWithName_children_attributes_(SwiftLibrary _lib, - NSString name, NSArray? children, NSArray? attributes) { - final _ret = _lib._objc_msgSend_1110( - _lib._class_NSXMLDocument1, - _lib._sel_elementWithName_children_attributes_1, - name._id, - children?._id ?? ffi.nullptr, - attributes?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + objc.NSObject? executeCommand() { + final _ret = _objc_msgSend_66(this.pointer, _sel_executeCommand); + return _ret.address == 0 + ? null + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - static NSObject attributeWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDocument1, - _lib._sel_attributeWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + int get scriptErrorNumber { + return _objc_msgSend_114(this.pointer, _sel_scriptErrorNumber); } - static NSObject attributeWithName_URI_stringValue_( - SwiftLibrary _lib, NSString name, NSString URI, NSString stringValue) { - final _ret = _lib._objc_msgSend_1074( - _lib._class_NSXMLDocument1, - _lib._sel_attributeWithName_URI_stringValue_1, - name._id, - URI._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + set scriptErrorNumber(int value) { + return _objc_msgSend_134(this.pointer, _sel_setScriptErrorNumber_, value); } - static NSObject namespaceWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDocument1, - _lib._sel_namespaceWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + NSAppleEventDescriptor? get scriptErrorOffendingObjectDescriptor { + final _ret = _objc_msgSend_742( + this.pointer, _sel_scriptErrorOffendingObjectDescriptor); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSObject processingInstructionWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109( - _lib._class_NSXMLDocument1, - _lib._sel_processingInstructionWithName_stringValue_1, - name._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + set scriptErrorOffendingObjectDescriptor(NSAppleEventDescriptor? value) { + return _objc_msgSend_743( + this.pointer, + _sel_setScriptErrorOffendingObjectDescriptor_, + value?.pointer ?? ffi.nullptr); } - static NSObject commentWithStringValue_( - SwiftLibrary _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLDocument1, - _lib._sel_commentWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + NSAppleEventDescriptor? get scriptErrorExpectedTypeDescriptor { + final _ret = + _objc_msgSend_742(this.pointer, _sel_scriptErrorExpectedTypeDescriptor); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSObject textWithStringValue_( - SwiftLibrary _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLDocument1, - _lib._sel_textWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + set scriptErrorExpectedTypeDescriptor(NSAppleEventDescriptor? value) { + return _objc_msgSend_743( + this.pointer, + _sel_setScriptErrorExpectedTypeDescriptor_, + value?.pointer ?? ffi.nullptr); } - static NSObject? DTDNodeWithXMLString_(SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSXMLDocument1, - _lib._sel_DTDNodeWithXMLString_1, string._id); + objc.NSString? get scriptErrorString { + final _ret = _objc_msgSend_13(this.pointer, _sel_scriptErrorString); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - static NSString localNameForName_(SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_69( - _lib._class_NSXMLDocument1, _lib._sel_localNameForName_1, name._id); - return NSString._(_ret, _lib, retain: true, release: true); + set scriptErrorString(objc.NSString? value) { + return _objc_msgSend_46(this.pointer, _sel_setScriptErrorString_, + value?.pointer ?? ffi.nullptr); } - static NSString? prefixForName_(SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_186( - _lib._class_NSXMLDocument1, _lib._sel_prefixForName_1, name._id); + static NSScriptCommand? currentCommand() { + final _ret = _objc_msgSend_744(_class_NSScriptCommand, _sel_currentCommand); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSScriptCommand.castFromPointer(_ret, retain: true, release: true); } - static NSXMLNode? predefinedNamespaceForPrefix_( - SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_1125(_lib._class_NSXMLDocument1, - _lib._sel_predefinedNamespaceForPrefix_1, name._id); + NSAppleEventDescriptor? get appleEvent { + final _ret = _objc_msgSend_742(this.pointer, _sel_appleEvent); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLDocument new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDocument1, _lib._sel_new1); - return NSXMLDocument._(_ret, _lib, retain: false, release: true); + void suspendExecution() { + _objc_msgSend_82(this.pointer, _sel_suspendExecution); } - static NSXMLDocument allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLDocument1, _lib._sel_allocWithZone_1, zone); - return NSXMLDocument._(_ret, _lib, retain: false, release: true); + void resumeExecutionWithResult_(objc.NSObject? result) { + _objc_msgSend_215(this.pointer, _sel_resumeExecutionWithResult_, + result?.pointer ?? ffi.nullptr); } - static NSXMLDocument alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDocument1, _lib._sel_alloc1); - return NSXMLDocument._(_ret, _lib, retain: false, release: true); + @override + NSScriptCommand init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSScriptCommand.castFromPointer(_ret, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSXMLDocument1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static NSScriptCommand new1() { + final _ret = _objc_msgSend_40(_class_NSScriptCommand, _sel_new); + return NSScriptCommand.castFromPointer(_ret, retain: false, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLDocument1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static NSScriptCommand allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_47(_class_NSScriptCommand, _sel_allocWithZone_, zone); + return NSScriptCommand.castFromPointer(_ret, retain: false, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDocument1, _lib._sel_accessInstanceVariablesDirectly1); + static NSScriptCommand alloc() { + final _ret = _objc_msgSend_40(_class_NSScriptCommand, _sel_alloc); + return NSScriptCommand.castFromPointer(_ret, retain: false, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDocument1, _lib._sel_useStoredAccessor1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSScriptCommand, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSXMLDocument1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSScriptCommand, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSXMLDocument1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSScriptCommand, _sel_accessInstanceVariablesDirectly); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSXMLDocument1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_NSScriptCommand, _sel_useStoredAccessor); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSXMLDocument1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSScriptCommand, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLDocument1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSScriptCommand, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } -} -abstract class NSXMLDocumentContentKind { - static const int NSXMLDocumentXMLKind = 0; - static const int NSXMLDocumentXHTMLKind = 1; - static const int NSXMLDocumentHTMLKind = 2; - static const int NSXMLDocumentTextKind = 3; -} - -class NSXMLDTD extends NSXMLNode { - NSXMLDTD._(ffi.Pointer id, SwiftLibrary lib, + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSScriptCommand, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSScriptCommand, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_NSScriptCommand, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSScriptCommand = objc.getClass("NSScriptCommand"); +late final _sel_initWithCommandDescription_ = + objc.registerName("initWithCommandDescription:"); +final _objc_msgSend_707 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_commandDescription = objc.registerName("commandDescription"); +final _objc_msgSend_708 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_directParameter = objc.registerName("directParameter"); +late final _sel_setDirectParameter_ = objc.registerName("setDirectParameter:"); + +class NSScriptObjectSpecifier extends objc.NSObject { + NSScriptObjectSpecifier._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [NSXMLDTD] that points to the same underlying object as [other]. - static NSXMLDTD castFrom(T other) { - return NSXMLDTD._(other._id, other._lib, retain: true, release: true); - } + /// Constructs a [NSScriptObjectSpecifier] that points to the same underlying object as [other]. + NSScriptObjectSpecifier.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [NSXMLDTD] that wraps the given raw object pointer. - static NSXMLDTD castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSXMLDTD._(other, lib, retain: retain, release: release); + /// Constructs a [NSScriptObjectSpecifier] that wraps the given raw object pointer. + NSScriptObjectSpecifier.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSScriptObjectSpecifier]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSScriptObjectSpecifier); } - /// Returns whether [obj] is an instance of [NSXMLDTD]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLDTD1); + static NSScriptObjectSpecifier? objectSpecifierWithDescriptor_( + NSAppleEventDescriptor descriptor) { + final _ret = _objc_msgSend_734(_class_NSScriptObjectSpecifier, + _sel_objectSpecifierWithDescriptor_, descriptor.pointer); + return _ret.address == 0 + ? null + : NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - @override - NSXMLDTD init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLDTD._(_ret, _lib, retain: true, release: true); + NSScriptObjectSpecifier initWithContainerSpecifier_key_( + NSScriptObjectSpecifier container, objc.NSString property) { + final _ret = _objc_msgSend_735( + this.pointer, + _sel_initWithContainerSpecifier_key_, + container.pointer, + property.pointer); + return NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - @override - NSXMLDTD initWithKind_options_(int kind, int options) { - final _ret = _lib._objc_msgSend_1107( - _id, _lib._sel_initWithKind_options_1, kind, options); - return NSXMLDTD._(_ret, _lib, retain: true, release: true); + NSScriptObjectSpecifier + initWithContainerClassDescription_containerSpecifier_key_( + NSScriptClassDescription classDesc, + NSScriptObjectSpecifier? container, + objc.NSString property) { + final _ret = _objc_msgSend_736( + this.pointer, + _sel_initWithContainerClassDescription_containerSpecifier_key_, + classDesc.pointer, + container?.pointer ?? ffi.nullptr, + property.pointer); + return NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - NSXMLDTD? initWithContentsOfURL_options_error_( - NSURL url, int mask, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1114(_id, - _lib._sel_initWithContentsOfURL_options_error_1, url._id, mask, error); + NSScriptObjectSpecifier? initWithCoder_(objc.NSCoder inCoder) { + final _ret = + _objc_msgSend_231(this.pointer, _sel_initWithCoder_, inCoder.pointer); return _ret.address == 0 ? null - : NSXMLDTD._(_ret, _lib, retain: true, release: true); + : NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - NSXMLDTD? initWithData_options_error_( - NSData data, int mask, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1115( - _id, _lib._sel_initWithData_options_error_1, data._id, mask, error); + NSScriptObjectSpecifier? get childSpecifier { + final _ret = _objc_msgSend_737(this.pointer, _sel_childSpecifier); return _ret.address == 0 ? null - : NSXMLDTD._(_ret, _lib, retain: true, release: true); + : NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); + } + + set childSpecifier(NSScriptObjectSpecifier? value) { + return _objc_msgSend_738( + this.pointer, _sel_setChildSpecifier_, value?.pointer ?? ffi.nullptr); } - NSString? get publicID { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_publicID1); + NSScriptObjectSpecifier? get containerSpecifier { + final _ret = _objc_msgSend_737(this.pointer, _sel_containerSpecifier); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - set publicID(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setPublicID_1, value?._id ?? ffi.nullptr); + set containerSpecifier(NSScriptObjectSpecifier? value) { + return _objc_msgSend_738(this.pointer, _sel_setContainerSpecifier_, + value?.pointer ?? ffi.nullptr); } - NSString? get systemID { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_systemID1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + bool get containerIsObjectBeingTested { + return _objc_msgSend_7(this.pointer, _sel_containerIsObjectBeingTested); } - set systemID(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setSystemID_1, value?._id ?? ffi.nullptr); + set containerIsObjectBeingTested(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setContainerIsObjectBeingTested_, value); } - void insertChild_atIndex_(NSXMLNode child, int index) { - _lib._objc_msgSend_1119( - _id, _lib._sel_insertChild_atIndex_1, child._id, index); + bool get containerIsRangeContainerObject { + return _objc_msgSend_7(this.pointer, _sel_containerIsRangeContainerObject); } - void insertChildren_atIndex_(NSArray children, int index) { - _lib._objc_msgSend_1120( - _id, _lib._sel_insertChildren_atIndex_1, children._id, index); + set containerIsRangeContainerObject(bool value) { + return _objc_msgSend_41( + this.pointer, _sel_setContainerIsRangeContainerObject_, value); } - void removeChildAtIndex_(int index) { - _lib._objc_msgSend_470(_id, _lib._sel_removeChildAtIndex_1, index); + objc.NSString get key { + final _ret = _objc_msgSend_12(this.pointer, _sel_key); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } - void setChildren_(NSArray? children) { - _lib._objc_msgSend_843( - _id, _lib._sel_setChildren_1, children?._id ?? ffi.nullptr); + set key(objc.NSString value) { + return _objc_msgSend_99(this.pointer, _sel_setKey_, value.pointer); } - void addChild_(NSXMLNode child) { - _lib._objc_msgSend_1121(_id, _lib._sel_addChild_1, child._id); + NSScriptClassDescription? get containerClassDescription { + final _ret = + _objc_msgSend_703(this.pointer, _sel_containerClassDescription); + return _ret.address == 0 + ? null + : NSScriptClassDescription.castFromPointer(_ret, + retain: true, release: true); } - void replaceChildAtIndex_withNode_(int index, NSXMLNode node) { - _lib._objc_msgSend_1122( - _id, _lib._sel_replaceChildAtIndex_withNode_1, index, node._id); + set containerClassDescription(NSScriptClassDescription? value) { + return _objc_msgSend_739(this.pointer, _sel_setContainerClassDescription_, + value?.pointer ?? ffi.nullptr); + } + + NSScriptClassDescription? get keyClassDescription { + final _ret = _objc_msgSend_703(this.pointer, _sel_keyClassDescription); + return _ret.address == 0 + ? null + : NSScriptClassDescription.castFromPointer(_ret, + retain: true, release: true); + } + + ffi.Pointer indicesOfObjectsByEvaluatingWithContainer_count_( + objc.NSObject container, ffi.Pointer count) { + return _objc_msgSend_740( + this.pointer, + _sel_indicesOfObjectsByEvaluatingWithContainer_count_, + container.pointer, + count); } - NSXMLDTDNode? entityDeclarationForName_(NSString name) { - final _ret = _lib._objc_msgSend_1126( - _id, _lib._sel_entityDeclarationForName_1, name._id); + objc.NSObject? objectsByEvaluatingWithContainers_(objc.NSObject containers) { + final _ret = _objc_msgSend_741(this.pointer, + _sel_objectsByEvaluatingWithContainers_, containers.pointer); return _ret.address == 0 ? null - : NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSXMLDTDNode? notationDeclarationForName_(NSString name) { - final _ret = _lib._objc_msgSend_1126( - _id, _lib._sel_notationDeclarationForName_1, name._id); + objc.NSObject? get objectsByEvaluatingSpecifier { + final _ret = + _objc_msgSend_66(this.pointer, _sel_objectsByEvaluatingSpecifier); return _ret.address == 0 ? null - : NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + : objc.NSObject.castFromPointer(_ret, retain: true, release: true); } - NSXMLDTDNode? elementDeclarationForName_(NSString name) { - final _ret = _lib._objc_msgSend_1126( - _id, _lib._sel_elementDeclarationForName_1, name._id); - return _ret.address == 0 - ? null - : NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + int get evaluationErrorNumber { + return _objc_msgSend_114(this.pointer, _sel_evaluationErrorNumber); } - NSXMLDTDNode? attributeDeclarationForName_elementName_( - NSString name, NSString elementName) { - final _ret = _lib._objc_msgSend_1127( - _id, - _lib._sel_attributeDeclarationForName_elementName_1, - name._id, - elementName._id); + set evaluationErrorNumber(int value) { + return _objc_msgSend_134( + this.pointer, _sel_setEvaluationErrorNumber_, value); + } + + NSScriptObjectSpecifier? get evaluationErrorSpecifier { + final _ret = _objc_msgSend_737(this.pointer, _sel_evaluationErrorSpecifier); return _ret.address == 0 ? null - : NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + : NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLDTDNode? predefinedEntityDeclarationForName_( - SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_1126(_lib._class_NSXMLDTD1, - _lib._sel_predefinedEntityDeclarationForName_1, name._id); + NSAppleEventDescriptor? get descriptor { + final _ret = _objc_msgSend_742(this.pointer, _sel_descriptor); return _ret.address == 0 ? null - : NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } @override - NSXMLDTD initWithKind_(int kind) { - final _ret = _lib._objc_msgSend_1106(_id, _lib._sel_initWithKind_1, kind); - return NSXMLDTD._(_ret, _lib, retain: true, release: true); + NSScriptObjectSpecifier init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSScriptObjectSpecifier.castFromPointer(_ret, + retain: true, release: true); } - static NSObject document(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDTD1, _lib._sel_document1); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSScriptObjectSpecifier new1() { + final _ret = _objc_msgSend_40(_class_NSScriptObjectSpecifier, _sel_new); + return NSScriptObjectSpecifier.castFromPointer(_ret, + retain: false, release: true); } - static NSObject documentWithRootElement_( - SwiftLibrary _lib, NSXMLElement element) { - final _ret = _lib._objc_msgSend_1108(_lib._class_NSXMLDTD1, - _lib._sel_documentWithRootElement_1, element._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSScriptObjectSpecifier allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSScriptObjectSpecifier, _sel_allocWithZone_, zone); + return NSScriptObjectSpecifier.castFromPointer(_ret, + retain: false, release: true); } - static NSObject elementWithName_(SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSXMLDTD1, _lib._sel_elementWithName_1, name._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSScriptObjectSpecifier alloc() { + final _ret = _objc_msgSend_40(_class_NSScriptObjectSpecifier, _sel_alloc); + return NSScriptObjectSpecifier.castFromPointer(_ret, + retain: false, release: true); } - static NSObject elementWithName_URI_( - SwiftLibrary _lib, NSString name, NSString URI) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTD1, - _lib._sel_elementWithName_URI_1, name._id, URI._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSScriptObjectSpecifier, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, + aSelector, + anArgument?.pointer ?? ffi.nullptr); } - static NSObject elementWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString string) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTD1, - _lib._sel_elementWithName_stringValue_1, name._id, string._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSScriptObjectSpecifier, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static NSObject elementWithName_children_attributes_(SwiftLibrary _lib, - NSString name, NSArray? children, NSArray? attributes) { - final _ret = _lib._objc_msgSend_1110( - _lib._class_NSXMLDTD1, - _lib._sel_elementWithName_children_attributes_1, - name._id, - children?._id ?? ffi.nullptr, - attributes?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSScriptObjectSpecifier, _sel_accessInstanceVariablesDirectly); } - static NSObject attributeWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTD1, - _lib._sel_attributeWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSScriptObjectSpecifier, _sel_useStoredAccessor); } - static NSObject attributeWithName_URI_stringValue_( - SwiftLibrary _lib, NSString name, NSString URI, NSString stringValue) { - final _ret = _lib._objc_msgSend_1074( - _lib._class_NSXMLDTD1, - _lib._sel_attributeWithName_URI_stringValue_1, - name._id, - URI._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSScriptObjectSpecifier, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static NSObject namespaceWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTD1, - _lib._sel_namespaceWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSScriptObjectSpecifier, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } - static NSObject processingInstructionWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109( - _lib._class_NSXMLDTD1, - _lib._sel_processingInstructionWithName_stringValue_1, - name._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSScriptObjectSpecifier, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSObject commentWithStringValue_( - SwiftLibrary _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLDTD1, - _lib._sel_commentWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSScriptObjectSpecifier, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject textWithStringValue_( - SwiftLibrary _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLDTD1, - _lib._sel_textWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSScriptObjectSpecifier, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } +} - static NSObject? DTDNodeWithXMLString_(SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_38( - _lib._class_NSXMLDTD1, _lib._sel_DTDNodeWithXMLString_1, string._id); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); +late final _class_NSScriptObjectSpecifier = + objc.getClass("NSScriptObjectSpecifier"); + +class NSAppleEventDescriptor extends objc.NSObject { + NSAppleEventDescriptor._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSAppleEventDescriptor] that points to the same underlying object as [other]. + NSAppleEventDescriptor.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSAppleEventDescriptor] that wraps the given raw object pointer. + NSAppleEventDescriptor.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSAppleEventDescriptor]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSAppleEventDescriptor); } - static NSString localNameForName_(SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_69( - _lib._class_NSXMLDTD1, _lib._sel_localNameForName_1, name._id); - return NSString._(_ret, _lib, retain: true, release: true); + static NSAppleEventDescriptor nullDescriptor() { + final _ret = + _objc_msgSend_709(_class_NSAppleEventDescriptor, _sel_nullDescriptor); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSString? prefixForName_(SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_186( - _lib._class_NSXMLDTD1, _lib._sel_prefixForName_1, name._id); + static NSAppleEventDescriptor? descriptorWithDescriptorType_bytes_length_( + int descriptorType, ffi.Pointer bytes, int byteCount) { + final _ret = _objc_msgSend_710( + _class_NSAppleEventDescriptor, + _sel_descriptorWithDescriptorType_bytes_length_, + descriptorType, + bytes, + byteCount); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLNode? predefinedNamespaceForPrefix_( - SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_1125(_lib._class_NSXMLDTD1, - _lib._sel_predefinedNamespaceForPrefix_1, name._id); + static NSAppleEventDescriptor? descriptorWithDescriptorType_data_( + int descriptorType, objc.NSData? data) { + final _ret = _objc_msgSend_711( + _class_NSAppleEventDescriptor, + _sel_descriptorWithDescriptorType_data_, + descriptorType, + data?.pointer ?? ffi.nullptr); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLDTD new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLDTD1, _lib._sel_new1); - return NSXMLDTD._(_ret, _lib, retain: false, release: true); + static NSAppleEventDescriptor descriptorWithBoolean_(int boolean) { + final _ret = _objc_msgSend_712( + _class_NSAppleEventDescriptor, _sel_descriptorWithBoolean_, boolean); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLDTD allocWithZone_(SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLDTD1, _lib._sel_allocWithZone_1, zone); - return NSXMLDTD._(_ret, _lib, retain: false, release: true); + static NSAppleEventDescriptor descriptorWithEnumCode_(int enumerator) { + final _ret = _objc_msgSend_713(_class_NSAppleEventDescriptor, + _sel_descriptorWithEnumCode_, enumerator); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLDTD alloc(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLDTD1, _lib._sel_alloc1); - return NSXMLDTD._(_ret, _lib, retain: false, release: true); + static NSAppleEventDescriptor descriptorWithInt32_(int signedInt) { + final _ret = _objc_msgSend_714( + _class_NSAppleEventDescriptor, _sel_descriptorWithInt32_, signedInt); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSXMLDTD1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument?._id ?? ffi.nullptr); + static NSAppleEventDescriptor descriptorWithDouble_(double doubleValue) { + final _ret = _objc_msgSend_715( + _class_NSAppleEventDescriptor, _sel_descriptorWithDouble_, doubleValue); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLDTD1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static NSAppleEventDescriptor descriptorWithTypeCode_(int typeCode) { + final _ret = _objc_msgSend_713( + _class_NSAppleEventDescriptor, _sel_descriptorWithTypeCode_, typeCode); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDTD1, _lib._sel_accessInstanceVariablesDirectly1); + static NSAppleEventDescriptor descriptorWithString_(objc.NSString string) { + final _ret = _objc_msgSend_716(_class_NSAppleEventDescriptor, + _sel_descriptorWithString_, string.pointer); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDTD1, _lib._sel_useStoredAccessor1); + static NSAppleEventDescriptor descriptorWithDate_(objc.NSDate date) { + final _ret = _objc_msgSend_717( + _class_NSAppleEventDescriptor, _sel_descriptorWithDate_, date.pointer); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSXMLDTD1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static NSAppleEventDescriptor descriptorWithFileURL_(objc.NSURL fileURL) { + final _ret = _objc_msgSend_718(_class_NSAppleEventDescriptor, + _sel_descriptorWithFileURL_, fileURL.pointer); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSXMLDTD1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static NSAppleEventDescriptor + appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_( + int eventClass, + int eventID, + NSAppleEventDescriptor? targetDescriptor, + int returnID, + int transactionID) { + final _ret = _objc_msgSend_719( + _class_NSAppleEventDescriptor, + _sel_appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_, + eventClass, + eventID, + targetDescriptor?.pointer ?? ffi.nullptr, + returnID, + transactionID); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSXMLDTD1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + static NSAppleEventDescriptor listDescriptor() { + final _ret = + _objc_msgSend_709(_class_NSAppleEventDescriptor, _sel_listDescriptor); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSXMLDTD1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSAppleEventDescriptor recordDescriptor() { + final _ret = + _objc_msgSend_709(_class_NSAppleEventDescriptor, _sel_recordDescriptor); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLDTD1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSAppleEventDescriptor currentProcessDescriptor() { + final _ret = _objc_msgSend_709( + _class_NSAppleEventDescriptor, _sel_currentProcessDescriptor); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } -} - -class NSXMLDTDNode extends NSXMLNode { - NSXMLDTDNode._(ffi.Pointer id, SwiftLibrary lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - /// Returns a [NSXMLDTDNode] that points to the same underlying object as [other]. - static NSXMLDTDNode castFrom(T other) { - return NSXMLDTDNode._(other._id, other._lib, retain: true, release: true); + static NSAppleEventDescriptor descriptorWithProcessIdentifier_( + int processIdentifier) { + final _ret = _objc_msgSend_714(_class_NSAppleEventDescriptor, + _sel_descriptorWithProcessIdentifier_, processIdentifier); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - /// Returns a [NSXMLDTDNode] that wraps the given raw object pointer. - static NSXMLDTDNode castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSXMLDTDNode._(other, lib, retain: retain, release: release); + static NSAppleEventDescriptor descriptorWithBundleIdentifier_( + objc.NSString bundleIdentifier) { + final _ret = _objc_msgSend_716(_class_NSAppleEventDescriptor, + _sel_descriptorWithBundleIdentifier_, bundleIdentifier.pointer); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSXMLDTDNode]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLDTDNode1); + static NSAppleEventDescriptor descriptorWithApplicationURL_( + objc.NSURL applicationURL) { + final _ret = _objc_msgSend_718(_class_NSAppleEventDescriptor, + _sel_descriptorWithApplicationURL_, applicationURL.pointer); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - NSXMLDTDNode? initWithXMLString_(NSString string) { + NSAppleEventDescriptor initWithAEDescNoCopy_(ffi.Pointer aeDesc) { final _ret = - _lib._objc_msgSend_38(_id, _lib._sel_initWithXMLString_1, string._id); + _objc_msgSend_720(this.pointer, _sel_initWithAEDescNoCopy_, aeDesc); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: false, release: true); + } + + NSAppleEventDescriptor? initWithDescriptorType_bytes_length_( + int descriptorType, ffi.Pointer bytes, int byteCount) { + final _ret = _objc_msgSend_721( + this.pointer, + _sel_initWithDescriptorType_bytes_length_, + descriptorType, + bytes, + byteCount); return _ret.address == 0 ? null - : NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - @override - NSXMLDTDNode initWithKind_options_(int kind, int options) { - final _ret = _lib._objc_msgSend_1107( - _id, _lib._sel_initWithKind_options_1, kind, options); - return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + NSAppleEventDescriptor? initWithDescriptorType_data_( + int descriptorType, objc.NSData? data) { + final _ret = _objc_msgSend_722( + this.pointer, + _sel_initWithDescriptorType_data_, + descriptorType, + data?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - @override - NSXMLDTDNode init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + NSAppleEventDescriptor + initWithEventClass_eventID_targetDescriptor_returnID_transactionID_( + int eventClass, + int eventID, + NSAppleEventDescriptor? targetDescriptor, + int returnID, + int transactionID) { + final _ret = _objc_msgSend_723( + this.pointer, + _sel_initWithEventClass_eventID_targetDescriptor_returnID_transactionID_, + eventClass, + eventID, + targetDescriptor?.pointer ?? ffi.nullptr, + returnID, + transactionID); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - int get DTDKind { - return _lib._objc_msgSend_1123(_id, _lib._sel_DTDKind1); + NSAppleEventDescriptor initListDescriptor() { + final _ret = _objc_msgSend_40(this.pointer, _sel_initListDescriptor); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - set DTDKind(int value) { - return _lib._objc_msgSend_1124(_id, _lib._sel_setDTDKind_1, value); + NSAppleEventDescriptor initRecordDescriptor() { + final _ret = _objc_msgSend_40(this.pointer, _sel_initRecordDescriptor); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - bool get external1 { - return _lib._objc_msgSend_12(_id, _lib._sel_isExternal1); + ffi.Pointer get aeDesc { + return _objc_msgSend_724(this.pointer, _sel_aeDesc); } - NSString? get publicID { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_publicID1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + int get descriptorType { + return _objc_msgSend_704(this.pointer, _sel_descriptorType); } - set publicID(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setPublicID_1, value?._id ?? ffi.nullptr); + objc.NSData get data { + final _ret = _objc_msgSend_104(this.pointer, _sel_data); + return objc.NSData.castFromPointer(_ret, retain: true, release: true); } - NSString? get systemID { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_systemID1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + int get booleanValue { + return _objc_msgSend_725(this.pointer, _sel_booleanValue); + } + + int get enumCodeValue { + return _objc_msgSend_704(this.pointer, _sel_enumCodeValue); + } + + int get int32Value { + return _objc_msgSend_264(this.pointer, _sel_int32Value); } - set systemID(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setSystemID_1, value?._id ?? ffi.nullptr); + double get doubleValue { + return objc.useMsgSendVariants + ? _objc_msgSend_115Fpret(this.pointer, _sel_doubleValue) + : _objc_msgSend_115(this.pointer, _sel_doubleValue); + } + + int get typeCodeValue { + return _objc_msgSend_704(this.pointer, _sel_typeCodeValue); } - NSString? get notationName { - final _ret = _lib._objc_msgSend_44(_id, _lib._sel_notationName1); + objc.NSString? get stringValue { + final _ret = _objc_msgSend_13(this.pointer, _sel_stringValue); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : objc.NSString.castFromPointer(_ret, retain: true, release: true); } - set notationName(NSString? value) { - return _lib._objc_msgSend_545( - _id, _lib._sel_setNotationName_1, value?._id ?? ffi.nullptr); + objc.NSDate? get dateValue { + final _ret = _objc_msgSend_116(this.pointer, _sel_dateValue); + return _ret.address == 0 + ? null + : objc.NSDate.castFromPointer(_ret, retain: true, release: true); } - @override - NSXMLDTDNode initWithKind_(int kind) { - final _ret = _lib._objc_msgSend_1106(_id, _lib._sel_initWithKind_1, kind); - return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + objc.NSURL? get fileURLValue { + final _ret = _objc_msgSend_10(this.pointer, _sel_fileURLValue); + return _ret.address == 0 + ? null + : objc.NSURL.castFromPointer(_ret, retain: true, release: true); } - static NSObject document(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDTDNode1, _lib._sel_document1); - return NSObject._(_ret, _lib, retain: true, release: true); + int get eventClass { + return _objc_msgSend_704(this.pointer, _sel_eventClass); } - static NSObject documentWithRootElement_( - SwiftLibrary _lib, NSXMLElement element) { - final _ret = _lib._objc_msgSend_1108(_lib._class_NSXMLDTDNode1, - _lib._sel_documentWithRootElement_1, element._id); - return NSObject._(_ret, _lib, retain: true, release: true); + int get eventID { + return _objc_msgSend_704(this.pointer, _sel_eventID); + } + + int get returnID { + return _objc_msgSend_726(this.pointer, _sel_returnID); } - static NSObject elementWithName_(SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_31( - _lib._class_NSXMLDTDNode1, _lib._sel_elementWithName_1, name._id); - return NSObject._(_ret, _lib, retain: true, release: true); + int get transactionID { + return _objc_msgSend_264(this.pointer, _sel_transactionID); } - static NSObject elementWithName_URI_( - SwiftLibrary _lib, NSString name, NSString URI) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTDNode1, - _lib._sel_elementWithName_URI_1, name._id, URI._id); - return NSObject._(_ret, _lib, retain: true, release: true); + void setParamDescriptor_forKeyword_( + NSAppleEventDescriptor descriptor, int keyword) { + _objc_msgSend_727(this.pointer, _sel_setParamDescriptor_forKeyword_, + descriptor.pointer, keyword); } - static NSObject elementWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString string) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTDNode1, - _lib._sel_elementWithName_stringValue_1, name._id, string._id); - return NSObject._(_ret, _lib, retain: true, release: true); + NSAppleEventDescriptor? paramDescriptorForKeyword_(int keyword) { + final _ret = _objc_msgSend_728( + this.pointer, _sel_paramDescriptorForKeyword_, keyword); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSObject elementWithName_children_attributes_(SwiftLibrary _lib, - NSString name, NSArray? children, NSArray? attributes) { - final _ret = _lib._objc_msgSend_1110( - _lib._class_NSXMLDTDNode1, - _lib._sel_elementWithName_children_attributes_1, - name._id, - children?._id ?? ffi.nullptr, - attributes?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + void removeParamDescriptorWithKeyword_(int keyword) { + _objc_msgSend_729( + this.pointer, _sel_removeParamDescriptorWithKeyword_, keyword); } - static NSObject attributeWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTDNode1, - _lib._sel_attributeWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + void setAttributeDescriptor_forKeyword_( + NSAppleEventDescriptor descriptor, int keyword) { + _objc_msgSend_727(this.pointer, _sel_setAttributeDescriptor_forKeyword_, + descriptor.pointer, keyword); } - static NSObject attributeWithName_URI_stringValue_( - SwiftLibrary _lib, NSString name, NSString URI, NSString stringValue) { - final _ret = _lib._objc_msgSend_1074( - _lib._class_NSXMLDTDNode1, - _lib._sel_attributeWithName_URI_stringValue_1, - name._id, - URI._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + NSAppleEventDescriptor? attributeDescriptorForKeyword_(int keyword) { + final _ret = _objc_msgSend_728( + this.pointer, _sel_attributeDescriptorForKeyword_, keyword); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSObject namespaceWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109(_lib._class_NSXMLDTDNode1, - _lib._sel_namespaceWithName_stringValue_1, name._id, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + NSAppleEventDescriptor? sendEventWithOptions_timeout_error_( + int sendOptions, + double timeoutInSeconds, + ffi.Pointer> error) { + final _ret = _objc_msgSend_730( + this.pointer, + _sel_sendEventWithOptions_timeout_error_, + sendOptions, + timeoutInSeconds, + error); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSObject processingInstructionWithName_stringValue_( - SwiftLibrary _lib, NSString name, NSString stringValue) { - final _ret = _lib._objc_msgSend_1109( - _lib._class_NSXMLDTDNode1, - _lib._sel_processingInstructionWithName_stringValue_1, - name._id, - stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + bool get isRecordDescriptor { + return _objc_msgSend_7(this.pointer, _sel_isRecordDescriptor); } - static NSObject commentWithStringValue_( - SwiftLibrary _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLDTDNode1, - _lib._sel_commentWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + int get numberOfItems { + return _objc_msgSend_114(this.pointer, _sel_numberOfItems); } - static NSObject textWithStringValue_( - SwiftLibrary _lib, NSString stringValue) { - final _ret = _lib._objc_msgSend_31(_lib._class_NSXMLDTDNode1, - _lib._sel_textWithStringValue_1, stringValue._id); - return NSObject._(_ret, _lib, retain: true, release: true); + void insertDescriptor_atIndex_(NSAppleEventDescriptor descriptor, int index) { + _objc_msgSend_731(this.pointer, _sel_insertDescriptor_atIndex_, + descriptor.pointer, index); } - static NSObject? DTDNodeWithXMLString_(SwiftLibrary _lib, NSString string) { - final _ret = _lib._objc_msgSend_38(_lib._class_NSXMLDTDNode1, - _lib._sel_DTDNodeWithXMLString_1, string._id); + NSAppleEventDescriptor? descriptorAtIndex_(int index) { + final _ret = + _objc_msgSend_732(this.pointer, _sel_descriptorAtIndex_, index); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); + } + + void removeDescriptorAtIndex_(int index) { + _objc_msgSend_135(this.pointer, _sel_removeDescriptorAtIndex_, index); } - static NSString localNameForName_(SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_69( - _lib._class_NSXMLDTDNode1, _lib._sel_localNameForName_1, name._id); - return NSString._(_ret, _lib, retain: true, release: true); + void setDescriptor_forKeyword_( + NSAppleEventDescriptor descriptor, int keyword) { + _objc_msgSend_727(this.pointer, _sel_setDescriptor_forKeyword_, + descriptor.pointer, keyword); } - static NSString? prefixForName_(SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_186( - _lib._class_NSXMLDTDNode1, _lib._sel_prefixForName_1, name._id); + NSAppleEventDescriptor? descriptorForKeyword_(int keyword) { + final _ret = + _objc_msgSend_728(this.pointer, _sel_descriptorForKeyword_, keyword); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); + } + + void removeDescriptorWithKeyword_(int keyword) { + _objc_msgSend_729(this.pointer, _sel_removeDescriptorWithKeyword_, keyword); + } + + int keywordForDescriptorAtIndex_(int index) { + return _objc_msgSend_733( + this.pointer, _sel_keywordForDescriptorAtIndex_, index); } - static NSXMLNode? predefinedNamespaceForPrefix_( - SwiftLibrary _lib, NSString name) { - final _ret = _lib._objc_msgSend_1125(_lib._class_NSXMLDTDNode1, - _lib._sel_predefinedNamespaceForPrefix_1, name._id); + NSAppleEventDescriptor? coerceToDescriptorType_(int descriptorType) { + final _ret = _objc_msgSend_728( + this.pointer, _sel_coerceToDescriptorType_, descriptorType); return _ret.address == 0 ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + : NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLDTDNode new1(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDTDNode1, _lib._sel_new1); - return NSXMLDTDNode._(_ret, _lib, retain: false, release: true); + @override + NSAppleEventDescriptor init() { + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: true, release: true); } - static NSXMLDTDNode allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLDTDNode1, _lib._sel_allocWithZone_1, zone); - return NSXMLDTDNode._(_ret, _lib, retain: false, release: true); + static NSAppleEventDescriptor new1() { + final _ret = _objc_msgSend_40(_class_NSAppleEventDescriptor, _sel_new); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: false, release: true); } - static NSXMLDTDNode alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDTDNode1, _lib._sel_alloc1); - return NSXMLDTDNode._(_ret, _lib, retain: false, release: true); + static NSAppleEventDescriptor allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47( + _class_NSAppleEventDescriptor, _sel_allocWithZone_, zone); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: false, release: true); + } + + static NSAppleEventDescriptor alloc() { + final _ret = _objc_msgSend_40(_class_NSAppleEventDescriptor, _sel_alloc); + return NSAppleEventDescriptor.castFromPointer(_ret, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSXMLDTDNode1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_NSAppleEventDescriptor, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLDTDNode1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_NSAppleEventDescriptor, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDTDNode1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_NSAppleEventDescriptor, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDTDNode1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7( + _class_NSAppleEventDescriptor, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_NSXMLDTDNode1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_NSAppleEventDescriptor, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_NSXMLDTDNode1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_NSAppleEventDescriptor, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_NSXMLDTDNode1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); - } + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_NSAppleEventDescriptor, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); + } + + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = _objc_msgSend_6( + _class_NSAppleEventDescriptor, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static objc.NSObject classForKeyedUnarchiver() { + final _ret = _objc_msgSend_40( + _class_NSAppleEventDescriptor, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); + } +} + +late final _class_NSAppleEventDescriptor = + objc.getClass("NSAppleEventDescriptor"); +late final _sel_nullDescriptor = objc.registerName("nullDescriptor"); +final _objc_msgSend_709 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_descriptorWithDescriptorType_bytes_length_ = + objc.registerName("descriptorWithDescriptorType:bytes:length:"); +final _objc_msgSend_710 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer, int)>(); +late final _sel_descriptorWithDescriptorType_data_ = + objc.registerName("descriptorWithDescriptorType:data:"); +final _objc_msgSend_711 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_descriptorWithBoolean_ = + objc.registerName("descriptorWithBoolean:"); +final _objc_msgSend_712 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedChar)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_descriptorWithEnumCode_ = + objc.registerName("descriptorWithEnumCode:"); +final _objc_msgSend_713 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_descriptorWithInt32_ = + objc.registerName("descriptorWithInt32:"); +final _objc_msgSend_714 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_descriptorWithDouble_ = + objc.registerName("descriptorWithDouble:"); +final _objc_msgSend_715 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Double)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, double)>(); +late final _sel_descriptorWithTypeCode_ = + objc.registerName("descriptorWithTypeCode:"); +late final _sel_descriptorWithString_ = + objc.registerName("descriptorWithString:"); +final _objc_msgSend_716 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_descriptorWithDate_ = objc.registerName("descriptorWithDate:"); +final _objc_msgSend_717 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_descriptorWithFileURL_ = + objc.registerName("descriptorWithFileURL:"); +final _objc_msgSend_718 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_ = + objc.registerName( + "appleEventWithEventClass:eventID:targetDescriptor:returnID:transactionID:"); +final _objc_msgSend_719 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.UnsignedInt, + ffi.Pointer, + ffi.Short, + ffi.Int)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer, + int, + int)>(); +late final _sel_listDescriptor = objc.registerName("listDescriptor"); +late final _sel_recordDescriptor = objc.registerName("recordDescriptor"); +late final _sel_currentProcessDescriptor = + objc.registerName("currentProcessDescriptor"); +late final _sel_descriptorWithProcessIdentifier_ = + objc.registerName("descriptorWithProcessIdentifier:"); +late final _sel_descriptorWithBundleIdentifier_ = + objc.registerName("descriptorWithBundleIdentifier:"); +late final _sel_descriptorWithApplicationURL_ = + objc.registerName("descriptorWithApplicationURL:"); - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_NSXMLDTDNode1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } +@ffi.Packed(2) +final class AEDesc extends ffi.Struct { + @ffi.UnsignedInt() + external int descriptorType; - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLDTDNode1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } + external ffi.Pointer> dataHandle; } -abstract class NSXMLDTDNodeKind { - static const int NSXMLEntityGeneralKind = 1; - static const int NSXMLEntityParsedKind = 2; - static const int NSXMLEntityUnparsedKind = 3; - static const int NSXMLEntityParameterKind = 4; - static const int NSXMLEntityPredefined = 5; - static const int NSXMLAttributeCDATAKind = 6; - static const int NSXMLAttributeIDKind = 7; - static const int NSXMLAttributeIDRefKind = 8; - static const int NSXMLAttributeIDRefsKind = 9; - static const int NSXMLAttributeEntityKind = 10; - static const int NSXMLAttributeEntitiesKind = 11; - static const int NSXMLAttributeNMTokenKind = 12; - static const int NSXMLAttributeNMTokensKind = 13; - static const int NSXMLAttributeEnumerationKind = 14; - static const int NSXMLAttributeNotationKind = 15; - static const int NSXMLElementDeclarationUndefinedKind = 16; - static const int NSXMLElementDeclarationEmptyKind = 17; - static const int NSXMLElementDeclarationAnyKind = 18; - static const int NSXMLElementDeclarationMixedKind = 19; - static const int NSXMLElementDeclarationElementKind = 20; +final class OpaqueAEDataStorageType extends ffi.Opaque {} + +late final _sel_initWithAEDescNoCopy_ = + objc.registerName("initWithAEDescNoCopy:"); +final _objc_msgSend_720 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithDescriptorType_bytes_length_ = + objc.registerName("initWithDescriptorType:bytes:length:"); +final _objc_msgSend_721 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer, int)>(); +late final _sel_initWithDescriptorType_data_ = + objc.registerName("initWithDescriptorType:data:"); +final _objc_msgSend_722 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_initWithEventClass_eventID_targetDescriptor_returnID_transactionID_ = + objc.registerName( + "initWithEventClass:eventID:targetDescriptor:returnID:transactionID:"); +final _objc_msgSend_723 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.UnsignedInt, + ffi.Pointer, + ffi.Short, + ffi.Int)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer, + int, + int)>(); +late final _sel_initListDescriptor = objc.registerName("initListDescriptor"); +late final _sel_initRecordDescriptor = + objc.registerName("initRecordDescriptor"); +late final _sel_aeDesc = objc.registerName("aeDesc"); +final _objc_msgSend_724 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_descriptorType = objc.registerName("descriptorType"); +late final _sel_booleanValue = objc.registerName("booleanValue"); +final _objc_msgSend_725 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedChar Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_enumCodeValue = objc.registerName("enumCodeValue"); +late final _sel_int32Value = objc.registerName("int32Value"); +late final _sel_doubleValue = objc.registerName("doubleValue"); +late final _sel_typeCodeValue = objc.registerName("typeCodeValue"); +late final _sel_dateValue = objc.registerName("dateValue"); +late final _sel_fileURLValue = objc.registerName("fileURLValue"); +late final _sel_eventClass = objc.registerName("eventClass"); +late final _sel_eventID = objc.registerName("eventID"); +late final _sel_returnID = objc.registerName("returnID"); +final _objc_msgSend_726 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Short Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_transactionID = objc.registerName("transactionID"); +late final _sel_setParamDescriptor_forKeyword_ = + objc.registerName("setParamDescriptor:forKeyword:"); +final _objc_msgSend_727 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_paramDescriptorForKeyword_ = + objc.registerName("paramDescriptorForKeyword:"); +final _objc_msgSend_728 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_removeParamDescriptorWithKeyword_ = + objc.registerName("removeParamDescriptorWithKeyword:"); +final _objc_msgSend_729 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_setAttributeDescriptor_forKeyword_ = + objc.registerName("setAttributeDescriptor:forKeyword:"); +late final _sel_attributeDescriptorForKeyword_ = + objc.registerName("attributeDescriptorForKeyword:"); + +abstract class NSAppleEventSendOptions { + static const int NSAppleEventSendNoReply = 1; + static const int NSAppleEventSendQueueReply = 2; + static const int NSAppleEventSendWaitForReply = 3; + static const int NSAppleEventSendNeverInteract = 16; + static const int NSAppleEventSendCanInteract = 32; + static const int NSAppleEventSendAlwaysInteract = 48; + static const int NSAppleEventSendCanSwitchLayer = 64; + static const int NSAppleEventSendDontRecord = 4096; + static const int NSAppleEventSendDontExecute = 8192; + static const int NSAppleEventSendDontAnnotate = 65536; + static const int NSAppleEventSendDefaultOptions = 35; } -class SwiftClass extends NSObject { - SwiftClass._(ffi.Pointer id, SwiftLibrary lib, +late final _sel_sendEventWithOptions_timeout_error_ = + objc.registerName("sendEventWithOptions:timeout:error:"); +final _objc_msgSend_730 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Double, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + double, + ffi.Pointer>)>(); +late final _sel_isRecordDescriptor = objc.registerName("isRecordDescriptor"); +late final _sel_numberOfItems = objc.registerName("numberOfItems"); +late final _sel_insertDescriptor_atIndex_ = + objc.registerName("insertDescriptor:atIndex:"); +final _objc_msgSend_731 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_descriptorAtIndex_ = objc.registerName("descriptorAtIndex:"); +final _objc_msgSend_732 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_removeDescriptorAtIndex_ = + objc.registerName("removeDescriptorAtIndex:"); +late final _sel_setDescriptor_forKeyword_ = + objc.registerName("setDescriptor:forKeyword:"); +late final _sel_descriptorForKeyword_ = + objc.registerName("descriptorForKeyword:"); +late final _sel_removeDescriptorWithKeyword_ = + objc.registerName("removeDescriptorWithKeyword:"); +late final _sel_keywordForDescriptorAtIndex_ = + objc.registerName("keywordForDescriptorAtIndex:"); +final _objc_msgSend_733 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedInt Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_coerceToDescriptorType_ = + objc.registerName("coerceToDescriptorType:"); +late final _sel_objectSpecifierWithDescriptor_ = + objc.registerName("objectSpecifierWithDescriptor:"); +final _objc_msgSend_734 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithContainerSpecifier_key_ = + objc.registerName("initWithContainerSpecifier:key:"); +final _objc_msgSend_735 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithContainerClassDescription_containerSpecifier_key_ = objc + .registerName("initWithContainerClassDescription:containerSpecifier:key:"); +final _objc_msgSend_736 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_childSpecifier = objc.registerName("childSpecifier"); +final _objc_msgSend_737 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setChildSpecifier_ = objc.registerName("setChildSpecifier:"); +final _objc_msgSend_738 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_containerSpecifier = objc.registerName("containerSpecifier"); +late final _sel_setContainerSpecifier_ = + objc.registerName("setContainerSpecifier:"); +late final _sel_containerIsObjectBeingTested = + objc.registerName("containerIsObjectBeingTested"); +late final _sel_setContainerIsObjectBeingTested_ = + objc.registerName("setContainerIsObjectBeingTested:"); +late final _sel_containerIsRangeContainerObject = + objc.registerName("containerIsRangeContainerObject"); +late final _sel_setContainerIsRangeContainerObject_ = + objc.registerName("setContainerIsRangeContainerObject:"); +late final _sel_key = objc.registerName("key"); +late final _sel_setKey_ = objc.registerName("setKey:"); +late final _sel_containerClassDescription = + objc.registerName("containerClassDescription"); +late final _sel_setContainerClassDescription_ = + objc.registerName("setContainerClassDescription:"); +final _objc_msgSend_739 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_keyClassDescription = objc.registerName("keyClassDescription"); +late final _sel_indicesOfObjectsByEvaluatingWithContainer_count_ = + objc.registerName("indicesOfObjectsByEvaluatingWithContainer:count:"); +final _objc_msgSend_740 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_objectsByEvaluatingWithContainers_ = + objc.registerName("objectsByEvaluatingWithContainers:"); +final _objc_msgSend_741 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_objectsByEvaluatingSpecifier = + objc.registerName("objectsByEvaluatingSpecifier"); +late final _sel_evaluationErrorNumber = + objc.registerName("evaluationErrorNumber"); +late final _sel_setEvaluationErrorNumber_ = + objc.registerName("setEvaluationErrorNumber:"); +late final _sel_evaluationErrorSpecifier = + objc.registerName("evaluationErrorSpecifier"); +late final _sel_descriptor = objc.registerName("descriptor"); +final _objc_msgSend_742 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_receiversSpecifier = objc.registerName("receiversSpecifier"); +late final _sel_setReceiversSpecifier_ = + objc.registerName("setReceiversSpecifier:"); +late final _sel_evaluatedReceivers = objc.registerName("evaluatedReceivers"); +late final _sel_evaluatedArguments = objc.registerName("evaluatedArguments"); +late final _sel_isWellFormed = objc.registerName("isWellFormed"); +late final _sel_performDefaultImplementation = + objc.registerName("performDefaultImplementation"); +late final _sel_executeCommand = objc.registerName("executeCommand"); +late final _sel_scriptErrorNumber = objc.registerName("scriptErrorNumber"); +late final _sel_setScriptErrorNumber_ = + objc.registerName("setScriptErrorNumber:"); +late final _sel_scriptErrorOffendingObjectDescriptor = + objc.registerName("scriptErrorOffendingObjectDescriptor"); +late final _sel_setScriptErrorOffendingObjectDescriptor_ = + objc.registerName("setScriptErrorOffendingObjectDescriptor:"); +final _objc_msgSend_743 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_scriptErrorExpectedTypeDescriptor = + objc.registerName("scriptErrorExpectedTypeDescriptor"); +late final _sel_setScriptErrorExpectedTypeDescriptor_ = + objc.registerName("setScriptErrorExpectedTypeDescriptor:"); +late final _sel_scriptErrorString = objc.registerName("scriptErrorString"); +late final _sel_setScriptErrorString_ = + objc.registerName("setScriptErrorString:"); +late final _sel_currentCommand = objc.registerName("currentCommand"); +final _objc_msgSend_744 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_appleEvent = objc.registerName("appleEvent"); +late final _sel_suspendExecution = objc.registerName("suspendExecution"); +late final _sel_resumeExecutionWithResult_ = + objc.registerName("resumeExecutionWithResult:"); +late final _sel_createCommandInstance = + objc.registerName("createCommandInstance"); +final _objc_msgSend_745 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_createCommandInstanceWithZone_ = + objc.registerName("createCommandInstanceWithZone:"); +final _objc_msgSend_746 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_NSZone>)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_NSZone>)>(); +late final _sel_supportsCommand_ = objc.registerName("supportsCommand:"); +final _objc_msgSend_747 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_selectorForCommand_ = objc.registerName("selectorForCommand:"); +final _objc_msgSend_748 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_typeForKey_ = objc.registerName("typeForKey:"); +late final _sel_classDescriptionForKey_ = + objc.registerName("classDescriptionForKey:"); +final _objc_msgSend_749 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_appleEventCodeForKey_ = + objc.registerName("appleEventCodeForKey:"); +late final _sel_keyWithAppleEventCode_ = + objc.registerName("keyWithAppleEventCode:"); +final _objc_msgSend_750 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_defaultSubcontainerAttributeKey = + objc.registerName("defaultSubcontainerAttributeKey"); +late final _sel_isLocationRequiredToCreateForKey_ = + objc.registerName("isLocationRequiredToCreateForKey:"); +late final _sel_hasPropertyForKey_ = objc.registerName("hasPropertyForKey:"); +late final _sel_hasOrderedToManyRelationshipForKey_ = + objc.registerName("hasOrderedToManyRelationshipForKey:"); +late final _sel_hasReadablePropertyForKey_ = + objc.registerName("hasReadablePropertyForKey:"); +late final _sel_hasWritablePropertyForKey_ = + objc.registerName("hasWritablePropertyForKey:"); +late final _sel_isReadOnlyKey_ = objc.registerName("isReadOnlyKey:"); + +class SwiftClass extends objc.NSObject { + SwiftClass._(ffi.Pointer pointer, {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + : super.castFromPointer(pointer, retain: retain, release: release); - /// Returns a [SwiftClass] that points to the same underlying object as [other]. - static SwiftClass castFrom(T other) { - return SwiftClass._(other._id, other._lib, retain: true, release: true); - } + /// Constructs a [SwiftClass] that points to the same underlying object as [other]. + SwiftClass.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); - /// Returns a [SwiftClass] that wraps the given raw object pointer. - static SwiftClass castFromPointer( - SwiftLibrary lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return SwiftClass._(other, lib, retain: retain, release: release); - } + /// Constructs a [SwiftClass] that wraps the given raw object pointer. + SwiftClass.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); /// Returns whether [obj] is an instance of [SwiftClass]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SwiftClass1); + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_SwiftClass); } - NSString sayHello() { - final _ret = _lib._objc_msgSend_21(_id, _lib._sel_sayHello1); - return NSString._(_ret, _lib, retain: true, release: true); + objc.NSString sayHello() { + final _ret = _objc_msgSend_12(this.pointer, _sel_sayHello); + return objc.NSString.castFromPointer(_ret, retain: true, release: true); } int get someField { - return _lib._objc_msgSend_83(_id, _lib._sel_someField1); + return _objc_msgSend_114(this.pointer, _sel_someField); } set someField(int value) { - return _lib._objc_msgSend_635(_id, _lib._sel_setSomeField_1, value); + return _objc_msgSend_134(this.pointer, _sel_setSomeField_, value); } @override SwiftClass init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return SwiftClass._(_ret, _lib, retain: true, release: true); + final _ret = _objc_msgSend_40(this.pointer, _sel_init); + return SwiftClass.castFromPointer(_ret, retain: true, release: true); } - static SwiftClass new1(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_SwiftClass1, _lib._sel_new1); - return SwiftClass._(_ret, _lib, retain: false, release: true); + static SwiftClass new1() { + final _ret = _objc_msgSend_40(_class_SwiftClass, _sel_new); + return SwiftClass.castFromPointer(_ret, retain: false, release: true); } - static SwiftClass allocWithZone_( - SwiftLibrary _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_SwiftClass1, _lib._sel_allocWithZone_1, zone); - return SwiftClass._(_ret, _lib, retain: false, release: true); + static SwiftClass allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_47(_class_SwiftClass, _sel_allocWithZone_, zone); + return SwiftClass.castFromPointer(_ret, retain: false, release: true); } - static SwiftClass alloc(SwiftLibrary _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_SwiftClass1, _lib._sel_alloc1); - return SwiftClass._(_ret, _lib, retain: false, release: true); + static SwiftClass alloc() { + final _ret = _objc_msgSend_40(_class_SwiftClass, _sel_alloc); + return SwiftClass.castFromPointer(_ret, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SwiftLibrary _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject? anArgument) { - _lib._objc_msgSend_14( - _lib._class_SwiftClass1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, + objc.NSObject aTarget, + ffi.Pointer aSelector, + objc.NSObject? anArgument) { + _objc_msgSend_48( + _class_SwiftClass, + _sel_cancelPreviousPerformRequestsWithTarget_selector_object_, + aTarget.pointer, aSelector, - anArgument?._id ?? ffi.nullptr); + anArgument?.pointer ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SwiftLibrary _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_SwiftClass1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + static void cancelPreviousPerformRequestsWithTarget_(objc.NSObject aTarget) { + _objc_msgSend_49(_class_SwiftClass, + _sel_cancelPreviousPerformRequestsWithTarget_, aTarget.pointer); } - static bool getAccessInstanceVariablesDirectly(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_SwiftClass1, _lib._sel_accessInstanceVariablesDirectly1); + static bool getAccessInstanceVariablesDirectly() { + return _objc_msgSend_7( + _class_SwiftClass, _sel_accessInstanceVariablesDirectly); } - static bool useStoredAccessor(SwiftLibrary _lib) { - return _lib._objc_msgSend_12( - _lib._class_SwiftClass1, _lib._sel_useStoredAccessor1); + static bool useStoredAccessor() { + return _objc_msgSend_7(_class_SwiftClass, _sel_useStoredAccessor); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SwiftLibrary _lib, NSString key) { - final _ret = _lib._objc_msgSend_63(_lib._class_SwiftClass1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, key._id); - return NSSet._(_ret, _lib, retain: true, release: true); + static objc.NSSet keyPathsForValuesAffectingValueForKey_(objc.NSString key) { + final _ret = _objc_msgSend_50(_class_SwiftClass, + _sel_keyPathsForValuesAffectingValueForKey_, key.pointer); + return objc.NSSet.castFromPointer(_ret, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SwiftLibrary _lib, NSString key) { - return _lib._objc_msgSend_64(_lib._class_SwiftClass1, - _lib._sel_automaticallyNotifiesObserversForKey_1, key._id); + static bool automaticallyNotifiesObserversForKey_(objc.NSString key) { + return _objc_msgSend_51(_class_SwiftClass, + _sel_automaticallyNotifiesObserversForKey_, key.pointer); } static void setKeys_triggerChangeNotificationsForDependentKey_( - SwiftLibrary _lib, NSArray keys, NSString dependentKey) { - _lib._objc_msgSend_88( - _lib._class_SwiftClass1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys._id, - dependentKey._id); + objc.NSArray keys, objc.NSString dependentKey) { + _objc_msgSend_52( + _class_SwiftClass, + _sel_setKeys_triggerChangeNotificationsForDependentKey_, + keys.pointer, + dependentKey.pointer); } - static NSArray classFallbacksForKeyedArchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_85( - _lib._class_SwiftClass1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static objc.NSArray classFallbacksForKeyedArchiver() { + final _ret = + _objc_msgSend_6(_class_SwiftClass, _sel_classFallbacksForKeyedArchiver); + return objc.NSArray.castFromPointer(_ret, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SwiftLibrary _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_SwiftClass1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + static objc.NSObject classForKeyedUnarchiver() { + final _ret = + _objc_msgSend_40(_class_SwiftClass, _sel_classForKeyedUnarchiver); + return objc.NSObject.castFromPointer(_ret, retain: true, release: true); } } + +late final _class_SwiftClass = objc.getClass("swift_module.SwiftClass"); +late final _sel_sayHello = objc.registerName("sayHello"); +late final _sel_someField = objc.registerName("someField"); +late final _sel_setSomeField_ = objc.registerName("setSomeField:"); diff --git a/pkgs/ffigen/ffigen.schema.json b/pkgs/ffigen/ffigen.schema.json index 2116c4f01..a6777c295 100644 --- a/pkgs/ffigen/ffigen.schema.json +++ b/pkgs/ffigen/ffigen.schema.json @@ -367,6 +367,9 @@ "exclude-all-by-default": { "type": "boolean" }, + "generate-for-package-objective-c": { + "type": "boolean" + }, "sort": { "type": "boolean" }, diff --git a/pkgs/ffigen/lib/src/code_generator/enum_class.dart b/pkgs/ffigen/lib/src/code_generator/enum_class.dart index 92ffbfa9b..3fbfcf7da 100644 --- a/pkgs/ffigen/lib/src/code_generator/enum_class.dart +++ b/pkgs/ffigen/lib/src/code_generator/enum_class.dart @@ -87,7 +87,7 @@ class EnumClass extends BindingType { bool get sameDartAndCType => nativeType.sameDartAndCType; @override - String? getDefaultValue(Writer w, String nativeLib) => '0'; + String? getDefaultValue(Writer w) => '0'; } /// Represents a single value in an enum. diff --git a/pkgs/ffigen/lib/src/code_generator/func.dart b/pkgs/ffigen/lib/src/code_generator/func.dart index 1c518f9f6..05d67d40c 100644 --- a/pkgs/ffigen/lib/src/code_generator/func.dart +++ b/pkgs/ffigen/lib/src/code_generator/func.dart @@ -133,7 +133,6 @@ class Func extends LookUpBinding { funcImplCall = functionType.returnType.convertFfiDartTypeToDartType( w, '$funcVarName($argString)', - ffiNativeConfig.enabled ? 'lib' : 'this', objCRetain: !objCReturnsRetained, ); } else { @@ -158,11 +157,8 @@ external $ffiReturnType $nativeFuncName($ffiArgDeclString); '''); if (needsWrapper) { - final libArg = functionType.returnType.sameDartAndFfiDartType - ? '' - : '${w.className} lib, '; s.write(''' -$dartReturnType $enclosingFuncName($libArg$dartArgDeclString) => $funcImplCall; +$dartReturnType $enclosingFuncName($dartArgDeclString) => $funcImplCall; '''); } diff --git a/pkgs/ffigen/lib/src/code_generator/imports.dart b/pkgs/ffigen/lib/src/code_generator/imports.dart index f620909b6..d0b5352ac 100644 --- a/pkgs/ffigen/lib/src/code_generator/imports.dart +++ b/pkgs/ffigen/lib/src/code_generator/imports.dart @@ -2,17 +2,22 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'struct.dart'; import 'type.dart'; import 'writer.dart'; /// A library import which will be written as an import in the generated file. class LibraryImport { final String name; - final String importPath; + final String _importPath; + final String? _importPathWhenImportedByPackageObjC; + String prefix; - LibraryImport(this.name, this.importPath) : prefix = name; + LibraryImport(this.name, this._importPath, + {String? importPathWhenImportedByPackageObjC}) + : _importPathWhenImportedByPackageObjC = + importPathWhenImportedByPackageObjC, + prefix = name; @override bool operator ==(other) { @@ -21,6 +26,13 @@ class LibraryImport { @override int get hashCode => name.hashCode; + + // The import path, which may be different if this library is being imported + // into package:objective_c's generated code. + String importPath(bool generateForPackageObjectiveC) { + if (!generateForPackageObjectiveC) return _importPath; + return _importPathWhenImportedByPackageObjC ?? _importPath; + } } /// An imported type which will be used in the generated code. @@ -49,7 +61,7 @@ class ImportedType extends Type { String toString() => '${libraryImport.name}.$cType'; @override - String? getDefaultValue(Writer w, String nativeLib) => defaultValue; + String? getDefaultValue(Writer w) => defaultValue; } /// An unchecked type similar to [ImportedType] which exists in the generated @@ -76,6 +88,9 @@ class SelfImportedType extends Type { final ffiImport = LibraryImport('ffi', 'dart:ffi'); final ffiPkgImport = LibraryImport('pkg_ffi', 'package:ffi/ffi.dart'); +final objcPkgImport = LibraryImport( + 'objc', 'package:objective_c/objective_c.dart', + importPathWhenImportedByPackageObjC: '../objective_c.dart'); final self = LibraryImport('self', ''); final voidType = ImportedType(ffiImport, 'Void', 'void'); @@ -99,5 +114,6 @@ final doubleType = ImportedType(ffiImport, 'Double', 'double', '0.0'); final sizeType = ImportedType(ffiImport, 'Size', 'int', '0'); final wCharType = ImportedType(ffiImport, 'WChar', 'int', '0'); -final objCObjectType = Struct(name: 'ObjCObject'); -final objCSelType = Struct(name: 'ObjCSel'); +final objCObjectType = ImportedType(objcPkgImport, 'ObjCObject', 'ObjCObject'); +final objCSelType = ImportedType(objcPkgImport, 'ObjCSelector', 'ObjCSelector'); +final objCBlockType = ImportedType(objcPkgImport, 'ObjCBlock', 'ObjCBlock'); diff --git a/pkgs/ffigen/lib/src/code_generator/library.dart b/pkgs/ffigen/lib/src/code_generator/library.dart index 60ad7c3ff..cbb6d19c9 100644 --- a/pkgs/ffigen/lib/src/code_generator/library.dart +++ b/pkgs/ffigen/lib/src/code_generator/library.dart @@ -4,12 +4,10 @@ import 'dart:io'; -import 'package:cli_util/cli_util.dart'; import 'package:collection/collection.dart'; import 'package:ffigen/src/code_generator.dart'; import 'package:ffigen/src/config_provider/config_types.dart'; import 'package:logging/logging.dart'; -import 'package:path/path.dart' as p; import 'package:yaml_edit/yaml_edit.dart'; import 'utils.dart'; @@ -31,6 +29,7 @@ class Library { required List bindings, String? header, bool sort = false, + bool generateForPackageObjectiveC = false, StructPackingOverride? packingOverride, Set? libraryImports, }) { @@ -84,6 +83,7 @@ class Library { classDocComment: description, header: header, additionalImports: libraryImports, + generateForPackageObjectiveC: generateForPackageObjectiveC, ); } @@ -149,9 +149,8 @@ class Library { /// Formats a file using the Dart formatter. void _dartFormat(String path) { - final sdkPath = getSdkPath(); - final result = Process.runSync( - p.join(sdkPath, 'bin', 'dart'), ['format', path], + final result = Process.runSync(findDart(), ['format', path], + workingDirectory: Directory.current.absolute.path, runInShell: Platform.isWindows); if (result.stderr.toString().isNotEmpty) { _logger.severe(result.stderr); diff --git a/pkgs/ffigen/lib/src/code_generator/native_type.dart b/pkgs/ffigen/lib/src/code_generator/native_type.dart index 93ed35611..77afa7863 100644 --- a/pkgs/ffigen/lib/src/code_generator/native_type.dart +++ b/pkgs/ffigen/lib/src/code_generator/native_type.dart @@ -66,7 +66,7 @@ class NativeType extends Type { String cacheKey() => _cType; @override - String? getDefaultValue(Writer w, String nativeLib) => _defaultValue; + String? getDefaultValue(Writer w) => _defaultValue; } class BooleanType extends NativeType { diff --git a/pkgs/ffigen/lib/src/code_generator/objc_block.dart b/pkgs/ffigen/lib/src/code_generator/objc_block.dart index 6101f79da..9422e87c8 100644 --- a/pkgs/ffigen/lib/src/code_generator/objc_block.dart +++ b/pkgs/ffigen/lib/src/code_generator/objc_block.dart @@ -10,19 +10,16 @@ import 'writer.dart'; class ObjCBlock extends BindingType { final Type returnType; final List argTypes; - final ObjCBuiltInFunctions builtInFunctions; ObjCBlock({ required String usr, required Type returnType, required List argTypes, - required ObjCBuiltInFunctions builtInFunctions, }) : this._( usr: usr, name: _getBlockName(returnType, argTypes), returnType: returnType, argTypes: argTypes, - builtInFunctions: builtInFunctions, ); ObjCBlock._({ @@ -30,7 +27,6 @@ class ObjCBlock extends BindingType { required super.name, required this.returnType, required this.argTypes, - required this.builtInFunctions, }) : super(originalName: name); // Generates a human readable name for the block based on the args and return @@ -47,8 +43,6 @@ class ObjCBlock extends BindingType { BindingString toBindingString(Writer w) { final s = StringBuffer(); - builtInFunctions.ensureBlockUtilsExist(w, s); - final params = []; for (int i = 0; i < argTypes.length; ++i) { params.add(Parameter(name: 'arg$i', type: argTypes[i])); @@ -56,7 +50,7 @@ class ObjCBlock extends BindingType { final isVoid = returnType == voidType; final voidPtr = PointerType(voidType).getCType(w); - final blockPtr = PointerType(builtInFunctions.blockStruct); + final blockPtr = PointerType(objCBlockType); final funcType = FunctionType(returnType: returnType, parameters: params); final natFnType = NativeFunc(funcType); final natFnPtr = PointerType(natFnType).getCType(w); @@ -64,12 +58,9 @@ class ObjCBlock extends BindingType { w.topLevelUniqueNamer.makeUnique('_${name}_fnPtrTrampoline'); final closureTrampoline = w.topLevelUniqueNamer.makeUnique('_${name}_closureTrampoline'); - final registerClosure = - w.topLevelUniqueNamer.makeUnique('_${name}_registerClosure'); - final closureRegistry = - w.topLevelUniqueNamer.makeUnique('_${name}_closureRegistry'); - final closureRegistryIndex = - w.topLevelUniqueNamer.makeUnique('_${name}_closureRegistryIndex'); + final newPointerBlock = ObjCBuiltInFunctions.newPointerBlock.gen(w); + final newClosureBlock = ObjCBuiltInFunctions.newClosureBlock.gen(w); + final getBlockClosure = ObjCBuiltInFunctions.getBlockClosure.gen(w); final trampFuncType = FunctionType( returnType: returnType, parameters: [Parameter(type: blockPtr, name: 'block'), ...params]); @@ -98,28 +89,17 @@ $returnFfiDartType $funcPtrTrampoline($blockCType block, $paramsFfiDartType) => .asFunction<$funcFfiDartType>()($paramsNameOnly); '''); - // Write the closure registry function. - s.write(''' -final $closureRegistry = {}; -int $closureRegistryIndex = 0; -$voidPtr $registerClosure($funcFfiDartType fn) { - final id = ++$closureRegistryIndex; - $closureRegistry[id] = fn; - return $voidPtr.fromAddress(id); -} -'''); - // Write the closure based trampoline function. s.write(''' $returnFfiDartType $closureTrampoline($blockCType block, $paramsFfiDartType) => - $closureRegistry[block.ref.target.address]!($paramsNameOnly); + ($getBlockClosure(block) as $funcFfiDartType)($paramsNameOnly); '''); // Snippet that converts a Dart typed closure to FfiDart type. This snippet // is used below. Note that the closure being converted is called `fn`. final convertedFnArgs = params - .map((p) => p.type - .convertFfiDartTypeToDartType(w, p.name, 'lib', objCRetain: true)) + .map((p) => + p.type.convertFfiDartTypeToDartType(w, p.name, objCRetain: true)) .join(', '); final convFnInvocation = returnType.convertDartTypeToFfiDartType( w, 'fn($convertedFnArgs)', @@ -127,18 +107,18 @@ $returnFfiDartType $closureTrampoline($blockCType block, $paramsFfiDartType) => final convFn = '($paramsFfiDartType) => $convFnInvocation'; // Write the wrapper class. - final defaultValue = returnType.getDefaultValue(w, '_lib'); + final defaultValue = returnType.getDefaultValue(w); final exceptionalReturn = defaultValue == null ? '' : ', $defaultValue'; s.write(''' -class $name extends _ObjCBlockBase { - $name._($blockCType id, ${w.className} lib, +class $name extends ${ObjCBuiltInFunctions.blockBase.gen(w)} { + $name._($blockCType pointer, {bool retain = false, bool release = true}) : - super._(id, lib, retain: retain, release: release); + super(pointer, retain: retain, release: release); /// Returns a block that wraps the given raw block pointer. - static $name castFromPointer(${w.className} lib, $blockCType pointer, + static $name castFromPointer($blockCType pointer, {bool retain = false, bool release = false}) { - return $name._(pointer, lib, retain: retain, release: release); + return $name._(pointer, retain: retain, release: release); } /// Creates a block from a C function pointer. @@ -146,11 +126,11 @@ class $name extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - $name.fromFunctionPointer(${w.className} lib, $natFnPtr ptr) : - this._(lib.${builtInFunctions.newBlock.name}( + $name.fromFunctionPointer($natFnPtr ptr) : + this._($newPointerBlock( _cFuncTrampoline ??= ${w.ffiLibraryPrefix}.Pointer.fromFunction< $trampFuncCType>($funcPtrTrampoline - $exceptionalReturn).cast(), ptr.cast()), lib); + $exceptionalReturn).cast(), ptr.cast())); static $voidPtr? _cFuncTrampoline; /// Creates a block from a Dart function. @@ -158,11 +138,11 @@ class $name extends _ObjCBlockBase { /// This block must be invoked by native code running on the same thread as /// the isolate that registered it. Invoking the block on the wrong thread /// will result in a crash. - $name.fromFunction(${w.className} lib, $funcDartType fn) : - this._(lib.${builtInFunctions.newBlock.name}( + $name.fromFunction($funcDartType fn) : + this._($newClosureBlock( _dartFuncTrampoline ??= ${w.ffiLibraryPrefix}.Pointer.fromFunction< - $trampFuncCType>($closureTrampoline - $exceptionalReturn).cast(), $registerClosure($convFn)), lib); + $trampFuncCType>($closureTrampoline $exceptionalReturn).cast(), + $convFn)); static $voidPtr? _dartFuncTrampoline; '''); @@ -179,12 +159,11 @@ class $name extends _ObjCBlockBase { /// /// Note that unlike the default behavior of NativeCallable.listener, listener /// blocks do not keep the isolate alive. - $name.listener(${w.className} lib, $funcDartType fn) : - this._(lib.${builtInFunctions.newBlock.name}( + $name.listener($funcDartType fn) : + this._($newClosureBlock( (_dartFuncListenerTrampoline ??= $nativeCallableType.listener( $closureTrampoline $exceptionalReturn)..keepIsolateAlive = - false).nativeFunction.cast(), - $registerClosure($convFn)), lib); + false).nativeFunction.cast(), $convFn)); static $nativeCallableType? _dartFuncListenerTrampoline; '''); @@ -197,10 +176,9 @@ class $name extends _ObjCBlockBase { p.type.convertDartTypeToFfiDartType(w, p.name, objCRetain: false)) .join(', '); final callMethodInvocation = ''' -_id.ref.invoke.cast<$natTrampFnType>().asFunction<$trampFuncFfiDartType>()( - _id, $callMethodArgs)'''; - s.write(returnType.convertFfiDartTypeToDartType( - w, callMethodInvocation, '_lib', +pointer.ref.invoke.cast<$natTrampFnType>().asFunction<$trampFuncFfiDartType>()( + pointer, $callMethodArgs)'''; + s.write(returnType.convertFfiDartTypeToDartType(w, callMethodInvocation, objCRetain: false)); s.write(';\n'); @@ -218,12 +196,10 @@ _id.ref.invoke.cast<$natTrampFnType>().asFunction<$trampFuncFfiDartType>()( for (final t in argTypes) { t.addDependencies(dependencies); } - builtInFunctions.addBlockDependencies(dependencies); } @override - String getCType(Writer w) => - PointerType(builtInFunctions.blockStruct).getCType(w); + String getCType(Writer w) => PointerType(objCBlockType).getCType(w); @override String getDartType(Writer w) => name; @@ -248,12 +224,11 @@ _id.ref.invoke.cast<$natTrampFnType>().asFunction<$trampFuncFfiDartType>()( @override String convertFfiDartTypeToDartType( Writer w, - String value, - String library, { + String value, { required bool objCRetain, String? objCEnclosingClass, }) => - ObjCInterface.generateConstructor(name, value, library, objCRetain); + ObjCInterface.generateConstructor(name, value, objCRetain); @override String toString() => '($returnType (^)(${argTypes.join(', ')}))'; diff --git a/pkgs/ffigen/lib/src/code_generator/objc_built_in_functions.dart b/pkgs/ffigen/lib/src/code_generator/objc_built_in_functions.dart index e3b75dd94..5bdac34d3 100644 --- a/pkgs/ffigen/lib/src/code_generator/objc_built_in_functions.dart +++ b/pkgs/ffigen/lib/src/code_generator/objc_built_in_functions.dart @@ -9,90 +9,56 @@ import 'writer.dart'; /// Built in functions used by the Objective C bindings. class ObjCBuiltInFunctions { - late final _registerNameFunc = Func( - name: '_sel_registerName', - originalName: 'sel_registerName', - returnType: PointerType(objCSelType), - parameters: [Parameter(name: 'str', type: PointerType(charType))], - isInternal: true, - ); - late final registerName = ObjCInternalFunction( - '_registerName', _registerNameFunc, (Writer w, String name) { - final selType = _registerNameFunc.functionType.returnType.getCType(w); - return ''' -$selType $name(String name) { - final cstr = name.toNativeUtf8(); - final sel = ${_registerNameFunc.name}(cstr.cast()); - ${w.ffiPkgLibraryPrefix}.calloc.free(cstr); - return sel; -} -'''; - }); - - late final _getClassFunc = Func( - name: '_objc_getClass', - originalName: 'objc_getClass', - returnType: PointerType(objCObjectType), - parameters: [Parameter(name: 'str', type: PointerType(charType))], - isInternal: true, - ); - late final getClass = - ObjCInternalFunction('_getClass', _getClassFunc, (Writer w, String name) { - final objType = _getClassFunc.functionType.returnType.getCType(w); - return ''' -$objType $name(String name) { - final cstr = name.toNativeUtf8(); - final clazz = ${_getClassFunc.name}(cstr.cast()); - ${w.ffiPkgLibraryPrefix}.calloc.free(cstr); - if (clazz == ${w.ffiLibraryPrefix}.nullptr) { - throw Exception('Failed to load Objective-C class: \$name'); - } - return clazz; -} -'''; - }); - - late final _retainFunc = Func( - name: '_objc_retain', - originalName: 'objc_retain', - returnType: PointerType(objCObjectType), - parameters: [Parameter(name: 'value', type: PointerType(objCObjectType))], - isInternal: true, - ); - late final _releaseFunc = Func( - name: '_objc_release', - originalName: 'objc_release', - returnType: voidType, - parameters: [Parameter(name: 'value', type: PointerType(objCObjectType))], - isInternal: true, - ); - late final _releaseFinalizer = ObjCInternalGlobal( - '_objc_releaseFinalizer', - (Writer w) => '${w.ffiLibraryPrefix}.NativeFinalizer(' - '${_releaseFunc.funcPointerName}.cast())', - _releaseFunc, - ); - - late final _blockCopyFunc = Func( - name: '_Block_copy', - originalName: '_Block_copy', - returnType: PointerType(voidType), - parameters: [Parameter(name: 'value', type: PointerType(voidType))], - isInternal: true, - ); - late final _blockReleaseFunc = Func( - name: '_Block_release', - originalName: '_Block_release', - returnType: voidType, - parameters: [Parameter(name: 'value', type: PointerType(voidType))], - isInternal: true, - ); - late final _blockReleaseFinalizer = ObjCInternalGlobal( - '_objc_releaseFinalizer', - (Writer w) => '${w.ffiLibraryPrefix}.NativeFinalizer(' - '${_blockReleaseFunc.funcPointerName}.cast())', - _blockReleaseFunc, - ); + ObjCBuiltInFunctions(this.generateForPackageObjectiveC); + + final bool generateForPackageObjectiveC; + + static const registerName = ObjCImport('registerName'); + static const getClass = ObjCImport('getClass'); + static const msgSendPointer = ObjCImport('msgSendPointer'); + static const msgSendFpretPointer = ObjCImport('msgSendFpretPointer'); + static const msgSendStretPointer = ObjCImport('msgSendStretPointer'); + static const useMsgSendVariants = ObjCImport('useMsgSendVariants'); + static const newPointerBlock = ObjCImport('newPointerBlock'); + static const newClosureBlock = ObjCImport('newClosureBlock'); + static const getBlockClosure = ObjCImport('getBlockClosure'); + static const objectBase = ObjCImport('ObjCObjectBase'); + static const blockBase = ObjCImport('ObjCBlockBase'); + + // Keep in sync with pkgs/objective_c/ffigen_objc.yaml. + static const builtInInterfaces = { + 'NSArray', + 'NSCharacterSet', + 'NSCoder', + 'NSData', + 'NSDate', + 'NSDictionary', + 'NSEnumerator', + 'NSError', + 'NSIndexSet', + 'NSInvocation', + 'NSItemProvider', + 'NSLocale', + 'NSMethodSignature', + 'NSMutableArray', + 'NSMutableData', + 'NSMutableDictionary', + 'NSMutableSet', + 'NSMutableString', + 'NSNotification', + 'NSNumber', + 'NSObject', + 'NSProgress', + 'NSSet', + 'NSString', + 'NSURL', + 'NSURLHandle', + 'NSValue', + 'Protocol', + }; + + bool isBuiltInInterface(String name) => + !generateForPackageObjectiveC && builtInInterfaces.contains(name); // We need to load a separate instance of objc_msgSend for each signature. If // the return type is a struct, we need to use objc_msgSend_stret instead, and @@ -108,196 +74,18 @@ $objType $name(String name) { '_objc_msgSend_${_msgSendFuncs.length}', returnType, params, - _msgSendUseVariants); + useMsgSendVariants); } - late final _msgSendUseVariants = ObjCInternalGlobal( - '_objc_msgSend_useVariants', - (Writer w) => ''' -${w.ffiLibraryPrefix}.Abi.current() == ${w.ffiLibraryPrefix}.Abi.iosX64 || -${w.ffiLibraryPrefix}.Abi.current() == ${w.ffiLibraryPrefix}.Abi.macosX64 -'''); - final _selObjects = {}; ObjCInternalGlobal getSelObject(String methodName) { return _selObjects[methodName] ??= ObjCInternalGlobal( '_sel_${methodName.replaceAll(":", "_")}', - (Writer w) => '${registerName.name}("$methodName")', - registerName, + (Writer w) => '${registerName.gen(w)}("$methodName")', ); } - // See https://clang.llvm.org/docs/Block-ABI-Apple.html - late final blockStruct = Struct( - name: '_ObjCBlock', - isInternal: true, - members: [ - Member(name: 'isa', type: PointerType(voidType)), - Member(name: 'flags', type: intType), - Member(name: 'reserved', type: intType), - Member(name: 'invoke', type: PointerType(voidType)), - Member(name: 'descriptor', type: PointerType(blockDescStruct)), - Member(name: 'target', type: PointerType(voidType)), - ], - ); - late final blockDescStruct = Struct( - name: '_ObjCBlockDesc', - isInternal: true, - members: [ - Member(name: 'reserved', type: unsignedLongType), - Member(name: 'size', type: unsignedLongType), - Member(name: 'copy_helper', type: PointerType(voidType)), - Member(name: 'dispose_helper', type: PointerType(voidType)), - Member(name: 'signature', type: PointerType(charType)), - ], - ); - late final newBlockDesc = - ObjCInternalFunction('_newBlockDesc', null, (Writer w, String name) { - final blockType = blockStruct.getCType(w); - final descType = blockDescStruct.getCType(w); - final descPtr = PointerType(blockDescStruct).getCType(w); - return ''' -$descPtr $name() { - final d = ${w.ffiPkgLibraryPrefix}.calloc.allocate<$descType>( - ${w.ffiLibraryPrefix}.sizeOf<$descType>()); - d.ref.reserved = 0; - d.ref.size = ${w.ffiLibraryPrefix}.sizeOf<$blockType>(); - d.ref.copy_helper = ${w.ffiLibraryPrefix}.nullptr; - d.ref.dispose_helper = ${w.ffiLibraryPrefix}.nullptr; - d.ref.signature = ${w.ffiLibraryPrefix}.nullptr; - return d; -} -'''; - }); - late final blockDescSingleton = ObjCInternalGlobal( - '_objc_block_desc', - (Writer w) => '${newBlockDesc.name}()', - blockDescStruct, - ); - late final concreteGlobalBlock = ObjCInternalGlobal( - '_objc_concrete_global_block', - (Writer w) => '${w.lookupFuncIdentifier}<${voidType.getCType(w)}>(' - "'_NSConcreteGlobalBlock')", - ); - late final newBlock = ObjCInternalFunction('_newBlock', _blockCopyFunc, - (Writer w, String name) { - final blockType = blockStruct.getCType(w); - final blockPtr = PointerType(blockStruct).getCType(w); - final voidPtr = PointerType(voidType).getCType(w); - return ''' -$blockPtr $name($voidPtr invoke, $voidPtr target) { - final b = ${w.ffiPkgLibraryPrefix}.calloc.allocate<$blockType>( - ${w.ffiLibraryPrefix}.sizeOf<$blockType>()); - b.ref.isa = ${concreteGlobalBlock.name}; - b.ref.flags = 0; - b.ref.reserved = 0; - b.ref.invoke = invoke; - b.ref.target = target; - b.ref.descriptor = ${blockDescSingleton.name}; - final copy = ${_blockCopyFunc.name}(b.cast()).cast<$blockType>(); - ${w.ffiPkgLibraryPrefix}.calloc.free(b); - return copy; -} -'''; - }); - - void _writeFinalizableClass( - Writer w, - StringBuffer s, - String name, - String kind, - String idType, - String retain, - String release, - String finalizer) { - s.write(''' -class $name implements ${w.ffiLibraryPrefix}.Finalizable { - final $idType _id; - final ${w.className} _lib; - bool _pendingRelease; - - $name._(this._id, this._lib, - {bool retain = false, bool release = false}) : _pendingRelease = release { - if (retain) { - _lib.$retain(_id.cast()); - } - if (release) { - _lib.$finalizer.attach(this, _id.cast(), detach: this); - } - } - - /// Releases the reference to the underlying ObjC $kind held by this wrapper. - /// Throws a StateError if this wrapper doesn't currently hold a reference. - void release() { - if (_pendingRelease) { - _pendingRelease = false; - _lib.$release(_id.cast()); - _lib.$finalizer.detach(this); - } else { - throw StateError( - 'Released an ObjC $kind that was unowned or already released.'); - } - } - - @override - bool operator ==(Object other) { - return other is $name && _id == other._id; - } - - @override - int get hashCode => _id.hashCode; - - /// Return a pointer to this object. - $idType get pointer => _id; - - /// Retain a reference to this object and then return the pointer. This - /// reference must be released when you are done with it. If you wrap this - /// reference in another object, make sure to release it but not retain it: - /// `castFromPointer(lib, pointer, retain: false, release: true)` - $idType retainAndReturnPointer() { - _lib.$retain(_id.cast()); - return _id; - } -} -'''); - } - - bool utilsExist = false; - void ensureUtilsExist(Writer w, StringBuffer s) { - if (utilsExist) return; - utilsExist = true; - _writeFinalizableClass( - w, - s, - '_ObjCWrapper', - 'object', - PointerType(objCObjectType).getCType(w), - _retainFunc.name, - _releaseFunc.name, - _releaseFinalizer.name); - } - - bool blockUtilsExist = false; - void ensureBlockUtilsExist(Writer w, StringBuffer s) { - if (blockUtilsExist) return; - blockUtilsExist = true; - _writeFinalizableClass( - w, - s, - '_ObjCBlockBase', - 'block', - PointerType(blockStruct).getCType(w), - _blockCopyFunc.name, - _blockReleaseFunc.name, - _blockReleaseFinalizer.name); - } - void addDependencies(Set dependencies) { - registerName.addDependencies(dependencies); - getClass.addDependencies(dependencies); - _retainFunc.addDependencies(dependencies); - _releaseFunc.addDependencies(dependencies); - _releaseFinalizer.addDependencies(dependencies); for (final msgSendFunc in _msgSendFuncs.values) { msgSendFunc.addDependencies(dependencies); } @@ -305,100 +93,29 @@ class $name implements ${w.ffiLibraryPrefix}.Finalizable { sel.addDependencies(dependencies); } } - - void addBlockDependencies(Set dependencies) { - newBlockDesc.addDependencies(dependencies); - blockDescSingleton.addDependencies(dependencies); - blockStruct.addDependencies(dependencies); - concreteGlobalBlock.addDependencies(dependencies); - newBlock.addDependencies(dependencies); - _blockCopyFunc.addDependencies(dependencies); - _blockReleaseFunc.addDependencies(dependencies); - _blockReleaseFinalizer.addDependencies(dependencies); - } - - final _interfaceRegistry = {}; - void registerInterface(ObjCInterface interface) { - _interfaceRegistry[interface.originalName] = interface; - } - - ObjCInterface get nsData { - return _interfaceRegistry["NSData"] ?? - (ObjCInterface( - originalName: "NSData", - builtInFunctions: this, - )); - } - - void generateNSStringUtils(Writer w, StringBuffer s) { - // Generate a constructor that wraps stringWithCharacters, and a toString - // method that wraps dataUsingEncoding. - s.write(''' - factory NSString(${w.className} _lib, String str) { - final cstr = str.toNativeUtf16(); - final nsstr = stringWithCharacters_length_(_lib, cstr.cast(), str.length); - ${w.ffiPkgLibraryPrefix}.calloc.free(cstr); - return nsstr; - } - - @override - String toString() { - final data = dataUsingEncoding_( - 0x94000100 /* NSUTF16LittleEndianStringEncoding */); - return data!.bytes.cast<${w.ffiPkgLibraryPrefix}.Utf16>().toDartString( - length: length); - } -'''); - } - - void generateStringUtils(Writer w, StringBuffer s) { - // Generate an extension on String to convert to NSString - s.write(''' -extension StringToNSString on String { - NSString toNSString(${w.className} lib) => NSString(lib, this); -} -'''); - } } -/// Functions only used internally by ObjC bindings, which may or may not wrap a -/// native function, such as getClass. -class ObjCInternalFunction extends LookUpBinding { - final Func? _wrappedFunction; - final String Function(Writer, String) _toBindingString; +/// A function, global variable, or helper type defined in package:objective_c. +class ObjCImport { + final String name; - ObjCInternalFunction( - String name, this._wrappedFunction, this._toBindingString) - : super(originalName: name, name: name, isInternal: true); + const ObjCImport(this.name); - @override - BindingString toBindingString(Writer w) { - name = w.wrapperLevelUniqueNamer.makeUnique(name); - return BindingString( - type: BindingStringType.func, string: _toBindingString(w, name)); - } - - @override - void addDependencies(Set dependencies) { - if (dependencies.contains(this)) return; - dependencies.add(this); - _wrappedFunction?.addDependencies(dependencies); - } + String gen(Writer w) => '${w.objcPkgPrefix}.$name'; } /// Globals only used internally by ObjC bindings, such as classes and SELs. -class ObjCInternalGlobal extends LookUpBinding { +class ObjCInternalGlobal extends NoLookUpBinding { final String Function(Writer) makeValue; - Binding? binding; - ObjCInternalGlobal(String name, this.makeValue, [this.binding]) + ObjCInternalGlobal(String name, this.makeValue) : super(originalName: name, name: name, isInternal: true); @override BindingString toBindingString(Writer w) { final s = StringBuffer(); name = w.wrapperLevelUniqueNamer.makeUnique(name); - s.write('late final $name = ${makeValue(w)};'); + s.write('late final $name = ${makeValue(w)};\n'); return BindingString(type: BindingStringType.global, string: s.toString()); } @@ -406,17 +123,16 @@ class ObjCInternalGlobal extends LookUpBinding { void addDependencies(Set dependencies) { if (dependencies.contains(this)) return; dependencies.add(this); - binding?.addDependencies(dependencies); } } enum ObjCMsgSendVariant { - normal('objc_msgSend'), - stret('objc_msgSend_stret'), - fpret('objc_msgSend_fpret'); + normal(ObjCBuiltInFunctions.msgSendPointer), + stret(ObjCBuiltInFunctions.msgSendStretPointer), + fpret(ObjCBuiltInFunctions.msgSendFpretPointer); - final String name; - const ObjCMsgSendVariant(this.name); + final ObjCImport pointer; + const ObjCMsgSendVariant(this.pointer); static ObjCMsgSendVariant fromReturnType(Type returnType) { if (returnType is Compound && returnType.isStruct) { @@ -428,6 +144,39 @@ enum ObjCMsgSendVariant { } } +class ObjCMsgSendVariantFunc extends NoLookUpBinding { + ObjCMsgSendVariant variant; + FunctionType type; + + ObjCMsgSendVariantFunc( + {required super.name, + required this.variant, + required Type returnType, + required List parameters}) + : type = FunctionType(returnType: returnType, parameters: parameters), + super(isInternal: true); + + @override + BindingString toBindingString(Writer w) { + final cType = NativeFunc(type).getCType(w); + final dartType = type.getFfiDartType(w, writeArgumentNames: false); + final pointer = variant.pointer.gen(w); + + final bindingString = ''' +final $name = $pointer.cast<$cType>().asFunction<$dartType>(); +'''; + + return BindingString(type: BindingStringType.func, string: bindingString); + } + + @override + void addDependencies(Set dependencies) { + if (dependencies.contains(this)) return; + dependencies.add(this); + type.addDependencies(dependencies); + } +} + /// A wrapper around the objc_msgSend function, or the stret or fpret variants. /// /// The [variant] is based purely on the return type of the method. @@ -443,42 +192,39 @@ enum ObjCMsgSendVariant { /// arg. class ObjCMsgSendFunc { final ObjCMsgSendVariant variant; - final ObjCInternalGlobal useVariants; + final ObjCImport useVariants; // [normalFunc] is always a reference to the normal objc_msgSend function. If // the [variant] is fpret or stret, then [variantFunc] is a reference to the // corresponding variant of the objc_msgSend function, otherwise it's null. - late final Func normalFunc; - late final Func? variantFunc; + late final ObjCMsgSendVariantFunc normalFunc; + late final ObjCMsgSendVariantFunc? variantFunc; ObjCMsgSendFunc(String name, Type returnType, List params, this.useVariants) : variant = ObjCMsgSendVariant.fromReturnType(returnType) { - normalFunc = Func( + normalFunc = ObjCMsgSendVariantFunc( name: name, - originalName: ObjCMsgSendVariant.normal.name, + variant: ObjCMsgSendVariant.normal, returnType: returnType, parameters: _params(params), - isInternal: true, ); switch (variant) { case ObjCMsgSendVariant.normal: variantFunc = null; case ObjCMsgSendVariant.fpret: - variantFunc = Func( - name: '${name}_fpret', - originalName: variant.name, + variantFunc = ObjCMsgSendVariantFunc( + name: '${name}Fpret', + variant: variant, returnType: returnType, parameters: _params(params), - isInternal: true, ); case ObjCMsgSendVariant.stret: - variantFunc = Func( - name: '${name}_stret', - originalName: variant.name, + variantFunc = ObjCMsgSendVariantFunc( + name: '${name}Stret', + variant: variant, returnType: voidType, parameters: _params(params, structRetPtr: PointerType(returnType)), - isInternal: true, ); } } @@ -486,49 +232,45 @@ class ObjCMsgSendFunc { static List _params(List params, {Type? structRetPtr}) { return [ - if (structRetPtr != null) Parameter(name: 'stret', type: structRetPtr), - Parameter(name: 'obj', type: PointerType(objCObjectType)), - Parameter(name: 'sel', type: PointerType(objCSelType)), - for (final p in params) Parameter(name: p.name, type: p.type), + if (structRetPtr != null) Parameter(type: structRetPtr), + Parameter(type: PointerType(objCObjectType)), + Parameter(type: PointerType(objCSelType)), + for (final p in params) Parameter(type: p.type), ]; } bool get isStret => variant == ObjCMsgSendVariant.stret; void addDependencies(Set dependencies) { - if (variant != ObjCMsgSendVariant.normal) { - useVariants.addDependencies(dependencies); - } normalFunc.addDependencies(dependencies); variantFunc?.addDependencies(dependencies); } - String invoke(String lib, String target, String sel, Iterable params, + String invoke(Writer w, String target, String sel, Iterable params, {String? structRetPtr}) { - final normalCall = _invoke(normalFunc.name, lib, target, sel, params); + final normalCall = _invoke(normalFunc.name, target, sel, params); switch (variant) { case ObjCMsgSendVariant.normal: return normalCall; case ObjCMsgSendVariant.fpret: - final fpretCall = _invoke(variantFunc!.name, lib, target, sel, params); - return '$lib.${useVariants.name} ? $fpretCall : $normalCall'; + final fpretCall = _invoke(variantFunc!.name, target, sel, params); + return '${useVariants.gen(w)} ? $fpretCall : $normalCall'; case ObjCMsgSendVariant.stret: - final stretCall = _invoke(variantFunc!.name, lib, target, sel, params, + final stretCall = _invoke(variantFunc!.name, target, sel, params, structRetPtr: structRetPtr); - return '$lib.${useVariants.name} ? $stretCall : ' + return '${useVariants.gen(w)} ? $stretCall : ' '$structRetPtr.ref = $normalCall'; } } static String _invoke( String name, - String lib, String target, String sel, Iterable params, { String? structRetPtr, }) { - return '''$lib.$name(${[ + return '''$name(${[ if (structRetPtr != null) structRetPtr, target, sel, diff --git a/pkgs/ffigen/lib/src/code_generator/objc_interface.dart b/pkgs/ffigen/lib/src/code_generator/objc_interface.dart index eafe6c892..cbc7c193d 100644 --- a/pkgs/ffigen/lib/src/code_generator/objc_interface.dart +++ b/pkgs/ffigen/lib/src/code_generator/objc_interface.dart @@ -55,24 +55,20 @@ class ObjCInterface extends BindingType { super.dartDoc, required this.builtInFunctions, }) : lookupName = lookupName ?? originalName, - super( - name: name ?? originalName, - ) { - builtInFunctions.registerInterface(this); - } + super(name: name ?? originalName); - bool get isNSString => originalName == "NSString"; - bool get isNSData => originalName == "NSData"; + bool get _isBuiltIn => builtInFunctions.isBuiltInInterface(name); @override BindingString toBindingString(Writer w) { + if (_isBuiltIn) { + return BindingString(type: BindingStringType.objcInterface, string: ''); + } + String paramsToString(List params, {required bool isStatic}) { final List stringParams = []; - if (isStatic) { - stringParams.add('${w.className} _lib'); - } stringParams.addAll( params.map((p) => '${_getConvertedType(p.type, w, name)} ${p.name}')); return '(${stringParams.join(", ")})'; @@ -83,46 +79,42 @@ class ObjCInterface extends BindingType { s.write(makeDartDoc(dartDoc!)); } - final uniqueNamer = UniqueNamer({name, '_id', '_lib'}); - final natLib = w.className; + final uniqueNamer = UniqueNamer({name, 'pointer'}); + + final rawObjType = PointerType(objCObjectType).getCType(w); + final wrapObjType = ObjCBuiltInFunctions.objectBase.gen(w); - builtInFunctions.ensureUtilsExist(w, s); - final objType = PointerType(objCObjectType).getCType(w); + final superTypeIsInPkgObjc = superType == null; // Class declaration. s.write(''' -class $name extends ${superType?.name ?? '_ObjCWrapper'} { - $name._($objType id, $natLib lib, +class $name extends ${superType?.getDartType(w) ?? wrapObjType} { + $name._($rawObjType pointer, {bool retain = false, bool release = false}) : - super._(id, lib, retain: retain, release: release); + ${superTypeIsInPkgObjc ? 'super' : 'super.castFromPointer'} + (pointer, retain: retain, release: release); - /// Returns a [$name] that points to the same underlying object as [other]. - static $name castFrom(T other) { - return $name._(other._id, other._lib, retain: true, release: true); - } + /// Constructs a [$name] that points to the same underlying object as [other]. + $name.castFrom($wrapObjType other) : + this._(other.pointer, retain: true, release: true); - /// Returns a [$name] that wraps the given raw object pointer. - static $name castFromPointer($natLib lib, $objType other, - {bool retain = false, bool release = false}) { - return $name._(other, lib, retain: retain, release: release); - } + /// Constructs a [$name] that wraps the given raw object pointer. + $name.castFromPointer($rawObjType other, + {bool retain = false, bool release = false}) : + this._(other, retain: retain, release: release); /// Returns whether [obj] is an instance of [$name]. - static bool isInstance(_ObjCWrapper obj) { + static bool isInstance($wrapObjType obj) { return ${_isKindOfClassMsgSend.invoke( - 'obj._lib', - 'obj._id', - 'obj._lib.${_isKindOfClass.name}', - ['obj._lib.${_classObject.name}'], + w, + 'obj.pointer', + _isKindOfClass.name, + [_classObject.name], )}; } '''); - if (isNSString) { - builtInFunctions.generateNSStringUtils(w, s); - } - // Methods. for (final m in methods.values) { final methodName = m._getDartMethodName(uniqueNamer); @@ -148,16 +140,16 @@ class $name extends ${superType?.name ?? '_ObjCWrapper'} { switch (m.kind) { case ObjCMethodKind.method: - // static returnType methodName(NativeLibrary _lib, ...) + // static returnType methodName(...) s.write(' $methodName'); break; case ObjCMethodKind.propertyGetter: - // static returnType getMethodName(NativeLibrary _lib) + // static returnType getMethodName() s.write(' get'); s.write(methodName[0].toUpperCase() + methodName.substring(1)); break; case ObjCMethodKind.propertySetter: - // static void setMethodName(NativeLibrary _lib, ...) + // static void setMethodName(...) s.write(' set'); s.write(methodName[0].toUpperCase() + methodName.substring(1)); break; @@ -177,7 +169,7 @@ class $name extends ${superType?.name ?? '_ObjCWrapper'} { case ObjCMethodKind.propertyGetter: s.write(_getConvertedType(returnType, w, name)); if (isStret) { - // void getMethodName(Pointer stret, NativeLibrary _lib) + // void getMethodName(Pointer stret) s.write(' get'); s.write(methodName[0].toUpperCase() + methodName.substring(1)); s.write(paramsToString(params, isStatic: false)); @@ -204,9 +196,9 @@ class $name extends ${superType?.name ?? '_ObjCWrapper'} { s.write(' ${convertReturn ? 'final _ret = ' : 'return '}'); } s.write(m.msgSend!.invoke( - '_lib', - isStatic ? '_lib.${_classObject.name}' : '_id', - '_lib.${m.selObject!.name}', + w, + isStatic ? _classObject.name : 'this.pointer', + m.selObject!.name, m.params.map((p) => p.type .convertDartTypeToFfiDartType(w, p.name, objCRetain: false)), structRetPtr: 'stret')); @@ -215,7 +207,6 @@ class $name extends ${superType?.name ?? '_ObjCWrapper'} { final result = returnType.convertFfiDartTypeToDartType( w, '_ret', - '_lib', objCRetain: !m.isOwnedReturn, objCEnclosingClass: name, ); @@ -227,37 +218,22 @@ class $name extends ${superType?.name ?? '_ObjCWrapper'} { s.write('}\n\n'); - if (isNSString) { - builtInFunctions.generateStringUtils(w, s); - } - return BindingString( type: BindingStringType.objcInterface, string: s.toString()); } @override void addDependencies(Set dependencies) { - if (dependencies.contains(this)) return; + if (dependencies.contains(this) || _isBuiltIn) return; dependencies.add(this); - builtInFunctions.addDependencies(dependencies); - _classObject = ObjCInternalGlobal( - '_class_$originalName', - (Writer w) => '${builtInFunctions.getClass.name}("$lookupName")', - builtInFunctions.getClass) + _classObject = ObjCInternalGlobal('_class_$originalName', + (Writer w) => '${ObjCBuiltInFunctions.getClass.gen(w)}("$lookupName")') ..addDependencies(dependencies); _isKindOfClass = builtInFunctions.getSelObject('isKindOfClass:'); _isKindOfClassMsgSend = builtInFunctions.getMsgSendFunc( BooleanType(), [ObjCMethodParam(PointerType(objCObjectType), 'clazz')]); - if (isNSString) { - _addNSStringMethods(); - } - - if (isNSData) { - _addNSDataMethods(); - } - if (superType != null) { superType!.addDependencies(dependencies); _copyMethodsFromSuperType(); @@ -267,6 +243,8 @@ class $name extends ${superType?.name ?? '_ObjCWrapper'} { for (final m in methods.values) { m.addDependencies(dependencies, builtInFunctions); } + + builtInFunctions.addDependencies(dependencies); } void _copyMethodsFromSuperType() { @@ -349,50 +327,12 @@ class $name extends ${superType?.name ?? '_ObjCWrapper'} { methods[method.originalName] = method; } - void _addNSStringMethods() { - addMethod(ObjCMethod( - originalName: 'stringWithCharacters:length:', - kind: ObjCMethodKind.method, - isClass: true, - returnType: this, - params_: [ - ObjCMethodParam(PointerType(wCharType), 'characters'), - ObjCMethodParam(unsignedIntType, 'length'), - ], - )); - addMethod(ObjCMethod( - originalName: 'dataUsingEncoding:', - kind: ObjCMethodKind.method, - isClass: false, - returnType: builtInFunctions.nsData, - params_: [ - ObjCMethodParam(unsignedIntType, 'encoding'), - ], - )); - addMethod(ObjCMethod( - originalName: 'length', - kind: ObjCMethodKind.propertyGetter, - isClass: false, - returnType: unsignedIntType, - params_: [], - )); - } - - void _addNSDataMethods() { - addMethod(ObjCMethod( - originalName: 'bytes', - kind: ObjCMethodKind.propertyGetter, - isClass: false, - returnType: PointerType(voidType), - params_: [], - )); - } - @override String getCType(Writer w) => PointerType(objCObjectType).getCType(w); @override - String getDartType(Writer w) => name; + String getDartType(Writer w) => + _isBuiltIn ? '${w.objcPkgPrefix}.$name' : name; @override bool get sameFfiDartAndCType => true; @@ -412,26 +352,24 @@ class $name extends ${superType?.name ?? '_ObjCWrapper'} { ObjCInterface.generateGetId(value, objCRetain); static String generateGetId(String value, bool objCRetain) => - objCRetain ? '$value.retainAndReturnPointer()' : '$value._id'; + objCRetain ? '$value.retainAndReturnPointer()' : '$value.pointer'; @override String convertFfiDartTypeToDartType( Writer w, - String value, - String library, { + String value, { required bool objCRetain, String? objCEnclosingClass, }) => - ObjCInterface.generateConstructor(name, value, library, objCRetain); + ObjCInterface.generateConstructor(getDartType(w), value, objCRetain); static String generateConstructor( String className, String value, - String library, bool objCRetain, ) { final ownershipFlags = 'retain: $objCRetain, release: true'; - return '$className._($value, $library, $ownershipFlags)'; + return '$className.castFromPointer($value, $ownershipFlags)'; } // Utils for converting between the internal types passed to native code, and diff --git a/pkgs/ffigen/lib/src/code_generator/objc_nullable.dart b/pkgs/ffigen/lib/src/code_generator/objc_nullable.dart index f3c0b877a..5889e06b6 100644 --- a/pkgs/ffigen/lib/src/code_generator/objc_nullable.dart +++ b/pkgs/ffigen/lib/src/code_generator/objc_nullable.dart @@ -64,8 +64,7 @@ class ObjCNullable extends Type { @override String convertFfiDartTypeToDartType( Writer w, - String value, - String library, { + String value, { required bool objCRetain, String? objCEnclosingClass, }) { @@ -73,7 +72,6 @@ class ObjCNullable extends Type { final convertedValue = child.convertFfiDartTypeToDartType( w, value, - library, objCRetain: objCRetain, objCEnclosingClass: objCEnclosingClass, ); diff --git a/pkgs/ffigen/lib/src/code_generator/pointer.dart b/pkgs/ffigen/lib/src/code_generator/pointer.dart index b3f6cfb62..963b7549e 100644 --- a/pkgs/ffigen/lib/src/code_generator/pointer.dart +++ b/pkgs/ffigen/lib/src/code_generator/pointer.dart @@ -94,7 +94,9 @@ class ObjCObjectPointer extends PointerType { ObjCObjectPointer._() : super._(objCObjectType); @override - String getDartType(Writer w) => 'NSObject'; + String getDartType(Writer w) => w.generateForPackageObjectiveC + ? 'NSObject' + : '${w.objcPkgPrefix}.NSObject'; @override bool get sameDartAndCType => false; @@ -113,10 +115,9 @@ class ObjCObjectPointer extends PointerType { @override String convertFfiDartTypeToDartType( Writer w, - String value, - String library, { + String value, { required bool objCRetain, String? objCEnclosingClass, }) => - ObjCInterface.generateConstructor('NSObject', value, library, objCRetain); + ObjCInterface.generateConstructor(getDartType(w), value, objCRetain); } diff --git a/pkgs/ffigen/lib/src/code_generator/type.dart b/pkgs/ffigen/lib/src/code_generator/type.dart index c1d1e227f..111d7eef8 100644 --- a/pkgs/ffigen/lib/src/code_generator/type.dart +++ b/pkgs/ffigen/lib/src/code_generator/type.dart @@ -72,16 +72,14 @@ abstract class Type { /// Returns generated Dart code that converts the given value from its /// FfiDartType to its DartType. /// - /// [value] is the value to be converted, and [library] is an instance of the - /// native library object. If [objCRetain] is true, the ObjC wrapper object + /// [value] is the value to be converted. If [objCRetain] is true, the ObjC wrapper object /// will retain (ref count increment) the wrapped object pointer. If this /// conversion is occuring in the context of an ObjC class, then /// [objCEnclosingClass] should be the name of the Dart wrapper class (this is /// used by instancetype). String convertFfiDartTypeToDartType( Writer w, - String value, - String library, { + String value, { required bool objCRetain, String? objCEnclosingClass, }) => @@ -103,7 +101,7 @@ abstract class Type { /// Returns a string of code that creates a default value for this type. For /// example, for int types this returns the string '0'. A null return means /// that default values aren't supported for this type, eg void. - String? getDefaultValue(Writer w, String nativeLib) => null; + String? getDefaultValue(Writer w) => null; } /// Base class for all Type bindings. @@ -155,8 +153,7 @@ abstract class BindingType extends NoLookUpBinding implements Type { @override String convertFfiDartTypeToDartType( Writer w, - String value, - String library, { + String value, { required bool objCRetain, String? objCEnclosingClass, }) => @@ -169,7 +166,7 @@ abstract class BindingType extends NoLookUpBinding implements Type { String cacheKey() => hashCode.toRadixString(36); @override - String? getDefaultValue(Writer w, String nativeLib) => null; + String? getDefaultValue(Writer w) => null; } /// Represents an unimplemented type. Used as a marker, so that declarations diff --git a/pkgs/ffigen/lib/src/code_generator/typealias.dart b/pkgs/ffigen/lib/src/code_generator/typealias.dart index e31d14882..d2b43b1fe 100644 --- a/pkgs/ffigen/lib/src/code_generator/typealias.dart +++ b/pkgs/ffigen/lib/src/code_generator/typealias.dart @@ -172,15 +172,13 @@ class Typealias extends BindingType { @override String convertFfiDartTypeToDartType( Writer w, - String value, - String library, { + String value, { required bool objCRetain, String? objCEnclosingClass, }) => type.convertFfiDartTypeToDartType( w, value, - library, objCRetain: objCRetain, objCEnclosingClass: objCEnclosingClass, ); @@ -189,8 +187,7 @@ class Typealias extends BindingType { String cacheKey() => type.cacheKey(); @override - String? getDefaultValue(Writer w, String nativeLib) => - type.getDefaultValue(w, nativeLib); + String? getDefaultValue(Writer w) => type.getDefaultValue(w); } /// Objective C's instancetype. @@ -220,13 +217,11 @@ class ObjCInstanceType extends Typealias { @override String convertFfiDartTypeToDartType( Writer w, - String value, - String library, { + String value, { required bool objCRetain, String? objCEnclosingClass, }) => // objCEnclosingClass must be present, because instancetype can only // occur inside a class. - ObjCInterface.generateConstructor( - objCEnclosingClass!, value, library, objCRetain); + ObjCInterface.generateConstructor(objCEnclosingClass!, value, objCRetain); } diff --git a/pkgs/ffigen/lib/src/code_generator/utils.dart b/pkgs/ffigen/lib/src/code_generator/utils.dart index 4bad8e3dd..f1dfd4da1 100644 --- a/pkgs/ffigen/lib/src/code_generator/utils.dart +++ b/pkgs/ffigen/lib/src/code_generator/utils.dart @@ -2,6 +2,10 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'dart:io'; + +import 'package:path/path.dart' as p; + import 'dart_keywords.dart'; import 'pointer.dart'; import 'type.dart'; @@ -112,3 +116,21 @@ String makeArrayAnnotation(Writer w, ConstantArray arrayType) { return '@${w.ffiLibraryPrefix}.Array.multi([${dimensions.join(', ')}])'; } + +/// The path to the Dart executable. +/// +/// This is usually just Platform.resolvedExecutable. But when running flutter +/// tests, the resolvedExecutable will be flutter_tester, and Dart will be in a +/// directory a few levels up from it. +String findDart() { + String path = Platform.resolvedExecutable; + if (p.basenameWithoutExtension(path) == 'dart') return path; + final dartExe = 'dart${p.extension(path)}'; + while (path.isNotEmpty) { + path = p.dirname(path); + final dartPath = p.join(path, dartExe); + if (File(dartPath).existsSync()) return dartPath; + } + throw Exception( + "Couldn't find Dart executable near ${Platform.resolvedExecutable}"); +} diff --git a/pkgs/ffigen/lib/src/code_generator/writer.dart b/pkgs/ffigen/lib/src/code_generator/writer.dart index 8193de1c0..5094b5b91 100644 --- a/pkgs/ffigen/lib/src/code_generator/writer.dart +++ b/pkgs/ffigen/lib/src/code_generator/writer.dart @@ -34,6 +34,8 @@ class Writer { final String? classDocComment; + final bool generateForPackageObjectiveC; + String? _ffiLibraryPrefix; String get ffiLibraryPrefix { if (_ffiLibraryPrefix != null) { @@ -60,6 +62,19 @@ class Writer { return _ffiPkgLibraryPrefix = import.prefix; } + String? _objcPkgPrefix; + String get objcPkgPrefix { + if (_objcPkgPrefix != null) { + return _objcPkgPrefix!; + } + + final import = _usedImports.firstWhere( + (element) => element.name == objcPkgImport.name, + orElse: () => objcPkgImport); + _usedImports.add(import); + return _objcPkgPrefix = import.prefix; + } + late String selfImportPrefix = () { final import = _usedImports .firstWhere((element) => element.name == self.name, orElse: () => self); @@ -106,6 +121,7 @@ class Writer { Set? additionalImports, this.classDocComment, this.header, + required this.generateForPackageObjectiveC, }) { final globalLevelNameSet = noLookUpBindings.map((e) => e.name).toSet(); final wrapperLevelNameSet = lookUpBindings.map((e) => e.name).toSet(); @@ -293,9 +309,8 @@ class Writer { // Write neccesary imports. for (final lib in _usedImports) { - result - ..write("import '${lib.importPath}' as ${lib.prefix};") - ..write('\n'); + final path = lib.importPath(generateForPackageObjectiveC); + result.write("import '$path' as ${lib.prefix};\n"); } result.write(s); diff --git a/pkgs/ffigen/lib/src/config_provider/config.dart b/pkgs/ffigen/lib/src/config_provider/config.dart index 69740f4b7..1e6e36684 100644 --- a/pkgs/ffigen/lib/src/config_provider/config.dart +++ b/pkgs/ffigen/lib/src/config_provider/config.dart @@ -98,6 +98,14 @@ class Config { bool get excludeAllByDefault => _excludeAllByDefault; late bool _excludeAllByDefault; + /// Undocumented option that changes code generation for package:objective_c. + /// The main difference is whether NSObject etc are imported from + /// package:objective_c (the default) or code genned like any other class. + /// This is necessary because package:objective_c can't import NSObject from + /// itself. + bool get generateForPackageObjectiveC => _generateForPackageObjectiveC; + late bool _generateForPackageObjectiveC; + /// If generated bindings should be sorted alphabetically. bool get sort => _sort; late bool _sort; @@ -602,6 +610,13 @@ class Config { defaultValue: (node) => false, resultOrDefault: (node) => _excludeAllByDefault = node.value as bool, ), + HeterogeneousMapEntry( + key: strings.generateForPackageObjectiveC, + valueConfigSpec: BoolConfigSpec(), + defaultValue: (node) => false, + resultOrDefault: (node) => + _generateForPackageObjectiveC = node.value as bool, + ), HeterogeneousMapEntry( key: strings.sort, valueConfigSpec: BoolConfigSpec(), diff --git a/pkgs/ffigen/lib/src/config_provider/spec_utils.dart b/pkgs/ffigen/lib/src/config_provider/spec_utils.dart index 31326ace9..41860e89c 100644 --- a/pkgs/ffigen/lib/src/config_provider/spec_utils.dart +++ b/pkgs/ffigen/lib/src/config_provider/spec_utils.dart @@ -92,15 +92,15 @@ Map symbolFileImportExtractor( final uniqueNamer = UniqueNamer(libraryImports.keys .followedBy([strings.defaultSymbolFileImportPrefix]).toSet()); for (final file in (symbolFile[strings.files] as YamlMap).keys) { - final existingImports = - libraryImports.values.where((element) => element.importPath == file); + final existingImports = libraryImports.values + .where((element) => element.importPath(false) == file); if (existingImports.isEmpty) { final name = uniqueNamer.makeUnique(strings.defaultSymbolFileImportPrefix); libraryImports[name] = LibraryImport(name, file as String); } final libraryImport = libraryImports.values.firstWhere( - (element) => element.importPath == file, + (element) => element.importPath(false) == file, ); loadImportedTypes( symbolFile[strings.files][file] as YamlMap, resultMap, libraryImport); diff --git a/pkgs/ffigen/lib/src/executables/ffigen.dart b/pkgs/ffigen/lib/src/executables/ffigen.dart index 1c6008592..dde472381 100644 --- a/pkgs/ffigen/lib/src/executables/ffigen.dart +++ b/pkgs/ffigen/lib/src/executables/ffigen.dart @@ -17,6 +17,7 @@ final _ansi = Ansi(Ansi.terminalSupportsAnsi); const compilerOpts = 'compiler-opts'; const ignoreSourceErrors = 'ignore-source-errors'; +const format = 'format'; const conf = 'config'; const help = 'help'; const verbose = 'verbose'; @@ -36,7 +37,7 @@ String errorPen(String str) { return '${_ansi.red}$str${_ansi.none}'; } -void main(List args) async { +Future main(List args) async { // Parses the cmd args. This will print usage and exit if --help was passed. final argResult = getArgResults(args); @@ -57,7 +58,7 @@ void main(List args) async { // Generate file for the parsed bindings. final gen = File(config.output); - library.generateFile(gen); + library.generateFile(gen, format: argResult[format] as bool); _logger .info(successPen('Finished, Bindings generated in ${gen.absolute.path}')); @@ -168,6 +169,12 @@ ArgResults getArgResults(List args) { help: 'Ignore any compiler warnings/errors in source header files', negatable: false, ); + parser.addFlag( + format, + help: 'Format the generated code.', + defaultsTo: true, + negatable: true, + ); ArgResults results; try { diff --git a/pkgs/ffigen/lib/src/header_parser/data.dart b/pkgs/ffigen/lib/src/header_parser/data.dart index bab37af43..15cceb5d4 100644 --- a/pkgs/ffigen/lib/src/header_parser/data.dart +++ b/pkgs/ffigen/lib/src/header_parser/data.dart @@ -57,6 +57,7 @@ void initializeGlobals({required Config config}) { _unnamedEnumConstants = []; _cursorIndex = CursorIndex(); _bindingsIndex = BindingsIndex(); - _objCBuiltInFunctions = ObjCBuiltInFunctions(); + _objCBuiltInFunctions = + ObjCBuiltInFunctions(config.generateForPackageObjectiveC); hasSourceErrors = false; } diff --git a/pkgs/ffigen/lib/src/header_parser/parser.dart b/pkgs/ffigen/lib/src/header_parser/parser.dart index fce0b4926..8f14fab8a 100644 --- a/pkgs/ffigen/lib/src/header_parser/parser.dart +++ b/pkgs/ffigen/lib/src/header_parser/parser.dart @@ -26,11 +26,12 @@ Library parse(Config c) { final library = Library( bindings: bindings, - name: config.wrapperName, - description: config.wrapperDocComment, - header: config.preamble, - sort: config.sort, - packingOverride: config.structPackingOverride, + name: c.wrapperName, + description: c.wrapperDocComment, + header: c.preamble, + sort: c.sort, + generateForPackageObjectiveC: c.generateForPackageObjectiveC, + packingOverride: c.structPackingOverride, libraryImports: c.libraryImports.values.toSet(), ); diff --git a/pkgs/ffigen/lib/src/header_parser/sub_parsers/objc_block_parser.dart b/pkgs/ffigen/lib/src/header_parser/sub_parsers/objc_block_parser.dart index 313de4e1e..90ebb05c4 100644 --- a/pkgs/ffigen/lib/src/header_parser/sub_parsers/objc_block_parser.dart +++ b/pkgs/ffigen/lib/src/header_parser/sub_parsers/objc_block_parser.dart @@ -34,6 +34,5 @@ ObjCBlock parseObjCBlock(clang_types.CXType cxtype) { usr: usr.toString(), returnType: returnType, argTypes: argTypes, - builtInFunctions: objCBuiltInFunctions, ); } diff --git a/pkgs/ffigen/lib/src/strings.dart b/pkgs/ffigen/lib/src/strings.dart index b14a51791..cc1397a7f 100644 --- a/pkgs/ffigen/lib/src/strings.dart +++ b/pkgs/ffigen/lib/src/strings.dart @@ -74,6 +74,7 @@ const typedefs = 'typedefs'; const objcInterfaces = 'objc-interfaces'; const excludeAllByDefault = 'exclude-all-by-default'; +const generateForPackageObjectiveC = 'generate-for-package-objective-c'; // Sub-fields of Declarations. const include = 'include'; diff --git a/pkgs/ffigen/pubspec.yaml b/pkgs/ffigen/pubspec.yaml index 006cc8c9f..42ec01321 100644 --- a/pkgs/ffigen/pubspec.yaml +++ b/pkgs/ffigen/pubspec.yaml @@ -17,21 +17,29 @@ environment: sdk: '>=3.3.0-252.0.dev <4.0.0' dependencies: - ffi: ^2.0.1 - yaml: ^3.0.0 - path: ^1.8.0 - quiver: ^3.0.0 args: ^2.0.0 - logging: ^1.0.0 cli_util: ^0.4.0 - glob: ^2.0.0 + collection: ^1.18.0 + ffi: ^2.0.1 file: ^7.0.0 + glob: ^2.0.0 + logging: ^1.0.0 package_config: ^2.1.0 + path: ^1.8.0 + quiver: ^3.0.0 + yaml: ^3.0.0 yaml_edit: ^2.0.3 - collection: ^1.18.0 dev_dependencies: - lints: ^2.0.1 - test: ^1.16.2 json_schema: ^5.1.1 + lints: ^2.0.1 meta: ^1.11.0 + objective_c: ^0.0.1 + test: ^1.16.2 + +dependency_overrides: + # package:objective_c has a flutter dependency, so `dart test` must be run + # using the dart from the flutter SDK. + # See https://github.com/dart-lang/native/issues/1068 + objective_c: + path: ../objective_c/ diff --git a/pkgs/ffigen/test/example_tests/objective_c_example_test.dart b/pkgs/ffigen/test/example_tests/objective_c_example_test.dart index eba22e613..2c0444998 100644 --- a/pkgs/ffigen/test/example_tests/objective_c_example_test.dart +++ b/pkgs/ffigen/test/example_tests/objective_c_example_test.dart @@ -25,18 +25,12 @@ void main() { // Verify that the output contains all the methods and classes that the // example app uses. - expect(output, contains('class AVFAudio{')); - expect(output, contains('class NSString extends NSObject {')); - expect(output, contains('class NSURL extends NSObject {')); + expect(output, contains('class AVAudioPlayer extends objc.NSObject {')); expect( output, contains( - 'static NSURL fileURLWithPath_(AVFAudio _lib, NSString path) {')); - expect(output, contains('class AVAudioPlayer extends NSObject {')); - expect( - output, - contains('AVAudioPlayer? initWithContentsOfURL_error_(' - 'NSURL url, ffi.Pointer> outError) {')); + 'AVAudioPlayer? initWithContentsOfURL_error_(objc.NSURL url, ' + 'ffi.Pointer> outError) {')); expect(output, contains('double get duration {')); expect(output, contains('bool play() {')); }); diff --git a/pkgs/ffigen/test/example_tests/swift_example_test.dart b/pkgs/ffigen/test/example_tests/swift_example_test.dart index a4ac61e5e..ff5811164 100644 --- a/pkgs/ffigen/test/example_tests/swift_example_test.dart +++ b/pkgs/ffigen/test/example_tests/swift_example_test.dart @@ -51,10 +51,8 @@ void main() { // Verify that the output contains all the methods and classes that the // example app uses. - expect(output, contains('class SwiftLibrary{')); - expect(output, contains('class NSString extends NSObject {')); - expect(output, contains('class SwiftClass extends NSObject {')); - expect(output, contains('static SwiftClass new1(SwiftLibrary _lib) {')); + expect(output, contains('class SwiftClass extends objc.NSObject {')); + expect(output, contains('static SwiftClass new1() {')); expect(output, contains('NSString sayHello() {')); expect(output, contains('int get someField {')); expect(output, contains('set someField(int value) {')); @@ -63,7 +61,7 @@ void main() { expect( output, contains(RegExp(r'late final _class_SwiftClass.* = ' - r'_getClass.*\("swift_module\.SwiftClass"\)'))); + r'objc.getClass.*\("swift_module\.SwiftClass"\)'))); }); }); } diff --git a/pkgs/ffigen/test/native_objc_test/automated_ref_count_config.yaml b/pkgs/ffigen/test/native_objc_test/automated_ref_count_config.yaml index 600d33dd3..7ecf98715 100644 --- a/pkgs/ffigen/test/native_objc_test/automated_ref_count_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/automated_ref_count_config.yaml @@ -15,4 +15,4 @@ headers: entry-points: - 'automated_ref_count_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/automated_ref_count_test.dart b/pkgs/ffigen/test/native_objc_test/automated_ref_count_test.dart index 170fea2b0..2e0f7891c 100644 --- a/pkgs/ffigen/test/native_objc_test/automated_ref_count_test.dart +++ b/pkgs/ffigen/test/native_objc_test/automated_ref_count_test.dart @@ -2,50 +2,43 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +// ignore_for_file: unused_local_variable + // Objective C support is only available on mac. @TestOn('mac-os') import 'dart:ffi'; import 'dart:io'; -import 'package:test/test.dart'; import 'package:ffi/ffi.dart'; +import 'package:objective_c/objective_c.dart'; +import 'package:test/test.dart'; import '../test_utils.dart'; import 'automated_ref_count_bindings.dart'; import 'util.dart'; void main() { late AutomatedRefCountTestObjCLibrary lib; - late void Function(Pointer, Pointer) executeInternalCommand; group('Automatic reference counting', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/automated_ref_count_test.dylib'); verifySetupFile(dylib); lib = AutomatedRefCountTestObjCLibrary( DynamicLibrary.open(dylib.absolute.path)); - executeInternalCommand = DynamicLibrary.process().lookupFunction< - Void Function(Pointer, Pointer), - void Function( - Pointer, Pointer)>('Dart_ExecuteInternalCommand'); - generateBindingsForCoverage('automated_ref_count'); }); - doGC() { - final gcNow = "gc-now".toNativeUtf8(); - executeInternalCommand(gcNow.cast(), nullptr); - calloc.free(gcNow); - } - newMethodsInner(Pointer counter) { - final obj1 = ArcTestObject.new1(lib); + final obj1 = ArcTestObject.new1(); obj1.setCounter_(counter); expect(counter.value, 1); - final obj2 = ArcTestObject.newWithCounter_(lib, counter); + final obj2 = ArcTestObject.newWithCounter_(counter); expect(counter.value, 2); } @@ -61,12 +54,12 @@ void main() { }); allocMethodsInner(Pointer counter) { - final obj1 = ArcTestObject.alloc(lib).initWithCounter_(counter); + final obj1 = ArcTestObject.alloc().initWithCounter_(counter); expect(counter.value, 1); - final obj2 = ArcTestObject.castFrom(ArcTestObject.alloc(lib).init()); + final obj2 = ArcTestObject.castFrom(ArcTestObject.alloc().init()); obj2.setCounter_(counter); expect(counter.value, 2); - final obj3 = ArcTestObject.allocTheThing(lib).initWithCounter_(counter); + final obj3 = ArcTestObject.allocTheThing().initWithCounter_(counter); expect(counter.value, 3); } @@ -80,7 +73,7 @@ void main() { }); copyMethodsInner(Pointer counter) { - final obj1 = ArcTestObject.newWithCounter_(lib, counter); + final obj1 = ArcTestObject.newWithCounter_(counter); expect(counter.value, 1); final obj2 = obj1.copyMe(); expect(counter.value, 2); @@ -102,7 +95,7 @@ void main() { }); autoreleaseMethodsInner(Pointer counter) { - final obj = ArcTestObject.makeAndAutorelease_(lib, counter); + final obj = ArcTestObject.makeAndAutorelease_(counter); expect(counter.value, 1); } @@ -119,7 +112,7 @@ void main() { expect(counter.value, 0); final pool2 = lib.createAutoreleasePool(); - final obj = ArcTestObject.makeAndAutorelease_(lib, counter); + final obj = ArcTestObject.makeAndAutorelease_(counter); expect(counter.value, 1); doGC(); expect(counter.value, 1); @@ -133,7 +126,7 @@ void main() { }); assignPropertiesInnerInner(Pointer counter, ArcTestObject outerObj) { - final assignObj = ArcTestObject.newWithCounter_(lib, counter); + final assignObj = ArcTestObject.newWithCounter_(counter); expect(counter.value, 2); outerObj.assignedProperty = assignObj; expect(counter.value, 2); @@ -145,7 +138,7 @@ void main() { } assignPropertiesInner(Pointer counter) { - final outerObj = ArcTestObject.newWithCounter_(lib, counter); + final outerObj = ArcTestObject.newWithCounter_(counter); expect(counter.value, 1); assignPropertiesInnerInner(counter, outerObj); doGC(); @@ -163,7 +156,7 @@ void main() { }); retainPropertiesInnerInner(Pointer counter, ArcTestObject outerObj) { - final retainObj = ArcTestObject.newWithCounter_(lib, counter); + final retainObj = ArcTestObject.newWithCounter_(counter); expect(counter.value, 2); outerObj.retainedProperty = retainObj; expect(counter.value, 2); @@ -171,7 +164,7 @@ void main() { } retainPropertiesInner(Pointer counter) { - final outerObj = ArcTestObject.newWithCounter_(lib, counter); + final outerObj = ArcTestObject.newWithCounter_(counter); expect(counter.value, 1); retainPropertiesInnerInner(counter, outerObj); doGC(); @@ -194,10 +187,10 @@ void main() { }); copyPropertiesInner(Pointer counter) { - final outerObj = ArcTestObject.newWithCounter_(lib, counter); + final outerObj = ArcTestObject.newWithCounter_(counter); expect(counter.value, 1); - final copyObj = ArcTestObject.newWithCounter_(lib, counter); + final copyObj = ArcTestObject.newWithCounter_(counter); expect(counter.value, 2); outerObj.copiedProperty = copyObj; // Copy properties make a copy of the object, so now we have 3 objects. @@ -226,13 +219,14 @@ void main() { castFromPointerInnerReleaseAndRetain(int address) { final fromCast = RefCounted.castFromPointer( - lib, Pointer.fromAddress(address), - release: true, retain: true); + Pointer.fromAddress(address), + release: true, + retain: true); expect(fromCast.refCount, 2); } test('castFromPointer - release and retain', () { - final obj1 = RefCounted.new1(lib); + final obj1 = RefCounted.new1(); expect(obj1.refCount, 1); castFromPointerInnerReleaseAndRetain(obj1.meAsInt()); @@ -242,13 +236,14 @@ void main() { castFromPointerInnerNoReleaseAndRetain(int address) { final fromCast = RefCounted.castFromPointer( - lib, Pointer.fromAddress(address), - release: false, retain: false); + Pointer.fromAddress(address), + release: false, + retain: false); expect(fromCast.refCount, 1); } test('castFromPointer - no release and retain', () { - final obj1 = RefCounted.new1(lib); + final obj1 = RefCounted.new1(); expect(obj1.refCount, 1); castFromPointerInnerNoReleaseAndRetain(obj1.meAsInt()); @@ -258,11 +253,11 @@ void main() { test('Manual release', () { final counter = calloc(); - final obj1 = ArcTestObject.newWithCounter_(lib, counter); + final obj1 = ArcTestObject.newWithCounter_(counter); expect(counter.value, 1); - final obj2 = ArcTestObject.newWithCounter_(lib, counter); + final obj2 = ArcTestObject.newWithCounter_(counter); expect(counter.value, 2); - final obj3 = ArcTestObject.newWithCounter_(lib, counter); + final obj3 = ArcTestObject.newWithCounter_(counter); expect(counter.value, 3); obj1.release(); @@ -277,13 +272,13 @@ void main() { }); Pointer manualRetainInner(Pointer counter) { - final obj = ArcTestObject.newWithCounter_(lib, counter); + final obj = ArcTestObject.newWithCounter_(counter); expect(counter.value, 1); return obj.retainAndReturnPointer(); } manualRetainInner2(Pointer counter, Pointer rawPointer) { - final obj = ArcTestObject.castFromPointer(lib, rawPointer, + final obj = ArcTestObject.castFromPointer(rawPointer, retain: false, release: true); expect(counter.value, 1); } @@ -302,7 +297,7 @@ void main() { }); ArcTestObject unownedReferenceInner2(Pointer counter) { - final obj1 = ArcTestObject.new1(lib); + final obj1 = ArcTestObject.new1(); obj1.setCounter_(counter); expect(counter.value, 1); final obj1b = obj1.unownedReference(); @@ -311,7 +306,7 @@ void main() { // Make a second object so that the counter check in unownedReferenceInner // sees some sort of change. Otherwise this test could pass just by the GC // not working correctly. - final obj2 = ArcTestObject.new1(lib); + final obj2 = ArcTestObject.new1(); obj2.setCounter_(counter); expect(counter.value, 2); diff --git a/pkgs/ffigen/test/native_objc_test/bad_method_config.yaml b/pkgs/ffigen/test/native_objc_test/bad_method_config.yaml index 5ad9c1b9b..1534fbb92 100644 --- a/pkgs/ffigen/test/native_objc_test/bad_method_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/bad_method_config.yaml @@ -18,4 +18,4 @@ headers: entry-points: - 'bad_method_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/bad_method_test.dart b/pkgs/ffigen/test/native_objc_test/bad_method_test.dart index 3b87c5bd3..67d6398ac 100644 --- a/pkgs/ffigen/test/native_objc_test/bad_method_test.dart +++ b/pkgs/ffigen/test/native_objc_test/bad_method_test.dart @@ -14,25 +14,26 @@ import 'bad_method_test_bindings.dart'; import 'util.dart'; void main() { - late NativeObjCLibrary lib; group('bad_method_test', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/bad_method_test.dylib'); verifySetupFile(dylib); - lib = NativeObjCLibrary(DynamicLibrary.open(dylib.absolute.path)); + DynamicLibrary.open(dylib.absolute.path); generateBindingsForCoverage('bad_method'); }); test("Test incomplete struct methods that weren't skipped", () { - final obj = BadMethodTestObject.new1(lib); + final obj = BadMethodTestObject.new1(); final structPtr = obj.incompletePointerReturn(); expect(structPtr.address, 1234); expect(obj.incompletePointerParam_(structPtr), 1234); }); test("Test bit field methods that weren't skipped", () { - final obj = BadMethodTestObject.new1(lib); + final obj = BadMethodTestObject.new1(); final bitFieldPtr = obj.bitFieldPointerReturn(); expect(bitFieldPtr.address, 5678); expect(obj.bitFieldPointerParam_(bitFieldPtr), 5678); diff --git a/pkgs/ffigen/test/native_objc_test/block_config.yaml b/pkgs/ffigen/test/native_objc_test/block_config.yaml index 9f12686e3..18289df95 100644 --- a/pkgs/ffigen/test/native_objc_test/block_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/block_config.yaml @@ -13,4 +13,4 @@ headers: entry-points: - 'block_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/block_test.dart b/pkgs/ffigen/test/native_objc_test/block_test.dart index 713e76650..8e2174cba 100644 --- a/pkgs/ffigen/test/native_objc_test/block_test.dart +++ b/pkgs/ffigen/test/native_objc_test/block_test.dart @@ -2,6 +2,8 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +// ignore_for_file: unused_local_variable + // Objective C support is only available on mac. @TestOn('mac-os') @@ -9,8 +11,11 @@ import 'dart:async'; import 'dart:ffi'; import 'dart:io'; -import 'package:test/test.dart'; import 'package:ffi/ffi.dart'; +import 'package:objective_c/src/internal.dart' as internal_for_testing + show blockHasRegisteredClosure; +import 'package:test/test.dart'; + import '../test_utils.dart'; import 'block_bindings.dart'; import 'util.dart'; @@ -27,44 +32,34 @@ typedef BlockBlock = ObjCBlock_Int32Int32_Int32Int32; void main() { late BlockTestObjCLibrary lib; - late void Function(Pointer, Pointer) executeInternalCommand; group('Blocks', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/block_test.dylib'); verifySetupFile(dylib); lib = BlockTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path)); - executeInternalCommand = DynamicLibrary.process().lookupFunction< - Void Function(Pointer, Pointer), - void Function( - Pointer, Pointer)>('Dart_ExecuteInternalCommand'); - generateBindingsForCoverage('block'); }); - doGC() { - final gcNow = "gc-now".toNativeUtf8(); - executeInternalCommand(gcNow.cast(), nullptr); - calloc.free(gcNow); - } - test('BlockTester is working', () { // This doesn't test any Block functionality, just that the BlockTester // itself is working correctly. - final blockTester = BlockTester.makeFromMultiplier_(lib, 10); + final blockTester = BlockTester.makeFromMultiplier_(10); expect(blockTester.call_(123), 1230); final intBlock = blockTester.getBlock(); - final blockTester2 = BlockTester.makeFromBlock_(lib, intBlock); + final blockTester2 = BlockTester.makeFromBlock_(intBlock); blockTester2.pokeBlock(); expect(blockTester2.call_(456), 4560); }); test('Block from function pointer', () { final block = - IntBlock.fromFunctionPointer(lib, Pointer.fromFunction(_add100, 999)); - final blockTester = BlockTester.makeFromBlock_(lib, block); + IntBlock.fromFunctionPointer(Pointer.fromFunction(_add100, 999)); + final blockTester = BlockTester.makeFromBlock_(block); blockTester.pokeBlock(); expect(blockTester.call_(123), 223); expect(block(123), 223); @@ -75,36 +70,36 @@ void main() { } test('Block from function', () { - final block = IntBlock.fromFunction(lib, makeAdder(4000)); - final blockTester = BlockTester.makeFromBlock_(lib, block); + final block = IntBlock.fromFunction(makeAdder(4000)); + final blockTester = BlockTester.makeFromBlock_(block); blockTester.pokeBlock(); expect(blockTester.call_(123), 4123); expect(block(123), 4123); }); test('Listener block same thread', () async { - final hasRun = Completer(); + final hasRun = Completer(); int value = 0; - final block = VoidBlock.listener(lib, () { + final block = VoidBlock.listener(() { value = 123; hasRun.complete(); }); - BlockTester.callOnSameThread_(lib, block); + BlockTester.callOnSameThread_(block); await hasRun.future; expect(value, 123); }); test('Listener block new thread', () async { - final hasRun = Completer(); + final hasRun = Completer(); int value = 0; - final block = VoidBlock.listener(lib, () { + final block = VoidBlock.listener(() { value = 123; hasRun.complete(); }); - final thread = BlockTester.callOnNewThread_(lib, block); + final thread = BlockTester.callOnNewThread_(block); thread.start(); await hasRun.future; @@ -112,19 +107,19 @@ void main() { }); test('Float block', () { - final block = FloatBlock.fromFunction(lib, (double x) { + final block = FloatBlock.fromFunction((double x) { return x + 4.56; }); expect(block(1.23), closeTo(5.79, 1e-6)); - expect(BlockTester.callFloatBlock_(lib, block), closeTo(5.79, 1e-6)); + expect(BlockTester.callFloatBlock_(block), closeTo(5.79, 1e-6)); }); test('Double block', () { - final block = DoubleBlock.fromFunction(lib, (double x) { + final block = DoubleBlock.fromFunction((double x) { return x + 4.56; }); expect(block(1.23), closeTo(5.79, 1e-6)); - expect(BlockTester.callDoubleBlock_(lib, block), closeTo(5.79, 1e-6)); + expect(BlockTester.callDoubleBlock_(block), closeTo(5.79, 1e-6)); }); test('Struct block', () { @@ -138,7 +133,7 @@ void main() { final tempPtr = arena(); final temp = tempPtr.ref; - final block = Vec4Block.fromFunction(lib, (Vec4 v) { + final block = Vec4Block.fromFunction((Vec4 v) { // Twiddle the Vec4 components. temp.x = v.y; temp.y = v.z; @@ -155,7 +150,7 @@ void main() { final result2Ptr = arena(); final result2 = result2Ptr.ref; - BlockTester.callVec4Block_(lib, result2Ptr, block); + BlockTester.callVec4Block_(result2Ptr, block); expect(result2.x, 3.4); expect(result2.y, 5.6); expect(result2.z, 7.8); @@ -165,18 +160,18 @@ void main() { test('Object block', () { bool isCalled = false; - final block = ObjectBlock.fromFunction(lib, (DummyObject x) { + final block = ObjectBlock.fromFunction((DummyObject x) { isCalled = true; return x; }); - final obj = DummyObject.new1(lib); + final obj = DummyObject.new1(); final result1 = block(obj); expect(result1, obj); expect(isCalled, isTrue); isCalled = false; - final result2 = BlockTester.callObjectBlock_(lib, block); + final result2 = BlockTester.callObjectBlock_(block); expect(result2, isNot(obj)); expect(result2.pointer, isNot(nullptr)); expect(isCalled, isTrue); @@ -184,12 +179,12 @@ void main() { test('Nullable object block', () { bool isCalled = false; - final block = NullableObjectBlock.fromFunction(lib, (DummyObject? x) { + final block = NullableObjectBlock.fromFunction((DummyObject? x) { isCalled = true; return x; }); - final obj = DummyObject.new1(lib); + final obj = DummyObject.new1(); final result1 = block(obj); expect(result1, obj); expect(isCalled, isTrue); @@ -200,44 +195,46 @@ void main() { expect(isCalled, isTrue); isCalled = false; - final result3 = BlockTester.callNullableObjectBlock_(lib, block); + final result3 = BlockTester.callNullableObjectBlock_(block); expect(result3, isNull); expect(isCalled, isTrue); }); test('Block block', () { - final blockBlock = BlockBlock.fromFunction(lib, (IntBlock intBlock) { - return IntBlock.fromFunction(lib, (int x) { + final blockBlock = BlockBlock.fromFunction((IntBlock intBlock) { + return IntBlock.fromFunction((int x) { return 3 * intBlock(x); }); }); - final intBlock = IntBlock.fromFunction(lib, (int x) { + final intBlock = IntBlock.fromFunction((int x) { return 5 * x; }); final result1 = blockBlock(intBlock); expect(result1(1), 15); - final result2 = BlockTester.newBlock_withMult_(lib, blockBlock, 2); + final result2 = BlockTester.newBlock_withMult_(blockBlock, 2); expect(result2(1), 6); }); test('Native block block', () { - final blockBlock = BlockTester.newBlockBlock_(lib, 7); + final blockBlock = BlockTester.newBlockBlock_(7); - final intBlock = IntBlock.fromFunction(lib, (int x) { + final intBlock = IntBlock.fromFunction((int x) { return 5 * x; }); final result1 = blockBlock(intBlock); expect(result1(1), 35); - final result2 = BlockTester.newBlock_withMult_(lib, blockBlock, 2); + final result2 = BlockTester.newBlock_withMult_(blockBlock, 2); expect(result2(1), 14); }); Pointer funcPointerBlockRefCountTest() { final block = - IntBlock.fromFunctionPointer(lib, Pointer.fromFunction(_add100, 999)); + IntBlock.fromFunctionPointer(Pointer.fromFunction(_add100, 999)); + expect( + internal_for_testing.blockHasRegisteredClosure(block.pointer), false); expect(lib.getBlockRetainCount(block.pointer.cast()), 1); return block.pointer.cast(); } @@ -249,19 +246,26 @@ void main() { }); Pointer funcBlockRefCountTest() { - final block = IntBlock.fromFunction(lib, makeAdder(4000)); + final block = IntBlock.fromFunction(makeAdder(4000)); + expect( + internal_for_testing.blockHasRegisteredClosure(block.pointer), true); expect(lib.getBlockRetainCount(block.pointer.cast()), 1); return block.pointer.cast(); } - test('Function block ref counting', () { + test('Function block ref counting', () async { final rawBlock = funcBlockRefCountTest(); doGC(); + await Future.delayed(Duration.zero); // Let dispose message arrive. expect(lib.getBlockRetainCount(rawBlock), 0); + expect(internal_for_testing.blockHasRegisteredClosure(rawBlock.cast()), + false); }); Pointer blockManualRetainRefCountTest() { - final block = IntBlock.fromFunction(lib, makeAdder(4000)); + final block = IntBlock.fromFunction(makeAdder(4000)); + expect( + internal_for_testing.blockHasRegisteredClosure(block.pointer), true); expect(lib.getBlockRetainCount(block.pointer.cast()), 1); final rawBlock = block.retainAndReturnPointer().cast(); expect(lib.getBlockRetainCount(rawBlock.cast()), 2); @@ -269,27 +273,30 @@ void main() { } int blockManualRetainRefCountTest2(Pointer rawBlock) { - final block = IntBlock.castFromPointer(lib, rawBlock.cast(), + final block = IntBlock.castFromPointer(rawBlock.cast(), retain: false, release: true); return lib.getBlockRetainCount(block.pointer.cast()); } - test('Block ref counting with manual retain and release', () { + test('Block ref counting with manual retain and release', () async { final rawBlock = blockManualRetainRefCountTest(); doGC(); expect(lib.getBlockRetainCount(rawBlock), 1); expect(blockManualRetainRefCountTest2(rawBlock), 1); doGC(); + await Future.delayed(Duration.zero); // Let dispose message arrive. expect(lib.getBlockRetainCount(rawBlock), 0); + expect(internal_for_testing.blockHasRegisteredClosure(rawBlock.cast()), + false); }); (Pointer, Pointer, Pointer) blockBlockDartCallRefCountTest() { - final inputBlock = IntBlock.fromFunction(lib, (int x) { + final inputBlock = IntBlock.fromFunction((int x) { return 5 * x; }); - final blockBlock = BlockBlock.fromFunction(lib, (IntBlock intBlock) { - return IntBlock.fromFunction(lib, (int x) { + final blockBlock = BlockBlock.fromFunction((IntBlock intBlock) { + return IntBlock.fromFunction((int x) { return 3 * intBlock(x); }); }); @@ -326,13 +333,13 @@ void main() { (Pointer, Pointer, Pointer) blockBlockObjCCallRefCountTest() { late Pointer inputBlock; - final blockBlock = BlockBlock.fromFunction(lib, (IntBlock intBlock) { + final blockBlock = BlockBlock.fromFunction((IntBlock intBlock) { inputBlock = intBlock.pointer.cast(); - return IntBlock.fromFunction(lib, (int x) { + return IntBlock.fromFunction((int x) { return 3 * intBlock(x); }); }); - final outputBlock = BlockTester.newBlock_withMult_(lib, blockBlock, 2); + final outputBlock = BlockTester.newBlock_withMult_(blockBlock, 2); expect(outputBlock(1), 6); doGC(); @@ -361,10 +368,10 @@ void main() { (Pointer, Pointer, Pointer) nativeBlockBlockDartCallRefCountTest() { - final inputBlock = IntBlock.fromFunction(lib, (int x) { + final inputBlock = IntBlock.fromFunction((int x) { return 5 * x; }); - final blockBlock = BlockTester.newBlockBlock_(lib, 7); + final blockBlock = BlockTester.newBlockBlock_(7); final outputBlock = blockBlock(inputBlock); expect(outputBlock(1), 35); doGC(); @@ -392,8 +399,8 @@ void main() { }); (Pointer, Pointer) nativeBlockBlockObjCCallRefCountTest() { - final blockBlock = BlockTester.newBlockBlock_(lib, 7); - final outputBlock = BlockTester.newBlock_withMult_(lib, blockBlock, 2); + final blockBlock = BlockTester.newBlockBlock_(7); + final outputBlock = BlockTester.newBlock_withMult_(blockBlock, 2); expect(outputBlock(1), 14); doGC(); @@ -415,11 +422,11 @@ void main() { inputCounter.value = 0; outputCounter.value = 0; - final block = ObjectBlock.fromFunction(lib, (DummyObject x) { - return DummyObject.newWithCounter_(lib, outputCounter); + final block = ObjectBlock.fromFunction((DummyObject x) { + return DummyObject.newWithCounter_(outputCounter); }); - final inputObj = DummyObject.newWithCounter_(lib, inputCounter); + final inputObj = DummyObject.newWithCounter_(inputCounter); final outputObj = block(inputObj); expect(inputCounter.value, 1); expect(outputCounter.value, 1); @@ -443,12 +450,12 @@ void main() { inputCounter.value = 0; outputCounter.value = 0; - final block = ObjectBlock.fromFunction(lib, (DummyObject x) { + final block = ObjectBlock.fromFunction((DummyObject x) { x.setCounter_(inputCounter); - return DummyObject.newWithCounter_(lib, outputCounter); + return DummyObject.newWithCounter_(outputCounter); }); - final outputObj = BlockTester.callObjectBlock_(lib, block); + final outputObj = BlockTester.callObjectBlock_(block); expect(inputCounter.value, 1); expect(outputCounter.value, 1); @@ -472,7 +479,7 @@ void main() { }); test('Block fields have sensible values', () { - final block = IntBlock.fromFunction(lib, makeAdder(4000)); + final block = IntBlock.fromFunction(makeAdder(4000)); final blockPtr = block.pointer; expect(blockPtr.ref.isa, isNot(0)); expect(blockPtr.ref.flags, isNot(0)); // Set by Block_copy. @@ -483,7 +490,7 @@ void main() { expect(descPtr.ref.reserved, 0); expect(descPtr.ref.size, isNot(0)); expect(descPtr.ref.copy_helper, nullptr); - expect(descPtr.ref.dispose_helper, nullptr); + expect(descPtr.ref.dispose_helper, isNot(nullptr)); expect(descPtr.ref.signature, nullptr); }); }); diff --git a/pkgs/ffigen/test/native_objc_test/cast_config.yaml b/pkgs/ffigen/test/native_objc_test/cast_config.yaml index af3394113..ff5b3faac 100644 --- a/pkgs/ffigen/test/native_objc_test/cast_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/cast_config.yaml @@ -10,4 +10,4 @@ headers: entry-points: - 'cast_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/cast_test.dart b/pkgs/ffigen/test/native_objc_test/cast_test.dart index c63d94037..aa765d67b 100644 --- a/pkgs/ffigen/test/native_objc_test/cast_test.dart +++ b/pkgs/ffigen/test/native_objc_test/cast_test.dart @@ -9,6 +9,7 @@ import 'dart:ffi'; import 'dart:io'; +import 'package:objective_c/objective_c.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; import 'cast_bindings.dart'; @@ -16,15 +17,16 @@ import 'util.dart'; void main() { Castaway? testInstance; - late CastTestObjCLibrary lib; group('cast', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/cast_test.dylib'); verifySetupFile(dylib); - lib = CastTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path)); - testInstance = Castaway.new1(lib); + DynamicLibrary.open(dylib.absolute.path); + testInstance = Castaway.new1(); generateBindingsForCoverage('cast'); }); @@ -35,8 +37,8 @@ void main() { test('castFromPointer', () { final meAsInt = testInstance!.meAsInt(); - final fromCast = Castaway.castFromPointer( - lib, Pointer.fromAddress(meAsInt)); + final fromCast = + Castaway.castFromPointer(Pointer.fromAddress(meAsInt)); expect(fromCast, testInstance!); }); @@ -47,16 +49,16 @@ void main() { test('equality equals', () { final meAsInt = testInstance!.meAsInt(); - final fromCast = Castaway.castFromPointer( - lib, Pointer.fromAddress(meAsInt)); + final fromCast = + Castaway.castFromPointer(Pointer.fromAddress(meAsInt)); expect(fromCast, testInstance!); }); test('equality not equals', () { final meAsInt = testInstance!.meAsInt(); - final fromCast = Castaway.castFromPointer( - lib, Pointer.fromAddress(meAsInt)); - expect(fromCast, isNot(equals(NSObject.new1(lib)))); + final fromCast = + Castaway.castFromPointer(Pointer.fromAddress(meAsInt)); + expect(fromCast, isNot(equals(NSObject.new1()))); }); }); } diff --git a/pkgs/ffigen/test/native_objc_test/category_config.yaml b/pkgs/ffigen/test/native_objc_test/category_config.yaml index 5c74e1a54..5c267388e 100644 --- a/pkgs/ffigen/test/native_objc_test/category_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/category_config.yaml @@ -12,4 +12,4 @@ headers: # Include it twice, as a regression test for #353 - 'category_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/category_test.dart b/pkgs/ffigen/test/native_objc_test/category_test.dart index a424c46e4..c2a8ce8df 100644 --- a/pkgs/ffigen/test/native_objc_test/category_test.dart +++ b/pkgs/ffigen/test/native_objc_test/category_test.dart @@ -15,15 +15,16 @@ import 'util.dart'; void main() { late Thing testInstance; - late CategoryTestObjCLibrary lib; group('categories', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/category_test.dylib'); verifySetupFile(dylib); - lib = CategoryTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path)); - testInstance = Thing.new1(lib); + DynamicLibrary.open(dylib.absolute.path); + testInstance = Thing.new1(); generateBindingsForCoverage('category'); }); diff --git a/pkgs/ffigen/test/native_objc_test/failed_to_load_config.yaml b/pkgs/ffigen/test/native_objc_test/failed_to_load_config.yaml index c96702d80..cdd7a2d99 100644 --- a/pkgs/ffigen/test/native_objc_test/failed_to_load_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/failed_to_load_config.yaml @@ -10,4 +10,4 @@ headers: entry-points: - 'failed_to_load_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/failed_to_load_test.dart b/pkgs/ffigen/test/native_objc_test/failed_to_load_test.dart index 8d1bb7091..d0ca5711f 100644 --- a/pkgs/ffigen/test/native_objc_test/failed_to_load_test.dart +++ b/pkgs/ffigen/test/native_objc_test/failed_to_load_test.dart @@ -5,9 +5,6 @@ // Objective C support is only available on mac. @TestOn('mac-os') -import 'dart:ffi'; -import 'dart:io'; - import 'package:test/test.dart'; import '../test_utils.dart'; import 'failed_to_load_bindings.dart'; @@ -21,14 +18,11 @@ void main() { }); test('Failed to load Objective-C class', () { - // Load from the host executable, which is missing all the classes for - // this test, but has the core ObjC functions, such as objc_getClass. The - // library should load ok, because the classes are lazy loaded. - final lib = FailedToLoadTestObjCLibrary(DynamicLibrary.executable()); - - // But when we try to instantiate one of the classes, we get an error. + // We haven't DynamicLibrary.open'd the dylib containing this class. The + // core functions like objc_getClass are defined in the Dart executable, + // so we can use objc_getClass, but it can't locate this class. expect( - () => ClassThatWillFailToLoad.new1(lib), + () => ClassThatWillFailToLoad.new1(), throwsA(predicate( (e) => e.toString().contains('ClassThatWillFailToLoad')))); }); diff --git a/pkgs/ffigen/test/native_objc_test/forward_decl_config.yaml b/pkgs/ffigen/test/native_objc_test/forward_decl_config.yaml index 7a5c815fc..0c7b33fbb 100644 --- a/pkgs/ffigen/test/native_objc_test/forward_decl_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/forward_decl_config.yaml @@ -11,4 +11,4 @@ headers: - 'forward_decl_test.h' - 'forward_decl_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/forward_decl_test.dart b/pkgs/ffigen/test/native_objc_test/forward_decl_test.dart index 4a0651658..9f5b91561 100644 --- a/pkgs/ffigen/test/native_objc_test/forward_decl_test.dart +++ b/pkgs/ffigen/test/native_objc_test/forward_decl_test.dart @@ -14,20 +14,19 @@ import 'forward_decl_bindings.dart'; import 'util.dart'; void main() { - late ForwardDeclTestObjCLibrary lib; - group('forward decl', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/forward_decl_test.dylib'); verifySetupFile(dylib); - lib = - ForwardDeclTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path)); + DynamicLibrary.open(dylib.absolute.path); generateBindingsForCoverage('forward_decl'); }); test('Forward declared class', () { - expect(ForwardDeclaredClass.get123(lib), 123); + expect(ForwardDeclaredClass.get123(), 123); }); }); } diff --git a/pkgs/ffigen/test/native_objc_test/inherited_instancetype_config.yaml b/pkgs/ffigen/test/native_objc_test/inherited_instancetype_config.yaml index 926197921..0a26d8bce 100644 --- a/pkgs/ffigen/test/native_objc_test/inherited_instancetype_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/inherited_instancetype_config.yaml @@ -10,4 +10,4 @@ headers: entry-points: - 'inherited_instancetype_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/inherited_instancetype_test.dart b/pkgs/ffigen/test/native_objc_test/inherited_instancetype_test.dart index 93f93556d..95cacf0f5 100644 --- a/pkgs/ffigen/test/native_objc_test/inherited_instancetype_test.dart +++ b/pkgs/ffigen/test/native_objc_test/inherited_instancetype_test.dart @@ -16,21 +16,20 @@ import 'inherited_instancetype_bindings.dart'; import 'util.dart'; void main() { - late InheritedInstancetypeTestObjCLibrary lib; - group('inheritedInstancetype', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/inherited_instancetype_test.dylib'); verifySetupFile(dylib); - lib = InheritedInstancetypeTestObjCLibrary( - DynamicLibrary.open(dylib.absolute.path)); + DynamicLibrary.open(dylib.absolute.path); generateBindingsForCoverage('inherited_instancetype'); }); test('Ordinary init method', () { - final ChildClass child = ChildClass.alloc(lib).init(); + final ChildClass child = ChildClass.alloc().init(); expect(child.field, 123); final ChildClass sameChild = child.getSelf(); sameChild.field = 456; @@ -38,7 +37,7 @@ void main() { }); test('Custom create method', () { - final ChildClass child = ChildClass.create(lib); + final ChildClass child = ChildClass.create(); expect(child.field, 123); final ChildClass sameChild = child.getSelf(); sameChild.field = 456; @@ -46,7 +45,7 @@ void main() { }); test('Polymorphism', () { - final ChildClass child = ChildClass.alloc(lib).init(); + final ChildClass child = ChildClass.alloc().init(); final BaseClass base = child; // Calling base.getSelf() should still go through ChildClass.getSelf, so diff --git a/pkgs/ffigen/test/native_objc_test/is_instance_config.yaml b/pkgs/ffigen/test/native_objc_test/is_instance_config.yaml index 2673c0bab..bae5136ef 100644 --- a/pkgs/ffigen/test/native_objc_test/is_instance_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/is_instance_config.yaml @@ -11,4 +11,4 @@ headers: entry-points: - 'is_instance_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/is_instance_test.dart b/pkgs/ffigen/test/native_objc_test/is_instance_test.dart index bbbfee923..183134002 100644 --- a/pkgs/ffigen/test/native_objc_test/is_instance_test.dart +++ b/pkgs/ffigen/test/native_objc_test/is_instance_test.dart @@ -9,26 +9,28 @@ import 'dart:ffi'; import 'dart:io'; +import 'package:objective_c/objective_c.dart'; import 'package:test/test.dart'; + import '../test_utils.dart'; import 'is_instance_bindings.dart'; import 'util.dart'; void main() { - late IsInstanceTestObjCLibrary lib; - group('isInstance', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/is_instance_test.dylib'); verifySetupFile(dylib); - lib = IsInstanceTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path)); + DynamicLibrary.open(dylib.absolute.path); generateBindingsForCoverage('is_instance'); }); test('Unrelated classes', () { - final base = NSObject.castFrom(BaseClass.new1(lib)); - final unrelated = NSObject.castFrom(UnrelatedClass.new1(lib)); + final base = NSObject.castFrom(BaseClass.new1()); + final unrelated = NSObject.castFrom(UnrelatedClass.new1()); expect(BaseClass.isInstance(base), isTrue); expect(BaseClass.isInstance(unrelated), isFalse); expect(UnrelatedClass.isInstance(base), isFalse); @@ -36,8 +38,8 @@ void main() { }); test('Base class vs child class', () { - final base = NSObject.castFrom(BaseClass.new1(lib)); - final child = NSObject.castFrom(ChildClass.new1(lib)); + final base = NSObject.castFrom(BaseClass.new1()); + final child = NSObject.castFrom(ChildClass.new1()); expect(BaseClass.isInstance(base), isTrue); expect(BaseClass.isInstance(child), isTrue); expect(ChildClass.isInstance(base), isFalse); diff --git a/pkgs/ffigen/test/native_objc_test/method_config.yaml b/pkgs/ffigen/test/native_objc_test/method_config.yaml index 969ab7cf3..4d09ef519 100644 --- a/pkgs/ffigen/test/native_objc_test/method_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/method_config.yaml @@ -10,4 +10,4 @@ headers: entry-points: - 'method_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/method_test.dart b/pkgs/ffigen/test/native_objc_test/method_test.dart index 21ba7e061..c6cb15988 100644 --- a/pkgs/ffigen/test/native_objc_test/method_test.dart +++ b/pkgs/ffigen/test/native_objc_test/method_test.dart @@ -16,15 +16,16 @@ import 'util.dart'; void main() { late MethodInterface testInstance; - late MethodTestObjCLibrary lib; group('method calls', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/method_test.dylib'); verifySetupFile(dylib); - lib = MethodTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path)); - testInstance = MethodInterface.new1(lib); + DynamicLibrary.open(dylib.absolute.path); + testInstance = MethodInterface.new1(); generateBindingsForCoverage('method'); }); @@ -48,19 +49,19 @@ void main() { group('Class methods', () { test('No arguments', () { - expect(MethodInterface.sub(lib), -5); + expect(MethodInterface.sub(), -5); }); test('One argument', () { - expect(MethodInterface.sub_(lib, 7), -7); + expect(MethodInterface.sub_(7), -7); }); test('Two arguments', () { - expect(MethodInterface.sub_Y_(lib, 7, 3), -10); + expect(MethodInterface.sub_Y_(7, 3), -10); }); test('Three arguments', () { - expect(MethodInterface.sub_Y_Z_(lib, 10, 7, 3), -20); + expect(MethodInterface.sub_Y_Z_(10, 7, 3), -20); }); }); diff --git a/pkgs/ffigen/test/native_objc_test/native_objc_config.yaml b/pkgs/ffigen/test/native_objc_test/native_objc_config.yaml index 58bcf5016..0da292f6f 100644 --- a/pkgs/ffigen/test/native_objc_test/native_objc_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/native_objc_config.yaml @@ -18,4 +18,4 @@ headers: entry-points: - 'native_objc_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/native_objc_test.dart b/pkgs/ffigen/test/native_objc_test/native_objc_test.dart index 28c006a36..711a59749 100644 --- a/pkgs/ffigen/test/native_objc_test/native_objc_test.dart +++ b/pkgs/ffigen/test/native_objc_test/native_objc_test.dart @@ -8,25 +8,27 @@ import 'dart:ffi'; import 'dart:io'; +import 'package:objective_c/objective_c.dart'; import 'package:test/test.dart'; import '../test_utils.dart'; import 'native_objc_test_bindings.dart'; import 'util.dart'; void main() { - late NativeObjCLibrary lib; group('native_objc_test', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/native_objc_test.dylib'); verifySetupFile(dylib); - lib = NativeObjCLibrary(DynamicLibrary.open(dylib.absolute.path)); + DynamicLibrary.open(dylib.absolute.path); generateBindingsForCoverage('native_objc'); }); test('Basic types', () { - final foo = Foo.new1(lib); - final obj = NSObject.new1(lib); + final foo = Foo.new1(); + final obj = NSObject.new1(); foo.intVal = 123; expect(foo.intVal, 123); @@ -37,7 +39,7 @@ void main() { foo.idVal = obj; expect(foo.idVal, obj); - foo.selVal = Pointer.fromAddress(456); + foo.selVal = Pointer.fromAddress(456); expect(foo.selVal.address, 456); foo.classVal = obj; @@ -45,8 +47,8 @@ void main() { }); test('Interface basics, with Foo', () { - final foo1 = Foo.makeFoo_(lib, 3.14159); - final foo2 = Foo.makeFoo_(lib, 2.71828); + final foo1 = Foo.makeFoo_(3.14159); + final foo2 = Foo.makeFoo_(2.71828); expect(foo1.intVal, 3); expect(foo2.intVal, 2); diff --git a/pkgs/ffigen/test/native_objc_test/nullable_config.yaml b/pkgs/ffigen/test/native_objc_test/nullable_config.yaml index eba9e7706..6818337d4 100644 --- a/pkgs/ffigen/test/native_objc_test/nullable_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/nullable_config.yaml @@ -10,4 +10,4 @@ headers: entry-points: - 'nullable_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/nullable_inheritance_config.yaml b/pkgs/ffigen/test/native_objc_test/nullable_inheritance_config.yaml index 930a53129..f5d95d199 100644 --- a/pkgs/ffigen/test/native_objc_test/nullable_inheritance_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/nullable_inheritance_config.yaml @@ -11,4 +11,4 @@ headers: entry-points: - 'nullable_inheritance_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/nullable_inheritance_test.dart b/pkgs/ffigen/test/native_objc_test/nullable_inheritance_test.dart index fd3052ce7..6c5df3f11 100644 --- a/pkgs/ffigen/test/native_objc_test/nullable_inheritance_test.dart +++ b/pkgs/ffigen/test/native_objc_test/nullable_inheritance_test.dart @@ -8,27 +8,29 @@ import 'dart:ffi'; import 'dart:io'; +import 'package:objective_c/objective_c.dart'; import 'package:test/test.dart'; + import '../test_utils.dart'; import 'nullable_inheritance_bindings.dart'; import 'util.dart'; void main() { - late NullableInheritanceTestObjCLibrary lib; late NullableBase nullableBase; late NullableChild nullableChild; late NSObject obj; group('Nullable inheritance', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/nullable_inheritance_test.dylib'); verifySetupFile(dylib); - lib = NullableInheritanceTestObjCLibrary( - DynamicLibrary.open(dylib.absolute.path)); - nullableBase = NullableBase.new1(lib); - nullableChild = NullableChild.new1(lib); - obj = NSObject.new1(lib); + DynamicLibrary.open(dylib.absolute.path); + nullableBase = NullableBase.new1(); + nullableChild = NullableChild.new1(); + obj = NSObject.new1(); generateBindingsForCoverage('nullable'); }); diff --git a/pkgs/ffigen/test/native_objc_test/nullable_test.dart b/pkgs/ffigen/test/native_objc_test/nullable_test.dart index b264531dd..6b184095d 100644 --- a/pkgs/ffigen/test/native_objc_test/nullable_test.dart +++ b/pkgs/ffigen/test/native_objc_test/nullable_test.dart @@ -8,23 +8,26 @@ import 'dart:ffi'; import 'dart:io'; +import 'package:objective_c/objective_c.dart'; import 'package:test/test.dart'; + import '../test_utils.dart'; import 'nullable_bindings.dart'; import 'util.dart'; void main() { - late NullableTestObjCLibrary lib; late NullableInterface nullableInterface; late NSObject obj; group('Nullability', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/nullable_test.dylib'); verifySetupFile(dylib); - lib = NullableTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path)); - nullableInterface = NullableInterface.new1(lib); - obj = NSObject.new1(lib); + DynamicLibrary.open(dylib.absolute.path); + nullableInterface = NullableInterface.new1(); + obj = NSObject.new1(); generateBindingsForCoverage('nullable'); }); @@ -41,34 +44,31 @@ void main() { group('Nullable return', () { test('Not null', () { - expect(NullableInterface.returnNil_(lib, false), isA()); + expect(NullableInterface.returnNil_(false), isA()); }); test('Null', () { - expect(NullableInterface.returnNil_(lib, true), null); + expect(NullableInterface.returnNil_(true), null); }); }); group('Nullable arguments', () { test('Not null', () { - expect( - NullableInterface.isNullWithNullableNSObjectArg_(lib, obj), false); + expect(NullableInterface.isNullWithNullableNSObjectArg_(obj), false); }); test('Null', () { - expect( - NullableInterface.isNullWithNullableNSObjectArg_(lib, null), true); + expect(NullableInterface.isNullWithNullableNSObjectArg_(null), true); }); }); group('Not-nullable arguments', () { test('Not null', () { - expect(NullableInterface.isNullWithNotNullableNSObjectPtrArg_(lib, obj), - false); + expect( + NullableInterface.isNullWithNotNullableNSObjectPtrArg_(obj), false); }); test('Explicit non null', () { expect( - NullableInterface.isNullWithExplicitNonNullableNSObjectPtrArg_( - lib, obj), + NullableInterface.isNullWithExplicitNonNullableNSObjectPtrArg_(obj), false); }); }); diff --git a/pkgs/ffigen/test/native_objc_test/property_config.yaml b/pkgs/ffigen/test/native_objc_test/property_config.yaml index 220a83a30..b3b7b0ade 100644 --- a/pkgs/ffigen/test/native_objc_test/property_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/property_config.yaml @@ -10,4 +10,4 @@ headers: entry-points: - 'property_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/property_test.dart b/pkgs/ffigen/test/native_objc_test/property_test.dart index 9bd4f3c68..fe0b0addd 100644 --- a/pkgs/ffigen/test/native_objc_test/property_test.dart +++ b/pkgs/ffigen/test/native_objc_test/property_test.dart @@ -16,15 +16,16 @@ import 'util.dart'; void main() { late PropertyInterface testInstance; - late PropertyTestObjCLibrary lib; group('properties', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/property_test.dylib'); verifySetupFile(dylib); - lib = PropertyTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path)); - testInstance = PropertyInterface.new1(lib); + DynamicLibrary.open(dylib.absolute.path); + testInstance = PropertyInterface.new1(); generateBindingsForCoverage('property'); }); @@ -41,12 +42,12 @@ void main() { group('class properties', () { test('read-only property', () { - expect(PropertyInterface.getClassReadOnlyProperty(lib), 42); + expect(PropertyInterface.getClassReadOnlyProperty(), 42); }); test('read-write property', () { - PropertyInterface.setClassReadWriteProperty(lib, 101); - expect(PropertyInterface.getClassReadWriteProperty(lib), 101); + PropertyInterface.setClassReadWriteProperty(101); + expect(PropertyInterface.getClassReadWriteProperty(), 101); }); }); diff --git a/pkgs/ffigen/test/native_objc_test/rename_config.yaml b/pkgs/ffigen/test/native_objc_test/rename_config.yaml index 8dbae035e..4f80f56dc 100644 --- a/pkgs/ffigen/test/native_objc_test/rename_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/rename_config.yaml @@ -20,4 +20,4 @@ headers: entry-points: - 'rename_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/rename_test.dart b/pkgs/ffigen/test/native_objc_test/rename_test.dart index aa8a23f78..451f934dc 100644 --- a/pkgs/ffigen/test/native_objc_test/rename_test.dart +++ b/pkgs/ffigen/test/native_objc_test/rename_test.dart @@ -14,18 +14,19 @@ import 'rename_test_bindings.dart'; import 'util.dart'; void main() { - late RenameLibrary lib; group('rename_test', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/rename_test.dylib'); verifySetupFile(dylib); - lib = RenameLibrary(DynamicLibrary.open(dylib.absolute.path)); + DynamicLibrary.open(dylib.absolute.path); generateBindingsForCoverage('rename'); }); test('Renamed class', () { - final renamed = Renamed.new1(lib); + final renamed = Renamed.new1(); renamed.property = 123; expect(renamed.property, 123); }); diff --git a/pkgs/ffigen/test/native_objc_test/setup.dart b/pkgs/ffigen/test/native_objc_test/setup.dart index 8e74d878d..faa2d4329 100644 --- a/pkgs/ffigen/test/native_objc_test/setup.dart +++ b/pkgs/ffigen/test/native_objc_test/setup.dart @@ -48,21 +48,24 @@ Future _buildSwift( print('Generated files: $outputHeader and $outputLib'); } -Future _generateBindings(String config) async { - final args = [ - 'run', - 'ffigen', - '--config', - 'test/native_objc_test/$config', - ]; +Future _runDart(List args) async { final process = await Process.start(Platform.executable, args, workingDirectory: '../..'); unawaited(stdout.addStream(process.stdout)); unawaited(stderr.addStream(process.stderr)); final result = await process.exitCode; if (result != 0) { - throw ProcessException('dart', args, 'Generating bindings', result); + throw ProcessException('dart', args, 'Running Dart command', result); } +} + +Future _generateBindings(String config) async { + await _runDart([ + 'run', + 'ffigen', + '--config', + 'test/native_objc_test/$config', + ]); print('Generated bindings for: $config'); } @@ -129,5 +132,6 @@ Future main(List arguments) async { return await clean(_getTestNames()); } + await _runDart(['../objective_c/test/setup.dart']); return await build(arguments.isNotEmpty ? arguments : _getTestNames()); } diff --git a/pkgs/ffigen/test/native_objc_test/static_func_config.yaml b/pkgs/ffigen/test/native_objc_test/static_func_config.yaml index bbafeaa78..8ec7b4213 100644 --- a/pkgs/ffigen/test/native_objc_test/static_func_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/static_func_config.yaml @@ -15,4 +15,4 @@ headers: entry-points: - 'static_func_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/static_func_native_config.yaml b/pkgs/ffigen/test/native_objc_test/static_func_native_config.yaml index 2a591c9f7..9b5406af2 100644 --- a/pkgs/ffigen/test/native_objc_test/static_func_native_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/static_func_native_config.yaml @@ -16,4 +16,4 @@ headers: entry-points: - 'static_func_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/static_func_native_test.dart b/pkgs/ffigen/test/native_objc_test/static_func_native_test.dart index 93cbcad74..a8f677779 100644 --- a/pkgs/ffigen/test/native_objc_test/static_func_native_test.dart +++ b/pkgs/ffigen/test/native_objc_test/static_func_native_test.dart @@ -2,6 +2,8 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +// ignore_for_file: unused_local_variable + // Objective C support is only available on mac. @TestOn('mac-os') @@ -11,8 +13,9 @@ import 'dart:ffi'; import 'dart:io'; -import 'package:test/test.dart'; import 'package:ffi/ffi.dart'; +import 'package:test/test.dart'; + import '../test_utils.dart'; import 'static_func_native_bindings.dart'; import 'util.dart'; @@ -20,38 +23,26 @@ import 'util.dart'; typedef IntBlock = ObjCBlock_Int32_Int32; void main() { - late StaticFuncTestObjCLibrary lib; - late void Function(Pointer, Pointer) executeInternalCommand; - group('static functions', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/static_func_test.dylib'); verifySetupFile(dylib); - lib = StaticFuncTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path)); - - executeInternalCommand = DynamicLibrary.process().lookupFunction< - Void Function(Pointer, Pointer), - void Function( - Pointer, Pointer)>('Dart_ExecuteInternalCommand'); + DynamicLibrary.open(dylib.absolute.path); generateBindingsForCoverage('static_func'); }); - doGC() { - final gcNow = "gc-now".toNativeUtf8(); - executeInternalCommand(gcNow.cast(), nullptr); - calloc.free(gcNow); - } - Pointer staticFuncOfObjectRefCountTest(Allocator alloc) { final counter = alloc(); counter.value = 0; - final obj = StaticFuncTestObj.newWithCounter_(lib, counter); + final obj = StaticFuncTestObj.newWithCounter_(counter); expect(counter.value, 1); - final outputObj = staticFuncOfObject(lib, obj); + final outputObj = staticFuncOfObject(obj); expect(obj, outputObj); expect(counter.value, 1); @@ -70,10 +61,10 @@ void main() { final counter = alloc(); counter.value = 0; - final obj = StaticFuncTestObj.newWithCounter_(lib, counter); + final obj = StaticFuncTestObj.newWithCounter_(counter); expect(counter.value, 1); - final outputObj = staticFuncOfNullableObject(lib, obj); + final outputObj = staticFuncOfNullableObject(obj); expect(obj, outputObj); expect(counter.value, 1); @@ -87,15 +78,15 @@ void main() { doGC(); expect(counter.value, 0); - expect(staticFuncOfNullableObject(lib, null), isNull); + expect(staticFuncOfNullableObject(null), isNull); }); }); Pointer staticFuncOfBlockRefCountTest() { - final block = IntBlock.fromFunction(lib, (int x) => 2 * x); + final block = IntBlock.fromFunction((int x) => 2 * x); expect(getBlockRetainCount(block.pointer.cast()), 1); - final outputBlock = staticFuncOfBlock(lib, block); + final outputBlock = staticFuncOfBlock(block); expect(block, outputBlock); expect(getBlockRetainCount(block.pointer.cast()), 2); @@ -112,7 +103,7 @@ void main() { final counter = alloc(); counter.value = 0; - final outputObj = staticFuncReturnsRetained(lib, counter); + final outputObj = staticFuncReturnsRetained(counter); expect(counter.value, 1); return counter; @@ -133,10 +124,10 @@ void main() { final counter = alloc(); counter.value = 0; - final obj = StaticFuncTestObj.newWithCounter_(lib, counter); + final obj = StaticFuncTestObj.newWithCounter_(counter); expect(counter.value, 1); - final outputObj = staticFuncReturnsRetainedArg(lib, obj); + final outputObj = staticFuncReturnsRetainedArg(obj); expect(obj, outputObj); expect(counter.value, 1); diff --git a/pkgs/ffigen/test/native_objc_test/static_func_test.dart b/pkgs/ffigen/test/native_objc_test/static_func_test.dart index f3d9c01be..0b6fc21ff 100644 --- a/pkgs/ffigen/test/native_objc_test/static_func_test.dart +++ b/pkgs/ffigen/test/native_objc_test/static_func_test.dart @@ -2,6 +2,8 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +// ignore_for_file: unused_local_variable + // Objective C support is only available on mac. @TestOn('mac-os') @@ -11,8 +13,9 @@ import 'dart:ffi'; import 'dart:io'; -import 'package:test/test.dart'; import 'package:ffi/ffi.dart'; +import 'package:test/test.dart'; + import '../test_utils.dart'; import 'static_func_bindings.dart'; import 'util.dart'; @@ -21,34 +24,24 @@ typedef IntBlock = ObjCBlock_Int32_Int32; void main() { late StaticFuncTestObjCLibrary lib; - late void Function(Pointer, Pointer) executeInternalCommand; group('static functions', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/static_func_test.dylib'); verifySetupFile(dylib); lib = StaticFuncTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path)); - executeInternalCommand = DynamicLibrary.process().lookupFunction< - Void Function(Pointer, Pointer), - void Function( - Pointer, Pointer)>('Dart_ExecuteInternalCommand'); - generateBindingsForCoverage('static_func'); }); - doGC() { - final gcNow = "gc-now".toNativeUtf8(); - executeInternalCommand(gcNow.cast(), nullptr); - calloc.free(gcNow); - } - Pointer staticFuncOfObjectRefCountTest(Allocator alloc) { final counter = alloc(); counter.value = 0; - final obj = StaticFuncTestObj.newWithCounter_(lib, counter); + final obj = StaticFuncTestObj.newWithCounter_(counter); expect(counter.value, 1); final outputObj = lib.staticFuncOfObject(obj); @@ -70,7 +63,7 @@ void main() { final counter = alloc(); counter.value = 0; - final obj = StaticFuncTestObj.newWithCounter_(lib, counter); + final obj = StaticFuncTestObj.newWithCounter_(counter); expect(counter.value, 1); final outputObj = lib.staticFuncOfNullableObject(obj); @@ -92,7 +85,7 @@ void main() { }); Pointer staticFuncOfBlockRefCountTest() { - final block = IntBlock.fromFunction(lib, (int x) => 2 * x); + final block = IntBlock.fromFunction((int x) => 2 * x); expect(lib.getBlockRetainCount(block.pointer.cast()), 1); final outputBlock = lib.staticFuncOfBlock(block); @@ -133,7 +126,7 @@ void main() { final counter = alloc(); counter.value = 0; - final obj = StaticFuncTestObj.newWithCounter_(lib, counter); + final obj = StaticFuncTestObj.newWithCounter_(counter); expect(counter.value, 1); final outputObj = lib.staticFuncReturnsRetainedArg(obj); diff --git a/pkgs/ffigen/test/native_objc_test/string_config.yaml b/pkgs/ffigen/test/native_objc_test/string_config.yaml index 016b2bd93..35b96a955 100644 --- a/pkgs/ffigen/test/native_objc_test/string_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/string_config.yaml @@ -10,4 +10,4 @@ headers: entry-points: - 'string_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/string_test.dart b/pkgs/ffigen/test/native_objc_test/string_test.dart index 068e5ed52..c5beccd69 100644 --- a/pkgs/ffigen/test/native_objc_test/string_test.dart +++ b/pkgs/ffigen/test/native_objc_test/string_test.dart @@ -8,31 +8,33 @@ import 'dart:ffi'; import 'dart:io'; +import 'package:objective_c/objective_c.dart'; import 'package:test/test.dart'; + import '../test_utils.dart'; import 'string_bindings.dart'; import 'util.dart'; void main() { - late StringTestObjCLibrary lib; - group('string', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/string_test.dylib'); verifySetupFile(dylib); - lib = StringTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path)); + DynamicLibrary.open(dylib.absolute.path); generateBindingsForCoverage('string'); }); for (final s in ['Hello', '🇵🇬', 'Embedded\u0000Null']) { test('NSString to/from Dart string [$s]', () { - final ns1 = NSString(lib, s); + final ns1 = NSString(s); expect(ns1.length, s.length); expect(ns1.toString().length, s.length); expect(ns1.toString(), s); - final ns2 = s.toNSString(lib); + final ns2 = s.toNSString(); expect(ns2.length, s.length); expect(ns2.toString().length, s.length); expect(ns2.toString(), s); @@ -40,10 +42,10 @@ void main() { } test('strings usable', () { - final str1 = 'Hello'.toNSString(lib); - final str2 = 'World!'.toNSString(lib); + final str1 = 'Hello'.toNSString(); + final str2 = 'World!'.toNSString(); - final str3 = StringUtil.strConcat_with_(lib, str1, str2); + final str3 = StringUtil.strConcat_with_(str1, str2); expect(str3.length, 11); expect(str3.toString(), "HelloWorld!"); }); diff --git a/pkgs/ffigen/test/native_objc_test/swift_class_config.yaml b/pkgs/ffigen/test/native_objc_test/swift_class_config.yaml index 20bd2881d..01f96dd13 100644 --- a/pkgs/ffigen/test/native_objc_test/swift_class_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/swift_class_config.yaml @@ -12,4 +12,4 @@ headers: entry-points: - 'swift_class_test-Swift.h' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/swift_class_test.dart b/pkgs/ffigen/test/native_objc_test/swift_class_test.dart index 09a2714dd..e91ca95c8 100644 --- a/pkgs/ffigen/test/native_objc_test/swift_class_test.dart +++ b/pkgs/ffigen/test/native_objc_test/swift_class_test.dart @@ -14,18 +14,19 @@ import 'swift_class_bindings.dart'; import 'util.dart'; void main() { - late SwiftClassTestLibrary lib; group('swift_class_test', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/swift_class_test.dylib'); verifySetupFile(dylib); - lib = SwiftClassTestLibrary(DynamicLibrary.open(dylib.absolute.path)); + DynamicLibrary.open(dylib.absolute.path); generateBindingsForCoverage('swift_class'); }); test('Renamed class', () { - final swiftObject = MySwiftClass.new1(lib); + final swiftObject = MySwiftClass.new1(); expect(swiftObject.getValue(), 123); swiftObject.setValueWithX_(456); expect(swiftObject.getValue(), 456); diff --git a/pkgs/ffigen/test/native_objc_test/typedef_config.yaml b/pkgs/ffigen/test/native_objc_test/typedef_config.yaml index f375bfc7d..a2c273508 100644 --- a/pkgs/ffigen/test/native_objc_test/typedef_config.yaml +++ b/pkgs/ffigen/test/native_objc_test/typedef_config.yaml @@ -14,4 +14,4 @@ headers: entry-points: - 'typedef_test.m' preamble: | - // ignore_for_file: camel_case_types, non_constant_identifier_names, unused_element, unused_field + // ignore_for_file: camel_case_types, non_constant_identifier_names, unnecessary_non_null_assertion, unused_element, unused_field diff --git a/pkgs/ffigen/test/native_objc_test/typedef_test.dart b/pkgs/ffigen/test/native_objc_test/typedef_test.dart index 7a47fdb83..af12934c3 100644 --- a/pkgs/ffigen/test/native_objc_test/typedef_test.dart +++ b/pkgs/ffigen/test/native_objc_test/typedef_test.dart @@ -14,21 +14,21 @@ import 'typedef_bindings.dart'; import 'util.dart'; void main() { - late TypedefTestObjCLibrary lib; - group('typedef', () { setUpAll(() { logWarnings(); + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('../objective_c/test/objective_c.dylib'); final dylib = File('test/native_objc_test/typedef_test.dylib'); verifySetupFile(dylib); - lib = TypedefTestObjCLibrary(DynamicLibrary.open(dylib.absolute.path)); + DynamicLibrary.open(dylib.absolute.path); generateBindingsForCoverage('typedef'); }); test('Regression test for #386', () { // https://github.com/dart-lang/ffigen/issues/386 // Make sure that the typedef DartSomeClassPtr is for SomeClass. - final DartSomeClassPtr instance = SomeClass.new1(lib); + final DartSomeClassPtr instance = SomeClass.new1(); expect(instance.pointer, isNot(nullptr)); }); }); diff --git a/pkgs/ffigen/test/native_objc_test/util.dart b/pkgs/ffigen/test/native_objc_test/util.dart index 7ef14bf62..ead45b844 100644 --- a/pkgs/ffigen/test/native_objc_test/util.dart +++ b/pkgs/ffigen/test/native_objc_test/util.dart @@ -2,11 +2,12 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'dart:ffi'; import 'dart:io'; +import 'package:ffi/ffi.dart'; import 'package:ffigen/ffigen.dart'; import 'package:path/path.dart' as path; -import 'package:test/test.dart'; import '../test_utils.dart'; @@ -26,3 +27,13 @@ void generateBindingsForCoverage(String testName) { assert(file.existsSync()); file.delete(); } + +@Native, Pointer)>( + symbol: 'Dart_ExecuteInternalCommand') +external void _executeInternalCommand(Pointer cmd, Pointer arg); + +void doGC() { + final gcNow = "gc-now".toNativeUtf8(); + _executeInternalCommand(gcNow.cast(), nullptr); + calloc.free(gcNow); +} diff --git a/pkgs/ffigen/test/regen.dart b/pkgs/ffigen/test/regen.dart index ec5296449..cec13ec7f 100644 --- a/pkgs/ffigen/test/regen.dart +++ b/pkgs/ffigen/test/regen.dart @@ -60,4 +60,8 @@ Future main(List args) async { 'example/simple/config.yaml', 'example/simple/generated_bindings.dart'); _regenConfig('example/c_json/config.yaml', 'example/c_json/cjson_generated_bindings.dart'); + _regenConfig( + 'example/swift/config.yaml', 'example/swift/swift_api_bindings.dart'); + _regenConfig('example/objective_c/config.yaml', + 'example/objective_c/avf_audio_bindings.dart'); } diff --git a/pkgs/ffigen/tool/coverage.sh b/pkgs/ffigen/tool/coverage.sh index 02c8e2f47..b5c35e4aa 100755 --- a/pkgs/ffigen/tool/coverage.sh +++ b/pkgs/ffigen/tool/coverage.sh @@ -11,5 +11,5 @@ set -e dart pub global activate coverage # Generate coverage report. dart run --pause-isolates-on-exit --disable-service-auth-codes --enable-vm-service=3000 test & -dart pub global run coverage:collect_coverage --wait-paused --uri=http://127.0.0.1:3000/ -o coverage.json --resume-isolates --scope-output=ffigen -dart pub global run coverage:format_coverage --packages=.dart_tool/package_config.json --lcov -i coverage.json -o lcov.info +dart pub global run coverage:collect_coverage --wait-paused --uri=http://127.0.0.1:3000/ -o coverage.json --resume-isolates --scope-output=ffigen --scope-output=objective_c +dart pub global run coverage:format_coverage --check-ignore --packages=.dart_tool/package_config.json --lcov -i coverage.json -o lcov.info diff --git a/pkgs/jni/CHANGELOG.md b/pkgs/jni/CHANGELOG.md index 757642d74..5bc57ff81 100644 --- a/pkgs/jni/CHANGELOG.md +++ b/pkgs/jni/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.9.0 + +- **Breaking Change** + ([#1004](https://github.com/dart-lang/native/issues/1004)): Changed the return + type `operator []` of `JArray` to `int` instead of `String`. Similarly, + change the argument type of `operator []=` to accept `int`. +- Added `getRange` method to `JArray` of primitive types that returns a + `TypedData` list depending on the kind of the array. +- Improved the performance of `JArray`'s `setRange` and `operator []=`. + ## 0.8.0 - **Breaking Change** ([#981](https://github.com/dart-lang/native/issues/981)): diff --git a/pkgs/jni/example/pubspec.lock b/pkgs/jni/example/pubspec.lock index 4b65490ec..de0c5c219 100644 --- a/pkgs/jni/example/pubspec.lock +++ b/pkgs/jni/example/pubspec.lock @@ -200,7 +200,7 @@ packages: path: ".." relative: true source: path - version: "0.8.0-wip" + version: "0.8.0" js: dependency: transitive description: diff --git a/pkgs/jni/ffigen.yaml b/pkgs/jni/ffigen.yaml index 0914b40fc..ae52dbcb0 100644 --- a/pkgs/jni/ffigen.yaml +++ b/pkgs/jni/ffigen.yaml @@ -12,12 +12,10 @@ output: 'lib/src/third_party/jni_bindings_generated.dart' headers: entry-points: - 'src/dartjni.h' # Exports majority of JNI functions - - 'src/internal.h' - 'src/third_party/global_jni_env.h' # Exports GlobalJniEnv type - 'src/jni_constants.h' include-directives: - 'src/dartjni.h' - - 'src/internal.h' - 'src/third_party/global_jni_env.h' - 'third_party/jni.h' # jni.h from Android NDK - 'src/jni_constants.h' @@ -34,6 +32,10 @@ functions: - 'GetJniContextPtr' - 'setJniGetters' - 'jni_log' + # Exclude functions with VarArgs, jnigen will generate them based on the + # exact arguments needed. + - 'globalEnv_NewObject' + - 'globalEnv_Call(Static|Nonvirtual|)[A-Z][a-z]+Method' # Inline functions # keep-sorted start - 'acquire_lock' diff --git a/pkgs/jni/lib/src/jarray.dart b/pkgs/jni/lib/src/jarray.dart index 3404ceb49..7d159a3c9 100644 --- a/pkgs/jni/lib/src/jarray.dart +++ b/pkgs/jni/lib/src/jarray.dart @@ -5,6 +5,7 @@ // ignore_for_file: unnecessary_cast, overridden_fields import 'dart:ffi'; +import 'dart:typed_data'; import 'package:collection/collection.dart'; import 'package:ffi/ffi.dart'; @@ -131,16 +132,26 @@ class JArray extends JObject { extension NativeArray on JArray { void _allocate( - int size, + int byteCount, void Function(Pointer ptr) use, ) { using((arena) { - final ptr = arena.allocate(size); + final ptr = arena.allocate(byteCount); use(ptr); }, malloc); } } +extension on Allocator { + Pointer? get _nativeFree { + return switch (this) { + malloc => malloc.nativeFree, + calloc => calloc.nativeFree, + _ => null, + }; + } +} + extension BoolArray on JArray { bool operator [](int index) { return _elementAt(index, JniCallType.booleanType).boolean; @@ -148,22 +159,28 @@ extension BoolArray on JArray { void operator []=(int index, bool value) { RangeError.checkValidIndex(index, this); - _allocate(sizeOf(), (ptr) { - ptr.value = value ? 1 : 0; - Jni.env.SetBooleanArrayRegion(reference.pointer, index, 1, ptr); - }); + Jni.accessors + .setBooleanArrayElement(reference.pointer, index, value ? 1 : 0); + } + + Uint8List getRange(int start, int end, {Allocator allocator = malloc}) { + RangeError.checkValidRange(start, end, length); + final rangeLength = end - start; + final buffer = allocator(rangeLength); + Jni.env + .GetBooleanArrayRegion(reference.pointer, start, rangeLength, buffer); + return buffer.asTypedList(rangeLength, finalizer: allocator._nativeFree); } void setRange(int start, int end, Iterable iterable, [int skipCount = 0]) { RangeError.checkValidRange(start, end, length); - final size = end - start; - final it = iterable.skip(skipCount).take(size); - _allocate(sizeOf() * size, (ptr) { - it.forEachIndexed((index, element) { - ptr[index] = element ? 1 : 0; - }); - Jni.env.SetBooleanArrayRegion(reference.pointer, start, size, ptr); + final rangeLength = end - start; + _allocate(sizeOf() * rangeLength, (ptr) { + ptr + .asTypedList(rangeLength) + .setRange(0, rangeLength, iterable.map((e) => e ? 1 : 0), skipCount); + Jni.env.SetBooleanArrayRegion(reference.pointer, start, rangeLength, ptr); }); } } @@ -175,51 +192,61 @@ extension ByteArray on JArray { void operator []=(int index, int value) { RangeError.checkValidIndex(index, this); - _allocate(sizeOf(), (ptr) { - ptr.value = value; - Jni.env.SetByteArrayRegion(reference.pointer, index, 1, ptr); - }); + Jni.accessors.setByteArrayElement(reference.pointer, index, value).check(); + } + + Int8List getRange(int start, int end, {Allocator allocator = malloc}) { + RangeError.checkValidRange(start, end, length); + final rangeLength = end - start; + final buffer = allocator(rangeLength); + Jni.env.GetByteArrayRegion(reference.pointer, start, rangeLength, buffer); + return buffer.asTypedList(rangeLength, finalizer: allocator._nativeFree); } void setRange(int start, int end, Iterable iterable, [int skipCount = 0]) { RangeError.checkValidRange(start, end, length); - final size = end - start; - final it = iterable.skip(skipCount).take(size); - _allocate(sizeOf() * size, (ptr) { - it.forEachIndexed((index, element) { - ptr[index] = element; - }); - Jni.env.SetByteArrayRegion(reference.pointer, start, size, ptr); + final rangeLength = end - start; + _allocate(sizeOf() * rangeLength, (ptr) { + ptr + .asTypedList(rangeLength) + .setRange(0, rangeLength, iterable, skipCount); + Jni.env.SetByteArrayRegion(reference.pointer, start, rangeLength, ptr); }); } } +/// `JArray` is a 16-bit integer array. +/// +/// Due to variable length encoding, the number of code units is not equal to +/// the number of characters. extension CharArray on JArray { - String operator [](int index) { - return String.fromCharCode( - _elementAt(index, JniCallType.charType).char, - ); + int operator [](int index) { + return _elementAt(index, JniCallType.charType).char; } - void operator []=(int index, String value) { + void operator []=(int index, int value) { RangeError.checkValidIndex(index, this); - _allocate(sizeOf(), (ptr) { - ptr.value = value.codeUnits.first; - Jni.env.SetCharArrayRegion(reference.pointer, index, 1, ptr); - }); + Jni.accessors.setCharArrayElement(reference.pointer, index, value).check(); } - void setRange(int start, int end, Iterable iterable, + Uint16List getRange(int start, int end, {Allocator allocator = malloc}) { + RangeError.checkValidRange(start, end, length); + final rangeLength = end - start; + final buffer = allocator(rangeLength); + Jni.env.GetCharArrayRegion(reference.pointer, start, rangeLength, buffer); + return buffer.asTypedList(rangeLength, finalizer: allocator._nativeFree); + } + + void setRange(int start, int end, Iterable iterable, [int skipCount = 0]) { RangeError.checkValidRange(start, end, length); - final size = end - start; - final it = iterable.skip(skipCount).take(size); - _allocate(sizeOf() * size, (ptr) { - it.forEachIndexed((index, element) { - ptr[index] = element.codeUnits.first; - }); - Jni.env.SetCharArrayRegion(reference.pointer, start, size, ptr); + final rangeLength = end - start; + _allocate(sizeOf() * rangeLength, (ptr) { + ptr + .asTypedList(rangeLength) + .setRange(0, rangeLength, iterable, skipCount); + Jni.env.SetCharArrayRegion(reference.pointer, start, rangeLength, ptr); }); } } @@ -231,22 +258,26 @@ extension ShortArray on JArray { void operator []=(int index, int value) { RangeError.checkValidIndex(index, this); - _allocate(sizeOf(), (ptr) { - ptr.value = value; - Jni.env.SetShortArrayRegion(reference.pointer, index, 1, ptr); - }); + Jni.accessors.setShortArrayElement(reference.pointer, index, value).check(); + } + + Int16List getRange(int start, int end, {Allocator allocator = malloc}) { + RangeError.checkValidRange(start, end, length); + final rangeLength = end - start; + final buffer = allocator(rangeLength); + Jni.env.GetShortArrayRegion(reference.pointer, start, rangeLength, buffer); + return buffer.asTypedList(rangeLength, finalizer: allocator._nativeFree); } void setRange(int start, int end, Iterable iterable, [int skipCount = 0]) { RangeError.checkValidRange(start, end, length); - final size = end - start; - final it = iterable.skip(skipCount).take(size); - _allocate(sizeOf() * size, (ptr) { - it.forEachIndexed((index, element) { - ptr[index] = element; - }); - Jni.env.SetShortArrayRegion(reference.pointer, start, size, ptr); + final rangeLength = end - start; + _allocate(sizeOf() * rangeLength, (ptr) { + ptr + .asTypedList(rangeLength) + .setRange(0, rangeLength, iterable, skipCount); + Jni.env.SetShortArrayRegion(reference.pointer, start, rangeLength, ptr); }); } } @@ -258,22 +289,26 @@ extension IntArray on JArray { void operator []=(int index, int value) { RangeError.checkValidIndex(index, this); - _allocate(sizeOf(), (ptr) { - ptr.value = value; - Jni.env.SetIntArrayRegion(reference.pointer, index, 1, ptr); - }); + Jni.accessors.setIntArrayElement(reference.pointer, index, value).check(); + } + + Int32List getRange(int start, int end, {Allocator allocator = malloc}) { + RangeError.checkValidRange(start, end, length); + final rangeLength = end - start; + final buffer = allocator(rangeLength); + Jni.env.GetIntArrayRegion(reference.pointer, start, rangeLength, buffer); + return buffer.asTypedList(rangeLength, finalizer: allocator._nativeFree); } void setRange(int start, int end, Iterable iterable, [int skipCount = 0]) { RangeError.checkValidRange(start, end, length); - final size = end - start; - final it = iterable.skip(skipCount).take(size); - _allocate(sizeOf() * size, (ptr) { - it.forEachIndexed((index, element) { - ptr[index] = element; - }); - Jni.env.SetIntArrayRegion(reference.pointer, start, size, ptr); + final rangeLength = end - start; + _allocate(sizeOf() * rangeLength, (ptr) { + ptr + .asTypedList(rangeLength) + .setRange(0, rangeLength, iterable, skipCount); + Jni.env.SetIntArrayRegion(reference.pointer, start, rangeLength, ptr); }); } } @@ -285,22 +320,26 @@ extension LongArray on JArray { void operator []=(int index, int value) { RangeError.checkValidIndex(index, this); - _allocate(sizeOf(), (ptr) { - ptr.value = value; - Jni.env.SetLongArrayRegion(reference.pointer, index, 1, ptr); - }); + Jni.accessors.setLongArrayElement(reference.pointer, index, value).check(); + } + + Int64List getRange(int start, int end, {Allocator allocator = malloc}) { + RangeError.checkValidRange(start, end, length); + final rangeLength = end - start; + final buffer = allocator(rangeLength); + Jni.env.GetLongArrayRegion(reference.pointer, start, rangeLength, buffer); + return buffer.asTypedList(rangeLength, finalizer: allocator._nativeFree); } void setRange(int start, int end, Iterable iterable, [int skipCount = 0]) { RangeError.checkValidRange(start, end, length); - final size = end - start; - final it = iterable.skip(skipCount).take(size); - _allocate(sizeOf() * size, (ptr) { - it.forEachIndexed((index, element) { - ptr[index] = element; - }); - Jni.env.SetLongArrayRegion(reference.pointer, start, size, ptr); + final rangeLength = end - start; + _allocate(sizeOf() * rangeLength, (ptr) { + ptr + .asTypedList(rangeLength) + .setRange(0, rangeLength, iterable, skipCount); + Jni.env.SetLongArrayRegion(reference.pointer, start, rangeLength, ptr); }); } } @@ -312,22 +351,26 @@ extension FloatArray on JArray { void operator []=(int index, double value) { RangeError.checkValidIndex(index, this); - _allocate(sizeOf(), (ptr) { - ptr.value = value; - Jni.env.SetFloatArrayRegion(reference.pointer, index, 1, ptr); - }); + Jni.accessors.setFloatArrayElement(reference.pointer, index, value).check(); + } + + Float32List getRange(int start, int end, {Allocator allocator = malloc}) { + RangeError.checkValidRange(start, end, length); + final rangeLength = end - start; + final buffer = allocator(rangeLength); + Jni.env.GetFloatArrayRegion(reference.pointer, start, rangeLength, buffer); + return buffer.asTypedList(rangeLength, finalizer: allocator._nativeFree); } void setRange(int start, int end, Iterable iterable, [int skipCount = 0]) { RangeError.checkValidRange(start, end, length); - final size = end - start; - final it = iterable.skip(skipCount).take(size); - _allocate(sizeOf() * size, (ptr) { - it.forEachIndexed((index, element) { - ptr[index] = element; - }); - Jni.env.SetFloatArrayRegion(reference.pointer, start, size, ptr); + final rangeLength = end - start; + _allocate(sizeOf() * rangeLength, (ptr) { + ptr + .asTypedList(rangeLength) + .setRange(0, rangeLength, iterable, skipCount); + Jni.env.SetFloatArrayRegion(reference.pointer, start, rangeLength, ptr); }); } } @@ -339,22 +382,28 @@ extension DoubleArray on JArray { void operator []=(int index, double value) { RangeError.checkValidIndex(index, this); - _allocate(sizeOf(), (ptr) { - ptr.value = value; - Jni.env.SetDoubleArrayRegion(reference.pointer, index, 1, ptr); - }); + Jni.accessors + .setDoubleArrayElement(reference.pointer, index, value) + .check(); + } + + Float64List getRange(int start, int end, {Allocator allocator = malloc}) { + RangeError.checkValidRange(start, end, length); + final rangeLength = end - start; + final buffer = allocator(rangeLength); + Jni.env.GetDoubleArrayRegion(reference.pointer, start, rangeLength, buffer); + return buffer.asTypedList(rangeLength, finalizer: allocator._nativeFree); } void setRange(int start, int end, Iterable iterable, [int skipCount = 0]) { RangeError.checkValidRange(start, end, length); - final size = end - start; - final it = iterable.skip(skipCount).take(size); - _allocate(sizeOf() * size, (ptr) { - it.forEachIndexed((index, element) { - ptr[index] = element; - }); - Jni.env.SetDoubleArrayRegion(reference.pointer, start, size, ptr); + final rangeLength = end - start; + _allocate(sizeOf() * rangeLength, (ptr) { + ptr + .asTypedList(rangeLength) + .setRange(0, rangeLength, iterable, skipCount); + Jni.env.SetDoubleArrayRegion(reference.pointer, start, rangeLength, ptr); }); } } @@ -373,8 +422,8 @@ extension ObjectArray on JArray { void setRange(int start, int end, Iterable iterable, [int skipCount = 0]) { RangeError.checkValidRange(start, end, length); - final size = end - start; - final it = iterable.skip(skipCount).take(size); + final rangeLength = end - start; + final it = iterable.skip(skipCount).take(rangeLength); it.forEachIndexed((index, element) { this[index] = element; }); diff --git a/pkgs/jni/lib/src/jni.dart b/pkgs/jni/lib/src/jni.dart index 4322fbd57..e0a1fe700 100644 --- a/pkgs/jni/lib/src/jni.dart +++ b/pkgs/jni/lib/src/jni.dart @@ -300,6 +300,9 @@ extension ProtectedJniExtensions on Jni { Jni._ensureInitialized(); Jni._bindings.deleteFinalizableHandle(finalizableHandle, object); } + + static Pointer Function(String) get lookup => + Jni._dylib.lookup; } extension AdditionalEnvMethods on GlobalJniEnv { diff --git a/pkgs/jni/lib/src/third_party/global_env_extensions.dart b/pkgs/jni/lib/src/third_party/global_env_extensions.dart index 3e90beda0..a878f5a2b 100644 --- a/pkgs/jni/lib/src/third_party/global_env_extensions.dart +++ b/pkgs/jni/lib/src/third_party/global_env_extensions.dart @@ -3,6 +3,9 @@ // This is generated from JNI header in Android NDK. License for the same is // provided below. +// Generation logic resides in `tool/wrapper_generators`. +// To regenerate, run `dart run tool/generate_ffi_bindings.dart`. + /* * Copyright (C) 2006 The Android Open Source Project * @@ -1488,6 +1491,49 @@ class JniAccessors { JniResult getArrayElement(JArrayPtr array, int index, int type) => _getArrayElement(array, index, type); + late final _setBooleanArrayElement = ptr.ref.setBooleanArrayElement + .asFunction< + JThrowablePtr Function(JArrayPtr array, int index, int value)>(); + JThrowablePtr setBooleanArrayElement(JArrayPtr array, int index, int value) => + _setBooleanArrayElement(array, index, value); + + late final _setByteArrayElement = ptr.ref.setByteArrayElement.asFunction< + JThrowablePtr Function(JArrayPtr array, int index, int value)>(); + JThrowablePtr setByteArrayElement(JArrayPtr array, int index, int value) => + _setByteArrayElement(array, index, value); + + late final _setShortArrayElement = ptr.ref.setShortArrayElement.asFunction< + JThrowablePtr Function(JArrayPtr array, int index, int value)>(); + JThrowablePtr setShortArrayElement(JArrayPtr array, int index, int value) => + _setShortArrayElement(array, index, value); + + late final _setCharArrayElement = ptr.ref.setCharArrayElement.asFunction< + JThrowablePtr Function(JArrayPtr array, int index, int value)>(); + JThrowablePtr setCharArrayElement(JArrayPtr array, int index, int value) => + _setCharArrayElement(array, index, value); + + late final _setIntArrayElement = ptr.ref.setIntArrayElement.asFunction< + JThrowablePtr Function(JArrayPtr array, int index, int value)>(); + JThrowablePtr setIntArrayElement(JArrayPtr array, int index, int value) => + _setIntArrayElement(array, index, value); + + late final _setLongArrayElement = ptr.ref.setLongArrayElement.asFunction< + JThrowablePtr Function(JArrayPtr array, int index, int value)>(); + JThrowablePtr setLongArrayElement(JArrayPtr array, int index, int value) => + _setLongArrayElement(array, index, value); + + late final _setFloatArrayElement = ptr.ref.setFloatArrayElement.asFunction< + JThrowablePtr Function(JArrayPtr array, int index, double value)>(); + JThrowablePtr setFloatArrayElement( + JArrayPtr array, int index, double value) => + _setFloatArrayElement(array, index, value); + + late final _setDoubleArrayElement = ptr.ref.setDoubleArrayElement.asFunction< + JThrowablePtr Function(JArrayPtr array, int index, double value)>(); + JThrowablePtr setDoubleArrayElement( + JArrayPtr array, int index, double value) => + _setDoubleArrayElement(array, index, value); + late final _callMethod = ptr.ref.callMethod.asFunction< JniResult Function(JObjectPtr obj, JMethodIDPtr methodID, int callType, ffi.Pointer args)>(); diff --git a/pkgs/jni/lib/src/third_party/jni_bindings_generated.dart b/pkgs/jni/lib/src/third_party/jni_bindings_generated.dart index a575c812f..2c81d990c 100644 --- a/pkgs/jni/lib/src/third_party/jni_bindings_generated.dart +++ b/pkgs/jni/lib/src/third_party/jni_bindings_generated.dart @@ -442,6 +442,54 @@ final class JniAccessorsStruct extends ffi.Struct { JniResult Function(JArrayPtr array, ffi.Int index, ffi.Int type)>> getArrayElement; + external ffi.Pointer< + ffi.NativeFunction< + JThrowablePtr Function( + JArrayPtr array, ffi.Int index, JBooleanMarker value)>> + setBooleanArrayElement; + + external ffi.Pointer< + ffi.NativeFunction< + JThrowablePtr Function( + JArrayPtr array, ffi.Int index, JByteMarker value)>> + setByteArrayElement; + + external ffi.Pointer< + ffi.NativeFunction< + JThrowablePtr Function( + JArrayPtr array, ffi.Int index, JShortMarker value)>> + setShortArrayElement; + + external ffi.Pointer< + ffi.NativeFunction< + JThrowablePtr Function( + JArrayPtr array, ffi.Int index, JCharMarker value)>> + setCharArrayElement; + + external ffi.Pointer< + ffi.NativeFunction< + JThrowablePtr Function( + JArrayPtr array, ffi.Int index, JIntMarker value)>> + setIntArrayElement; + + external ffi.Pointer< + ffi.NativeFunction< + JThrowablePtr Function( + JArrayPtr array, ffi.Int index, JLongMarker value)>> + setLongArrayElement; + + external ffi.Pointer< + ffi.NativeFunction< + JThrowablePtr Function( + JArrayPtr array, ffi.Int index, JFloatMarker value)>> + setFloatArrayElement; + + external ffi.Pointer< + ffi.NativeFunction< + JThrowablePtr Function( + JArrayPtr array, ffi.Int index, JDoubleMarker value)>> + setDoubleArrayElement; + external ffi.Pointer< ffi.NativeFunction< JniResult Function(JObjectPtr obj, JMethodIDPtr methodID, diff --git a/pkgs/jni/pubspec.yaml b/pkgs/jni/pubspec.yaml index 4347e06bb..b735e85ab 100644 --- a/pkgs/jni/pubspec.yaml +++ b/pkgs/jni/pubspec.yaml @@ -4,7 +4,7 @@ name: jni description: A library to access JNI from Dart and Flutter that acts as a support library for package:jnigen. -version: 0.8.0 +version: 0.9.0 repository: https://github.com/dart-lang/native/tree/main/pkgs/jni topics: diff --git a/pkgs/jni/src/CMakeLists.txt b/pkgs/jni/src/CMakeLists.txt index 685d52b71..2cdb3f724 100644 --- a/pkgs/jni/src/CMakeLists.txt +++ b/pkgs/jni/src/CMakeLists.txt @@ -9,7 +9,6 @@ project(jni_library VERSION 0.0.1 LANGUAGES C) add_library(jni SHARED "dartjni.c" - "internal.c" "third_party/global_jni_env.c" "include/dart_api_dl.c" ) diff --git a/pkgs/jni/src/dartjni.c b/pkgs/jni/src/dartjni.c index 0c2bff26e..2553b2e00 100644 --- a/pkgs/jni/src/dartjni.c +++ b/pkgs/jni/src/dartjni.c @@ -517,6 +517,62 @@ JniResult getArrayElement(jarray array, int index, int type) { return jniResult; } +jthrowable setBooleanArrayElement(jarray array, int index, jboolean value) { + attach_thread(); + (*jniEnv)->SetBooleanArrayRegion(jniEnv, array, index, 1, &value); + jthrowable exception = check_exception(); + return exception; +} + +jthrowable setByteArrayElement(jarray array, int index, jbyte value) { + attach_thread(); + (*jniEnv)->SetByteArrayRegion(jniEnv, array, index, 1, &value); + jthrowable exception = check_exception(); + return exception; +} + +jthrowable setShortArrayElement(jarray array, int index, jshort value) { + attach_thread(); + (*jniEnv)->SetShortArrayRegion(jniEnv, array, index, 1, &value); + jthrowable exception = check_exception(); + return exception; +} + +jthrowable setCharArrayElement(jarray array, int index, jchar value) { + attach_thread(); + (*jniEnv)->SetCharArrayRegion(jniEnv, array, index, 1, &value); + jthrowable exception = check_exception(); + return exception; +} + +jthrowable setIntArrayElement(jarray array, int index, jint value) { + attach_thread(); + (*jniEnv)->SetIntArrayRegion(jniEnv, array, index, 1, &value); + jthrowable exception = check_exception(); + return exception; +} + +jthrowable setLongArrayElement(jarray array, int index, jlong value) { + attach_thread(); + (*jniEnv)->SetLongArrayRegion(jniEnv, array, index, 1, &value); + jthrowable exception = check_exception(); + return exception; +} + +jthrowable setFloatArrayElement(jarray array, int index, jfloat value) { + attach_thread(); + (*jniEnv)->SetFloatArrayRegion(jniEnv, array, index, 1, &value); + jthrowable exception = check_exception(); + return exception; +} + +jthrowable setDoubleArrayElement(jarray array, int index, jdouble value) { + attach_thread(); + (*jniEnv)->SetDoubleArrayRegion(jniEnv, array, index, 1, &value); + jthrowable exception = check_exception(); + return exception; +} + JniExceptionDetails getExceptionDetails(jthrowable exception) { JniExceptionDetails details; details.message = (*jniEnv)->CallObjectMethod( @@ -552,6 +608,14 @@ JniAccessorsStruct accessors = { .newPrimitiveArray = newPrimitiveArray, .newObjectArray = newObjectArray, .getArrayElement = getArrayElement, + .setBooleanArrayElement = setBooleanArrayElement, + .setByteArrayElement = setByteArrayElement, + .setShortArrayElement = setShortArrayElement, + .setCharArrayElement = setCharArrayElement, + .setIntArrayElement = setIntArrayElement, + .setLongArrayElement = setLongArrayElement, + .setFloatArrayElement = setFloatArrayElement, + .setDoubleArrayElement = setDoubleArrayElement, .callMethod = callMethod, .callStaticMethod = callStaticMethod, .getField = getField, @@ -575,3 +639,245 @@ FFI_PLUGIN_EXPORT JNIEnv* GetJniEnv() { attach_thread(); return jniEnv; } + +FFI_PLUGIN_EXPORT intptr_t InitDartApiDL(void* data) { + return Dart_InitializeApiDL(data); +} + +// com.github.dart_lang.jni.DartException +jclass _c_DartException = NULL; + +jmethodID _m_DartException__ctor = NULL; +FFI_PLUGIN_EXPORT JniResult DartException__ctor(jstring message) { + attach_thread(); + load_class_global_ref(&_c_DartException, + "com/github/dart_lang/jni/PortProxy$DartException"); + if (_c_DartException == NULL) + return (JniResult){.value = {.j = 0}, .exception = check_exception()}; + load_method(_c_DartException, &_m_DartException__ctor, "", + "(Ljava/lang/String;)V"); + if (_m_DartException__ctor == NULL) + return (JniResult){.value = {.j = 0}, .exception = check_exception()}; + jobject _result = (*jniEnv)->NewObject(jniEnv, _c_DartException, + _m_DartException__ctor, message); + jthrowable exception = check_exception(); + if (exception == NULL) { + _result = to_global_ref(_result); + } + return (JniResult){.value = {.l = _result}, .exception = check_exception()}; +} + +JNIEXPORT void JNICALL +Java_com_github_dart_1lang_jni_PortContinuation__1resumeWith(JNIEnv* env, + jclass clazz, + jlong port, + jobject result) { + attach_thread(); + Dart_CObject c_post; + c_post.type = Dart_CObject_kInt64; + c_post.value.as_int64 = (jlong)((*env)->NewGlobalRef(env, result)); + Dart_PostCObject_DL(port, &c_post); +} + +// com.github.dart_lang.jni.PortContinuation +jclass _c_PortContinuation = NULL; + +jmethodID _m_PortContinuation__ctor = NULL; +FFI_PLUGIN_EXPORT +JniResult PortContinuation__ctor(int64_t j) { + attach_thread(); + load_class_global_ref(&_c_PortContinuation, + "com/github/dart_lang/jni/PortContinuation"); + if (_c_PortContinuation == NULL) + return (JniResult){.value = {.j = 0}, .exception = check_exception()}; + load_method(_c_PortContinuation, &_m_PortContinuation__ctor, "", + "(J)V"); + if (_m_PortContinuation__ctor == NULL) + return (JniResult){.value = {.j = 0}, .exception = check_exception()}; + jobject _result = (*jniEnv)->NewObject(jniEnv, _c_PortContinuation, + _m_PortContinuation__ctor, j); + jthrowable exception = check_exception(); + if (exception == NULL) { + _result = to_global_ref(_result); + } + return (JniResult){.value = {.l = _result}, .exception = check_exception()}; +} + +// com.github.dart_lang.jni.PortProxy +jclass _c_PortProxy = NULL; + +jmethodID _m_PortProxy__newInstance = NULL; +FFI_PLUGIN_EXPORT +JniResult PortProxy__newInstance(jobject binaryName, + int64_t port, + int64_t functionPtr) { + attach_thread(); + load_class_global_ref(&_c_PortProxy, "com/github/dart_lang/jni/PortProxy"); + if (_c_PortProxy == NULL) + return (JniResult){.value = {.j = 0}, .exception = check_exception()}; + load_static_method(_c_PortProxy, &_m_PortProxy__newInstance, "newInstance", + "(Ljava/lang/String;JJJ)Ljava/lang/Object;"); + if (_m_PortProxy__newInstance == NULL) + return (JniResult){.value = {.j = 0}, .exception = check_exception()}; + jobject _result = (*jniEnv)->CallStaticObjectMethod( + jniEnv, _c_PortProxy, _m_PortProxy__newInstance, binaryName, port, + (jlong)Dart_CurrentIsolate_DL(), functionPtr); + return to_global_ref_result(_result); +} + +FFI_PLUGIN_EXPORT +void resultFor(CallbackResult* result, jobject object) { + acquire_lock(&result->lock); + result->ready = 1; + result->object = object; + signal_cond(&result->cond); + release_lock(&result->lock); +} + +void doNotFinalize(void* isolate_callback_data, void* peer) {} + +void finalizeLocal(void* isolate_callback_data, void* peer) { + attach_thread(); + (*jniEnv)->DeleteLocalRef(jniEnv, peer); +} + +void finalizeGlobal(void* isolate_callback_data, void* peer) { + attach_thread(); + (*jniEnv)->DeleteGlobalRef(jniEnv, peer); +} + +void finalizeWeakGlobal(void* isolate_callback_data, void* peer) { + attach_thread(); + (*jniEnv)->DeleteWeakGlobalRef(jniEnv, peer); +} + +void freeBoolean(void* isolate_callback_data, void* peer) { + // To match the platform implementation of Dart's calloc. + free_mem(peer); +} + +FFI_PLUGIN_EXPORT +Dart_FinalizableHandle newJObjectFinalizableHandle(Dart_Handle object, + jobject reference, + jobjectRefType refType) { + switch (refType) { + case JNIInvalidRefType: + return Dart_NewFinalizableHandle_DL(object, reference, 0, doNotFinalize); + case JNILocalRefType: + return Dart_NewFinalizableHandle_DL(object, reference, 0, finalizeLocal); + case JNIGlobalRefType: + return Dart_NewFinalizableHandle_DL(object, reference, 0, finalizeGlobal); + case JNIWeakGlobalRefType: + return Dart_NewFinalizableHandle_DL(object, reference, 0, + finalizeWeakGlobal); + } +} + +FFI_PLUGIN_EXPORT +Dart_FinalizableHandle newBooleanFinalizableHandle(Dart_Handle object, + bool* reference) { + return Dart_NewFinalizableHandle_DL(object, reference, 1, freeBoolean); +} + +FFI_PLUGIN_EXPORT +void deleteFinalizableHandle(Dart_FinalizableHandle finalizableHandle, + Dart_Handle object) { + return Dart_DeleteFinalizableHandle_DL(finalizableHandle, object); +} + +jclass _c_Object = NULL; +jclass _c_Long = NULL; + +jmethodID _m_Long_init = NULL; + +JNIEXPORT jobjectArray JNICALL +Java_com_github_dart_1lang_jni_PortProxy__1invoke(JNIEnv* env, + jclass clazz, + jlong port, + jlong isolateId, + jlong functionPtr, + jobject proxy, + jstring methodDescriptor, + jobjectArray args) { + CallbackResult* result = (CallbackResult*)malloc(sizeof(CallbackResult)); + if (isolateId != (jlong)Dart_CurrentIsolate_DL()) { + init_lock(&result->lock); + init_cond(&result->cond); + acquire_lock(&result->lock); + result->ready = 0; + result->object = NULL; + + Dart_CObject c_result; + c_result.type = Dart_CObject_kInt64; + c_result.value.as_int64 = (jlong)result; + + Dart_CObject c_method; + c_method.type = Dart_CObject_kInt64; + c_method.value.as_int64 = + (jlong)((*env)->NewGlobalRef(env, methodDescriptor)); + + Dart_CObject c_args; + c_args.type = Dart_CObject_kInt64; + c_args.value.as_int64 = (jlong)((*env)->NewGlobalRef(env, args)); + + Dart_CObject* c_post_arr[] = {&c_result, &c_method, &c_args}; + Dart_CObject c_post; + c_post.type = Dart_CObject_kArray; + c_post.value.as_array.values = c_post_arr; + c_post.value.as_array.length = sizeof(c_post_arr) / sizeof(c_post_arr[0]); + + Dart_PostCObject_DL(port, &c_post); + + while (!result->ready) { + wait_for(&result->cond, &result->lock); + } + + release_lock(&result->lock); + destroy_lock(&result->lock); + destroy_cond(&result->cond); + } else { + result->object = ((jobject(*)(uint64_t, jobject, jobject))functionPtr)( + port, (*env)->NewGlobalRef(env, methodDescriptor), + (*env)->NewGlobalRef(env, args)); + } + // Returning an array of length 2. + // [0]: The result pointer, used for cleaning up the global reference, and + // freeing the memory since we passed the ownership to Java. + // [1]: The returned object. + attach_thread(); + load_class_global_ref(&_c_Object, "java/lang/Object"); + load_class_global_ref(&_c_Long, "java/lang/Long"); + load_method(_c_Long, &_m_Long_init, "", "(J)V"); + jobject first = (*env)->NewObject(env, _c_Long, _m_Long_init, (jlong)result); + jobject second = result->object; + jobjectArray arr = (*env)->NewObjectArray(env, 2, _c_Object, NULL); + (*env)->SetObjectArrayElement(env, arr, 0, first); + (*env)->SetObjectArrayElement(env, arr, 1, second); + return arr; +} + +JNIEXPORT void JNICALL +Java_com_github_dart_1lang_jni_PortProxy__1cleanUp(JNIEnv* env, + jclass clazz, + jlong resultPtr) { + CallbackResult* result = (CallbackResult*)resultPtr; + (*env)->DeleteGlobalRef(env, result->object); + free(result); +} + +JNIEXPORT void JNICALL +Java_com_github_dart_1lang_jni_PortCleaner_clean(JNIEnv* env, + jclass clazz, + jlong port) { + Dart_CObject close_signal; + close_signal.type = Dart_CObject_kNull; + Dart_PostCObject_DL(port, &close_signal); +} + +JNIEXPORT jobject JNICALL +Java_com_github_dart_1lang_jni_JniUtils_fromReferenceAddress(JNIEnv* env, + jclass clazz, + jlong id) { + attach_thread(); + return (jobject)(id); +} diff --git a/pkgs/jni/src/dartjni.h b/pkgs/jni/src/dartjni.h index f834d1577..506b4e950 100644 --- a/pkgs/jni/src/dartjni.h +++ b/pkgs/jni/src/dartjni.h @@ -4,6 +4,8 @@ #pragma once +#include "include/dart_api_dl.h" + // Note: include appropriate system jni.h as found by CMake, not third_party/jni.h. #include #include @@ -228,6 +230,14 @@ typedef struct JniAccessorsStruct { jclass elementClass, jobject initialElement); JniResult (*getArrayElement)(jarray array, int index, int type); + jthrowable (*setBooleanArrayElement)(jarray array, int index, jboolean value); + jthrowable (*setByteArrayElement)(jarray array, int index, jbyte value); + jthrowable (*setShortArrayElement)(jarray array, int index, jshort value); + jthrowable (*setCharArrayElement)(jarray array, int index, jchar value); + jthrowable (*setIntArrayElement)(jarray array, int index, jint value); + jthrowable (*setLongArrayElement)(jarray array, int index, jlong value); + jthrowable (*setFloatArrayElement)(jarray array, int index, jfloat value); + jthrowable (*setDoubleArrayElement)(jarray array, int index, jdouble value); JniResult (*callMethod)(jobject obj, jmethodID methodID, int callType, @@ -343,29 +353,6 @@ static inline jobject to_global_ref(jobject ref) { return g; } -// These functions are useful for C+Dart bindings, and not required for pure dart bindings. - -FFI_PLUGIN_EXPORT JniContext* GetJniContextPtr(); - -/// For use by jni_gen's generated code -/// don't use these. - -// these 2 fn ptr vars will be defined by generated code library -extern JniContext* (*context_getter)(void); -extern JNIEnv* (*env_getter)(void); - -// this function will be exported by generated code library -// it will set above 2 variables. -FFI_PLUGIN_EXPORT void setJniGetters(struct JniContext* (*cg)(void), - JNIEnv* (*eg)(void)); - -static inline void load_env() { - if (jniEnv == NULL) { - jni = context_getter(); - jniEnv = env_getter(); - } -} - static inline jthrowable check_exception() { jthrowable exception = (*jniEnv)->ExceptionOccurred(jniEnv); if (exception != NULL) (*jniEnv)->ExceptionClear(jniEnv); @@ -381,3 +368,31 @@ static inline JniResult to_global_ref_result(jobject ref) { } return result; } + +FFI_PLUGIN_EXPORT intptr_t InitDartApiDL(void* data); + +FFI_PLUGIN_EXPORT +JniResult DartException__ctor(jstring message); + +FFI_PLUGIN_EXPORT +JniResult PortContinuation__ctor(int64_t j); + +FFI_PLUGIN_EXPORT +JniResult PortProxy__newInstance(jobject binaryName, + int64_t port, + int64_t functionPtr); + +FFI_PLUGIN_EXPORT void resultFor(CallbackResult* result, jobject object); + +FFI_PLUGIN_EXPORT +Dart_FinalizableHandle newJObjectFinalizableHandle(Dart_Handle object, + jobject reference, + jobjectRefType refType); + +FFI_PLUGIN_EXPORT +Dart_FinalizableHandle newBooleanFinalizableHandle(Dart_Handle object, + bool* reference); + +FFI_PLUGIN_EXPORT +void deleteFinalizableHandle(Dart_FinalizableHandle finalizableHandle, + Dart_Handle object); diff --git a/pkgs/jni/src/internal.c b/pkgs/jni/src/internal.c deleted file mode 100644 index fad71c46c..000000000 --- a/pkgs/jni/src/internal.c +++ /dev/null @@ -1,248 +0,0 @@ - -// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -#include "internal.h" - -FFI_PLUGIN_EXPORT intptr_t InitDartApiDL(void* data) { - return Dart_InitializeApiDL(data); -} - -// com.github.dart_lang.jni.DartException -jclass _c_DartException = NULL; - -jmethodID _m_DartException__ctor = NULL; -FFI_PLUGIN_EXPORT JniResult DartException__ctor(jstring message) { - attach_thread(); - load_class_global_ref(&_c_DartException, - "com/github/dart_lang/jni/PortProxy$DartException"); - if (_c_DartException == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_DartException, &_m_DartException__ctor, "", - "(Ljava/lang/String;)V"); - if (_m_DartException__ctor == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_DartException, - _m_DartException__ctor, message); - jthrowable exception = check_exception(); - if (exception == NULL) { - _result = to_global_ref(_result); - } - return (JniResult){.value = {.l = _result}, .exception = check_exception()}; -} - -JNIEXPORT void JNICALL -Java_com_github_dart_1lang_jni_PortContinuation__1resumeWith(JNIEnv* env, - jclass clazz, - jlong port, - jobject result) { - attach_thread(); - Dart_CObject c_post; - c_post.type = Dart_CObject_kInt64; - c_post.value.as_int64 = (jlong)((*env)->NewGlobalRef(env, result)); - Dart_PostCObject_DL(port, &c_post); -} - -// com.github.dart_lang.jni.PortContinuation -jclass _c_PortContinuation = NULL; - -jmethodID _m_PortContinuation__ctor = NULL; -FFI_PLUGIN_EXPORT -JniResult PortContinuation__ctor(int64_t j) { - attach_thread(); - load_class_global_ref(&_c_PortContinuation, - "com/github/dart_lang/jni/PortContinuation"); - if (_c_PortContinuation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PortContinuation, &_m_PortContinuation__ctor, "", - "(J)V"); - if (_m_PortContinuation__ctor == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_PortContinuation, - _m_PortContinuation__ctor, j); - jthrowable exception = check_exception(); - if (exception == NULL) { - _result = to_global_ref(_result); - } - return (JniResult){.value = {.l = _result}, .exception = check_exception()}; -} - -// com.github.dart_lang.jni.PortProxy -jclass _c_PortProxy = NULL; - -jmethodID _m_PortProxy__newInstance = NULL; -FFI_PLUGIN_EXPORT -JniResult PortProxy__newInstance(jobject binaryName, - int64_t port, - int64_t functionPtr) { - attach_thread(); - load_class_global_ref(&_c_PortProxy, "com/github/dart_lang/jni/PortProxy"); - if (_c_PortProxy == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_PortProxy, &_m_PortProxy__newInstance, "newInstance", - "(Ljava/lang/String;JJJ)Ljava/lang/Object;"); - if (_m_PortProxy__newInstance == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PortProxy, _m_PortProxy__newInstance, binaryName, port, - (jlong)Dart_CurrentIsolate_DL(), functionPtr); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -void resultFor(CallbackResult* result, jobject object) { - acquire_lock(&result->lock); - result->ready = 1; - result->object = object; - signal_cond(&result->cond); - release_lock(&result->lock); -} - -void doNotFinalize(void* isolate_callback_data, void* peer) {} - -void finalizeLocal(void* isolate_callback_data, void* peer) { - attach_thread(); - (*jniEnv)->DeleteLocalRef(jniEnv, peer); -} - -void finalizeGlobal(void* isolate_callback_data, void* peer) { - attach_thread(); - (*jniEnv)->DeleteGlobalRef(jniEnv, peer); -} - -void finalizeWeakGlobal(void* isolate_callback_data, void* peer) { - attach_thread(); - (*jniEnv)->DeleteWeakGlobalRef(jniEnv, peer); -} - -void freeBoolean(void* isolate_callback_data, void* peer) { - // To match the platform implementation of Dart's calloc. - free_mem(peer); -} - -FFI_PLUGIN_EXPORT -Dart_FinalizableHandle newJObjectFinalizableHandle(Dart_Handle object, - jobject reference, - jobjectRefType refType) { - switch (refType) { - case JNIInvalidRefType: - return Dart_NewFinalizableHandle_DL(object, reference, 0, doNotFinalize); - case JNILocalRefType: - return Dart_NewFinalizableHandle_DL(object, reference, 0, finalizeLocal); - case JNIGlobalRefType: - return Dart_NewFinalizableHandle_DL(object, reference, 0, finalizeGlobal); - case JNIWeakGlobalRefType: - return Dart_NewFinalizableHandle_DL(object, reference, 0, - finalizeWeakGlobal); - } -} - -FFI_PLUGIN_EXPORT -Dart_FinalizableHandle newBooleanFinalizableHandle(Dart_Handle object, - bool* reference) { - return Dart_NewFinalizableHandle_DL(object, reference, 1, freeBoolean); -} - -FFI_PLUGIN_EXPORT -void deleteFinalizableHandle(Dart_FinalizableHandle finalizableHandle, - Dart_Handle object) { - return Dart_DeleteFinalizableHandle_DL(finalizableHandle, object); -} - -jclass _c_Object = NULL; -jclass _c_Long = NULL; - -jmethodID _m_Long_init = NULL; - -JNIEXPORT jobjectArray JNICALL -Java_com_github_dart_1lang_jni_PortProxy__1invoke(JNIEnv* env, - jclass clazz, - jlong port, - jlong isolateId, - jlong functionPtr, - jobject proxy, - jstring methodDescriptor, - jobjectArray args) { - CallbackResult* result = (CallbackResult*)malloc(sizeof(CallbackResult)); - if (isolateId != (jlong)Dart_CurrentIsolate_DL()) { - init_lock(&result->lock); - init_cond(&result->cond); - acquire_lock(&result->lock); - result->ready = 0; - result->object = NULL; - - Dart_CObject c_result; - c_result.type = Dart_CObject_kInt64; - c_result.value.as_int64 = (jlong)result; - - Dart_CObject c_method; - c_method.type = Dart_CObject_kInt64; - c_method.value.as_int64 = - (jlong)((*env)->NewGlobalRef(env, methodDescriptor)); - - Dart_CObject c_args; - c_args.type = Dart_CObject_kInt64; - c_args.value.as_int64 = (jlong)((*env)->NewGlobalRef(env, args)); - - Dart_CObject* c_post_arr[] = {&c_result, &c_method, &c_args}; - Dart_CObject c_post; - c_post.type = Dart_CObject_kArray; - c_post.value.as_array.values = c_post_arr; - c_post.value.as_array.length = sizeof(c_post_arr) / sizeof(c_post_arr[0]); - - Dart_PostCObject_DL(port, &c_post); - - while (!result->ready) { - wait_for(&result->cond, &result->lock); - } - - release_lock(&result->lock); - destroy_lock(&result->lock); - destroy_cond(&result->cond); - } else { - result->object = ((jobject(*)(uint64_t, jobject, jobject))functionPtr)( - port, (*env)->NewGlobalRef(env, methodDescriptor), - (*env)->NewGlobalRef(env, args)); - } - // Returning an array of length 2. - // [0]: The result pointer, used for cleaning up the global reference, and - // freeing the memory since we passed the ownership to Java. - // [1]: The returned object. - attach_thread(); - load_class_global_ref(&_c_Object, "java/lang/Object"); - load_class_global_ref(&_c_Long, "java/lang/Long"); - load_method(_c_Long, &_m_Long_init, "", "(J)V"); - jobject first = (*env)->NewObject(env, _c_Long, _m_Long_init, (jlong)result); - jobject second = result->object; - jobjectArray arr = (*env)->NewObjectArray(env, 2, _c_Object, NULL); - (*env)->SetObjectArrayElement(env, arr, 0, first); - (*env)->SetObjectArrayElement(env, arr, 1, second); - return arr; -} - -JNIEXPORT void JNICALL -Java_com_github_dart_1lang_jni_PortProxy__1cleanUp(JNIEnv* env, - jclass clazz, - jlong resultPtr) { - CallbackResult* result = (CallbackResult*)resultPtr; - (*env)->DeleteGlobalRef(env, result->object); - free(result); -} - -JNIEXPORT void JNICALL -Java_com_github_dart_1lang_jni_PortCleaner_clean(JNIEnv* env, - jclass clazz, - jlong port) { - Dart_CObject close_signal; - close_signal.type = Dart_CObject_kNull; - Dart_PostCObject_DL(port, &close_signal); -} - -JNIEXPORT jobject JNICALL -Java_com_github_dart_1lang_jni_JniUtils_fromReferenceAddress(JNIEnv* env, - jclass clazz, - jlong id) { - attach_thread(); - return (jobject)(id); -} diff --git a/pkgs/jni/src/internal.h b/pkgs/jni/src/internal.h deleted file mode 100644 index 8aea7426e..000000000 --- a/pkgs/jni/src/internal.h +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -// TODO(#660): Temporarily separated from dartjni.h to prevent unnecessary -// copies for based bindings. Will be merged with dartjni.h once the C-based -// bindings are removed. - -#pragma once - -#include "dartjni.h" -#include "include/dart_api_dl.h" - -FFI_PLUGIN_EXPORT intptr_t InitDartApiDL(void* data); - -FFI_PLUGIN_EXPORT -JniResult DartException__ctor(jstring message); - -FFI_PLUGIN_EXPORT -JniResult PortContinuation__ctor(int64_t j); - -FFI_PLUGIN_EXPORT -JniResult PortProxy__newInstance(jobject binaryName, - int64_t port, - int64_t functionPtr); - -FFI_PLUGIN_EXPORT void resultFor(CallbackResult* result, jobject object); - -FFI_PLUGIN_EXPORT -Dart_FinalizableHandle newJObjectFinalizableHandle(Dart_Handle object, - jobject reference, - jobjectRefType refType); - -FFI_PLUGIN_EXPORT -Dart_FinalizableHandle newBooleanFinalizableHandle(Dart_Handle object, - bool* reference); - -FFI_PLUGIN_EXPORT -void deleteFinalizableHandle(Dart_FinalizableHandle finalizableHandle, - Dart_Handle object); diff --git a/pkgs/jni/src/third_party/global_jni_env.c b/pkgs/jni/src/third_party/global_jni_env.c index 7ddc16414..70fc7697b 100644 --- a/pkgs/jni/src/third_party/global_jni_env.c +++ b/pkgs/jni/src/third_party/global_jni_env.c @@ -3,6 +3,9 @@ // This is generated from JNI header in Android NDK. License for the same is // provided below. +// Generation logic resides in `tool/wrapper_generators`. +// To regenerate, run `dart run tool/generate_ffi_bindings.dart`. + /* * Copyright (C) 2006 The Android Open Source Project * @@ -272,9 +275,14 @@ JniResult globalEnv_AllocObject(jclass clazz) { return (JniResult){.value = {.l = _result}, .exception = NULL}; } -JniResult globalEnv_NewObject(jclass clazz, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_NewObject(jclass clazz, + jmethodID methodID, + ...) { attach_thread(); - jobject _result = (*jniEnv)->NewObject(jniEnv, clazz, methodID); + va_list args; + va_start(args, methodID); + jobject _result = (*jniEnv)->NewObjectV(jniEnv, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -325,9 +333,14 @@ JniPointerResult globalEnv_GetMethodID(jclass clazz, char* name, char* sig) { return (JniPointerResult){.value = _result, .exception = NULL}; } -JniResult globalEnv_CallObjectMethod(jobject obj, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallObjectMethod(jobject obj, + jmethodID methodID, + ...) { attach_thread(); - jobject _result = (*jniEnv)->CallObjectMethod(jniEnv, obj, methodID); + va_list args; + va_start(args, methodID); + jobject _result = (*jniEnv)->CallObjectMethodV(jniEnv, obj, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -349,9 +362,14 @@ JniResult globalEnv_CallObjectMethodA(jobject obj, return (JniResult){.value = {.l = _result}, .exception = NULL}; } -JniResult globalEnv_CallBooleanMethod(jobject obj, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallBooleanMethod(jobject obj, + jmethodID methodID, + ...) { attach_thread(); - jboolean _result = (*jniEnv)->CallBooleanMethod(jniEnv, obj, methodID); + va_list args; + va_start(args, methodID); + jboolean _result = (*jniEnv)->CallBooleanMethodV(jniEnv, obj, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -371,9 +389,14 @@ JniResult globalEnv_CallBooleanMethodA(jobject obj, return (JniResult){.value = {.z = _result}, .exception = NULL}; } -JniResult globalEnv_CallByteMethod(jobject obj, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallByteMethod(jobject obj, + jmethodID methodID, + ...) { attach_thread(); - jbyte _result = (*jniEnv)->CallByteMethod(jniEnv, obj, methodID); + va_list args; + va_start(args, methodID); + jbyte _result = (*jniEnv)->CallByteMethodV(jniEnv, obj, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -393,9 +416,14 @@ JniResult globalEnv_CallByteMethodA(jobject obj, return (JniResult){.value = {.b = _result}, .exception = NULL}; } -JniResult globalEnv_CallCharMethod(jobject obj, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallCharMethod(jobject obj, + jmethodID methodID, + ...) { attach_thread(); - jchar _result = (*jniEnv)->CallCharMethod(jniEnv, obj, methodID); + va_list args; + va_start(args, methodID); + jchar _result = (*jniEnv)->CallCharMethodV(jniEnv, obj, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -415,9 +443,14 @@ JniResult globalEnv_CallCharMethodA(jobject obj, return (JniResult){.value = {.c = _result}, .exception = NULL}; } -JniResult globalEnv_CallShortMethod(jobject obj, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallShortMethod(jobject obj, + jmethodID methodID, + ...) { attach_thread(); - jshort _result = (*jniEnv)->CallShortMethod(jniEnv, obj, methodID); + va_list args; + va_start(args, methodID); + jshort _result = (*jniEnv)->CallShortMethodV(jniEnv, obj, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -437,9 +470,14 @@ JniResult globalEnv_CallShortMethodA(jobject obj, return (JniResult){.value = {.s = _result}, .exception = NULL}; } -JniResult globalEnv_CallIntMethod(jobject obj, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallIntMethod(jobject obj, + jmethodID methodID, + ...) { attach_thread(); - jint _result = (*jniEnv)->CallIntMethod(jniEnv, obj, methodID); + va_list args; + va_start(args, methodID); + jint _result = (*jniEnv)->CallIntMethodV(jniEnv, obj, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -459,9 +497,14 @@ JniResult globalEnv_CallIntMethodA(jobject obj, return (JniResult){.value = {.i = _result}, .exception = NULL}; } -JniResult globalEnv_CallLongMethod(jobject obj, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallLongMethod(jobject obj, + jmethodID methodID, + ...) { attach_thread(); - jlong _result = (*jniEnv)->CallLongMethod(jniEnv, obj, methodID); + va_list args; + va_start(args, methodID); + jlong _result = (*jniEnv)->CallLongMethodV(jniEnv, obj, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -481,9 +524,14 @@ JniResult globalEnv_CallLongMethodA(jobject obj, return (JniResult){.value = {.j = _result}, .exception = NULL}; } -JniResult globalEnv_CallFloatMethod(jobject obj, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallFloatMethod(jobject obj, + jmethodID methodID, + ...) { attach_thread(); - jfloat _result = (*jniEnv)->CallFloatMethod(jniEnv, obj, methodID); + va_list args; + va_start(args, methodID); + jfloat _result = (*jniEnv)->CallFloatMethodV(jniEnv, obj, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -503,9 +551,14 @@ JniResult globalEnv_CallFloatMethodA(jobject obj, return (JniResult){.value = {.f = _result}, .exception = NULL}; } -JniResult globalEnv_CallDoubleMethod(jobject obj, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallDoubleMethod(jobject obj, + jmethodID methodID, + ...) { attach_thread(); - jdouble _result = (*jniEnv)->CallDoubleMethod(jniEnv, obj, methodID); + va_list args; + va_start(args, methodID); + jdouble _result = (*jniEnv)->CallDoubleMethodV(jniEnv, obj, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -525,9 +578,14 @@ JniResult globalEnv_CallDoubleMethodA(jobject obj, return (JniResult){.value = {.d = _result}, .exception = NULL}; } -jthrowable globalEnv_CallVoidMethod(jobject obj, jmethodID methodID) { +FFI_PLUGIN_EXPORT jthrowable globalEnv_CallVoidMethod(jobject obj, + jmethodID methodID, + ...) { attach_thread(); - (*jniEnv)->CallVoidMethod(jniEnv, obj, methodID); + va_list args; + va_start(args, methodID); + (*jniEnv)->CallVoidMethodV(jniEnv, obj, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return _exception; @@ -547,12 +605,17 @@ jthrowable globalEnv_CallVoidMethodA(jobject obj, return NULL; } -JniResult globalEnv_CallNonvirtualObjectMethod(jobject obj, - jclass clazz, - jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualObjectMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...) { attach_thread(); - jobject _result = - (*jniEnv)->CallNonvirtualObjectMethod(jniEnv, obj, clazz, methodID); + va_list args; + va_start(args, methodID); + jobject _result = (*jniEnv)->CallNonvirtualObjectMethodV(jniEnv, obj, clazz, + methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -576,12 +639,17 @@ JniResult globalEnv_CallNonvirtualObjectMethodA(jobject obj, return (JniResult){.value = {.l = _result}, .exception = NULL}; } -JniResult globalEnv_CallNonvirtualBooleanMethod(jobject obj, - jclass clazz, - jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualBooleanMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...) { attach_thread(); - jboolean _result = - (*jniEnv)->CallNonvirtualBooleanMethod(jniEnv, obj, clazz, methodID); + va_list args; + va_start(args, methodID); + jboolean _result = (*jniEnv)->CallNonvirtualBooleanMethodV(jniEnv, obj, clazz, + methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -603,12 +671,17 @@ JniResult globalEnv_CallNonvirtualBooleanMethodA(jobject obj, return (JniResult){.value = {.z = _result}, .exception = NULL}; } -JniResult globalEnv_CallNonvirtualByteMethod(jobject obj, - jclass clazz, - jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualByteMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...) { attach_thread(); + va_list args; + va_start(args, methodID); jbyte _result = - (*jniEnv)->CallNonvirtualByteMethod(jniEnv, obj, clazz, methodID); + (*jniEnv)->CallNonvirtualByteMethodV(jniEnv, obj, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -630,12 +703,17 @@ JniResult globalEnv_CallNonvirtualByteMethodA(jobject obj, return (JniResult){.value = {.b = _result}, .exception = NULL}; } -JniResult globalEnv_CallNonvirtualCharMethod(jobject obj, - jclass clazz, - jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualCharMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...) { attach_thread(); + va_list args; + va_start(args, methodID); jchar _result = - (*jniEnv)->CallNonvirtualCharMethod(jniEnv, obj, clazz, methodID); + (*jniEnv)->CallNonvirtualCharMethodV(jniEnv, obj, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -657,12 +735,17 @@ JniResult globalEnv_CallNonvirtualCharMethodA(jobject obj, return (JniResult){.value = {.c = _result}, .exception = NULL}; } -JniResult globalEnv_CallNonvirtualShortMethod(jobject obj, - jclass clazz, - jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualShortMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...) { attach_thread(); + va_list args; + va_start(args, methodID); jshort _result = - (*jniEnv)->CallNonvirtualShortMethod(jniEnv, obj, clazz, methodID); + (*jniEnv)->CallNonvirtualShortMethodV(jniEnv, obj, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -684,12 +767,17 @@ JniResult globalEnv_CallNonvirtualShortMethodA(jobject obj, return (JniResult){.value = {.s = _result}, .exception = NULL}; } -JniResult globalEnv_CallNonvirtualIntMethod(jobject obj, - jclass clazz, - jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualIntMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...) { attach_thread(); + va_list args; + va_start(args, methodID); jint _result = - (*jniEnv)->CallNonvirtualIntMethod(jniEnv, obj, clazz, methodID); + (*jniEnv)->CallNonvirtualIntMethodV(jniEnv, obj, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -711,12 +799,17 @@ JniResult globalEnv_CallNonvirtualIntMethodA(jobject obj, return (JniResult){.value = {.i = _result}, .exception = NULL}; } -JniResult globalEnv_CallNonvirtualLongMethod(jobject obj, - jclass clazz, - jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualLongMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...) { attach_thread(); + va_list args; + va_start(args, methodID); jlong _result = - (*jniEnv)->CallNonvirtualLongMethod(jniEnv, obj, clazz, methodID); + (*jniEnv)->CallNonvirtualLongMethodV(jniEnv, obj, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -738,12 +831,17 @@ JniResult globalEnv_CallNonvirtualLongMethodA(jobject obj, return (JniResult){.value = {.j = _result}, .exception = NULL}; } -JniResult globalEnv_CallNonvirtualFloatMethod(jobject obj, - jclass clazz, - jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualFloatMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...) { attach_thread(); + va_list args; + va_start(args, methodID); jfloat _result = - (*jniEnv)->CallNonvirtualFloatMethod(jniEnv, obj, clazz, methodID); + (*jniEnv)->CallNonvirtualFloatMethodV(jniEnv, obj, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -765,12 +863,17 @@ JniResult globalEnv_CallNonvirtualFloatMethodA(jobject obj, return (JniResult){.value = {.f = _result}, .exception = NULL}; } -JniResult globalEnv_CallNonvirtualDoubleMethod(jobject obj, - jclass clazz, - jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualDoubleMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...) { attach_thread(); - jdouble _result = - (*jniEnv)->CallNonvirtualDoubleMethod(jniEnv, obj, clazz, methodID); + va_list args; + va_start(args, methodID); + jdouble _result = (*jniEnv)->CallNonvirtualDoubleMethodV(jniEnv, obj, clazz, + methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -792,11 +895,16 @@ JniResult globalEnv_CallNonvirtualDoubleMethodA(jobject obj, return (JniResult){.value = {.d = _result}, .exception = NULL}; } -jthrowable globalEnv_CallNonvirtualVoidMethod(jobject obj, - jclass clazz, - jmethodID methodID) { +FFI_PLUGIN_EXPORT jthrowable +globalEnv_CallNonvirtualVoidMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...) { attach_thread(); - (*jniEnv)->CallNonvirtualVoidMethod(jniEnv, obj, clazz, methodID); + va_list args; + va_start(args, methodID); + (*jniEnv)->CallNonvirtualVoidMethodV(jniEnv, obj, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return _exception; @@ -1026,9 +1134,15 @@ JniPointerResult globalEnv_GetStaticMethodID(jclass clazz, return (JniPointerResult){.value = _result, .exception = NULL}; } -JniResult globalEnv_CallStaticObjectMethod(jclass clazz, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticObjectMethod(jclass clazz, + jmethodID methodID, + ...) { attach_thread(); - jobject _result = (*jniEnv)->CallStaticObjectMethod(jniEnv, clazz, methodID); + va_list args; + va_start(args, methodID); + jobject _result = + (*jniEnv)->CallStaticObjectMethodV(jniEnv, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -1051,10 +1165,14 @@ JniResult globalEnv_CallStaticObjectMethodA(jclass clazz, return (JniResult){.value = {.l = _result}, .exception = NULL}; } -JniResult globalEnv_CallStaticBooleanMethod(jclass clazz, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallStaticBooleanMethod(jclass clazz, jmethodID methodID, ...) { attach_thread(); + va_list args; + va_start(args, methodID); jboolean _result = - (*jniEnv)->CallStaticBooleanMethod(jniEnv, clazz, methodID); + (*jniEnv)->CallStaticBooleanMethodV(jniEnv, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -1075,9 +1193,15 @@ JniResult globalEnv_CallStaticBooleanMethodA(jclass clazz, return (JniResult){.value = {.z = _result}, .exception = NULL}; } -JniResult globalEnv_CallStaticByteMethod(jclass clazz, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticByteMethod(jclass clazz, + jmethodID methodID, + ...) { attach_thread(); - jbyte _result = (*jniEnv)->CallStaticByteMethod(jniEnv, clazz, methodID); + va_list args; + va_start(args, methodID); + jbyte _result = + (*jniEnv)->CallStaticByteMethodV(jniEnv, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -1098,9 +1222,15 @@ JniResult globalEnv_CallStaticByteMethodA(jclass clazz, return (JniResult){.value = {.b = _result}, .exception = NULL}; } -JniResult globalEnv_CallStaticCharMethod(jclass clazz, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticCharMethod(jclass clazz, + jmethodID methodID, + ...) { attach_thread(); - jchar _result = (*jniEnv)->CallStaticCharMethod(jniEnv, clazz, methodID); + va_list args; + va_start(args, methodID); + jchar _result = + (*jniEnv)->CallStaticCharMethodV(jniEnv, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -1121,9 +1251,15 @@ JniResult globalEnv_CallStaticCharMethodA(jclass clazz, return (JniResult){.value = {.c = _result}, .exception = NULL}; } -JniResult globalEnv_CallStaticShortMethod(jclass clazz, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticShortMethod(jclass clazz, + jmethodID methodID, + ...) { attach_thread(); - jshort _result = (*jniEnv)->CallStaticShortMethod(jniEnv, clazz, methodID); + va_list args; + va_start(args, methodID); + jshort _result = + (*jniEnv)->CallStaticShortMethodV(jniEnv, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -1144,9 +1280,14 @@ JniResult globalEnv_CallStaticShortMethodA(jclass clazz, return (JniResult){.value = {.s = _result}, .exception = NULL}; } -JniResult globalEnv_CallStaticIntMethod(jclass clazz, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticIntMethod(jclass clazz, + jmethodID methodID, + ...) { attach_thread(); - jint _result = (*jniEnv)->CallStaticIntMethod(jniEnv, clazz, methodID); + va_list args; + va_start(args, methodID); + jint _result = (*jniEnv)->CallStaticIntMethodV(jniEnv, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -1166,9 +1307,15 @@ JniResult globalEnv_CallStaticIntMethodA(jclass clazz, return (JniResult){.value = {.i = _result}, .exception = NULL}; } -JniResult globalEnv_CallStaticLongMethod(jclass clazz, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticLongMethod(jclass clazz, + jmethodID methodID, + ...) { attach_thread(); - jlong _result = (*jniEnv)->CallStaticLongMethod(jniEnv, clazz, methodID); + va_list args; + va_start(args, methodID); + jlong _result = + (*jniEnv)->CallStaticLongMethodV(jniEnv, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -1189,9 +1336,15 @@ JniResult globalEnv_CallStaticLongMethodA(jclass clazz, return (JniResult){.value = {.j = _result}, .exception = NULL}; } -JniResult globalEnv_CallStaticFloatMethod(jclass clazz, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticFloatMethod(jclass clazz, + jmethodID methodID, + ...) { attach_thread(); - jfloat _result = (*jniEnv)->CallStaticFloatMethod(jniEnv, clazz, methodID); + va_list args; + va_start(args, methodID); + jfloat _result = + (*jniEnv)->CallStaticFloatMethodV(jniEnv, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -1212,9 +1365,15 @@ JniResult globalEnv_CallStaticFloatMethodA(jclass clazz, return (JniResult){.value = {.f = _result}, .exception = NULL}; } -JniResult globalEnv_CallStaticDoubleMethod(jclass clazz, jmethodID methodID) { +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticDoubleMethod(jclass clazz, + jmethodID methodID, + ...) { attach_thread(); - jdouble _result = (*jniEnv)->CallStaticDoubleMethod(jniEnv, clazz, methodID); + va_list args; + va_start(args, methodID); + jdouble _result = + (*jniEnv)->CallStaticDoubleMethodV(jniEnv, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return (JniResult){.value = {.j = 0}, .exception = _exception}; @@ -1235,9 +1394,14 @@ JniResult globalEnv_CallStaticDoubleMethodA(jclass clazz, return (JniResult){.value = {.d = _result}, .exception = NULL}; } -jthrowable globalEnv_CallStaticVoidMethod(jclass clazz, jmethodID methodID) { +FFI_PLUGIN_EXPORT jthrowable globalEnv_CallStaticVoidMethod(jclass clazz, + jmethodID methodID, + ...) { attach_thread(); - (*jniEnv)->CallStaticVoidMethod(jniEnv, clazz, methodID); + va_list args; + va_start(args, methodID); + (*jniEnv)->CallStaticVoidMethodV(jniEnv, clazz, methodID, args); + va_end(args); jthrowable _exception = check_exception(); if (_exception != NULL) { return _exception; diff --git a/pkgs/jni/src/third_party/global_jni_env.h b/pkgs/jni/src/third_party/global_jni_env.h index 562b1bf64..041718c69 100644 --- a/pkgs/jni/src/third_party/global_jni_env.h +++ b/pkgs/jni/src/third_party/global_jni_env.h @@ -3,6 +3,9 @@ // This is generated from JNI header in Android NDK. License for the same is // provided below. +// Generation logic resides in `tool/wrapper_generators`. +// To regenerate, run `dart run tool/generate_ffi_bindings.dart`. + /* * Copyright (C) 2006 The Android Open Source Project * @@ -65,47 +68,48 @@ typedef struct GlobalJniEnvStruct { JniResult (*NewLocalRef)(jobject obj); JniResult (*EnsureLocalCapacity)(jint capacity); JniResult (*AllocObject)(jclass clazz); - JniResult (*NewObject)(jclass clazz, jmethodID methodID); + JniResult (*NewObject)(jclass clazz, jmethodID methodID, ...); JniResult (*NewObjectV)(jclass, jmethodID, void*); JniResult (*NewObjectA)(jclass clazz, jmethodID methodID, jvalue* args); JniClassLookupResult (*GetObjectClass)(jobject obj); JniResult (*IsInstanceOf)(jobject obj, jclass clazz); JniPointerResult (*GetMethodID)(jclass clazz, char* name, char* sig); - JniResult (*CallObjectMethod)(jobject obj, jmethodID methodID); + JniResult (*CallObjectMethod)(jobject obj, jmethodID methodID, ...); JniResult (*CallObjectMethodV)(jobject, jmethodID, void*); JniResult (*CallObjectMethodA)(jobject obj, jmethodID methodID, jvalue* args); - JniResult (*CallBooleanMethod)(jobject obj, jmethodID methodID); + JniResult (*CallBooleanMethod)(jobject obj, jmethodID methodID, ...); JniResult (*CallBooleanMethodV)(jobject, jmethodID, void*); JniResult (*CallBooleanMethodA)(jobject obj, jmethodID methodId, jvalue* args); - JniResult (*CallByteMethod)(jobject obj, jmethodID methodID); + JniResult (*CallByteMethod)(jobject obj, jmethodID methodID, ...); JniResult (*CallByteMethodV)(jobject, jmethodID, void*); JniResult (*CallByteMethodA)(jobject obj, jmethodID methodID, jvalue* args); - JniResult (*CallCharMethod)(jobject obj, jmethodID methodID); + JniResult (*CallCharMethod)(jobject obj, jmethodID methodID, ...); JniResult (*CallCharMethodV)(jobject, jmethodID, void*); JniResult (*CallCharMethodA)(jobject obj, jmethodID methodID, jvalue* args); - JniResult (*CallShortMethod)(jobject obj, jmethodID methodID); + JniResult (*CallShortMethod)(jobject obj, jmethodID methodID, ...); JniResult (*CallShortMethodV)(jobject, jmethodID, void*); JniResult (*CallShortMethodA)(jobject obj, jmethodID methodID, jvalue* args); - JniResult (*CallIntMethod)(jobject obj, jmethodID methodID); + JniResult (*CallIntMethod)(jobject obj, jmethodID methodID, ...); JniResult (*CallIntMethodV)(jobject, jmethodID, void*); JniResult (*CallIntMethodA)(jobject obj, jmethodID methodID, jvalue* args); - JniResult (*CallLongMethod)(jobject obj, jmethodID methodID); + JniResult (*CallLongMethod)(jobject obj, jmethodID methodID, ...); JniResult (*CallLongMethodV)(jobject, jmethodID, void*); JniResult (*CallLongMethodA)(jobject obj, jmethodID methodID, jvalue* args); - JniResult (*CallFloatMethod)(jobject obj, jmethodID methodID); + JniResult (*CallFloatMethod)(jobject obj, jmethodID methodID, ...); JniResult (*CallFloatMethodV)(jobject, jmethodID, void*); JniResult (*CallFloatMethodA)(jobject obj, jmethodID methodID, jvalue* args); - JniResult (*CallDoubleMethod)(jobject obj, jmethodID methodID); + JniResult (*CallDoubleMethod)(jobject obj, jmethodID methodID, ...); JniResult (*CallDoubleMethodV)(jobject, jmethodID, void*); JniResult (*CallDoubleMethodA)(jobject obj, jmethodID methodID, jvalue* args); - jthrowable (*CallVoidMethod)(jobject obj, jmethodID methodID); + jthrowable (*CallVoidMethod)(jobject obj, jmethodID methodID, ...); jthrowable (*CallVoidMethodV)(jobject, jmethodID, void*); jthrowable (*CallVoidMethodA)(jobject obj, jmethodID methodID, jvalue* args); JniResult (*CallNonvirtualObjectMethod)(jobject obj, jclass clazz, - jmethodID methodID); + jmethodID methodID, + ...); JniResult (*CallNonvirtualObjectMethodV)(jobject, jclass, jmethodID, void*); JniResult (*CallNonvirtualObjectMethodA)(jobject obj, jclass clazz, @@ -113,7 +117,8 @@ typedef struct GlobalJniEnvStruct { jvalue* args); JniResult (*CallNonvirtualBooleanMethod)(jobject obj, jclass clazz, - jmethodID methodID); + jmethodID methodID, + ...); JniResult (*CallNonvirtualBooleanMethodV)(jobject, jclass, jmethodID, void*); JniResult (*CallNonvirtualBooleanMethodA)(jobject obj, jclass clazz, @@ -121,7 +126,8 @@ typedef struct GlobalJniEnvStruct { jvalue* args); JniResult (*CallNonvirtualByteMethod)(jobject obj, jclass clazz, - jmethodID methodID); + jmethodID methodID, + ...); JniResult (*CallNonvirtualByteMethodV)(jobject, jclass, jmethodID, void*); JniResult (*CallNonvirtualByteMethodA)(jobject obj, jclass clazz, @@ -129,7 +135,8 @@ typedef struct GlobalJniEnvStruct { jvalue* args); JniResult (*CallNonvirtualCharMethod)(jobject obj, jclass clazz, - jmethodID methodID); + jmethodID methodID, + ...); JniResult (*CallNonvirtualCharMethodV)(jobject, jclass, jmethodID, void*); JniResult (*CallNonvirtualCharMethodA)(jobject obj, jclass clazz, @@ -137,7 +144,8 @@ typedef struct GlobalJniEnvStruct { jvalue* args); JniResult (*CallNonvirtualShortMethod)(jobject obj, jclass clazz, - jmethodID methodID); + jmethodID methodID, + ...); JniResult (*CallNonvirtualShortMethodV)(jobject, jclass, jmethodID, void*); JniResult (*CallNonvirtualShortMethodA)(jobject obj, jclass clazz, @@ -145,7 +153,8 @@ typedef struct GlobalJniEnvStruct { jvalue* args); JniResult (*CallNonvirtualIntMethod)(jobject obj, jclass clazz, - jmethodID methodID); + jmethodID methodID, + ...); JniResult (*CallNonvirtualIntMethodV)(jobject, jclass, jmethodID, void*); JniResult (*CallNonvirtualIntMethodA)(jobject obj, jclass clazz, @@ -153,7 +162,8 @@ typedef struct GlobalJniEnvStruct { jvalue* args); JniResult (*CallNonvirtualLongMethod)(jobject obj, jclass clazz, - jmethodID methodID); + jmethodID methodID, + ...); JniResult (*CallNonvirtualLongMethodV)(jobject, jclass, jmethodID, void*); JniResult (*CallNonvirtualLongMethodA)(jobject obj, jclass clazz, @@ -161,7 +171,8 @@ typedef struct GlobalJniEnvStruct { jvalue* args); JniResult (*CallNonvirtualFloatMethod)(jobject obj, jclass clazz, - jmethodID methodID); + jmethodID methodID, + ...); JniResult (*CallNonvirtualFloatMethodV)(jobject, jclass, jmethodID, void*); JniResult (*CallNonvirtualFloatMethodA)(jobject obj, jclass clazz, @@ -169,7 +180,8 @@ typedef struct GlobalJniEnvStruct { jvalue* args); JniResult (*CallNonvirtualDoubleMethod)(jobject obj, jclass clazz, - jmethodID methodID); + jmethodID methodID, + ...); JniResult (*CallNonvirtualDoubleMethodV)(jobject, jclass, jmethodID, void*); JniResult (*CallNonvirtualDoubleMethodA)(jobject obj, jclass clazz, @@ -177,7 +189,8 @@ typedef struct GlobalJniEnvStruct { jvalue* args); jthrowable (*CallNonvirtualVoidMethod)(jobject obj, jclass clazz, - jmethodID methodID); + jmethodID methodID, + ...); jthrowable (*CallNonvirtualVoidMethodV)(jobject, jclass, jmethodID, void*); jthrowable (*CallNonvirtualVoidMethodA)(jobject obj, jclass clazz, @@ -203,52 +216,52 @@ typedef struct GlobalJniEnvStruct { jthrowable (*SetFloatField)(jobject obj, jfieldID fieldID, jfloat val); jthrowable (*SetDoubleField)(jobject obj, jfieldID fieldID, jdouble val); JniPointerResult (*GetStaticMethodID)(jclass clazz, char* name, char* sig); - JniResult (*CallStaticObjectMethod)(jclass clazz, jmethodID methodID); + JniResult (*CallStaticObjectMethod)(jclass clazz, jmethodID methodID, ...); JniResult (*CallStaticObjectMethodV)(jclass, jmethodID, void*); JniResult (*CallStaticObjectMethodA)(jclass clazz, jmethodID methodID, jvalue* args); - JniResult (*CallStaticBooleanMethod)(jclass clazz, jmethodID methodID); + JniResult (*CallStaticBooleanMethod)(jclass clazz, jmethodID methodID, ...); JniResult (*CallStaticBooleanMethodV)(jclass, jmethodID, void*); JniResult (*CallStaticBooleanMethodA)(jclass clazz, jmethodID methodID, jvalue* args); - JniResult (*CallStaticByteMethod)(jclass clazz, jmethodID methodID); + JniResult (*CallStaticByteMethod)(jclass clazz, jmethodID methodID, ...); JniResult (*CallStaticByteMethodV)(jclass, jmethodID, void*); JniResult (*CallStaticByteMethodA)(jclass clazz, jmethodID methodID, jvalue* args); - JniResult (*CallStaticCharMethod)(jclass clazz, jmethodID methodID); + JniResult (*CallStaticCharMethod)(jclass clazz, jmethodID methodID, ...); JniResult (*CallStaticCharMethodV)(jclass, jmethodID, void*); JniResult (*CallStaticCharMethodA)(jclass clazz, jmethodID methodID, jvalue* args); - JniResult (*CallStaticShortMethod)(jclass clazz, jmethodID methodID); + JniResult (*CallStaticShortMethod)(jclass clazz, jmethodID methodID, ...); JniResult (*CallStaticShortMethodV)(jclass, jmethodID, void*); JniResult (*CallStaticShortMethodA)(jclass clazz, jmethodID methodID, jvalue* args); - JniResult (*CallStaticIntMethod)(jclass clazz, jmethodID methodID); + JniResult (*CallStaticIntMethod)(jclass clazz, jmethodID methodID, ...); JniResult (*CallStaticIntMethodV)(jclass, jmethodID, void*); JniResult (*CallStaticIntMethodA)(jclass clazz, jmethodID methodID, jvalue* args); - JniResult (*CallStaticLongMethod)(jclass clazz, jmethodID methodID); + JniResult (*CallStaticLongMethod)(jclass clazz, jmethodID methodID, ...); JniResult (*CallStaticLongMethodV)(jclass, jmethodID, void*); JniResult (*CallStaticLongMethodA)(jclass clazz, jmethodID methodID, jvalue* args); - JniResult (*CallStaticFloatMethod)(jclass clazz, jmethodID methodID); + JniResult (*CallStaticFloatMethod)(jclass clazz, jmethodID methodID, ...); JniResult (*CallStaticFloatMethodV)(jclass, jmethodID, void*); JniResult (*CallStaticFloatMethodA)(jclass clazz, jmethodID methodID, jvalue* args); - JniResult (*CallStaticDoubleMethod)(jclass clazz, jmethodID methodID); + JniResult (*CallStaticDoubleMethod)(jclass clazz, jmethodID methodID, ...); JniResult (*CallStaticDoubleMethodV)(jclass, jmethodID, void*); JniResult (*CallStaticDoubleMethodA)(jclass clazz, jmethodID methodID, jvalue* args); - jthrowable (*CallStaticVoidMethod)(jclass clazz, jmethodID methodID); + jthrowable (*CallStaticVoidMethod)(jclass clazz, jmethodID methodID, ...); jthrowable (*CallStaticVoidMethodV)(jclass, jmethodID, void*); jthrowable (*CallStaticVoidMethodA)(jclass clazz, jmethodID methodID, @@ -432,3 +445,115 @@ typedef struct GlobalJniEnvStruct { JniResult (*GetObjectRefType)(jobject obj); } GlobalJniEnvStruct; FFI_PLUGIN_EXPORT GlobalJniEnvStruct* GetGlobalEnv(); +FFI_PLUGIN_EXPORT JniResult globalEnv_NewObject(jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallObjectMethod(jobject obj, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallBooleanMethod(jobject obj, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallByteMethod(jobject obj, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallCharMethod(jobject obj, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallShortMethod(jobject obj, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallIntMethod(jobject obj, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallLongMethod(jobject obj, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallFloatMethod(jobject obj, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallDoubleMethod(jobject obj, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT jthrowable globalEnv_CallVoidMethod(jobject obj, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualObjectMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualBooleanMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualByteMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualCharMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualShortMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualIntMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualLongMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualFloatMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallNonvirtualDoubleMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT jthrowable +globalEnv_CallNonvirtualVoidMethod(jobject obj, + jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticObjectMethod(jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult +globalEnv_CallStaticBooleanMethod(jclass clazz, jmethodID methodID, ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticByteMethod(jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticCharMethod(jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticShortMethod(jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticIntMethod(jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticLongMethod(jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticFloatMethod(jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT JniResult globalEnv_CallStaticDoubleMethod(jclass clazz, + jmethodID methodID, + ...); +FFI_PLUGIN_EXPORT jthrowable globalEnv_CallStaticVoidMethod(jclass clazz, + jmethodID methodID, + ...); diff --git a/pkgs/jni/test/jarray_test.dart b/pkgs/jni/test/jarray_test.dart index fd4d11906..233ff5d9d 100644 --- a/pkgs/jni/test/jarray_test.dart +++ b/pkgs/jni/test/jarray_test.dart @@ -2,6 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'dart:ffi'; import 'dart:io'; import 'package:jni/jni.dart'; @@ -29,6 +30,17 @@ void run({required TestRunnerCallback testRunner}) { expect(array[0], true); expect(array[1], false); expect(array[2], false); + final firstTwo = array.getRange(0, 2); + expect(firstTwo.length, 2); + expect(firstTwo.elementSizeInBytes, sizeOf()); + expect(firstTwo[0], 1); + expect(firstTwo[1], 0); + expect(() { + array.getRange(0, 4); + }, throwsRangeError); + expect(() { + array.setRange(0, 4, []); + }, throwsRangeError); array.setRange(0, 3, [false, true, true, true], 1); expect(array[0], true); expect(array[1], true); @@ -48,24 +60,35 @@ void run({required TestRunnerCallback testRunner}) { using((arena) { final array = JArray(jchar.type, 3)..releasedBy(arena); expect(array.length, 3); - array[0] = 'ح'; - array[1] = '2'; - array[2] = '3'; - expect(array[0], 'ح'); - expect(array[1], '2'); - expect(array[2], '3'); - array.setRange(0, 3, ['4', '5', '6', '7'], 1); - expect(array[0], '5'); - expect(array[1], '6'); - expect(array[2], '7'); + array[0] = 1; + array[1] = 2; + array[2] = 3 + 256 * 256 * 5; // Truncates the input. + expect(array[0], 1); + expect(array[1], 2); + expect(array[2], 3); + final firstTwo = array.getRange(0, 2); + expect(firstTwo.length, 2); + expect(firstTwo.elementSizeInBytes, sizeOf()); + expect(firstTwo[0], 1); + expect(firstTwo[1], 2); + expect(() { + array.getRange(0, 4); + }, throwsRangeError); + expect(() { + array.setRange(0, 4, []); + }, throwsRangeError); + array.setRange(0, 3, [4, 5, 6, 7], 1); + expect(array[0], 5); + expect(array[1], 6); + expect(array[2], 7); expect(() { final _ = array[-1]; }, throwsRangeError); expect(() { - array[-1] = '4'; + array[-1] = 4; }, throwsRangeError); expect(() { - array[3] = '4'; + array[3] = 4; }, throwsRangeError); }); }); @@ -75,10 +98,21 @@ void run({required TestRunnerCallback testRunner}) { expect(array.length, 3); array[0] = 1; array[1] = 2; - array[2] = 3 + 256 * 5; // truncates the input; + array[2] = 3 + 256 * 5; // Truncates the input.; expect(array[0], 1); expect(array[1], 2); expect(array[2], 3); + final firstTwo = array.getRange(0, 2); + expect(firstTwo.length, 2); + expect(firstTwo.elementSizeInBytes, sizeOf()); + expect(firstTwo[0], 1); + expect(firstTwo[1], 2); + expect(() { + array.getRange(0, 4); + }, throwsRangeError); + expect(() { + array.setRange(0, 4, []); + }, throwsRangeError); array.setRange(0, 3, [4, 5, 6, 7], 1); expect(array[0], 5); expect(array[1], 6); @@ -100,10 +134,21 @@ void run({required TestRunnerCallback testRunner}) { expect(array.length, 3); array[0] = 1; array[1] = 2; - array[2] = 3 + 256 * 256 * 5; // truncates the input + array[2] = 3 + 256 * 256 * 5; // Truncates the input. expect(array[0], 1); expect(array[1], 2); expect(array[2], 3); + final firstTwo = array.getRange(0, 2); + expect(firstTwo.length, 2); + expect(firstTwo.elementSizeInBytes, sizeOf()); + expect(firstTwo[0], 1); + expect(firstTwo[1], 2); + expect(() { + array.getRange(0, 4); + }, throwsRangeError); + expect(() { + array.setRange(0, 4, []); + }, throwsRangeError); array.setRange(0, 3, [4, 5, 6, 7], 1); expect(array[0], 5); expect(array[1], 6); @@ -125,10 +170,21 @@ void run({required TestRunnerCallback testRunner}) { expect(array.length, 3); array[0] = 1; array[1] = 2; - array[2] = 3 + 256 * 256 * 256 * 256 * 5; // truncates the input + array[2] = 3 + 256 * 256 * 256 * 256 * 5; // Truncates the input. expect(array[0], 1); expect(array[1], 2); expect(array[2], 3); + final firstTwo = array.getRange(0, 2); + expect(firstTwo.length, 2); + expect(firstTwo.elementSizeInBytes, sizeOf()); + expect(firstTwo[0], 1); + expect(firstTwo[1], 2); + expect(() { + array.getRange(0, 4); + }, throwsRangeError); + expect(() { + array.setRange(0, 4, []); + }, throwsRangeError); array.setRange(0, 3, [4, 5, 6, 7], 1); expect(array[0], 5); expect(array[1], 6); @@ -154,6 +210,17 @@ void run({required TestRunnerCallback testRunner}) { expect(array[0], 1); expect(array[1], 2); expect(array[2], 3 + 256 * 256 * 256 * 256 * 5); + final firstTwo = array.getRange(0, 2); + expect(firstTwo.length, 2); + expect(firstTwo.elementSizeInBytes, sizeOf()); + expect(firstTwo[0], 1); + expect(firstTwo[1], 2); + expect(() { + array.getRange(0, 4); + }, throwsRangeError); + expect(() { + array.setRange(0, 4, []); + }, throwsRangeError); array.setRange(0, 3, [4, 5, 6, 7], 1); expect(array[0], 5); expect(array[1], 6); @@ -180,6 +247,17 @@ void run({required TestRunnerCallback testRunner}) { expect(array[0], closeTo(0.5, epsilon)); expect(array[1], closeTo(2, epsilon)); expect(array[2], closeTo(3, epsilon)); + final firstTwo = array.getRange(0, 2); + expect(firstTwo.length, 2); + expect(firstTwo.elementSizeInBytes, sizeOf()); + expect(firstTwo[0], closeTo(0.5, epsilon)); + expect(firstTwo[1], closeTo(2, epsilon)); + expect(() { + array.getRange(0, 4); + }, throwsRangeError); + expect(() { + array.setRange(0, 4, []); + }, throwsRangeError); array.setRange(0, 3, [4, 5, 6, 7], 1); expect(array[0], closeTo(5, epsilon)); expect(array[1], closeTo(6, epsilon)); @@ -205,6 +283,17 @@ void run({required TestRunnerCallback testRunner}) { expect(array[0], closeTo(0.5, epsilon)); expect(array[1], closeTo(2, epsilon)); expect(array[2], closeTo(3, epsilon)); + final firstTwo = array.getRange(0, 2); + expect(firstTwo.length, 2); + expect(firstTwo.elementSizeInBytes, sizeOf()); + expect(firstTwo[0], closeTo(0.5, epsilon)); + expect(firstTwo[1], closeTo(2, epsilon)); + expect(() { + array.getRange(0, 4); + }, throwsRangeError); + expect(() { + array.setRange(0, 4, []); + }, throwsRangeError); array.setRange(0, 3, [4, 5, 6, 7], 1); expect(array[0], closeTo(5, epsilon)); expect(array[1], closeTo(6, epsilon)); diff --git a/pkgs/jni/tool/wrapper_generators/ffigen_util.dart b/pkgs/jni/tool/wrapper_generators/ffigen_util.dart index 2b234f6a9..480757c79 100644 --- a/pkgs/jni/tool/wrapper_generators/ffigen_util.dart +++ b/pkgs/jni/tool/wrapper_generators/ffigen_util.dart @@ -24,6 +24,9 @@ const preamble = ''' // This is generated from JNI header in Android NDK. License for the same is // provided below. +// Generation logic resides in `tool/wrapper_generators`. +// To regenerate, run `dart run tool/generate_ffi_bindings.dart`. + /* * Copyright (C) 2006 The Android Open Source Project * diff --git a/pkgs/jni/tool/wrapper_generators/generate_c_extensions.dart b/pkgs/jni/tool/wrapper_generators/generate_c_extensions.dart index f1e15b21e..96abd233f 100644 --- a/pkgs/jni/tool/wrapper_generators/generate_c_extensions.dart +++ b/pkgs/jni/tool/wrapper_generators/generate_c_extensions.dart @@ -56,6 +56,11 @@ const wrapperGetterDecl = ''' FFI_PLUGIN_EXPORT $wrapperName* GetGlobalEnv(); '''; +bool hasVarArgs(String name) { + return name == 'NewObject' || + RegExp(r'^Call(Static|Nonvirtual|)[A-Z][a-z]+Method$').hasMatch(name); +} + /// Get C name of a type from its ffigen representation. String getCType(Type type) { if (type is PointerType) { @@ -81,19 +86,24 @@ FunctionType getGlobalJniEnvFunctionType(FunctionType ft) { } // Returns declaration of function field in GlobalJniEnv struct -String getFunctionFieldDecl( - Member field, -) { +String getFunctionFieldDecl(Member field, {required bool isField}) { final fieldType = field.type; if (fieldType is PointerType && fieldType.child is NativeFunc) { final nativeFunc = fieldType.child as NativeFunc; final functionType = getGlobalJniEnvFunctionType(nativeFunc.type); final resultWrapper = getResultWrapper(getCType(functionType.returnType)); final name = field.name; + final withVarArgs = hasVarArgs(name); final params = functionType.parameters - .map((param) => '${getCType(param.type)} ${param.name}') - .join(', '); - return ('${resultWrapper.returnType} (*$name)($params);'); + .map((param) => '${getCType(param.type)} ${param.name}') + .join(', ') + + (withVarArgs ? ', ...' : ''); + final willExport = withVarArgs ? 'FFI_PLUGIN_EXPORT ' : ''; + if (isField) { + return '${resultWrapper.returnType} (*$name)($params);'; + } + return '$willExport${resultWrapper.returnType} ' + '${getWrapperFuncName(field)}($params);'; } else { return 'void* ${field.name};'; } @@ -222,16 +232,20 @@ String? getWrapperFunc(Member field) { final outerFunctionType = getGlobalJniEnvFunctionType(functionType); final wrapperName = getWrapperFuncName(field); final returnType = getCType(outerFunctionType.returnType); - final params = outerFunctionType.parameters - .map((param) => '${getCType(param.type)} ${param.name}') - .join(', '); + final withVarArgs = hasVarArgs(field.name); + final params = [ + ...outerFunctionType.parameters + .map((param) => '${getCType(param.type)} ${param.name}'), + if (withVarArgs) '...', + ].join(', '); var returnCapture = returnType == 'void' ? '' : '$returnType $resultVar ='; if (constBufferReturningFunctions.contains(field.name)) { returnCapture = 'const $returnCapture'; } final callParams = [ 'jniEnv', - ...(outerFunctionType.parameters.map((param) => param.name).toList()) + ...(outerFunctionType.parameters.map((param) => param.name).toList()), + if (withVarArgs) 'args', ].join(', '); final resultWrapper = getResultWrapper(returnType); @@ -239,15 +253,29 @@ String? getWrapperFunc(Member field) { if (isJRefType(returnType) && !refFunctions.contains(field.name)) { convertRef = ' $resultVar = to_global_ref($resultVar);\n'; } + final callee = field.name + (withVarArgs ? 'V' : ''); + final varArgsInit = withVarArgs + ? ''' + va_list args; + va_start(args, methodID); +''' + : ''; + final varArgsEnd = withVarArgs ? 'va_end(args);\n' : ''; final exceptionCheck = _noCheckException.contains(field.name) ? '' - : ' jthrowable $errorVar = check_exception();\n' - ' if ($errorVar != NULL) {\n' - ' return ${resultWrapper.onError};\n' - ' }\n'; - return '${resultWrapper.returnType} $wrapperName($params) {\n' + : ''' + jthrowable $errorVar = check_exception(); + if ($errorVar != NULL) { + return ${resultWrapper.onError}; + } +'''; + final willExport = withVarArgs ? 'FFI_PLUGIN_EXPORT ' : ''; + return '$willExport' + '${resultWrapper.returnType} $wrapperName($params) {\n' ' attach_thread();\n' - ' $returnCapture (*jniEnv)->${field.name}($callParams);\n' + '$varArgsInit' + ' $returnCapture (*jniEnv)->$callee($callParams);\n' + '$varArgsEnd' '$exceptionCheck' '$convertRef' ' return ${resultWrapper.onResult};\n' @@ -259,11 +287,20 @@ String? getWrapperFunc(Member field) { void writeGlobalJniEnvWrapper(Library library) { final jniEnvType = findCompound(library, envType); - final fieldDecls = jniEnvType.members.map(getFunctionFieldDecl).join('\n'); + final fieldDecls = jniEnvType.members + .map((member) => getFunctionFieldDecl(member, isField: true)) + .join('\n'); + final varArgsFunctions = jniEnvType.members + .where((member) => hasVarArgs(member.name)) + .map((member) => getFunctionFieldDecl(member, isField: false)) + .join('\n'); final structDecl = 'typedef struct $wrapperName {\n$fieldDecls\n} $wrapperName;\n'; - File.fromUri(Paths.globalJniEnvH).writeAsStringSync( - '$preamble$wrapperDeclIncludes$structDecl$wrapperGetterDecl'); + File.fromUri(Paths.globalJniEnvH).writeAsStringSync('$preamble' + '$wrapperDeclIncludes' + '$structDecl' + '$wrapperGetterDecl' + '$varArgsFunctions\n'); final functionWrappers = StringBuffer(); final structInst = StringBuffer('$wrapperName globalJniEnv = {\n'); diff --git a/pkgs/jnigen/CHANGELOG.md b/pkgs/jnigen/CHANGELOG.md index 29f3fac28..70cb66f3d 100644 --- a/pkgs/jnigen/CHANGELOG.md +++ b/pkgs/jnigen/CHANGELOG.md @@ -1,7 +1,10 @@ -## 0.8.1-wip +## 0.9.0 -- Expand constraint on `package:cli_config` to allow `^0.2.0`. -- Ignore `use_super_parameters` lint in generated files. +- **Breaking Change** ([#660](https://github.com/dart-lang/native/issues/660)): + Removed C-based bindings. Now all bindings are Dart-only. +- Expanded constraint on `package:cli_config` to allow `^0.2.0`. +- Ignored `use_super_parameters` lint in generated files. +- Fixed a bug in summarizer and improved the display of errors. ## 0.8.0 diff --git a/pkgs/jnigen/README.md b/pkgs/jnigen/README.md index ca921f191..b303604e3 100644 --- a/pkgs/jnigen/README.md +++ b/pkgs/jnigen/README.md @@ -6,7 +6,7 @@ ## Introduction Experimental bindings generator for Java bindings through dart:ffi and JNI. -`jnigen` scans compiled JAR files or Java source code to generate a description of the API, then uses it to generate Dart annd C bindings. The Dart bindings call the C bindings, which in-turn call the Java functions through JNI. Shared functionality and base classes are provided through the support library, `package:jni`. +`jnigen` scans compiled JAR files or Java source code to generate a description of the API, then uses it to generate Dart bindings. The Dart bindings call the C bindings, which in-turn call the Java functions through JNI. Shared functionality and base classes are provided through the support library, `package:jni`. The configuration for binding generation is usually provided through YAML. @@ -14,16 +14,12 @@ Three configuration details are needed to generate the bindings. Everything else * _Inputs_: input can be Java source files (`source_path`), or compiled classes / JARs (`class_path`). Some maven / gradle based tooling is also provided to simplify obtaining dependencies. -* _Outputs_: Output can be generated in package-structured (one file per class) or single file bindings. Target path to write C and Dart bindings needs to be specified. +* _Outputs_: Output can be generated in package-structured (one file per class) or single file bindings. Target path to write Dart bindings needs to be specified. * _Classes_: Specify which classes or packages you need bindings for. Specifying a package includes all classes inside it recursively. Check out the [examples](jnigen/example/) to see some sample configurations. -C code is always generated into a directory with it's own build configuration. It's built as a separate dynamic library. - -Lastly, [dart_only bindings](#pure-dart-bindings) mode is also available as a proof-of-concept. It does not need intermediate C bindings, only a dependency on the support library `package:jni`. - ## Example It's possible to generate bindings for JAR libraries, or Java source files. @@ -53,53 +49,50 @@ This produces the following boilerplate: ```dart /// Some boilerplate is omitted for clarity. -final ffi.Pointer Function(String sym) jniLookup = - ProtectedJniExtensions.initGeneratedLibrary("android_utils"); - -/// from: com.example.in_app_java.AndroidUtils class AndroidUtils extends jni.JObject { - AndroidUtils.fromReference(JReference reference) : super.fromReference(reference); + @override + late final jni.JObjType $type = type; + + AndroidUtils.fromReference( + jni.JReference reference, + ) : super.fromReference(reference); + + static final _class = + jni.JClass.forName(r"com/example/in_app_java/AndroidUtils"); - static final _showToast = jniLookup< + /// The type which includes information such as the signature of this class. + static const type = $AndroidUtilsType(); + + static final _id_showToast = _class.staticMethodId( + r"showToast", + r"(Landroid/app/Activity;Ljava/lang/CharSequence;I)V", + ); + + static final _showToast = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>("AndroidUtils__showToast") + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Int64 + )>)>>("globalEnv_CallStaticVoidMethod") .asFunction< - jni.JniResult Function( + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, ffi.Pointer, ffi.Pointer, int)>(); /// from: static public void showToast(android.app.Activity mainActivity, java.lang.CharSequence text, int duration) static void showToast( - jni.JObject mainActivity, jni.JObject text, int duration) => - _showToast(mainActivity.reference, text.reference, duration).check(); -} -``` - -#### C Bindings: - -```c -// Some boilerplate is omitted for clarity. - -// com.example.in_app_java.AndroidUtils -jclass _c_AndroidUtils = NULL; - -jmethodID _m_AndroidUtils__showToast = NULL; -FFI_PLUGIN_EXPORT -JniResult AndroidUtils__showToast(jobject mainActivity, - jobject text, - int32_t duration) { - load_env(); - load_class_gr(&_c_AndroidUtils, "com/example/in_app_java/AndroidUtils"); - if (_c_AndroidUtils == NULL) - return (JniResult){.result = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_AndroidUtils, &_m_AndroidUtils__showToast, "showToast", - "(Landroid/app/Activity;Ljava/lang/CharSequence;I)V"); - if (_m_AndroidUtils__showToast == NULL) - return (JniResult){.result = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallStaticVoidMethod(jniEnv, _c_AndroidUtils, - _m_AndroidUtils__showToast, mainActivity, - text, duration); - return (JniResult){.result = {.j = 0}, .exception = check_exception()}; + jni.JObject mainActivity, + jni.JObject text, + int duration, + ) { + _showToast(_class.reference.pointer, _id_showToast as jni.JMethodIDPtr, + mainActivity.reference.pointer, text.reference.pointer, duration) + .check(); + } } ``` @@ -110,9 +103,6 @@ android_sdk_config: add_gradle_deps: true output: - c: - library_name: android_utils - path: src/android_utils/ dart: path: lib/android_utils.dart structure: single_file @@ -145,8 +135,6 @@ More advanced features such as callbacks are not supported yet. Support for thes On Flutter targets, native libraries are built automatically and bundled. On standalone platforms, no such infrastructure exists yet. As a stopgap solution, running `dart run jni:setup` in a target directory builds all JNI native dependencies of the package into `build/jni_libs`. -By default `jni:setup` goes through pubspec configuration and builds all JNI dependencies of the project. It can be overridden to build a custom directory using `-s` switch, which can be useful when output configuration for C bindings does not follow standard FFI plugin layout. - The build directory has to be passed to `Jni.spawn` call. It's assumed that all dependencies are built into the same target directory, so that once JNI is initialized, generated bindings can load their respective C libraries automatically. ## Requirements @@ -171,10 +159,8 @@ $env:Path += ";${env:JAVA_HOME}\bin\server". If JAVA_HOME not set, find the `java.exe` executable and set the environment variable in Control Panel. If java is installed through a package manager, there may be a more automatic way to do this. (Eg: `scoop reset`). -### C/C++ tooling -CMake and a standard C toolchain are required to build `package:jni` and C bindings generated by `jnigen`. - -It's recommended to have `clang-format` installed for formatting the generated C bindings. On Windows, it's part of LLVM installation. On most Linux distributions it is available as a separate package. On MacOS, it can be installed using Homebrew. +### C tooling +CMake and a standard C toolchain are required to build `package:jni`. ## FAQs @@ -225,11 +211,6 @@ A `*` denotes required configuration. | `classes` * | List of qualified class / package names | List of qualified class / package names. `source_path` will be scanned assuming the sources follow standard java-ish hierarchy. That is a.b.c either maps to a directory `a/b/c` or a class file `a/b/c.java`. | | `enable_experiment` | List of experiment names:
  • `interface_implementation`
| List of enabled experiments. These features are still in development and their API might break. | | `output:` | (Subsection) | This subsection will contain configuration related to output files. | -| `output:` >> `bindings_type` | `c_based` (default) or `dart_only` | Binding generation strategy. [Trade-offs](#pure-dart-bindings) are explained at the end of this document. | -| `output:` >> `c:` | (Subsection) | This subsection specified C output configuration. Required if `bindings_type` is `c_based`. | -| `output:` >> `c:` >> path * | Directory path | Directory to write C bindings. Usually `src/` in case of an FFI plugin template. | -| `output:` >> `c:` >> subdir | Directory path | If specified, C bindings will be written to `subdir` resolved relative to `path`. This is useful when bindings are supposed to be under source's license, and written to a subdirectory such as `third_party`. | -| `output:` >> `c:` >> `library_name` *| Identifier (snake_case) | Name for generated C library. | `output:` >> `dart:` | (Subsection) | This subsection specifies Dart output configuration. | | `output:` >> `dart:` >> `structure` | `package_structure` / `single_file` | Whether to map resulting dart bindings to file-per-class source layout, or write all bindings to single file. | `output:` >> `dart:` >> `path` * | Directory path or File path | Path to write Dart bindings. Should end in `.dart` for `single_file` configurations, and end in `/` for `package_structure` (default) configuration. | @@ -255,19 +236,6 @@ It's possible to use the programmatic API instead of YAML. * import `package:jnigen/jnigen.dart` * construct a `Config` object and pass it to `generateJniBindings` function. The parameters are similar to the ones described above. -## Pure dart Bindings -It's possible to generate bindings that do not rely on an intermediate layer of C code. Bindings will still depend on `package:jni` and its support library written in C. But this approach avoids large C bindings. - -To enable pure dart bindings, specify -``` -output: - bindings_type: dart_only -``` - -Any C output configuration will be ignored. - -However, pure dart bindings will require additional allocations and check runtimeType of the arguments. This will be the case until Variadic arguments land in Dart FFI. - ## Android core libraries These days, Android projects depend heavily on AndroidX and other libraries downloaded via gradle. We have a tracking issue to improve detection of android SDK and dependencies. (#31). Currently we can fetch the JAR dependencies of an android project, by running a gradle stub, if `android_sdk_config` >> `add_gradle_deps` is specified. diff --git a/pkgs/jnigen/android_test_runner/android/app/build.gradle b/pkgs/jnigen/android_test_runner/android/app/build.gradle index e8e50be1b..18596cf0a 100644 --- a/pkgs/jnigen/android_test_runner/android/app/build.gradle +++ b/pkgs/jnigen/android_test_runner/android/app/build.gradle @@ -59,11 +59,6 @@ android { signingConfig signingConfigs.debug } } - externalNativeBuild { - cmake { - path 'CMakeLists.txt' - } - } } flutter { diff --git a/pkgs/jnigen/android_test_runner/integration_test/.gitignore b/pkgs/jnigen/android_test_runner/integration_test/.gitignore deleted file mode 100644 index af7c365a2..000000000 --- a/pkgs/jnigen/android_test_runner/integration_test/.gitignore +++ /dev/null @@ -1 +0,0 @@ -runtime_test.dart \ No newline at end of file diff --git a/pkgs/jnigen/android_test_runner/integration_test/runtime_test.dart b/pkgs/jnigen/android_test_runner/integration_test/runtime_test.dart new file mode 100644 index 000000000..a974b5bf0 --- /dev/null +++ b/pkgs/jnigen/android_test_runner/integration_test/runtime_test.dart @@ -0,0 +1,25 @@ +// Generated file. Do not edit or check-in to version control. + +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import "package:flutter_test/flutter_test.dart"; + +import "../../test/jackson_core_test/runtime_test_registrant.dart" + as jackson_core_test; +import "../../test/simple_package_test/runtime_test_registrant.dart" + as simple_package_test; +import "../../test/kotlin_test/runtime_test_registrant.dart" as kotlin_test; + +typedef TestCaseCallback = void Function(); + +void test(String description, TestCaseCallback testCase) { + testWidgets(description, (widgetTester) async => testCase()); +} + +void main() { + jackson_core_test.registerTests("jackson_core_test", test); + simple_package_test.registerTests("simple_package_test", test); + kotlin_test.registerTests("kotlin_test", test); +} diff --git a/pkgs/jnigen/cmake/CMakeLists.txt.tmpl b/pkgs/jnigen/cmake/CMakeLists.txt.tmpl deleted file mode 100644 index d0b8a7378..000000000 --- a/pkgs/jnigen/cmake/CMakeLists.txt.tmpl +++ /dev/null @@ -1,32 +0,0 @@ -# jni_native_build (Build with jni:setup. Do not delete this line.) - -# The Flutter tooling requires that developers have CMake 3.10 or later -# installed. You should not increase this version, as doing so will cause -# the plugin to fail to compile for some customers of the plugin. -cmake_minimum_required(VERSION 3.10) - -project({{LIBRARY_NAME}} VERSION 0.0.1 LANGUAGES C) - -add_library({{LIBRARY_NAME}} SHARED - "{{SUBDIR}}/{{LIBRARY_NAME}}.c" -) - -set_target_properties({{LIBRARY_NAME}} PROPERTIES - OUTPUT_NAME "{{LIBRARY_NAME}}" -) - -target_compile_definitions({{LIBRARY_NAME}} PUBLIC DART_SHARED_LIB) - -if(WIN32) - set_target_properties(${TARGET_NAME} PROPERTIES - LINK_FLAGS "/DELAYLOAD:jvm.dll") -endif() - -if (ANDROID) - target_link_libraries({{LIBRARY_NAME}} log) -else() - find_package(Java REQUIRED) - find_package(JNI REQUIRED) - include_directories(${JNI_INCLUDE_DIRS}) - target_link_libraries({{LIBRARY_NAME}} ${JNI_LIBRARIES}) -endif() diff --git a/pkgs/jnigen/cmake/README.md b/pkgs/jnigen/cmake/README.md deleted file mode 100644 index 65f9951ba..000000000 --- a/pkgs/jnigen/cmake/README.md +++ /dev/null @@ -1,3 +0,0 @@ -This directory contains a CMakeLists.txt.tmpl file which will be used to generate build configuration for generated C code. - -`{{LIBRARY_NAME}}` in this template will be replaced by `library_name` configuration parameter. \ No newline at end of file diff --git a/pkgs/jnigen/example/in_app_java/README.md b/pkgs/jnigen/example/in_app_java/README.md index 13813a821..5c4da0a3d 100644 --- a/pkgs/jnigen/example/in_app_java/README.md +++ b/pkgs/jnigen/example/in_app_java/README.md @@ -1,24 +1,28 @@ # In-App Java Example -This example shows how to write custom java code in `android/app/src` and call it using `jnigen` generated bindings. +This example shows how to write custom java code in `android/app/src` and call +it using `jnigen` generated bindings. #### How to run this example: -* Run `flutter run` to run the app. -* To regenerate bindings after changing Java code, run `flutter pub run jnigen --config jnigen.yaml`. This requires at least one APK build to have been run before, so that it's possible for `jnigen` to obtain classpaths of Android Gradle libraries. Therefore, once run `flutter build apk` before generating bindings for the first time, or after a `flutter clean`. +- Run `flutter run` to run the app. -#### General steps -These are general steps to integrate Java code into a flutter project using `jnigen`. - -* Write Java code in suitable package folder, under `android/` subproject of the flutter app. - -* Create A jnigen config like `jnigen.yaml` in this example. +- To regenerate bindings after changing Java code, run + `flutter pub run jnigen --config jnigen.yaml`. This requires at least one APK + build to have been run before, so that it's possible for `jnigen` to obtain + classpaths of Android Gradle libraries. Therefore, once run + `flutter build apk` before generating bindings for the first time, or after a + `flutter clean`. -* Generate bindings using jnigen config. - -* Add an `externalNativeBuild` to gradle script (see `android/app/build.gradle` in this example). - -* Add proguard rules to exclude your custom classes from tree shaking, since they are always accessed reflectively in JNI. +#### General steps -* Build and run the app. +These are general steps to integrate Java code into a flutter project using +`jnigen`. +- Write Java code in suitable package folder, under `android/` subproject of the + flutter app. +- Create A jnigen config like `jnigen.yaml` in this example. +- Generate bindings using jnigen config. +- Add proguard rules to exclude your custom classes from tree shaking, since + they are always accessed reflectively in JNI. +- Build and run the app. diff --git a/pkgs/jnigen/example/in_app_java/android/app/build.gradle b/pkgs/jnigen/example/in_app_java/android/app/build.gradle index 21410cd00..96798166c 100644 --- a/pkgs/jnigen/example/in_app_java/android/app/build.gradle +++ b/pkgs/jnigen/example/in_app_java/android/app/build.gradle @@ -57,12 +57,6 @@ android { signingConfig signingConfigs.debug } } - - externalNativeBuild { - cmake { - path "../../src/android_utils/CMakeLists.txt" - } - } } flutter { diff --git a/pkgs/jnigen/example/in_app_java/jnigen.yaml b/pkgs/jnigen/example/in_app_java/jnigen.yaml index e588f4a4c..14a4d7051 100644 --- a/pkgs/jnigen/example/in_app_java/jnigen.yaml +++ b/pkgs/jnigen/example/in_app_java/jnigen.yaml @@ -3,9 +3,6 @@ android_sdk_config: add_gradle_sources: true output: - c: - library_name: android_utils - path: src/android_utils/ dart: path: lib/android_utils.dart structure: single_file diff --git a/pkgs/jnigen/example/in_app_java/lib/android_utils.dart b/pkgs/jnigen/example/in_app_java/lib/android_utils.dart index 95fc5057b..48599b23d 100644 --- a/pkgs/jnigen/example/in_app_java/lib/android_utils.dart +++ b/pkgs/jnigen/example/in_app_java/lib/android_utils.dart @@ -23,11 +23,6 @@ import "dart:ffi" as ffi; import "package:jni/internal_helpers_for_jnigen.dart"; import "package:jni/jni.dart" as jni; -// Auto-generated initialization code. - -final ffi.Pointer Function(String sym) jniLookup = - ProtectedJniExtensions.initGeneratedLibrary("android_utils"); - /// from: androidx.emoji2.text.EmojiCompat$CodepointSequenceMatchResult class EmojiCompat_CodepointSequenceMatchResult extends jni.JObject { @override @@ -38,6 +33,9 @@ class EmojiCompat_CodepointSequenceMatchResult extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = jni.JClass.forName( + r"androidx/emoji2/text/EmojiCompat$CodepointSequenceMatchResult"); + /// The type which includes information such as the signature of this class. static const type = $EmojiCompat_CodepointSequenceMatchResultType(); } @@ -85,13 +83,25 @@ class EmojiCompat_Config extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = + jni.JClass.forName(r"androidx/emoji2/text/EmojiCompat$Config"); + /// The type which includes information such as the signature of this class. static const type = $EmojiCompat_ConfigType(); - static final _new0 = jniLookup< - ffi - .NativeFunction)>>( - "EmojiCompat_Config__new0") - .asFunction)>(); + static final _id_new0 = _class.constructorId( + r"(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;)V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: protected void (androidx.emoji2.text.EmojiCompat.MetadataRepoLoader metadataLoader) /// The returned object must be released after use, by calling the [release] method. @@ -101,18 +111,26 @@ class EmojiCompat_Config extends jni.JObject { factory EmojiCompat_Config( EmojiCompat_MetadataRepoLoader metadataLoader, ) { - return EmojiCompat_Config.fromReference( - _new0(metadataLoader.reference.pointer).reference); + return EmojiCompat_Config.fromReference(_new0(_class.reference.pointer, + _id_new0 as jni.JMethodIDPtr, metadataLoader.reference.pointer) + .reference); } - static final _registerInitCallback = jniLookup< + static final _id_registerInitCallback = _class.instanceMethodId( + r"registerInitCallback", + r"(Landroidx/emoji2/text/EmojiCompat$InitCallback;)Landroidx/emoji2/text/EmojiCompat$Config;", + ); + + static final _registerInitCallback = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "EmojiCompat_Config__registerInitCallback") + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public androidx.emoji2.text.EmojiCompat.Config registerInitCallback(androidx.emoji2.text.EmojiCompat.InitCallback initCallback) /// The returned object must be released after use, by calling the [release] method. @@ -124,18 +142,27 @@ class EmojiCompat_Config extends jni.JObject { EmojiCompat_InitCallback initCallback, ) { return _registerInitCallback( - reference.pointer, initCallback.reference.pointer) + reference.pointer, + _id_registerInitCallback as jni.JMethodIDPtr, + initCallback.reference.pointer) .object(const $EmojiCompat_ConfigType()); } - static final _unregisterInitCallback = jniLookup< + static final _id_unregisterInitCallback = _class.instanceMethodId( + r"unregisterInitCallback", + r"(Landroidx/emoji2/text/EmojiCompat$InitCallback;)Landroidx/emoji2/text/EmojiCompat$Config;", + ); + + static final _unregisterInitCallback = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "EmojiCompat_Config__unregisterInitCallback") + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public androidx.emoji2.text.EmojiCompat.Config unregisterInitCallback(androidx.emoji2.text.EmojiCompat.InitCallback initCallback) /// The returned object must be released after use, by calling the [release] method. @@ -147,15 +174,24 @@ class EmojiCompat_Config extends jni.JObject { EmojiCompat_InitCallback initCallback, ) { return _unregisterInitCallback( - reference.pointer, initCallback.reference.pointer) + reference.pointer, + _id_unregisterInitCallback as jni.JMethodIDPtr, + initCallback.reference.pointer) .object(const $EmojiCompat_ConfigType()); } - static final _setReplaceAll = jniLookup< + static final _id_setReplaceAll = _class.instanceMethodId( + r"setReplaceAll", + r"(Z)Landroidx/emoji2/text/EmojiCompat$Config;", + ); + + static final _setReplaceAll = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Uint8)>>("EmojiCompat_Config__setReplaceAll") - .asFunction, int)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: public androidx.emoji2.text.EmojiCompat.Config setReplaceAll(boolean replaceAll) /// The returned object must be released after use, by calling the [release] method. @@ -168,15 +204,23 @@ class EmojiCompat_Config extends jni.JObject { EmojiCompat_Config setReplaceAll( bool replaceAll, ) { - return _setReplaceAll(reference.pointer, replaceAll ? 1 : 0) + return _setReplaceAll(reference.pointer, + _id_setReplaceAll as jni.JMethodIDPtr, replaceAll ? 1 : 0) .object(const $EmojiCompat_ConfigType()); } - static final _setUseEmojiAsDefaultStyle = jniLookup< + static final _id_setUseEmojiAsDefaultStyle = _class.instanceMethodId( + r"setUseEmojiAsDefaultStyle", + r"(Z)Landroidx/emoji2/text/EmojiCompat$Config;", + ); + + static final _setUseEmojiAsDefaultStyle = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Uint8)>>("EmojiCompat_Config__setUseEmojiAsDefaultStyle") - .asFunction, int)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: public androidx.emoji2.text.EmojiCompat.Config setUseEmojiAsDefaultStyle(boolean useEmojiAsDefaultStyle) /// The returned object must be released after use, by calling the [release] method. @@ -197,18 +241,27 @@ class EmojiCompat_Config extends jni.JObject { bool useEmojiAsDefaultStyle, ) { return _setUseEmojiAsDefaultStyle( - reference.pointer, useEmojiAsDefaultStyle ? 1 : 0) + reference.pointer, + _id_setUseEmojiAsDefaultStyle as jni.JMethodIDPtr, + useEmojiAsDefaultStyle ? 1 : 0) .object(const $EmojiCompat_ConfigType()); } - static final _setUseEmojiAsDefaultStyle1 = jniLookup< + static final _id_setUseEmojiAsDefaultStyle1 = _class.instanceMethodId( + r"setUseEmojiAsDefaultStyle", + r"(ZLjava/util/List;)Landroidx/emoji2/text/EmojiCompat$Config;", + ); + + static final _setUseEmojiAsDefaultStyle1 = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, ffi.Uint8, - ffi.Pointer)>>( - "EmojiCompat_Config__setUseEmojiAsDefaultStyle1") + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64, ffi.Pointer)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, int, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, int, + ffi.Pointer)>(); /// from: public androidx.emoji2.text.EmojiCompat.Config setUseEmojiAsDefaultStyle(boolean useEmojiAsDefaultStyle, java.util.List emojiAsDefaultStyleExceptions) /// The returned object must be released after use, by calling the [release] method. @@ -231,16 +284,24 @@ class EmojiCompat_Config extends jni.JObject { ) { return _setUseEmojiAsDefaultStyle1( reference.pointer, + _id_setUseEmojiAsDefaultStyle1 as jni.JMethodIDPtr, useEmojiAsDefaultStyle ? 1 : 0, emojiAsDefaultStyleExceptions.reference.pointer) .object(const $EmojiCompat_ConfigType()); } - static final _setEmojiSpanIndicatorEnabled = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, ffi.Uint8)>>( - "EmojiCompat_Config__setEmojiSpanIndicatorEnabled") - .asFunction, int)>(); + static final _id_setEmojiSpanIndicatorEnabled = _class.instanceMethodId( + r"setEmojiSpanIndicatorEnabled", + r"(Z)Landroidx/emoji2/text/EmojiCompat$Config;", + ); + + static final _setEmojiSpanIndicatorEnabled = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: public androidx.emoji2.text.EmojiCompat.Config setEmojiSpanIndicatorEnabled(boolean emojiSpanIndicatorEnabled) /// The returned object must be released after use, by calling the [release] method. @@ -254,15 +315,24 @@ class EmojiCompat_Config extends jni.JObject { bool emojiSpanIndicatorEnabled, ) { return _setEmojiSpanIndicatorEnabled( - reference.pointer, emojiSpanIndicatorEnabled ? 1 : 0) + reference.pointer, + _id_setEmojiSpanIndicatorEnabled as jni.JMethodIDPtr, + emojiSpanIndicatorEnabled ? 1 : 0) .object(const $EmojiCompat_ConfigType()); } - static final _setEmojiSpanIndicatorColor = jniLookup< + static final _id_setEmojiSpanIndicatorColor = _class.instanceMethodId( + r"setEmojiSpanIndicatorColor", + r"(I)Landroidx/emoji2/text/EmojiCompat$Config;", + ); + + static final _setEmojiSpanIndicatorColor = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Int32)>>("EmojiCompat_Config__setEmojiSpanIndicatorColor") - .asFunction, int)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: public androidx.emoji2.text.EmojiCompat.Config setEmojiSpanIndicatorColor(int color) /// The returned object must be released after use, by calling the [release] method. @@ -273,15 +343,23 @@ class EmojiCompat_Config extends jni.JObject { EmojiCompat_Config setEmojiSpanIndicatorColor( int color, ) { - return _setEmojiSpanIndicatorColor(reference.pointer, color) + return _setEmojiSpanIndicatorColor(reference.pointer, + _id_setEmojiSpanIndicatorColor as jni.JMethodIDPtr, color) .object(const $EmojiCompat_ConfigType()); } - static final _setMetadataLoadStrategy = jniLookup< + static final _id_setMetadataLoadStrategy = _class.instanceMethodId( + r"setMetadataLoadStrategy", + r"(I)Landroidx/emoji2/text/EmojiCompat$Config;", + ); + + static final _setMetadataLoadStrategy = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Int32)>>("EmojiCompat_Config__setMetadataLoadStrategy") - .asFunction, int)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: public androidx.emoji2.text.EmojiCompat.Config setMetadataLoadStrategy(int strategy) /// The returned object must be released after use, by calling the [release] method. @@ -321,17 +399,26 @@ class EmojiCompat_Config extends jni.JObject { EmojiCompat_Config setMetadataLoadStrategy( int strategy, ) { - return _setMetadataLoadStrategy(reference.pointer, strategy) + return _setMetadataLoadStrategy(reference.pointer, + _id_setMetadataLoadStrategy as jni.JMethodIDPtr, strategy) .object(const $EmojiCompat_ConfigType()); } - static final _setSpanFactory = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("EmojiCompat_Config__setSpanFactory") + static final _id_setSpanFactory = _class.instanceMethodId( + r"setSpanFactory", + r"(Landroidx/emoji2/text/EmojiCompat$SpanFactory;)Landroidx/emoji2/text/EmojiCompat$Config;", + ); + + static final _setSpanFactory = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public androidx.emoji2.text.EmojiCompat.Config setSpanFactory(androidx.emoji2.text.EmojiCompat.SpanFactory factory) /// The returned object must be released after use, by calling the [release] method. @@ -342,18 +429,26 @@ class EmojiCompat_Config extends jni.JObject { EmojiCompat_Config setSpanFactory( EmojiCompat_SpanFactory factory0, ) { - return _setSpanFactory(reference.pointer, factory0.reference.pointer) + return _setSpanFactory(reference.pointer, + _id_setSpanFactory as jni.JMethodIDPtr, factory0.reference.pointer) .object(const $EmojiCompat_ConfigType()); } - static final _setGlyphChecker = jniLookup< + static final _id_setGlyphChecker = _class.instanceMethodId( + r"setGlyphChecker", + r"(Landroidx/emoji2/text/EmojiCompat$GlyphChecker;)Landroidx/emoji2/text/EmojiCompat$Config;", + ); + + static final _setGlyphChecker = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "EmojiCompat_Config__setGlyphChecker") + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public androidx.emoji2.text.EmojiCompat.Config setGlyphChecker(androidx.emoji2.text.EmojiCompat.GlyphChecker glyphChecker) /// The returned object must be released after use, by calling the [release] method. @@ -364,22 +459,37 @@ class EmojiCompat_Config extends jni.JObject { EmojiCompat_Config setGlyphChecker( EmojiCompat_GlyphChecker glyphChecker, ) { - return _setGlyphChecker(reference.pointer, glyphChecker.reference.pointer) + return _setGlyphChecker( + reference.pointer, + _id_setGlyphChecker as jni.JMethodIDPtr, + glyphChecker.reference.pointer) .object(const $EmojiCompat_ConfigType()); } - static final _getMetadataRepoLoader = jniLookup< - ffi - .NativeFunction)>>( - "EmojiCompat_Config__getMetadataRepoLoader") - .asFunction)>(); + static final _id_getMetadataRepoLoader = _class.instanceMethodId( + r"getMetadataRepoLoader", + r"()Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;", + ); + + static final _getMetadataRepoLoader = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: protected final androidx.emoji2.text.EmojiCompat.MetadataRepoLoader getMetadataRepoLoader() /// The returned object must be released after use, by calling the [release] method. /// /// Returns the MetadataRepoLoader. EmojiCompat_MetadataRepoLoader getMetadataRepoLoader() { - return _getMetadataRepoLoader(reference.pointer) + return _getMetadataRepoLoader( + reference.pointer, _id_getMetadataRepoLoader as jni.JMethodIDPtr) .object(const $EmojiCompat_MetadataRepoLoaderType()); } } @@ -421,26 +531,50 @@ class EmojiCompat_DefaultSpanFactory extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = jni.JClass.forName( + r"androidx/emoji2/text/EmojiCompat$DefaultSpanFactory"); + /// The type which includes information such as the signature of this class. static const type = $EmojiCompat_DefaultSpanFactoryType(); - static final _new0 = jniLookup>( - "EmojiCompat_DefaultSpanFactory__new0") - .asFunction(); + static final _id_new0 = _class.constructorId( + r"()V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory EmojiCompat_DefaultSpanFactory() { - return EmojiCompat_DefaultSpanFactory.fromReference(_new0().reference); + return EmojiCompat_DefaultSpanFactory.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } - static final _createSpan = jniLookup< + static final _id_createSpan = _class.instanceMethodId( + r"createSpan", + r"(Landroidx/emoji2/text/TypefaceEmojiRasterizer;)Landroidx/emoji2/text/EmojiSpan;", + ); + + static final _createSpan = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "EmojiCompat_DefaultSpanFactory__createSpan") + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public androidx.emoji2.text.EmojiSpan createSpan(androidx.emoji2.text.TypefaceEmojiRasterizer rasterizer) /// The returned object must be released after use, by calling the [release] method. @@ -452,7 +586,8 @@ class EmojiCompat_DefaultSpanFactory extends jni.JObject { jni.JObject createSpan( jni.JObject rasterizer, ) { - return _createSpan(reference.pointer, rasterizer.reference.pointer) + return _createSpan(reference.pointer, _id_createSpan as jni.JMethodIDPtr, + rasterizer.reference.pointer) .object(const jni.JObjectType()); } } @@ -496,19 +631,31 @@ class EmojiCompat_GlyphChecker extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = + jni.JClass.forName(r"androidx/emoji2/text/EmojiCompat$GlyphChecker"); + /// The type which includes information such as the signature of this class. static const type = $EmojiCompat_GlyphCheckerType(); - static final _hasGlyph = jniLookup< + static final _id_hasGlyph = _class.instanceMethodId( + r"hasGlyph", + r"(Ljava/lang/CharSequence;III)Z", + ); + + static final _hasGlyph = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Int32)>>("EmojiCompat_GlyphChecker__hasGlyph") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Int64, + ffi.Int64, + ffi.Int64 + )>)>>("globalEnv_CallBooleanMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer, int, int, int)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int, int, int)>(); /// from: public abstract boolean hasGlyph(java.lang.CharSequence charSequence, int start, int end, int sdkAdded) /// @@ -553,8 +700,8 @@ class EmojiCompat_GlyphChecker extends jni.JObject { int end, int sdkAdded, ) { - return _hasGlyph(reference.pointer, charSequence.reference.pointer, start, - end, sdkAdded) + return _hasGlyph(reference.pointer, _id_hasGlyph as jni.JMethodIDPtr, + charSequence.reference.pointer, start, end, sdkAdded) .boolean; } } @@ -597,39 +744,76 @@ class EmojiCompat_InitCallback extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = + jni.JClass.forName(r"androidx/emoji2/text/EmojiCompat$InitCallback"); + /// The type which includes information such as the signature of this class. static const type = $EmojiCompat_InitCallbackType(); - static final _new0 = jniLookup>( - "EmojiCompat_InitCallback__new0") - .asFunction(); + static final _id_new0 = _class.constructorId( + r"()V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory EmojiCompat_InitCallback() { - return EmojiCompat_InitCallback.fromReference(_new0().reference); + return EmojiCompat_InitCallback.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } - static final _onInitialized = jniLookup< - ffi - .NativeFunction)>>( - "EmojiCompat_InitCallback__onInitialized") - .asFunction)>(); + static final _id_onInitialized = _class.instanceMethodId( + r"onInitialized", + r"()V", + ); + + static final _onInitialized = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void onInitialized() /// /// Called when EmojiCompat is initialized and the emoji data is loaded. When used on devices /// running API 18 or below, this function is always called. void onInitialized() { - _onInitialized(reference.pointer).check(); + _onInitialized(reference.pointer, _id_onInitialized as jni.JMethodIDPtr) + .check(); } - static final _onFailed = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("EmojiCompat_InitCallback__onFailed") + static final _id_onFailed = _class.instanceMethodId( + r"onFailed", + r"(Ljava/lang/Throwable;)V", + ); + + static final _onFailed = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void onFailed(java.lang.Throwable throwable) /// @@ -638,7 +822,9 @@ class EmojiCompat_InitCallback extends jni.JObject { void onFailed( jni.JObject throwable, ) { - _onFailed(reference.pointer, throwable.reference.pointer).check(); + _onFailed(reference.pointer, _id_onFailed as jni.JMethodIDPtr, + throwable.reference.pointer) + .check(); } } @@ -678,6 +864,9 @@ class EmojiCompat_LoadStrategy extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = + jni.JClass.forName(r"androidx/emoji2/text/EmojiCompat$LoadStrategy"); + /// The type which includes information such as the signature of this class. static const type = $EmojiCompat_LoadStrategyType(); } @@ -720,16 +909,26 @@ class EmojiCompat_MetadataRepoLoader extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = jni.JClass.forName( + r"androidx/emoji2/text/EmojiCompat$MetadataRepoLoader"); + /// The type which includes information such as the signature of this class. static const type = $EmojiCompat_MetadataRepoLoaderType(); - static final _load = jniLookup< + static final _id_load = _class.instanceMethodId( + r"load", + r"(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;)V", + ); + + static final _load = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "EmojiCompat_MetadataRepoLoader__load") + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public abstract void load(androidx.emoji2.text.EmojiCompat.MetadataRepoLoaderCallback loaderCallback) /// @@ -740,7 +939,9 @@ class EmojiCompat_MetadataRepoLoader extends jni.JObject { void load( EmojiCompat_MetadataRepoLoaderCallback loaderCallback, ) { - _load(reference.pointer, loaderCallback.reference.pointer).check(); + _load(reference.pointer, _id_load as jni.JMethodIDPtr, + loaderCallback.reference.pointer) + .check(); } } @@ -784,27 +985,50 @@ class EmojiCompat_MetadataRepoLoaderCallback extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = jni.JClass.forName( + r"androidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback"); + /// The type which includes information such as the signature of this class. static const type = $EmojiCompat_MetadataRepoLoaderCallbackType(); - static final _new0 = jniLookup>( - "EmojiCompat_MetadataRepoLoaderCallback__new0") - .asFunction(); + static final _id_new0 = _class.constructorId( + r"()V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory EmojiCompat_MetadataRepoLoaderCallback() { return EmojiCompat_MetadataRepoLoaderCallback.fromReference( - _new0().reference); + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } - static final _onLoaded = jniLookup< + static final _id_onLoaded = _class.instanceMethodId( + r"onLoaded", + r"(Landroidx/emoji2/text/MetadataRepo;)V", + ); + + static final _onLoaded = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "EmojiCompat_MetadataRepoLoaderCallback__onLoaded") + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public abstract void onLoaded(androidx.emoji2.text.MetadataRepo metadataRepo) /// @@ -813,17 +1037,26 @@ class EmojiCompat_MetadataRepoLoaderCallback extends jni.JObject { void onLoaded( jni.JObject metadataRepo, ) { - _onLoaded(reference.pointer, metadataRepo.reference.pointer).check(); + _onLoaded(reference.pointer, _id_onLoaded as jni.JMethodIDPtr, + metadataRepo.reference.pointer) + .check(); } - static final _onFailed = jniLookup< + static final _id_onFailed = _class.instanceMethodId( + r"onFailed", + r"(Ljava/lang/Throwable;)V", + ); + + static final _onFailed = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "EmojiCompat_MetadataRepoLoaderCallback__onFailed") + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public abstract void onFailed(java.lang.Throwable throwable) /// @@ -832,7 +1065,9 @@ class EmojiCompat_MetadataRepoLoaderCallback extends jni.JObject { void onFailed( jni.JObject throwable, ) { - _onFailed(reference.pointer, throwable.reference.pointer).check(); + _onFailed(reference.pointer, _id_onFailed as jni.JMethodIDPtr, + throwable.reference.pointer) + .check(); } } @@ -874,6 +1109,9 @@ class EmojiCompat_ReplaceStrategy extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = + jni.JClass.forName(r"androidx/emoji2/text/EmojiCompat$ReplaceStrategy"); + /// The type which includes information such as the signature of this class. static const type = $EmojiCompat_ReplaceStrategyType(); } @@ -921,16 +1159,26 @@ class EmojiCompat_SpanFactory extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = + jni.JClass.forName(r"androidx/emoji2/text/EmojiCompat$SpanFactory"); + /// The type which includes information such as the signature of this class. static const type = $EmojiCompat_SpanFactoryType(); - static final _createSpan = jniLookup< + static final _id_createSpan = _class.instanceMethodId( + r"createSpan", + r"(Landroidx/emoji2/text/TypefaceEmojiRasterizer;)Landroidx/emoji2/text/EmojiSpan;", + ); + + static final _createSpan = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "EmojiCompat_SpanFactory__createSpan") + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public abstract androidx.emoji2.text.EmojiSpan createSpan(androidx.emoji2.text.TypefaceEmojiRasterizer rasterizer) /// The returned object must be released after use, by calling the [release] method. @@ -942,7 +1190,8 @@ class EmojiCompat_SpanFactory extends jni.JObject { jni.JObject createSpan( jni.JObject rasterizer, ) { - return _createSpan(reference.pointer, rasterizer.reference.pointer) + return _createSpan(reference.pointer, _id_createSpan as jni.JMethodIDPtr, + rasterizer.reference.pointer) .object(const jni.JObjectType()); } } @@ -1031,12 +1280,14 @@ class EmojiCompat extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = jni.JClass.forName(r"androidx/emoji2/text/EmojiCompat"); + /// The type which includes information such as the signature of this class. static const type = $EmojiCompatType(); - static final _get_EDITOR_INFO_METAVERSION_KEY = - jniLookup>( - "get_EmojiCompat__EDITOR_INFO_METAVERSION_KEY") - .asFunction(); + static final _id_EDITOR_INFO_METAVERSION_KEY = _class.staticFieldId( + r"EDITOR_INFO_METAVERSION_KEY", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String EDITOR_INFO_METAVERSION_KEY /// The returned object must be released after use, by calling the [release] method. @@ -1048,12 +1299,12 @@ class EmojiCompat extends jni.JObject { /// see whether the widget has the ability to display a certain emoji using /// \#hasEmojiGlyph(CharSequence, int). static jni.JString get EDITOR_INFO_METAVERSION_KEY => - _get_EDITOR_INFO_METAVERSION_KEY().object(const jni.JStringType()); + _id_EDITOR_INFO_METAVERSION_KEY.get(_class, const jni.JStringType()); - static final _get_EDITOR_INFO_REPLACE_ALL_KEY = - jniLookup>( - "get_EmojiCompat__EDITOR_INFO_REPLACE_ALL_KEY") - .asFunction(); + static final _id_EDITOR_INFO_REPLACE_ALL_KEY = _class.staticFieldId( + r"EDITOR_INFO_REPLACE_ALL_KEY", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String EDITOR_INFO_REPLACE_ALL_KEY /// The returned object must be released after use, by calling the [release] method. @@ -1061,7 +1312,7 @@ class EmojiCompat extends jni.JObject { /// Key in EditorInfo\#extras that represents EmojiCompat.Config\#setReplaceAll(boolean) configuration parameter. The key is added only if /// EmojiCompat is used by the widget. If exists, the value is a boolean. static jni.JString get EDITOR_INFO_REPLACE_ALL_KEY => - _get_EDITOR_INFO_REPLACE_ALL_KEY().object(const jni.JStringType()); + _id_EDITOR_INFO_REPLACE_ALL_KEY.get(_class, const jni.JStringType()); /// from: static public final int LOAD_STATE_DEFAULT /// @@ -1227,11 +1478,21 @@ class EmojiCompat extends jni.JObject { /// androidx.core.graphics.PaintCompat\#hasGlyph(Paint, String) for each emoji /// subsequence. static const EMOJI_FALLBACK = 2; - static final _init = jniLookup< - ffi - .NativeFunction)>>( - "EmojiCompat__init") - .asFunction)>(); + static final _id_init = _class.staticMethodId( + r"init", + r"(Landroid/content/Context;)Landroidx/emoji2/text/EmojiCompat;", + ); + + static final _init = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: static public androidx.emoji2.text.EmojiCompat init(android.content.Context context) /// The returned object must be released after use, by calling the [release] method. @@ -1254,15 +1515,28 @@ class EmojiCompat extends jni.JObject { static EmojiCompat init( jni.JObject context, ) { - return _init(context.reference.pointer).object(const $EmojiCompatType()); + return _init(_class.reference.pointer, _id_init as jni.JMethodIDPtr, + context.reference.pointer) + .object(const $EmojiCompatType()); } - static final _init1 = jniLookup< + static final _id_init1 = _class.staticMethodId( + r"init", + r"(Landroid/content/Context;Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;)Landroidx/emoji2/text/EmojiCompat;", + ); + + static final _init1 = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("EmojiCompat__init1") + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") .asFunction< - jni.JniResult Function( + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, ffi.Pointer, ffi.Pointer)>(); /// from: static public androidx.emoji2.text.EmojiCompat init(android.content.Context context, androidx.emoji2.text.DefaultEmojiCompatConfig.DefaultEmojiCompatConfigFactory defaultFactory) @@ -1273,15 +1547,26 @@ class EmojiCompat extends jni.JObject { jni.JObject context, DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory defaultFactory, ) { - return _init1(context.reference.pointer, defaultFactory.reference.pointer) + return _init1(_class.reference.pointer, _id_init1 as jni.JMethodIDPtr, + context.reference.pointer, defaultFactory.reference.pointer) .object(const $EmojiCompatType()); } - static final _init2 = jniLookup< - ffi - .NativeFunction)>>( - "EmojiCompat__init2") - .asFunction)>(); + static final _id_init2 = _class.staticMethodId( + r"init", + r"(Landroidx/emoji2/text/EmojiCompat$Config;)Landroidx/emoji2/text/EmojiCompat;", + ); + + static final _init2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: static public androidx.emoji2.text.EmojiCompat init(androidx.emoji2.text.EmojiCompat.Config config) /// The returned object must be released after use, by calling the [release] method. @@ -1295,13 +1580,27 @@ class EmojiCompat extends jni.JObject { static EmojiCompat init2( EmojiCompat_Config config, ) { - return _init2(config.reference.pointer).object(const $EmojiCompatType()); + return _init2(_class.reference.pointer, _id_init2 as jni.JMethodIDPtr, + config.reference.pointer) + .object(const $EmojiCompatType()); } - static final _isConfigured = - jniLookup>( - "EmojiCompat__isConfigured") - .asFunction(); + static final _id_isConfigured = _class.staticMethodId( + r"isConfigured", + r"()Z", + ); + + static final _isConfigured = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: static public boolean isConfigured() /// @@ -1315,14 +1614,26 @@ class EmojiCompat extends jni.JObject { /// font is still loading, or has failed to load. ///@return true if EmojiCompat has been successfully initialized. static bool isConfigured() { - return _isConfigured().boolean; + return _isConfigured( + _class.reference.pointer, _id_isConfigured as jni.JMethodIDPtr) + .boolean; } - static final _reset = jniLookup< - ffi - .NativeFunction)>>( - "EmojiCompat__reset") - .asFunction)>(); + static final _id_reset = _class.staticMethodId( + r"reset", + r"(Landroidx/emoji2/text/EmojiCompat$Config;)Landroidx/emoji2/text/EmojiCompat;", + ); + + static final _reset = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: static public androidx.emoji2.text.EmojiCompat reset(androidx.emoji2.text.EmojiCompat.Config config) /// The returned object must be released after use, by calling the [release] method. @@ -1333,14 +1644,26 @@ class EmojiCompat extends jni.JObject { static EmojiCompat reset( EmojiCompat_Config config, ) { - return _reset(config.reference.pointer).object(const $EmojiCompatType()); + return _reset(_class.reference.pointer, _id_reset as jni.JMethodIDPtr, + config.reference.pointer) + .object(const $EmojiCompatType()); } - static final _reset1 = jniLookup< - ffi - .NativeFunction)>>( - "EmojiCompat__reset1") - .asFunction)>(); + static final _id_reset1 = _class.staticMethodId( + r"reset", + r"(Landroidx/emoji2/text/EmojiCompat;)Landroidx/emoji2/text/EmojiCompat;", + ); + + static final _reset1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: static public androidx.emoji2.text.EmojiCompat reset(androidx.emoji2.text.EmojiCompat emojiCompat) /// The returned object must be released after use, by calling the [release] method. @@ -1350,14 +1673,25 @@ class EmojiCompat extends jni.JObject { static EmojiCompat reset1( EmojiCompat emojiCompat, ) { - return _reset1(emojiCompat.reference.pointer) + return _reset1(_class.reference.pointer, _id_reset1 as jni.JMethodIDPtr, + emojiCompat.reference.pointer) .object(const $EmojiCompatType()); } - static final _skipDefaultConfigurationLookup = - jniLookup>( - "EmojiCompat__skipDefaultConfigurationLookup") - .asFunction(); + static final _id_skipDefaultConfigurationLookup = _class.staticMethodId( + r"skipDefaultConfigurationLookup", + r"(Z)V", + ); + + static final _skipDefaultConfigurationLookup = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallStaticVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: static public void skipDefaultConfigurationLookup(boolean shouldSkip) /// @@ -1366,12 +1700,29 @@ class EmojiCompat extends jni.JObject { static void skipDefaultConfigurationLookup( bool shouldSkip, ) { - _skipDefaultConfigurationLookup(shouldSkip ? 1 : 0).check(); + _skipDefaultConfigurationLookup( + _class.reference.pointer, + _id_skipDefaultConfigurationLookup as jni.JMethodIDPtr, + shouldSkip ? 1 : 0) + .check(); } - static final _get0 = jniLookup>( - "EmojiCompat__get0") - .asFunction(); + static final _id_get0 = _class.staticMethodId( + r"get", + r"()Landroidx/emoji2/text/EmojiCompat;", + ); + + static final _get0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: static public androidx.emoji2.text.EmojiCompat get() /// The returned object must be released after use, by calling the [release] method. @@ -1381,14 +1732,26 @@ class EmojiCompat extends jni.JObject { ///@return EmojiCompat instance ///@throws IllegalStateException if called before \#init(EmojiCompat.Config) static EmojiCompat get0() { - return _get0().object(const $EmojiCompatType()); + return _get0(_class.reference.pointer, _id_get0 as jni.JMethodIDPtr) + .object(const $EmojiCompatType()); } - static final _load = jniLookup< - ffi - .NativeFunction)>>( - "EmojiCompat__load") - .asFunction)>(); + static final _id_load = _class.instanceMethodId( + r"load", + r"()V", + ); + + static final _load = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void load() /// @@ -1406,16 +1769,24 @@ class EmojiCompat extends jni.JObject { ///@throws IllegalStateException when Config\#setMetadataLoadStrategy(int) is not set /// to \#LOAD_STRATEGY_MANUAL void load() { - _load(reference.pointer).check(); + _load(reference.pointer, _id_load as jni.JMethodIDPtr).check(); } - static final _registerInitCallback = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("EmojiCompat__registerInitCallback") + static final _id_registerInitCallback = _class.instanceMethodId( + r"registerInitCallback", + r"(Landroidx/emoji2/text/EmojiCompat$InitCallback;)V", + ); + + static final _registerInitCallback = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void registerInitCallback(androidx.emoji2.text.EmojiCompat.InitCallback initCallback) /// @@ -1431,18 +1802,28 @@ class EmojiCompat extends jni.JObject { void registerInitCallback( EmojiCompat_InitCallback initCallback, ) { - _registerInitCallback(reference.pointer, initCallback.reference.pointer) + _registerInitCallback( + reference.pointer, + _id_registerInitCallback as jni.JMethodIDPtr, + initCallback.reference.pointer) .check(); } - static final _unregisterInitCallback = jniLookup< + static final _id_unregisterInitCallback = _class.instanceMethodId( + r"unregisterInitCallback", + r"(Landroidx/emoji2/text/EmojiCompat$InitCallback;)V", + ); + + static final _unregisterInitCallback = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "EmojiCompat__unregisterInitCallback") + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void unregisterInitCallback(androidx.emoji2.text.EmojiCompat.InitCallback initCallback) /// @@ -1451,15 +1832,29 @@ class EmojiCompat extends jni.JObject { void unregisterInitCallback( EmojiCompat_InitCallback initCallback, ) { - _unregisterInitCallback(reference.pointer, initCallback.reference.pointer) + _unregisterInitCallback( + reference.pointer, + _id_unregisterInitCallback as jni.JMethodIDPtr, + initCallback.reference.pointer) .check(); } - static final _getLoadState = jniLookup< - ffi - .NativeFunction)>>( - "EmojiCompat__getLoadState") - .asFunction)>(); + static final _id_getLoadState = _class.instanceMethodId( + r"getLoadState", + r"()I", + ); + + static final _getLoadState = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public int getLoadState() /// @@ -1468,46 +1863,80 @@ class EmojiCompat extends jni.JObject { ///@return one of \#LOAD_STATE_DEFAULT, \#LOAD_STATE_LOADING, /// \#LOAD_STATE_SUCCEEDED, \#LOAD_STATE_FAILED int getLoadState() { - return _getLoadState(reference.pointer).integer; + return _getLoadState( + reference.pointer, _id_getLoadState as jni.JMethodIDPtr) + .integer; } - static final _isEmojiSpanIndicatorEnabled = jniLookup< - ffi - .NativeFunction)>>( - "EmojiCompat__isEmojiSpanIndicatorEnabled") - .asFunction)>(); + static final _id_isEmojiSpanIndicatorEnabled = _class.instanceMethodId( + r"isEmojiSpanIndicatorEnabled", + r"()Z", + ); + + static final _isEmojiSpanIndicatorEnabled = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public boolean isEmojiSpanIndicatorEnabled() /// /// @return whether a background should be drawn for the emoji for debugging ///@hide bool isEmojiSpanIndicatorEnabled() { - return _isEmojiSpanIndicatorEnabled(reference.pointer).boolean; + return _isEmojiSpanIndicatorEnabled(reference.pointer, + _id_isEmojiSpanIndicatorEnabled as jni.JMethodIDPtr) + .boolean; } - static final _getEmojiSpanIndicatorColor = jniLookup< - ffi - .NativeFunction)>>( - "EmojiCompat__getEmojiSpanIndicatorColor") - .asFunction)>(); + static final _id_getEmojiSpanIndicatorColor = _class.instanceMethodId( + r"getEmojiSpanIndicatorColor", + r"()I", + ); - /// from: public int getEmojiSpanIndicatorColor() - /// + static final _getEmojiSpanIndicatorColor = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + + /// from: public int getEmojiSpanIndicatorColor() + /// /// @return color of background drawn if EmojiCompat\#isEmojiSpanIndicatorEnabled is true ///@hide int getEmojiSpanIndicatorColor() { - return _getEmojiSpanIndicatorColor(reference.pointer).integer; + return _getEmojiSpanIndicatorColor(reference.pointer, + _id_getEmojiSpanIndicatorColor as jni.JMethodIDPtr) + .integer; } - static final _getEmojiStart = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>("EmojiCompat__getEmojiStart") + static final _id_getEmojiStart = _class.instanceMethodId( + r"getEmojiStart", + r"(Ljava/lang/CharSequence;I)I", + ); + + static final _getEmojiStart = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer, ffi.Int64)>)>>( + "globalEnv_CallIntMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer, int)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int)>(); /// from: public int getEmojiStart(java.lang.CharSequence charSequence, int offset) /// @@ -1525,19 +1954,28 @@ class EmojiCompat extends jni.JObject { int offset, ) { return _getEmojiStart( - reference.pointer, charSequence.reference.pointer, offset) + reference.pointer, + _id_getEmojiStart as jni.JMethodIDPtr, + charSequence.reference.pointer, + offset) .integer; } - static final _getEmojiEnd = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>("EmojiCompat__getEmojiEnd") + static final _id_getEmojiEnd = _class.instanceMethodId( + r"getEmojiEnd", + r"(Ljava/lang/CharSequence;I)I", + ); + + static final _getEmojiEnd = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer, ffi.Int64)>)>>( + "globalEnv_CallIntMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer, int)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int)>(); /// from: public int getEmojiEnd(java.lang.CharSequence charSequence, int offset) /// @@ -1546,17 +1984,29 @@ class EmojiCompat extends jni.JObject { jni.JObject charSequence, int offset, ) { - return _getEmojiEnd( - reference.pointer, charSequence.reference.pointer, offset) + return _getEmojiEnd(reference.pointer, _id_getEmojiEnd as jni.JMethodIDPtr, + charSequence.reference.pointer, offset) .integer; } - static final _handleOnKeyDown = jniLookup< + static final _id_handleOnKeyDown = _class.staticMethodId( + r"handleOnKeyDown", + r"(Landroid/text/Editable;ILandroid/view/KeyEvent;)Z", + ); + + static final _handleOnKeyDown = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, ffi.Int32, - ffi.Pointer)>>("EmojiCompat__handleOnKeyDown") + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Int64, + ffi.Pointer + )>)>>("globalEnv_CallStaticBooleanMethod") .asFunction< - jni.JniResult Function( + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, ffi.Pointer, int, ffi.Pointer)>(); /// from: static public boolean handleOnKeyDown(android.text.Editable editable, int keyCode, android.view.KeyEvent event) @@ -1583,20 +2033,34 @@ class EmojiCompat extends jni.JObject { jni.JObject event, ) { return _handleOnKeyDown( - editable.reference.pointer, keyCode, event.reference.pointer) + _class.reference.pointer, + _id_handleOnKeyDown as jni.JMethodIDPtr, + editable.reference.pointer, + keyCode, + event.reference.pointer) .boolean; } - static final _handleDeleteSurroundingText = jniLookup< + static final _id_handleDeleteSurroundingText = _class.staticMethodId( + r"handleDeleteSurroundingText", + r"(Landroid/view/inputmethod/InputConnection;Landroid/text/Editable;IIZ)Z", + ); + + static final _handleDeleteSurroundingText = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Uint8)>>("EmojiCompat__handleDeleteSurroundingText") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Int64, + ffi.Int64, + ffi.Int64 + )>)>>("globalEnv_CallStaticBooleanMethod") .asFunction< - jni.JniResult Function( + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, ffi.Pointer, ffi.Pointer, int, int, int)>(); /// from: static public boolean handleDeleteSurroundingText(android.view.inputmethod.InputConnection inputConnection, android.text.Editable editable, int beforeLength, int afterLength, boolean inCodePoints) @@ -1623,6 +2087,8 @@ class EmojiCompat extends jni.JObject { bool inCodePoints, ) { return _handleDeleteSurroundingText( + _class.reference.pointer, + _id_handleDeleteSurroundingText as jni.JMethodIDPtr, inputConnection.reference.pointer, editable.reference.pointer, beforeLength, @@ -1631,13 +2097,21 @@ class EmojiCompat extends jni.JObject { .boolean; } - static final _hasEmojiGlyph = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("EmojiCompat__hasEmojiGlyph") + static final _id_hasEmojiGlyph = _class.instanceMethodId( + r"hasEmojiGlyph", + r"(Ljava/lang/CharSequence;)Z", + ); + + static final _hasEmojiGlyph = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallBooleanMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public boolean hasEmojiGlyph(java.lang.CharSequence sequence) /// @@ -1650,19 +2124,26 @@ class EmojiCompat extends jni.JObject { bool hasEmojiGlyph( jni.JObject sequence, ) { - return _hasEmojiGlyph(reference.pointer, sequence.reference.pointer) + return _hasEmojiGlyph(reference.pointer, + _id_hasEmojiGlyph as jni.JMethodIDPtr, sequence.reference.pointer) .boolean; } - static final _hasEmojiGlyph1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>("EmojiCompat__hasEmojiGlyph1") + static final _id_hasEmojiGlyph1 = _class.instanceMethodId( + r"hasEmojiGlyph", + r"(Ljava/lang/CharSequence;I)Z", + ); + + static final _hasEmojiGlyph1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer, ffi.Int64)>)>>( + "globalEnv_CallBooleanMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer, int)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int)>(); /// from: public boolean hasEmojiGlyph(java.lang.CharSequence sequence, int metadataVersion) /// @@ -1679,19 +2160,28 @@ class EmojiCompat extends jni.JObject { int metadataVersion, ) { return _hasEmojiGlyph1( - reference.pointer, sequence.reference.pointer, metadataVersion) + reference.pointer, + _id_hasEmojiGlyph1 as jni.JMethodIDPtr, + sequence.reference.pointer, + metadataVersion) .boolean; } - static final _getEmojiMatch = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>("EmojiCompat__getEmojiMatch") + static final _id_getEmojiMatch = _class.instanceMethodId( + r"getEmojiMatch", + r"(Ljava/lang/CharSequence;I)I", + ); + + static final _getEmojiMatch = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer, ffi.Int64)>)>>( + "globalEnv_CallIntMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer, int)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int)>(); /// from: public int getEmojiMatch(java.lang.CharSequence sequence, int metadataVersion) /// @@ -1711,17 +2201,28 @@ class EmojiCompat extends jni.JObject { int metadataVersion, ) { return _getEmojiMatch( - reference.pointer, sequence.reference.pointer, metadataVersion) + reference.pointer, + _id_getEmojiMatch as jni.JMethodIDPtr, + sequence.reference.pointer, + metadataVersion) .integer; } - static final _process = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("EmojiCompat__process") + static final _id_process = _class.instanceMethodId( + r"process", + r"(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;", + ); + + static final _process = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public java.lang.CharSequence process(java.lang.CharSequence charSequence) /// The returned object must be released after use, by calling the [release] method. @@ -1735,20 +2236,30 @@ class EmojiCompat extends jni.JObject { jni.JObject process( jni.JObject charSequence, ) { - return _process(reference.pointer, charSequence.reference.pointer) + return _process(reference.pointer, _id_process as jni.JMethodIDPtr, + charSequence.reference.pointer) .object(const jni.JObjectType()); } - static final _process1 = jniLookup< + static final _id_process1 = _class.instanceMethodId( + r"process", + r"(Ljava/lang/CharSequence;II)Ljava/lang/CharSequence;", + ); + + static final _process1 = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32)>>("EmojiCompat__process1") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Int64, + ffi.Int64 + )>)>>("globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer, int, int)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int, int)>(); /// from: public java.lang.CharSequence process(java.lang.CharSequence charSequence, int start, int end) /// The returned object must be released after use, by calling the [release] method. @@ -1781,22 +2292,31 @@ class EmojiCompat extends jni.JObject { int start, int end, ) { - return _process1( - reference.pointer, charSequence.reference.pointer, start, end) + return _process1(reference.pointer, _id_process1 as jni.JMethodIDPtr, + charSequence.reference.pointer, start, end) .object(const jni.JObjectType()); } - static final _process2 = jniLookup< + static final _id_process2 = _class.instanceMethodId( + r"process", + r"(Ljava/lang/CharSequence;III)Ljava/lang/CharSequence;", + ); + + static final _process2 = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Int32)>>("EmojiCompat__process2") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Int64, + ffi.Int64, + ffi.Int64 + )>)>>("globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer, int, int, int)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int, int, int)>(); /// from: public java.lang.CharSequence process(java.lang.CharSequence charSequence, int start, int end, int maxEmojiCount) /// The returned object must be released after use, by calling the [release] method. @@ -1833,23 +2353,32 @@ class EmojiCompat extends jni.JObject { int end, int maxEmojiCount, ) { - return _process2(reference.pointer, charSequence.reference.pointer, start, - end, maxEmojiCount) + return _process2(reference.pointer, _id_process2 as jni.JMethodIDPtr, + charSequence.reference.pointer, start, end, maxEmojiCount) .object(const jni.JObjectType()); } - static final _process3 = jniLookup< + static final _id_process3 = _class.instanceMethodId( + r"process", + r"(Ljava/lang/CharSequence;IIII)Ljava/lang/CharSequence;", + ); + + static final _process3 = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Int32, - ffi.Int32)>>("EmojiCompat__process3") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64 + )>)>>("globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - int, int, int, int)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int, int, int, int)>(); /// from: public java.lang.CharSequence process(java.lang.CharSequence charSequence, int start, int end, int maxEmojiCount, int replaceStrategy) /// The returned object must be released after use, by calling the [release] method. @@ -1891,16 +2420,33 @@ class EmojiCompat extends jni.JObject { int maxEmojiCount, int replaceStrategy, ) { - return _process3(reference.pointer, charSequence.reference.pointer, start, - end, maxEmojiCount, replaceStrategy) + return _process3( + reference.pointer, + _id_process3 as jni.JMethodIDPtr, + charSequence.reference.pointer, + start, + end, + maxEmojiCount, + replaceStrategy) .object(const jni.JObjectType()); } - static final _getAssetSignature = jniLookup< - ffi - .NativeFunction)>>( - "EmojiCompat__getAssetSignature") - .asFunction)>(); + static final _id_getAssetSignature = _class.instanceMethodId( + r"getAssetSignature", + r"()Ljava/lang/String;", + ); + + static final _getAssetSignature = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getAssetSignature() /// The returned object must be released after use, by calling the [release] method. @@ -1910,17 +2456,26 @@ class EmojiCompat extends jni.JObject { /// then previous executions. When used on devices running API 18 or below, returns empty string. ///@throws IllegalStateException if not initialized yet jni.JString getAssetSignature() { - return _getAssetSignature(reference.pointer) + return _getAssetSignature( + reference.pointer, _id_getAssetSignature as jni.JMethodIDPtr) .object(const jni.JStringType()); } - static final _updateEditorInfo = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("EmojiCompat__updateEditorInfo") + static final _id_updateEditorInfo = _class.instanceMethodId( + r"updateEditorInfo", + r"(Landroid/view/inputmethod/EditorInfo;)V", + ); + + static final _updateEditorInfo = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void updateEditorInfo(android.view.inputmethod.EditorInfo outAttrs) /// @@ -1942,7 +2497,11 @@ class EmojiCompat extends jni.JObject { void updateEditorInfo( jni.JObject outAttrs, ) { - _updateEditorInfo(reference.pointer, outAttrs.reference.pointer).check(); + _updateEditorInfo( + reference.pointer, + _id_updateEditorInfo as jni.JMethodIDPtr, + outAttrs.reference.pointer) + .check(); } } @@ -1987,14 +2546,26 @@ class DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory jni.JReference reference, ) : super.fromReference(reference); + static final _class = jni.JClass.forName( + r"androidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory"); + /// The type which includes information such as the signature of this class. static const type = $DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactoryType(); - static final _new0 = jniLookup< - ffi - .NativeFunction)>>( - "DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory__new0") - .asFunction)>(); + static final _id_new0 = _class.constructorId( + r"(Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper;)V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void (androidx.emoji2.text.DefaultEmojiCompatConfig.DefaultEmojiCompatConfigHelper helper) /// The returned object must be released after use, by calling the [release] method. @@ -2004,17 +2575,26 @@ class DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper helper, ) { return DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory - .fromReference(_new0(helper.reference.pointer).reference); + .fromReference(_new0(_class.reference.pointer, + _id_new0 as jni.JMethodIDPtr, helper.reference.pointer) + .reference); } - static final _create = jniLookup< + static final _id_create = _class.instanceMethodId( + r"create", + r"(Landroid/content/Context;)Landroidx/emoji2/text/EmojiCompat$Config;", + ); + + static final _create = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory__create") + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public androidx.emoji2.text.EmojiCompat.Config create(android.content.Context context) /// The returned object must be released after use, by calling the [release] method. @@ -2024,7 +2604,8 @@ class DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory EmojiCompat_Config create( jni.JObject context, ) { - return _create(reference.pointer, context.reference.pointer) + return _create(reference.pointer, _id_create as jni.JMethodIDPtr, + context.reference.pointer) .object(const $EmojiCompat_ConfigType()); } } @@ -2077,28 +2658,55 @@ class DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper jni.JReference reference, ) : super.fromReference(reference); + static final _class = jni.JClass.forName( + r"androidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper"); + /// The type which includes information such as the signature of this class. static const type = $DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelperType(); - static final _new0 = jniLookup>( - "DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__new0") - .asFunction(); + static final _id_new0 = _class.constructorId( + r"()V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper() { return DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper - .fromReference(_new0().reference); + .fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } - static final _getSigningSignatures = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>( - "DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__getSigningSignatures") + static final _id_getSigningSignatures = _class.instanceMethodId( + r"getSigningSignatures", + r"(Landroid/content/pm/PackageManager;Ljava/lang/String;)[Landroid/content/pm/Signature;", + ); + + static final _getSigningSignatures = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: public android.content.pm.Signature[] getSigningSignatures(android.content.pm.PackageManager packageManager, java.lang.String providerPackage) /// The returned object must be released after use, by calling the [release] method. @@ -2108,22 +2716,33 @@ class DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper jni.JObject packageManager, jni.JString providerPackage, ) { - return _getSigningSignatures(reference.pointer, - packageManager.reference.pointer, providerPackage.reference.pointer) + return _getSigningSignatures( + reference.pointer, + _id_getSigningSignatures as jni.JMethodIDPtr, + packageManager.reference.pointer, + providerPackage.reference.pointer) .object(const jni.JArrayType(jni.JObjectType())); } - static final _queryIntentContentProviders = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>( - "DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__queryIntentContentProviders") + static final _id_queryIntentContentProviders = _class.instanceMethodId( + r"queryIntentContentProviders", + r"(Landroid/content/pm/PackageManager;Landroid/content/Intent;I)Ljava/util/List;", + ); + + static final _queryIntentContentProviders = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Int64 + )>)>>("globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer, int)>(); /// from: public java.util.List queryIntentContentProviders(android.content.pm.PackageManager packageManager, android.content.Intent intent, int flags) /// The returned object must be released after use, by calling the [release] method. @@ -2134,19 +2753,30 @@ class DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper jni.JObject intent, int flags, ) { - return _queryIntentContentProviders(reference.pointer, - packageManager.reference.pointer, intent.reference.pointer, flags) + return _queryIntentContentProviders( + reference.pointer, + _id_queryIntentContentProviders as jni.JMethodIDPtr, + packageManager.reference.pointer, + intent.reference.pointer, + flags) .object(const jni.JListType(jni.JObjectType())); } - static final _getProviderInfo = jniLookup< + static final _id_getProviderInfo = _class.instanceMethodId( + r"getProviderInfo", + r"(Landroid/content/pm/ResolveInfo;)Landroid/content/pm/ProviderInfo;", + ); + + static final _getProviderInfo = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__getProviderInfo") + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public android.content.pm.ProviderInfo getProviderInfo(android.content.pm.ResolveInfo resolveInfo) /// The returned object must be released after use, by calling the [release] method. @@ -2157,7 +2787,10 @@ class DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper jni.JObject getProviderInfo( jni.JObject resolveInfo, ) { - return _getProviderInfo(reference.pointer, resolveInfo.reference.pointer) + return _getProviderInfo( + reference.pointer, + _id_getProviderInfo as jni.JMethodIDPtr, + resolveInfo.reference.pointer) .object(const jni.JObjectType()); } } @@ -2210,31 +2843,56 @@ class DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19 jni.JReference reference, ) : super.fromReference(reference); + static final _class = jni.JClass.forName( + r"androidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19"); + /// The type which includes information such as the signature of this class. static const type = $DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19Type(); - static final _new0 = jniLookup>( - "DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__new0") - .asFunction(); + static final _id_new0 = _class.constructorId( + r"()V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19() { return DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19 - .fromReference(_new0().reference); + .fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } - static final _queryIntentContentProviders = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>( - "DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__queryIntentContentProviders") + static final _id_queryIntentContentProviders = _class.instanceMethodId( + r"queryIntentContentProviders", + r"(Landroid/content/pm/PackageManager;Landroid/content/Intent;I)Ljava/util/List;", + ); + + static final _queryIntentContentProviders = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Int64 + )>)>>("globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer, int)>(); /// from: public java.util.List queryIntentContentProviders(android.content.pm.PackageManager packageManager, android.content.Intent intent, int flags) /// The returned object must be released after use, by calling the [release] method. @@ -2243,26 +2901,40 @@ class DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19 jni.JObject intent, int flags, ) { - return _queryIntentContentProviders(reference.pointer, - packageManager.reference.pointer, intent.reference.pointer, flags) + return _queryIntentContentProviders( + reference.pointer, + _id_queryIntentContentProviders as jni.JMethodIDPtr, + packageManager.reference.pointer, + intent.reference.pointer, + flags) .object(const jni.JListType(jni.JObjectType())); } - static final _getProviderInfo = jniLookup< + static final _id_getProviderInfo = _class.instanceMethodId( + r"getProviderInfo", + r"(Landroid/content/pm/ResolveInfo;)Landroid/content/pm/ProviderInfo;", + ); + + static final _getProviderInfo = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__getProviderInfo") + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public android.content.pm.ProviderInfo getProviderInfo(android.content.pm.ResolveInfo resolveInfo) /// The returned object must be released after use, by calling the [release] method. jni.JObject getProviderInfo( jni.JObject resolveInfo, ) { - return _getProviderInfo(reference.pointer, resolveInfo.reference.pointer) + return _getProviderInfo( + reference.pointer, + _id_getProviderInfo as jni.JMethodIDPtr, + resolveInfo.reference.pointer) .object(const jni.JObjectType()); } } @@ -2318,28 +2990,55 @@ class DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28 jni.JReference reference, ) : super.fromReference(reference); + static final _class = jni.JClass.forName( + r"androidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API28"); + /// The type which includes information such as the signature of this class. static const type = $DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28Type(); - static final _new0 = jniLookup>( - "DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28__new0") - .asFunction(); + static final _id_new0 = _class.constructorId( + r"()V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28() { return DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28 - .fromReference(_new0().reference); + .fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } - static final _getSigningSignatures1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>( - "DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28__getSigningSignatures1") + static final _id_getSigningSignatures1 = _class.instanceMethodId( + r"getSigningSignatures", + r"(Landroid/content/pm/PackageManager;Ljava/lang/String;)[Landroid/content/pm/Signature;", + ); + + static final _getSigningSignatures1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: public android.content.pm.Signature[] getSigningSignatures(android.content.pm.PackageManager packageManager, java.lang.String providerPackage) /// The returned object must be released after use, by calling the [release] method. @@ -2347,8 +3046,11 @@ class DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28 jni.JObject packageManager, jni.JString providerPackage, ) { - return _getSigningSignatures1(reference.pointer, - packageManager.reference.pointer, providerPackage.reference.pointer) + return _getSigningSignatures1( + reference.pointer, + _id_getSigningSignatures1 as jni.JMethodIDPtr, + packageManager.reference.pointer, + providerPackage.reference.pointer) .object(const jni.JArrayType(jni.JObjectType())); } } @@ -2433,13 +3135,26 @@ class DefaultEmojiCompatConfig extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = + jni.JClass.forName(r"androidx/emoji2/text/DefaultEmojiCompatConfig"); + /// The type which includes information such as the signature of this class. static const type = $DefaultEmojiCompatConfigType(); - static final _create = jniLookup< - ffi - .NativeFunction)>>( - "DefaultEmojiCompatConfig__create") - .asFunction)>(); + static final _id_create = _class.staticMethodId( + r"create", + r"(Landroid/content/Context;)Landroidx/emoji2/text/FontRequestEmojiCompatConfig;", + ); + + static final _create = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: static public androidx.emoji2.text.FontRequestEmojiCompatConfig create(android.content.Context context) /// The returned object must be released after use, by calling the [release] method. @@ -2456,7 +3171,9 @@ class DefaultEmojiCompatConfig extends jni.JObject { static jni.JObject create( jni.JObject context, ) { - return _create(context.reference.pointer).object(const jni.JObjectType()); + return _create(_class.reference.pointer, _id_create as jni.JMethodIDPtr, + context.reference.pointer) + .object(const jni.JObjectType()); } } @@ -2496,77 +3213,139 @@ class Build_Partition extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = jni.JClass.forName(r"android/os/Build$Partition"); + /// The type which includes information such as the signature of this class. static const type = $Build_PartitionType(); - static final _get_PARTITION_NAME_SYSTEM = - jniLookup>( - "get_Build_Partition__PARTITION_NAME_SYSTEM") - .asFunction(); + static final _id_PARTITION_NAME_SYSTEM = _class.staticFieldId( + r"PARTITION_NAME_SYSTEM", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String PARTITION_NAME_SYSTEM /// The returned object must be released after use, by calling the [release] method. static jni.JString get PARTITION_NAME_SYSTEM => - _get_PARTITION_NAME_SYSTEM().object(const jni.JStringType()); + _id_PARTITION_NAME_SYSTEM.get(_class, const jni.JStringType()); - static final _getName = jniLookup< - ffi - .NativeFunction)>>( - "Build_Partition__getName") - .asFunction)>(); + static final _id_getName = _class.instanceMethodId( + r"getName", + r"()Ljava/lang/String;", + ); + + static final _getName = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getName() /// The returned object must be released after use, by calling the [release] method. jni.JString getName() { - return _getName(reference.pointer).object(const jni.JStringType()); + return _getName(reference.pointer, _id_getName as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _getFingerprint = jniLookup< - ffi - .NativeFunction)>>( - "Build_Partition__getFingerprint") - .asFunction)>(); + static final _id_getFingerprint = _class.instanceMethodId( + r"getFingerprint", + r"()Ljava/lang/String;", + ); + + static final _getFingerprint = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getFingerprint() /// The returned object must be released after use, by calling the [release] method. jni.JString getFingerprint() { - return _getFingerprint(reference.pointer).object(const jni.JStringType()); + return _getFingerprint( + reference.pointer, _id_getFingerprint as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _getBuildTimeMillis = jniLookup< - ffi - .NativeFunction)>>( - "Build_Partition__getBuildTimeMillis") - .asFunction)>(); + static final _id_getBuildTimeMillis = _class.instanceMethodId( + r"getBuildTimeMillis", + r"()J", + ); + + static final _getBuildTimeMillis = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallLongMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public long getBuildTimeMillis() int getBuildTimeMillis() { - return _getBuildTimeMillis(reference.pointer).long; + return _getBuildTimeMillis( + reference.pointer, _id_getBuildTimeMillis as jni.JMethodIDPtr) + .long; } - static final _equals = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("Build_Partition__equals") + static final _id_equals = _class.instanceMethodId( + r"equals", + r"(Ljava/lang/Object;)Z", + ); + + static final _equals = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallBooleanMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public boolean equals(java.lang.Object object) bool equals( jni.JObject object, ) { - return _equals(reference.pointer, object.reference.pointer).boolean; + return _equals(reference.pointer, _id_equals as jni.JMethodIDPtr, + object.reference.pointer) + .boolean; } - static final _hashCode1 = jniLookup< - ffi - .NativeFunction)>>( - "Build_Partition__hashCode1") - .asFunction)>(); + static final _id_hashCode1 = _class.instanceMethodId( + r"hashCode", + r"()I", + ); + + static final _hashCode1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public int hashCode() int hashCode1() { - return _hashCode1(reference.pointer).integer; + return _hashCode1(reference.pointer, _id_hashCode1 as jni.JMethodIDPtr) + .integer; } } @@ -2605,120 +3384,137 @@ class Build_VERSION extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = jni.JClass.forName(r"android/os/Build$VERSION"); + /// The type which includes information such as the signature of this class. static const type = $Build_VERSIONType(); - static final _get_BASE_OS = - jniLookup>( - "get_Build_VERSION__BASE_OS") - .asFunction(); + static final _id_BASE_OS = _class.staticFieldId( + r"BASE_OS", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String BASE_OS /// The returned object must be released after use, by calling the [release] method. static jni.JString get BASE_OS => - _get_BASE_OS().object(const jni.JStringType()); + _id_BASE_OS.get(_class, const jni.JStringType()); - static final _get_CODENAME = - jniLookup>( - "get_Build_VERSION__CODENAME") - .asFunction(); + static final _id_CODENAME = _class.staticFieldId( + r"CODENAME", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String CODENAME /// The returned object must be released after use, by calling the [release] method. static jni.JString get CODENAME => - _get_CODENAME().object(const jni.JStringType()); + _id_CODENAME.get(_class, const jni.JStringType()); - static final _get_INCREMENTAL = - jniLookup>( - "get_Build_VERSION__INCREMENTAL") - .asFunction(); + static final _id_INCREMENTAL = _class.staticFieldId( + r"INCREMENTAL", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String INCREMENTAL /// The returned object must be released after use, by calling the [release] method. static jni.JString get INCREMENTAL => - _get_INCREMENTAL().object(const jni.JStringType()); + _id_INCREMENTAL.get(_class, const jni.JStringType()); - static final _get_MEDIA_PERFORMANCE_CLASS = - jniLookup>( - "get_Build_VERSION__MEDIA_PERFORMANCE_CLASS") - .asFunction(); + static final _id_MEDIA_PERFORMANCE_CLASS = _class.staticFieldId( + r"MEDIA_PERFORMANCE_CLASS", + r"I", + ); /// from: static public final int MEDIA_PERFORMANCE_CLASS static int get MEDIA_PERFORMANCE_CLASS => - _get_MEDIA_PERFORMANCE_CLASS().integer; + _id_MEDIA_PERFORMANCE_CLASS.get(_class, const jni.jintType()); - static final _get_PREVIEW_SDK_INT = - jniLookup>( - "get_Build_VERSION__PREVIEW_SDK_INT") - .asFunction(); + static final _id_PREVIEW_SDK_INT = _class.staticFieldId( + r"PREVIEW_SDK_INT", + r"I", + ); /// from: static public final int PREVIEW_SDK_INT - static int get PREVIEW_SDK_INT => _get_PREVIEW_SDK_INT().integer; + static int get PREVIEW_SDK_INT => + _id_PREVIEW_SDK_INT.get(_class, const jni.jintType()); - static final _get_RELEASE = - jniLookup>( - "get_Build_VERSION__RELEASE") - .asFunction(); + static final _id_RELEASE = _class.staticFieldId( + r"RELEASE", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String RELEASE /// The returned object must be released after use, by calling the [release] method. static jni.JString get RELEASE => - _get_RELEASE().object(const jni.JStringType()); + _id_RELEASE.get(_class, const jni.JStringType()); - static final _get_RELEASE_OR_CODENAME = - jniLookup>( - "get_Build_VERSION__RELEASE_OR_CODENAME") - .asFunction(); + static final _id_RELEASE_OR_CODENAME = _class.staticFieldId( + r"RELEASE_OR_CODENAME", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String RELEASE_OR_CODENAME /// The returned object must be released after use, by calling the [release] method. static jni.JString get RELEASE_OR_CODENAME => - _get_RELEASE_OR_CODENAME().object(const jni.JStringType()); + _id_RELEASE_OR_CODENAME.get(_class, const jni.JStringType()); - static final _get_RELEASE_OR_PREVIEW_DISPLAY = - jniLookup>( - "get_Build_VERSION__RELEASE_OR_PREVIEW_DISPLAY") - .asFunction(); + static final _id_RELEASE_OR_PREVIEW_DISPLAY = _class.staticFieldId( + r"RELEASE_OR_PREVIEW_DISPLAY", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String RELEASE_OR_PREVIEW_DISPLAY /// The returned object must be released after use, by calling the [release] method. static jni.JString get RELEASE_OR_PREVIEW_DISPLAY => - _get_RELEASE_OR_PREVIEW_DISPLAY().object(const jni.JStringType()); + _id_RELEASE_OR_PREVIEW_DISPLAY.get(_class, const jni.JStringType()); - static final _get_SDK = - jniLookup>( - "get_Build_VERSION__SDK") - .asFunction(); + static final _id_SDK = _class.staticFieldId( + r"SDK", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String SDK /// The returned object must be released after use, by calling the [release] method. - static jni.JString get SDK => _get_SDK().object(const jni.JStringType()); + static jni.JString get SDK => _id_SDK.get(_class, const jni.JStringType()); - static final _get_SDK_INT = - jniLookup>( - "get_Build_VERSION__SDK_INT") - .asFunction(); + static final _id_SDK_INT = _class.staticFieldId( + r"SDK_INT", + r"I", + ); /// from: static public final int SDK_INT - static int get SDK_INT => _get_SDK_INT().integer; + static int get SDK_INT => _id_SDK_INT.get(_class, const jni.jintType()); - static final _get_SECURITY_PATCH = - jniLookup>( - "get_Build_VERSION__SECURITY_PATCH") - .asFunction(); + static final _id_SECURITY_PATCH = _class.staticFieldId( + r"SECURITY_PATCH", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String SECURITY_PATCH /// The returned object must be released after use, by calling the [release] method. static jni.JString get SECURITY_PATCH => - _get_SECURITY_PATCH().object(const jni.JStringType()); + _id_SECURITY_PATCH.get(_class, const jni.JStringType()); - static final _new0 = jniLookup>( - "Build_VERSION__new0") - .asFunction(); + static final _id_new0 = _class.constructorId( + r"()V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory Build_VERSION() { - return Build_VERSION.fromReference(_new0().reference); + return Build_VERSION.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } } @@ -2757,6 +3553,8 @@ class Build_VERSION_CODES extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = jni.JClass.forName(r"android/os/Build$VERSION_CODES"); + /// The type which includes information such as the signature of this class. static const type = $Build_VERSION_CODESType(); @@ -2861,14 +3659,28 @@ class Build_VERSION_CODES extends jni.JObject { /// from: static public final int TIRAMISU static const TIRAMISU = 33; - static final _new0 = jniLookup>( - "Build_VERSION_CODES__new0") - .asFunction(); + static final _id_new0 = _class.constructorId( + r"()V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory Build_VERSION_CODES() { - return Build_VERSION_CODES.fromReference(_new0().reference); + return Build_VERSION_CODES.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } } @@ -2907,313 +3719,381 @@ class Build extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = jni.JClass.forName(r"android/os/Build"); + /// The type which includes information such as the signature of this class. static const type = $BuildType(); - static final _get_BOARD = - jniLookup>( - "get_Build__BOARD") - .asFunction(); + static final _id_BOARD = _class.staticFieldId( + r"BOARD", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String BOARD /// The returned object must be released after use, by calling the [release] method. - static jni.JString get BOARD => _get_BOARD().object(const jni.JStringType()); + static jni.JString get BOARD => + _id_BOARD.get(_class, const jni.JStringType()); - static final _get_BOOTLOADER = - jniLookup>( - "get_Build__BOOTLOADER") - .asFunction(); + static final _id_BOOTLOADER = _class.staticFieldId( + r"BOOTLOADER", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String BOOTLOADER /// The returned object must be released after use, by calling the [release] method. static jni.JString get BOOTLOADER => - _get_BOOTLOADER().object(const jni.JStringType()); + _id_BOOTLOADER.get(_class, const jni.JStringType()); - static final _get_BRAND = - jniLookup>( - "get_Build__BRAND") - .asFunction(); + static final _id_BRAND = _class.staticFieldId( + r"BRAND", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String BRAND /// The returned object must be released after use, by calling the [release] method. - static jni.JString get BRAND => _get_BRAND().object(const jni.JStringType()); + static jni.JString get BRAND => + _id_BRAND.get(_class, const jni.JStringType()); - static final _get_CPU_ABI = - jniLookup>( - "get_Build__CPU_ABI") - .asFunction(); + static final _id_CPU_ABI = _class.staticFieldId( + r"CPU_ABI", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String CPU_ABI /// The returned object must be released after use, by calling the [release] method. static jni.JString get CPU_ABI => - _get_CPU_ABI().object(const jni.JStringType()); + _id_CPU_ABI.get(_class, const jni.JStringType()); - static final _get_CPU_ABI2 = - jniLookup>( - "get_Build__CPU_ABI2") - .asFunction(); + static final _id_CPU_ABI2 = _class.staticFieldId( + r"CPU_ABI2", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String CPU_ABI2 /// The returned object must be released after use, by calling the [release] method. static jni.JString get CPU_ABI2 => - _get_CPU_ABI2().object(const jni.JStringType()); + _id_CPU_ABI2.get(_class, const jni.JStringType()); - static final _get_DEVICE = - jniLookup>( - "get_Build__DEVICE") - .asFunction(); + static final _id_DEVICE = _class.staticFieldId( + r"DEVICE", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String DEVICE /// The returned object must be released after use, by calling the [release] method. static jni.JString get DEVICE => - _get_DEVICE().object(const jni.JStringType()); + _id_DEVICE.get(_class, const jni.JStringType()); - static final _get_DISPLAY = - jniLookup>( - "get_Build__DISPLAY") - .asFunction(); + static final _id_DISPLAY = _class.staticFieldId( + r"DISPLAY", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String DISPLAY /// The returned object must be released after use, by calling the [release] method. static jni.JString get DISPLAY => - _get_DISPLAY().object(const jni.JStringType()); + _id_DISPLAY.get(_class, const jni.JStringType()); - static final _get_FINGERPRINT = - jniLookup>( - "get_Build__FINGERPRINT") - .asFunction(); + static final _id_FINGERPRINT = _class.staticFieldId( + r"FINGERPRINT", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String FINGERPRINT /// The returned object must be released after use, by calling the [release] method. static jni.JString get FINGERPRINT => - _get_FINGERPRINT().object(const jni.JStringType()); + _id_FINGERPRINT.get(_class, const jni.JStringType()); - static final _get_HARDWARE = - jniLookup>( - "get_Build__HARDWARE") - .asFunction(); + static final _id_HARDWARE = _class.staticFieldId( + r"HARDWARE", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String HARDWARE /// The returned object must be released after use, by calling the [release] method. static jni.JString get HARDWARE => - _get_HARDWARE().object(const jni.JStringType()); + _id_HARDWARE.get(_class, const jni.JStringType()); - static final _get_HOST = - jniLookup>("get_Build__HOST") - .asFunction(); + static final _id_HOST = _class.staticFieldId( + r"HOST", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String HOST /// The returned object must be released after use, by calling the [release] method. - static jni.JString get HOST => _get_HOST().object(const jni.JStringType()); + static jni.JString get HOST => _id_HOST.get(_class, const jni.JStringType()); - static final _get_ID = - jniLookup>("get_Build__ID") - .asFunction(); + static final _id_ID = _class.staticFieldId( + r"ID", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String ID /// The returned object must be released after use, by calling the [release] method. - static jni.JString get ID => _get_ID().object(const jni.JStringType()); + static jni.JString get ID => _id_ID.get(_class, const jni.JStringType()); - static final _get_MANUFACTURER = - jniLookup>( - "get_Build__MANUFACTURER") - .asFunction(); + static final _id_MANUFACTURER = _class.staticFieldId( + r"MANUFACTURER", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String MANUFACTURER /// The returned object must be released after use, by calling the [release] method. static jni.JString get MANUFACTURER => - _get_MANUFACTURER().object(const jni.JStringType()); + _id_MANUFACTURER.get(_class, const jni.JStringType()); - static final _get_MODEL = - jniLookup>( - "get_Build__MODEL") - .asFunction(); + static final _id_MODEL = _class.staticFieldId( + r"MODEL", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String MODEL /// The returned object must be released after use, by calling the [release] method. - static jni.JString get MODEL => _get_MODEL().object(const jni.JStringType()); + static jni.JString get MODEL => + _id_MODEL.get(_class, const jni.JStringType()); - static final _get_ODM_SKU = - jniLookup>( - "get_Build__ODM_SKU") - .asFunction(); + static final _id_ODM_SKU = _class.staticFieldId( + r"ODM_SKU", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String ODM_SKU /// The returned object must be released after use, by calling the [release] method. static jni.JString get ODM_SKU => - _get_ODM_SKU().object(const jni.JStringType()); + _id_ODM_SKU.get(_class, const jni.JStringType()); - static final _get_PRODUCT = - jniLookup>( - "get_Build__PRODUCT") - .asFunction(); + static final _id_PRODUCT = _class.staticFieldId( + r"PRODUCT", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String PRODUCT /// The returned object must be released after use, by calling the [release] method. static jni.JString get PRODUCT => - _get_PRODUCT().object(const jni.JStringType()); + _id_PRODUCT.get(_class, const jni.JStringType()); - static final _get_RADIO = - jniLookup>( - "get_Build__RADIO") - .asFunction(); + static final _id_RADIO = _class.staticFieldId( + r"RADIO", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String RADIO /// The returned object must be released after use, by calling the [release] method. - static jni.JString get RADIO => _get_RADIO().object(const jni.JStringType()); + static jni.JString get RADIO => + _id_RADIO.get(_class, const jni.JStringType()); - static final _get_SERIAL = - jniLookup>( - "get_Build__SERIAL") - .asFunction(); + static final _id_SERIAL = _class.staticFieldId( + r"SERIAL", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String SERIAL /// The returned object must be released after use, by calling the [release] method. static jni.JString get SERIAL => - _get_SERIAL().object(const jni.JStringType()); + _id_SERIAL.get(_class, const jni.JStringType()); - static final _get_SKU = - jniLookup>("get_Build__SKU") - .asFunction(); + static final _id_SKU = _class.staticFieldId( + r"SKU", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String SKU /// The returned object must be released after use, by calling the [release] method. - static jni.JString get SKU => _get_SKU().object(const jni.JStringType()); + static jni.JString get SKU => _id_SKU.get(_class, const jni.JStringType()); - static final _get_SOC_MANUFACTURER = - jniLookup>( - "get_Build__SOC_MANUFACTURER") - .asFunction(); + static final _id_SOC_MANUFACTURER = _class.staticFieldId( + r"SOC_MANUFACTURER", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String SOC_MANUFACTURER /// The returned object must be released after use, by calling the [release] method. static jni.JString get SOC_MANUFACTURER => - _get_SOC_MANUFACTURER().object(const jni.JStringType()); + _id_SOC_MANUFACTURER.get(_class, const jni.JStringType()); - static final _get_SOC_MODEL = - jniLookup>( - "get_Build__SOC_MODEL") - .asFunction(); + static final _id_SOC_MODEL = _class.staticFieldId( + r"SOC_MODEL", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String SOC_MODEL /// The returned object must be released after use, by calling the [release] method. static jni.JString get SOC_MODEL => - _get_SOC_MODEL().object(const jni.JStringType()); + _id_SOC_MODEL.get(_class, const jni.JStringType()); - static final _get_SUPPORTED_32_BIT_ABIS = - jniLookup>( - "get_Build__SUPPORTED_32_BIT_ABIS") - .asFunction(); + static final _id_SUPPORTED_32_BIT_ABIS = _class.staticFieldId( + r"SUPPORTED_32_BIT_ABIS", + r"[Ljava/lang/String;", + ); /// from: static public final java.lang.String[] SUPPORTED_32_BIT_ABIS /// The returned object must be released after use, by calling the [release] method. static jni.JArray get SUPPORTED_32_BIT_ABIS => - _get_SUPPORTED_32_BIT_ABIS() - .object(const jni.JArrayType(jni.JStringType())); + _id_SUPPORTED_32_BIT_ABIS.get( + _class, const jni.JArrayType(jni.JStringType())); - static final _get_SUPPORTED_64_BIT_ABIS = - jniLookup>( - "get_Build__SUPPORTED_64_BIT_ABIS") - .asFunction(); + static final _id_SUPPORTED_64_BIT_ABIS = _class.staticFieldId( + r"SUPPORTED_64_BIT_ABIS", + r"[Ljava/lang/String;", + ); /// from: static public final java.lang.String[] SUPPORTED_64_BIT_ABIS /// The returned object must be released after use, by calling the [release] method. static jni.JArray get SUPPORTED_64_BIT_ABIS => - _get_SUPPORTED_64_BIT_ABIS() - .object(const jni.JArrayType(jni.JStringType())); + _id_SUPPORTED_64_BIT_ABIS.get( + _class, const jni.JArrayType(jni.JStringType())); - static final _get_SUPPORTED_ABIS = - jniLookup>( - "get_Build__SUPPORTED_ABIS") - .asFunction(); + static final _id_SUPPORTED_ABIS = _class.staticFieldId( + r"SUPPORTED_ABIS", + r"[Ljava/lang/String;", + ); /// from: static public final java.lang.String[] SUPPORTED_ABIS /// The returned object must be released after use, by calling the [release] method. static jni.JArray get SUPPORTED_ABIS => - _get_SUPPORTED_ABIS().object(const jni.JArrayType(jni.JStringType())); + _id_SUPPORTED_ABIS.get(_class, const jni.JArrayType(jni.JStringType())); - static final _get_TAGS = - jniLookup>("get_Build__TAGS") - .asFunction(); + static final _id_TAGS = _class.staticFieldId( + r"TAGS", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String TAGS /// The returned object must be released after use, by calling the [release] method. - static jni.JString get TAGS => _get_TAGS().object(const jni.JStringType()); + static jni.JString get TAGS => _id_TAGS.get(_class, const jni.JStringType()); - static final _get_TIME = - jniLookup>("get_Build__TIME") - .asFunction(); + static final _id_TIME = _class.staticFieldId( + r"TIME", + r"J", + ); /// from: static public final long TIME - static int get TIME => _get_TIME().long; + static int get TIME => _id_TIME.get(_class, const jni.jlongType()); - static final _get_TYPE = - jniLookup>("get_Build__TYPE") - .asFunction(); + static final _id_TYPE = _class.staticFieldId( + r"TYPE", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String TYPE /// The returned object must be released after use, by calling the [release] method. - static jni.JString get TYPE => _get_TYPE().object(const jni.JStringType()); + static jni.JString get TYPE => _id_TYPE.get(_class, const jni.JStringType()); - static final _get_UNKNOWN = - jniLookup>( - "get_Build__UNKNOWN") - .asFunction(); + static final _id_UNKNOWN = _class.staticFieldId( + r"UNKNOWN", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String UNKNOWN /// The returned object must be released after use, by calling the [release] method. static jni.JString get UNKNOWN => - _get_UNKNOWN().object(const jni.JStringType()); + _id_UNKNOWN.get(_class, const jni.JStringType()); - static final _get_USER = - jniLookup>("get_Build__USER") - .asFunction(); + static final _id_USER = _class.staticFieldId( + r"USER", + r"Ljava/lang/String;", + ); /// from: static public final java.lang.String USER /// The returned object must be released after use, by calling the [release] method. - static jni.JString get USER => _get_USER().object(const jni.JStringType()); + static jni.JString get USER => _id_USER.get(_class, const jni.JStringType()); - static final _new0 = - jniLookup>("Build__new0") - .asFunction(); + static final _id_new0 = _class.constructorId( + r"()V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory Build() { - return Build.fromReference(_new0().reference); + return Build.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } - static final _getSerial = - jniLookup>( - "Build__getSerial") - .asFunction(); + static final _id_getSerial = _class.staticMethodId( + r"getSerial", + r"()Ljava/lang/String;", + ); + + static final _getSerial = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: static public java.lang.String getSerial() /// The returned object must be released after use, by calling the [release] method. static jni.JString getSerial() { - return _getSerial().object(const jni.JStringType()); + return _getSerial( + _class.reference.pointer, _id_getSerial as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _getFingerprintedPartitions = - jniLookup>( - "Build__getFingerprintedPartitions") - .asFunction(); + static final _id_getFingerprintedPartitions = _class.staticMethodId( + r"getFingerprintedPartitions", + r"()Ljava/util/List;", + ); + + static final _getFingerprintedPartitions = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: static public java.util.List getFingerprintedPartitions() /// The returned object must be released after use, by calling the [release] method. static jni.JList getFingerprintedPartitions() { - return _getFingerprintedPartitions() + return _getFingerprintedPartitions(_class.reference.pointer, + _id_getFingerprintedPartitions as jni.JMethodIDPtr) .object(const jni.JListType($Build_PartitionType())); } - static final _getRadioVersion = - jniLookup>( - "Build__getRadioVersion") - .asFunction(); + static final _id_getRadioVersion = _class.staticMethodId( + r"getRadioVersion", + r"()Ljava/lang/String;", + ); + + static final _getRadioVersion = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: static public java.lang.String getRadioVersion() /// The returned object must be released after use, by calling the [release] method. static jni.JString getRadioVersion() { - return _getRadioVersion().object(const jni.JStringType()); + return _getRadioVersion( + _class.reference.pointer, _id_getRadioVersion as jni.JMethodIDPtr) + .object(const jni.JStringType()); } } @@ -3257,6 +4137,8 @@ class HashMap<$K extends jni.JObject, $V extends jni.JObject> jni.JReference reference, ) : super.fromReference(reference); + static final _class = jni.JClass.forName(r"java/util/HashMap"); + /// The type which includes information such as the signature of this class. static $HashMapType<$K, $V> type<$K extends jni.JObject, $V extends jni.JObject>( @@ -3269,10 +4151,17 @@ class HashMap<$K extends jni.JObject, $V extends jni.JObject> ); } - static final _new0 = jniLookup< - ffi.NativeFunction>( - "HashMap__new0") - .asFunction(); + static final _id_new0 = _class.constructorId( + r"(IF)V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64, ffi.Double)>)>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int, double)>(); /// from: public void (int i, float f) /// The returned object must be released after use, by calling the [release] method. @@ -3282,13 +4171,24 @@ class HashMap<$K extends jni.JObject, $V extends jni.JObject> required jni.JObjType<$K> K, required jni.JObjType<$V> V, }) { - return HashMap.fromReference(K, V, _new0(i, f).reference); + return HashMap.fromReference( + K, + V, + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr, i, f) + .reference); } - static final _new1 = - jniLookup>( - "HashMap__new1") - .asFunction(); + static final _id_new1 = _class.constructorId( + r"(I)V", + ); + + static final _new1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: public void (int i) /// The returned object must be released after use, by calling the [release] method. @@ -3297,12 +4197,28 @@ class HashMap<$K extends jni.JObject, $V extends jni.JObject> required jni.JObjType<$K> K, required jni.JObjType<$V> V, }) { - return HashMap.fromReference(K, V, _new1(i).reference); + return HashMap.fromReference( + K, + V, + _new1(_class.reference.pointer, _id_new1 as jni.JMethodIDPtr, i) + .reference); } - static final _new2 = - jniLookup>("HashMap__new2") - .asFunction(); + static final _id_new2 = _class.constructorId( + r"()V", + ); + + static final _new2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void () /// The returned object must be released after use, by calling the [release] method. @@ -3310,13 +4226,27 @@ class HashMap<$K extends jni.JObject, $V extends jni.JObject> required jni.JObjType<$K> K, required jni.JObjType<$V> V, }) { - return HashMap.fromReference(K, V, _new2().reference); + return HashMap.fromReference( + K, + V, + _new2(_class.reference.pointer, _id_new2 as jni.JMethodIDPtr) + .reference); } - static final _new3 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer)>>("HashMap__new3") - .asFunction)>(); + static final _id_new3 = _class.constructorId( + r"(Ljava/util/Map;)V", + ); + + static final _new3 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void (java.util.Map map) /// The returned object must be released after use, by calling the [release] method. @@ -3331,70 +4261,127 @@ class HashMap<$K extends jni.JObject, $V extends jni.JObject> V ??= jni.lowestCommonSuperType([ (map.$type as jni.JMapType).V, ]) as jni.JObjType<$V>; - return HashMap.fromReference(K, V, _new3(map.reference.pointer).reference); + return HashMap.fromReference( + K, + V, + _new3(_class.reference.pointer, _id_new3 as jni.JMethodIDPtr, + map.reference.pointer) + .reference); } - static final _size = jniLookup< + static final _id_size = _class.instanceMethodId( + r"size", + r"()I", + ); + + static final _size = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer)>>("HashMap__size") - .asFunction)>(); + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public int size() int size() { - return _size(reference.pointer).integer; + return _size(reference.pointer, _id_size as jni.JMethodIDPtr).integer; } - static final _isEmpty = jniLookup< - ffi - .NativeFunction)>>( - "HashMap__isEmpty") - .asFunction)>(); + static final _id_isEmpty = _class.instanceMethodId( + r"isEmpty", + r"()Z", + ); + + static final _isEmpty = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public boolean isEmpty() bool isEmpty() { - return _isEmpty(reference.pointer).boolean; + return _isEmpty(reference.pointer, _id_isEmpty as jni.JMethodIDPtr).boolean; } - static final _get0 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("HashMap__get0") + static final _id_get0 = _class.instanceMethodId( + r"get", + r"(Ljava/lang/Object;)Ljava/lang/Object;", + ); + + static final _get0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public V get(java.lang.Object object) /// The returned object must be released after use, by calling the [release] method. $V get0( jni.JObject object, ) { - return _get0(reference.pointer, object.reference.pointer).object(V); + return _get0(reference.pointer, _id_get0 as jni.JMethodIDPtr, + object.reference.pointer) + .object(V); } - static final _containsKey = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("HashMap__containsKey") + static final _id_containsKey = _class.instanceMethodId( + r"containsKey", + r"(Ljava/lang/Object;)Z", + ); + + static final _containsKey = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallBooleanMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public boolean containsKey(java.lang.Object object) bool containsKey( jni.JObject object, ) { - return _containsKey(reference.pointer, object.reference.pointer).boolean; + return _containsKey(reference.pointer, _id_containsKey as jni.JMethodIDPtr, + object.reference.pointer) + .boolean; } - static final _put = jniLookup< + static final _id_put = _class.instanceMethodId( + r"put", + r"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", + ); + + static final _put = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("HashMap__put") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: public V put(K object, V object1) /// The returned object must be released after use, by calling the [release] method. @@ -3402,111 +4389,199 @@ class HashMap<$K extends jni.JObject, $V extends jni.JObject> $K object, $V object1, ) { - return _put(reference.pointer, object.reference.pointer, - object1.reference.pointer) + return _put(reference.pointer, _id_put as jni.JMethodIDPtr, + object.reference.pointer, object1.reference.pointer) .object(V); } - static final _putAll = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("HashMap__putAll") + static final _id_putAll = _class.instanceMethodId( + r"putAll", + r"(Ljava/util/Map;)V", + ); + + static final _putAll = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void putAll(java.util.Map map) void putAll( jni.JMap<$K, $V> map, ) { - _putAll(reference.pointer, map.reference.pointer).check(); + _putAll(reference.pointer, _id_putAll as jni.JMethodIDPtr, + map.reference.pointer) + .check(); } - static final _remove = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("HashMap__remove") + static final _id_remove = _class.instanceMethodId( + r"remove", + r"(Ljava/lang/Object;)Ljava/lang/Object;", + ); + + static final _remove = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public V remove(java.lang.Object object) /// The returned object must be released after use, by calling the [release] method. $V remove( jni.JObject object, ) { - return _remove(reference.pointer, object.reference.pointer).object(V); + return _remove(reference.pointer, _id_remove as jni.JMethodIDPtr, + object.reference.pointer) + .object(V); } - static final _clear = jniLookup< + static final _id_clear = _class.instanceMethodId( + r"clear", + r"()V", + ); + + static final _clear = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer)>>("HashMap__clear") - .asFunction)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void clear() void clear() { - _clear(reference.pointer).check(); + _clear(reference.pointer, _id_clear as jni.JMethodIDPtr).check(); } - static final _containsValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("HashMap__containsValue") + static final _id_containsValue = _class.instanceMethodId( + r"containsValue", + r"(Ljava/lang/Object;)Z", + ); + + static final _containsValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallBooleanMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public boolean containsValue(java.lang.Object object) bool containsValue( jni.JObject object, ) { - return _containsValue(reference.pointer, object.reference.pointer).boolean; + return _containsValue(reference.pointer, + _id_containsValue as jni.JMethodIDPtr, object.reference.pointer) + .boolean; } - static final _keySet = jniLookup< + static final _id_keySet = _class.instanceMethodId( + r"keySet", + r"()Ljava/util/Set;", + ); + + static final _keySet = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer)>>("HashMap__keySet") - .asFunction)>(); + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.util.Set keySet() /// The returned object must be released after use, by calling the [release] method. jni.JSet<$K> keySet() { - return _keySet(reference.pointer).object(jni.JSetType(K)); + return _keySet(reference.pointer, _id_keySet as jni.JMethodIDPtr) + .object(jni.JSetType(K)); } - static final _values = jniLookup< + static final _id_values = _class.instanceMethodId( + r"values", + r"()Ljava/util/Collection;", + ); + + static final _values = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer)>>("HashMap__values") - .asFunction)>(); + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.util.Collection values() /// The returned object must be released after use, by calling the [release] method. jni.JObject values() { - return _values(reference.pointer).object(const jni.JObjectType()); + return _values(reference.pointer, _id_values as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } - static final _entrySet = jniLookup< - ffi - .NativeFunction)>>( - "HashMap__entrySet") - .asFunction)>(); + static final _id_entrySet = _class.instanceMethodId( + r"entrySet", + r"()Ljava/util/Set;", + ); + + static final _entrySet = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.util.Set entrySet() /// The returned object must be released after use, by calling the [release] method. jni.JSet entrySet() { - return _entrySet(reference.pointer) + return _entrySet(reference.pointer, _id_entrySet as jni.JMethodIDPtr) .object(const jni.JSetType(jni.JObjectType())); } - static final _getOrDefault = jniLookup< + static final _id_getOrDefault = _class.instanceMethodId( + r"getOrDefault", + r"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", + ); + + static final _getOrDefault = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("HashMap__getOrDefault") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: public V getOrDefault(java.lang.Object object, V object1) /// The returned object must be released after use, by calling the [release] method. @@ -3514,20 +4589,32 @@ class HashMap<$K extends jni.JObject, $V extends jni.JObject> jni.JObject object, $V object1, ) { - return _getOrDefault(reference.pointer, object.reference.pointer, + return _getOrDefault( + reference.pointer, + _id_getOrDefault as jni.JMethodIDPtr, + object.reference.pointer, object1.reference.pointer) .object(V); } - static final _putIfAbsent = jniLookup< + static final _id_putIfAbsent = _class.instanceMethodId( + r"putIfAbsent", + r"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", + ); + + static final _putIfAbsent = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("HashMap__putIfAbsent") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: public V putIfAbsent(K object, V object1) /// The returned object must be released after use, by calling the [release] method. @@ -3535,41 +4622,63 @@ class HashMap<$K extends jni.JObject, $V extends jni.JObject> $K object, $V object1, ) { - return _putIfAbsent(reference.pointer, object.reference.pointer, - object1.reference.pointer) + return _putIfAbsent(reference.pointer, _id_putIfAbsent as jni.JMethodIDPtr, + object.reference.pointer, object1.reference.pointer) .object(V); } - static final _remove1 = jniLookup< + static final _id_remove1 = _class.instanceMethodId( + r"remove", + r"(Ljava/lang/Object;Ljava/lang/Object;)Z", + ); + + static final _remove1 = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("HashMap__remove1") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallBooleanMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: public boolean remove(java.lang.Object object, java.lang.Object object1) bool remove1( jni.JObject object, jni.JObject object1, ) { - return _remove1(reference.pointer, object.reference.pointer, - object1.reference.pointer) + return _remove1(reference.pointer, _id_remove1 as jni.JMethodIDPtr, + object.reference.pointer, object1.reference.pointer) .boolean; } - static final _replace = jniLookup< + static final _id_replace = _class.instanceMethodId( + r"replace", + r"(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z", + ); + + static final _replace = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("HashMap__replace") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallBooleanMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); /// from: public boolean replace(K object, V object1, V object2) bool replace( @@ -3577,20 +4686,33 @@ class HashMap<$K extends jni.JObject, $V extends jni.JObject> $V object1, $V object2, ) { - return _replace(reference.pointer, object.reference.pointer, - object1.reference.pointer, object2.reference.pointer) + return _replace( + reference.pointer, + _id_replace as jni.JMethodIDPtr, + object.reference.pointer, + object1.reference.pointer, + object2.reference.pointer) .boolean; } - static final _replace1 = jniLookup< + static final _id_replace1 = _class.instanceMethodId( + r"replace", + r"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", + ); + + static final _replace1 = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("HashMap__replace1") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: public V replace(K object, V object1) /// The returned object must be released after use, by calling the [release] method. @@ -3598,20 +4720,29 @@ class HashMap<$K extends jni.JObject, $V extends jni.JObject> $K object, $V object1, ) { - return _replace1(reference.pointer, object.reference.pointer, - object1.reference.pointer) + return _replace1(reference.pointer, _id_replace1 as jni.JMethodIDPtr, + object.reference.pointer, object1.reference.pointer) .object(V); } - static final _computeIfAbsent = jniLookup< + static final _id_computeIfAbsent = _class.instanceMethodId( + r"computeIfAbsent", + r"(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;", + ); + + static final _computeIfAbsent = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("HashMap__computeIfAbsent") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: public V computeIfAbsent(K object, java.util.function.Function function) /// The returned object must be released after use, by calling the [release] method. @@ -3619,20 +4750,32 @@ class HashMap<$K extends jni.JObject, $V extends jni.JObject> $K object, jni.JObject function, ) { - return _computeIfAbsent(reference.pointer, object.reference.pointer, + return _computeIfAbsent( + reference.pointer, + _id_computeIfAbsent as jni.JMethodIDPtr, + object.reference.pointer, function.reference.pointer) .object(V); } - static final _computeIfPresent = jniLookup< + static final _id_computeIfPresent = _class.instanceMethodId( + r"computeIfPresent", + r"(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;", + ); + + static final _computeIfPresent = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("HashMap__computeIfPresent") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: public V computeIfPresent(K object, java.util.function.BiFunction biFunction) /// The returned object must be released after use, by calling the [release] method. @@ -3640,20 +4783,32 @@ class HashMap<$K extends jni.JObject, $V extends jni.JObject> $K object, jni.JObject biFunction, ) { - return _computeIfPresent(reference.pointer, object.reference.pointer, + return _computeIfPresent( + reference.pointer, + _id_computeIfPresent as jni.JMethodIDPtr, + object.reference.pointer, biFunction.reference.pointer) .object(V); } - static final _compute = jniLookup< + static final _id_compute = _class.instanceMethodId( + r"compute", + r"(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;", + ); + + static final _compute = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("HashMap__compute") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: public V compute(K object, java.util.function.BiFunction biFunction) /// The returned object must be released after use, by calling the [release] method. @@ -3661,21 +4816,34 @@ class HashMap<$K extends jni.JObject, $V extends jni.JObject> $K object, jni.JObject biFunction, ) { - return _compute(reference.pointer, object.reference.pointer, - biFunction.reference.pointer) + return _compute(reference.pointer, _id_compute as jni.JMethodIDPtr, + object.reference.pointer, biFunction.reference.pointer) .object(V); } - static final _merge = jniLookup< + static final _id_merge = _class.instanceMethodId( + r"merge", + r"(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;", + ); + + static final _merge = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("HashMap__merge") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); /// from: public V merge(K object, V object1, java.util.function.BiFunction biFunction) /// The returned object must be released after use, by calling the [release] method. @@ -3684,50 +4852,87 @@ class HashMap<$K extends jni.JObject, $V extends jni.JObject> $V object1, jni.JObject biFunction, ) { - return _merge(reference.pointer, object.reference.pointer, - object1.reference.pointer, biFunction.reference.pointer) + return _merge( + reference.pointer, + _id_merge as jni.JMethodIDPtr, + object.reference.pointer, + object1.reference.pointer, + biFunction.reference.pointer) .object(V); } - static final _forEach = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("HashMap__forEach") + static final _id_forEach = _class.instanceMethodId( + r"forEach", + r"(Ljava/util/function/BiConsumer;)V", + ); + + static final _forEach = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void forEach(java.util.function.BiConsumer biConsumer) void forEach( jni.JObject biConsumer, ) { - _forEach(reference.pointer, biConsumer.reference.pointer).check(); + _forEach(reference.pointer, _id_forEach as jni.JMethodIDPtr, + biConsumer.reference.pointer) + .check(); } - static final _replaceAll = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("HashMap__replaceAll") + static final _id_replaceAll = _class.instanceMethodId( + r"replaceAll", + r"(Ljava/util/function/BiFunction;)V", + ); + + static final _replaceAll = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void replaceAll(java.util.function.BiFunction biFunction) void replaceAll( jni.JObject biFunction, ) { - _replaceAll(reference.pointer, biFunction.reference.pointer).check(); + _replaceAll(reference.pointer, _id_replaceAll as jni.JMethodIDPtr, + biFunction.reference.pointer) + .check(); } - static final _clone = jniLookup< + static final _id_clone = _class.instanceMethodId( + r"clone", + r"()Ljava/lang/Object;", + ); + + static final _clone = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer)>>("HashMap__clone") - .asFunction)>(); + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.Object clone() /// The returned object must be released after use, by calling the [release] method. jni.JObject clone() { - return _clone(reference.pointer).object(const jni.JObjectType()); + return _clone(reference.pointer, _id_clone as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } } @@ -3775,14 +4980,29 @@ class AndroidUtils extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = + jni.JClass.forName(r"com/example/in_app_java/AndroidUtils"); + /// The type which includes information such as the signature of this class. static const type = $AndroidUtilsType(); - static final _showToast = jniLookup< + static final _id_showToast = _class.staticMethodId( + r"showToast", + r"(Landroid/app/Activity;Ljava/lang/CharSequence;I)V", + ); + + static final _showToast = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>("AndroidUtils__showToast") + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Int64 + )>)>>("globalEnv_CallStaticVoidMethod") .asFunction< - jni.JniResult Function( + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, ffi.Pointer, ffi.Pointer, int)>(); /// from: static public void showToast(android.app.Activity mainActivity, java.lang.CharSequence text, int duration) @@ -3791,7 +5011,8 @@ class AndroidUtils extends jni.JObject { jni.JObject text, int duration, ) { - _showToast(mainActivity.reference.pointer, text.reference.pointer, duration) + _showToast(_class.reference.pointer, _id_showToast as jni.JMethodIDPtr, + mainActivity.reference.pointer, text.reference.pointer, duration) .check(); } } diff --git a/pkgs/jnigen/example/in_app_java/src/android_utils/.clang-format b/pkgs/jnigen/example/in_app_java/src/android_utils/.clang-format deleted file mode 100644 index a256c2f09..000000000 --- a/pkgs/jnigen/example/in_app_java/src/android_utils/.clang-format +++ /dev/null @@ -1,15 +0,0 @@ -# From dart SDK: https://github.com/dart-lang/sdk/blob/main/.clang-format - -# Defines the Chromium style for automatic reformatting. -# http://clang.llvm.org/docs/ClangFormatStyleOptions.html -BasedOnStyle: Chromium - -# clang-format doesn't seem to do a good job of this for longer comments. -ReflowComments: 'false' - -# We have lots of these. Though we need to put them all in curly braces, -# clang-format can't do that. -AllowShortIfStatementsOnASingleLine: 'true' - -# Put escaped newlines into the rightmost column. -AlignEscapedNewlinesLeft: false diff --git a/pkgs/jnigen/example/in_app_java/src/android_utils/CMakeLists.txt b/pkgs/jnigen/example/in_app_java/src/android_utils/CMakeLists.txt deleted file mode 100644 index 0c47c280c..000000000 --- a/pkgs/jnigen/example/in_app_java/src/android_utils/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# jni_native_build (Build with jni:setup. Do not delete this line.) - -# The Flutter tooling requires that developers have CMake 3.10 or later -# installed. You should not increase this version, as doing so will cause -# the plugin to fail to compile for some customers of the plugin. -cmake_minimum_required(VERSION 3.10) - -project(android_utils VERSION 0.0.1 LANGUAGES C) - -add_library(android_utils SHARED - "./android_utils.c" -) - -set_target_properties(android_utils PROPERTIES - OUTPUT_NAME "android_utils" -) - -target_compile_definitions(android_utils PUBLIC DART_SHARED_LIB) - -if(WIN32) - set_target_properties(${TARGET_NAME} PROPERTIES - LINK_FLAGS "/DELAYLOAD:jvm.dll") -endif() - -if (ANDROID) - target_link_libraries(android_utils log) -else() - find_package(Java REQUIRED) - find_package(JNI REQUIRED) - include_directories(${JNI_INCLUDE_DIRS}) - target_link_libraries(android_utils ${JNI_LIBRARIES}) -endif() diff --git a/pkgs/jnigen/example/in_app_java/src/android_utils/android_utils.c b/pkgs/jnigen/example/in_app_java/src/android_utils/android_utils.c deleted file mode 100644 index c9534ec4c..000000000 --- a/pkgs/jnigen/example/in_app_java/src/android_utils/android_utils.c +++ /dev/null @@ -1,2581 +0,0 @@ -// Autogenerated by jnigen. DO NOT EDIT! - -#include -#include "dartjni.h" -#include "jni.h" - -thread_local JNIEnv* jniEnv; -JniContext* jni; - -JniContext* (*context_getter)(void); -JNIEnv* (*env_getter)(void); - -void setJniGetters(JniContext* (*cg)(void), JNIEnv* (*eg)(void)) { - context_getter = cg; - env_getter = eg; -} - -// androidx.emoji2.text.EmojiCompat$CodepointSequenceMatchResult -jclass _c_EmojiCompat_CodepointSequenceMatchResult = NULL; - -// androidx.emoji2.text.EmojiCompat$Config -jclass _c_EmojiCompat_Config = NULL; - -jmethodID _m_EmojiCompat_Config__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_Config__new0(jobject metadataLoader) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_Config, - "androidx/emoji2/text/EmojiCompat$Config"); - if (_c_EmojiCompat_Config == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_Config, &_m_EmojiCompat_Config__new0, "", - "(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;)V"); - if (_m_EmojiCompat_Config__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_EmojiCompat_Config, - _m_EmojiCompat_Config__new0, metadataLoader); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat_Config__registerInitCallback = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_Config__registerInitCallback(jobject self_, - jobject initCallback) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_Config, - "androidx/emoji2/text/EmojiCompat$Config"); - if (_c_EmojiCompat_Config == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_Config, - &_m_EmojiCompat_Config__registerInitCallback, - "registerInitCallback", - "(Landroidx/emoji2/text/EmojiCompat$InitCallback;)Landroidx/" - "emoji2/text/EmojiCompat$Config;"); - if (_m_EmojiCompat_Config__registerInitCallback == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat_Config__registerInitCallback, initCallback); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat_Config__unregisterInitCallback = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_Config__unregisterInitCallback(jobject self_, - jobject initCallback) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_Config, - "androidx/emoji2/text/EmojiCompat$Config"); - if (_c_EmojiCompat_Config == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_Config, - &_m_EmojiCompat_Config__unregisterInitCallback, - "unregisterInitCallback", - "(Landroidx/emoji2/text/EmojiCompat$InitCallback;)Landroidx/" - "emoji2/text/EmojiCompat$Config;"); - if (_m_EmojiCompat_Config__unregisterInitCallback == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat_Config__unregisterInitCallback, - initCallback); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat_Config__setReplaceAll = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_Config__setReplaceAll(jobject self_, uint8_t replaceAll) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_Config, - "androidx/emoji2/text/EmojiCompat$Config"); - if (_c_EmojiCompat_Config == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_Config, &_m_EmojiCompat_Config__setReplaceAll, - "setReplaceAll", "(Z)Landroidx/emoji2/text/EmojiCompat$Config;"); - if (_m_EmojiCompat_Config__setReplaceAll == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat_Config__setReplaceAll, replaceAll); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat_Config__setUseEmojiAsDefaultStyle = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_Config__setUseEmojiAsDefaultStyle( - jobject self_, - uint8_t useEmojiAsDefaultStyle) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_Config, - "androidx/emoji2/text/EmojiCompat$Config"); - if (_c_EmojiCompat_Config == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_Config, - &_m_EmojiCompat_Config__setUseEmojiAsDefaultStyle, - "setUseEmojiAsDefaultStyle", - "(Z)Landroidx/emoji2/text/EmojiCompat$Config;"); - if (_m_EmojiCompat_Config__setUseEmojiAsDefaultStyle == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat_Config__setUseEmojiAsDefaultStyle, - useEmojiAsDefaultStyle); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat_Config__setUseEmojiAsDefaultStyle1 = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_Config__setUseEmojiAsDefaultStyle1( - jobject self_, - uint8_t useEmojiAsDefaultStyle, - jobject emojiAsDefaultStyleExceptions) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_Config, - "androidx/emoji2/text/EmojiCompat$Config"); - if (_c_EmojiCompat_Config == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_Config, - &_m_EmojiCompat_Config__setUseEmojiAsDefaultStyle1, - "setUseEmojiAsDefaultStyle", - "(ZLjava/util/List;)Landroidx/emoji2/text/EmojiCompat$Config;"); - if (_m_EmojiCompat_Config__setUseEmojiAsDefaultStyle1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat_Config__setUseEmojiAsDefaultStyle1, - useEmojiAsDefaultStyle, emojiAsDefaultStyleExceptions); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat_Config__setEmojiSpanIndicatorEnabled = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_Config__setEmojiSpanIndicatorEnabled( - jobject self_, - uint8_t emojiSpanIndicatorEnabled) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_Config, - "androidx/emoji2/text/EmojiCompat$Config"); - if (_c_EmojiCompat_Config == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_Config, - &_m_EmojiCompat_Config__setEmojiSpanIndicatorEnabled, - "setEmojiSpanIndicatorEnabled", - "(Z)Landroidx/emoji2/text/EmojiCompat$Config;"); - if (_m_EmojiCompat_Config__setEmojiSpanIndicatorEnabled == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat_Config__setEmojiSpanIndicatorEnabled, - emojiSpanIndicatorEnabled); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat_Config__setEmojiSpanIndicatorColor = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_Config__setEmojiSpanIndicatorColor(jobject self_, - int32_t color) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_Config, - "androidx/emoji2/text/EmojiCompat$Config"); - if (_c_EmojiCompat_Config == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_Config, - &_m_EmojiCompat_Config__setEmojiSpanIndicatorColor, - "setEmojiSpanIndicatorColor", - "(I)Landroidx/emoji2/text/EmojiCompat$Config;"); - if (_m_EmojiCompat_Config__setEmojiSpanIndicatorColor == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat_Config__setEmojiSpanIndicatorColor, color); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat_Config__setMetadataLoadStrategy = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_Config__setMetadataLoadStrategy(jobject self_, - int32_t strategy) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_Config, - "androidx/emoji2/text/EmojiCompat$Config"); - if (_c_EmojiCompat_Config == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_Config, - &_m_EmojiCompat_Config__setMetadataLoadStrategy, - "setMetadataLoadStrategy", - "(I)Landroidx/emoji2/text/EmojiCompat$Config;"); - if (_m_EmojiCompat_Config__setMetadataLoadStrategy == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat_Config__setMetadataLoadStrategy, strategy); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat_Config__setSpanFactory = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_Config__setSpanFactory(jobject self_, jobject factory) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_Config, - "androidx/emoji2/text/EmojiCompat$Config"); - if (_c_EmojiCompat_Config == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_Config, &_m_EmojiCompat_Config__setSpanFactory, - "setSpanFactory", - "(Landroidx/emoji2/text/EmojiCompat$SpanFactory;)Landroidx/" - "emoji2/text/EmojiCompat$Config;"); - if (_m_EmojiCompat_Config__setSpanFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat_Config__setSpanFactory, factory); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat_Config__setGlyphChecker = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_Config__setGlyphChecker(jobject self_, - jobject glyphChecker) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_Config, - "androidx/emoji2/text/EmojiCompat$Config"); - if (_c_EmojiCompat_Config == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_Config, &_m_EmojiCompat_Config__setGlyphChecker, - "setGlyphChecker", - "(Landroidx/emoji2/text/EmojiCompat$GlyphChecker;)Landroidx/" - "emoji2/text/EmojiCompat$Config;"); - if (_m_EmojiCompat_Config__setGlyphChecker == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat_Config__setGlyphChecker, glyphChecker); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat_Config__getMetadataRepoLoader = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_Config__getMetadataRepoLoader(jobject self_) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_Config, - "androidx/emoji2/text/EmojiCompat$Config"); - if (_c_EmojiCompat_Config == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_Config, - &_m_EmojiCompat_Config__getMetadataRepoLoader, - "getMetadataRepoLoader", - "()Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;"); - if (_m_EmojiCompat_Config__getMetadataRepoLoader == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat_Config__getMetadataRepoLoader); - return to_global_ref_result(_result); -} - -// androidx.emoji2.text.EmojiCompat$DefaultSpanFactory -jclass _c_EmojiCompat_DefaultSpanFactory = NULL; - -jmethodID _m_EmojiCompat_DefaultSpanFactory__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_DefaultSpanFactory__new0() { - load_env(); - load_class_global_ref(&_c_EmojiCompat_DefaultSpanFactory, - "androidx/emoji2/text/EmojiCompat$DefaultSpanFactory"); - if (_c_EmojiCompat_DefaultSpanFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_DefaultSpanFactory, - &_m_EmojiCompat_DefaultSpanFactory__new0, "", "()V"); - if (_m_EmojiCompat_DefaultSpanFactory__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_EmojiCompat_DefaultSpanFactory, - _m_EmojiCompat_DefaultSpanFactory__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat_DefaultSpanFactory__createSpan = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_DefaultSpanFactory__createSpan(jobject self_, - jobject rasterizer) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_DefaultSpanFactory, - "androidx/emoji2/text/EmojiCompat$DefaultSpanFactory"); - if (_c_EmojiCompat_DefaultSpanFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_DefaultSpanFactory, - &_m_EmojiCompat_DefaultSpanFactory__createSpan, "createSpan", - "(Landroidx/emoji2/text/TypefaceEmojiRasterizer;)Landroidx/" - "emoji2/text/EmojiSpan;"); - if (_m_EmojiCompat_DefaultSpanFactory__createSpan == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat_DefaultSpanFactory__createSpan, rasterizer); - return to_global_ref_result(_result); -} - -// androidx.emoji2.text.EmojiCompat$GlyphChecker -jclass _c_EmojiCompat_GlyphChecker = NULL; - -jmethodID _m_EmojiCompat_GlyphChecker__hasGlyph = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_GlyphChecker__hasGlyph(jobject self_, - jobject charSequence, - int32_t start, - int32_t end, - int32_t sdkAdded) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_GlyphChecker, - "androidx/emoji2/text/EmojiCompat$GlyphChecker"); - if (_c_EmojiCompat_GlyphChecker == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_GlyphChecker, - &_m_EmojiCompat_GlyphChecker__hasGlyph, "hasGlyph", - "(Ljava/lang/CharSequence;III)Z"); - if (_m_EmojiCompat_GlyphChecker__hasGlyph == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_EmojiCompat_GlyphChecker__hasGlyph, charSequence, start, - end, sdkAdded); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -// androidx.emoji2.text.EmojiCompat$InitCallback -jclass _c_EmojiCompat_InitCallback = NULL; - -jmethodID _m_EmojiCompat_InitCallback__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_InitCallback__new0() { - load_env(); - load_class_global_ref(&_c_EmojiCompat_InitCallback, - "androidx/emoji2/text/EmojiCompat$InitCallback"); - if (_c_EmojiCompat_InitCallback == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_InitCallback, &_m_EmojiCompat_InitCallback__new0, - "", "()V"); - if (_m_EmojiCompat_InitCallback__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_EmojiCompat_InitCallback, - _m_EmojiCompat_InitCallback__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat_InitCallback__onInitialized = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_InitCallback__onInitialized(jobject self_) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_InitCallback, - "androidx/emoji2/text/EmojiCompat$InitCallback"); - if (_c_EmojiCompat_InitCallback == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_InitCallback, - &_m_EmojiCompat_InitCallback__onInitialized, "onInitialized", - "()V"); - if (_m_EmojiCompat_InitCallback__onInitialized == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_EmojiCompat_InitCallback__onInitialized); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat_InitCallback__onFailed = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_InitCallback__onFailed(jobject self_, jobject throwable) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_InitCallback, - "androidx/emoji2/text/EmojiCompat$InitCallback"); - if (_c_EmojiCompat_InitCallback == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_InitCallback, - &_m_EmojiCompat_InitCallback__onFailed, "onFailed", - "(Ljava/lang/Throwable;)V"); - if (_m_EmojiCompat_InitCallback__onFailed == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_EmojiCompat_InitCallback__onFailed, throwable); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// androidx.emoji2.text.EmojiCompat$LoadStrategy -jclass _c_EmojiCompat_LoadStrategy = NULL; - -// androidx.emoji2.text.EmojiCompat$MetadataRepoLoader -jclass _c_EmojiCompat_MetadataRepoLoader = NULL; - -jmethodID _m_EmojiCompat_MetadataRepoLoader__load = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_MetadataRepoLoader__load(jobject self_, - jobject loaderCallback) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_MetadataRepoLoader, - "androidx/emoji2/text/EmojiCompat$MetadataRepoLoader"); - if (_c_EmojiCompat_MetadataRepoLoader == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_EmojiCompat_MetadataRepoLoader, - &_m_EmojiCompat_MetadataRepoLoader__load, "load", - "(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;)V"); - if (_m_EmojiCompat_MetadataRepoLoader__load == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod( - jniEnv, self_, _m_EmojiCompat_MetadataRepoLoader__load, loaderCallback); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// androidx.emoji2.text.EmojiCompat$MetadataRepoLoaderCallback -jclass _c_EmojiCompat_MetadataRepoLoaderCallback = NULL; - -jmethodID _m_EmojiCompat_MetadataRepoLoaderCallback__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_MetadataRepoLoaderCallback__new0() { - load_env(); - load_class_global_ref( - &_c_EmojiCompat_MetadataRepoLoaderCallback, - "androidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback"); - if (_c_EmojiCompat_MetadataRepoLoaderCallback == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_MetadataRepoLoaderCallback, - &_m_EmojiCompat_MetadataRepoLoaderCallback__new0, "", - "()V"); - if (_m_EmojiCompat_MetadataRepoLoaderCallback__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_EmojiCompat_MetadataRepoLoaderCallback, - _m_EmojiCompat_MetadataRepoLoaderCallback__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat_MetadataRepoLoaderCallback__onLoaded = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_MetadataRepoLoaderCallback__onLoaded( - jobject self_, - jobject metadataRepo) { - load_env(); - load_class_global_ref( - &_c_EmojiCompat_MetadataRepoLoaderCallback, - "androidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback"); - if (_c_EmojiCompat_MetadataRepoLoaderCallback == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_MetadataRepoLoaderCallback, - &_m_EmojiCompat_MetadataRepoLoaderCallback__onLoaded, "onLoaded", - "(Landroidx/emoji2/text/MetadataRepo;)V"); - if (_m_EmojiCompat_MetadataRepoLoaderCallback__onLoaded == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_EmojiCompat_MetadataRepoLoaderCallback__onLoaded, - metadataRepo); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat_MetadataRepoLoaderCallback__onFailed = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_MetadataRepoLoaderCallback__onFailed(jobject self_, - jobject throwable) { - load_env(); - load_class_global_ref( - &_c_EmojiCompat_MetadataRepoLoaderCallback, - "androidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback"); - if (_c_EmojiCompat_MetadataRepoLoaderCallback == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_MetadataRepoLoaderCallback, - &_m_EmojiCompat_MetadataRepoLoaderCallback__onFailed, "onFailed", - "(Ljava/lang/Throwable;)V"); - if (_m_EmojiCompat_MetadataRepoLoaderCallback__onFailed == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_EmojiCompat_MetadataRepoLoaderCallback__onFailed, - throwable); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// androidx.emoji2.text.EmojiCompat$ReplaceStrategy -jclass _c_EmojiCompat_ReplaceStrategy = NULL; - -// androidx.emoji2.text.EmojiCompat$SpanFactory -jclass _c_EmojiCompat_SpanFactory = NULL; - -jmethodID _m_EmojiCompat_SpanFactory__createSpan = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat_SpanFactory__createSpan(jobject self_, - jobject rasterizer) { - load_env(); - load_class_global_ref(&_c_EmojiCompat_SpanFactory, - "androidx/emoji2/text/EmojiCompat$SpanFactory"); - if (_c_EmojiCompat_SpanFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat_SpanFactory, - &_m_EmojiCompat_SpanFactory__createSpan, "createSpan", - "(Landroidx/emoji2/text/TypefaceEmojiRasterizer;)Landroidx/" - "emoji2/text/EmojiSpan;"); - if (_m_EmojiCompat_SpanFactory__createSpan == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat_SpanFactory__createSpan, rasterizer); - return to_global_ref_result(_result); -} - -// androidx.emoji2.text.EmojiCompat -jclass _c_EmojiCompat = NULL; - -jmethodID _m_EmojiCompat__init = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__init(jobject context) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_EmojiCompat, &_m_EmojiCompat__init, "init", - "(Landroid/content/Context;)Landroidx/emoji2/text/EmojiCompat;"); - if (_m_EmojiCompat__init == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_EmojiCompat, _m_EmojiCompat__init, context); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat__init1 = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__init1(jobject context, jobject defaultFactory) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_EmojiCompat, &_m_EmojiCompat__init1, "init", - "(Landroid/content/Context;Landroidx/emoji2/text/" - "DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;" - ")Landroidx/emoji2/text/EmojiCompat;"); - if (_m_EmojiCompat__init1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_EmojiCompat, _m_EmojiCompat__init1, context, defaultFactory); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat__init2 = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__init2(jobject config) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_EmojiCompat, &_m_EmojiCompat__init2, "init", - "(Landroidx/emoji2/text/EmojiCompat$Config;)Landroidx/" - "emoji2/text/EmojiCompat;"); - if (_m_EmojiCompat__init2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_EmojiCompat, _m_EmojiCompat__init2, config); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat__isConfigured = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__isConfigured() { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_EmojiCompat, &_m_EmojiCompat__isConfigured, - "isConfigured", "()Z"); - if (_m_EmojiCompat__isConfigured == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallStaticBooleanMethod( - jniEnv, _c_EmojiCompat, _m_EmojiCompat__isConfigured); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat__reset = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__reset(jobject config) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_EmojiCompat, &_m_EmojiCompat__reset, "reset", - "(Landroidx/emoji2/text/EmojiCompat$Config;)Landroidx/" - "emoji2/text/EmojiCompat;"); - if (_m_EmojiCompat__reset == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_EmojiCompat, _m_EmojiCompat__reset, config); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat__reset1 = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__reset1(jobject emojiCompat) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_EmojiCompat, &_m_EmojiCompat__reset1, "reset", - "(Landroidx/emoji2/text/EmojiCompat;)Landroidx/emoji2/text/EmojiCompat;"); - if (_m_EmojiCompat__reset1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_EmojiCompat, _m_EmojiCompat__reset1, emojiCompat); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat__skipDefaultConfigurationLookup = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__skipDefaultConfigurationLookup(uint8_t shouldSkip) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_EmojiCompat, - &_m_EmojiCompat__skipDefaultConfigurationLookup, - "skipDefaultConfigurationLookup", "(Z)V"); - if (_m_EmojiCompat__skipDefaultConfigurationLookup == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallStaticVoidMethod( - jniEnv, _c_EmojiCompat, _m_EmojiCompat__skipDefaultConfigurationLookup, - shouldSkip); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat__get0 = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__get0() { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_EmojiCompat, &_m_EmojiCompat__get0, "get", - "()Landroidx/emoji2/text/EmojiCompat;"); - if (_m_EmojiCompat__get0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod(jniEnv, _c_EmojiCompat, - _m_EmojiCompat__get0); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat__load = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__load(jobject self_) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__load, "load", "()V"); - if (_m_EmojiCompat__load == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_EmojiCompat__load); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat__registerInitCallback = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__registerInitCallback(jobject self_, - jobject initCallback) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__registerInitCallback, - "registerInitCallback", - "(Landroidx/emoji2/text/EmojiCompat$InitCallback;)V"); - if (_m_EmojiCompat__registerInitCallback == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_EmojiCompat__registerInitCallback, - initCallback); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat__unregisterInitCallback = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__unregisterInitCallback(jobject self_, - jobject initCallback) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__unregisterInitCallback, - "unregisterInitCallback", - "(Landroidx/emoji2/text/EmojiCompat$InitCallback;)V"); - if (_m_EmojiCompat__unregisterInitCallback == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod( - jniEnv, self_, _m_EmojiCompat__unregisterInitCallback, initCallback); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat__getLoadState = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__getLoadState(jobject self_) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__getLoadState, "getLoadState", - "()I"); - if (_m_EmojiCompat__getLoadState == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_EmojiCompat__getLoadState); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat__isEmojiSpanIndicatorEnabled = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__isEmojiSpanIndicatorEnabled(jobject self_) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__isEmojiSpanIndicatorEnabled, - "isEmojiSpanIndicatorEnabled", "()Z"); - if (_m_EmojiCompat__isEmojiSpanIndicatorEnabled == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_EmojiCompat__isEmojiSpanIndicatorEnabled); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat__getEmojiSpanIndicatorColor = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__getEmojiSpanIndicatorColor(jobject self_) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__getEmojiSpanIndicatorColor, - "getEmojiSpanIndicatorColor", "()I"); - if (_m_EmojiCompat__getEmojiSpanIndicatorColor == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_EmojiCompat__getEmojiSpanIndicatorColor); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat__getEmojiStart = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__getEmojiStart(jobject self_, - jobject charSequence, - int32_t offset) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__getEmojiStart, "getEmojiStart", - "(Ljava/lang/CharSequence;I)I"); - if (_m_EmojiCompat__getEmojiStart == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_EmojiCompat__getEmojiStart, charSequence, offset); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat__getEmojiEnd = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__getEmojiEnd(jobject self_, - jobject charSequence, - int32_t offset) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__getEmojiEnd, "getEmojiEnd", - "(Ljava/lang/CharSequence;I)I"); - if (_m_EmojiCompat__getEmojiEnd == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_EmojiCompat__getEmojiEnd, charSequence, offset); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat__handleOnKeyDown = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__handleOnKeyDown(jobject editable, - int32_t keyCode, - jobject event) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_EmojiCompat, &_m_EmojiCompat__handleOnKeyDown, - "handleOnKeyDown", - "(Landroid/text/Editable;ILandroid/view/KeyEvent;)Z"); - if (_m_EmojiCompat__handleOnKeyDown == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallStaticBooleanMethod( - jniEnv, _c_EmojiCompat, _m_EmojiCompat__handleOnKeyDown, editable, - keyCode, event); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat__handleDeleteSurroundingText = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__handleDeleteSurroundingText(jobject inputConnection, - jobject editable, - int32_t beforeLength, - int32_t afterLength, - uint8_t inCodePoints) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_EmojiCompat, - &_m_EmojiCompat__handleDeleteSurroundingText, - "handleDeleteSurroundingText", - "(Landroid/view/inputmethod/InputConnection;Landroid/text/" - "Editable;IIZ)Z"); - if (_m_EmojiCompat__handleDeleteSurroundingText == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallStaticBooleanMethod( - jniEnv, _c_EmojiCompat, _m_EmojiCompat__handleDeleteSurroundingText, - inputConnection, editable, beforeLength, afterLength, inCodePoints); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat__hasEmojiGlyph = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__hasEmojiGlyph(jobject self_, jobject sequence) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__hasEmojiGlyph, "hasEmojiGlyph", - "(Ljava/lang/CharSequence;)Z"); - if (_m_EmojiCompat__hasEmojiGlyph == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_EmojiCompat__hasEmojiGlyph, sequence); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat__hasEmojiGlyph1 = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__hasEmojiGlyph1(jobject self_, - jobject sequence, - int32_t metadataVersion) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__hasEmojiGlyph1, "hasEmojiGlyph", - "(Ljava/lang/CharSequence;I)Z"); - if (_m_EmojiCompat__hasEmojiGlyph1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_EmojiCompat__hasEmojiGlyph1, sequence, metadataVersion); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat__getEmojiMatch = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__getEmojiMatch(jobject self_, - jobject sequence, - int32_t metadataVersion) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__getEmojiMatch, "getEmojiMatch", - "(Ljava/lang/CharSequence;I)I"); - if (_m_EmojiCompat__getEmojiMatch == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_EmojiCompat__getEmojiMatch, sequence, metadataVersion); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_EmojiCompat__process = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__process(jobject self_, jobject charSequence) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__process, "process", - "(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;"); - if (_m_EmojiCompat__process == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat__process, charSequence); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat__process1 = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__process1(jobject self_, - jobject charSequence, - int32_t start, - int32_t end) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__process1, "process", - "(Ljava/lang/CharSequence;II)Ljava/lang/CharSequence;"); - if (_m_EmojiCompat__process1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat__process1, charSequence, start, end); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat__process2 = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__process2(jobject self_, - jobject charSequence, - int32_t start, - int32_t end, - int32_t maxEmojiCount) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__process2, "process", - "(Ljava/lang/CharSequence;III)Ljava/lang/CharSequence;"); - if (_m_EmojiCompat__process2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_EmojiCompat__process2, - charSequence, start, end, maxEmojiCount); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat__process3 = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__process3(jobject self_, - jobject charSequence, - int32_t start, - int32_t end, - int32_t maxEmojiCount, - int32_t replaceStrategy) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__process3, "process", - "(Ljava/lang/CharSequence;IIII)Ljava/lang/CharSequence;"); - if (_m_EmojiCompat__process3 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat__process3, charSequence, start, end, - maxEmojiCount, replaceStrategy); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat__getAssetSignature = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__getAssetSignature(jobject self_) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__getAssetSignature, - "getAssetSignature", "()Ljava/lang/String;"); - if (_m_EmojiCompat__getAssetSignature == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_EmojiCompat__getAssetSignature); - return to_global_ref_result(_result); -} - -jmethodID _m_EmojiCompat__updateEditorInfo = NULL; -FFI_PLUGIN_EXPORT -JniResult EmojiCompat__updateEditorInfo(jobject self_, jobject outAttrs) { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_EmojiCompat, &_m_EmojiCompat__updateEditorInfo, - "updateEditorInfo", "(Landroid/view/inputmethod/EditorInfo;)V"); - if (_m_EmojiCompat__updateEditorInfo == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_EmojiCompat__updateEditorInfo, - outAttrs); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_EmojiCompat__EDITOR_INFO_METAVERSION_KEY = NULL; -FFI_PLUGIN_EXPORT -JniResult get_EmojiCompat__EDITOR_INFO_METAVERSION_KEY() { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_EmojiCompat, - &_f_EmojiCompat__EDITOR_INFO_METAVERSION_KEY, - "EDITOR_INFO_METAVERSION_KEY", "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField( - jniEnv, _c_EmojiCompat, _f_EmojiCompat__EDITOR_INFO_METAVERSION_KEY); - return to_global_ref_result(_result); -} - -jfieldID _f_EmojiCompat__EDITOR_INFO_REPLACE_ALL_KEY = NULL; -FFI_PLUGIN_EXPORT -JniResult get_EmojiCompat__EDITOR_INFO_REPLACE_ALL_KEY() { - load_env(); - load_class_global_ref(&_c_EmojiCompat, "androidx/emoji2/text/EmojiCompat"); - if (_c_EmojiCompat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_EmojiCompat, - &_f_EmojiCompat__EDITOR_INFO_REPLACE_ALL_KEY, - "EDITOR_INFO_REPLACE_ALL_KEY", "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField( - jniEnv, _c_EmojiCompat, _f_EmojiCompat__EDITOR_INFO_REPLACE_ALL_KEY); - return to_global_ref_result(_result); -} - -// androidx.emoji2.text.DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory -jclass _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory = NULL; - -jmethodID _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory__new0 = - NULL; -FFI_PLUGIN_EXPORT -JniResult DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory__new0( - jobject helper) { - load_env(); - load_class_global_ref( - &_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory, - "androidx/emoji2/text/" - "DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory"); - if (_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory, - &_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory__new0, - "", - "(Landroidx/emoji2/text/" - "DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper;)V"); - if (_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject( - jniEnv, _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory, - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory__new0, - helper); - return to_global_ref_result(_result); -} - -jmethodID _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory__create = - NULL; -FFI_PLUGIN_EXPORT -JniResult DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory__create( - jobject self_, - jobject context) { - load_env(); - load_class_global_ref( - &_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory, - "androidx/emoji2/text/" - "DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory"); - if (_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory, - &_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory__create, - "create", - "(Landroid/content/Context;)Landroidx/emoji2/text/EmojiCompat$Config;"); - if (_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory__create == - NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigFactory__create, - context); - return to_global_ref_result(_result); -} - -// androidx.emoji2.text.DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper -jclass _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper = NULL; - -jmethodID _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__new0 = - NULL; -FFI_PLUGIN_EXPORT -JniResult DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__new0() { - load_env(); - load_class_global_ref( - &_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper, - "androidx/emoji2/text/" - "DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper"); - if (_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper, - &_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__new0, - "", "()V"); - if (_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject( - jniEnv, _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper, - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__new0); - return to_global_ref_result(_result); -} - -jmethodID - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__getSigningSignatures = - NULL; -FFI_PLUGIN_EXPORT -JniResult -DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__getSigningSignatures( - jobject self_, - jobject packageManager, - jobject providerPackage) { - load_env(); - load_class_global_ref( - &_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper, - "androidx/emoji2/text/" - "DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper"); - if (_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper, - &_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__getSigningSignatures, - "getSigningSignatures", - "(Landroid/content/pm/PackageManager;Ljava/lang/String;)[Landroid/" - "content/pm/Signature;"); - if (_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__getSigningSignatures == - NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__getSigningSignatures, - packageManager, providerPackage); - return to_global_ref_result(_result); -} - -jmethodID - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__queryIntentContentProviders = - NULL; -FFI_PLUGIN_EXPORT -JniResult -DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__queryIntentContentProviders( - jobject self_, - jobject packageManager, - jobject intent, - int32_t flags) { - load_env(); - load_class_global_ref( - &_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper, - "androidx/emoji2/text/" - "DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper"); - if (_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper, - &_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__queryIntentContentProviders, - "queryIntentContentProviders", - "(Landroid/content/pm/PackageManager;Landroid/content/Intent;I)Ljava/" - "util/List;"); - if (_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__queryIntentContentProviders == - NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__queryIntentContentProviders, - packageManager, intent, flags); - return to_global_ref_result(_result); -} - -jmethodID - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__getProviderInfo = - NULL; -FFI_PLUGIN_EXPORT -JniResult -DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__getProviderInfo( - jobject self_, - jobject resolveInfo) { - load_env(); - load_class_global_ref( - &_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper, - "androidx/emoji2/text/" - "DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper"); - if (_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper, - &_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__getProviderInfo, - "getProviderInfo", - "(Landroid/content/pm/ResolveInfo;)Landroid/content/pm/ProviderInfo;"); - if (_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__getProviderInfo == - NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper__getProviderInfo, - resolveInfo); - return to_global_ref_result(_result); -} - -// androidx.emoji2.text.DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19 -jclass _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19 = NULL; - -jmethodID - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__new0 = - NULL; -FFI_PLUGIN_EXPORT -JniResult -DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__new0() { - load_env(); - load_class_global_ref( - &_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19, - "androidx/emoji2/text/" - "DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19"); - if (_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19, - &_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__new0, - "", "()V"); - if (_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__new0 == - NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject( - jniEnv, _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19, - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__new0); - return to_global_ref_result(_result); -} - -jmethodID - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__queryIntentContentProviders = - NULL; -FFI_PLUGIN_EXPORT -JniResult -DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__queryIntentContentProviders( - jobject self_, - jobject packageManager, - jobject intent, - int32_t flags) { - load_env(); - load_class_global_ref( - &_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19, - "androidx/emoji2/text/" - "DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19"); - if (_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19, - &_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__queryIntentContentProviders, - "queryIntentContentProviders", - "(Landroid/content/pm/PackageManager;Landroid/content/Intent;I)Ljava/" - "util/List;"); - if (_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__queryIntentContentProviders == - NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__queryIntentContentProviders, - packageManager, intent, flags); - return to_global_ref_result(_result); -} - -jmethodID - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__getProviderInfo = - NULL; -FFI_PLUGIN_EXPORT -JniResult -DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__getProviderInfo( - jobject self_, - jobject resolveInfo) { - load_env(); - load_class_global_ref( - &_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19, - "androidx/emoji2/text/" - "DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19"); - if (_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19, - &_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__getProviderInfo, - "getProviderInfo", - "(Landroid/content/pm/ResolveInfo;)Landroid/content/pm/ProviderInfo;"); - if (_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__getProviderInfo == - NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API19__getProviderInfo, - resolveInfo); - return to_global_ref_result(_result); -} - -// androidx.emoji2.text.DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API28 -jclass _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28 = NULL; - -jmethodID - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28__new0 = - NULL; -FFI_PLUGIN_EXPORT -JniResult -DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28__new0() { - load_env(); - load_class_global_ref( - &_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28, - "androidx/emoji2/text/" - "DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API28"); - if (_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28, - &_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28__new0, - "", "()V"); - if (_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28__new0 == - NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject( - jniEnv, _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28, - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28__new0); - return to_global_ref_result(_result); -} - -jmethodID - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28__getSigningSignatures1 = - NULL; -FFI_PLUGIN_EXPORT -JniResult -DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28__getSigningSignatures1( - jobject self_, - jobject packageManager, - jobject providerPackage) { - load_env(); - load_class_global_ref( - &_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28, - "androidx/emoji2/text/" - "DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API28"); - if (_c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28, - &_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28__getSigningSignatures1, - "getSigningSignatures", - "(Landroid/content/pm/PackageManager;Ljava/lang/String;)[Landroid/" - "content/pm/Signature;"); - if (_m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28__getSigningSignatures1 == - NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, - _m_DefaultEmojiCompatConfig_DefaultEmojiCompatConfigHelper_API28__getSigningSignatures1, - packageManager, providerPackage); - return to_global_ref_result(_result); -} - -// androidx.emoji2.text.DefaultEmojiCompatConfig -jclass _c_DefaultEmojiCompatConfig = NULL; - -jmethodID _m_DefaultEmojiCompatConfig__create = NULL; -FFI_PLUGIN_EXPORT -JniResult DefaultEmojiCompatConfig__create(jobject context) { - load_env(); - load_class_global_ref(&_c_DefaultEmojiCompatConfig, - "androidx/emoji2/text/DefaultEmojiCompatConfig"); - if (_c_DefaultEmojiCompatConfig == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_DefaultEmojiCompatConfig, - &_m_DefaultEmojiCompatConfig__create, "create", - "(Landroid/content/Context;)Landroidx/emoji2/text/" - "FontRequestEmojiCompatConfig;"); - if (_m_DefaultEmojiCompatConfig__create == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_DefaultEmojiCompatConfig, _m_DefaultEmojiCompatConfig__create, - context); - return to_global_ref_result(_result); -} - -// android.os.Build$Partition -jclass _c_Build_Partition = NULL; - -jmethodID _m_Build_Partition__getName = NULL; -FFI_PLUGIN_EXPORT -JniResult Build_Partition__getName(jobject self_) { - load_env(); - load_class_global_ref(&_c_Build_Partition, "android/os/Build$Partition"); - if (_c_Build_Partition == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Build_Partition, &_m_Build_Partition__getName, "getName", - "()Ljava/lang/String;"); - if (_m_Build_Partition__getName == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_Build_Partition__getName); - return to_global_ref_result(_result); -} - -jmethodID _m_Build_Partition__getFingerprint = NULL; -FFI_PLUGIN_EXPORT -JniResult Build_Partition__getFingerprint(jobject self_) { - load_env(); - load_class_global_ref(&_c_Build_Partition, "android/os/Build$Partition"); - if (_c_Build_Partition == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Build_Partition, &_m_Build_Partition__getFingerprint, - "getFingerprint", "()Ljava/lang/String;"); - if (_m_Build_Partition__getFingerprint == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_Build_Partition__getFingerprint); - return to_global_ref_result(_result); -} - -jmethodID _m_Build_Partition__getBuildTimeMillis = NULL; -FFI_PLUGIN_EXPORT -JniResult Build_Partition__getBuildTimeMillis(jobject self_) { - load_env(); - load_class_global_ref(&_c_Build_Partition, "android/os/Build$Partition"); - if (_c_Build_Partition == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Build_Partition, &_m_Build_Partition__getBuildTimeMillis, - "getBuildTimeMillis", "()J"); - if (_m_Build_Partition__getBuildTimeMillis == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int64_t _result = (*jniEnv)->CallLongMethod( - jniEnv, self_, _m_Build_Partition__getBuildTimeMillis); - return (JniResult){.value = {.j = _result}, .exception = check_exception()}; -} - -jmethodID _m_Build_Partition__equals = NULL; -FFI_PLUGIN_EXPORT -JniResult Build_Partition__equals(jobject self_, jobject object) { - load_env(); - load_class_global_ref(&_c_Build_Partition, "android/os/Build$Partition"); - if (_c_Build_Partition == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Build_Partition, &_m_Build_Partition__equals, "equals", - "(Ljava/lang/Object;)Z"); - if (_m_Build_Partition__equals == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_Build_Partition__equals, object); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_Build_Partition__hashCode1 = NULL; -FFI_PLUGIN_EXPORT -JniResult Build_Partition__hashCode1(jobject self_) { - load_env(); - load_class_global_ref(&_c_Build_Partition, "android/os/Build$Partition"); - if (_c_Build_Partition == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Build_Partition, &_m_Build_Partition__hashCode1, "hashCode", - "()I"); - if (_m_Build_Partition__hashCode1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_Build_Partition__hashCode1); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jfieldID _f_Build_Partition__PARTITION_NAME_SYSTEM = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build_Partition__PARTITION_NAME_SYSTEM() { - load_env(); - load_class_global_ref(&_c_Build_Partition, "android/os/Build$Partition"); - if (_c_Build_Partition == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build_Partition, - &_f_Build_Partition__PARTITION_NAME_SYSTEM, - "PARTITION_NAME_SYSTEM", "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField( - jniEnv, _c_Build_Partition, _f_Build_Partition__PARTITION_NAME_SYSTEM); - return to_global_ref_result(_result); -} - -// android.os.Build$VERSION -jclass _c_Build_VERSION = NULL; - -jmethodID _m_Build_VERSION__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult Build_VERSION__new0() { - load_env(); - load_class_global_ref(&_c_Build_VERSION, "android/os/Build$VERSION"); - if (_c_Build_VERSION == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Build_VERSION, &_m_Build_VERSION__new0, "", "()V"); - if (_m_Build_VERSION__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_Build_VERSION, _m_Build_VERSION__new0); - return to_global_ref_result(_result); -} - -jfieldID _f_Build_VERSION__BASE_OS = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build_VERSION__BASE_OS() { - load_env(); - load_class_global_ref(&_c_Build_VERSION, "android/os/Build$VERSION"); - if (_c_Build_VERSION == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build_VERSION, &_f_Build_VERSION__BASE_OS, "BASE_OS", - "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build_VERSION, - _f_Build_VERSION__BASE_OS); - return to_global_ref_result(_result); -} - -jfieldID _f_Build_VERSION__CODENAME = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build_VERSION__CODENAME() { - load_env(); - load_class_global_ref(&_c_Build_VERSION, "android/os/Build$VERSION"); - if (_c_Build_VERSION == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build_VERSION, &_f_Build_VERSION__CODENAME, "CODENAME", - "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build_VERSION, - _f_Build_VERSION__CODENAME); - return to_global_ref_result(_result); -} - -jfieldID _f_Build_VERSION__INCREMENTAL = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build_VERSION__INCREMENTAL() { - load_env(); - load_class_global_ref(&_c_Build_VERSION, "android/os/Build$VERSION"); - if (_c_Build_VERSION == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build_VERSION, &_f_Build_VERSION__INCREMENTAL, - "INCREMENTAL", "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField( - jniEnv, _c_Build_VERSION, _f_Build_VERSION__INCREMENTAL); - return to_global_ref_result(_result); -} - -jfieldID _f_Build_VERSION__MEDIA_PERFORMANCE_CLASS = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build_VERSION__MEDIA_PERFORMANCE_CLASS() { - load_env(); - load_class_global_ref(&_c_Build_VERSION, "android/os/Build$VERSION"); - if (_c_Build_VERSION == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build_VERSION, - &_f_Build_VERSION__MEDIA_PERFORMANCE_CLASS, - "MEDIA_PERFORMANCE_CLASS", "I"); - int32_t _result = (*jniEnv)->GetStaticIntField( - jniEnv, _c_Build_VERSION, _f_Build_VERSION__MEDIA_PERFORMANCE_CLASS); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jfieldID _f_Build_VERSION__PREVIEW_SDK_INT = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build_VERSION__PREVIEW_SDK_INT() { - load_env(); - load_class_global_ref(&_c_Build_VERSION, "android/os/Build$VERSION"); - if (_c_Build_VERSION == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build_VERSION, &_f_Build_VERSION__PREVIEW_SDK_INT, - "PREVIEW_SDK_INT", "I"); - int32_t _result = (*jniEnv)->GetStaticIntField( - jniEnv, _c_Build_VERSION, _f_Build_VERSION__PREVIEW_SDK_INT); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jfieldID _f_Build_VERSION__RELEASE = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build_VERSION__RELEASE() { - load_env(); - load_class_global_ref(&_c_Build_VERSION, "android/os/Build$VERSION"); - if (_c_Build_VERSION == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build_VERSION, &_f_Build_VERSION__RELEASE, "RELEASE", - "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build_VERSION, - _f_Build_VERSION__RELEASE); - return to_global_ref_result(_result); -} - -jfieldID _f_Build_VERSION__RELEASE_OR_CODENAME = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build_VERSION__RELEASE_OR_CODENAME() { - load_env(); - load_class_global_ref(&_c_Build_VERSION, "android/os/Build$VERSION"); - if (_c_Build_VERSION == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build_VERSION, &_f_Build_VERSION__RELEASE_OR_CODENAME, - "RELEASE_OR_CODENAME", "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField( - jniEnv, _c_Build_VERSION, _f_Build_VERSION__RELEASE_OR_CODENAME); - return to_global_ref_result(_result); -} - -jfieldID _f_Build_VERSION__RELEASE_OR_PREVIEW_DISPLAY = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build_VERSION__RELEASE_OR_PREVIEW_DISPLAY() { - load_env(); - load_class_global_ref(&_c_Build_VERSION, "android/os/Build$VERSION"); - if (_c_Build_VERSION == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build_VERSION, - &_f_Build_VERSION__RELEASE_OR_PREVIEW_DISPLAY, - "RELEASE_OR_PREVIEW_DISPLAY", "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField( - jniEnv, _c_Build_VERSION, _f_Build_VERSION__RELEASE_OR_PREVIEW_DISPLAY); - return to_global_ref_result(_result); -} - -jfieldID _f_Build_VERSION__SDK = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build_VERSION__SDK() { - load_env(); - load_class_global_ref(&_c_Build_VERSION, "android/os/Build$VERSION"); - if (_c_Build_VERSION == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build_VERSION, &_f_Build_VERSION__SDK, "SDK", - "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build_VERSION, - _f_Build_VERSION__SDK); - return to_global_ref_result(_result); -} - -jfieldID _f_Build_VERSION__SDK_INT = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build_VERSION__SDK_INT() { - load_env(); - load_class_global_ref(&_c_Build_VERSION, "android/os/Build$VERSION"); - if (_c_Build_VERSION == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build_VERSION, &_f_Build_VERSION__SDK_INT, "SDK_INT", - "I"); - int32_t _result = (*jniEnv)->GetStaticIntField(jniEnv, _c_Build_VERSION, - _f_Build_VERSION__SDK_INT); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jfieldID _f_Build_VERSION__SECURITY_PATCH = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build_VERSION__SECURITY_PATCH() { - load_env(); - load_class_global_ref(&_c_Build_VERSION, "android/os/Build$VERSION"); - if (_c_Build_VERSION == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build_VERSION, &_f_Build_VERSION__SECURITY_PATCH, - "SECURITY_PATCH", "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField( - jniEnv, _c_Build_VERSION, _f_Build_VERSION__SECURITY_PATCH); - return to_global_ref_result(_result); -} - -// android.os.Build$VERSION_CODES -jclass _c_Build_VERSION_CODES = NULL; - -jmethodID _m_Build_VERSION_CODES__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult Build_VERSION_CODES__new0() { - load_env(); - load_class_global_ref(&_c_Build_VERSION_CODES, - "android/os/Build$VERSION_CODES"); - if (_c_Build_VERSION_CODES == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Build_VERSION_CODES, &_m_Build_VERSION_CODES__new0, "", - "()V"); - if (_m_Build_VERSION_CODES__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_Build_VERSION_CODES, - _m_Build_VERSION_CODES__new0); - return to_global_ref_result(_result); -} - -// android.os.Build -jclass _c_Build = NULL; - -jmethodID _m_Build__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult Build__new0() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Build, &_m_Build__new0, "", "()V"); - if (_m_Build__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_Build, _m_Build__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_Build__getSerial = NULL; -FFI_PLUGIN_EXPORT -JniResult Build__getSerial() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Build, &_m_Build__getSerial, "getSerial", - "()Ljava/lang/String;"); - if (_m_Build__getSerial == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallStaticObjectMethod(jniEnv, _c_Build, _m_Build__getSerial); - return to_global_ref_result(_result); -} - -jmethodID _m_Build__getFingerprintedPartitions = NULL; -FFI_PLUGIN_EXPORT -JniResult Build__getFingerprintedPartitions() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Build, &_m_Build__getFingerprintedPartitions, - "getFingerprintedPartitions", "()Ljava/util/List;"); - if (_m_Build__getFingerprintedPartitions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_Build, _m_Build__getFingerprintedPartitions); - return to_global_ref_result(_result); -} - -jmethodID _m_Build__getRadioVersion = NULL; -FFI_PLUGIN_EXPORT -JniResult Build__getRadioVersion() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Build, &_m_Build__getRadioVersion, "getRadioVersion", - "()Ljava/lang/String;"); - if (_m_Build__getRadioVersion == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_Build, _m_Build__getRadioVersion); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__BOARD = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__BOARD() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__BOARD, "BOARD", "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__BOARD); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__BOOTLOADER = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__BOOTLOADER() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__BOOTLOADER, "BOOTLOADER", - "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__BOOTLOADER); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__BRAND = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__BRAND() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__BRAND, "BRAND", "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__BRAND); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__CPU_ABI = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__CPU_ABI() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__CPU_ABI, "CPU_ABI", - "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__CPU_ABI); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__CPU_ABI2 = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__CPU_ABI2() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__CPU_ABI2, "CPU_ABI2", - "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__CPU_ABI2); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__DEVICE = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__DEVICE() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__DEVICE, "DEVICE", - "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__DEVICE); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__DISPLAY = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__DISPLAY() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__DISPLAY, "DISPLAY", - "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__DISPLAY); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__FINGERPRINT = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__FINGERPRINT() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__FINGERPRINT, "FINGERPRINT", - "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__FINGERPRINT); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__HARDWARE = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__HARDWARE() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__HARDWARE, "HARDWARE", - "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__HARDWARE); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__HOST = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__HOST() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__HOST, "HOST", "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__HOST); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__ID = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__ID() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__ID, "ID", "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__ID); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__MANUFACTURER = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__MANUFACTURER() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__MANUFACTURER, "MANUFACTURER", - "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__MANUFACTURER); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__MODEL = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__MODEL() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__MODEL, "MODEL", "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__MODEL); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__ODM_SKU = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__ODM_SKU() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__ODM_SKU, "ODM_SKU", - "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__ODM_SKU); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__PRODUCT = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__PRODUCT() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__PRODUCT, "PRODUCT", - "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__PRODUCT); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__RADIO = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__RADIO() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__RADIO, "RADIO", "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__RADIO); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__SERIAL = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__SERIAL() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__SERIAL, "SERIAL", - "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__SERIAL); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__SKU = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__SKU() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__SKU, "SKU", "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__SKU); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__SOC_MANUFACTURER = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__SOC_MANUFACTURER() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__SOC_MANUFACTURER, "SOC_MANUFACTURER", - "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, - _f_Build__SOC_MANUFACTURER); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__SOC_MODEL = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__SOC_MODEL() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__SOC_MODEL, "SOC_MODEL", - "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__SOC_MODEL); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__SUPPORTED_32_BIT_ABIS = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__SUPPORTED_32_BIT_ABIS() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__SUPPORTED_32_BIT_ABIS, - "SUPPORTED_32_BIT_ABIS", "[Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField( - jniEnv, _c_Build, _f_Build__SUPPORTED_32_BIT_ABIS); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__SUPPORTED_64_BIT_ABIS = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__SUPPORTED_64_BIT_ABIS() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__SUPPORTED_64_BIT_ABIS, - "SUPPORTED_64_BIT_ABIS", "[Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField( - jniEnv, _c_Build, _f_Build__SUPPORTED_64_BIT_ABIS); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__SUPPORTED_ABIS = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__SUPPORTED_ABIS() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__SUPPORTED_ABIS, "SUPPORTED_ABIS", - "[Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, - _f_Build__SUPPORTED_ABIS); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__TAGS = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__TAGS() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__TAGS, "TAGS", "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__TAGS); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__TIME = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__TIME() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__TIME, "TIME", "J"); - int64_t _result = - (*jniEnv)->GetStaticLongField(jniEnv, _c_Build, _f_Build__TIME); - return (JniResult){.value = {.j = _result}, .exception = check_exception()}; -} - -jfieldID _f_Build__TYPE = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__TYPE() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__TYPE, "TYPE", "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__TYPE); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__UNKNOWN = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__UNKNOWN() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__UNKNOWN, "UNKNOWN", - "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__UNKNOWN); - return to_global_ref_result(_result); -} - -jfieldID _f_Build__USER = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Build__USER() { - load_env(); - load_class_global_ref(&_c_Build, "android/os/Build"); - if (_c_Build == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Build, &_f_Build__USER, "USER", "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Build, _f_Build__USER); - return to_global_ref_result(_result); -} - -// java.util.HashMap -jclass _c_HashMap = NULL; - -jmethodID _m_HashMap__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__new0(int32_t i, float f) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__new0, "", "(IF)V"); - if (_m_HashMap__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_HashMap, _m_HashMap__new0, i, f); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__new1 = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__new1(int32_t i) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__new1, "", "(I)V"); - if (_m_HashMap__new1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_HashMap, _m_HashMap__new1, i); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__new2 = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__new2() { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__new2, "", "()V"); - if (_m_HashMap__new2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_HashMap, _m_HashMap__new2); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__new3 = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__new3(jobject map) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__new3, "", "(Ljava/util/Map;)V"); - if (_m_HashMap__new3 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_HashMap, _m_HashMap__new3, map); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__size = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__size(jobject self_) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__size, "size", "()I"); - if (_m_HashMap__size == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod(jniEnv, self_, _m_HashMap__size); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_HashMap__isEmpty = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__isEmpty(jobject self_) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__isEmpty, "isEmpty", "()Z"); - if (_m_HashMap__isEmpty == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_HashMap__isEmpty); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_HashMap__get0 = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__get0(jobject self_, jobject object) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__get0, "get", - "(Ljava/lang/Object;)Ljava/lang/Object;"); - if (_m_HashMap__get0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_HashMap__get0, object); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__containsKey = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__containsKey(jobject self_, jobject object) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__containsKey, "containsKey", - "(Ljava/lang/Object;)Z"); - if (_m_HashMap__containsKey == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_HashMap__containsKey, object); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_HashMap__put = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__put(jobject self_, jobject object, jobject object1) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__put, "put", - "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); - if (_m_HashMap__put == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_HashMap__put, - object, object1); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__putAll = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__putAll(jobject self_, jobject map) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__putAll, "putAll", "(Ljava/util/Map;)V"); - if (_m_HashMap__putAll == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_HashMap__putAll, map); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_HashMap__remove = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__remove(jobject self_, jobject object) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__remove, "remove", - "(Ljava/lang/Object;)Ljava/lang/Object;"); - if (_m_HashMap__remove == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_HashMap__remove, object); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__clear = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__clear(jobject self_) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__clear, "clear", "()V"); - if (_m_HashMap__clear == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_HashMap__clear); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_HashMap__containsValue = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__containsValue(jobject self_, jobject object) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__containsValue, "containsValue", - "(Ljava/lang/Object;)Z"); - if (_m_HashMap__containsValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_HashMap__containsValue, object); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_HashMap__keySet = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__keySet(jobject self_) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__keySet, "keySet", "()Ljava/util/Set;"); - if (_m_HashMap__keySet == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_HashMap__keySet); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__values = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__values(jobject self_) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__values, "values", - "()Ljava/util/Collection;"); - if (_m_HashMap__values == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_HashMap__values); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__entrySet = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__entrySet(jobject self_) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__entrySet, "entrySet", - "()Ljava/util/Set;"); - if (_m_HashMap__entrySet == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_HashMap__entrySet); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__getOrDefault = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__getOrDefault(jobject self_, - jobject object, - jobject object1) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__getOrDefault, "getOrDefault", - "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); - if (_m_HashMap__getOrDefault == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_HashMap__getOrDefault, object, object1); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__putIfAbsent = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__putIfAbsent(jobject self_, jobject object, jobject object1) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__putIfAbsent, "putIfAbsent", - "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); - if (_m_HashMap__putIfAbsent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_HashMap__putIfAbsent, object, object1); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__remove1 = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__remove1(jobject self_, jobject object, jobject object1) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__remove1, "remove", - "(Ljava/lang/Object;Ljava/lang/Object;)Z"); - if (_m_HashMap__remove1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_HashMap__remove1, object, object1); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_HashMap__replace = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__replace(jobject self_, - jobject object, - jobject object1, - jobject object2) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__replace, "replace", - "(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z"); - if (_m_HashMap__replace == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_HashMap__replace, object, object1, object2); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_HashMap__replace1 = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__replace1(jobject self_, jobject object, jobject object1) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__replace1, "replace", - "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); - if (_m_HashMap__replace1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_HashMap__replace1, object, object1); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__computeIfAbsent = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__computeIfAbsent(jobject self_, - jobject object, - jobject function) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_HashMap, &_m_HashMap__computeIfAbsent, "computeIfAbsent", - "(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;"); - if (_m_HashMap__computeIfAbsent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_HashMap__computeIfAbsent, object, function); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__computeIfPresent = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__computeIfPresent(jobject self_, - jobject object, - jobject biFunction) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_HashMap, &_m_HashMap__computeIfPresent, "computeIfPresent", - "(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;"); - if (_m_HashMap__computeIfPresent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_HashMap__computeIfPresent, object, biFunction); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__compute = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__compute(jobject self_, jobject object, jobject biFunction) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_HashMap, &_m_HashMap__compute, "compute", - "(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;"); - if (_m_HashMap__compute == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_HashMap__compute, object, biFunction); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__merge = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__merge(jobject self_, - jobject object, - jobject object1, - jobject biFunction) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__merge, "merge", - "(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/" - "BiFunction;)Ljava/lang/Object;"); - if (_m_HashMap__merge == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_HashMap__merge, object, object1, biFunction); - return to_global_ref_result(_result); -} - -jmethodID _m_HashMap__forEach = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__forEach(jobject self_, jobject biConsumer) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__forEach, "forEach", - "(Ljava/util/function/BiConsumer;)V"); - if (_m_HashMap__forEach == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_HashMap__forEach, biConsumer); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_HashMap__replaceAll = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__replaceAll(jobject self_, jobject biFunction) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__replaceAll, "replaceAll", - "(Ljava/util/function/BiFunction;)V"); - if (_m_HashMap__replaceAll == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_HashMap__replaceAll, biFunction); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_HashMap__clone = NULL; -FFI_PLUGIN_EXPORT -JniResult HashMap__clone(jobject self_) { - load_env(); - load_class_global_ref(&_c_HashMap, "java/util/HashMap"); - if (_c_HashMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_HashMap, &_m_HashMap__clone, "clone", "()Ljava/lang/Object;"); - if (_m_HashMap__clone == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_HashMap__clone); - return to_global_ref_result(_result); -} - -// com.example.in_app_java.AndroidUtils -jclass _c_AndroidUtils = NULL; - -jmethodID _m_AndroidUtils__showToast = NULL; -FFI_PLUGIN_EXPORT -JniResult AndroidUtils__showToast(jobject mainActivity, - jobject text, - int32_t duration) { - load_env(); - load_class_global_ref(&_c_AndroidUtils, - "com/example/in_app_java/AndroidUtils"); - if (_c_AndroidUtils == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_AndroidUtils, &_m_AndroidUtils__showToast, "showToast", - "(Landroid/app/Activity;Ljava/lang/CharSequence;I)V"); - if (_m_AndroidUtils__showToast == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallStaticVoidMethod(jniEnv, _c_AndroidUtils, - _m_AndroidUtils__showToast, mainActivity, - text, duration); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} diff --git a/pkgs/jnigen/example/in_app_java/src/android_utils/dartjni.h b/pkgs/jnigen/example/in_app_java/src/android_utils/dartjni.h deleted file mode 100644 index f834d1577..000000000 --- a/pkgs/jnigen/example/in_app_java/src/android_utils/dartjni.h +++ /dev/null @@ -1,383 +0,0 @@ -// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -#pragma once - -// Note: include appropriate system jni.h as found by CMake, not third_party/jni.h. -#include -#include -#include -#include - -#if _WIN32 -#include -#else -#include -#include -#endif - -#if _WIN32 -#define FFI_PLUGIN_EXPORT __declspec(dllexport) -#else -#define FFI_PLUGIN_EXPORT -#endif - -#if defined _WIN32 -#define thread_local __declspec(thread) -#else -#define thread_local __thread -#endif - -#ifdef __ANDROID__ -#include -#endif - -#ifdef __ANDROID__ -#define __ENVP_CAST (JNIEnv**) -#else -#define __ENVP_CAST (void**) -#endif - -/// Locking functions for windows and pthread. - -#if defined _WIN32 -#include - -typedef CRITICAL_SECTION MutexLock; -typedef CONDITION_VARIABLE ConditionVariable; - -static inline void init_lock(MutexLock* lock) { - InitializeCriticalSection(lock); -} - -static inline void acquire_lock(MutexLock* lock) { - EnterCriticalSection(lock); -} - -static inline void release_lock(MutexLock* lock) { - LeaveCriticalSection(lock); -} - -static inline void destroy_lock(MutexLock* lock) { - DeleteCriticalSection(lock); -} - -static inline void init_cond(ConditionVariable* cond) { - InitializeConditionVariable(cond); -} - -static inline void signal_cond(ConditionVariable* cond) { - WakeConditionVariable(cond); -} - -static inline void wait_for(ConditionVariable* cond, MutexLock* lock) { - SleepConditionVariableCS(cond, lock, INFINITE); -} - -static inline void destroy_cond(ConditionVariable* cond) { - // Not available. -} - -static inline void free_mem(void* mem) { - CoTaskMemFree(mem); -} - -#elif defined __APPLE__ || defined __LINUX__ || defined __ANDROID__ || \ - defined __GNUC__ -#include - -typedef pthread_mutex_t MutexLock; -typedef pthread_cond_t ConditionVariable; - -static inline void init_lock(MutexLock* lock) { - pthread_mutex_init(lock, NULL); -} - -static inline void acquire_lock(MutexLock* lock) { - pthread_mutex_lock(lock); -} - -static inline void release_lock(MutexLock* lock) { - pthread_mutex_unlock(lock); -} - -static inline void destroy_lock(MutexLock* lock) { - pthread_mutex_destroy(lock); -} - -static inline void init_cond(ConditionVariable* cond) { - pthread_cond_init(cond, NULL); -} - -static inline void signal_cond(ConditionVariable* cond) { - pthread_cond_signal(cond); -} - -static inline void wait_for(ConditionVariable* cond, MutexLock* lock) { - pthread_cond_wait(cond, lock); -} - -static inline void destroy_cond(ConditionVariable* cond) { - pthread_cond_destroy(cond); -} - -static inline void free_mem(void* mem) { - free(mem); -} - -#else - -#error "No locking/condition variable support; Possibly unsupported platform" - -#endif - -typedef struct CallbackResult { - MutexLock lock; - ConditionVariable cond; - int ready; - jobject object; -} CallbackResult; - -typedef struct JniLocks { - MutexLock classLoadingLock; -} JniLocks; - -/// Represents the error when dart-jni layer has already spawned singleton VM. -#define DART_JNI_SINGLETON_EXISTS (-99); - -/// Stores the global state of the JNI. -typedef struct JniContext { - JavaVM* jvm; - jobject classLoader; - jmethodID loadClassMethod; - jobject currentActivity; - jobject appContext; - JniLocks locks; -} JniContext; - -// jniEnv for this thread, used by inline functions in this header, -// therefore declared as extern. -extern thread_local JNIEnv* jniEnv; - -extern JniContext* jni; - -/// Types used by JNI API to distinguish between primitive types. -enum JniType { - booleanType = 0, - byteType = 1, - shortType = 2, - charType = 3, - intType = 4, - longType = 5, - floatType = 6, - doubleType = 7, - objectType = 8, - voidType = 9, -}; - -/// Result type for use by JNI. -/// -/// If [exception] is null, it means the result is valid. -/// It's assumed that the caller knows the expected type in [result]. -typedef struct JniResult { - jvalue value; - jthrowable exception; -} JniResult; - -/// Similar to [JniResult] but for class lookups. -typedef struct JniClassLookupResult { - jclass value; - jthrowable exception; -} JniClassLookupResult; - -/// Similar to [JniResult] but for method/field ID lookups. -typedef struct JniPointerResult { - const void* value; - jthrowable exception; -} JniPointerResult; - -/// JniExceptionDetails holds 2 jstring objects, one is the result of -/// calling `toString` on exception object, other is stack trace; -typedef struct JniExceptionDetails { - jstring message; - jstring stacktrace; -} JniExceptionDetails; - -/// This struct contains functions which wrap method call / field access conveniently along with -/// exception checking. -/// -/// Flutter embedding checks for pending JNI exceptions before an FFI transition, which requires us -/// to check for and clear the exception before returning to dart code, which requires these functions -/// to return result types. -typedef struct JniAccessorsStruct { - JniClassLookupResult (*getClass)(char* internalName); - JniPointerResult (*getFieldID)(jclass cls, char* fieldName, char* signature); - JniPointerResult (*getStaticFieldID)(jclass cls, - char* fieldName, - char* signature); - JniPointerResult (*getMethodID)(jclass cls, - char* methodName, - char* signature); - JniPointerResult (*getStaticMethodID)(jclass cls, - char* methodName, - char* signature); - JniResult (*newObject)(jclass cls, jmethodID ctor, jvalue* args); - JniResult (*newPrimitiveArray)(jsize length, int type); - JniResult (*newObjectArray)(jsize length, - jclass elementClass, - jobject initialElement); - JniResult (*getArrayElement)(jarray array, int index, int type); - JniResult (*callMethod)(jobject obj, - jmethodID methodID, - int callType, - jvalue* args); - JniResult (*callStaticMethod)(jclass cls, - jmethodID methodID, - int callType, - jvalue* args); - JniResult (*getField)(jobject obj, jfieldID fieldID, int callType); - JniResult (*getStaticField)(jclass cls, jfieldID fieldID, int callType); - JniExceptionDetails (*getExceptionDetails)(jthrowable exception); -} JniAccessorsStruct; - -FFI_PLUGIN_EXPORT JniAccessorsStruct* GetAccessors(); - -FFI_PLUGIN_EXPORT JavaVM* GetJavaVM(void); - -FFI_PLUGIN_EXPORT JNIEnv* GetJniEnv(void); - -/// Spawn a JVM with given arguments. -/// -/// Returns JNI_OK on success, and one of the documented JNI error codes on -/// failure. It returns DART_JNI_SINGLETON_EXISTS if an attempt to spawn multiple -/// JVMs is made, even if the underlying API potentially supports multiple VMs. -FFI_PLUGIN_EXPORT int SpawnJvm(JavaVMInitArgs* args); - -/// Returns Application classLoader (on Android), -/// which can be used to load application and platform classes. -/// -/// On other platforms, NULL is returned. -FFI_PLUGIN_EXPORT jobject GetClassLoader(void); - -/// Returns application context on Android. -/// -/// On other platforms, NULL is returned. -FFI_PLUGIN_EXPORT jobject GetApplicationContext(void); - -/// Returns current activity of the app on Android. -FFI_PLUGIN_EXPORT jobject GetCurrentActivity(void); - -static inline void attach_thread() { - if (jniEnv == NULL) { - (*jni->jvm)->AttachCurrentThread(jni->jvm, __ENVP_CAST & jniEnv, NULL); - } -} - -/// Load class into [cls] using platform specific mechanism -static inline void load_class_platform(jclass* cls, const char* name) { -#ifdef __ANDROID__ - jstring className = (*jniEnv)->NewStringUTF(jniEnv, name); - *cls = (*jniEnv)->CallObjectMethod(jniEnv, jni->classLoader, - jni->loadClassMethod, className); - (*jniEnv)->DeleteLocalRef(jniEnv, className); -#else - *cls = (*jniEnv)->FindClass(jniEnv, name); -#endif -} - -static inline void load_class_global_ref(jclass* cls, const char* name) { - if (*cls == NULL) { - jclass tmp = NULL; - acquire_lock(&jni->locks.classLoadingLock); - if (*cls == NULL) { - load_class_platform(&tmp, name); - if (!(*jniEnv)->ExceptionCheck(jniEnv)) { - *cls = (*jniEnv)->NewGlobalRef(jniEnv, tmp); - (*jniEnv)->DeleteLocalRef(jniEnv, tmp); - } - } - release_lock(&jni->locks.classLoadingLock); - } -} - -static inline void load_method(jclass cls, - jmethodID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetMethodID(jniEnv, cls, name, sig); - } -} - -static inline void load_static_method(jclass cls, - jmethodID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetStaticMethodID(jniEnv, cls, name, sig); - } -} - -static inline void load_field(jclass cls, - jfieldID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetFieldID(jniEnv, cls, name, sig); - } -} - -static inline void load_static_field(jclass cls, - jfieldID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetStaticFieldID(jniEnv, cls, name, sig); - } -} - -static inline jobject to_global_ref(jobject ref) { - jobject g = (*jniEnv)->NewGlobalRef(jniEnv, ref); - (*jniEnv)->DeleteLocalRef(jniEnv, ref); - return g; -} - -// These functions are useful for C+Dart bindings, and not required for pure dart bindings. - -FFI_PLUGIN_EXPORT JniContext* GetJniContextPtr(); - -/// For use by jni_gen's generated code -/// don't use these. - -// these 2 fn ptr vars will be defined by generated code library -extern JniContext* (*context_getter)(void); -extern JNIEnv* (*env_getter)(void); - -// this function will be exported by generated code library -// it will set above 2 variables. -FFI_PLUGIN_EXPORT void setJniGetters(struct JniContext* (*cg)(void), - JNIEnv* (*eg)(void)); - -static inline void load_env() { - if (jniEnv == NULL) { - jni = context_getter(); - jniEnv = env_getter(); - } -} - -static inline jthrowable check_exception() { - jthrowable exception = (*jniEnv)->ExceptionOccurred(jniEnv); - if (exception != NULL) (*jniEnv)->ExceptionClear(jniEnv); - if (exception == NULL) return NULL; - return to_global_ref(exception); -} - -static inline JniResult to_global_ref_result(jobject ref) { - JniResult result; - result.exception = check_exception(); - if (result.exception == NULL) { - result.value.l = to_global_ref(ref); - } - return result; -} diff --git a/pkgs/jnigen/example/kotlin_plugin/android/build.gradle b/pkgs/jnigen/example/kotlin_plugin/android/build.gradle index 6aa0c6272..04bce9b0c 100644 --- a/pkgs/jnigen/example/kotlin_plugin/android/build.gradle +++ b/pkgs/jnigen/example/kotlin_plugin/android/build.gradle @@ -26,21 +26,6 @@ android { main.java.srcDirs += 'src/main/kotlin' } - // Invoke the shared CMake build with the Android Gradle Plugin. - externalNativeBuild { - cmake { - path "../src/CMakeLists.txt" - - // The default CMake version for the Android Gradle Plugin is 3.10.2. - // https://developer.android.com/studio/projects/install-ndk#vanilla_cmake - // - // The Flutter tooling requires that developers have CMake 3.10 or later - // installed. You should not increase this version, as doing so will cause - // the plugin to fail to compile for some customers of the plugin. - // version "3.10.2" - } - } - compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 diff --git a/pkgs/jnigen/example/kotlin_plugin/jnigen.yaml b/pkgs/jnigen/example/kotlin_plugin/jnigen.yaml index 60978f56f..e6f08ecc6 100644 --- a/pkgs/jnigen/example/kotlin_plugin/jnigen.yaml +++ b/pkgs/jnigen/example/kotlin_plugin/jnigen.yaml @@ -5,12 +5,7 @@ android_sdk_config: summarizer: backend: asm -suspend_fun_to_async: true - output: - c: - library_name: kotlin_plugin_bindings - path: src/ dart: path: lib/kotlin_bindings.dart structure: single_file diff --git a/pkgs/jnigen/example/kotlin_plugin/lib/kotlin_bindings.dart b/pkgs/jnigen/example/kotlin_plugin/lib/kotlin_bindings.dart index 8e58392c7..0bf5803c8 100644 --- a/pkgs/jnigen/example/kotlin_plugin/lib/kotlin_bindings.dart +++ b/pkgs/jnigen/example/kotlin_plugin/lib/kotlin_bindings.dart @@ -23,11 +23,6 @@ import "dart:ffi" as ffi; import "package:jni/internal_helpers_for_jnigen.dart"; import "package:jni/jni.dart" as jni; -// Auto-generated initialization code. - -final ffi.Pointer Function(String sym) jniLookup = - ProtectedJniExtensions.initGeneratedLibrary("kotlin_plugin_bindings"); - /// from: Example class Example extends jni.JObject { @override @@ -37,25 +32,49 @@ class Example extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = jni.JClass.forName(r"Example"); + /// The type which includes information such as the signature of this class. static const type = $ExampleType(); - static final _new0 = - jniLookup>("Example__new0") - .asFunction(); + static final _id_new0 = _class.constructorId( + r"()V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory Example() { - return Example.fromReference(_new0().reference); + return Example.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } - static final _thinkBeforeAnswering = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("Example__thinkBeforeAnswering") + static final _id_thinkBeforeAnswering = _class.instanceMethodId( + r"thinkBeforeAnswering", + r"(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", + ); + + static final _thinkBeforeAnswering = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public final java.lang.Object thinkBeforeAnswering(kotlin.coroutines.Continuation continuation) /// The returned object must be released after use, by calling the [release] method. @@ -63,7 +82,8 @@ class Example extends jni.JObject { final $p = ReceivePort(); final $c = jni.JObject.fromReference( ProtectedJniExtensions.newPortContinuation($p)); - _thinkBeforeAnswering(reference.pointer, $c.reference.pointer) + _thinkBeforeAnswering(reference.pointer, + _id_thinkBeforeAnswering as jni.JMethodIDPtr, $c.reference.pointer) .object(const jni.JObjectType()); final $o = jni.JGlobalReference(jni.JObjectPtr.fromAddress(await $p.first)); final $k = const jni.JStringType().jClass.reference.pointer; diff --git a/pkgs/jnigen/example/kotlin_plugin/src/.clang-format b/pkgs/jnigen/example/kotlin_plugin/src/.clang-format deleted file mode 100644 index a256c2f09..000000000 --- a/pkgs/jnigen/example/kotlin_plugin/src/.clang-format +++ /dev/null @@ -1,15 +0,0 @@ -# From dart SDK: https://github.com/dart-lang/sdk/blob/main/.clang-format - -# Defines the Chromium style for automatic reformatting. -# http://clang.llvm.org/docs/ClangFormatStyleOptions.html -BasedOnStyle: Chromium - -# clang-format doesn't seem to do a good job of this for longer comments. -ReflowComments: 'false' - -# We have lots of these. Though we need to put them all in curly braces, -# clang-format can't do that. -AllowShortIfStatementsOnASingleLine: 'true' - -# Put escaped newlines into the rightmost column. -AlignEscapedNewlinesLeft: false diff --git a/pkgs/jnigen/example/kotlin_plugin/src/CMakeLists.txt b/pkgs/jnigen/example/kotlin_plugin/src/CMakeLists.txt deleted file mode 100644 index 78d9dca2c..000000000 --- a/pkgs/jnigen/example/kotlin_plugin/src/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# jni_native_build (Build with jni:setup. Do not delete this line.) - -# The Flutter tooling requires that developers have CMake 3.10 or later -# installed. You should not increase this version, as doing so will cause -# the plugin to fail to compile for some customers of the plugin. -cmake_minimum_required(VERSION 3.10) - -project(kotlin_plugin_bindings VERSION 0.0.1 LANGUAGES C) - -add_library(kotlin_plugin_bindings SHARED - "./kotlin_plugin_bindings.c" -) - -set_target_properties(kotlin_plugin_bindings PROPERTIES - OUTPUT_NAME "kotlin_plugin_bindings" -) - -target_compile_definitions(kotlin_plugin_bindings PUBLIC DART_SHARED_LIB) - -if(WIN32) - set_target_properties(${TARGET_NAME} PROPERTIES - LINK_FLAGS "/DELAYLOAD:jvm.dll") -endif() - -if (ANDROID) - target_link_libraries(kotlin_plugin_bindings log) -else() - find_package(Java REQUIRED) - find_package(JNI REQUIRED) - include_directories(${JNI_INCLUDE_DIRS}) - target_link_libraries(kotlin_plugin_bindings ${JNI_LIBRARIES}) -endif() diff --git a/pkgs/jnigen/example/kotlin_plugin/src/dartjni.h b/pkgs/jnigen/example/kotlin_plugin/src/dartjni.h deleted file mode 100644 index f834d1577..000000000 --- a/pkgs/jnigen/example/kotlin_plugin/src/dartjni.h +++ /dev/null @@ -1,383 +0,0 @@ -// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -#pragma once - -// Note: include appropriate system jni.h as found by CMake, not third_party/jni.h. -#include -#include -#include -#include - -#if _WIN32 -#include -#else -#include -#include -#endif - -#if _WIN32 -#define FFI_PLUGIN_EXPORT __declspec(dllexport) -#else -#define FFI_PLUGIN_EXPORT -#endif - -#if defined _WIN32 -#define thread_local __declspec(thread) -#else -#define thread_local __thread -#endif - -#ifdef __ANDROID__ -#include -#endif - -#ifdef __ANDROID__ -#define __ENVP_CAST (JNIEnv**) -#else -#define __ENVP_CAST (void**) -#endif - -/// Locking functions for windows and pthread. - -#if defined _WIN32 -#include - -typedef CRITICAL_SECTION MutexLock; -typedef CONDITION_VARIABLE ConditionVariable; - -static inline void init_lock(MutexLock* lock) { - InitializeCriticalSection(lock); -} - -static inline void acquire_lock(MutexLock* lock) { - EnterCriticalSection(lock); -} - -static inline void release_lock(MutexLock* lock) { - LeaveCriticalSection(lock); -} - -static inline void destroy_lock(MutexLock* lock) { - DeleteCriticalSection(lock); -} - -static inline void init_cond(ConditionVariable* cond) { - InitializeConditionVariable(cond); -} - -static inline void signal_cond(ConditionVariable* cond) { - WakeConditionVariable(cond); -} - -static inline void wait_for(ConditionVariable* cond, MutexLock* lock) { - SleepConditionVariableCS(cond, lock, INFINITE); -} - -static inline void destroy_cond(ConditionVariable* cond) { - // Not available. -} - -static inline void free_mem(void* mem) { - CoTaskMemFree(mem); -} - -#elif defined __APPLE__ || defined __LINUX__ || defined __ANDROID__ || \ - defined __GNUC__ -#include - -typedef pthread_mutex_t MutexLock; -typedef pthread_cond_t ConditionVariable; - -static inline void init_lock(MutexLock* lock) { - pthread_mutex_init(lock, NULL); -} - -static inline void acquire_lock(MutexLock* lock) { - pthread_mutex_lock(lock); -} - -static inline void release_lock(MutexLock* lock) { - pthread_mutex_unlock(lock); -} - -static inline void destroy_lock(MutexLock* lock) { - pthread_mutex_destroy(lock); -} - -static inline void init_cond(ConditionVariable* cond) { - pthread_cond_init(cond, NULL); -} - -static inline void signal_cond(ConditionVariable* cond) { - pthread_cond_signal(cond); -} - -static inline void wait_for(ConditionVariable* cond, MutexLock* lock) { - pthread_cond_wait(cond, lock); -} - -static inline void destroy_cond(ConditionVariable* cond) { - pthread_cond_destroy(cond); -} - -static inline void free_mem(void* mem) { - free(mem); -} - -#else - -#error "No locking/condition variable support; Possibly unsupported platform" - -#endif - -typedef struct CallbackResult { - MutexLock lock; - ConditionVariable cond; - int ready; - jobject object; -} CallbackResult; - -typedef struct JniLocks { - MutexLock classLoadingLock; -} JniLocks; - -/// Represents the error when dart-jni layer has already spawned singleton VM. -#define DART_JNI_SINGLETON_EXISTS (-99); - -/// Stores the global state of the JNI. -typedef struct JniContext { - JavaVM* jvm; - jobject classLoader; - jmethodID loadClassMethod; - jobject currentActivity; - jobject appContext; - JniLocks locks; -} JniContext; - -// jniEnv for this thread, used by inline functions in this header, -// therefore declared as extern. -extern thread_local JNIEnv* jniEnv; - -extern JniContext* jni; - -/// Types used by JNI API to distinguish between primitive types. -enum JniType { - booleanType = 0, - byteType = 1, - shortType = 2, - charType = 3, - intType = 4, - longType = 5, - floatType = 6, - doubleType = 7, - objectType = 8, - voidType = 9, -}; - -/// Result type for use by JNI. -/// -/// If [exception] is null, it means the result is valid. -/// It's assumed that the caller knows the expected type in [result]. -typedef struct JniResult { - jvalue value; - jthrowable exception; -} JniResult; - -/// Similar to [JniResult] but for class lookups. -typedef struct JniClassLookupResult { - jclass value; - jthrowable exception; -} JniClassLookupResult; - -/// Similar to [JniResult] but for method/field ID lookups. -typedef struct JniPointerResult { - const void* value; - jthrowable exception; -} JniPointerResult; - -/// JniExceptionDetails holds 2 jstring objects, one is the result of -/// calling `toString` on exception object, other is stack trace; -typedef struct JniExceptionDetails { - jstring message; - jstring stacktrace; -} JniExceptionDetails; - -/// This struct contains functions which wrap method call / field access conveniently along with -/// exception checking. -/// -/// Flutter embedding checks for pending JNI exceptions before an FFI transition, which requires us -/// to check for and clear the exception before returning to dart code, which requires these functions -/// to return result types. -typedef struct JniAccessorsStruct { - JniClassLookupResult (*getClass)(char* internalName); - JniPointerResult (*getFieldID)(jclass cls, char* fieldName, char* signature); - JniPointerResult (*getStaticFieldID)(jclass cls, - char* fieldName, - char* signature); - JniPointerResult (*getMethodID)(jclass cls, - char* methodName, - char* signature); - JniPointerResult (*getStaticMethodID)(jclass cls, - char* methodName, - char* signature); - JniResult (*newObject)(jclass cls, jmethodID ctor, jvalue* args); - JniResult (*newPrimitiveArray)(jsize length, int type); - JniResult (*newObjectArray)(jsize length, - jclass elementClass, - jobject initialElement); - JniResult (*getArrayElement)(jarray array, int index, int type); - JniResult (*callMethod)(jobject obj, - jmethodID methodID, - int callType, - jvalue* args); - JniResult (*callStaticMethod)(jclass cls, - jmethodID methodID, - int callType, - jvalue* args); - JniResult (*getField)(jobject obj, jfieldID fieldID, int callType); - JniResult (*getStaticField)(jclass cls, jfieldID fieldID, int callType); - JniExceptionDetails (*getExceptionDetails)(jthrowable exception); -} JniAccessorsStruct; - -FFI_PLUGIN_EXPORT JniAccessorsStruct* GetAccessors(); - -FFI_PLUGIN_EXPORT JavaVM* GetJavaVM(void); - -FFI_PLUGIN_EXPORT JNIEnv* GetJniEnv(void); - -/// Spawn a JVM with given arguments. -/// -/// Returns JNI_OK on success, and one of the documented JNI error codes on -/// failure. It returns DART_JNI_SINGLETON_EXISTS if an attempt to spawn multiple -/// JVMs is made, even if the underlying API potentially supports multiple VMs. -FFI_PLUGIN_EXPORT int SpawnJvm(JavaVMInitArgs* args); - -/// Returns Application classLoader (on Android), -/// which can be used to load application and platform classes. -/// -/// On other platforms, NULL is returned. -FFI_PLUGIN_EXPORT jobject GetClassLoader(void); - -/// Returns application context on Android. -/// -/// On other platforms, NULL is returned. -FFI_PLUGIN_EXPORT jobject GetApplicationContext(void); - -/// Returns current activity of the app on Android. -FFI_PLUGIN_EXPORT jobject GetCurrentActivity(void); - -static inline void attach_thread() { - if (jniEnv == NULL) { - (*jni->jvm)->AttachCurrentThread(jni->jvm, __ENVP_CAST & jniEnv, NULL); - } -} - -/// Load class into [cls] using platform specific mechanism -static inline void load_class_platform(jclass* cls, const char* name) { -#ifdef __ANDROID__ - jstring className = (*jniEnv)->NewStringUTF(jniEnv, name); - *cls = (*jniEnv)->CallObjectMethod(jniEnv, jni->classLoader, - jni->loadClassMethod, className); - (*jniEnv)->DeleteLocalRef(jniEnv, className); -#else - *cls = (*jniEnv)->FindClass(jniEnv, name); -#endif -} - -static inline void load_class_global_ref(jclass* cls, const char* name) { - if (*cls == NULL) { - jclass tmp = NULL; - acquire_lock(&jni->locks.classLoadingLock); - if (*cls == NULL) { - load_class_platform(&tmp, name); - if (!(*jniEnv)->ExceptionCheck(jniEnv)) { - *cls = (*jniEnv)->NewGlobalRef(jniEnv, tmp); - (*jniEnv)->DeleteLocalRef(jniEnv, tmp); - } - } - release_lock(&jni->locks.classLoadingLock); - } -} - -static inline void load_method(jclass cls, - jmethodID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetMethodID(jniEnv, cls, name, sig); - } -} - -static inline void load_static_method(jclass cls, - jmethodID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetStaticMethodID(jniEnv, cls, name, sig); - } -} - -static inline void load_field(jclass cls, - jfieldID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetFieldID(jniEnv, cls, name, sig); - } -} - -static inline void load_static_field(jclass cls, - jfieldID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetStaticFieldID(jniEnv, cls, name, sig); - } -} - -static inline jobject to_global_ref(jobject ref) { - jobject g = (*jniEnv)->NewGlobalRef(jniEnv, ref); - (*jniEnv)->DeleteLocalRef(jniEnv, ref); - return g; -} - -// These functions are useful for C+Dart bindings, and not required for pure dart bindings. - -FFI_PLUGIN_EXPORT JniContext* GetJniContextPtr(); - -/// For use by jni_gen's generated code -/// don't use these. - -// these 2 fn ptr vars will be defined by generated code library -extern JniContext* (*context_getter)(void); -extern JNIEnv* (*env_getter)(void); - -// this function will be exported by generated code library -// it will set above 2 variables. -FFI_PLUGIN_EXPORT void setJniGetters(struct JniContext* (*cg)(void), - JNIEnv* (*eg)(void)); - -static inline void load_env() { - if (jniEnv == NULL) { - jni = context_getter(); - jniEnv = env_getter(); - } -} - -static inline jthrowable check_exception() { - jthrowable exception = (*jniEnv)->ExceptionOccurred(jniEnv); - if (exception != NULL) (*jniEnv)->ExceptionClear(jniEnv); - if (exception == NULL) return NULL; - return to_global_ref(exception); -} - -static inline JniResult to_global_ref_result(jobject ref) { - JniResult result; - result.exception = check_exception(); - if (result.exception == NULL) { - result.value.l = to_global_ref(ref); - } - return result; -} diff --git a/pkgs/jnigen/example/kotlin_plugin/src/kotlin_plugin_bindings.c b/pkgs/jnigen/example/kotlin_plugin/src/kotlin_plugin_bindings.c deleted file mode 100644 index 28a2af621..000000000 --- a/pkgs/jnigen/example/kotlin_plugin/src/kotlin_plugin_bindings.c +++ /dev/null @@ -1,50 +0,0 @@ -// Autogenerated by jnigen. DO NOT EDIT! - -#include -#include "dartjni.h" -#include "jni.h" - -thread_local JNIEnv* jniEnv; -JniContext* jni; - -JniContext* (*context_getter)(void); -JNIEnv* (*env_getter)(void); - -void setJniGetters(JniContext* (*cg)(void), JNIEnv* (*eg)(void)) { - context_getter = cg; - env_getter = eg; -} - -// Example -jclass _c_Example = NULL; - -jmethodID _m_Example__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__new0() { - load_env(); - load_class_global_ref(&_c_Example, "Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__new0, "", "()V"); - if (_m_Example__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_Example, _m_Example__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_Example__thinkBeforeAnswering = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__thinkBeforeAnswering(jobject self_, jobject continuation) { - load_env(); - load_class_global_ref(&_c_Example, "Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__thinkBeforeAnswering, - "thinkBeforeAnswering", - "(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;"); - if (_m_Example__thinkBeforeAnswering == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_Example__thinkBeforeAnswering, continuation); - return to_global_ref_result(_result); -} diff --git a/pkgs/jnigen/example/notification_plugin/android/build.gradle b/pkgs/jnigen/example/notification_plugin/android/build.gradle index c3dd19340..fd63c0d8a 100644 --- a/pkgs/jnigen/example/notification_plugin/android/build.gradle +++ b/pkgs/jnigen/example/notification_plugin/android/build.gradle @@ -21,21 +21,6 @@ android { // the version in their app and to download a newer version of the NDK. ndkVersion "21.1.6352462" - // Invoke the shared CMake build with the Android Gradle Plugin. - externalNativeBuild { - cmake { - path "../src/CMakeLists.txt" - - // The default CMake version for the Android Gradle Plugin is 3.10.2. - // https://developer.android.com/studio/projects/install-ndk#vanilla_cmake - // - // The Flutter tooling requires that developers have CMake 3.10 or later - // installed. You should not increase this version, as doing so will cause - // the plugin to fail to compile for some customers of the plugin. - // version "3.10.2" - } - } - compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 diff --git a/pkgs/jnigen/example/notification_plugin/jnigen.yaml b/pkgs/jnigen/example/notification_plugin/jnigen.yaml index 21f4106f1..25db43459 100644 --- a/pkgs/jnigen/example/notification_plugin/jnigen.yaml +++ b/pkgs/jnigen/example/notification_plugin/jnigen.yaml @@ -13,9 +13,6 @@ classes: - 'com.example.notification_plugin.Notifications' output: - c: - path: 'src/' - library_name: notification_plugin dart: path: 'lib/notifications.dart' ## Output to single file instead of recreating source's file structure. diff --git a/pkgs/jnigen/example/notification_plugin/lib/notifications.dart b/pkgs/jnigen/example/notification_plugin/lib/notifications.dart index f74175f85..ef127a052 100644 --- a/pkgs/jnigen/example/notification_plugin/lib/notifications.dart +++ b/pkgs/jnigen/example/notification_plugin/lib/notifications.dart @@ -27,11 +27,6 @@ import "dart:ffi" as ffi; import "package:jni/internal_helpers_for_jnigen.dart"; import "package:jni/jni.dart" as jni; -// Auto-generated initialization code. - -final ffi.Pointer Function(String sym) jniLookup = - ProtectedJniExtensions.initGeneratedLibrary("notification_plugin"); - /// from: com.example.notification_plugin.Notifications class Notifications extends jni.JObject { @override @@ -41,28 +36,60 @@ class Notifications extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = + jni.JClass.forName(r"com/example/notification_plugin/Notifications"); + /// The type which includes information such as the signature of this class. static const type = $NotificationsType(); - static final _new0 = jniLookup>( - "Notifications__new0") - .asFunction(); + static final _id_new0 = _class.constructorId( + r"()V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory Notifications() { - return Notifications.fromReference(_new0().reference); + return Notifications.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } - static final _showNotification = jniLookup< + static final _id_showNotification = _class.staticMethodId( + r"showNotification", + r"(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)V", + ); + + static final _showNotification = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Int32, + jni.JThrowablePtr Function( ffi.Pointer, - ffi.Pointer)>>("Notifications__showNotification") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Int64, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticVoidMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, int, - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer)>(); /// from: static public void showNotification(android.content.Context context, int notificationID, java.lang.String title, java.lang.String text) static void showNotification( @@ -71,8 +98,13 @@ class Notifications extends jni.JObject { jni.JString title, jni.JString text, ) { - _showNotification(context.reference.pointer, notificationID, - title.reference.pointer, text.reference.pointer) + _showNotification( + _class.reference.pointer, + _id_showNotification as jni.JMethodIDPtr, + context.reference.pointer, + notificationID, + title.reference.pointer, + text.reference.pointer) .check(); } } diff --git a/pkgs/jnigen/example/notification_plugin/src/.clang-format b/pkgs/jnigen/example/notification_plugin/src/.clang-format deleted file mode 100644 index a256c2f09..000000000 --- a/pkgs/jnigen/example/notification_plugin/src/.clang-format +++ /dev/null @@ -1,15 +0,0 @@ -# From dart SDK: https://github.com/dart-lang/sdk/blob/main/.clang-format - -# Defines the Chromium style for automatic reformatting. -# http://clang.llvm.org/docs/ClangFormatStyleOptions.html -BasedOnStyle: Chromium - -# clang-format doesn't seem to do a good job of this for longer comments. -ReflowComments: 'false' - -# We have lots of these. Though we need to put them all in curly braces, -# clang-format can't do that. -AllowShortIfStatementsOnASingleLine: 'true' - -# Put escaped newlines into the rightmost column. -AlignEscapedNewlinesLeft: false diff --git a/pkgs/jnigen/example/notification_plugin/src/CMakeLists.txt b/pkgs/jnigen/example/notification_plugin/src/CMakeLists.txt deleted file mode 100644 index 39c985034..000000000 --- a/pkgs/jnigen/example/notification_plugin/src/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# jni_native_build (Build with jni:setup. Do not delete this line.) - -# The Flutter tooling requires that developers have CMake 3.10 or later -# installed. You should not increase this version, as doing so will cause -# the plugin to fail to compile for some customers of the plugin. -cmake_minimum_required(VERSION 3.10) - -project(notification_plugin VERSION 0.0.1 LANGUAGES C) - -add_library(notification_plugin SHARED - "./notification_plugin.c" -) - -set_target_properties(notification_plugin PROPERTIES - OUTPUT_NAME "notification_plugin" -) - -target_compile_definitions(notification_plugin PUBLIC DART_SHARED_LIB) - -if(WIN32) - set_target_properties(${TARGET_NAME} PROPERTIES - LINK_FLAGS "/DELAYLOAD:jvm.dll") -endif() - -if (ANDROID) - target_link_libraries(notification_plugin log) -else() - find_package(Java REQUIRED) - find_package(JNI REQUIRED) - include_directories(${JNI_INCLUDE_DIRS}) - target_link_libraries(notification_plugin ${JNI_LIBRARIES}) -endif() diff --git a/pkgs/jnigen/example/notification_plugin/src/dartjni.h b/pkgs/jnigen/example/notification_plugin/src/dartjni.h deleted file mode 100644 index f834d1577..000000000 --- a/pkgs/jnigen/example/notification_plugin/src/dartjni.h +++ /dev/null @@ -1,383 +0,0 @@ -// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -#pragma once - -// Note: include appropriate system jni.h as found by CMake, not third_party/jni.h. -#include -#include -#include -#include - -#if _WIN32 -#include -#else -#include -#include -#endif - -#if _WIN32 -#define FFI_PLUGIN_EXPORT __declspec(dllexport) -#else -#define FFI_PLUGIN_EXPORT -#endif - -#if defined _WIN32 -#define thread_local __declspec(thread) -#else -#define thread_local __thread -#endif - -#ifdef __ANDROID__ -#include -#endif - -#ifdef __ANDROID__ -#define __ENVP_CAST (JNIEnv**) -#else -#define __ENVP_CAST (void**) -#endif - -/// Locking functions for windows and pthread. - -#if defined _WIN32 -#include - -typedef CRITICAL_SECTION MutexLock; -typedef CONDITION_VARIABLE ConditionVariable; - -static inline void init_lock(MutexLock* lock) { - InitializeCriticalSection(lock); -} - -static inline void acquire_lock(MutexLock* lock) { - EnterCriticalSection(lock); -} - -static inline void release_lock(MutexLock* lock) { - LeaveCriticalSection(lock); -} - -static inline void destroy_lock(MutexLock* lock) { - DeleteCriticalSection(lock); -} - -static inline void init_cond(ConditionVariable* cond) { - InitializeConditionVariable(cond); -} - -static inline void signal_cond(ConditionVariable* cond) { - WakeConditionVariable(cond); -} - -static inline void wait_for(ConditionVariable* cond, MutexLock* lock) { - SleepConditionVariableCS(cond, lock, INFINITE); -} - -static inline void destroy_cond(ConditionVariable* cond) { - // Not available. -} - -static inline void free_mem(void* mem) { - CoTaskMemFree(mem); -} - -#elif defined __APPLE__ || defined __LINUX__ || defined __ANDROID__ || \ - defined __GNUC__ -#include - -typedef pthread_mutex_t MutexLock; -typedef pthread_cond_t ConditionVariable; - -static inline void init_lock(MutexLock* lock) { - pthread_mutex_init(lock, NULL); -} - -static inline void acquire_lock(MutexLock* lock) { - pthread_mutex_lock(lock); -} - -static inline void release_lock(MutexLock* lock) { - pthread_mutex_unlock(lock); -} - -static inline void destroy_lock(MutexLock* lock) { - pthread_mutex_destroy(lock); -} - -static inline void init_cond(ConditionVariable* cond) { - pthread_cond_init(cond, NULL); -} - -static inline void signal_cond(ConditionVariable* cond) { - pthread_cond_signal(cond); -} - -static inline void wait_for(ConditionVariable* cond, MutexLock* lock) { - pthread_cond_wait(cond, lock); -} - -static inline void destroy_cond(ConditionVariable* cond) { - pthread_cond_destroy(cond); -} - -static inline void free_mem(void* mem) { - free(mem); -} - -#else - -#error "No locking/condition variable support; Possibly unsupported platform" - -#endif - -typedef struct CallbackResult { - MutexLock lock; - ConditionVariable cond; - int ready; - jobject object; -} CallbackResult; - -typedef struct JniLocks { - MutexLock classLoadingLock; -} JniLocks; - -/// Represents the error when dart-jni layer has already spawned singleton VM. -#define DART_JNI_SINGLETON_EXISTS (-99); - -/// Stores the global state of the JNI. -typedef struct JniContext { - JavaVM* jvm; - jobject classLoader; - jmethodID loadClassMethod; - jobject currentActivity; - jobject appContext; - JniLocks locks; -} JniContext; - -// jniEnv for this thread, used by inline functions in this header, -// therefore declared as extern. -extern thread_local JNIEnv* jniEnv; - -extern JniContext* jni; - -/// Types used by JNI API to distinguish between primitive types. -enum JniType { - booleanType = 0, - byteType = 1, - shortType = 2, - charType = 3, - intType = 4, - longType = 5, - floatType = 6, - doubleType = 7, - objectType = 8, - voidType = 9, -}; - -/// Result type for use by JNI. -/// -/// If [exception] is null, it means the result is valid. -/// It's assumed that the caller knows the expected type in [result]. -typedef struct JniResult { - jvalue value; - jthrowable exception; -} JniResult; - -/// Similar to [JniResult] but for class lookups. -typedef struct JniClassLookupResult { - jclass value; - jthrowable exception; -} JniClassLookupResult; - -/// Similar to [JniResult] but for method/field ID lookups. -typedef struct JniPointerResult { - const void* value; - jthrowable exception; -} JniPointerResult; - -/// JniExceptionDetails holds 2 jstring objects, one is the result of -/// calling `toString` on exception object, other is stack trace; -typedef struct JniExceptionDetails { - jstring message; - jstring stacktrace; -} JniExceptionDetails; - -/// This struct contains functions which wrap method call / field access conveniently along with -/// exception checking. -/// -/// Flutter embedding checks for pending JNI exceptions before an FFI transition, which requires us -/// to check for and clear the exception before returning to dart code, which requires these functions -/// to return result types. -typedef struct JniAccessorsStruct { - JniClassLookupResult (*getClass)(char* internalName); - JniPointerResult (*getFieldID)(jclass cls, char* fieldName, char* signature); - JniPointerResult (*getStaticFieldID)(jclass cls, - char* fieldName, - char* signature); - JniPointerResult (*getMethodID)(jclass cls, - char* methodName, - char* signature); - JniPointerResult (*getStaticMethodID)(jclass cls, - char* methodName, - char* signature); - JniResult (*newObject)(jclass cls, jmethodID ctor, jvalue* args); - JniResult (*newPrimitiveArray)(jsize length, int type); - JniResult (*newObjectArray)(jsize length, - jclass elementClass, - jobject initialElement); - JniResult (*getArrayElement)(jarray array, int index, int type); - JniResult (*callMethod)(jobject obj, - jmethodID methodID, - int callType, - jvalue* args); - JniResult (*callStaticMethod)(jclass cls, - jmethodID methodID, - int callType, - jvalue* args); - JniResult (*getField)(jobject obj, jfieldID fieldID, int callType); - JniResult (*getStaticField)(jclass cls, jfieldID fieldID, int callType); - JniExceptionDetails (*getExceptionDetails)(jthrowable exception); -} JniAccessorsStruct; - -FFI_PLUGIN_EXPORT JniAccessorsStruct* GetAccessors(); - -FFI_PLUGIN_EXPORT JavaVM* GetJavaVM(void); - -FFI_PLUGIN_EXPORT JNIEnv* GetJniEnv(void); - -/// Spawn a JVM with given arguments. -/// -/// Returns JNI_OK on success, and one of the documented JNI error codes on -/// failure. It returns DART_JNI_SINGLETON_EXISTS if an attempt to spawn multiple -/// JVMs is made, even if the underlying API potentially supports multiple VMs. -FFI_PLUGIN_EXPORT int SpawnJvm(JavaVMInitArgs* args); - -/// Returns Application classLoader (on Android), -/// which can be used to load application and platform classes. -/// -/// On other platforms, NULL is returned. -FFI_PLUGIN_EXPORT jobject GetClassLoader(void); - -/// Returns application context on Android. -/// -/// On other platforms, NULL is returned. -FFI_PLUGIN_EXPORT jobject GetApplicationContext(void); - -/// Returns current activity of the app on Android. -FFI_PLUGIN_EXPORT jobject GetCurrentActivity(void); - -static inline void attach_thread() { - if (jniEnv == NULL) { - (*jni->jvm)->AttachCurrentThread(jni->jvm, __ENVP_CAST & jniEnv, NULL); - } -} - -/// Load class into [cls] using platform specific mechanism -static inline void load_class_platform(jclass* cls, const char* name) { -#ifdef __ANDROID__ - jstring className = (*jniEnv)->NewStringUTF(jniEnv, name); - *cls = (*jniEnv)->CallObjectMethod(jniEnv, jni->classLoader, - jni->loadClassMethod, className); - (*jniEnv)->DeleteLocalRef(jniEnv, className); -#else - *cls = (*jniEnv)->FindClass(jniEnv, name); -#endif -} - -static inline void load_class_global_ref(jclass* cls, const char* name) { - if (*cls == NULL) { - jclass tmp = NULL; - acquire_lock(&jni->locks.classLoadingLock); - if (*cls == NULL) { - load_class_platform(&tmp, name); - if (!(*jniEnv)->ExceptionCheck(jniEnv)) { - *cls = (*jniEnv)->NewGlobalRef(jniEnv, tmp); - (*jniEnv)->DeleteLocalRef(jniEnv, tmp); - } - } - release_lock(&jni->locks.classLoadingLock); - } -} - -static inline void load_method(jclass cls, - jmethodID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetMethodID(jniEnv, cls, name, sig); - } -} - -static inline void load_static_method(jclass cls, - jmethodID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetStaticMethodID(jniEnv, cls, name, sig); - } -} - -static inline void load_field(jclass cls, - jfieldID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetFieldID(jniEnv, cls, name, sig); - } -} - -static inline void load_static_field(jclass cls, - jfieldID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetStaticFieldID(jniEnv, cls, name, sig); - } -} - -static inline jobject to_global_ref(jobject ref) { - jobject g = (*jniEnv)->NewGlobalRef(jniEnv, ref); - (*jniEnv)->DeleteLocalRef(jniEnv, ref); - return g; -} - -// These functions are useful for C+Dart bindings, and not required for pure dart bindings. - -FFI_PLUGIN_EXPORT JniContext* GetJniContextPtr(); - -/// For use by jni_gen's generated code -/// don't use these. - -// these 2 fn ptr vars will be defined by generated code library -extern JniContext* (*context_getter)(void); -extern JNIEnv* (*env_getter)(void); - -// this function will be exported by generated code library -// it will set above 2 variables. -FFI_PLUGIN_EXPORT void setJniGetters(struct JniContext* (*cg)(void), - JNIEnv* (*eg)(void)); - -static inline void load_env() { - if (jniEnv == NULL) { - jni = context_getter(); - jniEnv = env_getter(); - } -} - -static inline jthrowable check_exception() { - jthrowable exception = (*jniEnv)->ExceptionOccurred(jniEnv); - if (exception != NULL) (*jniEnv)->ExceptionClear(jniEnv); - if (exception == NULL) return NULL; - return to_global_ref(exception); -} - -static inline JniResult to_global_ref_result(jobject ref) { - JniResult result; - result.exception = check_exception(); - if (result.exception == NULL) { - result.value.l = to_global_ref(ref); - } - return result; -} diff --git a/pkgs/jnigen/example/notification_plugin/src/notification_plugin.c b/pkgs/jnigen/example/notification_plugin/src/notification_plugin.c deleted file mode 100644 index 9f1e57745..000000000 --- a/pkgs/jnigen/example/notification_plugin/src/notification_plugin.c +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -// Autogenerated by jnigen. DO NOT EDIT! - -#include -#include "dartjni.h" -#include "jni.h" - -thread_local JNIEnv* jniEnv; -JniContext* jni; - -JniContext* (*context_getter)(void); -JNIEnv* (*env_getter)(void); - -void setJniGetters(JniContext* (*cg)(void), JNIEnv* (*eg)(void)) { - context_getter = cg; - env_getter = eg; -} - -// com.example.notification_plugin.Notifications -jclass _c_Notifications = NULL; - -jmethodID _m_Notifications__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult Notifications__new0() { - load_env(); - load_class_global_ref(&_c_Notifications, - "com/example/notification_plugin/Notifications"); - if (_c_Notifications == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Notifications, &_m_Notifications__new0, "", "()V"); - if (_m_Notifications__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_Notifications, _m_Notifications__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_Notifications__showNotification = NULL; -FFI_PLUGIN_EXPORT -JniResult Notifications__showNotification(jobject context, - int32_t notificationID, - jobject title, - jobject text) { - load_env(); - load_class_global_ref(&_c_Notifications, - "com/example/notification_plugin/Notifications"); - if (_c_Notifications == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_Notifications, &_m_Notifications__showNotification, "showNotification", - "(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)V"); - if (_m_Notifications__showNotification == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallStaticVoidMethod(jniEnv, _c_Notifications, - _m_Notifications__showNotification, context, - notificationID, title, text); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} diff --git a/pkgs/jnigen/example/pdfbox_plugin/android/build.gradle b/pkgs/jnigen/example/pdfbox_plugin/android/build.gradle index 5042ecef5..6ea97b832 100644 --- a/pkgs/jnigen/example/pdfbox_plugin/android/build.gradle +++ b/pkgs/jnigen/example/pdfbox_plugin/android/build.gradle @@ -21,21 +21,6 @@ android { // the version in their app and to download a newer version of the NDK. ndkVersion "21.1.6352462" - // Invoke the shared CMake build with the Android Gradle Plugin. - externalNativeBuild { - cmake { - path "../src/CMakeLists.txt" - - // The default CMake version for the Android Gradle Plugin is 3.10.2. - // https://developer.android.com/studio/projects/install-ndk#vanilla_cmake - // - // The Flutter tooling requires that developers have CMake 3.10 or later - // installed. You should not increase this version, as doing so will cause - // the plugin to fail to compile for some customers of the plugin. - // version "3.10.2" - } - } - compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 diff --git a/pkgs/jnigen/example/pdfbox_plugin/jnigen.yaml b/pkgs/jnigen/example/pdfbox_plugin/jnigen.yaml index fa24d8501..33b3ef87c 100644 --- a/pkgs/jnigen/example/pdfbox_plugin/jnigen.yaml +++ b/pkgs/jnigen/example/pdfbox_plugin/jnigen.yaml @@ -20,18 +20,6 @@ preamble: | ## Output configuration output: - c: - ## Path to write generated C bindings - path: 'src/' - ## C files can be stored in a different sub-directory inside root. - ## - ## We have a guideline to keep all generated code in third_party/ since the - ## original project's license applies to generated code. So we specify - ## third_party/ as c_subdir while keeping generated CMakeLists.txt in src/. - subdir: 'third_party/' - ## Name of the generated library. This is a required parameter, and used - ## for the name of the shared library and CMake configuration. - library_name: 'pdfbox_plugin' dart: ## Generated dart bindings will be written to this path. They will follow ## the same folder hierarchy as the original Java code. diff --git a/pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/_init.dart b/pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/_init.dart deleted file mode 100644 index 57aea60db..000000000 --- a/pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/_init.dart +++ /dev/null @@ -1,25 +0,0 @@ -// Generated from Apache PDFBox library which is licensed under the Apache License 2.0. -// The following copyright from the original authors applies. -// -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import "dart:ffi" as ffi; -import "package:jni/internal_helpers_for_jnigen.dart"; - -// Auto-generated initialization code. - -final ffi.Pointer Function(String sym) jniLookup = - ProtectedJniExtensions.initGeneratedLibrary("pdfbox_plugin"); diff --git a/pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart b/pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart index 76f8c59d0..e664b41ac 100644 --- a/pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart +++ b/pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart @@ -42,7 +42,6 @@ import "package:jni/internal_helpers_for_jnigen.dart"; import "package:jni/jni.dart" as jni; import "PDDocumentInformation.dart" as pddocumentinformation_; -import "../../../../_init.dart"; /// from: org.apache.pdfbox.pdmodel.PDDocument /// @@ -57,11 +56,26 @@ class PDDocument extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = + jni.JClass.forName(r"org/apache/pdfbox/pdmodel/PDDocument"); + /// The type which includes information such as the signature of this class. static const type = $PDDocumentType(); - static final _new0 = jniLookup>( - "PDDocument__new0") - .asFunction(); + static final _id_new0 = _class.constructorId( + r"()V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void () /// The returned object must be released after use, by calling the [release] method. @@ -69,14 +83,25 @@ class PDDocument extends jni.JObject { /// Creates an empty PDF document. /// You need to add at least one page for the document to be valid. factory PDDocument() { - return PDDocument.fromReference(_new0().reference); + return PDDocument.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } - static final _new1 = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__new1") - .asFunction)>(); + static final _id_new1 = _class.constructorId( + r"(Lorg/apache/pdfbox/io/MemoryUsageSetting;)V", + ); + + static final _new1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void (org.apache.pdfbox.io.MemoryUsageSetting memUsageSetting) /// The returned object must be released after use, by calling the [release] method. @@ -87,15 +112,25 @@ class PDDocument extends jni.JObject { factory PDDocument.new1( jni.JObject memUsageSetting, ) { - return PDDocument.fromReference( - _new1(memUsageSetting.reference.pointer).reference); + return PDDocument.fromReference(_new1(_class.reference.pointer, + _id_new1 as jni.JMethodIDPtr, memUsageSetting.reference.pointer) + .reference); } - static final _new2 = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__new2") - .asFunction)>(); + static final _id_new2 = _class.constructorId( + r"(Lorg/apache/pdfbox/cos/COSDocument;)V", + ); + + static final _new2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void (org.apache.pdfbox.cos.COSDocument doc) /// The returned object must be released after use, by calling the [release] method. @@ -105,15 +140,27 @@ class PDDocument extends jni.JObject { factory PDDocument.new2( jni.JObject doc, ) { - return PDDocument.fromReference(_new2(doc.reference.pointer).reference); + return PDDocument.fromReference(_new2(_class.reference.pointer, + _id_new2 as jni.JMethodIDPtr, doc.reference.pointer) + .reference); } - static final _new3 = jniLookup< + static final _id_new3 = _class.constructorId( + r"(Lorg/apache/pdfbox/cos/COSDocument;Lorg/apache/pdfbox/io/RandomAccessRead;)V", + ); + + static final _new3 = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__new3") + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_NewObject") .asFunction< - jni.JniResult Function( + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, ffi.Pointer, ffi.Pointer)>(); /// from: public void (org.apache.pdfbox.cos.COSDocument doc, org.apache.pdfbox.io.RandomAccessRead source) @@ -126,18 +173,35 @@ class PDDocument extends jni.JObject { jni.JObject doc, jni.JObject source, ) { - return PDDocument.fromReference( - _new3(doc.reference.pointer, source.reference.pointer).reference); + return PDDocument.fromReference(_new3( + _class.reference.pointer, + _id_new3 as jni.JMethodIDPtr, + doc.reference.pointer, + source.reference.pointer) + .reference); } - static final _new4 = jniLookup< + static final _id_new4 = _class.constructorId( + r"(Lorg/apache/pdfbox/cos/COSDocument;Lorg/apache/pdfbox/io/RandomAccessRead;Lorg/apache/pdfbox/pdmodel/encryption/AccessPermission;)V", + ); + + static final _new4 = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("PDDocument__new4") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_NewObject") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); /// from: public void (org.apache.pdfbox.cos.COSDocument doc, org.apache.pdfbox.io.RandomAccessRead source, org.apache.pdfbox.pdmodel.encryption.AccessPermission permission) @@ -152,18 +216,30 @@ class PDDocument extends jni.JObject { jni.JObject source, jni.JObject permission, ) { - return PDDocument.fromReference(_new4(doc.reference.pointer, - source.reference.pointer, permission.reference.pointer) + return PDDocument.fromReference(_new4( + _class.reference.pointer, + _id_new4 as jni.JMethodIDPtr, + doc.reference.pointer, + source.reference.pointer, + permission.reference.pointer) .reference); } - static final _addPage = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__addPage") + static final _id_addPage = _class.instanceMethodId( + r"addPage", + r"(Lorg/apache/pdfbox/pdmodel/PDPage;)V", + ); + + static final _addPage = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void addPage(org.apache.pdfbox.pdmodel.PDPage page) /// @@ -173,16 +249,26 @@ class PDDocument extends jni.JObject { void addPage( jni.JObject page, ) { - _addPage(reference.pointer, page.reference.pointer).check(); + _addPage(reference.pointer, _id_addPage as jni.JMethodIDPtr, + page.reference.pointer) + .check(); } - static final _addSignature = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__addSignature") + static final _id_addSignature = _class.instanceMethodId( + r"addSignature", + r"(Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSignature;)V", + ); + + static final _addSignature = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void addSignature(org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature sigObject) /// @@ -199,18 +285,29 @@ class PDDocument extends jni.JObject { void addSignature( jni.JObject sigObject, ) { - _addSignature(reference.pointer, sigObject.reference.pointer).check(); + _addSignature(reference.pointer, _id_addSignature as jni.JMethodIDPtr, + sigObject.reference.pointer) + .check(); } - static final _addSignature1 = jniLookup< + static final _id_addSignature1 = _class.instanceMethodId( + r"addSignature", + r"(Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSignature;Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/SignatureOptions;)V", + ); + + static final _addSignature1 = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, + jni.JThrowablePtr Function( ffi.Pointer, - ffi.Pointer)>>("PDDocument__addSignature1") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: public void addSignature(org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature sigObject, org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureOptions options) /// @@ -229,20 +326,29 @@ class PDDocument extends jni.JObject { jni.JObject sigObject, jni.JObject options, ) { - _addSignature1(reference.pointer, sigObject.reference.pointer, - options.reference.pointer) + _addSignature1(reference.pointer, _id_addSignature1 as jni.JMethodIDPtr, + sigObject.reference.pointer, options.reference.pointer) .check(); } - static final _addSignature2 = jniLookup< + static final _id_addSignature2 = _class.instanceMethodId( + r"addSignature", + r"(Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSignature;Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/SignatureInterface;)V", + ); + + static final _addSignature2 = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, + jni.JThrowablePtr Function( ffi.Pointer, - ffi.Pointer)>>("PDDocument__addSignature2") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: public void addSignature(org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature sigObject, org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface signatureInterface) /// @@ -260,21 +366,34 @@ class PDDocument extends jni.JObject { jni.JObject sigObject, jni.JObject signatureInterface, ) { - _addSignature2(reference.pointer, sigObject.reference.pointer, - signatureInterface.reference.pointer) + _addSignature2(reference.pointer, _id_addSignature2 as jni.JMethodIDPtr, + sigObject.reference.pointer, signatureInterface.reference.pointer) .check(); } - static final _addSignature3 = jniLookup< + static final _id_addSignature3 = _class.instanceMethodId( + r"addSignature", + r"(Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSignature;Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/SignatureInterface;Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/SignatureOptions;)V", + ); + + static final _addSignature3 = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( + jni.JThrowablePtr Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("PDDocument__addSignature3") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); /// from: public void addSignature(org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature sigObject, org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface signatureInterface, org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureOptions options) /// @@ -296,21 +415,38 @@ class PDDocument extends jni.JObject { jni.JObject signatureInterface, jni.JObject options, ) { - _addSignature3(reference.pointer, sigObject.reference.pointer, - signatureInterface.reference.pointer, options.reference.pointer) + _addSignature3( + reference.pointer, + _id_addSignature3 as jni.JMethodIDPtr, + sigObject.reference.pointer, + signatureInterface.reference.pointer, + options.reference.pointer) .check(); } - static final _addSignatureField = jniLookup< + static final _id_addSignatureField = _class.instanceMethodId( + r"addSignatureField", + r"(Ljava/util/List;Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/SignatureInterface;Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/SignatureOptions;)V", + ); + + static final _addSignatureField = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, + jni.JThrowablePtr Function( ffi.Pointer, - ffi.Pointer)>>("PDDocument__addSignatureField") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); /// from: public void addSignatureField(java.util.List sigFields, org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface signatureInterface, org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureOptions options) /// @@ -327,18 +463,30 @@ class PDDocument extends jni.JObject { jni.JObject signatureInterface, jni.JObject options, ) { - _addSignatureField(reference.pointer, sigFields.reference.pointer, - signatureInterface.reference.pointer, options.reference.pointer) + _addSignatureField( + reference.pointer, + _id_addSignatureField as jni.JMethodIDPtr, + sigFields.reference.pointer, + signatureInterface.reference.pointer, + options.reference.pointer) .check(); } - static final _removePage = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__removePage") + static final _id_removePage = _class.instanceMethodId( + r"removePage", + r"(Lorg/apache/pdfbox/pdmodel/PDPage;)V", + ); + + static final _removePage = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void removePage(org.apache.pdfbox.pdmodel.PDPage page) /// @@ -347,14 +495,25 @@ class PDDocument extends jni.JObject { void removePage( jni.JObject page, ) { - _removePage(reference.pointer, page.reference.pointer).check(); + _removePage(reference.pointer, _id_removePage as jni.JMethodIDPtr, + page.reference.pointer) + .check(); } - static final _removePage1 = jniLookup< + static final _id_removePage1 = _class.instanceMethodId( + r"removePage", + r"(I)V", + ); + + static final _removePage1 = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Int32)>>("PDDocument__removePage1") - .asFunction, int)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: public void removePage(int pageNumber) /// @@ -363,16 +522,26 @@ class PDDocument extends jni.JObject { void removePage1( int pageNumber, ) { - _removePage1(reference.pointer, pageNumber).check(); + _removePage1( + reference.pointer, _id_removePage1 as jni.JMethodIDPtr, pageNumber) + .check(); } - static final _importPage = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__importPage") + static final _id_importPage = _class.instanceMethodId( + r"importPage", + r"(Lorg/apache/pdfbox/pdmodel/PDPage;)Lorg/apache/pdfbox/pdmodel/PDPage;", + ); + + static final _importPage = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public org.apache.pdfbox.pdmodel.PDPage importPage(org.apache.pdfbox.pdmodel.PDPage page) /// The returned object must be released after use, by calling the [release] method. @@ -401,15 +570,27 @@ class PDDocument extends jni.JObject { jni.JObject importPage( jni.JObject page, ) { - return _importPage(reference.pointer, page.reference.pointer) + return _importPage(reference.pointer, _id_importPage as jni.JMethodIDPtr, + page.reference.pointer) .object(const jni.JObjectType()); } - static final _getDocument = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__getDocument") - .asFunction)>(); + static final _id_getDocument = _class.instanceMethodId( + r"getDocument", + r"()Lorg/apache/pdfbox/cos/COSDocument;", + ); + + static final _getDocument = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public org.apache.pdfbox.cos.COSDocument getDocument() /// The returned object must be released after use, by calling the [release] method. @@ -417,14 +598,26 @@ class PDDocument extends jni.JObject { /// This will get the low level document. ///@return The document that this layer sits on top of. jni.JObject getDocument() { - return _getDocument(reference.pointer).object(const jni.JObjectType()); + return _getDocument(reference.pointer, _id_getDocument as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } - static final _getDocumentInformation = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__getDocumentInformation") - .asFunction)>(); + static final _id_getDocumentInformation = _class.instanceMethodId( + r"getDocumentInformation", + r"()Lorg/apache/pdfbox/pdmodel/PDDocumentInformation;", + ); + + static final _getDocumentInformation = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public org.apache.pdfbox.pdmodel.PDDocumentInformation getDocumentInformation() /// The returned object must be released after use, by calling the [release] method. @@ -437,17 +630,26 @@ class PDDocument extends jni.JObject { /// PDDocumentCatalog\#getMetadata(). ///@return The documents /Info dictionary, never null. pddocumentinformation_.PDDocumentInformation getDocumentInformation() { - return _getDocumentInformation(reference.pointer) + return _getDocumentInformation( + reference.pointer, _id_getDocumentInformation as jni.JMethodIDPtr) .object(const pddocumentinformation_.$PDDocumentInformationType()); } - static final _setDocumentInformation = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__setDocumentInformation") + static final _id_setDocumentInformation = _class.instanceMethodId( + r"setDocumentInformation", + r"(Lorg/apache/pdfbox/pdmodel/PDDocumentInformation;)V", + ); + + static final _setDocumentInformation = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setDocumentInformation(org.apache.pdfbox.pdmodel.PDDocumentInformation info) /// @@ -460,14 +662,29 @@ class PDDocument extends jni.JObject { void setDocumentInformation( pddocumentinformation_.PDDocumentInformation info, ) { - _setDocumentInformation(reference.pointer, info.reference.pointer).check(); + _setDocumentInformation( + reference.pointer, + _id_setDocumentInformation as jni.JMethodIDPtr, + info.reference.pointer) + .check(); } - static final _getDocumentCatalog = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__getDocumentCatalog") - .asFunction)>(); + static final _id_getDocumentCatalog = _class.instanceMethodId( + r"getDocumentCatalog", + r"()Lorg/apache/pdfbox/pdmodel/PDDocumentCatalog;", + ); + + static final _getDocumentCatalog = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public org.apache.pdfbox.pdmodel.PDDocumentCatalog getDocumentCatalog() /// The returned object must be released after use, by calling the [release] method. @@ -475,29 +692,53 @@ class PDDocument extends jni.JObject { /// This will get the document CATALOG. This is guaranteed to not return null. ///@return The documents /Root dictionary jni.JObject getDocumentCatalog() { - return _getDocumentCatalog(reference.pointer) + return _getDocumentCatalog( + reference.pointer, _id_getDocumentCatalog as jni.JMethodIDPtr) .object(const jni.JObjectType()); } - static final _isEncrypted = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__isEncrypted") - .asFunction)>(); + static final _id_isEncrypted = _class.instanceMethodId( + r"isEncrypted", + r"()Z", + ); + + static final _isEncrypted = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public boolean isEncrypted() /// /// This will tell if this document is encrypted or not. ///@return true If this document is encrypted. bool isEncrypted() { - return _isEncrypted(reference.pointer).boolean; + return _isEncrypted(reference.pointer, _id_isEncrypted as jni.JMethodIDPtr) + .boolean; } - static final _getEncryption = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__getEncryption") - .asFunction)>(); + static final _id_getEncryption = _class.instanceMethodId( + r"getEncryption", + r"()Lorg/apache/pdfbox/pdmodel/encryption/PDEncryption;", + ); + + static final _getEncryption = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public org.apache.pdfbox.pdmodel.encryption.PDEncryption getEncryption() /// The returned object must be released after use, by calling the [release] method. @@ -508,17 +749,26 @@ class PDDocument extends jni.JObject { /// PDStandardEncryption object. ///@return The encryption dictionary(most likely a PDStandardEncryption object) jni.JObject getEncryption() { - return _getEncryption(reference.pointer).object(const jni.JObjectType()); + return _getEncryption( + reference.pointer, _id_getEncryption as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } - static final _setEncryptionDictionary = jniLookup< + static final _id_setEncryptionDictionary = _class.instanceMethodId( + r"setEncryptionDictionary", + r"(Lorg/apache/pdfbox/pdmodel/encryption/PDEncryption;)V", + ); + + static final _setEncryptionDictionary = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "PDDocument__setEncryptionDictionary") + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setEncryptionDictionary(org.apache.pdfbox.pdmodel.encryption.PDEncryption encryption) /// @@ -528,15 +778,29 @@ class PDDocument extends jni.JObject { void setEncryptionDictionary( jni.JObject encryption, ) { - _setEncryptionDictionary(reference.pointer, encryption.reference.pointer) + _setEncryptionDictionary( + reference.pointer, + _id_setEncryptionDictionary as jni.JMethodIDPtr, + encryption.reference.pointer) .check(); } - static final _getLastSignatureDictionary = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__getLastSignatureDictionary") - .asFunction)>(); + static final _id_getLastSignatureDictionary = _class.instanceMethodId( + r"getLastSignatureDictionary", + r"()Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSignature;", + ); + + static final _getLastSignatureDictionary = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature getLastSignatureDictionary() /// The returned object must be released after use, by calling the [release] method. @@ -546,15 +810,27 @@ class PDDocument extends jni.JObject { ///@return the last signature as PDSignatureField. ///@throws IOException if no document catalog can be found. jni.JObject getLastSignatureDictionary() { - return _getLastSignatureDictionary(reference.pointer) + return _getLastSignatureDictionary(reference.pointer, + _id_getLastSignatureDictionary as jni.JMethodIDPtr) .object(const jni.JObjectType()); } - static final _getSignatureFields = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__getSignatureFields") - .asFunction)>(); + static final _id_getSignatureFields = _class.instanceMethodId( + r"getSignatureFields", + r"()Ljava/util/List;", + ); + + static final _getSignatureFields = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.util.List getSignatureFields() /// The returned object must be released after use, by calling the [release] method. @@ -563,15 +839,27 @@ class PDDocument extends jni.JObject { ///@return a List of PDSignatureFields ///@throws IOException if no document catalog can be found. jni.JList getSignatureFields() { - return _getSignatureFields(reference.pointer) + return _getSignatureFields( + reference.pointer, _id_getSignatureFields as jni.JMethodIDPtr) .object(const jni.JListType(jni.JObjectType())); } - static final _getSignatureDictionaries = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__getSignatureDictionaries") - .asFunction)>(); + static final _id_getSignatureDictionaries = _class.instanceMethodId( + r"getSignatureDictionaries", + r"()Ljava/util/List;", + ); + + static final _getSignatureDictionaries = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.util.List getSignatureDictionaries() /// The returned object must be released after use, by calling the [release] method. @@ -580,18 +868,26 @@ class PDDocument extends jni.JObject { ///@return a List of PDSignatureFields ///@throws IOException if no document catalog can be found. jni.JList getSignatureDictionaries() { - return _getSignatureDictionaries(reference.pointer) + return _getSignatureDictionaries( + reference.pointer, _id_getSignatureDictionaries as jni.JMethodIDPtr) .object(const jni.JListType(jni.JObjectType())); } - static final _registerTrueTypeFontForClosing = jniLookup< + static final _id_registerTrueTypeFontForClosing = _class.instanceMethodId( + r"registerTrueTypeFontForClosing", + r"(Lorg/apache/fontbox/ttf/TrueTypeFont;)V", + ); + + static final _registerTrueTypeFontForClosing = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "PDDocument__registerTrueTypeFontForClosing") + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void registerTrueTypeFontForClosing(org.apache.fontbox.ttf.TrueTypeFont ttf) /// @@ -602,15 +898,28 @@ class PDDocument extends jni.JObject { void registerTrueTypeFontForClosing( jni.JObject ttf, ) { - _registerTrueTypeFontForClosing(reference.pointer, ttf.reference.pointer) + _registerTrueTypeFontForClosing( + reference.pointer, + _id_registerTrueTypeFontForClosing as jni.JMethodIDPtr, + ttf.reference.pointer) .check(); } - static final _load = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__load") - .asFunction)>(); + static final _id_load = _class.staticMethodId( + r"load", + r"(Ljava/io/File;)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: static public org.apache.pdfbox.pdmodel.PDDocument load(java.io.File file) /// The returned object must be released after use, by calling the [release] method. @@ -623,15 +932,28 @@ class PDDocument extends jni.JObject { static PDDocument load( jni.JObject file, ) { - return _load(file.reference.pointer).object(const $PDDocumentType()); + return _load(_class.reference.pointer, _id_load as jni.JMethodIDPtr, + file.reference.pointer) + .object(const $PDDocumentType()); } - static final _load1 = jniLookup< + static final _id_load1 = _class.staticMethodId( + r"load", + r"(Ljava/io/File;Lorg/apache/pdfbox/io/MemoryUsageSetting;)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load1 = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__load1") + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") .asFunction< - jni.JniResult Function( + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, ffi.Pointer, ffi.Pointer)>(); /// from: static public org.apache.pdfbox.pdmodel.PDDocument load(java.io.File file, org.apache.pdfbox.io.MemoryUsageSetting memUsageSetting) @@ -647,16 +969,28 @@ class PDDocument extends jni.JObject { jni.JObject file, jni.JObject memUsageSetting, ) { - return _load1(file.reference.pointer, memUsageSetting.reference.pointer) + return _load1(_class.reference.pointer, _id_load1 as jni.JMethodIDPtr, + file.reference.pointer, memUsageSetting.reference.pointer) .object(const $PDDocumentType()); } - static final _load2 = jniLookup< + static final _id_load2 = _class.staticMethodId( + r"load", + r"(Ljava/io/File;Ljava/lang/String;)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load2 = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__load2") + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") .asFunction< - jni.JniResult Function( + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, ffi.Pointer, ffi.Pointer)>(); /// from: static public org.apache.pdfbox.pdmodel.PDDocument load(java.io.File file, java.lang.String password) @@ -672,18 +1006,33 @@ class PDDocument extends jni.JObject { jni.JObject file, jni.JString password, ) { - return _load2(file.reference.pointer, password.reference.pointer) + return _load2(_class.reference.pointer, _id_load2 as jni.JMethodIDPtr, + file.reference.pointer, password.reference.pointer) .object(const $PDDocumentType()); } - static final _load3 = jniLookup< + static final _id_load3 = _class.staticMethodId( + r"load", + r"(Ljava/io/File;Ljava/lang/String;Lorg/apache/pdfbox/io/MemoryUsageSetting;)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load3 = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("PDDocument__load3") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); /// from: static public org.apache.pdfbox.pdmodel.PDDocument load(java.io.File file, java.lang.String password, org.apache.pdfbox.io.MemoryUsageSetting memUsageSetting) @@ -701,21 +1050,40 @@ class PDDocument extends jni.JObject { jni.JString password, jni.JObject memUsageSetting, ) { - return _load3(file.reference.pointer, password.reference.pointer, + return _load3( + _class.reference.pointer, + _id_load3 as jni.JMethodIDPtr, + file.reference.pointer, + password.reference.pointer, memUsageSetting.reference.pointer) .object(const $PDDocumentType()); } - static final _load4 = jniLookup< + static final _id_load4 = _class.staticMethodId( + r"load", + r"(Ljava/io/File;Ljava/lang/String;Ljava/io/InputStream;Ljava/lang/String;)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load4 = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("PDDocument__load4") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); /// from: static public org.apache.pdfbox.pdmodel.PDDocument load(java.io.File file, java.lang.String password, java.io.InputStream keyStore, java.lang.String alias) /// The returned object must be released after use, by calling the [release] method. @@ -733,21 +1101,38 @@ class PDDocument extends jni.JObject { jni.JObject keyStore, jni.JString alias, ) { - return _load4(file.reference.pointer, password.reference.pointer, - keyStore.reference.pointer, alias.reference.pointer) + return _load4( + _class.reference.pointer, + _id_load4 as jni.JMethodIDPtr, + file.reference.pointer, + password.reference.pointer, + keyStore.reference.pointer, + alias.reference.pointer) .object(const $PDDocumentType()); } - static final _load5 = jniLookup< + static final _id_load5 = _class.staticMethodId( + r"load", + r"(Ljava/io/File;Ljava/lang/String;Ljava/io/InputStream;Ljava/lang/String;Lorg/apache/pdfbox/io/MemoryUsageSetting;)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load5 = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("PDDocument__load5") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") .asFunction< jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, ffi.Pointer, ffi.Pointer, ffi.Pointer, @@ -773,6 +1158,8 @@ class PDDocument extends jni.JObject { jni.JObject memUsageSetting, ) { return _load5( + _class.reference.pointer, + _id_load5 as jni.JMethodIDPtr, file.reference.pointer, password.reference.pointer, keyStore.reference.pointer, @@ -781,11 +1168,21 @@ class PDDocument extends jni.JObject { .object(const $PDDocumentType()); } - static final _load6 = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__load6") - .asFunction)>(); + static final _id_load6 = _class.staticMethodId( + r"load", + r"(Ljava/io/InputStream;)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load6 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: static public org.apache.pdfbox.pdmodel.PDDocument load(java.io.InputStream input) /// The returned object must be released after use, by calling the [release] method. @@ -799,15 +1196,28 @@ class PDDocument extends jni.JObject { static PDDocument load6( jni.JObject input, ) { - return _load6(input.reference.pointer).object(const $PDDocumentType()); + return _load6(_class.reference.pointer, _id_load6 as jni.JMethodIDPtr, + input.reference.pointer) + .object(const $PDDocumentType()); } - static final _load7 = jniLookup< + static final _id_load7 = _class.staticMethodId( + r"load", + r"(Ljava/io/InputStream;Lorg/apache/pdfbox/io/MemoryUsageSetting;)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load7 = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__load7") + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") .asFunction< - jni.JniResult Function( + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, ffi.Pointer, ffi.Pointer)>(); /// from: static public org.apache.pdfbox.pdmodel.PDDocument load(java.io.InputStream input, org.apache.pdfbox.io.MemoryUsageSetting memUsageSetting) @@ -824,16 +1234,28 @@ class PDDocument extends jni.JObject { jni.JObject input, jni.JObject memUsageSetting, ) { - return _load7(input.reference.pointer, memUsageSetting.reference.pointer) + return _load7(_class.reference.pointer, _id_load7 as jni.JMethodIDPtr, + input.reference.pointer, memUsageSetting.reference.pointer) .object(const $PDDocumentType()); } - static final _load8 = jniLookup< + static final _id_load8 = _class.staticMethodId( + r"load", + r"(Ljava/io/InputStream;Ljava/lang/String;)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load8 = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__load8") + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") .asFunction< - jni.JniResult Function( + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, ffi.Pointer, ffi.Pointer)>(); /// from: static public org.apache.pdfbox.pdmodel.PDDocument load(java.io.InputStream input, java.lang.String password) @@ -850,20 +1272,36 @@ class PDDocument extends jni.JObject { jni.JObject input, jni.JString password, ) { - return _load8(input.reference.pointer, password.reference.pointer) + return _load8(_class.reference.pointer, _id_load8 as jni.JMethodIDPtr, + input.reference.pointer, password.reference.pointer) .object(const $PDDocumentType()); } - static final _load9 = jniLookup< + static final _id_load9 = _class.staticMethodId( + r"load", + r"(Ljava/io/InputStream;Ljava/lang/String;Ljava/io/InputStream;Ljava/lang/String;)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load9 = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("PDDocument__load9") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); /// from: static public org.apache.pdfbox.pdmodel.PDDocument load(java.io.InputStream input, java.lang.String password, java.io.InputStream keyStore, java.lang.String alias) /// The returned object must be released after use, by calling the [release] method. @@ -882,19 +1320,38 @@ class PDDocument extends jni.JObject { jni.JObject keyStore, jni.JString alias, ) { - return _load9(input.reference.pointer, password.reference.pointer, - keyStore.reference.pointer, alias.reference.pointer) + return _load9( + _class.reference.pointer, + _id_load9 as jni.JMethodIDPtr, + input.reference.pointer, + password.reference.pointer, + keyStore.reference.pointer, + alias.reference.pointer) .object(const $PDDocumentType()); } - static final _load10 = jniLookup< + static final _id_load10 = _class.staticMethodId( + r"load", + r"(Ljava/io/InputStream;Ljava/lang/String;Lorg/apache/pdfbox/io/MemoryUsageSetting;)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load10 = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("PDDocument__load10") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); /// from: static public org.apache.pdfbox.pdmodel.PDDocument load(java.io.InputStream input, java.lang.String password, org.apache.pdfbox.io.MemoryUsageSetting memUsageSetting) @@ -913,21 +1370,37 @@ class PDDocument extends jni.JObject { jni.JString password, jni.JObject memUsageSetting, ) { - return _load10(input.reference.pointer, password.reference.pointer, + return _load10( + _class.reference.pointer, + _id_load10 as jni.JMethodIDPtr, + input.reference.pointer, + password.reference.pointer, memUsageSetting.reference.pointer) .object(const $PDDocumentType()); } - static final _load11 = jniLookup< + static final _id_load11 = _class.staticMethodId( + r"load", + r"(Ljava/io/InputStream;Ljava/lang/String;Ljava/io/InputStream;Ljava/lang/String;Lorg/apache/pdfbox/io/MemoryUsageSetting;)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load11 = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("PDDocument__load11") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") .asFunction< jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, ffi.Pointer, ffi.Pointer, ffi.Pointer, @@ -955,6 +1428,8 @@ class PDDocument extends jni.JObject { jni.JObject memUsageSetting, ) { return _load11( + _class.reference.pointer, + _id_load11 as jni.JMethodIDPtr, input.reference.pointer, password.reference.pointer, keyStore.reference.pointer, @@ -963,11 +1438,21 @@ class PDDocument extends jni.JObject { .object(const $PDDocumentType()); } - static final _load12 = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__load12") - .asFunction)>(); + static final _id_load12 = _class.staticMethodId( + r"load", + r"([B)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load12 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: static public org.apache.pdfbox.pdmodel.PDDocument load(byte[] input) /// The returned object must be released after use, by calling the [release] method. @@ -980,15 +1465,28 @@ class PDDocument extends jni.JObject { static PDDocument load12( jni.JArray input, ) { - return _load12(input.reference.pointer).object(const $PDDocumentType()); + return _load12(_class.reference.pointer, _id_load12 as jni.JMethodIDPtr, + input.reference.pointer) + .object(const $PDDocumentType()); } - static final _load13 = jniLookup< + static final _id_load13 = _class.staticMethodId( + r"load", + r"([BLjava/lang/String;)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load13 = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__load13") + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") .asFunction< - jni.JniResult Function( + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, ffi.Pointer, ffi.Pointer)>(); /// from: static public org.apache.pdfbox.pdmodel.PDDocument load(byte[] input, java.lang.String password) @@ -1004,20 +1502,36 @@ class PDDocument extends jni.JObject { jni.JArray input, jni.JString password, ) { - return _load13(input.reference.pointer, password.reference.pointer) + return _load13(_class.reference.pointer, _id_load13 as jni.JMethodIDPtr, + input.reference.pointer, password.reference.pointer) .object(const $PDDocumentType()); } - static final _load14 = jniLookup< + static final _id_load14 = _class.staticMethodId( + r"load", + r"([BLjava/lang/String;Ljava/io/InputStream;Ljava/lang/String;)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load14 = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("PDDocument__load14") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); /// from: static public org.apache.pdfbox.pdmodel.PDDocument load(byte[] input, java.lang.String password, java.io.InputStream keyStore, java.lang.String alias) /// The returned object must be released after use, by calling the [release] method. @@ -1036,21 +1550,38 @@ class PDDocument extends jni.JObject { jni.JObject keyStore, jni.JString alias, ) { - return _load14(input.reference.pointer, password.reference.pointer, - keyStore.reference.pointer, alias.reference.pointer) + return _load14( + _class.reference.pointer, + _id_load14 as jni.JMethodIDPtr, + input.reference.pointer, + password.reference.pointer, + keyStore.reference.pointer, + alias.reference.pointer) .object(const $PDDocumentType()); } - static final _load15 = jniLookup< + static final _id_load15 = _class.staticMethodId( + r"load", + r"([BLjava/lang/String;Ljava/io/InputStream;Ljava/lang/String;Lorg/apache/pdfbox/io/MemoryUsageSetting;)Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); + + static final _load15 = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("PDDocument__load15") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") .asFunction< jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, ffi.Pointer, ffi.Pointer, ffi.Pointer, @@ -1077,6 +1608,8 @@ class PDDocument extends jni.JObject { jni.JObject memUsageSetting, ) { return _load15( + _class.reference.pointer, + _id_load15 as jni.JMethodIDPtr, input.reference.pointer, password.reference.pointer, keyStore.reference.pointer, @@ -1085,13 +1618,21 @@ class PDDocument extends jni.JObject { .object(const $PDDocumentType()); } - static final _save = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__save") + static final _id_save = _class.instanceMethodId( + r"save", + r"(Ljava/lang/String;)V", + ); + + static final _save = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void save(java.lang.String fileName) /// @@ -1105,16 +1646,26 @@ class PDDocument extends jni.JObject { void save( jni.JString fileName, ) { - _save(reference.pointer, fileName.reference.pointer).check(); + _save(reference.pointer, _id_save as jni.JMethodIDPtr, + fileName.reference.pointer) + .check(); } - static final _save1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__save1") + static final _id_save1 = _class.instanceMethodId( + r"save", + r"(Ljava/io/File;)V", + ); + + static final _save1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void save(java.io.File file) /// @@ -1128,16 +1679,26 @@ class PDDocument extends jni.JObject { void save1( jni.JObject file, ) { - _save1(reference.pointer, file.reference.pointer).check(); + _save1(reference.pointer, _id_save1 as jni.JMethodIDPtr, + file.reference.pointer) + .check(); } - static final _save2 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__save2") + static final _id_save2 = _class.instanceMethodId( + r"save", + r"(Ljava/io/OutputStream;)V", + ); + + static final _save2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void save(java.io.OutputStream output) /// @@ -1152,16 +1713,26 @@ class PDDocument extends jni.JObject { void save2( jni.JObject output, ) { - _save2(reference.pointer, output.reference.pointer).check(); + _save2(reference.pointer, _id_save2 as jni.JMethodIDPtr, + output.reference.pointer) + .check(); } - static final _saveIncremental = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__saveIncremental") + static final _id_saveIncremental = _class.instanceMethodId( + r"saveIncremental", + r"(Ljava/io/OutputStream;)V", + ); + + static final _saveIncremental = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void saveIncremental(java.io.OutputStream output) /// @@ -1181,18 +1752,29 @@ class PDDocument extends jni.JObject { void saveIncremental( jni.JObject output, ) { - _saveIncremental(reference.pointer, output.reference.pointer).check(); + _saveIncremental(reference.pointer, _id_saveIncremental as jni.JMethodIDPtr, + output.reference.pointer) + .check(); } - static final _saveIncremental1 = jniLookup< + static final _id_saveIncremental1 = _class.instanceMethodId( + r"saveIncremental", + r"(Ljava/io/OutputStream;Ljava/util/Set;)V", + ); + + static final _saveIncremental1 = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, + jni.JThrowablePtr Function( ffi.Pointer, - ffi.Pointer)>>("PDDocument__saveIncremental1") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: public void saveIncremental(java.io.OutputStream output, java.util.Set objectsToWrite) /// @@ -1218,19 +1800,30 @@ class PDDocument extends jni.JObject { jni.JObject output, jni.JSet objectsToWrite, ) { - _saveIncremental1(reference.pointer, output.reference.pointer, + _saveIncremental1( + reference.pointer, + _id_saveIncremental1 as jni.JMethodIDPtr, + output.reference.pointer, objectsToWrite.reference.pointer) .check(); } - static final _saveIncrementalForExternalSigning = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "PDDocument__saveIncrementalForExternalSigning") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + static final _id_saveIncrementalForExternalSigning = _class.instanceMethodId( + r"saveIncrementalForExternalSigning", + r"(Ljava/io/OutputStream;)Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/ExternalSigningSupport;", + ); + + static final _saveIncrementalForExternalSigning = + ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public org.apache.pdfbox.pdmodel.interactive.digitalsignature.ExternalSigningSupport saveIncrementalForExternalSigning(java.io.OutputStream output) /// The returned object must be released after use, by calling the [release] method. @@ -1276,15 +1869,24 @@ class PDDocument extends jni.JObject { jni.JObject output, ) { return _saveIncrementalForExternalSigning( - reference.pointer, output.reference.pointer) + reference.pointer, + _id_saveIncrementalForExternalSigning as jni.JMethodIDPtr, + output.reference.pointer) .object(const jni.JObjectType()); } - static final _getPage = jniLookup< + static final _id_getPage = _class.instanceMethodId( + r"getPage", + r"(I)Lorg/apache/pdfbox/pdmodel/PDPage;", + ); + + static final _getPage = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Int32)>>("PDDocument__getPage") - .asFunction, int)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: public org.apache.pdfbox.pdmodel.PDPage getPage(int pageIndex) /// The returned object must be released after use, by calling the [release] method. @@ -1299,15 +1901,27 @@ class PDDocument extends jni.JObject { jni.JObject getPage( int pageIndex, ) { - return _getPage(reference.pointer, pageIndex) + return _getPage( + reference.pointer, _id_getPage as jni.JMethodIDPtr, pageIndex) .object(const jni.JObjectType()); } - static final _getPages = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__getPages") - .asFunction)>(); + static final _id_getPages = _class.instanceMethodId( + r"getPages", + r"()Lorg/apache/pdfbox/pdmodel/PDPageTree;", + ); + + static final _getPages = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public org.apache.pdfbox.pdmodel.PDPageTree getPages() /// The returned object must be released after use, by calling the [release] method. @@ -1315,44 +1929,77 @@ class PDDocument extends jni.JObject { /// Returns the page tree. ///@return the page tree jni.JObject getPages() { - return _getPages(reference.pointer).object(const jni.JObjectType()); + return _getPages(reference.pointer, _id_getPages as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } - static final _getNumberOfPages = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__getNumberOfPages") - .asFunction)>(); + static final _id_getNumberOfPages = _class.instanceMethodId( + r"getNumberOfPages", + r"()I", + ); + + static final _getNumberOfPages = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public int getNumberOfPages() /// /// This will return the total page count of the PDF document. ///@return The total number of pages in the PDF document. int getNumberOfPages() { - return _getNumberOfPages(reference.pointer).integer; + return _getNumberOfPages( + reference.pointer, _id_getNumberOfPages as jni.JMethodIDPtr) + .integer; } - static final _close = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__close") - .asFunction)>(); + static final _id_close = _class.instanceMethodId( + r"close", + r"()V", + ); + + static final _close = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void close() /// /// This will close the underlying COSDocument object. ///@throws IOException If there is an error releasing resources. void close() { - _close(reference.pointer).check(); + _close(reference.pointer, _id_close as jni.JMethodIDPtr).check(); } - static final _protect = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__protect") + static final _id_protect = _class.instanceMethodId( + r"protect", + r"(Lorg/apache/pdfbox/pdmodel/encryption/ProtectionPolicy;)V", + ); + + static final _protect = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void protect(org.apache.pdfbox.pdmodel.encryption.ProtectionPolicy policy) /// @@ -1369,14 +2016,27 @@ class PDDocument extends jni.JObject { void protect( jni.JObject policy, ) { - _protect(reference.pointer, policy.reference.pointer).check(); + _protect(reference.pointer, _id_protect as jni.JMethodIDPtr, + policy.reference.pointer) + .check(); } - static final _getCurrentAccessPermission = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__getCurrentAccessPermission") - .asFunction)>(); + static final _id_getCurrentAccessPermission = _class.instanceMethodId( + r"getCurrentAccessPermission", + r"()Lorg/apache/pdfbox/pdmodel/encryption/AccessPermission;", + ); + + static final _getCurrentAccessPermission = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public org.apache.pdfbox.pdmodel.encryption.AccessPermission getCurrentAccessPermission() /// The returned object must be released after use, by calling the [release] method. @@ -1387,29 +2047,52 @@ class PDDocument extends jni.JObject { /// to verify if the current user is allowed to proceed. ///@return the access permissions for the current user on the document. jni.JObject getCurrentAccessPermission() { - return _getCurrentAccessPermission(reference.pointer) + return _getCurrentAccessPermission(reference.pointer, + _id_getCurrentAccessPermission as jni.JMethodIDPtr) .object(const jni.JObjectType()); } - static final _isAllSecurityToBeRemoved = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__isAllSecurityToBeRemoved") - .asFunction)>(); + static final _id_isAllSecurityToBeRemoved = _class.instanceMethodId( + r"isAllSecurityToBeRemoved", + r"()Z", + ); + + static final _isAllSecurityToBeRemoved = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public boolean isAllSecurityToBeRemoved() /// /// Indicates if all security is removed or not when writing the pdf. ///@return returns true if all security shall be removed otherwise false bool isAllSecurityToBeRemoved() { - return _isAllSecurityToBeRemoved(reference.pointer).boolean; + return _isAllSecurityToBeRemoved( + reference.pointer, _id_isAllSecurityToBeRemoved as jni.JMethodIDPtr) + .boolean; } - static final _setAllSecurityToBeRemoved = jniLookup< + static final _id_setAllSecurityToBeRemoved = _class.instanceMethodId( + r"setAllSecurityToBeRemoved", + r"(Z)V", + ); + + static final _setAllSecurityToBeRemoved = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Uint8)>>("PDDocument__setAllSecurityToBeRemoved") - .asFunction, int)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: public void setAllSecurityToBeRemoved(boolean removeAllSecurity) /// @@ -1418,15 +2101,29 @@ class PDDocument extends jni.JObject { void setAllSecurityToBeRemoved( bool removeAllSecurity, ) { - _setAllSecurityToBeRemoved(reference.pointer, removeAllSecurity ? 1 : 0) + _setAllSecurityToBeRemoved( + reference.pointer, + _id_setAllSecurityToBeRemoved as jni.JMethodIDPtr, + removeAllSecurity ? 1 : 0) .check(); } - static final _getDocumentId = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__getDocumentId") - .asFunction)>(); + static final _id_getDocumentId = _class.instanceMethodId( + r"getDocumentId", + r"()Ljava/lang/Long;", + ); + + static final _getDocumentId = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.Long getDocumentId() /// The returned object must be released after use, by calling the [release] method. @@ -1434,16 +2131,26 @@ class PDDocument extends jni.JObject { /// Provides the document ID. ///@return the document ID jni.JLong getDocumentId() { - return _getDocumentId(reference.pointer).object(const jni.JLongType()); + return _getDocumentId( + reference.pointer, _id_getDocumentId as jni.JMethodIDPtr) + .object(const jni.JLongType()); } - static final _setDocumentId = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__setDocumentId") + static final _id_setDocumentId = _class.instanceMethodId( + r"setDocumentId", + r"(Ljava/lang/Long;)V", + ); + + static final _setDocumentId = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setDocumentId(java.lang.Long docId) /// @@ -1452,28 +2159,51 @@ class PDDocument extends jni.JObject { void setDocumentId( jni.JLong docId, ) { - _setDocumentId(reference.pointer, docId.reference.pointer).check(); + _setDocumentId(reference.pointer, _id_setDocumentId as jni.JMethodIDPtr, + docId.reference.pointer) + .check(); } - static final _getVersion = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__getVersion") - .asFunction)>(); + static final _id_getVersion = _class.instanceMethodId( + r"getVersion", + r"()F", + ); + + static final _getVersion = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallFloatMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public float getVersion() /// /// Returns the PDF specification version this document conforms to. ///@return the PDF version (e.g. 1.4f) double getVersion() { - return _getVersion(reference.pointer).float; + return _getVersion(reference.pointer, _id_getVersion as jni.JMethodIDPtr) + .float; } - static final _setVersion = jniLookup< + static final _id_setVersion = _class.instanceMethodId( + r"setVersion", + r"(F)V", + ); + + static final _setVersion = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Float)>>("PDDocument__setVersion") - .asFunction, double)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Double,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, double)>(); /// from: public void setVersion(float newVersion) /// @@ -1482,14 +2212,27 @@ class PDDocument extends jni.JObject { void setVersion( double newVersion, ) { - _setVersion(reference.pointer, newVersion).check(); + _setVersion( + reference.pointer, _id_setVersion as jni.JMethodIDPtr, newVersion) + .check(); } - static final _getResourceCache = jniLookup< - ffi - .NativeFunction)>>( - "PDDocument__getResourceCache") - .asFunction)>(); + static final _id_getResourceCache = _class.instanceMethodId( + r"getResourceCache", + r"()Lorg/apache/pdfbox/pdmodel/ResourceCache;", + ); + + static final _getResourceCache = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public org.apache.pdfbox.pdmodel.ResourceCache getResourceCache() /// The returned object must be released after use, by calling the [release] method. @@ -1497,16 +2240,26 @@ class PDDocument extends jni.JObject { /// Returns the resource cache associated with this document, or null if there is none. ///@return the resource cache or null. jni.JObject getResourceCache() { - return _getResourceCache(reference.pointer).object(const jni.JObjectType()); + return _getResourceCache( + reference.pointer, _id_getResourceCache as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } - static final _setResourceCache = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocument__setResourceCache") + static final _id_setResourceCache = _class.instanceMethodId( + r"setResourceCache", + r"(Lorg/apache/pdfbox/pdmodel/ResourceCache;)V", + ); + + static final _setResourceCache = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setResourceCache(org.apache.pdfbox.pdmodel.ResourceCache resourceCache) /// @@ -1515,7 +2268,10 @@ class PDDocument extends jni.JObject { void setResourceCache( jni.JObject resourceCache, ) { - _setResourceCache(reference.pointer, resourceCache.reference.pointer) + _setResourceCache( + reference.pointer, + _id_setResourceCache as jni.JMethodIDPtr, + resourceCache.reference.pointer) .check(); } } diff --git a/pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart b/pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart index 99b1e7f08..c20f7b183 100644 --- a/pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart +++ b/pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart @@ -41,8 +41,6 @@ import "dart:ffi" as ffi; import "package:jni/internal_helpers_for_jnigen.dart"; import "package:jni/jni.dart" as jni; -import "../../../../_init.dart"; - /// from: org.apache.pdfbox.pdmodel.PDDocumentInformation /// /// This is the document metadata. Each getXXX method will return the entry if @@ -58,25 +56,51 @@ class PDDocumentInformation extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = + jni.JClass.forName(r"org/apache/pdfbox/pdmodel/PDDocumentInformation"); + /// The type which includes information such as the signature of this class. static const type = $PDDocumentInformationType(); - static final _new0 = jniLookup>( - "PDDocumentInformation__new0") - .asFunction(); + static final _id_new0 = _class.constructorId( + r"()V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void () /// The returned object must be released after use, by calling the [release] method. /// /// Default Constructor. factory PDDocumentInformation() { - return PDDocumentInformation.fromReference(_new0().reference); + return PDDocumentInformation.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } - static final _new1 = jniLookup< - ffi - .NativeFunction)>>( - "PDDocumentInformation__new1") - .asFunction)>(); + static final _id_new1 = _class.constructorId( + r"(Lorg/apache/pdfbox/cos/COSDictionary;)V", + ); + + static final _new1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void (org.apache.pdfbox.cos.COSDictionary dic) /// The returned object must be released after use, by calling the [release] method. @@ -86,15 +110,27 @@ class PDDocumentInformation extends jni.JObject { factory PDDocumentInformation.new1( jni.JObject dic, ) { - return PDDocumentInformation.fromReference( - _new1(dic.reference.pointer).reference); + return PDDocumentInformation.fromReference(_new1(_class.reference.pointer, + _id_new1 as jni.JMethodIDPtr, dic.reference.pointer) + .reference); } - static final _getCOSObject = jniLookup< - ffi - .NativeFunction)>>( - "PDDocumentInformation__getCOSObject") - .asFunction)>(); + static final _id_getCOSObject = _class.instanceMethodId( + r"getCOSObject", + r"()Lorg/apache/pdfbox/cos/COSDictionary;", + ); + + static final _getCOSObject = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public org.apache.pdfbox.cos.COSDictionary getCOSObject() /// The returned object must be released after use, by calling the [release] method. @@ -102,17 +138,26 @@ class PDDocumentInformation extends jni.JObject { /// This will get the underlying dictionary that this object wraps. ///@return The underlying info dictionary. jni.JObject getCOSObject() { - return _getCOSObject(reference.pointer).object(const jni.JObjectType()); + return _getCOSObject( + reference.pointer, _id_getCOSObject as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } - static final _getPropertyStringValue = jniLookup< + static final _id_getPropertyStringValue = _class.instanceMethodId( + r"getPropertyStringValue", + r"(Ljava/lang/String;)Ljava/lang/Object;", + ); + + static final _getPropertyStringValue = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "PDDocumentInformation__getPropertyStringValue") + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public java.lang.Object getPropertyStringValue(java.lang.String propertyKey) /// The returned object must be released after use, by calling the [release] method. @@ -129,15 +174,28 @@ class PDDocumentInformation extends jni.JObject { jni.JString propertyKey, ) { return _getPropertyStringValue( - reference.pointer, propertyKey.reference.pointer) + reference.pointer, + _id_getPropertyStringValue as jni.JMethodIDPtr, + propertyKey.reference.pointer) .object(const jni.JObjectType()); } - static final _getTitle = jniLookup< - ffi - .NativeFunction)>>( - "PDDocumentInformation__getTitle") - .asFunction)>(); + static final _id_getTitle = _class.instanceMethodId( + r"getTitle", + r"()Ljava/lang/String;", + ); + + static final _getTitle = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getTitle() /// The returned object must be released after use, by calling the [release] method. @@ -145,16 +203,25 @@ class PDDocumentInformation extends jni.JObject { /// This will get the title of the document. This will return null if no title exists. ///@return The title of the document. jni.JString getTitle() { - return _getTitle(reference.pointer).object(const jni.JStringType()); + return _getTitle(reference.pointer, _id_getTitle as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _setTitle = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocumentInformation__setTitle") + static final _id_setTitle = _class.instanceMethodId( + r"setTitle", + r"(Ljava/lang/String;)V", + ); + + static final _setTitle = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setTitle(java.lang.String title) /// @@ -163,14 +230,27 @@ class PDDocumentInformation extends jni.JObject { void setTitle( jni.JString title, ) { - _setTitle(reference.pointer, title.reference.pointer).check(); + _setTitle(reference.pointer, _id_setTitle as jni.JMethodIDPtr, + title.reference.pointer) + .check(); } - static final _getAuthor = jniLookup< - ffi - .NativeFunction)>>( - "PDDocumentInformation__getAuthor") - .asFunction)>(); + static final _id_getAuthor = _class.instanceMethodId( + r"getAuthor", + r"()Ljava/lang/String;", + ); + + static final _getAuthor = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getAuthor() /// The returned object must be released after use, by calling the [release] method. @@ -178,16 +258,25 @@ class PDDocumentInformation extends jni.JObject { /// This will get the author of the document. This will return null if no author exists. ///@return The author of the document. jni.JString getAuthor() { - return _getAuthor(reference.pointer).object(const jni.JStringType()); + return _getAuthor(reference.pointer, _id_getAuthor as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _setAuthor = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocumentInformation__setAuthor") + static final _id_setAuthor = _class.instanceMethodId( + r"setAuthor", + r"(Ljava/lang/String;)V", + ); + + static final _setAuthor = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setAuthor(java.lang.String author) /// @@ -196,14 +285,27 @@ class PDDocumentInformation extends jni.JObject { void setAuthor( jni.JString author, ) { - _setAuthor(reference.pointer, author.reference.pointer).check(); + _setAuthor(reference.pointer, _id_setAuthor as jni.JMethodIDPtr, + author.reference.pointer) + .check(); } - static final _getSubject = jniLookup< - ffi - .NativeFunction)>>( - "PDDocumentInformation__getSubject") - .asFunction)>(); + static final _id_getSubject = _class.instanceMethodId( + r"getSubject", + r"()Ljava/lang/String;", + ); + + static final _getSubject = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getSubject() /// The returned object must be released after use, by calling the [release] method. @@ -211,16 +313,25 @@ class PDDocumentInformation extends jni.JObject { /// This will get the subject of the document. This will return null if no subject exists. ///@return The subject of the document. jni.JString getSubject() { - return _getSubject(reference.pointer).object(const jni.JStringType()); + return _getSubject(reference.pointer, _id_getSubject as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _setSubject = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocumentInformation__setSubject") + static final _id_setSubject = _class.instanceMethodId( + r"setSubject", + r"(Ljava/lang/String;)V", + ); + + static final _setSubject = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setSubject(java.lang.String subject) /// @@ -229,14 +340,27 @@ class PDDocumentInformation extends jni.JObject { void setSubject( jni.JString subject, ) { - _setSubject(reference.pointer, subject.reference.pointer).check(); + _setSubject(reference.pointer, _id_setSubject as jni.JMethodIDPtr, + subject.reference.pointer) + .check(); } - static final _getKeywords = jniLookup< - ffi - .NativeFunction)>>( - "PDDocumentInformation__getKeywords") - .asFunction)>(); + static final _id_getKeywords = _class.instanceMethodId( + r"getKeywords", + r"()Ljava/lang/String;", + ); + + static final _getKeywords = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getKeywords() /// The returned object must be released after use, by calling the [release] method. @@ -244,16 +368,25 @@ class PDDocumentInformation extends jni.JObject { /// This will get the keywords of the document. This will return null if no keywords exists. ///@return The keywords of the document. jni.JString getKeywords() { - return _getKeywords(reference.pointer).object(const jni.JStringType()); + return _getKeywords(reference.pointer, _id_getKeywords as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _setKeywords = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocumentInformation__setKeywords") + static final _id_setKeywords = _class.instanceMethodId( + r"setKeywords", + r"(Ljava/lang/String;)V", + ); + + static final _setKeywords = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setKeywords(java.lang.String keywords) /// @@ -262,14 +395,27 @@ class PDDocumentInformation extends jni.JObject { void setKeywords( jni.JString keywords, ) { - _setKeywords(reference.pointer, keywords.reference.pointer).check(); + _setKeywords(reference.pointer, _id_setKeywords as jni.JMethodIDPtr, + keywords.reference.pointer) + .check(); } - static final _getCreator = jniLookup< - ffi - .NativeFunction)>>( - "PDDocumentInformation__getCreator") - .asFunction)>(); + static final _id_getCreator = _class.instanceMethodId( + r"getCreator", + r"()Ljava/lang/String;", + ); + + static final _getCreator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getCreator() /// The returned object must be released after use, by calling the [release] method. @@ -277,16 +423,25 @@ class PDDocumentInformation extends jni.JObject { /// This will get the creator of the document. This will return null if no creator exists. ///@return The creator of the document. jni.JString getCreator() { - return _getCreator(reference.pointer).object(const jni.JStringType()); + return _getCreator(reference.pointer, _id_getCreator as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _setCreator = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocumentInformation__setCreator") + static final _id_setCreator = _class.instanceMethodId( + r"setCreator", + r"(Ljava/lang/String;)V", + ); + + static final _setCreator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setCreator(java.lang.String creator) /// @@ -295,14 +450,27 @@ class PDDocumentInformation extends jni.JObject { void setCreator( jni.JString creator, ) { - _setCreator(reference.pointer, creator.reference.pointer).check(); + _setCreator(reference.pointer, _id_setCreator as jni.JMethodIDPtr, + creator.reference.pointer) + .check(); } - static final _getProducer = jniLookup< - ffi - .NativeFunction)>>( - "PDDocumentInformation__getProducer") - .asFunction)>(); + static final _id_getProducer = _class.instanceMethodId( + r"getProducer", + r"()Ljava/lang/String;", + ); + + static final _getProducer = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getProducer() /// The returned object must be released after use, by calling the [release] method. @@ -310,16 +478,25 @@ class PDDocumentInformation extends jni.JObject { /// This will get the producer of the document. This will return null if no producer exists. ///@return The producer of the document. jni.JString getProducer() { - return _getProducer(reference.pointer).object(const jni.JStringType()); + return _getProducer(reference.pointer, _id_getProducer as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _setProducer = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocumentInformation__setProducer") + static final _id_setProducer = _class.instanceMethodId( + r"setProducer", + r"(Ljava/lang/String;)V", + ); + + static final _setProducer = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setProducer(java.lang.String producer) /// @@ -328,14 +505,27 @@ class PDDocumentInformation extends jni.JObject { void setProducer( jni.JString producer, ) { - _setProducer(reference.pointer, producer.reference.pointer).check(); + _setProducer(reference.pointer, _id_setProducer as jni.JMethodIDPtr, + producer.reference.pointer) + .check(); } - static final _getCreationDate = jniLookup< - ffi - .NativeFunction)>>( - "PDDocumentInformation__getCreationDate") - .asFunction)>(); + static final _id_getCreationDate = _class.instanceMethodId( + r"getCreationDate", + r"()Ljava/util/Calendar;", + ); + + static final _getCreationDate = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.util.Calendar getCreationDate() /// The returned object must be released after use, by calling the [release] method. @@ -343,17 +533,26 @@ class PDDocumentInformation extends jni.JObject { /// This will get the creation date of the document. This will return null if no creation date exists. ///@return The creation date of the document. jni.JObject getCreationDate() { - return _getCreationDate(reference.pointer).object(const jni.JObjectType()); + return _getCreationDate( + reference.pointer, _id_getCreationDate as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } - static final _setCreationDate = jniLookup< + static final _id_setCreationDate = _class.instanceMethodId( + r"setCreationDate", + r"(Ljava/util/Calendar;)V", + ); + + static final _setCreationDate = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "PDDocumentInformation__setCreationDate") + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setCreationDate(java.util.Calendar date) /// @@ -362,14 +561,27 @@ class PDDocumentInformation extends jni.JObject { void setCreationDate( jni.JObject date, ) { - _setCreationDate(reference.pointer, date.reference.pointer).check(); + _setCreationDate(reference.pointer, _id_setCreationDate as jni.JMethodIDPtr, + date.reference.pointer) + .check(); } - static final _getModificationDate = jniLookup< - ffi - .NativeFunction)>>( - "PDDocumentInformation__getModificationDate") - .asFunction)>(); + static final _id_getModificationDate = _class.instanceMethodId( + r"getModificationDate", + r"()Ljava/util/Calendar;", + ); + + static final _getModificationDate = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.util.Calendar getModificationDate() /// The returned object must be released after use, by calling the [release] method. @@ -377,18 +589,26 @@ class PDDocumentInformation extends jni.JObject { /// This will get the modification date of the document. This will return null if no modification date exists. ///@return The modification date of the document. jni.JObject getModificationDate() { - return _getModificationDate(reference.pointer) + return _getModificationDate( + reference.pointer, _id_getModificationDate as jni.JMethodIDPtr) .object(const jni.JObjectType()); } - static final _setModificationDate = jniLookup< + static final _id_setModificationDate = _class.instanceMethodId( + r"setModificationDate", + r"(Ljava/util/Calendar;)V", + ); + + static final _setModificationDate = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "PDDocumentInformation__setModificationDate") + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setModificationDate(java.util.Calendar date) /// @@ -397,14 +617,27 @@ class PDDocumentInformation extends jni.JObject { void setModificationDate( jni.JObject date, ) { - _setModificationDate(reference.pointer, date.reference.pointer).check(); + _setModificationDate(reference.pointer, + _id_setModificationDate as jni.JMethodIDPtr, date.reference.pointer) + .check(); } - static final _getTrapped = jniLookup< - ffi - .NativeFunction)>>( - "PDDocumentInformation__getTrapped") - .asFunction)>(); + static final _id_getTrapped = _class.instanceMethodId( + r"getTrapped", + r"()Ljava/lang/String;", + ); + + static final _getTrapped = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getTrapped() /// The returned object must be released after use, by calling the [release] method. @@ -413,14 +646,26 @@ class PDDocumentInformation extends jni.JObject { /// This will return null if one is not found. ///@return The trapped value for the document. jni.JString getTrapped() { - return _getTrapped(reference.pointer).object(const jni.JStringType()); + return _getTrapped(reference.pointer, _id_getTrapped as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _getMetadataKeys = jniLookup< - ffi - .NativeFunction)>>( - "PDDocumentInformation__getMetadataKeys") - .asFunction)>(); + static final _id_getMetadataKeys = _class.instanceMethodId( + r"getMetadataKeys", + r"()Ljava/util/Set;", + ); + + static final _getMetadataKeys = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.util.Set getMetadataKeys() /// The returned object must be released after use, by calling the [release] method. @@ -429,18 +674,26 @@ class PDDocumentInformation extends jni.JObject { ///@return all metadata key strings. ///@since Apache PDFBox 1.3.0 jni.JSet getMetadataKeys() { - return _getMetadataKeys(reference.pointer) + return _getMetadataKeys( + reference.pointer, _id_getMetadataKeys as jni.JMethodIDPtr) .object(const jni.JSetType(jni.JStringType())); } - static final _getCustomMetadataValue = jniLookup< + static final _id_getCustomMetadataValue = _class.instanceMethodId( + r"getCustomMetadataValue", + r"(Ljava/lang/String;)Ljava/lang/String;", + ); + + static final _getCustomMetadataValue = ProtectedJniExtensions.lookup< ffi.NativeFunction< jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "PDDocumentInformation__getCustomMetadataValue") + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public java.lang.String getCustomMetadataValue(java.lang.String fieldName) /// The returned object must be released after use, by calling the [release] method. @@ -453,18 +706,30 @@ class PDDocumentInformation extends jni.JObject { jni.JString fieldName, ) { return _getCustomMetadataValue( - reference.pointer, fieldName.reference.pointer) + reference.pointer, + _id_getCustomMetadataValue as jni.JMethodIDPtr, + fieldName.reference.pointer) .object(const jni.JStringType()); } - static final _setCustomMetadataValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>( - "PDDocumentInformation__setCustomMetadataValue") + static final _id_setCustomMetadataValue = _class.instanceMethodId( + r"setCustomMetadataValue", + r"(Ljava/lang/String;Ljava/lang/String;)V", + ); + + static final _setCustomMetadataValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: public void setCustomMetadataValue(java.lang.String fieldName, java.lang.String fieldValue) /// @@ -475,18 +740,29 @@ class PDDocumentInformation extends jni.JObject { jni.JString fieldName, jni.JString fieldValue, ) { - _setCustomMetadataValue(reference.pointer, fieldName.reference.pointer, + _setCustomMetadataValue( + reference.pointer, + _id_setCustomMetadataValue as jni.JMethodIDPtr, + fieldName.reference.pointer, fieldValue.reference.pointer) .check(); } - static final _setTrapped = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDDocumentInformation__setTrapped") + static final _id_setTrapped = _class.instanceMethodId( + r"setTrapped", + r"(Ljava/lang/String;)V", + ); + + static final _setTrapped = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setTrapped(java.lang.String value) /// @@ -497,7 +773,9 @@ class PDDocumentInformation extends jni.JObject { void setTrapped( jni.JString value, ) { - _setTrapped(reference.pointer, value.reference.pointer).check(); + _setTrapped(reference.pointer, _id_setTrapped as jni.JMethodIDPtr, + value.reference.pointer) + .check(); } } diff --git a/pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart b/pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart index d7d559575..82e25c582 100644 --- a/pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart +++ b/pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart @@ -42,7 +42,6 @@ import "package:jni/internal_helpers_for_jnigen.dart"; import "package:jni/jni.dart" as jni; import "../pdmodel/PDDocument.dart" as pddocument_; -import "../../../../_init.dart"; /// from: org.apache.pdfbox.text.PDFTextStripper /// @@ -61,42 +60,27 @@ class PDFTextStripper extends jni.JObject { jni.JReference reference, ) : super.fromReference(reference); + static final _class = + jni.JClass.forName(r"org/apache/pdfbox/text/PDFTextStripper"); + /// The type which includes information such as the signature of this class. static const type = $PDFTextStripperType(); - static final _get_LINE_SEPARATOR = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_PDFTextStripper__LINE_SEPARATOR") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); + static final _id_LINE_SEPARATOR = _class.instanceFieldId( + r"LINE_SEPARATOR", + r"Ljava/lang/String;", + ); /// from: protected final java.lang.String LINE_SEPARATOR /// The returned object must be released after use, by calling the [release] method. /// /// The platform's line separator. jni.JString get LINE_SEPARATOR => - _get_LINE_SEPARATOR(reference.pointer).object(const jni.JStringType()); + _id_LINE_SEPARATOR.get(this, const jni.JStringType()); - static final _get_charactersByArticle = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_PDFTextStripper__charactersByArticle") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_charactersByArticle = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, ffi.Pointer)>>( - "set_PDFTextStripper__charactersByArticle") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); + static final _id_charactersByArticle = _class.instanceFieldId( + r"charactersByArticle", + r"Ljava/util/ArrayList;", + ); /// from: protected java.util.ArrayList> charactersByArticle /// The returned object must be released after use, by calling the [release] method. @@ -114,8 +98,7 @@ class PDFTextStripper extends jni.JObject { /// /// Most PDFs won't have any beads, so charactersByArticle will contain a single entry. jni.JObject get charactersByArticle => - _get_charactersByArticle(reference.pointer) - .object(const jni.JObjectType()); + _id_charactersByArticle.get(this, const jni.JObjectType()); /// from: protected java.util.ArrayList> charactersByArticle /// The returned object must be released after use, by calling the [release] method. @@ -133,66 +116,52 @@ class PDFTextStripper extends jni.JObject { /// /// Most PDFs won't have any beads, so charactersByArticle will contain a single entry. set charactersByArticle(jni.JObject value) => - _set_charactersByArticle(reference.pointer, value.reference.pointer) - .check(); + _id_charactersByArticle.set(this, const jni.JObjectType(), value); - static final _get_document = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_PDFTextStripper__document") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_document = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(jni.JObjectPtr, - ffi.Pointer)>>("set_PDFTextStripper__document") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); + static final _id_document = _class.instanceFieldId( + r"document", + r"Lorg/apache/pdfbox/pdmodel/PDDocument;", + ); /// from: protected org.apache.pdfbox.pdmodel.PDDocument document /// The returned object must be released after use, by calling the [release] method. - pddocument_.PDDocument get document => _get_document(reference.pointer) - .object(const pddocument_.$PDDocumentType()); + pddocument_.PDDocument get document => + _id_document.get(this, const pddocument_.$PDDocumentType()); /// from: protected org.apache.pdfbox.pdmodel.PDDocument document /// The returned object must be released after use, by calling the [release] method. set document(pddocument_.PDDocument value) => - _set_document(reference.pointer, value.reference.pointer).check(); - - static final _get_output = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_PDFTextStripper__output") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); + _id_document.set(this, const pddocument_.$PDDocumentType(), value); - static final _set_output = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(jni.JObjectPtr, - ffi.Pointer)>>("set_PDFTextStripper__output") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); + static final _id_output = _class.instanceFieldId( + r"output", + r"Ljava/io/Writer;", + ); /// from: protected java.io.Writer output /// The returned object must be released after use, by calling the [release] method. - jni.JObject get output => - _get_output(reference.pointer).object(const jni.JObjectType()); + jni.JObject get output => _id_output.get(this, const jni.JObjectType()); /// from: protected java.io.Writer output /// The returned object must be released after use, by calling the [release] method. set output(jni.JObject value) => - _set_output(reference.pointer, value.reference.pointer).check(); + _id_output.set(this, const jni.JObjectType(), value); - static final _new0 = jniLookup>( - "PDFTextStripper__new0") - .asFunction(); + static final _id_new0 = _class.constructorId( + r"()V", + ); + + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public void () /// The returned object must be released after use, by calling the [release] method. @@ -200,16 +169,26 @@ class PDFTextStripper extends jni.JObject { /// Instantiate a new PDFTextStripper object. ///@throws IOException If there is an error loading the properties. factory PDFTextStripper() { - return PDFTextStripper.fromReference(_new0().reference); + return PDFTextStripper.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } - static final _getText = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__getText") + static final _id_getText = _class.instanceMethodId( + r"getText", + r"(Lorg/apache/pdfbox/pdmodel/PDDocument;)Ljava/lang/String;", + ); + + static final _getText = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public java.lang.String getText(org.apache.pdfbox.pdmodel.PDDocument doc) /// The returned object must be released after use, by calling the [release] method. @@ -227,19 +206,29 @@ class PDFTextStripper extends jni.JObject { jni.JString getText( pddocument_.PDDocument doc, ) { - return _getText(reference.pointer, doc.reference.pointer) + return _getText(reference.pointer, _id_getText as jni.JMethodIDPtr, + doc.reference.pointer) .object(const jni.JStringType()); } - static final _writeText = jniLookup< + static final _id_writeText = _class.instanceMethodId( + r"writeText", + r"(Lorg/apache/pdfbox/pdmodel/PDDocument;Ljava/io/Writer;)V", + ); + + static final _writeText = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, + jni.JThrowablePtr Function( ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__writeText") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: public void writeText(org.apache.pdfbox.pdmodel.PDDocument doc, java.io.Writer outputStream) /// @@ -251,18 +240,26 @@ class PDFTextStripper extends jni.JObject { pddocument_.PDDocument doc, jni.JObject outputStream, ) { - _writeText(reference.pointer, doc.reference.pointer, - outputStream.reference.pointer) + _writeText(reference.pointer, _id_writeText as jni.JMethodIDPtr, + doc.reference.pointer, outputStream.reference.pointer) .check(); } - static final _processPages = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__processPages") + static final _id_processPages = _class.instanceMethodId( + r"processPages", + r"(Lorg/apache/pdfbox/pdmodel/PDPageTree;)V", + ); + + static final _processPages = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: protected void processPages(org.apache.pdfbox.pdmodel.PDPageTree pages) /// @@ -272,16 +269,26 @@ class PDFTextStripper extends jni.JObject { void processPages( jni.JObject pages, ) { - _processPages(reference.pointer, pages.reference.pointer).check(); + _processPages(reference.pointer, _id_processPages as jni.JMethodIDPtr, + pages.reference.pointer) + .check(); } - static final _startDocument = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__startDocument") + static final _id_startDocument = _class.instanceMethodId( + r"startDocument", + r"(Lorg/apache/pdfbox/pdmodel/PDDocument;)V", + ); + + static final _startDocument = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: protected void startDocument(org.apache.pdfbox.pdmodel.PDDocument document) /// @@ -291,16 +298,26 @@ class PDFTextStripper extends jni.JObject { void startDocument( pddocument_.PDDocument document, ) { - _startDocument(reference.pointer, document.reference.pointer).check(); + _startDocument(reference.pointer, _id_startDocument as jni.JMethodIDPtr, + document.reference.pointer) + .check(); } - static final _endDocument = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__endDocument") + static final _id_endDocument = _class.instanceMethodId( + r"endDocument", + r"(Lorg/apache/pdfbox/pdmodel/PDDocument;)V", + ); + + static final _endDocument = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: protected void endDocument(org.apache.pdfbox.pdmodel.PDDocument document) /// @@ -311,16 +328,26 @@ class PDFTextStripper extends jni.JObject { void endDocument( pddocument_.PDDocument document, ) { - _endDocument(reference.pointer, document.reference.pointer).check(); + _endDocument(reference.pointer, _id_endDocument as jni.JMethodIDPtr, + document.reference.pointer) + .check(); } - static final _processPage = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__processPage") + static final _id_processPage = _class.instanceMethodId( + r"processPage", + r"(Lorg/apache/pdfbox/pdmodel/PDPage;)V", + ); + + static final _processPage = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void processPage(org.apache.pdfbox.pdmodel.PDPage page) /// @@ -330,14 +357,27 @@ class PDFTextStripper extends jni.JObject { void processPage( jni.JObject page, ) { - _processPage(reference.pointer, page.reference.pointer).check(); + _processPage(reference.pointer, _id_processPage as jni.JMethodIDPtr, + page.reference.pointer) + .check(); } - static final _startArticle = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__startArticle") - .asFunction)>(); + static final _id_startArticle = _class.instanceMethodId( + r"startArticle", + r"()V", + ); + + static final _startArticle = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: protected void startArticle() /// @@ -346,14 +386,24 @@ class PDFTextStripper extends jni.JObject { /// may provide additional information. ///@throws IOException If there is any error writing to the stream. void startArticle() { - _startArticle(reference.pointer).check(); + _startArticle(reference.pointer, _id_startArticle as jni.JMethodIDPtr) + .check(); } - static final _startArticle1 = jniLookup< + static final _id_startArticle1 = _class.instanceMethodId( + r"startArticle", + r"(Z)V", + ); + + static final _startArticle1 = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Uint8)>>("PDFTextStripper__startArticle1") - .asFunction, int)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: protected void startArticle(boolean isLTR) /// @@ -364,30 +414,51 @@ class PDFTextStripper extends jni.JObject { void startArticle1( bool isLTR, ) { - _startArticle1(reference.pointer, isLTR ? 1 : 0).check(); + _startArticle1(reference.pointer, _id_startArticle1 as jni.JMethodIDPtr, + isLTR ? 1 : 0) + .check(); } - static final _endArticle = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__endArticle") - .asFunction)>(); + static final _id_endArticle = _class.instanceMethodId( + r"endArticle", + r"()V", + ); + + static final _endArticle = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: protected void endArticle() /// /// End an article. Default implementation is to do nothing. Subclasses may provide additional information. ///@throws IOException If there is any error writing to the stream. void endArticle() { - _endArticle(reference.pointer).check(); + _endArticle(reference.pointer, _id_endArticle as jni.JMethodIDPtr).check(); } - static final _startPage = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__startPage") + static final _id_startPage = _class.instanceMethodId( + r"startPage", + r"(Lorg/apache/pdfbox/pdmodel/PDPage;)V", + ); + + static final _startPage = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: protected void startPage(org.apache.pdfbox.pdmodel.PDPage page) /// @@ -397,16 +468,26 @@ class PDFTextStripper extends jni.JObject { void startPage( jni.JObject page, ) { - _startPage(reference.pointer, page.reference.pointer).check(); + _startPage(reference.pointer, _id_startPage as jni.JMethodIDPtr, + page.reference.pointer) + .check(); } - static final _endPage = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__endPage") + static final _id_endPage = _class.instanceMethodId( + r"endPage", + r"(Lorg/apache/pdfbox/pdmodel/PDPage;)V", + ); + + static final _endPage = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: protected void endPage(org.apache.pdfbox.pdmodel.PDPage page) /// @@ -416,14 +497,27 @@ class PDFTextStripper extends jni.JObject { void endPage( jni.JObject page, ) { - _endPage(reference.pointer, page.reference.pointer).check(); + _endPage(reference.pointer, _id_endPage as jni.JMethodIDPtr, + page.reference.pointer) + .check(); } - static final _writePage = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__writePage") - .asFunction)>(); + static final _id_writePage = _class.instanceMethodId( + r"writePage", + r"()V", + ); + + static final _writePage = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: protected void writePage() /// @@ -432,44 +526,78 @@ class PDFTextStripper extends jni.JObject { /// enabled. ///@throws IOException If there is an error writing the text. void writePage() { - _writePage(reference.pointer).check(); + _writePage(reference.pointer, _id_writePage as jni.JMethodIDPtr).check(); } - static final _writeLineSeparator = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__writeLineSeparator") - .asFunction)>(); + static final _id_writeLineSeparator = _class.instanceMethodId( + r"writeLineSeparator", + r"()V", + ); + + static final _writeLineSeparator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: protected void writeLineSeparator() /// /// Write the line separator value to the output stream. ///@throws IOException If there is a problem writing out the line separator to the document. void writeLineSeparator() { - _writeLineSeparator(reference.pointer).check(); + _writeLineSeparator( + reference.pointer, _id_writeLineSeparator as jni.JMethodIDPtr) + .check(); } - static final _writeWordSeparator = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__writeWordSeparator") - .asFunction)>(); + static final _id_writeWordSeparator = _class.instanceMethodId( + r"writeWordSeparator", + r"()V", + ); + + static final _writeWordSeparator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: protected void writeWordSeparator() /// /// Write the word separator value to the output stream. ///@throws IOException If there is a problem writing out the word separator to the document. void writeWordSeparator() { - _writeWordSeparator(reference.pointer).check(); + _writeWordSeparator( + reference.pointer, _id_writeWordSeparator as jni.JMethodIDPtr) + .check(); } - static final _writeCharacters = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__writeCharacters") + static final _id_writeCharacters = _class.instanceMethodId( + r"writeCharacters", + r"(Lorg/apache/pdfbox/text/TextPosition;)V", + ); + + static final _writeCharacters = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: protected void writeCharacters(org.apache.pdfbox.text.TextPosition text) /// @@ -479,18 +607,29 @@ class PDFTextStripper extends jni.JObject { void writeCharacters( jni.JObject text, ) { - _writeCharacters(reference.pointer, text.reference.pointer).check(); + _writeCharacters(reference.pointer, _id_writeCharacters as jni.JMethodIDPtr, + text.reference.pointer) + .check(); } - static final _writeString = jniLookup< + static final _id_writeString = _class.instanceMethodId( + r"writeString", + r"(Ljava/lang/String;Ljava/util/List;)V", + ); + + static final _writeString = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, + jni.JThrowablePtr Function( ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__writeString") + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); /// from: protected void writeString(java.lang.String text, java.util.List textPositions) /// @@ -503,18 +642,26 @@ class PDFTextStripper extends jni.JObject { jni.JString text, jni.JList textPositions, ) { - _writeString(reference.pointer, text.reference.pointer, - textPositions.reference.pointer) + _writeString(reference.pointer, _id_writeString as jni.JMethodIDPtr, + text.reference.pointer, textPositions.reference.pointer) .check(); } - static final _writeString1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__writeString1") + static final _id_writeString1 = _class.instanceMethodId( + r"writeString", + r"(Ljava/lang/String;)V", + ); + + static final _writeString1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: protected void writeString(java.lang.String text) /// @@ -524,17 +671,26 @@ class PDFTextStripper extends jni.JObject { void writeString1( jni.JString text, ) { - _writeString1(reference.pointer, text.reference.pointer).check(); + _writeString1(reference.pointer, _id_writeString1 as jni.JMethodIDPtr, + text.reference.pointer) + .check(); } - static final _processTextPosition = jniLookup< + static final _id_processTextPosition = _class.instanceMethodId( + r"processTextPosition", + r"(Lorg/apache/pdfbox/text/TextPosition;)V", + ); + + static final _processTextPosition = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "PDFTextStripper__processTextPosition") + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: protected void processTextPosition(org.apache.pdfbox.text.TextPosition text) /// @@ -544,14 +700,27 @@ class PDFTextStripper extends jni.JObject { void processTextPosition( jni.JObject text, ) { - _processTextPosition(reference.pointer, text.reference.pointer).check(); + _processTextPosition(reference.pointer, + _id_processTextPosition as jni.JMethodIDPtr, text.reference.pointer) + .check(); } - static final _getStartPage = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getStartPage") - .asFunction)>(); + static final _id_getStartPage = _class.instanceMethodId( + r"getStartPage", + r"()I", + ); + + static final _getStartPage = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public int getStartPage() /// @@ -560,14 +729,25 @@ class PDFTextStripper extends jni.JObject { /// be extracted. The default value is 1. ///@return Value of property startPage. int getStartPage() { - return _getStartPage(reference.pointer).integer; + return _getStartPage( + reference.pointer, _id_getStartPage as jni.JMethodIDPtr) + .integer; } - static final _setStartPage = jniLookup< + static final _id_setStartPage = _class.instanceMethodId( + r"setStartPage", + r"(I)V", + ); + + static final _setStartPage = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Int32)>>("PDFTextStripper__setStartPage") - .asFunction, int)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: public void setStartPage(int startPageValue) /// @@ -576,14 +756,27 @@ class PDFTextStripper extends jni.JObject { void setStartPage( int startPageValue, ) { - _setStartPage(reference.pointer, startPageValue).check(); + _setStartPage(reference.pointer, _id_setStartPage as jni.JMethodIDPtr, + startPageValue) + .check(); } - static final _getEndPage = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getEndPage") - .asFunction)>(); + static final _id_getEndPage = _class.instanceMethodId( + r"getEndPage", + r"()I", + ); + + static final _getEndPage = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public int getEndPage() /// @@ -592,14 +785,24 @@ class PDFTextStripper extends jni.JObject { /// Integer.MAX_VALUE such that all pages of the pdf will be extracted. ///@return Value of property endPage. int getEndPage() { - return _getEndPage(reference.pointer).integer; + return _getEndPage(reference.pointer, _id_getEndPage as jni.JMethodIDPtr) + .integer; } - static final _setEndPage = jniLookup< + static final _id_setEndPage = _class.instanceMethodId( + r"setEndPage", + r"(I)V", + ); + + static final _setEndPage = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Int32)>>("PDFTextStripper__setEndPage") - .asFunction, int)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: public void setEndPage(int endPageValue) /// @@ -608,16 +811,26 @@ class PDFTextStripper extends jni.JObject { void setEndPage( int endPageValue, ) { - _setEndPage(reference.pointer, endPageValue).check(); + _setEndPage( + reference.pointer, _id_setEndPage as jni.JMethodIDPtr, endPageValue) + .check(); } - static final _setLineSeparator = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__setLineSeparator") + static final _id_setLineSeparator = _class.instanceMethodId( + r"setLineSeparator", + r"(Ljava/lang/String;)V", + ); + + static final _setLineSeparator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setLineSeparator(java.lang.String separator) /// @@ -627,14 +840,29 @@ class PDFTextStripper extends jni.JObject { void setLineSeparator( jni.JString separator, ) { - _setLineSeparator(reference.pointer, separator.reference.pointer).check(); + _setLineSeparator( + reference.pointer, + _id_setLineSeparator as jni.JMethodIDPtr, + separator.reference.pointer) + .check(); } - static final _getLineSeparator = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getLineSeparator") - .asFunction)>(); + static final _id_getLineSeparator = _class.instanceMethodId( + r"getLineSeparator", + r"()Ljava/lang/String;", + ); + + static final _getLineSeparator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getLineSeparator() /// The returned object must be released after use, by calling the [release] method. @@ -642,14 +870,27 @@ class PDFTextStripper extends jni.JObject { /// This will get the line separator. ///@return The desired line separator string. jni.JString getLineSeparator() { - return _getLineSeparator(reference.pointer).object(const jni.JStringType()); + return _getLineSeparator( + reference.pointer, _id_getLineSeparator as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _getWordSeparator = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getWordSeparator") - .asFunction)>(); + static final _id_getWordSeparator = _class.instanceMethodId( + r"getWordSeparator", + r"()Ljava/lang/String;", + ); + + static final _getWordSeparator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getWordSeparator() /// The returned object must be released after use, by calling the [release] method. @@ -657,16 +898,26 @@ class PDFTextStripper extends jni.JObject { /// This will get the word separator. ///@return The desired word separator string. jni.JString getWordSeparator() { - return _getWordSeparator(reference.pointer).object(const jni.JStringType()); + return _getWordSeparator( + reference.pointer, _id_getWordSeparator as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _setWordSeparator = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__setWordSeparator") + static final _id_setWordSeparator = _class.instanceMethodId( + r"setWordSeparator", + r"(Ljava/lang/String;)V", + ); + + static final _setWordSeparator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setWordSeparator(java.lang.String separator) /// @@ -678,41 +929,84 @@ class PDFTextStripper extends jni.JObject { void setWordSeparator( jni.JString separator, ) { - _setWordSeparator(reference.pointer, separator.reference.pointer).check(); + _setWordSeparator( + reference.pointer, + _id_setWordSeparator as jni.JMethodIDPtr, + separator.reference.pointer) + .check(); } - static final _getSuppressDuplicateOverlappingText = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getSuppressDuplicateOverlappingText") - .asFunction)>(); + static final _id_getSuppressDuplicateOverlappingText = + _class.instanceMethodId( + r"getSuppressDuplicateOverlappingText", + r"()Z", + ); + + static final _getSuppressDuplicateOverlappingText = + ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public boolean getSuppressDuplicateOverlappingText() /// /// @return Returns the suppressDuplicateOverlappingText. bool getSuppressDuplicateOverlappingText() { - return _getSuppressDuplicateOverlappingText(reference.pointer).boolean; + return _getSuppressDuplicateOverlappingText(reference.pointer, + _id_getSuppressDuplicateOverlappingText as jni.JMethodIDPtr) + .boolean; } - static final _getCurrentPageNo = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getCurrentPageNo") - .asFunction)>(); + static final _id_getCurrentPageNo = _class.instanceMethodId( + r"getCurrentPageNo", + r"()I", + ); + + static final _getCurrentPageNo = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: protected int getCurrentPageNo() /// /// Get the current page number that is being processed. ///@return A 1 based number representing the current page. int getCurrentPageNo() { - return _getCurrentPageNo(reference.pointer).integer; + return _getCurrentPageNo( + reference.pointer, _id_getCurrentPageNo as jni.JMethodIDPtr) + .integer; } - static final _getOutput = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getOutput") - .asFunction)>(); + static final _id_getOutput = _class.instanceMethodId( + r"getOutput", + r"()Ljava/io/Writer;", + ); + + static final _getOutput = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: protected java.io.Writer getOutput() /// The returned object must be released after use, by calling the [release] method. @@ -720,14 +1014,26 @@ class PDFTextStripper extends jni.JObject { /// The output stream that is being written to. ///@return The stream that output is being written to. jni.JObject getOutput() { - return _getOutput(reference.pointer).object(const jni.JObjectType()); + return _getOutput(reference.pointer, _id_getOutput as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } - static final _getCharactersByArticle = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getCharactersByArticle") - .asFunction)>(); + static final _id_getCharactersByArticle = _class.instanceMethodId( + r"getCharactersByArticle", + r"()Ljava/util/List;", + ); + + static final _getCharactersByArticle = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: protected java.util.List> getCharactersByArticle() /// The returned object must be released after use, by calling the [release] method. @@ -736,15 +1042,27 @@ class PDFTextStripper extends jni.JObject { /// returns a List that contains List objects, the inner lists will contain TextPosition objects. ///@return A double List of TextPositions for all text strings on the page. jni.JList> getCharactersByArticle() { - return _getCharactersByArticle(reference.pointer) + return _getCharactersByArticle( + reference.pointer, _id_getCharactersByArticle as jni.JMethodIDPtr) .object(const jni.JListType(jni.JListType(jni.JObjectType()))); } - static final _setSuppressDuplicateOverlappingText = jniLookup< + static final _id_setSuppressDuplicateOverlappingText = + _class.instanceMethodId( + r"setSuppressDuplicateOverlappingText", + r"(Z)V", + ); + + static final _setSuppressDuplicateOverlappingText = + ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, ffi.Uint8)>>( - "PDFTextStripper__setSuppressDuplicateOverlappingText") - .asFunction, int)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: public void setSuppressDuplicateOverlappingText(boolean suppressDuplicateOverlappingTextValue) /// @@ -756,29 +1074,53 @@ class PDFTextStripper extends jni.JObject { bool suppressDuplicateOverlappingTextValue, ) { _setSuppressDuplicateOverlappingText( - reference.pointer, suppressDuplicateOverlappingTextValue ? 1 : 0) + reference.pointer, + _id_setSuppressDuplicateOverlappingText as jni.JMethodIDPtr, + suppressDuplicateOverlappingTextValue ? 1 : 0) .check(); } - static final _getSeparateByBeads = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getSeparateByBeads") - .asFunction)>(); + static final _id_getSeparateByBeads = _class.instanceMethodId( + r"getSeparateByBeads", + r"()Z", + ); + + static final _getSeparateByBeads = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public boolean getSeparateByBeads() /// /// This will tell if the text stripper should separate by beads. ///@return If the text will be grouped by beads. bool getSeparateByBeads() { - return _getSeparateByBeads(reference.pointer).boolean; + return _getSeparateByBeads( + reference.pointer, _id_getSeparateByBeads as jni.JMethodIDPtr) + .boolean; } - static final _setShouldSeparateByBeads = jniLookup< + static final _id_setShouldSeparateByBeads = _class.instanceMethodId( + r"setShouldSeparateByBeads", + r"(Z)V", + ); + + static final _setShouldSeparateByBeads = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Uint8)>>("PDFTextStripper__setShouldSeparateByBeads") - .asFunction, int)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: public void setShouldSeparateByBeads(boolean aShouldSeparateByBeads) /// @@ -787,15 +1129,29 @@ class PDFTextStripper extends jni.JObject { void setShouldSeparateByBeads( bool aShouldSeparateByBeads, ) { - _setShouldSeparateByBeads(reference.pointer, aShouldSeparateByBeads ? 1 : 0) + _setShouldSeparateByBeads( + reference.pointer, + _id_setShouldSeparateByBeads as jni.JMethodIDPtr, + aShouldSeparateByBeads ? 1 : 0) .check(); } - static final _getEndBookmark = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getEndBookmark") - .asFunction)>(); + static final _id_getEndBookmark = _class.instanceMethodId( + r"getEndBookmark", + r"()Lorg/apache/pdfbox/pdmodel/interactive/documentnavigation/outline/PDOutlineItem;", + ); + + static final _getEndBookmark = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem getEndBookmark() /// The returned object must be released after use, by calling the [release] method. @@ -803,16 +1159,26 @@ class PDFTextStripper extends jni.JObject { /// Get the bookmark where text extraction should end, inclusive. Default is null. ///@return The ending bookmark. jni.JObject getEndBookmark() { - return _getEndBookmark(reference.pointer).object(const jni.JObjectType()); + return _getEndBookmark( + reference.pointer, _id_getEndBookmark as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } - static final _setEndBookmark = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__setEndBookmark") + static final _id_setEndBookmark = _class.instanceMethodId( + r"setEndBookmark", + r"(Lorg/apache/pdfbox/pdmodel/interactive/documentnavigation/outline/PDOutlineItem;)V", + ); + + static final _setEndBookmark = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setEndBookmark(org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem aEndBookmark) /// @@ -821,14 +1187,27 @@ class PDFTextStripper extends jni.JObject { void setEndBookmark( jni.JObject aEndBookmark, ) { - _setEndBookmark(reference.pointer, aEndBookmark.reference.pointer).check(); + _setEndBookmark(reference.pointer, _id_setEndBookmark as jni.JMethodIDPtr, + aEndBookmark.reference.pointer) + .check(); } - static final _getStartBookmark = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getStartBookmark") - .asFunction)>(); + static final _id_getStartBookmark = _class.instanceMethodId( + r"getStartBookmark", + r"()Lorg/apache/pdfbox/pdmodel/interactive/documentnavigation/outline/PDOutlineItem;", + ); + + static final _getStartBookmark = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem getStartBookmark() /// The returned object must be released after use, by calling the [release] method. @@ -836,16 +1215,26 @@ class PDFTextStripper extends jni.JObject { /// Get the bookmark where text extraction should start, inclusive. Default is null. ///@return The starting bookmark. jni.JObject getStartBookmark() { - return _getStartBookmark(reference.pointer).object(const jni.JObjectType()); + return _getStartBookmark( + reference.pointer, _id_getStartBookmark as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } - static final _setStartBookmark = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__setStartBookmark") + static final _id_setStartBookmark = _class.instanceMethodId( + r"setStartBookmark", + r"(Lorg/apache/pdfbox/pdmodel/interactive/documentnavigation/outline/PDOutlineItem;)V", + ); + + static final _setStartBookmark = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setStartBookmark(org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem aStartBookmark) /// @@ -854,29 +1243,54 @@ class PDFTextStripper extends jni.JObject { void setStartBookmark( jni.JObject aStartBookmark, ) { - _setStartBookmark(reference.pointer, aStartBookmark.reference.pointer) + _setStartBookmark( + reference.pointer, + _id_setStartBookmark as jni.JMethodIDPtr, + aStartBookmark.reference.pointer) .check(); } - static final _getAddMoreFormatting = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getAddMoreFormatting") - .asFunction)>(); + static final _id_getAddMoreFormatting = _class.instanceMethodId( + r"getAddMoreFormatting", + r"()Z", + ); + + static final _getAddMoreFormatting = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public boolean getAddMoreFormatting() /// /// This will tell if the text stripper should add some more text formatting. ///@return true if some more text formatting will be added bool getAddMoreFormatting() { - return _getAddMoreFormatting(reference.pointer).boolean; + return _getAddMoreFormatting( + reference.pointer, _id_getAddMoreFormatting as jni.JMethodIDPtr) + .boolean; } - static final _setAddMoreFormatting = jniLookup< + static final _id_setAddMoreFormatting = _class.instanceMethodId( + r"setAddMoreFormatting", + r"(Z)V", + ); + + static final _setAddMoreFormatting = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Uint8)>>("PDFTextStripper__setAddMoreFormatting") - .asFunction, int)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: public void setAddMoreFormatting(boolean newAddMoreFormatting) /// @@ -885,29 +1299,54 @@ class PDFTextStripper extends jni.JObject { void setAddMoreFormatting( bool newAddMoreFormatting, ) { - _setAddMoreFormatting(reference.pointer, newAddMoreFormatting ? 1 : 0) + _setAddMoreFormatting( + reference.pointer, + _id_setAddMoreFormatting as jni.JMethodIDPtr, + newAddMoreFormatting ? 1 : 0) .check(); } - static final _getSortByPosition = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getSortByPosition") - .asFunction)>(); + static final _id_getSortByPosition = _class.instanceMethodId( + r"getSortByPosition", + r"()Z", + ); + + static final _getSortByPosition = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public boolean getSortByPosition() /// /// This will tell if the text stripper should sort the text tokens before writing to the stream. ///@return true If the text tokens will be sorted before being written. bool getSortByPosition() { - return _getSortByPosition(reference.pointer).boolean; + return _getSortByPosition( + reference.pointer, _id_getSortByPosition as jni.JMethodIDPtr) + .boolean; } - static final _setSortByPosition = jniLookup< + static final _id_setSortByPosition = _class.instanceMethodId( + r"setSortByPosition", + r"(Z)V", + ); + + static final _setSortByPosition = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Uint8)>>("PDFTextStripper__setSortByPosition") - .asFunction, int)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); /// from: public void setSortByPosition(boolean newSortByPosition) /// @@ -922,14 +1361,29 @@ class PDFTextStripper extends jni.JObject { void setSortByPosition( bool newSortByPosition, ) { - _setSortByPosition(reference.pointer, newSortByPosition ? 1 : 0).check(); + _setSortByPosition( + reference.pointer, + _id_setSortByPosition as jni.JMethodIDPtr, + newSortByPosition ? 1 : 0) + .check(); } - static final _getSpacingTolerance = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getSpacingTolerance") - .asFunction)>(); + static final _id_getSpacingTolerance = _class.instanceMethodId( + r"getSpacingTolerance", + r"()F", + ); + + static final _getSpacingTolerance = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallFloatMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public float getSpacingTolerance() /// @@ -937,14 +1391,25 @@ class PDFTextStripper extends jni.JObject { /// added. Note that the default value for this has been determined from trial and error. ///@return The current tolerance / scaling factor double getSpacingTolerance() { - return _getSpacingTolerance(reference.pointer).float; + return _getSpacingTolerance( + reference.pointer, _id_getSpacingTolerance as jni.JMethodIDPtr) + .float; } - static final _setSpacingTolerance = jniLookup< + static final _id_setSpacingTolerance = _class.instanceMethodId( + r"setSpacingTolerance", + r"(F)V", + ); + + static final _setSpacingTolerance = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Float)>>("PDFTextStripper__setSpacingTolerance") - .asFunction, double)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Double,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, double)>(); /// from: public void setSpacingTolerance(float spacingToleranceValue) /// @@ -955,14 +1420,27 @@ class PDFTextStripper extends jni.JObject { void setSpacingTolerance( double spacingToleranceValue, ) { - _setSpacingTolerance(reference.pointer, spacingToleranceValue).check(); + _setSpacingTolerance(reference.pointer, + _id_setSpacingTolerance as jni.JMethodIDPtr, spacingToleranceValue) + .check(); } - static final _getAverageCharTolerance = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getAverageCharTolerance") - .asFunction)>(); + static final _id_getAverageCharTolerance = _class.instanceMethodId( + r"getAverageCharTolerance", + r"()F", + ); + + static final _getAverageCharTolerance = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallFloatMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public float getAverageCharTolerance() /// @@ -970,14 +1448,25 @@ class PDFTextStripper extends jni.JObject { /// be added. Note that the default value for this has been determined from trial and error. ///@return The current tolerance / scaling factor double getAverageCharTolerance() { - return _getAverageCharTolerance(reference.pointer).float; + return _getAverageCharTolerance( + reference.pointer, _id_getAverageCharTolerance as jni.JMethodIDPtr) + .float; } - static final _setAverageCharTolerance = jniLookup< + static final _id_setAverageCharTolerance = _class.instanceMethodId( + r"setAverageCharTolerance", + r"(F)V", + ); + + static final _setAverageCharTolerance = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Float)>>("PDFTextStripper__setAverageCharTolerance") - .asFunction, double)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Double,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, double)>(); /// from: public void setAverageCharTolerance(float averageCharToleranceValue) /// @@ -988,15 +1477,29 @@ class PDFTextStripper extends jni.JObject { void setAverageCharTolerance( double averageCharToleranceValue, ) { - _setAverageCharTolerance(reference.pointer, averageCharToleranceValue) + _setAverageCharTolerance( + reference.pointer, + _id_setAverageCharTolerance as jni.JMethodIDPtr, + averageCharToleranceValue) .check(); } - static final _getIndentThreshold = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getIndentThreshold") - .asFunction)>(); + static final _id_getIndentThreshold = _class.instanceMethodId( + r"getIndentThreshold", + r"()F", + ); + + static final _getIndentThreshold = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallFloatMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public float getIndentThreshold() /// @@ -1004,14 +1507,25 @@ class PDFTextStripper extends jni.JObject { /// indented from the previous line start beyond which the current line start is considered to be a paragraph start. ///@return the number of whitespace character widths to use when detecting paragraph indents. double getIndentThreshold() { - return _getIndentThreshold(reference.pointer).float; + return _getIndentThreshold( + reference.pointer, _id_getIndentThreshold as jni.JMethodIDPtr) + .float; } - static final _setIndentThreshold = jniLookup< + static final _id_setIndentThreshold = _class.instanceMethodId( + r"setIndentThreshold", + r"(F)V", + ); + + static final _setIndentThreshold = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Float)>>("PDFTextStripper__setIndentThreshold") - .asFunction, double)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Double,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, double)>(); /// from: public void setIndentThreshold(float indentThresholdValue) /// @@ -1022,14 +1536,27 @@ class PDFTextStripper extends jni.JObject { void setIndentThreshold( double indentThresholdValue, ) { - _setIndentThreshold(reference.pointer, indentThresholdValue).check(); + _setIndentThreshold(reference.pointer, + _id_setIndentThreshold as jni.JMethodIDPtr, indentThresholdValue) + .check(); } - static final _getDropThreshold = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getDropThreshold") - .asFunction)>(); + static final _id_getDropThreshold = _class.instanceMethodId( + r"getDropThreshold", + r"()F", + ); + + static final _getDropThreshold = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallFloatMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public float getDropThreshold() /// @@ -1037,14 +1564,25 @@ class PDFTextStripper extends jni.JObject { /// start is considered to be a paragraph start. ///@return the character height multiple for max allowed whitespace between lines in the same paragraph. double getDropThreshold() { - return _getDropThreshold(reference.pointer).float; + return _getDropThreshold( + reference.pointer, _id_getDropThreshold as jni.JMethodIDPtr) + .float; } - static final _setDropThreshold = jniLookup< + static final _id_setDropThreshold = _class.instanceMethodId( + r"setDropThreshold", + r"(F)V", + ); + + static final _setDropThreshold = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Float)>>("PDFTextStripper__setDropThreshold") - .asFunction, double)>(); + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Double,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, double)>(); /// from: public void setDropThreshold(float dropThresholdValue) /// @@ -1055,14 +1593,27 @@ class PDFTextStripper extends jni.JObject { void setDropThreshold( double dropThresholdValue, ) { - _setDropThreshold(reference.pointer, dropThresholdValue).check(); + _setDropThreshold(reference.pointer, + _id_setDropThreshold as jni.JMethodIDPtr, dropThresholdValue) + .check(); } - static final _getParagraphStart = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getParagraphStart") - .asFunction)>(); + static final _id_getParagraphStart = _class.instanceMethodId( + r"getParagraphStart", + r"()Ljava/lang/String;", + ); + + static final _getParagraphStart = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getParagraphStart() /// The returned object must be released after use, by calling the [release] method. @@ -1070,17 +1621,26 @@ class PDFTextStripper extends jni.JObject { /// Returns the string which will be used at the beginning of a paragraph. ///@return the paragraph start string jni.JString getParagraphStart() { - return _getParagraphStart(reference.pointer) + return _getParagraphStart( + reference.pointer, _id_getParagraphStart as jni.JMethodIDPtr) .object(const jni.JStringType()); } - static final _setParagraphStart = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__setParagraphStart") + static final _id_setParagraphStart = _class.instanceMethodId( + r"setParagraphStart", + r"(Ljava/lang/String;)V", + ); + + static final _setParagraphStart = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setParagraphStart(java.lang.String s) /// @@ -1089,14 +1649,27 @@ class PDFTextStripper extends jni.JObject { void setParagraphStart( jni.JString s, ) { - _setParagraphStart(reference.pointer, s.reference.pointer).check(); + _setParagraphStart(reference.pointer, + _id_setParagraphStart as jni.JMethodIDPtr, s.reference.pointer) + .check(); } - static final _getParagraphEnd = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getParagraphEnd") - .asFunction)>(); + static final _id_getParagraphEnd = _class.instanceMethodId( + r"getParagraphEnd", + r"()Ljava/lang/String;", + ); + + static final _getParagraphEnd = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getParagraphEnd() /// The returned object must be released after use, by calling the [release] method. @@ -1104,16 +1677,26 @@ class PDFTextStripper extends jni.JObject { /// Returns the string which will be used at the end of a paragraph. ///@return the paragraph end string jni.JString getParagraphEnd() { - return _getParagraphEnd(reference.pointer).object(const jni.JStringType()); + return _getParagraphEnd( + reference.pointer, _id_getParagraphEnd as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _setParagraphEnd = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__setParagraphEnd") + static final _id_setParagraphEnd = _class.instanceMethodId( + r"setParagraphEnd", + r"(Ljava/lang/String;)V", + ); + + static final _setParagraphEnd = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setParagraphEnd(java.lang.String s) /// @@ -1122,14 +1705,27 @@ class PDFTextStripper extends jni.JObject { void setParagraphEnd( jni.JString s, ) { - _setParagraphEnd(reference.pointer, s.reference.pointer).check(); + _setParagraphEnd(reference.pointer, _id_setParagraphEnd as jni.JMethodIDPtr, + s.reference.pointer) + .check(); } - static final _getPageStart = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getPageStart") - .asFunction)>(); + static final _id_getPageStart = _class.instanceMethodId( + r"getPageStart", + r"()Ljava/lang/String;", + ); + + static final _getPageStart = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getPageStart() /// The returned object must be released after use, by calling the [release] method. @@ -1137,16 +1733,26 @@ class PDFTextStripper extends jni.JObject { /// Returns the string which will be used at the beginning of a page. ///@return the page start string jni.JString getPageStart() { - return _getPageStart(reference.pointer).object(const jni.JStringType()); + return _getPageStart( + reference.pointer, _id_getPageStart as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _setPageStart = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__setPageStart") + static final _id_setPageStart = _class.instanceMethodId( + r"setPageStart", + r"(Ljava/lang/String;)V", + ); + + static final _setPageStart = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setPageStart(java.lang.String pageStartValue) /// @@ -1155,14 +1761,27 @@ class PDFTextStripper extends jni.JObject { void setPageStart( jni.JString pageStartValue, ) { - _setPageStart(reference.pointer, pageStartValue.reference.pointer).check(); + _setPageStart(reference.pointer, _id_setPageStart as jni.JMethodIDPtr, + pageStartValue.reference.pointer) + .check(); } - static final _getPageEnd = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getPageEnd") - .asFunction)>(); + static final _id_getPageEnd = _class.instanceMethodId( + r"getPageEnd", + r"()Ljava/lang/String;", + ); + + static final _getPageEnd = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getPageEnd() /// The returned object must be released after use, by calling the [release] method. @@ -1170,16 +1789,25 @@ class PDFTextStripper extends jni.JObject { /// Returns the string which will be used at the end of a page. ///@return the page end string jni.JString getPageEnd() { - return _getPageEnd(reference.pointer).object(const jni.JStringType()); + return _getPageEnd(reference.pointer, _id_getPageEnd as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _setPageEnd = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__setPageEnd") + static final _id_setPageEnd = _class.instanceMethodId( + r"setPageEnd", + r"(Ljava/lang/String;)V", + ); + + static final _setPageEnd = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setPageEnd(java.lang.String pageEndValue) /// @@ -1188,14 +1816,27 @@ class PDFTextStripper extends jni.JObject { void setPageEnd( jni.JString pageEndValue, ) { - _setPageEnd(reference.pointer, pageEndValue.reference.pointer).check(); + _setPageEnd(reference.pointer, _id_setPageEnd as jni.JMethodIDPtr, + pageEndValue.reference.pointer) + .check(); } - static final _getArticleStart = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getArticleStart") - .asFunction)>(); + static final _id_getArticleStart = _class.instanceMethodId( + r"getArticleStart", + r"()Ljava/lang/String;", + ); + + static final _getArticleStart = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getArticleStart() /// The returned object must be released after use, by calling the [release] method. @@ -1203,16 +1844,26 @@ class PDFTextStripper extends jni.JObject { /// Returns the string which will be used at the beginning of an article. ///@return the article start string jni.JString getArticleStart() { - return _getArticleStart(reference.pointer).object(const jni.JStringType()); + return _getArticleStart( + reference.pointer, _id_getArticleStart as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _setArticleStart = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__setArticleStart") + static final _id_setArticleStart = _class.instanceMethodId( + r"setArticleStart", + r"(Ljava/lang/String;)V", + ); + + static final _setArticleStart = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setArticleStart(java.lang.String articleStartValue) /// @@ -1221,15 +1872,27 @@ class PDFTextStripper extends jni.JObject { void setArticleStart( jni.JString articleStartValue, ) { - _setArticleStart(reference.pointer, articleStartValue.reference.pointer) + _setArticleStart(reference.pointer, _id_setArticleStart as jni.JMethodIDPtr, + articleStartValue.reference.pointer) .check(); } - static final _getArticleEnd = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getArticleEnd") - .asFunction)>(); + static final _id_getArticleEnd = _class.instanceMethodId( + r"getArticleEnd", + r"()Ljava/lang/String;", + ); + + static final _getArticleEnd = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: public java.lang.String getArticleEnd() /// The returned object must be released after use, by calling the [release] method. @@ -1237,16 +1900,26 @@ class PDFTextStripper extends jni.JObject { /// Returns the string which will be used at the end of an article. ///@return the article end string jni.JString getArticleEnd() { - return _getArticleEnd(reference.pointer).object(const jni.JStringType()); + return _getArticleEnd( + reference.pointer, _id_getArticleEnd as jni.JMethodIDPtr) + .object(const jni.JStringType()); } - static final _setArticleEnd = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__setArticleEnd") + static final _id_setArticleEnd = _class.instanceMethodId( + r"setArticleEnd", + r"(Ljava/lang/String;)V", + ); + + static final _setArticleEnd = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: public void setArticleEnd(java.lang.String articleEndValue) /// @@ -1255,88 +1928,159 @@ class PDFTextStripper extends jni.JObject { void setArticleEnd( jni.JString articleEndValue, ) { - _setArticleEnd(reference.pointer, articleEndValue.reference.pointer) + _setArticleEnd(reference.pointer, _id_setArticleEnd as jni.JMethodIDPtr, + articleEndValue.reference.pointer) .check(); } - static final _writeParagraphSeparator = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__writeParagraphSeparator") - .asFunction)>(); + static final _id_writeParagraphSeparator = _class.instanceMethodId( + r"writeParagraphSeparator", + r"()V", + ); + + static final _writeParagraphSeparator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: protected void writeParagraphSeparator() /// /// writes the paragraph separator string to the output. ///@throws IOException if something went wrong void writeParagraphSeparator() { - _writeParagraphSeparator(reference.pointer).check(); + _writeParagraphSeparator( + reference.pointer, _id_writeParagraphSeparator as jni.JMethodIDPtr) + .check(); } - static final _writeParagraphStart = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__writeParagraphStart") - .asFunction)>(); + static final _id_writeParagraphStart = _class.instanceMethodId( + r"writeParagraphStart", + r"()V", + ); + + static final _writeParagraphStart = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: protected void writeParagraphStart() /// /// Write something (if defined) at the start of a paragraph. ///@throws IOException if something went wrong void writeParagraphStart() { - _writeParagraphStart(reference.pointer).check(); + _writeParagraphStart( + reference.pointer, _id_writeParagraphStart as jni.JMethodIDPtr) + .check(); } - static final _writeParagraphEnd = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__writeParagraphEnd") - .asFunction)>(); + static final _id_writeParagraphEnd = _class.instanceMethodId( + r"writeParagraphEnd", + r"()V", + ); + + static final _writeParagraphEnd = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: protected void writeParagraphEnd() /// /// Write something (if defined) at the end of a paragraph. ///@throws IOException if something went wrong void writeParagraphEnd() { - _writeParagraphEnd(reference.pointer).check(); + _writeParagraphEnd( + reference.pointer, _id_writeParagraphEnd as jni.JMethodIDPtr) + .check(); } - static final _writePageStart = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__writePageStart") - .asFunction)>(); + static final _id_writePageStart = _class.instanceMethodId( + r"writePageStart", + r"()V", + ); + + static final _writePageStart = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: protected void writePageStart() /// /// Write something (if defined) at the start of a page. ///@throws IOException if something went wrong void writePageStart() { - _writePageStart(reference.pointer).check(); + _writePageStart(reference.pointer, _id_writePageStart as jni.JMethodIDPtr) + .check(); } - static final _writePageEnd = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__writePageEnd") - .asFunction)>(); + static final _id_writePageEnd = _class.instanceMethodId( + r"writePageEnd", + r"()V", + ); + + static final _writePageEnd = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: protected void writePageEnd() /// /// Write something (if defined) at the end of a page. ///@throws IOException if something went wrong void writePageEnd() { - _writePageEnd(reference.pointer).check(); + _writePageEnd(reference.pointer, _id_writePageEnd as jni.JMethodIDPtr) + .check(); } - static final _setListItemPatterns = jniLookup< + static final _id_setListItemPatterns = _class.instanceMethodId( + r"setListItemPatterns", + r"(Ljava/util/List;)V", + ); + + static final _setListItemPatterns = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "PDFTextStripper__setListItemPatterns") + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); /// from: protected void setListItemPatterns(java.util.List patterns) /// @@ -1345,14 +2089,29 @@ class PDFTextStripper extends jni.JObject { void setListItemPatterns( jni.JList patterns, ) { - _setListItemPatterns(reference.pointer, patterns.reference.pointer).check(); + _setListItemPatterns( + reference.pointer, + _id_setListItemPatterns as jni.JMethodIDPtr, + patterns.reference.pointer) + .check(); } - static final _getListItemPatterns = jniLookup< - ffi - .NativeFunction)>>( - "PDFTextStripper__getListItemPatterns") - .asFunction)>(); + static final _id_getListItemPatterns = _class.instanceMethodId( + r"getListItemPatterns", + r"()Ljava/util/List;", + ); + + static final _getListItemPatterns = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); /// from: protected java.util.List getListItemPatterns() /// The returned object must be released after use, by calling the [release] method. @@ -1374,16 +2133,28 @@ class PDFTextStripper extends jni.JObject { /// This method returns a list of such regular expression Patterns. ///@return a list of Pattern objects. jni.JList getListItemPatterns() { - return _getListItemPatterns(reference.pointer) + return _getListItemPatterns( + reference.pointer, _id_getListItemPatterns as jni.JMethodIDPtr) .object(const jni.JListType(jni.JObjectType())); } - static final _matchPattern = jniLookup< + static final _id_matchPattern = _class.staticMethodId( + r"matchPattern", + r"(Ljava/lang/String;Ljava/util/List;)Ljava/util/regex/Pattern;", + ); + + static final _matchPattern = ProtectedJniExtensions.lookup< ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("PDFTextStripper__matchPattern") + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") .asFunction< - jni.JniResult Function( + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, ffi.Pointer, ffi.Pointer)>(); /// from: static protected java.util.regex.Pattern matchPattern(java.lang.String string, java.util.List patterns) @@ -1403,7 +2174,11 @@ class PDFTextStripper extends jni.JObject { jni.JString string, jni.JList patterns, ) { - return _matchPattern(string.reference.pointer, patterns.reference.pointer) + return _matchPattern( + _class.reference.pointer, + _id_matchPattern as jni.JMethodIDPtr, + string.reference.pointer, + patterns.reference.pointer) .object(const jni.JObjectType()); } } diff --git a/pkgs/jnigen/example/pdfbox_plugin/linux/CMakeLists.txt b/pkgs/jnigen/example/pdfbox_plugin/linux/CMakeLists.txt index 986e388aa..ccfca4de7 100644 --- a/pkgs/jnigen/example/pdfbox_plugin/linux/CMakeLists.txt +++ b/pkgs/jnigen/example/pdfbox_plugin/linux/CMakeLists.txt @@ -6,17 +6,3 @@ cmake_minimum_required(VERSION 3.10) # Project-level configuration. set(PROJECT_NAME "pdfbox_plugin") project(${PROJECT_NAME} LANGUAGES CXX) - -# Invoke the build for native code shared with the other target platforms. -# This can be changed to accomodate different builds. -add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../src" "${CMAKE_CURRENT_BINARY_DIR}/shared") - -# List of absolute paths to libraries that should be bundled with the plugin. -# This list could contain prebuilt libraries, or libraries created by an -# external build triggered from this build file. -set(pdfbox_plugin_bundled_libraries - # Defined in ../src/CMakeLists.txt. - # This can be changed to accomodate different builds. - $ - PARENT_SCOPE -) diff --git a/pkgs/jnigen/example/pdfbox_plugin/src/CMakeLists.txt b/pkgs/jnigen/example/pdfbox_plugin/src/CMakeLists.txt deleted file mode 100644 index f35376568..000000000 --- a/pkgs/jnigen/example/pdfbox_plugin/src/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# jni_native_build (Build with jni:setup. Do not delete this line.) - -# The Flutter tooling requires that developers have CMake 3.10 or later -# installed. You should not increase this version, as doing so will cause -# the plugin to fail to compile for some customers of the plugin. -cmake_minimum_required(VERSION 3.10) - -project(pdfbox_plugin VERSION 0.0.1 LANGUAGES C) - -add_library(pdfbox_plugin SHARED - "third_party//pdfbox_plugin.c" -) - -set_target_properties(pdfbox_plugin PROPERTIES - OUTPUT_NAME "pdfbox_plugin" -) - -target_compile_definitions(pdfbox_plugin PUBLIC DART_SHARED_LIB) - -if(WIN32) - set_target_properties(${TARGET_NAME} PROPERTIES - LINK_FLAGS "/DELAYLOAD:jvm.dll") -endif() - -if (ANDROID) - target_link_libraries(pdfbox_plugin log) -else() - find_package(Java REQUIRED) - find_package(JNI REQUIRED) - include_directories(${JNI_INCLUDE_DIRS}) - target_link_libraries(pdfbox_plugin ${JNI_LIBRARIES}) -endif() diff --git a/pkgs/jnigen/example/pdfbox_plugin/src/third_party/.clang-format b/pkgs/jnigen/example/pdfbox_plugin/src/third_party/.clang-format deleted file mode 100644 index a256c2f09..000000000 --- a/pkgs/jnigen/example/pdfbox_plugin/src/third_party/.clang-format +++ /dev/null @@ -1,15 +0,0 @@ -# From dart SDK: https://github.com/dart-lang/sdk/blob/main/.clang-format - -# Defines the Chromium style for automatic reformatting. -# http://clang.llvm.org/docs/ClangFormatStyleOptions.html -BasedOnStyle: Chromium - -# clang-format doesn't seem to do a good job of this for longer comments. -ReflowComments: 'false' - -# We have lots of these. Though we need to put them all in curly braces, -# clang-format can't do that. -AllowShortIfStatementsOnASingleLine: 'true' - -# Put escaped newlines into the rightmost column. -AlignEscapedNewlinesLeft: false diff --git a/pkgs/jnigen/example/pdfbox_plugin/src/third_party/dartjni.h b/pkgs/jnigen/example/pdfbox_plugin/src/third_party/dartjni.h deleted file mode 100644 index f834d1577..000000000 --- a/pkgs/jnigen/example/pdfbox_plugin/src/third_party/dartjni.h +++ /dev/null @@ -1,383 +0,0 @@ -// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -#pragma once - -// Note: include appropriate system jni.h as found by CMake, not third_party/jni.h. -#include -#include -#include -#include - -#if _WIN32 -#include -#else -#include -#include -#endif - -#if _WIN32 -#define FFI_PLUGIN_EXPORT __declspec(dllexport) -#else -#define FFI_PLUGIN_EXPORT -#endif - -#if defined _WIN32 -#define thread_local __declspec(thread) -#else -#define thread_local __thread -#endif - -#ifdef __ANDROID__ -#include -#endif - -#ifdef __ANDROID__ -#define __ENVP_CAST (JNIEnv**) -#else -#define __ENVP_CAST (void**) -#endif - -/// Locking functions for windows and pthread. - -#if defined _WIN32 -#include - -typedef CRITICAL_SECTION MutexLock; -typedef CONDITION_VARIABLE ConditionVariable; - -static inline void init_lock(MutexLock* lock) { - InitializeCriticalSection(lock); -} - -static inline void acquire_lock(MutexLock* lock) { - EnterCriticalSection(lock); -} - -static inline void release_lock(MutexLock* lock) { - LeaveCriticalSection(lock); -} - -static inline void destroy_lock(MutexLock* lock) { - DeleteCriticalSection(lock); -} - -static inline void init_cond(ConditionVariable* cond) { - InitializeConditionVariable(cond); -} - -static inline void signal_cond(ConditionVariable* cond) { - WakeConditionVariable(cond); -} - -static inline void wait_for(ConditionVariable* cond, MutexLock* lock) { - SleepConditionVariableCS(cond, lock, INFINITE); -} - -static inline void destroy_cond(ConditionVariable* cond) { - // Not available. -} - -static inline void free_mem(void* mem) { - CoTaskMemFree(mem); -} - -#elif defined __APPLE__ || defined __LINUX__ || defined __ANDROID__ || \ - defined __GNUC__ -#include - -typedef pthread_mutex_t MutexLock; -typedef pthread_cond_t ConditionVariable; - -static inline void init_lock(MutexLock* lock) { - pthread_mutex_init(lock, NULL); -} - -static inline void acquire_lock(MutexLock* lock) { - pthread_mutex_lock(lock); -} - -static inline void release_lock(MutexLock* lock) { - pthread_mutex_unlock(lock); -} - -static inline void destroy_lock(MutexLock* lock) { - pthread_mutex_destroy(lock); -} - -static inline void init_cond(ConditionVariable* cond) { - pthread_cond_init(cond, NULL); -} - -static inline void signal_cond(ConditionVariable* cond) { - pthread_cond_signal(cond); -} - -static inline void wait_for(ConditionVariable* cond, MutexLock* lock) { - pthread_cond_wait(cond, lock); -} - -static inline void destroy_cond(ConditionVariable* cond) { - pthread_cond_destroy(cond); -} - -static inline void free_mem(void* mem) { - free(mem); -} - -#else - -#error "No locking/condition variable support; Possibly unsupported platform" - -#endif - -typedef struct CallbackResult { - MutexLock lock; - ConditionVariable cond; - int ready; - jobject object; -} CallbackResult; - -typedef struct JniLocks { - MutexLock classLoadingLock; -} JniLocks; - -/// Represents the error when dart-jni layer has already spawned singleton VM. -#define DART_JNI_SINGLETON_EXISTS (-99); - -/// Stores the global state of the JNI. -typedef struct JniContext { - JavaVM* jvm; - jobject classLoader; - jmethodID loadClassMethod; - jobject currentActivity; - jobject appContext; - JniLocks locks; -} JniContext; - -// jniEnv for this thread, used by inline functions in this header, -// therefore declared as extern. -extern thread_local JNIEnv* jniEnv; - -extern JniContext* jni; - -/// Types used by JNI API to distinguish between primitive types. -enum JniType { - booleanType = 0, - byteType = 1, - shortType = 2, - charType = 3, - intType = 4, - longType = 5, - floatType = 6, - doubleType = 7, - objectType = 8, - voidType = 9, -}; - -/// Result type for use by JNI. -/// -/// If [exception] is null, it means the result is valid. -/// It's assumed that the caller knows the expected type in [result]. -typedef struct JniResult { - jvalue value; - jthrowable exception; -} JniResult; - -/// Similar to [JniResult] but for class lookups. -typedef struct JniClassLookupResult { - jclass value; - jthrowable exception; -} JniClassLookupResult; - -/// Similar to [JniResult] but for method/field ID lookups. -typedef struct JniPointerResult { - const void* value; - jthrowable exception; -} JniPointerResult; - -/// JniExceptionDetails holds 2 jstring objects, one is the result of -/// calling `toString` on exception object, other is stack trace; -typedef struct JniExceptionDetails { - jstring message; - jstring stacktrace; -} JniExceptionDetails; - -/// This struct contains functions which wrap method call / field access conveniently along with -/// exception checking. -/// -/// Flutter embedding checks for pending JNI exceptions before an FFI transition, which requires us -/// to check for and clear the exception before returning to dart code, which requires these functions -/// to return result types. -typedef struct JniAccessorsStruct { - JniClassLookupResult (*getClass)(char* internalName); - JniPointerResult (*getFieldID)(jclass cls, char* fieldName, char* signature); - JniPointerResult (*getStaticFieldID)(jclass cls, - char* fieldName, - char* signature); - JniPointerResult (*getMethodID)(jclass cls, - char* methodName, - char* signature); - JniPointerResult (*getStaticMethodID)(jclass cls, - char* methodName, - char* signature); - JniResult (*newObject)(jclass cls, jmethodID ctor, jvalue* args); - JniResult (*newPrimitiveArray)(jsize length, int type); - JniResult (*newObjectArray)(jsize length, - jclass elementClass, - jobject initialElement); - JniResult (*getArrayElement)(jarray array, int index, int type); - JniResult (*callMethod)(jobject obj, - jmethodID methodID, - int callType, - jvalue* args); - JniResult (*callStaticMethod)(jclass cls, - jmethodID methodID, - int callType, - jvalue* args); - JniResult (*getField)(jobject obj, jfieldID fieldID, int callType); - JniResult (*getStaticField)(jclass cls, jfieldID fieldID, int callType); - JniExceptionDetails (*getExceptionDetails)(jthrowable exception); -} JniAccessorsStruct; - -FFI_PLUGIN_EXPORT JniAccessorsStruct* GetAccessors(); - -FFI_PLUGIN_EXPORT JavaVM* GetJavaVM(void); - -FFI_PLUGIN_EXPORT JNIEnv* GetJniEnv(void); - -/// Spawn a JVM with given arguments. -/// -/// Returns JNI_OK on success, and one of the documented JNI error codes on -/// failure. It returns DART_JNI_SINGLETON_EXISTS if an attempt to spawn multiple -/// JVMs is made, even if the underlying API potentially supports multiple VMs. -FFI_PLUGIN_EXPORT int SpawnJvm(JavaVMInitArgs* args); - -/// Returns Application classLoader (on Android), -/// which can be used to load application and platform classes. -/// -/// On other platforms, NULL is returned. -FFI_PLUGIN_EXPORT jobject GetClassLoader(void); - -/// Returns application context on Android. -/// -/// On other platforms, NULL is returned. -FFI_PLUGIN_EXPORT jobject GetApplicationContext(void); - -/// Returns current activity of the app on Android. -FFI_PLUGIN_EXPORT jobject GetCurrentActivity(void); - -static inline void attach_thread() { - if (jniEnv == NULL) { - (*jni->jvm)->AttachCurrentThread(jni->jvm, __ENVP_CAST & jniEnv, NULL); - } -} - -/// Load class into [cls] using platform specific mechanism -static inline void load_class_platform(jclass* cls, const char* name) { -#ifdef __ANDROID__ - jstring className = (*jniEnv)->NewStringUTF(jniEnv, name); - *cls = (*jniEnv)->CallObjectMethod(jniEnv, jni->classLoader, - jni->loadClassMethod, className); - (*jniEnv)->DeleteLocalRef(jniEnv, className); -#else - *cls = (*jniEnv)->FindClass(jniEnv, name); -#endif -} - -static inline void load_class_global_ref(jclass* cls, const char* name) { - if (*cls == NULL) { - jclass tmp = NULL; - acquire_lock(&jni->locks.classLoadingLock); - if (*cls == NULL) { - load_class_platform(&tmp, name); - if (!(*jniEnv)->ExceptionCheck(jniEnv)) { - *cls = (*jniEnv)->NewGlobalRef(jniEnv, tmp); - (*jniEnv)->DeleteLocalRef(jniEnv, tmp); - } - } - release_lock(&jni->locks.classLoadingLock); - } -} - -static inline void load_method(jclass cls, - jmethodID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetMethodID(jniEnv, cls, name, sig); - } -} - -static inline void load_static_method(jclass cls, - jmethodID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetStaticMethodID(jniEnv, cls, name, sig); - } -} - -static inline void load_field(jclass cls, - jfieldID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetFieldID(jniEnv, cls, name, sig); - } -} - -static inline void load_static_field(jclass cls, - jfieldID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetStaticFieldID(jniEnv, cls, name, sig); - } -} - -static inline jobject to_global_ref(jobject ref) { - jobject g = (*jniEnv)->NewGlobalRef(jniEnv, ref); - (*jniEnv)->DeleteLocalRef(jniEnv, ref); - return g; -} - -// These functions are useful for C+Dart bindings, and not required for pure dart bindings. - -FFI_PLUGIN_EXPORT JniContext* GetJniContextPtr(); - -/// For use by jni_gen's generated code -/// don't use these. - -// these 2 fn ptr vars will be defined by generated code library -extern JniContext* (*context_getter)(void); -extern JNIEnv* (*env_getter)(void); - -// this function will be exported by generated code library -// it will set above 2 variables. -FFI_PLUGIN_EXPORT void setJniGetters(struct JniContext* (*cg)(void), - JNIEnv* (*eg)(void)); - -static inline void load_env() { - if (jniEnv == NULL) { - jni = context_getter(); - jniEnv = env_getter(); - } -} - -static inline jthrowable check_exception() { - jthrowable exception = (*jniEnv)->ExceptionOccurred(jniEnv); - if (exception != NULL) (*jniEnv)->ExceptionClear(jniEnv); - if (exception == NULL) return NULL; - return to_global_ref(exception); -} - -static inline JniResult to_global_ref_result(jobject ref) { - JniResult result; - result.exception = check_exception(); - if (result.exception == NULL) { - result.value.l = to_global_ref(ref); - } - return result; -} diff --git a/pkgs/jnigen/example/pdfbox_plugin/src/third_party/pdfbox_plugin.c b/pkgs/jnigen/example/pdfbox_plugin/src/third_party/pdfbox_plugin.c deleted file mode 100644 index 6b111335c..000000000 --- a/pkgs/jnigen/example/pdfbox_plugin/src/third_party/pdfbox_plugin.c +++ /dev/null @@ -1,2872 +0,0 @@ -// Generated from Apache PDFBox library which is licensed under the Apache License 2.0. -// The following copyright from the original authors applies. -// -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Autogenerated by jnigen. DO NOT EDIT! - -#include -#include "dartjni.h" -#include "jni.h" - -thread_local JNIEnv* jniEnv; -JniContext* jni; - -JniContext* (*context_getter)(void); -JNIEnv* (*env_getter)(void); - -void setJniGetters(JniContext* (*cg)(void), JNIEnv* (*eg)(void)) { - context_getter = cg; - env_getter = eg; -} - -// org.apache.pdfbox.pdmodel.PDDocument -jclass _c_PDDocument = NULL; - -jmethodID _m_PDDocument__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__new0() { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__new0, "", "()V"); - if (_m_PDDocument__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_PDDocument, _m_PDDocument__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__new1 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__new1(jobject memUsageSetting) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__new1, "", - "(Lorg/apache/pdfbox/io/MemoryUsageSetting;)V"); - if (_m_PDDocument__new1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_PDDocument, - _m_PDDocument__new1, memUsageSetting); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__new2 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__new2(jobject doc) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__new2, "", - "(Lorg/apache/pdfbox/cos/COSDocument;)V"); - if (_m_PDDocument__new2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_PDDocument, _m_PDDocument__new2, doc); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__new3 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__new3(jobject doc, jobject source) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__new3, "", - "(Lorg/apache/pdfbox/cos/COSDocument;Lorg/apache/pdfbox/io/" - "RandomAccessRead;)V"); - if (_m_PDDocument__new3 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_PDDocument, - _m_PDDocument__new3, doc, source); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__new4 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__new4(jobject doc, jobject source, jobject permission) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__new4, "", - "(Lorg/apache/pdfbox/cos/COSDocument;Lorg/apache/pdfbox/io/" - "RandomAccessRead;Lorg/apache/pdfbox/pdmodel/encryption/" - "AccessPermission;)V"); - if (_m_PDDocument__new4 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject( - jniEnv, _c_PDDocument, _m_PDDocument__new4, doc, source, permission); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__addPage = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__addPage(jobject self_, jobject page) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__addPage, "addPage", - "(Lorg/apache/pdfbox/pdmodel/PDPage;)V"); - if (_m_PDDocument__addPage == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__addPage, page); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__addSignature = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__addSignature(jobject self_, jobject sigObject) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__addSignature, "addSignature", - "(Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/" - "PDSignature;)V"); - if (_m_PDDocument__addSignature == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__addSignature, - sigObject); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__addSignature1 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__addSignature1(jobject self_, - jobject sigObject, - jobject options) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__addSignature1, "addSignature", - "(Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/" - "PDSignature;Lorg/apache/pdfbox/pdmodel/interactive/" - "digitalsignature/SignatureOptions;)V"); - if (_m_PDDocument__addSignature1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__addSignature1, - sigObject, options); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__addSignature2 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__addSignature2(jobject self_, - jobject sigObject, - jobject signatureInterface) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__addSignature2, "addSignature", - "(Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/" - "PDSignature;Lorg/apache/pdfbox/pdmodel/interactive/" - "digitalsignature/SignatureInterface;)V"); - if (_m_PDDocument__addSignature2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__addSignature2, - sigObject, signatureInterface); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__addSignature3 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__addSignature3(jobject self_, - jobject sigObject, - jobject signatureInterface, - jobject options) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__addSignature3, "addSignature", - "(Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/" - "PDSignature;Lorg/apache/pdfbox/pdmodel/interactive/" - "digitalsignature/SignatureInterface;Lorg/apache/pdfbox/pdmodel/" - "interactive/digitalsignature/SignatureOptions;)V"); - if (_m_PDDocument__addSignature3 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__addSignature3, - sigObject, signatureInterface, options); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__addSignatureField = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__addSignatureField(jobject self_, - jobject sigFields, - jobject signatureInterface, - jobject options) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__addSignatureField, - "addSignatureField", - "(Ljava/util/List;Lorg/apache/pdfbox/pdmodel/interactive/" - "digitalsignature/SignatureInterface;Lorg/apache/pdfbox/pdmodel/" - "interactive/digitalsignature/SignatureOptions;)V"); - if (_m_PDDocument__addSignatureField == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__addSignatureField, - sigFields, signatureInterface, options); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__removePage = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__removePage(jobject self_, jobject page) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__removePage, "removePage", - "(Lorg/apache/pdfbox/pdmodel/PDPage;)V"); - if (_m_PDDocument__removePage == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__removePage, page); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__removePage1 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__removePage1(jobject self_, int32_t pageNumber) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__removePage1, "removePage", "(I)V"); - if (_m_PDDocument__removePage1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__removePage1, - pageNumber); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__importPage = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__importPage(jobject self_, jobject page) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_PDDocument, &_m_PDDocument__importPage, "importPage", - "(Lorg/apache/pdfbox/pdmodel/PDPage;)Lorg/apache/pdfbox/pdmodel/PDPage;"); - if (_m_PDDocument__importPage == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocument__importPage, page); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__getDocument = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__getDocument(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__getDocument, "getDocument", - "()Lorg/apache/pdfbox/cos/COSDocument;"); - if (_m_PDDocument__getDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_PDDocument__getDocument); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__getDocumentInformation = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__getDocumentInformation(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__getDocumentInformation, - "getDocumentInformation", - "()Lorg/apache/pdfbox/pdmodel/PDDocumentInformation;"); - if (_m_PDDocument__getDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocument__getDocumentInformation); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__setDocumentInformation = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__setDocumentInformation(jobject self_, jobject info) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__setDocumentInformation, - "setDocumentInformation", - "(Lorg/apache/pdfbox/pdmodel/PDDocumentInformation;)V"); - if (_m_PDDocument__setDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDDocument__setDocumentInformation, info); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__getDocumentCatalog = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__getDocumentCatalog(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__getDocumentCatalog, - "getDocumentCatalog", - "()Lorg/apache/pdfbox/pdmodel/PDDocumentCatalog;"); - if (_m_PDDocument__getDocumentCatalog == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocument__getDocumentCatalog); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__isEncrypted = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__isEncrypted(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__isEncrypted, "isEncrypted", "()Z"); - if (_m_PDDocument__isEncrypted == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_PDDocument__isEncrypted); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__getEncryption = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__getEncryption(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__getEncryption, "getEncryption", - "()Lorg/apache/pdfbox/pdmodel/encryption/PDEncryption;"); - if (_m_PDDocument__getEncryption == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_PDDocument__getEncryption); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__setEncryptionDictionary = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__setEncryptionDictionary(jobject self_, - jobject encryption) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__setEncryptionDictionary, - "setEncryptionDictionary", - "(Lorg/apache/pdfbox/pdmodel/encryption/PDEncryption;)V"); - if (_m_PDDocument__setEncryptionDictionary == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDDocument__setEncryptionDictionary, encryption); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__getLastSignatureDictionary = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__getLastSignatureDictionary(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_PDDocument, &_m_PDDocument__getLastSignatureDictionary, - "getLastSignatureDictionary", - "()Lorg/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSignature;"); - if (_m_PDDocument__getLastSignatureDictionary == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocument__getLastSignatureDictionary); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__getSignatureFields = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__getSignatureFields(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__getSignatureFields, - "getSignatureFields", "()Ljava/util/List;"); - if (_m_PDDocument__getSignatureFields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocument__getSignatureFields); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__getSignatureDictionaries = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__getSignatureDictionaries(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__getSignatureDictionaries, - "getSignatureDictionaries", "()Ljava/util/List;"); - if (_m_PDDocument__getSignatureDictionaries == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocument__getSignatureDictionaries); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__registerTrueTypeFontForClosing = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__registerTrueTypeFontForClosing(jobject self_, - jobject ttf) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__registerTrueTypeFontForClosing, - "registerTrueTypeFontForClosing", - "(Lorg/apache/fontbox/ttf/TrueTypeFont;)V"); - if (_m_PDDocument__registerTrueTypeFontForClosing == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDDocument__registerTrueTypeFontForClosing, ttf); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__load = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load(jobject file) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_PDDocument, &_m_PDDocument__load, "load", - "(Ljava/io/File;)Lorg/apache/pdfbox/pdmodel/PDDocument;"); - if (_m_PDDocument__load == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load, file); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__load1 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load1(jobject file, jobject memUsageSetting) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_PDDocument, &_m_PDDocument__load1, "load", - "(Ljava/io/File;Lorg/apache/pdfbox/io/MemoryUsageSetting;)Lorg/apache/" - "pdfbox/pdmodel/PDDocument;"); - if (_m_PDDocument__load1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load1, file, memUsageSetting); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__load2 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load2(jobject file, jobject password) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_PDDocument, &_m_PDDocument__load2, "load", - "(Ljava/io/File;Ljava/lang/String;)Lorg/apache/pdfbox/" - "pdmodel/PDDocument;"); - if (_m_PDDocument__load2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load2, file, password); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__load3 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load3(jobject file, - jobject password, - jobject memUsageSetting) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_PDDocument, &_m_PDDocument__load3, "load", - "(Ljava/io/File;Ljava/lang/String;Lorg/apache/pdfbox/io/" - "MemoryUsageSetting;)Lorg/apache/pdfbox/pdmodel/PDDocument;"); - if (_m_PDDocument__load3 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load3, file, password, - memUsageSetting); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__load4 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load4(jobject file, - jobject password, - jobject keyStore, - jobject alias) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_PDDocument, &_m_PDDocument__load4, "load", - "(Ljava/io/File;Ljava/lang/String;Ljava/io/InputStream;Ljava/lang/" - "String;)Lorg/apache/pdfbox/pdmodel/PDDocument;"); - if (_m_PDDocument__load4 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load4, file, password, keyStore, - alias); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__load5 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load5(jobject file, - jobject password, - jobject keyStore, - jobject alias, - jobject memUsageSetting) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_PDDocument, &_m_PDDocument__load5, "load", - "(Ljava/io/File;Ljava/lang/String;Ljava/io/InputStream;Ljava/lang/" - "String;Lorg/apache/pdfbox/io/MemoryUsageSetting;)Lorg/apache/pdfbox/" - "pdmodel/PDDocument;"); - if (_m_PDDocument__load5 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load5, file, password, keyStore, - alias, memUsageSetting); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__load6 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load6(jobject input) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_PDDocument, &_m_PDDocument__load6, "load", - "(Ljava/io/InputStream;)Lorg/apache/pdfbox/pdmodel/PDDocument;"); - if (_m_PDDocument__load6 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load6, input); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__load7 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load7(jobject input, jobject memUsageSetting) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_PDDocument, &_m_PDDocument__load7, "load", - "(Ljava/io/InputStream;Lorg/apache/pdfbox/io/MemoryUsageSetting;)Lorg/" - "apache/pdfbox/pdmodel/PDDocument;"); - if (_m_PDDocument__load7 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load7, input, memUsageSetting); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__load8 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load8(jobject input, jobject password) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_PDDocument, &_m_PDDocument__load8, "load", - "(Ljava/io/InputStream;Ljava/lang/String;)Lorg/apache/" - "pdfbox/pdmodel/PDDocument;"); - if (_m_PDDocument__load8 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load8, input, password); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__load9 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load9(jobject input, - jobject password, - jobject keyStore, - jobject alias) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_PDDocument, &_m_PDDocument__load9, "load", - "(Ljava/io/InputStream;Ljava/lang/String;Ljava/io/InputStream;Ljava/lang/" - "String;)Lorg/apache/pdfbox/pdmodel/PDDocument;"); - if (_m_PDDocument__load9 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load9, input, password, keyStore, - alias); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__load10 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load10(jobject input, - jobject password, - jobject memUsageSetting) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_PDDocument, &_m_PDDocument__load10, "load", - "(Ljava/io/InputStream;Ljava/lang/String;Lorg/apache/pdfbox/io/" - "MemoryUsageSetting;)Lorg/apache/pdfbox/pdmodel/PDDocument;"); - if (_m_PDDocument__load10 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load10, input, password, - memUsageSetting); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__load11 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load11(jobject input, - jobject password, - jobject keyStore, - jobject alias, - jobject memUsageSetting) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_PDDocument, &_m_PDDocument__load11, "load", - "(Ljava/io/InputStream;Ljava/lang/String;Ljava/io/InputStream;Ljava/lang/" - "String;Lorg/apache/pdfbox/io/MemoryUsageSetting;)Lorg/apache/pdfbox/" - "pdmodel/PDDocument;"); - if (_m_PDDocument__load11 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load11, input, password, keyStore, - alias, memUsageSetting); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__load12 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load12(jobject input) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_PDDocument, &_m_PDDocument__load12, "load", - "([B)Lorg/apache/pdfbox/pdmodel/PDDocument;"); - if (_m_PDDocument__load12 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load12, input); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__load13 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load13(jobject input, jobject password) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_PDDocument, &_m_PDDocument__load13, "load", - "([BLjava/lang/String;)Lorg/apache/pdfbox/pdmodel/PDDocument;"); - if (_m_PDDocument__load13 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load13, input, password); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__load14 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load14(jobject input, - jobject password, - jobject keyStore, - jobject alias) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_PDDocument, &_m_PDDocument__load14, "load", - "([BLjava/lang/String;Ljava/io/InputStream;Ljava/lang/" - "String;)Lorg/apache/pdfbox/pdmodel/PDDocument;"); - if (_m_PDDocument__load14 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load14, input, password, keyStore, - alias); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__load15 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__load15(jobject input, - jobject password, - jobject keyStore, - jobject alias, - jobject memUsageSetting) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_PDDocument, &_m_PDDocument__load15, "load", - "([BLjava/lang/String;Ljava/io/InputStream;Ljava/lang/String;Lorg/apache/" - "pdfbox/io/MemoryUsageSetting;)Lorg/apache/pdfbox/pdmodel/PDDocument;"); - if (_m_PDDocument__load15 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDDocument, _m_PDDocument__load15, input, password, keyStore, - alias, memUsageSetting); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__save = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__save(jobject self_, jobject fileName) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__save, "save", - "(Ljava/lang/String;)V"); - if (_m_PDDocument__save == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__save, fileName); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__save1 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__save1(jobject self_, jobject file) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__save1, "save", - "(Ljava/io/File;)V"); - if (_m_PDDocument__save1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__save1, file); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__save2 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__save2(jobject self_, jobject output) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__save2, "save", - "(Ljava/io/OutputStream;)V"); - if (_m_PDDocument__save2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__save2, output); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__saveIncremental = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__saveIncremental(jobject self_, jobject output) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__saveIncremental, "saveIncremental", - "(Ljava/io/OutputStream;)V"); - if (_m_PDDocument__saveIncremental == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__saveIncremental, - output); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__saveIncremental1 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__saveIncremental1(jobject self_, - jobject output, - jobject objectsToWrite) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__saveIncremental1, - "saveIncremental", "(Ljava/io/OutputStream;Ljava/util/Set;)V"); - if (_m_PDDocument__saveIncremental1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__saveIncremental1, - output, objectsToWrite); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__saveIncrementalForExternalSigning = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__saveIncrementalForExternalSigning(jobject self_, - jobject output) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__saveIncrementalForExternalSigning, - "saveIncrementalForExternalSigning", - "(Ljava/io/OutputStream;)Lorg/apache/pdfbox/pdmodel/interactive/" - "digitalsignature/ExternalSigningSupport;"); - if (_m_PDDocument__saveIncrementalForExternalSigning == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocument__saveIncrementalForExternalSigning, output); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__getPage = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__getPage(jobject self_, int32_t pageIndex) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__getPage, "getPage", - "(I)Lorg/apache/pdfbox/pdmodel/PDPage;"); - if (_m_PDDocument__getPage == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocument__getPage, pageIndex); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__getPages = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__getPages(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__getPages, "getPages", - "()Lorg/apache/pdfbox/pdmodel/PDPageTree;"); - if (_m_PDDocument__getPages == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_PDDocument__getPages); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__getNumberOfPages = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__getNumberOfPages(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__getNumberOfPages, - "getNumberOfPages", "()I"); - if (_m_PDDocument__getNumberOfPages == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_PDDocument__getNumberOfPages); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__close = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__close(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__close, "close", "()V"); - if (_m_PDDocument__close == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__close); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__protect = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__protect(jobject self_, jobject policy) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__protect, "protect", - "(Lorg/apache/pdfbox/pdmodel/encryption/ProtectionPolicy;)V"); - if (_m_PDDocument__protect == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__protect, policy); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__getCurrentAccessPermission = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__getCurrentAccessPermission(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__getCurrentAccessPermission, - "getCurrentAccessPermission", - "()Lorg/apache/pdfbox/pdmodel/encryption/AccessPermission;"); - if (_m_PDDocument__getCurrentAccessPermission == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocument__getCurrentAccessPermission); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__isAllSecurityToBeRemoved = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__isAllSecurityToBeRemoved(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__isAllSecurityToBeRemoved, - "isAllSecurityToBeRemoved", "()Z"); - if (_m_PDDocument__isAllSecurityToBeRemoved == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_PDDocument__isAllSecurityToBeRemoved); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__setAllSecurityToBeRemoved = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__setAllSecurityToBeRemoved(jobject self_, - uint8_t removeAllSecurity) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__setAllSecurityToBeRemoved, - "setAllSecurityToBeRemoved", "(Z)V"); - if (_m_PDDocument__setAllSecurityToBeRemoved == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDDocument__setAllSecurityToBeRemoved, - removeAllSecurity); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__getDocumentId = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__getDocumentId(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__getDocumentId, "getDocumentId", - "()Ljava/lang/Long;"); - if (_m_PDDocument__getDocumentId == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_PDDocument__getDocumentId); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__setDocumentId = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__setDocumentId(jobject self_, jobject docId) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__setDocumentId, "setDocumentId", - "(Ljava/lang/Long;)V"); - if (_m_PDDocument__setDocumentId == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__setDocumentId, docId); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__getVersion = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__getVersion(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__getVersion, "getVersion", "()F"); - if (_m_PDDocument__getVersion == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - float _result = - (*jniEnv)->CallFloatMethod(jniEnv, self_, _m_PDDocument__getVersion); - return (JniResult){.value = {.f = _result}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__setVersion = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__setVersion(jobject self_, float newVersion) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__setVersion, "setVersion", "(F)V"); - if (_m_PDDocument__setVersion == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__setVersion, - newVersion); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocument__getResourceCache = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__getResourceCache(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__getResourceCache, - "getResourceCache", - "()Lorg/apache/pdfbox/pdmodel/ResourceCache;"); - if (_m_PDDocument__getResourceCache == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocument__getResourceCache); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocument__setResourceCache = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocument__setResourceCache(jobject self_, jobject resourceCache) { - load_env(); - load_class_global_ref(&_c_PDDocument, "org/apache/pdfbox/pdmodel/PDDocument"); - if (_c_PDDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocument, &_m_PDDocument__setResourceCache, - "setResourceCache", - "(Lorg/apache/pdfbox/pdmodel/ResourceCache;)V"); - if (_m_PDDocument__setResourceCache == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocument__setResourceCache, - resourceCache); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// org.apache.pdfbox.pdmodel.PDDocumentInformation -jclass _c_PDDocumentInformation = NULL; - -jmethodID _m_PDDocumentInformation__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__new0() { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__new0, - "", "()V"); - if (_m_PDDocumentInformation__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_PDDocumentInformation, - _m_PDDocumentInformation__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocumentInformation__new1 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__new1(jobject dic) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__new1, - "", "(Lorg/apache/pdfbox/cos/COSDictionary;)V"); - if (_m_PDDocumentInformation__new1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_PDDocumentInformation, - _m_PDDocumentInformation__new1, dic); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocumentInformation__getCOSObject = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__getCOSObject(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__getCOSObject, - "getCOSObject", "()Lorg/apache/pdfbox/cos/COSDictionary;"); - if (_m_PDDocumentInformation__getCOSObject == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocumentInformation__getCOSObject); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocumentInformation__getPropertyStringValue = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__getPropertyStringValue(jobject self_, - jobject propertyKey) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, - &_m_PDDocumentInformation__getPropertyStringValue, - "getPropertyStringValue", - "(Ljava/lang/String;)Ljava/lang/Object;"); - if (_m_PDDocumentInformation__getPropertyStringValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocumentInformation__getPropertyStringValue, - propertyKey); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocumentInformation__getTitle = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__getTitle(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__getTitle, - "getTitle", "()Ljava/lang/String;"); - if (_m_PDDocumentInformation__getTitle == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocumentInformation__getTitle); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocumentInformation__setTitle = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__setTitle(jobject self_, jobject title) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__setTitle, - "setTitle", "(Ljava/lang/String;)V"); - if (_m_PDDocumentInformation__setTitle == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocumentInformation__setTitle, - title); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocumentInformation__getAuthor = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__getAuthor(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__getAuthor, - "getAuthor", "()Ljava/lang/String;"); - if (_m_PDDocumentInformation__getAuthor == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocumentInformation__getAuthor); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocumentInformation__setAuthor = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__setAuthor(jobject self_, jobject author) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__setAuthor, - "setAuthor", "(Ljava/lang/String;)V"); - if (_m_PDDocumentInformation__setAuthor == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocumentInformation__setAuthor, - author); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocumentInformation__getSubject = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__getSubject(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__getSubject, - "getSubject", "()Ljava/lang/String;"); - if (_m_PDDocumentInformation__getSubject == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocumentInformation__getSubject); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocumentInformation__setSubject = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__setSubject(jobject self_, jobject subject) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__setSubject, - "setSubject", "(Ljava/lang/String;)V"); - if (_m_PDDocumentInformation__setSubject == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocumentInformation__setSubject, - subject); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocumentInformation__getKeywords = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__getKeywords(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__getKeywords, - "getKeywords", "()Ljava/lang/String;"); - if (_m_PDDocumentInformation__getKeywords == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocumentInformation__getKeywords); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocumentInformation__setKeywords = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__setKeywords(jobject self_, jobject keywords) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__setKeywords, - "setKeywords", "(Ljava/lang/String;)V"); - if (_m_PDDocumentInformation__setKeywords == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDDocumentInformation__setKeywords, keywords); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocumentInformation__getCreator = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__getCreator(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__getCreator, - "getCreator", "()Ljava/lang/String;"); - if (_m_PDDocumentInformation__getCreator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocumentInformation__getCreator); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocumentInformation__setCreator = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__setCreator(jobject self_, jobject creator) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__setCreator, - "setCreator", "(Ljava/lang/String;)V"); - if (_m_PDDocumentInformation__setCreator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocumentInformation__setCreator, - creator); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocumentInformation__getProducer = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__getProducer(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__getProducer, - "getProducer", "()Ljava/lang/String;"); - if (_m_PDDocumentInformation__getProducer == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocumentInformation__getProducer); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocumentInformation__setProducer = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__setProducer(jobject self_, jobject producer) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__setProducer, - "setProducer", "(Ljava/lang/String;)V"); - if (_m_PDDocumentInformation__setProducer == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDDocumentInformation__setProducer, producer); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocumentInformation__getCreationDate = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__getCreationDate(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, - &_m_PDDocumentInformation__getCreationDate, "getCreationDate", - "()Ljava/util/Calendar;"); - if (_m_PDDocumentInformation__getCreationDate == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocumentInformation__getCreationDate); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocumentInformation__setCreationDate = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__setCreationDate(jobject self_, jobject date) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, - &_m_PDDocumentInformation__setCreationDate, "setCreationDate", - "(Ljava/util/Calendar;)V"); - if (_m_PDDocumentInformation__setCreationDate == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDDocumentInformation__setCreationDate, date); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocumentInformation__getModificationDate = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__getModificationDate(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, - &_m_PDDocumentInformation__getModificationDate, - "getModificationDate", "()Ljava/util/Calendar;"); - if (_m_PDDocumentInformation__getModificationDate == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocumentInformation__getModificationDate); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocumentInformation__setModificationDate = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__setModificationDate(jobject self_, - jobject date) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, - &_m_PDDocumentInformation__setModificationDate, - "setModificationDate", "(Ljava/util/Calendar;)V"); - if (_m_PDDocumentInformation__setModificationDate == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod( - jniEnv, self_, _m_PDDocumentInformation__setModificationDate, date); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocumentInformation__getTrapped = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__getTrapped(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__getTrapped, - "getTrapped", "()Ljava/lang/String;"); - if (_m_PDDocumentInformation__getTrapped == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocumentInformation__getTrapped); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocumentInformation__getMetadataKeys = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__getMetadataKeys(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, - &_m_PDDocumentInformation__getMetadataKeys, "getMetadataKeys", - "()Ljava/util/Set;"); - if (_m_PDDocumentInformation__getMetadataKeys == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocumentInformation__getMetadataKeys); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocumentInformation__getCustomMetadataValue = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__getCustomMetadataValue(jobject self_, - jobject fieldName) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, - &_m_PDDocumentInformation__getCustomMetadataValue, - "getCustomMetadataValue", - "(Ljava/lang/String;)Ljava/lang/String;"); - if (_m_PDDocumentInformation__getCustomMetadataValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDDocumentInformation__getCustomMetadataValue, - fieldName); - return to_global_ref_result(_result); -} - -jmethodID _m_PDDocumentInformation__setCustomMetadataValue = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__setCustomMetadataValue(jobject self_, - jobject fieldName, - jobject fieldValue) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, - &_m_PDDocumentInformation__setCustomMetadataValue, - "setCustomMetadataValue", - "(Ljava/lang/String;Ljava/lang/String;)V"); - if (_m_PDDocumentInformation__setCustomMetadataValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDDocumentInformation__setCustomMetadataValue, - fieldName, fieldValue); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDDocumentInformation__setTrapped = NULL; -FFI_PLUGIN_EXPORT -JniResult PDDocumentInformation__setTrapped(jobject self_, jobject value) { - load_env(); - load_class_global_ref(&_c_PDDocumentInformation, - "org/apache/pdfbox/pdmodel/PDDocumentInformation"); - if (_c_PDDocumentInformation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDDocumentInformation, &_m_PDDocumentInformation__setTrapped, - "setTrapped", "(Ljava/lang/String;)V"); - if (_m_PDDocumentInformation__setTrapped == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDDocumentInformation__setTrapped, - value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// org.apache.pdfbox.text.PDFTextStripper -jclass _c_PDFTextStripper = NULL; - -jmethodID _m_PDFTextStripper__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__new0() { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__new0, "", "()V"); - if (_m_PDFTextStripper__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_PDFTextStripper, - _m_PDFTextStripper__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_PDFTextStripper__getText = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getText(jobject self_, jobject doc) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getText, "getText", - "(Lorg/apache/pdfbox/pdmodel/PDDocument;)Ljava/lang/String;"); - if (_m_PDFTextStripper__getText == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDFTextStripper__getText, doc); - return to_global_ref_result(_result); -} - -jmethodID _m_PDFTextStripper__writeText = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__writeText(jobject self_, - jobject doc, - jobject outputStream) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__writeText, "writeText", - "(Lorg/apache/pdfbox/pdmodel/PDDocument;Ljava/io/Writer;)V"); - if (_m_PDFTextStripper__writeText == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__writeText, doc, - outputStream); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__processPages = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__processPages(jobject self_, jobject pages) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__processPages, - "processPages", "(Lorg/apache/pdfbox/pdmodel/PDPageTree;)V"); - if (_m_PDFTextStripper__processPages == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__processPages, - pages); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__startDocument = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__startDocument(jobject self_, jobject document) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__startDocument, - "startDocument", "(Lorg/apache/pdfbox/pdmodel/PDDocument;)V"); - if (_m_PDFTextStripper__startDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__startDocument, - document); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__endDocument = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__endDocument(jobject self_, jobject document) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__endDocument, - "endDocument", "(Lorg/apache/pdfbox/pdmodel/PDDocument;)V"); - if (_m_PDFTextStripper__endDocument == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__endDocument, - document); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__processPage = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__processPage(jobject self_, jobject page) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__processPage, - "processPage", "(Lorg/apache/pdfbox/pdmodel/PDPage;)V"); - if (_m_PDFTextStripper__processPage == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__processPage, - page); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__startArticle = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__startArticle(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__startArticle, - "startArticle", "()V"); - if (_m_PDFTextStripper__startArticle == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__startArticle); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__startArticle1 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__startArticle1(jobject self_, uint8_t isLTR) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__startArticle1, - "startArticle", "(Z)V"); - if (_m_PDFTextStripper__startArticle1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__startArticle1, - isLTR); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__endArticle = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__endArticle(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__endArticle, "endArticle", - "()V"); - if (_m_PDFTextStripper__endArticle == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__endArticle); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__startPage = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__startPage(jobject self_, jobject page) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__startPage, "startPage", - "(Lorg/apache/pdfbox/pdmodel/PDPage;)V"); - if (_m_PDFTextStripper__startPage == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__startPage, page); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__endPage = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__endPage(jobject self_, jobject page) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__endPage, "endPage", - "(Lorg/apache/pdfbox/pdmodel/PDPage;)V"); - if (_m_PDFTextStripper__endPage == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__endPage, page); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__writePage = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__writePage(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__writePage, "writePage", - "()V"); - if (_m_PDFTextStripper__writePage == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__writePage); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__writeLineSeparator = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__writeLineSeparator(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__writeLineSeparator, - "writeLineSeparator", "()V"); - if (_m_PDFTextStripper__writeLineSeparator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDFTextStripper__writeLineSeparator); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__writeWordSeparator = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__writeWordSeparator(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__writeWordSeparator, - "writeWordSeparator", "()V"); - if (_m_PDFTextStripper__writeWordSeparator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDFTextStripper__writeWordSeparator); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__writeCharacters = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__writeCharacters(jobject self_, jobject text) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__writeCharacters, - "writeCharacters", "(Lorg/apache/pdfbox/text/TextPosition;)V"); - if (_m_PDFTextStripper__writeCharacters == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__writeCharacters, - text); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__writeString = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__writeString(jobject self_, - jobject text, - jobject textPositions) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__writeString, - "writeString", "(Ljava/lang/String;Ljava/util/List;)V"); - if (_m_PDFTextStripper__writeString == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__writeString, - text, textPositions); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__writeString1 = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__writeString1(jobject self_, jobject text) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__writeString1, - "writeString", "(Ljava/lang/String;)V"); - if (_m_PDFTextStripper__writeString1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__writeString1, - text); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__processTextPosition = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__processTextPosition(jobject self_, jobject text) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__processTextPosition, - "processTextPosition", - "(Lorg/apache/pdfbox/text/TextPosition;)V"); - if (_m_PDFTextStripper__processTextPosition == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDFTextStripper__processTextPosition, text); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getStartPage = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getStartPage(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getStartPage, - "getStartPage", "()I"); - if (_m_PDFTextStripper__getStartPage == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_PDFTextStripper__getStartPage); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__setStartPage = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setStartPage(jobject self_, int32_t startPageValue) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setStartPage, - "setStartPage", "(I)V"); - if (_m_PDFTextStripper__setStartPage == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__setStartPage, - startPageValue); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getEndPage = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getEndPage(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getEndPage, "getEndPage", - "()I"); - if (_m_PDFTextStripper__getEndPage == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_PDFTextStripper__getEndPage); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__setEndPage = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setEndPage(jobject self_, int32_t endPageValue) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setEndPage, "setEndPage", - "(I)V"); - if (_m_PDFTextStripper__setEndPage == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__setEndPage, - endPageValue); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__setLineSeparator = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setLineSeparator(jobject self_, jobject separator) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setLineSeparator, - "setLineSeparator", "(Ljava/lang/String;)V"); - if (_m_PDFTextStripper__setLineSeparator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__setLineSeparator, - separator); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getLineSeparator = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getLineSeparator(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getLineSeparator, - "getLineSeparator", "()Ljava/lang/String;"); - if (_m_PDFTextStripper__getLineSeparator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDFTextStripper__getLineSeparator); - return to_global_ref_result(_result); -} - -jmethodID _m_PDFTextStripper__getWordSeparator = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getWordSeparator(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getWordSeparator, - "getWordSeparator", "()Ljava/lang/String;"); - if (_m_PDFTextStripper__getWordSeparator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDFTextStripper__getWordSeparator); - return to_global_ref_result(_result); -} - -jmethodID _m_PDFTextStripper__setWordSeparator = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setWordSeparator(jobject self_, jobject separator) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setWordSeparator, - "setWordSeparator", "(Ljava/lang/String;)V"); - if (_m_PDFTextStripper__setWordSeparator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__setWordSeparator, - separator); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getSuppressDuplicateOverlappingText = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getSuppressDuplicateOverlappingText(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, - &_m_PDFTextStripper__getSuppressDuplicateOverlappingText, - "getSuppressDuplicateOverlappingText", "()Z"); - if (_m_PDFTextStripper__getSuppressDuplicateOverlappingText == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_PDFTextStripper__getSuppressDuplicateOverlappingText); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getCurrentPageNo = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getCurrentPageNo(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getCurrentPageNo, - "getCurrentPageNo", "()I"); - if (_m_PDFTextStripper__getCurrentPageNo == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_PDFTextStripper__getCurrentPageNo); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getOutput = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getOutput(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getOutput, "getOutput", - "()Ljava/io/Writer;"); - if (_m_PDFTextStripper__getOutput == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_PDFTextStripper__getOutput); - return to_global_ref_result(_result); -} - -jmethodID _m_PDFTextStripper__getCharactersByArticle = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getCharactersByArticle(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getCharactersByArticle, - "getCharactersByArticle", "()Ljava/util/List;"); - if (_m_PDFTextStripper__getCharactersByArticle == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDFTextStripper__getCharactersByArticle); - return to_global_ref_result(_result); -} - -jmethodID _m_PDFTextStripper__setSuppressDuplicateOverlappingText = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setSuppressDuplicateOverlappingText( - jobject self_, - uint8_t suppressDuplicateOverlappingTextValue) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, - &_m_PDFTextStripper__setSuppressDuplicateOverlappingText, - "setSuppressDuplicateOverlappingText", "(Z)V"); - if (_m_PDFTextStripper__setSuppressDuplicateOverlappingText == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod( - jniEnv, self_, _m_PDFTextStripper__setSuppressDuplicateOverlappingText, - suppressDuplicateOverlappingTextValue); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getSeparateByBeads = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getSeparateByBeads(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getSeparateByBeads, - "getSeparateByBeads", "()Z"); - if (_m_PDFTextStripper__getSeparateByBeads == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_PDFTextStripper__getSeparateByBeads); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__setShouldSeparateByBeads = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setShouldSeparateByBeads( - jobject self_, - uint8_t aShouldSeparateByBeads) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setShouldSeparateByBeads, - "setShouldSeparateByBeads", "(Z)V"); - if (_m_PDFTextStripper__setShouldSeparateByBeads == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDFTextStripper__setShouldSeparateByBeads, - aShouldSeparateByBeads); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getEndBookmark = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getEndBookmark(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getEndBookmark, - "getEndBookmark", - "()Lorg/apache/pdfbox/pdmodel/interactive/documentnavigation/" - "outline/PDOutlineItem;"); - if (_m_PDFTextStripper__getEndBookmark == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDFTextStripper__getEndBookmark); - return to_global_ref_result(_result); -} - -jmethodID _m_PDFTextStripper__setEndBookmark = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setEndBookmark(jobject self_, jobject aEndBookmark) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setEndBookmark, - "setEndBookmark", - "(Lorg/apache/pdfbox/pdmodel/interactive/documentnavigation/" - "outline/PDOutlineItem;)V"); - if (_m_PDFTextStripper__setEndBookmark == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__setEndBookmark, - aEndBookmark); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getStartBookmark = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getStartBookmark(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getStartBookmark, - "getStartBookmark", - "()Lorg/apache/pdfbox/pdmodel/interactive/documentnavigation/" - "outline/PDOutlineItem;"); - if (_m_PDFTextStripper__getStartBookmark == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDFTextStripper__getStartBookmark); - return to_global_ref_result(_result); -} - -jmethodID _m_PDFTextStripper__setStartBookmark = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setStartBookmark(jobject self_, - jobject aStartBookmark) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setStartBookmark, - "setStartBookmark", - "(Lorg/apache/pdfbox/pdmodel/interactive/documentnavigation/" - "outline/PDOutlineItem;)V"); - if (_m_PDFTextStripper__setStartBookmark == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__setStartBookmark, - aStartBookmark); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getAddMoreFormatting = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getAddMoreFormatting(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getAddMoreFormatting, - "getAddMoreFormatting", "()Z"); - if (_m_PDFTextStripper__getAddMoreFormatting == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_PDFTextStripper__getAddMoreFormatting); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__setAddMoreFormatting = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setAddMoreFormatting(jobject self_, - uint8_t newAddMoreFormatting) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setAddMoreFormatting, - "setAddMoreFormatting", "(Z)V"); - if (_m_PDFTextStripper__setAddMoreFormatting == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDFTextStripper__setAddMoreFormatting, - newAddMoreFormatting); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getSortByPosition = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getSortByPosition(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getSortByPosition, - "getSortByPosition", "()Z"); - if (_m_PDFTextStripper__getSortByPosition == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_PDFTextStripper__getSortByPosition); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__setSortByPosition = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setSortByPosition(jobject self_, - uint8_t newSortByPosition) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setSortByPosition, - "setSortByPosition", "(Z)V"); - if (_m_PDFTextStripper__setSortByPosition == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod( - jniEnv, self_, _m_PDFTextStripper__setSortByPosition, newSortByPosition); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getSpacingTolerance = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getSpacingTolerance(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getSpacingTolerance, - "getSpacingTolerance", "()F"); - if (_m_PDFTextStripper__getSpacingTolerance == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - float _result = (*jniEnv)->CallFloatMethod( - jniEnv, self_, _m_PDFTextStripper__getSpacingTolerance); - return (JniResult){.value = {.f = _result}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__setSpacingTolerance = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setSpacingTolerance(jobject self_, - float spacingToleranceValue) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setSpacingTolerance, - "setSpacingTolerance", "(F)V"); - if (_m_PDFTextStripper__setSpacingTolerance == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDFTextStripper__setSpacingTolerance, - spacingToleranceValue); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getAverageCharTolerance = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getAverageCharTolerance(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getAverageCharTolerance, - "getAverageCharTolerance", "()F"); - if (_m_PDFTextStripper__getAverageCharTolerance == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - float _result = (*jniEnv)->CallFloatMethod( - jniEnv, self_, _m_PDFTextStripper__getAverageCharTolerance); - return (JniResult){.value = {.f = _result}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__setAverageCharTolerance = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setAverageCharTolerance( - jobject self_, - float averageCharToleranceValue) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setAverageCharTolerance, - "setAverageCharTolerance", "(F)V"); - if (_m_PDFTextStripper__setAverageCharTolerance == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDFTextStripper__setAverageCharTolerance, - averageCharToleranceValue); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getIndentThreshold = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getIndentThreshold(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getIndentThreshold, - "getIndentThreshold", "()F"); - if (_m_PDFTextStripper__getIndentThreshold == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - float _result = (*jniEnv)->CallFloatMethod( - jniEnv, self_, _m_PDFTextStripper__getIndentThreshold); - return (JniResult){.value = {.f = _result}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__setIndentThreshold = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setIndentThreshold(jobject self_, - float indentThresholdValue) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setIndentThreshold, - "setIndentThreshold", "(F)V"); - if (_m_PDFTextStripper__setIndentThreshold == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDFTextStripper__setIndentThreshold, - indentThresholdValue); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getDropThreshold = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getDropThreshold(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getDropThreshold, - "getDropThreshold", "()F"); - if (_m_PDFTextStripper__getDropThreshold == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - float _result = (*jniEnv)->CallFloatMethod( - jniEnv, self_, _m_PDFTextStripper__getDropThreshold); - return (JniResult){.value = {.f = _result}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__setDropThreshold = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setDropThreshold(jobject self_, - float dropThresholdValue) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setDropThreshold, - "setDropThreshold", "(F)V"); - if (_m_PDFTextStripper__setDropThreshold == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__setDropThreshold, - dropThresholdValue); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getParagraphStart = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getParagraphStart(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getParagraphStart, - "getParagraphStart", "()Ljava/lang/String;"); - if (_m_PDFTextStripper__getParagraphStart == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDFTextStripper__getParagraphStart); - return to_global_ref_result(_result); -} - -jmethodID _m_PDFTextStripper__setParagraphStart = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setParagraphStart(jobject self_, jobject s) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setParagraphStart, - "setParagraphStart", "(Ljava/lang/String;)V"); - if (_m_PDFTextStripper__setParagraphStart == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDFTextStripper__setParagraphStart, s); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getParagraphEnd = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getParagraphEnd(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getParagraphEnd, - "getParagraphEnd", "()Ljava/lang/String;"); - if (_m_PDFTextStripper__getParagraphEnd == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDFTextStripper__getParagraphEnd); - return to_global_ref_result(_result); -} - -jmethodID _m_PDFTextStripper__setParagraphEnd = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setParagraphEnd(jobject self_, jobject s) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setParagraphEnd, - "setParagraphEnd", "(Ljava/lang/String;)V"); - if (_m_PDFTextStripper__setParagraphEnd == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__setParagraphEnd, - s); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getPageStart = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getPageStart(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getPageStart, - "getPageStart", "()Ljava/lang/String;"); - if (_m_PDFTextStripper__getPageStart == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDFTextStripper__getPageStart); - return to_global_ref_result(_result); -} - -jmethodID _m_PDFTextStripper__setPageStart = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setPageStart(jobject self_, jobject pageStartValue) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setPageStart, - "setPageStart", "(Ljava/lang/String;)V"); - if (_m_PDFTextStripper__setPageStart == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__setPageStart, - pageStartValue); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getPageEnd = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getPageEnd(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getPageEnd, "getPageEnd", - "()Ljava/lang/String;"); - if (_m_PDFTextStripper__getPageEnd == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod(jniEnv, self_, - _m_PDFTextStripper__getPageEnd); - return to_global_ref_result(_result); -} - -jmethodID _m_PDFTextStripper__setPageEnd = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setPageEnd(jobject self_, jobject pageEndValue) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setPageEnd, "setPageEnd", - "(Ljava/lang/String;)V"); - if (_m_PDFTextStripper__setPageEnd == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__setPageEnd, - pageEndValue); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getArticleStart = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getArticleStart(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getArticleStart, - "getArticleStart", "()Ljava/lang/String;"); - if (_m_PDFTextStripper__getArticleStart == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDFTextStripper__getArticleStart); - return to_global_ref_result(_result); -} - -jmethodID _m_PDFTextStripper__setArticleStart = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setArticleStart(jobject self_, - jobject articleStartValue) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setArticleStart, - "setArticleStart", "(Ljava/lang/String;)V"); - if (_m_PDFTextStripper__setArticleStart == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__setArticleStart, - articleStartValue); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getArticleEnd = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getArticleEnd(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getArticleEnd, - "getArticleEnd", "()Ljava/lang/String;"); - if (_m_PDFTextStripper__getArticleEnd == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDFTextStripper__getArticleEnd); - return to_global_ref_result(_result); -} - -jmethodID _m_PDFTextStripper__setArticleEnd = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setArticleEnd(jobject self_, - jobject articleEndValue) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setArticleEnd, - "setArticleEnd", "(Ljava/lang/String;)V"); - if (_m_PDFTextStripper__setArticleEnd == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__setArticleEnd, - articleEndValue); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__writeParagraphSeparator = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__writeParagraphSeparator(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__writeParagraphSeparator, - "writeParagraphSeparator", "()V"); - if (_m_PDFTextStripper__writeParagraphSeparator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDFTextStripper__writeParagraphSeparator); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__writeParagraphStart = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__writeParagraphStart(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__writeParagraphStart, - "writeParagraphStart", "()V"); - if (_m_PDFTextStripper__writeParagraphStart == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDFTextStripper__writeParagraphStart); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__writeParagraphEnd = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__writeParagraphEnd(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__writeParagraphEnd, - "writeParagraphEnd", "()V"); - if (_m_PDFTextStripper__writeParagraphEnd == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDFTextStripper__writeParagraphEnd); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__writePageStart = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__writePageStart(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__writePageStart, - "writePageStart", "()V"); - if (_m_PDFTextStripper__writePageStart == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__writePageStart); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__writePageEnd = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__writePageEnd(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__writePageEnd, - "writePageEnd", "()V"); - if (_m_PDFTextStripper__writePageEnd == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_PDFTextStripper__writePageEnd); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__setListItemPatterns = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__setListItemPatterns(jobject self_, - jobject patterns) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__setListItemPatterns, - "setListItemPatterns", "(Ljava/util/List;)V"); - if (_m_PDFTextStripper__setListItemPatterns == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_PDFTextStripper__setListItemPatterns, patterns); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_PDFTextStripper__getListItemPatterns = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__getListItemPatterns(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_PDFTextStripper, &_m_PDFTextStripper__getListItemPatterns, - "getListItemPatterns", "()Ljava/util/List;"); - if (_m_PDFTextStripper__getListItemPatterns == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_PDFTextStripper__getListItemPatterns); - return to_global_ref_result(_result); -} - -jmethodID _m_PDFTextStripper__matchPattern = NULL; -FFI_PLUGIN_EXPORT -JniResult PDFTextStripper__matchPattern(jobject string, jobject patterns) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_PDFTextStripper, &_m_PDFTextStripper__matchPattern, "matchPattern", - "(Ljava/lang/String;Ljava/util/List;)Ljava/util/regex/Pattern;"); - if (_m_PDFTextStripper__matchPattern == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_PDFTextStripper, _m_PDFTextStripper__matchPattern, string, - patterns); - return to_global_ref_result(_result); -} - -jfieldID _f_PDFTextStripper__LINE_SEPARATOR = NULL; -FFI_PLUGIN_EXPORT -JniResult get_PDFTextStripper__LINE_SEPARATOR(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_PDFTextStripper, &_f_PDFTextStripper__LINE_SEPARATOR, - "LINE_SEPARATOR", "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetObjectField( - jniEnv, self_, _f_PDFTextStripper__LINE_SEPARATOR); - return to_global_ref_result(_result); -} - -jfieldID _f_PDFTextStripper__charactersByArticle = NULL; -FFI_PLUGIN_EXPORT -JniResult get_PDFTextStripper__charactersByArticle(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_PDFTextStripper, &_f_PDFTextStripper__charactersByArticle, - "charactersByArticle", "Ljava/util/ArrayList;"); - jobject _result = (*jniEnv)->GetObjectField( - jniEnv, self_, _f_PDFTextStripper__charactersByArticle); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_PDFTextStripper__charactersByArticle(jobject self_, - jobject value) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_PDFTextStripper, &_f_PDFTextStripper__charactersByArticle, - "charactersByArticle", "Ljava/util/ArrayList;"); - (*jniEnv)->SetObjectField(jniEnv, self_, - _f_PDFTextStripper__charactersByArticle, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_PDFTextStripper__document = NULL; -FFI_PLUGIN_EXPORT -JniResult get_PDFTextStripper__document(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_PDFTextStripper, &_f_PDFTextStripper__document, "document", - "Lorg/apache/pdfbox/pdmodel/PDDocument;"); - jobject _result = - (*jniEnv)->GetObjectField(jniEnv, self_, _f_PDFTextStripper__document); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_PDFTextStripper__document(jobject self_, jobject value) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_PDFTextStripper, &_f_PDFTextStripper__document, "document", - "Lorg/apache/pdfbox/pdmodel/PDDocument;"); - (*jniEnv)->SetObjectField(jniEnv, self_, _f_PDFTextStripper__document, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_PDFTextStripper__output = NULL; -FFI_PLUGIN_EXPORT -JniResult get_PDFTextStripper__output(jobject self_) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_PDFTextStripper, &_f_PDFTextStripper__output, "output", - "Ljava/io/Writer;"); - jobject _result = - (*jniEnv)->GetObjectField(jniEnv, self_, _f_PDFTextStripper__output); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_PDFTextStripper__output(jobject self_, jobject value) { - load_env(); - load_class_global_ref(&_c_PDFTextStripper, - "org/apache/pdfbox/text/PDFTextStripper"); - if (_c_PDFTextStripper == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_PDFTextStripper, &_f_PDFTextStripper__output, "output", - "Ljava/io/Writer;"); - (*jniEnv)->SetObjectField(jniEnv, self_, _f_PDFTextStripper__output, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} diff --git a/pkgs/jnigen/example/pdfbox_plugin/windows/CMakeLists.txt b/pkgs/jnigen/example/pdfbox_plugin/windows/CMakeLists.txt index 3d9bd5c70..0413ac97a 100644 --- a/pkgs/jnigen/example/pdfbox_plugin/windows/CMakeLists.txt +++ b/pkgs/jnigen/example/pdfbox_plugin/windows/CMakeLists.txt @@ -7,17 +7,3 @@ cmake_minimum_required(VERSION 3.14) # Project-level configuration. set(PROJECT_NAME "pdfbox_plugin") project(${PROJECT_NAME} LANGUAGES CXX) - -# Invoke the build for native code shared with the other target platforms. -# This can be changed to accomodate different builds. -add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../src" "${CMAKE_CURRENT_BINARY_DIR}/shared") - -# List of absolute paths to libraries that should be bundled with the plugin. -# This list could contain prebuilt libraries, or libraries created by an -# external build triggered from this build file. -set(pdfbox_plugin_bundled_libraries - # Defined in ../src/CMakeLists.txt. - # This can be changed to accomodate different builds. - $ - PARENT_SCOPE -) diff --git a/pkgs/jnigen/java/src/main/java/com/github/dart_lang/jnigen/apisummarizer/SummarizerOptions.java b/pkgs/jnigen/java/src/main/java/com/github/dart_lang/jnigen/apisummarizer/SummarizerOptions.java index 8a3e5450c..70b7408e5 100644 --- a/pkgs/jnigen/java/src/main/java/com/github/dart_lang/jnigen/apisummarizer/SummarizerOptions.java +++ b/pkgs/jnigen/java/src/main/java/com/github/dart_lang/jnigen/apisummarizer/SummarizerOptions.java @@ -1,5 +1,6 @@ package com.github.dart_lang.jnigen.apisummarizer; +import java.io.PrintWriter; import java.util.Arrays; import org.apache.commons.cli.*; @@ -63,15 +64,22 @@ public static SummarizerOptions parseArgs(String[] args) { try { cmd = parser.parse(options, args); if (cmd.getArgs().length < 1) { - throw new ParseException("Need to specify paths to source files"); + throw new ParseException("Need to specify the package or class names"); } } catch (ParseException e) { - System.out.println(e.getMessage()); + System.err.println(e.getMessage()); help.printHelp( + new PrintWriter(System.err, true), + help.getWidth(), "java -jar [-s ] " + "[-c ] \n" + "Class or package names should be fully qualified.\n\n", - options); + null, + options, + help.getLeftPadding(), + help.getDescPadding(), + null, + false); System.exit(1); throw new RuntimeException("Unreachable code"); } diff --git a/pkgs/jnigen/lib/src/bindings/c_generator.dart b/pkgs/jnigen/lib/src/bindings/c_generator.dart deleted file mode 100644 index b99e7136a..000000000 --- a/pkgs/jnigen/lib/src/bindings/c_generator.dart +++ /dev/null @@ -1,386 +0,0 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'dart:io'; - -import '../config/config.dart'; -import '../elements/elements.dart'; -import '../logging/logging.dart'; -import '../util/find_package.dart'; -import '../util/string_util.dart'; -import 'visitor.dart'; - -class CFieldName extends Visitor { - const CFieldName(); - - @override - String visit(Field node) { - final className = node.classDecl.uniqueName; - final fieldName = node.finalName; - return '${className}__$fieldName'; - } -} - -class CMethodName extends Visitor { - const CMethodName(); - - @override - String visit(Method node) { - final className = node.classDecl.uniqueName; - final methodName = node.finalName; - return '${className}__$methodName'; - } -} - -class CGenerator extends Visitor> { - static const _prelude = '''// Autogenerated by jnigen. DO NOT EDIT! - -#include -#include "jni.h" -#include "dartjni.h" - -thread_local JNIEnv *jniEnv; -JniContext *jni; - -JniContext *(*context_getter)(void); -JNIEnv *(*env_getter)(void); - -void setJniGetters(JniContext *(*cg)(void), - JNIEnv *(*eg)(void)) { - context_getter = cg; - env_getter = eg; -} - -'''; - - final Config config; - - CGenerator(this.config); - - Future _copyFileFromPackage(String package, String relPath, Uri target, - {String Function(String)? transform}) async { - final packagePath = await findPackageRoot(package); - if (packagePath != null) { - final sourceFile = File.fromUri(packagePath.resolve(relPath)); - final targetFile = await File.fromUri(target).create(recursive: true); - var source = await sourceFile.readAsString(); - if (transform != null) { - source = transform(source); - } - await targetFile.writeAsString(source); - } else { - log.warning('package $package not found! ' - 'skipped copying ${target.toFilePath()}'); - } - } - - @override - Future visit(Classes node) async { - // Write C file and init file. - final cConfig = config.outputConfig.cConfig!; - final cRoot = cConfig.path; - final preamble = config.preamble; - log.info("Using c root = $cRoot"); - final libraryName = cConfig.libraryName; - log.info('Creating dart init file ...'); - // Create C file. - final subdir = cConfig.subdir ?? '.'; - final cFileRelativePath = '$subdir/$libraryName.c'; - final cFile = await File.fromUri(cRoot.resolve(cFileRelativePath)) - .create(recursive: true); - final cFileStream = cFile.openWrite(); - // Write C Bindings. - if (preamble != null) { - cFileStream.writeln(preamble); - } - cFileStream.write(_prelude); - final classGenerator = _CClassGenerator(config, cFileStream); - for (final classDecl in node.decls.values) { - classDecl.accept(classGenerator); - } - await cFileStream.close(); - log.info('Copying auxiliary files...'); - for (final file in ['dartjni.h', '.clang-format']) { - await _copyFileFromPackage( - 'jni', 'src/$file', cRoot.resolve('$subdir/$file')); - } - await _copyFileFromPackage( - 'jnigen', 'cmake/CMakeLists.txt.tmpl', cRoot.resolve('CMakeLists.txt'), - transform: (s) { - return s - .replaceAll('{{LIBRARY_NAME}}', libraryName) - .replaceAll('{{SUBDIR}}', subdir); - }); - log.info('Running clang-format on C bindings'); - try { - final clangFormat = Process.runSync('clang-format', ['-i', cFile.path]); - if (clangFormat.exitCode != 0) { - printError(clangFormat.stderr); - log.warning('clang-format exited with ${clangFormat.exitCode}'); - } - } on ProcessException catch (e) { - log.warning('cannot run clang-format: $e'); - } - } -} - -const _classVarPrefix = '_c_'; -const _jniResultType = 'JniResult'; -const _loadEnvCall = 'load_env();'; -const _ifError = - '(JniResult){.value = {.j = 0}, .exception = check_exception()}'; - -class _CClassGenerator extends Visitor { - final Config config; - final StringSink s; - - _CClassGenerator(this.config, this.s); - - @override - void visit(ClassDecl node) { - final classNameInC = node.uniqueName; - final classVar = '$_classVarPrefix$classNameInC'; - // Global variable in C that holds the reference to class. - s.write('''// ${node.binaryName} -jclass $classVar = NULL; - -'''); - - final methodGenerator = _CMethodGenerator(config, s); - for (final method in node.methods) { - method.accept(methodGenerator); - } - - final fieldGenerator = _CFieldGenerator(config, s); - for (final field in node.fields) { - field.accept(fieldGenerator); - } - } -} - -class _CLoadClassGenerator extends Visitor { - _CLoadClassGenerator(); - - @override - String visit(ClassDecl node) { - final classVar = '$_classVarPrefix${node.uniqueName}'; - return ''' load_class_global_ref(&$classVar, "${node.internalName}"); - if ($classVar == NULL) return $_ifError;'''; - } -} - -class _CMethodGenerator extends Visitor { - static const _methodVarPrefix = '_m_'; - - final Config config; - final StringSink s; - - _CMethodGenerator(this.config, this.s); - - @override - void visit(Method node) { - final classNameInC = node.classDecl.uniqueName; - - final cMethodName = node.accept(const CMethodName()); - final classRef = '$_classVarPrefix$classNameInC'; - final methodId = '$_methodVarPrefix$cMethodName'; - final cMethodParams = [ - if (!node.isCtor && !node.isStatic) 'jobject self_', - ...node.params.accept(const _CParamGenerator(addReturnType: true)), - ].join(','); - final jniSignature = node.descriptor; - final ifStaticMethodID = node.isStatic ? 'static_' : ''; - - var javaReturnType = node.returnType.type; - if (node.isCtor) { - javaReturnType = DeclaredType( - binaryName: node.classDecl.binaryName, - ); - } - final callType = node.returnType.accept(const _CTypeCallSite()); - final callArgs = [ - 'jniEnv', - if (!node.isCtor && !node.isStatic) 'self_' else classRef, - methodId, - ...node.params.accept(const _CParamGenerator(addReturnType: false)) - ].join(', '); - - var ifAssignResult = ''; - if (javaReturnType.name != 'void') { - ifAssignResult = - '${javaReturnType.accept(const _CReturnType())} _result = '; - } - - final ifStaticCall = node.isStatic ? 'Static' : ''; - final envMethod = - node.isCtor ? 'NewObject' : 'Call$ifStaticCall${callType}Method'; - final returnResultIfAny = javaReturnType.accept(const _CResult()); - s.write(''' -jmethodID $methodId = NULL; -FFI_PLUGIN_EXPORT -$_jniResultType $cMethodName($cMethodParams) { - $_loadEnvCall - ${node.classDecl.accept(_CLoadClassGenerator())} - load_${ifStaticMethodID}method($classRef, - &$methodId, "${node.name}", "$jniSignature"); - if ($methodId == NULL) return $_ifError; - $ifAssignResult(*jniEnv)->$envMethod($callArgs); - $returnResultIfAny -} - -'''); - } -} - -class _CFieldGenerator extends Visitor { - static const _fieldVarPrefix = '_f_'; - - final Config config; - final StringSink s; - - _CFieldGenerator(this.config, this.s); - - @override - void visit(Field node) { - final cClassName = node.classDecl.uniqueName; - - final fieldName = node.finalName; - final fieldNameInC = node.accept(const CFieldName()); - final fieldVar = "$_fieldVarPrefix$fieldNameInC"; - - // If the field is final and default is assigned, then no need to wrap - // this field. It should then be a constant in dart code. - if (node.isStatic && - node.isFinal && - node.defaultValue != null && - (node.defaultValue is num || node.defaultValue is bool)) { - return; - } - - s.write('jfieldID $fieldVar = NULL;\n'); - - final classVar = '$_classVarPrefix$cClassName'; - void writeAccessor({bool isSetter = false}) { - const cReturnType = _jniResultType; - final cMethodPrefix = isSetter ? 'set' : 'get'; - final formalArgs = [ - if (!node.isStatic) 'jobject self_', - if (isSetter) '${node.type.accept(const _CReturnType())} value', - ].join(', '); - final ifStaticField = node.isStatic ? 'static_' : ''; - final ifStaticCall = node.isStatic ? 'Static' : ''; - final callType = node.type.accept(const _CTypeCallSite()); - final objectArgument = node.isStatic ? classVar : 'self_'; - - String accessorStatements; - if (isSetter) { - accessorStatements = - ' (*jniEnv)->Set$ifStaticCall${callType}Field(jniEnv, ' - '$objectArgument, $fieldVar, value);\n' - ' return $_ifError;'; - } else { - final getterExpr = - '(*jniEnv)->Get$ifStaticCall${callType}Field(jniEnv, ' - '$objectArgument, $fieldVar)'; - final cResultType = node.type.accept(const _CReturnType()); - final result = node.type.accept(const _CResult()); - accessorStatements = ''' $cResultType _result = $getterExpr; - $result'''; - } - s.write(''' -FFI_PLUGIN_EXPORT -$cReturnType ${cMethodPrefix}_$fieldNameInC($formalArgs) { - $_loadEnvCall - ${node.classDecl.accept(_CLoadClassGenerator())} - load_${ifStaticField}field($classVar, &$fieldVar, "$fieldName", - "${node.type.descriptor}"); -$accessorStatements -} - -'''); - } - - writeAccessor(isSetter: false); - if (node.isFinal) { - return; - } - writeAccessor(isSetter: true); - } -} - -class _CParamGenerator extends Visitor { - /// These should be avoided in parameter names. - static const _cTypeKeywords = { - 'short', - 'char', - 'int', - 'long', - 'float', - 'double', - }; - - const _CParamGenerator({required this.addReturnType}); - - final bool addReturnType; - - @override - String visit(Param node) { - final paramName = - (_cTypeKeywords.contains(node.name) ? '${node.name}0' : node.name) - .replaceAll('\$', '_'); - if (addReturnType) { - final type = node.type.accept(const _CReturnType()); - return '$type $paramName'; - } - return paramName; - } -} - -class _CReturnType extends TypeVisitor { - const _CReturnType(); - - @override - String visitNonPrimitiveType(ReferredType node) { - return 'jobject'; - } - - @override - String visitPrimitiveType(PrimitiveType node) { - return node.cType; - } -} - -class _CTypeCallSite extends TypeVisitor { - const _CTypeCallSite(); - - @override - String visitNonPrimitiveType(ReferredType node) { - return 'Object'; - } - - @override - String visitPrimitiveType(PrimitiveType node) { - return node.name.capitalize(); - } -} - -class _CResult extends TypeVisitor { - const _CResult(); - - @override - String visitNonPrimitiveType(ReferredType node) { - return 'return to_global_ref_result(_result);'; - } - - @override - String visitPrimitiveType(PrimitiveType node) { - if (node.name == 'void') { - return 'return $_ifError;'; - } - // The union field is the same as the type's signature, but in lowercase. - final unionField = node.signature.toLowerCase(); - return 'return (JniResult){.value = {.$unionField = _result}, ' - '.exception = check_exception()};'; - } -} diff --git a/pkgs/jnigen/lib/src/bindings/dart_generator.dart b/pkgs/jnigen/lib/src/bindings/dart_generator.dart index 79f093b50..987eaa719 100644 --- a/pkgs/jnigen/lib/src/bindings/dart_generator.dart +++ b/pkgs/jnigen/lib/src/bindings/dart_generator.dart @@ -11,7 +11,6 @@ import '../config/experiments.dart'; import '../elements/elements.dart'; import '../logging/logging.dart'; import '../util/string_util.dart'; -import 'c_generator.dart'; import 'resolver.dart'; import 'visitor.dart'; @@ -27,6 +26,7 @@ const _jGlobalReference = '$_jni.JGlobalReference'; const _jArray = '$_jni.JArray'; const _jObject = '$_jni.JObject'; const _jResult = '$_jni.JniResult'; +const _jThrowable = '$_jni.JThrowablePtr'; // package:ffi types. const _voidPointer = '$_ffi.Pointer<$_ffi.Void>'; @@ -37,7 +37,6 @@ const _typeParamPrefix = '\$'; // Misc. const _protectedExtension = 'ProtectedJniExtensions'; const _classRef = '_class'; -const _lookup = 'jniLookup'; /// Used for C bindings. const _selfPointer = 'reference.pointer'; @@ -123,22 +122,6 @@ class DartGenerator extends Visitor> { DartGenerator(this.config); - static const cInitImport = 'import "dart:ffi" as ffi;\n' - 'import "package:jni/internal_helpers_for_jnigen.dart";\n'; - - /// Initialization code for C based bindings. - /// - /// Should be called once in a package. In package-structured bindings - /// this is placed in _init.dart in package root. - String get cInitCode => ''' -// Auto-generated initialization code. - -final $_ffi.Pointer Function(String sym) $_lookup = - $_protectedExtension.initGeneratedLibrary("${config.outputConfig.cConfig!.libraryName}"); - - -'''; - static const autoGeneratedNotice = '// Autogenerated by jnigen. ' 'DO NOT EDIT!\n\n'; static const defaultImports = ''' @@ -188,22 +171,18 @@ import "package:jni/jni.dart" as jni; @override Future visit(Classes node) async { - final cBased = config.outputConfig.bindingsType == BindingsType.cBased; final root = config.outputConfig.dartConfig.path; final preamble = config.preamble ?? ''; if (config.outputConfig.dartConfig.structure == OutputStructure.singleFile) { final file = File.fromUri(root); await file.create(recursive: true); - log.info("Generating ${cBased ? "C + Dart" : "Pure Dart"} Bindings"); + log.info("Generating bindings"); final s = file.openWrite(); s.writeln(preamble); s.writeln(autoGeneratedNotice); s.writeln(defaultLintSuppressions); s.writeln(defaultImports); - if (cBased) { - s.writeln(cInitCode); - } final resolver = Resolver( importedClasses: config.importedClasses, currentClass: null, // Single file mode. @@ -230,17 +209,6 @@ import "package:jni/jni.dart" as jni; } log.info("Using dart root = $root"); - const initFileName = '_init.dart'; - if (cBased) { - final initFileUri = root.resolve(initFileName); - final initFile = File.fromUri(initFileUri); - await initFile.create(recursive: true); - final initStream = initFile.openWrite(); - initStream.writeln(preamble); - initStream.writeln(cInitImport); - initStream.writeln(cInitCode); - await initStream.close(); - } for (var fileClassName in files.keys) { final relativeFileName = '${fileClassName.replaceAll('.', '/')}.dart'; final dartFileUri = root.resolve(relativeFileName); @@ -254,14 +222,6 @@ import "package:jni/jni.dart" as jni; dartFileStream.writeln(defaultLintSuppressions); dartFileStream.writeln(defaultImports); final s = StringBuffer(); - if (cBased) { - final initFilePath = ('../' * - relativeFileName.codeUnits - .where((cu) => cu == '/'.codeUnitAt(0)) - .length) + - initFileName; - s.write('import "$initFilePath";'); - } final resolver = Resolver( importedClasses: config.importedClasses, currentClass: fileClassName, @@ -308,9 +268,6 @@ class _ClassGenerator extends Visitor { @override void visit(ClassDecl node) { - final isDartOnly = - config.outputConfig.bindingsType == BindingsType.dartOnly; - // Docs. s.write('/// from: ${node.binaryName}\n'); node.javadoc?.accept(_DocGenerator(s, depth: 0)); @@ -369,13 +326,11 @@ class $name$typeParamsDef extends $superName { '''); - if (isDartOnly) { - final internalName = node.internalName; - s.write(''' + final internalName = node.internalName; + s.write(''' static final $_classRef = $_jni.JClass.forName(r"$internalName"); '''); - } // Static TypeClass getter. s.writeln( @@ -908,6 +863,15 @@ class _TypeSig extends TypeVisitor { @override String visitPrimitiveType(PrimitiveType node) { + if (isFfi) { + // TODO(https://github.com/dart-lang/sdk/issues/55471): Once this lands in + // the stable, use the actual types instead. + if (node.name == 'float' || node.name == 'double') { + return '$_ffi.Double'; + } else { + return '$_ffi.Int64'; + } + } if (isFfi) return '$_ffi.${node.ffiType}'; if (node.name == 'boolean') return 'int'; return node.dartType; @@ -943,46 +907,6 @@ class _FieldGenerator extends Visitor { const _FieldGenerator(this.config, this.resolver, this.s); - void writeCAccessor(Field node) { - final name = node.finalName; - final cName = node.accept(const CFieldName()); - final ifRef = node.isStatic ? '' : '$_jPointer, '; - - s.write(''' - static final _get_$name = - $_lookup<$_ffi.NativeFunction<$_jResult Function($ifRef)>>( - "get_$cName") - .asFunction<$_jResult Function($ifRef)>(); - -'''); - - if (!node.isFinal) { - final ffiSig = node.type.accept(const _TypeSig(isFfi: true)); - final dartSig = node.type.accept(const _TypeSig(isFfi: false)); - s.write(''' - static final _set_$name = - $_lookup<$_ffi.NativeFunction<$_jResult Function($ifRef$ffiSig)>>( - "set_$cName") - .asFunction<$_jResult Function($ifRef$dartSig)>(); - -'''); - } - } - - String cGetter(Field node) { - final name = node.finalName; - final getter = node.type.accept(_JniResultGetter(resolver)); - final self = node.isStatic ? '' : _selfPointer; - return '_get_$name($self).$getter'; - } - - String cSetter(Field node) { - final name = node.finalName; - final self = node.isStatic ? '' : '$_selfPointer, '; - final toNativeSuffix = node.type.accept(const _ToNativeSuffix()); - return '_set_$name(${self}value$toNativeSuffix).check()'; - } - void writeDartOnlyAccessor(Field node) { final name = node.finalName; final staticOrInstance = node.isStatic ? 'static' : 'instance'; @@ -1021,8 +945,6 @@ class _FieldGenerator extends Visitor { @override void visit(Field node) { - final isCBased = config.outputConfig.bindingsType == BindingsType.cBased; - // Check if it should be a `static const` getter. if (node.isFinal && node.isStatic && node.defaultValue != null) { final name = node.finalName; @@ -1035,7 +957,7 @@ class _FieldGenerator extends Visitor { } // Accessors. - (isCBased ? writeCAccessor : writeDartOnlyAccessor)(node); + writeDartOnlyAccessor(node); // Getter docs. writeDocs(node, writeReleaseInstructions: true); @@ -1044,14 +966,14 @@ class _FieldGenerator extends Visitor { final ifStatic = node.isStatic ? 'static ' : ''; final type = node.type.accept(_TypeGenerator(resolver)); s.write('$ifStatic$type get $name => '); - s.write((isCBased ? cGetter : dartOnlyGetter)(node)); + s.write(dartOnlyGetter(node)); s.writeln(';\n'); if (!node.isFinal) { // Setter docs. writeDocs(node, writeReleaseInstructions: true); s.write('${ifStatic}set $name($type value) => '); - s.write((isCBased ? cSetter : dartOnlySetter)(node)); + s.write(dartOnlySetter(node)); s.writeln(';\n'); } } @@ -1064,13 +986,21 @@ class _MethodTypeSig extends Visitor { @override String visit(Method node) { + final callParams = node.params + .map((param) => param.type) + .accept(_TypeSig(isFfi: isFfi)) + .join(', '); final args = [ - if (!node.isCtor && !node.isStatic) _voidPointer, - ...node.params.map((param) => param.type).accept( - _TypeSig(isFfi: isFfi), - ) + _voidPointer, + '$_jni.JMethodIDPtr', + isFfi && callParams.isNotEmpty + ? '$_ffi.VarArgs<($callParams${node.params.length == 1 ? ',' : ''})>' + : callParams ].join(', '); - return '$_jResult Function($args)'; + final isCtor = node.isCtor; + final isVoid = node.returnType.name == 'void'; + final returnType = !isCtor && isVoid ? _jThrowable : _jResult; + return '$returnType Function($args)'; } } @@ -1082,19 +1012,6 @@ class _MethodGenerator extends Visitor { const _MethodGenerator(this.config, this.resolver, this.s); - void writeCAccessor(Method node) { - final name = node.finalName; - final cName = node.accept(const CMethodName()); - final ffiSig = node.accept(const _MethodTypeSig(isFfi: true)); - final dartSig = node.accept(const _MethodTypeSig(isFfi: false)); - s.write(''' - static final _$name = - $_lookup<$_ffi.NativeFunction<$ffiSig>>("$cName") - .asFunction<$dartSig>(); - -'''); - } - void writeDartOnlyAccessor(Method node) { final name = node.finalName; final kind = node.isCtor @@ -1110,6 +1027,15 @@ class _MethodGenerator extends Visitor { s.write(''' r"$descriptor", ); +'''); + final ffiSig = node.accept(const _MethodTypeSig(isFfi: true)); + final dartSig = node.accept(const _MethodTypeSig(isFfi: false)); + final methodName = node.accept(const _CallMethodName()); + s.write(''' + + static final _$name = $_protectedExtension + .lookup<$_ffi.NativeFunction<$ffiSig>>("$methodName") + .asFunction<$dartSig>(); '''); } @@ -1119,23 +1045,25 @@ class _MethodGenerator extends Visitor { String cCtor(Method node) { final name = node.finalName; - final params = - node.params.accept(const _ParamCall(isCBased: true)).join(', '); + final params = node.params.accept(const _ParamCall()).join(', '); return '_$name($params).reference'; } String dartOnlyCtor(Method node) { final name = node.finalName; - final params = - node.params.accept(const _ParamCall(isCBased: false)).join(', '); - return '_id_$name($_classRef, referenceType, [$params])'; + final params = [ + '$_classRef.reference.pointer', + '_id_$name as $_jni.JMethodIDPtr', + ...node.params.accept(const _ParamCall()), + ].join(', '); + return '_$name($params).reference'; } String cMethodCall(Method node) { final name = node.finalName; final params = [ if (!node.isStatic) _selfPointer, - ...node.params.accept(const _ParamCall(isCBased: true)), + ...node.params.accept(const _ParamCall()), ].join(', '); final resultGetter = node.returnType.accept(_JniResultGetter(resolver)); return '_$name($params).$resultGetter'; @@ -1143,19 +1071,19 @@ class _MethodGenerator extends Visitor { String dartOnlyMethodCall(Method node) { final name = node.finalName; - final self = node.isStatic ? _classRef : _self; - final params = - node.params.accept(const _ParamCall(isCBased: false)).join(', '); - final type = node.returnType.accept(_TypeClassGenerator(resolver)).name; - return '_id_$name($self, $type, [$params])'; + final params = [ + node.isStatic ? '$_classRef.reference.pointer' : _selfPointer, + '_id_$name as $_jni.JMethodIDPtr', + ...node.params.accept(const _ParamCall()), + ].join(', '); + final resultGetter = node.returnType.accept(_JniResultGetter(resolver)); + return '_$name($params).$resultGetter'; } @override void visit(Method node) { - final isCBased = config.outputConfig.bindingsType == BindingsType.cBased; - // Accessors - (isCBased ? writeCAccessor : writeDartOnlyAccessor)(node); + writeDartOnlyAccessor(node); // Docs s.write(' /// from: '); @@ -1211,7 +1139,7 @@ class _MethodGenerator extends Visitor { typeParam.accept(const _TypeParamGenerator(withExtends: false))) .delimited(', '); - final ctorExpr = (isCBased ? cCtor : dartOnlyCtor)(node); + final ctorExpr = dartOnlyCtor(node); s.write(''' factory $ctorName($paramsDef$typeClassDef) { $typeInference @@ -1255,7 +1183,7 @@ class _MethodGenerator extends Visitor { } final params = defArgs.delimited(', '); s.write(' $ifStatic$returnType $name$typeParamsDef($params$typeClassDef)'); - final callExpr = (isCBased ? cMethodCall : dartOnlyMethodCall)(node); + final callExpr = dartOnlyMethodCall(node); if (isSuspendFun(node)) { final returningType = node.asyncReturnType!.accept(_TypeClassGenerator(resolver)).name; @@ -1348,47 +1276,16 @@ class _ParamDef extends Visitor { /// void bar(Foo foo) => _bar(foo.reference.pointer); /// ``` class _ParamCall extends Visitor { - final bool isCBased; - - const _ParamCall({required this.isCBased}); + const _ParamCall(); @override String visit(Param node) { final nativeSuffix = node.type.accept(const _ToNativeSuffix()); final paramCall = '${node.finalName}$nativeSuffix'; - if (!isCBased) { - // We need to wrap [paramCall] in the appropriate wrapper class. - return node.type.accept(_JValueWrapper(paramCall)); - } return paramCall; } } -/// Wraps the parameter in the appropriate JValue wrapper class. -/// -/// For instance, `int` in Dart can be mapped to `long` or `int` or ... in Java. -/// The wrapper class is how we identify the type in pure dart bindings. -class _JValueWrapper extends TypeVisitor { - final String param; - - _JValueWrapper(this.param); - - @override - String visitNonPrimitiveType(ReferredType node) { - return param; - } - - @override - String visitPrimitiveType(PrimitiveType node) { - if (node.name == 'long' || - node.name == 'double' || - node.name == 'boolean') { - return param; - } - return '$_jni.JValue${node.name.capitalize()}($param)'; - } -} - /// A pair of [StringBuffer]s that can create an expression from the outer layer /// inwards. /// @@ -1681,3 +1578,21 @@ class _InterfaceReturnBox extends TypeVisitor { return '$_jni.J${node.boxedName}(\$r).reference.toPointer()'; } } + +class _CallMethodName extends Visitor { + const _CallMethodName(); + + @override + String visit(Method node) { + if (node.isCtor) { + return 'globalEnv_NewObject'; + } + final String type; + if (node.returnType.kind == Kind.primitive) { + type = (node.returnType.type as PrimitiveType).name.capitalize(); + } else { + type = 'Object'; + } + return 'globalEnv_Call${node.isStatic ? 'Static' : ''}${type}Method'; + } +} diff --git a/pkgs/jnigen/lib/src/config/config_types.dart b/pkgs/jnigen/lib/src/config/config_types.dart index 02dcbc2ea..e00717f88 100644 --- a/pkgs/jnigen/lib/src/config/config_types.dart +++ b/pkgs/jnigen/lib/src/config/config_types.dart @@ -190,51 +190,6 @@ OutputStructure getOutputStructure(String? name, OutputStructure defaultVal) { ); } -enum BindingsType { cBased, dartOnly } - -extension GetConfigString on BindingsType { - String getConfigString() { - return name.toSnakeCase(); - } -} - -BindingsType getBindingsType(String? name, BindingsType defaultVal) { - return _getEnumValueFromString( - BindingsType.values.valuesMap(), - name, - defaultVal, - ); -} - -class CCodeOutputConfig { - CCodeOutputConfig({ - required this.path, - required this.libraryName, - this.subdir, - }) { - _ensureIsDirectory('C output path', path); - if (subdir != null) { - _ensureIsDirectory('C subdirectory', path.resolve(subdir!)); - } - } - - /// Directory to write JNI C Bindings, in C+Dart mode. - /// - /// Strictly speaking, this is the root to place the `CMakeLists.txt` file - /// for the generated C bindings. It may be desirable to use the [subdir] - /// options to write C files to a subdirectory of [path]. For instance, - /// when generated code is required to be in `third_party` directory. - Uri path; - - /// Name of generated library in CMakeLists.txt configuration. - /// - /// This will also determine the name of shared object file. - String libraryName; - - /// Subfolder relative to [path] to write generated C code. - String? subdir; -} - class DartCodeOutputConfig { DartCodeOutputConfig({ required this.path, @@ -271,17 +226,10 @@ class SymbolsOutputConfig { class OutputConfig { OutputConfig({ required this.dartConfig, - this.bindingsType = BindingsType.cBased, - this.cConfig, this.symbolsConfig, - }) { - if (bindingsType == BindingsType.cBased && cConfig == null) { - throw ConfigException('C output config must be provided!'); - } - } - BindingsType bindingsType; + }); + DartCodeOutputConfig dartConfig; - CCodeOutputConfig? cConfig; SymbolsOutputConfig? symbolsConfig; } @@ -578,17 +526,6 @@ class Config { fields: regexFilter(_Props.excludeFields), ), outputConfig: OutputConfig( - bindingsType: getBindingsType( - prov.getString(_Props.bindingsType), - BindingsType.cBased, - ), - cConfig: prov.hasValue(_Props.cCodeOutputConfig) - ? CCodeOutputConfig( - libraryName: must(prov.getString, '', _Props.libraryName), - path: must(prov.getPath, Uri.parse('.'), _Props.cRoot), - subdir: prov.getString(_Props.cSubdir), - ) - : null, dartConfig: DartCodeOutputConfig( path: must(prov.getPath, Uri.parse('.'), _Props.dartRoot), structure: getOutputStructure( @@ -676,15 +613,10 @@ class _Props { static const experiments = 'enable_experiment'; static const import = 'import'; static const outputConfig = 'output'; - static const bindingsType = '$outputConfig.bindings_type'; - static const cCodeOutputConfig = '$outputConfig.c'; static const dartCodeOutputConfig = '$outputConfig.dart'; static const symbolsOutputConfig = '$outputConfig.symbols'; - static const cRoot = '$cCodeOutputConfig.path'; - static const cSubdir = '$cCodeOutputConfig.subdir'; static const dartRoot = '$dartCodeOutputConfig.path'; static const outputStructure = '$dartCodeOutputConfig.structure'; - static const libraryName = '$cCodeOutputConfig.library_name'; static const preamble = 'preamble'; static const logLevel = 'log_level'; diff --git a/pkgs/jnigen/lib/src/generate_bindings.dart b/pkgs/jnigen/lib/src/generate_bindings.dart index 883ca8575..e0027f87d 100644 --- a/pkgs/jnigen/lib/src/generate_bindings.dart +++ b/pkgs/jnigen/lib/src/generate_bindings.dart @@ -5,7 +5,6 @@ import 'dart:io'; import 'dart:convert'; -import 'bindings/c_generator.dart'; import 'bindings/dart_generator.dart'; import 'bindings/descriptor.dart'; import 'bindings/excluder.dart'; @@ -44,11 +43,6 @@ Future generateJniBindings(Config config) async { classes.accept(const Descriptor()); classes.accept(Renamer(config)); - final cBased = config.outputConfig.bindingsType == BindingsType.cBased; - if (cBased) { - await classes.accept(CGenerator(config)); - } - try { await classes.accept(DartGenerator(config)); log.info('Completed'); diff --git a/pkgs/jnigen/lib/src/summary/summary.dart b/pkgs/jnigen/lib/src/summary/summary.dart index 25f932d2f..87c5819e5 100644 --- a/pkgs/jnigen/lib/src/summary/summary.dart +++ b/pkgs/jnigen/lib/src/summary/summary.dart @@ -71,11 +71,7 @@ class SummarizerCommand { final joined = paths .map((uri) => uri.toFilePath()) .join(Platform.isWindows ? ';' : ':'); - if (option.endsWith("=")) { - args.add(option + joined); - } else { - args.addAll([option, joined]); - } + args.addAll([option, '"$joined"']); } } diff --git a/pkgs/jnigen/pubspec.yaml b/pkgs/jnigen/pubspec.yaml index 159f83843..0f4441f25 100644 --- a/pkgs/jnigen/pubspec.yaml +++ b/pkgs/jnigen/pubspec.yaml @@ -4,7 +4,7 @@ name: jnigen description: A Dart bindings generator for Java and Kotlin that uses JNI under the hood to interop with Java virtual machine. -version: 0.8.1-wip +version: 0.9.0 repository: https://github.com/dart-lang/native/tree/main/pkgs/jnigen environment: diff --git a/pkgs/jnigen/test/.gitignore b/pkgs/jnigen/test/.gitignore index 36f1ec5bc..3bde18030 100644 --- a/pkgs/jnigen/test/.gitignore +++ b/pkgs/jnigen/test/.gitignore @@ -1,4 +1,2 @@ # TODO(#166): Remove this. !jni.jar -runtime_test_registrant_dartonly_generated.dart -generated_runtime_test.dart \ No newline at end of file diff --git a/pkgs/jnigen/test/config_test.dart b/pkgs/jnigen/test/config_test.dart index ae2f9871e..53d432703 100644 --- a/pkgs/jnigen/test/config_test.dart +++ b/pkgs/jnigen/test/config_test.dart @@ -15,20 +15,13 @@ import 'test_util/test_util.dart'; const packageTests = 'test'; final jacksonCoreTests = absolute(packageTests, 'jackson_core_test'); final thirdParty = absolute(jacksonCoreTests, 'third_party'); -final lib = absolute(thirdParty, 'c_based', 'dart_bindings'); -final src = absolute(thirdParty, 'c_based', 'c_bindings'); -final testLib = absolute(thirdParty, 'test_', 'c_based', 'dart_bindings'); -final testSrc = absolute(thirdParty, 'test_', 'c_based', 'c_bindings'); +final lib = absolute(thirdParty, 'bindings'); +final testLib = absolute(thirdParty, 'test_', 'bindings'); /// Compares 2 [Config] objects using [expect] to give useful errors when /// two fields are not equal. void expectConfigsAreEqual(Config a, Config b) { expect(a.classes, equals(b.classes), reason: "classes"); - expect(a.outputConfig.cConfig?.libraryName, - equals(b.outputConfig.cConfig?.libraryName), - reason: "libraryName"); - expect(a.outputConfig.cConfig?.path, equals(b.outputConfig.cConfig?.path), - reason: "cRoot"); expect(a.outputConfig.dartConfig.path, equals(b.outputConfig.dartConfig.path), reason: "dartRoot"); expect(a.outputConfig.symbolsConfig?.path, @@ -102,7 +95,6 @@ void main() async { final config = Config.parseArgs([ '--config', jnigenYaml, - '-Doutput.c.path=$testSrc${Platform.pathSeparator}', '-Doutput.dart.path=$testLib${Platform.pathSeparator}', ]); @@ -111,16 +103,11 @@ void main() async { config, getConfig( root: join(thirdParty, 'test_'), - bindingsType: BindingsType.cBased, ), ); }); group('Test for config error checking', () { - testForErrorChecking( - name: 'Invalid bindings type', - overrides: ['-Doutput.bindings_type=c_base'], - ); testForErrorChecking( name: 'Invalid output structure', overrides: ['-Doutput.dart.structure=singl_file'], diff --git a/pkgs/jnigen/test/jackson_core_test/generate.dart b/pkgs/jnigen/test/jackson_core_test/generate.dart index 796a760ca..2e6009d4b 100644 --- a/pkgs/jnigen/test/jackson_core_test/generate.dart +++ b/pkgs/jnigen/test/jackson_core_test/generate.dart @@ -33,10 +33,8 @@ Config getConfig({ String? root, bool generateFullVersion = false, bool useAsm = false, - BindingsType bindingsType = BindingsType.dartOnly, }) { final rootDir = root ?? thirdPartyDir; - final bindingTypeDir = bindingsType.getConfigString(); final config = Config( mavenDownloads: MavenDownloads( sourceDeps: deps, @@ -48,17 +46,8 @@ Config getConfig({ ), preamble: jacksonPreamble, outputConfig: OutputConfig( - bindingsType: bindingsType, - // Have to be judicious here, and ensure null when bindings type is - // dart-only, because config-test is also using this. - cConfig: bindingsType == BindingsType.cBased - ? CCodeOutputConfig( - libraryName: 'jackson_core', - path: Uri.directory(join(rootDir, bindingTypeDir, 'c_bindings')), - ) - : null, dartConfig: DartCodeOutputConfig( - path: Uri.directory(join(rootDir, bindingTypeDir, 'dart_bindings')), + path: Uri.directory(join(rootDir, 'bindings')), ), ), classes: (generateFullVersion) @@ -88,6 +77,5 @@ Config getConfig({ } void main() async { - await generateJniBindings(getConfig(bindingsType: BindingsType.cBased)); - await generateJniBindings(getConfig(bindingsType: BindingsType.dartOnly)); + await generateJniBindings(getConfig()); } diff --git a/pkgs/jnigen/test/jackson_core_test/generated_files_test.dart b/pkgs/jnigen/test/jackson_core_test/generated_files_test.dart index cc53c8cf8..273232f7c 100644 --- a/pkgs/jnigen/test/jackson_core_test/generated_files_test.dart +++ b/pkgs/jnigen/test/jackson_core_test/generated_files_test.dart @@ -4,18 +4,15 @@ import 'package:test/test.dart'; -import 'package:jnigen/jnigen.dart'; - import '../test_util/test_util.dart'; import 'generate.dart'; void main() async { await checkLocallyBuiltDependencies(); - generateAndCompareBothModes( + generateAndCompare( 'Generate and compare bindings for jackson_core library', - getConfig(bindingsType: BindingsType.cBased), - getConfig(bindingsType: BindingsType.dartOnly), + getConfig(), ); test( 'generate and analyze bindings for complete library, ' @@ -28,10 +25,4 @@ void main() async { final config = getConfig(generateFullVersion: true, useAsm: true); await generateAndAnalyzeBindings(config); }, timeout: const Timeout(Duration(minutes: 2)), tags: largeTestTag); - - test('Generate and analyze pure dart bindings', () async { - final config = getConfig(generateFullVersion: true); - config.outputConfig.bindingsType = BindingsType.dartOnly; - await generateAndAnalyzeBindings(config); - }, timeout: const Timeout(Duration(minutes: 2)), tags: largeTestTag); } diff --git a/pkgs/jnigen/test/jackson_core_test/jnigen.yaml b/pkgs/jnigen/test/jackson_core_test/jnigen.yaml index cf3b4db15..66bd515ee 100644 --- a/pkgs/jnigen/test/jackson_core_test/jnigen.yaml +++ b/pkgs/jnigen/test/jackson_core_test/jnigen.yaml @@ -5,12 +5,8 @@ maven_downloads: jar_dir: third_party/jar/ output: - bindings_type: c_based - c: - library_name: jackson_core - path: third_party/c_based/c_bindings/ dart: - path: third_party/c_based/dart_bindings/ + path: third_party/bindings/ classes: - 'com.fasterxml.jackson.core.JsonFactory' diff --git a/pkgs/jnigen/test/jackson_core_test/runtime_test_registrant.dart b/pkgs/jnigen/test/jackson_core_test/runtime_test_registrant.dart index 28e6c2b6c..bfb09c1db 100644 --- a/pkgs/jnigen/test/jackson_core_test/runtime_test_registrant.dart +++ b/pkgs/jnigen/test/jackson_core_test/runtime_test_registrant.dart @@ -7,7 +7,7 @@ import 'package:jni/jni.dart'; import '../test_util/callback_types.dart'; -import 'third_party/c_based/dart_bindings/com/fasterxml/jackson/core/_package.dart'; +import 'third_party/bindings/com/fasterxml/jackson/core/_package.dart'; // This file doesn't define main, because only one JVM has to be spawned with // all classpaths, it's managed at a different file which calls these tests. diff --git a/pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/JsonFactory.dart b/pkgs/jnigen/test/jackson_core_test/third_party/bindings/com/fasterxml/jackson/core/JsonFactory.dart similarity index 55% rename from pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/JsonFactory.dart rename to pkgs/jnigen/test/jackson_core_test/third_party/bindings/com/fasterxml/jackson/core/JsonFactory.dart index bd94fa877..2b1154503 100644 --- a/pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/JsonFactory.dart +++ b/pkgs/jnigen/test/jackson_core_test/third_party/bindings/com/fasterxml/jackson/core/JsonFactory.dart @@ -64,11 +64,23 @@ class JsonFactory_Feature extends jni.JObject { r"()[Lcom/fasterxml/jackson/core/JsonFactory$Feature;", ); + static final _values = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public com.fasterxml.jackson.core.JsonFactory.Feature[] values() /// The returned object must be released after use, by calling the [release] method. static jni.JArray values() { - return _id_values( - _class, const jni.JArrayType($JsonFactory_FeatureType()), []); + return _values(_class.reference.pointer, _id_values as jni.JMethodIDPtr) + .object(const jni.JArrayType($JsonFactory_FeatureType())); } static final _id_valueOf = _class.staticMethodId( @@ -76,13 +88,25 @@ class JsonFactory_Feature extends jni.JObject { r"(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonFactory$Feature;", ); + static final _valueOf = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: static public com.fasterxml.jackson.core.JsonFactory.Feature valueOf(java.lang.String name) /// The returned object must be released after use, by calling the [release] method. static JsonFactory_Feature valueOf( jni.JString name, ) { - return _id_valueOf( - _class, const $JsonFactory_FeatureType(), [name.reference.pointer]); + return _valueOf(_class.reference.pointer, _id_valueOf as jni.JMethodIDPtr, + name.reference.pointer) + .object(const $JsonFactory_FeatureType()); } static final _id_collectDefaults = _class.staticMethodId( @@ -90,13 +114,27 @@ class JsonFactory_Feature extends jni.JObject { r"()I", ); + static final _collectDefaults = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public int collectDefaults() /// /// Method that calculates bit set (flags) of all features that /// are enabled by default. ///@return Bit field of features enabled by default static int collectDefaults() { - return _id_collectDefaults(_class, const jni.jintType(), []); + return _collectDefaults( + _class.reference.pointer, _id_collectDefaults as jni.JMethodIDPtr) + .integer; } static final _id_enabledByDefault = _class.instanceMethodId( @@ -104,9 +142,23 @@ class JsonFactory_Feature extends jni.JObject { r"()Z", ); + static final _enabledByDefault = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean enabledByDefault() bool enabledByDefault() { - return _id_enabledByDefault(this, const jni.jbooleanType(), []); + return _enabledByDefault( + reference.pointer, _id_enabledByDefault as jni.JMethodIDPtr) + .boolean; } static final _id_enabledIn = _class.instanceMethodId( @@ -114,12 +166,21 @@ class JsonFactory_Feature extends jni.JObject { r"(I)Z", ); + static final _enabledIn = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: public boolean enabledIn(int flags) bool enabledIn( int flags, ) { - return _id_enabledIn( - this, const jni.jbooleanType(), [jni.JValueInt(flags)]); + return _enabledIn( + reference.pointer, _id_enabledIn as jni.JMethodIDPtr, flags) + .boolean; } static final _id_getMask = _class.instanceMethodId( @@ -127,9 +188,21 @@ class JsonFactory_Feature extends jni.JObject { r"()I", ); + static final _getMask = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int getMask() int getMask() { - return _id_getMask(this, const jni.jintType(), []); + return _getMask(reference.pointer, _id_getMask as jni.JMethodIDPtr).integer; } } @@ -253,6 +326,18 @@ class JsonFactory extends jni.JObject { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. /// @@ -265,26 +350,54 @@ class JsonFactory extends jni.JObject { /// and this reuse only works within context of a single /// factory instance. factory JsonFactory() { - return JsonFactory.fromReference(_id_new0(_class, referenceType, [])); + return JsonFactory.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } static final _id_new1 = _class.constructorId( r"(Lcom/fasterxml/jackson/core/ObjectCodec;)V", ); + static final _new1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public void (com.fasterxml.jackson.core.ObjectCodec oc) /// The returned object must be released after use, by calling the [release] method. factory JsonFactory.new1( jni.JObject oc, ) { - return JsonFactory.fromReference( - _id_new1(_class, referenceType, [oc.reference.pointer])); + return JsonFactory.fromReference(_new1(_class.reference.pointer, + _id_new1 as jni.JMethodIDPtr, oc.reference.pointer) + .reference); } static final _id_new2 = _class.constructorId( r"(Lcom/fasterxml/jackson/core/JsonFactory;Lcom/fasterxml/jackson/core/ObjectCodec;)V", ); + static final _new2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); + /// from: protected void (com.fasterxml.jackson.core.JsonFactory src, com.fasterxml.jackson.core.ObjectCodec codec) /// The returned object must be released after use, by calling the [release] method. /// @@ -296,14 +409,29 @@ class JsonFactory extends jni.JObject { JsonFactory src, jni.JObject codec, ) { - return JsonFactory.fromReference(_id_new2(_class, referenceType, - [src.reference.pointer, codec.reference.pointer])); + return JsonFactory.fromReference(_new2( + _class.reference.pointer, + _id_new2 as jni.JMethodIDPtr, + src.reference.pointer, + codec.reference.pointer) + .reference); } static final _id_new3 = _class.constructorId( r"(Lcom/fasterxml/jackson/core/JsonFactoryBuilder;)V", ); + static final _new3 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public void (com.fasterxml.jackson.core.JsonFactoryBuilder b) /// The returned object must be released after use, by calling the [release] method. /// @@ -313,14 +441,26 @@ class JsonFactory extends jni.JObject { factory JsonFactory.new3( jni.JObject b, ) { - return JsonFactory.fromReference( - _id_new3(_class, referenceType, [b.reference.pointer])); + return JsonFactory.fromReference(_new3(_class.reference.pointer, + _id_new3 as jni.JMethodIDPtr, b.reference.pointer) + .reference); } static final _id_new4 = _class.constructorId( r"(Lcom/fasterxml/jackson/core/TSFBuilder;Z)V", ); + static final _new4 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer, ffi.Int64)>)>>( + "globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int)>(); + /// from: protected void (com.fasterxml.jackson.core.TSFBuilder b, boolean bogus) /// The returned object must be released after use, by calling the [release] method. /// @@ -333,8 +473,9 @@ class JsonFactory extends jni.JObject { jni.JObject b, bool bogus, ) { - return JsonFactory.fromReference( - _id_new4(_class, referenceType, [b.reference.pointer, bogus ? 1 : 0])); + return JsonFactory.fromReference(_new4(_class.reference.pointer, + _id_new4 as jni.JMethodIDPtr, b.reference.pointer, bogus ? 1 : 0) + .reference); } static final _id_rebuild = _class.instanceMethodId( @@ -342,6 +483,18 @@ class JsonFactory extends jni.JObject { r"()Lcom/fasterxml/jackson/core/TSFBuilder;", ); + static final _rebuild = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.fasterxml.jackson.core.TSFBuilder rebuild() /// The returned object must be released after use, by calling the [release] method. /// @@ -350,7 +503,8 @@ class JsonFactory extends jni.JObject { ///@return Builder instance to use ///@since 2.10 jni.JObject rebuild() { - return _id_rebuild(this, const jni.JObjectType(), []); + return _rebuild(reference.pointer, _id_rebuild as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_builder = _class.staticMethodId( @@ -358,6 +512,18 @@ class JsonFactory extends jni.JObject { r"()Lcom/fasterxml/jackson/core/TSFBuilder;", ); + static final _builder = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public com.fasterxml.jackson.core.TSFBuilder builder() /// The returned object must be released after use, by calling the [release] method. /// @@ -370,7 +536,8 @@ class JsonFactory extends jni.JObject { /// will be fixed in 3.0. ///@return Builder instance to use static jni.JObject builder() { - return _id_builder(_class, const jni.JObjectType(), []); + return _builder(_class.reference.pointer, _id_builder as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_copy = _class.instanceMethodId( @@ -378,6 +545,18 @@ class JsonFactory extends jni.JObject { r"()Lcom/fasterxml/jackson/core/JsonFactory;", ); + static final _copy = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.fasterxml.jackson.core.JsonFactory copy() /// The returned object must be released after use, by calling the [release] method. /// @@ -394,7 +573,8 @@ class JsonFactory extends jni.JObject { ///@return Copy of this factory instance ///@since 2.1 JsonFactory copy() { - return _id_copy(this, const $JsonFactoryType(), []); + return _copy(reference.pointer, _id_copy as jni.JMethodIDPtr) + .object(const $JsonFactoryType()); } static final _id_readResolve = _class.instanceMethodId( @@ -402,6 +582,18 @@ class JsonFactory extends jni.JObject { r"()Ljava/lang/Object;", ); + static final _readResolve = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: protected java.lang.Object readResolve() /// The returned object must be released after use, by calling the [release] method. /// @@ -412,7 +604,8 @@ class JsonFactory extends jni.JObject { /// Note: must be overridden by sub-classes as well. ///@return Newly constructed instance jni.JObject readResolve() { - return _id_readResolve(this, const jni.JObjectType(), []); + return _readResolve(reference.pointer, _id_readResolve as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_requiresPropertyOrdering = _class.instanceMethodId( @@ -420,6 +613,18 @@ class JsonFactory extends jni.JObject { r"()Z", ); + static final _requiresPropertyOrdering = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean requiresPropertyOrdering() /// /// Introspection method that higher-level functionality may call @@ -437,7 +642,9 @@ class JsonFactory extends jni.JObject { /// requires Object properties to be ordered. ///@since 2.3 bool requiresPropertyOrdering() { - return _id_requiresPropertyOrdering(this, const jni.jbooleanType(), []); + return _requiresPropertyOrdering( + reference.pointer, _id_requiresPropertyOrdering as jni.JMethodIDPtr) + .boolean; } static final _id_canHandleBinaryNatively = _class.instanceMethodId( @@ -445,6 +652,18 @@ class JsonFactory extends jni.JObject { r"()Z", ); + static final _canHandleBinaryNatively = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean canHandleBinaryNatively() /// /// Introspection method that higher-level functionality may call @@ -459,7 +678,9 @@ class JsonFactory extends jni.JObject { /// supports native binary content ///@since 2.3 bool canHandleBinaryNatively() { - return _id_canHandleBinaryNatively(this, const jni.jbooleanType(), []); + return _canHandleBinaryNatively( + reference.pointer, _id_canHandleBinaryNatively as jni.JMethodIDPtr) + .boolean; } static final _id_canUseCharArrays = _class.instanceMethodId( @@ -467,6 +688,18 @@ class JsonFactory extends jni.JObject { r"()Z", ); + static final _canUseCharArrays = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean canUseCharArrays() /// /// Introspection method that can be used by base factory to check @@ -481,7 +714,9 @@ class JsonFactory extends jni.JObject { /// accessed using parser method {@code getTextCharacters()}. ///@since 2.4 bool canUseCharArrays() { - return _id_canUseCharArrays(this, const jni.jbooleanType(), []); + return _canUseCharArrays( + reference.pointer, _id_canUseCharArrays as jni.JMethodIDPtr) + .boolean; } static final _id_canParseAsync = _class.instanceMethodId( @@ -489,6 +724,18 @@ class JsonFactory extends jni.JObject { r"()Z", ); + static final _canParseAsync = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean canParseAsync() /// /// Introspection method that can be used to check whether this @@ -499,7 +746,9 @@ class JsonFactory extends jni.JObject { /// not (and consequently whether {@code createNonBlockingXxx()} method(s) work) ///@since 2.9 bool canParseAsync() { - return _id_canParseAsync(this, const jni.jbooleanType(), []); + return _canParseAsync( + reference.pointer, _id_canParseAsync as jni.JMethodIDPtr) + .boolean; } static final _id_getFormatReadFeatureType = _class.instanceMethodId( @@ -507,10 +756,24 @@ class JsonFactory extends jni.JObject { r"()Ljava/lang/Class;", ); + static final _getFormatReadFeatureType = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.Class getFormatReadFeatureType() /// The returned object must be released after use, by calling the [release] method. jni.JObject getFormatReadFeatureType() { - return _id_getFormatReadFeatureType(this, const jni.JObjectType(), []); + return _getFormatReadFeatureType( + reference.pointer, _id_getFormatReadFeatureType as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_getFormatWriteFeatureType = _class.instanceMethodId( @@ -518,10 +781,24 @@ class JsonFactory extends jni.JObject { r"()Ljava/lang/Class;", ); + static final _getFormatWriteFeatureType = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.Class getFormatWriteFeatureType() /// The returned object must be released after use, by calling the [release] method. jni.JObject getFormatWriteFeatureType() { - return _id_getFormatWriteFeatureType(this, const jni.JObjectType(), []); + return _getFormatWriteFeatureType(reference.pointer, + _id_getFormatWriteFeatureType as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_canUseSchema = _class.instanceMethodId( @@ -529,6 +806,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/FormatSchema;)Z", ); + static final _canUseSchema = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public boolean canUseSchema(com.fasterxml.jackson.core.FormatSchema schema) /// /// Method that can be used to quickly check whether given schema @@ -543,8 +831,9 @@ class JsonFactory extends jni.JObject { bool canUseSchema( jni.JObject schema, ) { - return _id_canUseSchema( - this, const jni.jbooleanType(), [schema.reference.pointer]); + return _canUseSchema(reference.pointer, + _id_canUseSchema as jni.JMethodIDPtr, schema.reference.pointer) + .boolean; } static final _id_getFormatName = _class.instanceMethodId( @@ -552,6 +841,18 @@ class JsonFactory extends jni.JObject { r"()Ljava/lang/String;", ); + static final _getFormatName = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.String getFormatName() /// The returned object must be released after use, by calling the [release] method. /// @@ -562,7 +863,9 @@ class JsonFactory extends jni.JObject { /// implementation will return null for all sub-classes ///@return Name of the format handled by parsers, generators this factory creates jni.JString getFormatName() { - return _id_getFormatName(this, const jni.JStringType(), []); + return _getFormatName( + reference.pointer, _id_getFormatName as jni.JMethodIDPtr) + .object(const jni.JStringType()); } static final _id_hasFormat = _class.instanceMethodId( @@ -570,13 +873,25 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/format/InputAccessor;)Lcom/fasterxml/jackson/core/format/MatchStrength;", ); + static final _hasFormat = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.format.MatchStrength hasFormat(com.fasterxml.jackson.core.format.InputAccessor acc) /// The returned object must be released after use, by calling the [release] method. jni.JObject hasFormat( jni.JObject acc, ) { - return _id_hasFormat( - this, const jni.JObjectType(), [acc.reference.pointer]); + return _hasFormat(reference.pointer, _id_hasFormat as jni.JMethodIDPtr, + acc.reference.pointer) + .object(const jni.JObjectType()); } static final _id_requiresCustomCodec = _class.instanceMethodId( @@ -584,6 +899,18 @@ class JsonFactory extends jni.JObject { r"()Z", ); + static final _requiresCustomCodec = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean requiresCustomCodec() /// /// Method that can be called to determine if a custom @@ -596,7 +923,9 @@ class JsonFactory extends jni.JObject { /// ObjectCodec is enough ///@since 2.1 bool requiresCustomCodec() { - return _id_requiresCustomCodec(this, const jni.jbooleanType(), []); + return _requiresCustomCodec( + reference.pointer, _id_requiresCustomCodec as jni.JMethodIDPtr) + .boolean; } static final _id_hasJSONFormat = _class.instanceMethodId( @@ -604,13 +933,25 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/format/InputAccessor;)Lcom/fasterxml/jackson/core/format/MatchStrength;", ); + static final _hasJSONFormat = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: protected com.fasterxml.jackson.core.format.MatchStrength hasJSONFormat(com.fasterxml.jackson.core.format.InputAccessor acc) /// The returned object must be released after use, by calling the [release] method. jni.JObject hasJSONFormat( jni.JObject acc, ) { - return _id_hasJSONFormat( - this, const jni.JObjectType(), [acc.reference.pointer]); + return _hasJSONFormat(reference.pointer, + _id_hasJSONFormat as jni.JMethodIDPtr, acc.reference.pointer) + .object(const jni.JObjectType()); } static final _id_version = _class.instanceMethodId( @@ -618,10 +959,23 @@ class JsonFactory extends jni.JObject { r"()Lcom/fasterxml/jackson/core/Version;", ); + static final _version = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.fasterxml.jackson.core.Version version() /// The returned object must be released after use, by calling the [release] method. jni.JObject version() { - return _id_version(this, const jni.JObjectType(), []); + return _version(reference.pointer, _id_version as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_configure = _class.instanceMethodId( @@ -629,6 +983,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonFactory$Feature;Z)Lcom/fasterxml/jackson/core/JsonFactory;", ); + static final _configure = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer, ffi.Int64)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int)>(); + /// from: public final com.fasterxml.jackson.core.JsonFactory configure(com.fasterxml.jackson.core.JsonFactory.Feature f, boolean state) /// The returned object must be released after use, by calling the [release] method. /// @@ -642,8 +1007,9 @@ class JsonFactory extends jni.JObject { JsonFactory_Feature f, bool state, ) { - return _id_configure( - this, const $JsonFactoryType(), [f.reference.pointer, state ? 1 : 0]); + return _configure(reference.pointer, _id_configure as jni.JMethodIDPtr, + f.reference.pointer, state ? 1 : 0) + .object(const $JsonFactoryType()); } static final _id_enable = _class.instanceMethodId( @@ -651,6 +1017,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonFactory$Feature;)Lcom/fasterxml/jackson/core/JsonFactory;", ); + static final _enable = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonFactory enable(com.fasterxml.jackson.core.JsonFactory.Feature f) /// The returned object must be released after use, by calling the [release] method. /// @@ -662,7 +1039,9 @@ class JsonFactory extends jni.JObject { JsonFactory enable( JsonFactory_Feature f, ) { - return _id_enable(this, const $JsonFactoryType(), [f.reference.pointer]); + return _enable(reference.pointer, _id_enable as jni.JMethodIDPtr, + f.reference.pointer) + .object(const $JsonFactoryType()); } static final _id_disable = _class.instanceMethodId( @@ -670,6 +1049,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonFactory$Feature;)Lcom/fasterxml/jackson/core/JsonFactory;", ); + static final _disable = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonFactory disable(com.fasterxml.jackson.core.JsonFactory.Feature f) /// The returned object must be released after use, by calling the [release] method. /// @@ -681,7 +1071,9 @@ class JsonFactory extends jni.JObject { JsonFactory disable( JsonFactory_Feature f, ) { - return _id_disable(this, const $JsonFactoryType(), [f.reference.pointer]); + return _disable(reference.pointer, _id_disable as jni.JMethodIDPtr, + f.reference.pointer) + .object(const $JsonFactoryType()); } static final _id_isEnabled = _class.instanceMethodId( @@ -689,6 +1081,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonFactory$Feature;)Z", ); + static final _isEnabled = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public final boolean isEnabled(com.fasterxml.jackson.core.JsonFactory.Feature f) /// /// Checked whether specified parser feature is enabled. @@ -697,7 +1100,9 @@ class JsonFactory extends jni.JObject { bool isEnabled( JsonFactory_Feature f, ) { - return _id_isEnabled(this, const jni.jbooleanType(), [f.reference.pointer]); + return _isEnabled(reference.pointer, _id_isEnabled as jni.JMethodIDPtr, + f.reference.pointer) + .boolean; } static final _id_getParserFeatures = _class.instanceMethodId( @@ -705,9 +1110,23 @@ class JsonFactory extends jni.JObject { r"()I", ); + static final _getParserFeatures = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public final int getParserFeatures() int getParserFeatures() { - return _id_getParserFeatures(this, const jni.jintType(), []); + return _getParserFeatures( + reference.pointer, _id_getParserFeatures as jni.JMethodIDPtr) + .integer; } static final _id_getGeneratorFeatures = _class.instanceMethodId( @@ -715,9 +1134,23 @@ class JsonFactory extends jni.JObject { r"()I", ); + static final _getGeneratorFeatures = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public final int getGeneratorFeatures() int getGeneratorFeatures() { - return _id_getGeneratorFeatures(this, const jni.jintType(), []); + return _getGeneratorFeatures( + reference.pointer, _id_getGeneratorFeatures as jni.JMethodIDPtr) + .integer; } static final _id_getFormatParserFeatures = _class.instanceMethodId( @@ -725,9 +1158,23 @@ class JsonFactory extends jni.JObject { r"()I", ); + static final _getFormatParserFeatures = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int getFormatParserFeatures() int getFormatParserFeatures() { - return _id_getFormatParserFeatures(this, const jni.jintType(), []); + return _getFormatParserFeatures( + reference.pointer, _id_getFormatParserFeatures as jni.JMethodIDPtr) + .integer; } static final _id_getFormatGeneratorFeatures = _class.instanceMethodId( @@ -735,9 +1182,23 @@ class JsonFactory extends jni.JObject { r"()I", ); + static final _getFormatGeneratorFeatures = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int getFormatGeneratorFeatures() int getFormatGeneratorFeatures() { - return _id_getFormatGeneratorFeatures(this, const jni.jintType(), []); + return _getFormatGeneratorFeatures(reference.pointer, + _id_getFormatGeneratorFeatures as jni.JMethodIDPtr) + .integer; } static final _id_configure1 = _class.instanceMethodId( @@ -745,6 +1206,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonParser$Feature;Z)Lcom/fasterxml/jackson/core/JsonFactory;", ); + static final _configure1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer, ffi.Int64)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int)>(); + /// from: public final com.fasterxml.jackson.core.JsonFactory configure(com.fasterxml.jackson.core.JsonParser.Feature f, boolean state) /// The returned object must be released after use, by calling the [release] method. /// @@ -757,8 +1229,9 @@ class JsonFactory extends jni.JObject { jsonparser_.JsonParser_Feature f, bool state, ) { - return _id_configure1( - this, const $JsonFactoryType(), [f.reference.pointer, state ? 1 : 0]); + return _configure1(reference.pointer, _id_configure1 as jni.JMethodIDPtr, + f.reference.pointer, state ? 1 : 0) + .object(const $JsonFactoryType()); } static final _id_enable1 = _class.instanceMethodId( @@ -766,6 +1239,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonParser$Feature;)Lcom/fasterxml/jackson/core/JsonFactory;", ); + static final _enable1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonFactory enable(com.fasterxml.jackson.core.JsonParser.Feature f) /// The returned object must be released after use, by calling the [release] method. /// @@ -776,7 +1260,9 @@ class JsonFactory extends jni.JObject { JsonFactory enable1( jsonparser_.JsonParser_Feature f, ) { - return _id_enable1(this, const $JsonFactoryType(), [f.reference.pointer]); + return _enable1(reference.pointer, _id_enable1 as jni.JMethodIDPtr, + f.reference.pointer) + .object(const $JsonFactoryType()); } static final _id_disable1 = _class.instanceMethodId( @@ -784,6 +1270,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonParser$Feature;)Lcom/fasterxml/jackson/core/JsonFactory;", ); + static final _disable1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonFactory disable(com.fasterxml.jackson.core.JsonParser.Feature f) /// The returned object must be released after use, by calling the [release] method. /// @@ -794,7 +1291,9 @@ class JsonFactory extends jni.JObject { JsonFactory disable1( jsonparser_.JsonParser_Feature f, ) { - return _id_disable1(this, const $JsonFactoryType(), [f.reference.pointer]); + return _disable1(reference.pointer, _id_disable1 as jni.JMethodIDPtr, + f.reference.pointer) + .object(const $JsonFactoryType()); } static final _id_isEnabled1 = _class.instanceMethodId( @@ -802,6 +1301,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonParser$Feature;)Z", ); + static final _isEnabled1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public final boolean isEnabled(com.fasterxml.jackson.core.JsonParser.Feature f) /// /// Method for checking if the specified parser feature is enabled. @@ -810,8 +1320,9 @@ class JsonFactory extends jni.JObject { bool isEnabled1( jsonparser_.JsonParser_Feature f, ) { - return _id_isEnabled1( - this, const jni.jbooleanType(), [f.reference.pointer]); + return _isEnabled1(reference.pointer, _id_isEnabled1 as jni.JMethodIDPtr, + f.reference.pointer) + .boolean; } static final _id_isEnabled2 = _class.instanceMethodId( @@ -819,6 +1330,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/StreamReadFeature;)Z", ); + static final _isEnabled2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public final boolean isEnabled(com.fasterxml.jackson.core.StreamReadFeature f) /// /// Method for checking if the specified stream read feature is enabled. @@ -828,8 +1350,9 @@ class JsonFactory extends jni.JObject { bool isEnabled2( jni.JObject f, ) { - return _id_isEnabled2( - this, const jni.jbooleanType(), [f.reference.pointer]); + return _isEnabled2(reference.pointer, _id_isEnabled2 as jni.JMethodIDPtr, + f.reference.pointer) + .boolean; } static final _id_getInputDecorator = _class.instanceMethodId( @@ -837,6 +1360,18 @@ class JsonFactory extends jni.JObject { r"()Lcom/fasterxml/jackson/core/io/InputDecorator;", ); + static final _getInputDecorator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.fasterxml.jackson.core.io.InputDecorator getInputDecorator() /// The returned object must be released after use, by calling the [release] method. /// @@ -844,7 +1379,9 @@ class JsonFactory extends jni.JObject { /// there is no default decorator). ///@return InputDecorator configured, if any jni.JObject getInputDecorator() { - return _id_getInputDecorator(this, const jni.JObjectType(), []); + return _getInputDecorator( + reference.pointer, _id_getInputDecorator as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_setInputDecorator = _class.instanceMethodId( @@ -852,6 +1389,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/io/InputDecorator;)Lcom/fasterxml/jackson/core/JsonFactory;", ); + static final _setInputDecorator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonFactory setInputDecorator(com.fasterxml.jackson.core.io.InputDecorator d) /// The returned object must be released after use, by calling the [release] method. /// @@ -862,8 +1410,9 @@ class JsonFactory extends jni.JObject { JsonFactory setInputDecorator( jni.JObject d, ) { - return _id_setInputDecorator( - this, const $JsonFactoryType(), [d.reference.pointer]); + return _setInputDecorator(reference.pointer, + _id_setInputDecorator as jni.JMethodIDPtr, d.reference.pointer) + .object(const $JsonFactoryType()); } static final _id_configure2 = _class.instanceMethodId( @@ -871,6 +1420,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonGenerator$Feature;Z)Lcom/fasterxml/jackson/core/JsonFactory;", ); + static final _configure2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer, ffi.Int64)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int)>(); + /// from: public final com.fasterxml.jackson.core.JsonFactory configure(com.fasterxml.jackson.core.JsonGenerator.Feature f, boolean state) /// The returned object must be released after use, by calling the [release] method. /// @@ -883,8 +1443,9 @@ class JsonFactory extends jni.JObject { jni.JObject f, bool state, ) { - return _id_configure2( - this, const $JsonFactoryType(), [f.reference.pointer, state ? 1 : 0]); + return _configure2(reference.pointer, _id_configure2 as jni.JMethodIDPtr, + f.reference.pointer, state ? 1 : 0) + .object(const $JsonFactoryType()); } static final _id_enable2 = _class.instanceMethodId( @@ -892,6 +1453,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonGenerator$Feature;)Lcom/fasterxml/jackson/core/JsonFactory;", ); + static final _enable2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonFactory enable(com.fasterxml.jackson.core.JsonGenerator.Feature f) /// The returned object must be released after use, by calling the [release] method. /// @@ -902,7 +1474,9 @@ class JsonFactory extends jni.JObject { JsonFactory enable2( jni.JObject f, ) { - return _id_enable2(this, const $JsonFactoryType(), [f.reference.pointer]); + return _enable2(reference.pointer, _id_enable2 as jni.JMethodIDPtr, + f.reference.pointer) + .object(const $JsonFactoryType()); } static final _id_disable2 = _class.instanceMethodId( @@ -910,6 +1484,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonGenerator$Feature;)Lcom/fasterxml/jackson/core/JsonFactory;", ); + static final _disable2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonFactory disable(com.fasterxml.jackson.core.JsonGenerator.Feature f) /// The returned object must be released after use, by calling the [release] method. /// @@ -920,7 +1505,9 @@ class JsonFactory extends jni.JObject { JsonFactory disable2( jni.JObject f, ) { - return _id_disable2(this, const $JsonFactoryType(), [f.reference.pointer]); + return _disable2(reference.pointer, _id_disable2 as jni.JMethodIDPtr, + f.reference.pointer) + .object(const $JsonFactoryType()); } static final _id_isEnabled3 = _class.instanceMethodId( @@ -928,6 +1515,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonGenerator$Feature;)Z", ); + static final _isEnabled3 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public final boolean isEnabled(com.fasterxml.jackson.core.JsonGenerator.Feature f) /// /// Check whether specified generator feature is enabled. @@ -936,8 +1534,9 @@ class JsonFactory extends jni.JObject { bool isEnabled3( jni.JObject f, ) { - return _id_isEnabled3( - this, const jni.jbooleanType(), [f.reference.pointer]); + return _isEnabled3(reference.pointer, _id_isEnabled3 as jni.JMethodIDPtr, + f.reference.pointer) + .boolean; } static final _id_isEnabled4 = _class.instanceMethodId( @@ -945,6 +1544,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/StreamWriteFeature;)Z", ); + static final _isEnabled4 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public final boolean isEnabled(com.fasterxml.jackson.core.StreamWriteFeature f) /// /// Check whether specified stream write feature is enabled. @@ -954,8 +1564,9 @@ class JsonFactory extends jni.JObject { bool isEnabled4( jni.JObject f, ) { - return _id_isEnabled4( - this, const jni.jbooleanType(), [f.reference.pointer]); + return _isEnabled4(reference.pointer, _id_isEnabled4 as jni.JMethodIDPtr, + f.reference.pointer) + .boolean; } static final _id_getCharacterEscapes = _class.instanceMethodId( @@ -963,6 +1574,18 @@ class JsonFactory extends jni.JObject { r"()Lcom/fasterxml/jackson/core/io/CharacterEscapes;", ); + static final _getCharacterEscapes = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.fasterxml.jackson.core.io.CharacterEscapes getCharacterEscapes() /// The returned object must be released after use, by calling the [release] method. /// @@ -970,7 +1593,9 @@ class JsonFactory extends jni.JObject { /// it creates. ///@return Configured {@code CharacterEscapes}, if any; {@code null} if none jni.JObject getCharacterEscapes() { - return _id_getCharacterEscapes(this, const jni.JObjectType(), []); + return _getCharacterEscapes( + reference.pointer, _id_getCharacterEscapes as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_setCharacterEscapes = _class.instanceMethodId( @@ -978,6 +1603,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/io/CharacterEscapes;)Lcom/fasterxml/jackson/core/JsonFactory;", ); + static final _setCharacterEscapes = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonFactory setCharacterEscapes(com.fasterxml.jackson.core.io.CharacterEscapes esc) /// The returned object must be released after use, by calling the [release] method. /// @@ -988,8 +1624,9 @@ class JsonFactory extends jni.JObject { JsonFactory setCharacterEscapes( jni.JObject esc, ) { - return _id_setCharacterEscapes( - this, const $JsonFactoryType(), [esc.reference.pointer]); + return _setCharacterEscapes(reference.pointer, + _id_setCharacterEscapes as jni.JMethodIDPtr, esc.reference.pointer) + .object(const $JsonFactoryType()); } static final _id_getOutputDecorator = _class.instanceMethodId( @@ -997,6 +1634,18 @@ class JsonFactory extends jni.JObject { r"()Lcom/fasterxml/jackson/core/io/OutputDecorator;", ); + static final _getOutputDecorator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.fasterxml.jackson.core.io.OutputDecorator getOutputDecorator() /// The returned object must be released after use, by calling the [release] method. /// @@ -1005,7 +1654,9 @@ class JsonFactory extends jni.JObject { ///@return OutputDecorator configured for generators factory creates, if any; /// {@code null} if none. jni.JObject getOutputDecorator() { - return _id_getOutputDecorator(this, const jni.JObjectType(), []); + return _getOutputDecorator( + reference.pointer, _id_getOutputDecorator as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_setOutputDecorator = _class.instanceMethodId( @@ -1013,6 +1664,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/io/OutputDecorator;)Lcom/fasterxml/jackson/core/JsonFactory;", ); + static final _setOutputDecorator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonFactory setOutputDecorator(com.fasterxml.jackson.core.io.OutputDecorator d) /// The returned object must be released after use, by calling the [release] method. /// @@ -1023,8 +1685,9 @@ class JsonFactory extends jni.JObject { JsonFactory setOutputDecorator( jni.JObject d, ) { - return _id_setOutputDecorator( - this, const $JsonFactoryType(), [d.reference.pointer]); + return _setOutputDecorator(reference.pointer, + _id_setOutputDecorator as jni.JMethodIDPtr, d.reference.pointer) + .object(const $JsonFactoryType()); } static final _id_setRootValueSeparator = _class.instanceMethodId( @@ -1032,6 +1695,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonFactory;", ); + static final _setRootValueSeparator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonFactory setRootValueSeparator(java.lang.String sep) /// The returned object must be released after use, by calling the [release] method. /// @@ -1043,8 +1717,11 @@ class JsonFactory extends jni.JObject { JsonFactory setRootValueSeparator( jni.JString sep, ) { - return _id_setRootValueSeparator( - this, const $JsonFactoryType(), [sep.reference.pointer]); + return _setRootValueSeparator( + reference.pointer, + _id_setRootValueSeparator as jni.JMethodIDPtr, + sep.reference.pointer) + .object(const $JsonFactoryType()); } static final _id_getRootValueSeparator = _class.instanceMethodId( @@ -1052,12 +1729,26 @@ class JsonFactory extends jni.JObject { r"()Ljava/lang/String;", ); + static final _getRootValueSeparator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.String getRootValueSeparator() /// The returned object must be released after use, by calling the [release] method. /// /// @return Root value separator configured, if any jni.JString getRootValueSeparator() { - return _id_getRootValueSeparator(this, const jni.JStringType(), []); + return _getRootValueSeparator( + reference.pointer, _id_getRootValueSeparator as jni.JMethodIDPtr) + .object(const jni.JStringType()); } static final _id_setCodec = _class.instanceMethodId( @@ -1065,6 +1756,17 @@ class JsonFactory extends jni.JObject { r"(Lcom/fasterxml/jackson/core/ObjectCodec;)Lcom/fasterxml/jackson/core/JsonFactory;", ); + static final _setCodec = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonFactory setCodec(com.fasterxml.jackson.core.ObjectCodec oc) /// The returned object must be released after use, by calling the [release] method. /// @@ -1078,7 +1780,9 @@ class JsonFactory extends jni.JObject { JsonFactory setCodec( jni.JObject oc, ) { - return _id_setCodec(this, const $JsonFactoryType(), [oc.reference.pointer]); + return _setCodec(reference.pointer, _id_setCodec as jni.JMethodIDPtr, + oc.reference.pointer) + .object(const $JsonFactoryType()); } static final _id_getCodec = _class.instanceMethodId( @@ -1086,10 +1790,23 @@ class JsonFactory extends jni.JObject { r"()Lcom/fasterxml/jackson/core/ObjectCodec;", ); + static final _getCodec = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.fasterxml.jackson.core.ObjectCodec getCodec() /// The returned object must be released after use, by calling the [release] method. jni.JObject getCodec() { - return _id_getCodec(this, const jni.JObjectType(), []); + return _getCodec(reference.pointer, _id_getCodec as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_createParser = _class.instanceMethodId( @@ -1097,6 +1814,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/File;)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createParser = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createParser(java.io.File f) /// The returned object must be released after use, by calling the [release] method. /// @@ -1119,8 +1847,9 @@ class JsonFactory extends jni.JObject { jsonparser_.JsonParser createParser( jni.JObject f, ) { - return _id_createParser( - this, const jsonparser_.$JsonParserType(), [f.reference.pointer]); + return _createParser(reference.pointer, + _id_createParser as jni.JMethodIDPtr, f.reference.pointer) + .object(const jsonparser_.$JsonParserType()); } static final _id_createParser1 = _class.instanceMethodId( @@ -1128,6 +1857,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/net/URL;)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createParser1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createParser(java.net.URL url) /// The returned object must be released after use, by calling the [release] method. /// @@ -1148,8 +1888,9 @@ class JsonFactory extends jni.JObject { jsonparser_.JsonParser createParser1( jni.JObject url, ) { - return _id_createParser1( - this, const jsonparser_.$JsonParserType(), [url.reference.pointer]); + return _createParser1(reference.pointer, + _id_createParser1 as jni.JMethodIDPtr, url.reference.pointer) + .object(const jsonparser_.$JsonParserType()); } static final _id_createParser2 = _class.instanceMethodId( @@ -1157,6 +1898,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/InputStream;)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createParser2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createParser(java.io.InputStream in) /// The returned object must be released after use, by calling the [release] method. /// @@ -1180,8 +1932,9 @@ class JsonFactory extends jni.JObject { jsonparser_.JsonParser createParser2( jni.JObject in0, ) { - return _id_createParser2( - this, const jsonparser_.$JsonParserType(), [in0.reference.pointer]); + return _createParser2(reference.pointer, + _id_createParser2 as jni.JMethodIDPtr, in0.reference.pointer) + .object(const jsonparser_.$JsonParserType()); } static final _id_createParser3 = _class.instanceMethodId( @@ -1189,6 +1942,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/Reader;)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createParser3 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createParser(java.io.Reader r) /// The returned object must be released after use, by calling the [release] method. /// @@ -1205,8 +1969,9 @@ class JsonFactory extends jni.JObject { jsonparser_.JsonParser createParser3( jni.JObject r, ) { - return _id_createParser3( - this, const jsonparser_.$JsonParserType(), [r.reference.pointer]); + return _createParser3(reference.pointer, + _id_createParser3 as jni.JMethodIDPtr, r.reference.pointer) + .object(const jsonparser_.$JsonParserType()); } static final _id_createParser4 = _class.instanceMethodId( @@ -1214,6 +1979,17 @@ class JsonFactory extends jni.JObject { r"([B)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createParser4 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createParser(byte[] data) /// The returned object must be released after use, by calling the [release] method. /// @@ -1223,8 +1999,9 @@ class JsonFactory extends jni.JObject { jsonparser_.JsonParser createParser4( jni.JArray data, ) { - return _id_createParser4( - this, const jsonparser_.$JsonParserType(), [data.reference.pointer]); + return _createParser4(reference.pointer, + _id_createParser4 as jni.JMethodIDPtr, data.reference.pointer) + .object(const jsonparser_.$JsonParserType()); } static final _id_createParser5 = _class.instanceMethodId( @@ -1232,6 +2009,21 @@ class JsonFactory extends jni.JObject { r"([BII)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createParser5 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Int64, + ffi.Int64 + )>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int, int)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createParser(byte[] data, int offset, int len) /// The returned object must be released after use, by calling the [release] method. /// @@ -1246,8 +2038,13 @@ class JsonFactory extends jni.JObject { int offset, int len, ) { - return _id_createParser5(this, const jsonparser_.$JsonParserType(), - [data.reference.pointer, jni.JValueInt(offset), jni.JValueInt(len)]); + return _createParser5( + reference.pointer, + _id_createParser5 as jni.JMethodIDPtr, + data.reference.pointer, + offset, + len) + .object(const jsonparser_.$JsonParserType()); } static final _id_createParser6 = _class.instanceMethodId( @@ -1255,6 +2052,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createParser6 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createParser(java.lang.String content) /// The returned object must be released after use, by calling the [release] method. /// @@ -1264,8 +2072,9 @@ class JsonFactory extends jni.JObject { jsonparser_.JsonParser createParser6( jni.JString content, ) { - return _id_createParser6( - this, const jsonparser_.$JsonParserType(), [content.reference.pointer]); + return _createParser6(reference.pointer, + _id_createParser6 as jni.JMethodIDPtr, content.reference.pointer) + .object(const jsonparser_.$JsonParserType()); } static final _id_createParser7 = _class.instanceMethodId( @@ -1273,6 +2082,17 @@ class JsonFactory extends jni.JObject { r"([C)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createParser7 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createParser(char[] content) /// The returned object must be released after use, by calling the [release] method. /// @@ -1282,8 +2102,9 @@ class JsonFactory extends jni.JObject { jsonparser_.JsonParser createParser7( jni.JArray content, ) { - return _id_createParser7( - this, const jsonparser_.$JsonParserType(), [content.reference.pointer]); + return _createParser7(reference.pointer, + _id_createParser7 as jni.JMethodIDPtr, content.reference.pointer) + .object(const jsonparser_.$JsonParserType()); } static final _id_createParser8 = _class.instanceMethodId( @@ -1291,6 +2112,21 @@ class JsonFactory extends jni.JObject { r"([CII)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createParser8 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Int64, + ffi.Int64 + )>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int, int)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createParser(char[] content, int offset, int len) /// The returned object must be released after use, by calling the [release] method. /// @@ -1301,8 +2137,13 @@ class JsonFactory extends jni.JObject { int offset, int len, ) { - return _id_createParser8(this, const jsonparser_.$JsonParserType(), - [content.reference.pointer, jni.JValueInt(offset), jni.JValueInt(len)]); + return _createParser8( + reference.pointer, + _id_createParser8 as jni.JMethodIDPtr, + content.reference.pointer, + offset, + len) + .object(const jsonparser_.$JsonParserType()); } static final _id_createParser9 = _class.instanceMethodId( @@ -1310,6 +2151,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/DataInput;)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createParser9 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createParser(java.io.DataInput in) /// The returned object must be released after use, by calling the [release] method. /// @@ -1322,8 +2174,9 @@ class JsonFactory extends jni.JObject { jsonparser_.JsonParser createParser9( jni.JObject in0, ) { - return _id_createParser9( - this, const jsonparser_.$JsonParserType(), [in0.reference.pointer]); + return _createParser9(reference.pointer, + _id_createParser9 as jni.JMethodIDPtr, in0.reference.pointer) + .object(const jsonparser_.$JsonParserType()); } static final _id_createNonBlockingByteArrayParser = _class.instanceMethodId( @@ -1331,6 +2184,19 @@ class JsonFactory extends jni.JObject { r"()Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createNonBlockingByteArrayParser = + ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.fasterxml.jackson.core.JsonParser createNonBlockingByteArrayParser() /// The returned object must be released after use, by calling the [release] method. /// @@ -1348,8 +2214,9 @@ class JsonFactory extends jni.JObject { /// at this point. ///@since 2.9 jsonparser_.JsonParser createNonBlockingByteArrayParser() { - return _id_createNonBlockingByteArrayParser( - this, const jsonparser_.$JsonParserType(), []); + return _createNonBlockingByteArrayParser(reference.pointer, + _id_createNonBlockingByteArrayParser as jni.JMethodIDPtr) + .object(const jsonparser_.$JsonParserType()); } static final _id_createGenerator = _class.instanceMethodId( @@ -1357,6 +2224,20 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/OutputStream;Lcom/fasterxml/jackson/core/JsonEncoding;)Lcom/fasterxml/jackson/core/JsonGenerator;", ); + static final _createGenerator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonGenerator createGenerator(java.io.OutputStream out, com.fasterxml.jackson.core.JsonEncoding enc) /// The returned object must be released after use, by calling the [release] method. /// @@ -1382,8 +2263,12 @@ class JsonFactory extends jni.JObject { jni.JObject out, jni.JObject enc, ) { - return _id_createGenerator(this, const jni.JObjectType(), - [out.reference.pointer, enc.reference.pointer]); + return _createGenerator( + reference.pointer, + _id_createGenerator as jni.JMethodIDPtr, + out.reference.pointer, + enc.reference.pointer) + .object(const jni.JObjectType()); } static final _id_createGenerator1 = _class.instanceMethodId( @@ -1391,6 +2276,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/OutputStream;)Lcom/fasterxml/jackson/core/JsonGenerator;", ); + static final _createGenerator1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonGenerator createGenerator(java.io.OutputStream out) /// The returned object must be released after use, by calling the [release] method. /// @@ -1402,8 +2298,9 @@ class JsonFactory extends jni.JObject { jni.JObject createGenerator1( jni.JObject out, ) { - return _id_createGenerator1( - this, const jni.JObjectType(), [out.reference.pointer]); + return _createGenerator1(reference.pointer, + _id_createGenerator1 as jni.JMethodIDPtr, out.reference.pointer) + .object(const jni.JObjectType()); } static final _id_createGenerator2 = _class.instanceMethodId( @@ -1411,6 +2308,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/Writer;)Lcom/fasterxml/jackson/core/JsonGenerator;", ); + static final _createGenerator2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonGenerator createGenerator(java.io.Writer w) /// The returned object must be released after use, by calling the [release] method. /// @@ -1428,8 +2336,9 @@ class JsonFactory extends jni.JObject { jni.JObject createGenerator2( jni.JObject w, ) { - return _id_createGenerator2( - this, const jni.JObjectType(), [w.reference.pointer]); + return _createGenerator2(reference.pointer, + _id_createGenerator2 as jni.JMethodIDPtr, w.reference.pointer) + .object(const jni.JObjectType()); } static final _id_createGenerator3 = _class.instanceMethodId( @@ -1437,6 +2346,20 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/File;Lcom/fasterxml/jackson/core/JsonEncoding;)Lcom/fasterxml/jackson/core/JsonGenerator;", ); + static final _createGenerator3 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonGenerator createGenerator(java.io.File f, com.fasterxml.jackson.core.JsonEncoding enc) /// The returned object must be released after use, by calling the [release] method. /// @@ -1456,8 +2379,12 @@ class JsonFactory extends jni.JObject { jni.JObject f, jni.JObject enc, ) { - return _id_createGenerator3(this, const jni.JObjectType(), - [f.reference.pointer, enc.reference.pointer]); + return _createGenerator3( + reference.pointer, + _id_createGenerator3 as jni.JMethodIDPtr, + f.reference.pointer, + enc.reference.pointer) + .object(const jni.JObjectType()); } static final _id_createGenerator4 = _class.instanceMethodId( @@ -1465,6 +2392,20 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/DataOutput;Lcom/fasterxml/jackson/core/JsonEncoding;)Lcom/fasterxml/jackson/core/JsonGenerator;", ); + static final _createGenerator4 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonGenerator createGenerator(java.io.DataOutput out, com.fasterxml.jackson.core.JsonEncoding enc) /// The returned object must be released after use, by calling the [release] method. /// @@ -1475,8 +2416,12 @@ class JsonFactory extends jni.JObject { jni.JObject out, jni.JObject enc, ) { - return _id_createGenerator4(this, const jni.JObjectType(), - [out.reference.pointer, enc.reference.pointer]); + return _createGenerator4( + reference.pointer, + _id_createGenerator4 as jni.JMethodIDPtr, + out.reference.pointer, + enc.reference.pointer) + .object(const jni.JObjectType()); } static final _id_createGenerator5 = _class.instanceMethodId( @@ -1484,6 +2429,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/DataOutput;)Lcom/fasterxml/jackson/core/JsonGenerator;", ); + static final _createGenerator5 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonGenerator createGenerator(java.io.DataOutput out) /// The returned object must be released after use, by calling the [release] method. /// @@ -1495,8 +2451,9 @@ class JsonFactory extends jni.JObject { jni.JObject createGenerator5( jni.JObject out, ) { - return _id_createGenerator5( - this, const jni.JObjectType(), [out.reference.pointer]); + return _createGenerator5(reference.pointer, + _id_createGenerator5 as jni.JMethodIDPtr, out.reference.pointer) + .object(const jni.JObjectType()); } static final _id_createJsonParser = _class.instanceMethodId( @@ -1504,6 +2461,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/File;)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createJsonParser = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createJsonParser(java.io.File f) /// The returned object must be released after use, by calling the [release] method. /// @@ -1528,8 +2496,9 @@ class JsonFactory extends jni.JObject { jsonparser_.JsonParser createJsonParser( jni.JObject f, ) { - return _id_createJsonParser( - this, const jsonparser_.$JsonParserType(), [f.reference.pointer]); + return _createJsonParser(reference.pointer, + _id_createJsonParser as jni.JMethodIDPtr, f.reference.pointer) + .object(const jsonparser_.$JsonParserType()); } static final _id_createJsonParser1 = _class.instanceMethodId( @@ -1537,6 +2506,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/net/URL;)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createJsonParser1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createJsonParser(java.net.URL url) /// The returned object must be released after use, by calling the [release] method. /// @@ -1560,8 +2540,9 @@ class JsonFactory extends jni.JObject { jsonparser_.JsonParser createJsonParser1( jni.JObject url, ) { - return _id_createJsonParser1( - this, const jsonparser_.$JsonParserType(), [url.reference.pointer]); + return _createJsonParser1(reference.pointer, + _id_createJsonParser1 as jni.JMethodIDPtr, url.reference.pointer) + .object(const jsonparser_.$JsonParserType()); } static final _id_createJsonParser2 = _class.instanceMethodId( @@ -1569,6 +2550,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/InputStream;)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createJsonParser2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createJsonParser(java.io.InputStream in) /// The returned object must be released after use, by calling the [release] method. /// @@ -1595,8 +2587,9 @@ class JsonFactory extends jni.JObject { jsonparser_.JsonParser createJsonParser2( jni.JObject in0, ) { - return _id_createJsonParser2( - this, const jsonparser_.$JsonParserType(), [in0.reference.pointer]); + return _createJsonParser2(reference.pointer, + _id_createJsonParser2 as jni.JMethodIDPtr, in0.reference.pointer) + .object(const jsonparser_.$JsonParserType()); } static final _id_createJsonParser3 = _class.instanceMethodId( @@ -1604,6 +2597,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/Reader;)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createJsonParser3 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createJsonParser(java.io.Reader r) /// The returned object must be released after use, by calling the [release] method. /// @@ -1623,8 +2627,9 @@ class JsonFactory extends jni.JObject { jsonparser_.JsonParser createJsonParser3( jni.JObject r, ) { - return _id_createJsonParser3( - this, const jsonparser_.$JsonParserType(), [r.reference.pointer]); + return _createJsonParser3(reference.pointer, + _id_createJsonParser3 as jni.JMethodIDPtr, r.reference.pointer) + .object(const jsonparser_.$JsonParserType()); } static final _id_createJsonParser4 = _class.instanceMethodId( @@ -1632,6 +2637,17 @@ class JsonFactory extends jni.JObject { r"([B)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createJsonParser4 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createJsonParser(byte[] data) /// The returned object must be released after use, by calling the [release] method. /// @@ -1644,8 +2660,9 @@ class JsonFactory extends jni.JObject { jsonparser_.JsonParser createJsonParser4( jni.JArray data, ) { - return _id_createJsonParser4( - this, const jsonparser_.$JsonParserType(), [data.reference.pointer]); + return _createJsonParser4(reference.pointer, + _id_createJsonParser4 as jni.JMethodIDPtr, data.reference.pointer) + .object(const jsonparser_.$JsonParserType()); } static final _id_createJsonParser5 = _class.instanceMethodId( @@ -1653,6 +2670,21 @@ class JsonFactory extends jni.JObject { r"([BII)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createJsonParser5 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Int64, + ffi.Int64 + )>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int, int)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createJsonParser(byte[] data, int offset, int len) /// The returned object must be released after use, by calling the [release] method. /// @@ -1670,8 +2702,13 @@ class JsonFactory extends jni.JObject { int offset, int len, ) { - return _id_createJsonParser5(this, const jsonparser_.$JsonParserType(), - [data.reference.pointer, jni.JValueInt(offset), jni.JValueInt(len)]); + return _createJsonParser5( + reference.pointer, + _id_createJsonParser5 as jni.JMethodIDPtr, + data.reference.pointer, + offset, + len) + .object(const jsonparser_.$JsonParserType()); } static final _id_createJsonParser6 = _class.instanceMethodId( @@ -1679,6 +2716,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _createJsonParser6 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser createJsonParser(java.lang.String content) /// The returned object must be released after use, by calling the [release] method. /// @@ -1692,8 +2740,11 @@ class JsonFactory extends jni.JObject { jsonparser_.JsonParser createJsonParser6( jni.JString content, ) { - return _id_createJsonParser6( - this, const jsonparser_.$JsonParserType(), [content.reference.pointer]); + return _createJsonParser6( + reference.pointer, + _id_createJsonParser6 as jni.JMethodIDPtr, + content.reference.pointer) + .object(const jsonparser_.$JsonParserType()); } static final _id_createJsonGenerator = _class.instanceMethodId( @@ -1701,6 +2752,20 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/OutputStream;Lcom/fasterxml/jackson/core/JsonEncoding;)Lcom/fasterxml/jackson/core/JsonGenerator;", ); + static final _createJsonGenerator = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonGenerator createJsonGenerator(java.io.OutputStream out, com.fasterxml.jackson.core.JsonEncoding enc) /// The returned object must be released after use, by calling the [release] method. /// @@ -1728,8 +2793,12 @@ class JsonFactory extends jni.JObject { jni.JObject out, jni.JObject enc, ) { - return _id_createJsonGenerator(this, const jni.JObjectType(), - [out.reference.pointer, enc.reference.pointer]); + return _createJsonGenerator( + reference.pointer, + _id_createJsonGenerator as jni.JMethodIDPtr, + out.reference.pointer, + enc.reference.pointer) + .object(const jni.JObjectType()); } static final _id_createJsonGenerator1 = _class.instanceMethodId( @@ -1737,6 +2806,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/Writer;)Lcom/fasterxml/jackson/core/JsonGenerator;", ); + static final _createJsonGenerator1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonGenerator createJsonGenerator(java.io.Writer out) /// The returned object must be released after use, by calling the [release] method. /// @@ -1756,8 +2836,9 @@ class JsonFactory extends jni.JObject { jni.JObject createJsonGenerator1( jni.JObject out, ) { - return _id_createJsonGenerator1( - this, const jni.JObjectType(), [out.reference.pointer]); + return _createJsonGenerator1(reference.pointer, + _id_createJsonGenerator1 as jni.JMethodIDPtr, out.reference.pointer) + .object(const jni.JObjectType()); } static final _id_createJsonGenerator2 = _class.instanceMethodId( @@ -1765,6 +2846,17 @@ class JsonFactory extends jni.JObject { r"(Ljava/io/OutputStream;)Lcom/fasterxml/jackson/core/JsonGenerator;", ); + static final _createJsonGenerator2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonGenerator createJsonGenerator(java.io.OutputStream out) /// The returned object must be released after use, by calling the [release] method. /// @@ -1779,8 +2871,9 @@ class JsonFactory extends jni.JObject { jni.JObject createJsonGenerator2( jni.JObject out, ) { - return _id_createJsonGenerator2( - this, const jni.JObjectType(), [out.reference.pointer]); + return _createJsonGenerator2(reference.pointer, + _id_createJsonGenerator2 as jni.JMethodIDPtr, out.reference.pointer) + .object(const jni.JObjectType()); } } diff --git a/pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/JsonParser.dart b/pkgs/jnigen/test/jackson_core_test/third_party/bindings/com/fasterxml/jackson/core/JsonParser.dart similarity index 60% rename from pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/JsonParser.dart rename to pkgs/jnigen/test/jackson_core_test/third_party/bindings/com/fasterxml/jackson/core/JsonParser.dart index f423b52e7..9a4cce779 100644 --- a/pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/JsonParser.dart +++ b/pkgs/jnigen/test/jackson_core_test/third_party/bindings/com/fasterxml/jackson/core/JsonParser.dart @@ -63,11 +63,23 @@ class JsonParser_Feature extends jni.JObject { r"()[Lcom/fasterxml/jackson/core/JsonParser$Feature;", ); + static final _values = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public com.fasterxml.jackson.core.JsonParser.Feature[] values() /// The returned object must be released after use, by calling the [release] method. static jni.JArray values() { - return _id_values( - _class, const jni.JArrayType($JsonParser_FeatureType()), []); + return _values(_class.reference.pointer, _id_values as jni.JMethodIDPtr) + .object(const jni.JArrayType($JsonParser_FeatureType())); } static final _id_valueOf = _class.staticMethodId( @@ -75,13 +87,25 @@ class JsonParser_Feature extends jni.JObject { r"(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonParser$Feature;", ); + static final _valueOf = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: static public com.fasterxml.jackson.core.JsonParser.Feature valueOf(java.lang.String name) /// The returned object must be released after use, by calling the [release] method. static JsonParser_Feature valueOf( jni.JString name, ) { - return _id_valueOf( - _class, const $JsonParser_FeatureType(), [name.reference.pointer]); + return _valueOf(_class.reference.pointer, _id_valueOf as jni.JMethodIDPtr, + name.reference.pointer) + .object(const $JsonParser_FeatureType()); } static final _id_collectDefaults = _class.staticMethodId( @@ -89,13 +113,27 @@ class JsonParser_Feature extends jni.JObject { r"()I", ); + static final _collectDefaults = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public int collectDefaults() /// /// Method that calculates bit set (flags) of all features that /// are enabled by default. ///@return Bit mask of all features that are enabled by default static int collectDefaults() { - return _id_collectDefaults(_class, const jni.jintType(), []); + return _collectDefaults( + _class.reference.pointer, _id_collectDefaults as jni.JMethodIDPtr) + .integer; } static final _id_enabledByDefault = _class.instanceMethodId( @@ -103,9 +141,23 @@ class JsonParser_Feature extends jni.JObject { r"()Z", ); + static final _enabledByDefault = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean enabledByDefault() bool enabledByDefault() { - return _id_enabledByDefault(this, const jni.jbooleanType(), []); + return _enabledByDefault( + reference.pointer, _id_enabledByDefault as jni.JMethodIDPtr) + .boolean; } static final _id_enabledIn = _class.instanceMethodId( @@ -113,12 +165,21 @@ class JsonParser_Feature extends jni.JObject { r"(I)Z", ); + static final _enabledIn = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: public boolean enabledIn(int flags) bool enabledIn( int flags, ) { - return _id_enabledIn( - this, const jni.jbooleanType(), [jni.JValueInt(flags)]); + return _enabledIn( + reference.pointer, _id_enabledIn as jni.JMethodIDPtr, flags) + .boolean; } static final _id_getMask = _class.instanceMethodId( @@ -126,9 +187,21 @@ class JsonParser_Feature extends jni.JObject { r"()I", ); + static final _getMask = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int getMask() int getMask() { - return _id_getMask(this, const jni.jintType(), []); + return _getMask(reference.pointer, _id_getMask as jni.JMethodIDPtr).integer; } } @@ -180,11 +253,23 @@ class JsonParser_NumberType extends jni.JObject { r"()[Lcom/fasterxml/jackson/core/JsonParser$NumberType;", ); + static final _values = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public com.fasterxml.jackson.core.JsonParser.NumberType[] values() /// The returned object must be released after use, by calling the [release] method. static jni.JArray values() { - return _id_values( - _class, const jni.JArrayType($JsonParser_NumberTypeType()), []); + return _values(_class.reference.pointer, _id_values as jni.JMethodIDPtr) + .object(const jni.JArrayType($JsonParser_NumberTypeType())); } static final _id_valueOf = _class.staticMethodId( @@ -192,13 +277,25 @@ class JsonParser_NumberType extends jni.JObject { r"(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonParser$NumberType;", ); + static final _valueOf = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: static public com.fasterxml.jackson.core.JsonParser.NumberType valueOf(java.lang.String name) /// The returned object must be released after use, by calling the [release] method. static JsonParser_NumberType valueOf( jni.JString name, ) { - return _id_valueOf( - _class, const $JsonParser_NumberTypeType(), [name.reference.pointer]); + return _valueOf(_class.reference.pointer, _id_valueOf as jni.JMethodIDPtr, + name.reference.pointer) + .object(const $JsonParser_NumberTypeType()); } } @@ -267,23 +364,46 @@ class JsonParser extends jni.JObject { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: protected void () /// The returned object must be released after use, by calling the [release] method. factory JsonParser() { - return JsonParser.fromReference(_id_new0(_class, referenceType, [])); + return JsonParser.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } static final _id_new1 = _class.constructorId( r"(I)V", ); + static final _new1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: protected void (int features) /// The returned object must be released after use, by calling the [release] method. factory JsonParser.new1( int features, ) { return JsonParser.fromReference( - _id_new1(_class, referenceType, [jni.JValueInt(features)])); + _new1(_class.reference.pointer, _id_new1 as jni.JMethodIDPtr, features) + .reference); } static final _id_getCodec = _class.instanceMethodId( @@ -291,6 +411,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/ObjectCodec;", ); + static final _getCodec = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract com.fasterxml.jackson.core.ObjectCodec getCodec() /// The returned object must be released after use, by calling the [release] method. /// @@ -299,7 +431,8 @@ class JsonParser extends jni.JObject { /// method (and its variants). ///@return Codec assigned to this parser, if any; {@code null} if none jni.JObject getCodec() { - return _id_getCodec(this, const jni.JObjectType(), []); + return _getCodec(reference.pointer, _id_getCodec as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_setCodec = _class.instanceMethodId( @@ -307,6 +440,17 @@ class JsonParser extends jni.JObject { r"(Lcom/fasterxml/jackson/core/ObjectCodec;)V", ); + static final _setCodec = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public abstract void setCodec(com.fasterxml.jackson.core.ObjectCodec oc) /// /// Setter that allows defining ObjectCodec associated with this @@ -316,7 +460,9 @@ class JsonParser extends jni.JObject { void setCodec( jni.JObject oc, ) { - _id_setCodec(this, const jni.jvoidType(), [oc.reference.pointer]); + _setCodec(reference.pointer, _id_setCodec as jni.JMethodIDPtr, + oc.reference.pointer) + .check(); } static final _id_getInputSource = _class.instanceMethodId( @@ -324,6 +470,18 @@ class JsonParser extends jni.JObject { r"()Ljava/lang/Object;", ); + static final _getInputSource = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.Object getInputSource() /// The returned object must be released after use, by calling the [release] method. /// @@ -342,7 +500,9 @@ class JsonParser extends jni.JObject { /// "last effort", i.e. only used if no other mechanism is applicable. ///@return Input source this parser was configured with jni.JObject getInputSource() { - return _id_getInputSource(this, const jni.JObjectType(), []); + return _getInputSource( + reference.pointer, _id_getInputSource as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_setRequestPayloadOnError = _class.instanceMethodId( @@ -350,6 +510,17 @@ class JsonParser extends jni.JObject { r"(Lcom/fasterxml/jackson/core/util/RequestPayload;)V", ); + static final _setRequestPayloadOnError = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public void setRequestPayloadOnError(com.fasterxml.jackson.core.util.RequestPayload payload) /// /// Sets the payload to be passed if JsonParseException is thrown. @@ -358,8 +529,11 @@ class JsonParser extends jni.JObject { void setRequestPayloadOnError( jni.JObject payload, ) { - _id_setRequestPayloadOnError( - this, const jni.jvoidType(), [payload.reference.pointer]); + _setRequestPayloadOnError( + reference.pointer, + _id_setRequestPayloadOnError as jni.JMethodIDPtr, + payload.reference.pointer) + .check(); } static final _id_setRequestPayloadOnError1 = _class.instanceMethodId( @@ -367,6 +541,20 @@ class JsonParser extends jni.JObject { r"([BLjava/lang/String;)V", ); + static final _setRequestPayloadOnError1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); + /// from: public void setRequestPayloadOnError(byte[] payload, java.lang.String charset) /// /// Sets the byte[] request payload and the charset @@ -377,8 +565,12 @@ class JsonParser extends jni.JObject { jni.JArray payload, jni.JString charset, ) { - _id_setRequestPayloadOnError1(this, const jni.jvoidType(), - [payload.reference.pointer, charset.reference.pointer]); + _setRequestPayloadOnError1( + reference.pointer, + _id_setRequestPayloadOnError1 as jni.JMethodIDPtr, + payload.reference.pointer, + charset.reference.pointer) + .check(); } static final _id_setRequestPayloadOnError2 = _class.instanceMethodId( @@ -386,6 +578,17 @@ class JsonParser extends jni.JObject { r"(Ljava/lang/String;)V", ); + static final _setRequestPayloadOnError2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public void setRequestPayloadOnError(java.lang.String payload) /// /// Sets the String request payload @@ -394,8 +597,11 @@ class JsonParser extends jni.JObject { void setRequestPayloadOnError2( jni.JString payload, ) { - _id_setRequestPayloadOnError2( - this, const jni.jvoidType(), [payload.reference.pointer]); + _setRequestPayloadOnError2( + reference.pointer, + _id_setRequestPayloadOnError2 as jni.JMethodIDPtr, + payload.reference.pointer) + .check(); } static final _id_setSchema = _class.instanceMethodId( @@ -403,6 +609,17 @@ class JsonParser extends jni.JObject { r"(Lcom/fasterxml/jackson/core/FormatSchema;)V", ); + static final _setSchema = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public void setSchema(com.fasterxml.jackson.core.FormatSchema schema) /// /// Method to call to make this parser use specified schema. Method must @@ -418,7 +635,9 @@ class JsonParser extends jni.JObject { void setSchema( jni.JObject schema, ) { - _id_setSchema(this, const jni.jvoidType(), [schema.reference.pointer]); + _setSchema(reference.pointer, _id_setSchema as jni.JMethodIDPtr, + schema.reference.pointer) + .check(); } static final _id_getSchema = _class.instanceMethodId( @@ -426,6 +645,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/FormatSchema;", ); + static final _getSchema = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.fasterxml.jackson.core.FormatSchema getSchema() /// The returned object must be released after use, by calling the [release] method. /// @@ -434,7 +665,8 @@ class JsonParser extends jni.JObject { ///@return Schema in use by this parser, if any; {@code null} if none ///@since 2.1 jni.JObject getSchema() { - return _id_getSchema(this, const jni.JObjectType(), []); + return _getSchema(reference.pointer, _id_getSchema as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_canUseSchema = _class.instanceMethodId( @@ -442,6 +674,17 @@ class JsonParser extends jni.JObject { r"(Lcom/fasterxml/jackson/core/FormatSchema;)Z", ); + static final _canUseSchema = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public boolean canUseSchema(com.fasterxml.jackson.core.FormatSchema schema) /// /// Method that can be used to verify that given schema can be used with @@ -451,8 +694,9 @@ class JsonParser extends jni.JObject { bool canUseSchema( jni.JObject schema, ) { - return _id_canUseSchema( - this, const jni.jbooleanType(), [schema.reference.pointer]); + return _canUseSchema(reference.pointer, + _id_canUseSchema as jni.JMethodIDPtr, schema.reference.pointer) + .boolean; } static final _id_requiresCustomCodec = _class.instanceMethodId( @@ -460,6 +704,18 @@ class JsonParser extends jni.JObject { r"()Z", ); + static final _requiresCustomCodec = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean requiresCustomCodec() /// /// Method that can be called to determine if a custom @@ -471,7 +727,9 @@ class JsonParser extends jni.JObject { /// ObjectCodec is enough ///@since 2.1 bool requiresCustomCodec() { - return _id_requiresCustomCodec(this, const jni.jbooleanType(), []); + return _requiresCustomCodec( + reference.pointer, _id_requiresCustomCodec as jni.JMethodIDPtr) + .boolean; } static final _id_canParseAsync = _class.instanceMethodId( @@ -479,6 +737,18 @@ class JsonParser extends jni.JObject { r"()Z", ); + static final _canParseAsync = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean canParseAsync() /// /// Method that can be called to determine if this parser instance @@ -493,7 +763,9 @@ class JsonParser extends jni.JObject { ///@return True if this is a non-blocking ("asynchronous") parser ///@since 2.9 bool canParseAsync() { - return _id_canParseAsync(this, const jni.jbooleanType(), []); + return _canParseAsync( + reference.pointer, _id_canParseAsync as jni.JMethodIDPtr) + .boolean; } static final _id_getNonBlockingInputFeeder = _class.instanceMethodId( @@ -501,6 +773,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/async/NonBlockingInputFeeder;", ); + static final _getNonBlockingInputFeeder = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.fasterxml.jackson.core.async.NonBlockingInputFeeder getNonBlockingInputFeeder() /// The returned object must be released after use, by calling the [release] method. /// @@ -510,7 +794,9 @@ class JsonParser extends jni.JObject { ///@return Input feeder to use with non-blocking (async) parsing ///@since 2.9 jni.JObject getNonBlockingInputFeeder() { - return _id_getNonBlockingInputFeeder(this, const jni.JObjectType(), []); + return _getNonBlockingInputFeeder(reference.pointer, + _id_getNonBlockingInputFeeder as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_getReadCapabilities = _class.instanceMethodId( @@ -518,6 +804,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/util/JacksonFeatureSet;", ); + static final _getReadCapabilities = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.fasterxml.jackson.core.util.JacksonFeatureSet getReadCapabilities() /// The returned object must be released after use, by calling the [release] method. /// @@ -526,7 +824,9 @@ class JsonParser extends jni.JObject { ///@return Set of read capabilities for content to read via this parser ///@since 2.12 jni.JObject getReadCapabilities() { - return _id_getReadCapabilities(this, const jni.JObjectType(), []); + return _getReadCapabilities( + reference.pointer, _id_getReadCapabilities as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_version = _class.instanceMethodId( @@ -534,6 +834,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/Version;", ); + static final _version = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract com.fasterxml.jackson.core.Version version() /// The returned object must be released after use, by calling the [release] method. /// @@ -542,7 +854,8 @@ class JsonParser extends jni.JObject { ///@return Version of this generator (derived from version declared for /// {@code jackson-core} jar that contains the class jni.JObject version() { - return _id_version(this, const jni.JObjectType(), []); + return _version(reference.pointer, _id_version as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_close = _class.instanceMethodId( @@ -550,6 +863,18 @@ class JsonParser extends jni.JObject { r"()V", ); + static final _close = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract void close() /// /// Closes the parser so that no further iteration or data access @@ -567,7 +892,7 @@ class JsonParser extends jni.JObject { /// stream or reader it does own them. ///@throws IOException if there is either an underlying I/O problem void close() { - _id_close(this, const jni.jvoidType(), []); + _close(reference.pointer, _id_close as jni.JMethodIDPtr).check(); } static final _id_isClosed = _class.instanceMethodId( @@ -575,6 +900,18 @@ class JsonParser extends jni.JObject { r"()Z", ); + static final _isClosed = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract boolean isClosed() /// /// Method that can be called to determine whether this parser @@ -585,7 +922,8 @@ class JsonParser extends jni.JObject { /// end of input. ///@return {@code True} if this parser instance has been closed bool isClosed() { - return _id_isClosed(this, const jni.jbooleanType(), []); + return _isClosed(reference.pointer, _id_isClosed as jni.JMethodIDPtr) + .boolean; } static final _id_getParsingContext = _class.instanceMethodId( @@ -593,6 +931,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/JsonStreamContext;", ); + static final _getParsingContext = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract com.fasterxml.jackson.core.JsonStreamContext getParsingContext() /// The returned object must be released after use, by calling the [release] method. /// @@ -606,7 +956,9 @@ class JsonParser extends jni.JObject { /// input, if so desired. ///@return Stream input context (JsonStreamContext) associated with this parser jni.JObject getParsingContext() { - return _id_getParsingContext(this, const jni.JObjectType(), []); + return _getParsingContext( + reference.pointer, _id_getParsingContext as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_currentLocation = _class.instanceMethodId( @@ -614,6 +966,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/JsonLocation;", ); + static final _currentLocation = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.fasterxml.jackson.core.JsonLocation currentLocation() /// The returned object must be released after use, by calling the [release] method. /// @@ -630,7 +994,9 @@ class JsonParser extends jni.JObject { ///@return Location of the last processed input unit (byte or character) ///@since 2.13 jni.JObject currentLocation() { - return _id_currentLocation(this, const jni.JObjectType(), []); + return _currentLocation( + reference.pointer, _id_currentLocation as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_currentTokenLocation = _class.instanceMethodId( @@ -638,6 +1004,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/JsonLocation;", ); + static final _currentTokenLocation = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.fasterxml.jackson.core.JsonLocation currentTokenLocation() /// The returned object must be released after use, by calling the [release] method. /// @@ -654,7 +1032,9 @@ class JsonParser extends jni.JObject { ///@return Starting location of the token parser currently points to ///@since 2.13 (will eventually replace \#getTokenLocation) jni.JObject currentTokenLocation() { - return _id_currentTokenLocation(this, const jni.JObjectType(), []); + return _currentTokenLocation( + reference.pointer, _id_currentTokenLocation as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_getCurrentLocation = _class.instanceMethodId( @@ -662,6 +1042,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/JsonLocation;", ); + static final _getCurrentLocation = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract com.fasterxml.jackson.core.JsonLocation getCurrentLocation() /// The returned object must be released after use, by calling the [release] method. /// @@ -669,7 +1061,9 @@ class JsonParser extends jni.JObject { /// Jackson 2.x versions (and removed from Jackson 3.0). ///@return Location of the last processed input unit (byte or character) jni.JObject getCurrentLocation() { - return _id_getCurrentLocation(this, const jni.JObjectType(), []); + return _getCurrentLocation( + reference.pointer, _id_getCurrentLocation as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_getTokenLocation = _class.instanceMethodId( @@ -677,6 +1071,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/JsonLocation;", ); + static final _getTokenLocation = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract com.fasterxml.jackson.core.JsonLocation getTokenLocation() /// The returned object must be released after use, by calling the [release] method. /// @@ -684,7 +1090,9 @@ class JsonParser extends jni.JObject { /// Jackson 2.x versions (and removed from Jackson 3.0). ///@return Starting location of the token parser currently points to jni.JObject getTokenLocation() { - return _id_getTokenLocation(this, const jni.JObjectType(), []); + return _getTokenLocation( + reference.pointer, _id_getTokenLocation as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_currentValue = _class.instanceMethodId( @@ -692,6 +1100,18 @@ class JsonParser extends jni.JObject { r"()Ljava/lang/Object;", ); + static final _currentValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.Object currentValue() /// The returned object must be released after use, by calling the [release] method. /// @@ -707,7 +1127,9 @@ class JsonParser extends jni.JObject { ///@return "Current value" associated with the current input context (state) of this parser ///@since 2.13 (added as replacement for older \#getCurrentValue() jni.JObject currentValue() { - return _id_currentValue(this, const jni.JObjectType(), []); + return _currentValue( + reference.pointer, _id_currentValue as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_assignCurrentValue = _class.instanceMethodId( @@ -715,6 +1137,17 @@ class JsonParser extends jni.JObject { r"(Ljava/lang/Object;)V", ); + static final _assignCurrentValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public void assignCurrentValue(java.lang.Object v) /// /// Helper method, usually equivalent to: @@ -726,7 +1159,9 @@ class JsonParser extends jni.JObject { void assignCurrentValue( jni.JObject v, ) { - _id_assignCurrentValue(this, const jni.jvoidType(), [v.reference.pointer]); + _assignCurrentValue(reference.pointer, + _id_assignCurrentValue as jni.JMethodIDPtr, v.reference.pointer) + .check(); } static final _id_getCurrentValue = _class.instanceMethodId( @@ -734,6 +1169,18 @@ class JsonParser extends jni.JObject { r"()Ljava/lang/Object;", ); + static final _getCurrentValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.Object getCurrentValue() /// The returned object must be released after use, by calling the [release] method. /// @@ -741,7 +1188,9 @@ class JsonParser extends jni.JObject { /// Jackson 2.x versions (and removed from Jackson 3.0). ///@return Location of the last processed input unit (byte or character) jni.JObject getCurrentValue() { - return _id_getCurrentValue(this, const jni.JObjectType(), []); + return _getCurrentValue( + reference.pointer, _id_getCurrentValue as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_setCurrentValue = _class.instanceMethodId( @@ -749,6 +1198,17 @@ class JsonParser extends jni.JObject { r"(Ljava/lang/Object;)V", ); + static final _setCurrentValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public void setCurrentValue(java.lang.Object v) /// /// Alias for \#assignCurrentValue, to be deprecated in later @@ -757,7 +1217,9 @@ class JsonParser extends jni.JObject { void setCurrentValue( jni.JObject v, ) { - _id_setCurrentValue(this, const jni.jvoidType(), [v.reference.pointer]); + _setCurrentValue(reference.pointer, _id_setCurrentValue as jni.JMethodIDPtr, + v.reference.pointer) + .check(); } static final _id_releaseBuffered = _class.instanceMethodId( @@ -765,6 +1227,17 @@ class JsonParser extends jni.JObject { r"(Ljava/io/OutputStream;)I", ); + static final _releaseBuffered = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public int releaseBuffered(java.io.OutputStream out) /// /// Method that can be called to push back any content that @@ -781,8 +1254,9 @@ class JsonParser extends jni.JObject { int releaseBuffered( jni.JObject out, ) { - return _id_releaseBuffered( - this, const jni.jintType(), [out.reference.pointer]); + return _releaseBuffered(reference.pointer, + _id_releaseBuffered as jni.JMethodIDPtr, out.reference.pointer) + .integer; } static final _id_releaseBuffered1 = _class.instanceMethodId( @@ -790,6 +1264,17 @@ class JsonParser extends jni.JObject { r"(Ljava/io/Writer;)I", ); + static final _releaseBuffered1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public int releaseBuffered(java.io.Writer w) /// /// Method that can be called to push back any content that @@ -807,8 +1292,9 @@ class JsonParser extends jni.JObject { int releaseBuffered1( jni.JObject w, ) { - return _id_releaseBuffered1( - this, const jni.jintType(), [w.reference.pointer]); + return _releaseBuffered1(reference.pointer, + _id_releaseBuffered1 as jni.JMethodIDPtr, w.reference.pointer) + .integer; } static final _id_enable = _class.instanceMethodId( @@ -816,6 +1302,17 @@ class JsonParser extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonParser$Feature;)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _enable = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser enable(com.fasterxml.jackson.core.JsonParser.Feature f) /// The returned object must be released after use, by calling the [release] method. /// @@ -826,7 +1323,9 @@ class JsonParser extends jni.JObject { JsonParser enable( JsonParser_Feature f, ) { - return _id_enable(this, const $JsonParserType(), [f.reference.pointer]); + return _enable(reference.pointer, _id_enable as jni.JMethodIDPtr, + f.reference.pointer) + .object(const $JsonParserType()); } static final _id_disable = _class.instanceMethodId( @@ -834,6 +1333,17 @@ class JsonParser extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonParser$Feature;)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _disable = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.fasterxml.jackson.core.JsonParser disable(com.fasterxml.jackson.core.JsonParser.Feature f) /// The returned object must be released after use, by calling the [release] method. /// @@ -844,7 +1354,9 @@ class JsonParser extends jni.JObject { JsonParser disable( JsonParser_Feature f, ) { - return _id_disable(this, const $JsonParserType(), [f.reference.pointer]); + return _disable(reference.pointer, _id_disable as jni.JMethodIDPtr, + f.reference.pointer) + .object(const $JsonParserType()); } static final _id_configure = _class.instanceMethodId( @@ -852,6 +1364,17 @@ class JsonParser extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonParser$Feature;Z)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _configure = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer, ffi.Int64)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, int)>(); + /// from: public com.fasterxml.jackson.core.JsonParser configure(com.fasterxml.jackson.core.JsonParser.Feature f, boolean state) /// The returned object must be released after use, by calling the [release] method. /// @@ -864,8 +1387,9 @@ class JsonParser extends jni.JObject { JsonParser_Feature f, bool state, ) { - return _id_configure( - this, const $JsonParserType(), [f.reference.pointer, state ? 1 : 0]); + return _configure(reference.pointer, _id_configure as jni.JMethodIDPtr, + f.reference.pointer, state ? 1 : 0) + .object(const $JsonParserType()); } static final _id_isEnabled = _class.instanceMethodId( @@ -873,6 +1397,17 @@ class JsonParser extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonParser$Feature;)Z", ); + static final _isEnabled = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public boolean isEnabled(com.fasterxml.jackson.core.JsonParser.Feature f) /// /// Method for checking whether specified Feature is enabled. @@ -881,7 +1416,9 @@ class JsonParser extends jni.JObject { bool isEnabled( JsonParser_Feature f, ) { - return _id_isEnabled(this, const jni.jbooleanType(), [f.reference.pointer]); + return _isEnabled(reference.pointer, _id_isEnabled as jni.JMethodIDPtr, + f.reference.pointer) + .boolean; } static final _id_isEnabled1 = _class.instanceMethodId( @@ -889,6 +1426,17 @@ class JsonParser extends jni.JObject { r"(Lcom/fasterxml/jackson/core/StreamReadFeature;)Z", ); + static final _isEnabled1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public boolean isEnabled(com.fasterxml.jackson.core.StreamReadFeature f) /// /// Method for checking whether specified Feature is enabled. @@ -898,8 +1446,9 @@ class JsonParser extends jni.JObject { bool isEnabled1( jni.JObject f, ) { - return _id_isEnabled1( - this, const jni.jbooleanType(), [f.reference.pointer]); + return _isEnabled1(reference.pointer, _id_isEnabled1 as jni.JMethodIDPtr, + f.reference.pointer) + .boolean; } static final _id_getFeatureMask = _class.instanceMethodId( @@ -907,13 +1456,27 @@ class JsonParser extends jni.JObject { r"()I", ); + static final _getFeatureMask = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int getFeatureMask() /// /// Bulk access method for getting state of all standard Features. ///@return Bit mask that defines current states of all standard Features. ///@since 2.3 int getFeatureMask() { - return _id_getFeatureMask(this, const jni.jintType(), []); + return _getFeatureMask( + reference.pointer, _id_getFeatureMask as jni.JMethodIDPtr) + .integer; } static final _id_setFeatureMask = _class.instanceMethodId( @@ -921,6 +1484,14 @@ class JsonParser extends jni.JObject { r"(I)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _setFeatureMask = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: public com.fasterxml.jackson.core.JsonParser setFeatureMask(int mask) /// The returned object must be released after use, by calling the [release] method. /// @@ -932,8 +1503,9 @@ class JsonParser extends jni.JObject { JsonParser setFeatureMask( int mask, ) { - return _id_setFeatureMask( - this, const $JsonParserType(), [jni.JValueInt(mask)]); + return _setFeatureMask( + reference.pointer, _id_setFeatureMask as jni.JMethodIDPtr, mask) + .object(const $JsonParserType()); } static final _id_overrideStdFeatures = _class.instanceMethodId( @@ -941,6 +1513,15 @@ class JsonParser extends jni.JObject { r"(II)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _overrideStdFeatures = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, + jni.JMethodIDPtr, ffi.VarArgs<(ffi.Int64, ffi.Int64)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int, int)>(); + /// from: public com.fasterxml.jackson.core.JsonParser overrideStdFeatures(int values, int mask) /// The returned object must be released after use, by calling the [release] method. /// @@ -960,8 +1541,9 @@ class JsonParser extends jni.JObject { int values, int mask, ) { - return _id_overrideStdFeatures(this, const $JsonParserType(), - [jni.JValueInt(values), jni.JValueInt(mask)]); + return _overrideStdFeatures(reference.pointer, + _id_overrideStdFeatures as jni.JMethodIDPtr, values, mask) + .object(const $JsonParserType()); } static final _id_getFormatFeatures = _class.instanceMethodId( @@ -969,6 +1551,18 @@ class JsonParser extends jni.JObject { r"()I", ); + static final _getFormatFeatures = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int getFormatFeatures() /// /// Bulk access method for getting state of all FormatFeatures, format-specific @@ -976,7 +1570,9 @@ class JsonParser extends jni.JObject { ///@return Bit mask that defines current states of all standard FormatFeatures. ///@since 2.6 int getFormatFeatures() { - return _id_getFormatFeatures(this, const jni.jintType(), []); + return _getFormatFeatures( + reference.pointer, _id_getFormatFeatures as jni.JMethodIDPtr) + .integer; } static final _id_overrideFormatFeatures = _class.instanceMethodId( @@ -984,6 +1580,15 @@ class JsonParser extends jni.JObject { r"(II)Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _overrideFormatFeatures = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, + jni.JMethodIDPtr, ffi.VarArgs<(ffi.Int64, ffi.Int64)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int, int)>(); + /// from: public com.fasterxml.jackson.core.JsonParser overrideFormatFeatures(int values, int mask) /// The returned object must be released after use, by calling the [release] method. /// @@ -1001,8 +1606,9 @@ class JsonParser extends jni.JObject { int values, int mask, ) { - return _id_overrideFormatFeatures(this, const $JsonParserType(), - [jni.JValueInt(values), jni.JValueInt(mask)]); + return _overrideFormatFeatures(reference.pointer, + _id_overrideFormatFeatures as jni.JMethodIDPtr, values, mask) + .object(const $JsonParserType()); } static final _id_nextToken = _class.instanceMethodId( @@ -1010,6 +1616,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/JsonToken;", ); + static final _nextToken = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract com.fasterxml.jackson.core.JsonToken nextToken() /// The returned object must be released after use, by calling the [release] method. /// @@ -1022,7 +1640,8 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems jsontoken_.JsonToken nextToken() { - return _id_nextToken(this, const jsontoken_.$JsonTokenType(), []); + return _nextToken(reference.pointer, _id_nextToken as jni.JMethodIDPtr) + .object(const jsontoken_.$JsonTokenType()); } static final _id_nextValue = _class.instanceMethodId( @@ -1030,6 +1649,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/JsonToken;", ); + static final _nextValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract com.fasterxml.jackson.core.JsonToken nextValue() /// The returned object must be released after use, by calling the [release] method. /// @@ -1050,7 +1681,8 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems jsontoken_.JsonToken nextValue() { - return _id_nextValue(this, const jsontoken_.$JsonTokenType(), []); + return _nextValue(reference.pointer, _id_nextValue as jni.JMethodIDPtr) + .object(const jsontoken_.$JsonTokenType()); } static final _id_nextFieldName = _class.instanceMethodId( @@ -1058,6 +1690,17 @@ class JsonParser extends jni.JObject { r"(Lcom/fasterxml/jackson/core/SerializableString;)Z", ); + static final _nextFieldName = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public boolean nextFieldName(com.fasterxml.jackson.core.SerializableString str) /// /// Method that fetches next token (as if calling \#nextToken) and @@ -1078,8 +1721,9 @@ class JsonParser extends jni.JObject { bool nextFieldName( jni.JObject str, ) { - return _id_nextFieldName( - this, const jni.jbooleanType(), [str.reference.pointer]); + return _nextFieldName(reference.pointer, + _id_nextFieldName as jni.JMethodIDPtr, str.reference.pointer) + .boolean; } static final _id_nextFieldName1 = _class.instanceMethodId( @@ -1087,6 +1731,18 @@ class JsonParser extends jni.JObject { r"()Ljava/lang/String;", ); + static final _nextFieldName1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.String nextFieldName() /// The returned object must be released after use, by calling the [release] method. /// @@ -1099,7 +1755,9 @@ class JsonParser extends jni.JObject { /// JsonParseException for decoding problems ///@since 2.5 jni.JString nextFieldName1() { - return _id_nextFieldName1(this, const jni.JStringType(), []); + return _nextFieldName1( + reference.pointer, _id_nextFieldName1 as jni.JMethodIDPtr) + .object(const jni.JStringType()); } static final _id_nextTextValue = _class.instanceMethodId( @@ -1107,6 +1765,18 @@ class JsonParser extends jni.JObject { r"()Ljava/lang/String;", ); + static final _nextTextValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.String nextTextValue() /// The returned object must be released after use, by calling the [release] method. /// @@ -1124,7 +1794,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems jni.JString nextTextValue() { - return _id_nextTextValue(this, const jni.JStringType(), []); + return _nextTextValue( + reference.pointer, _id_nextTextValue as jni.JMethodIDPtr) + .object(const jni.JStringType()); } static final _id_nextIntValue = _class.instanceMethodId( @@ -1132,6 +1804,14 @@ class JsonParser extends jni.JObject { r"(I)I", ); + static final _nextIntValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: public int nextIntValue(int defaultValue) /// /// Method that fetches next token (as if calling \#nextToken) and @@ -1154,8 +1834,9 @@ class JsonParser extends jni.JObject { int nextIntValue( int defaultValue, ) { - return _id_nextIntValue( - this, const jni.jintType(), [jni.JValueInt(defaultValue)]); + return _nextIntValue(reference.pointer, + _id_nextIntValue as jni.JMethodIDPtr, defaultValue) + .integer; } static final _id_nextLongValue = _class.instanceMethodId( @@ -1163,6 +1844,14 @@ class JsonParser extends jni.JObject { r"(J)J", ); + static final _nextLongValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallLongMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: public long nextLongValue(long defaultValue) /// /// Method that fetches next token (as if calling \#nextToken) and @@ -1185,7 +1874,9 @@ class JsonParser extends jni.JObject { int nextLongValue( int defaultValue, ) { - return _id_nextLongValue(this, const jni.jlongType(), [defaultValue]); + return _nextLongValue(reference.pointer, + _id_nextLongValue as jni.JMethodIDPtr, defaultValue) + .long; } static final _id_nextBooleanValue = _class.instanceMethodId( @@ -1193,6 +1884,18 @@ class JsonParser extends jni.JObject { r"()Ljava/lang/Boolean;", ); + static final _nextBooleanValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.Boolean nextBooleanValue() /// The returned object must be released after use, by calling the [release] method. /// @@ -1213,7 +1916,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems jni.JBoolean nextBooleanValue() { - return _id_nextBooleanValue(this, const jni.JBooleanType(), []); + return _nextBooleanValue( + reference.pointer, _id_nextBooleanValue as jni.JMethodIDPtr) + .object(const jni.JBooleanType()); } static final _id_skipChildren = _class.instanceMethodId( @@ -1221,6 +1926,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/JsonParser;", ); + static final _skipChildren = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract com.fasterxml.jackson.core.JsonParser skipChildren() /// The returned object must be released after use, by calling the [release] method. /// @@ -1240,7 +1957,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems JsonParser skipChildren() { - return _id_skipChildren(this, const $JsonParserType(), []); + return _skipChildren( + reference.pointer, _id_skipChildren as jni.JMethodIDPtr) + .object(const $JsonParserType()); } static final _id_finishToken = _class.instanceMethodId( @@ -1248,6 +1967,18 @@ class JsonParser extends jni.JObject { r"()V", ); + static final _finishToken = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void finishToken() /// /// Method that may be used to force full handling of the current token @@ -1264,7 +1995,8 @@ class JsonParser extends jni.JObject { /// JsonParseException for decoding problems ///@since 2.8 void finishToken() { - _id_finishToken(this, const jni.jvoidType(), []); + _finishToken(reference.pointer, _id_finishToken as jni.JMethodIDPtr) + .check(); } static final _id_currentToken = _class.instanceMethodId( @@ -1272,6 +2004,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/JsonToken;", ); + static final _currentToken = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.fasterxml.jackson.core.JsonToken currentToken() /// The returned object must be released after use, by calling the [release] method. /// @@ -1285,7 +2029,9 @@ class JsonParser extends jni.JObject { /// if the current token has been explicitly cleared. ///@since 2.8 jsontoken_.JsonToken currentToken() { - return _id_currentToken(this, const jsontoken_.$JsonTokenType(), []); + return _currentToken( + reference.pointer, _id_currentToken as jni.JMethodIDPtr) + .object(const jsontoken_.$JsonTokenType()); } static final _id_currentTokenId = _class.instanceMethodId( @@ -1293,6 +2039,18 @@ class JsonParser extends jni.JObject { r"()I", ); + static final _currentTokenId = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int currentTokenId() /// /// Method similar to \#getCurrentToken() but that returns an @@ -1305,7 +2063,9 @@ class JsonParser extends jni.JObject { ///@since 2.8 ///@return {@code int} matching one of constants from JsonTokenId. int currentTokenId() { - return _id_currentTokenId(this, const jni.jintType(), []); + return _currentTokenId( + reference.pointer, _id_currentTokenId as jni.JMethodIDPtr) + .integer; } static final _id_getCurrentToken = _class.instanceMethodId( @@ -1313,6 +2073,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/JsonToken;", ); + static final _getCurrentToken = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract com.fasterxml.jackson.core.JsonToken getCurrentToken() /// The returned object must be released after use, by calling the [release] method. /// @@ -1321,7 +2093,9 @@ class JsonParser extends jni.JObject { ///@return Type of the token this parser currently points to, /// if any: null before any tokens have been read, and jsontoken_.JsonToken getCurrentToken() { - return _id_getCurrentToken(this, const jsontoken_.$JsonTokenType(), []); + return _getCurrentToken( + reference.pointer, _id_getCurrentToken as jni.JMethodIDPtr) + .object(const jsontoken_.$JsonTokenType()); } static final _id_getCurrentTokenId = _class.instanceMethodId( @@ -1329,13 +2103,27 @@ class JsonParser extends jni.JObject { r"()I", ); + static final _getCurrentTokenId = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract int getCurrentTokenId() /// /// Deprecated alias for \#currentTokenId(). ///@return {@code int} matching one of constants from JsonTokenId. ///@deprecated Since 2.12 use \#currentTokenId instead int getCurrentTokenId() { - return _id_getCurrentTokenId(this, const jni.jintType(), []); + return _getCurrentTokenId( + reference.pointer, _id_getCurrentTokenId as jni.JMethodIDPtr) + .integer; } static final _id_hasCurrentToken = _class.instanceMethodId( @@ -1343,6 +2131,18 @@ class JsonParser extends jni.JObject { r"()Z", ); + static final _hasCurrentToken = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract boolean hasCurrentToken() /// /// Method for checking whether parser currently points to @@ -1354,7 +2154,9 @@ class JsonParser extends jni.JObject { /// and returned null from \#nextToken, or the token /// has been consumed) bool hasCurrentToken() { - return _id_hasCurrentToken(this, const jni.jbooleanType(), []); + return _hasCurrentToken( + reference.pointer, _id_hasCurrentToken as jni.JMethodIDPtr) + .boolean; } static final _id_hasTokenId = _class.instanceMethodId( @@ -1362,6 +2164,14 @@ class JsonParser extends jni.JObject { r"(I)Z", ); + static final _hasTokenId = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: public abstract boolean hasTokenId(int id) /// /// Method that is functionally equivalent to: @@ -1379,7 +2189,9 @@ class JsonParser extends jni.JObject { bool hasTokenId( int id, ) { - return _id_hasTokenId(this, const jni.jbooleanType(), [jni.JValueInt(id)]); + return _hasTokenId( + reference.pointer, _id_hasTokenId as jni.JMethodIDPtr, id) + .boolean; } static final _id_hasToken = _class.instanceMethodId( @@ -1387,6 +2199,17 @@ class JsonParser extends jni.JObject { r"(Lcom/fasterxml/jackson/core/JsonToken;)Z", ); + static final _hasToken = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public abstract boolean hasToken(com.fasterxml.jackson.core.JsonToken t) /// /// Method that is functionally equivalent to: @@ -1404,7 +2227,9 @@ class JsonParser extends jni.JObject { bool hasToken( jsontoken_.JsonToken t, ) { - return _id_hasToken(this, const jni.jbooleanType(), [t.reference.pointer]); + return _hasToken(reference.pointer, _id_hasToken as jni.JMethodIDPtr, + t.reference.pointer) + .boolean; } static final _id_isExpectedStartArrayToken = _class.instanceMethodId( @@ -1412,6 +2237,18 @@ class JsonParser extends jni.JObject { r"()Z", ); + static final _isExpectedStartArrayToken = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean isExpectedStartArrayToken() /// /// Specialized accessor that can be used to verify that the current @@ -1431,7 +2268,9 @@ class JsonParser extends jni.JObject { /// start-array marker (such JsonToken\#START_ARRAY); /// {@code false} if not bool isExpectedStartArrayToken() { - return _id_isExpectedStartArrayToken(this, const jni.jbooleanType(), []); + return _isExpectedStartArrayToken(reference.pointer, + _id_isExpectedStartArrayToken as jni.JMethodIDPtr) + .boolean; } static final _id_isExpectedStartObjectToken = _class.instanceMethodId( @@ -1439,6 +2278,18 @@ class JsonParser extends jni.JObject { r"()Z", ); + static final _isExpectedStartObjectToken = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean isExpectedStartObjectToken() /// /// Similar to \#isExpectedStartArrayToken(), but checks whether stream @@ -1448,7 +2299,9 @@ class JsonParser extends jni.JObject { /// {@code false} if not ///@since 2.5 bool isExpectedStartObjectToken() { - return _id_isExpectedStartObjectToken(this, const jni.jbooleanType(), []); + return _isExpectedStartObjectToken(reference.pointer, + _id_isExpectedStartObjectToken as jni.JMethodIDPtr) + .boolean; } static final _id_isExpectedNumberIntToken = _class.instanceMethodId( @@ -1456,6 +2309,18 @@ class JsonParser extends jni.JObject { r"()Z", ); + static final _isExpectedNumberIntToken = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean isExpectedNumberIntToken() /// /// Similar to \#isExpectedStartArrayToken(), but checks whether stream @@ -1468,7 +2333,9 @@ class JsonParser extends jni.JObject { /// {@code false} if not ///@since 2.12 bool isExpectedNumberIntToken() { - return _id_isExpectedNumberIntToken(this, const jni.jbooleanType(), []); + return _isExpectedNumberIntToken( + reference.pointer, _id_isExpectedNumberIntToken as jni.JMethodIDPtr) + .boolean; } static final _id_isNaN = _class.instanceMethodId( @@ -1476,6 +2343,18 @@ class JsonParser extends jni.JObject { r"()Z", ); + static final _isNaN = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean isNaN() /// /// Access for checking whether current token is a numeric value token, but @@ -1491,7 +2370,7 @@ class JsonParser extends jni.JObject { /// JsonParseException for decoding problems ///@since 2.9 bool isNaN() { - return _id_isNaN(this, const jni.jbooleanType(), []); + return _isNaN(reference.pointer, _id_isNaN as jni.JMethodIDPtr).boolean; } static final _id_clearCurrentToken = _class.instanceMethodId( @@ -1499,6 +2378,18 @@ class JsonParser extends jni.JObject { r"()V", ); + static final _clearCurrentToken = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract void clearCurrentToken() /// /// Method called to "consume" the current token by effectively @@ -1512,7 +2403,9 @@ class JsonParser extends jni.JObject { /// it has to be able to consume last token used for binding (so that /// it will not be used again). void clearCurrentToken() { - _id_clearCurrentToken(this, const jni.jvoidType(), []); + _clearCurrentToken( + reference.pointer, _id_clearCurrentToken as jni.JMethodIDPtr) + .check(); } static final _id_getLastClearedToken = _class.instanceMethodId( @@ -1520,6 +2413,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/JsonToken;", ); + static final _getLastClearedToken = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract com.fasterxml.jackson.core.JsonToken getLastClearedToken() /// The returned object must be released after use, by calling the [release] method. /// @@ -1530,7 +2435,9 @@ class JsonParser extends jni.JObject { /// or if parser has been closed. ///@return Last cleared token, if any; {@code null} otherwise jsontoken_.JsonToken getLastClearedToken() { - return _id_getLastClearedToken(this, const jsontoken_.$JsonTokenType(), []); + return _getLastClearedToken( + reference.pointer, _id_getLastClearedToken as jni.JMethodIDPtr) + .object(const jsontoken_.$JsonTokenType()); } static final _id_overrideCurrentName = _class.instanceMethodId( @@ -1538,6 +2445,17 @@ class JsonParser extends jni.JObject { r"(Ljava/lang/String;)V", ); + static final _overrideCurrentName = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public abstract void overrideCurrentName(java.lang.String name) /// /// Method that can be used to change what is considered to be @@ -1551,8 +2469,9 @@ class JsonParser extends jni.JObject { void overrideCurrentName( jni.JString name, ) { - _id_overrideCurrentName( - this, const jni.jvoidType(), [name.reference.pointer]); + _overrideCurrentName(reference.pointer, + _id_overrideCurrentName as jni.JMethodIDPtr, name.reference.pointer) + .check(); } static final _id_getCurrentName = _class.instanceMethodId( @@ -1560,6 +2479,18 @@ class JsonParser extends jni.JObject { r"()Ljava/lang/String;", ); + static final _getCurrentName = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract java.lang.String getCurrentName() /// The returned object must be released after use, by calling the [release] method. /// @@ -1568,7 +2499,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems jni.JString getCurrentName() { - return _id_getCurrentName(this, const jni.JStringType(), []); + return _getCurrentName( + reference.pointer, _id_getCurrentName as jni.JMethodIDPtr) + .object(const jni.JStringType()); } static final _id_currentName = _class.instanceMethodId( @@ -1576,6 +2509,18 @@ class JsonParser extends jni.JObject { r"()Ljava/lang/String;", ); + static final _currentName = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.String currentName() /// The returned object must be released after use, by calling the [release] method. /// @@ -1589,7 +2534,8 @@ class JsonParser extends jni.JObject { /// JsonParseException for decoding problems ///@since 2.10 jni.JString currentName() { - return _id_currentName(this, const jni.JStringType(), []); + return _currentName(reference.pointer, _id_currentName as jni.JMethodIDPtr) + .object(const jni.JStringType()); } static final _id_getText = _class.instanceMethodId( @@ -1597,6 +2543,18 @@ class JsonParser extends jni.JObject { r"()Ljava/lang/String;", ); + static final _getText = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract java.lang.String getText() /// The returned object must be released after use, by calling the [release] method. /// @@ -1609,7 +2567,8 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems jni.JString getText() { - return _id_getText(this, const jni.JStringType(), []); + return _getText(reference.pointer, _id_getText as jni.JMethodIDPtr) + .object(const jni.JStringType()); } static final _id_getText1 = _class.instanceMethodId( @@ -1617,6 +2576,17 @@ class JsonParser extends jni.JObject { r"(Ljava/io/Writer;)I", ); + static final _getText1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public int getText(java.io.Writer writer) /// /// Method to read the textual representation of the current token in chunks and @@ -1637,7 +2607,9 @@ class JsonParser extends jni.JObject { int getText1( jni.JObject writer, ) { - return _id_getText1(this, const jni.jintType(), [writer.reference.pointer]); + return _getText1(reference.pointer, _id_getText1 as jni.JMethodIDPtr, + writer.reference.pointer) + .integer; } static final _id_getTextCharacters = _class.instanceMethodId( @@ -1645,6 +2617,18 @@ class JsonParser extends jni.JObject { r"()[C", ); + static final _getTextCharacters = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract char[] getTextCharacters() /// The returned object must be released after use, by calling the [release] method. /// @@ -1676,8 +2660,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems jni.JArray getTextCharacters() { - return _id_getTextCharacters( - this, const jni.JArrayType(jni.jcharType()), []); + return _getTextCharacters( + reference.pointer, _id_getTextCharacters as jni.JMethodIDPtr) + .object(const jni.JArrayType(jni.jcharType())); } static final _id_getTextLength = _class.instanceMethodId( @@ -1685,6 +2670,18 @@ class JsonParser extends jni.JObject { r"()I", ); + static final _getTextLength = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract int getTextLength() /// /// Accessor used with \#getTextCharacters, to know length @@ -1695,7 +2692,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems int getTextLength() { - return _id_getTextLength(this, const jni.jintType(), []); + return _getTextLength( + reference.pointer, _id_getTextLength as jni.JMethodIDPtr) + .integer; } static final _id_getTextOffset = _class.instanceMethodId( @@ -1703,6 +2702,18 @@ class JsonParser extends jni.JObject { r"()I", ); + static final _getTextOffset = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract int getTextOffset() /// /// Accessor used with \#getTextCharacters, to know offset @@ -1713,7 +2724,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems int getTextOffset() { - return _id_getTextOffset(this, const jni.jintType(), []); + return _getTextOffset( + reference.pointer, _id_getTextOffset as jni.JMethodIDPtr) + .integer; } static final _id_hasTextCharacters = _class.instanceMethodId( @@ -1721,6 +2734,18 @@ class JsonParser extends jni.JObject { r"()Z", ); + static final _hasTextCharacters = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract boolean hasTextCharacters() /// /// Method that can be used to determine whether calling of @@ -1738,7 +2763,9 @@ class JsonParser extends jni.JObject { /// be efficiently returned via \#getTextCharacters; false /// means that it may or may not exist bool hasTextCharacters() { - return _id_hasTextCharacters(this, const jni.jbooleanType(), []); + return _hasTextCharacters( + reference.pointer, _id_hasTextCharacters as jni.JMethodIDPtr) + .boolean; } static final _id_getNumberValue = _class.instanceMethodId( @@ -1746,6 +2773,18 @@ class JsonParser extends jni.JObject { r"()Ljava/lang/Number;", ); + static final _getNumberValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract java.lang.Number getNumberValue() /// The returned object must be released after use, by calling the [release] method. /// @@ -1760,7 +2799,9 @@ class JsonParser extends jni.JObject { /// (invalid format for numbers); plain IOException if underlying /// content read fails (possible if values are extracted lazily) jni.JNumber getNumberValue() { - return _id_getNumberValue(this, const jni.JNumberType(), []); + return _getNumberValue( + reference.pointer, _id_getNumberValue as jni.JMethodIDPtr) + .object(const jni.JNumberType()); } static final _id_getNumberValueExact = _class.instanceMethodId( @@ -1768,6 +2809,18 @@ class JsonParser extends jni.JObject { r"()Ljava/lang/Number;", ); + static final _getNumberValueExact = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.Number getNumberValueExact() /// The returned object must be released after use, by calling the [release] method. /// @@ -1786,7 +2839,9 @@ class JsonParser extends jni.JObject { /// content read fails (possible if values are extracted lazily) ///@since 2.12 jni.JNumber getNumberValueExact() { - return _id_getNumberValueExact(this, const jni.JNumberType(), []); + return _getNumberValueExact( + reference.pointer, _id_getNumberValueExact as jni.JMethodIDPtr) + .object(const jni.JNumberType()); } static final _id_getNumberType = _class.instanceMethodId( @@ -1794,6 +2849,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/JsonParser$NumberType;", ); + static final _getNumberType = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract com.fasterxml.jackson.core.JsonParser.NumberType getNumberType() /// The returned object must be released after use, by calling the [release] method. /// @@ -1805,7 +2872,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems JsonParser_NumberType getNumberType() { - return _id_getNumberType(this, const $JsonParser_NumberTypeType(), []); + return _getNumberType( + reference.pointer, _id_getNumberType as jni.JMethodIDPtr) + .object(const $JsonParser_NumberTypeType()); } static final _id_getByteValue = _class.instanceMethodId( @@ -1813,6 +2882,18 @@ class JsonParser extends jni.JObject { r"()B", ); + static final _getByteValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallByteMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public byte getByteValue() /// /// Numeric accessor that can be called when the current @@ -1837,7 +2918,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems int getByteValue() { - return _id_getByteValue(this, const jni.jbyteType(), []); + return _getByteValue( + reference.pointer, _id_getByteValue as jni.JMethodIDPtr) + .byte; } static final _id_getShortValue = _class.instanceMethodId( @@ -1845,6 +2928,18 @@ class JsonParser extends jni.JObject { r"()S", ); + static final _getShortValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallShortMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public short getShortValue() /// /// Numeric accessor that can be called when the current @@ -1863,7 +2958,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems int getShortValue() { - return _id_getShortValue(this, const jni.jshortType(), []); + return _getShortValue( + reference.pointer, _id_getShortValue as jni.JMethodIDPtr) + .short; } static final _id_getIntValue = _class.instanceMethodId( @@ -1871,6 +2968,18 @@ class JsonParser extends jni.JObject { r"()I", ); + static final _getIntValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract int getIntValue() /// /// Numeric accessor that can be called when the current @@ -1889,7 +2998,8 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems int getIntValue() { - return _id_getIntValue(this, const jni.jintType(), []); + return _getIntValue(reference.pointer, _id_getIntValue as jni.JMethodIDPtr) + .integer; } static final _id_getLongValue = _class.instanceMethodId( @@ -1897,6 +3007,18 @@ class JsonParser extends jni.JObject { r"()J", ); + static final _getLongValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallLongMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract long getLongValue() /// /// Numeric accessor that can be called when the current @@ -1915,7 +3037,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems int getLongValue() { - return _id_getLongValue(this, const jni.jlongType(), []); + return _getLongValue( + reference.pointer, _id_getLongValue as jni.JMethodIDPtr) + .long; } static final _id_getBigIntegerValue = _class.instanceMethodId( @@ -1923,6 +3047,18 @@ class JsonParser extends jni.JObject { r"()Ljava/math/BigInteger;", ); + static final _getBigIntegerValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract java.math.BigInteger getBigIntegerValue() /// The returned object must be released after use, by calling the [release] method. /// @@ -1938,7 +3074,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems jni.JObject getBigIntegerValue() { - return _id_getBigIntegerValue(this, const jni.JObjectType(), []); + return _getBigIntegerValue( + reference.pointer, _id_getBigIntegerValue as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_getFloatValue = _class.instanceMethodId( @@ -1946,6 +3084,18 @@ class JsonParser extends jni.JObject { r"()F", ); + static final _getFloatValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallFloatMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract float getFloatValue() /// /// Numeric accessor that can be called when the current @@ -1964,7 +3114,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems double getFloatValue() { - return _id_getFloatValue(this, const jni.jfloatType(), []); + return _getFloatValue( + reference.pointer, _id_getFloatValue as jni.JMethodIDPtr) + .float; } static final _id_getDoubleValue = _class.instanceMethodId( @@ -1972,6 +3124,18 @@ class JsonParser extends jni.JObject { r"()D", ); + static final _getDoubleValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallDoubleMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract double getDoubleValue() /// /// Numeric accessor that can be called when the current @@ -1990,7 +3154,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems double getDoubleValue() { - return _id_getDoubleValue(this, const jni.jdoubleType(), []); + return _getDoubleValue( + reference.pointer, _id_getDoubleValue as jni.JMethodIDPtr) + .doubleFloat; } static final _id_getDecimalValue = _class.instanceMethodId( @@ -1998,6 +3164,18 @@ class JsonParser extends jni.JObject { r"()Ljava/math/BigDecimal;", ); + static final _getDecimalValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract java.math.BigDecimal getDecimalValue() /// The returned object must be released after use, by calling the [release] method. /// @@ -2010,7 +3188,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems jni.JObject getDecimalValue() { - return _id_getDecimalValue(this, const jni.JObjectType(), []); + return _getDecimalValue( + reference.pointer, _id_getDecimalValue as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_getBooleanValue = _class.instanceMethodId( @@ -2018,6 +3198,18 @@ class JsonParser extends jni.JObject { r"()Z", ); + static final _getBooleanValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean getBooleanValue() /// /// Convenience accessor that can be called when the current @@ -2032,7 +3224,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems bool getBooleanValue() { - return _id_getBooleanValue(this, const jni.jbooleanType(), []); + return _getBooleanValue( + reference.pointer, _id_getBooleanValue as jni.JMethodIDPtr) + .boolean; } static final _id_getEmbeddedObject = _class.instanceMethodId( @@ -2040,6 +3234,18 @@ class JsonParser extends jni.JObject { r"()Ljava/lang/Object;", ); + static final _getEmbeddedObject = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.Object getEmbeddedObject() /// The returned object must be released after use, by calling the [release] method. /// @@ -2058,7 +3264,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems jni.JObject getEmbeddedObject() { - return _id_getEmbeddedObject(this, const jni.JObjectType(), []); + return _getEmbeddedObject( + reference.pointer, _id_getEmbeddedObject as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_getBinaryValue = _class.instanceMethodId( @@ -2066,6 +3274,17 @@ class JsonParser extends jni.JObject { r"(Lcom/fasterxml/jackson/core/Base64Variant;)[B", ); + static final _getBinaryValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public abstract byte[] getBinaryValue(com.fasterxml.jackson.core.Base64Variant bv) /// The returned object must be released after use, by calling the [release] method. /// @@ -2092,8 +3311,9 @@ class JsonParser extends jni.JObject { jni.JArray getBinaryValue( jni.JObject bv, ) { - return _id_getBinaryValue( - this, const jni.JArrayType(jni.jbyteType()), [bv.reference.pointer]); + return _getBinaryValue(reference.pointer, + _id_getBinaryValue as jni.JMethodIDPtr, bv.reference.pointer) + .object(const jni.JArrayType(jni.jbyteType())); } static final _id_getBinaryValue1 = _class.instanceMethodId( @@ -2101,6 +3321,18 @@ class JsonParser extends jni.JObject { r"()[B", ); + static final _getBinaryValue1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public byte[] getBinaryValue() /// The returned object must be released after use, by calling the [release] method. /// @@ -2111,7 +3343,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems jni.JArray getBinaryValue1() { - return _id_getBinaryValue1(this, const jni.JArrayType(jni.jbyteType()), []); + return _getBinaryValue1( + reference.pointer, _id_getBinaryValue1 as jni.JMethodIDPtr) + .object(const jni.JArrayType(jni.jbyteType())); } static final _id_readBinaryValue = _class.instanceMethodId( @@ -2119,6 +3353,17 @@ class JsonParser extends jni.JObject { r"(Ljava/io/OutputStream;)I", ); + static final _readBinaryValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public int readBinaryValue(java.io.OutputStream out) /// /// Method that can be used as an alternative to \#getBigIntegerValue(), @@ -2135,8 +3380,9 @@ class JsonParser extends jni.JObject { int readBinaryValue( jni.JObject out, ) { - return _id_readBinaryValue( - this, const jni.jintType(), [out.reference.pointer]); + return _readBinaryValue(reference.pointer, + _id_readBinaryValue as jni.JMethodIDPtr, out.reference.pointer) + .integer; } static final _id_readBinaryValue1 = _class.instanceMethodId( @@ -2144,6 +3390,20 @@ class JsonParser extends jni.JObject { r"(Lcom/fasterxml/jackson/core/Base64Variant;Ljava/io/OutputStream;)I", ); + static final _readBinaryValue1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); + /// from: public int readBinaryValue(com.fasterxml.jackson.core.Base64Variant bv, java.io.OutputStream out) /// /// Similar to \#readBinaryValue(OutputStream) but allows explicitly @@ -2158,8 +3418,12 @@ class JsonParser extends jni.JObject { jni.JObject bv, jni.JObject out, ) { - return _id_readBinaryValue1(this, const jni.jintType(), - [bv.reference.pointer, out.reference.pointer]); + return _readBinaryValue1( + reference.pointer, + _id_readBinaryValue1 as jni.JMethodIDPtr, + bv.reference.pointer, + out.reference.pointer) + .integer; } static final _id_getValueAsInt = _class.instanceMethodId( @@ -2167,6 +3431,18 @@ class JsonParser extends jni.JObject { r"()I", ); + static final _getValueAsInt = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int getValueAsInt() /// /// Method that will try to convert value of current token to a @@ -2183,7 +3459,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems int getValueAsInt() { - return _id_getValueAsInt(this, const jni.jintType(), []); + return _getValueAsInt( + reference.pointer, _id_getValueAsInt as jni.JMethodIDPtr) + .integer; } static final _id_getValueAsInt1 = _class.instanceMethodId( @@ -2191,6 +3469,14 @@ class JsonParser extends jni.JObject { r"(I)I", ); + static final _getValueAsInt1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: public int getValueAsInt(int def) /// /// Method that will try to convert value of current token to a @@ -2209,7 +3495,9 @@ class JsonParser extends jni.JObject { int getValueAsInt1( int def, ) { - return _id_getValueAsInt1(this, const jni.jintType(), [jni.JValueInt(def)]); + return _getValueAsInt1( + reference.pointer, _id_getValueAsInt1 as jni.JMethodIDPtr, def) + .integer; } static final _id_getValueAsLong = _class.instanceMethodId( @@ -2217,6 +3505,18 @@ class JsonParser extends jni.JObject { r"()J", ); + static final _getValueAsLong = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallLongMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public long getValueAsLong() /// /// Method that will try to convert value of current token to a @@ -2233,7 +3533,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems int getValueAsLong() { - return _id_getValueAsLong(this, const jni.jlongType(), []); + return _getValueAsLong( + reference.pointer, _id_getValueAsLong as jni.JMethodIDPtr) + .long; } static final _id_getValueAsLong1 = _class.instanceMethodId( @@ -2241,6 +3543,14 @@ class JsonParser extends jni.JObject { r"(J)J", ); + static final _getValueAsLong1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallLongMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: public long getValueAsLong(long def) /// /// Method that will try to convert value of current token to a @@ -2259,7 +3569,9 @@ class JsonParser extends jni.JObject { int getValueAsLong1( int def, ) { - return _id_getValueAsLong1(this, const jni.jlongType(), [def]); + return _getValueAsLong1( + reference.pointer, _id_getValueAsLong1 as jni.JMethodIDPtr, def) + .long; } static final _id_getValueAsDouble = _class.instanceMethodId( @@ -2267,6 +3579,18 @@ class JsonParser extends jni.JObject { r"()D", ); + static final _getValueAsDouble = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallDoubleMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public double getValueAsDouble() /// /// Method that will try to convert value of current token to a Java @@ -2283,7 +3607,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems double getValueAsDouble() { - return _id_getValueAsDouble(this, const jni.jdoubleType(), []); + return _getValueAsDouble( + reference.pointer, _id_getValueAsDouble as jni.JMethodIDPtr) + .doubleFloat; } static final _id_getValueAsDouble1 = _class.instanceMethodId( @@ -2291,6 +3617,14 @@ class JsonParser extends jni.JObject { r"(D)D", ); + static final _getValueAsDouble1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Double,)>)>>("globalEnv_CallDoubleMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, double)>(); + /// from: public double getValueAsDouble(double def) /// /// Method that will try to convert value of current token to a @@ -2309,7 +3643,9 @@ class JsonParser extends jni.JObject { double getValueAsDouble1( double def, ) { - return _id_getValueAsDouble1(this, const jni.jdoubleType(), [def]); + return _getValueAsDouble1( + reference.pointer, _id_getValueAsDouble1 as jni.JMethodIDPtr, def) + .doubleFloat; } static final _id_getValueAsBoolean = _class.instanceMethodId( @@ -2317,6 +3653,18 @@ class JsonParser extends jni.JObject { r"()Z", ); + static final _getValueAsBoolean = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean getValueAsBoolean() /// /// Method that will try to convert value of current token to a @@ -2333,7 +3681,9 @@ class JsonParser extends jni.JObject { ///@throws IOException for low-level read issues, or /// JsonParseException for decoding problems bool getValueAsBoolean() { - return _id_getValueAsBoolean(this, const jni.jbooleanType(), []); + return _getValueAsBoolean( + reference.pointer, _id_getValueAsBoolean as jni.JMethodIDPtr) + .boolean; } static final _id_getValueAsBoolean1 = _class.instanceMethodId( @@ -2341,6 +3691,14 @@ class JsonParser extends jni.JObject { r"(Z)Z", ); + static final _getValueAsBoolean1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: public boolean getValueAsBoolean(boolean def) /// /// Method that will try to convert value of current token to a @@ -2359,8 +3717,9 @@ class JsonParser extends jni.JObject { bool getValueAsBoolean1( bool def, ) { - return _id_getValueAsBoolean1( - this, const jni.jbooleanType(), [def ? 1 : 0]); + return _getValueAsBoolean1(reference.pointer, + _id_getValueAsBoolean1 as jni.JMethodIDPtr, def ? 1 : 0) + .boolean; } static final _id_getValueAsString = _class.instanceMethodId( @@ -2368,6 +3727,18 @@ class JsonParser extends jni.JObject { r"()Ljava/lang/String;", ); + static final _getValueAsString = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.String getValueAsString() /// The returned object must be released after use, by calling the [release] method. /// @@ -2383,7 +3754,9 @@ class JsonParser extends jni.JObject { /// JsonParseException for decoding problems ///@since 2.1 jni.JString getValueAsString() { - return _id_getValueAsString(this, const jni.JStringType(), []); + return _getValueAsString( + reference.pointer, _id_getValueAsString as jni.JMethodIDPtr) + .object(const jni.JStringType()); } static final _id_getValueAsString1 = _class.instanceMethodId( @@ -2391,6 +3764,17 @@ class JsonParser extends jni.JObject { r"(Ljava/lang/String;)Ljava/lang/String;", ); + static final _getValueAsString1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public abstract java.lang.String getValueAsString(java.lang.String def) /// The returned object must be released after use, by calling the [release] method. /// @@ -2409,8 +3793,9 @@ class JsonParser extends jni.JObject { jni.JString getValueAsString1( jni.JString def, ) { - return _id_getValueAsString1( - this, const jni.JStringType(), [def.reference.pointer]); + return _getValueAsString1(reference.pointer, + _id_getValueAsString1 as jni.JMethodIDPtr, def.reference.pointer) + .object(const jni.JStringType()); } static final _id_canReadObjectId = _class.instanceMethodId( @@ -2418,6 +3803,18 @@ class JsonParser extends jni.JObject { r"()Z", ); + static final _canReadObjectId = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean canReadObjectId() /// /// Introspection method that may be called to see if the underlying @@ -2432,7 +3829,9 @@ class JsonParser extends jni.JObject { /// {@code false} if not ///@since 2.3 bool canReadObjectId() { - return _id_canReadObjectId(this, const jni.jbooleanType(), []); + return _canReadObjectId( + reference.pointer, _id_canReadObjectId as jni.JMethodIDPtr) + .boolean; } static final _id_canReadTypeId = _class.instanceMethodId( @@ -2440,6 +3839,18 @@ class JsonParser extends jni.JObject { r"()Z", ); + static final _canReadTypeId = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean canReadTypeId() /// /// Introspection method that may be called to see if the underlying @@ -2454,7 +3865,9 @@ class JsonParser extends jni.JObject { /// {@code false} if not ///@since 2.3 bool canReadTypeId() { - return _id_canReadTypeId(this, const jni.jbooleanType(), []); + return _canReadTypeId( + reference.pointer, _id_canReadTypeId as jni.JMethodIDPtr) + .boolean; } static final _id_getObjectId = _class.instanceMethodId( @@ -2462,6 +3875,18 @@ class JsonParser extends jni.JObject { r"()Ljava/lang/Object;", ); + static final _getObjectId = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.Object getObjectId() /// The returned object must be released after use, by calling the [release] method. /// @@ -2479,7 +3904,8 @@ class JsonParser extends jni.JObject { /// JsonParseException for decoding problems ///@since 2.3 jni.JObject getObjectId() { - return _id_getObjectId(this, const jni.JObjectType(), []); + return _getObjectId(reference.pointer, _id_getObjectId as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_getTypeId = _class.instanceMethodId( @@ -2487,6 +3913,18 @@ class JsonParser extends jni.JObject { r"()Ljava/lang/Object;", ); + static final _getTypeId = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.Object getTypeId() /// The returned object must be released after use, by calling the [release] method. /// @@ -2504,7 +3942,8 @@ class JsonParser extends jni.JObject { /// JsonParseException for decoding problems ///@since 2.3 jni.JObject getTypeId() { - return _id_getTypeId(this, const jni.JObjectType(), []); + return _getTypeId(reference.pointer, _id_getTypeId as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_readValueAs = _class.instanceMethodId( @@ -2512,6 +3951,17 @@ class JsonParser extends jni.JObject { r"(Ljava/lang/Class;)Ljava/lang/Object;", ); + static final _readValueAs = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public T readValueAs(java.lang.Class valueType) /// The returned object must be released after use, by calling the [release] method. /// @@ -2544,7 +3994,9 @@ class JsonParser extends jni.JObject { jni.JObject valueType, { required jni.JObjType<$T> T, }) { - return _id_readValueAs(this, T, [valueType.reference.pointer]); + return _readValueAs(reference.pointer, _id_readValueAs as jni.JMethodIDPtr, + valueType.reference.pointer) + .object(T); } static final _id_readValueAs1 = _class.instanceMethodId( @@ -2552,6 +4004,17 @@ class JsonParser extends jni.JObject { r"(Lcom/fasterxml/jackson/core/type/TypeReference;)Ljava/lang/Object;", ); + static final _readValueAs1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public T readValueAs(com.fasterxml.jackson.core.type.TypeReference valueTypeRef) /// The returned object must be released after use, by calling the [release] method. /// @@ -2581,7 +4044,11 @@ class JsonParser extends jni.JObject { jni.JObject valueTypeRef, { required jni.JObjType<$T> T, }) { - return _id_readValueAs1(this, T, [valueTypeRef.reference.pointer]); + return _readValueAs1( + reference.pointer, + _id_readValueAs1 as jni.JMethodIDPtr, + valueTypeRef.reference.pointer) + .object(T); } static final _id_readValuesAs = _class.instanceMethodId( @@ -2589,6 +4056,17 @@ class JsonParser extends jni.JObject { r"(Ljava/lang/Class;)Ljava/util/Iterator;", ); + static final _readValuesAs = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public java.util.Iterator readValuesAs(java.lang.Class valueType) /// The returned object must be released after use, by calling the [release] method. /// @@ -2604,8 +4082,9 @@ class JsonParser extends jni.JObject { jni.JObject valueType, { required jni.JObjType<$T> T, }) { - return _id_readValuesAs( - this, jni.JIteratorType(T), [valueType.reference.pointer]); + return _readValuesAs(reference.pointer, + _id_readValuesAs as jni.JMethodIDPtr, valueType.reference.pointer) + .object(jni.JIteratorType(T)); } static final _id_readValuesAs1 = _class.instanceMethodId( @@ -2613,6 +4092,17 @@ class JsonParser extends jni.JObject { r"(Lcom/fasterxml/jackson/core/type/TypeReference;)Ljava/util/Iterator;", ); + static final _readValuesAs1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public java.util.Iterator readValuesAs(com.fasterxml.jackson.core.type.TypeReference valueTypeRef) /// The returned object must be released after use, by calling the [release] method. /// @@ -2628,8 +4118,11 @@ class JsonParser extends jni.JObject { jni.JObject valueTypeRef, { required jni.JObjType<$T> T, }) { - return _id_readValuesAs1( - this, jni.JIteratorType(T), [valueTypeRef.reference.pointer]); + return _readValuesAs1( + reference.pointer, + _id_readValuesAs1 as jni.JMethodIDPtr, + valueTypeRef.reference.pointer) + .object(jni.JIteratorType(T)); } static final _id_readValueAsTree = _class.instanceMethodId( @@ -2637,6 +4130,18 @@ class JsonParser extends jni.JObject { r"()Lcom/fasterxml/jackson/core/TreeNode;", ); + static final _readValueAsTree = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public T readValueAsTree() /// The returned object must be released after use, by calling the [release] method. /// @@ -2652,7 +4157,9 @@ class JsonParser extends jni.JObject { $T readValueAsTree<$T extends jni.JObject>({ required jni.JObjType<$T> T, }) { - return _id_readValueAsTree(this, T, []); + return _readValueAsTree( + reference.pointer, _id_readValueAsTree as jni.JMethodIDPtr) + .object(T); } } diff --git a/pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/JsonToken.dart b/pkgs/jnigen/test/jackson_core_test/third_party/bindings/com/fasterxml/jackson/core/JsonToken.dart similarity index 54% rename from pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/JsonToken.dart rename to pkgs/jnigen/test/jackson_core_test/third_party/bindings/com/fasterxml/jackson/core/JsonToken.dart index ff492c26a..67d194cbd 100644 --- a/pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/JsonToken.dart +++ b/pkgs/jnigen/test/jackson_core_test/third_party/bindings/com/fasterxml/jackson/core/JsonToken.dart @@ -62,10 +62,23 @@ class JsonToken extends jni.JObject { r"()[Lcom/fasterxml/jackson/core/JsonToken;", ); + static final _values = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public com.fasterxml.jackson.core.JsonToken[] values() /// The returned object must be released after use, by calling the [release] method. static jni.JArray values() { - return _id_values(_class, const jni.JArrayType($JsonTokenType()), []); + return _values(_class.reference.pointer, _id_values as jni.JMethodIDPtr) + .object(const jni.JArrayType($JsonTokenType())); } static final _id_valueOf = _class.staticMethodId( @@ -73,13 +86,25 @@ class JsonToken extends jni.JObject { r"(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonToken;", ); + static final _valueOf = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: static public com.fasterxml.jackson.core.JsonToken valueOf(java.lang.String name) /// The returned object must be released after use, by calling the [release] method. static JsonToken valueOf( jni.JString name, ) { - return _id_valueOf( - _class, const $JsonTokenType(), [name.reference.pointer]); + return _valueOf(_class.reference.pointer, _id_valueOf as jni.JMethodIDPtr, + name.reference.pointer) + .object(const $JsonTokenType()); } static final _id_id = _class.instanceMethodId( @@ -87,9 +112,21 @@ class JsonToken extends jni.JObject { r"()I", ); + static final _id = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public final int id() int id() { - return _id_id(this, const jni.jintType(), []); + return _id(reference.pointer, _id_id as jni.JMethodIDPtr).integer; } static final _id_asString = _class.instanceMethodId( @@ -97,10 +134,23 @@ class JsonToken extends jni.JObject { r"()Ljava/lang/String;", ); + static final _asString = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public final java.lang.String asString() /// The returned object must be released after use, by calling the [release] method. jni.JString asString() { - return _id_asString(this, const jni.JStringType(), []); + return _asString(reference.pointer, _id_asString as jni.JMethodIDPtr) + .object(const jni.JStringType()); } static final _id_asCharArray = _class.instanceMethodId( @@ -108,10 +158,23 @@ class JsonToken extends jni.JObject { r"()[C", ); + static final _asCharArray = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public final char[] asCharArray() /// The returned object must be released after use, by calling the [release] method. jni.JArray asCharArray() { - return _id_asCharArray(this, const jni.JArrayType(jni.jcharType()), []); + return _asCharArray(reference.pointer, _id_asCharArray as jni.JMethodIDPtr) + .object(const jni.JArrayType(jni.jcharType())); } static final _id_asByteArray = _class.instanceMethodId( @@ -119,10 +182,23 @@ class JsonToken extends jni.JObject { r"()[B", ); + static final _asByteArray = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public final byte[] asByteArray() /// The returned object must be released after use, by calling the [release] method. jni.JArray asByteArray() { - return _id_asByteArray(this, const jni.JArrayType(jni.jbyteType()), []); + return _asByteArray(reference.pointer, _id_asByteArray as jni.JMethodIDPtr) + .object(const jni.JArrayType(jni.jbyteType())); } static final _id_isNumeric = _class.instanceMethodId( @@ -130,12 +206,25 @@ class JsonToken extends jni.JObject { r"()Z", ); + static final _isNumeric = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public final boolean isNumeric() /// /// @return {@code True} if this token is {@code VALUE_NUMBER_INT} or {@code VALUE_NUMBER_FLOAT}, /// {@code false} otherwise bool isNumeric() { - return _id_isNumeric(this, const jni.jbooleanType(), []); + return _isNumeric(reference.pointer, _id_isNumeric as jni.JMethodIDPtr) + .boolean; } static final _id_isStructStart = _class.instanceMethodId( @@ -143,6 +232,18 @@ class JsonToken extends jni.JObject { r"()Z", ); + static final _isStructStart = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public final boolean isStructStart() /// /// Accessor that is functionally equivalent to: @@ -153,7 +254,9 @@ class JsonToken extends jni.JObject { /// {@code false} otherwise ///@since 2.3 bool isStructStart() { - return _id_isStructStart(this, const jni.jbooleanType(), []); + return _isStructStart( + reference.pointer, _id_isStructStart as jni.JMethodIDPtr) + .boolean; } static final _id_isStructEnd = _class.instanceMethodId( @@ -161,6 +264,18 @@ class JsonToken extends jni.JObject { r"()Z", ); + static final _isStructEnd = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public final boolean isStructEnd() /// /// Accessor that is functionally equivalent to: @@ -171,7 +286,8 @@ class JsonToken extends jni.JObject { /// {@code false} otherwise ///@since 2.3 bool isStructEnd() { - return _id_isStructEnd(this, const jni.jbooleanType(), []); + return _isStructEnd(reference.pointer, _id_isStructEnd as jni.JMethodIDPtr) + .boolean; } static final _id_isScalarValue = _class.instanceMethodId( @@ -179,6 +295,18 @@ class JsonToken extends jni.JObject { r"()Z", ); + static final _isScalarValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public final boolean isScalarValue() /// /// Method that can be used to check whether this token represents @@ -188,7 +316,9 @@ class JsonToken extends jni.JObject { ///@return {@code True} if this token is a scalar value token (one of /// {@code VALUE_xxx} tokens), {@code false} otherwise bool isScalarValue() { - return _id_isScalarValue(this, const jni.jbooleanType(), []); + return _isScalarValue( + reference.pointer, _id_isScalarValue as jni.JMethodIDPtr) + .boolean; } static final _id_isBoolean = _class.instanceMethodId( @@ -196,12 +326,25 @@ class JsonToken extends jni.JObject { r"()Z", ); + static final _isBoolean = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public final boolean isBoolean() /// /// @return {@code True} if this token is {@code VALUE_TRUE} or {@code VALUE_FALSE}, /// {@code false} otherwise bool isBoolean() { - return _id_isBoolean(this, const jni.jbooleanType(), []); + return _isBoolean(reference.pointer, _id_isBoolean as jni.JMethodIDPtr) + .boolean; } } diff --git a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/_package.dart b/pkgs/jnigen/test/jackson_core_test/third_party/bindings/com/fasterxml/jackson/core/_package.dart similarity index 100% rename from pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/_package.dart rename to pkgs/jnigen/test/jackson_core_test/third_party/bindings/com/fasterxml/jackson/core/_package.dart diff --git a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/.clang-format b/pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/.clang-format deleted file mode 100644 index a256c2f09..000000000 --- a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/.clang-format +++ /dev/null @@ -1,15 +0,0 @@ -# From dart SDK: https://github.com/dart-lang/sdk/blob/main/.clang-format - -# Defines the Chromium style for automatic reformatting. -# http://clang.llvm.org/docs/ClangFormatStyleOptions.html -BasedOnStyle: Chromium - -# clang-format doesn't seem to do a good job of this for longer comments. -ReflowComments: 'false' - -# We have lots of these. Though we need to put them all in curly braces, -# clang-format can't do that. -AllowShortIfStatementsOnASingleLine: 'true' - -# Put escaped newlines into the rightmost column. -AlignEscapedNewlinesLeft: false diff --git a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/CMakeLists.txt b/pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/CMakeLists.txt deleted file mode 100644 index db216f524..000000000 --- a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# jni_native_build (Build with jni:setup. Do not delete this line.) - -# The Flutter tooling requires that developers have CMake 3.10 or later -# installed. You should not increase this version, as doing so will cause -# the plugin to fail to compile for some customers of the plugin. -cmake_minimum_required(VERSION 3.10) - -project(jackson_core VERSION 0.0.1 LANGUAGES C) - -add_library(jackson_core SHARED - "./jackson_core.c" -) - -set_target_properties(jackson_core PROPERTIES - OUTPUT_NAME "jackson_core" -) - -target_compile_definitions(jackson_core PUBLIC DART_SHARED_LIB) - -if(WIN32) - set_target_properties(${TARGET_NAME} PROPERTIES - LINK_FLAGS "/DELAYLOAD:jvm.dll") -endif() - -if (ANDROID) - target_link_libraries(jackson_core log) -else() - find_package(Java REQUIRED) - find_package(JNI REQUIRED) - include_directories(${JNI_INCLUDE_DIRS}) - target_link_libraries(jackson_core ${JNI_LIBRARIES}) -endif() diff --git a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/dartjni.h b/pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/dartjni.h deleted file mode 100644 index f834d1577..000000000 --- a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/dartjni.h +++ /dev/null @@ -1,383 +0,0 @@ -// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -#pragma once - -// Note: include appropriate system jni.h as found by CMake, not third_party/jni.h. -#include -#include -#include -#include - -#if _WIN32 -#include -#else -#include -#include -#endif - -#if _WIN32 -#define FFI_PLUGIN_EXPORT __declspec(dllexport) -#else -#define FFI_PLUGIN_EXPORT -#endif - -#if defined _WIN32 -#define thread_local __declspec(thread) -#else -#define thread_local __thread -#endif - -#ifdef __ANDROID__ -#include -#endif - -#ifdef __ANDROID__ -#define __ENVP_CAST (JNIEnv**) -#else -#define __ENVP_CAST (void**) -#endif - -/// Locking functions for windows and pthread. - -#if defined _WIN32 -#include - -typedef CRITICAL_SECTION MutexLock; -typedef CONDITION_VARIABLE ConditionVariable; - -static inline void init_lock(MutexLock* lock) { - InitializeCriticalSection(lock); -} - -static inline void acquire_lock(MutexLock* lock) { - EnterCriticalSection(lock); -} - -static inline void release_lock(MutexLock* lock) { - LeaveCriticalSection(lock); -} - -static inline void destroy_lock(MutexLock* lock) { - DeleteCriticalSection(lock); -} - -static inline void init_cond(ConditionVariable* cond) { - InitializeConditionVariable(cond); -} - -static inline void signal_cond(ConditionVariable* cond) { - WakeConditionVariable(cond); -} - -static inline void wait_for(ConditionVariable* cond, MutexLock* lock) { - SleepConditionVariableCS(cond, lock, INFINITE); -} - -static inline void destroy_cond(ConditionVariable* cond) { - // Not available. -} - -static inline void free_mem(void* mem) { - CoTaskMemFree(mem); -} - -#elif defined __APPLE__ || defined __LINUX__ || defined __ANDROID__ || \ - defined __GNUC__ -#include - -typedef pthread_mutex_t MutexLock; -typedef pthread_cond_t ConditionVariable; - -static inline void init_lock(MutexLock* lock) { - pthread_mutex_init(lock, NULL); -} - -static inline void acquire_lock(MutexLock* lock) { - pthread_mutex_lock(lock); -} - -static inline void release_lock(MutexLock* lock) { - pthread_mutex_unlock(lock); -} - -static inline void destroy_lock(MutexLock* lock) { - pthread_mutex_destroy(lock); -} - -static inline void init_cond(ConditionVariable* cond) { - pthread_cond_init(cond, NULL); -} - -static inline void signal_cond(ConditionVariable* cond) { - pthread_cond_signal(cond); -} - -static inline void wait_for(ConditionVariable* cond, MutexLock* lock) { - pthread_cond_wait(cond, lock); -} - -static inline void destroy_cond(ConditionVariable* cond) { - pthread_cond_destroy(cond); -} - -static inline void free_mem(void* mem) { - free(mem); -} - -#else - -#error "No locking/condition variable support; Possibly unsupported platform" - -#endif - -typedef struct CallbackResult { - MutexLock lock; - ConditionVariable cond; - int ready; - jobject object; -} CallbackResult; - -typedef struct JniLocks { - MutexLock classLoadingLock; -} JniLocks; - -/// Represents the error when dart-jni layer has already spawned singleton VM. -#define DART_JNI_SINGLETON_EXISTS (-99); - -/// Stores the global state of the JNI. -typedef struct JniContext { - JavaVM* jvm; - jobject classLoader; - jmethodID loadClassMethod; - jobject currentActivity; - jobject appContext; - JniLocks locks; -} JniContext; - -// jniEnv for this thread, used by inline functions in this header, -// therefore declared as extern. -extern thread_local JNIEnv* jniEnv; - -extern JniContext* jni; - -/// Types used by JNI API to distinguish between primitive types. -enum JniType { - booleanType = 0, - byteType = 1, - shortType = 2, - charType = 3, - intType = 4, - longType = 5, - floatType = 6, - doubleType = 7, - objectType = 8, - voidType = 9, -}; - -/// Result type for use by JNI. -/// -/// If [exception] is null, it means the result is valid. -/// It's assumed that the caller knows the expected type in [result]. -typedef struct JniResult { - jvalue value; - jthrowable exception; -} JniResult; - -/// Similar to [JniResult] but for class lookups. -typedef struct JniClassLookupResult { - jclass value; - jthrowable exception; -} JniClassLookupResult; - -/// Similar to [JniResult] but for method/field ID lookups. -typedef struct JniPointerResult { - const void* value; - jthrowable exception; -} JniPointerResult; - -/// JniExceptionDetails holds 2 jstring objects, one is the result of -/// calling `toString` on exception object, other is stack trace; -typedef struct JniExceptionDetails { - jstring message; - jstring stacktrace; -} JniExceptionDetails; - -/// This struct contains functions which wrap method call / field access conveniently along with -/// exception checking. -/// -/// Flutter embedding checks for pending JNI exceptions before an FFI transition, which requires us -/// to check for and clear the exception before returning to dart code, which requires these functions -/// to return result types. -typedef struct JniAccessorsStruct { - JniClassLookupResult (*getClass)(char* internalName); - JniPointerResult (*getFieldID)(jclass cls, char* fieldName, char* signature); - JniPointerResult (*getStaticFieldID)(jclass cls, - char* fieldName, - char* signature); - JniPointerResult (*getMethodID)(jclass cls, - char* methodName, - char* signature); - JniPointerResult (*getStaticMethodID)(jclass cls, - char* methodName, - char* signature); - JniResult (*newObject)(jclass cls, jmethodID ctor, jvalue* args); - JniResult (*newPrimitiveArray)(jsize length, int type); - JniResult (*newObjectArray)(jsize length, - jclass elementClass, - jobject initialElement); - JniResult (*getArrayElement)(jarray array, int index, int type); - JniResult (*callMethod)(jobject obj, - jmethodID methodID, - int callType, - jvalue* args); - JniResult (*callStaticMethod)(jclass cls, - jmethodID methodID, - int callType, - jvalue* args); - JniResult (*getField)(jobject obj, jfieldID fieldID, int callType); - JniResult (*getStaticField)(jclass cls, jfieldID fieldID, int callType); - JniExceptionDetails (*getExceptionDetails)(jthrowable exception); -} JniAccessorsStruct; - -FFI_PLUGIN_EXPORT JniAccessorsStruct* GetAccessors(); - -FFI_PLUGIN_EXPORT JavaVM* GetJavaVM(void); - -FFI_PLUGIN_EXPORT JNIEnv* GetJniEnv(void); - -/// Spawn a JVM with given arguments. -/// -/// Returns JNI_OK on success, and one of the documented JNI error codes on -/// failure. It returns DART_JNI_SINGLETON_EXISTS if an attempt to spawn multiple -/// JVMs is made, even if the underlying API potentially supports multiple VMs. -FFI_PLUGIN_EXPORT int SpawnJvm(JavaVMInitArgs* args); - -/// Returns Application classLoader (on Android), -/// which can be used to load application and platform classes. -/// -/// On other platforms, NULL is returned. -FFI_PLUGIN_EXPORT jobject GetClassLoader(void); - -/// Returns application context on Android. -/// -/// On other platforms, NULL is returned. -FFI_PLUGIN_EXPORT jobject GetApplicationContext(void); - -/// Returns current activity of the app on Android. -FFI_PLUGIN_EXPORT jobject GetCurrentActivity(void); - -static inline void attach_thread() { - if (jniEnv == NULL) { - (*jni->jvm)->AttachCurrentThread(jni->jvm, __ENVP_CAST & jniEnv, NULL); - } -} - -/// Load class into [cls] using platform specific mechanism -static inline void load_class_platform(jclass* cls, const char* name) { -#ifdef __ANDROID__ - jstring className = (*jniEnv)->NewStringUTF(jniEnv, name); - *cls = (*jniEnv)->CallObjectMethod(jniEnv, jni->classLoader, - jni->loadClassMethod, className); - (*jniEnv)->DeleteLocalRef(jniEnv, className); -#else - *cls = (*jniEnv)->FindClass(jniEnv, name); -#endif -} - -static inline void load_class_global_ref(jclass* cls, const char* name) { - if (*cls == NULL) { - jclass tmp = NULL; - acquire_lock(&jni->locks.classLoadingLock); - if (*cls == NULL) { - load_class_platform(&tmp, name); - if (!(*jniEnv)->ExceptionCheck(jniEnv)) { - *cls = (*jniEnv)->NewGlobalRef(jniEnv, tmp); - (*jniEnv)->DeleteLocalRef(jniEnv, tmp); - } - } - release_lock(&jni->locks.classLoadingLock); - } -} - -static inline void load_method(jclass cls, - jmethodID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetMethodID(jniEnv, cls, name, sig); - } -} - -static inline void load_static_method(jclass cls, - jmethodID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetStaticMethodID(jniEnv, cls, name, sig); - } -} - -static inline void load_field(jclass cls, - jfieldID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetFieldID(jniEnv, cls, name, sig); - } -} - -static inline void load_static_field(jclass cls, - jfieldID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetStaticFieldID(jniEnv, cls, name, sig); - } -} - -static inline jobject to_global_ref(jobject ref) { - jobject g = (*jniEnv)->NewGlobalRef(jniEnv, ref); - (*jniEnv)->DeleteLocalRef(jniEnv, ref); - return g; -} - -// These functions are useful for C+Dart bindings, and not required for pure dart bindings. - -FFI_PLUGIN_EXPORT JniContext* GetJniContextPtr(); - -/// For use by jni_gen's generated code -/// don't use these. - -// these 2 fn ptr vars will be defined by generated code library -extern JniContext* (*context_getter)(void); -extern JNIEnv* (*env_getter)(void); - -// this function will be exported by generated code library -// it will set above 2 variables. -FFI_PLUGIN_EXPORT void setJniGetters(struct JniContext* (*cg)(void), - JNIEnv* (*eg)(void)); - -static inline void load_env() { - if (jniEnv == NULL) { - jni = context_getter(); - jniEnv = env_getter(); - } -} - -static inline jthrowable check_exception() { - jthrowable exception = (*jniEnv)->ExceptionOccurred(jniEnv); - if (exception != NULL) (*jniEnv)->ExceptionClear(jniEnv); - if (exception == NULL) return NULL; - return to_global_ref(exception); -} - -static inline JniResult to_global_ref_result(jobject ref) { - JniResult result; - result.exception = check_exception(); - if (result.exception == NULL) { - result.value.l = to_global_ref(ref); - } - return result; -} diff --git a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/jackson_core.c b/pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/jackson_core.c deleted file mode 100644 index 5989a3f69..000000000 --- a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/c_bindings/jackson_core.c +++ /dev/null @@ -1,3744 +0,0 @@ -// Generated from jackson-core which is licensed under the Apache License 2.0. -// The following copyright from the original authors applies. -// See https://github.com/FasterXML/jackson-core/blob/2.14/LICENSE -// -// Copyright (c) 2007 - The Jackson Project Authors -// Licensed under the Apache License, Version 2.0 (the "License") -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Autogenerated by jnigen. DO NOT EDIT! - -#include -#include "dartjni.h" -#include "jni.h" - -thread_local JNIEnv* jniEnv; -JniContext* jni; - -JniContext* (*context_getter)(void); -JNIEnv* (*env_getter)(void); - -void setJniGetters(JniContext* (*cg)(void), JNIEnv* (*eg)(void)) { - context_getter = cg; - env_getter = eg; -} - -// com.fasterxml.jackson.core.JsonFactory$Feature -jclass _c_JsonFactory_Feature = NULL; - -jmethodID _m_JsonFactory_Feature__values = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory_Feature__values() { - load_env(); - load_class_global_ref(&_c_JsonFactory_Feature, - "com/fasterxml/jackson/core/JsonFactory$Feature"); - if (_c_JsonFactory_Feature == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_JsonFactory_Feature, &_m_JsonFactory_Feature__values, - "values", - "()[Lcom/fasterxml/jackson/core/JsonFactory$Feature;"); - if (_m_JsonFactory_Feature__values == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_JsonFactory_Feature, _m_JsonFactory_Feature__values); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory_Feature__valueOf = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory_Feature__valueOf(jobject name) { - load_env(); - load_class_global_ref(&_c_JsonFactory_Feature, - "com/fasterxml/jackson/core/JsonFactory$Feature"); - if (_c_JsonFactory_Feature == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_JsonFactory_Feature, &_m_JsonFactory_Feature__valueOf, "valueOf", - "(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonFactory$Feature;"); - if (_m_JsonFactory_Feature__valueOf == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_JsonFactory_Feature, _m_JsonFactory_Feature__valueOf, name); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory_Feature__collectDefaults = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory_Feature__collectDefaults() { - load_env(); - load_class_global_ref(&_c_JsonFactory_Feature, - "com/fasterxml/jackson/core/JsonFactory$Feature"); - if (_c_JsonFactory_Feature == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_JsonFactory_Feature, - &_m_JsonFactory_Feature__collectDefaults, - "collectDefaults", "()I"); - if (_m_JsonFactory_Feature__collectDefaults == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallStaticIntMethod( - jniEnv, _c_JsonFactory_Feature, _m_JsonFactory_Feature__collectDefaults); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory_Feature__enabledByDefault = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory_Feature__enabledByDefault(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory_Feature, - "com/fasterxml/jackson/core/JsonFactory$Feature"); - if (_c_JsonFactory_Feature == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory_Feature, &_m_JsonFactory_Feature__enabledByDefault, - "enabledByDefault", "()Z"); - if (_m_JsonFactory_Feature__enabledByDefault == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonFactory_Feature__enabledByDefault); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory_Feature__enabledIn = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory_Feature__enabledIn(jobject self_, int32_t flags) { - load_env(); - load_class_global_ref(&_c_JsonFactory_Feature, - "com/fasterxml/jackson/core/JsonFactory$Feature"); - if (_c_JsonFactory_Feature == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory_Feature, &_m_JsonFactory_Feature__enabledIn, - "enabledIn", "(I)Z"); - if (_m_JsonFactory_Feature__enabledIn == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonFactory_Feature__enabledIn, flags); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory_Feature__getMask = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory_Feature__getMask(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory_Feature, - "com/fasterxml/jackson/core/JsonFactory$Feature"); - if (_c_JsonFactory_Feature == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory_Feature, &_m_JsonFactory_Feature__getMask, - "getMask", "()I"); - if (_m_JsonFactory_Feature__getMask == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_JsonFactory_Feature__getMask); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -// com.fasterxml.jackson.core.JsonFactory -jclass _c_JsonFactory = NULL; - -jmethodID _m_JsonFactory__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__new0() { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__new0, "", "()V"); - if (_m_JsonFactory__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_JsonFactory, _m_JsonFactory__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__new1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__new1(jobject oc) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__new1, "", - "(Lcom/fasterxml/jackson/core/ObjectCodec;)V"); - if (_m_JsonFactory__new1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_JsonFactory, _m_JsonFactory__new1, oc); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__new2 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__new2(jobject src, jobject codec) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__new2, "", - "(Lcom/fasterxml/jackson/core/JsonFactory;Lcom/fasterxml/jackson/" - "core/ObjectCodec;)V"); - if (_m_JsonFactory__new2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_JsonFactory, - _m_JsonFactory__new2, src, codec); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__new3 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__new3(jobject b) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__new3, "", - "(Lcom/fasterxml/jackson/core/JsonFactoryBuilder;)V"); - if (_m_JsonFactory__new3 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_JsonFactory, _m_JsonFactory__new3, b); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__new4 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__new4(jobject b, uint8_t bogus) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__new4, "", - "(Lcom/fasterxml/jackson/core/TSFBuilder;Z)V"); - if (_m_JsonFactory__new4 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_JsonFactory, - _m_JsonFactory__new4, b, bogus); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__rebuild = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__rebuild(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__rebuild, "rebuild", - "()Lcom/fasterxml/jackson/core/TSFBuilder;"); - if (_m_JsonFactory__rebuild == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonFactory__rebuild); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__builder = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__builder() { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_JsonFactory, &_m_JsonFactory__builder, "builder", - "()Lcom/fasterxml/jackson/core/TSFBuilder;"); - if (_m_JsonFactory__builder == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod(jniEnv, _c_JsonFactory, - _m_JsonFactory__builder); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__copy = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__copy(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__copy, "copy", - "()Lcom/fasterxml/jackson/core/JsonFactory;"); - if (_m_JsonFactory__copy == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonFactory__copy); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__readResolve = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__readResolve(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__readResolve, "readResolve", - "()Ljava/lang/Object;"); - if (_m_JsonFactory__readResolve == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonFactory__readResolve); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__requiresPropertyOrdering = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__requiresPropertyOrdering(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__requiresPropertyOrdering, - "requiresPropertyOrdering", "()Z"); - if (_m_JsonFactory__requiresPropertyOrdering == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonFactory__requiresPropertyOrdering); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory__canHandleBinaryNatively = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__canHandleBinaryNatively(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__canHandleBinaryNatively, - "canHandleBinaryNatively", "()Z"); - if (_m_JsonFactory__canHandleBinaryNatively == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonFactory__canHandleBinaryNatively); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory__canUseCharArrays = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__canUseCharArrays(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__canUseCharArrays, - "canUseCharArrays", "()Z"); - if (_m_JsonFactory__canUseCharArrays == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonFactory__canUseCharArrays); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory__canParseAsync = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__canParseAsync(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__canParseAsync, "canParseAsync", - "()Z"); - if (_m_JsonFactory__canParseAsync == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod(jniEnv, self_, - _m_JsonFactory__canParseAsync); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory__getFormatReadFeatureType = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__getFormatReadFeatureType(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__getFormatReadFeatureType, - "getFormatReadFeatureType", "()Ljava/lang/Class;"); - if (_m_JsonFactory__getFormatReadFeatureType == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__getFormatReadFeatureType); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__getFormatWriteFeatureType = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__getFormatWriteFeatureType(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__getFormatWriteFeatureType, - "getFormatWriteFeatureType", "()Ljava/lang/Class;"); - if (_m_JsonFactory__getFormatWriteFeatureType == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__getFormatWriteFeatureType); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__canUseSchema = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__canUseSchema(jobject self_, jobject schema) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__canUseSchema, "canUseSchema", - "(Lcom/fasterxml/jackson/core/FormatSchema;)Z"); - if (_m_JsonFactory__canUseSchema == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonFactory__canUseSchema, schema); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory__getFormatName = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__getFormatName(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__getFormatName, "getFormatName", - "()Ljava/lang/String;"); - if (_m_JsonFactory__getFormatName == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonFactory__getFormatName); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__hasFormat = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__hasFormat(jobject self_, jobject acc) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__hasFormat, "hasFormat", - "(Lcom/fasterxml/jackson/core/format/InputAccessor;)Lcom/" - "fasterxml/jackson/core/format/MatchStrength;"); - if (_m_JsonFactory__hasFormat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod(jniEnv, self_, - _m_JsonFactory__hasFormat, acc); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__requiresCustomCodec = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__requiresCustomCodec(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__requiresCustomCodec, - "requiresCustomCodec", "()Z"); - if (_m_JsonFactory__requiresCustomCodec == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonFactory__requiresCustomCodec); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory__hasJSONFormat = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__hasJSONFormat(jobject self_, jobject acc) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__hasJSONFormat, "hasJSONFormat", - "(Lcom/fasterxml/jackson/core/format/InputAccessor;)Lcom/" - "fasterxml/jackson/core/format/MatchStrength;"); - if (_m_JsonFactory__hasJSONFormat == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__hasJSONFormat, acc); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__version = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__version(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__version, "version", - "()Lcom/fasterxml/jackson/core/Version;"); - if (_m_JsonFactory__version == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonFactory__version); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__configure = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__configure(jobject self_, jobject f, uint8_t state) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__configure, "configure", - "(Lcom/fasterxml/jackson/core/JsonFactory$Feature;Z)Lcom/" - "fasterxml/jackson/core/JsonFactory;"); - if (_m_JsonFactory__configure == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__configure, f, state); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__enable = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__enable(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__enable, "enable", - "(Lcom/fasterxml/jackson/core/JsonFactory$Feature;)Lcom/" - "fasterxml/jackson/core/JsonFactory;"); - if (_m_JsonFactory__enable == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonFactory__enable, f); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__disable = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__disable(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__disable, "disable", - "(Lcom/fasterxml/jackson/core/JsonFactory$Feature;)Lcom/" - "fasterxml/jackson/core/JsonFactory;"); - if (_m_JsonFactory__disable == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonFactory__disable, f); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__isEnabled = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__isEnabled(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__isEnabled, "isEnabled", - "(Lcom/fasterxml/jackson/core/JsonFactory$Feature;)Z"); - if (_m_JsonFactory__isEnabled == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_JsonFactory__isEnabled, f); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory__getParserFeatures = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__getParserFeatures(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__getParserFeatures, - "getParserFeatures", "()I"); - if (_m_JsonFactory__getParserFeatures == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod(jniEnv, self_, - _m_JsonFactory__getParserFeatures); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory__getGeneratorFeatures = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__getGeneratorFeatures(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__getGeneratorFeatures, - "getGeneratorFeatures", "()I"); - if (_m_JsonFactory__getGeneratorFeatures == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_JsonFactory__getGeneratorFeatures); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory__getFormatParserFeatures = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__getFormatParserFeatures(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__getFormatParserFeatures, - "getFormatParserFeatures", "()I"); - if (_m_JsonFactory__getFormatParserFeatures == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_JsonFactory__getFormatParserFeatures); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory__getFormatGeneratorFeatures = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__getFormatGeneratorFeatures(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__getFormatGeneratorFeatures, - "getFormatGeneratorFeatures", "()I"); - if (_m_JsonFactory__getFormatGeneratorFeatures == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_JsonFactory__getFormatGeneratorFeatures); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory__configure1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__configure1(jobject self_, jobject f, uint8_t state) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__configure1, "configure", - "(Lcom/fasterxml/jackson/core/JsonParser$Feature;Z)Lcom/" - "fasterxml/jackson/core/JsonFactory;"); - if (_m_JsonFactory__configure1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__configure1, f, state); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__enable1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__enable1(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__enable1, "enable", - "(Lcom/fasterxml/jackson/core/JsonParser$Feature;)Lcom/fasterxml/" - "jackson/core/JsonFactory;"); - if (_m_JsonFactory__enable1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonFactory__enable1, f); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__disable1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__disable1(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__disable1, "disable", - "(Lcom/fasterxml/jackson/core/JsonParser$Feature;)Lcom/fasterxml/" - "jackson/core/JsonFactory;"); - if (_m_JsonFactory__disable1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonFactory__disable1, f); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__isEnabled1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__isEnabled1(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__isEnabled1, "isEnabled", - "(Lcom/fasterxml/jackson/core/JsonParser$Feature;)Z"); - if (_m_JsonFactory__isEnabled1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod(jniEnv, self_, - _m_JsonFactory__isEnabled1, f); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory__isEnabled2 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__isEnabled2(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__isEnabled2, "isEnabled", - "(Lcom/fasterxml/jackson/core/StreamReadFeature;)Z"); - if (_m_JsonFactory__isEnabled2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod(jniEnv, self_, - _m_JsonFactory__isEnabled2, f); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory__getInputDecorator = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__getInputDecorator(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__getInputDecorator, - "getInputDecorator", - "()Lcom/fasterxml/jackson/core/io/InputDecorator;"); - if (_m_JsonFactory__getInputDecorator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__getInputDecorator); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__setInputDecorator = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__setInputDecorator(jobject self_, jobject d) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__setInputDecorator, - "setInputDecorator", - "(Lcom/fasterxml/jackson/core/io/InputDecorator;)Lcom/fasterxml/" - "jackson/core/JsonFactory;"); - if (_m_JsonFactory__setInputDecorator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__setInputDecorator, d); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__configure2 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__configure2(jobject self_, jobject f, uint8_t state) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__configure2, "configure", - "(Lcom/fasterxml/jackson/core/JsonGenerator$Feature;Z)Lcom/" - "fasterxml/jackson/core/JsonFactory;"); - if (_m_JsonFactory__configure2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__configure2, f, state); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__enable2 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__enable2(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__enable2, "enable", - "(Lcom/fasterxml/jackson/core/JsonGenerator$Feature;)Lcom/" - "fasterxml/jackson/core/JsonFactory;"); - if (_m_JsonFactory__enable2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonFactory__enable2, f); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__disable2 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__disable2(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__disable2, "disable", - "(Lcom/fasterxml/jackson/core/JsonGenerator$Feature;)Lcom/" - "fasterxml/jackson/core/JsonFactory;"); - if (_m_JsonFactory__disable2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonFactory__disable2, f); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__isEnabled3 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__isEnabled3(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__isEnabled3, "isEnabled", - "(Lcom/fasterxml/jackson/core/JsonGenerator$Feature;)Z"); - if (_m_JsonFactory__isEnabled3 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod(jniEnv, self_, - _m_JsonFactory__isEnabled3, f); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory__isEnabled4 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__isEnabled4(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__isEnabled4, "isEnabled", - "(Lcom/fasterxml/jackson/core/StreamWriteFeature;)Z"); - if (_m_JsonFactory__isEnabled4 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod(jniEnv, self_, - _m_JsonFactory__isEnabled4, f); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonFactory__getCharacterEscapes = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__getCharacterEscapes(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__getCharacterEscapes, - "getCharacterEscapes", - "()Lcom/fasterxml/jackson/core/io/CharacterEscapes;"); - if (_m_JsonFactory__getCharacterEscapes == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__getCharacterEscapes); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__setCharacterEscapes = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__setCharacterEscapes(jobject self_, jobject esc) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__setCharacterEscapes, - "setCharacterEscapes", - "(Lcom/fasterxml/jackson/core/io/CharacterEscapes;)Lcom/" - "fasterxml/jackson/core/JsonFactory;"); - if (_m_JsonFactory__setCharacterEscapes == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__setCharacterEscapes, esc); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__getOutputDecorator = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__getOutputDecorator(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__getOutputDecorator, - "getOutputDecorator", - "()Lcom/fasterxml/jackson/core/io/OutputDecorator;"); - if (_m_JsonFactory__getOutputDecorator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__getOutputDecorator); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__setOutputDecorator = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__setOutputDecorator(jobject self_, jobject d) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__setOutputDecorator, - "setOutputDecorator", - "(Lcom/fasterxml/jackson/core/io/OutputDecorator;)Lcom/fasterxml/" - "jackson/core/JsonFactory;"); - if (_m_JsonFactory__setOutputDecorator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__setOutputDecorator, d); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__setRootValueSeparator = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__setRootValueSeparator(jobject self_, jobject sep) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__setRootValueSeparator, - "setRootValueSeparator", - "(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonFactory;"); - if (_m_JsonFactory__setRootValueSeparator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__setRootValueSeparator, sep); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__getRootValueSeparator = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__getRootValueSeparator(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__getRootValueSeparator, - "getRootValueSeparator", "()Ljava/lang/String;"); - if (_m_JsonFactory__getRootValueSeparator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__getRootValueSeparator); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__setCodec = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__setCodec(jobject self_, jobject oc) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__setCodec, "setCodec", - "(Lcom/fasterxml/jackson/core/ObjectCodec;)Lcom/fasterxml/" - "jackson/core/JsonFactory;"); - if (_m_JsonFactory__setCodec == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonFactory__setCodec, oc); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__getCodec = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__getCodec(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__getCodec, "getCodec", - "()Lcom/fasterxml/jackson/core/ObjectCodec;"); - if (_m_JsonFactory__getCodec == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonFactory__getCodec); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createParser = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createParser(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createParser, "createParser", - "(Ljava/io/File;)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createParser, f); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createParser1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createParser1(jobject self_, jobject url) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createParser1, "createParser", - "(Ljava/net/URL;)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createParser1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createParser1, url); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createParser2 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createParser2(jobject self_, jobject in) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createParser2, "createParser", - "(Ljava/io/InputStream;)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createParser2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createParser2, in); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createParser3 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createParser3(jobject self_, jobject r) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createParser3, "createParser", - "(Ljava/io/Reader;)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createParser3 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createParser3, r); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createParser4 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createParser4(jobject self_, jobject data) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createParser4, "createParser", - "([B)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createParser4 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createParser4, data); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createParser5 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createParser5(jobject self_, - jobject data, - int32_t offset, - int32_t len) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createParser5, "createParser", - "([BII)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createParser5 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createParser5, data, offset, len); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createParser6 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createParser6(jobject self_, jobject content) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createParser6, "createParser", - "(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createParser6 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createParser6, content); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createParser7 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createParser7(jobject self_, jobject content) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createParser7, "createParser", - "([C)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createParser7 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createParser7, content); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createParser8 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createParser8(jobject self_, - jobject content, - int32_t offset, - int32_t len) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createParser8, "createParser", - "([CII)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createParser8 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createParser8, content, offset, len); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createParser9 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createParser9(jobject self_, jobject in) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createParser9, "createParser", - "(Ljava/io/DataInput;)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createParser9 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createParser9, in); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createNonBlockingByteArrayParser = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createNonBlockingByteArrayParser(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createNonBlockingByteArrayParser, - "createNonBlockingByteArrayParser", - "()Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createNonBlockingByteArrayParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createNonBlockingByteArrayParser); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createGenerator = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createGenerator(jobject self_, - jobject out, - jobject enc) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createGenerator, - "createGenerator", - "(Ljava/io/OutputStream;Lcom/fasterxml/jackson/core/" - "JsonEncoding;)Lcom/fasterxml/jackson/core/JsonGenerator;"); - if (_m_JsonFactory__createGenerator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createGenerator, out, enc); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createGenerator1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createGenerator1(jobject self_, jobject out) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_JsonFactory, &_m_JsonFactory__createGenerator1, "createGenerator", - "(Ljava/io/OutputStream;)Lcom/fasterxml/jackson/core/JsonGenerator;"); - if (_m_JsonFactory__createGenerator1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createGenerator1, out); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createGenerator2 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createGenerator2(jobject self_, jobject w) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createGenerator2, - "createGenerator", - "(Ljava/io/Writer;)Lcom/fasterxml/jackson/core/JsonGenerator;"); - if (_m_JsonFactory__createGenerator2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createGenerator2, w); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createGenerator3 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createGenerator3(jobject self_, jobject f, jobject enc) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createGenerator3, - "createGenerator", - "(Ljava/io/File;Lcom/fasterxml/jackson/core/JsonEncoding;)Lcom/" - "fasterxml/jackson/core/JsonGenerator;"); - if (_m_JsonFactory__createGenerator3 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createGenerator3, f, enc); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createGenerator4 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createGenerator4(jobject self_, - jobject out, - jobject enc) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createGenerator4, - "createGenerator", - "(Ljava/io/DataOutput;Lcom/fasterxml/jackson/core/" - "JsonEncoding;)Lcom/fasterxml/jackson/core/JsonGenerator;"); - if (_m_JsonFactory__createGenerator4 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createGenerator4, out, enc); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createGenerator5 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createGenerator5(jobject self_, jobject out) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_JsonFactory, &_m_JsonFactory__createGenerator5, "createGenerator", - "(Ljava/io/DataOutput;)Lcom/fasterxml/jackson/core/JsonGenerator;"); - if (_m_JsonFactory__createGenerator5 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createGenerator5, out); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createJsonParser = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createJsonParser(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createJsonParser, - "createJsonParser", - "(Ljava/io/File;)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createJsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createJsonParser, f); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createJsonParser1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createJsonParser1(jobject self_, jobject url) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createJsonParser1, - "createJsonParser", - "(Ljava/net/URL;)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createJsonParser1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createJsonParser1, url); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createJsonParser2 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createJsonParser2(jobject self_, jobject in) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createJsonParser2, - "createJsonParser", - "(Ljava/io/InputStream;)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createJsonParser2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createJsonParser2, in); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createJsonParser3 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createJsonParser3(jobject self_, jobject r) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createJsonParser3, - "createJsonParser", - "(Ljava/io/Reader;)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createJsonParser3 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createJsonParser3, r); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createJsonParser4 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createJsonParser4(jobject self_, jobject data) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createJsonParser4, - "createJsonParser", - "([B)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createJsonParser4 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createJsonParser4, data); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createJsonParser5 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createJsonParser5(jobject self_, - jobject data, - int32_t offset, - int32_t len) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createJsonParser5, - "createJsonParser", - "([BII)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createJsonParser5 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createJsonParser5, data, offset, len); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createJsonParser6 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createJsonParser6(jobject self_, jobject content) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createJsonParser6, - "createJsonParser", - "(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonFactory__createJsonParser6 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createJsonParser6, content); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createJsonGenerator = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createJsonGenerator(jobject self_, - jobject out, - jobject enc) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createJsonGenerator, - "createJsonGenerator", - "(Ljava/io/OutputStream;Lcom/fasterxml/jackson/core/" - "JsonEncoding;)Lcom/fasterxml/jackson/core/JsonGenerator;"); - if (_m_JsonFactory__createJsonGenerator == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createJsonGenerator, out, enc); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createJsonGenerator1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createJsonGenerator1(jobject self_, jobject out) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonFactory, &_m_JsonFactory__createJsonGenerator1, - "createJsonGenerator", - "(Ljava/io/Writer;)Lcom/fasterxml/jackson/core/JsonGenerator;"); - if (_m_JsonFactory__createJsonGenerator1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createJsonGenerator1, out); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonFactory__createJsonGenerator2 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonFactory__createJsonGenerator2(jobject self_, jobject out) { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_JsonFactory, &_m_JsonFactory__createJsonGenerator2, - "createJsonGenerator", - "(Ljava/io/OutputStream;)Lcom/fasterxml/jackson/core/JsonGenerator;"); - if (_m_JsonFactory__createJsonGenerator2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonFactory__createJsonGenerator2, out); - return to_global_ref_result(_result); -} - -jfieldID _f_JsonFactory__FORMAT_NAME_JSON = NULL; -FFI_PLUGIN_EXPORT -JniResult get_JsonFactory__FORMAT_NAME_JSON() { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_JsonFactory, &_f_JsonFactory__FORMAT_NAME_JSON, - "FORMAT_NAME_JSON", "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField( - jniEnv, _c_JsonFactory, _f_JsonFactory__FORMAT_NAME_JSON); - return to_global_ref_result(_result); -} - -jfieldID _f_JsonFactory__DEFAULT_FACTORY_FEATURE_FLAGS = NULL; -FFI_PLUGIN_EXPORT -JniResult get_JsonFactory__DEFAULT_FACTORY_FEATURE_FLAGS() { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_JsonFactory, - &_f_JsonFactory__DEFAULT_FACTORY_FEATURE_FLAGS, - "DEFAULT_FACTORY_FEATURE_FLAGS", "I"); - int32_t _result = (*jniEnv)->GetStaticIntField( - jniEnv, _c_JsonFactory, _f_JsonFactory__DEFAULT_FACTORY_FEATURE_FLAGS); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jfieldID _f_JsonFactory__DEFAULT_PARSER_FEATURE_FLAGS = NULL; -FFI_PLUGIN_EXPORT -JniResult get_JsonFactory__DEFAULT_PARSER_FEATURE_FLAGS() { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_JsonFactory, - &_f_JsonFactory__DEFAULT_PARSER_FEATURE_FLAGS, - "DEFAULT_PARSER_FEATURE_FLAGS", "I"); - int32_t _result = (*jniEnv)->GetStaticIntField( - jniEnv, _c_JsonFactory, _f_JsonFactory__DEFAULT_PARSER_FEATURE_FLAGS); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jfieldID _f_JsonFactory__DEFAULT_GENERATOR_FEATURE_FLAGS = NULL; -FFI_PLUGIN_EXPORT -JniResult get_JsonFactory__DEFAULT_GENERATOR_FEATURE_FLAGS() { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_JsonFactory, - &_f_JsonFactory__DEFAULT_GENERATOR_FEATURE_FLAGS, - "DEFAULT_GENERATOR_FEATURE_FLAGS", "I"); - int32_t _result = (*jniEnv)->GetStaticIntField( - jniEnv, _c_JsonFactory, _f_JsonFactory__DEFAULT_GENERATOR_FEATURE_FLAGS); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jfieldID _f_JsonFactory__DEFAULT_ROOT_VALUE_SEPARATOR = NULL; -FFI_PLUGIN_EXPORT -JniResult get_JsonFactory__DEFAULT_ROOT_VALUE_SEPARATOR() { - load_env(); - load_class_global_ref(&_c_JsonFactory, - "com/fasterxml/jackson/core/JsonFactory"); - if (_c_JsonFactory == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_JsonFactory, - &_f_JsonFactory__DEFAULT_ROOT_VALUE_SEPARATOR, - "DEFAULT_ROOT_VALUE_SEPARATOR", - "Lcom/fasterxml/jackson/core/SerializableString;"); - jobject _result = (*jniEnv)->GetStaticObjectField( - jniEnv, _c_JsonFactory, _f_JsonFactory__DEFAULT_ROOT_VALUE_SEPARATOR); - return to_global_ref_result(_result); -} - -// com.fasterxml.jackson.core.JsonParser$Feature -jclass _c_JsonParser_Feature = NULL; - -jmethodID _m_JsonParser_Feature__values = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser_Feature__values() { - load_env(); - load_class_global_ref(&_c_JsonParser_Feature, - "com/fasterxml/jackson/core/JsonParser$Feature"); - if (_c_JsonParser_Feature == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_JsonParser_Feature, &_m_JsonParser_Feature__values, - "values", - "()[Lcom/fasterxml/jackson/core/JsonParser$Feature;"); - if (_m_JsonParser_Feature__values == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_JsonParser_Feature, _m_JsonParser_Feature__values); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser_Feature__valueOf = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser_Feature__valueOf(jobject name) { - load_env(); - load_class_global_ref(&_c_JsonParser_Feature, - "com/fasterxml/jackson/core/JsonParser$Feature"); - if (_c_JsonParser_Feature == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_JsonParser_Feature, &_m_JsonParser_Feature__valueOf, "valueOf", - "(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonParser$Feature;"); - if (_m_JsonParser_Feature__valueOf == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_JsonParser_Feature, _m_JsonParser_Feature__valueOf, name); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser_Feature__collectDefaults = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser_Feature__collectDefaults() { - load_env(); - load_class_global_ref(&_c_JsonParser_Feature, - "com/fasterxml/jackson/core/JsonParser$Feature"); - if (_c_JsonParser_Feature == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_JsonParser_Feature, - &_m_JsonParser_Feature__collectDefaults, "collectDefaults", - "()I"); - if (_m_JsonParser_Feature__collectDefaults == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallStaticIntMethod( - jniEnv, _c_JsonParser_Feature, _m_JsonParser_Feature__collectDefaults); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser_Feature__enabledByDefault = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser_Feature__enabledByDefault(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser_Feature, - "com/fasterxml/jackson/core/JsonParser$Feature"); - if (_c_JsonParser_Feature == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser_Feature, &_m_JsonParser_Feature__enabledByDefault, - "enabledByDefault", "()Z"); - if (_m_JsonParser_Feature__enabledByDefault == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonParser_Feature__enabledByDefault); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser_Feature__enabledIn = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser_Feature__enabledIn(jobject self_, int32_t flags) { - load_env(); - load_class_global_ref(&_c_JsonParser_Feature, - "com/fasterxml/jackson/core/JsonParser$Feature"); - if (_c_JsonParser_Feature == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser_Feature, &_m_JsonParser_Feature__enabledIn, - "enabledIn", "(I)Z"); - if (_m_JsonParser_Feature__enabledIn == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonParser_Feature__enabledIn, flags); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser_Feature__getMask = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser_Feature__getMask(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser_Feature, - "com/fasterxml/jackson/core/JsonParser$Feature"); - if (_c_JsonParser_Feature == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser_Feature, &_m_JsonParser_Feature__getMask, "getMask", - "()I"); - if (_m_JsonParser_Feature__getMask == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_JsonParser_Feature__getMask); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -// com.fasterxml.jackson.core.JsonParser$NumberType -jclass _c_JsonParser_NumberType = NULL; - -jmethodID _m_JsonParser_NumberType__values = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser_NumberType__values() { - load_env(); - load_class_global_ref(&_c_JsonParser_NumberType, - "com/fasterxml/jackson/core/JsonParser$NumberType"); - if (_c_JsonParser_NumberType == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_JsonParser_NumberType, - &_m_JsonParser_NumberType__values, "values", - "()[Lcom/fasterxml/jackson/core/JsonParser$NumberType;"); - if (_m_JsonParser_NumberType__values == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_JsonParser_NumberType, _m_JsonParser_NumberType__values); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser_NumberType__valueOf = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser_NumberType__valueOf(jobject name) { - load_env(); - load_class_global_ref(&_c_JsonParser_NumberType, - "com/fasterxml/jackson/core/JsonParser$NumberType"); - if (_c_JsonParser_NumberType == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_JsonParser_NumberType, &_m_JsonParser_NumberType__valueOf, "valueOf", - "(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonParser$NumberType;"); - if (_m_JsonParser_NumberType__valueOf == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_JsonParser_NumberType, _m_JsonParser_NumberType__valueOf, - name); - return to_global_ref_result(_result); -} - -// com.fasterxml.jackson.core.JsonParser -jclass _c_JsonParser = NULL; - -jmethodID _m_JsonParser__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__new0() { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__new0, "", "()V"); - if (_m_JsonParser__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_JsonParser, _m_JsonParser__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__new1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__new1(int32_t features) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__new1, "", "(I)V"); - if (_m_JsonParser__new1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_JsonParser, - _m_JsonParser__new1, features); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getCodec = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getCodec(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getCodec, "getCodec", - "()Lcom/fasterxml/jackson/core/ObjectCodec;"); - if (_m_JsonParser__getCodec == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__getCodec); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__setCodec = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__setCodec(jobject self_, jobject oc) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__setCodec, "setCodec", - "(Lcom/fasterxml/jackson/core/ObjectCodec;)V"); - if (_m_JsonParser__setCodec == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_JsonParser__setCodec, oc); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getInputSource = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getInputSource(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getInputSource, "getInputSource", - "()Ljava/lang/Object;"); - if (_m_JsonParser__getInputSource == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__getInputSource); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__setRequestPayloadOnError = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__setRequestPayloadOnError(jobject self_, jobject payload) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__setRequestPayloadOnError, - "setRequestPayloadOnError", - "(Lcom/fasterxml/jackson/core/util/RequestPayload;)V"); - if (_m_JsonParser__setRequestPayloadOnError == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_JsonParser__setRequestPayloadOnError, payload); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__setRequestPayloadOnError1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__setRequestPayloadOnError1(jobject self_, - jobject payload, - jobject charset) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__setRequestPayloadOnError1, - "setRequestPayloadOnError", "([BLjava/lang/String;)V"); - if (_m_JsonParser__setRequestPayloadOnError1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_JsonParser__setRequestPayloadOnError1, payload, - charset); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__setRequestPayloadOnError2 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__setRequestPayloadOnError2(jobject self_, - jobject payload) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__setRequestPayloadOnError2, - "setRequestPayloadOnError", "(Ljava/lang/String;)V"); - if (_m_JsonParser__setRequestPayloadOnError2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_JsonParser__setRequestPayloadOnError2, payload); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__setSchema = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__setSchema(jobject self_, jobject schema) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__setSchema, "setSchema", - "(Lcom/fasterxml/jackson/core/FormatSchema;)V"); - if (_m_JsonParser__setSchema == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_JsonParser__setSchema, schema); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getSchema = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getSchema(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getSchema, "getSchema", - "()Lcom/fasterxml/jackson/core/FormatSchema;"); - if (_m_JsonParser__getSchema == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__getSchema); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__canUseSchema = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__canUseSchema(jobject self_, jobject schema) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__canUseSchema, "canUseSchema", - "(Lcom/fasterxml/jackson/core/FormatSchema;)Z"); - if (_m_JsonParser__canUseSchema == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonParser__canUseSchema, schema); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__requiresCustomCodec = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__requiresCustomCodec(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__requiresCustomCodec, - "requiresCustomCodec", "()Z"); - if (_m_JsonParser__requiresCustomCodec == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonParser__requiresCustomCodec); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__canParseAsync = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__canParseAsync(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__canParseAsync, "canParseAsync", - "()Z"); - if (_m_JsonParser__canParseAsync == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_JsonParser__canParseAsync); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getNonBlockingInputFeeder = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getNonBlockingInputFeeder(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getNonBlockingInputFeeder, - "getNonBlockingInputFeeder", - "()Lcom/fasterxml/jackson/core/async/NonBlockingInputFeeder;"); - if (_m_JsonParser__getNonBlockingInputFeeder == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__getNonBlockingInputFeeder); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getReadCapabilities = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getReadCapabilities(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getReadCapabilities, - "getReadCapabilities", - "()Lcom/fasterxml/jackson/core/util/JacksonFeatureSet;"); - if (_m_JsonParser__getReadCapabilities == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__getReadCapabilities); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__version = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__version(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__version, "version", - "()Lcom/fasterxml/jackson/core/Version;"); - if (_m_JsonParser__version == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__version); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__close = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__close(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__close, "close", "()V"); - if (_m_JsonParser__close == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_JsonParser__close); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__isClosed = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__isClosed(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__isClosed, "isClosed", "()Z"); - if (_m_JsonParser__isClosed == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_JsonParser__isClosed); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getParsingContext = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getParsingContext(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getParsingContext, - "getParsingContext", - "()Lcom/fasterxml/jackson/core/JsonStreamContext;"); - if (_m_JsonParser__getParsingContext == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__getParsingContext); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__currentLocation = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__currentLocation(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__currentLocation, "currentLocation", - "()Lcom/fasterxml/jackson/core/JsonLocation;"); - if (_m_JsonParser__currentLocation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod(jniEnv, self_, - _m_JsonParser__currentLocation); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__currentTokenLocation = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__currentTokenLocation(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__currentTokenLocation, - "currentTokenLocation", - "()Lcom/fasterxml/jackson/core/JsonLocation;"); - if (_m_JsonParser__currentTokenLocation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__currentTokenLocation); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getCurrentLocation = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getCurrentLocation(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getCurrentLocation, - "getCurrentLocation", - "()Lcom/fasterxml/jackson/core/JsonLocation;"); - if (_m_JsonParser__getCurrentLocation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__getCurrentLocation); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getTokenLocation = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getTokenLocation(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getTokenLocation, - "getTokenLocation", - "()Lcom/fasterxml/jackson/core/JsonLocation;"); - if (_m_JsonParser__getTokenLocation == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__getTokenLocation); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__currentValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__currentValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__currentValue, "currentValue", - "()Ljava/lang/Object;"); - if (_m_JsonParser__currentValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__currentValue); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__assignCurrentValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__assignCurrentValue(jobject self_, jobject v) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__assignCurrentValue, - "assignCurrentValue", "(Ljava/lang/Object;)V"); - if (_m_JsonParser__assignCurrentValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_JsonParser__assignCurrentValue, - v); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getCurrentValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getCurrentValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getCurrentValue, "getCurrentValue", - "()Ljava/lang/Object;"); - if (_m_JsonParser__getCurrentValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod(jniEnv, self_, - _m_JsonParser__getCurrentValue); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__setCurrentValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__setCurrentValue(jobject self_, jobject v) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__setCurrentValue, "setCurrentValue", - "(Ljava/lang/Object;)V"); - if (_m_JsonParser__setCurrentValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_JsonParser__setCurrentValue, v); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__releaseBuffered = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__releaseBuffered(jobject self_, jobject out) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__releaseBuffered, "releaseBuffered", - "(Ljava/io/OutputStream;)I"); - if (_m_JsonParser__releaseBuffered == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_JsonParser__releaseBuffered, out); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__releaseBuffered1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__releaseBuffered1(jobject self_, jobject w) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__releaseBuffered1, - "releaseBuffered", "(Ljava/io/Writer;)I"); - if (_m_JsonParser__releaseBuffered1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_JsonParser__releaseBuffered1, w); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__enable = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__enable(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__enable, "enable", - "(Lcom/fasterxml/jackson/core/JsonParser$Feature;)Lcom/fasterxml/" - "jackson/core/JsonParser;"); - if (_m_JsonParser__enable == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__enable, f); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__disable = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__disable(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__disable, "disable", - "(Lcom/fasterxml/jackson/core/JsonParser$Feature;)Lcom/fasterxml/" - "jackson/core/JsonParser;"); - if (_m_JsonParser__disable == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__disable, f); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__configure = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__configure(jobject self_, jobject f, uint8_t state) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__configure, "configure", - "(Lcom/fasterxml/jackson/core/JsonParser$Feature;Z)Lcom/" - "fasterxml/jackson/core/JsonParser;"); - if (_m_JsonParser__configure == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__configure, f, state); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__isEnabled = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__isEnabled(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__isEnabled, "isEnabled", - "(Lcom/fasterxml/jackson/core/JsonParser$Feature;)Z"); - if (_m_JsonParser__isEnabled == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_JsonParser__isEnabled, f); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__isEnabled1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__isEnabled1(jobject self_, jobject f) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__isEnabled1, "isEnabled", - "(Lcom/fasterxml/jackson/core/StreamReadFeature;)Z"); - if (_m_JsonParser__isEnabled1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_JsonParser__isEnabled1, f); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getFeatureMask = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getFeatureMask(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getFeatureMask, "getFeatureMask", - "()I"); - if (_m_JsonParser__getFeatureMask == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_JsonParser__getFeatureMask); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__setFeatureMask = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__setFeatureMask(jobject self_, int32_t mask) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__setFeatureMask, "setFeatureMask", - "(I)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonParser__setFeatureMask == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__setFeatureMask, mask); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__overrideStdFeatures = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__overrideStdFeatures(jobject self_, - int32_t values, - int32_t mask) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__overrideStdFeatures, - "overrideStdFeatures", - "(II)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonParser__overrideStdFeatures == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__overrideStdFeatures, values, mask); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getFormatFeatures = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getFormatFeatures(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getFormatFeatures, - "getFormatFeatures", "()I"); - if (_m_JsonParser__getFormatFeatures == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_JsonParser__getFormatFeatures); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__overrideFormatFeatures = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__overrideFormatFeatures(jobject self_, - int32_t values, - int32_t mask) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__overrideFormatFeatures, - "overrideFormatFeatures", - "(II)Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonParser__overrideFormatFeatures == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__overrideFormatFeatures, values, mask); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__nextToken = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__nextToken(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__nextToken, "nextToken", - "()Lcom/fasterxml/jackson/core/JsonToken;"); - if (_m_JsonParser__nextToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__nextToken); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__nextValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__nextValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__nextValue, "nextValue", - "()Lcom/fasterxml/jackson/core/JsonToken;"); - if (_m_JsonParser__nextValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__nextValue); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__nextFieldName = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__nextFieldName(jobject self_, jobject str) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__nextFieldName, "nextFieldName", - "(Lcom/fasterxml/jackson/core/SerializableString;)Z"); - if (_m_JsonParser__nextFieldName == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonParser__nextFieldName, str); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__nextFieldName1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__nextFieldName1(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__nextFieldName1, "nextFieldName", - "()Ljava/lang/String;"); - if (_m_JsonParser__nextFieldName1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__nextFieldName1); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__nextTextValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__nextTextValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__nextTextValue, "nextTextValue", - "()Ljava/lang/String;"); - if (_m_JsonParser__nextTextValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__nextTextValue); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__nextIntValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__nextIntValue(jobject self_, int32_t defaultValue) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__nextIntValue, "nextIntValue", - "(I)I"); - if (_m_JsonParser__nextIntValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_JsonParser__nextIntValue, defaultValue); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__nextLongValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__nextLongValue(jobject self_, int64_t defaultValue) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__nextLongValue, "nextLongValue", - "(J)J"); - if (_m_JsonParser__nextLongValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int64_t _result = (*jniEnv)->CallLongMethod( - jniEnv, self_, _m_JsonParser__nextLongValue, defaultValue); - return (JniResult){.value = {.j = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__nextBooleanValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__nextBooleanValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__nextBooleanValue, - "nextBooleanValue", "()Ljava/lang/Boolean;"); - if (_m_JsonParser__nextBooleanValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__nextBooleanValue); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__skipChildren = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__skipChildren(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__skipChildren, "skipChildren", - "()Lcom/fasterxml/jackson/core/JsonParser;"); - if (_m_JsonParser__skipChildren == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__skipChildren); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__finishToken = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__finishToken(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__finishToken, "finishToken", "()V"); - if (_m_JsonParser__finishToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_JsonParser__finishToken); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__currentToken = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__currentToken(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__currentToken, "currentToken", - "()Lcom/fasterxml/jackson/core/JsonToken;"); - if (_m_JsonParser__currentToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__currentToken); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__currentTokenId = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__currentTokenId(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__currentTokenId, "currentTokenId", - "()I"); - if (_m_JsonParser__currentTokenId == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_JsonParser__currentTokenId); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getCurrentToken = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getCurrentToken(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getCurrentToken, "getCurrentToken", - "()Lcom/fasterxml/jackson/core/JsonToken;"); - if (_m_JsonParser__getCurrentToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod(jniEnv, self_, - _m_JsonParser__getCurrentToken); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getCurrentTokenId = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getCurrentTokenId(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getCurrentTokenId, - "getCurrentTokenId", "()I"); - if (_m_JsonParser__getCurrentTokenId == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_JsonParser__getCurrentTokenId); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__hasCurrentToken = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__hasCurrentToken(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__hasCurrentToken, "hasCurrentToken", - "()Z"); - if (_m_JsonParser__hasCurrentToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonParser__hasCurrentToken); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__hasTokenId = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__hasTokenId(jobject self_, int32_t id) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__hasTokenId, "hasTokenId", "(I)Z"); - if (_m_JsonParser__hasTokenId == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod(jniEnv, self_, - _m_JsonParser__hasTokenId, id); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__hasToken = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__hasToken(jobject self_, jobject t) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__hasToken, "hasToken", - "(Lcom/fasterxml/jackson/core/JsonToken;)Z"); - if (_m_JsonParser__hasToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_JsonParser__hasToken, t); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__isExpectedStartArrayToken = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__isExpectedStartArrayToken(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__isExpectedStartArrayToken, - "isExpectedStartArrayToken", "()Z"); - if (_m_JsonParser__isExpectedStartArrayToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonParser__isExpectedStartArrayToken); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__isExpectedStartObjectToken = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__isExpectedStartObjectToken(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__isExpectedStartObjectToken, - "isExpectedStartObjectToken", "()Z"); - if (_m_JsonParser__isExpectedStartObjectToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonParser__isExpectedStartObjectToken); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__isExpectedNumberIntToken = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__isExpectedNumberIntToken(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__isExpectedNumberIntToken, - "isExpectedNumberIntToken", "()Z"); - if (_m_JsonParser__isExpectedNumberIntToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonParser__isExpectedNumberIntToken); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__isNaN = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__isNaN(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__isNaN, "isNaN", "()Z"); - if (_m_JsonParser__isNaN == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_JsonParser__isNaN); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__clearCurrentToken = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__clearCurrentToken(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__clearCurrentToken, - "clearCurrentToken", "()V"); - if (_m_JsonParser__clearCurrentToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_JsonParser__clearCurrentToken); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getLastClearedToken = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getLastClearedToken(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getLastClearedToken, - "getLastClearedToken", - "()Lcom/fasterxml/jackson/core/JsonToken;"); - if (_m_JsonParser__getLastClearedToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__getLastClearedToken); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__overrideCurrentName = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__overrideCurrentName(jobject self_, jobject name) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__overrideCurrentName, - "overrideCurrentName", "(Ljava/lang/String;)V"); - if (_m_JsonParser__overrideCurrentName == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_JsonParser__overrideCurrentName, - name); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getCurrentName = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getCurrentName(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getCurrentName, "getCurrentName", - "()Ljava/lang/String;"); - if (_m_JsonParser__getCurrentName == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__getCurrentName); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__currentName = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__currentName(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__currentName, "currentName", - "()Ljava/lang/String;"); - if (_m_JsonParser__currentName == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__currentName); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getText = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getText(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getText, "getText", - "()Ljava/lang/String;"); - if (_m_JsonParser__getText == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__getText); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getText1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getText1(jobject self_, jobject writer) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getText1, "getText", - "(Ljava/io/Writer;)I"); - if (_m_JsonParser__getText1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_JsonParser__getText1, writer); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getTextCharacters = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getTextCharacters(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getTextCharacters, - "getTextCharacters", "()[C"); - if (_m_JsonParser__getTextCharacters == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__getTextCharacters); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getTextLength = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getTextLength(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getTextLength, "getTextLength", - "()I"); - if (_m_JsonParser__getTextLength == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_JsonParser__getTextLength); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getTextOffset = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getTextOffset(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getTextOffset, "getTextOffset", - "()I"); - if (_m_JsonParser__getTextOffset == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_JsonParser__getTextOffset); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__hasTextCharacters = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__hasTextCharacters(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__hasTextCharacters, - "hasTextCharacters", "()Z"); - if (_m_JsonParser__hasTextCharacters == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonParser__hasTextCharacters); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getNumberValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getNumberValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getNumberValue, "getNumberValue", - "()Ljava/lang/Number;"); - if (_m_JsonParser__getNumberValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__getNumberValue); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getNumberValueExact = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getNumberValueExact(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getNumberValueExact, - "getNumberValueExact", "()Ljava/lang/Number;"); - if (_m_JsonParser__getNumberValueExact == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__getNumberValueExact); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getNumberType = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getNumberType(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getNumberType, "getNumberType", - "()Lcom/fasterxml/jackson/core/JsonParser$NumberType;"); - if (_m_JsonParser__getNumberType == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__getNumberType); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getByteValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getByteValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getByteValue, "getByteValue", - "()B"); - if (_m_JsonParser__getByteValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int8_t _result = - (*jniEnv)->CallByteMethod(jniEnv, self_, _m_JsonParser__getByteValue); - return (JniResult){.value = {.b = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getShortValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getShortValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getShortValue, "getShortValue", - "()S"); - if (_m_JsonParser__getShortValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int16_t _result = - (*jniEnv)->CallShortMethod(jniEnv, self_, _m_JsonParser__getShortValue); - return (JniResult){.value = {.s = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getIntValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getIntValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getIntValue, "getIntValue", "()I"); - if (_m_JsonParser__getIntValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_JsonParser__getIntValue); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getLongValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getLongValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getLongValue, "getLongValue", - "()J"); - if (_m_JsonParser__getLongValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int64_t _result = - (*jniEnv)->CallLongMethod(jniEnv, self_, _m_JsonParser__getLongValue); - return (JniResult){.value = {.j = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getBigIntegerValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getBigIntegerValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getBigIntegerValue, - "getBigIntegerValue", "()Ljava/math/BigInteger;"); - if (_m_JsonParser__getBigIntegerValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__getBigIntegerValue); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getFloatValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getFloatValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getFloatValue, "getFloatValue", - "()F"); - if (_m_JsonParser__getFloatValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - float _result = - (*jniEnv)->CallFloatMethod(jniEnv, self_, _m_JsonParser__getFloatValue); - return (JniResult){.value = {.f = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getDoubleValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getDoubleValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getDoubleValue, "getDoubleValue", - "()D"); - if (_m_JsonParser__getDoubleValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - double _result = - (*jniEnv)->CallDoubleMethod(jniEnv, self_, _m_JsonParser__getDoubleValue); - return (JniResult){.value = {.d = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getDecimalValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getDecimalValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getDecimalValue, "getDecimalValue", - "()Ljava/math/BigDecimal;"); - if (_m_JsonParser__getDecimalValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod(jniEnv, self_, - _m_JsonParser__getDecimalValue); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getBooleanValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getBooleanValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getBooleanValue, "getBooleanValue", - "()Z"); - if (_m_JsonParser__getBooleanValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonParser__getBooleanValue); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getEmbeddedObject = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getEmbeddedObject(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getEmbeddedObject, - "getEmbeddedObject", "()Ljava/lang/Object;"); - if (_m_JsonParser__getEmbeddedObject == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__getEmbeddedObject); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getBinaryValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getBinaryValue(jobject self_, jobject bv) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getBinaryValue, "getBinaryValue", - "(Lcom/fasterxml/jackson/core/Base64Variant;)[B"); - if (_m_JsonParser__getBinaryValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__getBinaryValue, bv); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getBinaryValue1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getBinaryValue1(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getBinaryValue1, "getBinaryValue", - "()[B"); - if (_m_JsonParser__getBinaryValue1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod(jniEnv, self_, - _m_JsonParser__getBinaryValue1); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__readBinaryValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__readBinaryValue(jobject self_, jobject out) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__readBinaryValue, "readBinaryValue", - "(Ljava/io/OutputStream;)I"); - if (_m_JsonParser__readBinaryValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_JsonParser__readBinaryValue, out); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__readBinaryValue1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__readBinaryValue1(jobject self_, jobject bv, jobject out) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_JsonParser, &_m_JsonParser__readBinaryValue1, "readBinaryValue", - "(Lcom/fasterxml/jackson/core/Base64Variant;Ljava/io/OutputStream;)I"); - if (_m_JsonParser__readBinaryValue1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_JsonParser__readBinaryValue1, bv, out); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getValueAsInt = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getValueAsInt(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getValueAsInt, "getValueAsInt", - "()I"); - if (_m_JsonParser__getValueAsInt == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_JsonParser__getValueAsInt); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getValueAsInt1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getValueAsInt1(jobject self_, int32_t def) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getValueAsInt1, "getValueAsInt", - "(I)I"); - if (_m_JsonParser__getValueAsInt1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_JsonParser__getValueAsInt1, def); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getValueAsLong = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getValueAsLong(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getValueAsLong, "getValueAsLong", - "()J"); - if (_m_JsonParser__getValueAsLong == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int64_t _result = - (*jniEnv)->CallLongMethod(jniEnv, self_, _m_JsonParser__getValueAsLong); - return (JniResult){.value = {.j = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getValueAsLong1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getValueAsLong1(jobject self_, int64_t def) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getValueAsLong1, "getValueAsLong", - "(J)J"); - if (_m_JsonParser__getValueAsLong1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int64_t _result = (*jniEnv)->CallLongMethod( - jniEnv, self_, _m_JsonParser__getValueAsLong1, def); - return (JniResult){.value = {.j = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getValueAsDouble = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getValueAsDouble(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getValueAsDouble, - "getValueAsDouble", "()D"); - if (_m_JsonParser__getValueAsDouble == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - double _result = (*jniEnv)->CallDoubleMethod(jniEnv, self_, - _m_JsonParser__getValueAsDouble); - return (JniResult){.value = {.d = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getValueAsDouble1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getValueAsDouble1(jobject self_, double def) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getValueAsDouble1, - "getValueAsDouble", "(D)D"); - if (_m_JsonParser__getValueAsDouble1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - double _result = (*jniEnv)->CallDoubleMethod( - jniEnv, self_, _m_JsonParser__getValueAsDouble1, def); - return (JniResult){.value = {.d = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getValueAsBoolean = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getValueAsBoolean(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getValueAsBoolean, - "getValueAsBoolean", "()Z"); - if (_m_JsonParser__getValueAsBoolean == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonParser__getValueAsBoolean); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getValueAsBoolean1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getValueAsBoolean1(jobject self_, uint8_t def) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getValueAsBoolean1, - "getValueAsBoolean", "(Z)Z"); - if (_m_JsonParser__getValueAsBoolean1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonParser__getValueAsBoolean1, def); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getValueAsString = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getValueAsString(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getValueAsString, - "getValueAsString", "()Ljava/lang/String;"); - if (_m_JsonParser__getValueAsString == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__getValueAsString); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getValueAsString1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getValueAsString1(jobject self_, jobject def) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getValueAsString1, - "getValueAsString", "(Ljava/lang/String;)Ljava/lang/String;"); - if (_m_JsonParser__getValueAsString1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__getValueAsString1, def); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__canReadObjectId = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__canReadObjectId(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__canReadObjectId, "canReadObjectId", - "()Z"); - if (_m_JsonParser__canReadObjectId == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = (*jniEnv)->CallBooleanMethod( - jniEnv, self_, _m_JsonParser__canReadObjectId); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__canReadTypeId = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__canReadTypeId(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__canReadTypeId, "canReadTypeId", - "()Z"); - if (_m_JsonParser__canReadTypeId == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_JsonParser__canReadTypeId); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonParser__getObjectId = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getObjectId(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getObjectId, "getObjectId", - "()Ljava/lang/Object;"); - if (_m_JsonParser__getObjectId == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__getObjectId); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__getTypeId = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__getTypeId(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__getTypeId, "getTypeId", - "()Ljava/lang/Object;"); - if (_m_JsonParser__getTypeId == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonParser__getTypeId); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__readValueAs = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__readValueAs(jobject self_, jobject valueType) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__readValueAs, "readValueAs", - "(Ljava/lang/Class;)Ljava/lang/Object;"); - if (_m_JsonParser__readValueAs == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__readValueAs, valueType); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__readValueAs1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__readValueAs1(jobject self_, jobject valueTypeRef) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_JsonParser, &_m_JsonParser__readValueAs1, "readValueAs", - "(Lcom/fasterxml/jackson/core/type/TypeReference;)Ljava/lang/Object;"); - if (_m_JsonParser__readValueAs1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__readValueAs1, valueTypeRef); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__readValuesAs = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__readValuesAs(jobject self_, jobject valueType) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__readValuesAs, "readValuesAs", - "(Ljava/lang/Class;)Ljava/util/Iterator;"); - if (_m_JsonParser__readValuesAs == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__readValuesAs, valueType); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__readValuesAs1 = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__readValuesAs1(jobject self_, jobject valueTypeRef) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_JsonParser, &_m_JsonParser__readValuesAs1, "readValuesAs", - "(Lcom/fasterxml/jackson/core/type/TypeReference;)Ljava/util/Iterator;"); - if (_m_JsonParser__readValuesAs1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_JsonParser__readValuesAs1, valueTypeRef); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonParser__readValueAsTree = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonParser__readValueAsTree(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonParser, &_m_JsonParser__readValueAsTree, "readValueAsTree", - "()Lcom/fasterxml/jackson/core/TreeNode;"); - if (_m_JsonParser__readValueAsTree == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod(jniEnv, self_, - _m_JsonParser__readValueAsTree); - return to_global_ref_result(_result); -} - -jfieldID _f_JsonParser__DEFAULT_READ_CAPABILITIES = NULL; -FFI_PLUGIN_EXPORT -JniResult get_JsonParser__DEFAULT_READ_CAPABILITIES() { - load_env(); - load_class_global_ref(&_c_JsonParser, - "com/fasterxml/jackson/core/JsonParser"); - if (_c_JsonParser == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_JsonParser, &_f_JsonParser__DEFAULT_READ_CAPABILITIES, - "DEFAULT_READ_CAPABILITIES", - "Lcom/fasterxml/jackson/core/util/JacksonFeatureSet;"); - jobject _result = (*jniEnv)->GetStaticObjectField( - jniEnv, _c_JsonParser, _f_JsonParser__DEFAULT_READ_CAPABILITIES); - return to_global_ref_result(_result); -} - -// com.fasterxml.jackson.core.JsonToken -jclass _c_JsonToken = NULL; - -jmethodID _m_JsonToken__values = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonToken__values() { - load_env(); - load_class_global_ref(&_c_JsonToken, "com/fasterxml/jackson/core/JsonToken"); - if (_c_JsonToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_JsonToken, &_m_JsonToken__values, "values", - "()[Lcom/fasterxml/jackson/core/JsonToken;"); - if (_m_JsonToken__values == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod(jniEnv, _c_JsonToken, - _m_JsonToken__values); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonToken__valueOf = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonToken__valueOf(jobject name) { - load_env(); - load_class_global_ref(&_c_JsonToken, "com/fasterxml/jackson/core/JsonToken"); - if (_c_JsonToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_JsonToken, &_m_JsonToken__valueOf, "valueOf", - "(Ljava/lang/String;)Lcom/fasterxml/jackson/core/JsonToken;"); - if (_m_JsonToken__valueOf == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_JsonToken, _m_JsonToken__valueOf, name); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonToken__id = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonToken__id(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonToken, "com/fasterxml/jackson/core/JsonToken"); - if (_c_JsonToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonToken, &_m_JsonToken__id, "id", "()I"); - if (_m_JsonToken__id == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod(jniEnv, self_, _m_JsonToken__id); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonToken__asString = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonToken__asString(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonToken, "com/fasterxml/jackson/core/JsonToken"); - if (_c_JsonToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonToken, &_m_JsonToken__asString, "asString", - "()Ljava/lang/String;"); - if (_m_JsonToken__asString == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonToken__asString); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonToken__asCharArray = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonToken__asCharArray(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonToken, "com/fasterxml/jackson/core/JsonToken"); - if (_c_JsonToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonToken, &_m_JsonToken__asCharArray, "asCharArray", "()[C"); - if (_m_JsonToken__asCharArray == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonToken__asCharArray); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonToken__asByteArray = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonToken__asByteArray(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonToken, "com/fasterxml/jackson/core/JsonToken"); - if (_c_JsonToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonToken, &_m_JsonToken__asByteArray, "asByteArray", "()[B"); - if (_m_JsonToken__asByteArray == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonToken__asByteArray); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonToken__isNumeric = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonToken__isNumeric(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonToken, "com/fasterxml/jackson/core/JsonToken"); - if (_c_JsonToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonToken, &_m_JsonToken__isNumeric, "isNumeric", "()Z"); - if (_m_JsonToken__isNumeric == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_JsonToken__isNumeric); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonToken__isStructStart = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonToken__isStructStart(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonToken, "com/fasterxml/jackson/core/JsonToken"); - if (_c_JsonToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonToken, &_m_JsonToken__isStructStart, "isStructStart", - "()Z"); - if (_m_JsonToken__isStructStart == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_JsonToken__isStructStart); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonToken__isStructEnd = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonToken__isStructEnd(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonToken, "com/fasterxml/jackson/core/JsonToken"); - if (_c_JsonToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonToken, &_m_JsonToken__isStructEnd, "isStructEnd", "()Z"); - if (_m_JsonToken__isStructEnd == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_JsonToken__isStructEnd); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonToken__isScalarValue = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonToken__isScalarValue(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonToken, "com/fasterxml/jackson/core/JsonToken"); - if (_c_JsonToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonToken, &_m_JsonToken__isScalarValue, "isScalarValue", - "()Z"); - if (_m_JsonToken__isScalarValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_JsonToken__isScalarValue); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_JsonToken__isBoolean = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonToken__isBoolean(jobject self_) { - load_env(); - load_class_global_ref(&_c_JsonToken, "com/fasterxml/jackson/core/JsonToken"); - if (_c_JsonToken == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_JsonToken, &_m_JsonToken__isBoolean, "isBoolean", "()Z"); - if (_m_JsonToken__isBoolean == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_JsonToken__isBoolean); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} diff --git a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/_init.dart b/pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/_init.dart deleted file mode 100644 index 8018e7d3c..000000000 --- a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/_init.dart +++ /dev/null @@ -1,24 +0,0 @@ -// Generated from jackson-core which is licensed under the Apache License 2.0. -// The following copyright from the original authors applies. -// See https://github.com/FasterXML/jackson-core/blob/2.14/LICENSE -// -// Copyright (c) 2007 - The Jackson Project Authors -// Licensed under the Apache License, Version 2.0 (the "License") -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import "dart:ffi" as ffi; -import "package:jni/internal_helpers_for_jnigen.dart"; - -// Auto-generated initialization code. - -final ffi.Pointer Function(String sym) jniLookup = - ProtectedJniExtensions.initGeneratedLibrary("jackson_core"); diff --git a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/JsonFactory.dart b/pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/JsonFactory.dart deleted file mode 100644 index de3f0e17d..000000000 --- a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/JsonFactory.dart +++ /dev/null @@ -1,2013 +0,0 @@ -// Generated from jackson-core which is licensed under the Apache License 2.0. -// The following copyright from the original authors applies. -// See https://github.com/FasterXML/jackson-core/blob/2.14/LICENSE -// -// Copyright (c) 2007 - The Jackson Project Authors -// Licensed under the Apache License, Version 2.0 (the "License") -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Autogenerated by jnigen. DO NOT EDIT! - -// ignore_for_file: annotate_overrides -// ignore_for_file: camel_case_extensions -// ignore_for_file: camel_case_types -// ignore_for_file: constant_identifier_names -// ignore_for_file: doc_directive_unknown -// ignore_for_file: file_names -// ignore_for_file: lines_longer_than_80_chars -// ignore_for_file: no_leading_underscores_for_local_identifiers -// ignore_for_file: non_constant_identifier_names -// ignore_for_file: overridden_fields -// ignore_for_file: unnecessary_cast -// ignore_for_file: unused_element -// ignore_for_file: unused_field -// ignore_for_file: unused_import -// ignore_for_file: unused_local_variable -// ignore_for_file: unused_shown_name -// ignore_for_file: use_super_parameters - -import "dart:isolate" show ReceivePort; -import "dart:ffi" as ffi; -import "package:jni/internal_helpers_for_jnigen.dart"; -import "package:jni/jni.dart" as jni; - -import "JsonParser.dart" as jsonparser_; -import "../../../../_init.dart"; - -/// from: com.fasterxml.jackson.core.JsonFactory$Feature -/// -/// Enumeration that defines all on/off features that can only be -/// changed for JsonFactory. -class JsonFactory_Feature extends jni.JObject { - @override - late final jni.JObjType $type = type; - - JsonFactory_Feature.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $JsonFactory_FeatureType(); - static final _values = - jniLookup>( - "JsonFactory_Feature__values") - .asFunction(); - - /// from: static public com.fasterxml.jackson.core.JsonFactory.Feature[] values() - /// The returned object must be released after use, by calling the [release] method. - static jni.JArray values() { - return _values().object(const jni.JArrayType($JsonFactory_FeatureType())); - } - - static final _valueOf = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory_Feature__valueOf") - .asFunction)>(); - - /// from: static public com.fasterxml.jackson.core.JsonFactory.Feature valueOf(java.lang.String name) - /// The returned object must be released after use, by calling the [release] method. - static JsonFactory_Feature valueOf( - jni.JString name, - ) { - return _valueOf(name.reference.pointer) - .object(const $JsonFactory_FeatureType()); - } - - static final _collectDefaults = - jniLookup>( - "JsonFactory_Feature__collectDefaults") - .asFunction(); - - /// from: static public int collectDefaults() - /// - /// Method that calculates bit set (flags) of all features that - /// are enabled by default. - ///@return Bit field of features enabled by default - static int collectDefaults() { - return _collectDefaults().integer; - } - - static final _enabledByDefault = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory_Feature__enabledByDefault") - .asFunction)>(); - - /// from: public boolean enabledByDefault() - bool enabledByDefault() { - return _enabledByDefault(reference.pointer).boolean; - } - - static final _enabledIn = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Int32)>>("JsonFactory_Feature__enabledIn") - .asFunction, int)>(); - - /// from: public boolean enabledIn(int flags) - bool enabledIn( - int flags, - ) { - return _enabledIn(reference.pointer, flags).boolean; - } - - static final _getMask = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory_Feature__getMask") - .asFunction)>(); - - /// from: public int getMask() - int getMask() { - return _getMask(reference.pointer).integer; - } -} - -final class $JsonFactory_FeatureType extends jni.JObjType { - const $JsonFactory_FeatureType(); - - @override - String get signature => r"Lcom/fasterxml/jackson/core/JsonFactory$Feature;"; - - @override - JsonFactory_Feature fromReference(jni.JReference reference) => - JsonFactory_Feature.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($JsonFactory_FeatureType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($JsonFactory_FeatureType) && - other is $JsonFactory_FeatureType; - } -} - -/// from: com.fasterxml.jackson.core.JsonFactory -/// -/// The main factory class of Jackson package, used to configure and -/// construct reader (aka parser, JsonParser) -/// and writer (aka generator, JsonGenerator) -/// instances. -/// -/// Factory instances are thread-safe and reusable after configuration -/// (if any). Typically applications and services use only a single -/// globally shared factory instance, unless they need differently -/// configured factories. Factory reuse is important if efficiency matters; -/// most recycling of expensive construct is done on per-factory basis. -/// -/// Creation of a factory instance is a light-weight operation, -/// and since there is no need for pluggable alternative implementations -/// (as there is no "standard" JSON processor API to implement), -/// the default constructor is used for constructing factory -/// instances. -///@author Tatu Saloranta -class JsonFactory extends jni.JObject { - @override - late final jni.JObjType $type = type; - - JsonFactory.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $JsonFactoryType(); - static final _get_FORMAT_NAME_JSON = - jniLookup>( - "get_JsonFactory__FORMAT_NAME_JSON") - .asFunction(); - - /// from: static public final java.lang.String FORMAT_NAME_JSON - /// The returned object must be released after use, by calling the [release] method. - /// - /// Name used to identify JSON format - /// (and returned by \#getFormatName() - static jni.JString get FORMAT_NAME_JSON => - _get_FORMAT_NAME_JSON().object(const jni.JStringType()); - - static final _get_DEFAULT_FACTORY_FEATURE_FLAGS = - jniLookup>( - "get_JsonFactory__DEFAULT_FACTORY_FEATURE_FLAGS") - .asFunction(); - - /// from: static protected final int DEFAULT_FACTORY_FEATURE_FLAGS - /// - /// Bitfield (set of flags) of all factory features that are enabled by default. - static int get DEFAULT_FACTORY_FEATURE_FLAGS => - _get_DEFAULT_FACTORY_FEATURE_FLAGS().integer; - - static final _get_DEFAULT_PARSER_FEATURE_FLAGS = - jniLookup>( - "get_JsonFactory__DEFAULT_PARSER_FEATURE_FLAGS") - .asFunction(); - - /// from: static protected final int DEFAULT_PARSER_FEATURE_FLAGS - /// - /// Bitfield (set of flags) of all parser features that are enabled - /// by default. - static int get DEFAULT_PARSER_FEATURE_FLAGS => - _get_DEFAULT_PARSER_FEATURE_FLAGS().integer; - - static final _get_DEFAULT_GENERATOR_FEATURE_FLAGS = - jniLookup>( - "get_JsonFactory__DEFAULT_GENERATOR_FEATURE_FLAGS") - .asFunction(); - - /// from: static protected final int DEFAULT_GENERATOR_FEATURE_FLAGS - /// - /// Bitfield (set of flags) of all generator features that are enabled - /// by default. - static int get DEFAULT_GENERATOR_FEATURE_FLAGS => - _get_DEFAULT_GENERATOR_FEATURE_FLAGS().integer; - - static final _get_DEFAULT_ROOT_VALUE_SEPARATOR = - jniLookup>( - "get_JsonFactory__DEFAULT_ROOT_VALUE_SEPARATOR") - .asFunction(); - - /// from: static public final com.fasterxml.jackson.core.SerializableString DEFAULT_ROOT_VALUE_SEPARATOR - /// The returned object must be released after use, by calling the [release] method. - static jni.JObject get DEFAULT_ROOT_VALUE_SEPARATOR => - _get_DEFAULT_ROOT_VALUE_SEPARATOR().object(const jni.JObjectType()); - - static final _new0 = jniLookup>( - "JsonFactory__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - /// - /// Default constructor used to create factory instances. - /// Creation of a factory instance is a light-weight operation, - /// but it is still a good idea to reuse limited number of - /// factory instances (and quite often just a single instance): - /// factories are used as context for storing some reused - /// processing objects (such as symbol tables parsers use) - /// and this reuse only works within context of a single - /// factory instance. - factory JsonFactory() { - return JsonFactory.fromReference(_new0().reference); - } - - static final _new1 = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__new1") - .asFunction)>(); - - /// from: public void (com.fasterxml.jackson.core.ObjectCodec oc) - /// The returned object must be released after use, by calling the [release] method. - factory JsonFactory.new1( - jni.JObject oc, - ) { - return JsonFactory.fromReference(_new1(oc.reference.pointer).reference); - } - - static final _new2 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__new2") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: protected void (com.fasterxml.jackson.core.JsonFactory src, com.fasterxml.jackson.core.ObjectCodec codec) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Constructor used when copy()ing a factory instance. - ///@param src Original factory to copy settings from - ///@param codec Databinding-level codec to use, if any - ///@since 2.2.1 - factory JsonFactory.new2( - JsonFactory src, - jni.JObject codec, - ) { - return JsonFactory.fromReference( - _new2(src.reference.pointer, codec.reference.pointer).reference); - } - - static final _new3 = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__new3") - .asFunction)>(); - - /// from: public void (com.fasterxml.jackson.core.JsonFactoryBuilder b) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Constructor used by JsonFactoryBuilder for instantiation. - ///@param b Builder that contains settings to use - ///@since 2.10 - factory JsonFactory.new3( - jni.JObject b, - ) { - return JsonFactory.fromReference(_new3(b.reference.pointer).reference); - } - - static final _new4 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Uint8)>>("JsonFactory__new4") - .asFunction, int)>(); - - /// from: protected void (com.fasterxml.jackson.core.TSFBuilder b, boolean bogus) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Constructor for subtypes; needed to work around the fact that before 3.0, - /// this factory has cumbersome dual role as generic type as well as actual - /// implementation for json. - ///@param b Builder that contains settings to use - ///@param bogus Argument only needed to separate constructor signature; ignored - factory JsonFactory.new4( - jni.JObject b, - bool bogus, - ) { - return JsonFactory.fromReference( - _new4(b.reference.pointer, bogus ? 1 : 0).reference); - } - - static final _rebuild = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__rebuild") - .asFunction)>(); - - /// from: public com.fasterxml.jackson.core.TSFBuilder rebuild() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that allows construction of differently configured factory, starting - /// with settings of this factory. - ///@return Builder instance to use - ///@since 2.10 - jni.JObject rebuild() { - return _rebuild(reference.pointer).object(const jni.JObjectType()); - } - - static final _builder = - jniLookup>( - "JsonFactory__builder") - .asFunction(); - - /// from: static public com.fasterxml.jackson.core.TSFBuilder builder() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Main factory method to use for constructing JsonFactory instances with - /// different configuration: creates and returns a builder for collecting configuration - /// settings; instance created by calling {@code build()} after all configuration - /// set. - /// - /// NOTE: signature unfortunately does not expose true implementation type; this - /// will be fixed in 3.0. - ///@return Builder instance to use - static jni.JObject builder() { - return _builder().object(const jni.JObjectType()); - } - - static final _copy = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__copy") - .asFunction)>(); - - /// from: public com.fasterxml.jackson.core.JsonFactory copy() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing a new JsonFactory that has - /// the same settings as this instance, but is otherwise - /// independent (i.e. nothing is actually shared, symbol tables - /// are separate). - /// Note that ObjectCodec reference is not copied but is - /// set to null; caller typically needs to set it after calling - /// this method. Reason for this is that the codec is used for - /// callbacks, and assumption is that there is strict 1-to-1 - /// mapping between codec, factory. Caller has to, then, explicitly - /// set codec after making the copy. - ///@return Copy of this factory instance - ///@since 2.1 - JsonFactory copy() { - return _copy(reference.pointer).object(const $JsonFactoryType()); - } - - static final _readResolve = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__readResolve") - .asFunction)>(); - - /// from: protected java.lang.Object readResolve() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that we need to override to actually make restoration go - /// through constructors etc: needed to allow JDK serializability of - /// factory instances. - /// - /// Note: must be overridden by sub-classes as well. - ///@return Newly constructed instance - jni.JObject readResolve() { - return _readResolve(reference.pointer).object(const jni.JObjectType()); - } - - static final _requiresPropertyOrdering = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__requiresPropertyOrdering") - .asFunction)>(); - - /// from: public boolean requiresPropertyOrdering() - /// - /// Introspection method that higher-level functionality may call - /// to see whether underlying data format requires a stable ordering - /// of object properties or not. - /// This is usually used for determining - /// whether to force a stable ordering (like alphabetic ordering by name) - /// if no ordering if explicitly specified. - /// - /// Default implementation returns false as JSON does NOT - /// require stable ordering. Formats that require ordering include positional - /// textual formats like CSV, and schema-based binary formats - /// like Avro. - ///@return Whether format supported by this factory - /// requires Object properties to be ordered. - ///@since 2.3 - bool requiresPropertyOrdering() { - return _requiresPropertyOrdering(reference.pointer).boolean; - } - - static final _canHandleBinaryNatively = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__canHandleBinaryNatively") - .asFunction)>(); - - /// from: public boolean canHandleBinaryNatively() - /// - /// Introspection method that higher-level functionality may call - /// to see whether underlying data format can read and write binary - /// data natively; that is, embeded it as-is without using encodings - /// such as Base64. - /// - /// Default implementation returns false as JSON does not - /// support native access: all binary content must use Base64 encoding. - /// Most binary formats (like Smile and Avro) support native binary content. - ///@return Whether format supported by this factory - /// supports native binary content - ///@since 2.3 - bool canHandleBinaryNatively() { - return _canHandleBinaryNatively(reference.pointer).boolean; - } - - static final _canUseCharArrays = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__canUseCharArrays") - .asFunction)>(); - - /// from: public boolean canUseCharArrays() - /// - /// Introspection method that can be used by base factory to check - /// whether access using char[] is something that actual - /// parser implementations can take advantage of, over having to - /// use java.io.Reader. Sub-types are expected to override - /// definition; default implementation (suitable for JSON) alleges - /// that optimization are possible; and thereby is likely to try - /// to access java.lang.String content by first copying it into - /// recyclable intermediate buffer. - ///@return Whether access to decoded textual content can be efficiently - /// accessed using parser method {@code getTextCharacters()}. - ///@since 2.4 - bool canUseCharArrays() { - return _canUseCharArrays(reference.pointer).boolean; - } - - static final _canParseAsync = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__canParseAsync") - .asFunction)>(); - - /// from: public boolean canParseAsync() - /// - /// Introspection method that can be used to check whether this - /// factory can create non-blocking parsers: parsers that do not - /// use blocking I/O abstractions but instead use a - /// com.fasterxml.jackson.core.async.NonBlockingInputFeeder. - ///@return Whether this factory supports non-blocking ("async") parsing or - /// not (and consequently whether {@code createNonBlockingXxx()} method(s) work) - ///@since 2.9 - bool canParseAsync() { - return _canParseAsync(reference.pointer).boolean; - } - - static final _getFormatReadFeatureType = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__getFormatReadFeatureType") - .asFunction)>(); - - /// from: public java.lang.Class getFormatReadFeatureType() - /// The returned object must be released after use, by calling the [release] method. - jni.JObject getFormatReadFeatureType() { - return _getFormatReadFeatureType(reference.pointer) - .object(const jni.JObjectType()); - } - - static final _getFormatWriteFeatureType = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__getFormatWriteFeatureType") - .asFunction)>(); - - /// from: public java.lang.Class getFormatWriteFeatureType() - /// The returned object must be released after use, by calling the [release] method. - jni.JObject getFormatWriteFeatureType() { - return _getFormatWriteFeatureType(reference.pointer) - .object(const jni.JObjectType()); - } - - static final _canUseSchema = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__canUseSchema") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public boolean canUseSchema(com.fasterxml.jackson.core.FormatSchema schema) - /// - /// Method that can be used to quickly check whether given schema - /// is something that parsers and/or generators constructed by this - /// factory could use. Note that this means possible use, at the level - /// of data format (i.e. schema is for same data format as parsers and - /// generators this factory constructs); individual schema instances - /// may have further usage restrictions. - ///@param schema Schema instance to check - ///@return Whether parsers and generators constructed by this factory - /// can use specified format schema instance - bool canUseSchema( - jni.JObject schema, - ) { - return _canUseSchema(reference.pointer, schema.reference.pointer).boolean; - } - - static final _getFormatName = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__getFormatName") - .asFunction)>(); - - /// from: public java.lang.String getFormatName() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that returns short textual id identifying format - /// this factory supports. - /// - /// Note: sub-classes should override this method; default - /// implementation will return null for all sub-classes - ///@return Name of the format handled by parsers, generators this factory creates - jni.JString getFormatName() { - return _getFormatName(reference.pointer).object(const jni.JStringType()); - } - - static final _hasFormat = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__hasFormat") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.format.MatchStrength hasFormat(com.fasterxml.jackson.core.format.InputAccessor acc) - /// The returned object must be released after use, by calling the [release] method. - jni.JObject hasFormat( - jni.JObject acc, - ) { - return _hasFormat(reference.pointer, acc.reference.pointer) - .object(const jni.JObjectType()); - } - - static final _requiresCustomCodec = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__requiresCustomCodec") - .asFunction)>(); - - /// from: public boolean requiresCustomCodec() - /// - /// Method that can be called to determine if a custom - /// ObjectCodec is needed for binding data parsed - /// using JsonParser constructed by this factory - /// (which typically also implies the same for serialization - /// with JsonGenerator). - ///@return True if custom codec is needed with parsers and - /// generators created by this factory; false if a general - /// ObjectCodec is enough - ///@since 2.1 - bool requiresCustomCodec() { - return _requiresCustomCodec(reference.pointer).boolean; - } - - static final _hasJSONFormat = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__hasJSONFormat") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: protected com.fasterxml.jackson.core.format.MatchStrength hasJSONFormat(com.fasterxml.jackson.core.format.InputAccessor acc) - /// The returned object must be released after use, by calling the [release] method. - jni.JObject hasJSONFormat( - jni.JObject acc, - ) { - return _hasJSONFormat(reference.pointer, acc.reference.pointer) - .object(const jni.JObjectType()); - } - - static final _version = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__version") - .asFunction)>(); - - /// from: public com.fasterxml.jackson.core.Version version() - /// The returned object must be released after use, by calling the [release] method. - jni.JObject version() { - return _version(reference.pointer).object(const jni.JObjectType()); - } - - static final _configure = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer, ffi.Uint8)>>("JsonFactory__configure") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer, int)>(); - - /// from: public final com.fasterxml.jackson.core.JsonFactory configure(com.fasterxml.jackson.core.JsonFactory.Feature f, boolean state) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for enabling or disabling specified parser feature - /// (check JsonParser.Feature for list of features) - ///@param f Feature to enable/disable - ///@param state Whether to enable or disable the feature - ///@return This factory instance (to allow call chaining) - ///@deprecated since 2.10 use JsonFactoryBuilder\#configure(JsonFactory.Feature, boolean) instead - JsonFactory configure( - JsonFactory_Feature f, - bool state, - ) { - return _configure(reference.pointer, f.reference.pointer, state ? 1 : 0) - .object(const $JsonFactoryType()); - } - - static final _enable = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__enable") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonFactory enable(com.fasterxml.jackson.core.JsonFactory.Feature f) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for enabling specified parser feature - /// (check JsonFactory.Feature for list of features) - ///@param f Feature to enable - ///@return This factory instance (to allow call chaining) - ///@deprecated since 2.10 use JsonFactoryBuilder\#configure(JsonFactory.Feature, boolean) instead - JsonFactory enable( - JsonFactory_Feature f, - ) { - return _enable(reference.pointer, f.reference.pointer) - .object(const $JsonFactoryType()); - } - - static final _disable = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__disable") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonFactory disable(com.fasterxml.jackson.core.JsonFactory.Feature f) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for disabling specified parser features - /// (check JsonFactory.Feature for list of features) - ///@param f Feature to disable - ///@return This factory instance (to allow call chaining) - ///@deprecated since 2.10 use JsonFactoryBuilder\#configure(JsonFactory.Feature, boolean) instead - JsonFactory disable( - JsonFactory_Feature f, - ) { - return _disable(reference.pointer, f.reference.pointer) - .object(const $JsonFactoryType()); - } - - static final _isEnabled = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__isEnabled") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public final boolean isEnabled(com.fasterxml.jackson.core.JsonFactory.Feature f) - /// - /// Checked whether specified parser feature is enabled. - ///@param f Feature to check - ///@return True if the specified feature is enabled - bool isEnabled( - JsonFactory_Feature f, - ) { - return _isEnabled(reference.pointer, f.reference.pointer).boolean; - } - - static final _getParserFeatures = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__getParserFeatures") - .asFunction)>(); - - /// from: public final int getParserFeatures() - int getParserFeatures() { - return _getParserFeatures(reference.pointer).integer; - } - - static final _getGeneratorFeatures = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__getGeneratorFeatures") - .asFunction)>(); - - /// from: public final int getGeneratorFeatures() - int getGeneratorFeatures() { - return _getGeneratorFeatures(reference.pointer).integer; - } - - static final _getFormatParserFeatures = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__getFormatParserFeatures") - .asFunction)>(); - - /// from: public int getFormatParserFeatures() - int getFormatParserFeatures() { - return _getFormatParserFeatures(reference.pointer).integer; - } - - static final _getFormatGeneratorFeatures = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__getFormatGeneratorFeatures") - .asFunction)>(); - - /// from: public int getFormatGeneratorFeatures() - int getFormatGeneratorFeatures() { - return _getFormatGeneratorFeatures(reference.pointer).integer; - } - - static final _configure1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer, ffi.Uint8)>>("JsonFactory__configure1") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer, int)>(); - - /// from: public final com.fasterxml.jackson.core.JsonFactory configure(com.fasterxml.jackson.core.JsonParser.Feature f, boolean state) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for enabling or disabling specified parser feature - /// (check JsonParser.Feature for list of features) - ///@param f Feature to enable/disable - ///@param state Whether to enable or disable the feature - ///@return This factory instance (to allow call chaining) - JsonFactory configure1( - jsonparser_.JsonParser_Feature f, - bool state, - ) { - return _configure1(reference.pointer, f.reference.pointer, state ? 1 : 0) - .object(const $JsonFactoryType()); - } - - static final _enable1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__enable1") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonFactory enable(com.fasterxml.jackson.core.JsonParser.Feature f) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for enabling specified parser feature - /// (check JsonParser.Feature for list of features) - ///@param f Feature to enable - ///@return This factory instance (to allow call chaining) - JsonFactory enable1( - jsonparser_.JsonParser_Feature f, - ) { - return _enable1(reference.pointer, f.reference.pointer) - .object(const $JsonFactoryType()); - } - - static final _disable1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__disable1") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonFactory disable(com.fasterxml.jackson.core.JsonParser.Feature f) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for disabling specified parser features - /// (check JsonParser.Feature for list of features) - ///@param f Feature to disable - ///@return This factory instance (to allow call chaining) - JsonFactory disable1( - jsonparser_.JsonParser_Feature f, - ) { - return _disable1(reference.pointer, f.reference.pointer) - .object(const $JsonFactoryType()); - } - - static final _isEnabled1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__isEnabled1") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public final boolean isEnabled(com.fasterxml.jackson.core.JsonParser.Feature f) - /// - /// Method for checking if the specified parser feature is enabled. - ///@param f Feature to check - ///@return True if specified feature is enabled - bool isEnabled1( - jsonparser_.JsonParser_Feature f, - ) { - return _isEnabled1(reference.pointer, f.reference.pointer).boolean; - } - - static final _isEnabled2 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__isEnabled2") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public final boolean isEnabled(com.fasterxml.jackson.core.StreamReadFeature f) - /// - /// Method for checking if the specified stream read feature is enabled. - ///@param f Feature to check - ///@return True if specified feature is enabled - ///@since 2.10 - bool isEnabled2( - jni.JObject f, - ) { - return _isEnabled2(reference.pointer, f.reference.pointer).boolean; - } - - static final _getInputDecorator = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__getInputDecorator") - .asFunction)>(); - - /// from: public com.fasterxml.jackson.core.io.InputDecorator getInputDecorator() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for getting currently configured input decorator (if any; - /// there is no default decorator). - ///@return InputDecorator configured, if any - jni.JObject getInputDecorator() { - return _getInputDecorator(reference.pointer) - .object(const jni.JObjectType()); - } - - static final _setInputDecorator = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__setInputDecorator") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonFactory setInputDecorator(com.fasterxml.jackson.core.io.InputDecorator d) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for overriding currently configured input decorator - ///@param d Decorator to configure for this factory, if any ({@code null} if none) - ///@return This factory instance (to allow call chaining) - ///@deprecated Since 2.10 use JsonFactoryBuilder\#inputDecorator(InputDecorator) instead - JsonFactory setInputDecorator( - jni.JObject d, - ) { - return _setInputDecorator(reference.pointer, d.reference.pointer) - .object(const $JsonFactoryType()); - } - - static final _configure2 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer, ffi.Uint8)>>("JsonFactory__configure2") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer, int)>(); - - /// from: public final com.fasterxml.jackson.core.JsonFactory configure(com.fasterxml.jackson.core.JsonGenerator.Feature f, boolean state) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for enabling or disabling specified generator feature - /// (check JsonGenerator.Feature for list of features) - ///@param f Feature to enable/disable - ///@param state Whether to enable or disable the feature - ///@return This factory instance (to allow call chaining) - JsonFactory configure2( - jni.JObject f, - bool state, - ) { - return _configure2(reference.pointer, f.reference.pointer, state ? 1 : 0) - .object(const $JsonFactoryType()); - } - - static final _enable2 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__enable2") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonFactory enable(com.fasterxml.jackson.core.JsonGenerator.Feature f) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for enabling specified generator features - /// (check JsonGenerator.Feature for list of features) - ///@param f Feature to enable - ///@return This factory instance (to allow call chaining) - JsonFactory enable2( - jni.JObject f, - ) { - return _enable2(reference.pointer, f.reference.pointer) - .object(const $JsonFactoryType()); - } - - static final _disable2 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__disable2") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonFactory disable(com.fasterxml.jackson.core.JsonGenerator.Feature f) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for disabling specified generator feature - /// (check JsonGenerator.Feature for list of features) - ///@param f Feature to disable - ///@return This factory instance (to allow call chaining) - JsonFactory disable2( - jni.JObject f, - ) { - return _disable2(reference.pointer, f.reference.pointer) - .object(const $JsonFactoryType()); - } - - static final _isEnabled3 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__isEnabled3") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public final boolean isEnabled(com.fasterxml.jackson.core.JsonGenerator.Feature f) - /// - /// Check whether specified generator feature is enabled. - ///@param f Feature to check - ///@return Whether specified feature is enabled - bool isEnabled3( - jni.JObject f, - ) { - return _isEnabled3(reference.pointer, f.reference.pointer).boolean; - } - - static final _isEnabled4 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__isEnabled4") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public final boolean isEnabled(com.fasterxml.jackson.core.StreamWriteFeature f) - /// - /// Check whether specified stream write feature is enabled. - ///@param f Feature to check - ///@return Whether specified feature is enabled - ///@since 2.10 - bool isEnabled4( - jni.JObject f, - ) { - return _isEnabled4(reference.pointer, f.reference.pointer).boolean; - } - - static final _getCharacterEscapes = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__getCharacterEscapes") - .asFunction)>(); - - /// from: public com.fasterxml.jackson.core.io.CharacterEscapes getCharacterEscapes() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for accessing custom escapes factory uses for JsonGenerators - /// it creates. - ///@return Configured {@code CharacterEscapes}, if any; {@code null} if none - jni.JObject getCharacterEscapes() { - return _getCharacterEscapes(reference.pointer) - .object(const jni.JObjectType()); - } - - static final _setCharacterEscapes = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__setCharacterEscapes") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonFactory setCharacterEscapes(com.fasterxml.jackson.core.io.CharacterEscapes esc) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for defining custom escapes factory uses for JsonGenerators - /// it creates. - ///@param esc CharaterEscapes to set (or {@code null} for "none") - ///@return This factory instance (to allow call chaining) - JsonFactory setCharacterEscapes( - jni.JObject esc, - ) { - return _setCharacterEscapes(reference.pointer, esc.reference.pointer) - .object(const $JsonFactoryType()); - } - - static final _getOutputDecorator = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__getOutputDecorator") - .asFunction)>(); - - /// from: public com.fasterxml.jackson.core.io.OutputDecorator getOutputDecorator() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for getting currently configured output decorator (if any; - /// there is no default decorator). - ///@return OutputDecorator configured for generators factory creates, if any; - /// {@code null} if none. - jni.JObject getOutputDecorator() { - return _getOutputDecorator(reference.pointer) - .object(const jni.JObjectType()); - } - - static final _setOutputDecorator = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__setOutputDecorator") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonFactory setOutputDecorator(com.fasterxml.jackson.core.io.OutputDecorator d) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for overriding currently configured output decorator - ///@return This factory instance (to allow call chaining) - ///@param d Output decorator to use, if any - ///@deprecated Since 2.10 use JsonFactoryBuilder\#outputDecorator(OutputDecorator) instead - JsonFactory setOutputDecorator( - jni.JObject d, - ) { - return _setOutputDecorator(reference.pointer, d.reference.pointer) - .object(const $JsonFactoryType()); - } - - static final _setRootValueSeparator = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__setRootValueSeparator") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonFactory setRootValueSeparator(java.lang.String sep) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that allows overriding String used for separating root-level - /// JSON values (default is single space character) - ///@param sep Separator to use, if any; null means that no separator is - /// automatically added - ///@return This factory instance (to allow call chaining) - JsonFactory setRootValueSeparator( - jni.JString sep, - ) { - return _setRootValueSeparator(reference.pointer, sep.reference.pointer) - .object(const $JsonFactoryType()); - } - - static final _getRootValueSeparator = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__getRootValueSeparator") - .asFunction)>(); - - /// from: public java.lang.String getRootValueSeparator() - /// The returned object must be released after use, by calling the [release] method. - /// - /// @return Root value separator configured, if any - jni.JString getRootValueSeparator() { - return _getRootValueSeparator(reference.pointer) - .object(const jni.JStringType()); - } - - static final _setCodec = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__setCodec") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonFactory setCodec(com.fasterxml.jackson.core.ObjectCodec oc) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for associating a ObjectCodec (typically - /// a com.fasterxml.jackson.databind.ObjectMapper) - /// with this factory (and more importantly, parsers and generators - /// it constructs). This is needed to use data-binding methods - /// of JsonParser and JsonGenerator instances. - ///@param oc Codec to use - ///@return This factory instance (to allow call chaining) - JsonFactory setCodec( - jni.JObject oc, - ) { - return _setCodec(reference.pointer, oc.reference.pointer) - .object(const $JsonFactoryType()); - } - - static final _getCodec = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__getCodec") - .asFunction)>(); - - /// from: public com.fasterxml.jackson.core.ObjectCodec getCodec() - /// The returned object must be released after use, by calling the [release] method. - jni.JObject getCodec() { - return _getCodec(reference.pointer).object(const jni.JObjectType()); - } - - static final _createParser = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createParser") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createParser(java.io.File f) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing JSON parser instance to parse - /// contents of specified file. - /// - /// - /// Encoding is auto-detected from contents according to JSON - /// specification recommended mechanism. Json specification - /// supports only UTF-8, UTF-16 and UTF-32 as valid encodings, - /// so auto-detection implemented only for this charsets. - /// For other charsets use \#createParser(java.io.Reader). - /// - /// - /// Underlying input stream (needed for reading contents) - /// will be __owned__ (and managed, i.e. closed as need be) by - /// the parser, since caller has no access to it. - ///@param f File that contains JSON content to parse - ///@since 2.1 - jsonparser_.JsonParser createParser( - jni.JObject f, - ) { - return _createParser(reference.pointer, f.reference.pointer) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createParser1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createParser1") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createParser(java.net.URL url) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing JSON parser instance to parse - /// contents of resource reference by given URL. - /// - /// Encoding is auto-detected from contents according to JSON - /// specification recommended mechanism. Json specification - /// supports only UTF-8, UTF-16 and UTF-32 as valid encodings, - /// so auto-detection implemented only for this charsets. - /// For other charsets use \#createParser(java.io.Reader). - /// - /// Underlying input stream (needed for reading contents) - /// will be __owned__ (and managed, i.e. closed as need be) by - /// the parser, since caller has no access to it. - ///@param url URL pointing to resource that contains JSON content to parse - ///@since 2.1 - jsonparser_.JsonParser createParser1( - jni.JObject url, - ) { - return _createParser1(reference.pointer, url.reference.pointer) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createParser2 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createParser2") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createParser(java.io.InputStream in) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing JSON parser instance to parse - /// the contents accessed via specified input stream. - /// - /// The input stream will __not be owned__ by - /// the parser, it will still be managed (i.e. closed if - /// end-of-stream is reacher, or parser close method called) - /// if (and only if) com.fasterxml.jackson.core.StreamReadFeature\#AUTO_CLOSE_SOURCE - /// is enabled. - /// - /// - /// Note: no encoding argument is taken since it can always be - /// auto-detected as suggested by JSON RFC. Json specification - /// supports only UTF-8, UTF-16 and UTF-32 as valid encodings, - /// so auto-detection implemented only for this charsets. - /// For other charsets use \#createParser(java.io.Reader). - ///@param in InputStream to use for reading JSON content to parse - ///@since 2.1 - jsonparser_.JsonParser createParser2( - jni.JObject in0, - ) { - return _createParser2(reference.pointer, in0.reference.pointer) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createParser3 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createParser3") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createParser(java.io.Reader r) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing parser for parsing - /// the contents accessed via specified Reader. - /// - /// The read stream will __not be owned__ by - /// the parser, it will still be managed (i.e. closed if - /// end-of-stream is reacher, or parser close method called) - /// if (and only if) com.fasterxml.jackson.core.StreamReadFeature\#AUTO_CLOSE_SOURCE - /// is enabled. - ///@param r Reader to use for reading JSON content to parse - ///@since 2.1 - jsonparser_.JsonParser createParser3( - jni.JObject r, - ) { - return _createParser3(reference.pointer, r.reference.pointer) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createParser4 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createParser4") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createParser(byte[] data) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing parser for parsing - /// the contents of given byte array. - ///@since 2.1 - jsonparser_.JsonParser createParser4( - jni.JArray data, - ) { - return _createParser4(reference.pointer, data.reference.pointer) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createParser5 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32)>>("JsonFactory__createParser5") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer, int, int)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createParser(byte[] data, int offset, int len) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing parser for parsing - /// the contents of given byte array. - ///@param data Buffer that contains data to parse - ///@param offset Offset of the first data byte within buffer - ///@param len Length of contents to parse within buffer - ///@since 2.1 - jsonparser_.JsonParser createParser5( - jni.JArray data, - int offset, - int len, - ) { - return _createParser5( - reference.pointer, data.reference.pointer, offset, len) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createParser6 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createParser6") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createParser(java.lang.String content) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing parser for parsing - /// contents of given String. - ///@since 2.1 - jsonparser_.JsonParser createParser6( - jni.JString content, - ) { - return _createParser6(reference.pointer, content.reference.pointer) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createParser7 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createParser7") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createParser(char[] content) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing parser for parsing - /// contents of given char array. - ///@since 2.4 - jsonparser_.JsonParser createParser7( - jni.JArray content, - ) { - return _createParser7(reference.pointer, content.reference.pointer) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createParser8 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32)>>("JsonFactory__createParser8") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer, int, int)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createParser(char[] content, int offset, int len) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing parser for parsing contents of given char array. - ///@since 2.4 - jsonparser_.JsonParser createParser8( - jni.JArray content, - int offset, - int len, - ) { - return _createParser8( - reference.pointer, content.reference.pointer, offset, len) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createParser9 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createParser9") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createParser(java.io.DataInput in) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Optional method for constructing parser for reading contents from specified DataInput - /// instance. - /// - /// If this factory does not support DataInput as source, - /// will throw UnsupportedOperationException - ///@since 2.8 - jsonparser_.JsonParser createParser9( - jni.JObject in0, - ) { - return _createParser9(reference.pointer, in0.reference.pointer) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createNonBlockingByteArrayParser = jniLookup< - ffi - .NativeFunction)>>( - "JsonFactory__createNonBlockingByteArrayParser") - .asFunction)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createNonBlockingByteArrayParser() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Optional method for constructing parser for non-blocking parsing - /// via com.fasterxml.jackson.core.async.ByteArrayFeeder - /// interface (accessed using JsonParser\#getNonBlockingInputFeeder() - /// from constructed instance). - /// - /// If this factory does not support non-blocking parsing (either at all, - /// or from byte array), - /// will throw UnsupportedOperationException. - /// - /// Note that JSON-backed factory only supports parsing of UTF-8 encoded JSON content - /// (and US-ASCII since it is proper subset); other encodings are not supported - /// at this point. - ///@since 2.9 - jsonparser_.JsonParser createNonBlockingByteArrayParser() { - return _createNonBlockingByteArrayParser(reference.pointer) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createGenerator = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createGenerator") - .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonGenerator createGenerator(java.io.OutputStream out, com.fasterxml.jackson.core.JsonEncoding enc) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing JSON generator for writing JSON content - /// using specified output stream. - /// Encoding to use must be specified, and needs to be one of available - /// types (as per JSON specification). - /// - /// Underlying stream __is NOT owned__ by the generator constructed, - /// so that generator will NOT close the output stream when - /// JsonGenerator\#close is called (unless auto-closing - /// feature, - /// com.fasterxml.jackson.core.JsonGenerator.Feature\#AUTO_CLOSE_TARGET - /// is enabled). - /// Using application needs to close it explicitly if this is the case. - /// - /// Note: there are formats that use fixed encoding (like most binary data formats) - /// and that ignore passed in encoding. - ///@param out OutputStream to use for writing JSON content - ///@param enc Character encoding to use - ///@since 2.1 - jni.JObject createGenerator( - jni.JObject out, - jni.JObject enc, - ) { - return _createGenerator( - reference.pointer, out.reference.pointer, enc.reference.pointer) - .object(const jni.JObjectType()); - } - - static final _createGenerator1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createGenerator1") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonGenerator createGenerator(java.io.OutputStream out) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Convenience method for constructing generator that uses default - /// encoding of the format (UTF-8 for JSON and most other data formats). - /// - /// Note: there are formats that use fixed encoding (like most binary data formats). - ///@since 2.1 - jni.JObject createGenerator1( - jni.JObject out, - ) { - return _createGenerator1(reference.pointer, out.reference.pointer) - .object(const jni.JObjectType()); - } - - static final _createGenerator2 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createGenerator2") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonGenerator createGenerator(java.io.Writer w) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing JSON generator for writing JSON content - /// using specified Writer. - /// - /// Underlying stream __is NOT owned__ by the generator constructed, - /// so that generator will NOT close the Reader when - /// JsonGenerator\#close is called (unless auto-closing - /// feature, - /// com.fasterxml.jackson.core.JsonGenerator.Feature\#AUTO_CLOSE_TARGET is enabled). - /// Using application needs to close it explicitly. - ///@since 2.1 - ///@param w Writer to use for writing JSON content - jni.JObject createGenerator2( - jni.JObject w, - ) { - return _createGenerator2(reference.pointer, w.reference.pointer) - .object(const jni.JObjectType()); - } - - static final _createGenerator3 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createGenerator3") - .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonGenerator createGenerator(java.io.File f, com.fasterxml.jackson.core.JsonEncoding enc) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing JSON generator for writing JSON content - /// to specified file, overwriting contents it might have (or creating - /// it if such file does not yet exist). - /// Encoding to use must be specified, and needs to be one of available - /// types (as per JSON specification). - /// - /// Underlying stream __is owned__ by the generator constructed, - /// i.e. generator will handle closing of file when - /// JsonGenerator\#close is called. - ///@param f File to write contents to - ///@param enc Character encoding to use - ///@since 2.1 - jni.JObject createGenerator3( - jni.JObject f, - jni.JObject enc, - ) { - return _createGenerator3( - reference.pointer, f.reference.pointer, enc.reference.pointer) - .object(const jni.JObjectType()); - } - - static final _createGenerator4 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createGenerator4") - .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonGenerator createGenerator(java.io.DataOutput out, com.fasterxml.jackson.core.JsonEncoding enc) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing generator for writing content using specified - /// DataOutput instance. - ///@since 2.8 - jni.JObject createGenerator4( - jni.JObject out, - jni.JObject enc, - ) { - return _createGenerator4( - reference.pointer, out.reference.pointer, enc.reference.pointer) - .object(const jni.JObjectType()); - } - - static final _createGenerator5 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createGenerator5") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonGenerator createGenerator(java.io.DataOutput out) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Convenience method for constructing generator that uses default - /// encoding of the format (UTF-8 for JSON and most other data formats). - /// - /// Note: there are formats that use fixed encoding (like most binary data formats). - ///@since 2.8 - jni.JObject createGenerator5( - jni.JObject out, - ) { - return _createGenerator5(reference.pointer, out.reference.pointer) - .object(const jni.JObjectType()); - } - - static final _createJsonParser = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createJsonParser") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createJsonParser(java.io.File f) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing JSON parser instance to parse - /// contents of specified file. - /// - /// Encoding is auto-detected from contents according to JSON - /// specification recommended mechanism. Json specification - /// supports only UTF-8, UTF-16 and UTF-32 as valid encodings, - /// so auto-detection implemented only for this charsets. - /// For other charsets use \#createParser(java.io.Reader). - /// - /// - /// Underlying input stream (needed for reading contents) - /// will be __owned__ (and managed, i.e. closed as need be) by - /// the parser, since caller has no access to it. - ///@param f File that contains JSON content to parse - ///@return Parser constructed - ///@throws IOException if parser initialization fails due to I/O (read) problem - ///@throws JsonParseException if parser initialization fails due to content decoding problem - ///@deprecated Since 2.2, use \#createParser(File) instead. - jsonparser_.JsonParser createJsonParser( - jni.JObject f, - ) { - return _createJsonParser(reference.pointer, f.reference.pointer) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createJsonParser1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createJsonParser1") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createJsonParser(java.net.URL url) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing JSON parser instance to parse - /// contents of resource reference by given URL. - /// - /// Encoding is auto-detected from contents according to JSON - /// specification recommended mechanism. Json specification - /// supports only UTF-8, UTF-16 and UTF-32 as valid encodings, - /// so auto-detection implemented only for this charsets. - /// For other charsets use \#createParser(java.io.Reader). - /// - /// Underlying input stream (needed for reading contents) - /// will be __owned__ (and managed, i.e. closed as need be) by - /// the parser, since caller has no access to it. - ///@param url URL pointing to resource that contains JSON content to parse - ///@return Parser constructed - ///@throws IOException if parser initialization fails due to I/O (read) problem - ///@throws JsonParseException if parser initialization fails due to content decoding problem - ///@deprecated Since 2.2, use \#createParser(URL) instead. - jsonparser_.JsonParser createJsonParser1( - jni.JObject url, - ) { - return _createJsonParser1(reference.pointer, url.reference.pointer) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createJsonParser2 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createJsonParser2") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createJsonParser(java.io.InputStream in) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing JSON parser instance to parse - /// the contents accessed via specified input stream. - /// - /// The input stream will __not be owned__ by - /// the parser, it will still be managed (i.e. closed if - /// end-of-stream is reacher, or parser close method called) - /// if (and only if) com.fasterxml.jackson.core.JsonParser.Feature\#AUTO_CLOSE_SOURCE - /// is enabled. - /// - /// - /// Note: no encoding argument is taken since it can always be - /// auto-detected as suggested by JSON RFC. Json specification - /// supports only UTF-8, UTF-16 and UTF-32 as valid encodings, - /// so auto-detection implemented only for this charsets. - /// For other charsets use \#createParser(java.io.Reader). - ///@param in InputStream to use for reading JSON content to parse - ///@return Parser constructed - ///@throws IOException if parser initialization fails due to I/O (read) problem - ///@throws JsonParseException if parser initialization fails due to content decoding problem - ///@deprecated Since 2.2, use \#createParser(InputStream) instead. - jsonparser_.JsonParser createJsonParser2( - jni.JObject in0, - ) { - return _createJsonParser2(reference.pointer, in0.reference.pointer) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createJsonParser3 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createJsonParser3") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createJsonParser(java.io.Reader r) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing parser for parsing - /// the contents accessed via specified Reader. - /// - /// The read stream will __not be owned__ by - /// the parser, it will still be managed (i.e. closed if - /// end-of-stream is reacher, or parser close method called) - /// if (and only if) com.fasterxml.jackson.core.JsonParser.Feature\#AUTO_CLOSE_SOURCE - /// is enabled. - ///@param r Reader to use for reading JSON content to parse - ///@return Parser constructed - ///@throws IOException if parser initialization fails due to I/O (read) problem - ///@throws JsonParseException if parser initialization fails due to content decoding problem - ///@deprecated Since 2.2, use \#createParser(Reader) instead. - jsonparser_.JsonParser createJsonParser3( - jni.JObject r, - ) { - return _createJsonParser3(reference.pointer, r.reference.pointer) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createJsonParser4 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createJsonParser4") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createJsonParser(byte[] data) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing parser for parsing the contents of given byte array. - ///@param data Input content to parse - ///@return Parser constructed - ///@throws IOException if parser initialization fails due to I/O (read) problem - ///@throws JsonParseException if parser initialization fails due to content decoding problem - ///@deprecated Since 2.2, use \#createParser(byte[]) instead. - jsonparser_.JsonParser createJsonParser4( - jni.JArray data, - ) { - return _createJsonParser4(reference.pointer, data.reference.pointer) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createJsonParser5 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32)>>("JsonFactory__createJsonParser5") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer, int, int)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createJsonParser(byte[] data, int offset, int len) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing parser for parsing - /// the contents of given byte array. - ///@param data Buffer that contains data to parse - ///@param offset Offset of the first data byte within buffer - ///@param len Length of contents to parse within buffer - ///@return Parser constructed - ///@throws IOException if parser initialization fails due to I/O (read) problem - ///@throws JsonParseException if parser initialization fails due to content decoding problem - ///@deprecated Since 2.2, use \#createParser(byte[],int,int) instead. - jsonparser_.JsonParser createJsonParser5( - jni.JArray data, - int offset, - int len, - ) { - return _createJsonParser5( - reference.pointer, data.reference.pointer, offset, len) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createJsonParser6 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createJsonParser6") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser createJsonParser(java.lang.String content) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing parser for parsing - /// contents of given String. - ///@param content Input content to parse - ///@return Parser constructed - ///@throws IOException if parser initialization fails due to I/O (read) problem - ///@throws JsonParseException if parser initialization fails due to content decoding problem - ///@deprecated Since 2.2, use \#createParser(String) instead. - jsonparser_.JsonParser createJsonParser6( - jni.JString content, - ) { - return _createJsonParser6(reference.pointer, content.reference.pointer) - .object(const jsonparser_.$JsonParserType()); - } - - static final _createJsonGenerator = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createJsonGenerator") - .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonGenerator createJsonGenerator(java.io.OutputStream out, com.fasterxml.jackson.core.JsonEncoding enc) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing JSON generator for writing JSON content - /// using specified output stream. - /// Encoding to use must be specified, and needs to be one of available - /// types (as per JSON specification). - /// - /// Underlying stream __is NOT owned__ by the generator constructed, - /// so that generator will NOT close the output stream when - /// JsonGenerator\#close is called (unless auto-closing - /// feature, - /// com.fasterxml.jackson.core.JsonGenerator.Feature\#AUTO_CLOSE_TARGET - /// is enabled). - /// Using application needs to close it explicitly if this is the case. - /// - /// Note: there are formats that use fixed encoding (like most binary data formats) - /// and that ignore passed in encoding. - ///@param out OutputStream to use for writing JSON content - ///@param enc Character encoding to use - ///@return Generator constructed - ///@throws IOException if parser initialization fails due to I/O (write) problem - ///@deprecated Since 2.2, use \#createGenerator(OutputStream, JsonEncoding) instead. - jni.JObject createJsonGenerator( - jni.JObject out, - jni.JObject enc, - ) { - return _createJsonGenerator( - reference.pointer, out.reference.pointer, enc.reference.pointer) - .object(const jni.JObjectType()); - } - - static final _createJsonGenerator1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createJsonGenerator1") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonGenerator createJsonGenerator(java.io.Writer out) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for constructing JSON generator for writing JSON content - /// using specified Writer. - /// - /// Underlying stream __is NOT owned__ by the generator constructed, - /// so that generator will NOT close the Reader when - /// JsonGenerator\#close is called (unless auto-closing - /// feature, - /// com.fasterxml.jackson.core.JsonGenerator.Feature\#AUTO_CLOSE_TARGET is enabled). - /// Using application needs to close it explicitly. - ///@param out Writer to use for writing JSON content - ///@return Generator constructed - ///@throws IOException if parser initialization fails due to I/O (write) problem - ///@deprecated Since 2.2, use \#createGenerator(Writer) instead. - jni.JObject createJsonGenerator1( - jni.JObject out, - ) { - return _createJsonGenerator1(reference.pointer, out.reference.pointer) - .object(const jni.JObjectType()); - } - - static final _createJsonGenerator2 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonFactory__createJsonGenerator2") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonGenerator createJsonGenerator(java.io.OutputStream out) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Convenience method for constructing generator that uses default - /// encoding of the format (UTF-8 for JSON and most other data formats). - /// - /// Note: there are formats that use fixed encoding (like most binary data formats). - ///@param out OutputStream to use for writing JSON content - ///@return Generator constructed - ///@throws IOException if parser initialization fails due to I/O (write) problem - ///@deprecated Since 2.2, use \#createGenerator(OutputStream) instead. - jni.JObject createJsonGenerator2( - jni.JObject out, - ) { - return _createJsonGenerator2(reference.pointer, out.reference.pointer) - .object(const jni.JObjectType()); - } -} - -final class $JsonFactoryType extends jni.JObjType { - const $JsonFactoryType(); - - @override - String get signature => r"Lcom/fasterxml/jackson/core/JsonFactory;"; - - @override - JsonFactory fromReference(jni.JReference reference) => - JsonFactory.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($JsonFactoryType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($JsonFactoryType) && other is $JsonFactoryType; - } -} diff --git a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/JsonParser.dart b/pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/JsonParser.dart deleted file mode 100644 index 75389bcdd..000000000 --- a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/JsonParser.dart +++ /dev/null @@ -1,2853 +0,0 @@ -// Generated from jackson-core which is licensed under the Apache License 2.0. -// The following copyright from the original authors applies. -// See https://github.com/FasterXML/jackson-core/blob/2.14/LICENSE -// -// Copyright (c) 2007 - The Jackson Project Authors -// Licensed under the Apache License, Version 2.0 (the "License") -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Autogenerated by jnigen. DO NOT EDIT! - -// ignore_for_file: annotate_overrides -// ignore_for_file: camel_case_extensions -// ignore_for_file: camel_case_types -// ignore_for_file: constant_identifier_names -// ignore_for_file: doc_directive_unknown -// ignore_for_file: file_names -// ignore_for_file: lines_longer_than_80_chars -// ignore_for_file: no_leading_underscores_for_local_identifiers -// ignore_for_file: non_constant_identifier_names -// ignore_for_file: overridden_fields -// ignore_for_file: unnecessary_cast -// ignore_for_file: unused_element -// ignore_for_file: unused_field -// ignore_for_file: unused_import -// ignore_for_file: unused_local_variable -// ignore_for_file: unused_shown_name -// ignore_for_file: use_super_parameters - -import "dart:isolate" show ReceivePort; -import "dart:ffi" as ffi; -import "package:jni/internal_helpers_for_jnigen.dart"; -import "package:jni/jni.dart" as jni; - -import "JsonToken.dart" as jsontoken_; -import "../../../../_init.dart"; - -/// from: com.fasterxml.jackson.core.JsonParser$Feature -/// -/// Enumeration that defines all on/off features for parsers. -class JsonParser_Feature extends jni.JObject { - @override - late final jni.JObjType $type = type; - - JsonParser_Feature.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $JsonParser_FeatureType(); - static final _values = - jniLookup>( - "JsonParser_Feature__values") - .asFunction(); - - /// from: static public com.fasterxml.jackson.core.JsonParser.Feature[] values() - /// The returned object must be released after use, by calling the [release] method. - static jni.JArray values() { - return _values().object(const jni.JArrayType($JsonParser_FeatureType())); - } - - static final _valueOf = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser_Feature__valueOf") - .asFunction)>(); - - /// from: static public com.fasterxml.jackson.core.JsonParser.Feature valueOf(java.lang.String name) - /// The returned object must be released after use, by calling the [release] method. - static JsonParser_Feature valueOf( - jni.JString name, - ) { - return _valueOf(name.reference.pointer) - .object(const $JsonParser_FeatureType()); - } - - static final _collectDefaults = - jniLookup>( - "JsonParser_Feature__collectDefaults") - .asFunction(); - - /// from: static public int collectDefaults() - /// - /// Method that calculates bit set (flags) of all features that - /// are enabled by default. - ///@return Bit mask of all features that are enabled by default - static int collectDefaults() { - return _collectDefaults().integer; - } - - static final _enabledByDefault = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser_Feature__enabledByDefault") - .asFunction)>(); - - /// from: public boolean enabledByDefault() - bool enabledByDefault() { - return _enabledByDefault(reference.pointer).boolean; - } - - static final _enabledIn = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Int32)>>("JsonParser_Feature__enabledIn") - .asFunction, int)>(); - - /// from: public boolean enabledIn(int flags) - bool enabledIn( - int flags, - ) { - return _enabledIn(reference.pointer, flags).boolean; - } - - static final _getMask = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser_Feature__getMask") - .asFunction)>(); - - /// from: public int getMask() - int getMask() { - return _getMask(reference.pointer).integer; - } -} - -final class $JsonParser_FeatureType extends jni.JObjType { - const $JsonParser_FeatureType(); - - @override - String get signature => r"Lcom/fasterxml/jackson/core/JsonParser$Feature;"; - - @override - JsonParser_Feature fromReference(jni.JReference reference) => - JsonParser_Feature.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($JsonParser_FeatureType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($JsonParser_FeatureType) && - other is $JsonParser_FeatureType; - } -} - -/// from: com.fasterxml.jackson.core.JsonParser$NumberType -/// -/// Enumeration of possible "native" (optimal) types that can be -/// used for numbers. -class JsonParser_NumberType extends jni.JObject { - @override - late final jni.JObjType $type = type; - - JsonParser_NumberType.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $JsonParser_NumberTypeType(); - static final _values = - jniLookup>( - "JsonParser_NumberType__values") - .asFunction(); - - /// from: static public com.fasterxml.jackson.core.JsonParser.NumberType[] values() - /// The returned object must be released after use, by calling the [release] method. - static jni.JArray values() { - return _values().object(const jni.JArrayType($JsonParser_NumberTypeType())); - } - - static final _valueOf = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser_NumberType__valueOf") - .asFunction)>(); - - /// from: static public com.fasterxml.jackson.core.JsonParser.NumberType valueOf(java.lang.String name) - /// The returned object must be released after use, by calling the [release] method. - static JsonParser_NumberType valueOf( - jni.JString name, - ) { - return _valueOf(name.reference.pointer) - .object(const $JsonParser_NumberTypeType()); - } -} - -final class $JsonParser_NumberTypeType - extends jni.JObjType { - const $JsonParser_NumberTypeType(); - - @override - String get signature => r"Lcom/fasterxml/jackson/core/JsonParser$NumberType;"; - - @override - JsonParser_NumberType fromReference(jni.JReference reference) => - JsonParser_NumberType.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($JsonParser_NumberTypeType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($JsonParser_NumberTypeType) && - other is $JsonParser_NumberTypeType; - } -} - -/// from: com.fasterxml.jackson.core.JsonParser -/// -/// Base class that defines public API for reading JSON content. -/// Instances are created using factory methods of -/// a JsonFactory instance. -///@author Tatu Saloranta -class JsonParser extends jni.JObject { - @override - late final jni.JObjType $type = type; - - JsonParser.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $JsonParserType(); - static final _get_DEFAULT_READ_CAPABILITIES = - jniLookup>( - "get_JsonParser__DEFAULT_READ_CAPABILITIES") - .asFunction(); - - /// from: static protected final com.fasterxml.jackson.core.util.JacksonFeatureSet DEFAULT_READ_CAPABILITIES - /// The returned object must be released after use, by calling the [release] method. - /// - /// Default set of StreamReadCapabilityies that may be used as - /// basis for format-specific readers (or as bogus instance if non-null - /// set needs to be passed). - ///@since 2.12 - static jni.JObject get DEFAULT_READ_CAPABILITIES => - _get_DEFAULT_READ_CAPABILITIES().object(const jni.JObjectType()); - - static final _new0 = jniLookup>( - "JsonParser__new0") - .asFunction(); - - /// from: protected void () - /// The returned object must be released after use, by calling the [release] method. - factory JsonParser() { - return JsonParser.fromReference(_new0().reference); - } - - static final _new1 = - jniLookup>( - "JsonParser__new1") - .asFunction(); - - /// from: protected void (int features) - /// The returned object must be released after use, by calling the [release] method. - factory JsonParser.new1( - int features, - ) { - return JsonParser.fromReference(_new1(features).reference); - } - - static final _getCodec = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getCodec") - .asFunction)>(); - - /// from: public abstract com.fasterxml.jackson.core.ObjectCodec getCodec() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Accessor for ObjectCodec associated with this - /// parser, if any. Codec is used by \#readValueAs(Class) - /// method (and its variants). - ///@return Codec assigned to this parser, if any; {@code null} if none - jni.JObject getCodec() { - return _getCodec(reference.pointer).object(const jni.JObjectType()); - } - - static final _setCodec = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__setCodec") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public abstract void setCodec(com.fasterxml.jackson.core.ObjectCodec oc) - /// - /// Setter that allows defining ObjectCodec associated with this - /// parser, if any. Codec is used by \#readValueAs(Class) - /// method (and its variants). - ///@param oc Codec to assign, if any; {@code null} if none - void setCodec( - jni.JObject oc, - ) { - _setCodec(reference.pointer, oc.reference.pointer).check(); - } - - static final _getInputSource = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getInputSource") - .asFunction)>(); - - /// from: public java.lang.Object getInputSource() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that can be used to get access to object that is used - /// to access input being parsed; this is usually either - /// InputStream or Reader, depending on what - /// parser was constructed with. - /// Note that returned value may be null in some cases; including - /// case where parser implementation does not want to exposed raw - /// source to caller. - /// In cases where input has been decorated, object returned here - /// is the decorated version; this allows some level of interaction - /// between users of parser and decorator object. - /// - /// In general use of this accessor should be considered as - /// "last effort", i.e. only used if no other mechanism is applicable. - ///@return Input source this parser was configured with - jni.JObject getInputSource() { - return _getInputSource(reference.pointer).object(const jni.JObjectType()); - } - - static final _setRequestPayloadOnError = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "JsonParser__setRequestPayloadOnError") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public void setRequestPayloadOnError(com.fasterxml.jackson.core.util.RequestPayload payload) - /// - /// Sets the payload to be passed if JsonParseException is thrown. - ///@param payload Payload to pass - ///@since 2.8 - void setRequestPayloadOnError( - jni.JObject payload, - ) { - _setRequestPayloadOnError(reference.pointer, payload.reference.pointer) - .check(); - } - - static final _setRequestPayloadOnError1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>( - "JsonParser__setRequestPayloadOnError1") - .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - /// from: public void setRequestPayloadOnError(byte[] payload, java.lang.String charset) - /// - /// Sets the byte[] request payload and the charset - ///@param payload Payload to pass - ///@param charset Character encoding for (lazily) decoding payload - ///@since 2.8 - void setRequestPayloadOnError1( - jni.JArray payload, - jni.JString charset, - ) { - _setRequestPayloadOnError1(reference.pointer, payload.reference.pointer, - charset.reference.pointer) - .check(); - } - - static final _setRequestPayloadOnError2 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>( - "JsonParser__setRequestPayloadOnError2") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public void setRequestPayloadOnError(java.lang.String payload) - /// - /// Sets the String request payload - ///@param payload Payload to pass - ///@since 2.8 - void setRequestPayloadOnError2( - jni.JString payload, - ) { - _setRequestPayloadOnError2(reference.pointer, payload.reference.pointer) - .check(); - } - - static final _setSchema = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__setSchema") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public void setSchema(com.fasterxml.jackson.core.FormatSchema schema) - /// - /// Method to call to make this parser use specified schema. Method must - /// be called before trying to parse any content, right after parser instance - /// has been created. - /// Note that not all parsers support schemas; and those that do usually only - /// accept specific types of schemas: ones defined for data format parser can read. - /// - /// If parser does not support specified schema, UnsupportedOperationException - /// is thrown. - ///@param schema Schema to use - ///@throws UnsupportedOperationException if parser does not support schema - void setSchema( - jni.JObject schema, - ) { - _setSchema(reference.pointer, schema.reference.pointer).check(); - } - - static final _getSchema = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getSchema") - .asFunction)>(); - - /// from: public com.fasterxml.jackson.core.FormatSchema getSchema() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for accessing Schema that this parser uses, if any. - /// Default implementation returns null. - ///@return Schema in use by this parser, if any; {@code null} if none - ///@since 2.1 - jni.JObject getSchema() { - return _getSchema(reference.pointer).object(const jni.JObjectType()); - } - - static final _canUseSchema = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__canUseSchema") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public boolean canUseSchema(com.fasterxml.jackson.core.FormatSchema schema) - /// - /// Method that can be used to verify that given schema can be used with - /// this parser (using \#setSchema). - ///@param schema Schema to check - ///@return True if this parser can use given schema; false if not - bool canUseSchema( - jni.JObject schema, - ) { - return _canUseSchema(reference.pointer, schema.reference.pointer).boolean; - } - - static final _requiresCustomCodec = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__requiresCustomCodec") - .asFunction)>(); - - /// from: public boolean requiresCustomCodec() - /// - /// Method that can be called to determine if a custom - /// ObjectCodec is needed for binding data parsed - /// using JsonParser constructed by this factory - /// (which typically also implies the same for serialization - /// with JsonGenerator). - ///@return True if format-specific codec is needed with this parser; false if a general - /// ObjectCodec is enough - ///@since 2.1 - bool requiresCustomCodec() { - return _requiresCustomCodec(reference.pointer).boolean; - } - - static final _canParseAsync = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__canParseAsync") - .asFunction)>(); - - /// from: public boolean canParseAsync() - /// - /// Method that can be called to determine if this parser instance - /// uses non-blocking ("asynchronous") input access for decoding or not. - /// Access mode is determined by earlier calls via JsonFactory; - /// it may not be changed after construction. - /// - /// If non-blocking decoding is (@code true}, it is possible to call - /// \#getNonBlockingInputFeeder() to obtain object to use - /// for feeding input; otherwise (false returned) - /// input is read by blocking - ///@return True if this is a non-blocking ("asynchronous") parser - ///@since 2.9 - bool canParseAsync() { - return _canParseAsync(reference.pointer).boolean; - } - - static final _getNonBlockingInputFeeder = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getNonBlockingInputFeeder") - .asFunction)>(); - - /// from: public com.fasterxml.jackson.core.async.NonBlockingInputFeeder getNonBlockingInputFeeder() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that will either return a feeder instance (if parser uses - /// non-blocking, aka asynchronous access); or null for - /// parsers that use blocking I/O. - ///@return Input feeder to use with non-blocking (async) parsing - ///@since 2.9 - jni.JObject getNonBlockingInputFeeder() { - return _getNonBlockingInputFeeder(reference.pointer) - .object(const jni.JObjectType()); - } - - static final _getReadCapabilities = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getReadCapabilities") - .asFunction)>(); - - /// from: public com.fasterxml.jackson.core.util.JacksonFeatureSet getReadCapabilities() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Accessor for getting metadata on capabilities of this parser, based on - /// underlying data format being read (directly or indirectly). - ///@return Set of read capabilities for content to read via this parser - ///@since 2.12 - jni.JObject getReadCapabilities() { - return _getReadCapabilities(reference.pointer) - .object(const jni.JObjectType()); - } - - static final _version = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__version") - .asFunction)>(); - - /// from: public abstract com.fasterxml.jackson.core.Version version() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Accessor for getting version of the core package, given a parser instance. - /// Left for sub-classes to implement. - ///@return Version of this generator (derived from version declared for - /// {@code jackson-core} jar that contains the class - jni.JObject version() { - return _version(reference.pointer).object(const jni.JObjectType()); - } - - static final _close = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__close") - .asFunction)>(); - - /// from: public abstract void close() - /// - /// Closes the parser so that no further iteration or data access - /// can be made; will also close the underlying input source - /// if parser either __owns__ the input source, or feature - /// Feature\#AUTO_CLOSE_SOURCE is enabled. - /// Whether parser owns the input source depends on factory - /// method that was used to construct instance (so check - /// com.fasterxml.jackson.core.JsonFactory for details, - /// but the general - /// idea is that if caller passes in closable resource (such - /// as InputStream or Reader) parser does NOT - /// own the source; but if it passes a reference (such as - /// java.io.File or java.net.URL and creates - /// stream or reader it does own them. - ///@throws IOException if there is either an underlying I/O problem - void close() { - _close(reference.pointer).check(); - } - - static final _isClosed = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__isClosed") - .asFunction)>(); - - /// from: public abstract boolean isClosed() - /// - /// Method that can be called to determine whether this parser - /// is closed or not. If it is closed, no new tokens can be - /// retrieved by calling \#nextToken (and the underlying - /// stream may be closed). Closing may be due to an explicit - /// call to \#close or because parser has encountered - /// end of input. - ///@return {@code True} if this parser instance has been closed - bool isClosed() { - return _isClosed(reference.pointer).boolean; - } - - static final _getParsingContext = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getParsingContext") - .asFunction)>(); - - /// from: public abstract com.fasterxml.jackson.core.JsonStreamContext getParsingContext() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that can be used to access current parsing context reader - /// is in. There are 3 different types: root, array and object contexts, - /// with slightly different available information. Contexts are - /// hierarchically nested, and can be used for example for figuring - /// out part of the input document that correspond to specific - /// array or object (for highlighting purposes, or error reporting). - /// Contexts can also be used for simple xpath-like matching of - /// input, if so desired. - ///@return Stream input context (JsonStreamContext) associated with this parser - jni.JObject getParsingContext() { - return _getParsingContext(reference.pointer) - .object(const jni.JObjectType()); - } - - static final _currentLocation = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__currentLocation") - .asFunction)>(); - - /// from: public com.fasterxml.jackson.core.JsonLocation currentLocation() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that returns location of the last processed input unit (character - /// or byte) from the input; - /// usually for error reporting purposes. - /// - /// Note that the location is not guaranteed to be accurate (although most - /// implementation will try their best): some implementations may only - /// report specific boundary locations (start or end locations of tokens) - /// and others only return JsonLocation\#NA due to not having access - /// to input location information (when delegating actual decoding work - /// to other library) - ///@return Location of the last processed input unit (byte or character) - ///@since 2.13 - jni.JObject currentLocation() { - return _currentLocation(reference.pointer).object(const jni.JObjectType()); - } - - static final _currentTokenLocation = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__currentTokenLocation") - .asFunction)>(); - - /// from: public com.fasterxml.jackson.core.JsonLocation currentTokenLocation() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that return the __starting__ location of the current - /// (most recently returned) - /// token; that is, the position of the first input unit (character or byte) from input - /// that starts the current token. - /// - /// Note that the location is not guaranteed to be accurate (although most - /// implementation will try their best): some implementations may only - /// return JsonLocation\#NA due to not having access - /// to input location information (when delegating actual decoding work - /// to other library) - ///@return Starting location of the token parser currently points to - ///@since 2.13 (will eventually replace \#getTokenLocation) - jni.JObject currentTokenLocation() { - return _currentTokenLocation(reference.pointer) - .object(const jni.JObjectType()); - } - - static final _getCurrentLocation = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getCurrentLocation") - .asFunction)>(); - - /// from: public abstract com.fasterxml.jackson.core.JsonLocation getCurrentLocation() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Alias for \#currentLocation(), to be deprecated in later - /// Jackson 2.x versions (and removed from Jackson 3.0). - ///@return Location of the last processed input unit (byte or character) - jni.JObject getCurrentLocation() { - return _getCurrentLocation(reference.pointer) - .object(const jni.JObjectType()); - } - - static final _getTokenLocation = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getTokenLocation") - .asFunction)>(); - - /// from: public abstract com.fasterxml.jackson.core.JsonLocation getTokenLocation() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Alias for \#currentTokenLocation(), to be deprecated in later - /// Jackson 2.x versions (and removed from Jackson 3.0). - ///@return Starting location of the token parser currently points to - jni.JObject getTokenLocation() { - return _getTokenLocation(reference.pointer).object(const jni.JObjectType()); - } - - static final _currentValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__currentValue") - .asFunction)>(); - - /// from: public java.lang.Object currentValue() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Helper method, usually equivalent to: - /// - /// getParsingContext().getCurrentValue(); - /// - /// - /// Note that "current value" is NOT populated (or used) by Streaming parser; - /// it is only used by higher-level data-binding functionality. - /// The reason it is included here is that it can be stored and accessed hierarchically, - /// and gets passed through data-binding. - ///@return "Current value" associated with the current input context (state) of this parser - ///@since 2.13 (added as replacement for older \#getCurrentValue() - jni.JObject currentValue() { - return _currentValue(reference.pointer).object(const jni.JObjectType()); - } - - static final _assignCurrentValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__assignCurrentValue") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public void assignCurrentValue(java.lang.Object v) - /// - /// Helper method, usually equivalent to: - /// - /// getParsingContext().setCurrentValue(v); - /// - ///@param v Current value to assign for the current input context of this parser - ///@since 2.13 (added as replacement for older \#setCurrentValue - void assignCurrentValue( - jni.JObject v, - ) { - _assignCurrentValue(reference.pointer, v.reference.pointer).check(); - } - - static final _getCurrentValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getCurrentValue") - .asFunction)>(); - - /// from: public java.lang.Object getCurrentValue() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Alias for \#currentValue(), to be deprecated in later - /// Jackson 2.x versions (and removed from Jackson 3.0). - ///@return Location of the last processed input unit (byte or character) - jni.JObject getCurrentValue() { - return _getCurrentValue(reference.pointer).object(const jni.JObjectType()); - } - - static final _setCurrentValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__setCurrentValue") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public void setCurrentValue(java.lang.Object v) - /// - /// Alias for \#assignCurrentValue, to be deprecated in later - /// Jackson 2.x versions (and removed from Jackson 3.0). - ///@param v Current value to assign for the current input context of this parser - void setCurrentValue( - jni.JObject v, - ) { - _setCurrentValue(reference.pointer, v.reference.pointer).check(); - } - - static final _releaseBuffered = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__releaseBuffered") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public int releaseBuffered(java.io.OutputStream out) - /// - /// Method that can be called to push back any content that - /// has been read but not consumed by the parser. This is usually - /// done after reading all content of interest using parser. - /// Content is released by writing it to given stream if possible; - /// if underlying input is byte-based it can released, if not (char-based) - /// it can not. - ///@param out OutputStream to which buffered, undecoded content is written to - ///@return -1 if the underlying content source is not byte based - /// (that is, input can not be sent to OutputStream; - /// otherwise number of bytes released (0 if there was nothing to release) - ///@throws IOException if write to stream threw exception - int releaseBuffered( - jni.JObject out, - ) { - return _releaseBuffered(reference.pointer, out.reference.pointer).integer; - } - - static final _releaseBuffered1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__releaseBuffered1") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public int releaseBuffered(java.io.Writer w) - /// - /// Method that can be called to push back any content that - /// has been read but not consumed by the parser. - /// This is usually - /// done after reading all content of interest using parser. - /// Content is released by writing it to given writer if possible; - /// if underlying input is char-based it can released, if not (byte-based) - /// it can not. - ///@param w Writer to which buffered but unprocessed content is written to - ///@return -1 if the underlying content source is not char-based - /// (that is, input can not be sent to Writer; - /// otherwise number of chars released (0 if there was nothing to release) - ///@throws IOException if write using Writer threw exception - int releaseBuffered1( - jni.JObject w, - ) { - return _releaseBuffered1(reference.pointer, w.reference.pointer).integer; - } - - static final _enable = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__enable") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser enable(com.fasterxml.jackson.core.JsonParser.Feature f) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for enabling specified parser feature - /// (check Feature for list of features) - ///@param f Feature to enable - ///@return This parser, to allow call chaining - JsonParser enable( - JsonParser_Feature f, - ) { - return _enable(reference.pointer, f.reference.pointer) - .object(const $JsonParserType()); - } - - static final _disable = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__disable") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser disable(com.fasterxml.jackson.core.JsonParser.Feature f) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for disabling specified feature - /// (check Feature for list of features) - ///@param f Feature to disable - ///@return This parser, to allow call chaining - JsonParser disable( - JsonParser_Feature f, - ) { - return _disable(reference.pointer, f.reference.pointer) - .object(const $JsonParserType()); - } - - static final _configure = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer, ffi.Uint8)>>("JsonParser__configure") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer, int)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser configure(com.fasterxml.jackson.core.JsonParser.Feature f, boolean state) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for enabling or disabling specified feature - /// (check Feature for list of features) - ///@param f Feature to enable or disable - ///@param state Whether to enable feature ({@code true}) or disable ({@code false}) - ///@return This parser, to allow call chaining - JsonParser configure( - JsonParser_Feature f, - bool state, - ) { - return _configure(reference.pointer, f.reference.pointer, state ? 1 : 0) - .object(const $JsonParserType()); - } - - static final _isEnabled = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__isEnabled") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public boolean isEnabled(com.fasterxml.jackson.core.JsonParser.Feature f) - /// - /// Method for checking whether specified Feature is enabled. - ///@param f Feature to check - ///@return {@code True} if feature is enabled; {@code false} otherwise - bool isEnabled( - JsonParser_Feature f, - ) { - return _isEnabled(reference.pointer, f.reference.pointer).boolean; - } - - static final _isEnabled1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__isEnabled1") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public boolean isEnabled(com.fasterxml.jackson.core.StreamReadFeature f) - /// - /// Method for checking whether specified Feature is enabled. - ///@param f Feature to check - ///@return {@code True} if feature is enabled; {@code false} otherwise - ///@since 2.10 - bool isEnabled1( - jni.JObject f, - ) { - return _isEnabled1(reference.pointer, f.reference.pointer).boolean; - } - - static final _getFeatureMask = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getFeatureMask") - .asFunction)>(); - - /// from: public int getFeatureMask() - /// - /// Bulk access method for getting state of all standard Features. - ///@return Bit mask that defines current states of all standard Features. - ///@since 2.3 - int getFeatureMask() { - return _getFeatureMask(reference.pointer).integer; - } - - static final _setFeatureMask = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Int32)>>("JsonParser__setFeatureMask") - .asFunction, int)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser setFeatureMask(int mask) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Bulk set method for (re)setting states of all standard Features - ///@param mask Bit mask that defines set of features to enable - ///@return This parser, to allow call chaining - ///@since 2.3 - ///@deprecated Since 2.7, use \#overrideStdFeatures(int, int) instead - JsonParser setFeatureMask( - int mask, - ) { - return _setFeatureMask(reference.pointer, mask) - .object(const $JsonParserType()); - } - - static final _overrideStdFeatures = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, ffi.Int32, - ffi.Int32)>>("JsonParser__overrideStdFeatures") - .asFunction, int, int)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser overrideStdFeatures(int values, int mask) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Bulk set method for (re)setting states of features specified by mask. - /// Functionally equivalent to - /// - /// int oldState = getFeatureMask(); - /// int newState = (oldState & ~mask) | (values & mask); - /// setFeatureMask(newState); - /// - /// but preferred as this lets caller more efficiently specify actual changes made. - ///@param values Bit mask of set/clear state for features to change - ///@param mask Bit mask of features to change - ///@return This parser, to allow call chaining - ///@since 2.6 - JsonParser overrideStdFeatures( - int values, - int mask, - ) { - return _overrideStdFeatures(reference.pointer, values, mask) - .object(const $JsonParserType()); - } - - static final _getFormatFeatures = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getFormatFeatures") - .asFunction)>(); - - /// from: public int getFormatFeatures() - /// - /// Bulk access method for getting state of all FormatFeatures, format-specific - /// on/off configuration settings. - ///@return Bit mask that defines current states of all standard FormatFeatures. - ///@since 2.6 - int getFormatFeatures() { - return _getFormatFeatures(reference.pointer).integer; - } - - static final _overrideFormatFeatures = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, ffi.Int32, - ffi.Int32)>>("JsonParser__overrideFormatFeatures") - .asFunction, int, int)>(); - - /// from: public com.fasterxml.jackson.core.JsonParser overrideFormatFeatures(int values, int mask) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Bulk set method for (re)setting states of FormatFeatures, - /// by specifying values (set / clear) along with a mask, to determine - /// which features to change, if any. - /// - /// Default implementation will simply throw an exception to indicate that - /// the parser implementation does not support any FormatFeatures. - ///@param values Bit mask of set/clear state for features to change - ///@param mask Bit mask of features to change - ///@return This parser, to allow call chaining - ///@since 2.6 - JsonParser overrideFormatFeatures( - int values, - int mask, - ) { - return _overrideFormatFeatures(reference.pointer, values, mask) - .object(const $JsonParserType()); - } - - static final _nextToken = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__nextToken") - .asFunction)>(); - - /// from: public abstract com.fasterxml.jackson.core.JsonToken nextToken() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Main iteration method, which will advance stream enough - /// to determine type of the next token, if any. If none - /// remaining (stream has no content other than possible - /// white space before ending), null will be returned. - ///@return Next token from the stream, if any found, or null - /// to indicate end-of-input - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - jsontoken_.JsonToken nextToken() { - return _nextToken(reference.pointer) - .object(const jsontoken_.$JsonTokenType()); - } - - static final _nextValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__nextValue") - .asFunction)>(); - - /// from: public abstract com.fasterxml.jackson.core.JsonToken nextValue() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Iteration method that will advance stream enough - /// to determine type of the next token that is a value type - /// (including JSON Array and Object start/end markers). - /// Or put another way, nextToken() will be called once, - /// and if JsonToken\#FIELD_NAME is returned, another - /// time to get the value for the field. - /// Method is most useful for iterating over value entries - /// of JSON objects; field name will still be available - /// by calling \#getCurrentName when parser points to - /// the value. - ///@return Next non-field-name token from the stream, if any found, - /// or null to indicate end-of-input (or, for non-blocking - /// parsers, JsonToken\#NOT_AVAILABLE if no tokens were - /// available yet) - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - jsontoken_.JsonToken nextValue() { - return _nextValue(reference.pointer) - .object(const jsontoken_.$JsonTokenType()); - } - - static final _nextFieldName = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__nextFieldName") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public boolean nextFieldName(com.fasterxml.jackson.core.SerializableString str) - /// - /// Method that fetches next token (as if calling \#nextToken) and - /// verifies whether it is JsonToken\#FIELD_NAME with specified name - /// and returns result of that comparison. - /// It is functionally equivalent to: - ///
-  ///  return (nextToken() == JsonToken.FIELD_NAME) && str.getValue().equals(getCurrentName());
-  ///
- /// but may be faster for parser to verify, and can therefore be used if caller - /// expects to get such a property name from input next. - ///@param str Property name to compare next token to (if next token is - /// JsonToken.FIELD_NAME) - ///@return {@code True} if parser advanced to {@code JsonToken.FIELD_NAME} with - /// specified name; {@code false} otherwise (different token or non-matching name) - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - bool nextFieldName( - jni.JObject str, - ) { - return _nextFieldName(reference.pointer, str.reference.pointer).boolean; - } - - static final _nextFieldName1 = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__nextFieldName1") - .asFunction)>(); - - /// from: public java.lang.String nextFieldName() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that fetches next token (as if calling \#nextToken) and - /// verifies whether it is JsonToken\#FIELD_NAME; if it is, - /// returns same as \#getCurrentName(), otherwise null. - ///@return Name of the the {@code JsonToken.FIELD_NAME} parser advanced to, if any; - /// {@code null} if next token is of some other type - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - ///@since 2.5 - jni.JString nextFieldName1() { - return _nextFieldName1(reference.pointer).object(const jni.JStringType()); - } - - static final _nextTextValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__nextTextValue") - .asFunction)>(); - - /// from: public java.lang.String nextTextValue() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that fetches next token (as if calling \#nextToken) and - /// if it is JsonToken\#VALUE_STRING returns contained String value; - /// otherwise returns null. - /// It is functionally equivalent to: - ///
-  ///  return (nextToken() == JsonToken.VALUE_STRING) ? getText() : null;
-  ///
- /// but may be faster for parser to process, and can therefore be used if caller - /// expects to get a String value next from input. - ///@return Text value of the {@code JsonToken.VALUE_STRING} token parser advanced - /// to; or {@code null} if next token is of some other type - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - jni.JString nextTextValue() { - return _nextTextValue(reference.pointer).object(const jni.JStringType()); - } - - static final _nextIntValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Int32)>>("JsonParser__nextIntValue") - .asFunction, int)>(); - - /// from: public int nextIntValue(int defaultValue) - /// - /// Method that fetches next token (as if calling \#nextToken) and - /// if it is JsonToken\#VALUE_NUMBER_INT returns 32-bit int value; - /// otherwise returns specified default value - /// It is functionally equivalent to: - ///
-  ///  return (nextToken() == JsonToken.VALUE_NUMBER_INT) ? getIntValue() : defaultValue;
-  ///
- /// but may be faster for parser to process, and can therefore be used if caller - /// expects to get an int value next from input. - /// - /// NOTE: value checks are performed similar to \#getIntValue() - ///@param defaultValue Value to return if next token is NOT of type {@code JsonToken.VALUE_NUMBER_INT} - ///@return Integer ({@code int}) value of the {@code JsonToken.VALUE_NUMBER_INT} token parser advanced - /// to; or {@code defaultValue} if next token is of some other type - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - ///@throws InputCoercionException if integer number does not fit in Java {@code int} - int nextIntValue( - int defaultValue, - ) { - return _nextIntValue(reference.pointer, defaultValue).integer; - } - - static final _nextLongValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Int64)>>("JsonParser__nextLongValue") - .asFunction, int)>(); - - /// from: public long nextLongValue(long defaultValue) - /// - /// Method that fetches next token (as if calling \#nextToken) and - /// if it is JsonToken\#VALUE_NUMBER_INT returns 64-bit long value; - /// otherwise returns specified default value - /// It is functionally equivalent to: - ///
-  ///  return (nextToken() == JsonToken.VALUE_NUMBER_INT) ? getLongValue() : defaultValue;
-  ///
- /// but may be faster for parser to process, and can therefore be used if caller - /// expects to get a long value next from input. - /// - /// NOTE: value checks are performed similar to \#getLongValue() - ///@param defaultValue Value to return if next token is NOT of type {@code JsonToken.VALUE_NUMBER_INT} - ///@return {@code long} value of the {@code JsonToken.VALUE_NUMBER_INT} token parser advanced - /// to; or {@code defaultValue} if next token is of some other type - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - ///@throws InputCoercionException if integer number does not fit in Java {@code long} - int nextLongValue( - int defaultValue, - ) { - return _nextLongValue(reference.pointer, defaultValue).long; - } - - static final _nextBooleanValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__nextBooleanValue") - .asFunction)>(); - - /// from: public java.lang.Boolean nextBooleanValue() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that fetches next token (as if calling \#nextToken) and - /// if it is JsonToken\#VALUE_TRUE or JsonToken\#VALUE_FALSE - /// returns matching Boolean value; otherwise return null. - /// It is functionally equivalent to: - ///
-  ///  JsonToken t = nextToken();
-  ///  if (t == JsonToken.VALUE_TRUE) return Boolean.TRUE;
-  ///  if (t == JsonToken.VALUE_FALSE) return Boolean.FALSE;
-  ///  return null;
-  ///
- /// but may be faster for parser to process, and can therefore be used if caller - /// expects to get a Boolean value next from input. - ///@return {@code Boolean} value of the {@code JsonToken.VALUE_TRUE} or {@code JsonToken.VALUE_FALSE} - /// token parser advanced to; or {@code null} if next token is of some other type - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - jni.JBoolean nextBooleanValue() { - return _nextBooleanValue(reference.pointer) - .object(const jni.JBooleanType()); - } - - static final _skipChildren = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__skipChildren") - .asFunction)>(); - - /// from: public abstract com.fasterxml.jackson.core.JsonParser skipChildren() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that will skip all child tokens of an array or - /// object token that the parser currently points to, - /// iff stream points to - /// JsonToken\#START_OBJECT or JsonToken\#START_ARRAY. - /// If not, it will do nothing. - /// After skipping, stream will point to __matching__ - /// JsonToken\#END_OBJECT or JsonToken\#END_ARRAY - /// (possibly skipping nested pairs of START/END OBJECT/ARRAY tokens - /// as well as value tokens). - /// The idea is that after calling this method, application - /// will call \#nextToken to point to the next - /// available token, if any. - ///@return This parser, to allow call chaining - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - JsonParser skipChildren() { - return _skipChildren(reference.pointer).object(const $JsonParserType()); - } - - static final _finishToken = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__finishToken") - .asFunction)>(); - - /// from: public void finishToken() - /// - /// Method that may be used to force full handling of the current token - /// so that even if lazy processing is enabled, the whole contents are - /// read for possible retrieval. This is usually used to ensure that - /// the token end location is available, as well as token contents - /// (similar to what calling, say \#getTextCharacters(), would - /// achieve). - /// - /// Note that for many dataformat implementations this method - /// will not do anything; this is the default implementation unless - /// overridden by sub-classes. - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - ///@since 2.8 - void finishToken() { - _finishToken(reference.pointer).check(); - } - - static final _currentToken = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__currentToken") - .asFunction)>(); - - /// from: public com.fasterxml.jackson.core.JsonToken currentToken() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Accessor to find which token parser currently points to, if any; - /// null will be returned if none. - /// If return value is non-null, data associated with the token - /// is available via other accessor methods. - ///@return Type of the token this parser currently points to, - /// if any: null before any tokens have been read, and - /// after end-of-input has been encountered, as well as - /// if the current token has been explicitly cleared. - ///@since 2.8 - jsontoken_.JsonToken currentToken() { - return _currentToken(reference.pointer) - .object(const jsontoken_.$JsonTokenType()); - } - - static final _currentTokenId = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__currentTokenId") - .asFunction)>(); - - /// from: public int currentTokenId() - /// - /// Method similar to \#getCurrentToken() but that returns an - /// int instead of JsonToken (enum value). - /// - /// Use of int directly is typically more efficient on switch statements, - /// so this method may be useful when building low-overhead codecs. - /// Note, however, that effect may not be big enough to matter: make sure - /// to profile performance before deciding to use this method. - ///@since 2.8 - ///@return {@code int} matching one of constants from JsonTokenId. - int currentTokenId() { - return _currentTokenId(reference.pointer).integer; - } - - static final _getCurrentToken = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getCurrentToken") - .asFunction)>(); - - /// from: public abstract com.fasterxml.jackson.core.JsonToken getCurrentToken() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Alias for \#currentToken(), may be deprecated sometime after - /// Jackson 2.13 (will be removed from 3.0). - ///@return Type of the token this parser currently points to, - /// if any: null before any tokens have been read, and - jsontoken_.JsonToken getCurrentToken() { - return _getCurrentToken(reference.pointer) - .object(const jsontoken_.$JsonTokenType()); - } - - static final _getCurrentTokenId = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getCurrentTokenId") - .asFunction)>(); - - /// from: public abstract int getCurrentTokenId() - /// - /// Deprecated alias for \#currentTokenId(). - ///@return {@code int} matching one of constants from JsonTokenId. - ///@deprecated Since 2.12 use \#currentTokenId instead - int getCurrentTokenId() { - return _getCurrentTokenId(reference.pointer).integer; - } - - static final _hasCurrentToken = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__hasCurrentToken") - .asFunction)>(); - - /// from: public abstract boolean hasCurrentToken() - /// - /// Method for checking whether parser currently points to - /// a token (and data for that token is available). - /// Equivalent to check for parser.getCurrentToken() != null. - ///@return True if the parser just returned a valid - /// token via \#nextToken; false otherwise (parser - /// was just constructed, encountered end-of-input - /// and returned null from \#nextToken, or the token - /// has been consumed) - bool hasCurrentToken() { - return _hasCurrentToken(reference.pointer).boolean; - } - - static final _hasTokenId = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Int32)>>("JsonParser__hasTokenId") - .asFunction, int)>(); - - /// from: public abstract boolean hasTokenId(int id) - /// - /// Method that is functionally equivalent to: - /// - /// return currentTokenId() == id - /// - /// but may be more efficiently implemented. - /// - /// Note that no traversal or conversion is performed; so in some - /// cases calling method like \#isExpectedStartArrayToken() - /// is necessary instead. - ///@param id Token id to match (from (@link JsonTokenId}) - ///@return {@code True} if the parser current points to specified token - ///@since 2.5 - bool hasTokenId( - int id, - ) { - return _hasTokenId(reference.pointer, id).boolean; - } - - static final _hasToken = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__hasToken") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public abstract boolean hasToken(com.fasterxml.jackson.core.JsonToken t) - /// - /// Method that is functionally equivalent to: - /// - /// return currentToken() == t - /// - /// but may be more efficiently implemented. - /// - /// Note that no traversal or conversion is performed; so in some - /// cases calling method like \#isExpectedStartArrayToken() - /// is necessary instead. - ///@param t Token to match - ///@return {@code True} if the parser current points to specified token - ///@since 2.6 - bool hasToken( - jsontoken_.JsonToken t, - ) { - return _hasToken(reference.pointer, t.reference.pointer).boolean; - } - - static final _isExpectedStartArrayToken = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__isExpectedStartArrayToken") - .asFunction)>(); - - /// from: public boolean isExpectedStartArrayToken() - /// - /// Specialized accessor that can be used to verify that the current - /// token indicates start array (usually meaning that current token - /// is JsonToken\#START_ARRAY) when start array is expected. - /// For some specialized parsers this can return true for other cases - /// as well; this is usually done to emulate arrays in cases underlying - /// format is ambiguous (XML, for example, has no format-level difference - /// between Objects and Arrays; it just has elements). - /// - /// Default implementation is equivalent to: - ///
-  ///   currentToken() == JsonToken.START_ARRAY
-  ///
- /// but may be overridden by custom parser implementations. - ///@return True if the current token can be considered as a - /// start-array marker (such JsonToken\#START_ARRAY); - /// {@code false} if not - bool isExpectedStartArrayToken() { - return _isExpectedStartArrayToken(reference.pointer).boolean; - } - - static final _isExpectedStartObjectToken = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__isExpectedStartObjectToken") - .asFunction)>(); - - /// from: public boolean isExpectedStartObjectToken() - /// - /// Similar to \#isExpectedStartArrayToken(), but checks whether stream - /// currently points to JsonToken\#START_OBJECT. - ///@return True if the current token can be considered as a - /// start-array marker (such JsonToken\#START_OBJECT); - /// {@code false} if not - ///@since 2.5 - bool isExpectedStartObjectToken() { - return _isExpectedStartObjectToken(reference.pointer).boolean; - } - - static final _isExpectedNumberIntToken = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__isExpectedNumberIntToken") - .asFunction)>(); - - /// from: public boolean isExpectedNumberIntToken() - /// - /// Similar to \#isExpectedStartArrayToken(), but checks whether stream - /// currently points to JsonToken\#VALUE_NUMBER_INT. - /// - /// The initial use case is for XML backend to efficiently (attempt to) coerce - /// textual content into numbers. - ///@return True if the current token can be considered as a - /// start-array marker (such JsonToken\#VALUE_NUMBER_INT); - /// {@code false} if not - ///@since 2.12 - bool isExpectedNumberIntToken() { - return _isExpectedNumberIntToken(reference.pointer).boolean; - } - - static final _isNaN = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__isNaN") - .asFunction)>(); - - /// from: public boolean isNaN() - /// - /// Access for checking whether current token is a numeric value token, but - /// one that is of "not-a-number" (NaN) variety (including both "NaN" AND - /// positive/negative infinity!): not supported by all formats, - /// but often supported for JsonToken\#VALUE_NUMBER_FLOAT. - /// NOTE: roughly equivalent to calling !Double.isFinite() - /// on value you would get from calling \#getDoubleValue(). - ///@return {@code True} if the current token is of type JsonToken\#VALUE_NUMBER_FLOAT - /// but represents a "Not a Number"; {@code false} for other tokens and regular - /// floating-point numbers - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - ///@since 2.9 - bool isNaN() { - return _isNaN(reference.pointer).boolean; - } - - static final _clearCurrentToken = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__clearCurrentToken") - .asFunction)>(); - - /// from: public abstract void clearCurrentToken() - /// - /// Method called to "consume" the current token by effectively - /// removing it so that \#hasCurrentToken returns false, and - /// \#getCurrentToken null). - /// Cleared token value can still be accessed by calling - /// \#getLastClearedToken (if absolutely needed), but - /// usually isn't. - /// - /// Method was added to be used by the optional data binder, since - /// it has to be able to consume last token used for binding (so that - /// it will not be used again). - void clearCurrentToken() { - _clearCurrentToken(reference.pointer).check(); - } - - static final _getLastClearedToken = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getLastClearedToken") - .asFunction)>(); - - /// from: public abstract com.fasterxml.jackson.core.JsonToken getLastClearedToken() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that can be called to get the last token that was - /// cleared using \#clearCurrentToken. This is not necessarily - /// the latest token read. - /// Will return null if no tokens have been cleared, - /// or if parser has been closed. - ///@return Last cleared token, if any; {@code null} otherwise - jsontoken_.JsonToken getLastClearedToken() { - return _getLastClearedToken(reference.pointer) - .object(const jsontoken_.$JsonTokenType()); - } - - static final _overrideCurrentName = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__overrideCurrentName") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public abstract void overrideCurrentName(java.lang.String name) - /// - /// Method that can be used to change what is considered to be - /// the current (field) name. - /// May be needed to support non-JSON data formats or unusual binding - /// conventions; not needed for typical processing. - /// - /// Note that use of this method should only be done as sort of last - /// resort, as it is a work-around for regular operation. - ///@param name Name to use as the current name; may be null. - void overrideCurrentName( - jni.JString name, - ) { - _overrideCurrentName(reference.pointer, name.reference.pointer).check(); - } - - static final _getCurrentName = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getCurrentName") - .asFunction)>(); - - /// from: public abstract java.lang.String getCurrentName() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Alias of \#currentName(). - ///@return Name of the current field in the parsing context - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - jni.JString getCurrentName() { - return _getCurrentName(reference.pointer).object(const jni.JStringType()); - } - - static final _currentName = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__currentName") - .asFunction)>(); - - /// from: public java.lang.String currentName() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that can be called to get the name associated with - /// the current token: for JsonToken\#FIELD_NAMEs it will - /// be the same as what \#getText returns; - /// for field values it will be preceding field name; - /// and for others (array values, root-level values) null. - ///@return Name of the current field in the parsing context - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - ///@since 2.10 - jni.JString currentName() { - return _currentName(reference.pointer).object(const jni.JStringType()); - } - - static final _getText = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getText") - .asFunction)>(); - - /// from: public abstract java.lang.String getText() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for accessing textual representation of the current token; - /// if no current token (before first call to \#nextToken, or - /// after encountering end-of-input), returns null. - /// Method can be called for any token type. - ///@return Textual value associated with the current token (one returned - /// by \#nextToken() or other iteration methods) - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - jni.JString getText() { - return _getText(reference.pointer).object(const jni.JStringType()); - } - - static final _getText1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__getText1") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public int getText(java.io.Writer writer) - /// - /// Method to read the textual representation of the current token in chunks and - /// pass it to the given Writer. - /// Conceptually same as calling: - ///
-  ///  writer.write(parser.getText());
-  ///
- /// but should typically be more efficient as longer content does need to - /// be combined into a single String to return, and write - /// can occur directly from intermediate buffers Jackson uses. - ///@param writer Writer to write textual content to - ///@return The number of characters written to the Writer - ///@throws IOException for low-level read issues or writes using passed - /// {@code writer}, or - /// JsonParseException for decoding problems - ///@since 2.8 - int getText1( - jni.JObject writer, - ) { - return _getText1(reference.pointer, writer.reference.pointer).integer; - } - - static final _getTextCharacters = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getTextCharacters") - .asFunction)>(); - - /// from: public abstract char[] getTextCharacters() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method similar to \#getText, but that will return - /// underlying (unmodifiable) character array that contains - /// textual value, instead of constructing a String object - /// to contain this information. - /// Note, however, that: - ///
    - ///
  • Textual contents are not guaranteed to start at - /// index 0 (rather, call \#getTextOffset) to - /// know the actual offset - ///
  • - ///
  • Length of textual contents may be less than the - /// length of returned buffer: call \#getTextLength - /// for actual length of returned content. - ///
  • - ///
- /// - /// Note that caller __MUST NOT__ modify the returned - /// character array in any way -- doing so may corrupt - /// current parser state and render parser instance useless. - /// - /// The only reason to call this method (over \#getText) - /// is to avoid construction of a String object (which - /// will make a copy of contents). - ///@return Buffer that contains the current textual value (but not necessarily - /// at offset 0, and not necessarily until the end of buffer) - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - jni.JArray getTextCharacters() { - return _getTextCharacters(reference.pointer) - .object(const jni.JArrayType(jni.jcharType())); - } - - static final _getTextLength = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getTextLength") - .asFunction)>(); - - /// from: public abstract int getTextLength() - /// - /// Accessor used with \#getTextCharacters, to know length - /// of String stored in returned buffer. - ///@return Number of characters within buffer returned - /// by \#getTextCharacters that are part of - /// textual content of the current token. - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - int getTextLength() { - return _getTextLength(reference.pointer).integer; - } - - static final _getTextOffset = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getTextOffset") - .asFunction)>(); - - /// from: public abstract int getTextOffset() - /// - /// Accessor used with \#getTextCharacters, to know offset - /// of the first text content character within buffer. - ///@return Offset of the first character within buffer returned - /// by \#getTextCharacters that is part of - /// textual content of the current token. - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - int getTextOffset() { - return _getTextOffset(reference.pointer).integer; - } - - static final _hasTextCharacters = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__hasTextCharacters") - .asFunction)>(); - - /// from: public abstract boolean hasTextCharacters() - /// - /// Method that can be used to determine whether calling of - /// \#getTextCharacters would be the most efficient - /// way to access textual content for the event parser currently - /// points to. - /// - /// Default implementation simply returns false since only actual - /// implementation class has knowledge of its internal buffering - /// state. - /// Implementations are strongly encouraged to properly override - /// this method, to allow efficient copying of content by other - /// code. - ///@return True if parser currently has character array that can - /// be efficiently returned via \#getTextCharacters; false - /// means that it may or may not exist - bool hasTextCharacters() { - return _hasTextCharacters(reference.pointer).boolean; - } - - static final _getNumberValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getNumberValue") - .asFunction)>(); - - /// from: public abstract java.lang.Number getNumberValue() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Generic number value accessor method that will work for - /// all kinds of numeric values. It will return the optimal - /// (simplest/smallest possible) wrapper object that can - /// express the numeric value just parsed. - ///@return Numeric value of the current token in its most optimal - /// representation - ///@throws IOException Problem with access: JsonParseException if - /// the current token is not numeric, or if decoding of the value fails - /// (invalid format for numbers); plain IOException if underlying - /// content read fails (possible if values are extracted lazily) - jni.JNumber getNumberValue() { - return _getNumberValue(reference.pointer).object(const jni.JNumberType()); - } - - static final _getNumberValueExact = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getNumberValueExact") - .asFunction)>(); - - /// from: public java.lang.Number getNumberValueExact() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method similar to \#getNumberValue with the difference that - /// for floating-point numbers value returned may be BigDecimal - /// if the underlying format does not store floating-point numbers using - /// native representation: for example, textual formats represent numbers - /// as Strings (which are 10-based), and conversion to java.lang.Double - /// is potentially lossy operation. - /// - /// Default implementation simply returns \#getNumberValue() - ///@return Numeric value of the current token using most accurate representation - ///@throws IOException Problem with access: JsonParseException if - /// the current token is not numeric, or if decoding of the value fails - /// (invalid format for numbers); plain IOException if underlying - /// content read fails (possible if values are extracted lazily) - ///@since 2.12 - jni.JNumber getNumberValueExact() { - return _getNumberValueExact(reference.pointer) - .object(const jni.JNumberType()); - } - - static final _getNumberType = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getNumberType") - .asFunction)>(); - - /// from: public abstract com.fasterxml.jackson.core.JsonParser.NumberType getNumberType() - /// The returned object must be released after use, by calling the [release] method. - /// - /// If current token is of type - /// JsonToken\#VALUE_NUMBER_INT or - /// JsonToken\#VALUE_NUMBER_FLOAT, returns - /// one of NumberType constants; otherwise returns null. - ///@return Type of current number, if parser points to numeric token; {@code null} otherwise - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - JsonParser_NumberType getNumberType() { - return _getNumberType(reference.pointer) - .object(const $JsonParser_NumberTypeType()); - } - - static final _getByteValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getByteValue") - .asFunction)>(); - - /// from: public byte getByteValue() - /// - /// Numeric accessor that can be called when the current - /// token is of type JsonToken\#VALUE_NUMBER_INT and - /// it can be expressed as a value of Java byte primitive type. - /// Note that in addition to "natural" input range of {@code [-128, 127]}, - /// this also allows "unsigned 8-bit byte" values {@code [128, 255]}: - /// but for this range value will be translated by truncation, leading - /// to sign change. - /// - /// It can also be called for JsonToken\#VALUE_NUMBER_FLOAT; - /// if so, it is equivalent to calling \#getDoubleValue - /// and then casting; except for possible overflow/underflow - /// exception. - /// - /// Note: if the resulting integer value falls outside range of - /// {@code [-128, 255]}, - /// a InputCoercionException - /// will be thrown to indicate numeric overflow/underflow. - ///@return Current number value as {@code byte} (if numeric token within - /// range of {@code [-128, 255]}); otherwise exception thrown - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - int getByteValue() { - return _getByteValue(reference.pointer).byte; - } - - static final _getShortValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getShortValue") - .asFunction)>(); - - /// from: public short getShortValue() - /// - /// Numeric accessor that can be called when the current - /// token is of type JsonToken\#VALUE_NUMBER_INT and - /// it can be expressed as a value of Java short primitive type. - /// It can also be called for JsonToken\#VALUE_NUMBER_FLOAT; - /// if so, it is equivalent to calling \#getDoubleValue - /// and then casting; except for possible overflow/underflow - /// exception. - /// - /// Note: if the resulting integer value falls outside range of - /// Java short, a InputCoercionException - /// will be thrown to indicate numeric overflow/underflow. - ///@return Current number value as {@code short} (if numeric token within - /// Java 16-bit signed {@code short} range); otherwise exception thrown - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - int getShortValue() { - return _getShortValue(reference.pointer).short; - } - - static final _getIntValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getIntValue") - .asFunction)>(); - - /// from: public abstract int getIntValue() - /// - /// Numeric accessor that can be called when the current - /// token is of type JsonToken\#VALUE_NUMBER_INT and - /// it can be expressed as a value of Java int primitive type. - /// It can also be called for JsonToken\#VALUE_NUMBER_FLOAT; - /// if so, it is equivalent to calling \#getDoubleValue - /// and then casting; except for possible overflow/underflow - /// exception. - /// - /// Note: if the resulting integer value falls outside range of - /// Java {@code int}, a InputCoercionException - /// may be thrown to indicate numeric overflow/underflow. - ///@return Current number value as {@code int} (if numeric token within - /// Java 32-bit signed {@code int} range); otherwise exception thrown - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - int getIntValue() { - return _getIntValue(reference.pointer).integer; - } - - static final _getLongValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getLongValue") - .asFunction)>(); - - /// from: public abstract long getLongValue() - /// - /// Numeric accessor that can be called when the current - /// token is of type JsonToken\#VALUE_NUMBER_INT and - /// it can be expressed as a Java long primitive type. - /// It can also be called for JsonToken\#VALUE_NUMBER_FLOAT; - /// if so, it is equivalent to calling \#getDoubleValue - /// and then casting to int; except for possible overflow/underflow - /// exception. - /// - /// Note: if the token is an integer, but its value falls - /// outside of range of Java long, a InputCoercionException - /// may be thrown to indicate numeric overflow/underflow. - ///@return Current number value as {@code long} (if numeric token within - /// Java 32-bit signed {@code long} range); otherwise exception thrown - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - int getLongValue() { - return _getLongValue(reference.pointer).long; - } - - static final _getBigIntegerValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getBigIntegerValue") - .asFunction)>(); - - /// from: public abstract java.math.BigInteger getBigIntegerValue() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Numeric accessor that can be called when the current - /// token is of type JsonToken\#VALUE_NUMBER_INT and - /// it can not be used as a Java long primitive type due to its - /// magnitude. - /// It can also be called for JsonToken\#VALUE_NUMBER_FLOAT; - /// if so, it is equivalent to calling \#getDecimalValue - /// and then constructing a BigInteger from that value. - ///@return Current number value as BigInteger (if numeric token); - /// otherwise exception thrown - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - jni.JObject getBigIntegerValue() { - return _getBigIntegerValue(reference.pointer) - .object(const jni.JObjectType()); - } - - static final _getFloatValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getFloatValue") - .asFunction)>(); - - /// from: public abstract float getFloatValue() - /// - /// Numeric accessor that can be called when the current - /// token is of type JsonToken\#VALUE_NUMBER_FLOAT and - /// it can be expressed as a Java float primitive type. - /// It can also be called for JsonToken\#VALUE_NUMBER_INT; - /// if so, it is equivalent to calling \#getLongValue - /// and then casting; except for possible overflow/underflow - /// exception. - /// - /// Note: if the value falls - /// outside of range of Java float, a InputCoercionException - /// will be thrown to indicate numeric overflow/underflow. - ///@return Current number value as {@code float} (if numeric token within - /// Java {@code float} range); otherwise exception thrown - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - double getFloatValue() { - return _getFloatValue(reference.pointer).float; - } - - static final _getDoubleValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getDoubleValue") - .asFunction)>(); - - /// from: public abstract double getDoubleValue() - /// - /// Numeric accessor that can be called when the current - /// token is of type JsonToken\#VALUE_NUMBER_FLOAT and - /// it can be expressed as a Java double primitive type. - /// It can also be called for JsonToken\#VALUE_NUMBER_INT; - /// if so, it is equivalent to calling \#getLongValue - /// and then casting; except for possible overflow/underflow - /// exception. - /// - /// Note: if the value falls - /// outside of range of Java double, a InputCoercionException - /// will be thrown to indicate numeric overflow/underflow. - ///@return Current number value as {@code double} (if numeric token within - /// Java {@code double} range); otherwise exception thrown - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - double getDoubleValue() { - return _getDoubleValue(reference.pointer).doubleFloat; - } - - static final _getDecimalValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getDecimalValue") - .asFunction)>(); - - /// from: public abstract java.math.BigDecimal getDecimalValue() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Numeric accessor that can be called when the current - /// token is of type JsonToken\#VALUE_NUMBER_FLOAT or - /// JsonToken\#VALUE_NUMBER_INT. No under/overflow exceptions - /// are ever thrown. - ///@return Current number value as BigDecimal (if numeric token); - /// otherwise exception thrown - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - jni.JObject getDecimalValue() { - return _getDecimalValue(reference.pointer).object(const jni.JObjectType()); - } - - static final _getBooleanValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getBooleanValue") - .asFunction)>(); - - /// from: public boolean getBooleanValue() - /// - /// Convenience accessor that can be called when the current - /// token is JsonToken\#VALUE_TRUE or - /// JsonToken\#VALUE_FALSE, to return matching {@code boolean} - /// value. - /// If the current token is of some other type, JsonParseException - /// will be thrown - ///@return {@code True} if current token is {@code JsonToken.VALUE_TRUE}, - /// {@code false} if current token is {@code JsonToken.VALUE_FALSE}; - /// otherwise throws JsonParseException - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - bool getBooleanValue() { - return _getBooleanValue(reference.pointer).boolean; - } - - static final _getEmbeddedObject = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getEmbeddedObject") - .asFunction)>(); - - /// from: public java.lang.Object getEmbeddedObject() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Accessor that can be called if (and only if) the current token - /// is JsonToken\#VALUE_EMBEDDED_OBJECT. For other token types, - /// null is returned. - /// - /// Note: only some specialized parser implementations support - /// embedding of objects (usually ones that are facades on top - /// of non-streaming sources, such as object trees). One exception - /// is access to binary content (whether via base64 encoding or not) - /// which typically is accessible using this method, as well as - /// \#getBinaryValue(). - ///@return Embedded value (usually of "native" type supported by format) - /// for the current token, if any; {@code null otherwise} - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - jni.JObject getEmbeddedObject() { - return _getEmbeddedObject(reference.pointer) - .object(const jni.JObjectType()); - } - - static final _getBinaryValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__getBinaryValue") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public abstract byte[] getBinaryValue(com.fasterxml.jackson.core.Base64Variant bv) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that can be used to read (and consume -- results - /// may not be accessible using other methods after the call) - /// base64-encoded binary data - /// included in the current textual JSON value. - /// It works similar to getting String value via \#getText - /// and decoding result (except for decoding part), - /// but should be significantly more performant. - /// - /// Note that non-decoded textual contents of the current token - /// are not guaranteed to be accessible after this method - /// is called. Current implementation, for example, clears up - /// textual content during decoding. - /// Decoded binary content, however, will be retained until - /// parser is advanced to the next event. - ///@param bv Expected variant of base64 encoded - /// content (see Base64Variants for definitions - /// of "standard" variants). - ///@return Decoded binary data - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - jni.JArray getBinaryValue( - jni.JObject bv, - ) { - return _getBinaryValue(reference.pointer, bv.reference.pointer) - .object(const jni.JArrayType(jni.jbyteType())); - } - - static final _getBinaryValue1 = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getBinaryValue1") - .asFunction)>(); - - /// from: public byte[] getBinaryValue() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Convenience alternative to \#getBinaryValue(Base64Variant) - /// that defaults to using - /// Base64Variants\#getDefaultVariant as the default encoding. - ///@return Decoded binary data - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - jni.JArray getBinaryValue1() { - return _getBinaryValue1(reference.pointer) - .object(const jni.JArrayType(jni.jbyteType())); - } - - static final _readBinaryValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__readBinaryValue") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public int readBinaryValue(java.io.OutputStream out) - /// - /// Method that can be used as an alternative to \#getBigIntegerValue(), - /// especially when value can be large. The main difference (beyond method - /// of returning content using OutputStream instead of as byte array) - /// is that content will NOT remain accessible after method returns: any content - /// processed will be consumed and is not buffered in any way. If caller needs - /// buffering, it has to implement it. - ///@param out Output stream to use for passing decoded binary data - ///@return Number of bytes that were decoded and written via OutputStream - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - ///@since 2.1 - int readBinaryValue( - jni.JObject out, - ) { - return _readBinaryValue(reference.pointer, out.reference.pointer).integer; - } - - static final _readBinaryValue1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("JsonParser__readBinaryValue1") - .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - /// from: public int readBinaryValue(com.fasterxml.jackson.core.Base64Variant bv, java.io.OutputStream out) - /// - /// Similar to \#readBinaryValue(OutputStream) but allows explicitly - /// specifying base64 variant to use. - ///@param bv base64 variant to use - ///@param out Output stream to use for passing decoded binary data - ///@return Number of bytes that were decoded and written via OutputStream - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - ///@since 2.1 - int readBinaryValue1( - jni.JObject bv, - jni.JObject out, - ) { - return _readBinaryValue1( - reference.pointer, bv.reference.pointer, out.reference.pointer) - .integer; - } - - static final _getValueAsInt = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getValueAsInt") - .asFunction)>(); - - /// from: public int getValueAsInt() - /// - /// Method that will try to convert value of current token to a - /// Java {@code int} value. - /// Numbers are coerced using default Java rules; booleans convert to 0 (false) - /// and 1 (true), and Strings are parsed using default Java language integer - /// parsing rules. - /// - /// If representation can not be converted to an int (including structured type - /// markers like start/end Object/Array) - /// default value of __0__ will be returned; no exceptions are thrown. - ///@return {@code int} value current token is converted to, if possible; exception thrown - /// otherwise - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - int getValueAsInt() { - return _getValueAsInt(reference.pointer).integer; - } - - static final _getValueAsInt1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Int32)>>("JsonParser__getValueAsInt1") - .asFunction, int)>(); - - /// from: public int getValueAsInt(int def) - /// - /// Method that will try to convert value of current token to a - /// __int__. - /// Numbers are coerced using default Java rules; booleans convert to 0 (false) - /// and 1 (true), and Strings are parsed using default Java language integer - /// parsing rules. - /// - /// If representation can not be converted to an int (including structured type - /// markers like start/end Object/Array) - /// specified __def__ will be returned; no exceptions are thrown. - ///@param def Default value to return if conversion to {@code int} is not possible - ///@return {@code int} value current token is converted to, if possible; {@code def} otherwise - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - int getValueAsInt1( - int def, - ) { - return _getValueAsInt1(reference.pointer, def).integer; - } - - static final _getValueAsLong = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getValueAsLong") - .asFunction)>(); - - /// from: public long getValueAsLong() - /// - /// Method that will try to convert value of current token to a - /// __long__. - /// Numbers are coerced using default Java rules; booleans convert to 0 (false) - /// and 1 (true), and Strings are parsed using default Java language integer - /// parsing rules. - /// - /// If representation can not be converted to a long (including structured type - /// markers like start/end Object/Array) - /// default value of __0L__ will be returned; no exceptions are thrown. - ///@return {@code long} value current token is converted to, if possible; exception thrown - /// otherwise - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - int getValueAsLong() { - return _getValueAsLong(reference.pointer).long; - } - - static final _getValueAsLong1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Int64)>>("JsonParser__getValueAsLong1") - .asFunction, int)>(); - - /// from: public long getValueAsLong(long def) - /// - /// Method that will try to convert value of current token to a - /// __long__. - /// Numbers are coerced using default Java rules; booleans convert to 0 (false) - /// and 1 (true), and Strings are parsed using default Java language integer - /// parsing rules. - /// - /// If representation can not be converted to a long (including structured type - /// markers like start/end Object/Array) - /// specified __def__ will be returned; no exceptions are thrown. - ///@param def Default value to return if conversion to {@code long} is not possible - ///@return {@code long} value current token is converted to, if possible; {@code def} otherwise - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - int getValueAsLong1( - int def, - ) { - return _getValueAsLong1(reference.pointer, def).long; - } - - static final _getValueAsDouble = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getValueAsDouble") - .asFunction)>(); - - /// from: public double getValueAsDouble() - /// - /// Method that will try to convert value of current token to a Java - /// __double__. - /// Numbers are coerced using default Java rules; booleans convert to 0.0 (false) - /// and 1.0 (true), and Strings are parsed using default Java language floating - /// point parsing rules. - /// - /// If representation can not be converted to a double (including structured types - /// like Objects and Arrays), - /// default value of __0.0__ will be returned; no exceptions are thrown. - ///@return {@code double} value current token is converted to, if possible; exception thrown - /// otherwise - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - double getValueAsDouble() { - return _getValueAsDouble(reference.pointer).doubleFloat; - } - - static final _getValueAsDouble1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Double)>>("JsonParser__getValueAsDouble1") - .asFunction, double)>(); - - /// from: public double getValueAsDouble(double def) - /// - /// Method that will try to convert value of current token to a - /// Java __double__. - /// Numbers are coerced using default Java rules; booleans convert to 0.0 (false) - /// and 1.0 (true), and Strings are parsed using default Java language floating - /// point parsing rules. - /// - /// If representation can not be converted to a double (including structured types - /// like Objects and Arrays), - /// specified __def__ will be returned; no exceptions are thrown. - ///@param def Default value to return if conversion to {@code double} is not possible - ///@return {@code double} value current token is converted to, if possible; {@code def} otherwise - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - double getValueAsDouble1( - double def, - ) { - return _getValueAsDouble1(reference.pointer, def).doubleFloat; - } - - static final _getValueAsBoolean = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getValueAsBoolean") - .asFunction)>(); - - /// from: public boolean getValueAsBoolean() - /// - /// Method that will try to convert value of current token to a - /// __boolean__. - /// JSON booleans map naturally; integer numbers other than 0 map to true, and - /// 0 maps to false - /// and Strings 'true' and 'false' map to corresponding values. - /// - /// If representation can not be converted to a boolean value (including structured types - /// like Objects and Arrays), - /// default value of __false__ will be returned; no exceptions are thrown. - ///@return {@code boolean} value current token is converted to, if possible; exception thrown - /// otherwise - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - bool getValueAsBoolean() { - return _getValueAsBoolean(reference.pointer).boolean; - } - - static final _getValueAsBoolean1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Uint8)>>("JsonParser__getValueAsBoolean1") - .asFunction, int)>(); - - /// from: public boolean getValueAsBoolean(boolean def) - /// - /// Method that will try to convert value of current token to a - /// __boolean__. - /// JSON booleans map naturally; integer numbers other than 0 map to true, and - /// 0 maps to false - /// and Strings 'true' and 'false' map to corresponding values. - /// - /// If representation can not be converted to a boolean value (including structured types - /// like Objects and Arrays), - /// specified __def__ will be returned; no exceptions are thrown. - ///@param def Default value to return if conversion to {@code boolean} is not possible - ///@return {@code boolean} value current token is converted to, if possible; {@code def} otherwise - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - bool getValueAsBoolean1( - bool def, - ) { - return _getValueAsBoolean1(reference.pointer, def ? 1 : 0).boolean; - } - - static final _getValueAsString = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getValueAsString") - .asFunction)>(); - - /// from: public java.lang.String getValueAsString() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that will try to convert value of current token to a - /// java.lang.String. - /// JSON Strings map naturally; scalar values get converted to - /// their textual representation. - /// If representation can not be converted to a String value (including structured types - /// like Objects and Arrays and {@code null} token), default value of - /// __null__ will be returned; no exceptions are thrown. - ///@return String value current token is converted to, if possible; {@code null} otherwise - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - ///@since 2.1 - jni.JString getValueAsString() { - return _getValueAsString(reference.pointer).object(const jni.JStringType()); - } - - static final _getValueAsString1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__getValueAsString1") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public abstract java.lang.String getValueAsString(java.lang.String def) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that will try to convert value of current token to a - /// java.lang.String. - /// JSON Strings map naturally; scalar values get converted to - /// their textual representation. - /// If representation can not be converted to a String value (including structured types - /// like Objects and Arrays and {@code null} token), specified default value - /// will be returned; no exceptions are thrown. - ///@param def Default value to return if conversion to {@code String} is not possible - ///@return String value current token is converted to, if possible; {@code def} otherwise - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - ///@since 2.1 - jni.JString getValueAsString1( - jni.JString def, - ) { - return _getValueAsString1(reference.pointer, def.reference.pointer) - .object(const jni.JStringType()); - } - - static final _canReadObjectId = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__canReadObjectId") - .asFunction)>(); - - /// from: public boolean canReadObjectId() - /// - /// Introspection method that may be called to see if the underlying - /// data format supports some kind of Object Ids natively (many do not; - /// for example, JSON doesn't). - /// - /// Default implementation returns true; overridden by data formats - /// that do support native Object Ids. Caller is expected to either - /// use a non-native notation (explicit property or such), or fail, - /// in case it can not use native object ids. - ///@return {@code True} if the format being read supports native Object Ids; - /// {@code false} if not - ///@since 2.3 - bool canReadObjectId() { - return _canReadObjectId(reference.pointer).boolean; - } - - static final _canReadTypeId = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__canReadTypeId") - .asFunction)>(); - - /// from: public boolean canReadTypeId() - /// - /// Introspection method that may be called to see if the underlying - /// data format supports some kind of Type Ids natively (many do not; - /// for example, JSON doesn't). - /// - /// Default implementation returns true; overridden by data formats - /// that do support native Type Ids. Caller is expected to either - /// use a non-native notation (explicit property or such), or fail, - /// in case it can not use native type ids. - ///@return {@code True} if the format being read supports native Type Ids; - /// {@code false} if not - ///@since 2.3 - bool canReadTypeId() { - return _canReadTypeId(reference.pointer).boolean; - } - - static final _getObjectId = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getObjectId") - .asFunction)>(); - - /// from: public java.lang.Object getObjectId() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that can be called to check whether current token - /// (one that was just read) has an associated Object id, and if - /// so, return it. - /// Note that while typically caller should check with \#canReadObjectId - /// first, it is not illegal to call this method even if that method returns - /// true; but if so, it will return null. This may be used to simplify calling - /// code. - /// - /// Default implementation will simply return null. - ///@return Native Object id associated with the current token, if any; {@code null} if none - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - ///@since 2.3 - jni.JObject getObjectId() { - return _getObjectId(reference.pointer).object(const jni.JObjectType()); - } - - static final _getTypeId = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__getTypeId") - .asFunction)>(); - - /// from: public java.lang.Object getTypeId() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method that can be called to check whether current token - /// (one that was just read) has an associated type id, and if - /// so, return it. - /// Note that while typically caller should check with \#canReadTypeId - /// first, it is not illegal to call this method even if that method returns - /// true; but if so, it will return null. This may be used to simplify calling - /// code. - /// - /// Default implementation will simply return null. - ///@return Native Type Id associated with the current token, if any; {@code null} if none - ///@throws IOException for low-level read issues, or - /// JsonParseException for decoding problems - ///@since 2.3 - jni.JObject getTypeId() { - return _getTypeId(reference.pointer).object(const jni.JObjectType()); - } - - static final _readValueAs = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__readValueAs") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public T readValueAs(java.lang.Class valueType) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method to deserialize JSON content into a non-container - /// type (it can be an array type, however): typically a bean, array - /// or a wrapper type (like java.lang.Boolean). - /// __Note__: method can only be called if the parser has - /// an object codec assigned; this is true for parsers constructed - /// by MappingJsonFactory (from "jackson-databind" jar) - /// but not for JsonFactory (unless its setCodec - /// method has been explicitly called). - /// - /// This method may advance the event stream, for structured types - /// the current token will be the closing end marker (END_ARRAY, - /// END_OBJECT) of the bound structure. For non-structured Json types - /// (and for JsonToken\#VALUE_EMBEDDED_OBJECT) - /// stream is not advanced. - /// - /// Note: this method should NOT be used if the result type is a - /// container (java.util.Collection or java.util.Map. - /// The reason is that due to type erasure, key and value types - /// can not be introspected when using this method. - ///@param Nominal type parameter for value type - ///@param valueType Java type to read content as (passed to ObjectCodec that - /// deserializes content) - ///@return Java value read from content - ///@throws IOException if there is either an underlying I/O problem or decoding - /// issue at format layer - $T readValueAs<$T extends jni.JObject>( - jni.JObject valueType, { - required jni.JObjType<$T> T, - }) { - return _readValueAs(reference.pointer, valueType.reference.pointer) - .object(T); - } - - static final _readValueAs1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__readValueAs1") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public T readValueAs(com.fasterxml.jackson.core.type.TypeReference valueTypeRef) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method to deserialize JSON content into a Java type, reference - /// to which is passed as argument. Type is passed using so-called - /// "super type token" - /// and specifically needs to be used if the root type is a - /// parameterized (generic) container type. - /// __Note__: method can only be called if the parser has - /// an object codec assigned; this is true for parsers constructed - /// by MappingJsonFactory (defined in 'jackson-databind' bundle) - /// but not for JsonFactory (unless its setCodec - /// method has been explicitly called). - /// - /// This method may advance the event stream, for structured types - /// the current token will be the closing end marker (END_ARRAY, - /// END_OBJECT) of the bound structure. For non-structured Json types - /// (and for JsonToken\#VALUE_EMBEDDED_OBJECT) - /// stream is not advanced. - ///@param Nominal type parameter for value type - ///@param valueTypeRef Java type to read content as (passed to ObjectCodec that - /// deserializes content) - ///@return Java value read from content - ///@throws IOException if there is either an underlying I/O problem or decoding - /// issue at format layer - $T readValueAs1<$T extends jni.JObject>( - jni.JObject valueTypeRef, { - required jni.JObjType<$T> T, - }) { - return _readValueAs1(reference.pointer, valueTypeRef.reference.pointer) - .object(T); - } - - static final _readValuesAs = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__readValuesAs") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public java.util.Iterator readValuesAs(java.lang.Class valueType) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for reading sequence of Objects from parser stream, - /// all with same specified value type. - ///@param Nominal type parameter for value type - ///@param valueType Java type to read content as (passed to ObjectCodec that - /// deserializes content) - ///@return Iterator for reading multiple Java values from content - ///@throws IOException if there is either an underlying I/O problem or decoding - /// issue at format layer - jni.JIterator<$T> readValuesAs<$T extends jni.JObject>( - jni.JObject valueType, { - required jni.JObjType<$T> T, - }) { - return _readValuesAs(reference.pointer, valueType.reference.pointer) - .object(jni.JIteratorType(T)); - } - - static final _readValuesAs1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("JsonParser__readValuesAs1") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public java.util.Iterator readValuesAs(com.fasterxml.jackson.core.type.TypeReference valueTypeRef) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method for reading sequence of Objects from parser stream, - /// all with same specified value type. - ///@param Nominal type parameter for value type - ///@param valueTypeRef Java type to read content as (passed to ObjectCodec that - /// deserializes content) - ///@return Iterator for reading multiple Java values from content - ///@throws IOException if there is either an underlying I/O problem or decoding - /// issue at format layer - jni.JIterator<$T> readValuesAs1<$T extends jni.JObject>( - jni.JObject valueTypeRef, { - required jni.JObjType<$T> T, - }) { - return _readValuesAs1(reference.pointer, valueTypeRef.reference.pointer) - .object(jni.JIteratorType(T)); - } - - static final _readValueAsTree = jniLookup< - ffi - .NativeFunction)>>( - "JsonParser__readValueAsTree") - .asFunction)>(); - - /// from: public T readValueAsTree() - /// The returned object must be released after use, by calling the [release] method. - /// - /// Method to deserialize JSON content into equivalent "tree model", - /// represented by root TreeNode of resulting model. - /// For JSON Arrays it will an array node (with child nodes), - /// for objects object node (with child nodes), and for other types - /// matching leaf node type. Empty or whitespace documents are null. - ///@param Nominal type parameter for result node type (to reduce need for casting) - ///@return root of the document, or null if empty or whitespace. - ///@throws IOException if there is either an underlying I/O problem or decoding - /// issue at format layer - $T readValueAsTree<$T extends jni.JObject>({ - required jni.JObjType<$T> T, - }) { - return _readValueAsTree(reference.pointer).object(T); - } -} - -final class $JsonParserType extends jni.JObjType { - const $JsonParserType(); - - @override - String get signature => r"Lcom/fasterxml/jackson/core/JsonParser;"; - - @override - JsonParser fromReference(jni.JReference reference) => - JsonParser.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($JsonParserType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($JsonParserType) && other is $JsonParserType; - } -} diff --git a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/JsonToken.dart b/pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/JsonToken.dart deleted file mode 100644 index ea4122e8c..000000000 --- a/pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/JsonToken.dart +++ /dev/null @@ -1,240 +0,0 @@ -// Generated from jackson-core which is licensed under the Apache License 2.0. -// The following copyright from the original authors applies. -// See https://github.com/FasterXML/jackson-core/blob/2.14/LICENSE -// -// Copyright (c) 2007 - The Jackson Project Authors -// Licensed under the Apache License, Version 2.0 (the "License") -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Autogenerated by jnigen. DO NOT EDIT! - -// ignore_for_file: annotate_overrides -// ignore_for_file: camel_case_extensions -// ignore_for_file: camel_case_types -// ignore_for_file: constant_identifier_names -// ignore_for_file: doc_directive_unknown -// ignore_for_file: file_names -// ignore_for_file: lines_longer_than_80_chars -// ignore_for_file: no_leading_underscores_for_local_identifiers -// ignore_for_file: non_constant_identifier_names -// ignore_for_file: overridden_fields -// ignore_for_file: unnecessary_cast -// ignore_for_file: unused_element -// ignore_for_file: unused_field -// ignore_for_file: unused_import -// ignore_for_file: unused_local_variable -// ignore_for_file: unused_shown_name -// ignore_for_file: use_super_parameters - -import "dart:isolate" show ReceivePort; -import "dart:ffi" as ffi; -import "package:jni/internal_helpers_for_jnigen.dart"; -import "package:jni/jni.dart" as jni; - -import "../../../../_init.dart"; - -/// from: com.fasterxml.jackson.core.JsonToken -/// -/// Enumeration for basic token types used for returning results -/// of parsing JSON content. -class JsonToken extends jni.JObject { - @override - late final jni.JObjType $type = type; - - JsonToken.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $JsonTokenType(); - static final _values = - jniLookup>( - "JsonToken__values") - .asFunction(); - - /// from: static public com.fasterxml.jackson.core.JsonToken[] values() - /// The returned object must be released after use, by calling the [release] method. - static jni.JArray values() { - return _values().object(const jni.JArrayType($JsonTokenType())); - } - - static final _valueOf = jniLookup< - ffi - .NativeFunction)>>( - "JsonToken__valueOf") - .asFunction)>(); - - /// from: static public com.fasterxml.jackson.core.JsonToken valueOf(java.lang.String name) - /// The returned object must be released after use, by calling the [release] method. - static JsonToken valueOf( - jni.JString name, - ) { - return _valueOf(name.reference.pointer).object(const $JsonTokenType()); - } - - static final _id = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer)>>("JsonToken__id") - .asFunction)>(); - - /// from: public final int id() - int id() { - return _id(reference.pointer).integer; - } - - static final _asString = jniLookup< - ffi - .NativeFunction)>>( - "JsonToken__asString") - .asFunction)>(); - - /// from: public final java.lang.String asString() - /// The returned object must be released after use, by calling the [release] method. - jni.JString asString() { - return _asString(reference.pointer).object(const jni.JStringType()); - } - - static final _asCharArray = jniLookup< - ffi - .NativeFunction)>>( - "JsonToken__asCharArray") - .asFunction)>(); - - /// from: public final char[] asCharArray() - /// The returned object must be released after use, by calling the [release] method. - jni.JArray asCharArray() { - return _asCharArray(reference.pointer) - .object(const jni.JArrayType(jni.jcharType())); - } - - static final _asByteArray = jniLookup< - ffi - .NativeFunction)>>( - "JsonToken__asByteArray") - .asFunction)>(); - - /// from: public final byte[] asByteArray() - /// The returned object must be released after use, by calling the [release] method. - jni.JArray asByteArray() { - return _asByteArray(reference.pointer) - .object(const jni.JArrayType(jni.jbyteType())); - } - - static final _isNumeric = jniLookup< - ffi - .NativeFunction)>>( - "JsonToken__isNumeric") - .asFunction)>(); - - /// from: public final boolean isNumeric() - /// - /// @return {@code True} if this token is {@code VALUE_NUMBER_INT} or {@code VALUE_NUMBER_FLOAT}, - /// {@code false} otherwise - bool isNumeric() { - return _isNumeric(reference.pointer).boolean; - } - - static final _isStructStart = jniLookup< - ffi - .NativeFunction)>>( - "JsonToken__isStructStart") - .asFunction)>(); - - /// from: public final boolean isStructStart() - /// - /// Accessor that is functionally equivalent to: - /// - /// this == JsonToken.START_OBJECT || this == JsonToken.START_ARRAY - /// - ///@return {@code True} if this token is {@code START_OBJECT} or {@code START_ARRAY}, - /// {@code false} otherwise - ///@since 2.3 - bool isStructStart() { - return _isStructStart(reference.pointer).boolean; - } - - static final _isStructEnd = jniLookup< - ffi - .NativeFunction)>>( - "JsonToken__isStructEnd") - .asFunction)>(); - - /// from: public final boolean isStructEnd() - /// - /// Accessor that is functionally equivalent to: - /// - /// this == JsonToken.END_OBJECT || this == JsonToken.END_ARRAY - /// - ///@return {@code True} if this token is {@code END_OBJECT} or {@code END_ARRAY}, - /// {@code false} otherwise - ///@since 2.3 - bool isStructEnd() { - return _isStructEnd(reference.pointer).boolean; - } - - static final _isScalarValue = jniLookup< - ffi - .NativeFunction)>>( - "JsonToken__isScalarValue") - .asFunction)>(); - - /// from: public final boolean isScalarValue() - /// - /// Method that can be used to check whether this token represents - /// a valid non-structured value. This means all {@code VALUE_xxx} tokens; - /// excluding {@code START_xxx} and {@code END_xxx} tokens as well - /// {@code FIELD_NAME}. - ///@return {@code True} if this token is a scalar value token (one of - /// {@code VALUE_xxx} tokens), {@code false} otherwise - bool isScalarValue() { - return _isScalarValue(reference.pointer).boolean; - } - - static final _isBoolean = jniLookup< - ffi - .NativeFunction)>>( - "JsonToken__isBoolean") - .asFunction)>(); - - /// from: public final boolean isBoolean() - /// - /// @return {@code True} if this token is {@code VALUE_TRUE} or {@code VALUE_FALSE}, - /// {@code false} otherwise - bool isBoolean() { - return _isBoolean(reference.pointer).boolean; - } -} - -final class $JsonTokenType extends jni.JObjType { - const $JsonTokenType(); - - @override - String get signature => r"Lcom/fasterxml/jackson/core/JsonToken;"; - - @override - JsonToken fromReference(jni.JReference reference) => - JsonToken.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($JsonTokenType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($JsonTokenType) && other is $JsonTokenType; - } -} diff --git a/pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/_package.dart b/pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/_package.dart deleted file mode 100644 index cae2a52e6..000000000 --- a/pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/_package.dart +++ /dev/null @@ -1,3 +0,0 @@ -export "JsonFactory.dart"; -export "JsonParser.dart"; -export "JsonToken.dart"; diff --git a/pkgs/jnigen/test/kotlin_test/dart_only/dart_bindings/kotlin.dart b/pkgs/jnigen/test/kotlin_test/bindings/kotlin.dart similarity index 68% rename from pkgs/jnigen/test/kotlin_test/dart_only/dart_bindings/kotlin.dart rename to pkgs/jnigen/test/kotlin_test/bindings/kotlin.dart index 8e3652ae8..2f1099a47 100644 --- a/pkgs/jnigen/test/kotlin_test/dart_only/dart_bindings/kotlin.dart +++ b/pkgs/jnigen/test/kotlin_test/bindings/kotlin.dart @@ -45,10 +45,24 @@ class SuspendFun extends jni.JObject { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory SuspendFun() { - return SuspendFun.fromReference(_id_new0(_class, referenceType, [])); + return SuspendFun.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } static final _id_sayHello = _class.instanceMethodId( @@ -56,13 +70,26 @@ class SuspendFun extends jni.JObject { r"(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", ); + static final _sayHello = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public final java.lang.Object sayHello(kotlin.coroutines.Continuation continuation) /// The returned object must be released after use, by calling the [release] method. Future sayHello() async { final $p = ReceivePort(); final $c = jni.JObject.fromReference( ProtectedJniExtensions.newPortContinuation($p)); - _id_sayHello(this, const jni.JObjectType(), [$c.reference.pointer]); + _sayHello(reference.pointer, _id_sayHello as jni.JMethodIDPtr, + $c.reference.pointer) + .object(const jni.JObjectType()); final $o = jni.JGlobalReference(jni.JObjectPtr.fromAddress(await $p.first)); final $k = const jni.JStringType().jClass.reference.pointer; if (!jni.Jni.env.IsInstanceOf($o.pointer, $k)) { @@ -76,6 +103,20 @@ class SuspendFun extends jni.JObject { r"(Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", ); + static final _sayHello1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); + /// from: public final java.lang.Object sayHello(java.lang.String string, kotlin.coroutines.Continuation continuation) /// The returned object must be released after use, by calling the [release] method. Future sayHello1( @@ -84,8 +125,9 @@ class SuspendFun extends jni.JObject { final $p = ReceivePort(); final $c = jni.JObject.fromReference( ProtectedJniExtensions.newPortContinuation($p)); - _id_sayHello1(this, const jni.JObjectType(), - [string.reference.pointer, $c.reference.pointer]); + _sayHello1(reference.pointer, _id_sayHello1 as jni.JMethodIDPtr, + string.reference.pointer, $c.reference.pointer) + .object(const jni.JObjectType()); final $o = jni.JGlobalReference(jni.JObjectPtr.fromAddress(await $p.first)); final $k = const jni.JStringType().jClass.reference.pointer; if (!jni.Jni.env.IsInstanceOf($o.pointer, $k)) { diff --git a/pkgs/jnigen/test/kotlin_test/c_based/c_bindings/.clang-format b/pkgs/jnigen/test/kotlin_test/c_based/c_bindings/.clang-format deleted file mode 100644 index a256c2f09..000000000 --- a/pkgs/jnigen/test/kotlin_test/c_based/c_bindings/.clang-format +++ /dev/null @@ -1,15 +0,0 @@ -# From dart SDK: https://github.com/dart-lang/sdk/blob/main/.clang-format - -# Defines the Chromium style for automatic reformatting. -# http://clang.llvm.org/docs/ClangFormatStyleOptions.html -BasedOnStyle: Chromium - -# clang-format doesn't seem to do a good job of this for longer comments. -ReflowComments: 'false' - -# We have lots of these. Though we need to put them all in curly braces, -# clang-format can't do that. -AllowShortIfStatementsOnASingleLine: 'true' - -# Put escaped newlines into the rightmost column. -AlignEscapedNewlinesLeft: false diff --git a/pkgs/jnigen/test/kotlin_test/c_based/c_bindings/CMakeLists.txt b/pkgs/jnigen/test/kotlin_test/c_based/c_bindings/CMakeLists.txt deleted file mode 100644 index 3889f546a..000000000 --- a/pkgs/jnigen/test/kotlin_test/c_based/c_bindings/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# jni_native_build (Build with jni:setup. Do not delete this line.) - -# The Flutter tooling requires that developers have CMake 3.10 or later -# installed. You should not increase this version, as doing so will cause -# the plugin to fail to compile for some customers of the plugin. -cmake_minimum_required(VERSION 3.10) - -project(kotlin VERSION 0.0.1 LANGUAGES C) - -add_library(kotlin SHARED - "./kotlin.c" -) - -set_target_properties(kotlin PROPERTIES - OUTPUT_NAME "kotlin" -) - -target_compile_definitions(kotlin PUBLIC DART_SHARED_LIB) - -if(WIN32) - set_target_properties(${TARGET_NAME} PROPERTIES - LINK_FLAGS "/DELAYLOAD:jvm.dll") -endif() - -if (ANDROID) - target_link_libraries(kotlin log) -else() - find_package(Java REQUIRED) - find_package(JNI REQUIRED) - include_directories(${JNI_INCLUDE_DIRS}) - target_link_libraries(kotlin ${JNI_LIBRARIES}) -endif() diff --git a/pkgs/jnigen/test/kotlin_test/c_based/c_bindings/dartjni.h b/pkgs/jnigen/test/kotlin_test/c_based/c_bindings/dartjni.h deleted file mode 100644 index f834d1577..000000000 --- a/pkgs/jnigen/test/kotlin_test/c_based/c_bindings/dartjni.h +++ /dev/null @@ -1,383 +0,0 @@ -// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -#pragma once - -// Note: include appropriate system jni.h as found by CMake, not third_party/jni.h. -#include -#include -#include -#include - -#if _WIN32 -#include -#else -#include -#include -#endif - -#if _WIN32 -#define FFI_PLUGIN_EXPORT __declspec(dllexport) -#else -#define FFI_PLUGIN_EXPORT -#endif - -#if defined _WIN32 -#define thread_local __declspec(thread) -#else -#define thread_local __thread -#endif - -#ifdef __ANDROID__ -#include -#endif - -#ifdef __ANDROID__ -#define __ENVP_CAST (JNIEnv**) -#else -#define __ENVP_CAST (void**) -#endif - -/// Locking functions for windows and pthread. - -#if defined _WIN32 -#include - -typedef CRITICAL_SECTION MutexLock; -typedef CONDITION_VARIABLE ConditionVariable; - -static inline void init_lock(MutexLock* lock) { - InitializeCriticalSection(lock); -} - -static inline void acquire_lock(MutexLock* lock) { - EnterCriticalSection(lock); -} - -static inline void release_lock(MutexLock* lock) { - LeaveCriticalSection(lock); -} - -static inline void destroy_lock(MutexLock* lock) { - DeleteCriticalSection(lock); -} - -static inline void init_cond(ConditionVariable* cond) { - InitializeConditionVariable(cond); -} - -static inline void signal_cond(ConditionVariable* cond) { - WakeConditionVariable(cond); -} - -static inline void wait_for(ConditionVariable* cond, MutexLock* lock) { - SleepConditionVariableCS(cond, lock, INFINITE); -} - -static inline void destroy_cond(ConditionVariable* cond) { - // Not available. -} - -static inline void free_mem(void* mem) { - CoTaskMemFree(mem); -} - -#elif defined __APPLE__ || defined __LINUX__ || defined __ANDROID__ || \ - defined __GNUC__ -#include - -typedef pthread_mutex_t MutexLock; -typedef pthread_cond_t ConditionVariable; - -static inline void init_lock(MutexLock* lock) { - pthread_mutex_init(lock, NULL); -} - -static inline void acquire_lock(MutexLock* lock) { - pthread_mutex_lock(lock); -} - -static inline void release_lock(MutexLock* lock) { - pthread_mutex_unlock(lock); -} - -static inline void destroy_lock(MutexLock* lock) { - pthread_mutex_destroy(lock); -} - -static inline void init_cond(ConditionVariable* cond) { - pthread_cond_init(cond, NULL); -} - -static inline void signal_cond(ConditionVariable* cond) { - pthread_cond_signal(cond); -} - -static inline void wait_for(ConditionVariable* cond, MutexLock* lock) { - pthread_cond_wait(cond, lock); -} - -static inline void destroy_cond(ConditionVariable* cond) { - pthread_cond_destroy(cond); -} - -static inline void free_mem(void* mem) { - free(mem); -} - -#else - -#error "No locking/condition variable support; Possibly unsupported platform" - -#endif - -typedef struct CallbackResult { - MutexLock lock; - ConditionVariable cond; - int ready; - jobject object; -} CallbackResult; - -typedef struct JniLocks { - MutexLock classLoadingLock; -} JniLocks; - -/// Represents the error when dart-jni layer has already spawned singleton VM. -#define DART_JNI_SINGLETON_EXISTS (-99); - -/// Stores the global state of the JNI. -typedef struct JniContext { - JavaVM* jvm; - jobject classLoader; - jmethodID loadClassMethod; - jobject currentActivity; - jobject appContext; - JniLocks locks; -} JniContext; - -// jniEnv for this thread, used by inline functions in this header, -// therefore declared as extern. -extern thread_local JNIEnv* jniEnv; - -extern JniContext* jni; - -/// Types used by JNI API to distinguish between primitive types. -enum JniType { - booleanType = 0, - byteType = 1, - shortType = 2, - charType = 3, - intType = 4, - longType = 5, - floatType = 6, - doubleType = 7, - objectType = 8, - voidType = 9, -}; - -/// Result type for use by JNI. -/// -/// If [exception] is null, it means the result is valid. -/// It's assumed that the caller knows the expected type in [result]. -typedef struct JniResult { - jvalue value; - jthrowable exception; -} JniResult; - -/// Similar to [JniResult] but for class lookups. -typedef struct JniClassLookupResult { - jclass value; - jthrowable exception; -} JniClassLookupResult; - -/// Similar to [JniResult] but for method/field ID lookups. -typedef struct JniPointerResult { - const void* value; - jthrowable exception; -} JniPointerResult; - -/// JniExceptionDetails holds 2 jstring objects, one is the result of -/// calling `toString` on exception object, other is stack trace; -typedef struct JniExceptionDetails { - jstring message; - jstring stacktrace; -} JniExceptionDetails; - -/// This struct contains functions which wrap method call / field access conveniently along with -/// exception checking. -/// -/// Flutter embedding checks for pending JNI exceptions before an FFI transition, which requires us -/// to check for and clear the exception before returning to dart code, which requires these functions -/// to return result types. -typedef struct JniAccessorsStruct { - JniClassLookupResult (*getClass)(char* internalName); - JniPointerResult (*getFieldID)(jclass cls, char* fieldName, char* signature); - JniPointerResult (*getStaticFieldID)(jclass cls, - char* fieldName, - char* signature); - JniPointerResult (*getMethodID)(jclass cls, - char* methodName, - char* signature); - JniPointerResult (*getStaticMethodID)(jclass cls, - char* methodName, - char* signature); - JniResult (*newObject)(jclass cls, jmethodID ctor, jvalue* args); - JniResult (*newPrimitiveArray)(jsize length, int type); - JniResult (*newObjectArray)(jsize length, - jclass elementClass, - jobject initialElement); - JniResult (*getArrayElement)(jarray array, int index, int type); - JniResult (*callMethod)(jobject obj, - jmethodID methodID, - int callType, - jvalue* args); - JniResult (*callStaticMethod)(jclass cls, - jmethodID methodID, - int callType, - jvalue* args); - JniResult (*getField)(jobject obj, jfieldID fieldID, int callType); - JniResult (*getStaticField)(jclass cls, jfieldID fieldID, int callType); - JniExceptionDetails (*getExceptionDetails)(jthrowable exception); -} JniAccessorsStruct; - -FFI_PLUGIN_EXPORT JniAccessorsStruct* GetAccessors(); - -FFI_PLUGIN_EXPORT JavaVM* GetJavaVM(void); - -FFI_PLUGIN_EXPORT JNIEnv* GetJniEnv(void); - -/// Spawn a JVM with given arguments. -/// -/// Returns JNI_OK on success, and one of the documented JNI error codes on -/// failure. It returns DART_JNI_SINGLETON_EXISTS if an attempt to spawn multiple -/// JVMs is made, even if the underlying API potentially supports multiple VMs. -FFI_PLUGIN_EXPORT int SpawnJvm(JavaVMInitArgs* args); - -/// Returns Application classLoader (on Android), -/// which can be used to load application and platform classes. -/// -/// On other platforms, NULL is returned. -FFI_PLUGIN_EXPORT jobject GetClassLoader(void); - -/// Returns application context on Android. -/// -/// On other platforms, NULL is returned. -FFI_PLUGIN_EXPORT jobject GetApplicationContext(void); - -/// Returns current activity of the app on Android. -FFI_PLUGIN_EXPORT jobject GetCurrentActivity(void); - -static inline void attach_thread() { - if (jniEnv == NULL) { - (*jni->jvm)->AttachCurrentThread(jni->jvm, __ENVP_CAST & jniEnv, NULL); - } -} - -/// Load class into [cls] using platform specific mechanism -static inline void load_class_platform(jclass* cls, const char* name) { -#ifdef __ANDROID__ - jstring className = (*jniEnv)->NewStringUTF(jniEnv, name); - *cls = (*jniEnv)->CallObjectMethod(jniEnv, jni->classLoader, - jni->loadClassMethod, className); - (*jniEnv)->DeleteLocalRef(jniEnv, className); -#else - *cls = (*jniEnv)->FindClass(jniEnv, name); -#endif -} - -static inline void load_class_global_ref(jclass* cls, const char* name) { - if (*cls == NULL) { - jclass tmp = NULL; - acquire_lock(&jni->locks.classLoadingLock); - if (*cls == NULL) { - load_class_platform(&tmp, name); - if (!(*jniEnv)->ExceptionCheck(jniEnv)) { - *cls = (*jniEnv)->NewGlobalRef(jniEnv, tmp); - (*jniEnv)->DeleteLocalRef(jniEnv, tmp); - } - } - release_lock(&jni->locks.classLoadingLock); - } -} - -static inline void load_method(jclass cls, - jmethodID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetMethodID(jniEnv, cls, name, sig); - } -} - -static inline void load_static_method(jclass cls, - jmethodID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetStaticMethodID(jniEnv, cls, name, sig); - } -} - -static inline void load_field(jclass cls, - jfieldID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetFieldID(jniEnv, cls, name, sig); - } -} - -static inline void load_static_field(jclass cls, - jfieldID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetStaticFieldID(jniEnv, cls, name, sig); - } -} - -static inline jobject to_global_ref(jobject ref) { - jobject g = (*jniEnv)->NewGlobalRef(jniEnv, ref); - (*jniEnv)->DeleteLocalRef(jniEnv, ref); - return g; -} - -// These functions are useful for C+Dart bindings, and not required for pure dart bindings. - -FFI_PLUGIN_EXPORT JniContext* GetJniContextPtr(); - -/// For use by jni_gen's generated code -/// don't use these. - -// these 2 fn ptr vars will be defined by generated code library -extern JniContext* (*context_getter)(void); -extern JNIEnv* (*env_getter)(void); - -// this function will be exported by generated code library -// it will set above 2 variables. -FFI_PLUGIN_EXPORT void setJniGetters(struct JniContext* (*cg)(void), - JNIEnv* (*eg)(void)); - -static inline void load_env() { - if (jniEnv == NULL) { - jni = context_getter(); - jniEnv = env_getter(); - } -} - -static inline jthrowable check_exception() { - jthrowable exception = (*jniEnv)->ExceptionOccurred(jniEnv); - if (exception != NULL) (*jniEnv)->ExceptionClear(jniEnv); - if (exception == NULL) return NULL; - return to_global_ref(exception); -} - -static inline JniResult to_global_ref_result(jobject ref) { - JniResult result; - result.exception = check_exception(); - if (result.exception == NULL) { - result.value.l = to_global_ref(ref); - } - return result; -} diff --git a/pkgs/jnigen/test/kotlin_test/c_based/c_bindings/kotlin.c b/pkgs/jnigen/test/kotlin_test/c_based/c_bindings/kotlin.c deleted file mode 100644 index e3c227e6a..000000000 --- a/pkgs/jnigen/test/kotlin_test/c_based/c_bindings/kotlin.c +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -// Autogenerated by jnigen. DO NOT EDIT! - -#include -#include "dartjni.h" -#include "jni.h" - -thread_local JNIEnv* jniEnv; -JniContext* jni; - -JniContext* (*context_getter)(void); -JNIEnv* (*env_getter)(void); - -void setJniGetters(JniContext* (*cg)(void), JNIEnv* (*eg)(void)) { - context_getter = cg; - env_getter = eg; -} - -// com.github.dart_lang.jnigen.SuspendFun -jclass _c_SuspendFun = NULL; - -jmethodID _m_SuspendFun__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult SuspendFun__new0() { - load_env(); - load_class_global_ref(&_c_SuspendFun, - "com/github/dart_lang/jnigen/SuspendFun"); - if (_c_SuspendFun == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_SuspendFun, &_m_SuspendFun__new0, "", "()V"); - if (_m_SuspendFun__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_SuspendFun, _m_SuspendFun__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_SuspendFun__sayHello = NULL; -FFI_PLUGIN_EXPORT -JniResult SuspendFun__sayHello(jobject self_, jobject continuation) { - load_env(); - load_class_global_ref(&_c_SuspendFun, - "com/github/dart_lang/jnigen/SuspendFun"); - if (_c_SuspendFun == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_SuspendFun, &_m_SuspendFun__sayHello, "sayHello", - "(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;"); - if (_m_SuspendFun__sayHello == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_SuspendFun__sayHello, continuation); - return to_global_ref_result(_result); -} - -jmethodID _m_SuspendFun__sayHello1 = NULL; -FFI_PLUGIN_EXPORT -JniResult SuspendFun__sayHello1(jobject self_, - jobject string, - jobject continuation) { - load_env(); - load_class_global_ref(&_c_SuspendFun, - "com/github/dart_lang/jnigen/SuspendFun"); - if (_c_SuspendFun == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_SuspendFun, &_m_SuspendFun__sayHello1, "sayHello", - "(Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;"); - if (_m_SuspendFun__sayHello1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_SuspendFun__sayHello1, string, continuation); - return to_global_ref_result(_result); -} diff --git a/pkgs/jnigen/test/kotlin_test/c_based/dart_bindings/kotlin.dart b/pkgs/jnigen/test/kotlin_test/c_based/dart_bindings/kotlin.dart deleted file mode 100644 index e221edbdb..000000000 --- a/pkgs/jnigen/test/kotlin_test/c_based/dart_bindings/kotlin.dart +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -// Autogenerated by jnigen. DO NOT EDIT! - -// ignore_for_file: annotate_overrides -// ignore_for_file: camel_case_extensions -// ignore_for_file: camel_case_types -// ignore_for_file: constant_identifier_names -// ignore_for_file: doc_directive_unknown -// ignore_for_file: file_names -// ignore_for_file: lines_longer_than_80_chars -// ignore_for_file: no_leading_underscores_for_local_identifiers -// ignore_for_file: non_constant_identifier_names -// ignore_for_file: overridden_fields -// ignore_for_file: unnecessary_cast -// ignore_for_file: unused_element -// ignore_for_file: unused_field -// ignore_for_file: unused_import -// ignore_for_file: unused_local_variable -// ignore_for_file: unused_shown_name -// ignore_for_file: use_super_parameters - -import "dart:isolate" show ReceivePort; -import "dart:ffi" as ffi; -import "package:jni/internal_helpers_for_jnigen.dart"; -import "package:jni/jni.dart" as jni; - -// Auto-generated initialization code. - -final ffi.Pointer Function(String sym) jniLookup = - ProtectedJniExtensions.initGeneratedLibrary("kotlin"); - -/// from: com.github.dart_lang.jnigen.SuspendFun -class SuspendFun extends jni.JObject { - @override - late final jni.JObjType $type = type; - - SuspendFun.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $SuspendFunType(); - static final _new0 = jniLookup>( - "SuspendFun__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory SuspendFun() { - return SuspendFun.fromReference(_new0().reference); - } - - static final _sayHello = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("SuspendFun__sayHello") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public final java.lang.Object sayHello(kotlin.coroutines.Continuation continuation) - /// The returned object must be released after use, by calling the [release] method. - Future sayHello() async { - final $p = ReceivePort(); - final $c = jni.JObject.fromReference( - ProtectedJniExtensions.newPortContinuation($p)); - _sayHello(reference.pointer, $c.reference.pointer) - .object(const jni.JObjectType()); - final $o = jni.JGlobalReference(jni.JObjectPtr.fromAddress(await $p.first)); - final $k = const jni.JStringType().jClass.reference.pointer; - if (!jni.Jni.env.IsInstanceOf($o.pointer, $k)) { - throw "Failed"; - } - return const jni.JStringType().fromReference($o); - } - - static final _sayHello1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("SuspendFun__sayHello1") - .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - /// from: public final java.lang.Object sayHello(java.lang.String string, kotlin.coroutines.Continuation continuation) - /// The returned object must be released after use, by calling the [release] method. - Future sayHello1( - jni.JString string, - ) async { - final $p = ReceivePort(); - final $c = jni.JObject.fromReference( - ProtectedJniExtensions.newPortContinuation($p)); - _sayHello1( - reference.pointer, string.reference.pointer, $c.reference.pointer) - .object(const jni.JObjectType()); - final $o = jni.JGlobalReference(jni.JObjectPtr.fromAddress(await $p.first)); - final $k = const jni.JStringType().jClass.reference.pointer; - if (!jni.Jni.env.IsInstanceOf($o.pointer, $k)) { - throw "Failed"; - } - return const jni.JStringType().fromReference($o); - } -} - -final class $SuspendFunType extends jni.JObjType { - const $SuspendFunType(); - - @override - String get signature => r"Lcom/github/dart_lang/jnigen/SuspendFun;"; - - @override - SuspendFun fromReference(jni.JReference reference) => - SuspendFun.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($SuspendFunType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($SuspendFunType) && other is $SuspendFunType; - } -} diff --git a/pkgs/jnigen/test/kotlin_test/generate.dart b/pkgs/jnigen/test/kotlin_test/generate.dart index 61686679a..f8fc1e1b3 100644 --- a/pkgs/jnigen/test/kotlin_test/generate.dart +++ b/pkgs/jnigen/test/kotlin_test/generate.dart @@ -35,12 +35,10 @@ void compileKotlinSources(String workingDir) async { } } -Config getConfig([BindingsType bindingsType = BindingsType.cBased]) { +Config getConfig() { compileKotlinSources(kotlinPath); - final typeDir = bindingsType.getConfigString(); - final cWrapperDir = Uri.directory(join(testRoot, typeDir, "c_bindings")); final dartWrappersRoot = Uri.directory( - join(testRoot, typeDir, "dart_bindings"), + join(testRoot, 'bindings'), ); final config = Config( classPath: [Uri.file(jarPath)], @@ -53,11 +51,6 @@ Config getConfig([BindingsType bindingsType = BindingsType.cBased]) { ], logLevel: Level.ALL, outputConfig: OutputConfig( - bindingsType: bindingsType, - cConfig: CCodeOutputConfig( - path: cWrapperDir, - libraryName: 'kotlin', - ), dartConfig: DartCodeOutputConfig( path: dartWrappersRoot.resolve('kotlin.dart'), structure: OutputStructure.singleFile, @@ -70,6 +63,5 @@ Config getConfig([BindingsType bindingsType = BindingsType.cBased]) { } void main() async { - await generateJniBindings(getConfig(BindingsType.cBased)); - await generateJniBindings(getConfig(BindingsType.dartOnly)); + await generateJniBindings(getConfig()); } diff --git a/pkgs/jnigen/test/kotlin_test/generated_files_test.dart b/pkgs/jnigen/test/kotlin_test/generated_files_test.dart index b96c643ca..5c081f323 100644 --- a/pkgs/jnigen/test/kotlin_test/generated_files_test.dart +++ b/pkgs/jnigen/test/kotlin_test/generated_files_test.dart @@ -2,9 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:jnigen/jnigen.dart'; -import 'package:test/test.dart'; - import 'generate.dart'; import '../test_util/test_util.dart'; @@ -12,19 +9,8 @@ void main() async { // This is not run in setupAll, because we want to exit with one line of // error message, not throw a long exception. await checkLocallyBuiltDependencies(); - generateAndCompareBothModes( + generateAndCompare( 'Generate and compare bindings for kotlin_test', - getConfig(BindingsType.cBased), - getConfig(BindingsType.dartOnly), - ); - test( - "Generate and analyze bindings for kotlin_test - pure dart", - () async { - await generateAndAnalyzeBindings( - getConfig(BindingsType.dartOnly), - ); - }, - timeout: const Timeout.factor(1.5), - tags: largeTestTag, + getConfig(), ); } diff --git a/pkgs/jnigen/test/kotlin_test/runtime_test_registrant.dart b/pkgs/jnigen/test/kotlin_test/runtime_test_registrant.dart index 6a9696b6e..a8f3807a4 100644 --- a/pkgs/jnigen/test/kotlin_test/runtime_test_registrant.dart +++ b/pkgs/jnigen/test/kotlin_test/runtime_test_registrant.dart @@ -7,7 +7,7 @@ import 'package:jni/jni.dart'; import '../test_util/callback_types.dart'; -import 'c_based/dart_bindings/kotlin.dart'; +import 'bindings/kotlin.dart'; void registerTests(String groupName, TestRunnerCallback test) { group(groupName, () { diff --git a/pkgs/jnigen/test/runtime_test.dart b/pkgs/jnigen/test/runtime_test.dart new file mode 100644 index 000000000..a43180963 --- /dev/null +++ b/pkgs/jnigen/test/runtime_test.dart @@ -0,0 +1,21 @@ +// Generated file. Do not edit or check-in to version control. + +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:test/test.dart'; +import 'test_util/bindings_test_setup.dart' as setup; + +import "jackson_core_test/runtime_test_registrant.dart" as jackson_core_test; +import "simple_package_test/runtime_test_registrant.dart" + as simple_package_test; +import "kotlin_test/runtime_test_registrant.dart" as kotlin_test; + +void main() { + setUpAll(setup.bindingsTestSetup); + jackson_core_test.registerTests("jackson_core_test_dart_only", test); + simple_package_test.registerTests("simple_package_test_dart_only", test); + kotlin_test.registerTests("kotlin_test_c_based", test); + tearDownAll(setup.bindingsTestTeardown); +} diff --git a/pkgs/jnigen/test/simple_package_test/dart_only/dart_bindings/simple_package.dart b/pkgs/jnigen/test/simple_package_test/bindings/simple_package.dart similarity index 59% rename from pkgs/jnigen/test/simple_package_test/dart_only/dart_bindings/simple_package.dart rename to pkgs/jnigen/test/simple_package_test/bindings/simple_package.dart index 7287d305e..21a4f3f31 100644 --- a/pkgs/jnigen/test/simple_package_test/dart_only/dart_bindings/simple_package.dart +++ b/pkgs/jnigen/test/simple_package_test/bindings/simple_package.dart @@ -57,11 +57,24 @@ class Example_Nested_NestedTwice extends jni.JObject { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory Example_Nested_NestedTwice() { return Example_Nested_NestedTwice.fromReference( - _id_new0(_class, referenceType, [])); + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } } @@ -111,13 +124,22 @@ class Example_Nested extends jni.JObject { r"(Z)V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: public void (boolean value) /// The returned object must be released after use, by calling the [release] method. factory Example_Nested( bool value, ) { - return Example_Nested.fromReference( - _id_new0(_class, referenceType, [value ? 1 : 0])); + return Example_Nested.fromReference(_new0(_class.reference.pointer, + _id_new0 as jni.JMethodIDPtr, value ? 1 : 0) + .reference); } static final _id_usesAnonymousInnerClass = _class.instanceMethodId( @@ -125,9 +147,23 @@ class Example_Nested extends jni.JObject { r"()V", ); + static final _usesAnonymousInnerClass = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void usesAnonymousInnerClass() void usesAnonymousInnerClass() { - _id_usesAnonymousInnerClass(this, const jni.jvoidType(), []); + _usesAnonymousInnerClass( + reference.pointer, _id_usesAnonymousInnerClass as jni.JMethodIDPtr) + .check(); } static final _id_getValue = _class.instanceMethodId( @@ -135,9 +171,22 @@ class Example_Nested extends jni.JObject { r"()Z", ); + static final _getValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean getValue() bool getValue() { - return _id_getValue(this, const jni.jbooleanType(), []); + return _getValue(reference.pointer, _id_getValue as jni.JMethodIDPtr) + .boolean; } static final _id_setValue = _class.instanceMethodId( @@ -145,11 +194,23 @@ class Example_Nested extends jni.JObject { r"(Z)V", ); + static final _setValue = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: public void setValue(boolean value) void setValue( bool value, ) { - _id_setValue(this, const jni.jvoidType(), [value ? 1 : 0]); + _setValue( + reference.pointer, _id_setValue as jni.JMethodIDPtr, value ? 1 : 0) + .check(); } } @@ -209,13 +270,25 @@ class Example_NonStaticNested extends jni.JObject { r"(Lcom/github/dart_lang/jnigen/simple_package/Example;)V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public void (com.github.dart_lang.jnigen.simple_package.Example $parent) /// The returned object must be released after use, by calling the [release] method. factory Example_NonStaticNested( Example $parent, ) { - return Example_NonStaticNested.fromReference( - _id_new0(_class, referenceType, [$parent.reference.pointer])); + return Example_NonStaticNested.fromReference(_new0(_class.reference.pointer, + _id_new0 as jni.JMethodIDPtr, $parent.reference.pointer) + .reference); } } @@ -313,9 +386,23 @@ class Example extends jni.JObject { r"()I", ); + static final _getAmount = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public int getAmount() static int getAmount() { - return _id_getAmount(_class, const jni.jintType(), []); + return _getAmount( + _class.reference.pointer, _id_getAmount as jni.JMethodIDPtr) + .integer; } static final _id_getPi = _class.staticMethodId( @@ -323,9 +410,22 @@ class Example extends jni.JObject { r"()D", ); + static final _getPi = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticDoubleMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public double getPi() static double getPi() { - return _id_getPi(_class, const jni.jdoubleType(), []); + return _getPi(_class.reference.pointer, _id_getPi as jni.JMethodIDPtr) + .doubleFloat; } static final _id_getAsterisk = _class.staticMethodId( @@ -333,9 +433,23 @@ class Example extends jni.JObject { r"()C", ); + static final _getAsterisk = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticCharMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public char getAsterisk() static int getAsterisk() { - return _id_getAsterisk(_class, const jni.jcharType(), []); + return _getAsterisk( + _class.reference.pointer, _id_getAsterisk as jni.JMethodIDPtr) + .char; } static final _id_getName = _class.staticMethodId( @@ -343,10 +457,23 @@ class Example extends jni.JObject { r"()Ljava/lang/String;", ); + static final _getName = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public java.lang.String getName() /// The returned object must be released after use, by calling the [release] method. static jni.JString getName() { - return _id_getName(_class, const jni.JStringType(), []); + return _getName(_class.reference.pointer, _id_getName as jni.JMethodIDPtr) + .object(const jni.JStringType()); } static final _id_getNestedInstance = _class.staticMethodId( @@ -354,10 +481,24 @@ class Example extends jni.JObject { r"()Lcom/github/dart_lang/jnigen/simple_package/Example$Nested;", ); + static final _getNestedInstance = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public com.github.dart_lang.jnigen.simple_package.Example.Nested getNestedInstance() /// The returned object must be released after use, by calling the [release] method. static Example_Nested getNestedInstance() { - return _id_getNestedInstance(_class, const $Example_NestedType(), []); + return _getNestedInstance( + _class.reference.pointer, _id_getNestedInstance as jni.JMethodIDPtr) + .object(const $Example_NestedType()); } static final _id_setAmount = _class.staticMethodId( @@ -365,11 +506,23 @@ class Example extends jni.JObject { r"(I)V", ); + static final _setAmount = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallStaticVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: static public void setAmount(int newAmount) static void setAmount( int newAmount, ) { - _id_setAmount(_class, const jni.jvoidType(), [jni.JValueInt(newAmount)]); + _setAmount(_class.reference.pointer, _id_setAmount as jni.JMethodIDPtr, + newAmount) + .check(); } static final _id_setName = _class.staticMethodId( @@ -377,11 +530,24 @@ class Example extends jni.JObject { r"(Ljava/lang/String;)V", ); + static final _setName = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: static public void setName(java.lang.String newName) static void setName( jni.JString newName, ) { - _id_setName(_class, const jni.jvoidType(), [newName.reference.pointer]); + _setName(_class.reference.pointer, _id_setName as jni.JMethodIDPtr, + newName.reference.pointer) + .check(); } static final _id_setNestedInstance = _class.staticMethodId( @@ -389,12 +555,26 @@ class Example extends jni.JObject { r"(Lcom/github/dart_lang/jnigen/simple_package/Example$Nested;)V", ); + static final _setNestedInstance = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: static public void setNestedInstance(com.github.dart_lang.jnigen.simple_package.Example.Nested newNested) static void setNestedInstance( Example_Nested newNested, ) { - _id_setNestedInstance( - _class, const jni.jvoidType(), [newNested.reference.pointer]); + _setNestedInstance( + _class.reference.pointer, + _id_setNestedInstance as jni.JMethodIDPtr, + newNested.reference.pointer) + .check(); } static final _id_max4 = _class.staticMethodId( @@ -402,6 +582,22 @@ class Example extends jni.JObject { r"(IIII)I", ); + static final _max4 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64 + )>)>>("globalEnv_CallStaticIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int, int, int, int)>(); + /// from: static public int max4(int a, int b, int c, int d) static int max4( int a, @@ -409,12 +605,9 @@ class Example extends jni.JObject { int c, int d, ) { - return _id_max4(_class, const jni.jintType(), [ - jni.JValueInt(a), - jni.JValueInt(b), - jni.JValueInt(c), - jni.JValueInt(d) - ]); + return _max4( + _class.reference.pointer, _id_max4 as jni.JMethodIDPtr, a, b, c, d) + .integer; } static final _id_max8 = _class.staticMethodId( @@ -422,6 +615,26 @@ class Example extends jni.JObject { r"(IIIIIIII)I", ); + static final _max8 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64 + )>)>>("globalEnv_CallStaticIntMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, int, + int, int, int, int, int, int, int)>(); + /// from: static public int max8(int a, int b, int c, int d, int e, int f, int g, int h) static int max8( int a, @@ -433,16 +646,9 @@ class Example extends jni.JObject { int g, int h, ) { - return _id_max8(_class, const jni.jintType(), [ - jni.JValueInt(a), - jni.JValueInt(b), - jni.JValueInt(c), - jni.JValueInt(d), - jni.JValueInt(e), - jni.JValueInt(f), - jni.JValueInt(g), - jni.JValueInt(h) - ]); + return _max8(_class.reference.pointer, _id_max8 as jni.JMethodIDPtr, a, b, + c, d, e, f, g, h) + .integer; } static final _id_getNumber = _class.instanceMethodId( @@ -450,9 +656,22 @@ class Example extends jni.JObject { r"()I", ); + static final _getNumber = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int getNumber() int getNumber() { - return _id_getNumber(this, const jni.jintType(), []); + return _getNumber(reference.pointer, _id_getNumber as jni.JMethodIDPtr) + .integer; } static final _id_setNumber = _class.instanceMethodId( @@ -460,11 +679,22 @@ class Example extends jni.JObject { r"(I)V", ); + static final _setNumber = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: public void setNumber(int number) void setNumber( int number, ) { - _id_setNumber(this, const jni.jvoidType(), [jni.JValueInt(number)]); + _setNumber(reference.pointer, _id_setNumber as jni.JMethodIDPtr, number) + .check(); } static final _id_getIsUp = _class.instanceMethodId( @@ -472,9 +702,21 @@ class Example extends jni.JObject { r"()Z", ); + static final _getIsUp = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallBooleanMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public boolean getIsUp() bool getIsUp() { - return _id_getIsUp(this, const jni.jbooleanType(), []); + return _getIsUp(reference.pointer, _id_getIsUp as jni.JMethodIDPtr).boolean; } static final _id_setUp = _class.instanceMethodId( @@ -482,11 +724,22 @@ class Example extends jni.JObject { r"(Z)V", ); + static final _setUp = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: public void setUp(boolean isUp) void setUp( bool isUp, ) { - _id_setUp(this, const jni.jvoidType(), [isUp ? 1 : 0]); + _setUp(reference.pointer, _id_setUp as jni.JMethodIDPtr, isUp ? 1 : 0) + .check(); } static final _id_getCodename = _class.instanceMethodId( @@ -494,10 +747,23 @@ class Example extends jni.JObject { r"()Ljava/lang/String;", ); + static final _getCodename = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.String getCodename() /// The returned object must be released after use, by calling the [release] method. jni.JString getCodename() { - return _id_getCodename(this, const jni.JStringType(), []); + return _getCodename(reference.pointer, _id_getCodename as jni.JMethodIDPtr) + .object(const jni.JStringType()); } static final _id_setCodename = _class.instanceMethodId( @@ -505,11 +771,24 @@ class Example extends jni.JObject { r"(Ljava/lang/String;)V", ); + static final _setCodename = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public void setCodename(java.lang.String codename) void setCodename( jni.JString codename, ) { - _id_setCodename(this, const jni.jvoidType(), [codename.reference.pointer]); + _setCodename(reference.pointer, _id_setCodename as jni.JMethodIDPtr, + codename.reference.pointer) + .check(); } static final _id_getRandom = _class.instanceMethodId( @@ -517,10 +796,23 @@ class Example extends jni.JObject { r"()Ljava/util/Random;", ); + static final _getRandom = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.util.Random getRandom() /// The returned object must be released after use, by calling the [release] method. jni.JObject getRandom() { - return _id_getRandom(this, const jni.JObjectType(), []); + return _getRandom(reference.pointer, _id_getRandom as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_setRandom = _class.instanceMethodId( @@ -528,11 +820,24 @@ class Example extends jni.JObject { r"(Ljava/util/Random;)V", ); + static final _setRandom = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public void setRandom(java.util.Random random) void setRandom( jni.JObject random, ) { - _id_setRandom(this, const jni.jvoidType(), [random.reference.pointer]); + _setRandom(reference.pointer, _id_setRandom as jni.JMethodIDPtr, + random.reference.pointer) + .check(); } static final _id_getRandomLong = _class.instanceMethodId( @@ -540,9 +845,23 @@ class Example extends jni.JObject { r"()J", ); + static final _getRandomLong = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallLongMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public long getRandomLong() int getRandomLong() { - return _id_getRandomLong(this, const jni.jlongType(), []); + return _getRandomLong( + reference.pointer, _id_getRandomLong as jni.JMethodIDPtr) + .long; } static final _id_add4Longs = _class.instanceMethodId( @@ -550,6 +869,22 @@ class Example extends jni.JObject { r"(JJJJ)J", ); + static final _add4Longs = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64 + )>)>>("globalEnv_CallLongMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int, int, int, int)>(); + /// from: public long add4Longs(long a, long b, long c, long d) int add4Longs( int a, @@ -557,7 +892,9 @@ class Example extends jni.JObject { int c, int d, ) { - return _id_add4Longs(this, const jni.jlongType(), [a, b, c, d]); + return _add4Longs( + reference.pointer, _id_add4Longs as jni.JMethodIDPtr, a, b, c, d) + .long; } static final _id_add8Longs = _class.instanceMethodId( @@ -565,6 +902,26 @@ class Example extends jni.JObject { r"(JJJJJJJJ)J", ); + static final _add8Longs = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64 + )>)>>("globalEnv_CallLongMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, int, + int, int, int, int, int, int, int)>(); + /// from: public long add8Longs(long a, long b, long c, long d, long e, long f, long g, long h) int add8Longs( int a, @@ -576,7 +933,9 @@ class Example extends jni.JObject { int g, int h, ) { - return _id_add8Longs(this, const jni.jlongType(), [a, b, c, d, e, f, g, h]); + return _add8Longs(reference.pointer, _id_add8Longs as jni.JMethodIDPtr, a, + b, c, d, e, f, g, h) + .long; } static final _id_getRandomNumericString = _class.instanceMethodId( @@ -584,13 +943,27 @@ class Example extends jni.JObject { r"(Ljava/util/Random;)Ljava/lang/String;", ); + static final _getRandomNumericString = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public java.lang.String getRandomNumericString(java.util.Random random) /// The returned object must be released after use, by calling the [release] method. jni.JString getRandomNumericString( jni.JObject random, ) { - return _id_getRandomNumericString( - this, const jni.JStringType(), [random.reference.pointer]); + return _getRandomNumericString( + reference.pointer, + _id_getRandomNumericString as jni.JMethodIDPtr, + random.reference.pointer) + .object(const jni.JStringType()); } static final _id_protectedMethod = _class.instanceMethodId( @@ -598,13 +971,28 @@ class Example extends jni.JObject { r"(Ljava/lang/String;Ljava/lang/String;)V", ); + static final _protectedMethod = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); + /// from: protected void protectedMethod(java.lang.String a, java.lang.String b) void protectedMethod( jni.JString a, jni.JString b, ) { - _id_protectedMethod(this, const jni.jvoidType(), - [a.reference.pointer, b.reference.pointer]); + _protectedMethod(reference.pointer, _id_protectedMethod as jni.JMethodIDPtr, + a.reference.pointer, b.reference.pointer) + .check(); } static final _id_finalMethod = _class.instanceMethodId( @@ -612,9 +1000,22 @@ class Example extends jni.JObject { r"()V", ); + static final _finalMethod = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public final void finalMethod() void finalMethod() { - _id_finalMethod(this, const jni.jvoidType(), []); + _finalMethod(reference.pointer, _id_finalMethod as jni.JMethodIDPtr) + .check(); } static final _id_getList = _class.instanceMethodId( @@ -622,10 +1023,23 @@ class Example extends jni.JObject { r"()Ljava/util/List;", ); + static final _getList = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.util.List getList() /// The returned object must be released after use, by calling the [release] method. jni.JList getList() { - return _id_getList(this, const jni.JListType(jni.JStringType()), []); + return _getList(reference.pointer, _id_getList as jni.JMethodIDPtr) + .object(const jni.JListType(jni.JStringType())); } static final _id_joinStrings = _class.instanceMethodId( @@ -633,6 +1047,20 @@ class Example extends jni.JObject { r"(Ljava/util/List;Ljava/lang/String;)Ljava/lang/String;", ); + static final _joinStrings = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); + /// from: public java.lang.String joinStrings(java.util.List values, java.lang.String delim) /// The returned object must be released after use, by calling the [release] method. /// @@ -641,8 +1069,9 @@ class Example extends jni.JObject { jni.JList values, jni.JString delim, ) { - return _id_joinStrings(this, const jni.JStringType(), - [values.reference.pointer, delim.reference.pointer]); + return _joinStrings(reference.pointer, _id_joinStrings as jni.JMethodIDPtr, + values.reference.pointer, delim.reference.pointer) + .object(const jni.JStringType()); } static final _id_methodWithSeveralParams = _class.instanceMethodId( @@ -650,6 +1079,31 @@ class Example extends jni.JObject { r"(CLjava/lang/String;[ILjava/lang/CharSequence;Ljava/util/List;Ljava/util/Map;)V", ); + static final _methodWithSeveralParams = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Int64, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + /// from: public void methodWithSeveralParams(char ch, java.lang.String s, int[] a, T t, java.util.List lt, java.util.Map wm) void methodWithSeveralParams<$T extends jni.JObject>( int ch, @@ -664,57 +1118,106 @@ class Example extends jni.JObject { (lt.$type as jni.JListType).E, t.$type, ]) as jni.JObjType<$T>; - _id_methodWithSeveralParams(this, const jni.jvoidType(), [ - jni.JValueChar(ch), - s.reference.pointer, - a.reference.pointer, - t.reference.pointer, - lt.reference.pointer, - wm.reference.pointer - ]); + _methodWithSeveralParams( + reference.pointer, + _id_methodWithSeveralParams as jni.JMethodIDPtr, + ch, + s.reference.pointer, + a.reference.pointer, + t.reference.pointer, + lt.reference.pointer, + wm.reference.pointer) + .check(); } static final _id_new0 = _class.constructorId( r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory Example() { - return Example.fromReference(_id_new0(_class, referenceType, [])); + return Example.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } static final _id_new1 = _class.constructorId( r"(I)V", ); + static final _new1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: public void (int number) /// The returned object must be released after use, by calling the [release] method. factory Example.new1( int number, ) { return Example.fromReference( - _id_new1(_class, referenceType, [jni.JValueInt(number)])); + _new1(_class.reference.pointer, _id_new1 as jni.JMethodIDPtr, number) + .reference); } static final _id_new2 = _class.constructorId( r"(IZ)V", ); + static final _new2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64, ffi.Int64)>)>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int, int)>(); + /// from: public void (int number, boolean isUp) /// The returned object must be released after use, by calling the [release] method. factory Example.new2( int number, bool isUp, ) { - return Example.fromReference( - _id_new2(_class, referenceType, [jni.JValueInt(number), isUp ? 1 : 0])); + return Example.fromReference(_new2(_class.reference.pointer, + _id_new2 as jni.JMethodIDPtr, number, isUp ? 1 : 0) + .reference); } static final _id_new3 = _class.constructorId( r"(IZLjava/lang/String;)V", ); + static final _new3 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Int64, + ffi.Int64, + ffi.Pointer + )>)>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, int, + int, ffi.Pointer)>(); + /// from: public void (int number, boolean isUp, java.lang.String codename) /// The returned object must be released after use, by calling the [release] method. factory Example.new3( @@ -722,14 +1225,39 @@ class Example extends jni.JObject { bool isUp, jni.JString codename, ) { - return Example.fromReference(_id_new3(_class, referenceType, - [jni.JValueInt(number), isUp ? 1 : 0, codename.reference.pointer])); + return Example.fromReference(_new3( + _class.reference.pointer, + _id_new3 as jni.JMethodIDPtr, + number, + isUp ? 1 : 0, + codename.reference.pointer) + .reference); } static final _id_new4 = _class.constructorId( r"(IIIIIIII)V", ); + static final _new4 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64 + )>)>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, int, + int, int, int, int, int, int, int)>(); + /// from: public void (int a, int b, int c, int d, int e, int f, int g, int h) /// The returned object must be released after use, by calling the [release] method. factory Example.new4( @@ -742,16 +1270,9 @@ class Example extends jni.JObject { int g, int h, ) { - return Example.fromReference(_id_new4(_class, referenceType, [ - jni.JValueInt(a), - jni.JValueInt(b), - jni.JValueInt(c), - jni.JValueInt(d), - jni.JValueInt(e), - jni.JValueInt(f), - jni.JValueInt(g), - jni.JValueInt(h) - ])); + return Example.fromReference(_new4(_class.reference.pointer, + _id_new4 as jni.JMethodIDPtr, a, b, c, d, e, f, g, h) + .reference); } static final _id_whichExample = _class.instanceMethodId( @@ -759,9 +1280,23 @@ class Example extends jni.JObject { r"()I", ); + static final _whichExample = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int whichExample() int whichExample() { - return _id_whichExample(this, const jni.jintType(), []); + return _whichExample( + reference.pointer, _id_whichExample as jni.JMethodIDPtr) + .integer; } static final _id_addInts = _class.staticMethodId( @@ -769,13 +1304,23 @@ class Example extends jni.JObject { r"(II)I", ); + static final _addInts = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, + jni.JMethodIDPtr, ffi.VarArgs<(ffi.Int64, ffi.Int64)>)>>( + "globalEnv_CallStaticIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, int, int)>(); + /// from: static public int addInts(int a, int b) static int addInts( int a, int b, ) { - return _id_addInts( - _class, const jni.jintType(), [jni.JValueInt(a), jni.JValueInt(b)]); + return _addInts( + _class.reference.pointer, _id_addInts as jni.JMethodIDPtr, a, b) + .integer; } static final _id_getArr = _class.staticMethodId( @@ -783,10 +1328,23 @@ class Example extends jni.JObject { r"()[I", ); + static final _getArr = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public int[] getArr() /// The returned object must be released after use, by calling the [release] method. static jni.JArray getArr() { - return _id_getArr(_class, const jni.JArrayType(jni.jintType()), []); + return _getArr(_class.reference.pointer, _id_getArr as jni.JMethodIDPtr) + .object(const jni.JArrayType(jni.jintType())); } static final _id_addAll = _class.staticMethodId( @@ -794,11 +1352,24 @@ class Example extends jni.JObject { r"([I)I", ); + static final _addAll = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticIntMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: static public int addAll(int[] arr) static int addAll( jni.JArray arr, ) { - return _id_addAll(_class, const jni.jintType(), [arr.reference.pointer]); + return _addAll(_class.reference.pointer, _id_addAll as jni.JMethodIDPtr, + arr.reference.pointer) + .integer; } static final _id_getSelf = _class.instanceMethodId( @@ -806,10 +1377,23 @@ class Example extends jni.JObject { r"()Lcom/github/dart_lang/jnigen/simple_package/Example;", ); + static final _getSelf = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.github.dart_lang.jnigen.simple_package.Example getSelf() /// The returned object must be released after use, by calling the [release] method. Example getSelf() { - return _id_getSelf(this, const $ExampleType(), []); + return _getSelf(reference.pointer, _id_getSelf as jni.JMethodIDPtr) + .object(const $ExampleType()); } static final _id_throwException = _class.staticMethodId( @@ -817,9 +1401,23 @@ class Example extends jni.JObject { r"()V", ); + static final _throwException = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public void throwException() static void throwException() { - _id_throwException(_class, const jni.jvoidType(), []); + _throwException( + _class.reference.pointer, _id_throwException as jni.JMethodIDPtr) + .check(); } static final _id_overloaded = _class.instanceMethodId( @@ -827,9 +1425,21 @@ class Example extends jni.JObject { r"()V", ); + static final _overloaded = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void overloaded() void overloaded() { - _id_overloaded(this, const jni.jvoidType(), []); + _overloaded(reference.pointer, _id_overloaded as jni.JMethodIDPtr).check(); } static final _id_overloaded1 = _class.instanceMethodId( @@ -837,13 +1447,25 @@ class Example extends jni.JObject { r"(ILjava/lang/String;)V", ); + static final _overloaded1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64, ffi.Pointer)>)>>( + "globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + int, ffi.Pointer)>(); + /// from: public void overloaded(int a, java.lang.String b) void overloaded1( int a, jni.JString b, ) { - _id_overloaded1( - this, const jni.jvoidType(), [jni.JValueInt(a), b.reference.pointer]); + _overloaded1(reference.pointer, _id_overloaded1 as jni.JMethodIDPtr, a, + b.reference.pointer) + .check(); } static final _id_overloaded2 = _class.instanceMethodId( @@ -851,11 +1473,22 @@ class Example extends jni.JObject { r"(I)V", ); + static final _overloaded2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Int64,)>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, jni.JMethodIDPtr, int)>(); + /// from: public void overloaded(int a) void overloaded2( int a, ) { - _id_overloaded2(this, const jni.jvoidType(), [jni.JValueInt(a)]); + _overloaded2(reference.pointer, _id_overloaded2 as jni.JMethodIDPtr, a) + .check(); } static final _id_overloaded3 = _class.instanceMethodId( @@ -863,13 +1496,28 @@ class Example extends jni.JObject { r"(Ljava/util/List;Ljava/lang/String;)V", ); + static final _overloaded3 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); + /// from: public void overloaded(java.util.List a, java.lang.String b) void overloaded3( jni.JList a, jni.JString b, ) { - _id_overloaded3(this, const jni.jvoidType(), - [a.reference.pointer, b.reference.pointer]); + _overloaded3(reference.pointer, _id_overloaded3 as jni.JMethodIDPtr, + a.reference.pointer, b.reference.pointer) + .check(); } static final _id_overloaded4 = _class.instanceMethodId( @@ -877,11 +1525,24 @@ class Example extends jni.JObject { r"(Ljava/util/List;)V", ); + static final _overloaded4 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public void overloaded(java.util.List a) void overloaded4( jni.JList a, ) { - _id_overloaded4(this, const jni.jvoidType(), [a.reference.pointer]); + _overloaded4(reference.pointer, _id_overloaded4 as jni.JMethodIDPtr, + a.reference.pointer) + .check(); } } @@ -941,10 +1602,24 @@ class C2 extends jni.JObject { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory C2() { - return C2.fromReference(_id_new0(_class, referenceType, [])); + return C2.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } } @@ -990,10 +1665,24 @@ class Example1 extends jni.JObject { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory Example1() { - return Example1.fromReference(_id_new0(_class, referenceType, [])); + return Example1.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } static final _id_whichExample = _class.instanceMethodId( @@ -1001,9 +1690,23 @@ class Example1 extends jni.JObject { r"()I", ); + static final _whichExample = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int whichExample() int whichExample() { - return _id_whichExample(this, const jni.jintType(), []); + return _whichExample( + reference.pointer, _id_whichExample as jni.JMethodIDPtr) + .integer; } } @@ -1110,6 +1813,20 @@ class GrandParent_Parent_Child<$T extends jni.JObject, $S extends jni.JObject, r"(Lcom/github/dart_lang/jnigen/generics/GrandParent$Parent;Ljava/lang/Object;)V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); + /// from: public void (com.github.dart_lang.jnigen.generics.GrandParent$Parent $parent, U newValue) /// The returned object must be released after use, by calling the [release] method. factory GrandParent_Parent_Child( @@ -1132,8 +1849,9 @@ class GrandParent_Parent_Child<$T extends jni.JObject, $S extends jni.JObject, T, S, U, - _id_new0(_class, referenceType, - [$parent.reference.pointer, newValue.reference.pointer])); + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr, + $parent.reference.pointer, newValue.reference.pointer) + .reference); } } @@ -1238,6 +1956,20 @@ class GrandParent_Parent<$T extends jni.JObject, $S extends jni.JObject> r"(Lcom/github/dart_lang/jnigen/generics/GrandParent;Ljava/lang/Object;)V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); + /// from: public void (com.github.dart_lang.jnigen.generics.GrandParent $parent, S newValue) /// The returned object must be released after use, by calling the [release] method. factory GrandParent_Parent( @@ -1255,8 +1987,9 @@ class GrandParent_Parent<$T extends jni.JObject, $S extends jni.JObject> return GrandParent_Parent.fromReference( T, S, - _id_new0(_class, referenceType, - [$parent.reference.pointer, newValue.reference.pointer])); + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr, + $parent.reference.pointer, newValue.reference.pointer) + .reference); } } @@ -1357,6 +2090,25 @@ class GrandParent_StaticParent_Child<$S extends jni.JObject, r"(Lcom/github/dart_lang/jnigen/generics/GrandParent$StaticParent;Ljava/lang/Object;Ljava/lang/Object;)V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + /// from: public void (com.github.dart_lang.jnigen.generics.GrandParent$StaticParent $parent, S parentValue, U value) /// The returned object must be released after use, by calling the [release] method. factory GrandParent_StaticParent_Child( @@ -1376,11 +2128,13 @@ class GrandParent_StaticParent_Child<$S extends jni.JObject, return GrandParent_StaticParent_Child.fromReference( S, U, - _id_new0(_class, referenceType, [ - $parent.reference.pointer, - parentValue.reference.pointer, - value.reference.pointer - ])); + _new0( + _class.reference.pointer, + _id_new0 as jni.JMethodIDPtr, + $parent.reference.pointer, + parentValue.reference.pointer, + value.reference.pointer) + .reference); } } @@ -1463,6 +2217,17 @@ class GrandParent_StaticParent<$S extends jni.JObject> extends jni.JObject { r"(Ljava/lang/Object;)V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public void (S value) /// The returned object must be released after use, by calling the [release] method. factory GrandParent_StaticParent( @@ -1473,7 +2238,10 @@ class GrandParent_StaticParent<$S extends jni.JObject> extends jni.JObject { value.$type, ]) as jni.JObjType<$S>; return GrandParent_StaticParent.fromReference( - S, _id_new0(_class, referenceType, [value.reference.pointer])); + S, + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr, + value.reference.pointer) + .reference); } } @@ -1551,6 +2319,17 @@ class GrandParent<$T extends jni.JObject> extends jni.JObject { r"(Ljava/lang/Object;)V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public void (T value) /// The returned object must be released after use, by calling the [release] method. factory GrandParent( @@ -1561,7 +2340,10 @@ class GrandParent<$T extends jni.JObject> extends jni.JObject { value.$type, ]) as jni.JObjType<$T>; return GrandParent.fromReference( - T, _id_new0(_class, referenceType, [value.reference.pointer])); + T, + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr, + value.reference.pointer) + .reference); } static final _id_stringParent = _class.instanceMethodId( @@ -1569,13 +2351,25 @@ class GrandParent<$T extends jni.JObject> extends jni.JObject { r"()Lcom/github/dart_lang/jnigen/generics/GrandParent$Parent;", ); + static final _stringParent = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.github.dart_lang.jnigen.generics.GrandParent.Parent stringParent() /// The returned object must be released after use, by calling the [release] method. GrandParent_Parent stringParent() { - return _id_stringParent( - this, - const $GrandParent_ParentType(jni.JObjectType(), jni.JStringType()), - []); + return _stringParent( + reference.pointer, _id_stringParent as jni.JMethodIDPtr) + .object(const $GrandParent_ParentType( + jni.JObjectType(), jni.JStringType())); } static final _id_varParent = _class.instanceMethodId( @@ -1583,6 +2377,17 @@ class GrandParent<$T extends jni.JObject> extends jni.JObject { r"(Ljava/lang/Object;)Lcom/github/dart_lang/jnigen/generics/GrandParent$Parent;", ); + static final _varParent = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public com.github.dart_lang.jnigen.generics.GrandParent.Parent varParent(S nestedValue) /// The returned object must be released after use, by calling the [release] method. GrandParent_Parent varParent<$S extends jni.JObject>( @@ -1592,10 +2397,9 @@ class GrandParent<$T extends jni.JObject> extends jni.JObject { S ??= jni.lowestCommonSuperType([ nestedValue.$type, ]) as jni.JObjType<$S>; - return _id_varParent( - this, - $GrandParent_ParentType(const jni.JObjectType(), S), - [nestedValue.reference.pointer]); + return _varParent(reference.pointer, _id_varParent as jni.JMethodIDPtr, + nestedValue.reference.pointer) + .object($GrandParent_ParentType(const jni.JObjectType(), S)); } static final _id_stringStaticParent = _class.staticMethodId( @@ -1603,11 +2407,24 @@ class GrandParent<$T extends jni.JObject> extends jni.JObject { r"()Lcom/github/dart_lang/jnigen/generics/GrandParent$StaticParent;", ); + static final _stringStaticParent = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public com.github.dart_lang.jnigen.generics.GrandParent.StaticParent stringStaticParent() /// The returned object must be released after use, by calling the [release] method. static GrandParent_StaticParent stringStaticParent() { - return _id_stringStaticParent( - _class, const $GrandParent_StaticParentType(jni.JStringType()), []); + return _stringStaticParent(_class.reference.pointer, + _id_stringStaticParent as jni.JMethodIDPtr) + .object(const $GrandParent_StaticParentType(jni.JStringType())); } static final _id_varStaticParent = _class.staticMethodId( @@ -1615,6 +2432,17 @@ class GrandParent<$T extends jni.JObject> extends jni.JObject { r"(Ljava/lang/Object;)Lcom/github/dart_lang/jnigen/generics/GrandParent$StaticParent;", ); + static final _varStaticParent = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: static public com.github.dart_lang.jnigen.generics.GrandParent.StaticParent varStaticParent(S value) /// The returned object must be released after use, by calling the [release] method. static GrandParent_StaticParent<$S> varStaticParent<$S extends jni.JObject>( @@ -1624,8 +2452,9 @@ class GrandParent<$T extends jni.JObject> extends jni.JObject { S ??= jni.lowestCommonSuperType([ value.$type, ]) as jni.JObjType<$S>; - return _id_varStaticParent( - _class, $GrandParent_StaticParentType(S), [value.reference.pointer]); + return _varStaticParent(_class.reference.pointer, + _id_varStaticParent as jni.JMethodIDPtr, value.reference.pointer) + .object($GrandParent_StaticParentType(S)); } static final _id_staticParentWithSameType = _class.instanceMethodId( @@ -1633,11 +2462,24 @@ class GrandParent<$T extends jni.JObject> extends jni.JObject { r"()Lcom/github/dart_lang/jnigen/generics/GrandParent$StaticParent;", ); + static final _staticParentWithSameType = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.github.dart_lang.jnigen.generics.GrandParent.StaticParent staticParentWithSameType() /// The returned object must be released after use, by calling the [release] method. GrandParent_StaticParent<$T> staticParentWithSameType() { - return _id_staticParentWithSameType( - this, $GrandParent_StaticParentType(T), []); + return _staticParentWithSameType( + reference.pointer, _id_staticParentWithSameType as jni.JMethodIDPtr) + .object($GrandParent_StaticParentType(T)); } } @@ -1733,6 +2575,25 @@ class MyMap_MyEntry<$K extends jni.JObject, $V extends jni.JObject> r"(Lcom/github/dart_lang/jnigen/generics/MyMap;Ljava/lang/Object;Ljava/lang/Object;)V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + /// from: public void (com.github.dart_lang.jnigen.generics.MyMap $parent, K key, V value) /// The returned object must be released after use, by calling the [release] method. factory MyMap_MyEntry( @@ -1753,11 +2614,13 @@ class MyMap_MyEntry<$K extends jni.JObject, $V extends jni.JObject> return MyMap_MyEntry.fromReference( K, V, - _id_new0(_class, referenceType, [ - $parent.reference.pointer, - key.reference.pointer, - value.reference.pointer - ])); + _new0( + _class.reference.pointer, + _id_new0 as jni.JMethodIDPtr, + $parent.reference.pointer, + key.reference.pointer, + value.reference.pointer) + .reference); } } @@ -1831,13 +2694,29 @@ class MyMap<$K extends jni.JObject, $V extends jni.JObject> r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory MyMap({ required jni.JObjType<$K> K, required jni.JObjType<$V> V, }) { - return MyMap.fromReference(K, V, _id_new0(_class, referenceType, [])); + return MyMap.fromReference( + K, + V, + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } static final _id_get0 = _class.instanceMethodId( @@ -1845,12 +2724,25 @@ class MyMap<$K extends jni.JObject, $V extends jni.JObject> r"(Ljava/lang/Object;)Ljava/lang/Object;", ); + static final _get0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public V get(K key) /// The returned object must be released after use, by calling the [release] method. $V get0( $K key, ) { - return _id_get0(this, V, [key.reference.pointer]); + return _get0(reference.pointer, _id_get0 as jni.JMethodIDPtr, + key.reference.pointer) + .object(V); } static final _id_put = _class.instanceMethodId( @@ -1858,13 +2750,29 @@ class MyMap<$K extends jni.JObject, $V extends jni.JObject> r"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", ); + static final _put = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); + /// from: public V put(K key, V value) /// The returned object must be released after use, by calling the [release] method. $V put( $K key, $V value, ) { - return _id_put(this, V, [key.reference.pointer, value.reference.pointer]); + return _put(reference.pointer, _id_put as jni.JMethodIDPtr, + key.reference.pointer, value.reference.pointer) + .object(V); } static final _id_entryStack = _class.instanceMethodId( @@ -1872,14 +2780,24 @@ class MyMap<$K extends jni.JObject, $V extends jni.JObject> r"()Lcom/github/dart_lang/jnigen/generics/MyStack;", ); + static final _entryStack = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public com.github.dart_lang.jnigen.generics.MyStack.MyEntry> entryStack() /// The returned object must be released after use, by calling the [release] method. MyStack> entryStack() { - return _id_entryStack( - this, - const $MyStackType( - $MyMap_MyEntryType(jni.JObjectType(), jni.JObjectType())), - []); + return _entryStack(reference.pointer, _id_entryStack as jni.JMethodIDPtr) + .object(const $MyStackType( + $MyMap_MyEntryType(jni.JObjectType(), jni.JObjectType()))); } } @@ -1946,12 +2864,27 @@ class MyStack<$T extends jni.JObject> extends jni.JObject { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory MyStack({ required jni.JObjType<$T> T, }) { - return MyStack.fromReference(T, _id_new0(_class, referenceType, [])); + return MyStack.fromReference( + T, + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } static final _id_fromArray = _class.staticMethodId( @@ -1959,6 +2892,17 @@ class MyStack<$T extends jni.JObject> extends jni.JObject { r"([Ljava/lang/Object;)Lcom/github/dart_lang/jnigen/generics/MyStack;", ); + static final _fromArray = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: static public com.github.dart_lang.jnigen.generics.MyStack fromArray(T[] arr) /// The returned object must be released after use, by calling the [release] method. static MyStack<$T> fromArray<$T extends jni.JObject>( @@ -1968,7 +2912,9 @@ class MyStack<$T extends jni.JObject> extends jni.JObject { T ??= jni.lowestCommonSuperType([ ((arr.$type as jni.JArrayType).elementType as jni.JObjType), ]) as jni.JObjType<$T>; - return _id_fromArray(_class, $MyStackType(T), [arr.reference.pointer]); + return _fromArray(_class.reference.pointer, + _id_fromArray as jni.JMethodIDPtr, arr.reference.pointer) + .object($MyStackType(T)); } static final _id_fromArrayOfArrayOfGrandParents = _class.staticMethodId( @@ -1976,6 +2922,17 @@ class MyStack<$T extends jni.JObject> extends jni.JObject { r"([[Lcom/github/dart_lang/jnigen/generics/GrandParent;)Lcom/github/dart_lang/jnigen/generics/MyStack;", ); + static final _fromArrayOfArrayOfGrandParents = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: static public com.github.dart_lang.jnigen.generics.MyStack fromArrayOfArrayOfGrandParents(com.github.dart_lang.jnigen.generics.GrandParent[][] arr) /// The returned object must be released after use, by calling the [release] method. static MyStack<$S> fromArrayOfArrayOfGrandParents<$S extends jni.JObject>( @@ -1988,8 +2945,11 @@ class MyStack<$T extends jni.JObject> extends jni.JObject { .elementType as jni.JObjType) as $GrandParentType) .T, ]) as jni.JObjType<$S>; - return _id_fromArrayOfArrayOfGrandParents( - _class, $MyStackType(S), [arr.reference.pointer]); + return _fromArrayOfArrayOfGrandParents( + _class.reference.pointer, + _id_fromArrayOfArrayOfGrandParents as jni.JMethodIDPtr, + arr.reference.pointer) + .object($MyStackType(S)); } static final _id_of = _class.staticMethodId( @@ -1997,12 +2957,25 @@ class MyStack<$T extends jni.JObject> extends jni.JObject { r"()Lcom/github/dart_lang/jnigen/generics/MyStack;", ); + static final _of = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public com.github.dart_lang.jnigen.generics.MyStack of() /// The returned object must be released after use, by calling the [release] method. static MyStack<$T> of<$T extends jni.JObject>({ required jni.JObjType<$T> T, }) { - return _id_of(_class, $MyStackType(T), []); + return _of(_class.reference.pointer, _id_of as jni.JMethodIDPtr) + .object($MyStackType(T)); } static final _id_of1 = _class.staticMethodId( @@ -2010,6 +2983,17 @@ class MyStack<$T extends jni.JObject> extends jni.JObject { r"(Ljava/lang/Object;)Lcom/github/dart_lang/jnigen/generics/MyStack;", ); + static final _of1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: static public com.github.dart_lang.jnigen.generics.MyStack of(T obj) /// The returned object must be released after use, by calling the [release] method. static MyStack<$T> of1<$T extends jni.JObject>( @@ -2019,7 +3003,9 @@ class MyStack<$T extends jni.JObject> extends jni.JObject { T ??= jni.lowestCommonSuperType([ obj.$type, ]) as jni.JObjType<$T>; - return _id_of1(_class, $MyStackType(T), [obj.reference.pointer]); + return _of1(_class.reference.pointer, _id_of1 as jni.JMethodIDPtr, + obj.reference.pointer) + .object($MyStackType(T)); } static final _id_of2 = _class.staticMethodId( @@ -2027,6 +3013,20 @@ class MyStack<$T extends jni.JObject> extends jni.JObject { r"(Ljava/lang/Object;Ljava/lang/Object;)Lcom/github/dart_lang/jnigen/generics/MyStack;", ); + static final _of2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer + )>)>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer, ffi.Pointer)>(); + /// from: static public com.github.dart_lang.jnigen.generics.MyStack of(T obj, T obj2) /// The returned object must be released after use, by calling the [release] method. static MyStack<$T> of2<$T extends jni.JObject>( @@ -2038,8 +3038,9 @@ class MyStack<$T extends jni.JObject> extends jni.JObject { obj2.$type, obj.$type, ]) as jni.JObjType<$T>; - return _id_of2(_class, $MyStackType(T), - [obj.reference.pointer, obj2.reference.pointer]); + return _of2(_class.reference.pointer, _id_of2 as jni.JMethodIDPtr, + obj.reference.pointer, obj2.reference.pointer) + .object($MyStackType(T)); } static final _id_push = _class.instanceMethodId( @@ -2047,11 +3048,24 @@ class MyStack<$T extends jni.JObject> extends jni.JObject { r"(Ljava/lang/Object;)V", ); + static final _push = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public void push(T item) void push( $T item, ) { - _id_push(this, const jni.jvoidType(), [item.reference.pointer]); + _push(reference.pointer, _id_push as jni.JMethodIDPtr, + item.reference.pointer) + .check(); } static final _id_pop = _class.instanceMethodId( @@ -2059,10 +3073,22 @@ class MyStack<$T extends jni.JObject> extends jni.JObject { r"()Ljava/lang/Object;", ); + static final _pop = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public T pop() /// The returned object must be released after use, by calling the [release] method. $T pop() { - return _id_pop(this, T, []); + return _pop(reference.pointer, _id_pop as jni.JMethodIDPtr).object(T); } static final _id_size = _class.instanceMethodId( @@ -2070,9 +3096,21 @@ class MyStack<$T extends jni.JObject> extends jni.JObject { r"()I", ); + static final _size = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int size() int size() { - return _id_size(this, const jni.jintType(), []); + return _size(reference.pointer, _id_size as jni.JMethodIDPtr).integer; } } @@ -2136,12 +3174,27 @@ class StringKeyedMap<$V extends jni.JObject> extends MyMap { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory StringKeyedMap({ required jni.JObjType<$V> V, }) { - return StringKeyedMap.fromReference(V, _id_new0(_class, referenceType, [])); + return StringKeyedMap.fromReference( + V, + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } } @@ -2196,10 +3249,24 @@ class StringStack extends MyStack { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory StringStack() { - return StringStack.fromReference(_id_new0(_class, referenceType, [])); + return StringStack.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } } @@ -2256,13 +3323,27 @@ class StringValuedMap<$K extends jni.JObject> extends MyMap<$K, jni.JString> { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory StringValuedMap({ required jni.JObjType<$K> K, }) { return StringValuedMap.fromReference( - K, _id_new0(_class, referenceType, [])); + K, + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } } @@ -2328,11 +3409,24 @@ class MyInterface<$T extends jni.JObject> extends jni.JObject { r"(Ljava/lang/String;)V", ); + static final _voidCallback = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public abstract void voidCallback(java.lang.String s) void voidCallback( jni.JString s, ) { - _id_voidCallback(this, const jni.jvoidType(), [s.reference.pointer]); + _voidCallback(reference.pointer, _id_voidCallback as jni.JMethodIDPtr, + s.reference.pointer) + .check(); } static final _id_stringCallback = _class.instanceMethodId( @@ -2340,13 +3434,25 @@ class MyInterface<$T extends jni.JObject> extends jni.JObject { r"(Ljava/lang/String;)Ljava/lang/String;", ); + static final _stringCallback = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public abstract java.lang.String stringCallback(java.lang.String s) /// The returned object must be released after use, by calling the [release] method. jni.JString stringCallback( jni.JString s, ) { - return _id_stringCallback( - this, const jni.JStringType(), [s.reference.pointer]); + return _stringCallback(reference.pointer, + _id_stringCallback as jni.JMethodIDPtr, s.reference.pointer) + .object(const jni.JStringType()); } static final _id_varCallback = _class.instanceMethodId( @@ -2354,12 +3460,25 @@ class MyInterface<$T extends jni.JObject> extends jni.JObject { r"(Ljava/lang/Object;)Ljava/lang/Object;", ); + static final _varCallback = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public abstract T varCallback(T t) /// The returned object must be released after use, by calling the [release] method. $T varCallback( $T t, ) { - return _id_varCallback(this, T, [t.reference.pointer]); + return _varCallback(reference.pointer, _id_varCallback as jni.JMethodIDPtr, + t.reference.pointer) + .object(T); } static final _id_manyPrimitives = _class.instanceMethodId( @@ -2367,6 +3486,22 @@ class MyInterface<$T extends jni.JObject> extends jni.JObject { r"(IZCD)J", ); + static final _manyPrimitives = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Double + )>)>>("globalEnv_CallLongMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, int, + int, int, double)>(); + /// from: public abstract long manyPrimitives(int a, boolean b, char c, double d) int manyPrimitives( int a, @@ -2374,8 +3509,9 @@ class MyInterface<$T extends jni.JObject> extends jni.JObject { int c, double d, ) { - return _id_manyPrimitives(this, const jni.jlongType(), - [jni.JValueInt(a), b ? 1 : 0, jni.JValueChar(c), d]); + return _manyPrimitives(reference.pointer, + _id_manyPrimitives as jni.JMethodIDPtr, a, b ? 1 : 0, c, d) + .long; } /// Maps a specific port to the implemented interface. @@ -2592,11 +3728,24 @@ class MyInterfaceConsumer extends jni.JObject { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory MyInterfaceConsumer() { return MyInterfaceConsumer.fromReference( - _id_new0(_class, referenceType, [])); + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } static final _id_consumeOnAnotherThread = _class.staticMethodId( @@ -2604,6 +3753,33 @@ class MyInterfaceConsumer extends jni.JObject { r"(Lcom/github/dart_lang/jnigen/interfaces/MyInterface;Ljava/lang/String;IZCDLjava/lang/Object;)V", ); + static final _consumeOnAnotherThread = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Double, + ffi.Pointer + )>)>>("globalEnv_CallStaticVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.Pointer, + ffi.Pointer, + int, + int, + int, + double, + ffi.Pointer)>(); + /// from: static public void consumeOnAnotherThread(com.github.dart_lang.jnigen.interfaces.MyInterface myInterface, java.lang.String s, int a, boolean b, char c, double d, T t) static void consumeOnAnotherThread<$T extends jni.JObject>( MyInterface<$T> myInterface, @@ -2619,15 +3795,17 @@ class MyInterfaceConsumer extends jni.JObject { t.$type, (myInterface.$type as $MyInterfaceType).T, ]) as jni.JObjType<$T>; - _id_consumeOnAnotherThread(_class, const jni.jvoidType(), [ - myInterface.reference.pointer, - s.reference.pointer, - jni.JValueInt(a), - b ? 1 : 0, - jni.JValueChar(c), - d, - t.reference.pointer - ]); + _consumeOnAnotherThread( + _class.reference.pointer, + _id_consumeOnAnotherThread as jni.JMethodIDPtr, + myInterface.reference.pointer, + s.reference.pointer, + a, + b ? 1 : 0, + c, + d, + t.reference.pointer) + .check(); } static final _id_consumeOnSameThread = _class.staticMethodId( @@ -2635,6 +3813,33 @@ class MyInterfaceConsumer extends jni.JObject { r"(Lcom/github/dart_lang/jnigen/interfaces/MyInterface;Ljava/lang/String;IZCDLjava/lang/Object;)V", ); + static final _consumeOnSameThread = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Pointer, + ffi.Pointer, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Double, + ffi.Pointer + )>)>>("globalEnv_CallStaticVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.Pointer, + ffi.Pointer, + int, + int, + int, + double, + ffi.Pointer)>(); + /// from: static public void consumeOnSameThread(com.github.dart_lang.jnigen.interfaces.MyInterface myInterface, java.lang.String s, int a, boolean b, char c, double d, T t) static void consumeOnSameThread<$T extends jni.JObject>( MyInterface<$T> myInterface, @@ -2650,15 +3855,17 @@ class MyInterfaceConsumer extends jni.JObject { t.$type, (myInterface.$type as $MyInterfaceType).T, ]) as jni.JObjType<$T>; - _id_consumeOnSameThread(_class, const jni.jvoidType(), [ - myInterface.reference.pointer, - s.reference.pointer, - jni.JValueInt(a), - b ? 1 : 0, - jni.JValueChar(c), - d, - t.reference.pointer - ]); + _consumeOnSameThread( + _class.reference.pointer, + _id_consumeOnSameThread as jni.JMethodIDPtr, + myInterface.reference.pointer, + s.reference.pointer, + a, + b ? 1 : 0, + c, + d, + t.reference.pointer) + .check(); } } @@ -2708,9 +3915,21 @@ class MyRunnable extends jni.JObject { r"()V", ); + static final _run = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract void run() void run() { - _id_run(this, const jni.jvoidType(), []); + _run(reference.pointer, _id_run as jni.JMethodIDPtr).check(); } /// Maps a specific port to the implemented interface. @@ -2860,13 +4079,25 @@ class MyRunnableRunner extends jni.JObject { r"(Lcom/github/dart_lang/jnigen/interfaces/MyRunnable;)V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: public void (com.github.dart_lang.jnigen.interfaces.MyRunnable runnable) /// The returned object must be released after use, by calling the [release] method. factory MyRunnableRunner( MyRunnable runnable, ) { - return MyRunnableRunner.fromReference( - _id_new0(_class, referenceType, [runnable.reference.pointer])); + return MyRunnableRunner.fromReference(_new0(_class.reference.pointer, + _id_new0 as jni.JMethodIDPtr, runnable.reference.pointer) + .reference); } static final _id_runOnSameThread = _class.instanceMethodId( @@ -2874,9 +4105,22 @@ class MyRunnableRunner extends jni.JObject { r"()V", ); + static final _runOnSameThread = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void runOnSameThread() void runOnSameThread() { - _id_runOnSameThread(this, const jni.jvoidType(), []); + _runOnSameThread(reference.pointer, _id_runOnSameThread as jni.JMethodIDPtr) + .check(); } static final _id_runOnAnotherThread = _class.instanceMethodId( @@ -2884,9 +4128,23 @@ class MyRunnableRunner extends jni.JObject { r"()V", ); + static final _runOnAnotherThread = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void runOnAnotherThread() void runOnAnotherThread() { - _id_runOnAnotherThread(this, const jni.jvoidType(), []); + _runOnAnotherThread( + reference.pointer, _id_runOnAnotherThread as jni.JMethodIDPtr) + .check(); } } @@ -2936,11 +4194,23 @@ class JsonSerializable_Case extends jni.JObject { r"()[Lcom/github/dart_lang/jnigen/annotations/JsonSerializable$Case;", ); + static final _values = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public com.github.dart_lang.jnigen.annotations.JsonSerializable.Case[] values() /// The returned object must be released after use, by calling the [release] method. static jni.JArray values() { - return _id_values( - _class, const jni.JArrayType($JsonSerializable_CaseType()), []); + return _values(_class.reference.pointer, _id_values as jni.JMethodIDPtr) + .object(const jni.JArrayType($JsonSerializable_CaseType())); } static final _id_valueOf = _class.staticMethodId( @@ -2948,13 +4218,25 @@ class JsonSerializable_Case extends jni.JObject { r"(Ljava/lang/String;)Lcom/github/dart_lang/jnigen/annotations/JsonSerializable$Case;", ); + static final _valueOf = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: static public com.github.dart_lang.jnigen.annotations.JsonSerializable.Case valueOf(java.lang.String name) /// The returned object must be released after use, by calling the [release] method. static JsonSerializable_Case valueOf( jni.JString name, ) { - return _id_valueOf( - _class, const $JsonSerializable_CaseType(), [name.reference.pointer]); + return _valueOf(_class.reference.pointer, _id_valueOf as jni.JMethodIDPtr, + name.reference.pointer) + .object(const $JsonSerializable_CaseType()); } } @@ -3005,10 +4287,23 @@ class JsonSerializable extends jni.JObject { r"()Lcom/github/dart_lang/jnigen/annotations/JsonSerializable$Case;", ); + static final _value = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public abstract com.github.dart_lang.jnigen.annotations.JsonSerializable$Case value() /// The returned object must be released after use, by calling the [release] method. JsonSerializable_Case value() { - return _id_value(this, const $JsonSerializable_CaseType(), []); + return _value(reference.pointer, _id_value as jni.JMethodIDPtr) + .object(const $JsonSerializable_CaseType()); } /// Maps a specific port to the implemented interface. @@ -3149,10 +4444,24 @@ class MyDataClass extends jni.JObject { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory MyDataClass() { - return MyDataClass.fromReference(_id_new0(_class, referenceType, [])); + return MyDataClass.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } } @@ -3201,10 +4510,23 @@ class Color extends jni.JObject { r"()[Lcom/github/dart_lang/jnigen/simple_package/Color;", ); + static final _values = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public com.github.dart_lang.jnigen.simple_package.Color[] values() /// The returned object must be released after use, by calling the [release] method. static jni.JArray values() { - return _id_values(_class, const jni.JArrayType($ColorType()), []); + return _values(_class.reference.pointer, _id_values as jni.JMethodIDPtr) + .object(const jni.JArrayType($ColorType())); } static final _id_valueOf = _class.staticMethodId( @@ -3212,12 +4534,25 @@ class Color extends jni.JObject { r"(Ljava/lang/String;)Lcom/github/dart_lang/jnigen/simple_package/Color;", ); + static final _valueOf = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Pointer,)>)>>( + "globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.Pointer)>(); + /// from: static public com.github.dart_lang.jnigen.simple_package.Color valueOf(java.lang.String name) /// The returned object must be released after use, by calling the [release] method. static Color valueOf( jni.JString name, ) { - return _id_valueOf(_class, const $ColorType(), [name.reference.pointer]); + return _valueOf(_class.reference.pointer, _id_valueOf as jni.JMethodIDPtr, + name.reference.pointer) + .object(const $ColorType()); } } @@ -3264,29 +4599,70 @@ class Exceptions extends jni.JObject { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory Exceptions() { - return Exceptions.fromReference(_id_new0(_class, referenceType, [])); + return Exceptions.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } static final _id_new1 = _class.constructorId( r"(F)V", ); + static final _new1 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, + ffi.VarArgs<(ffi.Double,)>)>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, jni.JMethodIDPtr, double)>(); + /// from: public void (float x) /// The returned object must be released after use, by calling the [release] method. factory Exceptions.new1( double x, ) { return Exceptions.fromReference( - _id_new1(_class, referenceType, [jni.JValueFloat(x)])); + _new1(_class.reference.pointer, _id_new1 as jni.JMethodIDPtr, x) + .reference); } static final _id_new2 = _class.constructorId( r"(IIIIII)V", ); + static final _new2 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + ffi.VarArgs< + ( + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64, + ffi.Int64 + )>)>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function(ffi.Pointer, jni.JMethodIDPtr, int, + int, int, int, int, int)>(); + /// from: public void (int a, int b, int c, int d, int e, int f) /// The returned object must be released after use, by calling the [release] method. factory Exceptions.new2( @@ -3297,14 +4673,9 @@ class Exceptions extends jni.JObject { int e, int f, ) { - return Exceptions.fromReference(_id_new2(_class, referenceType, [ - jni.JValueInt(a), - jni.JValueInt(b), - jni.JValueInt(c), - jni.JValueInt(d), - jni.JValueInt(e), - jni.JValueInt(f) - ])); + return Exceptions.fromReference(_new2(_class.reference.pointer, + _id_new2 as jni.JMethodIDPtr, a, b, c, d, e, f) + .reference); } static final _id_staticObjectMethod = _class.staticMethodId( @@ -3312,10 +4683,24 @@ class Exceptions extends jni.JObject { r"()Ljava/lang/Object;", ); + static final _staticObjectMethod = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public java.lang.Object staticObjectMethod() /// The returned object must be released after use, by calling the [release] method. static jni.JObject staticObjectMethod() { - return _id_staticObjectMethod(_class, const jni.JObjectType(), []); + return _staticObjectMethod(_class.reference.pointer, + _id_staticObjectMethod as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_staticIntMethod = _class.staticMethodId( @@ -3323,9 +4708,23 @@ class Exceptions extends jni.JObject { r"()I", ); + static final _staticIntMethod = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public int staticIntMethod() static int staticIntMethod() { - return _id_staticIntMethod(_class, const jni.jintType(), []); + return _staticIntMethod( + _class.reference.pointer, _id_staticIntMethod as jni.JMethodIDPtr) + .integer; } static final _id_staticObjectArrayMethod = _class.staticMethodId( @@ -3333,11 +4732,24 @@ class Exceptions extends jni.JObject { r"()[Ljava/lang/Object;", ); + static final _staticObjectArrayMethod = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public java.lang.Object[] staticObjectArrayMethod() /// The returned object must be released after use, by calling the [release] method. static jni.JArray staticObjectArrayMethod() { - return _id_staticObjectArrayMethod( - _class, const jni.JArrayType(jni.JObjectType()), []); + return _staticObjectArrayMethod(_class.reference.pointer, + _id_staticObjectArrayMethod as jni.JMethodIDPtr) + .object(const jni.JArrayType(jni.JObjectType())); } static final _id_staticIntArrayMethod = _class.staticMethodId( @@ -3345,11 +4757,24 @@ class Exceptions extends jni.JObject { r"()[I", ); + static final _staticIntArrayMethod = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public int[] staticIntArrayMethod() /// The returned object must be released after use, by calling the [release] method. static jni.JArray staticIntArrayMethod() { - return _id_staticIntArrayMethod( - _class, const jni.JArrayType(jni.jintType()), []); + return _staticIntArrayMethod(_class.reference.pointer, + _id_staticIntArrayMethod as jni.JMethodIDPtr) + .object(const jni.JArrayType(jni.jintType())); } static final _id_objectMethod = _class.instanceMethodId( @@ -3357,10 +4782,24 @@ class Exceptions extends jni.JObject { r"()Ljava/lang/Object;", ); + static final _objectMethod = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.Object objectMethod() /// The returned object must be released after use, by calling the [release] method. jni.JObject objectMethod() { - return _id_objectMethod(this, const jni.JObjectType(), []); + return _objectMethod( + reference.pointer, _id_objectMethod as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_intMethod = _class.instanceMethodId( @@ -3368,9 +4807,22 @@ class Exceptions extends jni.JObject { r"()I", ); + static final _intMethod = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int intMethod() int intMethod() { - return _id_intMethod(this, const jni.jintType(), []); + return _intMethod(reference.pointer, _id_intMethod as jni.JMethodIDPtr) + .integer; } static final _id_objectArrayMethod = _class.instanceMethodId( @@ -3378,11 +4830,24 @@ class Exceptions extends jni.JObject { r"()[Ljava/lang/Object;", ); + static final _objectArrayMethod = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.lang.Object[] objectArrayMethod() /// The returned object must be released after use, by calling the [release] method. jni.JArray objectArrayMethod() { - return _id_objectArrayMethod( - this, const jni.JArrayType(jni.JObjectType()), []); + return _objectArrayMethod( + reference.pointer, _id_objectArrayMethod as jni.JMethodIDPtr) + .object(const jni.JArrayType(jni.JObjectType())); } static final _id_intArrayMethod = _class.instanceMethodId( @@ -3390,10 +4855,24 @@ class Exceptions extends jni.JObject { r"()[I", ); + static final _intArrayMethod = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int[] intArrayMethod() /// The returned object must be released after use, by calling the [release] method. jni.JArray intArrayMethod() { - return _id_intArrayMethod(this, const jni.JArrayType(jni.jintType()), []); + return _intArrayMethod( + reference.pointer, _id_intArrayMethod as jni.JMethodIDPtr) + .object(const jni.JArrayType(jni.jintType())); } static final _id_throwNullPointerException = _class.instanceMethodId( @@ -3401,9 +4880,23 @@ class Exceptions extends jni.JObject { r"()I", ); + static final _throwNullPointerException = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int throwNullPointerException() int throwNullPointerException() { - return _id_throwNullPointerException(this, const jni.jintType(), []); + return _throwNullPointerException(reference.pointer, + _id_throwNullPointerException as jni.JMethodIDPtr) + .integer; } static final _id_throwFileNotFoundException = _class.instanceMethodId( @@ -3411,10 +4904,24 @@ class Exceptions extends jni.JObject { r"()Ljava/io/InputStream;", ); + static final _throwFileNotFoundException = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.io.InputStream throwFileNotFoundException() /// The returned object must be released after use, by calling the [release] method. jni.JObject throwFileNotFoundException() { - return _id_throwFileNotFoundException(this, const jni.JObjectType(), []); + return _throwFileNotFoundException(reference.pointer, + _id_throwFileNotFoundException as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_throwClassCastException = _class.instanceMethodId( @@ -3422,10 +4929,24 @@ class Exceptions extends jni.JObject { r"()Ljava/io/FileInputStream;", ); + static final _throwClassCastException = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallObjectMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public java.io.FileInputStream throwClassCastException() /// The returned object must be released after use, by calling the [release] method. jni.JObject throwClassCastException() { - return _id_throwClassCastException(this, const jni.JObjectType(), []); + return _throwClassCastException( + reference.pointer, _id_throwClassCastException as jni.JMethodIDPtr) + .object(const jni.JObjectType()); } static final _id_throwArrayIndexException = _class.instanceMethodId( @@ -3433,9 +4954,23 @@ class Exceptions extends jni.JObject { r"()I", ); + static final _throwArrayIndexException = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int throwArrayIndexException() int throwArrayIndexException() { - return _id_throwArrayIndexException(this, const jni.jintType(), []); + return _throwArrayIndexException( + reference.pointer, _id_throwArrayIndexException as jni.JMethodIDPtr) + .integer; } static final _id_throwArithmeticException = _class.instanceMethodId( @@ -3443,9 +4978,23 @@ class Exceptions extends jni.JObject { r"()I", ); + static final _throwArithmeticException = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallIntMethod") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public int throwArithmeticException() int throwArithmeticException() { - return _id_throwArithmeticException(this, const jni.jintType(), []); + return _throwArithmeticException( + reference.pointer, _id_throwArithmeticException as jni.JMethodIDPtr) + .integer; } static final _id_throwLoremIpsum = _class.staticMethodId( @@ -3453,9 +5002,23 @@ class Exceptions extends jni.JObject { r"()V", ); + static final _throwLoremIpsum = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_CallStaticVoidMethod") + .asFunction< + jni.JThrowablePtr Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: static public void throwLoremIpsum() static void throwLoremIpsum() { - _id_throwLoremIpsum(_class, const jni.jvoidType(), []); + _throwLoremIpsum( + _class.reference.pointer, _id_throwLoremIpsum as jni.JMethodIDPtr) + .check(); } } @@ -3633,10 +5196,24 @@ class Fields extends jni.JObject { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory Fields() { - return Fields.fromReference(_id_new0(_class, referenceType, [])); + return Fields.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } } @@ -3710,10 +5287,24 @@ class Fields_Nested extends jni.JObject { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory Fields_Nested() { - return Fields_Nested.fromReference(_id_new0(_class, referenceType, [])); + return Fields_Nested.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } } @@ -3778,6 +5369,18 @@ class GenericTypeParams<$S extends jni.JObject, $K extends jni.JObject> r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory GenericTypeParams({ @@ -3785,7 +5388,10 @@ class GenericTypeParams<$S extends jni.JObject, $K extends jni.JObject> required jni.JObjType<$K> K, }) { return GenericTypeParams.fromReference( - S, K, _id_new0(_class, referenceType, [])); + S, + K, + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } } @@ -3843,10 +5449,24 @@ class StringMap extends StringKeyedMap { r"()V", ); + static final _new0 = ProtectedJniExtensions.lookup< + ffi.NativeFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>>("globalEnv_NewObject") + .asFunction< + jni.JniResult Function( + ffi.Pointer, + jni.JMethodIDPtr, + )>(); + /// from: public void () /// The returned object must be released after use, by calling the [release] method. factory StringMap() { - return StringMap.fromReference(_id_new0(_class, referenceType, [])); + return StringMap.fromReference( + _new0(_class.reference.pointer, _id_new0 as jni.JMethodIDPtr) + .reference); } } diff --git a/pkgs/jnigen/test/simple_package_test/c_based/c_bindings/.clang-format b/pkgs/jnigen/test/simple_package_test/c_based/c_bindings/.clang-format deleted file mode 100644 index a256c2f09..000000000 --- a/pkgs/jnigen/test/simple_package_test/c_based/c_bindings/.clang-format +++ /dev/null @@ -1,15 +0,0 @@ -# From dart SDK: https://github.com/dart-lang/sdk/blob/main/.clang-format - -# Defines the Chromium style for automatic reformatting. -# http://clang.llvm.org/docs/ClangFormatStyleOptions.html -BasedOnStyle: Chromium - -# clang-format doesn't seem to do a good job of this for longer comments. -ReflowComments: 'false' - -# We have lots of these. Though we need to put them all in curly braces, -# clang-format can't do that. -AllowShortIfStatementsOnASingleLine: 'true' - -# Put escaped newlines into the rightmost column. -AlignEscapedNewlinesLeft: false diff --git a/pkgs/jnigen/test/simple_package_test/c_based/c_bindings/CMakeLists.txt b/pkgs/jnigen/test/simple_package_test/c_based/c_bindings/CMakeLists.txt deleted file mode 100644 index eeb352dc0..000000000 --- a/pkgs/jnigen/test/simple_package_test/c_based/c_bindings/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -# jni_native_build (Build with jni:setup. Do not delete this line.) - -# The Flutter tooling requires that developers have CMake 3.10 or later -# installed. You should not increase this version, as doing so will cause -# the plugin to fail to compile for some customers of the plugin. -cmake_minimum_required(VERSION 3.10) - -project(simple_package VERSION 0.0.1 LANGUAGES C) - -add_library(simple_package SHARED - "./simple_package.c" -) - -set_target_properties(simple_package PROPERTIES - OUTPUT_NAME "simple_package" -) - -target_compile_definitions(simple_package PUBLIC DART_SHARED_LIB) - -if(WIN32) - set_target_properties(${TARGET_NAME} PROPERTIES - LINK_FLAGS "/DELAYLOAD:jvm.dll") -endif() - -if (ANDROID) - target_link_libraries(simple_package log) -else() - find_package(Java REQUIRED) - find_package(JNI REQUIRED) - include_directories(${JNI_INCLUDE_DIRS}) - target_link_libraries(simple_package ${JNI_LIBRARIES}) -endif() diff --git a/pkgs/jnigen/test/simple_package_test/c_based/c_bindings/dartjni.h b/pkgs/jnigen/test/simple_package_test/c_based/c_bindings/dartjni.h deleted file mode 100644 index f834d1577..000000000 --- a/pkgs/jnigen/test/simple_package_test/c_based/c_bindings/dartjni.h +++ /dev/null @@ -1,383 +0,0 @@ -// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -#pragma once - -// Note: include appropriate system jni.h as found by CMake, not third_party/jni.h. -#include -#include -#include -#include - -#if _WIN32 -#include -#else -#include -#include -#endif - -#if _WIN32 -#define FFI_PLUGIN_EXPORT __declspec(dllexport) -#else -#define FFI_PLUGIN_EXPORT -#endif - -#if defined _WIN32 -#define thread_local __declspec(thread) -#else -#define thread_local __thread -#endif - -#ifdef __ANDROID__ -#include -#endif - -#ifdef __ANDROID__ -#define __ENVP_CAST (JNIEnv**) -#else -#define __ENVP_CAST (void**) -#endif - -/// Locking functions for windows and pthread. - -#if defined _WIN32 -#include - -typedef CRITICAL_SECTION MutexLock; -typedef CONDITION_VARIABLE ConditionVariable; - -static inline void init_lock(MutexLock* lock) { - InitializeCriticalSection(lock); -} - -static inline void acquire_lock(MutexLock* lock) { - EnterCriticalSection(lock); -} - -static inline void release_lock(MutexLock* lock) { - LeaveCriticalSection(lock); -} - -static inline void destroy_lock(MutexLock* lock) { - DeleteCriticalSection(lock); -} - -static inline void init_cond(ConditionVariable* cond) { - InitializeConditionVariable(cond); -} - -static inline void signal_cond(ConditionVariable* cond) { - WakeConditionVariable(cond); -} - -static inline void wait_for(ConditionVariable* cond, MutexLock* lock) { - SleepConditionVariableCS(cond, lock, INFINITE); -} - -static inline void destroy_cond(ConditionVariable* cond) { - // Not available. -} - -static inline void free_mem(void* mem) { - CoTaskMemFree(mem); -} - -#elif defined __APPLE__ || defined __LINUX__ || defined __ANDROID__ || \ - defined __GNUC__ -#include - -typedef pthread_mutex_t MutexLock; -typedef pthread_cond_t ConditionVariable; - -static inline void init_lock(MutexLock* lock) { - pthread_mutex_init(lock, NULL); -} - -static inline void acquire_lock(MutexLock* lock) { - pthread_mutex_lock(lock); -} - -static inline void release_lock(MutexLock* lock) { - pthread_mutex_unlock(lock); -} - -static inline void destroy_lock(MutexLock* lock) { - pthread_mutex_destroy(lock); -} - -static inline void init_cond(ConditionVariable* cond) { - pthread_cond_init(cond, NULL); -} - -static inline void signal_cond(ConditionVariable* cond) { - pthread_cond_signal(cond); -} - -static inline void wait_for(ConditionVariable* cond, MutexLock* lock) { - pthread_cond_wait(cond, lock); -} - -static inline void destroy_cond(ConditionVariable* cond) { - pthread_cond_destroy(cond); -} - -static inline void free_mem(void* mem) { - free(mem); -} - -#else - -#error "No locking/condition variable support; Possibly unsupported platform" - -#endif - -typedef struct CallbackResult { - MutexLock lock; - ConditionVariable cond; - int ready; - jobject object; -} CallbackResult; - -typedef struct JniLocks { - MutexLock classLoadingLock; -} JniLocks; - -/// Represents the error when dart-jni layer has already spawned singleton VM. -#define DART_JNI_SINGLETON_EXISTS (-99); - -/// Stores the global state of the JNI. -typedef struct JniContext { - JavaVM* jvm; - jobject classLoader; - jmethodID loadClassMethod; - jobject currentActivity; - jobject appContext; - JniLocks locks; -} JniContext; - -// jniEnv for this thread, used by inline functions in this header, -// therefore declared as extern. -extern thread_local JNIEnv* jniEnv; - -extern JniContext* jni; - -/// Types used by JNI API to distinguish between primitive types. -enum JniType { - booleanType = 0, - byteType = 1, - shortType = 2, - charType = 3, - intType = 4, - longType = 5, - floatType = 6, - doubleType = 7, - objectType = 8, - voidType = 9, -}; - -/// Result type for use by JNI. -/// -/// If [exception] is null, it means the result is valid. -/// It's assumed that the caller knows the expected type in [result]. -typedef struct JniResult { - jvalue value; - jthrowable exception; -} JniResult; - -/// Similar to [JniResult] but for class lookups. -typedef struct JniClassLookupResult { - jclass value; - jthrowable exception; -} JniClassLookupResult; - -/// Similar to [JniResult] but for method/field ID lookups. -typedef struct JniPointerResult { - const void* value; - jthrowable exception; -} JniPointerResult; - -/// JniExceptionDetails holds 2 jstring objects, one is the result of -/// calling `toString` on exception object, other is stack trace; -typedef struct JniExceptionDetails { - jstring message; - jstring stacktrace; -} JniExceptionDetails; - -/// This struct contains functions which wrap method call / field access conveniently along with -/// exception checking. -/// -/// Flutter embedding checks for pending JNI exceptions before an FFI transition, which requires us -/// to check for and clear the exception before returning to dart code, which requires these functions -/// to return result types. -typedef struct JniAccessorsStruct { - JniClassLookupResult (*getClass)(char* internalName); - JniPointerResult (*getFieldID)(jclass cls, char* fieldName, char* signature); - JniPointerResult (*getStaticFieldID)(jclass cls, - char* fieldName, - char* signature); - JniPointerResult (*getMethodID)(jclass cls, - char* methodName, - char* signature); - JniPointerResult (*getStaticMethodID)(jclass cls, - char* methodName, - char* signature); - JniResult (*newObject)(jclass cls, jmethodID ctor, jvalue* args); - JniResult (*newPrimitiveArray)(jsize length, int type); - JniResult (*newObjectArray)(jsize length, - jclass elementClass, - jobject initialElement); - JniResult (*getArrayElement)(jarray array, int index, int type); - JniResult (*callMethod)(jobject obj, - jmethodID methodID, - int callType, - jvalue* args); - JniResult (*callStaticMethod)(jclass cls, - jmethodID methodID, - int callType, - jvalue* args); - JniResult (*getField)(jobject obj, jfieldID fieldID, int callType); - JniResult (*getStaticField)(jclass cls, jfieldID fieldID, int callType); - JniExceptionDetails (*getExceptionDetails)(jthrowable exception); -} JniAccessorsStruct; - -FFI_PLUGIN_EXPORT JniAccessorsStruct* GetAccessors(); - -FFI_PLUGIN_EXPORT JavaVM* GetJavaVM(void); - -FFI_PLUGIN_EXPORT JNIEnv* GetJniEnv(void); - -/// Spawn a JVM with given arguments. -/// -/// Returns JNI_OK on success, and one of the documented JNI error codes on -/// failure. It returns DART_JNI_SINGLETON_EXISTS if an attempt to spawn multiple -/// JVMs is made, even if the underlying API potentially supports multiple VMs. -FFI_PLUGIN_EXPORT int SpawnJvm(JavaVMInitArgs* args); - -/// Returns Application classLoader (on Android), -/// which can be used to load application and platform classes. -/// -/// On other platforms, NULL is returned. -FFI_PLUGIN_EXPORT jobject GetClassLoader(void); - -/// Returns application context on Android. -/// -/// On other platforms, NULL is returned. -FFI_PLUGIN_EXPORT jobject GetApplicationContext(void); - -/// Returns current activity of the app on Android. -FFI_PLUGIN_EXPORT jobject GetCurrentActivity(void); - -static inline void attach_thread() { - if (jniEnv == NULL) { - (*jni->jvm)->AttachCurrentThread(jni->jvm, __ENVP_CAST & jniEnv, NULL); - } -} - -/// Load class into [cls] using platform specific mechanism -static inline void load_class_platform(jclass* cls, const char* name) { -#ifdef __ANDROID__ - jstring className = (*jniEnv)->NewStringUTF(jniEnv, name); - *cls = (*jniEnv)->CallObjectMethod(jniEnv, jni->classLoader, - jni->loadClassMethod, className); - (*jniEnv)->DeleteLocalRef(jniEnv, className); -#else - *cls = (*jniEnv)->FindClass(jniEnv, name); -#endif -} - -static inline void load_class_global_ref(jclass* cls, const char* name) { - if (*cls == NULL) { - jclass tmp = NULL; - acquire_lock(&jni->locks.classLoadingLock); - if (*cls == NULL) { - load_class_platform(&tmp, name); - if (!(*jniEnv)->ExceptionCheck(jniEnv)) { - *cls = (*jniEnv)->NewGlobalRef(jniEnv, tmp); - (*jniEnv)->DeleteLocalRef(jniEnv, tmp); - } - } - release_lock(&jni->locks.classLoadingLock); - } -} - -static inline void load_method(jclass cls, - jmethodID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetMethodID(jniEnv, cls, name, sig); - } -} - -static inline void load_static_method(jclass cls, - jmethodID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetStaticMethodID(jniEnv, cls, name, sig); - } -} - -static inline void load_field(jclass cls, - jfieldID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetFieldID(jniEnv, cls, name, sig); - } -} - -static inline void load_static_field(jclass cls, - jfieldID* res, - const char* name, - const char* sig) { - if (*res == NULL) { - *res = (*jniEnv)->GetStaticFieldID(jniEnv, cls, name, sig); - } -} - -static inline jobject to_global_ref(jobject ref) { - jobject g = (*jniEnv)->NewGlobalRef(jniEnv, ref); - (*jniEnv)->DeleteLocalRef(jniEnv, ref); - return g; -} - -// These functions are useful for C+Dart bindings, and not required for pure dart bindings. - -FFI_PLUGIN_EXPORT JniContext* GetJniContextPtr(); - -/// For use by jni_gen's generated code -/// don't use these. - -// these 2 fn ptr vars will be defined by generated code library -extern JniContext* (*context_getter)(void); -extern JNIEnv* (*env_getter)(void); - -// this function will be exported by generated code library -// it will set above 2 variables. -FFI_PLUGIN_EXPORT void setJniGetters(struct JniContext* (*cg)(void), - JNIEnv* (*eg)(void)); - -static inline void load_env() { - if (jniEnv == NULL) { - jni = context_getter(); - jniEnv = env_getter(); - } -} - -static inline jthrowable check_exception() { - jthrowable exception = (*jniEnv)->ExceptionOccurred(jniEnv); - if (exception != NULL) (*jniEnv)->ExceptionClear(jniEnv); - if (exception == NULL) return NULL; - return to_global_ref(exception); -} - -static inline JniResult to_global_ref_result(jobject ref) { - JniResult result; - result.exception = check_exception(); - if (result.exception == NULL) { - result.value.l = to_global_ref(ref); - } - return result; -} diff --git a/pkgs/jnigen/test/simple_package_test/c_based/c_bindings/simple_package.c b/pkgs/jnigen/test/simple_package_test/c_based/c_bindings/simple_package.c deleted file mode 100644 index 54d6b884d..000000000 --- a/pkgs/jnigen/test/simple_package_test/c_based/c_bindings/simple_package.c +++ /dev/null @@ -1,2991 +0,0 @@ -// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -// Autogenerated by jnigen. DO NOT EDIT! - -#include -#include "dartjni.h" -#include "jni.h" - -thread_local JNIEnv* jniEnv; -JniContext* jni; - -JniContext* (*context_getter)(void); -JNIEnv* (*env_getter)(void); - -void setJniGetters(JniContext* (*cg)(void), JNIEnv* (*eg)(void)) { - context_getter = cg; - env_getter = eg; -} - -// com.github.dart_lang.jnigen.simple_package.Example$Nested$NestedTwice -jclass _c_Example_Nested_NestedTwice = NULL; - -jmethodID _m_Example_Nested_NestedTwice__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example_Nested_NestedTwice__new0() { - load_env(); - load_class_global_ref( - &_c_Example_Nested_NestedTwice, - "com/github/dart_lang/jnigen/simple_package/Example$Nested$NestedTwice"); - if (_c_Example_Nested_NestedTwice == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example_Nested_NestedTwice, - &_m_Example_Nested_NestedTwice__new0, "", "()V"); - if (_m_Example_Nested_NestedTwice__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_Example_Nested_NestedTwice, - _m_Example_Nested_NestedTwice__new0); - return to_global_ref_result(_result); -} - -jfieldID _f_Example_Nested_NestedTwice__ZERO = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Example_Nested_NestedTwice__ZERO() { - load_env(); - load_class_global_ref( - &_c_Example_Nested_NestedTwice, - "com/github/dart_lang/jnigen/simple_package/Example$Nested$NestedTwice"); - if (_c_Example_Nested_NestedTwice == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Example_Nested_NestedTwice, - &_f_Example_Nested_NestedTwice__ZERO, "ZERO", "I"); - int32_t _result = - (*jniEnv)->GetStaticIntField(jniEnv, _c_Example_Nested_NestedTwice, - _f_Example_Nested_NestedTwice__ZERO); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -FFI_PLUGIN_EXPORT -JniResult set_Example_Nested_NestedTwice__ZERO(int32_t value) { - load_env(); - load_class_global_ref( - &_c_Example_Nested_NestedTwice, - "com/github/dart_lang/jnigen/simple_package/Example$Nested$NestedTwice"); - if (_c_Example_Nested_NestedTwice == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Example_Nested_NestedTwice, - &_f_Example_Nested_NestedTwice__ZERO, "ZERO", "I"); - (*jniEnv)->SetStaticIntField(jniEnv, _c_Example_Nested_NestedTwice, - _f_Example_Nested_NestedTwice__ZERO, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.simple_package.Example$Nested -jclass _c_Example_Nested = NULL; - -jmethodID _m_Example_Nested__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example_Nested__new0(uint8_t value) { - load_env(); - load_class_global_ref( - &_c_Example_Nested, - "com/github/dart_lang/jnigen/simple_package/Example$Nested"); - if (_c_Example_Nested == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example_Nested, &_m_Example_Nested__new0, "", "(Z)V"); - if (_m_Example_Nested__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_Example_Nested, - _m_Example_Nested__new0, value); - return to_global_ref_result(_result); -} - -jmethodID _m_Example_Nested__usesAnonymousInnerClass = NULL; -FFI_PLUGIN_EXPORT -JniResult Example_Nested__usesAnonymousInnerClass(jobject self_) { - load_env(); - load_class_global_ref( - &_c_Example_Nested, - "com/github/dart_lang/jnigen/simple_package/Example$Nested"); - if (_c_Example_Nested == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example_Nested, &_m_Example_Nested__usesAnonymousInnerClass, - "usesAnonymousInnerClass", "()V"); - if (_m_Example_Nested__usesAnonymousInnerClass == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_Example_Nested__usesAnonymousInnerClass); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example_Nested__getValue = NULL; -FFI_PLUGIN_EXPORT -JniResult Example_Nested__getValue(jobject self_) { - load_env(); - load_class_global_ref( - &_c_Example_Nested, - "com/github/dart_lang/jnigen/simple_package/Example$Nested"); - if (_c_Example_Nested == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example_Nested, &_m_Example_Nested__getValue, "getValue", - "()Z"); - if (_m_Example_Nested__getValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_Example_Nested__getValue); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_Example_Nested__setValue = NULL; -FFI_PLUGIN_EXPORT -JniResult Example_Nested__setValue(jobject self_, uint8_t value) { - load_env(); - load_class_global_ref( - &_c_Example_Nested, - "com/github/dart_lang/jnigen/simple_package/Example$Nested"); - if (_c_Example_Nested == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example_Nested, &_m_Example_Nested__setValue, "setValue", - "(Z)V"); - if (_m_Example_Nested__setValue == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_Example_Nested__setValue, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.simple_package.Example$NonStaticNested -jclass _c_Example_NonStaticNested = NULL; - -jmethodID _m_Example_NonStaticNested__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example_NonStaticNested__new0(jobject _parent) { - load_env(); - load_class_global_ref( - &_c_Example_NonStaticNested, - "com/github/dart_lang/jnigen/simple_package/Example$NonStaticNested"); - if (_c_Example_NonStaticNested == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example_NonStaticNested, &_m_Example_NonStaticNested__new0, - "", - "(Lcom/github/dart_lang/jnigen/simple_package/Example;)V"); - if (_m_Example_NonStaticNested__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_Example_NonStaticNested, - _m_Example_NonStaticNested__new0, _parent); - return to_global_ref_result(_result); -} - -jfieldID _f_Example_NonStaticNested__ok = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Example_NonStaticNested__ok(jobject self_) { - load_env(); - load_class_global_ref( - &_c_Example_NonStaticNested, - "com/github/dart_lang/jnigen/simple_package/Example$NonStaticNested"); - if (_c_Example_NonStaticNested == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Example_NonStaticNested, &_f_Example_NonStaticNested__ok, "ok", - "Z"); - uint8_t _result = - (*jniEnv)->GetBooleanField(jniEnv, self_, _f_Example_NonStaticNested__ok); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -FFI_PLUGIN_EXPORT -JniResult set_Example_NonStaticNested__ok(jobject self_, uint8_t value) { - load_env(); - load_class_global_ref( - &_c_Example_NonStaticNested, - "com/github/dart_lang/jnigen/simple_package/Example$NonStaticNested"); - if (_c_Example_NonStaticNested == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Example_NonStaticNested, &_f_Example_NonStaticNested__ok, "ok", - "Z"); - (*jniEnv)->SetBooleanField(jniEnv, self_, _f_Example_NonStaticNested__ok, - value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.simple_package.Example -jclass _c_Example = NULL; - -jmethodID _m_Example__getAmount = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__getAmount() { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Example, &_m_Example__getAmount, "getAmount", "()I"); - if (_m_Example__getAmount == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallStaticIntMethod(jniEnv, _c_Example, _m_Example__getAmount); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_Example__getPi = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__getPi() { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Example, &_m_Example__getPi, "getPi", "()D"); - if (_m_Example__getPi == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - double _result = - (*jniEnv)->CallStaticDoubleMethod(jniEnv, _c_Example, _m_Example__getPi); - return (JniResult){.value = {.d = _result}, .exception = check_exception()}; -} - -jmethodID _m_Example__getAsterisk = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__getAsterisk() { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Example, &_m_Example__getAsterisk, "getAsterisk", - "()C"); - if (_m_Example__getAsterisk == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint16_t _result = (*jniEnv)->CallStaticCharMethod(jniEnv, _c_Example, - _m_Example__getAsterisk); - return (JniResult){.value = {.c = _result}, .exception = check_exception()}; -} - -jmethodID _m_Example__getName = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__getName() { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Example, &_m_Example__getName, "getName", - "()Ljava/lang/String;"); - if (_m_Example__getName == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod(jniEnv, _c_Example, - _m_Example__getName); - return to_global_ref_result(_result); -} - -jmethodID _m_Example__getNestedInstance = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__getNestedInstance() { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_Example, &_m_Example__getNestedInstance, "getNestedInstance", - "()Lcom/github/dart_lang/jnigen/simple_package/Example$Nested;"); - if (_m_Example__getNestedInstance == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_Example, _m_Example__getNestedInstance); - return to_global_ref_result(_result); -} - -jmethodID _m_Example__setAmount = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__setAmount(int32_t newAmount) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Example, &_m_Example__setAmount, "setAmount", "(I)V"); - if (_m_Example__setAmount == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallStaticVoidMethod(jniEnv, _c_Example, _m_Example__setAmount, - newAmount); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example__setName = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__setName(jobject newName) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Example, &_m_Example__setName, "setName", - "(Ljava/lang/String;)V"); - if (_m_Example__setName == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallStaticVoidMethod(jniEnv, _c_Example, _m_Example__setName, - newName); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example__setNestedInstance = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__setNestedInstance(jobject newNested) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_Example, &_m_Example__setNestedInstance, "setNestedInstance", - "(Lcom/github/dart_lang/jnigen/simple_package/Example$Nested;)V"); - if (_m_Example__setNestedInstance == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallStaticVoidMethod(jniEnv, _c_Example, - _m_Example__setNestedInstance, newNested); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example__max4 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__max4(int32_t a, int32_t b, int32_t c, int32_t d) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Example, &_m_Example__max4, "max4", "(IIII)I"); - if (_m_Example__max4 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallStaticIntMethod( - jniEnv, _c_Example, _m_Example__max4, a, b, c, d); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_Example__max8 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__max8(int32_t a, - int32_t b, - int32_t c, - int32_t d, - int32_t e, - int32_t f, - int32_t g, - int32_t h) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Example, &_m_Example__max8, "max8", "(IIIIIIII)I"); - if (_m_Example__max8 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallStaticIntMethod( - jniEnv, _c_Example, _m_Example__max8, a, b, c, d, e, f, g, h); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_Example__getNumber = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__getNumber(jobject self_) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__getNumber, "getNumber", "()I"); - if (_m_Example__getNumber == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_Example__getNumber); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_Example__setNumber = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__setNumber(jobject self_, int32_t number) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__setNumber, "setNumber", "(I)V"); - if (_m_Example__setNumber == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_Example__setNumber, number); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example__getIsUp = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__getIsUp(jobject self_) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__getIsUp, "getIsUp", "()Z"); - if (_m_Example__getIsUp == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - uint8_t _result = - (*jniEnv)->CallBooleanMethod(jniEnv, self_, _m_Example__getIsUp); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -jmethodID _m_Example__setUp = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__setUp(jobject self_, uint8_t isUp) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__setUp, "setUp", "(Z)V"); - if (_m_Example__setUp == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_Example__setUp, isUp); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example__getCodename = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__getCodename(jobject self_) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__getCodename, "getCodename", - "()Ljava/lang/String;"); - if (_m_Example__getCodename == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_Example__getCodename); - return to_global_ref_result(_result); -} - -jmethodID _m_Example__setCodename = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__setCodename(jobject self_, jobject codename) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__setCodename, "setCodename", - "(Ljava/lang/String;)V"); - if (_m_Example__setCodename == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_Example__setCodename, codename); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example__getRandom = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__getRandom(jobject self_) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__getRandom, "getRandom", - "()Ljava/util/Random;"); - if (_m_Example__getRandom == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_Example__getRandom); - return to_global_ref_result(_result); -} - -jmethodID _m_Example__setRandom = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__setRandom(jobject self_, jobject random) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__setRandom, "setRandom", - "(Ljava/util/Random;)V"); - if (_m_Example__setRandom == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_Example__setRandom, random); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example__getRandomLong = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__getRandomLong(jobject self_) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__getRandomLong, "getRandomLong", "()J"); - if (_m_Example__getRandomLong == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int64_t _result = - (*jniEnv)->CallLongMethod(jniEnv, self_, _m_Example__getRandomLong); - return (JniResult){.value = {.j = _result}, .exception = check_exception()}; -} - -jmethodID _m_Example__add4Longs = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__add4Longs(jobject self_, - int64_t a, - int64_t b, - int64_t c, - int64_t d) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__add4Longs, "add4Longs", "(JJJJ)J"); - if (_m_Example__add4Longs == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int64_t _result = (*jniEnv)->CallLongMethod( - jniEnv, self_, _m_Example__add4Longs, a, b, c, d); - return (JniResult){.value = {.j = _result}, .exception = check_exception()}; -} - -jmethodID _m_Example__add8Longs = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__add8Longs(jobject self_, - int64_t a, - int64_t b, - int64_t c, - int64_t d, - int64_t e, - int64_t f, - int64_t g, - int64_t h) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__add8Longs, "add8Longs", "(JJJJJJJJ)J"); - if (_m_Example__add8Longs == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int64_t _result = (*jniEnv)->CallLongMethod( - jniEnv, self_, _m_Example__add8Longs, a, b, c, d, e, f, g, h); - return (JniResult){.value = {.j = _result}, .exception = check_exception()}; -} - -jmethodID _m_Example__getRandomNumericString = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__getRandomNumericString(jobject self_, jobject random) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__getRandomNumericString, - "getRandomNumericString", - "(Ljava/util/Random;)Ljava/lang/String;"); - if (_m_Example__getRandomNumericString == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_Example__getRandomNumericString, random); - return to_global_ref_result(_result); -} - -jmethodID _m_Example__protectedMethod = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__protectedMethod(jobject self_, jobject a, jobject b) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__protectedMethod, "protectedMethod", - "(Ljava/lang/String;Ljava/lang/String;)V"); - if (_m_Example__protectedMethod == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_Example__protectedMethod, a, b); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example__finalMethod = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__finalMethod(jobject self_) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__finalMethod, "finalMethod", "()V"); - if (_m_Example__finalMethod == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_Example__finalMethod); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example__getList = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__getList(jobject self_) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__getList, "getList", - "()Ljava/util/List;"); - if (_m_Example__getList == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_Example__getList); - return to_global_ref_result(_result); -} - -jmethodID _m_Example__joinStrings = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__joinStrings(jobject self_, jobject values, jobject delim) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__joinStrings, "joinStrings", - "(Ljava/util/List;Ljava/lang/String;)Ljava/lang/String;"); - if (_m_Example__joinStrings == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_Example__joinStrings, values, delim); - return to_global_ref_result(_result); -} - -jmethodID _m_Example__methodWithSeveralParams = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__methodWithSeveralParams(jobject self_, - uint16_t ch, - jobject s, - jobject a, - jobject t, - jobject lt, - jobject wm) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__methodWithSeveralParams, - "methodWithSeveralParams", - "(CLjava/lang/String;[ILjava/lang/CharSequence;Ljava/util/" - "List;Ljava/util/Map;)V"); - if (_m_Example__methodWithSeveralParams == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_Example__methodWithSeveralParams, - ch, s, a, t, lt, wm); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__new0() { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__new0, "", "()V"); - if (_m_Example__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_Example, _m_Example__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_Example__new1 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__new1(int32_t number) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__new1, "", "(I)V"); - if (_m_Example__new1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_Example, _m_Example__new1, number); - return to_global_ref_result(_result); -} - -jmethodID _m_Example__new2 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__new2(int32_t number, uint8_t isUp) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__new2, "", "(IZ)V"); - if (_m_Example__new2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_Example, _m_Example__new2, number, isUp); - return to_global_ref_result(_result); -} - -jmethodID _m_Example__new3 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__new3(int32_t number, uint8_t isUp, jobject codename) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__new3, "", - "(IZLjava/lang/String;)V"); - if (_m_Example__new3 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_Example, _m_Example__new3, - number, isUp, codename); - return to_global_ref_result(_result); -} - -jmethodID _m_Example__new4 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__new4(int32_t a, - int32_t b, - int32_t c, - int32_t d, - int32_t e, - int32_t f, - int32_t g, - int32_t h) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__new4, "", "(IIIIIIII)V"); - if (_m_Example__new4 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_Example, _m_Example__new4, - a, b, c, d, e, f, g, h); - return to_global_ref_result(_result); -} - -jmethodID _m_Example__whichExample = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__whichExample(jobject self_) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__whichExample, "whichExample", "()I"); - if (_m_Example__whichExample == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_Example__whichExample); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_Example__addInts = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__addInts(int32_t a, int32_t b) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Example, &_m_Example__addInts, "addInts", "(II)I"); - if (_m_Example__addInts == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallStaticIntMethod(jniEnv, _c_Example, - _m_Example__addInts, a, b); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_Example__getArr = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__getArr() { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Example, &_m_Example__getArr, "getArr", "()[I"); - if (_m_Example__getArr == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallStaticObjectMethod(jniEnv, _c_Example, _m_Example__getArr); - return to_global_ref_result(_result); -} - -jmethodID _m_Example__addAll = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__addAll(jobject arr) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Example, &_m_Example__addAll, "addAll", "([I)I"); - if (_m_Example__addAll == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallStaticIntMethod(jniEnv, _c_Example, - _m_Example__addAll, arr); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_Example__getSelf = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__getSelf(jobject self_) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__getSelf, "getSelf", - "()Lcom/github/dart_lang/jnigen/simple_package/Example;"); - if (_m_Example__getSelf == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_Example__getSelf); - return to_global_ref_result(_result); -} - -jmethodID _m_Example__throwException = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__throwException() { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Example, &_m_Example__throwException, "throwException", - "()V"); - if (_m_Example__throwException == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallStaticVoidMethod(jniEnv, _c_Example, - _m_Example__throwException); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example__overloaded = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__overloaded(jobject self_) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__overloaded, "overloaded", "()V"); - if (_m_Example__overloaded == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_Example__overloaded); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example__overloaded1 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__overloaded1(jobject self_, int32_t a, jobject b) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__overloaded1, "overloaded", - "(ILjava/lang/String;)V"); - if (_m_Example__overloaded1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_Example__overloaded1, a, b); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example__overloaded2 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__overloaded2(jobject self_, int32_t a) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__overloaded2, "overloaded", "(I)V"); - if (_m_Example__overloaded2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_Example__overloaded2, a); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example__overloaded3 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__overloaded3(jobject self_, jobject a, jobject b) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__overloaded3, "overloaded", - "(Ljava/util/List;Ljava/lang/String;)V"); - if (_m_Example__overloaded3 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_Example__overloaded3, a, b); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_Example__overloaded4 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example__overloaded4(jobject self_, jobject a) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example, &_m_Example__overloaded4, "overloaded", - "(Ljava/util/List;)V"); - if (_m_Example__overloaded4 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_Example__overloaded4, a); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_Example__SEMICOLON_STRING = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Example__SEMICOLON_STRING() { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Example, &_f_Example__SEMICOLON_STRING, - "SEMICOLON_STRING", "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField( - jniEnv, _c_Example, _f_Example__SEMICOLON_STRING); - return to_global_ref_result(_result); -} - -jfieldID _f_Example__unusedRandom = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Example__unusedRandom() { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Example, &_f_Example__unusedRandom, "unusedRandom", - "Ljava/util/Random;"); - jobject _result = (*jniEnv)->GetStaticObjectField(jniEnv, _c_Example, - _f_Example__unusedRandom); - return to_global_ref_result(_result); -} - -jfieldID _f_Example__protectedField = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Example__protectedField(jobject self_) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Example, &_f_Example__protectedField, "protectedField", - "Ljava/util/Random;"); - jobject _result = - (*jniEnv)->GetObjectField(jniEnv, self_, _f_Example__protectedField); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_Example__protectedField(jobject self_, jobject value) { - load_env(); - load_class_global_ref(&_c_Example, - "com/github/dart_lang/jnigen/simple_package/Example"); - if (_c_Example == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Example, &_f_Example__protectedField, "protectedField", - "Ljava/util/Random;"); - (*jniEnv)->SetObjectField(jniEnv, self_, _f_Example__protectedField, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.pkg2.C2 -jclass _c_C2 = NULL; - -jmethodID _m_C2__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult C2__new0() { - load_env(); - load_class_global_ref(&_c_C2, "com/github/dart_lang/jnigen/pkg2/C2"); - if (_c_C2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_C2, &_m_C2__new0, "", "()V"); - if (_m_C2__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_C2, _m_C2__new0); - return to_global_ref_result(_result); -} - -jfieldID _f_C2__CONSTANT = NULL; -FFI_PLUGIN_EXPORT -JniResult get_C2__CONSTANT() { - load_env(); - load_class_global_ref(&_c_C2, "com/github/dart_lang/jnigen/pkg2/C2"); - if (_c_C2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_C2, &_f_C2__CONSTANT, "CONSTANT", "I"); - int32_t _result = - (*jniEnv)->GetStaticIntField(jniEnv, _c_C2, _f_C2__CONSTANT); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -FFI_PLUGIN_EXPORT -JniResult set_C2__CONSTANT(int32_t value) { - load_env(); - load_class_global_ref(&_c_C2, "com/github/dart_lang/jnigen/pkg2/C2"); - if (_c_C2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_C2, &_f_C2__CONSTANT, "CONSTANT", "I"); - (*jniEnv)->SetStaticIntField(jniEnv, _c_C2, _f_C2__CONSTANT, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.pkg2.Example -jclass _c_Example1 = NULL; - -jmethodID _m_Example1__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult Example1__new0() { - load_env(); - load_class_global_ref(&_c_Example1, - "com/github/dart_lang/jnigen/pkg2/Example"); - if (_c_Example1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example1, &_m_Example1__new0, "", "()V"); - if (_m_Example1__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_Example1, _m_Example1__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_Example1__whichExample = NULL; -FFI_PLUGIN_EXPORT -JniResult Example1__whichExample(jobject self_) { - load_env(); - load_class_global_ref(&_c_Example1, - "com/github/dart_lang/jnigen/pkg2/Example"); - if (_c_Example1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Example1, &_m_Example1__whichExample, "whichExample", "()I"); - if (_m_Example1__whichExample == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_Example1__whichExample); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.generics.GrandParent$Parent$Child -jclass _c_GrandParent_Parent_Child = NULL; - -jmethodID _m_GrandParent_Parent_Child__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult GrandParent_Parent_Child__new0(jobject _parent, jobject newValue) { - load_env(); - load_class_global_ref( - &_c_GrandParent_Parent_Child, - "com/github/dart_lang/jnigen/generics/GrandParent$Parent$Child"); - if (_c_GrandParent_Parent_Child == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_GrandParent_Parent_Child, &_m_GrandParent_Parent_Child__new0, - "", - "(Lcom/github/dart_lang/jnigen/generics/GrandParent$Parent;Ljava/" - "lang/Object;)V"); - if (_m_GrandParent_Parent_Child__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_GrandParent_Parent_Child, - _m_GrandParent_Parent_Child__new0, - _parent, newValue); - return to_global_ref_result(_result); -} - -jfieldID _f_GrandParent_Parent_Child__grandParentValue = NULL; -FFI_PLUGIN_EXPORT -JniResult get_GrandParent_Parent_Child__grandParentValue(jobject self_) { - load_env(); - load_class_global_ref( - &_c_GrandParent_Parent_Child, - "com/github/dart_lang/jnigen/generics/GrandParent$Parent$Child"); - if (_c_GrandParent_Parent_Child == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_Parent_Child, - &_f_GrandParent_Parent_Child__grandParentValue, "grandParentValue", - "Ljava/lang/Object;"); - jobject _result = (*jniEnv)->GetObjectField( - jniEnv, self_, _f_GrandParent_Parent_Child__grandParentValue); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_GrandParent_Parent_Child__grandParentValue(jobject self_, - jobject value) { - load_env(); - load_class_global_ref( - &_c_GrandParent_Parent_Child, - "com/github/dart_lang/jnigen/generics/GrandParent$Parent$Child"); - if (_c_GrandParent_Parent_Child == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_Parent_Child, - &_f_GrandParent_Parent_Child__grandParentValue, "grandParentValue", - "Ljava/lang/Object;"); - (*jniEnv)->SetObjectField( - jniEnv, self_, _f_GrandParent_Parent_Child__grandParentValue, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_GrandParent_Parent_Child__parentValue = NULL; -FFI_PLUGIN_EXPORT -JniResult get_GrandParent_Parent_Child__parentValue(jobject self_) { - load_env(); - load_class_global_ref( - &_c_GrandParent_Parent_Child, - "com/github/dart_lang/jnigen/generics/GrandParent$Parent$Child"); - if (_c_GrandParent_Parent_Child == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_Parent_Child, - &_f_GrandParent_Parent_Child__parentValue, "parentValue", - "Ljava/lang/Object;"); - jobject _result = (*jniEnv)->GetObjectField( - jniEnv, self_, _f_GrandParent_Parent_Child__parentValue); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_GrandParent_Parent_Child__parentValue(jobject self_, - jobject value) { - load_env(); - load_class_global_ref( - &_c_GrandParent_Parent_Child, - "com/github/dart_lang/jnigen/generics/GrandParent$Parent$Child"); - if (_c_GrandParent_Parent_Child == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_Parent_Child, - &_f_GrandParent_Parent_Child__parentValue, "parentValue", - "Ljava/lang/Object;"); - (*jniEnv)->SetObjectField(jniEnv, self_, - _f_GrandParent_Parent_Child__parentValue, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_GrandParent_Parent_Child__value = NULL; -FFI_PLUGIN_EXPORT -JniResult get_GrandParent_Parent_Child__value(jobject self_) { - load_env(); - load_class_global_ref( - &_c_GrandParent_Parent_Child, - "com/github/dart_lang/jnigen/generics/GrandParent$Parent$Child"); - if (_c_GrandParent_Parent_Child == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_Parent_Child, &_f_GrandParent_Parent_Child__value, - "value", "Ljava/lang/Object;"); - jobject _result = (*jniEnv)->GetObjectField( - jniEnv, self_, _f_GrandParent_Parent_Child__value); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_GrandParent_Parent_Child__value(jobject self_, jobject value) { - load_env(); - load_class_global_ref( - &_c_GrandParent_Parent_Child, - "com/github/dart_lang/jnigen/generics/GrandParent$Parent$Child"); - if (_c_GrandParent_Parent_Child == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_Parent_Child, &_f_GrandParent_Parent_Child__value, - "value", "Ljava/lang/Object;"); - (*jniEnv)->SetObjectField(jniEnv, self_, _f_GrandParent_Parent_Child__value, - value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.generics.GrandParent$Parent -jclass _c_GrandParent_Parent = NULL; - -jmethodID _m_GrandParent_Parent__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult GrandParent_Parent__new0(jobject _parent, jobject newValue) { - load_env(); - load_class_global_ref( - &_c_GrandParent_Parent, - "com/github/dart_lang/jnigen/generics/GrandParent$Parent"); - if (_c_GrandParent_Parent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_GrandParent_Parent, &_m_GrandParent_Parent__new0, "", - "(Lcom/github/dart_lang/jnigen/generics/GrandParent;Ljava/lang/" - "Object;)V"); - if (_m_GrandParent_Parent__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_GrandParent_Parent, - _m_GrandParent_Parent__new0, _parent, newValue); - return to_global_ref_result(_result); -} - -jfieldID _f_GrandParent_Parent__parentValue = NULL; -FFI_PLUGIN_EXPORT -JniResult get_GrandParent_Parent__parentValue(jobject self_) { - load_env(); - load_class_global_ref( - &_c_GrandParent_Parent, - "com/github/dart_lang/jnigen/generics/GrandParent$Parent"); - if (_c_GrandParent_Parent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_Parent, &_f_GrandParent_Parent__parentValue, - "parentValue", "Ljava/lang/Object;"); - jobject _result = (*jniEnv)->GetObjectField( - jniEnv, self_, _f_GrandParent_Parent__parentValue); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_GrandParent_Parent__parentValue(jobject self_, jobject value) { - load_env(); - load_class_global_ref( - &_c_GrandParent_Parent, - "com/github/dart_lang/jnigen/generics/GrandParent$Parent"); - if (_c_GrandParent_Parent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_Parent, &_f_GrandParent_Parent__parentValue, - "parentValue", "Ljava/lang/Object;"); - (*jniEnv)->SetObjectField(jniEnv, self_, _f_GrandParent_Parent__parentValue, - value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_GrandParent_Parent__value = NULL; -FFI_PLUGIN_EXPORT -JniResult get_GrandParent_Parent__value(jobject self_) { - load_env(); - load_class_global_ref( - &_c_GrandParent_Parent, - "com/github/dart_lang/jnigen/generics/GrandParent$Parent"); - if (_c_GrandParent_Parent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_Parent, &_f_GrandParent_Parent__value, "value", - "Ljava/lang/Object;"); - jobject _result = - (*jniEnv)->GetObjectField(jniEnv, self_, _f_GrandParent_Parent__value); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_GrandParent_Parent__value(jobject self_, jobject value) { - load_env(); - load_class_global_ref( - &_c_GrandParent_Parent, - "com/github/dart_lang/jnigen/generics/GrandParent$Parent"); - if (_c_GrandParent_Parent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_Parent, &_f_GrandParent_Parent__value, "value", - "Ljava/lang/Object;"); - (*jniEnv)->SetObjectField(jniEnv, self_, _f_GrandParent_Parent__value, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.generics.GrandParent$StaticParent$Child -jclass _c_GrandParent_StaticParent_Child = NULL; - -jmethodID _m_GrandParent_StaticParent_Child__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult GrandParent_StaticParent_Child__new0(jobject _parent, - jobject parentValue, - jobject value) { - load_env(); - load_class_global_ref( - &_c_GrandParent_StaticParent_Child, - "com/github/dart_lang/jnigen/generics/GrandParent$StaticParent$Child"); - if (_c_GrandParent_StaticParent_Child == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_GrandParent_StaticParent_Child, - &_m_GrandParent_StaticParent_Child__new0, "", - "(Lcom/github/dart_lang/jnigen/generics/GrandParent$StaticParent;Ljava/" - "lang/Object;Ljava/lang/Object;)V"); - if (_m_GrandParent_StaticParent_Child__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject( - jniEnv, _c_GrandParent_StaticParent_Child, - _m_GrandParent_StaticParent_Child__new0, _parent, parentValue, value); - return to_global_ref_result(_result); -} - -jfieldID _f_GrandParent_StaticParent_Child__parentValue = NULL; -FFI_PLUGIN_EXPORT -JniResult get_GrandParent_StaticParent_Child__parentValue(jobject self_) { - load_env(); - load_class_global_ref( - &_c_GrandParent_StaticParent_Child, - "com/github/dart_lang/jnigen/generics/GrandParent$StaticParent$Child"); - if (_c_GrandParent_StaticParent_Child == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_StaticParent_Child, - &_f_GrandParent_StaticParent_Child__parentValue, "parentValue", - "Ljava/lang/Object;"); - jobject _result = (*jniEnv)->GetObjectField( - jniEnv, self_, _f_GrandParent_StaticParent_Child__parentValue); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_GrandParent_StaticParent_Child__parentValue(jobject self_, - jobject value) { - load_env(); - load_class_global_ref( - &_c_GrandParent_StaticParent_Child, - "com/github/dart_lang/jnigen/generics/GrandParent$StaticParent$Child"); - if (_c_GrandParent_StaticParent_Child == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_StaticParent_Child, - &_f_GrandParent_StaticParent_Child__parentValue, "parentValue", - "Ljava/lang/Object;"); - (*jniEnv)->SetObjectField( - jniEnv, self_, _f_GrandParent_StaticParent_Child__parentValue, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_GrandParent_StaticParent_Child__value = NULL; -FFI_PLUGIN_EXPORT -JniResult get_GrandParent_StaticParent_Child__value(jobject self_) { - load_env(); - load_class_global_ref( - &_c_GrandParent_StaticParent_Child, - "com/github/dart_lang/jnigen/generics/GrandParent$StaticParent$Child"); - if (_c_GrandParent_StaticParent_Child == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_StaticParent_Child, - &_f_GrandParent_StaticParent_Child__value, "value", - "Ljava/lang/Object;"); - jobject _result = (*jniEnv)->GetObjectField( - jniEnv, self_, _f_GrandParent_StaticParent_Child__value); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_GrandParent_StaticParent_Child__value(jobject self_, - jobject value) { - load_env(); - load_class_global_ref( - &_c_GrandParent_StaticParent_Child, - "com/github/dart_lang/jnigen/generics/GrandParent$StaticParent$Child"); - if (_c_GrandParent_StaticParent_Child == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_StaticParent_Child, - &_f_GrandParent_StaticParent_Child__value, "value", - "Ljava/lang/Object;"); - (*jniEnv)->SetObjectField(jniEnv, self_, - _f_GrandParent_StaticParent_Child__value, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.generics.GrandParent$StaticParent -jclass _c_GrandParent_StaticParent = NULL; - -jmethodID _m_GrandParent_StaticParent__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult GrandParent_StaticParent__new0(jobject value) { - load_env(); - load_class_global_ref( - &_c_GrandParent_StaticParent, - "com/github/dart_lang/jnigen/generics/GrandParent$StaticParent"); - if (_c_GrandParent_StaticParent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_GrandParent_StaticParent, &_m_GrandParent_StaticParent__new0, - "", "(Ljava/lang/Object;)V"); - if (_m_GrandParent_StaticParent__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_GrandParent_StaticParent, - _m_GrandParent_StaticParent__new0, value); - return to_global_ref_result(_result); -} - -jfieldID _f_GrandParent_StaticParent__value = NULL; -FFI_PLUGIN_EXPORT -JniResult get_GrandParent_StaticParent__value(jobject self_) { - load_env(); - load_class_global_ref( - &_c_GrandParent_StaticParent, - "com/github/dart_lang/jnigen/generics/GrandParent$StaticParent"); - if (_c_GrandParent_StaticParent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_StaticParent, &_f_GrandParent_StaticParent__value, - "value", "Ljava/lang/Object;"); - jobject _result = (*jniEnv)->GetObjectField( - jniEnv, self_, _f_GrandParent_StaticParent__value); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_GrandParent_StaticParent__value(jobject self_, jobject value) { - load_env(); - load_class_global_ref( - &_c_GrandParent_StaticParent, - "com/github/dart_lang/jnigen/generics/GrandParent$StaticParent"); - if (_c_GrandParent_StaticParent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent_StaticParent, &_f_GrandParent_StaticParent__value, - "value", "Ljava/lang/Object;"); - (*jniEnv)->SetObjectField(jniEnv, self_, _f_GrandParent_StaticParent__value, - value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.generics.GrandParent -jclass _c_GrandParent = NULL; - -jmethodID _m_GrandParent__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult GrandParent__new0(jobject value) { - load_env(); - load_class_global_ref(&_c_GrandParent, - "com/github/dart_lang/jnigen/generics/GrandParent"); - if (_c_GrandParent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_GrandParent, &_m_GrandParent__new0, "", - "(Ljava/lang/Object;)V"); - if (_m_GrandParent__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_GrandParent, _m_GrandParent__new0, value); - return to_global_ref_result(_result); -} - -jmethodID _m_GrandParent__stringParent = NULL; -FFI_PLUGIN_EXPORT -JniResult GrandParent__stringParent(jobject self_) { - load_env(); - load_class_global_ref(&_c_GrandParent, - "com/github/dart_lang/jnigen/generics/GrandParent"); - if (_c_GrandParent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_GrandParent, &_m_GrandParent__stringParent, "stringParent", - "()Lcom/github/dart_lang/jnigen/generics/GrandParent$Parent;"); - if (_m_GrandParent__stringParent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_GrandParent__stringParent); - return to_global_ref_result(_result); -} - -jmethodID _m_GrandParent__varParent = NULL; -FFI_PLUGIN_EXPORT -JniResult GrandParent__varParent(jobject self_, jobject nestedValue) { - load_env(); - load_class_global_ref(&_c_GrandParent, - "com/github/dart_lang/jnigen/generics/GrandParent"); - if (_c_GrandParent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_GrandParent, &_m_GrandParent__varParent, "varParent", - "(Ljava/lang/Object;)Lcom/github/dart_lang/jnigen/generics/" - "GrandParent$Parent;"); - if (_m_GrandParent__varParent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_GrandParent__varParent, nestedValue); - return to_global_ref_result(_result); -} - -jmethodID _m_GrandParent__stringStaticParent = NULL; -FFI_PLUGIN_EXPORT -JniResult GrandParent__stringStaticParent() { - load_env(); - load_class_global_ref(&_c_GrandParent, - "com/github/dart_lang/jnigen/generics/GrandParent"); - if (_c_GrandParent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_GrandParent, &_m_GrandParent__stringStaticParent, "stringStaticParent", - "()Lcom/github/dart_lang/jnigen/generics/GrandParent$StaticParent;"); - if (_m_GrandParent__stringStaticParent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_GrandParent, _m_GrandParent__stringStaticParent); - return to_global_ref_result(_result); -} - -jmethodID _m_GrandParent__varStaticParent = NULL; -FFI_PLUGIN_EXPORT -JniResult GrandParent__varStaticParent(jobject value) { - load_env(); - load_class_global_ref(&_c_GrandParent, - "com/github/dart_lang/jnigen/generics/GrandParent"); - if (_c_GrandParent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_GrandParent, &_m_GrandParent__varStaticParent, - "varStaticParent", - "(Ljava/lang/Object;)Lcom/github/dart_lang/jnigen/" - "generics/GrandParent$StaticParent;"); - if (_m_GrandParent__varStaticParent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_GrandParent, _m_GrandParent__varStaticParent, value); - return to_global_ref_result(_result); -} - -jmethodID _m_GrandParent__staticParentWithSameType = NULL; -FFI_PLUGIN_EXPORT -JniResult GrandParent__staticParentWithSameType(jobject self_) { - load_env(); - load_class_global_ref(&_c_GrandParent, - "com/github/dart_lang/jnigen/generics/GrandParent"); - if (_c_GrandParent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_GrandParent, &_m_GrandParent__staticParentWithSameType, - "staticParentWithSameType", - "()Lcom/github/dart_lang/jnigen/generics/GrandParent$StaticParent;"); - if (_m_GrandParent__staticParentWithSameType == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_GrandParent__staticParentWithSameType); - return to_global_ref_result(_result); -} - -jfieldID _f_GrandParent__value = NULL; -FFI_PLUGIN_EXPORT -JniResult get_GrandParent__value(jobject self_) { - load_env(); - load_class_global_ref(&_c_GrandParent, - "com/github/dart_lang/jnigen/generics/GrandParent"); - if (_c_GrandParent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent, &_f_GrandParent__value, "value", - "Ljava/lang/Object;"); - jobject _result = - (*jniEnv)->GetObjectField(jniEnv, self_, _f_GrandParent__value); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_GrandParent__value(jobject self_, jobject value) { - load_env(); - load_class_global_ref(&_c_GrandParent, - "com/github/dart_lang/jnigen/generics/GrandParent"); - if (_c_GrandParent == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_GrandParent, &_f_GrandParent__value, "value", - "Ljava/lang/Object;"); - (*jniEnv)->SetObjectField(jniEnv, self_, _f_GrandParent__value, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.generics.MyMap$MyEntry -jclass _c_MyMap_MyEntry = NULL; - -jmethodID _m_MyMap_MyEntry__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult MyMap_MyEntry__new0(jobject _parent, jobject key, jobject value) { - load_env(); - load_class_global_ref(&_c_MyMap_MyEntry, - "com/github/dart_lang/jnigen/generics/MyMap$MyEntry"); - if (_c_MyMap_MyEntry == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyMap_MyEntry, &_m_MyMap_MyEntry__new0, "", - "(Lcom/github/dart_lang/jnigen/generics/MyMap;Ljava/lang/" - "Object;Ljava/lang/Object;)V"); - if (_m_MyMap_MyEntry__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject( - jniEnv, _c_MyMap_MyEntry, _m_MyMap_MyEntry__new0, _parent, key, value); - return to_global_ref_result(_result); -} - -jfieldID _f_MyMap_MyEntry__key = NULL; -FFI_PLUGIN_EXPORT -JniResult get_MyMap_MyEntry__key(jobject self_) { - load_env(); - load_class_global_ref(&_c_MyMap_MyEntry, - "com/github/dart_lang/jnigen/generics/MyMap$MyEntry"); - if (_c_MyMap_MyEntry == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_MyMap_MyEntry, &_f_MyMap_MyEntry__key, "key", - "Ljava/lang/Object;"); - jobject _result = - (*jniEnv)->GetObjectField(jniEnv, self_, _f_MyMap_MyEntry__key); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_MyMap_MyEntry__key(jobject self_, jobject value) { - load_env(); - load_class_global_ref(&_c_MyMap_MyEntry, - "com/github/dart_lang/jnigen/generics/MyMap$MyEntry"); - if (_c_MyMap_MyEntry == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_MyMap_MyEntry, &_f_MyMap_MyEntry__key, "key", - "Ljava/lang/Object;"); - (*jniEnv)->SetObjectField(jniEnv, self_, _f_MyMap_MyEntry__key, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_MyMap_MyEntry__value = NULL; -FFI_PLUGIN_EXPORT -JniResult get_MyMap_MyEntry__value(jobject self_) { - load_env(); - load_class_global_ref(&_c_MyMap_MyEntry, - "com/github/dart_lang/jnigen/generics/MyMap$MyEntry"); - if (_c_MyMap_MyEntry == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_MyMap_MyEntry, &_f_MyMap_MyEntry__value, "value", - "Ljava/lang/Object;"); - jobject _result = - (*jniEnv)->GetObjectField(jniEnv, self_, _f_MyMap_MyEntry__value); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_MyMap_MyEntry__value(jobject self_, jobject value) { - load_env(); - load_class_global_ref(&_c_MyMap_MyEntry, - "com/github/dart_lang/jnigen/generics/MyMap$MyEntry"); - if (_c_MyMap_MyEntry == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_MyMap_MyEntry, &_f_MyMap_MyEntry__value, "value", - "Ljava/lang/Object;"); - (*jniEnv)->SetObjectField(jniEnv, self_, _f_MyMap_MyEntry__value, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.generics.MyMap -jclass _c_MyMap = NULL; - -jmethodID _m_MyMap__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult MyMap__new0() { - load_env(); - load_class_global_ref(&_c_MyMap, - "com/github/dart_lang/jnigen/generics/MyMap"); - if (_c_MyMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyMap, &_m_MyMap__new0, "", "()V"); - if (_m_MyMap__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_MyMap, _m_MyMap__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_MyMap__get0 = NULL; -FFI_PLUGIN_EXPORT -JniResult MyMap__get0(jobject self_, jobject key) { - load_env(); - load_class_global_ref(&_c_MyMap, - "com/github/dart_lang/jnigen/generics/MyMap"); - if (_c_MyMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyMap, &_m_MyMap__get0, "get", - "(Ljava/lang/Object;)Ljava/lang/Object;"); - if (_m_MyMap__get0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_MyMap__get0, key); - return to_global_ref_result(_result); -} - -jmethodID _m_MyMap__put = NULL; -FFI_PLUGIN_EXPORT -JniResult MyMap__put(jobject self_, jobject key, jobject value) { - load_env(); - load_class_global_ref(&_c_MyMap, - "com/github/dart_lang/jnigen/generics/MyMap"); - if (_c_MyMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyMap, &_m_MyMap__put, "put", - "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); - if (_m_MyMap__put == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_MyMap__put, key, value); - return to_global_ref_result(_result); -} - -jmethodID _m_MyMap__entryStack = NULL; -FFI_PLUGIN_EXPORT -JniResult MyMap__entryStack(jobject self_) { - load_env(); - load_class_global_ref(&_c_MyMap, - "com/github/dart_lang/jnigen/generics/MyMap"); - if (_c_MyMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyMap, &_m_MyMap__entryStack, "entryStack", - "()Lcom/github/dart_lang/jnigen/generics/MyStack;"); - if (_m_MyMap__entryStack == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_MyMap__entryStack); - return to_global_ref_result(_result); -} - -// com.github.dart_lang.jnigen.generics.MyStack -jclass _c_MyStack = NULL; - -jmethodID _m_MyStack__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult MyStack__new0() { - load_env(); - load_class_global_ref(&_c_MyStack, - "com/github/dart_lang/jnigen/generics/MyStack"); - if (_c_MyStack == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyStack, &_m_MyStack__new0, "", "()V"); - if (_m_MyStack__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_MyStack, _m_MyStack__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_MyStack__fromArray = NULL; -FFI_PLUGIN_EXPORT -JniResult MyStack__fromArray(jobject arr) { - load_env(); - load_class_global_ref(&_c_MyStack, - "com/github/dart_lang/jnigen/generics/MyStack"); - if (_c_MyStack == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_MyStack, &_m_MyStack__fromArray, "fromArray", - "([Ljava/lang/Object;)Lcom/github/dart_lang/jnigen/generics/MyStack;"); - if (_m_MyStack__fromArray == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_MyStack, _m_MyStack__fromArray, arr); - return to_global_ref_result(_result); -} - -jmethodID _m_MyStack__fromArrayOfArrayOfGrandParents = NULL; -FFI_PLUGIN_EXPORT -JniResult MyStack__fromArrayOfArrayOfGrandParents(jobject arr) { - load_env(); - load_class_global_ref(&_c_MyStack, - "com/github/dart_lang/jnigen/generics/MyStack"); - if (_c_MyStack == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_MyStack, &_m_MyStack__fromArrayOfArrayOfGrandParents, - "fromArrayOfArrayOfGrandParents", - "([[Lcom/github/dart_lang/jnigen/generics/GrandParent;)Lcom/github/" - "dart_lang/jnigen/generics/MyStack;"); - if (_m_MyStack__fromArrayOfArrayOfGrandParents == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_MyStack, _m_MyStack__fromArrayOfArrayOfGrandParents, arr); - return to_global_ref_result(_result); -} - -jmethodID _m_MyStack__of = NULL; -FFI_PLUGIN_EXPORT -JniResult MyStack__of() { - load_env(); - load_class_global_ref(&_c_MyStack, - "com/github/dart_lang/jnigen/generics/MyStack"); - if (_c_MyStack == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_MyStack, &_m_MyStack__of, "of", - "()Lcom/github/dart_lang/jnigen/generics/MyStack;"); - if (_m_MyStack__of == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallStaticObjectMethod(jniEnv, _c_MyStack, _m_MyStack__of); - return to_global_ref_result(_result); -} - -jmethodID _m_MyStack__of1 = NULL; -FFI_PLUGIN_EXPORT -JniResult MyStack__of1(jobject obj) { - load_env(); - load_class_global_ref(&_c_MyStack, - "com/github/dart_lang/jnigen/generics/MyStack"); - if (_c_MyStack == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_MyStack, &_m_MyStack__of1, "of", - "(Ljava/lang/Object;)Lcom/github/dart_lang/jnigen/generics/MyStack;"); - if (_m_MyStack__of1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod(jniEnv, _c_MyStack, - _m_MyStack__of1, obj); - return to_global_ref_result(_result); -} - -jmethodID _m_MyStack__of2 = NULL; -FFI_PLUGIN_EXPORT -JniResult MyStack__of2(jobject obj, jobject obj2) { - load_env(); - load_class_global_ref(&_c_MyStack, - "com/github/dart_lang/jnigen/generics/MyStack"); - if (_c_MyStack == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_MyStack, &_m_MyStack__of2, "of", - "(Ljava/lang/Object;Ljava/lang/Object;)Lcom/github/" - "dart_lang/jnigen/generics/MyStack;"); - if (_m_MyStack__of2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_MyStack, _m_MyStack__of2, obj, obj2); - return to_global_ref_result(_result); -} - -jmethodID _m_MyStack__push = NULL; -FFI_PLUGIN_EXPORT -JniResult MyStack__push(jobject self_, jobject item) { - load_env(); - load_class_global_ref(&_c_MyStack, - "com/github/dart_lang/jnigen/generics/MyStack"); - if (_c_MyStack == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyStack, &_m_MyStack__push, "push", "(Ljava/lang/Object;)V"); - if (_m_MyStack__push == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_MyStack__push, item); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_MyStack__pop = NULL; -FFI_PLUGIN_EXPORT -JniResult MyStack__pop(jobject self_) { - load_env(); - load_class_global_ref(&_c_MyStack, - "com/github/dart_lang/jnigen/generics/MyStack"); - if (_c_MyStack == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyStack, &_m_MyStack__pop, "pop", "()Ljava/lang/Object;"); - if (_m_MyStack__pop == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_MyStack__pop); - return to_global_ref_result(_result); -} - -jmethodID _m_MyStack__size = NULL; -FFI_PLUGIN_EXPORT -JniResult MyStack__size(jobject self_) { - load_env(); - load_class_global_ref(&_c_MyStack, - "com/github/dart_lang/jnigen/generics/MyStack"); - if (_c_MyStack == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyStack, &_m_MyStack__size, "size", "()I"); - if (_m_MyStack__size == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod(jniEnv, self_, _m_MyStack__size); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.generics.StringKeyedMap -jclass _c_StringKeyedMap = NULL; - -jmethodID _m_StringKeyedMap__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult StringKeyedMap__new0() { - load_env(); - load_class_global_ref(&_c_StringKeyedMap, - "com/github/dart_lang/jnigen/generics/StringKeyedMap"); - if (_c_StringKeyedMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_StringKeyedMap, &_m_StringKeyedMap__new0, "", "()V"); - if (_m_StringKeyedMap__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_StringKeyedMap, _m_StringKeyedMap__new0); - return to_global_ref_result(_result); -} - -// com.github.dart_lang.jnigen.generics.StringStack -jclass _c_StringStack = NULL; - -jmethodID _m_StringStack__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult StringStack__new0() { - load_env(); - load_class_global_ref(&_c_StringStack, - "com/github/dart_lang/jnigen/generics/StringStack"); - if (_c_StringStack == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_StringStack, &_m_StringStack__new0, "", "()V"); - if (_m_StringStack__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_StringStack, _m_StringStack__new0); - return to_global_ref_result(_result); -} - -// com.github.dart_lang.jnigen.generics.StringValuedMap -jclass _c_StringValuedMap = NULL; - -jmethodID _m_StringValuedMap__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult StringValuedMap__new0() { - load_env(); - load_class_global_ref(&_c_StringValuedMap, - "com/github/dart_lang/jnigen/generics/StringValuedMap"); - if (_c_StringValuedMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_StringValuedMap, &_m_StringValuedMap__new0, "", "()V"); - if (_m_StringValuedMap__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_StringValuedMap, - _m_StringValuedMap__new0); - return to_global_ref_result(_result); -} - -// com.github.dart_lang.jnigen.interfaces.MyInterface -jclass _c_MyInterface = NULL; - -jmethodID _m_MyInterface__voidCallback = NULL; -FFI_PLUGIN_EXPORT -JniResult MyInterface__voidCallback(jobject self_, jobject s) { - load_env(); - load_class_global_ref(&_c_MyInterface, - "com/github/dart_lang/jnigen/interfaces/MyInterface"); - if (_c_MyInterface == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyInterface, &_m_MyInterface__voidCallback, "voidCallback", - "(Ljava/lang/String;)V"); - if (_m_MyInterface__voidCallback == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_MyInterface__voidCallback, s); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_MyInterface__stringCallback = NULL; -FFI_PLUGIN_EXPORT -JniResult MyInterface__stringCallback(jobject self_, jobject s) { - load_env(); - load_class_global_ref(&_c_MyInterface, - "com/github/dart_lang/jnigen/interfaces/MyInterface"); - if (_c_MyInterface == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyInterface, &_m_MyInterface__stringCallback, "stringCallback", - "(Ljava/lang/String;)Ljava/lang/String;"); - if (_m_MyInterface__stringCallback == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_MyInterface__stringCallback, s); - return to_global_ref_result(_result); -} - -jmethodID _m_MyInterface__varCallback = NULL; -FFI_PLUGIN_EXPORT -JniResult MyInterface__varCallback(jobject self_, jobject t) { - load_env(); - load_class_global_ref(&_c_MyInterface, - "com/github/dart_lang/jnigen/interfaces/MyInterface"); - if (_c_MyInterface == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyInterface, &_m_MyInterface__varCallback, "varCallback", - "(Ljava/lang/Object;)Ljava/lang/Object;"); - if (_m_MyInterface__varCallback == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod(jniEnv, self_, - _m_MyInterface__varCallback, t); - return to_global_ref_result(_result); -} - -jmethodID _m_MyInterface__manyPrimitives = NULL; -FFI_PLUGIN_EXPORT -JniResult MyInterface__manyPrimitives(jobject self_, - int32_t a, - uint8_t b, - uint16_t c, - double d) { - load_env(); - load_class_global_ref(&_c_MyInterface, - "com/github/dart_lang/jnigen/interfaces/MyInterface"); - if (_c_MyInterface == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyInterface, &_m_MyInterface__manyPrimitives, "manyPrimitives", - "(IZCD)J"); - if (_m_MyInterface__manyPrimitives == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int64_t _result = (*jniEnv)->CallLongMethod( - jniEnv, self_, _m_MyInterface__manyPrimitives, a, b, c, d); - return (JniResult){.value = {.j = _result}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.interfaces.MyInterfaceConsumer -jclass _c_MyInterfaceConsumer = NULL; - -jmethodID _m_MyInterfaceConsumer__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult MyInterfaceConsumer__new0() { - load_env(); - load_class_global_ref( - &_c_MyInterfaceConsumer, - "com/github/dart_lang/jnigen/interfaces/MyInterfaceConsumer"); - if (_c_MyInterfaceConsumer == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyInterfaceConsumer, &_m_MyInterfaceConsumer__new0, "", - "()V"); - if (_m_MyInterfaceConsumer__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_MyInterfaceConsumer, - _m_MyInterfaceConsumer__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_MyInterfaceConsumer__consumeOnAnotherThread = NULL; -FFI_PLUGIN_EXPORT -JniResult MyInterfaceConsumer__consumeOnAnotherThread(jobject myInterface, - jobject s, - int32_t a, - uint8_t b, - uint16_t c, - double d, - jobject t) { - load_env(); - load_class_global_ref( - &_c_MyInterfaceConsumer, - "com/github/dart_lang/jnigen/interfaces/MyInterfaceConsumer"); - if (_c_MyInterfaceConsumer == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_MyInterfaceConsumer, - &_m_MyInterfaceConsumer__consumeOnAnotherThread, - "consumeOnAnotherThread", - "(Lcom/github/dart_lang/jnigen/interfaces/" - "MyInterface;Ljava/lang/String;IZCDLjava/lang/Object;)V"); - if (_m_MyInterfaceConsumer__consumeOnAnotherThread == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallStaticVoidMethod( - jniEnv, _c_MyInterfaceConsumer, - _m_MyInterfaceConsumer__consumeOnAnotherThread, myInterface, s, a, b, c, - d, t); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_MyInterfaceConsumer__consumeOnSameThread = NULL; -FFI_PLUGIN_EXPORT -JniResult MyInterfaceConsumer__consumeOnSameThread(jobject myInterface, - jobject s, - int32_t a, - uint8_t b, - uint16_t c, - double d, - jobject t) { - load_env(); - load_class_global_ref( - &_c_MyInterfaceConsumer, - "com/github/dart_lang/jnigen/interfaces/MyInterfaceConsumer"); - if (_c_MyInterfaceConsumer == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_MyInterfaceConsumer, - &_m_MyInterfaceConsumer__consumeOnSameThread, - "consumeOnSameThread", - "(Lcom/github/dart_lang/jnigen/interfaces/" - "MyInterface;Ljava/lang/String;IZCDLjava/lang/Object;)V"); - if (_m_MyInterfaceConsumer__consumeOnSameThread == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallStaticVoidMethod(jniEnv, _c_MyInterfaceConsumer, - _m_MyInterfaceConsumer__consumeOnSameThread, - myInterface, s, a, b, c, d, t); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.interfaces.MyRunnable -jclass _c_MyRunnable = NULL; - -jmethodID _m_MyRunnable__run = NULL; -FFI_PLUGIN_EXPORT -JniResult MyRunnable__run(jobject self_) { - load_env(); - load_class_global_ref(&_c_MyRunnable, - "com/github/dart_lang/jnigen/interfaces/MyRunnable"); - if (_c_MyRunnable == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyRunnable, &_m_MyRunnable__run, "run", "()V"); - if (_m_MyRunnable__run == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, _m_MyRunnable__run); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.interfaces.MyRunnableRunner -jclass _c_MyRunnableRunner = NULL; - -jmethodID _m_MyRunnableRunner__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult MyRunnableRunner__new0(jobject runnable) { - load_env(); - load_class_global_ref( - &_c_MyRunnableRunner, - "com/github/dart_lang/jnigen/interfaces/MyRunnableRunner"); - if (_c_MyRunnableRunner == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyRunnableRunner, &_m_MyRunnableRunner__new0, "", - "(Lcom/github/dart_lang/jnigen/interfaces/MyRunnable;)V"); - if (_m_MyRunnableRunner__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_MyRunnableRunner, - _m_MyRunnableRunner__new0, runnable); - return to_global_ref_result(_result); -} - -jmethodID _m_MyRunnableRunner__runOnSameThread = NULL; -FFI_PLUGIN_EXPORT -JniResult MyRunnableRunner__runOnSameThread(jobject self_) { - load_env(); - load_class_global_ref( - &_c_MyRunnableRunner, - "com/github/dart_lang/jnigen/interfaces/MyRunnableRunner"); - if (_c_MyRunnableRunner == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyRunnableRunner, &_m_MyRunnableRunner__runOnSameThread, - "runOnSameThread", "()V"); - if (_m_MyRunnableRunner__runOnSameThread == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_MyRunnableRunner__runOnSameThread); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jmethodID _m_MyRunnableRunner__runOnAnotherThread = NULL; -FFI_PLUGIN_EXPORT -JniResult MyRunnableRunner__runOnAnotherThread(jobject self_) { - load_env(); - load_class_global_ref( - &_c_MyRunnableRunner, - "com/github/dart_lang/jnigen/interfaces/MyRunnableRunner"); - if (_c_MyRunnableRunner == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyRunnableRunner, &_m_MyRunnableRunner__runOnAnotherThread, - "runOnAnotherThread", "()V"); - if (_m_MyRunnableRunner__runOnAnotherThread == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallVoidMethod(jniEnv, self_, - _m_MyRunnableRunner__runOnAnotherThread); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_MyRunnableRunner__error = NULL; -FFI_PLUGIN_EXPORT -JniResult get_MyRunnableRunner__error(jobject self_) { - load_env(); - load_class_global_ref( - &_c_MyRunnableRunner, - "com/github/dart_lang/jnigen/interfaces/MyRunnableRunner"); - if (_c_MyRunnableRunner == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_MyRunnableRunner, &_f_MyRunnableRunner__error, "error", - "Ljava/lang/Throwable;"); - jobject _result = - (*jniEnv)->GetObjectField(jniEnv, self_, _f_MyRunnableRunner__error); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_MyRunnableRunner__error(jobject self_, jobject value) { - load_env(); - load_class_global_ref( - &_c_MyRunnableRunner, - "com/github/dart_lang/jnigen/interfaces/MyRunnableRunner"); - if (_c_MyRunnableRunner == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_MyRunnableRunner, &_f_MyRunnableRunner__error, "error", - "Ljava/lang/Throwable;"); - (*jniEnv)->SetObjectField(jniEnv, self_, _f_MyRunnableRunner__error, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.annotations.JsonSerializable$Case -jclass _c_JsonSerializable_Case = NULL; - -jmethodID _m_JsonSerializable_Case__values = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonSerializable_Case__values() { - load_env(); - load_class_global_ref( - &_c_JsonSerializable_Case, - "com/github/dart_lang/jnigen/annotations/JsonSerializable$Case"); - if (_c_JsonSerializable_Case == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_JsonSerializable_Case, &_m_JsonSerializable_Case__values, "values", - "()[Lcom/github/dart_lang/jnigen/annotations/JsonSerializable$Case;"); - if (_m_JsonSerializable_Case__values == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_JsonSerializable_Case, _m_JsonSerializable_Case__values); - return to_global_ref_result(_result); -} - -jmethodID _m_JsonSerializable_Case__valueOf = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonSerializable_Case__valueOf(jobject name) { - load_env(); - load_class_global_ref( - &_c_JsonSerializable_Case, - "com/github/dart_lang/jnigen/annotations/JsonSerializable$Case"); - if (_c_JsonSerializable_Case == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_JsonSerializable_Case, - &_m_JsonSerializable_Case__valueOf, "valueOf", - "(Ljava/lang/String;)Lcom/github/dart_lang/jnigen/" - "annotations/JsonSerializable$Case;"); - if (_m_JsonSerializable_Case__valueOf == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_JsonSerializable_Case, _m_JsonSerializable_Case__valueOf, - name); - return to_global_ref_result(_result); -} - -// com.github.dart_lang.jnigen.annotations.JsonSerializable -jclass _c_JsonSerializable = NULL; - -jmethodID _m_JsonSerializable__value = NULL; -FFI_PLUGIN_EXPORT -JniResult JsonSerializable__value(jobject self_) { - load_env(); - load_class_global_ref( - &_c_JsonSerializable, - "com/github/dart_lang/jnigen/annotations/JsonSerializable"); - if (_c_JsonSerializable == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method( - _c_JsonSerializable, &_m_JsonSerializable__value, "value", - "()Lcom/github/dart_lang/jnigen/annotations/JsonSerializable$Case;"); - if (_m_JsonSerializable__value == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_JsonSerializable__value); - return to_global_ref_result(_result); -} - -// com.github.dart_lang.jnigen.annotations.MyDataClass -jclass _c_MyDataClass = NULL; - -jmethodID _m_MyDataClass__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult MyDataClass__new0() { - load_env(); - load_class_global_ref(&_c_MyDataClass, - "com/github/dart_lang/jnigen/annotations/MyDataClass"); - if (_c_MyDataClass == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_MyDataClass, &_m_MyDataClass__new0, "", "()V"); - if (_m_MyDataClass__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_MyDataClass, _m_MyDataClass__new0); - return to_global_ref_result(_result); -} - -// com.github.dart_lang.jnigen.simple_package.Color -jclass _c_Color = NULL; - -jmethodID _m_Color__values = NULL; -FFI_PLUGIN_EXPORT -JniResult Color__values() { - load_env(); - load_class_global_ref(&_c_Color, - "com/github/dart_lang/jnigen/simple_package/Color"); - if (_c_Color == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Color, &_m_Color__values, "values", - "()[Lcom/github/dart_lang/jnigen/simple_package/Color;"); - if (_m_Color__values == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallStaticObjectMethod(jniEnv, _c_Color, _m_Color__values); - return to_global_ref_result(_result); -} - -jmethodID _m_Color__valueOf = NULL; -FFI_PLUGIN_EXPORT -JniResult Color__valueOf(jobject name) { - load_env(); - load_class_global_ref(&_c_Color, - "com/github/dart_lang/jnigen/simple_package/Color"); - if (_c_Color == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method( - _c_Color, &_m_Color__valueOf, "valueOf", - "(Ljava/lang/String;)Lcom/github/dart_lang/jnigen/simple_package/Color;"); - if (_m_Color__valueOf == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod(jniEnv, _c_Color, - _m_Color__valueOf, name); - return to_global_ref_result(_result); -} - -// com.github.dart_lang.jnigen.simple_package.Exceptions -jclass _c_Exceptions = NULL; - -jmethodID _m_Exceptions__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__new0() { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Exceptions, &_m_Exceptions__new0, "", "()V"); - if (_m_Exceptions__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_Exceptions, _m_Exceptions__new0); - return to_global_ref_result(_result); -} - -jmethodID _m_Exceptions__new1 = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__new1(float x) { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Exceptions, &_m_Exceptions__new1, "", "(F)V"); - if (_m_Exceptions__new1 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_Exceptions, _m_Exceptions__new1, x); - return to_global_ref_result(_result); -} - -jmethodID _m_Exceptions__new2 = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__new2(int32_t a, - int32_t b, - int32_t c, - int32_t d, - int32_t e, - int32_t f) { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Exceptions, &_m_Exceptions__new2, "", "(IIIIII)V"); - if (_m_Exceptions__new2 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_Exceptions, - _m_Exceptions__new2, a, b, c, d, e, f); - return to_global_ref_result(_result); -} - -jmethodID _m_Exceptions__staticObjectMethod = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__staticObjectMethod() { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Exceptions, &_m_Exceptions__staticObjectMethod, - "staticObjectMethod", "()Ljava/lang/Object;"); - if (_m_Exceptions__staticObjectMethod == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_Exceptions, _m_Exceptions__staticObjectMethod); - return to_global_ref_result(_result); -} - -jmethodID _m_Exceptions__staticIntMethod = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__staticIntMethod() { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Exceptions, &_m_Exceptions__staticIntMethod, - "staticIntMethod", "()I"); - if (_m_Exceptions__staticIntMethod == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallStaticIntMethod( - jniEnv, _c_Exceptions, _m_Exceptions__staticIntMethod); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_Exceptions__staticObjectArrayMethod = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__staticObjectArrayMethod() { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Exceptions, &_m_Exceptions__staticObjectArrayMethod, - "staticObjectArrayMethod", "()[Ljava/lang/Object;"); - if (_m_Exceptions__staticObjectArrayMethod == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_Exceptions, _m_Exceptions__staticObjectArrayMethod); - return to_global_ref_result(_result); -} - -jmethodID _m_Exceptions__staticIntArrayMethod = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__staticIntArrayMethod() { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Exceptions, &_m_Exceptions__staticIntArrayMethod, - "staticIntArrayMethod", "()[I"); - if (_m_Exceptions__staticIntArrayMethod == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallStaticObjectMethod( - jniEnv, _c_Exceptions, _m_Exceptions__staticIntArrayMethod); - return to_global_ref_result(_result); -} - -jmethodID _m_Exceptions__objectMethod = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__objectMethod(jobject self_) { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Exceptions, &_m_Exceptions__objectMethod, "objectMethod", - "()Ljava/lang/Object;"); - if (_m_Exceptions__objectMethod == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_Exceptions__objectMethod); - return to_global_ref_result(_result); -} - -jmethodID _m_Exceptions__intMethod = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__intMethod(jobject self_) { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Exceptions, &_m_Exceptions__intMethod, "intMethod", "()I"); - if (_m_Exceptions__intMethod == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = - (*jniEnv)->CallIntMethod(jniEnv, self_, _m_Exceptions__intMethod); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_Exceptions__objectArrayMethod = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__objectArrayMethod(jobject self_) { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Exceptions, &_m_Exceptions__objectArrayMethod, - "objectArrayMethod", "()[Ljava/lang/Object;"); - if (_m_Exceptions__objectArrayMethod == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_Exceptions__objectArrayMethod); - return to_global_ref_result(_result); -} - -jmethodID _m_Exceptions__intArrayMethod = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__intArrayMethod(jobject self_) { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Exceptions, &_m_Exceptions__intArrayMethod, "intArrayMethod", - "()[I"); - if (_m_Exceptions__intArrayMethod == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->CallObjectMethod(jniEnv, self_, _m_Exceptions__intArrayMethod); - return to_global_ref_result(_result); -} - -jmethodID _m_Exceptions__throwNullPointerException = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__throwNullPointerException(jobject self_) { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Exceptions, &_m_Exceptions__throwNullPointerException, - "throwNullPointerException", "()I"); - if (_m_Exceptions__throwNullPointerException == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_Exceptions__throwNullPointerException); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_Exceptions__throwFileNotFoundException = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__throwFileNotFoundException(jobject self_) { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Exceptions, &_m_Exceptions__throwFileNotFoundException, - "throwFileNotFoundException", "()Ljava/io/InputStream;"); - if (_m_Exceptions__throwFileNotFoundException == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_Exceptions__throwFileNotFoundException); - return to_global_ref_result(_result); -} - -jmethodID _m_Exceptions__throwClassCastException = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__throwClassCastException(jobject self_) { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Exceptions, &_m_Exceptions__throwClassCastException, - "throwClassCastException", "()Ljava/io/FileInputStream;"); - if (_m_Exceptions__throwClassCastException == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->CallObjectMethod( - jniEnv, self_, _m_Exceptions__throwClassCastException); - return to_global_ref_result(_result); -} - -jmethodID _m_Exceptions__throwArrayIndexException = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__throwArrayIndexException(jobject self_) { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Exceptions, &_m_Exceptions__throwArrayIndexException, - "throwArrayIndexException", "()I"); - if (_m_Exceptions__throwArrayIndexException == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_Exceptions__throwArrayIndexException); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_Exceptions__throwArithmeticException = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__throwArithmeticException(jobject self_) { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Exceptions, &_m_Exceptions__throwArithmeticException, - "throwArithmeticException", "()I"); - if (_m_Exceptions__throwArithmeticException == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - int32_t _result = (*jniEnv)->CallIntMethod( - jniEnv, self_, _m_Exceptions__throwArithmeticException); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -jmethodID _m_Exceptions__throwLoremIpsum = NULL; -FFI_PLUGIN_EXPORT -JniResult Exceptions__throwLoremIpsum() { - load_env(); - load_class_global_ref( - &_c_Exceptions, "com/github/dart_lang/jnigen/simple_package/Exceptions"); - if (_c_Exceptions == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_method(_c_Exceptions, &_m_Exceptions__throwLoremIpsum, - "throwLoremIpsum", "()V"); - if (_m_Exceptions__throwLoremIpsum == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - (*jniEnv)->CallStaticVoidMethod(jniEnv, _c_Exceptions, - _m_Exceptions__throwLoremIpsum); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.simple_package.Fields -jclass _c_Fields = NULL; - -jmethodID _m_Fields__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult Fields__new0() { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Fields, &_m_Fields__new0, "", "()V"); - if (_m_Fields__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_Fields, _m_Fields__new0); - return to_global_ref_result(_result); -} - -jfieldID _f_Fields__amount = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Fields__amount() { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Fields, &_f_Fields__amount, "amount", "I"); - int32_t _result = - (*jniEnv)->GetStaticIntField(jniEnv, _c_Fields, _f_Fields__amount); - return (JniResult){.value = {.i = _result}, .exception = check_exception()}; -} - -FFI_PLUGIN_EXPORT -JniResult set_Fields__amount(int32_t value) { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Fields, &_f_Fields__amount, "amount", "I"); - (*jniEnv)->SetStaticIntField(jniEnv, _c_Fields, _f_Fields__amount, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_Fields__pi = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Fields__pi() { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Fields, &_f_Fields__pi, "pi", "D"); - double _result = - (*jniEnv)->GetStaticDoubleField(jniEnv, _c_Fields, _f_Fields__pi); - return (JniResult){.value = {.d = _result}, .exception = check_exception()}; -} - -FFI_PLUGIN_EXPORT -JniResult set_Fields__pi(double value) { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Fields, &_f_Fields__pi, "pi", "D"); - (*jniEnv)->SetStaticDoubleField(jniEnv, _c_Fields, _f_Fields__pi, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_Fields__asterisk = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Fields__asterisk() { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Fields, &_f_Fields__asterisk, "asterisk", "C"); - uint16_t _result = - (*jniEnv)->GetStaticCharField(jniEnv, _c_Fields, _f_Fields__asterisk); - return (JniResult){.value = {.c = _result}, .exception = check_exception()}; -} - -FFI_PLUGIN_EXPORT -JniResult set_Fields__asterisk(uint16_t value) { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Fields, &_f_Fields__asterisk, "asterisk", "C"); - (*jniEnv)->SetStaticCharField(jniEnv, _c_Fields, _f_Fields__asterisk, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_Fields__name = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Fields__name() { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Fields, &_f_Fields__name, "name", "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetStaticObjectField(jniEnv, _c_Fields, _f_Fields__name); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_Fields__name(jobject value) { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Fields, &_f_Fields__name, "name", "Ljava/lang/String;"); - (*jniEnv)->SetStaticObjectField(jniEnv, _c_Fields, _f_Fields__name, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_Fields__i = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Fields__i(jobject self_) { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Fields, &_f_Fields__i, "i", "Ljava/lang/Integer;"); - jobject _result = (*jniEnv)->GetObjectField(jniEnv, self_, _f_Fields__i); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_Fields__i(jobject self_, jobject value) { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Fields, &_f_Fields__i, "i", "Ljava/lang/Integer;"); - (*jniEnv)->SetObjectField(jniEnv, self_, _f_Fields__i, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_Fields__trillion = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Fields__trillion(jobject self_) { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Fields, &_f_Fields__trillion, "trillion", "J"); - int64_t _result = (*jniEnv)->GetLongField(jniEnv, self_, _f_Fields__trillion); - return (JniResult){.value = {.j = _result}, .exception = check_exception()}; -} - -FFI_PLUGIN_EXPORT -JniResult set_Fields__trillion(jobject self_, int64_t value) { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Fields, &_f_Fields__trillion, "trillion", "J"); - (*jniEnv)->SetLongField(jniEnv, self_, _f_Fields__trillion, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_Fields__isAchillesDead = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Fields__isAchillesDead(jobject self_) { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Fields, &_f_Fields__isAchillesDead, "isAchillesDead", "Z"); - uint8_t _result = - (*jniEnv)->GetBooleanField(jniEnv, self_, _f_Fields__isAchillesDead); - return (JniResult){.value = {.z = _result}, .exception = check_exception()}; -} - -FFI_PLUGIN_EXPORT -JniResult set_Fields__isAchillesDead(jobject self_, uint8_t value) { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Fields, &_f_Fields__isAchillesDead, "isAchillesDead", "Z"); - (*jniEnv)->SetBooleanField(jniEnv, self_, _f_Fields__isAchillesDead, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_Fields__bestFighterInGreece = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Fields__bestFighterInGreece(jobject self_) { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Fields, &_f_Fields__bestFighterInGreece, "bestFighterInGreece", - "Ljava/lang/String;"); - jobject _result = - (*jniEnv)->GetObjectField(jniEnv, self_, _f_Fields__bestFighterInGreece); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_Fields__bestFighterInGreece(jobject self_, jobject value) { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Fields, &_f_Fields__bestFighterInGreece, "bestFighterInGreece", - "Ljava/lang/String;"); - (*jniEnv)->SetObjectField(jniEnv, self_, _f_Fields__bestFighterInGreece, - value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_Fields__random = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Fields__random(jobject self_) { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Fields, &_f_Fields__random, "random", "Ljava/util/Random;"); - jobject _result = (*jniEnv)->GetObjectField(jniEnv, self_, _f_Fields__random); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_Fields__random(jobject self_, jobject value) { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Fields, &_f_Fields__random, "random", "Ljava/util/Random;"); - (*jniEnv)->SetObjectField(jniEnv, self_, _f_Fields__random, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_Fields__euroSymbol = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Fields__euroSymbol() { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Fields, &_f_Fields__euroSymbol, "euroSymbol", "C"); - uint16_t _result = - (*jniEnv)->GetStaticCharField(jniEnv, _c_Fields, _f_Fields__euroSymbol); - return (JniResult){.value = {.c = _result}, .exception = check_exception()}; -} - -FFI_PLUGIN_EXPORT -JniResult set_Fields__euroSymbol(uint16_t value) { - load_env(); - load_class_global_ref(&_c_Fields, - "com/github/dart_lang/jnigen/simple_package/Fields"); - if (_c_Fields == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Fields, &_f_Fields__euroSymbol, "euroSymbol", "C"); - (*jniEnv)->SetStaticCharField(jniEnv, _c_Fields, _f_Fields__euroSymbol, - value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.simple_package.Fields$Nested -jclass _c_Fields_Nested = NULL; - -jmethodID _m_Fields_Nested__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult Fields_Nested__new0() { - load_env(); - load_class_global_ref( - &_c_Fields_Nested, - "com/github/dart_lang/jnigen/simple_package/Fields$Nested"); - if (_c_Fields_Nested == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_Fields_Nested, &_m_Fields_Nested__new0, "", "()V"); - if (_m_Fields_Nested__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_Fields_Nested, _m_Fields_Nested__new0); - return to_global_ref_result(_result); -} - -jfieldID _f_Fields_Nested__hundred = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Fields_Nested__hundred(jobject self_) { - load_env(); - load_class_global_ref( - &_c_Fields_Nested, - "com/github/dart_lang/jnigen/simple_package/Fields$Nested"); - if (_c_Fields_Nested == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Fields_Nested, &_f_Fields_Nested__hundred, "hundred", "J"); - int64_t _result = - (*jniEnv)->GetLongField(jniEnv, self_, _f_Fields_Nested__hundred); - return (JniResult){.value = {.j = _result}, .exception = check_exception()}; -} - -FFI_PLUGIN_EXPORT -JniResult set_Fields_Nested__hundred(jobject self_, int64_t value) { - load_env(); - load_class_global_ref( - &_c_Fields_Nested, - "com/github/dart_lang/jnigen/simple_package/Fields$Nested"); - if (_c_Fields_Nested == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_field(_c_Fields_Nested, &_f_Fields_Nested__hundred, "hundred", "J"); - (*jniEnv)->SetLongField(jniEnv, self_, _f_Fields_Nested__hundred, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -jfieldID _f_Fields_Nested__BEST_GOD = NULL; -FFI_PLUGIN_EXPORT -JniResult get_Fields_Nested__BEST_GOD() { - load_env(); - load_class_global_ref( - &_c_Fields_Nested, - "com/github/dart_lang/jnigen/simple_package/Fields$Nested"); - if (_c_Fields_Nested == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Fields_Nested, &_f_Fields_Nested__BEST_GOD, "BEST_GOD", - "Ljava/lang/String;"); - jobject _result = (*jniEnv)->GetStaticObjectField(jniEnv, _c_Fields_Nested, - _f_Fields_Nested__BEST_GOD); - return to_global_ref_result(_result); -} - -FFI_PLUGIN_EXPORT -JniResult set_Fields_Nested__BEST_GOD(jobject value) { - load_env(); - load_class_global_ref( - &_c_Fields_Nested, - "com/github/dart_lang/jnigen/simple_package/Fields$Nested"); - if (_c_Fields_Nested == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_static_field(_c_Fields_Nested, &_f_Fields_Nested__BEST_GOD, "BEST_GOD", - "Ljava/lang/String;"); - (*jniEnv)->SetStaticObjectField(jniEnv, _c_Fields_Nested, - _f_Fields_Nested__BEST_GOD, value); - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; -} - -// com.github.dart_lang.jnigen.generics.GenericTypeParams -jclass _c_GenericTypeParams = NULL; - -jmethodID _m_GenericTypeParams__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult GenericTypeParams__new0() { - load_env(); - load_class_global_ref( - &_c_GenericTypeParams, - "com/github/dart_lang/jnigen/generics/GenericTypeParams"); - if (_c_GenericTypeParams == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_GenericTypeParams, &_m_GenericTypeParams__new0, "", - "()V"); - if (_m_GenericTypeParams__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = (*jniEnv)->NewObject(jniEnv, _c_GenericTypeParams, - _m_GenericTypeParams__new0); - return to_global_ref_result(_result); -} - -// com.github.dart_lang.jnigen.generics.StringMap -jclass _c_StringMap = NULL; - -jmethodID _m_StringMap__new0 = NULL; -FFI_PLUGIN_EXPORT -JniResult StringMap__new0() { - load_env(); - load_class_global_ref(&_c_StringMap, - "com/github/dart_lang/jnigen/generics/StringMap"); - if (_c_StringMap == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - load_method(_c_StringMap, &_m_StringMap__new0, "", "()V"); - if (_m_StringMap__new0 == NULL) - return (JniResult){.value = {.j = 0}, .exception = check_exception()}; - jobject _result = - (*jniEnv)->NewObject(jniEnv, _c_StringMap, _m_StringMap__new0); - return to_global_ref_result(_result); -} diff --git a/pkgs/jnigen/test/simple_package_test/c_based/dart_bindings/simple_package.dart b/pkgs/jnigen/test/simple_package_test/c_based/dart_bindings/simple_package.dart deleted file mode 100644 index d832b109d..000000000 --- a/pkgs/jnigen/test/simple_package_test/c_based/dart_bindings/simple_package.dart +++ /dev/null @@ -1,4202 +0,0 @@ -// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -// Autogenerated by jnigen. DO NOT EDIT! - -// ignore_for_file: annotate_overrides -// ignore_for_file: camel_case_extensions -// ignore_for_file: camel_case_types -// ignore_for_file: constant_identifier_names -// ignore_for_file: doc_directive_unknown -// ignore_for_file: file_names -// ignore_for_file: lines_longer_than_80_chars -// ignore_for_file: no_leading_underscores_for_local_identifiers -// ignore_for_file: non_constant_identifier_names -// ignore_for_file: overridden_fields -// ignore_for_file: unnecessary_cast -// ignore_for_file: unused_element -// ignore_for_file: unused_field -// ignore_for_file: unused_import -// ignore_for_file: unused_local_variable -// ignore_for_file: unused_shown_name -// ignore_for_file: use_super_parameters - -import "dart:isolate" show ReceivePort; -import "dart:ffi" as ffi; -import "package:jni/internal_helpers_for_jnigen.dart"; -import "package:jni/jni.dart" as jni; - -// Auto-generated initialization code. - -final ffi.Pointer Function(String sym) jniLookup = - ProtectedJniExtensions.initGeneratedLibrary("simple_package"); - -/// from: com.github.dart_lang.jnigen.simple_package.Example$Nested$NestedTwice -class Example_Nested_NestedTwice extends jni.JObject { - @override - late final jni.JObjType $type = type; - - Example_Nested_NestedTwice.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $Example_Nested_NestedTwiceType(); - static final _get_ZERO = - jniLookup>( - "get_Example_Nested_NestedTwice__ZERO") - .asFunction(); - - static final _set_ZERO = - jniLookup>( - "set_Example_Nested_NestedTwice__ZERO") - .asFunction(); - - /// from: static public int ZERO - static int get ZERO => _get_ZERO().integer; - - /// from: static public int ZERO - static set ZERO(int value) => _set_ZERO(value).check(); - - static final _new0 = jniLookup>( - "Example_Nested_NestedTwice__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory Example_Nested_NestedTwice() { - return Example_Nested_NestedTwice.fromReference(_new0().reference); - } -} - -final class $Example_Nested_NestedTwiceType - extends jni.JObjType { - const $Example_Nested_NestedTwiceType(); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/simple_package/Example$Nested$NestedTwice;"; - - @override - Example_Nested_NestedTwice fromReference(jni.JReference reference) => - Example_Nested_NestedTwice.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($Example_Nested_NestedTwiceType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($Example_Nested_NestedTwiceType) && - other is $Example_Nested_NestedTwiceType; - } -} - -/// from: com.github.dart_lang.jnigen.simple_package.Example$Nested -class Example_Nested extends jni.JObject { - @override - late final jni.JObjType $type = type; - - Example_Nested.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $Example_NestedType(); - static final _new0 = - jniLookup>( - "Example_Nested__new0") - .asFunction(); - - /// from: public void (boolean value) - /// The returned object must be released after use, by calling the [release] method. - factory Example_Nested( - bool value, - ) { - return Example_Nested.fromReference(_new0(value ? 1 : 0).reference); - } - - static final _usesAnonymousInnerClass = jniLookup< - ffi - .NativeFunction)>>( - "Example_Nested__usesAnonymousInnerClass") - .asFunction)>(); - - /// from: public void usesAnonymousInnerClass() - void usesAnonymousInnerClass() { - _usesAnonymousInnerClass(reference.pointer).check(); - } - - static final _getValue = jniLookup< - ffi - .NativeFunction)>>( - "Example_Nested__getValue") - .asFunction)>(); - - /// from: public boolean getValue() - bool getValue() { - return _getValue(reference.pointer).boolean; - } - - static final _setValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Uint8)>>("Example_Nested__setValue") - .asFunction, int)>(); - - /// from: public void setValue(boolean value) - void setValue( - bool value, - ) { - _setValue(reference.pointer, value ? 1 : 0).check(); - } -} - -final class $Example_NestedType extends jni.JObjType { - const $Example_NestedType(); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/simple_package/Example$Nested;"; - - @override - Example_Nested fromReference(jni.JReference reference) => - Example_Nested.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($Example_NestedType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($Example_NestedType) && - other is $Example_NestedType; - } -} - -/// from: com.github.dart_lang.jnigen.simple_package.Example$NonStaticNested -class Example_NonStaticNested extends jni.JObject { - @override - late final jni.JObjType $type = type; - - Example_NonStaticNested.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $Example_NonStaticNestedType(); - static final _get_ok = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_Example_NonStaticNested__ok") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_ok = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(jni.JObjectPtr, - ffi.Uint8)>>("set_Example_NonStaticNested__ok") - .asFunction(); - - /// from: public boolean ok - bool get ok => _get_ok(reference.pointer).boolean; - - /// from: public boolean ok - set ok(bool value) => _set_ok(reference.pointer, value ? 1 : 0).check(); - - static final _new0 = jniLookup< - ffi - .NativeFunction)>>( - "Example_NonStaticNested__new0") - .asFunction)>(); - - /// from: public void (com.github.dart_lang.jnigen.simple_package.Example $parent) - /// The returned object must be released after use, by calling the [release] method. - factory Example_NonStaticNested( - Example $parent, - ) { - return Example_NonStaticNested.fromReference( - _new0($parent.reference.pointer).reference); - } -} - -final class $Example_NonStaticNestedType - extends jni.JObjType { - const $Example_NonStaticNestedType(); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/simple_package/Example$NonStaticNested;"; - - @override - Example_NonStaticNested fromReference(jni.JReference reference) => - Example_NonStaticNested.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($Example_NonStaticNestedType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($Example_NonStaticNestedType) && - other is $Example_NonStaticNestedType; - } -} - -/// from: com.github.dart_lang.jnigen.simple_package.Example -class Example extends jni.JObject { - @override - late final jni.JObjType $type = type; - - Example.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $ExampleType(); - - /// from: static public final int ON - static const ON = 1; - - /// from: static public final int OFF - static const OFF = 0; - - /// from: static public final double PI - static const PI = 3.14159; - - /// from: static public final char SEMICOLON - static const SEMICOLON = 59; - static final _get_SEMICOLON_STRING = - jniLookup>( - "get_Example__SEMICOLON_STRING") - .asFunction(); - - /// from: static public final java.lang.String SEMICOLON_STRING - /// The returned object must be released after use, by calling the [release] method. - static jni.JString get SEMICOLON_STRING => - _get_SEMICOLON_STRING().object(const jni.JStringType()); - - static final _get_unusedRandom = - jniLookup>( - "get_Example__unusedRandom") - .asFunction(); - - /// from: static public final java.util.Random unusedRandom - /// The returned object must be released after use, by calling the [release] method. - static jni.JObject get unusedRandom => - _get_unusedRandom().object(const jni.JObjectType()); - - static final _get_protectedField = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_Example__protectedField") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_protectedField = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(jni.JObjectPtr, - ffi.Pointer)>>("set_Example__protectedField") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: protected java.util.Random protectedField - /// The returned object must be released after use, by calling the [release] method. - jni.JObject get protectedField => - _get_protectedField(reference.pointer).object(const jni.JObjectType()); - - /// from: protected java.util.Random protectedField - /// The returned object must be released after use, by calling the [release] method. - set protectedField(jni.JObject value) => - _set_protectedField(reference.pointer, value.reference.pointer).check(); - - static final _getAmount = - jniLookup>( - "Example__getAmount") - .asFunction(); - - /// from: static public int getAmount() - static int getAmount() { - return _getAmount().integer; - } - - static final _getPi = - jniLookup>("Example__getPi") - .asFunction(); - - /// from: static public double getPi() - static double getPi() { - return _getPi().doubleFloat; - } - - static final _getAsterisk = - jniLookup>( - "Example__getAsterisk") - .asFunction(); - - /// from: static public char getAsterisk() - static int getAsterisk() { - return _getAsterisk().char; - } - - static final _getName = - jniLookup>( - "Example__getName") - .asFunction(); - - /// from: static public java.lang.String getName() - /// The returned object must be released after use, by calling the [release] method. - static jni.JString getName() { - return _getName().object(const jni.JStringType()); - } - - static final _getNestedInstance = - jniLookup>( - "Example__getNestedInstance") - .asFunction(); - - /// from: static public com.github.dart_lang.jnigen.simple_package.Example.Nested getNestedInstance() - /// The returned object must be released after use, by calling the [release] method. - static Example_Nested getNestedInstance() { - return _getNestedInstance().object(const $Example_NestedType()); - } - - static final _setAmount = - jniLookup>( - "Example__setAmount") - .asFunction(); - - /// from: static public void setAmount(int newAmount) - static void setAmount( - int newAmount, - ) { - _setAmount(newAmount).check(); - } - - static final _setName = jniLookup< - ffi - .NativeFunction)>>( - "Example__setName") - .asFunction)>(); - - /// from: static public void setName(java.lang.String newName) - static void setName( - jni.JString newName, - ) { - _setName(newName.reference.pointer).check(); - } - - static final _setNestedInstance = jniLookup< - ffi - .NativeFunction)>>( - "Example__setNestedInstance") - .asFunction)>(); - - /// from: static public void setNestedInstance(com.github.dart_lang.jnigen.simple_package.Example.Nested newNested) - static void setNestedInstance( - Example_Nested newNested, - ) { - _setNestedInstance(newNested.reference.pointer).check(); - } - - static final _max4 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Int32, ffi.Int32, ffi.Int32, ffi.Int32)>>("Example__max4") - .asFunction(); - - /// from: static public int max4(int a, int b, int c, int d) - static int max4( - int a, - int b, - int c, - int d, - ) { - return _max4(a, b, c, d).integer; - } - - static final _max8 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Int32, ffi.Int32, ffi.Int32, ffi.Int32, - ffi.Int32, ffi.Int32, ffi.Int32, ffi.Int32)>>("Example__max8") - .asFunction< - jni.JniResult Function(int, int, int, int, int, int, int, int)>(); - - /// from: static public int max8(int a, int b, int c, int d, int e, int f, int g, int h) - static int max8( - int a, - int b, - int c, - int d, - int e, - int f, - int g, - int h, - ) { - return _max8(a, b, c, d, e, f, g, h).integer; - } - - static final _getNumber = jniLookup< - ffi - .NativeFunction)>>( - "Example__getNumber") - .asFunction)>(); - - /// from: public int getNumber() - int getNumber() { - return _getNumber(reference.pointer).integer; - } - - static final _setNumber = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Int32)>>("Example__setNumber") - .asFunction, int)>(); - - /// from: public void setNumber(int number) - void setNumber( - int number, - ) { - _setNumber(reference.pointer, number).check(); - } - - static final _getIsUp = jniLookup< - ffi - .NativeFunction)>>( - "Example__getIsUp") - .asFunction)>(); - - /// from: public boolean getIsUp() - bool getIsUp() { - return _getIsUp(reference.pointer).boolean; - } - - static final _setUp = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Uint8)>>("Example__setUp") - .asFunction, int)>(); - - /// from: public void setUp(boolean isUp) - void setUp( - bool isUp, - ) { - _setUp(reference.pointer, isUp ? 1 : 0).check(); - } - - static final _getCodename = jniLookup< - ffi - .NativeFunction)>>( - "Example__getCodename") - .asFunction)>(); - - /// from: public java.lang.String getCodename() - /// The returned object must be released after use, by calling the [release] method. - jni.JString getCodename() { - return _getCodename(reference.pointer).object(const jni.JStringType()); - } - - static final _setCodename = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("Example__setCodename") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public void setCodename(java.lang.String codename) - void setCodename( - jni.JString codename, - ) { - _setCodename(reference.pointer, codename.reference.pointer).check(); - } - - static final _getRandom = jniLookup< - ffi - .NativeFunction)>>( - "Example__getRandom") - .asFunction)>(); - - /// from: public java.util.Random getRandom() - /// The returned object must be released after use, by calling the [release] method. - jni.JObject getRandom() { - return _getRandom(reference.pointer).object(const jni.JObjectType()); - } - - static final _setRandom = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("Example__setRandom") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public void setRandom(java.util.Random random) - void setRandom( - jni.JObject random, - ) { - _setRandom(reference.pointer, random.reference.pointer).check(); - } - - static final _getRandomLong = jniLookup< - ffi - .NativeFunction)>>( - "Example__getRandomLong") - .asFunction)>(); - - /// from: public long getRandomLong() - int getRandomLong() { - return _getRandomLong(reference.pointer).long; - } - - static final _add4Longs = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, ffi.Int64, - ffi.Int64, ffi.Int64, ffi.Int64)>>("Example__add4Longs") - .asFunction< - jni.JniResult Function(ffi.Pointer, int, int, int, int)>(); - - /// from: public long add4Longs(long a, long b, long c, long d) - int add4Longs( - int a, - int b, - int c, - int d, - ) { - return _add4Longs(reference.pointer, a, b, c, d).long; - } - - static final _add8Longs = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Int64, - ffi.Int64, - ffi.Int64, - ffi.Int64, - ffi.Int64, - ffi.Int64, - ffi.Int64, - ffi.Int64)>>("Example__add8Longs") - .asFunction< - jni.JniResult Function( - ffi.Pointer, int, int, int, int, int, int, int, int)>(); - - /// from: public long add8Longs(long a, long b, long c, long d, long e, long f, long g, long h) - int add8Longs( - int a, - int b, - int c, - int d, - int e, - int f, - int g, - int h, - ) { - return _add8Longs(reference.pointer, a, b, c, d, e, f, g, h).long; - } - - static final _getRandomNumericString = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("Example__getRandomNumericString") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public java.lang.String getRandomNumericString(java.util.Random random) - /// The returned object must be released after use, by calling the [release] method. - jni.JString getRandomNumericString( - jni.JObject random, - ) { - return _getRandomNumericString(reference.pointer, random.reference.pointer) - .object(const jni.JStringType()); - } - - static final _protectedMethod = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("Example__protectedMethod") - .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - /// from: protected void protectedMethod(java.lang.String a, java.lang.String b) - void protectedMethod( - jni.JString a, - jni.JString b, - ) { - _protectedMethod( - reference.pointer, a.reference.pointer, b.reference.pointer) - .check(); - } - - static final _finalMethod = jniLookup< - ffi - .NativeFunction)>>( - "Example__finalMethod") - .asFunction)>(); - - /// from: public final void finalMethod() - void finalMethod() { - _finalMethod(reference.pointer).check(); - } - - static final _getList = jniLookup< - ffi - .NativeFunction)>>( - "Example__getList") - .asFunction)>(); - - /// from: public java.util.List getList() - /// The returned object must be released after use, by calling the [release] method. - jni.JList getList() { - return _getList(reference.pointer) - .object(const jni.JListType(jni.JStringType())); - } - - static final _joinStrings = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("Example__joinStrings") - .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - /// from: public java.lang.String joinStrings(java.util.List values, java.lang.String delim) - /// The returned object must be released after use, by calling the [release] method. - /// - /// Joins the strings in the list using the given delimiter. - jni.JString joinStrings( - jni.JList values, - jni.JString delim, - ) { - return _joinStrings(reference.pointer, values.reference.pointer, - delim.reference.pointer) - .object(const jni.JStringType()); - } - - static final _methodWithSeveralParams = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Uint16, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("Example__methodWithSeveralParams") - .asFunction< - jni.JniResult Function( - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - /// from: public void methodWithSeveralParams(char ch, java.lang.String s, int[] a, T t, java.util.List lt, java.util.Map wm) - void methodWithSeveralParams<$T extends jni.JObject>( - int ch, - jni.JString s, - jni.JArray a, - $T t, - jni.JList<$T> lt, - jni.JMap wm, { - jni.JObjType<$T>? T, - }) { - T ??= jni.lowestCommonSuperType([ - (lt.$type as jni.JListType).E, - t.$type, - ]) as jni.JObjType<$T>; - _methodWithSeveralParams( - reference.pointer, - ch, - s.reference.pointer, - a.reference.pointer, - t.reference.pointer, - lt.reference.pointer, - wm.reference.pointer) - .check(); - } - - static final _new0 = - jniLookup>("Example__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory Example() { - return Example.fromReference(_new0().reference); - } - - static final _new1 = - jniLookup>( - "Example__new1") - .asFunction(); - - /// from: public void (int number) - /// The returned object must be released after use, by calling the [release] method. - factory Example.new1( - int number, - ) { - return Example.fromReference(_new1(number).reference); - } - - static final _new2 = jniLookup< - ffi.NativeFunction>( - "Example__new2") - .asFunction(); - - /// from: public void (int number, boolean isUp) - /// The returned object must be released after use, by calling the [release] method. - factory Example.new2( - int number, - bool isUp, - ) { - return Example.fromReference(_new2(number, isUp ? 1 : 0).reference); - } - - static final _new3 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Int32, ffi.Uint8, - ffi.Pointer)>>("Example__new3") - .asFunction)>(); - - /// from: public void (int number, boolean isUp, java.lang.String codename) - /// The returned object must be released after use, by calling the [release] method. - factory Example.new3( - int number, - bool isUp, - jni.JString codename, - ) { - return Example.fromReference( - _new3(number, isUp ? 1 : 0, codename.reference.pointer).reference); - } - - static final _new4 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Int32, ffi.Int32, ffi.Int32, ffi.Int32, - ffi.Int32, ffi.Int32, ffi.Int32, ffi.Int32)>>("Example__new4") - .asFunction< - jni.JniResult Function(int, int, int, int, int, int, int, int)>(); - - /// from: public void (int a, int b, int c, int d, int e, int f, int g, int h) - /// The returned object must be released after use, by calling the [release] method. - factory Example.new4( - int a, - int b, - int c, - int d, - int e, - int f, - int g, - int h, - ) { - return Example.fromReference(_new4(a, b, c, d, e, f, g, h).reference); - } - - static final _whichExample = jniLookup< - ffi - .NativeFunction)>>( - "Example__whichExample") - .asFunction)>(); - - /// from: public int whichExample() - int whichExample() { - return _whichExample(reference.pointer).integer; - } - - static final _addInts = jniLookup< - ffi.NativeFunction>( - "Example__addInts") - .asFunction(); - - /// from: static public int addInts(int a, int b) - static int addInts( - int a, - int b, - ) { - return _addInts(a, b).integer; - } - - static final _getArr = - jniLookup>("Example__getArr") - .asFunction(); - - /// from: static public int[] getArr() - /// The returned object must be released after use, by calling the [release] method. - static jni.JArray getArr() { - return _getArr().object(const jni.JArrayType(jni.jintType())); - } - - static final _addAll = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer)>>("Example__addAll") - .asFunction)>(); - - /// from: static public int addAll(int[] arr) - static int addAll( - jni.JArray arr, - ) { - return _addAll(arr.reference.pointer).integer; - } - - static final _getSelf = jniLookup< - ffi - .NativeFunction)>>( - "Example__getSelf") - .asFunction)>(); - - /// from: public com.github.dart_lang.jnigen.simple_package.Example getSelf() - /// The returned object must be released after use, by calling the [release] method. - Example getSelf() { - return _getSelf(reference.pointer).object(const $ExampleType()); - } - - static final _throwException = - jniLookup>( - "Example__throwException") - .asFunction(); - - /// from: static public void throwException() - static void throwException() { - _throwException().check(); - } - - static final _overloaded = jniLookup< - ffi - .NativeFunction)>>( - "Example__overloaded") - .asFunction)>(); - - /// from: public void overloaded() - void overloaded() { - _overloaded(reference.pointer).check(); - } - - static final _overloaded1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, ffi.Int32, - ffi.Pointer)>>("Example__overloaded1") - .asFunction< - jni.JniResult Function( - ffi.Pointer, int, ffi.Pointer)>(); - - /// from: public void overloaded(int a, java.lang.String b) - void overloaded1( - int a, - jni.JString b, - ) { - _overloaded1(reference.pointer, a, b.reference.pointer).check(); - } - - static final _overloaded2 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Int32)>>("Example__overloaded2") - .asFunction, int)>(); - - /// from: public void overloaded(int a) - void overloaded2( - int a, - ) { - _overloaded2(reference.pointer, a).check(); - } - - static final _overloaded3 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("Example__overloaded3") - .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - /// from: public void overloaded(java.util.List a, java.lang.String b) - void overloaded3( - jni.JList a, - jni.JString b, - ) { - _overloaded3(reference.pointer, a.reference.pointer, b.reference.pointer) - .check(); - } - - static final _overloaded4 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("Example__overloaded4") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public void overloaded(java.util.List a) - void overloaded4( - jni.JList a, - ) { - _overloaded4(reference.pointer, a.reference.pointer).check(); - } -} - -final class $ExampleType extends jni.JObjType { - const $ExampleType(); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/simple_package/Example;"; - - @override - Example fromReference(jni.JReference reference) => - Example.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($ExampleType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($ExampleType) && other is $ExampleType; - } -} - -/// from: com.github.dart_lang.jnigen.pkg2.C2 -class C2 extends jni.JObject { - @override - late final jni.JObjType $type = type; - - C2.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $C2Type(); - static final _get_CONSTANT = - jniLookup>( - "get_C2__CONSTANT") - .asFunction(); - - static final _set_CONSTANT = - jniLookup>( - "set_C2__CONSTANT") - .asFunction(); - - /// from: static public int CONSTANT - static int get CONSTANT => _get_CONSTANT().integer; - - /// from: static public int CONSTANT - static set CONSTANT(int value) => _set_CONSTANT(value).check(); - - static final _new0 = - jniLookup>("C2__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory C2() { - return C2.fromReference(_new0().reference); - } -} - -final class $C2Type extends jni.JObjType { - const $C2Type(); - - @override - String get signature => r"Lcom/github/dart_lang/jnigen/pkg2/C2;"; - - @override - C2 fromReference(jni.JReference reference) => C2.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($C2Type).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($C2Type) && other is $C2Type; - } -} - -/// from: com.github.dart_lang.jnigen.pkg2.Example -class Example1 extends jni.JObject { - @override - late final jni.JObjType $type = type; - - Example1.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $Example1Type(); - static final _new0 = - jniLookup>("Example1__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory Example1() { - return Example1.fromReference(_new0().reference); - } - - static final _whichExample = jniLookup< - ffi - .NativeFunction)>>( - "Example1__whichExample") - .asFunction)>(); - - /// from: public int whichExample() - int whichExample() { - return _whichExample(reference.pointer).integer; - } -} - -final class $Example1Type extends jni.JObjType { - const $Example1Type(); - - @override - String get signature => r"Lcom/github/dart_lang/jnigen/pkg2/Example;"; - - @override - Example1 fromReference(jni.JReference reference) => - Example1.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($Example1Type).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($Example1Type) && other is $Example1Type; - } -} - -/// from: com.github.dart_lang.jnigen.generics.GrandParent$Parent$Child -class GrandParent_Parent_Child<$T extends jni.JObject, $S extends jni.JObject, - $U extends jni.JObject> extends jni.JObject { - @override - late final jni.JObjType> $type = - type(T, S, U); - - final jni.JObjType<$T> T; - final jni.JObjType<$S> S; - final jni.JObjType<$U> U; - - GrandParent_Parent_Child.fromReference( - this.T, - this.S, - this.U, - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static $GrandParent_Parent_ChildType<$T, $S, $U> type<$T extends jni.JObject, - $S extends jni.JObject, $U extends jni.JObject>( - jni.JObjType<$T> T, - jni.JObjType<$S> S, - jni.JObjType<$U> U, - ) { - return $GrandParent_Parent_ChildType( - T, - S, - U, - ); - } - - static final _get_grandParentValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_GrandParent_Parent_Child__grandParentValue") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_grandParentValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, ffi.Pointer)>>( - "set_GrandParent_Parent_Child__grandParentValue") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: public T grandParentValue - /// The returned object must be released after use, by calling the [release] method. - $T get grandParentValue => _get_grandParentValue(reference.pointer).object(T); - - /// from: public T grandParentValue - /// The returned object must be released after use, by calling the [release] method. - set grandParentValue($T value) => - _set_grandParentValue(reference.pointer, value.reference.pointer).check(); - - static final _get_parentValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_GrandParent_Parent_Child__parentValue") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_parentValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, ffi.Pointer)>>( - "set_GrandParent_Parent_Child__parentValue") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: public S parentValue - /// The returned object must be released after use, by calling the [release] method. - $S get parentValue => _get_parentValue(reference.pointer).object(S); - - /// from: public S parentValue - /// The returned object must be released after use, by calling the [release] method. - set parentValue($S value) => - _set_parentValue(reference.pointer, value.reference.pointer).check(); - - static final _get_value = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_GrandParent_Parent_Child__value") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_value = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, ffi.Pointer)>>( - "set_GrandParent_Parent_Child__value") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: public U value - /// The returned object must be released after use, by calling the [release] method. - $U get value => _get_value(reference.pointer).object(U); - - /// from: public U value - /// The returned object must be released after use, by calling the [release] method. - set value($U value) => - _set_value(reference.pointer, value.reference.pointer).check(); - - static final _new0 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("GrandParent_Parent_Child__new0") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public void (com.github.dart_lang.jnigen.generics.GrandParent$Parent $parent, U newValue) - /// The returned object must be released after use, by calling the [release] method. - factory GrandParent_Parent_Child( - GrandParent_Parent<$T, $S> $parent, - $U newValue, { - jni.JObjType<$T>? T, - jni.JObjType<$S>? S, - jni.JObjType<$U>? U, - }) { - T ??= jni.lowestCommonSuperType([ - ($parent.$type as $GrandParent_ParentType).T, - ]) as jni.JObjType<$T>; - S ??= jni.lowestCommonSuperType([ - ($parent.$type as $GrandParent_ParentType).S, - ]) as jni.JObjType<$S>; - U ??= jni.lowestCommonSuperType([ - newValue.$type, - ]) as jni.JObjType<$U>; - return GrandParent_Parent_Child.fromReference(T, S, U, - _new0($parent.reference.pointer, newValue.reference.pointer).reference); - } -} - -final class $GrandParent_Parent_ChildType<$T extends jni.JObject, - $S extends jni.JObject, $U extends jni.JObject> - extends jni.JObjType> { - final jni.JObjType<$T> T; - final jni.JObjType<$S> S; - final jni.JObjType<$U> U; - - const $GrandParent_Parent_ChildType( - this.T, - this.S, - this.U, - ); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/generics/GrandParent$Parent$Child;"; - - @override - GrandParent_Parent_Child<$T, $S, $U> fromReference( - jni.JReference reference) => - GrandParent_Parent_Child.fromReference(T, S, U, reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => Object.hash($GrandParent_Parent_ChildType, T, S, U); - - @override - bool operator ==(Object other) { - return other.runtimeType == ($GrandParent_Parent_ChildType<$T, $S, $U>) && - other is $GrandParent_Parent_ChildType<$T, $S, $U> && - T == other.T && - S == other.S && - U == other.U; - } -} - -/// from: com.github.dart_lang.jnigen.generics.GrandParent$Parent -class GrandParent_Parent<$T extends jni.JObject, $S extends jni.JObject> - extends jni.JObject { - @override - late final jni.JObjType> $type = type(T, S); - - final jni.JObjType<$T> T; - final jni.JObjType<$S> S; - - GrandParent_Parent.fromReference( - this.T, - this.S, - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static $GrandParent_ParentType<$T, $S> - type<$T extends jni.JObject, $S extends jni.JObject>( - jni.JObjType<$T> T, - jni.JObjType<$S> S, - ) { - return $GrandParent_ParentType( - T, - S, - ); - } - - static final _get_parentValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_GrandParent_Parent__parentValue") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_parentValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, ffi.Pointer)>>( - "set_GrandParent_Parent__parentValue") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: public T parentValue - /// The returned object must be released after use, by calling the [release] method. - $T get parentValue => _get_parentValue(reference.pointer).object(T); - - /// from: public T parentValue - /// The returned object must be released after use, by calling the [release] method. - set parentValue($T value) => - _set_parentValue(reference.pointer, value.reference.pointer).check(); - - static final _get_value = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_GrandParent_Parent__value") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_value = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(jni.JObjectPtr, - ffi.Pointer)>>("set_GrandParent_Parent__value") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: public S value - /// The returned object must be released after use, by calling the [release] method. - $S get value => _get_value(reference.pointer).object(S); - - /// from: public S value - /// The returned object must be released after use, by calling the [release] method. - set value($S value) => - _set_value(reference.pointer, value.reference.pointer).check(); - - static final _new0 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("GrandParent_Parent__new0") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public void (com.github.dart_lang.jnigen.generics.GrandParent $parent, S newValue) - /// The returned object must be released after use, by calling the [release] method. - factory GrandParent_Parent( - GrandParent<$T> $parent, - $S newValue, { - jni.JObjType<$T>? T, - jni.JObjType<$S>? S, - }) { - T ??= jni.lowestCommonSuperType([ - ($parent.$type as $GrandParentType).T, - ]) as jni.JObjType<$T>; - S ??= jni.lowestCommonSuperType([ - newValue.$type, - ]) as jni.JObjType<$S>; - return GrandParent_Parent.fromReference(T, S, - _new0($parent.reference.pointer, newValue.reference.pointer).reference); - } -} - -final class $GrandParent_ParentType<$T extends jni.JObject, - $S extends jni.JObject> extends jni.JObjType> { - final jni.JObjType<$T> T; - final jni.JObjType<$S> S; - - const $GrandParent_ParentType( - this.T, - this.S, - ); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/generics/GrandParent$Parent;"; - - @override - GrandParent_Parent<$T, $S> fromReference(jni.JReference reference) => - GrandParent_Parent.fromReference(T, S, reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => Object.hash($GrandParent_ParentType, T, S); - - @override - bool operator ==(Object other) { - return other.runtimeType == ($GrandParent_ParentType<$T, $S>) && - other is $GrandParent_ParentType<$T, $S> && - T == other.T && - S == other.S; - } -} - -/// from: com.github.dart_lang.jnigen.generics.GrandParent$StaticParent$Child -class GrandParent_StaticParent_Child<$S extends jni.JObject, - $U extends jni.JObject> extends jni.JObject { - @override - late final jni.JObjType> $type = - type(S, U); - - final jni.JObjType<$S> S; - final jni.JObjType<$U> U; - - GrandParent_StaticParent_Child.fromReference( - this.S, - this.U, - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static $GrandParent_StaticParent_ChildType<$S, $U> - type<$S extends jni.JObject, $U extends jni.JObject>( - jni.JObjType<$S> S, - jni.JObjType<$U> U, - ) { - return $GrandParent_StaticParent_ChildType( - S, - U, - ); - } - - static final _get_parentValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_GrandParent_StaticParent_Child__parentValue") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_parentValue = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, ffi.Pointer)>>( - "set_GrandParent_StaticParent_Child__parentValue") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: public S parentValue - /// The returned object must be released after use, by calling the [release] method. - $S get parentValue => _get_parentValue(reference.pointer).object(S); - - /// from: public S parentValue - /// The returned object must be released after use, by calling the [release] method. - set parentValue($S value) => - _set_parentValue(reference.pointer, value.reference.pointer).check(); - - static final _get_value = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_GrandParent_StaticParent_Child__value") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_value = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, ffi.Pointer)>>( - "set_GrandParent_StaticParent_Child__value") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: public U value - /// The returned object must be released after use, by calling the [release] method. - $U get value => _get_value(reference.pointer).object(U); - - /// from: public U value - /// The returned object must be released after use, by calling the [release] method. - set value($U value) => - _set_value(reference.pointer, value.reference.pointer).check(); - - static final _new0 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>( - "GrandParent_StaticParent_Child__new0") - .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - /// from: public void (com.github.dart_lang.jnigen.generics.GrandParent$StaticParent $parent, S parentValue, U value) - /// The returned object must be released after use, by calling the [release] method. - factory GrandParent_StaticParent_Child( - GrandParent_StaticParent<$S> $parent, - $S parentValue, - $U value, { - jni.JObjType<$S>? S, - jni.JObjType<$U>? U, - }) { - S ??= jni.lowestCommonSuperType([ - parentValue.$type, - ($parent.$type as $GrandParent_StaticParentType).S, - ]) as jni.JObjType<$S>; - U ??= jni.lowestCommonSuperType([ - value.$type, - ]) as jni.JObjType<$U>; - return GrandParent_StaticParent_Child.fromReference( - S, - U, - _new0($parent.reference.pointer, parentValue.reference.pointer, - value.reference.pointer) - .reference); - } -} - -final class $GrandParent_StaticParent_ChildType<$S extends jni.JObject, - $U extends jni.JObject> - extends jni.JObjType> { - final jni.JObjType<$S> S; - final jni.JObjType<$U> U; - - const $GrandParent_StaticParent_ChildType( - this.S, - this.U, - ); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/generics/GrandParent$StaticParent$Child;"; - - @override - GrandParent_StaticParent_Child<$S, $U> fromReference( - jni.JReference reference) => - GrandParent_StaticParent_Child.fromReference(S, U, reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => Object.hash($GrandParent_StaticParent_ChildType, S, U); - - @override - bool operator ==(Object other) { - return other.runtimeType == ($GrandParent_StaticParent_ChildType<$S, $U>) && - other is $GrandParent_StaticParent_ChildType<$S, $U> && - S == other.S && - U == other.U; - } -} - -/// from: com.github.dart_lang.jnigen.generics.GrandParent$StaticParent -class GrandParent_StaticParent<$S extends jni.JObject> extends jni.JObject { - @override - late final jni.JObjType> $type = type(S); - - final jni.JObjType<$S> S; - - GrandParent_StaticParent.fromReference( - this.S, - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static $GrandParent_StaticParentType<$S> type<$S extends jni.JObject>( - jni.JObjType<$S> S, - ) { - return $GrandParent_StaticParentType( - S, - ); - } - - static final _get_value = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_GrandParent_StaticParent__value") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_value = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, ffi.Pointer)>>( - "set_GrandParent_StaticParent__value") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: public S value - /// The returned object must be released after use, by calling the [release] method. - $S get value => _get_value(reference.pointer).object(S); - - /// from: public S value - /// The returned object must be released after use, by calling the [release] method. - set value($S value) => - _set_value(reference.pointer, value.reference.pointer).check(); - - static final _new0 = jniLookup< - ffi - .NativeFunction)>>( - "GrandParent_StaticParent__new0") - .asFunction)>(); - - /// from: public void (S value) - /// The returned object must be released after use, by calling the [release] method. - factory GrandParent_StaticParent( - $S value, { - jni.JObjType<$S>? S, - }) { - S ??= jni.lowestCommonSuperType([ - value.$type, - ]) as jni.JObjType<$S>; - return GrandParent_StaticParent.fromReference( - S, _new0(value.reference.pointer).reference); - } -} - -final class $GrandParent_StaticParentType<$S extends jni.JObject> - extends jni.JObjType> { - final jni.JObjType<$S> S; - - const $GrandParent_StaticParentType( - this.S, - ); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/generics/GrandParent$StaticParent;"; - - @override - GrandParent_StaticParent<$S> fromReference(jni.JReference reference) => - GrandParent_StaticParent.fromReference(S, reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => Object.hash($GrandParent_StaticParentType, S); - - @override - bool operator ==(Object other) { - return other.runtimeType == ($GrandParent_StaticParentType<$S>) && - other is $GrandParent_StaticParentType<$S> && - S == other.S; - } -} - -/// from: com.github.dart_lang.jnigen.generics.GrandParent -class GrandParent<$T extends jni.JObject> extends jni.JObject { - @override - late final jni.JObjType> $type = type(T); - - final jni.JObjType<$T> T; - - GrandParent.fromReference( - this.T, - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static $GrandParentType<$T> type<$T extends jni.JObject>( - jni.JObjType<$T> T, - ) { - return $GrandParentType( - T, - ); - } - - static final _get_value = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_GrandParent__value") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_value = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(jni.JObjectPtr, - ffi.Pointer)>>("set_GrandParent__value") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: public T value - /// The returned object must be released after use, by calling the [release] method. - $T get value => _get_value(reference.pointer).object(T); - - /// from: public T value - /// The returned object must be released after use, by calling the [release] method. - set value($T value) => - _set_value(reference.pointer, value.reference.pointer).check(); - - static final _new0 = jniLookup< - ffi - .NativeFunction)>>( - "GrandParent__new0") - .asFunction)>(); - - /// from: public void (T value) - /// The returned object must be released after use, by calling the [release] method. - factory GrandParent( - $T value, { - jni.JObjType<$T>? T, - }) { - T ??= jni.lowestCommonSuperType([ - value.$type, - ]) as jni.JObjType<$T>; - return GrandParent.fromReference( - T, _new0(value.reference.pointer).reference); - } - - static final _stringParent = jniLookup< - ffi - .NativeFunction)>>( - "GrandParent__stringParent") - .asFunction)>(); - - /// from: public com.github.dart_lang.jnigen.generics.GrandParent.Parent stringParent() - /// The returned object must be released after use, by calling the [release] method. - GrandParent_Parent stringParent() { - return _stringParent(reference.pointer).object( - const $GrandParent_ParentType(jni.JObjectType(), jni.JStringType())); - } - - static final _varParent = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("GrandParent__varParent") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public com.github.dart_lang.jnigen.generics.GrandParent.Parent varParent(S nestedValue) - /// The returned object must be released after use, by calling the [release] method. - GrandParent_Parent varParent<$S extends jni.JObject>( - $S nestedValue, { - jni.JObjType<$S>? S, - }) { - S ??= jni.lowestCommonSuperType([ - nestedValue.$type, - ]) as jni.JObjType<$S>; - return _varParent(reference.pointer, nestedValue.reference.pointer) - .object($GrandParent_ParentType(const jni.JObjectType(), S)); - } - - static final _stringStaticParent = - jniLookup>( - "GrandParent__stringStaticParent") - .asFunction(); - - /// from: static public com.github.dart_lang.jnigen.generics.GrandParent.StaticParent stringStaticParent() - /// The returned object must be released after use, by calling the [release] method. - static GrandParent_StaticParent stringStaticParent() { - return _stringStaticParent() - .object(const $GrandParent_StaticParentType(jni.JStringType())); - } - - static final _varStaticParent = jniLookup< - ffi - .NativeFunction)>>( - "GrandParent__varStaticParent") - .asFunction)>(); - - /// from: static public com.github.dart_lang.jnigen.generics.GrandParent.StaticParent varStaticParent(S value) - /// The returned object must be released after use, by calling the [release] method. - static GrandParent_StaticParent<$S> varStaticParent<$S extends jni.JObject>( - $S value, { - jni.JObjType<$S>? S, - }) { - S ??= jni.lowestCommonSuperType([ - value.$type, - ]) as jni.JObjType<$S>; - return _varStaticParent(value.reference.pointer) - .object($GrandParent_StaticParentType(S)); - } - - static final _staticParentWithSameType = jniLookup< - ffi - .NativeFunction)>>( - "GrandParent__staticParentWithSameType") - .asFunction)>(); - - /// from: public com.github.dart_lang.jnigen.generics.GrandParent.StaticParent staticParentWithSameType() - /// The returned object must be released after use, by calling the [release] method. - GrandParent_StaticParent<$T> staticParentWithSameType() { - return _staticParentWithSameType(reference.pointer) - .object($GrandParent_StaticParentType(T)); - } -} - -final class $GrandParentType<$T extends jni.JObject> - extends jni.JObjType> { - final jni.JObjType<$T> T; - - const $GrandParentType( - this.T, - ); - - @override - String get signature => r"Lcom/github/dart_lang/jnigen/generics/GrandParent;"; - - @override - GrandParent<$T> fromReference(jni.JReference reference) => - GrandParent.fromReference(T, reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => Object.hash($GrandParentType, T); - - @override - bool operator ==(Object other) { - return other.runtimeType == ($GrandParentType<$T>) && - other is $GrandParentType<$T> && - T == other.T; - } -} - -/// from: com.github.dart_lang.jnigen.generics.MyMap$MyEntry -class MyMap_MyEntry<$K extends jni.JObject, $V extends jni.JObject> - extends jni.JObject { - @override - late final jni.JObjType> $type = type(K, V); - - final jni.JObjType<$K> K; - final jni.JObjType<$V> V; - - MyMap_MyEntry.fromReference( - this.K, - this.V, - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static $MyMap_MyEntryType<$K, $V> - type<$K extends jni.JObject, $V extends jni.JObject>( - jni.JObjType<$K> K, - jni.JObjType<$V> V, - ) { - return $MyMap_MyEntryType( - K, - V, - ); - } - - static final _get_key = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_MyMap_MyEntry__key") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_key = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(jni.JObjectPtr, - ffi.Pointer)>>("set_MyMap_MyEntry__key") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: public K key - /// The returned object must be released after use, by calling the [release] method. - $K get key => _get_key(reference.pointer).object(K); - - /// from: public K key - /// The returned object must be released after use, by calling the [release] method. - set key($K value) => - _set_key(reference.pointer, value.reference.pointer).check(); - - static final _get_value = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_MyMap_MyEntry__value") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_value = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(jni.JObjectPtr, - ffi.Pointer)>>("set_MyMap_MyEntry__value") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: public V value - /// The returned object must be released after use, by calling the [release] method. - $V get value => _get_value(reference.pointer).object(V); - - /// from: public V value - /// The returned object must be released after use, by calling the [release] method. - set value($V value) => - _set_value(reference.pointer, value.reference.pointer).check(); - - static final _new0 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>("MyMap_MyEntry__new0") - .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - /// from: public void (com.github.dart_lang.jnigen.generics.MyMap $parent, K key, V value) - /// The returned object must be released after use, by calling the [release] method. - factory MyMap_MyEntry( - MyMap<$K, $V> $parent, - $K key, - $V value, { - jni.JObjType<$K>? K, - jni.JObjType<$V>? V, - }) { - K ??= jni.lowestCommonSuperType([ - key.$type, - ($parent.$type as $MyMapType).K, - ]) as jni.JObjType<$K>; - V ??= jni.lowestCommonSuperType([ - value.$type, - ($parent.$type as $MyMapType).V, - ]) as jni.JObjType<$V>; - return MyMap_MyEntry.fromReference( - K, - V, - _new0($parent.reference.pointer, key.reference.pointer, - value.reference.pointer) - .reference); - } -} - -final class $MyMap_MyEntryType<$K extends jni.JObject, $V extends jni.JObject> - extends jni.JObjType> { - final jni.JObjType<$K> K; - final jni.JObjType<$V> V; - - const $MyMap_MyEntryType( - this.K, - this.V, - ); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/generics/MyMap$MyEntry;"; - - @override - MyMap_MyEntry<$K, $V> fromReference(jni.JReference reference) => - MyMap_MyEntry.fromReference(K, V, reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => Object.hash($MyMap_MyEntryType, K, V); - - @override - bool operator ==(Object other) { - return other.runtimeType == ($MyMap_MyEntryType<$K, $V>) && - other is $MyMap_MyEntryType<$K, $V> && - K == other.K && - V == other.V; - } -} - -/// from: com.github.dart_lang.jnigen.generics.MyMap -class MyMap<$K extends jni.JObject, $V extends jni.JObject> - extends jni.JObject { - @override - late final jni.JObjType> $type = type(K, V); - - final jni.JObjType<$K> K; - final jni.JObjType<$V> V; - - MyMap.fromReference( - this.K, - this.V, - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static $MyMapType<$K, $V> - type<$K extends jni.JObject, $V extends jni.JObject>( - jni.JObjType<$K> K, - jni.JObjType<$V> V, - ) { - return $MyMapType( - K, - V, - ); - } - - static final _new0 = - jniLookup>("MyMap__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory MyMap({ - required jni.JObjType<$K> K, - required jni.JObjType<$V> V, - }) { - return MyMap.fromReference(K, V, _new0().reference); - } - - static final _get0 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>>("MyMap__get0") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public V get(K key) - /// The returned object must be released after use, by calling the [release] method. - $V get0( - $K key, - ) { - return _get0(reference.pointer, key.reference.pointer).object(V); - } - - static final _put = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>("MyMap__put") - .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - /// from: public V put(K key, V value) - /// The returned object must be released after use, by calling the [release] method. - $V put( - $K key, - $V value, - ) { - return _put( - reference.pointer, key.reference.pointer, value.reference.pointer) - .object(V); - } - - static final _entryStack = jniLookup< - ffi - .NativeFunction)>>( - "MyMap__entryStack") - .asFunction)>(); - - /// from: public com.github.dart_lang.jnigen.generics.MyStack.MyEntry> entryStack() - /// The returned object must be released after use, by calling the [release] method. - MyStack> entryStack() { - return _entryStack(reference.pointer).object(const $MyStackType( - $MyMap_MyEntryType(jni.JObjectType(), jni.JObjectType()))); - } -} - -final class $MyMapType<$K extends jni.JObject, $V extends jni.JObject> - extends jni.JObjType> { - final jni.JObjType<$K> K; - final jni.JObjType<$V> V; - - const $MyMapType( - this.K, - this.V, - ); - - @override - String get signature => r"Lcom/github/dart_lang/jnigen/generics/MyMap;"; - - @override - MyMap<$K, $V> fromReference(jni.JReference reference) => - MyMap.fromReference(K, V, reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => Object.hash($MyMapType, K, V); - - @override - bool operator ==(Object other) { - return other.runtimeType == ($MyMapType<$K, $V>) && - other is $MyMapType<$K, $V> && - K == other.K && - V == other.V; - } -} - -/// from: com.github.dart_lang.jnigen.generics.MyStack -class MyStack<$T extends jni.JObject> extends jni.JObject { - @override - late final jni.JObjType> $type = type(T); - - final jni.JObjType<$T> T; - - MyStack.fromReference( - this.T, - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static $MyStackType<$T> type<$T extends jni.JObject>( - jni.JObjType<$T> T, - ) { - return $MyStackType( - T, - ); - } - - static final _new0 = - jniLookup>("MyStack__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory MyStack({ - required jni.JObjType<$T> T, - }) { - return MyStack.fromReference(T, _new0().reference); - } - - static final _fromArray = jniLookup< - ffi - .NativeFunction)>>( - "MyStack__fromArray") - .asFunction)>(); - - /// from: static public com.github.dart_lang.jnigen.generics.MyStack fromArray(T[] arr) - /// The returned object must be released after use, by calling the [release] method. - static MyStack<$T> fromArray<$T extends jni.JObject>( - jni.JArray<$T> arr, { - jni.JObjType<$T>? T, - }) { - T ??= jni.lowestCommonSuperType([ - ((arr.$type as jni.JArrayType).elementType as jni.JObjType), - ]) as jni.JObjType<$T>; - return _fromArray(arr.reference.pointer).object($MyStackType(T)); - } - - static final _fromArrayOfArrayOfGrandParents = jniLookup< - ffi - .NativeFunction)>>( - "MyStack__fromArrayOfArrayOfGrandParents") - .asFunction)>(); - - /// from: static public com.github.dart_lang.jnigen.generics.MyStack fromArrayOfArrayOfGrandParents(com.github.dart_lang.jnigen.generics.GrandParent[][] arr) - /// The returned object must be released after use, by calling the [release] method. - static MyStack<$S> fromArrayOfArrayOfGrandParents<$S extends jni.JObject>( - jni.JArray>> arr, { - jni.JObjType<$S>? S, - }) { - S ??= jni.lowestCommonSuperType([ - (((((arr.$type as jni.JArrayType).elementType as jni.JObjType) - as jni.JArrayType) - .elementType as jni.JObjType) as $GrandParentType) - .T, - ]) as jni.JObjType<$S>; - return _fromArrayOfArrayOfGrandParents(arr.reference.pointer) - .object($MyStackType(S)); - } - - static final _of = - jniLookup>("MyStack__of") - .asFunction(); - - /// from: static public com.github.dart_lang.jnigen.generics.MyStack of() - /// The returned object must be released after use, by calling the [release] method. - static MyStack<$T> of<$T extends jni.JObject>({ - required jni.JObjType<$T> T, - }) { - return _of().object($MyStackType(T)); - } - - static final _of1 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer)>>("MyStack__of1") - .asFunction)>(); - - /// from: static public com.github.dart_lang.jnigen.generics.MyStack of(T obj) - /// The returned object must be released after use, by calling the [release] method. - static MyStack<$T> of1<$T extends jni.JObject>( - $T obj, { - jni.JObjType<$T>? T, - }) { - T ??= jni.lowestCommonSuperType([ - obj.$type, - ]) as jni.JObjType<$T>; - return _of1(obj.reference.pointer).object($MyStackType(T)); - } - - static final _of2 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("MyStack__of2") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: static public com.github.dart_lang.jnigen.generics.MyStack of(T obj, T obj2) - /// The returned object must be released after use, by calling the [release] method. - static MyStack<$T> of2<$T extends jni.JObject>( - $T obj, - $T obj2, { - jni.JObjType<$T>? T, - }) { - T ??= jni.lowestCommonSuperType([ - obj2.$type, - obj.$type, - ]) as jni.JObjType<$T>; - return _of2(obj.reference.pointer, obj2.reference.pointer) - .object($MyStackType(T)); - } - - static final _push = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("MyStack__push") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public void push(T item) - void push( - $T item, - ) { - _push(reference.pointer, item.reference.pointer).check(); - } - - static final _pop = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer)>>("MyStack__pop") - .asFunction)>(); - - /// from: public T pop() - /// The returned object must be released after use, by calling the [release] method. - $T pop() { - return _pop(reference.pointer).object(T); - } - - static final _size = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer)>>("MyStack__size") - .asFunction)>(); - - /// from: public int size() - int size() { - return _size(reference.pointer).integer; - } -} - -final class $MyStackType<$T extends jni.JObject> - extends jni.JObjType> { - final jni.JObjType<$T> T; - - const $MyStackType( - this.T, - ); - - @override - String get signature => r"Lcom/github/dart_lang/jnigen/generics/MyStack;"; - - @override - MyStack<$T> fromReference(jni.JReference reference) => - MyStack.fromReference(T, reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => Object.hash($MyStackType, T); - - @override - bool operator ==(Object other) { - return other.runtimeType == ($MyStackType<$T>) && - other is $MyStackType<$T> && - T == other.T; - } -} - -/// from: com.github.dart_lang.jnigen.generics.StringKeyedMap -class StringKeyedMap<$V extends jni.JObject> extends MyMap { - @override - late final jni.JObjType> $type = type(V); - - final jni.JObjType<$V> V; - - StringKeyedMap.fromReference( - this.V, - jni.JReference reference, - ) : super.fromReference(const jni.JStringType(), V, reference); - - /// The type which includes information such as the signature of this class. - static $StringKeyedMapType<$V> type<$V extends jni.JObject>( - jni.JObjType<$V> V, - ) { - return $StringKeyedMapType( - V, - ); - } - - static final _new0 = jniLookup>( - "StringKeyedMap__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory StringKeyedMap({ - required jni.JObjType<$V> V, - }) { - return StringKeyedMap.fromReference(V, _new0().reference); - } -} - -final class $StringKeyedMapType<$V extends jni.JObject> - extends jni.JObjType> { - final jni.JObjType<$V> V; - - const $StringKeyedMapType( - this.V, - ); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/generics/StringKeyedMap;"; - - @override - StringKeyedMap<$V> fromReference(jni.JReference reference) => - StringKeyedMap.fromReference(V, reference); - - @override - jni.JObjType get superType => $MyMapType(const jni.JStringType(), V); - - @override - final superCount = 2; - - @override - int get hashCode => Object.hash($StringKeyedMapType, V); - - @override - bool operator ==(Object other) { - return other.runtimeType == ($StringKeyedMapType<$V>) && - other is $StringKeyedMapType<$V> && - V == other.V; - } -} - -/// from: com.github.dart_lang.jnigen.generics.StringStack -class StringStack extends MyStack { - @override - late final jni.JObjType $type = type; - - StringStack.fromReference( - jni.JReference reference, - ) : super.fromReference(const jni.JStringType(), reference); - - /// The type which includes information such as the signature of this class. - static const type = $StringStackType(); - static final _new0 = jniLookup>( - "StringStack__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory StringStack() { - return StringStack.fromReference(_new0().reference); - } -} - -final class $StringStackType extends jni.JObjType { - const $StringStackType(); - - @override - String get signature => r"Lcom/github/dart_lang/jnigen/generics/StringStack;"; - - @override - StringStack fromReference(jni.JReference reference) => - StringStack.fromReference(reference); - - @override - jni.JObjType get superType => const $MyStackType(jni.JStringType()); - - @override - final superCount = 2; - - @override - int get hashCode => ($StringStackType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($StringStackType) && other is $StringStackType; - } -} - -/// from: com.github.dart_lang.jnigen.generics.StringValuedMap -class StringValuedMap<$K extends jni.JObject> extends MyMap<$K, jni.JString> { - @override - late final jni.JObjType> $type = type(K); - - final jni.JObjType<$K> K; - - StringValuedMap.fromReference( - this.K, - jni.JReference reference, - ) : super.fromReference(K, const jni.JStringType(), reference); - - /// The type which includes information such as the signature of this class. - static $StringValuedMapType<$K> type<$K extends jni.JObject>( - jni.JObjType<$K> K, - ) { - return $StringValuedMapType( - K, - ); - } - - static final _new0 = jniLookup>( - "StringValuedMap__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory StringValuedMap({ - required jni.JObjType<$K> K, - }) { - return StringValuedMap.fromReference(K, _new0().reference); - } -} - -final class $StringValuedMapType<$K extends jni.JObject> - extends jni.JObjType> { - final jni.JObjType<$K> K; - - const $StringValuedMapType( - this.K, - ); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/generics/StringValuedMap;"; - - @override - StringValuedMap<$K> fromReference(jni.JReference reference) => - StringValuedMap.fromReference(K, reference); - - @override - jni.JObjType get superType => $MyMapType(K, const jni.JStringType()); - - @override - final superCount = 2; - - @override - int get hashCode => Object.hash($StringValuedMapType, K); - - @override - bool operator ==(Object other) { - return other.runtimeType == ($StringValuedMapType<$K>) && - other is $StringValuedMapType<$K> && - K == other.K; - } -} - -/// from: com.github.dart_lang.jnigen.interfaces.MyInterface -class MyInterface<$T extends jni.JObject> extends jni.JObject { - @override - late final jni.JObjType> $type = type(T); - - final jni.JObjType<$T> T; - - MyInterface.fromReference( - this.T, - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static $MyInterfaceType<$T> type<$T extends jni.JObject>( - jni.JObjType<$T> T, - ) { - return $MyInterfaceType( - T, - ); - } - - static final _voidCallback = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("MyInterface__voidCallback") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public abstract void voidCallback(java.lang.String s) - void voidCallback( - jni.JString s, - ) { - _voidCallback(reference.pointer, s.reference.pointer).check(); - } - - static final _stringCallback = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("MyInterface__stringCallback") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public abstract java.lang.String stringCallback(java.lang.String s) - /// The returned object must be released after use, by calling the [release] method. - jni.JString stringCallback( - jni.JString s, - ) { - return _stringCallback(reference.pointer, s.reference.pointer) - .object(const jni.JStringType()); - } - - static final _varCallback = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer, - ffi.Pointer)>>("MyInterface__varCallback") - .asFunction< - jni.JniResult Function( - ffi.Pointer, ffi.Pointer)>(); - - /// from: public abstract T varCallback(T t) - /// The returned object must be released after use, by calling the [release] method. - $T varCallback( - $T t, - ) { - return _varCallback(reference.pointer, t.reference.pointer).object(T); - } - - static final _manyPrimitives = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Int32, - ffi.Uint8, - ffi.Uint16, - ffi.Double)>>("MyInterface__manyPrimitives") - .asFunction< - jni.JniResult Function( - ffi.Pointer, int, int, int, double)>(); - - /// from: public abstract long manyPrimitives(int a, boolean b, char c, double d) - int manyPrimitives( - int a, - bool b, - int c, - double d, - ) { - return _manyPrimitives(reference.pointer, a, b ? 1 : 0, c, d).long; - } - - /// Maps a specific port to the implemented interface. - static final Map _$impls = {}; - ReceivePort? _$p; - - static jni.JObjectPtr _$invoke( - int port, - jni.JObjectPtr descriptor, - jni.JObjectPtr args, - ) { - return _$invokeMethod( - port, - $MethodInvocation.fromAddresses( - 0, - descriptor.address, - args.address, - ), - ); - } - - static final ffi.Pointer< - ffi.NativeFunction< - jni.JObjectPtr Function( - ffi.Uint64, jni.JObjectPtr, jni.JObjectPtr)>> - _$invokePointer = ffi.Pointer.fromFunction(_$invoke); - - static ffi.Pointer _$invokeMethod( - int $p, - $MethodInvocation $i, - ) { - try { - final $d = $i.methodDescriptor.toDartString(releaseOriginal: true); - final $a = $i.args; - if ($d == r"voidCallback(Ljava/lang/String;)V") { - _$impls[$p]!.voidCallback( - $a[0].castTo(const jni.JStringType(), releaseOriginal: true), - ); - return jni.nullptr; - } - if ($d == r"stringCallback(Ljava/lang/String;)Ljava/lang/String;") { - final $r = _$impls[$p]!.stringCallback( - $a[0].castTo(const jni.JStringType(), releaseOriginal: true), - ); - return ($r as jni.JObject) - .castTo(const jni.JObjectType()) - .reference - .toPointer(); - } - if ($d == r"varCallback(Ljava/lang/Object;)Ljava/lang/Object;") { - final $r = _$impls[$p]!.varCallback( - $a[0].castTo(_$impls[$p]!.T, releaseOriginal: true), - ); - return ($r as jni.JObject) - .castTo(const jni.JObjectType()) - .reference - .toPointer(); - } - if ($d == r"manyPrimitives(IZCD)J") { - final $r = _$impls[$p]!.manyPrimitives( - $a[0] - .castTo(const jni.JIntegerType(), releaseOriginal: true) - .intValue(releaseOriginal: true), - $a[1] - .castTo(const jni.JBooleanType(), releaseOriginal: true) - .booleanValue(releaseOriginal: true), - $a[2] - .castTo(const jni.JCharacterType(), releaseOriginal: true) - .charValue(releaseOriginal: true), - $a[3] - .castTo(const jni.JDoubleType(), releaseOriginal: true) - .doubleValue(releaseOriginal: true), - ); - return jni.JLong($r).reference.toPointer(); - } - } catch (e) { - return ProtectedJniExtensions.newDartException(e.toString()); - } - return jni.nullptr; - } - - factory MyInterface.implement( - $MyInterfaceImpl<$T> $impl, - ) { - final $p = ReceivePort(); - final $x = MyInterface.fromReference( - $impl.T, - ProtectedJniExtensions.newPortProxy( - r"com.github.dart_lang.jnigen.interfaces.MyInterface", - $p, - _$invokePointer, - ), - ).._$p = $p; - final $a = $p.sendPort.nativePort; - _$impls[$a] = $impl; - $p.listen(($m) { - if ($m == null) { - _$impls.remove($p.sendPort.nativePort); - $p.close(); - return; - } - final $i = $MethodInvocation.fromMessage($m as List); - final $r = _$invokeMethod($p.sendPort.nativePort, $i); - ProtectedJniExtensions.returnResult($i.result, $r); - }); - return $x; - } - static Map get $impls => _$impls; -} - -abstract interface class $MyInterfaceImpl<$T extends jni.JObject> { - factory $MyInterfaceImpl({ - required jni.JObjType<$T> T, - required void Function(jni.JString s) voidCallback, - required jni.JString Function(jni.JString s) stringCallback, - required $T Function($T t) varCallback, - required int Function(int a, bool b, int c, double d) manyPrimitives, - }) = _$MyInterfaceImpl; - - jni.JObjType<$T> get T; - - void voidCallback(jni.JString s); - jni.JString stringCallback(jni.JString s); - $T varCallback($T t); - int manyPrimitives(int a, bool b, int c, double d); -} - -class _$MyInterfaceImpl<$T extends jni.JObject> - implements $MyInterfaceImpl<$T> { - _$MyInterfaceImpl({ - required this.T, - required void Function(jni.JString s) voidCallback, - required jni.JString Function(jni.JString s) stringCallback, - required $T Function($T t) varCallback, - required int Function(int a, bool b, int c, double d) manyPrimitives, - }) : _voidCallback = voidCallback, - _stringCallback = stringCallback, - _varCallback = varCallback, - _manyPrimitives = manyPrimitives; - - @override - final jni.JObjType<$T> T; - - final void Function(jni.JString s) _voidCallback; - final jni.JString Function(jni.JString s) _stringCallback; - final $T Function($T t) _varCallback; - final int Function(int a, bool b, int c, double d) _manyPrimitives; - - void voidCallback(jni.JString s) { - return _voidCallback(s); - } - - jni.JString stringCallback(jni.JString s) { - return _stringCallback(s); - } - - $T varCallback($T t) { - return _varCallback(t); - } - - int manyPrimitives(int a, bool b, int c, double d) { - return _manyPrimitives(a, b, c, d); - } -} - -final class $MyInterfaceType<$T extends jni.JObject> - extends jni.JObjType> { - final jni.JObjType<$T> T; - - const $MyInterfaceType( - this.T, - ); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/interfaces/MyInterface;"; - - @override - MyInterface<$T> fromReference(jni.JReference reference) => - MyInterface.fromReference(T, reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => Object.hash($MyInterfaceType, T); - - @override - bool operator ==(Object other) { - return other.runtimeType == ($MyInterfaceType<$T>) && - other is $MyInterfaceType<$T> && - T == other.T; - } -} - -/// from: com.github.dart_lang.jnigen.interfaces.MyInterfaceConsumer -class MyInterfaceConsumer extends jni.JObject { - @override - late final jni.JObjType $type = type; - - MyInterfaceConsumer.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $MyInterfaceConsumerType(); - static final _new0 = jniLookup>( - "MyInterfaceConsumer__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory MyInterfaceConsumer() { - return MyInterfaceConsumer.fromReference(_new0().reference); - } - - static final _consumeOnAnotherThread = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Uint8, - ffi.Uint16, - ffi.Double, - ffi.Pointer)>>( - "MyInterfaceConsumer__consumeOnAnotherThread") - .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - int, int, int, double, ffi.Pointer)>(); - - /// from: static public void consumeOnAnotherThread(com.github.dart_lang.jnigen.interfaces.MyInterface myInterface, java.lang.String s, int a, boolean b, char c, double d, T t) - static void consumeOnAnotherThread<$T extends jni.JObject>( - MyInterface<$T> myInterface, - jni.JString s, - int a, - bool b, - int c, - double d, - $T t, { - jni.JObjType<$T>? T, - }) { - T ??= jni.lowestCommonSuperType([ - t.$type, - (myInterface.$type as $MyInterfaceType).T, - ]) as jni.JObjType<$T>; - _consumeOnAnotherThread(myInterface.reference.pointer, s.reference.pointer, - a, b ? 1 : 0, c, d, t.reference.pointer) - .check(); - } - - static final _consumeOnSameThread = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Uint8, - ffi.Uint16, - ffi.Double, - ffi.Pointer)>>( - "MyInterfaceConsumer__consumeOnSameThread") - .asFunction< - jni.JniResult Function(ffi.Pointer, ffi.Pointer, - int, int, int, double, ffi.Pointer)>(); - - /// from: static public void consumeOnSameThread(com.github.dart_lang.jnigen.interfaces.MyInterface myInterface, java.lang.String s, int a, boolean b, char c, double d, T t) - static void consumeOnSameThread<$T extends jni.JObject>( - MyInterface<$T> myInterface, - jni.JString s, - int a, - bool b, - int c, - double d, - $T t, { - jni.JObjType<$T>? T, - }) { - T ??= jni.lowestCommonSuperType([ - t.$type, - (myInterface.$type as $MyInterfaceType).T, - ]) as jni.JObjType<$T>; - _consumeOnSameThread(myInterface.reference.pointer, s.reference.pointer, a, - b ? 1 : 0, c, d, t.reference.pointer) - .check(); - } -} - -final class $MyInterfaceConsumerType extends jni.JObjType { - const $MyInterfaceConsumerType(); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/interfaces/MyInterfaceConsumer;"; - - @override - MyInterfaceConsumer fromReference(jni.JReference reference) => - MyInterfaceConsumer.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($MyInterfaceConsumerType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($MyInterfaceConsumerType) && - other is $MyInterfaceConsumerType; - } -} - -/// from: com.github.dart_lang.jnigen.interfaces.MyRunnable -class MyRunnable extends jni.JObject { - @override - late final jni.JObjType $type = type; - - MyRunnable.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $MyRunnableType(); - static final _run = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer)>>("MyRunnable__run") - .asFunction)>(); - - /// from: public abstract void run() - void run() { - _run(reference.pointer).check(); - } - - /// Maps a specific port to the implemented interface. - static final Map _$impls = {}; - ReceivePort? _$p; - - static jni.JObjectPtr _$invoke( - int port, - jni.JObjectPtr descriptor, - jni.JObjectPtr args, - ) { - return _$invokeMethod( - port, - $MethodInvocation.fromAddresses( - 0, - descriptor.address, - args.address, - ), - ); - } - - static final ffi.Pointer< - ffi.NativeFunction< - jni.JObjectPtr Function( - ffi.Uint64, jni.JObjectPtr, jni.JObjectPtr)>> - _$invokePointer = ffi.Pointer.fromFunction(_$invoke); - - static ffi.Pointer _$invokeMethod( - int $p, - $MethodInvocation $i, - ) { - try { - final $d = $i.methodDescriptor.toDartString(releaseOriginal: true); - final $a = $i.args; - if ($d == r"run()V") { - _$impls[$p]!.run(); - return jni.nullptr; - } - } catch (e) { - return ProtectedJniExtensions.newDartException(e.toString()); - } - return jni.nullptr; - } - - factory MyRunnable.implement( - $MyRunnableImpl $impl, - ) { - final $p = ReceivePort(); - final $x = MyRunnable.fromReference( - ProtectedJniExtensions.newPortProxy( - r"com.github.dart_lang.jnigen.interfaces.MyRunnable", - $p, - _$invokePointer, - ), - ).._$p = $p; - final $a = $p.sendPort.nativePort; - _$impls[$a] = $impl; - $p.listen(($m) { - if ($m == null) { - _$impls.remove($p.sendPort.nativePort); - $p.close(); - return; - } - final $i = $MethodInvocation.fromMessage($m as List); - final $r = _$invokeMethod($p.sendPort.nativePort, $i); - ProtectedJniExtensions.returnResult($i.result, $r); - }); - return $x; - } -} - -abstract interface class $MyRunnableImpl { - factory $MyRunnableImpl({ - required void Function() run, - }) = _$MyRunnableImpl; - - void run(); -} - -class _$MyRunnableImpl implements $MyRunnableImpl { - _$MyRunnableImpl({ - required void Function() run, - }) : _run = run; - - final void Function() _run; - - void run() { - return _run(); - } -} - -final class $MyRunnableType extends jni.JObjType { - const $MyRunnableType(); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/interfaces/MyRunnable;"; - - @override - MyRunnable fromReference(jni.JReference reference) => - MyRunnable.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($MyRunnableType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($MyRunnableType) && other is $MyRunnableType; - } -} - -/// from: com.github.dart_lang.jnigen.interfaces.MyRunnableRunner -class MyRunnableRunner extends jni.JObject { - @override - late final jni.JObjType $type = type; - - MyRunnableRunner.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $MyRunnableRunnerType(); - static final _get_error = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_MyRunnableRunner__error") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_error = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(jni.JObjectPtr, - ffi.Pointer)>>("set_MyRunnableRunner__error") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: public java.lang.Throwable error - /// The returned object must be released after use, by calling the [release] method. - jni.JObject get error => - _get_error(reference.pointer).object(const jni.JObjectType()); - - /// from: public java.lang.Throwable error - /// The returned object must be released after use, by calling the [release] method. - set error(jni.JObject value) => - _set_error(reference.pointer, value.reference.pointer).check(); - - static final _new0 = jniLookup< - ffi - .NativeFunction)>>( - "MyRunnableRunner__new0") - .asFunction)>(); - - /// from: public void (com.github.dart_lang.jnigen.interfaces.MyRunnable runnable) - /// The returned object must be released after use, by calling the [release] method. - factory MyRunnableRunner( - MyRunnable runnable, - ) { - return MyRunnableRunner.fromReference( - _new0(runnable.reference.pointer).reference); - } - - static final _runOnSameThread = jniLookup< - ffi - .NativeFunction)>>( - "MyRunnableRunner__runOnSameThread") - .asFunction)>(); - - /// from: public void runOnSameThread() - void runOnSameThread() { - _runOnSameThread(reference.pointer).check(); - } - - static final _runOnAnotherThread = jniLookup< - ffi - .NativeFunction)>>( - "MyRunnableRunner__runOnAnotherThread") - .asFunction)>(); - - /// from: public void runOnAnotherThread() - void runOnAnotherThread() { - _runOnAnotherThread(reference.pointer).check(); - } -} - -final class $MyRunnableRunnerType extends jni.JObjType { - const $MyRunnableRunnerType(); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/interfaces/MyRunnableRunner;"; - - @override - MyRunnableRunner fromReference(jni.JReference reference) => - MyRunnableRunner.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($MyRunnableRunnerType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($MyRunnableRunnerType) && - other is $MyRunnableRunnerType; - } -} - -/// from: com.github.dart_lang.jnigen.annotations.JsonSerializable$Case -class JsonSerializable_Case extends jni.JObject { - @override - late final jni.JObjType $type = type; - - JsonSerializable_Case.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $JsonSerializable_CaseType(); - static final _values = - jniLookup>( - "JsonSerializable_Case__values") - .asFunction(); - - /// from: static public com.github.dart_lang.jnigen.annotations.JsonSerializable.Case[] values() - /// The returned object must be released after use, by calling the [release] method. - static jni.JArray values() { - return _values().object(const jni.JArrayType($JsonSerializable_CaseType())); - } - - static final _valueOf = jniLookup< - ffi - .NativeFunction)>>( - "JsonSerializable_Case__valueOf") - .asFunction)>(); - - /// from: static public com.github.dart_lang.jnigen.annotations.JsonSerializable.Case valueOf(java.lang.String name) - /// The returned object must be released after use, by calling the [release] method. - static JsonSerializable_Case valueOf( - jni.JString name, - ) { - return _valueOf(name.reference.pointer) - .object(const $JsonSerializable_CaseType()); - } -} - -final class $JsonSerializable_CaseType - extends jni.JObjType { - const $JsonSerializable_CaseType(); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/annotations/JsonSerializable$Case;"; - - @override - JsonSerializable_Case fromReference(jni.JReference reference) => - JsonSerializable_Case.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($JsonSerializable_CaseType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($JsonSerializable_CaseType) && - other is $JsonSerializable_CaseType; - } -} - -/// from: com.github.dart_lang.jnigen.annotations.JsonSerializable -class JsonSerializable extends jni.JObject { - @override - late final jni.JObjType $type = type; - - JsonSerializable.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $JsonSerializableType(); - static final _value = jniLookup< - ffi - .NativeFunction)>>( - "JsonSerializable__value") - .asFunction)>(); - - /// from: public abstract com.github.dart_lang.jnigen.annotations.JsonSerializable$Case value() - /// The returned object must be released after use, by calling the [release] method. - JsonSerializable_Case value() { - return _value(reference.pointer).object(const $JsonSerializable_CaseType()); - } - - /// Maps a specific port to the implemented interface. - static final Map _$impls = {}; - ReceivePort? _$p; - - static jni.JObjectPtr _$invoke( - int port, - jni.JObjectPtr descriptor, - jni.JObjectPtr args, - ) { - return _$invokeMethod( - port, - $MethodInvocation.fromAddresses( - 0, - descriptor.address, - args.address, - ), - ); - } - - static final ffi.Pointer< - ffi.NativeFunction< - jni.JObjectPtr Function( - ffi.Uint64, jni.JObjectPtr, jni.JObjectPtr)>> - _$invokePointer = ffi.Pointer.fromFunction(_$invoke); - - static ffi.Pointer _$invokeMethod( - int $p, - $MethodInvocation $i, - ) { - try { - final $d = $i.methodDescriptor.toDartString(releaseOriginal: true); - final $a = $i.args; - if ($d == - r"value()Lcom/github/dart_lang/jnigen/annotations/JsonSerializable$Case;") { - final $r = _$impls[$p]!.value(); - return ($r as jni.JObject) - .castTo(const jni.JObjectType()) - .reference - .toPointer(); - } - } catch (e) { - return ProtectedJniExtensions.newDartException(e.toString()); - } - return jni.nullptr; - } - - factory JsonSerializable.implement( - $JsonSerializableImpl $impl, - ) { - final $p = ReceivePort(); - final $x = JsonSerializable.fromReference( - ProtectedJniExtensions.newPortProxy( - r"com.github.dart_lang.jnigen.annotations.JsonSerializable", - $p, - _$invokePointer, - ), - ).._$p = $p; - final $a = $p.sendPort.nativePort; - _$impls[$a] = $impl; - $p.listen(($m) { - if ($m == null) { - _$impls.remove($p.sendPort.nativePort); - $p.close(); - return; - } - final $i = $MethodInvocation.fromMessage($m as List); - final $r = _$invokeMethod($p.sendPort.nativePort, $i); - ProtectedJniExtensions.returnResult($i.result, $r); - }); - return $x; - } -} - -abstract interface class $JsonSerializableImpl { - factory $JsonSerializableImpl({ - required JsonSerializable_Case Function() value, - }) = _$JsonSerializableImpl; - - JsonSerializable_Case value(); -} - -class _$JsonSerializableImpl implements $JsonSerializableImpl { - _$JsonSerializableImpl({ - required JsonSerializable_Case Function() value, - }) : _value = value; - - final JsonSerializable_Case Function() _value; - - JsonSerializable_Case value() { - return _value(); - } -} - -final class $JsonSerializableType extends jni.JObjType { - const $JsonSerializableType(); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/annotations/JsonSerializable;"; - - @override - JsonSerializable fromReference(jni.JReference reference) => - JsonSerializable.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($JsonSerializableType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($JsonSerializableType) && - other is $JsonSerializableType; - } -} - -/// from: com.github.dart_lang.jnigen.annotations.MyDataClass -class MyDataClass extends jni.JObject { - @override - late final jni.JObjType $type = type; - - MyDataClass.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $MyDataClassType(); - static final _new0 = jniLookup>( - "MyDataClass__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory MyDataClass() { - return MyDataClass.fromReference(_new0().reference); - } -} - -final class $MyDataClassType extends jni.JObjType { - const $MyDataClassType(); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/annotations/MyDataClass;"; - - @override - MyDataClass fromReference(jni.JReference reference) => - MyDataClass.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($MyDataClassType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($MyDataClassType) && other is $MyDataClassType; - } -} - -/// from: com.github.dart_lang.jnigen.simple_package.Color -class Color extends jni.JObject { - @override - late final jni.JObjType $type = type; - - Color.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $ColorType(); - static final _values = - jniLookup>("Color__values") - .asFunction(); - - /// from: static public com.github.dart_lang.jnigen.simple_package.Color[] values() - /// The returned object must be released after use, by calling the [release] method. - static jni.JArray values() { - return _values().object(const jni.JArrayType($ColorType())); - } - - static final _valueOf = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Pointer)>>("Color__valueOf") - .asFunction)>(); - - /// from: static public com.github.dart_lang.jnigen.simple_package.Color valueOf(java.lang.String name) - /// The returned object must be released after use, by calling the [release] method. - static Color valueOf( - jni.JString name, - ) { - return _valueOf(name.reference.pointer).object(const $ColorType()); - } -} - -final class $ColorType extends jni.JObjType { - const $ColorType(); - - @override - String get signature => r"Lcom/github/dart_lang/jnigen/simple_package/Color;"; - - @override - Color fromReference(jni.JReference reference) => - Color.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($ColorType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($ColorType) && other is $ColorType; - } -} - -/// from: com.github.dart_lang.jnigen.simple_package.Exceptions -class Exceptions extends jni.JObject { - @override - late final jni.JObjType $type = type; - - Exceptions.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $ExceptionsType(); - static final _new0 = jniLookup>( - "Exceptions__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory Exceptions() { - return Exceptions.fromReference(_new0().reference); - } - - static final _new1 = - jniLookup>( - "Exceptions__new1") - .asFunction(); - - /// from: public void (float x) - /// The returned object must be released after use, by calling the [release] method. - factory Exceptions.new1( - double x, - ) { - return Exceptions.fromReference(_new1(x).reference); - } - - static final _new2 = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(ffi.Int32, ffi.Int32, ffi.Int32, ffi.Int32, - ffi.Int32, ffi.Int32)>>("Exceptions__new2") - .asFunction(); - - /// from: public void (int a, int b, int c, int d, int e, int f) - /// The returned object must be released after use, by calling the [release] method. - factory Exceptions.new2( - int a, - int b, - int c, - int d, - int e, - int f, - ) { - return Exceptions.fromReference(_new2(a, b, c, d, e, f).reference); - } - - static final _staticObjectMethod = - jniLookup>( - "Exceptions__staticObjectMethod") - .asFunction(); - - /// from: static public java.lang.Object staticObjectMethod() - /// The returned object must be released after use, by calling the [release] method. - static jni.JObject staticObjectMethod() { - return _staticObjectMethod().object(const jni.JObjectType()); - } - - static final _staticIntMethod = - jniLookup>( - "Exceptions__staticIntMethod") - .asFunction(); - - /// from: static public int staticIntMethod() - static int staticIntMethod() { - return _staticIntMethod().integer; - } - - static final _staticObjectArrayMethod = - jniLookup>( - "Exceptions__staticObjectArrayMethod") - .asFunction(); - - /// from: static public java.lang.Object[] staticObjectArrayMethod() - /// The returned object must be released after use, by calling the [release] method. - static jni.JArray staticObjectArrayMethod() { - return _staticObjectArrayMethod() - .object(const jni.JArrayType(jni.JObjectType())); - } - - static final _staticIntArrayMethod = - jniLookup>( - "Exceptions__staticIntArrayMethod") - .asFunction(); - - /// from: static public int[] staticIntArrayMethod() - /// The returned object must be released after use, by calling the [release] method. - static jni.JArray staticIntArrayMethod() { - return _staticIntArrayMethod().object(const jni.JArrayType(jni.jintType())); - } - - static final _objectMethod = jniLookup< - ffi - .NativeFunction)>>( - "Exceptions__objectMethod") - .asFunction)>(); - - /// from: public java.lang.Object objectMethod() - /// The returned object must be released after use, by calling the [release] method. - jni.JObject objectMethod() { - return _objectMethod(reference.pointer).object(const jni.JObjectType()); - } - - static final _intMethod = jniLookup< - ffi - .NativeFunction)>>( - "Exceptions__intMethod") - .asFunction)>(); - - /// from: public int intMethod() - int intMethod() { - return _intMethod(reference.pointer).integer; - } - - static final _objectArrayMethod = jniLookup< - ffi - .NativeFunction)>>( - "Exceptions__objectArrayMethod") - .asFunction)>(); - - /// from: public java.lang.Object[] objectArrayMethod() - /// The returned object must be released after use, by calling the [release] method. - jni.JArray objectArrayMethod() { - return _objectArrayMethod(reference.pointer) - .object(const jni.JArrayType(jni.JObjectType())); - } - - static final _intArrayMethod = jniLookup< - ffi - .NativeFunction)>>( - "Exceptions__intArrayMethod") - .asFunction)>(); - - /// from: public int[] intArrayMethod() - /// The returned object must be released after use, by calling the [release] method. - jni.JArray intArrayMethod() { - return _intArrayMethod(reference.pointer) - .object(const jni.JArrayType(jni.jintType())); - } - - static final _throwNullPointerException = jniLookup< - ffi - .NativeFunction)>>( - "Exceptions__throwNullPointerException") - .asFunction)>(); - - /// from: public int throwNullPointerException() - int throwNullPointerException() { - return _throwNullPointerException(reference.pointer).integer; - } - - static final _throwFileNotFoundException = jniLookup< - ffi - .NativeFunction)>>( - "Exceptions__throwFileNotFoundException") - .asFunction)>(); - - /// from: public java.io.InputStream throwFileNotFoundException() - /// The returned object must be released after use, by calling the [release] method. - jni.JObject throwFileNotFoundException() { - return _throwFileNotFoundException(reference.pointer) - .object(const jni.JObjectType()); - } - - static final _throwClassCastException = jniLookup< - ffi - .NativeFunction)>>( - "Exceptions__throwClassCastException") - .asFunction)>(); - - /// from: public java.io.FileInputStream throwClassCastException() - /// The returned object must be released after use, by calling the [release] method. - jni.JObject throwClassCastException() { - return _throwClassCastException(reference.pointer) - .object(const jni.JObjectType()); - } - - static final _throwArrayIndexException = jniLookup< - ffi - .NativeFunction)>>( - "Exceptions__throwArrayIndexException") - .asFunction)>(); - - /// from: public int throwArrayIndexException() - int throwArrayIndexException() { - return _throwArrayIndexException(reference.pointer).integer; - } - - static final _throwArithmeticException = jniLookup< - ffi - .NativeFunction)>>( - "Exceptions__throwArithmeticException") - .asFunction)>(); - - /// from: public int throwArithmeticException() - int throwArithmeticException() { - return _throwArithmeticException(reference.pointer).integer; - } - - static final _throwLoremIpsum = - jniLookup>( - "Exceptions__throwLoremIpsum") - .asFunction(); - - /// from: static public void throwLoremIpsum() - static void throwLoremIpsum() { - _throwLoremIpsum().check(); - } -} - -final class $ExceptionsType extends jni.JObjType { - const $ExceptionsType(); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/simple_package/Exceptions;"; - - @override - Exceptions fromReference(jni.JReference reference) => - Exceptions.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($ExceptionsType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($ExceptionsType) && other is $ExceptionsType; - } -} - -/// from: com.github.dart_lang.jnigen.simple_package.Fields -class Fields extends jni.JObject { - @override - late final jni.JObjType $type = type; - - Fields.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $FieldsType(); - static final _get_amount = - jniLookup>( - "get_Fields__amount") - .asFunction(); - - static final _set_amount = - jniLookup>( - "set_Fields__amount") - .asFunction(); - - /// from: static public int amount - static int get amount => _get_amount().integer; - - /// from: static public int amount - static set amount(int value) => _set_amount(value).check(); - - static final _get_pi = - jniLookup>("get_Fields__pi") - .asFunction(); - - static final _set_pi = - jniLookup>( - "set_Fields__pi") - .asFunction(); - - /// from: static public double pi - static double get pi => _get_pi().doubleFloat; - - /// from: static public double pi - static set pi(double value) => _set_pi(value).check(); - - static final _get_asterisk = - jniLookup>( - "get_Fields__asterisk") - .asFunction(); - - static final _set_asterisk = - jniLookup>( - "set_Fields__asterisk") - .asFunction(); - - /// from: static public char asterisk - static int get asterisk => _get_asterisk().char; - - /// from: static public char asterisk - static set asterisk(int value) => _set_asterisk(value).check(); - - static final _get_name = - jniLookup>( - "get_Fields__name") - .asFunction(); - - static final _set_name = jniLookup< - ffi - .NativeFunction)>>( - "set_Fields__name") - .asFunction)>(); - - /// from: static public java.lang.String name - /// The returned object must be released after use, by calling the [release] method. - static jni.JString get name => _get_name().object(const jni.JStringType()); - - /// from: static public java.lang.String name - /// The returned object must be released after use, by calling the [release] method. - static set name(jni.JString value) => - _set_name(value.reference.pointer).check(); - - static final _get_i = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_Fields__i") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_i = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, ffi.Pointer)>>("set_Fields__i") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: public java.lang.Integer i - /// The returned object must be released after use, by calling the [release] method. - jni.JInteger get i => - _get_i(reference.pointer).object(const jni.JIntegerType()); - - /// from: public java.lang.Integer i - /// The returned object must be released after use, by calling the [release] method. - set i(jni.JInteger value) => - _set_i(reference.pointer, value.reference.pointer).check(); - - static final _get_trillion = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_Fields__trillion") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_trillion = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, ffi.Int64)>>("set_Fields__trillion") - .asFunction(); - - /// from: public long trillion - int get trillion => _get_trillion(reference.pointer).long; - - /// from: public long trillion - set trillion(int value) => _set_trillion(reference.pointer, value).check(); - - static final _get_isAchillesDead = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_Fields__isAchillesDead") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_isAchillesDead = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, ffi.Uint8)>>("set_Fields__isAchillesDead") - .asFunction(); - - /// from: public boolean isAchillesDead - bool get isAchillesDead => _get_isAchillesDead(reference.pointer).boolean; - - /// from: public boolean isAchillesDead - set isAchillesDead(bool value) => - _set_isAchillesDead(reference.pointer, value ? 1 : 0).check(); - - static final _get_bestFighterInGreece = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_Fields__bestFighterInGreece") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_bestFighterInGreece = jniLookup< - ffi.NativeFunction< - jni.JniResult Function(jni.JObjectPtr, - ffi.Pointer)>>("set_Fields__bestFighterInGreece") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: public java.lang.String bestFighterInGreece - /// The returned object must be released after use, by calling the [release] method. - jni.JString get bestFighterInGreece => - _get_bestFighterInGreece(reference.pointer) - .object(const jni.JStringType()); - - /// from: public java.lang.String bestFighterInGreece - /// The returned object must be released after use, by calling the [release] method. - set bestFighterInGreece(jni.JString value) => - _set_bestFighterInGreece(reference.pointer, value.reference.pointer) - .check(); - - static final _get_random = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_Fields__random") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_random = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, ffi.Pointer)>>("set_Fields__random") - .asFunction< - jni.JniResult Function(jni.JObjectPtr, ffi.Pointer)>(); - - /// from: public java.util.Random random - /// The returned object must be released after use, by calling the [release] method. - jni.JObject get random => - _get_random(reference.pointer).object(const jni.JObjectType()); - - /// from: public java.util.Random random - /// The returned object must be released after use, by calling the [release] method. - set random(jni.JObject value) => - _set_random(reference.pointer, value.reference.pointer).check(); - - static final _get_euroSymbol = - jniLookup>( - "get_Fields__euroSymbol") - .asFunction(); - - static final _set_euroSymbol = - jniLookup>( - "set_Fields__euroSymbol") - .asFunction(); - - /// from: static public char euroSymbol - static int get euroSymbol => _get_euroSymbol().char; - - /// from: static public char euroSymbol - static set euroSymbol(int value) => _set_euroSymbol(value).check(); - - static final _new0 = - jniLookup>("Fields__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory Fields() { - return Fields.fromReference(_new0().reference); - } -} - -final class $FieldsType extends jni.JObjType { - const $FieldsType(); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/simple_package/Fields;"; - - @override - Fields fromReference(jni.JReference reference) => - Fields.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($FieldsType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($FieldsType) && other is $FieldsType; - } -} - -/// from: com.github.dart_lang.jnigen.simple_package.Fields$Nested -class Fields_Nested extends jni.JObject { - @override - late final jni.JObjType $type = type; - - Fields_Nested.fromReference( - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static const type = $Fields_NestedType(); - static final _get_hundred = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>>("get_Fields_Nested__hundred") - .asFunction< - jni.JniResult Function( - jni.JObjectPtr, - )>(); - - static final _set_hundred = jniLookup< - ffi.NativeFunction< - jni.JniResult Function( - jni.JObjectPtr, ffi.Int64)>>("set_Fields_Nested__hundred") - .asFunction(); - - /// from: public long hundred - int get hundred => _get_hundred(reference.pointer).long; - - /// from: public long hundred - set hundred(int value) => _set_hundred(reference.pointer, value).check(); - - static final _get_BEST_GOD = - jniLookup>( - "get_Fields_Nested__BEST_GOD") - .asFunction(); - - static final _set_BEST_GOD = jniLookup< - ffi - .NativeFunction)>>( - "set_Fields_Nested__BEST_GOD") - .asFunction)>(); - - /// from: static public java.lang.String BEST_GOD - /// The returned object must be released after use, by calling the [release] method. - static jni.JString get BEST_GOD => - _get_BEST_GOD().object(const jni.JStringType()); - - /// from: static public java.lang.String BEST_GOD - /// The returned object must be released after use, by calling the [release] method. - static set BEST_GOD(jni.JString value) => - _set_BEST_GOD(value.reference.pointer).check(); - - static final _new0 = jniLookup>( - "Fields_Nested__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory Fields_Nested() { - return Fields_Nested.fromReference(_new0().reference); - } -} - -final class $Fields_NestedType extends jni.JObjType { - const $Fields_NestedType(); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/simple_package/Fields$Nested;"; - - @override - Fields_Nested fromReference(jni.JReference reference) => - Fields_Nested.fromReference(reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => ($Fields_NestedType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($Fields_NestedType) && - other is $Fields_NestedType; - } -} - -/// from: com.github.dart_lang.jnigen.generics.GenericTypeParams -class GenericTypeParams<$S extends jni.JObject, $K extends jni.JObject> - extends jni.JObject { - @override - late final jni.JObjType> $type = type(S, K); - - final jni.JObjType<$S> S; - final jni.JObjType<$K> K; - - GenericTypeParams.fromReference( - this.S, - this.K, - jni.JReference reference, - ) : super.fromReference(reference); - - /// The type which includes information such as the signature of this class. - static $GenericTypeParamsType<$S, $K> - type<$S extends jni.JObject, $K extends jni.JObject>( - jni.JObjType<$S> S, - jni.JObjType<$K> K, - ) { - return $GenericTypeParamsType( - S, - K, - ); - } - - static final _new0 = jniLookup>( - "GenericTypeParams__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory GenericTypeParams({ - required jni.JObjType<$S> S, - required jni.JObjType<$K> K, - }) { - return GenericTypeParams.fromReference(S, K, _new0().reference); - } -} - -final class $GenericTypeParamsType<$S extends jni.JObject, - $K extends jni.JObject> extends jni.JObjType> { - final jni.JObjType<$S> S; - final jni.JObjType<$K> K; - - const $GenericTypeParamsType( - this.S, - this.K, - ); - - @override - String get signature => - r"Lcom/github/dart_lang/jnigen/generics/GenericTypeParams;"; - - @override - GenericTypeParams<$S, $K> fromReference(jni.JReference reference) => - GenericTypeParams.fromReference(S, K, reference); - - @override - jni.JObjType get superType => const jni.JObjectType(); - - @override - final superCount = 1; - - @override - int get hashCode => Object.hash($GenericTypeParamsType, S, K); - - @override - bool operator ==(Object other) { - return other.runtimeType == ($GenericTypeParamsType<$S, $K>) && - other is $GenericTypeParamsType<$S, $K> && - S == other.S && - K == other.K; - } -} - -/// from: com.github.dart_lang.jnigen.generics.StringMap -class StringMap extends StringKeyedMap { - @override - late final jni.JObjType $type = type; - - StringMap.fromReference( - jni.JReference reference, - ) : super.fromReference(const jni.JStringType(), reference); - - /// The type which includes information such as the signature of this class. - static const type = $StringMapType(); - static final _new0 = - jniLookup>("StringMap__new0") - .asFunction(); - - /// from: public void () - /// The returned object must be released after use, by calling the [release] method. - factory StringMap() { - return StringMap.fromReference(_new0().reference); - } -} - -final class $StringMapType extends jni.JObjType { - const $StringMapType(); - - @override - String get signature => r"Lcom/github/dart_lang/jnigen/generics/StringMap;"; - - @override - StringMap fromReference(jni.JReference reference) => - StringMap.fromReference(reference); - - @override - jni.JObjType get superType => const $StringKeyedMapType(jni.JStringType()); - - @override - final superCount = 3; - - @override - int get hashCode => ($StringMapType).hashCode; - - @override - bool operator ==(Object other) { - return other.runtimeType == ($StringMapType) && other is $StringMapType; - } -} diff --git a/pkgs/jnigen/test/simple_package_test/generate.dart b/pkgs/jnigen/test/simple_package_test/generate.dart index 9f5988880..afabf9746 100644 --- a/pkgs/jnigen/test/simple_package_test/generate.dart +++ b/pkgs/jnigen/test/simple_package_test/generate.dart @@ -48,12 +48,10 @@ void compileJavaSources(String workingDir, List files) async { } } -Config getConfig([BindingsType bindingsType = BindingsType.cBased]) { +Config getConfig() { compileJavaSources(javaPath, javaFiles); - final typeDir = bindingsType.getConfigString(); - final cWrapperDir = Uri.directory(join(testRoot, typeDir, "c_bindings")); final dartWrappersRoot = Uri.directory( - join(testRoot, typeDir, "dart_bindings"), + join(testRoot, "bindings"), ); final config = Config( sourcePath: [Uri.directory(javaPath)], @@ -72,11 +70,6 @@ Config getConfig([BindingsType bindingsType = BindingsType.cBased]) { ''' }, outputConfig: OutputConfig( - bindingsType: bindingsType, - cConfig: CCodeOutputConfig( - path: cWrapperDir, - libraryName: 'simple_package', - ), dartConfig: DartCodeOutputConfig( path: dartWrappersRoot.resolve('simple_package.dart'), structure: OutputStructure.singleFile, @@ -89,6 +82,5 @@ Config getConfig([BindingsType bindingsType = BindingsType.cBased]) { } void main() async { - await generateJniBindings(getConfig(BindingsType.cBased)); - await generateJniBindings(getConfig(BindingsType.dartOnly)); + await generateJniBindings(getConfig()); } diff --git a/pkgs/jnigen/test/simple_package_test/generated_files_test.dart b/pkgs/jnigen/test/simple_package_test/generated_files_test.dart index 0f595d2ff..a0c5b974a 100644 --- a/pkgs/jnigen/test/simple_package_test/generated_files_test.dart +++ b/pkgs/jnigen/test/simple_package_test/generated_files_test.dart @@ -2,25 +2,14 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:jnigen/jnigen.dart'; -import 'package:test/test.dart'; - import 'generate.dart'; import '../test_util/test_util.dart'; void main() async { await checkLocallyBuiltDependencies(); - generateAndCompareBothModes( + generateAndCompare( 'Generate and compare bindings for simple_package java files', - getConfig(BindingsType.cBased), - getConfig(BindingsType.dartOnly), + getConfig(), ); - - test("Generate and analyze bindings for simple_package - pure dart", - () async { - await generateAndAnalyzeBindings( - getConfig(BindingsType.dartOnly), - ); - }); // test if generated file == expected file } diff --git a/pkgs/jnigen/test/simple_package_test/runtime_test_registrant.dart b/pkgs/jnigen/test/simple_package_test/runtime_test_registrant.dart index 9c31e9dfb..a3386aebc 100644 --- a/pkgs/jnigen/test/simple_package_test/runtime_test_registrant.dart +++ b/pkgs/jnigen/test/simple_package_test/runtime_test_registrant.dart @@ -10,7 +10,7 @@ import 'package:jni/jni.dart'; import '../test_util/callback_types.dart'; -import 'c_based/dart_bindings/simple_package.dart'; +import 'bindings/simple_package.dart'; const pi = 3.14159; const fpDelta = 0.001; diff --git a/pkgs/jnigen/test/test_util/bindings_test_setup.dart b/pkgs/jnigen/test/test_util/bindings_test_setup.dart index 2800aa1e7..0f1baefdb 100644 --- a/pkgs/jnigen/test/test_util/bindings_test_setup.dart +++ b/pkgs/jnigen/test/test_util/bindings_test_setup.dart @@ -30,14 +30,6 @@ Future bindingsTestSetup() async { await runCommand('dart', [ 'run', 'jni:setup', - '-p', - 'jni', - '-s', - join(simplePackageTest, 'c_based', 'c_bindings'), - '-s', - join(kotlinTest, 'c_based', 'c_bindings'), - '-s', - join(jacksonCoreTest, 'third_party', 'c_based', 'c_bindings'), ]); tempClassDir = Directory.current.createTempSync("jnigen_runtime_test_classpath_"); diff --git a/pkgs/jnigen/test/test_util/summary_util.dart b/pkgs/jnigen/test/test_util/summary_util.dart index 0d445837c..9218e9113 100644 --- a/pkgs/jnigen/test/test_util/summary_util.dart +++ b/pkgs/jnigen/test/test_util/summary_util.dart @@ -48,7 +48,6 @@ Config getSummaryGenerationConfig( {List? sourcePath, List? classPath}) { return Config( outputConfig: OutputConfig( - bindingsType: BindingsType.dartOnly, dartConfig: DartCodeOutputConfig( path: Uri.file('unused.dart'), structure: OutputStructure.singleFile, diff --git a/pkgs/jnigen/test/test_util/test_util.dart b/pkgs/jnigen/test/test_util/test_util.dart index 2a52b75c4..85a1cca2a 100644 --- a/pkgs/jnigen/test/test_util/test_util.dart +++ b/pkgs/jnigen/test/test_util/test_util.dart @@ -100,15 +100,11 @@ void comparePaths(String path1, String path2) { } Future _generateTempBindings(Config config, Directory tempDir) async { - final tempSrc = tempDir.uri.resolve("src/"); final singleFile = config.outputConfig.dartConfig.structure == OutputStructure.singleFile; final tempLib = singleFile ? tempDir.uri.resolve("generated.dart") : tempDir.uri.resolve("lib/"); - if (config.outputConfig.bindingsType == BindingsType.cBased) { - config.outputConfig.cConfig!.path = tempSrc; - } config.outputConfig.dartConfig.path = tempLib; config.logLevel = Level.WARNING; await generateJniBindings(config); @@ -118,16 +114,11 @@ Future _generateTempBindings(Config config, Directory tempDir) async { /// /// [dartReferenceBindings] can be directory or file depending on output /// configuration. -/// -/// If the config generates C code, [cReferenceBindings] must be a non-null -/// directory path. Future generateAndCompareBindings(Config config) async { final dartReferenceBindings = config.outputConfig.dartConfig.path.toFilePath(); - final cReferenceBindings = config.outputConfig.cConfig?.path.toFilePath(); final currentDir = Directory.current; final tempDir = currentDir.createTempSync("jnigen_test_temp"); - final tempSrc = tempDir.uri.resolve("src/"); final singleFile = config.outputConfig.dartConfig.structure == OutputStructure.singleFile; final tempLib = singleFile @@ -136,9 +127,6 @@ Future generateAndCompareBindings(Config config) async { try { await _generateTempBindings(config, tempDir); comparePaths(dartReferenceBindings, tempLib.toFilePath()); - if (config.outputConfig.bindingsType == BindingsType.cBased) { - comparePaths(cReferenceBindings!, tempSrc.toFilePath()); - } } finally { tempDir.deleteSync(recursive: true); } @@ -184,50 +172,19 @@ const bindingTests = [ ]; const registrantName = 'runtime_test_registrant.dart'; -const replicaName = 'runtime_test_registrant_dartonly_generated.dart'; - -void warnIfRuntimeTestsAreOutdated() { - final runtimeTests = join('test', 'generated_runtime_test.dart'); - if (!File(runtimeTests).existsSync()) { - log.fatal('Runtime test files not found. To run binding ' - 'runtime tests, please generate them by running ' - '`dart run tool/generate_runtime_tests.dart`'); - } - const regenInstr = 'Please run `dart run tool/generate_runtime_tests.dart` ' - 'and try again.'; - for (var testName in bindingTests) { - final registrant = File(join('test', testName, registrantName)); - final replica = File(join('test', testName, replicaName)); - if (!replica.existsSync()) { - log.fatal( - 'One or more generated runtime tests do not exist. $regenInstr', - ); - } - if (replica.lastModifiedSync().isBefore(registrant.lastModifiedSync())) { - log.fatal( - 'One or more generated runtime tests are not up-to-date. $regenInstr', - ); - } - } -} /// Verifies if locally built dependencies (currently `ApiSummarizer`) /// are up-to-date. Future checkLocallyBuiltDependencies() async { await failIfSummarizerNotBuilt(); - warnIfRuntimeTestsAreOutdated(); } -void generateAndCompareBothModes( +void generateAndCompare( String description, - Config cBasedConfig, - Config dartOnlyConfig, + Config config, ) { - test('$description (cBased)', () async { - await generateAndCompareBindings(cBasedConfig); - }, timeout: const Timeout(Duration(minutes: 2))); - test('$description (dartOnly)', () async { - await generateAndCompareBindings(dartOnlyConfig); + test(description, () async { + await generateAndCompareBindings(config); }, timeout: const Timeout(Duration(minutes: 2))); } diff --git a/pkgs/jnigen/tool/generate_runtime_tests.dart b/pkgs/jnigen/tool/generate_runtime_tests.dart deleted file mode 100644 index a95e414c1..000000000 --- a/pkgs/jnigen/tool/generate_runtime_tests.dart +++ /dev/null @@ -1,182 +0,0 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'dart:io'; - -import 'package:path/path.dart'; -import 'package:args/args.dart'; - -import 'package:jnigen/src/logging/logging.dart'; - -final lineBreak = Platform.isWindows ? '\r\n' : '\n'; - -void runCommand(String exec, List args) { - final proc = Process.runSync(exec, args, runInShell: true); - log.info('Execute $exec ${args.join(" ")}'); - if (proc.exitCode != 0) { - exitCode = proc.exitCode; - printError(proc.stdout); - printError(proc.stderr); - throw Exception('Command failed: $exec ${args.join(" ")}'); - } -} - -const testPath = 'test'; -const registrantFileName = 'runtime_test_registrant.dart'; -const dartOnlyRegistrantFileName = - 'runtime_test_registrant_dartonly_generated.dart'; - -// Paths of generated files, should not be checked in. -// If you change this, add the corresponding entry to .gitignore as well. -const replicaSuffix = '_dartonly_generated.dart'; -final runnerFilePath = join(testPath, 'generated_runtime_test.dart'); -final androidRunnerFilePath = - join('android_test_runner', 'integration_test', 'runtime_test.dart'); - -final generatedComment = - '// Generated file. Do not edit or check-in to version control.$lineBreak'; -const copyright = ''' -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. -'''; - -const bindingTests = [ - 'jackson_core_test', - 'simple_package_test', - 'kotlin_test', -]; - -const hasThirdPartyDir = {'jackson_core_test'}; - -final _generatedFiles = [ - for (var testName in bindingTests) - join(testPath, testName, dartOnlyRegistrantFileName), - runnerFilePath, - androidRunnerFilePath, -]; - -void generateReplicasAndRunner() { - final imports = {}; - for (var testName in bindingTests) { - final registrant = join(testName, registrantFileName); - final registrantFile = File(join(testPath, registrant)); - final contents = registrantFile - .readAsStringSync() - .replaceAll('c_based/dart_bindings/', 'dart_only/dart_bindings/'); - - final replica = registrant.replaceAll('.dart', replicaSuffix); - final replicaFile = File(join(testPath, replica)); - replicaFile.writeAsStringSync('$generatedComment$lineBreak$contents'); - log.info('Generated $replica'); - imports['${testName}_c_based'] = - Uri.file(registrant).toFilePath(windows: false); - imports['${testName}_dart_only'] = - Uri.file(replica).toFilePath(windows: false); - } - final importStrings = imports.entries - .map((e) => 'import "${e.value}" as ${e.key};') - .join(lineBreak); - final androidImportStrings = imports.entries - .map((e) => 'import "../../test/${e.value}" as ${e.key};') - .join(lineBreak); - final runStrings = imports.keys - .map((name) => '$name.registerTests("$name", test);') - .join('$lineBreak '); - final runnerProgram = ''' -$generatedComment -$copyright -import 'package:test/test.dart'; -import 'test_util/bindings_test_setup.dart' as setup; - -$importStrings - -void main() { - setUpAll(setup.bindingsTestSetup); - $runStrings - tearDownAll(setup.bindingsTestTeardown); -} -'''; - final runnerFile = File(runnerFilePath); - runnerFile.writeAsStringSync(runnerProgram); - log.info('Generated runner $runnerFilePath'); - - final androidRunnerProgram = ''' -$generatedComment -$copyright -import "package:flutter_test/flutter_test.dart"; -import "package:jni/jni.dart"; - -$androidImportStrings - -typedef TestCaseCallback = void Function(); - -void test(String description, TestCaseCallback testCase) { - testWidgets(description, (widgetTester) async => testCase()); -} - -void main() { - $runStrings -} -'''; - File(androidRunnerFilePath).writeAsStringSync(androidRunnerProgram); - log.info('Generated android runner: $androidRunnerFilePath'); - - final cMakePath = - join('android_test_runner', 'android', 'app', 'CMakeLists.txt'); - - final cmakeSubdirs = bindingTests.map((testName) { - final indirect = hasThirdPartyDir.contains(testName) ? '/third_party' : ''; - return 'add_subdirectory' - '(../../../test/$testName$indirect/c_based/c_bindings ' - '${testName}_build)'; - }).join(lineBreak); - final cMakeConfig = ''' -## Parent CMake for Android native build target. This will build -## all C bindings from tests. - -cmake_minimum_required(VERSION 3.10) - -project(simple_package VERSION 0.0.1 LANGUAGES C) - -$cmakeSubdirs -'''; - File(cMakePath).writeAsStringSync(cMakeConfig); - log.info('Wrote Android CMake file: $cMakePath'); -} - -void cleanup() { - for (var path in _generatedFiles) { - File(path).deleteSync(); - log.info('Deleted $path'); - } -} - -void main(List args) async { - final parser = ArgParser() - ..addFlag( - 'help', - abbr: 'h', - help: 'show help', - negatable: false, - ) - ..addFlag( - 'clean', - abbr: 'c', - help: 'clear generated files', - negatable: false, - ); - final argResults = parser.parse(args); - if (argResults['help']) { - stderr.writeln( - 'Generates runtime tests for both Dart-only and C based bindings.'); - stderr.writeln(parser.usage); - return; - } else if (argResults['clean']) { - cleanup(); - } else { - generateReplicasAndRunner(); - runCommand('dart', ['format', ..._generatedFiles]); - } -} diff --git a/pkgs/jnigen/tool/pr_checks.dart b/pkgs/jnigen/tool/pr_checks.dart deleted file mode 100644 index 3e983c244..000000000 --- a/pkgs/jnigen/tool/pr_checks.dart +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -// This is a script to run a subset of CI checks on development machine before -// submitting PR. This prevents from accidentally forgetting to format or -// remove an unused import. - -// This is rough around the edges. This script may give false positives such -// as some gitignore'd temporary files failing the comparison. - -// On windows, please install 'diffutils' using your favorite package installer -// for this script to work correctly. Also ensure that clang-format is on your -// PATH. - -import 'dart:async'; -import 'dart:io'; - -import 'package:args/args.dart'; - -import 'command_runner.dart'; - -// Flags -const _clone = 'clone'; - -void main(List arguments) async { - final parser = ArgParser() - ..addFlag( - _clone, - help: 'Run checks in a cloned copy of the project.', - defaultsTo: true, - negatable: true, - ); - final argResults = parser.parse(arguments); - final shouldClone = argResults[_clone] as bool; - final gitRoot = getRepositoryRoot(); - - // change to project root - Directory.current = gitRoot.toFilePath(); - - var tempDir = Directory.current; - if (shouldClone) { - tempDir = Directory.current.createTempSync('jnigen_checks_clone_'); - final gitClone = Runner("Clone jni", Directory.current.uri) - ..chainCommand('git', ['clone', '.', tempDir.path]); - await gitClone.run(); - } - - final jniPath = tempDir.uri.resolve("jni/"); - final jnigenPath = tempDir.uri.resolve("jnigen/"); - final pubGet = Runner("Pub get", tempDir.uri) - ..chainCommand("flutter", ["pub", "get", "--offline"], - workingDirectory: jniPath) - ..chainCommand("dart", ["pub", "get", "--offline"], - workingDirectory: jnigenPath); - await pubGet.run(); - - final jniAnalyze = Runner("Analyze JNI", jniPath); - jniAnalyze - ..chainCommand("dart", ["analyze", "--fatal-infos"]) - ..chainCommand( - "dart", ["format", "--output=none", "--set-exit-if-changed", "."]) - ..chainCommand( - "clang-format", - [ - "--dry-run", - "-Werror", - "dartjni.c", - "dartjni.h", - "third_party/global_jni_env.c", - "third_party/global_jni_env.h", - ], - workingDirectory: jniPath.resolve("src/")); - final jniTest = Runner("Test JNI", jniPath) - ..chainCommand("dart", ["run", "jni:setup"]) - ..chainCommand("dart", ["test", "-j", "1"]); - unawaited(jniAnalyze.run().then((f) => jniTest.run())); - - List getJavaFiles(String relativePath) => - Directory.fromUri(jnigenPath.resolve(relativePath)) - .listSync(recursive: true) - .where((file) => file.path.endsWith(".java")) - .map((file) => file.path) - .toList(); - - final javaFiles = getJavaFiles("java/") + - getJavaFiles("test/simple_package_test") + - getJavaFiles("example/in_app_java") + - getJavaFiles("example/notification_plugin"); - - final checkJavaFormat = Runner("Check java format", jnigenPath) - ..chainCommand( - "google-java-format", ["-n", "--set-exit-if-changed", ...javaFiles]); - - unawaited(checkJavaFormat.run()); - - final ffigenBindingsPath = getRepositoryRoot() - .resolve("jni/lib/src/third_party/jni_bindings_generated.dart"); - final ffigenBindings = File.fromUri(ffigenBindingsPath); - final oldBindingsText = ffigenBindings.readAsStringSync(); - final ffigenCompare = Runner("Generate & Compare FFIGEN bindings", jniPath) - ..chainCommand("dart", ["run", "ffigen", "--config", "ffigen.yaml"]) - ..chainCallback("compare bindings", () async { - final newBindingsText = await ffigenBindings.readAsString(); - if (newBindingsText != oldBindingsText) { - await ffigenBindings.writeAsString(oldBindingsText); - throw "new JNI.h bindings differ from old bindings"; - } - }); - unawaited(ffigenCompare.run()); - - final jnigenAnalyze = Runner("Analyze jnigen", jnigenPath) - ..chainCommand("dart", ["analyze", "--fatal-infos"]) - ..chainCommand( - "dart", ["format", "--output=none", "--set-exit-if-changed", "."]) - ..chainCommand("dart", ["run", "jnigen:setup"]); - - // Tests may need more time when running on systems with less cores. - // So '--timeout 2x' is specified. - final jnigenTest = Runner("Test jnigen", gitRoot.resolve("jnigen/")) - ..chainCommand("dart", ["test", "--timeout", "2x"]); - - // Note: Running in_app_java and notification_plugin checks on source dir - // itself, because running flutter build in cloned dir will take time. - final compareInAppJavaBindings = Runner( - "Generate & compare InAppJava bindings", - gitRoot.resolve("jnigen/example/in_app_java")) - ..chainCommand("dart", [ - "run", - "jnigen", - "--config", - "jnigen.yaml", - "-Doutput.c.path=src_temp/", - "-Doutput.dart.path=_temp.dart", - ]) - ..chainCommand("diff", ["lib/android_utils.dart", "_temp.dart"]) - ..chainCommand("diff", ["-qr", "src/android_utils/", "src_temp/"]) - ..chainCleanupCommand("rm", ["-r", "_temp.dart", "src_temp"]); - - final comparePdfboxBindings = Runner("Generate & compare PdfBox Bindings", - gitRoot.resolve("jnigen/example/pdfbox_plugin")) - ..chainCommand("dart", [ - "run", - "jnigen", - "--config", - "jnigen.yaml", - "-Doutput.c.path=src_temp/", - "-Doutput.dart.path=lib_temp/", - ]) - ..chainCommand("diff", ["-qr", "lib/src/third_party/", "lib_temp/"]) - ..chainCommand("diff", ["-qr", "src/", "src_temp/"]) - ..chainCleanupCommand("rm", ["-r", "lib_temp", "src_temp"]); - - final compareNotificationPluginBindings = Runner( - "Generate & compare NotificationPlugin Bindings", - gitRoot.resolve("jnigen/example/notification_plugin")) - ..chainCommand("dart", [ - "run", - "jnigen", - "--config", - "jnigen.yaml", - "-Doutput.c.path=src_temp/", - "-Doutput.dart.path=_temp.dart", - ]) - ..chainCommand("diff", ["lib/notifications.dart", "_temp.dart"]) - ..chainCommand("diff", ["-qr", "src/", "src_temp/"]) - ..chainCleanupCommand("rm", ["-r", "_temp.dart", "src_temp"]); - - unawaited(jnigenAnalyze.run().then((_) { - final test = jnigenTest.run(); - final inAppJava = compareInAppJavaBindings.run(); - final pdfBox = comparePdfboxBindings.run(); - final notificationPlugin = compareNotificationPluginBindings.run(); - return Future.wait([test, inAppJava, pdfBox, notificationPlugin]); - }).then((_) { - if (shouldClone) { - tempDir.deleteSync(recursive: true); - } - })); -} diff --git a/pkgs/native_assets_builder/test_data/dart_app/bin/dart_app.dart b/pkgs/native_assets_builder/test_data/dart_app/bin/dart_app.dart index 4e9dc84b8..2d1901564 100644 --- a/pkgs/native_assets_builder/test_data/dart_app/bin/dart_app.dart +++ b/pkgs/native_assets_builder/test_data/dart_app/bin/dart_app.dart @@ -13,7 +13,7 @@ void main() { void testNativeAdd() { final answer = add(5, 6); if (answer != 5 + 6) { - throw 'Wrong answer'; + throw Exception('Wrong answer'); } print('add(5, 6) = $answer'); } @@ -21,7 +21,7 @@ void testNativeAdd() { void testNativeSubtract() { final answer = subtract(5, 6); if (answer != 5 - 6) { - throw 'Wrong answer'; + throw Exception('Wrong answer'); } print('subtract(5, 6) = $answer'); } diff --git a/pkgs/objective_c/.gitignore b/pkgs/objective_c/.gitignore new file mode 100644 index 000000000..17e8ef64a --- /dev/null +++ b/pkgs/objective_c/.gitignore @@ -0,0 +1,30 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +*.dylib +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +build/ diff --git a/pkgs/objective_c/.metadata b/pkgs/objective_c/.metadata new file mode 100644 index 000000000..a41ab896b --- /dev/null +++ b/pkgs/objective_c/.metadata @@ -0,0 +1,33 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "aedce673f760bc19f13aa0600e2c1df9ae502117" + channel: "master" + +project_type: plugin_ffi + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: aedce673f760bc19f13aa0600e2c1df9ae502117 + base_revision: aedce673f760bc19f13aa0600e2c1df9ae502117 + - platform: ios + create_revision: aedce673f760bc19f13aa0600e2c1df9ae502117 + base_revision: aedce673f760bc19f13aa0600e2c1df9ae502117 + - platform: macos + create_revision: aedce673f760bc19f13aa0600e2c1df9ae502117 + base_revision: aedce673f760bc19f13aa0600e2c1df9ae502117 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/pkgs/objective_c/CHANGELOG.md b/pkgs/objective_c/CHANGELOG.md new file mode 100644 index 000000000..0c2a4a189 --- /dev/null +++ b/pkgs/objective_c/CHANGELOG.md @@ -0,0 +1,8 @@ +## 0.0.1-wip + +- Move sharable code from ffigen's generated code into this package, including + `ObjCObjectBase`, and `ObjCBlockBase`, as well as the core Objective C runtime + functions (except `objc_msgSend`, which is library specific). +- Move core ObjC classes such as `NSString` into this package. +- Delete Dart functions associated with ObjC closure blocks when the block is + destroyed. Fixes https://github.com/dart-lang/native/issues/204 diff --git a/pkgs/objective_c/LICENSE b/pkgs/objective_c/LICENSE new file mode 100644 index 000000000..b03a78868 --- /dev/null +++ b/pkgs/objective_c/LICENSE @@ -0,0 +1,27 @@ +Copyright 2024, the Dart project authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/pkgs/objective_c/README.md b/pkgs/objective_c/README.md new file mode 100644 index 000000000..5d3c591a0 --- /dev/null +++ b/pkgs/objective_c/README.md @@ -0,0 +1,4 @@ +# objective_c + +A library to access Objective C from Flutter that acts as a support library for +package:ffigen. diff --git a/pkgs/objective_c/analysis_options.yaml b/pkgs/objective_c/analysis_options.yaml new file mode 100644 index 000000000..a2ac23069 --- /dev/null +++ b/pkgs/objective_c/analysis_options.yaml @@ -0,0 +1,8 @@ +include: package:flutter_lints/flutter.yaml + +analyzer: + exclude: + - tool/data/extra_methods.dart + language: + strict-casts: true + strict-inference: true diff --git a/pkgs/objective_c/example/.gitignore b/pkgs/objective_c/example/.gitignore new file mode 100644 index 000000000..29a3a5017 --- /dev/null +++ b/pkgs/objective_c/example/.gitignore @@ -0,0 +1,43 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/pkgs/objective_c/example/README.md b/pkgs/objective_c/example/README.md new file mode 100644 index 000000000..1690cef71 --- /dev/null +++ b/pkgs/objective_c/example/README.md @@ -0,0 +1,3 @@ +# objective_c example + +Demonstrates how to use the objective_c plugin. diff --git a/pkgs/objective_c/example/analysis_options.yaml b/pkgs/objective_c/example/analysis_options.yaml new file mode 100644 index 000000000..22c406e13 --- /dev/null +++ b/pkgs/objective_c/example/analysis_options.yaml @@ -0,0 +1,6 @@ +include: package:flutter_lints/flutter.yaml + +analyzer: + language: + strict-casts: true + strict-inference: true diff --git a/pkgs/objective_c/example/ios/.gitignore b/pkgs/objective_c/example/ios/.gitignore new file mode 100644 index 000000000..7a7f9873a --- /dev/null +++ b/pkgs/objective_c/example/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/pkgs/objective_c/example/ios/Flutter/AppFrameworkInfo.plist b/pkgs/objective_c/example/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 000000000..7c5696400 --- /dev/null +++ b/pkgs/objective_c/example/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 12.0 + + diff --git a/pkgs/objective_c/example/ios/Flutter/Debug.xcconfig b/pkgs/objective_c/example/ios/Flutter/Debug.xcconfig new file mode 100644 index 000000000..ec97fc6f3 --- /dev/null +++ b/pkgs/objective_c/example/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/pkgs/objective_c/example/ios/Flutter/Release.xcconfig b/pkgs/objective_c/example/ios/Flutter/Release.xcconfig new file mode 100644 index 000000000..c4855bfe2 --- /dev/null +++ b/pkgs/objective_c/example/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/pkgs/objective_c/example/ios/Podfile b/pkgs/objective_c/example/ios/Podfile new file mode 100644 index 000000000..d97f17e22 --- /dev/null +++ b/pkgs/objective_c/example/ios/Podfile @@ -0,0 +1,44 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '12.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/pkgs/objective_c/example/ios/Podfile.lock b/pkgs/objective_c/example/ios/Podfile.lock new file mode 100644 index 000000000..339f20a54 --- /dev/null +++ b/pkgs/objective_c/example/ios/Podfile.lock @@ -0,0 +1,22 @@ +PODS: + - Flutter (1.0.0) + - objective_c (0.0.1): + - Flutter + +DEPENDENCIES: + - Flutter (from `Flutter`) + - objective_c (from `.symlinks/plugins/objective_c/ios`) + +EXTERNAL SOURCES: + Flutter: + :path: Flutter + objective_c: + :path: ".symlinks/plugins/objective_c/ios" + +SPEC CHECKSUMS: + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + objective_c: 77e887b5ba1827970907e10e832eec1683f3431d + +PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796 + +COCOAPODS: 1.11.2 diff --git a/pkgs/objective_c/example/ios/Runner.xcodeproj/project.pbxproj b/pkgs/objective_c/example/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..8f49bdf9e --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,728 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 0016C0D0D056FCD78A6A33E8 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5349C2B3D454EF3220FB3306 /* Pods_RunnerTests.framework */; }; + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 4D7C7CB911925A31801A2F1E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B910B6B0374F2338E70D6AC /* Pods_Runner.framework */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 0B910B6B0374F2338E70D6AC /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 5349C2B3D454EF3220FB3306 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5898EAFA36C90FEB069D15C8 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 5E623BDE574BD3F02055F373 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 6F2BCFFFCABF2D8A79F17D26 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B6F1E5A6A7CC24D81665E0BA /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + F794A460162AE19694C18D43 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + FFB0D24362152330E942673E /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4D7C7CB911925A31801A2F1E /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B209388E6951AC88C18EE569 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0016C0D0D056FCD78A6A33E8 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2961EE994295B641DF59D533 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 0B910B6B0374F2338E70D6AC /* Pods_Runner.framework */, + 5349C2B3D454EF3220FB3306 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + 97F4D88CC18AF014179906AC /* Pods */, + 2961EE994295B641DF59D533 /* Frameworks */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; + 97F4D88CC18AF014179906AC /* Pods */ = { + isa = PBXGroup; + children = ( + FFB0D24362152330E942673E /* Pods-Runner.debug.xcconfig */, + 6F2BCFFFCABF2D8A79F17D26 /* Pods-Runner.release.xcconfig */, + B6F1E5A6A7CC24D81665E0BA /* Pods-Runner.profile.xcconfig */, + 5E623BDE574BD3F02055F373 /* Pods-RunnerTests.debug.xcconfig */, + F794A460162AE19694C18D43 /* Pods-RunnerTests.release.xcconfig */, + 5898EAFA36C90FEB069D15C8 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 11218719EF64897AFE1F9EE8 /* [CP] Check Pods Manifest.lock */, + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + B209388E6951AC88C18EE569 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + E0D32FA7EF8A23FC0FD30465 /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 98CA06E4ED3E0BFB8A3C613F /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 11218719EF64897AFE1F9EE8 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; + 98CA06E4ED3E0BFB8A3C613F /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + E0D32FA7EF8A23FC0FD30465 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.github.dartlang.objectiveCExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5E623BDE574BD3F02055F373 /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.github.dartlang.objectiveCExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F794A460162AE19694C18D43 /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.github.dartlang.objectiveCExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5898EAFA36C90FEB069D15C8 /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.github.dartlang.objectiveCExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.github.dartlang.objectiveCExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.github.dartlang.objectiveCExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/pkgs/objective_c/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/pkgs/objective_c/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/pkgs/objective_c/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/pkgs/objective_c/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/pkgs/objective_c/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/pkgs/objective_c/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/pkgs/objective_c/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/pkgs/objective_c/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000..8e3ca5dfe --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pkgs/objective_c/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/pkgs/objective_c/example/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..21a3cc14c --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/pkgs/objective_c/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/pkgs/objective_c/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/pkgs/objective_c/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/pkgs/objective_c/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/pkgs/objective_c/example/ios/Runner/AppDelegate.swift b/pkgs/objective_c/example/ios/Runner/AppDelegate.swift new file mode 100644 index 000000000..9074fee92 --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Flutter +import UIKit + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..d36b1fab2 --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..797d452e458972bab9d994556c8305db4c827017 GIT binary patch literal 406 zcmV;H0crk;P))>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed2d933e1120817fe9182483a228007b18ab6ae GIT binary patch literal 450 zcmV;z0X_bSP)iGWQ_5NJQ_~rNh*z)}eT%KUb z`7gNk0#AwF^#0T0?hIa^`~Ck;!}#m+_uT050aTR(J!bU#|IzRL%^UsMS#KsYnTF*!YeDOytlP4VhV?b} z%rz_<=#CPc)tU1MZTq~*2=8~iZ!lSa<{9b@2Jl;?IEV8)=fG217*|@)CCYgFze-x? zIFODUIA>nWKpE+bn~n7;-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGr zXPIdeRE&b2Thd#{MtDK$px*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{Hig)k suLT-RhftRq8b9;(V=235Wa|I=027H2wCDra;{X5v07*qoM6N<$f;9x^2LJ#7 literal 0 HcmV?d00001 diff --git a/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd7b0099ca80c806f8fe495613e8d6c69460d76 GIT binary patch literal 282 zcmV+#0p(^bcu7P-R4C8Q z&e;xxFbF_Vrezo%_kH*OKhshZ6BFpG-Y1e10`QXJKbND7AMQ&cMj60B5TNObaZxYybcN07*qoM6N<$g3m;S%K!iX literal 0 HcmV?d00001 diff --git a/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fe730945a01f64a61e2235dbe3f45b08f7729182 GIT binary patch literal 462 zcmV;<0WtoGP)-}iV`2<;=$?g5M=KQbZ{F&YRNy7Nn@%_*5{gvDM0aKI4?ESmw z{NnZg)A0R`+4?NF_RZexyVB&^^ZvN!{I28tr{Vje;QNTz`dG&Jz0~Ek&f2;*Z7>B|cg}xYpxEFY+0YrKLF;^Q+-HreN0P{&i zK~zY`?b7ECf-n?@;d<&orQ*Q7KoR%4|C>{W^h6@&01>0SKS`dn{Q}GT%Qj_{PLZ_& zs`MFI#j-(>?bvdZ!8^xTwlY{qA)T4QLbY@j(!YJ7aXJervHy6HaG_2SB`6CC{He}f zHVw(fJWApwPq!6VY7r1w-Fs)@ox~N+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9 zR%3*Q+)t%S!MU_`id^@&Y{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&)179 zp<)v6Y}pRl100G2FL_t(o!|l{-Q-VMg#&MKg7c{O0 z2wJImOS3Gy*Z2Qifdv~JYOp;v+U)a|nLoc7hNH;I$;lzDt$}rkaFw1mYK5_0Q(Sut zvbEloxON7$+HSOgC9Z8ltuC&0OSF!-mXv5caV>#bc3@hBPX@I$58-z}(ZZE!t-aOG zpjNkbau@>yEzH(5Yj4kZiMH32XI!4~gVXNnjAvRx;Sdg^`>2DpUEwoMhTs_st8pKG z(%SHyHdU&v%f36~uERh!bd`!T2dw;z6PrOTQ7Vt*#9F2uHlUVnb#ev_o^fh}Dzmq} zWtlk35}k=?xj28uO|5>>$yXadTUE@@IPpgH`gJ~Ro4>jd1IF|(+IX>8M4Ps{PNvmI zNj4D+XgN83gPt_Gm}`Ybv{;+&yu-C(Grdiahmo~BjG-l&mWM+{e5M1sm&=xduwgM9 z`8OEh`=F3r`^E{n_;%9weN{cf2%7=VzC@cYj+lg>+3|D|_1C@{hcU(DyQG_BvBWe? zvTv``=%b1zrol#=R`JB)>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..502f463a9bc882b461c96aadf492d1729e49e725 GIT binary patch literal 586 zcmV-Q0=4~#P)+}#`wDE{8-2Mebf5<{{PqV{TgVcv*r8?UZ3{-|G?_}T*&y;@cqf{ z{Q*~+qr%%p!1pS*_Uicl#q9lc(D`!D`LN62sNwq{oYw(Wmhk)k<@f$!$@ng~_5)Ru z0Z)trIA5^j{DIW^c+vT2%lW+2<(RtE2wR;4O@)Tm`Xr*?A(qYoM}7i5Yxw>D(&6ou zxz!_Xr~yNF+waPe00049Nkl*;a!v6h%{rlvIH#gW3s8p;bFr=l}mRqpW2h zw=OA%hdyL~z+UHOzl0eKhEr$YYOL-c-%Y<)=j?(bzDweB7{b+%_ypvm_cG{SvM=DK zhv{K@m>#Bw>2W$eUI#iU)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G! zhkE!s;%oku3;IwG3U^2kw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn`0X*2 zy3(k600_CSZj?O$Qu%&$;|TGUJrptR(HzyIx>5E(2r{eA(<6t3e3I0B)7d6s7?Z5J zZ!rtKvA{MiEBm&KFtoifx>5P^Z=vl)95XJn()aS5%ad(s?4-=Tkis9IGu{`Fy8r+H07*qoM6N<$f20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec303439225b78712f49115768196d8d76f6790 GIT binary patch literal 862 zcmV-k1EKthP)20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e9f5fea27c705180eb716271f41b582e76dcbd90 GIT binary patch literal 1674 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 literal 0 HcmV?d00001 diff --git a/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0467bf12aa4d28f374bb26596605a46dcbb3e7c8 GIT binary patch literal 1418 zcmV;51$Fv~P)q zKfU)WzW*n(@|xWGCA9ScMt*e9`2kdxPQ&&>|-UCa7_51w+ zLUsW@ZzZSW0y$)Hp~e9%PvP|a03ks1`~K?q{u;6NC8*{AOqIUq{CL&;p56Lf$oQGq z^={4hPQv)y=I|4n+?>7Fim=dxt1 z2H+Dm+1+fh+IF>G0SjJMkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJT zkdTm&kdTm&kdTm&kdP`esgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>Tmf` zm1{eLgw!b{bXkjWbF%dTkTZEJWyWOb##Lfw4EK2}<0d6%>AGS{po>WCOy&f$Tay_> z?NBlkpo@s-O;0V%Y_Xa-G#_O08q5LR*~F%&)}{}r&L%Sbs8AS4t7Y0NEx*{soY=0MZExqA5XHQkqi#4gW3 zqODM^iyZl;dvf)-bOXtOru(s)Uc7~BFx{w-FK;2{`VA?(g&@3z&bfLFyctOH!cVsF z7IL=fo-qBndRUm;kAdXR4e6>k-z|21AaN%ubeVrHl*<|s&Ax@W-t?LR(P-24A5=>a z*R9#QvjzF8n%@1Nw@?CG@6(%>+-0ASK~jEmCV|&a*7-GKT72W<(TbSjf)&Eme6nGE z>Gkj4Sq&2e+-G%|+NM8OOm5zVl9{Z8Dd8A5z3y8mZ=4Bv4%>as_{9cN#bm~;h>62( zdqY93Zy}v&c4n($Vv!UybR8ocs7#zbfX1IY-*w~)p}XyZ-SFC~4w>BvMVr`dFbelV{lLL0bx7@*ZZdebr3`sP;? zVImji)kG)(6Juv0lz@q`F!k1FE;CQ(D0iG$wchPbKZQELlsZ#~rt8#90Y_Xh&3U-< z{s<&cCV_1`^TD^ia9!*mQDq& zn2{r`j};V|uV%_wsP!zB?m%;FeaRe+X47K0e+KE!8C{gAWF8)lCd1u1%~|M!XNRvw zvtqy3iz0WSpWdhn6$hP8PaRBmp)q`#PCA`Vd#Tc$@f1tAcM>f_I@bC)hkI9|o(Iqv zo}Piadq!j76}004RBio<`)70k^`K1NK)q>w?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF z34$0Z;QO!JOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUC YUoZo%k(ykuW&i*H07*qoM6N<$f+CH{y8r+H literal 0 HcmV?d00001 diff --git a/pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 000000000..0bedcf2fd --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 000000000..89c2725b7 --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/pkgs/objective_c/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/pkgs/objective_c/example/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 000000000..f2e259c7c --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pkgs/objective_c/example/ios/Runner/Base.lproj/Main.storyboard b/pkgs/objective_c/example/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 000000000..f3c28516f --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pkgs/objective_c/example/ios/Runner/Info.plist b/pkgs/objective_c/example/ios/Runner/Info.plist new file mode 100644 index 000000000..8bbbc6dc9 --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Objective C + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + objective_c_example + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/pkgs/objective_c/example/ios/Runner/Runner-Bridging-Header.h b/pkgs/objective_c/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 000000000..308a2a560 --- /dev/null +++ b/pkgs/objective_c/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/pkgs/objective_c/example/ios/RunnerTests/RunnerTests.swift b/pkgs/objective_c/example/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 000000000..86a7c3b1b --- /dev/null +++ b/pkgs/objective_c/example/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/pkgs/objective_c/example/lib/main.dart b/pkgs/objective_c/example/lib/main.dart new file mode 100644 index 000000000..1c2d1d35b --- /dev/null +++ b/pkgs/objective_c/example/lib/main.dart @@ -0,0 +1,37 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:objective_c/objective_c.dart'; + +void main() { + runApp(const MaterialApp(home: MainApp())); +} + +class MainApp extends StatefulWidget { + const MainApp({super.key}); + + @override + State createState() => _MainAppState(); +} + +class _MainAppState extends State { + late final String message; + + @override + void initState() { + super.initState(); + + message = NSString('Hello World!').toString(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Center( + child: Text(message), + ), + ); + } +} diff --git a/pkgs/objective_c/example/macos/.gitignore b/pkgs/objective_c/example/macos/.gitignore new file mode 100644 index 000000000..746adbb6b --- /dev/null +++ b/pkgs/objective_c/example/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/pkgs/objective_c/example/macos/Flutter/Flutter-Debug.xcconfig b/pkgs/objective_c/example/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 000000000..4b81f9b2d --- /dev/null +++ b/pkgs/objective_c/example/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/pkgs/objective_c/example/macos/Flutter/Flutter-Release.xcconfig b/pkgs/objective_c/example/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 000000000..5caa9d157 --- /dev/null +++ b/pkgs/objective_c/example/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/pkgs/objective_c/example/macos/Flutter/GeneratedPluginRegistrant.swift b/pkgs/objective_c/example/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 000000000..cccf817a5 --- /dev/null +++ b/pkgs/objective_c/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,10 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { +} diff --git a/pkgs/objective_c/example/macos/Podfile b/pkgs/objective_c/example/macos/Podfile new file mode 100644 index 000000000..c795730db --- /dev/null +++ b/pkgs/objective_c/example/macos/Podfile @@ -0,0 +1,43 @@ +platform :osx, '10.14' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end diff --git a/pkgs/objective_c/example/macos/Runner.xcodeproj/project.pbxproj b/pkgs/objective_c/example/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..f6e37da45 --- /dev/null +++ b/pkgs/objective_c/example/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,705 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC10EC2044A3C60003C045; + remoteInfo = Runner; + }; + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* objective_c_example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "objective_c_example.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C80D6294CF71000263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C80D7294CF71000263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 331C80D6294CF71000263BE5 /* RunnerTests */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* objective_c_example.app */, + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C80D1294CF70F00263BE5 /* Sources */, + 331C80D2294CF70F00263BE5 /* Frameworks */, + 331C80D3294CF70F00263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C80DA294CF71000263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* objective_c_example.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C80D4294CF70F00263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 33CC10EC2044A3C60003C045; + }; + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 331C80D4294CF70F00263BE5 /* RunnerTests */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C80D3294CF70F00263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C80D1294CF70F00263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC10EC2044A3C60003C045 /* Runner */; + targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; + }; + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 331C80DB294CF71000263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.github.dartlang.objectiveCExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/objective_c_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/objective_c_example"; + }; + name = Debug; + }; + 331C80DC294CF71000263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.github.dartlang.objectiveCExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/objective_c_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/objective_c_example"; + }; + name = Release; + }; + 331C80DD294CF71000263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.github.dartlang.objectiveCExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/objective_c_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/objective_c_example"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C80DB294CF71000263BE5 /* Debug */, + 331C80DC294CF71000263BE5 /* Release */, + 331C80DD294CF71000263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/pkgs/objective_c/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/pkgs/objective_c/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/pkgs/objective_c/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/pkgs/objective_c/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/pkgs/objective_c/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000..c87f47847 --- /dev/null +++ b/pkgs/objective_c/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pkgs/objective_c/example/macos/Runner.xcworkspace/contents.xcworkspacedata b/pkgs/objective_c/example/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..1d526a16e --- /dev/null +++ b/pkgs/objective_c/example/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/pkgs/objective_c/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/pkgs/objective_c/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/pkgs/objective_c/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/pkgs/objective_c/example/macos/Runner/AppDelegate.swift b/pkgs/objective_c/example/macos/Runner/AppDelegate.swift new file mode 100644 index 000000000..d53ef6437 --- /dev/null +++ b/pkgs/objective_c/example/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..a2ec33f19 --- /dev/null +++ b/pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..82b6f9d9a33e198f5747104729e1fcef999772a5 GIT binary patch literal 102994 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ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY literal 0 HcmV?d00001 diff --git a/pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..13b35eba55c6dabc3aac36f33d859266c18fa0d0 GIT binary patch literal 5680 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 literal 0 HcmV?d00001 diff --git a/pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3f5fa40fb3d1e0710331a48de5d256da3f275d GIT binary patch literal 520 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 literal 0 HcmV?d00001 diff --git a/pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/pkgs/objective_c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1632cfddf3d9dade342351e627a0a75609fb46 GIT binary patch literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pkgs/objective_c/example/macos/Runner/Configs/AppInfo.xcconfig b/pkgs/objective_c/example/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 000000000..50d7b8686 --- /dev/null +++ b/pkgs/objective_c/example/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = objective_c_example + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.github.dartlang.objectiveCExample + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2024 com.github.dart_lang. All rights reserved. diff --git a/pkgs/objective_c/example/macos/Runner/Configs/Debug.xcconfig b/pkgs/objective_c/example/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 000000000..36b0fd946 --- /dev/null +++ b/pkgs/objective_c/example/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/pkgs/objective_c/example/macos/Runner/Configs/Release.xcconfig b/pkgs/objective_c/example/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 000000000..dff4f4956 --- /dev/null +++ b/pkgs/objective_c/example/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/pkgs/objective_c/example/macos/Runner/Configs/Warnings.xcconfig b/pkgs/objective_c/example/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 000000000..42bcbf478 --- /dev/null +++ b/pkgs/objective_c/example/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/pkgs/objective_c/example/macos/Runner/DebugProfile.entitlements b/pkgs/objective_c/example/macos/Runner/DebugProfile.entitlements new file mode 100644 index 000000000..dddb8a30c --- /dev/null +++ b/pkgs/objective_c/example/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/pkgs/objective_c/example/macos/Runner/Info.plist b/pkgs/objective_c/example/macos/Runner/Info.plist new file mode 100644 index 000000000..4789daa6a --- /dev/null +++ b/pkgs/objective_c/example/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/pkgs/objective_c/example/macos/Runner/MainFlutterWindow.swift b/pkgs/objective_c/example/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 000000000..3cc05eb23 --- /dev/null +++ b/pkgs/objective_c/example/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/pkgs/objective_c/example/macos/Runner/Release.entitlements b/pkgs/objective_c/example/macos/Runner/Release.entitlements new file mode 100644 index 000000000..852fa1a47 --- /dev/null +++ b/pkgs/objective_c/example/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/pkgs/objective_c/example/macos/RunnerTests/RunnerTests.swift b/pkgs/objective_c/example/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 000000000..61f3bd1fc --- /dev/null +++ b/pkgs/objective_c/example/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Cocoa +import FlutterMacOS +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/pkgs/objective_c/example/pubspec.lock b/pkgs/objective_c/example/pubspec.lock new file mode 100644 index 000000000..0dce9eae5 --- /dev/null +++ b/pkgs/objective_c/example/pubspec.lock @@ -0,0 +1,236 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" + source: hosted + version: "1.18.0" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + ffi: + dependency: "direct main" + description: + name: ffi + sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + url: "https://pub.dev" + source: hosted + version: "10.0.4" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" + url: "https://pub.dev" + source: hosted + version: "3.0.3" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + lints: + dependency: transitive + description: + name: lints + sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 + url: "https://pub.dev" + source: hosted + version: "3.0.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + url: "https://pub.dev" + source: hosted + version: "0.12.16+1" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + url: "https://pub.dev" + source: hosted + version: "0.8.0" + meta: + dependency: transitive + description: + name: meta + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" + url: "https://pub.dev" + source: hosted + version: "1.12.0" + objective_c: + dependency: "direct main" + description: + path: ".." + relative: true + source: path + version: "0.0.1-wip" + path: + dependency: transitive + description: + name: path + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.dev" + source: hosted + version: "1.9.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" + url: "https://pub.dev" + source: hosted + version: "0.7.0" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: a2662fb1f114f4296cf3f5a50786a2d888268d7776cf681aa17d660ffa23b246 + url: "https://pub.dev" + source: hosted + version: "14.0.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" +sdks: + dart: ">=3.3.0 <4.0.0" + flutter: ">=3.18.0-18.0.pre.54" diff --git a/pkgs/objective_c/example/pubspec.yaml b/pkgs/objective_c/example/pubspec.yaml new file mode 100644 index 000000000..f5312e8a3 --- /dev/null +++ b/pkgs/objective_c/example/pubspec.yaml @@ -0,0 +1,27 @@ +# Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +# for details. All rights reserved. Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. + +name: example +description: "Demonstrates using package:objective_c" +publish_to: 'none' +version: 0.1.0 + +environment: + sdk: '>=3.3.0 <4.0.0' + flutter: '>=3.3.0' + +dependencies: + ffi: ^2.1.0 + flutter: + sdk: flutter + objective_c: + path: .. + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^3.0.0 + +flutter: + uses-material-design: true diff --git a/pkgs/objective_c/ffigen_c.yaml b/pkgs/objective_c/ffigen_c.yaml new file mode 100644 index 000000000..a95e28293 --- /dev/null +++ b/pkgs/objective_c/ffigen_c.yaml @@ -0,0 +1,54 @@ +# Generate bindings for the C headers. +# Regenerate bindings with `dart run tool/generate_code.dart`. +name: CBindings +output: 'lib/src/c_bindings_generated.dart' +headers: + entry-points: + - 'src/include/dart_api_dl.h' + - 'src/objective_c.h' + - 'src/objective_c_runtime_types.h' + - 'src/objective_c_runtime_functions.h' +ffi-native: + assetId: 'objective_c.framework/objective_c' +exclude-all-by-default: true +generate-for-package-objective-c: true +functions: + include: + - 'objc_.*' + - 'sel_registerName' + - '_Block_.*' + - 'disposeObjCBlockWithClosure' + - 'Dart_InitializeApiDL' + leaf: + include: + - '(?!objc_msgSend).*' + rename: + 'sel_registerName': 'registerName' + 'objc_getClass': 'getClass' + 'objc_retain': 'objectRetain' + 'objc_release': 'objectRelease' + 'objc_msgSend': 'msgSend' + 'objc_msgSend_fpret': 'msgSendFpret' + 'objc_msgSend_stret': 'msgSendStret' + '_Block_copy': 'blockCopy' + '_Block_release': 'blockRelease' +globals: + include: + - _NSConcreteGlobalBlock + rename: + '_(.*)': '$1' +typedefs: + include: + - 'ObjC.*' +preamble: | + // Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file + // for details. All rights reserved. Use of this source code is governed by a + // BSD-style license that can be found in the LICENSE file. + + // Bindings for `src/objective_c.h` and `src/objective_c_runtime.h`. + // Regenerate bindings with `dart run tool/generate_code.dart`. + + // ignore_for_file: always_specify_types + // ignore_for_file: camel_case_types + // ignore_for_file: non_constant_identifier_names + // coverage:ignore-file diff --git a/pkgs/objective_c/ffigen_objc.yaml b/pkgs/objective_c/ffigen_objc.yaml new file mode 100644 index 000000000..4be46b550 --- /dev/null +++ b/pkgs/objective_c/ffigen_objc.yaml @@ -0,0 +1,56 @@ +# Generate bindings for the ObjC headers. +# Regenerate bindings with `dart run tool/generate_code.dart`. +name: ObjectiveCBindings +language: objc +output: 'lib/src/objective_c_bindings_generated.dart' +headers: + entry-points: + - 'src/foundation.h' +ffi-native: +exclude-all-by-default: true +generate-for-package-objective-c: true +objc-interfaces: + # Keep in sync with ffigen's ObjCBuiltInFunctions.builtInInterfaces. + include: + - NSArray + - NSCharacterSet + - NSCoder + - NSData + - NSDate + - NSDictionary + - NSEnumerator + - NSError + - NSIndexSet + - NSInvocation + - NSItemProvider + - NSLocale + - NSMethodSignature + - NSMutableArray + - NSMutableData + - NSMutableDictionary + - NSMutableSet + - NSMutableString + - NSNotification + - NSNumber + - NSObject + - NSProgress + - NSSet + - NSString + - NSURL + - NSURLHandle + - NSValue + - Protocol +preamble: | + // Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file + // for details. All rights reserved. Use of this source code is governed by a + // BSD-style license that can be found in the LICENSE file. + + // Bindings for `src/foundation.h`. + // Regenerate bindings with `dart run tool/generate_code.dart`. + + // ignore_for_file: always_specify_types + // ignore_for_file: camel_case_types + // ignore_for_file: non_constant_identifier_names + // coverage:ignore-file + + import 'package:ffi/ffi.dart' as pkg_ffi; diff --git a/pkgs/objective_c/ios/Classes/objective_c.c b/pkgs/objective_c/ios/Classes/objective_c.c new file mode 100644 index 000000000..83496a45f --- /dev/null +++ b/pkgs/objective_c/ios/Classes/objective_c.c @@ -0,0 +1,8 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// Relative import to be able to reuse the C sources. +// See the comment in ../{projectName}}.podspec for more information. +#include "../../src/objective_c.c" +#include "../../src/include/dart_api_dl.c" diff --git a/pkgs/objective_c/ios/objective_c.podspec b/pkgs/objective_c/ios/objective_c.podspec new file mode 100644 index 000000000..e784ccd7c --- /dev/null +++ b/pkgs/objective_c/ios/objective_c.podspec @@ -0,0 +1,28 @@ +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint objective_c.podspec` to validate before publishing. +# +Pod::Spec.new do |s| + s.name = 'objective_c' + s.version = '0.0.1' + s.summary = 'A library to access Objective C from Flutter that acts as a support library for package:ffigen.' + s.description = <<-DESC +A library to access Objective C from Flutter that acts as a support library for package:ffigen. + DESC + s.homepage = 'http://example.com' + s.license = { :file => '../LICENSE' } + s.author = { 'Your Company' => 'email@example.com' } + + # This will ensure the source files in Classes/ are included in the native + # builds of apps using this FFI plugin. Podspec does not support relative + # paths, so Classes contains a forwarder C file that relatively imports + # `../src/*` so that the C sources can be shared among all target platforms. + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.dependency 'Flutter' + s.platform = :ios, '12.0' + + # Flutter.framework does not contain a i386 slice. + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } + s.swift_version = '5.0' +end diff --git a/pkgs/objective_c/lib/objective_c.dart b/pkgs/objective_c/lib/objective_c.dart new file mode 100644 index 000000000..41f473af5 --- /dev/null +++ b/pkgs/objective_c/lib/objective_c.dart @@ -0,0 +1,48 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +export 'src/internal.dart' hide blockHasRegisteredClosure; +export 'src/ns_data.dart'; +export 'src/ns_string.dart'; +export 'src/c_bindings_generated.dart' + show + ObjCSelector, + ObjCObject, + ObjCBlock, + objectRetain, + objectRelease, + blockCopy, + blockRelease; + +// Keep in sync with pkgs/objective_c/ffigen_objc.yaml. +export 'src/objective_c_bindings_generated.dart' + show + NSArray, + NSCharacterSet, + NSCoder, + NSData, + NSDate, + NSDictionary, + NSEnumerator, + NSError, + NSIndexSet, + NSInvocation, + NSItemProvider, + NSLocale, + NSMethodSignature, + NSMutableArray, + NSMutableData, + NSMutableDictionary, + NSMutableSet, + NSMutableString, + NSNotification, + NSNumber, + NSObject, + NSProgress, + NSSet, + NSString, + NSURL, + NSURLHandle, + NSValue, + Protocol; diff --git a/pkgs/objective_c/lib/src/c_bindings_generated.dart b/pkgs/objective_c/lib/src/c_bindings_generated.dart new file mode 100644 index 000000000..5f75847c1 --- /dev/null +++ b/pkgs/objective_c/lib/src/c_bindings_generated.dart @@ -0,0 +1,141 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// Bindings for `src/objective_c.h` and `src/objective_c_runtime.h`. +// Regenerate bindings with `dart run tool/generate_code.dart`. + +// ignore_for_file: always_specify_types +// ignore_for_file: camel_case_types +// ignore_for_file: non_constant_identifier_names +// coverage:ignore-file + +// AUTO GENERATED FILE, DO NOT EDIT. +// +// Generated by `package:ffigen`. +// ignore_for_file: type=lint +@ffi.DefaultAsset('objective_c.framework/objective_c') +library; + +import 'dart:ffi' as ffi; + +/// \mainpage Dynamically Linked Dart API +/// +/// This exposes a subset of symbols from dart_api.h and dart_native_api.h +/// available in every Dart embedder through dynamic linking. +/// +/// All symbols are postfixed with _DL to indicate that they are dynamically +/// linked and to prevent conflicts with the original symbol. +/// +/// Link `dart_api_dl.c` file into your library and invoke +/// `Dart_InitializeApiDL` with `NativeApi.initializeApiDLData`. +/// +/// Returns 0 on success. +@ffi.Native)>(isLeaf: true) +external int Dart_InitializeApiDL( + ffi.Pointer data, +); + +@ffi.Native)>(isLeaf: true) +external void disposeObjCBlockWithClosure( + ffi.Pointer block, +); + +@ffi.Native Function(ffi.Pointer)>( + symbol: "sel_registerName", isLeaf: true) +external ffi.Pointer registerName( + ffi.Pointer name, +); + +@ffi.Native Function(ffi.Pointer)>( + symbol: "objc_getClass", isLeaf: true) +external ffi.Pointer getClass( + ffi.Pointer name, +); + +@ffi.Native Function(ffi.Pointer)>( + symbol: "objc_retain", isLeaf: true) +external ffi.Pointer objectRetain( + ffi.Pointer object, +); + +@ffi.Native)>( + symbol: "objc_release", isLeaf: true) +external void objectRelease( + ffi.Pointer object, +); + +@ffi.Native(symbol: "objc_msgSend") +external void msgSend(); + +@ffi.Native(symbol: "objc_msgSend_fpret") +external void msgSendFpret(); + +@ffi.Native(symbol: "objc_msgSend_stret") +external void msgSendStret(); + +@ffi.Native>(symbol: "_NSConcreteGlobalBlock") +external final ffi.Pointer NSConcreteGlobalBlock; + +@ffi.Native Function(ffi.Pointer)>( + symbol: "_Block_copy", isLeaf: true) +external ffi.Pointer blockCopy( + ffi.Pointer object, +); + +@ffi.Native)>( + symbol: "_Block_release", isLeaf: true) +external void blockRelease( + ffi.Pointer object, +); + +typedef ObjCBlock = _ObjCBlock; + +final class _ObjCBlock extends ffi.Struct { + external ffi.Pointer isa; + + @ffi.Int() + external int flags; + + @ffi.Int() + external int reserved; + + external ffi.Pointer invoke; + + external ffi.Pointer descriptor; + + external ffi.Pointer target; + + @ffi.Int64() + external int dispose_port; +} + +typedef ObjCBlockDesc = _ObjCBlockDesc; + +final class _ObjCBlockDesc extends ffi.Struct { + @ffi.UnsignedLong() + external int reserved; + + @ffi.UnsignedLong() + external int size; + + external ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer dst, ffi.Pointer src)>> + copy_helper; + + external ffi + .Pointer src)>> + dispose_helper; + + external ffi.Pointer signature; +} + +typedef ObjCSelector = _ObjCSelector; + +final class _ObjCSelector extends ffi.Opaque {} + +typedef ObjCObject = _ObjCObject; + +final class _ObjCObject extends ffi.Opaque {} diff --git a/pkgs/objective_c/lib/src/internal.dart b/pkgs/objective_c/lib/src/internal.dart new file mode 100644 index 000000000..1b2b02817 --- /dev/null +++ b/pkgs/objective_c/lib/src/internal.dart @@ -0,0 +1,211 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:ffi'; +import 'dart:isolate'; + +import 'package:ffi/ffi.dart'; + +import 'c_bindings_generated.dart' as c; + +/// Only for use by ffigen bindings. +Pointer registerName(String name) { + final cstr = name.toNativeUtf8(); + final sel = c.registerName(cstr.cast()); + calloc.free(cstr); + return sel; +} + +/// Only for use by ffigen bindings. +Pointer getClass(String name) { + final cstr = name.toNativeUtf8(); + final clazz = c.getClass(cstr.cast()); + calloc.free(cstr); + if (clazz == nullptr) { + throw Exception('Failed to load Objective-C class: $name'); + } + return clazz; +} + +/// Only for use by ffigen bindings. +final msgSendPointer = + Native.addressOf>(c.msgSend); + +/// Only for use by ffigen bindings. +final msgSendFpretPointer = + Native.addressOf>(c.msgSendFpret); + +/// Only for use by ffigen bindings. +final msgSendStretPointer = + Native.addressOf>(c.msgSendStret); + +/// Only for use by ffigen bindings. +final useMsgSendVariants = + Abi.current() == Abi.iosX64 || Abi.current() == Abi.macosX64; + +class _ObjCFinalizable implements Finalizable { + final Pointer _ptr; + bool _pendingRelease; + + _ObjCFinalizable(this._ptr, {required bool retain, required bool release}) + : _pendingRelease = release { + if (retain) { + _retain(_ptr.cast()); + } + if (release) { + _finalizer.attach(this, _ptr.cast(), detach: this); + } + } + + /// Releases the reference to the underlying ObjC object held by this wrapper. + /// Throws a StateError if this wrapper doesn't currently hold a reference. + void release() { + if (_pendingRelease) { + _pendingRelease = false; + _release(_ptr.cast()); + _finalizer.detach(this); + } else { + throw StateError( + 'Released an ObjC object that was unowned or already released.'); + } + } + + @override + bool operator ==(Object other) { + return other is _ObjCFinalizable && _ptr == other._ptr; + } + + @override + int get hashCode => _ptr.hashCode; + + /// Return a pointer to this object. + Pointer get pointer => _ptr; + + /// Retain a reference to this object and then return the pointer. This + /// reference must be released when you are done with it. If you wrap this + /// reference in another object, make sure to release it but not retain it: + /// `castFromPointer(lib, pointer, retain: false, release: true)` + Pointer retainAndReturnPointer() { + _retain(_ptr.cast()); + return _ptr; + } + + NativeFinalizer get _finalizer => throw UnimplementedError(); + void _retain(Pointer ptr) => throw UnimplementedError(); + void _release(Pointer ptr) => throw UnimplementedError(); +} + +/// Only for use by ffigen bindings. +class ObjCObjectBase extends _ObjCFinalizable { + ObjCObjectBase(super.ptr, {required super.retain, required super.release}); + + static final _objectFinalizer = NativeFinalizer( + Native.addressOf)>>( + c.objectRelease) + .cast()); + + @override + NativeFinalizer get _finalizer => _objectFinalizer; + + @override + void _retain(Pointer ptr) => c.objectRetain(ptr); + + @override + void _release(Pointer ptr) => c.objectRelease(ptr); +} + +/// Only for use by ffigen bindings. +class ObjCBlockBase extends _ObjCFinalizable { + ObjCBlockBase(super.ptr, {required super.retain, required super.release}); + + static final _blockFinalizer = NativeFinalizer( + Native.addressOf)>>( + c.blockRelease) + .cast()); + + @override + NativeFinalizer get _finalizer => _blockFinalizer; + + @override + void _retain(Pointer ptr) => c.blockCopy(ptr); + + @override + void _release(Pointer ptr) => c.blockRelease(ptr); +} + +Pointer _newBlockDesc( + Pointer)>> + disposeHelper) { + final desc = calloc.allocate(sizeOf()); + desc.ref.reserved = 0; + desc.ref.size = sizeOf(); + desc.ref.copy_helper = nullptr; + desc.ref.dispose_helper = disposeHelper.cast(); + desc.ref.signature = nullptr; + return desc; +} + +final _pointerBlockDesc = _newBlockDesc(nullptr); +final _closureBlockDesc = _newBlockDesc( + Native.addressOf)>>( + c.disposeObjCBlockWithClosure)); + +Pointer _newBlock(Pointer invoke, Pointer target, + Pointer descriptor, int disposePort, int flags) { + final b = calloc.allocate(sizeOf()); + b.ref.isa = c.NSConcreteGlobalBlock; + b.ref.flags = flags; + b.ref.reserved = 0; + b.ref.invoke = invoke; + b.ref.target = target; + b.ref.dispose_port = disposePort; + b.ref.descriptor = descriptor; + final copy = c.blockCopy(b.cast()).cast(); + calloc.free(b); + return copy; +} + +const int _blockHasCopyDispose = 1 << 25; + +/// Only for use by ffigen bindings. +Pointer newClosureBlock(Pointer invoke, Function fn) => + _newBlock(invoke, _registerBlockClosure(fn), _closureBlockDesc, + _blockClosureDisposer.sendPort.nativePort, _blockHasCopyDispose); + +/// Only for use by ffigen bindings. +Pointer newPointerBlock( + Pointer invoke, Pointer target) => + _newBlock(invoke, target, _pointerBlockDesc, 0, 0); + +final _blockClosureRegistry = {}; + +int _blockClosureRegistryLastId = 0; + +final _blockClosureDisposer = () { + c.Dart_InitializeApiDL(NativeApi.initializeApiDLData); + return RawReceivePort((dynamic msg) { + final id = msg as int; + assert(_blockClosureRegistry.containsKey(id)); + _blockClosureRegistry.remove(id); + }, "ObjCBlockClosureDisposer") + ..keepIsolateAlive = false; +}(); + +Pointer _registerBlockClosure(Function closure) { + ++_blockClosureRegistryLastId; + assert(!_blockClosureRegistry.containsKey(_blockClosureRegistryLastId)); + _blockClosureRegistry[_blockClosureRegistryLastId] = closure; + return Pointer.fromAddress(_blockClosureRegistryLastId); +} + +/// Only for use by ffigen bindings. +Function getBlockClosure(Pointer block) { + int id = block.ref.target.address; + assert(_blockClosureRegistry.containsKey(id)); + return _blockClosureRegistry[id]!; +} + +// Not exported by ../objective_c.dart, because it's only for testing. +bool blockHasRegisteredClosure(Pointer block) => + _blockClosureRegistry.containsKey(block.ref.target.address); diff --git a/pkgs/objective_c/lib/src/ns_data.dart b/pkgs/objective_c/lib/src/ns_data.dart new file mode 100644 index 000000000..0284d9718 --- /dev/null +++ b/pkgs/objective_c/lib/src/ns_data.dart @@ -0,0 +1,50 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:ffi'; +import 'dart:typed_data'; + +import 'package:ffi/ffi.dart'; + +import 'objective_c_bindings_generated.dart'; + +extension NSDataExtensions on NSData { + /// Return the value of [bytes] at the given index. + /// + /// The returned value will be in the range 0 to 255. + int operator [](int index) { + IndexError.check(index, length, indexable: this); + return bytes.cast()[index]; + } + + /// Return a list containing the contents of the [NSData]. + Uint8List toList() { + if (bytes.address == 0 || length == 0) { + return Uint8List(0); + } else { + return Uint8List.fromList(bytes.cast().asTypedList(length)); + } + } +} + +extension NSDataListExtension on List { + /// Return a [NSData] containing the contents of the [List] interpreted as + /// bytes. + /// + /// The elements of the [List] should be integers in the range 0 to 255. Any + /// integer, which is not in that range, is converted to a byte as if by + /// `value.toUnsigned(8)`. + NSData toNSData() { + if (length == 0) { + return NSData.new1(); + } + final buffer = malloc(length); + buffer.asTypedList(length).setAll(0, this); + + final nsData = NSData.dataWithBytes_length_(buffer.cast(), length); + malloc.free(buffer); + + return nsData; + } +} diff --git a/pkgs/objective_c/lib/src/ns_string.dart b/pkgs/objective_c/lib/src/ns_string.dart new file mode 100644 index 000000000..721180316 --- /dev/null +++ b/pkgs/objective_c/lib/src/ns_string.dart @@ -0,0 +1,9 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'objective_c_bindings_generated.dart'; + +extension StringToNSString on String { + NSString toNSString() => NSString(this); +} diff --git a/pkgs/objective_c/lib/src/objective_c_bindings_generated.dart b/pkgs/objective_c/lib/src/objective_c_bindings_generated.dart new file mode 100644 index 000000000..265402289 --- /dev/null +++ b/pkgs/objective_c/lib/src/objective_c_bindings_generated.dart @@ -0,0 +1,15706 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// Bindings for `src/foundation.h`. +// Regenerate bindings with `dart run tool/generate_code.dart`. + +// ignore_for_file: always_specify_types +// ignore_for_file: camel_case_types +// ignore_for_file: non_constant_identifier_names +// coverage:ignore-file + +import 'package:ffi/ffi.dart' as pkg_ffi; + +// AUTO GENERATED FILE, DO NOT EDIT. +// +// Generated by `package:ffigen`. +// ignore_for_file: type=lint +import 'dart:ffi' as ffi; +import '../objective_c.dart' as objc; + +class NSObject extends objc.ObjCObjectBase { + NSObject._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super(pointer, retain: retain, release: release); + + /// Constructs a [NSObject] that points to the same underlying object as [other]. + NSObject.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSObject] that wraps the given raw object pointer. + NSObject.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSObject]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSObject); + } + + static void load() { + _objc_msgSend_1(_class_NSObject, _sel_load); + } + + static void initialize() { + _objc_msgSend_1(_class_NSObject, _sel_initialize); + } + + NSObject init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static NSObject new1() { + final _ret = _objc_msgSend_2(_class_NSObject, _sel_new); + return NSObject.castFromPointer(_ret, retain: false, release: true); + } + + static NSObject allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_3(_class_NSObject, _sel_allocWithZone_, zone); + return NSObject.castFromPointer(_ret, retain: false, release: true); + } + + static NSObject alloc() { + final _ret = _objc_msgSend_2(_class_NSObject, _sel_alloc); + return NSObject.castFromPointer(_ret, retain: false, release: true); + } + + void dealloc() { + _objc_msgSend_1(this.pointer, _sel_dealloc); + } + + void finalize() { + _objc_msgSend_1(this.pointer, _sel_finalize); + } + + NSObject copy() { + final _ret = _objc_msgSend_2(this.pointer, _sel_copy); + return NSObject.castFromPointer(_ret, retain: false, release: true); + } + + NSObject mutableCopy() { + final _ret = _objc_msgSend_2(this.pointer, _sel_mutableCopy); + return NSObject.castFromPointer(_ret, retain: false, release: true); + } + + static NSObject copyWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_3(_class_NSObject, _sel_copyWithZone_, zone); + return NSObject.castFromPointer(_ret, retain: false, release: true); + } + + static NSObject mutableCopyWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_3(_class_NSObject, _sel_mutableCopyWithZone_, zone); + return NSObject.castFromPointer(_ret, retain: false, release: true); + } + + static bool instancesRespondToSelector_( + ffi.Pointer aSelector) { + return _objc_msgSend_4( + _class_NSObject, _sel_instancesRespondToSelector_, aSelector); + } + + static bool conformsToProtocol_(Protocol protocol) { + return _objc_msgSend_5( + _class_NSObject, _sel_conformsToProtocol_, protocol.pointer); + } + + ffi.Pointer> methodForSelector_( + ffi.Pointer aSelector) { + return _objc_msgSend_6(this.pointer, _sel_methodForSelector_, aSelector); + } + + static ffi.Pointer> + instanceMethodForSelector_(ffi.Pointer aSelector) { + return _objc_msgSend_6( + _class_NSObject, _sel_instanceMethodForSelector_, aSelector); + } + + void doesNotRecognizeSelector_(ffi.Pointer aSelector) { + _objc_msgSend_7(this.pointer, _sel_doesNotRecognizeSelector_, aSelector); + } + + NSObject forwardingTargetForSelector_( + ffi.Pointer aSelector) { + final _ret = _objc_msgSend_8( + this.pointer, _sel_forwardingTargetForSelector_, aSelector); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + void forwardInvocation_(NSInvocation anInvocation) { + _objc_msgSend_9( + this.pointer, _sel_forwardInvocation_, anInvocation.pointer); + } + + NSMethodSignature methodSignatureForSelector_( + ffi.Pointer aSelector) { + final _ret = _objc_msgSend_10( + this.pointer, _sel_methodSignatureForSelector_, aSelector); + return NSMethodSignature.castFromPointer(_ret, retain: true, release: true); + } + + static NSMethodSignature instanceMethodSignatureForSelector_( + ffi.Pointer aSelector) { + final _ret = _objc_msgSend_10( + _class_NSObject, _sel_instanceMethodSignatureForSelector_, aSelector); + return NSMethodSignature.castFromPointer(_ret, retain: true, release: true); + } + + bool allowsWeakReference() { + return _objc_msgSend_11(this.pointer, _sel_allowsWeakReference); + } + + bool retainWeakReference() { + return _objc_msgSend_11(this.pointer, _sel_retainWeakReference); + } + + static bool isSubclassOfClass_(NSObject aClass) { + return _objc_msgSend_0( + _class_NSObject, _sel_isSubclassOfClass_, aClass.pointer); + } + + static bool resolveClassMethod_(ffi.Pointer sel) { + return _objc_msgSend_4(_class_NSObject, _sel_resolveClassMethod_, sel); + } + + static bool resolveInstanceMethod_(ffi.Pointer sel) { + return _objc_msgSend_4(_class_NSObject, _sel_resolveInstanceMethod_, sel); + } + + static int hash() { + return _objc_msgSend_12(_class_NSObject, _sel_hash); + } + + static NSObject superclass() { + final _ret = _objc_msgSend_2(_class_NSObject, _sel_superclass); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static NSObject class1() { + final _ret = _objc_msgSend_2(_class_NSObject, _sel_class); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static NSString description() { + final _ret = _objc_msgSend_32(_class_NSObject, _sel_description); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSString debugDescription() { + final _ret = _objc_msgSend_32(_class_NSObject, _sel_debugDescription); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + static int version() { + return _objc_msgSend_86(_class_NSObject, _sel_version); + } + + static void setVersion_(int aVersion) { + _objc_msgSend_284(_class_NSObject, _sel_setVersion_, aVersion); + } + + NSObject get classForCoder { + final _ret = _objc_msgSend_2(this.pointer, _sel_classForCoder); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSObject? replacementObjectForCoder_(NSCoder coder) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_replacementObjectForCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSObject? awakeAfterUsingCoder_(NSCoder coder) { + final _ret = _objc_msgSend_14( + this.pointer, _sel_awakeAfterUsingCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: false, release: true); + } + + static void poseAsClass_(NSObject aClass) { + _objc_msgSend_198(_class_NSObject, _sel_poseAsClass_, aClass.pointer); + } + + NSObject get autoContentAccessingProxy { + final _ret = _objc_msgSend_2(this.pointer, _sel_autoContentAccessingProxy); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + void URL_resourceDataDidBecomeAvailable_(NSURL sender, NSData newBytes) { + _objc_msgSend_285(this.pointer, _sel_URL_resourceDataDidBecomeAvailable_, + sender.pointer, newBytes.pointer); + } + + void URLResourceDidFinishLoading_(NSURL sender) { + _objc_msgSend_286( + this.pointer, _sel_URLResourceDidFinishLoading_, sender.pointer); + } + + void URLResourceDidCancelLoading_(NSURL sender) { + _objc_msgSend_286( + this.pointer, _sel_URLResourceDidCancelLoading_, sender.pointer); + } + + void URL_resourceDidFailLoadingWithReason_(NSURL sender, NSString reason) { + _objc_msgSend_287(this.pointer, _sel_URL_resourceDidFailLoadingWithReason_, + sender.pointer, reason.pointer); + } +} + +late final _class_NSObject = objc.getClass("NSObject"); +late final _sel_load = objc.registerName("load"); +final _objc_msgSend_1 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initialize = objc.registerName("initialize"); +typedef instancetype = ffi.Pointer; +typedef Dartinstancetype = NSObject; +late final _sel_init = objc.registerName("init"); +final _objc_msgSend_2 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_new = objc.registerName("new"); + +final class _NSZone extends ffi.Opaque {} + +late final _sel_allocWithZone_ = objc.registerName("allocWithZone:"); +final _objc_msgSend_3 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_NSZone>)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_NSZone>)>(); +late final _sel_alloc = objc.registerName("alloc"); +late final _sel_dealloc = objc.registerName("dealloc"); +late final _sel_finalize = objc.registerName("finalize"); +late final _sel_copy = objc.registerName("copy"); +late final _sel_mutableCopy = objc.registerName("mutableCopy"); +late final _sel_copyWithZone_ = objc.registerName("copyWithZone:"); +late final _sel_mutableCopyWithZone_ = + objc.registerName("mutableCopyWithZone:"); +late final _sel_instancesRespondToSelector_ = + objc.registerName("instancesRespondToSelector:"); +final _objc_msgSend_4 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class Protocol extends objc.ObjCObjectBase { + Protocol._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super(pointer, retain: retain, release: release); + + /// Constructs a [Protocol] that points to the same underlying object as [other]. + Protocol.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [Protocol] that wraps the given raw object pointer. + Protocol.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [Protocol]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_Protocol); + } +} + +late final _class_Protocol = objc.getClass("Protocol"); +final _objc_msgSend_0 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isKindOfClass_ = objc.registerName("isKindOfClass:"); +late final _sel_conformsToProtocol_ = objc.registerName("conformsToProtocol:"); +final _objc_msgSend_5 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_methodForSelector_ = objc.registerName("methodForSelector:"); +final _objc_msgSend_6 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer> Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer> Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_instanceMethodForSelector_ = + objc.registerName("instanceMethodForSelector:"); +late final _sel_doesNotRecognizeSelector_ = + objc.registerName("doesNotRecognizeSelector:"); +final _objc_msgSend_7 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_forwardingTargetForSelector_ = + objc.registerName("forwardingTargetForSelector:"); +final _objc_msgSend_8 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSInvocation extends objc.ObjCObjectBase { + NSInvocation._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super(pointer, retain: retain, release: release); + + /// Constructs a [NSInvocation] that points to the same underlying object as [other]. + NSInvocation.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSInvocation] that wraps the given raw object pointer. + NSInvocation.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSInvocation]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSInvocation); + } +} + +late final _class_NSInvocation = objc.getClass("NSInvocation"); +late final _sel_forwardInvocation_ = objc.registerName("forwardInvocation:"); +final _objc_msgSend_9 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSMethodSignature extends objc.ObjCObjectBase { + NSMethodSignature._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super(pointer, retain: retain, release: release); + + /// Constructs a [NSMethodSignature] that points to the same underlying object as [other]. + NSMethodSignature.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSMethodSignature] that wraps the given raw object pointer. + NSMethodSignature.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSMethodSignature]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMethodSignature); + } +} + +late final _class_NSMethodSignature = objc.getClass("NSMethodSignature"); +late final _sel_methodSignatureForSelector_ = + objc.registerName("methodSignatureForSelector:"); +final _objc_msgSend_10 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_instanceMethodSignatureForSelector_ = + objc.registerName("instanceMethodSignatureForSelector:"); +late final _sel_allowsWeakReference = objc.registerName("allowsWeakReference"); +final _objc_msgSend_11 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_retainWeakReference = objc.registerName("retainWeakReference"); +late final _sel_isSubclassOfClass_ = objc.registerName("isSubclassOfClass:"); +late final _sel_resolveClassMethod_ = objc.registerName("resolveClassMethod:"); +late final _sel_resolveInstanceMethod_ = + objc.registerName("resolveInstanceMethod:"); +late final _sel_hash = objc.registerName("hash"); +final _objc_msgSend_12 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_superclass = objc.registerName("superclass"); +late final _sel_class = objc.registerName("class"); + +class NSString extends NSObject { + factory NSString(String str) { + final cstr = str.toNativeUtf16(); + final nsstr = stringWithCharacters_length_(cstr.cast(), str.length); + pkg_ffi.calloc.free(cstr); + return nsstr; + } + + @override + String toString() { + final data = + dataUsingEncoding_(0x94000100 /* NSUTF16LittleEndianStringEncoding */); + return data!.bytes.cast().toDartString(length: length); + } + + NSString._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSString] that points to the same underlying object as [other]. + NSString.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSString] that wraps the given raw object pointer. + NSString.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSString]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSString); + } + + int get length { + return _objc_msgSend_12(this.pointer, _sel_length); + } + + int characterAtIndex_(int index) { + return _objc_msgSend_13(this.pointer, _sel_characterAtIndex_, index); + } + + @override + NSString init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? initWithCoder_(NSCoder coder) { + final _ret = + _objc_msgSend_14(this.pointer, _sel_initWithCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString substringFromIndex_(int from) { + final _ret = _objc_msgSend_15(this.pointer, _sel_substringFromIndex_, from); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString substringToIndex_(int to) { + final _ret = _objc_msgSend_15(this.pointer, _sel_substringToIndex_, to); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString substringWithRange_(_NSRange range) { + final _ret = + _objc_msgSend_16(this.pointer, _sel_substringWithRange_, range); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + void getCharacters_range_( + ffi.Pointer buffer, _NSRange range) { + _objc_msgSend_17(this.pointer, _sel_getCharacters_range_, buffer, range); + } + + int compare_(NSString string) { + return _objc_msgSend_18(this.pointer, _sel_compare_, string.pointer); + } + + int compare_options_(NSString string, int mask) { + return _objc_msgSend_19( + this.pointer, _sel_compare_options_, string.pointer, mask); + } + + int compare_options_range_( + NSString string, int mask, _NSRange rangeOfReceiverToCompare) { + return _objc_msgSend_20(this.pointer, _sel_compare_options_range_, + string.pointer, mask, rangeOfReceiverToCompare); + } + + int compare_options_range_locale_(NSString string, int mask, + _NSRange rangeOfReceiverToCompare, NSObject? locale) { + return _objc_msgSend_21( + this.pointer, + _sel_compare_options_range_locale_, + string.pointer, + mask, + rangeOfReceiverToCompare, + locale?.pointer ?? ffi.nullptr); + } + + int caseInsensitiveCompare_(NSString string) { + return _objc_msgSend_18( + this.pointer, _sel_caseInsensitiveCompare_, string.pointer); + } + + int localizedCompare_(NSString string) { + return _objc_msgSend_18( + this.pointer, _sel_localizedCompare_, string.pointer); + } + + int localizedCaseInsensitiveCompare_(NSString string) { + return _objc_msgSend_18( + this.pointer, _sel_localizedCaseInsensitiveCompare_, string.pointer); + } + + int localizedStandardCompare_(NSString string) { + return _objc_msgSend_18( + this.pointer, _sel_localizedStandardCompare_, string.pointer); + } + + bool isEqualToString_(NSString aString) { + return _objc_msgSend_22( + this.pointer, _sel_isEqualToString_, aString.pointer); + } + + bool hasPrefix_(NSString str) { + return _objc_msgSend_22(this.pointer, _sel_hasPrefix_, str.pointer); + } + + bool hasSuffix_(NSString str) { + return _objc_msgSend_22(this.pointer, _sel_hasSuffix_, str.pointer); + } + + NSString commonPrefixWithString_options_(NSString str, int mask) { + final _ret = _objc_msgSend_23( + this.pointer, _sel_commonPrefixWithString_options_, str.pointer, mask); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + bool containsString_(NSString str) { + return _objc_msgSend_22(this.pointer, _sel_containsString_, str.pointer); + } + + bool localizedCaseInsensitiveContainsString_(NSString str) { + return _objc_msgSend_22(this.pointer, + _sel_localizedCaseInsensitiveContainsString_, str.pointer); + } + + bool localizedStandardContainsString_(NSString str) { + return _objc_msgSend_22( + this.pointer, _sel_localizedStandardContainsString_, str.pointer); + } + + void localizedStandardRangeOfString_( + ffi.Pointer<_NSRange> stret, NSString str) { + objc.useMsgSendVariants + ? _objc_msgSend_24Stret(stret, this.pointer, + _sel_localizedStandardRangeOfString_, str.pointer) + : stret.ref = _objc_msgSend_24( + this.pointer, _sel_localizedStandardRangeOfString_, str.pointer); + } + + void rangeOfString_(ffi.Pointer<_NSRange> stret, NSString searchString) { + objc.useMsgSendVariants + ? _objc_msgSend_24Stret( + stret, this.pointer, _sel_rangeOfString_, searchString.pointer) + : stret.ref = _objc_msgSend_24( + this.pointer, _sel_rangeOfString_, searchString.pointer); + } + + void rangeOfString_options_( + ffi.Pointer<_NSRange> stret, NSString searchString, int mask) { + objc.useMsgSendVariants + ? _objc_msgSend_25Stret(stret, this.pointer, + _sel_rangeOfString_options_, searchString.pointer, mask) + : stret.ref = _objc_msgSend_25(this.pointer, + _sel_rangeOfString_options_, searchString.pointer, mask); + } + + void rangeOfString_options_range_(ffi.Pointer<_NSRange> stret, + NSString searchString, int mask, _NSRange rangeOfReceiverToSearch) { + objc.useMsgSendVariants + ? _objc_msgSend_26Stret( + stret, + this.pointer, + _sel_rangeOfString_options_range_, + searchString.pointer, + mask, + rangeOfReceiverToSearch) + : stret.ref = _objc_msgSend_26( + this.pointer, + _sel_rangeOfString_options_range_, + searchString.pointer, + mask, + rangeOfReceiverToSearch); + } + + void rangeOfString_options_range_locale_( + ffi.Pointer<_NSRange> stret, + NSString searchString, + int mask, + _NSRange rangeOfReceiverToSearch, + NSLocale? locale) { + objc.useMsgSendVariants + ? _objc_msgSend_27Stret( + stret, + this.pointer, + _sel_rangeOfString_options_range_locale_, + searchString.pointer, + mask, + rangeOfReceiverToSearch, + locale?.pointer ?? ffi.nullptr) + : stret.ref = _objc_msgSend_27( + this.pointer, + _sel_rangeOfString_options_range_locale_, + searchString.pointer, + mask, + rangeOfReceiverToSearch, + locale?.pointer ?? ffi.nullptr); + } + + void rangeOfCharacterFromSet_( + ffi.Pointer<_NSRange> stret, NSCharacterSet searchSet) { + objc.useMsgSendVariants + ? _objc_msgSend_229Stret(stret, this.pointer, + _sel_rangeOfCharacterFromSet_, searchSet.pointer) + : stret.ref = _objc_msgSend_229( + this.pointer, _sel_rangeOfCharacterFromSet_, searchSet.pointer); + } + + void rangeOfCharacterFromSet_options_( + ffi.Pointer<_NSRange> stret, NSCharacterSet searchSet, int mask) { + objc.useMsgSendVariants + ? _objc_msgSend_230Stret(stret, this.pointer, + _sel_rangeOfCharacterFromSet_options_, searchSet.pointer, mask) + : stret.ref = _objc_msgSend_230(this.pointer, + _sel_rangeOfCharacterFromSet_options_, searchSet.pointer, mask); + } + + void rangeOfCharacterFromSet_options_range_(ffi.Pointer<_NSRange> stret, + NSCharacterSet searchSet, int mask, _NSRange rangeOfReceiverToSearch) { + objc.useMsgSendVariants + ? _objc_msgSend_231Stret( + stret, + this.pointer, + _sel_rangeOfCharacterFromSet_options_range_, + searchSet.pointer, + mask, + rangeOfReceiverToSearch) + : stret.ref = _objc_msgSend_231( + this.pointer, + _sel_rangeOfCharacterFromSet_options_range_, + searchSet.pointer, + mask, + rangeOfReceiverToSearch); + } + + void rangeOfComposedCharacterSequenceAtIndex_( + ffi.Pointer<_NSRange> stret, int index) { + objc.useMsgSendVariants + ? _objc_msgSend_232Stret(stret, this.pointer, + _sel_rangeOfComposedCharacterSequenceAtIndex_, index) + : stret.ref = _objc_msgSend_232( + this.pointer, _sel_rangeOfComposedCharacterSequenceAtIndex_, index); + } + + void rangeOfComposedCharacterSequencesForRange_( + ffi.Pointer<_NSRange> stret, _NSRange range) { + objc.useMsgSendVariants + ? _objc_msgSend_233Stret(stret, this.pointer, + _sel_rangeOfComposedCharacterSequencesForRange_, range) + : stret.ref = _objc_msgSend_233(this.pointer, + _sel_rangeOfComposedCharacterSequencesForRange_, range); + } + + NSString stringByAppendingString_(NSString aString) { + final _ret = _objc_msgSend_101( + this.pointer, _sel_stringByAppendingString_, aString.pointer); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString stringByAppendingFormat_(NSString format) { + final _ret = _objc_msgSend_101( + this.pointer, _sel_stringByAppendingFormat_, format.pointer); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + double get doubleValue { + return objc.useMsgSendVariants + ? _objc_msgSend_90Fpret(this.pointer, _sel_doubleValue) + : _objc_msgSend_90(this.pointer, _sel_doubleValue); + } + + double get floatValue { + return objc.useMsgSendVariants + ? _objc_msgSend_89Fpret(this.pointer, _sel_floatValue) + : _objc_msgSend_89(this.pointer, _sel_floatValue); + } + + int get intValue { + return _objc_msgSend_84(this.pointer, _sel_intValue); + } + + int get integerValue { + return _objc_msgSend_86(this.pointer, _sel_integerValue); + } + + int get longLongValue { + return _objc_msgSend_87(this.pointer, _sel_longLongValue); + } + + bool get boolValue { + return _objc_msgSend_11(this.pointer, _sel_boolValue); + } + + NSString get uppercaseString { + final _ret = _objc_msgSend_32(this.pointer, _sel_uppercaseString); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString get lowercaseString { + final _ret = _objc_msgSend_32(this.pointer, _sel_lowercaseString); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString get capitalizedString { + final _ret = _objc_msgSend_32(this.pointer, _sel_capitalizedString); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString get localizedUppercaseString { + final _ret = _objc_msgSend_32(this.pointer, _sel_localizedUppercaseString); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString get localizedLowercaseString { + final _ret = _objc_msgSend_32(this.pointer, _sel_localizedLowercaseString); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString get localizedCapitalizedString { + final _ret = + _objc_msgSend_32(this.pointer, _sel_localizedCapitalizedString); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString uppercaseStringWithLocale_(NSLocale? locale) { + final _ret = _objc_msgSend_234(this.pointer, + _sel_uppercaseStringWithLocale_, locale?.pointer ?? ffi.nullptr); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString lowercaseStringWithLocale_(NSLocale? locale) { + final _ret = _objc_msgSend_234(this.pointer, + _sel_lowercaseStringWithLocale_, locale?.pointer ?? ffi.nullptr); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString capitalizedStringWithLocale_(NSLocale? locale) { + final _ret = _objc_msgSend_234(this.pointer, + _sel_capitalizedStringWithLocale_, locale?.pointer ?? ffi.nullptr); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + void getLineStart_end_contentsEnd_forRange_( + ffi.Pointer startPtr, + ffi.Pointer lineEndPtr, + ffi.Pointer contentsEndPtr, + _NSRange range) { + _objc_msgSend_235(this.pointer, _sel_getLineStart_end_contentsEnd_forRange_, + startPtr, lineEndPtr, contentsEndPtr, range); + } + + void lineRangeForRange_(ffi.Pointer<_NSRange> stret, _NSRange range) { + objc.useMsgSendVariants + ? _objc_msgSend_233Stret( + stret, this.pointer, _sel_lineRangeForRange_, range) + : stret.ref = + _objc_msgSend_233(this.pointer, _sel_lineRangeForRange_, range); + } + + void getParagraphStart_end_contentsEnd_forRange_( + ffi.Pointer startPtr, + ffi.Pointer parEndPtr, + ffi.Pointer contentsEndPtr, + _NSRange range) { + _objc_msgSend_235( + this.pointer, + _sel_getParagraphStart_end_contentsEnd_forRange_, + startPtr, + parEndPtr, + contentsEndPtr, + range); + } + + void paragraphRangeForRange_(ffi.Pointer<_NSRange> stret, _NSRange range) { + objc.useMsgSendVariants + ? _objc_msgSend_233Stret( + stret, this.pointer, _sel_paragraphRangeForRange_, range) + : stret.ref = _objc_msgSend_233( + this.pointer, _sel_paragraphRangeForRange_, range); + } + + void enumerateSubstringsInRange_options_usingBlock_(_NSRange range, int opts, + ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool block) { + _objc_msgSend_236( + this.pointer, + _sel_enumerateSubstringsInRange_options_usingBlock_, + range, + opts, + block.pointer); + } + + void enumerateLinesUsingBlock_(ObjCBlock_ffiVoid_NSString_bool block) { + _objc_msgSend_237( + this.pointer, _sel_enumerateLinesUsingBlock_, block.pointer); + } + + ffi.Pointer get UTF8String { + return _objc_msgSend_57(this.pointer, _sel_UTF8String); + } + + int get fastestEncoding { + return _objc_msgSend_12(this.pointer, _sel_fastestEncoding); + } + + int get smallestEncoding { + return _objc_msgSend_12(this.pointer, _sel_smallestEncoding); + } + + NSData? dataUsingEncoding_allowLossyConversion_(int encoding, bool lossy) { + final _ret = _objc_msgSend_238(this.pointer, + _sel_dataUsingEncoding_allowLossyConversion_, encoding, lossy); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSData? dataUsingEncoding_(int encoding) { + final _ret = + _objc_msgSend_239(this.pointer, _sel_dataUsingEncoding_, encoding); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + bool canBeConvertedToEncoding_(int encoding) { + return _objc_msgSend_121( + this.pointer, _sel_canBeConvertedToEncoding_, encoding); + } + + ffi.Pointer cStringUsingEncoding_(int encoding) { + return _objc_msgSend_240( + this.pointer, _sel_cStringUsingEncoding_, encoding); + } + + bool getCString_maxLength_encoding_( + ffi.Pointer buffer, int maxBufferCount, int encoding) { + return _objc_msgSend_241(this.pointer, _sel_getCString_maxLength_encoding_, + buffer, maxBufferCount, encoding); + } + + bool getBytes_maxLength_usedLength_encoding_options_range_remainingRange_( + ffi.Pointer buffer, + int maxBufferCount, + ffi.Pointer usedBufferCount, + int encoding, + int options, + _NSRange range, + ffi.Pointer<_NSRange> leftover) { + return _objc_msgSend_242( + this.pointer, + _sel_getBytes_maxLength_usedLength_encoding_options_range_remainingRange_, + buffer, + maxBufferCount, + usedBufferCount, + encoding, + options, + range, + leftover); + } + + int maximumLengthOfBytesUsingEncoding_(int enc) { + return _objc_msgSend_118( + this.pointer, _sel_maximumLengthOfBytesUsingEncoding_, enc); + } + + int lengthOfBytesUsingEncoding_(int enc) { + return _objc_msgSend_118( + this.pointer, _sel_lengthOfBytesUsingEncoding_, enc); + } + + static ffi.Pointer getAvailableStringEncodings() { + return _objc_msgSend_243(_class_NSString, _sel_availableStringEncodings); + } + + static NSString localizedNameOfStringEncoding_(int encoding) { + final _ret = _objc_msgSend_15( + _class_NSString, _sel_localizedNameOfStringEncoding_, encoding); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + static int getDefaultCStringEncoding() { + return _objc_msgSend_12(_class_NSString, _sel_defaultCStringEncoding); + } + + NSString get decomposedStringWithCanonicalMapping { + final _ret = _objc_msgSend_32( + this.pointer, _sel_decomposedStringWithCanonicalMapping); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString get precomposedStringWithCanonicalMapping { + final _ret = _objc_msgSend_32( + this.pointer, _sel_precomposedStringWithCanonicalMapping); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString get decomposedStringWithCompatibilityMapping { + final _ret = _objc_msgSend_32( + this.pointer, _sel_decomposedStringWithCompatibilityMapping); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString get precomposedStringWithCompatibilityMapping { + final _ret = _objc_msgSend_32( + this.pointer, _sel_precomposedStringWithCompatibilityMapping); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSArray componentsSeparatedByString_(NSString separator) { + final _ret = _objc_msgSend_244( + this.pointer, _sel_componentsSeparatedByString_, separator.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray componentsSeparatedByCharactersInSet_(NSCharacterSet separator) { + final _ret = _objc_msgSend_245(this.pointer, + _sel_componentsSeparatedByCharactersInSet_, separator.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSString stringByTrimmingCharactersInSet_(NSCharacterSet set) { + final _ret = _objc_msgSend_246( + this.pointer, _sel_stringByTrimmingCharactersInSet_, set.pointer); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString stringByPaddingToLength_withString_startingAtIndex_( + int newLength, NSString padString, int padIndex) { + final _ret = _objc_msgSend_247( + this.pointer, + _sel_stringByPaddingToLength_withString_startingAtIndex_, + newLength, + padString.pointer, + padIndex); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString stringByFoldingWithOptions_locale_(int options, NSLocale? locale) { + final _ret = _objc_msgSend_248( + this.pointer, + _sel_stringByFoldingWithOptions_locale_, + options, + locale?.pointer ?? ffi.nullptr); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString stringByReplacingOccurrencesOfString_withString_options_range_( + NSString target, + NSString replacement, + int options, + _NSRange searchRange) { + final _ret = _objc_msgSend_249( + this.pointer, + _sel_stringByReplacingOccurrencesOfString_withString_options_range_, + target.pointer, + replacement.pointer, + options, + searchRange); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString stringByReplacingOccurrencesOfString_withString_( + NSString target, NSString replacement) { + final _ret = _objc_msgSend_250( + this.pointer, + _sel_stringByReplacingOccurrencesOfString_withString_, + target.pointer, + replacement.pointer); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString stringByReplacingCharactersInRange_withString_( + _NSRange range, NSString replacement) { + final _ret = _objc_msgSend_251( + this.pointer, + _sel_stringByReplacingCharactersInRange_withString_, + range, + replacement.pointer); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? stringByApplyingTransform_reverse_( + NSString transform, bool reverse) { + final _ret = _objc_msgSend_252(this.pointer, + _sel_stringByApplyingTransform_reverse_, transform.pointer, reverse); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + bool writeToURL_atomically_encoding_error_(NSURL url, bool useAuxiliaryFile, + int enc, ffi.Pointer> error) { + return _objc_msgSend_253( + this.pointer, + _sel_writeToURL_atomically_encoding_error_, + url.pointer, + useAuxiliaryFile, + enc, + error); + } + + bool writeToFile_atomically_encoding_error_( + NSString path, + bool useAuxiliaryFile, + int enc, + ffi.Pointer> error) { + return _objc_msgSend_254( + this.pointer, + _sel_writeToFile_atomically_encoding_error_, + path.pointer, + useAuxiliaryFile, + enc, + error); + } + + NSString get description { + final _ret = _objc_msgSend_32(this.pointer, _sel_description); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + int get hash { + return _objc_msgSend_12(this.pointer, _sel_hash); + } + + NSString initWithCharactersNoCopy_length_freeWhenDone_( + ffi.Pointer characters, int length, bool freeBuffer) { + final _ret = _objc_msgSend_255( + this.pointer, + _sel_initWithCharactersNoCopy_length_freeWhenDone_, + characters, + length, + freeBuffer); + return NSString.castFromPointer(_ret, retain: false, release: true); + } + + NSString initWithCharactersNoCopy_length_deallocator_( + ffi.Pointer chars, + int len, + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong? deallocator) { + final _ret = _objc_msgSend_256( + this.pointer, + _sel_initWithCharactersNoCopy_length_deallocator_, + chars, + len, + deallocator?.pointer ?? ffi.nullptr); + return NSString.castFromPointer(_ret, retain: false, release: true); + } + + NSString initWithCharacters_length_( + ffi.Pointer characters, int length) { + final _ret = _objc_msgSend_257( + this.pointer, _sel_initWithCharacters_length_, characters, length); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? initWithUTF8String_(ffi.Pointer nullTerminatedCString) { + final _ret = _objc_msgSend_258( + this.pointer, _sel_initWithUTF8String_, nullTerminatedCString); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString initWithString_(NSString aString) { + final _ret = + _objc_msgSend_42(this.pointer, _sel_initWithString_, aString.pointer); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString initWithFormat_(NSString format) { + final _ret = + _objc_msgSend_42(this.pointer, _sel_initWithFormat_, format.pointer); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString initWithFormat_arguments_( + NSString format, ffi.Pointer<__va_list_tag> argList) { + final _ret = _objc_msgSend_259( + this.pointer, _sel_initWithFormat_arguments_, format.pointer, argList); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString initWithFormat_locale_(NSString format, NSObject? locale) { + final _ret = _objc_msgSend_260(this.pointer, _sel_initWithFormat_locale_, + format.pointer, locale?.pointer ?? ffi.nullptr); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString initWithFormat_locale_arguments_( + NSString format, NSObject? locale, ffi.Pointer<__va_list_tag> argList) { + final _ret = _objc_msgSend_261( + this.pointer, + _sel_initWithFormat_locale_arguments_, + format.pointer, + locale?.pointer ?? ffi.nullptr, + argList); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? initWithValidatedFormat_validFormatSpecifiers_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _objc_msgSend_262( + this.pointer, + _sel_initWithValidatedFormat_validFormatSpecifiers_error_, + format.pointer, + validFormatSpecifiers.pointer, + error); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? initWithValidatedFormat_validFormatSpecifiers_locale_error_( + NSString format, + NSString validFormatSpecifiers, + NSObject? locale, + ffi.Pointer> error) { + final _ret = _objc_msgSend_263( + this.pointer, + _sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_, + format.pointer, + validFormatSpecifiers.pointer, + locale?.pointer ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? initWithValidatedFormat_validFormatSpecifiers_arguments_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer<__va_list_tag> argList, + ffi.Pointer> error) { + final _ret = _objc_msgSend_264( + this.pointer, + _sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_, + format.pointer, + validFormatSpecifiers.pointer, + argList, + error); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? + initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_( + NSString format, + NSString validFormatSpecifiers, + NSObject? locale, + ffi.Pointer<__va_list_tag> argList, + ffi.Pointer> error) { + final _ret = _objc_msgSend_265( + this.pointer, + _sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_, + format.pointer, + validFormatSpecifiers.pointer, + locale?.pointer ?? ffi.nullptr, + argList, + error); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? initWithData_encoding_(NSData data, int encoding) { + final _ret = _objc_msgSend_266( + this.pointer, _sel_initWithData_encoding_, data.pointer, encoding); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? initWithBytes_length_encoding_( + ffi.Pointer bytes, int len, int encoding) { + final _ret = _objc_msgSend_267(this.pointer, + _sel_initWithBytes_length_encoding_, bytes, len, encoding); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? initWithBytesNoCopy_length_encoding_freeWhenDone_( + ffi.Pointer bytes, int len, int encoding, bool freeBuffer) { + final _ret = _objc_msgSend_268( + this.pointer, + _sel_initWithBytesNoCopy_length_encoding_freeWhenDone_, + bytes, + len, + encoding, + freeBuffer); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: false, release: true); + } + + NSString? initWithBytesNoCopy_length_encoding_deallocator_( + ffi.Pointer bytes, + int len, + int encoding, + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { + final _ret = _objc_msgSend_269( + this.pointer, + _sel_initWithBytesNoCopy_length_encoding_deallocator_, + bytes, + len, + encoding, + deallocator?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: false, release: true); + } + + static NSString string() { + final _ret = _objc_msgSend_2(_class_NSString, _sel_string); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSString stringWithString_(NSString string) { + final _ret = _objc_msgSend_42( + _class_NSString, _sel_stringWithString_, string.pointer); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSString stringWithCharacters_length_( + ffi.Pointer characters, int length) { + final _ret = _objc_msgSend_257( + _class_NSString, _sel_stringWithCharacters_length_, characters, length); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSString? stringWithUTF8String_( + ffi.Pointer nullTerminatedCString) { + final _ret = _objc_msgSend_258( + _class_NSString, _sel_stringWithUTF8String_, nullTerminatedCString); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSString stringWithFormat_(NSString format) { + final _ret = _objc_msgSend_42( + _class_NSString, _sel_stringWithFormat_, format.pointer); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSString localizedStringWithFormat_(NSString format) { + final _ret = _objc_msgSend_42( + _class_NSString, _sel_localizedStringWithFormat_, format.pointer); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSString? stringWithValidatedFormat_validFormatSpecifiers_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _objc_msgSend_262( + _class_NSString, + _sel_stringWithValidatedFormat_validFormatSpecifiers_error_, + format.pointer, + validFormatSpecifiers.pointer, + error); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSString? + localizedStringWithValidatedFormat_validFormatSpecifiers_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _objc_msgSend_262( + _class_NSString, + _sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_, + format.pointer, + validFormatSpecifiers.pointer, + error); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? initWithCString_encoding_( + ffi.Pointer nullTerminatedCString, int encoding) { + final _ret = _objc_msgSend_270(this.pointer, _sel_initWithCString_encoding_, + nullTerminatedCString, encoding); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSString? stringWithCString_encoding_( + ffi.Pointer cString, int enc) { + final _ret = _objc_msgSend_270( + _class_NSString, _sel_stringWithCString_encoding_, cString, enc); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? initWithContentsOfURL_encoding_error_( + NSURL url, int enc, ffi.Pointer> error) { + final _ret = _objc_msgSend_271(this.pointer, + _sel_initWithContentsOfURL_encoding_error_, url.pointer, enc, error); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? initWithContentsOfFile_encoding_error_( + NSString path, int enc, ffi.Pointer> error) { + final _ret = _objc_msgSend_272(this.pointer, + _sel_initWithContentsOfFile_encoding_error_, path.pointer, enc, error); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSString? stringWithContentsOfURL_encoding_error_( + NSURL url, int enc, ffi.Pointer> error) { + final _ret = _objc_msgSend_271(_class_NSString, + _sel_stringWithContentsOfURL_encoding_error_, url.pointer, enc, error); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSString? stringWithContentsOfFile_encoding_error_( + NSString path, int enc, ffi.Pointer> error) { + final _ret = _objc_msgSend_272( + _class_NSString, + _sel_stringWithContentsOfFile_encoding_error_, + path.pointer, + enc, + error); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? initWithContentsOfURL_usedEncoding_error_( + NSURL url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _objc_msgSend_273( + this.pointer, + _sel_initWithContentsOfURL_usedEncoding_error_, + url.pointer, + enc, + error); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? initWithContentsOfFile_usedEncoding_error_( + NSString path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _objc_msgSend_274( + this.pointer, + _sel_initWithContentsOfFile_usedEncoding_error_, + path.pointer, + enc, + error); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSString? stringWithContentsOfURL_usedEncoding_error_( + NSURL url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _objc_msgSend_273( + _class_NSString, + _sel_stringWithContentsOfURL_usedEncoding_error_, + url.pointer, + enc, + error); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSString? stringWithContentsOfFile_usedEncoding_error_( + NSString path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _objc_msgSend_274( + _class_NSString, + _sel_stringWithContentsOfFile_usedEncoding_error_, + path.pointer, + enc, + error); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + static int + stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_( + NSData data, + NSDictionary? opts, + ffi.Pointer> string, + ffi.Pointer usedLossyConversion) { + return _objc_msgSend_275( + _class_NSString, + _sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_, + data.pointer, + opts?.pointer ?? ffi.nullptr, + string, + usedLossyConversion); + } + + NSObject propertyList() { + final _ret = _objc_msgSend_2(this.pointer, _sel_propertyList); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSDictionary? propertyListFromStringsFileFormat() { + final _ret = + _objc_msgSend_276(this.pointer, _sel_propertyListFromStringsFileFormat); + return _ret.address == 0 + ? null + : NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + ffi.Pointer cString() { + return _objc_msgSend_57(this.pointer, _sel_cString); + } + + ffi.Pointer lossyCString() { + return _objc_msgSend_57(this.pointer, _sel_lossyCString); + } + + int cStringLength() { + return _objc_msgSend_12(this.pointer, _sel_cStringLength); + } + + void getCString_(ffi.Pointer bytes) { + _objc_msgSend_277(this.pointer, _sel_getCString_, bytes); + } + + void getCString_maxLength_(ffi.Pointer bytes, int maxLength) { + _objc_msgSend_278( + this.pointer, _sel_getCString_maxLength_, bytes, maxLength); + } + + void getCString_maxLength_range_remainingRange_(ffi.Pointer bytes, + int maxLength, _NSRange aRange, ffi.Pointer<_NSRange> leftoverRange) { + _objc_msgSend_279( + this.pointer, + _sel_getCString_maxLength_range_remainingRange_, + bytes, + maxLength, + aRange, + leftoverRange); + } + + bool writeToFile_atomically_(NSString path, bool useAuxiliaryFile) { + return _objc_msgSend_37(this.pointer, _sel_writeToFile_atomically_, + path.pointer, useAuxiliaryFile); + } + + bool writeToURL_atomically_(NSURL url, bool atomically) { + return _objc_msgSend_158( + this.pointer, _sel_writeToURL_atomically_, url.pointer, atomically); + } + + NSObject? initWithContentsOfFile_(NSString path) { + final _ret = _objc_msgSend_49( + this.pointer, _sel_initWithContentsOfFile_, path.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSObject? initWithContentsOfURL_(NSURL url) { + final _ret = _objc_msgSend_214( + this.pointer, _sel_initWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static NSObject? stringWithContentsOfFile_(NSString path) { + final _ret = _objc_msgSend_49( + _class_NSString, _sel_stringWithContentsOfFile_, path.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static NSObject? stringWithContentsOfURL_(NSURL url) { + final _ret = _objc_msgSend_214( + _class_NSString, _sel_stringWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSObject? initWithCStringNoCopy_length_freeWhenDone_( + ffi.Pointer bytes, int length, bool freeBuffer) { + final _ret = _objc_msgSend_280( + this.pointer, + _sel_initWithCStringNoCopy_length_freeWhenDone_, + bytes, + length, + freeBuffer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: false, release: true); + } + + NSObject? initWithCString_length_(ffi.Pointer bytes, int length) { + final _ret = _objc_msgSend_270( + this.pointer, _sel_initWithCString_length_, bytes, length); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSObject? initWithCString_(ffi.Pointer bytes) { + final _ret = _objc_msgSend_258(this.pointer, _sel_initWithCString_, bytes); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static NSObject? stringWithCString_length_( + ffi.Pointer bytes, int length) { + final _ret = _objc_msgSend_270( + _class_NSString, _sel_stringWithCString_length_, bytes, length); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static NSObject? stringWithCString_(ffi.Pointer bytes) { + final _ret = + _objc_msgSend_258(_class_NSString, _sel_stringWithCString_, bytes); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + void getCharacters_(ffi.Pointer buffer) { + _objc_msgSend_281(this.pointer, _sel_getCharacters_, buffer); + } + + NSString? stringByAddingPercentEncodingWithAllowedCharacters_( + NSCharacterSet allowedCharacters) { + final _ret = _objc_msgSend_282( + this.pointer, + _sel_stringByAddingPercentEncodingWithAllowedCharacters_, + allowedCharacters.pointer); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? get stringByRemovingPercentEncoding { + final _ret = + _objc_msgSend_55(this.pointer, _sel_stringByRemovingPercentEncoding); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? stringByAddingPercentEscapesUsingEncoding_(int enc) { + final _ret = _objc_msgSend_283( + this.pointer, _sel_stringByAddingPercentEscapesUsingEncoding_, enc); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? stringByReplacingPercentEscapesUsingEncoding_(int enc) { + final _ret = _objc_msgSend_283( + this.pointer, _sel_stringByReplacingPercentEscapesUsingEncoding_, enc); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSString new1() { + final _ret = _objc_msgSend_2(_class_NSString, _sel_new); + return NSString.castFromPointer(_ret, retain: false, release: true); + } + + static NSString allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_3(_class_NSString, _sel_allocWithZone_, zone); + return NSString.castFromPointer(_ret, retain: false, release: true); + } + + static NSString alloc() { + final _ret = _objc_msgSend_2(_class_NSString, _sel_alloc); + return NSString.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSString = objc.getClass("NSString"); +late final _sel_length = objc.registerName("length"); +late final _sel_characterAtIndex_ = objc.registerName("characterAtIndex:"); +final _objc_msgSend_13 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedShort Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, int)>(); + +class NSCoder extends objc.ObjCObjectBase { + NSCoder._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super(pointer, retain: retain, release: release); + + /// Constructs a [NSCoder] that points to the same underlying object as [other]. + NSCoder.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSCoder] that wraps the given raw object pointer. + NSCoder.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSCoder]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSCoder); + } +} + +late final _class_NSCoder = objc.getClass("NSCoder"); +late final _sel_initWithCoder_ = objc.registerName("initWithCoder:"); +final _objc_msgSend_14 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_substringFromIndex_ = objc.registerName("substringFromIndex:"); +final _objc_msgSend_15 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_substringToIndex_ = objc.registerName("substringToIndex:"); + +final class _NSRange extends ffi.Struct { + @ffi.UnsignedLong() + external int location; + + @ffi.UnsignedLong() + external int length; +} + +late final _sel_substringWithRange_ = objc.registerName("substringWithRange:"); +final _objc_msgSend_16 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_getCharacters_range_ = + objc.registerName("getCharacters:range:"); +final _objc_msgSend_17 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>(); + +abstract class NSComparisonResult { + static const int NSOrderedAscending = -1; + static const int NSOrderedSame = 0; + static const int NSOrderedDescending = 1; +} + +late final _sel_compare_ = objc.registerName("compare:"); +final _objc_msgSend_18 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSStringCompareOptions { + static const int NSCaseInsensitiveSearch = 1; + static const int NSLiteralSearch = 2; + static const int NSBackwardsSearch = 4; + static const int NSAnchoredSearch = 8; + static const int NSNumericSearch = 64; + static const int NSDiacriticInsensitiveSearch = 128; + static const int NSWidthInsensitiveSearch = 256; + static const int NSForcedOrderingSearch = 512; + static const int NSRegularExpressionSearch = 1024; +} + +late final _sel_compare_options_ = objc.registerName("compare:options:"); +final _objc_msgSend_19 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_compare_options_range_ = + objc.registerName("compare:options:range:"); +final _objc_msgSend_20 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +late final _sel_compare_options_range_locale_ = + objc.registerName("compare:options:range:locale:"); +final _objc_msgSend_21 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange, + ffi.Pointer)>(); +late final _sel_caseInsensitiveCompare_ = + objc.registerName("caseInsensitiveCompare:"); +late final _sel_localizedCompare_ = objc.registerName("localizedCompare:"); +late final _sel_localizedCaseInsensitiveCompare_ = + objc.registerName("localizedCaseInsensitiveCompare:"); +late final _sel_localizedStandardCompare_ = + objc.registerName("localizedStandardCompare:"); +late final _sel_isEqualToString_ = objc.registerName("isEqualToString:"); +final _objc_msgSend_22 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_hasPrefix_ = objc.registerName("hasPrefix:"); +late final _sel_hasSuffix_ = objc.registerName("hasSuffix:"); +late final _sel_commonPrefixWithString_options_ = + objc.registerName("commonPrefixWithString:options:"); +final _objc_msgSend_23 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_containsString_ = objc.registerName("containsString:"); +late final _sel_localizedCaseInsensitiveContainsString_ = + objc.registerName("localizedCaseInsensitiveContainsString:"); +late final _sel_localizedStandardContainsString_ = + objc.registerName("localizedStandardContainsString:"); +late final _sel_localizedStandardRangeOfString_ = + objc.registerName("localizedStandardRangeOfString:"); +final _objc_msgSend_24 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_24Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_rangeOfString_ = objc.registerName("rangeOfString:"); +late final _sel_rangeOfString_options_ = + objc.registerName("rangeOfString:options:"); +final _objc_msgSend_25 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +final _objc_msgSend_25Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_rangeOfString_options_range_ = + objc.registerName("rangeOfString:options:range:"); +final _objc_msgSend_26 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +final _objc_msgSend_26Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); + +class NSLocale extends objc.ObjCObjectBase { + NSLocale._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super(pointer, retain: retain, release: release); + + /// Constructs a [NSLocale] that points to the same underlying object as [other]. + NSLocale.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSLocale] that wraps the given raw object pointer. + NSLocale.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSLocale]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSLocale); + } +} + +late final _class_NSLocale = objc.getClass("NSLocale"); +late final _sel_rangeOfString_options_range_locale_ = + objc.registerName("rangeOfString:options:range:locale:"); +final _objc_msgSend_27 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer)>>() + .asFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange, + ffi.Pointer)>(); +final _objc_msgSend_27Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange, + ffi.Pointer)>(); + +class NSCharacterSet extends NSObject { + NSCharacterSet._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSCharacterSet] that points to the same underlying object as [other]. + NSCharacterSet.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSCharacterSet] that wraps the given raw object pointer. + NSCharacterSet.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSCharacterSet]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSCharacterSet); + } + + static NSCharacterSet getControlCharacterSet() { + final _ret = + _objc_msgSend_28(_class_NSCharacterSet, _sel_controlCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getWhitespaceCharacterSet() { + final _ret = + _objc_msgSend_28(_class_NSCharacterSet, _sel_whitespaceCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getWhitespaceAndNewlineCharacterSet() { + final _ret = _objc_msgSend_28( + _class_NSCharacterSet, _sel_whitespaceAndNewlineCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getDecimalDigitCharacterSet() { + final _ret = + _objc_msgSend_28(_class_NSCharacterSet, _sel_decimalDigitCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getLetterCharacterSet() { + final _ret = + _objc_msgSend_28(_class_NSCharacterSet, _sel_letterCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getLowercaseLetterCharacterSet() { + final _ret = _objc_msgSend_28( + _class_NSCharacterSet, _sel_lowercaseLetterCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getUppercaseLetterCharacterSet() { + final _ret = _objc_msgSend_28( + _class_NSCharacterSet, _sel_uppercaseLetterCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getNonBaseCharacterSet() { + final _ret = + _objc_msgSend_28(_class_NSCharacterSet, _sel_nonBaseCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getAlphanumericCharacterSet() { + final _ret = + _objc_msgSend_28(_class_NSCharacterSet, _sel_alphanumericCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getDecomposableCharacterSet() { + final _ret = + _objc_msgSend_28(_class_NSCharacterSet, _sel_decomposableCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getIllegalCharacterSet() { + final _ret = + _objc_msgSend_28(_class_NSCharacterSet, _sel_illegalCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getPunctuationCharacterSet() { + final _ret = + _objc_msgSend_28(_class_NSCharacterSet, _sel_punctuationCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getCapitalizedLetterCharacterSet() { + final _ret = _objc_msgSend_28( + _class_NSCharacterSet, _sel_capitalizedLetterCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getSymbolCharacterSet() { + final _ret = + _objc_msgSend_28(_class_NSCharacterSet, _sel_symbolCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getNewlineCharacterSet() { + final _ret = + _objc_msgSend_28(_class_NSCharacterSet, _sel_newlineCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: false, release: true); + } + + static NSCharacterSet characterSetWithRange_(_NSRange aRange) { + final _ret = _objc_msgSend_29( + _class_NSCharacterSet, _sel_characterSetWithRange_, aRange); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet characterSetWithCharactersInString_(NSString aString) { + final _ret = _objc_msgSend_30(_class_NSCharacterSet, + _sel_characterSetWithCharactersInString_, aString.pointer); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet characterSetWithBitmapRepresentation_(NSData data) { + final _ret = _objc_msgSend_222(_class_NSCharacterSet, + _sel_characterSetWithBitmapRepresentation_, data.pointer); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet? characterSetWithContentsOfFile_(NSString fName) { + final _ret = _objc_msgSend_223(_class_NSCharacterSet, + _sel_characterSetWithContentsOfFile_, fName.pointer); + return _ret.address == 0 + ? null + : NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + NSCharacterSet initWithCoder_(NSCoder coder) { + final _ret = + _objc_msgSend_224(this.pointer, _sel_initWithCoder_, coder.pointer); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + bool characterIsMember_(int aCharacter) { + return _objc_msgSend_225(this.pointer, _sel_characterIsMember_, aCharacter); + } + + NSData get bitmapRepresentation { + final _ret = _objc_msgSend_54(this.pointer, _sel_bitmapRepresentation); + return NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSCharacterSet get invertedSet { + final _ret = _objc_msgSend_28(this.pointer, _sel_invertedSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + bool longCharacterIsMember_(int theLongChar) { + return _objc_msgSend_226( + this.pointer, _sel_longCharacterIsMember_, theLongChar); + } + + bool isSupersetOfSet_(NSCharacterSet theOtherSet) { + return _objc_msgSend_227( + this.pointer, _sel_isSupersetOfSet_, theOtherSet.pointer); + } + + bool hasMemberInPlane_(int thePlane) { + return _objc_msgSend_228(this.pointer, _sel_hasMemberInPlane_, thePlane); + } + + static NSCharacterSet getURLUserAllowedCharacterSet() { + final _ret = _objc_msgSend_28( + _class_NSCharacterSet, _sel_URLUserAllowedCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getURLPasswordAllowedCharacterSet() { + final _ret = _objc_msgSend_28( + _class_NSCharacterSet, _sel_URLPasswordAllowedCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getURLHostAllowedCharacterSet() { + final _ret = _objc_msgSend_28( + _class_NSCharacterSet, _sel_URLHostAllowedCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getURLPathAllowedCharacterSet() { + final _ret = _objc_msgSend_28( + _class_NSCharacterSet, _sel_URLPathAllowedCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getURLQueryAllowedCharacterSet() { + final _ret = _objc_msgSend_28( + _class_NSCharacterSet, _sel_URLQueryAllowedCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet getURLFragmentAllowedCharacterSet() { + final _ret = _objc_msgSend_28( + _class_NSCharacterSet, _sel_URLFragmentAllowedCharacterSet); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSCharacterSet init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSCharacterSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSCharacterSet new1() { + final _ret = _objc_msgSend_2(_class_NSCharacterSet, _sel_new); + return NSCharacterSet.castFromPointer(_ret, retain: false, release: true); + } + + static NSCharacterSet allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_3(_class_NSCharacterSet, _sel_allocWithZone_, zone); + return NSCharacterSet.castFromPointer(_ret, retain: false, release: true); + } + + static NSCharacterSet alloc() { + final _ret = _objc_msgSend_2(_class_NSCharacterSet, _sel_alloc); + return NSCharacterSet.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSCharacterSet = objc.getClass("NSCharacterSet"); +late final _sel_controlCharacterSet = objc.registerName("controlCharacterSet"); +final _objc_msgSend_28 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_whitespaceCharacterSet = + objc.registerName("whitespaceCharacterSet"); +late final _sel_whitespaceAndNewlineCharacterSet = + objc.registerName("whitespaceAndNewlineCharacterSet"); +late final _sel_decimalDigitCharacterSet = + objc.registerName("decimalDigitCharacterSet"); +late final _sel_letterCharacterSet = objc.registerName("letterCharacterSet"); +late final _sel_lowercaseLetterCharacterSet = + objc.registerName("lowercaseLetterCharacterSet"); +late final _sel_uppercaseLetterCharacterSet = + objc.registerName("uppercaseLetterCharacterSet"); +late final _sel_nonBaseCharacterSet = objc.registerName("nonBaseCharacterSet"); +late final _sel_alphanumericCharacterSet = + objc.registerName("alphanumericCharacterSet"); +late final _sel_decomposableCharacterSet = + objc.registerName("decomposableCharacterSet"); +late final _sel_illegalCharacterSet = objc.registerName("illegalCharacterSet"); +late final _sel_punctuationCharacterSet = + objc.registerName("punctuationCharacterSet"); +late final _sel_capitalizedLetterCharacterSet = + objc.registerName("capitalizedLetterCharacterSet"); +late final _sel_symbolCharacterSet = objc.registerName("symbolCharacterSet"); +late final _sel_newlineCharacterSet = objc.registerName("newlineCharacterSet"); +late final _sel_characterSetWithRange_ = + objc.registerName("characterSetWithRange:"); +final _objc_msgSend_29 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_characterSetWithCharactersInString_ = + objc.registerName("characterSetWithCharactersInString:"); +final _objc_msgSend_30 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSData extends NSObject { + NSData._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSData] that points to the same underlying object as [other]. + NSData.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSData] that wraps the given raw object pointer. + NSData.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSData]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSData); + } + + int get length { + return _objc_msgSend_12(this.pointer, _sel_length); + } + + ffi.Pointer get bytes { + return _objc_msgSend_31(this.pointer, _sel_bytes); + } + + NSString get description { + final _ret = _objc_msgSend_32(this.pointer, _sel_description); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + void getBytes_length_(ffi.Pointer buffer, int length) { + _objc_msgSend_33(this.pointer, _sel_getBytes_length_, buffer, length); + } + + void getBytes_range_(ffi.Pointer buffer, _NSRange range) { + _objc_msgSend_34(this.pointer, _sel_getBytes_range_, buffer, range); + } + + bool isEqualToData_(NSData other) { + return _objc_msgSend_35(this.pointer, _sel_isEqualToData_, other.pointer); + } + + NSData subdataWithRange_(_NSRange range) { + final _ret = _objc_msgSend_36(this.pointer, _sel_subdataWithRange_, range); + return NSData.castFromPointer(_ret, retain: true, release: true); + } + + bool writeToFile_atomically_(NSString path, bool useAuxiliaryFile) { + return _objc_msgSend_37(this.pointer, _sel_writeToFile_atomically_, + path.pointer, useAuxiliaryFile); + } + + bool writeToURL_atomically_(NSURL url, bool atomically) { + return _objc_msgSend_158( + this.pointer, _sel_writeToURL_atomically_, url.pointer, atomically); + } + + bool writeToFile_options_error_(NSString path, int writeOptionsMask, + ffi.Pointer> errorPtr) { + return _objc_msgSend_206(this.pointer, _sel_writeToFile_options_error_, + path.pointer, writeOptionsMask, errorPtr); + } + + bool writeToURL_options_error_(NSURL url, int writeOptionsMask, + ffi.Pointer> errorPtr) { + return _objc_msgSend_207(this.pointer, _sel_writeToURL_options_error_, + url.pointer, writeOptionsMask, errorPtr); + } + + void rangeOfData_options_range_(ffi.Pointer<_NSRange> stret, + NSData dataToFind, int mask, _NSRange searchRange) { + objc.useMsgSendVariants + ? _objc_msgSend_208Stret( + stret, + this.pointer, + _sel_rangeOfData_options_range_, + dataToFind.pointer, + mask, + searchRange) + : stret.ref = _objc_msgSend_208( + this.pointer, + _sel_rangeOfData_options_range_, + dataToFind.pointer, + mask, + searchRange); + } + + void enumerateByteRangesUsingBlock_( + ObjCBlock_ffiVoid_ffiVoid_NSRange_bool block) { + _objc_msgSend_209( + this.pointer, _sel_enumerateByteRangesUsingBlock_, block.pointer); + } + + static NSData data() { + final _ret = _objc_msgSend_2(_class_NSData, _sel_data); + return NSData.castFromPointer(_ret, retain: true, release: true); + } + + static NSData dataWithBytes_length_(ffi.Pointer bytes, int length) { + final _ret = _objc_msgSend_210( + _class_NSData, _sel_dataWithBytes_length_, bytes, length); + return NSData.castFromPointer(_ret, retain: true, release: true); + } + + static NSData dataWithBytesNoCopy_length_( + ffi.Pointer bytes, int length) { + final _ret = _objc_msgSend_210( + _class_NSData, _sel_dataWithBytesNoCopy_length_, bytes, length); + return NSData.castFromPointer(_ret, retain: false, release: true); + } + + static NSData dataWithBytesNoCopy_length_freeWhenDone_( + ffi.Pointer bytes, int length, bool b) { + final _ret = _objc_msgSend_211(_class_NSData, + _sel_dataWithBytesNoCopy_length_freeWhenDone_, bytes, length, b); + return NSData.castFromPointer(_ret, retain: false, release: true); + } + + static NSData? dataWithContentsOfFile_options_error_(NSString path, + int readOptionsMask, ffi.Pointer> errorPtr) { + final _ret = _objc_msgSend_212( + _class_NSData, + _sel_dataWithContentsOfFile_options_error_, + path.pointer, + readOptionsMask, + errorPtr); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + static NSData? dataWithContentsOfURL_options_error_(NSURL url, + int readOptionsMask, ffi.Pointer> errorPtr) { + final _ret = _objc_msgSend_213( + _class_NSData, + _sel_dataWithContentsOfURL_options_error_, + url.pointer, + readOptionsMask, + errorPtr); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + static NSData? dataWithContentsOfFile_(NSString path) { + final _ret = _objc_msgSend_49( + _class_NSData, _sel_dataWithContentsOfFile_, path.pointer); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + static NSData? dataWithContentsOfURL_(NSURL url) { + final _ret = _objc_msgSend_214( + _class_NSData, _sel_dataWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSData initWithBytes_length_(ffi.Pointer bytes, int length) { + final _ret = _objc_msgSend_210( + this.pointer, _sel_initWithBytes_length_, bytes, length); + return NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSData initWithBytesNoCopy_length_(ffi.Pointer bytes, int length) { + final _ret = _objc_msgSend_210( + this.pointer, _sel_initWithBytesNoCopy_length_, bytes, length); + return NSData.castFromPointer(_ret, retain: false, release: true); + } + + NSData initWithBytesNoCopy_length_freeWhenDone_( + ffi.Pointer bytes, int length, bool b) { + final _ret = _objc_msgSend_211(this.pointer, + _sel_initWithBytesNoCopy_length_freeWhenDone_, bytes, length, b); + return NSData.castFromPointer(_ret, retain: false, release: true); + } + + NSData initWithBytesNoCopy_length_deallocator_(ffi.Pointer bytes, + int length, ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { + final _ret = _objc_msgSend_215( + this.pointer, + _sel_initWithBytesNoCopy_length_deallocator_, + bytes, + length, + deallocator?.pointer ?? ffi.nullptr); + return NSData.castFromPointer(_ret, retain: false, release: true); + } + + NSData? initWithContentsOfFile_options_error_(NSString path, + int readOptionsMask, ffi.Pointer> errorPtr) { + final _ret = _objc_msgSend_212( + this.pointer, + _sel_initWithContentsOfFile_options_error_, + path.pointer, + readOptionsMask, + errorPtr); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSData? initWithContentsOfURL_options_error_(NSURL url, int readOptionsMask, + ffi.Pointer> errorPtr) { + final _ret = _objc_msgSend_213( + this.pointer, + _sel_initWithContentsOfURL_options_error_, + url.pointer, + readOptionsMask, + errorPtr); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSData? initWithContentsOfFile_(NSString path) { + final _ret = _objc_msgSend_49( + this.pointer, _sel_initWithContentsOfFile_, path.pointer); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSData? initWithContentsOfURL_(NSURL url) { + final _ret = _objc_msgSend_214( + this.pointer, _sel_initWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSData initWithData_(NSData data) { + final _ret = + _objc_msgSend_216(this.pointer, _sel_initWithData_, data.pointer); + return NSData.castFromPointer(_ret, retain: true, release: true); + } + + static NSData dataWithData_(NSData data) { + final _ret = + _objc_msgSend_216(_class_NSData, _sel_dataWithData_, data.pointer); + return NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSData? initWithBase64EncodedString_options_( + NSString base64String, int options) { + final _ret = _objc_msgSend_217( + this.pointer, + _sel_initWithBase64EncodedString_options_, + base64String.pointer, + options); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSString base64EncodedStringWithOptions_(int options) { + final _ret = _objc_msgSend_218( + this.pointer, _sel_base64EncodedStringWithOptions_, options); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSData? initWithBase64EncodedData_options_(NSData base64Data, int options) { + final _ret = _objc_msgSend_219(this.pointer, + _sel_initWithBase64EncodedData_options_, base64Data.pointer, options); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSData base64EncodedDataWithOptions_(int options) { + final _ret = _objc_msgSend_220( + this.pointer, _sel_base64EncodedDataWithOptions_, options); + return NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSData? decompressedDataUsingAlgorithm_error_( + int algorithm, ffi.Pointer> error) { + final _ret = _objc_msgSend_221(this.pointer, + _sel_decompressedDataUsingAlgorithm_error_, algorithm, error); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSData? compressedDataUsingAlgorithm_error_( + int algorithm, ffi.Pointer> error) { + final _ret = _objc_msgSend_221(this.pointer, + _sel_compressedDataUsingAlgorithm_error_, algorithm, error); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + void getBytes_(ffi.Pointer buffer) { + _objc_msgSend_64(this.pointer, _sel_getBytes_, buffer); + } + + static NSObject? dataWithContentsOfMappedFile_(NSString path) { + final _ret = _objc_msgSend_49( + _class_NSData, _sel_dataWithContentsOfMappedFile_, path.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSObject? initWithContentsOfMappedFile_(NSString path) { + final _ret = _objc_msgSend_49( + this.pointer, _sel_initWithContentsOfMappedFile_, path.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSObject? initWithBase64Encoding_(NSString base64String) { + final _ret = _objc_msgSend_49( + this.pointer, _sel_initWithBase64Encoding_, base64String.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSString base64Encoding() { + final _ret = _objc_msgSend_32(this.pointer, _sel_base64Encoding); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSData init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSData.castFromPointer(_ret, retain: true, release: true); + } + + static NSData new1() { + final _ret = _objc_msgSend_2(_class_NSData, _sel_new); + return NSData.castFromPointer(_ret, retain: false, release: true); + } + + static NSData allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_3(_class_NSData, _sel_allocWithZone_, zone); + return NSData.castFromPointer(_ret, retain: false, release: true); + } + + static NSData alloc() { + final _ret = _objc_msgSend_2(_class_NSData, _sel_alloc); + return NSData.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSData = objc.getClass("NSData"); +late final _sel_bytes = objc.registerName("bytes"); +final _objc_msgSend_31 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_description = objc.registerName("description"); +final _objc_msgSend_32 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_getBytes_length_ = objc.registerName("getBytes:length:"); +final _objc_msgSend_33 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); +late final _sel_getBytes_range_ = objc.registerName("getBytes:range:"); +final _objc_msgSend_34 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, _NSRange)>(); +late final _sel_isEqualToData_ = objc.registerName("isEqualToData:"); +final _objc_msgSend_35 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_subdataWithRange_ = objc.registerName("subdataWithRange:"); +final _objc_msgSend_36 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_writeToFile_atomically_ = + objc.registerName("writeToFile:atomically:"); +final _objc_msgSend_37 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); + +class NSURL extends NSObject { + NSURL._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSURL] that points to the same underlying object as [other]. + NSURL.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSURL] that wraps the given raw object pointer. + NSURL.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURL]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSURL); + } + + NSURL? initWithScheme_host_path_( + NSString scheme, NSString? host, NSString path) { + final _ret = _objc_msgSend_38(this.pointer, _sel_initWithScheme_host_path_, + scheme.pointer, host?.pointer ?? ffi.nullptr, path.pointer); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL initFileURLWithPath_isDirectory_relativeToURL_( + NSString path, bool isDir, NSURL? baseURL) { + final _ret = _objc_msgSend_39( + this.pointer, + _sel_initFileURLWithPath_isDirectory_relativeToURL_, + path.pointer, + isDir, + baseURL?.pointer ?? ffi.nullptr); + return NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL initFileURLWithPath_relativeToURL_(NSString path, NSURL? baseURL) { + final _ret = _objc_msgSend_40( + this.pointer, + _sel_initFileURLWithPath_relativeToURL_, + path.pointer, + baseURL?.pointer ?? ffi.nullptr); + return NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL initFileURLWithPath_isDirectory_(NSString path, bool isDir) { + final _ret = _objc_msgSend_41(this.pointer, + _sel_initFileURLWithPath_isDirectory_, path.pointer, isDir); + return NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL initFileURLWithPath_(NSString path) { + final _ret = + _objc_msgSend_42(this.pointer, _sel_initFileURLWithPath_, path.pointer); + return NSURL.castFromPointer(_ret, retain: true, release: true); + } + + static NSURL fileURLWithPath_isDirectory_relativeToURL_( + NSString path, bool isDir, NSURL? baseURL) { + final _ret = _objc_msgSend_43( + _class_NSURL, + _sel_fileURLWithPath_isDirectory_relativeToURL_, + path.pointer, + isDir, + baseURL?.pointer ?? ffi.nullptr); + return NSURL.castFromPointer(_ret, retain: true, release: true); + } + + static NSURL fileURLWithPath_relativeToURL_(NSString path, NSURL? baseURL) { + final _ret = _objc_msgSend_44( + _class_NSURL, + _sel_fileURLWithPath_relativeToURL_, + path.pointer, + baseURL?.pointer ?? ffi.nullptr); + return NSURL.castFromPointer(_ret, retain: true, release: true); + } + + static NSURL fileURLWithPath_isDirectory_(NSString path, bool isDir) { + final _ret = _objc_msgSend_45( + _class_NSURL, _sel_fileURLWithPath_isDirectory_, path.pointer, isDir); + return NSURL.castFromPointer(_ret, retain: true, release: true); + } + + static NSURL fileURLWithPath_(NSString path) { + final _ret = + _objc_msgSend_46(_class_NSURL, _sel_fileURLWithPath_, path.pointer); + return NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_( + ffi.Pointer path, bool isDir, NSURL? baseURL) { + final _ret = _objc_msgSend_47( + this.pointer, + _sel_initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_, + path, + isDir, + baseURL?.pointer ?? ffi.nullptr); + return NSURL.castFromPointer(_ret, retain: true, release: true); + } + + static NSURL fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_( + ffi.Pointer path, bool isDir, NSURL? baseURL) { + final _ret = _objc_msgSend_48( + _class_NSURL, + _sel_fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_, + path, + isDir, + baseURL?.pointer ?? ffi.nullptr); + return NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL? initWithString_(NSString URLString) { + final _ret = + _objc_msgSend_49(this.pointer, _sel_initWithString_, URLString.pointer); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL? initWithString_relativeToURL_(NSString URLString, NSURL? baseURL) { + final _ret = _objc_msgSend_50( + this.pointer, + _sel_initWithString_relativeToURL_, + URLString.pointer, + baseURL?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + static NSURL? URLWithString_(NSString URLString) { + final _ret = + _objc_msgSend_49(_class_NSURL, _sel_URLWithString_, URLString.pointer); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + static NSURL? URLWithString_relativeToURL_( + NSString URLString, NSURL? baseURL) { + final _ret = _objc_msgSend_50( + _class_NSURL, + _sel_URLWithString_relativeToURL_, + URLString.pointer, + baseURL?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL? initWithString_encodingInvalidCharacters_( + NSString URLString, bool encodingInvalidCharacters) { + final _ret = _objc_msgSend_51( + this.pointer, + _sel_initWithString_encodingInvalidCharacters_, + URLString.pointer, + encodingInvalidCharacters); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + static NSURL? URLWithString_encodingInvalidCharacters_( + NSString URLString, bool encodingInvalidCharacters) { + final _ret = _objc_msgSend_51( + _class_NSURL, + _sel_URLWithString_encodingInvalidCharacters_, + URLString.pointer, + encodingInvalidCharacters); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL initWithDataRepresentation_relativeToURL_(NSData data, NSURL? baseURL) { + final _ret = _objc_msgSend_52( + this.pointer, + _sel_initWithDataRepresentation_relativeToURL_, + data.pointer, + baseURL?.pointer ?? ffi.nullptr); + return NSURL.castFromPointer(_ret, retain: true, release: true); + } + + static NSURL URLWithDataRepresentation_relativeToURL_( + NSData data, NSURL? baseURL) { + final _ret = _objc_msgSend_53( + _class_NSURL, + _sel_URLWithDataRepresentation_relativeToURL_, + data.pointer, + baseURL?.pointer ?? ffi.nullptr); + return NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL initAbsoluteURLWithDataRepresentation_relativeToURL_( + NSData data, NSURL? baseURL) { + final _ret = _objc_msgSend_52( + this.pointer, + _sel_initAbsoluteURLWithDataRepresentation_relativeToURL_, + data.pointer, + baseURL?.pointer ?? ffi.nullptr); + return NSURL.castFromPointer(_ret, retain: true, release: true); + } + + static NSURL absoluteURLWithDataRepresentation_relativeToURL_( + NSData data, NSURL? baseURL) { + final _ret = _objc_msgSend_53( + _class_NSURL, + _sel_absoluteURLWithDataRepresentation_relativeToURL_, + data.pointer, + baseURL?.pointer ?? ffi.nullptr); + return NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSData get dataRepresentation { + final _ret = _objc_msgSend_54(this.pointer, _sel_dataRepresentation); + return NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSString? get absoluteString { + final _ret = _objc_msgSend_55(this.pointer, _sel_absoluteString); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString get relativeString { + final _ret = _objc_msgSend_32(this.pointer, _sel_relativeString); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSURL? get baseURL { + final _ret = _objc_msgSend_56(this.pointer, _sel_baseURL); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL? get absoluteURL { + final _ret = _objc_msgSend_56(this.pointer, _sel_absoluteURL); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSString? get scheme { + final _ret = _objc_msgSend_55(this.pointer, _sel_scheme); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? get resourceSpecifier { + final _ret = _objc_msgSend_55(this.pointer, _sel_resourceSpecifier); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? get host { + final _ret = _objc_msgSend_55(this.pointer, _sel_host); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber? get port { + final _ret = _objc_msgSend_94(this.pointer, _sel_port); + return _ret.address == 0 + ? null + : NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSString? get user { + final _ret = _objc_msgSend_55(this.pointer, _sel_user); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? get password { + final _ret = _objc_msgSend_55(this.pointer, _sel_password); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? get path { + final _ret = _objc_msgSend_55(this.pointer, _sel_path); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? get fragment { + final _ret = _objc_msgSend_55(this.pointer, _sel_fragment); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? get parameterString { + final _ret = _objc_msgSend_55(this.pointer, _sel_parameterString); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? get query { + final _ret = _objc_msgSend_55(this.pointer, _sel_query); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? get relativePath { + final _ret = _objc_msgSend_55(this.pointer, _sel_relativePath); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + bool get hasDirectoryPath { + return _objc_msgSend_11(this.pointer, _sel_hasDirectoryPath); + } + + bool getFileSystemRepresentation_maxLength_( + ffi.Pointer buffer, int maxBufferLength) { + return _objc_msgSend_95(this.pointer, + _sel_getFileSystemRepresentation_maxLength_, buffer, maxBufferLength); + } + + ffi.Pointer get fileSystemRepresentation { + return _objc_msgSend_57(this.pointer, _sel_fileSystemRepresentation); + } + + bool get fileURL { + return _objc_msgSend_11(this.pointer, _sel_isFileURL); + } + + NSURL? get standardizedURL { + final _ret = _objc_msgSend_56(this.pointer, _sel_standardizedURL); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + bool isFileReferenceURL() { + return _objc_msgSend_11(this.pointer, _sel_isFileReferenceURL); + } + + NSURL? fileReferenceURL() { + final _ret = _objc_msgSend_56(this.pointer, _sel_fileReferenceURL); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL? get filePathURL { + final _ret = _objc_msgSend_56(this.pointer, _sel_filePathURL); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + bool getResourceValue_forKey_error_( + ffi.Pointer> value, + NSString key, + ffi.Pointer> error) { + return _objc_msgSend_96(this.pointer, _sel_getResourceValue_forKey_error_, + value, key.pointer, error); + } + + NSObject? resourceValuesForKeys_error_( + NSArray keys, ffi.Pointer> error) { + final _ret = _objc_msgSend_159( + this.pointer, _sel_resourceValuesForKeys_error_, keys.pointer, error); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + bool setResourceValue_forKey_error_(NSObject? value, NSString key, + ffi.Pointer> error) { + return _objc_msgSend_160(this.pointer, _sel_setResourceValue_forKey_error_, + value?.pointer ?? ffi.nullptr, key.pointer, error); + } + + bool setResourceValues_error_( + NSObject keyedValues, ffi.Pointer> error) { + return _objc_msgSend_161(this.pointer, _sel_setResourceValues_error_, + keyedValues.pointer, error); + } + + void removeCachedResourceValueForKey_(NSString key) { + _objc_msgSend_162( + this.pointer, _sel_removeCachedResourceValueForKey_, key.pointer); + } + + void removeAllCachedResourceValues() { + _objc_msgSend_1(this.pointer, _sel_removeAllCachedResourceValues); + } + + void setTemporaryResourceValue_forKey_(NSObject? value, NSString key) { + _objc_msgSend_163(this.pointer, _sel_setTemporaryResourceValue_forKey_, + value?.pointer ?? ffi.nullptr, key.pointer); + } + + NSData? + bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_( + int options, + NSArray? keys, + NSURL? relativeURL, + ffi.Pointer> error) { + final _ret = _objc_msgSend_164( + this.pointer, + _sel_bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_, + options, + keys?.pointer ?? ffi.nullptr, + relativeURL?.pointer ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSURL? + initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_( + NSData bookmarkData, + int options, + NSURL? relativeURL, + ffi.Pointer isStale, + ffi.Pointer> error) { + final _ret = _objc_msgSend_165( + this.pointer, + _sel_initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_, + bookmarkData.pointer, + options, + relativeURL?.pointer ?? ffi.nullptr, + isStale, + error); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + static NSURL? + URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_( + NSData bookmarkData, + int options, + NSURL? relativeURL, + ffi.Pointer isStale, + ffi.Pointer> error) { + final _ret = _objc_msgSend_165( + _class_NSURL, + _sel_URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_, + bookmarkData.pointer, + options, + relativeURL?.pointer ?? ffi.nullptr, + isStale, + error); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + static NSObject? resourceValuesForKeys_fromBookmarkData_( + NSArray keys, NSData bookmarkData) { + final _ret = _objc_msgSend_166( + _class_NSURL, + _sel_resourceValuesForKeys_fromBookmarkData_, + keys.pointer, + bookmarkData.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static bool writeBookmarkData_toURL_options_error_( + NSData bookmarkData, + NSURL bookmarkFileURL, + int options, + ffi.Pointer> error) { + return _objc_msgSend_167( + _class_NSURL, + _sel_writeBookmarkData_toURL_options_error_, + bookmarkData.pointer, + bookmarkFileURL.pointer, + options, + error); + } + + static NSData? bookmarkDataWithContentsOfURL_error_( + NSURL bookmarkFileURL, ffi.Pointer> error) { + final _ret = _objc_msgSend_168( + _class_NSURL, + _sel_bookmarkDataWithContentsOfURL_error_, + bookmarkFileURL.pointer, + error); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + static NSURL? URLByResolvingAliasFileAtURL_options_error_( + NSURL url, int options, ffi.Pointer> error) { + final _ret = _objc_msgSend_169( + _class_NSURL, + _sel_URLByResolvingAliasFileAtURL_options_error_, + url.pointer, + options, + error); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + bool startAccessingSecurityScopedResource() { + return _objc_msgSend_11( + this.pointer, _sel_startAccessingSecurityScopedResource); + } + + void stopAccessingSecurityScopedResource() { + _objc_msgSend_1(this.pointer, _sel_stopAccessingSecurityScopedResource); + } + + bool getPromisedItemResourceValue_forKey_error_( + ffi.Pointer> value, + NSString key, + ffi.Pointer> error) { + return _objc_msgSend_96( + this.pointer, + _sel_getPromisedItemResourceValue_forKey_error_, + value, + key.pointer, + error); + } + + NSDictionary? promisedItemResourceValuesForKeys_error_( + NSArray keys, ffi.Pointer> error) { + final _ret = _objc_msgSend_189(this.pointer, + _sel_promisedItemResourceValuesForKeys_error_, keys.pointer, error); + return _ret.address == 0 + ? null + : NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + bool checkPromisedItemIsReachableAndReturnError_( + ffi.Pointer> error) { + return _objc_msgSend_190( + this.pointer, _sel_checkPromisedItemIsReachableAndReturnError_, error); + } + + static NSURL? fileURLWithPathComponents_(NSArray components) { + final _ret = _objc_msgSend_191( + _class_NSURL, _sel_fileURLWithPathComponents_, components.pointer); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSArray? get pathComponents { + final _ret = _objc_msgSend_192(this.pointer, _sel_pathComponents); + return _ret.address == 0 + ? null + : NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSString? get lastPathComponent { + final _ret = _objc_msgSend_55(this.pointer, _sel_lastPathComponent); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString? get pathExtension { + final _ret = _objc_msgSend_55(this.pointer, _sel_pathExtension); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSURL? URLByAppendingPathComponent_(NSString pathComponent) { + final _ret = _objc_msgSend_193( + this.pointer, _sel_URLByAppendingPathComponent_, pathComponent.pointer); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL? URLByAppendingPathComponent_isDirectory_( + NSString pathComponent, bool isDirectory) { + final _ret = _objc_msgSend_194( + this.pointer, + _sel_URLByAppendingPathComponent_isDirectory_, + pathComponent.pointer, + isDirectory); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL? get URLByDeletingLastPathComponent { + final _ret = + _objc_msgSend_56(this.pointer, _sel_URLByDeletingLastPathComponent); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL? URLByAppendingPathExtension_(NSString pathExtension) { + final _ret = _objc_msgSend_193( + this.pointer, _sel_URLByAppendingPathExtension_, pathExtension.pointer); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL? get URLByDeletingPathExtension { + final _ret = + _objc_msgSend_56(this.pointer, _sel_URLByDeletingPathExtension); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + bool checkResourceIsReachableAndReturnError_( + ffi.Pointer> error) { + return _objc_msgSend_190( + this.pointer, _sel_checkResourceIsReachableAndReturnError_, error); + } + + NSURL? get URLByStandardizingPath { + final _ret = _objc_msgSend_56(this.pointer, _sel_URLByStandardizingPath); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSURL? get URLByResolvingSymlinksInPath { + final _ret = + _objc_msgSend_56(this.pointer, _sel_URLByResolvingSymlinksInPath); + return _ret.address == 0 + ? null + : NSURL.castFromPointer(_ret, retain: true, release: true); + } + + NSData? resourceDataUsingCache_(bool shouldUseCache) { + final _ret = _objc_msgSend_195( + this.pointer, _sel_resourceDataUsingCache_, shouldUseCache); + return _ret.address == 0 + ? null + : NSData.castFromPointer(_ret, retain: true, release: true); + } + + void loadResourceDataNotifyingClient_usingCache_( + NSObject client, bool shouldUseCache) { + _objc_msgSend_196( + this.pointer, + _sel_loadResourceDataNotifyingClient_usingCache_, + client.pointer, + shouldUseCache); + } + + NSObject? propertyForKey_(NSString propertyKey) { + final _ret = _objc_msgSend_49( + this.pointer, _sel_propertyForKey_, propertyKey.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + bool setResourceData_(NSData data) { + return _objc_msgSend_35(this.pointer, _sel_setResourceData_, data.pointer); + } + + bool setProperty_forKey_(NSObject property, NSString propertyKey) { + return _objc_msgSend_197(this.pointer, _sel_setProperty_forKey_, + property.pointer, propertyKey.pointer); + } + + NSURLHandle? URLHandleUsingCache_(bool shouldUseCache) { + final _ret = _objc_msgSend_205( + this.pointer, _sel_URLHandleUsingCache_, shouldUseCache); + return _ret.address == 0 + ? null + : NSURLHandle.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSURL init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSURL.castFromPointer(_ret, retain: true, release: true); + } + + static NSURL new1() { + final _ret = _objc_msgSend_2(_class_NSURL, _sel_new); + return NSURL.castFromPointer(_ret, retain: false, release: true); + } + + static NSURL allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_3(_class_NSURL, _sel_allocWithZone_, zone); + return NSURL.castFromPointer(_ret, retain: false, release: true); + } + + static NSURL alloc() { + final _ret = _objc_msgSend_2(_class_NSURL, _sel_alloc); + return NSURL.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSURL = objc.getClass("NSURL"); +late final _sel_initWithScheme_host_path_ = + objc.registerName("initWithScheme:host:path:"); +final _objc_msgSend_38 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initFileURLWithPath_isDirectory_relativeToURL_ = + objc.registerName("initFileURLWithPath:isDirectory:relativeToURL:"); +final _objc_msgSend_39 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer)>(); +late final _sel_initFileURLWithPath_relativeToURL_ = + objc.registerName("initFileURLWithPath:relativeToURL:"); +final _objc_msgSend_40 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initFileURLWithPath_isDirectory_ = + objc.registerName("initFileURLWithPath:isDirectory:"); +final _objc_msgSend_41 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_initFileURLWithPath_ = + objc.registerName("initFileURLWithPath:"); +final _objc_msgSend_42 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_fileURLWithPath_isDirectory_relativeToURL_ = + objc.registerName("fileURLWithPath:isDirectory:relativeToURL:"); +final _objc_msgSend_43 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer)>(); +late final _sel_fileURLWithPath_relativeToURL_ = + objc.registerName("fileURLWithPath:relativeToURL:"); +final _objc_msgSend_44 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_fileURLWithPath_isDirectory_ = + objc.registerName("fileURLWithPath:isDirectory:"); +final _objc_msgSend_45 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_fileURLWithPath_ = objc.registerName("fileURLWithPath:"); +final _objc_msgSend_46 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_ = + objc.registerName( + "initFileURLWithFileSystemRepresentation:isDirectory:relativeToURL:"); +final _objc_msgSend_47 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer)>(); +late final _sel_fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_ = + objc.registerName( + "fileURLWithFileSystemRepresentation:isDirectory:relativeToURL:"); +final _objc_msgSend_48 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer)>(); +late final _sel_initWithString_ = objc.registerName("initWithString:"); +final _objc_msgSend_49 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithString_relativeToURL_ = + objc.registerName("initWithString:relativeToURL:"); +final _objc_msgSend_50 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_URLWithString_ = objc.registerName("URLWithString:"); +late final _sel_URLWithString_relativeToURL_ = + objc.registerName("URLWithString:relativeToURL:"); +late final _sel_initWithString_encodingInvalidCharacters_ = + objc.registerName("initWithString:encodingInvalidCharacters:"); +final _objc_msgSend_51 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_URLWithString_encodingInvalidCharacters_ = + objc.registerName("URLWithString:encodingInvalidCharacters:"); +late final _sel_initWithDataRepresentation_relativeToURL_ = + objc.registerName("initWithDataRepresentation:relativeToURL:"); +final _objc_msgSend_52 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_URLWithDataRepresentation_relativeToURL_ = + objc.registerName("URLWithDataRepresentation:relativeToURL:"); +final _objc_msgSend_53 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initAbsoluteURLWithDataRepresentation_relativeToURL_ = + objc.registerName("initAbsoluteURLWithDataRepresentation:relativeToURL:"); +late final _sel_absoluteURLWithDataRepresentation_relativeToURL_ = + objc.registerName("absoluteURLWithDataRepresentation:relativeToURL:"); +late final _sel_dataRepresentation = objc.registerName("dataRepresentation"); +final _objc_msgSend_54 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_absoluteString = objc.registerName("absoluteString"); +final _objc_msgSend_55 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_relativeString = objc.registerName("relativeString"); +late final _sel_baseURL = objc.registerName("baseURL"); +final _objc_msgSend_56 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_absoluteURL = objc.registerName("absoluteURL"); +late final _sel_scheme = objc.registerName("scheme"); +late final _sel_resourceSpecifier = objc.registerName("resourceSpecifier"); +late final _sel_host = objc.registerName("host"); + +class NSNumber extends NSValue { + NSNumber._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSNumber] that points to the same underlying object as [other]. + NSNumber.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSNumber] that wraps the given raw object pointer. + NSNumber.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSNumber]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSNumber); + } + + @override + NSNumber? initWithCoder_(NSCoder coder) { + final _ret = + _objc_msgSend_14(this.pointer, _sel_initWithCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber initWithChar_(int value) { + final _ret = _objc_msgSend_67(this.pointer, _sel_initWithChar_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber initWithUnsignedChar_(int value) { + final _ret = + _objc_msgSend_68(this.pointer, _sel_initWithUnsignedChar_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber initWithShort_(int value) { + final _ret = _objc_msgSend_69(this.pointer, _sel_initWithShort_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber initWithUnsignedShort_(int value) { + final _ret = + _objc_msgSend_70(this.pointer, _sel_initWithUnsignedShort_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber initWithInt_(int value) { + final _ret = _objc_msgSend_71(this.pointer, _sel_initWithInt_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber initWithUnsignedInt_(int value) { + final _ret = + _objc_msgSend_72(this.pointer, _sel_initWithUnsignedInt_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber initWithLong_(int value) { + final _ret = _objc_msgSend_73(this.pointer, _sel_initWithLong_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber initWithUnsignedLong_(int value) { + final _ret = + _objc_msgSend_74(this.pointer, _sel_initWithUnsignedLong_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber initWithLongLong_(int value) { + final _ret = _objc_msgSend_75(this.pointer, _sel_initWithLongLong_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber initWithUnsignedLongLong_(int value) { + final _ret = + _objc_msgSend_76(this.pointer, _sel_initWithUnsignedLongLong_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber initWithFloat_(double value) { + final _ret = _objc_msgSend_77(this.pointer, _sel_initWithFloat_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber initWithDouble_(double value) { + final _ret = _objc_msgSend_78(this.pointer, _sel_initWithDouble_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber initWithBool_(bool value) { + final _ret = _objc_msgSend_79(this.pointer, _sel_initWithBool_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber initWithInteger_(int value) { + final _ret = _objc_msgSend_73(this.pointer, _sel_initWithInteger_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + NSNumber initWithUnsignedInteger_(int value) { + final _ret = + _objc_msgSend_74(this.pointer, _sel_initWithUnsignedInteger_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + int get charValue { + return _objc_msgSend_80(this.pointer, _sel_charValue); + } + + int get unsignedCharValue { + return _objc_msgSend_81(this.pointer, _sel_unsignedCharValue); + } + + int get shortValue { + return _objc_msgSend_82(this.pointer, _sel_shortValue); + } + + int get unsignedShortValue { + return _objc_msgSend_83(this.pointer, _sel_unsignedShortValue); + } + + int get intValue { + return _objc_msgSend_84(this.pointer, _sel_intValue); + } + + int get unsignedIntValue { + return _objc_msgSend_85(this.pointer, _sel_unsignedIntValue); + } + + int get longValue { + return _objc_msgSend_86(this.pointer, _sel_longValue); + } + + int get unsignedLongValue { + return _objc_msgSend_12(this.pointer, _sel_unsignedLongValue); + } + + int get longLongValue { + return _objc_msgSend_87(this.pointer, _sel_longLongValue); + } + + int get unsignedLongLongValue { + return _objc_msgSend_88(this.pointer, _sel_unsignedLongLongValue); + } + + double get floatValue { + return objc.useMsgSendVariants + ? _objc_msgSend_89Fpret(this.pointer, _sel_floatValue) + : _objc_msgSend_89(this.pointer, _sel_floatValue); + } + + double get doubleValue { + return objc.useMsgSendVariants + ? _objc_msgSend_90Fpret(this.pointer, _sel_doubleValue) + : _objc_msgSend_90(this.pointer, _sel_doubleValue); + } + + bool get boolValue { + return _objc_msgSend_11(this.pointer, _sel_boolValue); + } + + int get integerValue { + return _objc_msgSend_86(this.pointer, _sel_integerValue); + } + + int get unsignedIntegerValue { + return _objc_msgSend_12(this.pointer, _sel_unsignedIntegerValue); + } + + NSString get stringValue { + final _ret = _objc_msgSend_32(this.pointer, _sel_stringValue); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + int compare_(NSNumber otherNumber) { + return _objc_msgSend_91(this.pointer, _sel_compare_, otherNumber.pointer); + } + + bool isEqualToNumber_(NSNumber number) { + return _objc_msgSend_92( + this.pointer, _sel_isEqualToNumber_, number.pointer); + } + + NSString descriptionWithLocale_(NSObject? locale) { + final _ret = _objc_msgSend_93(this.pointer, _sel_descriptionWithLocale_, + locale?.pointer ?? ffi.nullptr); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber numberWithChar_(int value) { + final _ret = _objc_msgSend_67(_class_NSNumber, _sel_numberWithChar_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber numberWithUnsignedChar_(int value) { + final _ret = + _objc_msgSend_68(_class_NSNumber, _sel_numberWithUnsignedChar_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber numberWithShort_(int value) { + final _ret = + _objc_msgSend_69(_class_NSNumber, _sel_numberWithShort_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber numberWithUnsignedShort_(int value) { + final _ret = + _objc_msgSend_70(_class_NSNumber, _sel_numberWithUnsignedShort_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber numberWithInt_(int value) { + final _ret = _objc_msgSend_71(_class_NSNumber, _sel_numberWithInt_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber numberWithUnsignedInt_(int value) { + final _ret = + _objc_msgSend_72(_class_NSNumber, _sel_numberWithUnsignedInt_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber numberWithLong_(int value) { + final _ret = _objc_msgSend_73(_class_NSNumber, _sel_numberWithLong_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber numberWithUnsignedLong_(int value) { + final _ret = + _objc_msgSend_74(_class_NSNumber, _sel_numberWithUnsignedLong_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber numberWithLongLong_(int value) { + final _ret = + _objc_msgSend_75(_class_NSNumber, _sel_numberWithLongLong_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber numberWithUnsignedLongLong_(int value) { + final _ret = _objc_msgSend_76( + _class_NSNumber, _sel_numberWithUnsignedLongLong_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber numberWithFloat_(double value) { + final _ret = + _objc_msgSend_77(_class_NSNumber, _sel_numberWithFloat_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber numberWithDouble_(double value) { + final _ret = + _objc_msgSend_78(_class_NSNumber, _sel_numberWithDouble_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber numberWithBool_(bool value) { + final _ret = _objc_msgSend_79(_class_NSNumber, _sel_numberWithBool_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber numberWithInteger_(int value) { + final _ret = + _objc_msgSend_73(_class_NSNumber, _sel_numberWithInteger_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber numberWithUnsignedInteger_(int value) { + final _ret = _objc_msgSend_74( + _class_NSNumber, _sel_numberWithUnsignedInteger_, value); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSNumber initWithBytes_objCType_( + ffi.Pointer value, ffi.Pointer type) { + final _ret = _objc_msgSend_58( + this.pointer, _sel_initWithBytes_objCType_, value, type); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSValue valueWithBytes_objCType_( + ffi.Pointer value, ffi.Pointer type) { + final _ret = _objc_msgSend_59( + _class_NSNumber, _sel_valueWithBytes_objCType_, value, type); + return NSValue.castFromPointer(_ret, retain: true, release: true); + } + + static NSValue value_withObjCType_( + ffi.Pointer value, ffi.Pointer type) { + final _ret = _objc_msgSend_59( + _class_NSNumber, _sel_value_withObjCType_, value, type); + return NSValue.castFromPointer(_ret, retain: true, release: true); + } + + static NSValue valueWithNonretainedObject_(NSObject? anObject) { + final _ret = _objc_msgSend_60(_class_NSNumber, + _sel_valueWithNonretainedObject_, anObject?.pointer ?? ffi.nullptr); + return NSValue.castFromPointer(_ret, retain: true, release: true); + } + + static NSValue valueWithPointer_(ffi.Pointer pointer) { + final _ret = + _objc_msgSend_62(_class_NSNumber, _sel_valueWithPointer_, pointer); + return NSValue.castFromPointer(_ret, retain: true, release: true); + } + + static NSValue valueWithRange_(_NSRange range) { + final _ret = _objc_msgSend_65(_class_NSNumber, _sel_valueWithRange_, range); + return NSValue.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSNumber init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSNumber.castFromPointer(_ret, retain: true, release: true); + } + + static NSNumber new1() { + final _ret = _objc_msgSend_2(_class_NSNumber, _sel_new); + return NSNumber.castFromPointer(_ret, retain: false, release: true); + } + + static NSNumber allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_3(_class_NSNumber, _sel_allocWithZone_, zone); + return NSNumber.castFromPointer(_ret, retain: false, release: true); + } + + static NSNumber alloc() { + final _ret = _objc_msgSend_2(_class_NSNumber, _sel_alloc); + return NSNumber.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSNumber = objc.getClass("NSNumber"); + +class NSValue extends NSObject { + NSValue._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSValue] that points to the same underlying object as [other]. + NSValue.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSValue] that wraps the given raw object pointer. + NSValue.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSValue]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSValue); + } + + void getValue_size_(ffi.Pointer value, int size) { + _objc_msgSend_33(this.pointer, _sel_getValue_size_, value, size); + } + + ffi.Pointer get objCType { + return _objc_msgSend_57(this.pointer, _sel_objCType); + } + + NSValue initWithBytes_objCType_( + ffi.Pointer value, ffi.Pointer type) { + final _ret = _objc_msgSend_58( + this.pointer, _sel_initWithBytes_objCType_, value, type); + return NSValue.castFromPointer(_ret, retain: true, release: true); + } + + NSValue? initWithCoder_(NSCoder coder) { + final _ret = + _objc_msgSend_14(this.pointer, _sel_initWithCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSValue.castFromPointer(_ret, retain: true, release: true); + } + + static NSValue valueWithBytes_objCType_( + ffi.Pointer value, ffi.Pointer type) { + final _ret = _objc_msgSend_59( + _class_NSValue, _sel_valueWithBytes_objCType_, value, type); + return NSValue.castFromPointer(_ret, retain: true, release: true); + } + + static NSValue value_withObjCType_( + ffi.Pointer value, ffi.Pointer type) { + final _ret = + _objc_msgSend_59(_class_NSValue, _sel_value_withObjCType_, value, type); + return NSValue.castFromPointer(_ret, retain: true, release: true); + } + + static NSValue valueWithNonretainedObject_(NSObject? anObject) { + final _ret = _objc_msgSend_60(_class_NSValue, + _sel_valueWithNonretainedObject_, anObject?.pointer ?? ffi.nullptr); + return NSValue.castFromPointer(_ret, retain: true, release: true); + } + + NSObject? get nonretainedObjectValue { + final _ret = _objc_msgSend_61(this.pointer, _sel_nonretainedObjectValue); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static NSValue valueWithPointer_(ffi.Pointer pointer) { + final _ret = + _objc_msgSend_62(_class_NSValue, _sel_valueWithPointer_, pointer); + return NSValue.castFromPointer(_ret, retain: true, release: true); + } + + ffi.Pointer get pointerValue { + return _objc_msgSend_31(this.pointer, _sel_pointerValue); + } + + bool isEqualToValue_(NSValue value) { + return _objc_msgSend_63(this.pointer, _sel_isEqualToValue_, value.pointer); + } + + void getValue_(ffi.Pointer value) { + _objc_msgSend_64(this.pointer, _sel_getValue_, value); + } + + static NSValue valueWithRange_(_NSRange range) { + final _ret = _objc_msgSend_65(_class_NSValue, _sel_valueWithRange_, range); + return NSValue.castFromPointer(_ret, retain: true, release: true); + } + + void getRangeValue(ffi.Pointer<_NSRange> stret) { + objc.useMsgSendVariants + ? _objc_msgSend_66Stret(stret, this.pointer, _sel_rangeValue) + : stret.ref = _objc_msgSend_66(this.pointer, _sel_rangeValue); + } + + @override + NSValue init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSValue.castFromPointer(_ret, retain: true, release: true); + } + + static NSValue new1() { + final _ret = _objc_msgSend_2(_class_NSValue, _sel_new); + return NSValue.castFromPointer(_ret, retain: false, release: true); + } + + static NSValue allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_3(_class_NSValue, _sel_allocWithZone_, zone); + return NSValue.castFromPointer(_ret, retain: false, release: true); + } + + static NSValue alloc() { + final _ret = _objc_msgSend_2(_class_NSValue, _sel_alloc); + return NSValue.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSValue = objc.getClass("NSValue"); +late final _sel_getValue_size_ = objc.registerName("getValue:size:"); +late final _sel_objCType = objc.registerName("objCType"); +final _objc_msgSend_57 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithBytes_objCType_ = + objc.registerName("initWithBytes:objCType:"); +final _objc_msgSend_58 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_valueWithBytes_objCType_ = + objc.registerName("valueWithBytes:objCType:"); +final _objc_msgSend_59 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_value_withObjCType_ = objc.registerName("value:withObjCType:"); +late final _sel_valueWithNonretainedObject_ = + objc.registerName("valueWithNonretainedObject:"); +final _objc_msgSend_60 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_nonretainedObjectValue = + objc.registerName("nonretainedObjectValue"); +final _objc_msgSend_61 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_valueWithPointer_ = objc.registerName("valueWithPointer:"); +final _objc_msgSend_62 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_pointerValue = objc.registerName("pointerValue"); +late final _sel_isEqualToValue_ = objc.registerName("isEqualToValue:"); +final _objc_msgSend_63 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_getValue_ = objc.registerName("getValue:"); +final _objc_msgSend_64 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_valueWithRange_ = objc.registerName("valueWithRange:"); +final _objc_msgSend_65 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_rangeValue = objc.registerName("rangeValue"); +final _objc_msgSend_66 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + _NSRange Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_66Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithChar_ = objc.registerName("initWithChar:"); +final _objc_msgSend_67 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Char)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_initWithUnsignedChar_ = + objc.registerName("initWithUnsignedChar:"); +final _objc_msgSend_68 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedChar)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_initWithShort_ = objc.registerName("initWithShort:"); +final _objc_msgSend_69 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Short)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_initWithUnsignedShort_ = + objc.registerName("initWithUnsignedShort:"); +final _objc_msgSend_70 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedShort)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_initWithInt_ = objc.registerName("initWithInt:"); +final _objc_msgSend_71 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_initWithUnsignedInt_ = + objc.registerName("initWithUnsignedInt:"); +final _objc_msgSend_72 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_initWithLong_ = objc.registerName("initWithLong:"); +final _objc_msgSend_73 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_initWithUnsignedLong_ = + objc.registerName("initWithUnsignedLong:"); +final _objc_msgSend_74 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_initWithLongLong_ = objc.registerName("initWithLongLong:"); +final _objc_msgSend_75 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.LongLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_initWithUnsignedLongLong_ = + objc.registerName("initWithUnsignedLongLong:"); +final _objc_msgSend_76 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLongLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_initWithFloat_ = objc.registerName("initWithFloat:"); +final _objc_msgSend_77 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Float)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, double)>(); +late final _sel_initWithDouble_ = objc.registerName("initWithDouble:"); +final _objc_msgSend_78 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Double)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, double)>(); +late final _sel_initWithBool_ = objc.registerName("initWithBool:"); +final _objc_msgSend_79 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, bool)>(); +late final _sel_initWithInteger_ = objc.registerName("initWithInteger:"); +late final _sel_initWithUnsignedInteger_ = + objc.registerName("initWithUnsignedInteger:"); +late final _sel_charValue = objc.registerName("charValue"); +final _objc_msgSend_80 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Char Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_unsignedCharValue = objc.registerName("unsignedCharValue"); +final _objc_msgSend_81 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedChar Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_shortValue = objc.registerName("shortValue"); +final _objc_msgSend_82 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Short Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_unsignedShortValue = objc.registerName("unsignedShortValue"); +final _objc_msgSend_83 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedShort Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_intValue = objc.registerName("intValue"); +final _objc_msgSend_84 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_unsignedIntValue = objc.registerName("unsignedIntValue"); +final _objc_msgSend_85 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedInt Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_longValue = objc.registerName("longValue"); +final _objc_msgSend_86 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_unsignedLongValue = objc.registerName("unsignedLongValue"); +late final _sel_longLongValue = objc.registerName("longLongValue"); +final _objc_msgSend_87 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.LongLong Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_unsignedLongLongValue = + objc.registerName("unsignedLongLongValue"); +final _objc_msgSend_88 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLongLong Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_floatValue = objc.registerName("floatValue"); +final _objc_msgSend_89 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Float Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_89Fpret = objc.msgSendFpretPointer + .cast< + ffi.NativeFunction< + ffi.Float Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_doubleValue = objc.registerName("doubleValue"); +final _objc_msgSend_90 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Double Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function( + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_90Fpret = objc.msgSendFpretPointer + .cast< + ffi.NativeFunction< + ffi.Double Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_boolValue = objc.registerName("boolValue"); +late final _sel_integerValue = objc.registerName("integerValue"); +late final _sel_unsignedIntegerValue = + objc.registerName("unsignedIntegerValue"); +late final _sel_stringValue = objc.registerName("stringValue"); +final _objc_msgSend_91 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isEqualToNumber_ = objc.registerName("isEqualToNumber:"); +final _objc_msgSend_92 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_descriptionWithLocale_ = + objc.registerName("descriptionWithLocale:"); +final _objc_msgSend_93 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_numberWithChar_ = objc.registerName("numberWithChar:"); +late final _sel_numberWithUnsignedChar_ = + objc.registerName("numberWithUnsignedChar:"); +late final _sel_numberWithShort_ = objc.registerName("numberWithShort:"); +late final _sel_numberWithUnsignedShort_ = + objc.registerName("numberWithUnsignedShort:"); +late final _sel_numberWithInt_ = objc.registerName("numberWithInt:"); +late final _sel_numberWithUnsignedInt_ = + objc.registerName("numberWithUnsignedInt:"); +late final _sel_numberWithLong_ = objc.registerName("numberWithLong:"); +late final _sel_numberWithUnsignedLong_ = + objc.registerName("numberWithUnsignedLong:"); +late final _sel_numberWithLongLong_ = objc.registerName("numberWithLongLong:"); +late final _sel_numberWithUnsignedLongLong_ = + objc.registerName("numberWithUnsignedLongLong:"); +late final _sel_numberWithFloat_ = objc.registerName("numberWithFloat:"); +late final _sel_numberWithDouble_ = objc.registerName("numberWithDouble:"); +late final _sel_numberWithBool_ = objc.registerName("numberWithBool:"); +late final _sel_numberWithInteger_ = objc.registerName("numberWithInteger:"); +late final _sel_numberWithUnsignedInteger_ = + objc.registerName("numberWithUnsignedInteger:"); +late final _sel_port = objc.registerName("port"); +final _objc_msgSend_94 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_user = objc.registerName("user"); +late final _sel_password = objc.registerName("password"); +late final _sel_path = objc.registerName("path"); +late final _sel_fragment = objc.registerName("fragment"); +late final _sel_parameterString = objc.registerName("parameterString"); +late final _sel_query = objc.registerName("query"); +late final _sel_relativePath = objc.registerName("relativePath"); +late final _sel_hasDirectoryPath = objc.registerName("hasDirectoryPath"); +late final _sel_getFileSystemRepresentation_maxLength_ = + objc.registerName("getFileSystemRepresentation:maxLength:"); +final _objc_msgSend_95 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); +late final _sel_fileSystemRepresentation = + objc.registerName("fileSystemRepresentation"); +late final _sel_isFileURL = objc.registerName("isFileURL"); +late final _sel_standardizedURL = objc.registerName("standardizedURL"); +late final _sel_isFileReferenceURL = objc.registerName("isFileReferenceURL"); +late final _sel_fileReferenceURL = objc.registerName("fileReferenceURL"); +late final _sel_filePathURL = objc.registerName("filePathURL"); + +class NSError extends objc.ObjCObjectBase { + NSError._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super(pointer, retain: retain, release: release); + + /// Constructs a [NSError] that points to the same underlying object as [other]. + NSError.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSError] that wraps the given raw object pointer. + NSError.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSError]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSError); + } +} + +late final _class_NSError = objc.getClass("NSError"); +late final _sel_getResourceValue_forKey_error_ = + objc.registerName("getResourceValue:forKey:error:"); +final _objc_msgSend_96 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer>)>(); + +class NSArray extends NSObject { + NSArray._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSArray] that points to the same underlying object as [other]. + NSArray.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSArray] that wraps the given raw object pointer. + NSArray.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSArray]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSArray); + } + + int get count { + return _objc_msgSend_12(this.pointer, _sel_count); + } + + NSObject objectAtIndex_(int index) { + final _ret = _objc_msgSend_97(this.pointer, _sel_objectAtIndex_, index); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSArray init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray initWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_98( + this.pointer, _sel_initWithObjects_count_, objects, cnt); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray? initWithCoder_(NSCoder coder) { + final _ret = + _objc_msgSend_14(this.pointer, _sel_initWithCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray arrayByAddingObject_(NSObject anObject) { + final _ret = _objc_msgSend_99( + this.pointer, _sel_arrayByAddingObject_, anObject.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray arrayByAddingObjectsFromArray_(NSArray otherArray) { + final _ret = _objc_msgSend_100( + this.pointer, _sel_arrayByAddingObjectsFromArray_, otherArray.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSString componentsJoinedByString_(NSString separator) { + final _ret = _objc_msgSend_101( + this.pointer, _sel_componentsJoinedByString_, separator.pointer); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + bool containsObject_(NSObject anObject) { + return _objc_msgSend_0( + this.pointer, _sel_containsObject_, anObject.pointer); + } + + NSString get description { + final _ret = _objc_msgSend_32(this.pointer, _sel_description); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString descriptionWithLocale_(NSObject? locale) { + final _ret = _objc_msgSend_93(this.pointer, _sel_descriptionWithLocale_, + locale?.pointer ?? ffi.nullptr); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString descriptionWithLocale_indent_(NSObject? locale, int level) { + final _ret = _objc_msgSend_102( + this.pointer, + _sel_descriptionWithLocale_indent_, + locale?.pointer ?? ffi.nullptr, + level); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSObject? firstObjectCommonWithArray_(NSArray otherArray) { + final _ret = _objc_msgSend_103( + this.pointer, _sel_firstObjectCommonWithArray_, otherArray.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + void getObjects_range_( + ffi.Pointer> objects, _NSRange range) { + _objc_msgSend_104(this.pointer, _sel_getObjects_range_, objects, range); + } + + int indexOfObject_(NSObject anObject) { + return _objc_msgSend_105( + this.pointer, _sel_indexOfObject_, anObject.pointer); + } + + int indexOfObject_inRange_(NSObject anObject, _NSRange range) { + return _objc_msgSend_106( + this.pointer, _sel_indexOfObject_inRange_, anObject.pointer, range); + } + + int indexOfObjectIdenticalTo_(NSObject anObject) { + return _objc_msgSend_105( + this.pointer, _sel_indexOfObjectIdenticalTo_, anObject.pointer); + } + + int indexOfObjectIdenticalTo_inRange_(NSObject anObject, _NSRange range) { + return _objc_msgSend_106(this.pointer, + _sel_indexOfObjectIdenticalTo_inRange_, anObject.pointer, range); + } + + bool isEqualToArray_(NSArray otherArray) { + return _objc_msgSend_107( + this.pointer, _sel_isEqualToArray_, otherArray.pointer); + } + + NSObject? get firstObject { + final _ret = _objc_msgSend_61(this.pointer, _sel_firstObject); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSObject? get lastObject { + final _ret = _objc_msgSend_61(this.pointer, _sel_lastObject); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSEnumerator objectEnumerator() { + final _ret = _objc_msgSend_108(this.pointer, _sel_objectEnumerator); + return NSEnumerator.castFromPointer(_ret, retain: true, release: true); + } + + NSEnumerator reverseObjectEnumerator() { + final _ret = _objc_msgSend_108(this.pointer, _sel_reverseObjectEnumerator); + return NSEnumerator.castFromPointer(_ret, retain: true, release: true); + } + + NSData get sortedArrayHint { + final _ret = _objc_msgSend_54(this.pointer, _sel_sortedArrayHint); + return NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSArray sortedArrayUsingFunction_context_( + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>> + comparator, + ffi.Pointer context) { + final _ret = _objc_msgSend_109(this.pointer, + _sel_sortedArrayUsingFunction_context_, comparator, context); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray sortedArrayUsingFunction_context_hint_( + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>> + comparator, + ffi.Pointer context, + NSData? hint) { + final _ret = _objc_msgSend_110( + this.pointer, + _sel_sortedArrayUsingFunction_context_hint_, + comparator, + context, + hint?.pointer ?? ffi.nullptr); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray sortedArrayUsingSelector_(ffi.Pointer comparator) { + final _ret = _objc_msgSend_111( + this.pointer, _sel_sortedArrayUsingSelector_, comparator); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray subarrayWithRange_(_NSRange range) { + final _ret = + _objc_msgSend_112(this.pointer, _sel_subarrayWithRange_, range); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + bool writeToURL_error_( + NSURL url, ffi.Pointer> error) { + return _objc_msgSend_113( + this.pointer, _sel_writeToURL_error_, url.pointer, error); + } + + void makeObjectsPerformSelector_(ffi.Pointer aSelector) { + _objc_msgSend_7(this.pointer, _sel_makeObjectsPerformSelector_, aSelector); + } + + void makeObjectsPerformSelector_withObject_( + ffi.Pointer aSelector, NSObject? argument) { + _objc_msgSend_114(this.pointer, _sel_makeObjectsPerformSelector_withObject_, + aSelector, argument?.pointer ?? ffi.nullptr); + } + + NSArray objectsAtIndexes_(NSIndexSet indexes) { + final _ret = _objc_msgSend_135( + this.pointer, _sel_objectsAtIndexes_, indexes.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSObject objectAtIndexedSubscript_(int idx) { + final _ret = + _objc_msgSend_97(this.pointer, _sel_objectAtIndexedSubscript_, idx); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + void enumerateObjectsUsingBlock_( + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool block) { + _objc_msgSend_136( + this.pointer, _sel_enumerateObjectsUsingBlock_, block.pointer); + } + + void enumerateObjectsWithOptions_usingBlock_( + int opts, ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool block) { + _objc_msgSend_137(this.pointer, + _sel_enumerateObjectsWithOptions_usingBlock_, opts, block.pointer); + } + + void enumerateObjectsAtIndexes_options_usingBlock_(NSIndexSet s, int opts, + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool block) { + _objc_msgSend_138( + this.pointer, + _sel_enumerateObjectsAtIndexes_options_usingBlock_, + s.pointer, + opts, + block.pointer); + } + + int indexOfObjectPassingTest_( + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + return _objc_msgSend_139( + this.pointer, _sel_indexOfObjectPassingTest_, predicate.pointer); + } + + int indexOfObjectWithOptions_passingTest_( + int opts, ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + return _objc_msgSend_140(this.pointer, + _sel_indexOfObjectWithOptions_passingTest_, opts, predicate.pointer); + } + + int indexOfObjectAtIndexes_options_passingTest_(NSIndexSet s, int opts, + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + return _objc_msgSend_141( + this.pointer, + _sel_indexOfObjectAtIndexes_options_passingTest_, + s.pointer, + opts, + predicate.pointer); + } + + NSIndexSet indexesOfObjectsPassingTest_( + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + final _ret = _objc_msgSend_142( + this.pointer, _sel_indexesOfObjectsPassingTest_, predicate.pointer); + return NSIndexSet.castFromPointer(_ret, retain: true, release: true); + } + + NSIndexSet indexesOfObjectsWithOptions_passingTest_( + int opts, ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + final _ret = _objc_msgSend_143(this.pointer, + _sel_indexesOfObjectsWithOptions_passingTest_, opts, predicate.pointer); + return NSIndexSet.castFromPointer(_ret, retain: true, release: true); + } + + NSIndexSet indexesOfObjectsAtIndexes_options_passingTest_(NSIndexSet s, + int opts, ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool predicate) { + final _ret = _objc_msgSend_144( + this.pointer, + _sel_indexesOfObjectsAtIndexes_options_passingTest_, + s.pointer, + opts, + predicate.pointer); + return NSIndexSet.castFromPointer(_ret, retain: true, release: true); + } + + NSArray sortedArrayUsingComparator_( + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + final _ret = _objc_msgSend_145( + this.pointer, _sel_sortedArrayUsingComparator_, cmptr.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray sortedArrayWithOptions_usingComparator_(int opts, + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + final _ret = _objc_msgSend_146(this.pointer, + _sel_sortedArrayWithOptions_usingComparator_, opts, cmptr.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + int indexOfObject_inSortedRange_options_usingComparator_( + NSObject obj, + _NSRange r, + int opts, + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmp) { + return _objc_msgSend_147( + this.pointer, + _sel_indexOfObject_inSortedRange_options_usingComparator_, + obj.pointer, + r, + opts, + cmp.pointer); + } + + static NSArray array() { + final _ret = _objc_msgSend_2(_class_NSArray, _sel_array); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static NSArray arrayWithObject_(NSObject anObject) { + final _ret = _objc_msgSend_148( + _class_NSArray, _sel_arrayWithObject_, anObject.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static NSArray arrayWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_98( + _class_NSArray, _sel_arrayWithObjects_count_, objects, cnt); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static NSArray arrayWithObjects_(NSObject firstObj) { + final _ret = _objc_msgSend_148( + _class_NSArray, _sel_arrayWithObjects_, firstObj.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static NSArray arrayWithArray_(NSArray array) { + final _ret = + _objc_msgSend_149(_class_NSArray, _sel_arrayWithArray_, array.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray initWithObjects_(NSObject firstObj) { + final _ret = _objc_msgSend_148( + this.pointer, _sel_initWithObjects_, firstObj.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray initWithArray_(NSArray array) { + final _ret = + _objc_msgSend_149(this.pointer, _sel_initWithArray_, array.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray initWithArray_copyItems_(NSArray array, bool flag) { + final _ret = _objc_msgSend_150( + this.pointer, _sel_initWithArray_copyItems_, array.pointer, flag); + return NSArray.castFromPointer(_ret, retain: false, release: true); + } + + NSArray? initWithContentsOfURL_error_( + NSURL url, ffi.Pointer> error) { + final _ret = _objc_msgSend_151( + this.pointer, _sel_initWithContentsOfURL_error_, url.pointer, error); + return _ret.address == 0 + ? null + : NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static NSArray? arrayWithContentsOfURL_error_( + NSURL url, ffi.Pointer> error) { + final _ret = _objc_msgSend_151( + _class_NSArray, _sel_arrayWithContentsOfURL_error_, url.pointer, error); + return _ret.address == 0 + ? null + : NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSObject differenceFromArray_withOptions_usingEquivalenceTest_(NSArray other, + int options, ObjCBlock_bool_objcObjCObject_objcObjCObject block) { + final _ret = _objc_msgSend_152( + this.pointer, + _sel_differenceFromArray_withOptions_usingEquivalenceTest_, + other.pointer, + options, + block.pointer); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSObject differenceFromArray_withOptions_(NSArray other, int options) { + final _ret = _objc_msgSend_153(this.pointer, + _sel_differenceFromArray_withOptions_, other.pointer, options); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSObject differenceFromArray_(NSArray other) { + final _ret = _objc_msgSend_149( + this.pointer, _sel_differenceFromArray_, other.pointer); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSArray? arrayByApplyingDifference_(NSObject difference) { + final _ret = _objc_msgSend_154( + this.pointer, _sel_arrayByApplyingDifference_, difference.pointer); + return _ret.address == 0 + ? null + : NSArray.castFromPointer(_ret, retain: true, release: true); + } + + void getObjects_(ffi.Pointer> objects) { + _objc_msgSend_155(this.pointer, _sel_getObjects_, objects); + } + + static NSArray? arrayWithContentsOfFile_(NSString path) { + final _ret = _objc_msgSend_156( + _class_NSArray, _sel_arrayWithContentsOfFile_, path.pointer); + return _ret.address == 0 + ? null + : NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static NSArray? arrayWithContentsOfURL_(NSURL url) { + final _ret = _objc_msgSend_157( + _class_NSArray, _sel_arrayWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray? initWithContentsOfFile_(NSString path) { + final _ret = _objc_msgSend_156( + this.pointer, _sel_initWithContentsOfFile_, path.pointer); + return _ret.address == 0 + ? null + : NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray? initWithContentsOfURL_(NSURL url) { + final _ret = _objc_msgSend_157( + this.pointer, _sel_initWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSArray.castFromPointer(_ret, retain: true, release: true); + } + + bool writeToFile_atomically_(NSString path, bool useAuxiliaryFile) { + return _objc_msgSend_37(this.pointer, _sel_writeToFile_atomically_, + path.pointer, useAuxiliaryFile); + } + + bool writeToURL_atomically_(NSURL url, bool atomically) { + return _objc_msgSend_158( + this.pointer, _sel_writeToURL_atomically_, url.pointer, atomically); + } + + static NSArray new1() { + final _ret = _objc_msgSend_2(_class_NSArray, _sel_new); + return NSArray.castFromPointer(_ret, retain: false, release: true); + } + + static NSArray allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_3(_class_NSArray, _sel_allocWithZone_, zone); + return NSArray.castFromPointer(_ret, retain: false, release: true); + } + + static NSArray alloc() { + final _ret = _objc_msgSend_2(_class_NSArray, _sel_alloc); + return NSArray.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSArray = objc.getClass("NSArray"); +late final _sel_count = objc.registerName("count"); +late final _sel_objectAtIndex_ = objc.registerName("objectAtIndex:"); +final _objc_msgSend_97 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_initWithObjects_count_ = + objc.registerName("initWithObjects:count:"); +final _objc_msgSend_98 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.UnsignedLong)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + int)>(); +late final _sel_arrayByAddingObject_ = + objc.registerName("arrayByAddingObject:"); +final _objc_msgSend_99 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_arrayByAddingObjectsFromArray_ = + objc.registerName("arrayByAddingObjectsFromArray:"); +final _objc_msgSend_100 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_componentsJoinedByString_ = + objc.registerName("componentsJoinedByString:"); +final _objc_msgSend_101 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_containsObject_ = objc.registerName("containsObject:"); +late final _sel_descriptionWithLocale_indent_ = + objc.registerName("descriptionWithLocale:indent:"); +final _objc_msgSend_102 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_firstObjectCommonWithArray_ = + objc.registerName("firstObjectCommonWithArray:"); +final _objc_msgSend_103 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_getObjects_range_ = objc.registerName("getObjects:range:"); +final _objc_msgSend_104 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + _NSRange)>(); +late final _sel_indexOfObject_ = objc.registerName("indexOfObject:"); +final _objc_msgSend_105 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_indexOfObject_inRange_ = + objc.registerName("indexOfObject:inRange:"); +final _objc_msgSend_106 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>(); +late final _sel_indexOfObjectIdenticalTo_ = + objc.registerName("indexOfObjectIdenticalTo:"); +late final _sel_indexOfObjectIdenticalTo_inRange_ = + objc.registerName("indexOfObjectIdenticalTo:inRange:"); +late final _sel_isEqualToArray_ = objc.registerName("isEqualToArray:"); +final _objc_msgSend_107 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_firstObject = objc.registerName("firstObject"); +late final _sel_lastObject = objc.registerName("lastObject"); + +class NSEnumerator extends NSObject { + NSEnumerator._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSEnumerator] that points to the same underlying object as [other]. + NSEnumerator.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSEnumerator] that wraps the given raw object pointer. + NSEnumerator.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSEnumerator]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSEnumerator); + } + + NSObject? nextObject() { + final _ret = _objc_msgSend_61(this.pointer, _sel_nextObject); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSObject get allObjects { + final _ret = _objc_msgSend_2(this.pointer, _sel_allObjects); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSEnumerator init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSEnumerator.castFromPointer(_ret, retain: true, release: true); + } + + static NSEnumerator new1() { + final _ret = _objc_msgSend_2(_class_NSEnumerator, _sel_new); + return NSEnumerator.castFromPointer(_ret, retain: false, release: true); + } + + static NSEnumerator allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_3(_class_NSEnumerator, _sel_allocWithZone_, zone); + return NSEnumerator.castFromPointer(_ret, retain: false, release: true); + } + + static NSEnumerator alloc() { + final _ret = _objc_msgSend_2(_class_NSEnumerator, _sel_alloc); + return NSEnumerator.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSEnumerator = objc.getClass("NSEnumerator"); +late final _sel_nextObject = objc.registerName("nextObject"); +late final _sel_allObjects = objc.registerName("allObjects"); +late final _sel_objectEnumerator = objc.registerName("objectEnumerator"); +final _objc_msgSend_108 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_reverseObjectEnumerator = + objc.registerName("reverseObjectEnumerator"); +late final _sel_sortedArrayHint = objc.registerName("sortedArrayHint"); +late final _sel_sortedArrayUsingFunction_context_ = + objc.registerName("sortedArrayUsingFunction:context:"); +final _objc_msgSend_109 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>, + ffi.Pointer)>(); +late final _sel_sortedArrayUsingFunction_context_hint_ = + objc.registerName("sortedArrayUsingFunction:context:hint:"); +final _objc_msgSend_110 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_sortedArrayUsingSelector_ = + objc.registerName("sortedArrayUsingSelector:"); +final _objc_msgSend_111 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_subarrayWithRange_ = objc.registerName("subarrayWithRange:"); +final _objc_msgSend_112 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_writeToURL_error_ = objc.registerName("writeToURL:error:"); +final _objc_msgSend_113 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_makeObjectsPerformSelector_ = + objc.registerName("makeObjectsPerformSelector:"); +late final _sel_makeObjectsPerformSelector_withObject_ = + objc.registerName("makeObjectsPerformSelector:withObject:"); +final _objc_msgSend_114 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSIndexSet extends NSObject { + NSIndexSet._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSIndexSet] that points to the same underlying object as [other]. + NSIndexSet.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSIndexSet] that wraps the given raw object pointer. + NSIndexSet.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSIndexSet]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSIndexSet); + } + + static NSIndexSet indexSet() { + final _ret = _objc_msgSend_2(_class_NSIndexSet, _sel_indexSet); + return NSIndexSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSIndexSet indexSetWithIndex_(int value) { + final _ret = + _objc_msgSend_97(_class_NSIndexSet, _sel_indexSetWithIndex_, value); + return NSIndexSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSIndexSet indexSetWithIndexesInRange_(_NSRange range) { + final _ret = _objc_msgSend_115( + _class_NSIndexSet, _sel_indexSetWithIndexesInRange_, range); + return NSIndexSet.castFromPointer(_ret, retain: true, release: true); + } + + NSIndexSet initWithIndexesInRange_(_NSRange range) { + final _ret = + _objc_msgSend_115(this.pointer, _sel_initWithIndexesInRange_, range); + return NSIndexSet.castFromPointer(_ret, retain: true, release: true); + } + + NSIndexSet initWithIndexSet_(NSIndexSet indexSet) { + final _ret = _objc_msgSend_116( + this.pointer, _sel_initWithIndexSet_, indexSet.pointer); + return NSIndexSet.castFromPointer(_ret, retain: true, release: true); + } + + NSIndexSet initWithIndex_(int value) { + final _ret = _objc_msgSend_97(this.pointer, _sel_initWithIndex_, value); + return NSIndexSet.castFromPointer(_ret, retain: true, release: true); + } + + bool isEqualToIndexSet_(NSIndexSet indexSet) { + return _objc_msgSend_117( + this.pointer, _sel_isEqualToIndexSet_, indexSet.pointer); + } + + int get count { + return _objc_msgSend_12(this.pointer, _sel_count); + } + + int get firstIndex { + return _objc_msgSend_12(this.pointer, _sel_firstIndex); + } + + int get lastIndex { + return _objc_msgSend_12(this.pointer, _sel_lastIndex); + } + + int indexGreaterThanIndex_(int value) { + return _objc_msgSend_118(this.pointer, _sel_indexGreaterThanIndex_, value); + } + + int indexLessThanIndex_(int value) { + return _objc_msgSend_118(this.pointer, _sel_indexLessThanIndex_, value); + } + + int indexGreaterThanOrEqualToIndex_(int value) { + return _objc_msgSend_118( + this.pointer, _sel_indexGreaterThanOrEqualToIndex_, value); + } + + int indexLessThanOrEqualToIndex_(int value) { + return _objc_msgSend_118( + this.pointer, _sel_indexLessThanOrEqualToIndex_, value); + } + + int getIndexes_maxCount_inIndexRange_( + ffi.Pointer indexBuffer, + int bufferSize, + ffi.Pointer<_NSRange> range) { + return _objc_msgSend_119(this.pointer, + _sel_getIndexes_maxCount_inIndexRange_, indexBuffer, bufferSize, range); + } + + int countOfIndexesInRange_(_NSRange range) { + return _objc_msgSend_120(this.pointer, _sel_countOfIndexesInRange_, range); + } + + bool containsIndex_(int value) { + return _objc_msgSend_121(this.pointer, _sel_containsIndex_, value); + } + + bool containsIndexesInRange_(_NSRange range) { + return _objc_msgSend_122(this.pointer, _sel_containsIndexesInRange_, range); + } + + bool containsIndexes_(NSIndexSet indexSet) { + return _objc_msgSend_117( + this.pointer, _sel_containsIndexes_, indexSet.pointer); + } + + bool intersectsIndexesInRange_(_NSRange range) { + return _objc_msgSend_122( + this.pointer, _sel_intersectsIndexesInRange_, range); + } + + void enumerateIndexesUsingBlock_( + ObjCBlock_ffiVoid_ffiUnsignedLong_bool block) { + _objc_msgSend_123( + this.pointer, _sel_enumerateIndexesUsingBlock_, block.pointer); + } + + void enumerateIndexesWithOptions_usingBlock_( + int opts, ObjCBlock_ffiVoid_ffiUnsignedLong_bool block) { + _objc_msgSend_124(this.pointer, + _sel_enumerateIndexesWithOptions_usingBlock_, opts, block.pointer); + } + + void enumerateIndexesInRange_options_usingBlock_( + _NSRange range, int opts, ObjCBlock_ffiVoid_ffiUnsignedLong_bool block) { + _objc_msgSend_125( + this.pointer, + _sel_enumerateIndexesInRange_options_usingBlock_, + range, + opts, + block.pointer); + } + + int indexPassingTest_(ObjCBlock_bool_ffiUnsignedLong_bool predicate) { + return _objc_msgSend_126( + this.pointer, _sel_indexPassingTest_, predicate.pointer); + } + + int indexWithOptions_passingTest_( + int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { + return _objc_msgSend_127(this.pointer, _sel_indexWithOptions_passingTest_, + opts, predicate.pointer); + } + + int indexInRange_options_passingTest_( + _NSRange range, int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { + return _objc_msgSend_128(this.pointer, + _sel_indexInRange_options_passingTest_, range, opts, predicate.pointer); + } + + NSIndexSet indexesPassingTest_( + ObjCBlock_bool_ffiUnsignedLong_bool predicate) { + final _ret = _objc_msgSend_129( + this.pointer, _sel_indexesPassingTest_, predicate.pointer); + return NSIndexSet.castFromPointer(_ret, retain: true, release: true); + } + + NSIndexSet indexesWithOptions_passingTest_( + int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { + final _ret = _objc_msgSend_130(this.pointer, + _sel_indexesWithOptions_passingTest_, opts, predicate.pointer); + return NSIndexSet.castFromPointer(_ret, retain: true, release: true); + } + + NSIndexSet indexesInRange_options_passingTest_( + _NSRange range, int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { + final _ret = _objc_msgSend_131( + this.pointer, + _sel_indexesInRange_options_passingTest_, + range, + opts, + predicate.pointer); + return NSIndexSet.castFromPointer(_ret, retain: true, release: true); + } + + void enumerateRangesUsingBlock_(ObjCBlock_ffiVoid_NSRange_bool block) { + _objc_msgSend_132( + this.pointer, _sel_enumerateRangesUsingBlock_, block.pointer); + } + + void enumerateRangesWithOptions_usingBlock_( + int opts, ObjCBlock_ffiVoid_NSRange_bool block) { + _objc_msgSend_133(this.pointer, _sel_enumerateRangesWithOptions_usingBlock_, + opts, block.pointer); + } + + void enumerateRangesInRange_options_usingBlock_( + _NSRange range, int opts, ObjCBlock_ffiVoid_NSRange_bool block) { + _objc_msgSend_134( + this.pointer, + _sel_enumerateRangesInRange_options_usingBlock_, + range, + opts, + block.pointer); + } + + @override + NSIndexSet init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSIndexSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSIndexSet new1() { + final _ret = _objc_msgSend_2(_class_NSIndexSet, _sel_new); + return NSIndexSet.castFromPointer(_ret, retain: false, release: true); + } + + static NSIndexSet allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_3(_class_NSIndexSet, _sel_allocWithZone_, zone); + return NSIndexSet.castFromPointer(_ret, retain: false, release: true); + } + + static NSIndexSet alloc() { + final _ret = _objc_msgSend_2(_class_NSIndexSet, _sel_alloc); + return NSIndexSet.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSIndexSet = objc.getClass("NSIndexSet"); +late final _sel_indexSet = objc.registerName("indexSet"); +late final _sel_indexSetWithIndex_ = objc.registerName("indexSetWithIndex:"); +late final _sel_indexSetWithIndexesInRange_ = + objc.registerName("indexSetWithIndexesInRange:"); +final _objc_msgSend_115 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_initWithIndexesInRange_ = + objc.registerName("initWithIndexesInRange:"); +late final _sel_initWithIndexSet_ = objc.registerName("initWithIndexSet:"); +final _objc_msgSend_116 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithIndex_ = objc.registerName("initWithIndex:"); +late final _sel_isEqualToIndexSet_ = objc.registerName("isEqualToIndexSet:"); +final _objc_msgSend_117 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_firstIndex = objc.registerName("firstIndex"); +late final _sel_lastIndex = objc.registerName("lastIndex"); +late final _sel_indexGreaterThanIndex_ = + objc.registerName("indexGreaterThanIndex:"); +final _objc_msgSend_118 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_indexLessThanIndex_ = objc.registerName("indexLessThanIndex:"); +late final _sel_indexGreaterThanOrEqualToIndex_ = + objc.registerName("indexGreaterThanOrEqualToIndex:"); +late final _sel_indexLessThanOrEqualToIndex_ = + objc.registerName("indexLessThanOrEqualToIndex:"); +late final _sel_getIndexes_maxCount_inIndexRange_ = + objc.registerName("getIndexes:maxCount:inIndexRange:"); +final _objc_msgSend_119 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_NSRange>)>(); +late final _sel_countOfIndexesInRange_ = + objc.registerName("countOfIndexesInRange:"); +final _objc_msgSend_120 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_containsIndex_ = objc.registerName("containsIndex:"); +final _objc_msgSend_121 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_containsIndexesInRange_ = + objc.registerName("containsIndexesInRange:"); +final _objc_msgSend_122 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_containsIndexes_ = objc.registerName("containsIndexes:"); +late final _sel_intersectsIndexesInRange_ = + objc.registerName("intersectsIndexesInRange:"); +void _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_fnPtrTrampoline( + ffi.Pointer block, + int arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() + .asFunction)>()(arg0, arg1); +void _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureTrampoline( + ffi.Pointer block, + int arg0, + ffi.Pointer arg1) => + (objc.getBlockClosure(block) as void Function(int, ffi.Pointer))( + arg0, arg1); + +class ObjCBlock_ffiVoid_ffiUnsignedLong_bool extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_ffiUnsignedLong_bool._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_ffiUnsignedLong_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_ffiUnsignedLong_bool._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_ffiUnsignedLong_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.UnsignedLong arg0, ffi.Pointer arg1)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.UnsignedLong, ffi.Pointer)>( + _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_ffiUnsignedLong_bool.fromFunction( + void Function(int, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.UnsignedLong, ffi.Pointer)>( + _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureTrampoline) + .cast(), + (int arg0, ffi.Pointer arg1) => fn(arg0, arg1))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_ffiUnsignedLong_bool.listener( + void Function(int, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.UnsignedLong, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (int arg0, ffi.Pointer arg1) => fn(arg0, arg1))); + static ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, ffi.UnsignedLong, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(int arg0, ffi.Pointer arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer, int, + ffi.Pointer)>()(pointer, arg0, arg1); +} + +late final _sel_enumerateIndexesUsingBlock_ = + objc.registerName("enumerateIndexesUsingBlock:"); +final _objc_msgSend_123 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSEnumerationOptions { + static const int NSEnumerationConcurrent = 1; + static const int NSEnumerationReverse = 2; +} + +late final _sel_enumerateIndexesWithOptions_usingBlock_ = + objc.registerName("enumerateIndexesWithOptions:usingBlock:"); +final _objc_msgSend_124 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_enumerateIndexesInRange_options_usingBlock_ = + objc.registerName("enumerateIndexesInRange:options:usingBlock:"); +final _objc_msgSend_125 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + int, + ffi.Pointer)>(); +bool _ObjCBlock_bool_ffiUnsignedLong_bool_fnPtrTrampoline( + ffi.Pointer block, + int arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() + .asFunction)>()(arg0, arg1); +bool _ObjCBlock_bool_ffiUnsignedLong_bool_closureTrampoline( + ffi.Pointer block, + int arg0, + ffi.Pointer arg1) => + (objc.getBlockClosure(block) as bool Function(int, ffi.Pointer))( + arg0, arg1); + +class ObjCBlock_bool_ffiUnsignedLong_bool extends objc.ObjCBlockBase { + ObjCBlock_bool_ffiUnsignedLong_bool._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_bool_ffiUnsignedLong_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_bool_ffiUnsignedLong_bool._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_ffiUnsignedLong_bool.fromFunctionPointer( + ffi.Pointer< + ffi + .NativeFunction< + ffi.Bool Function( + ffi.UnsignedLong arg0, ffi.Pointer arg1)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function(ffi.Pointer, + ffi.UnsignedLong, ffi.Pointer)>( + _ObjCBlock_bool_ffiUnsignedLong_bool_fnPtrTrampoline, false) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_ffiUnsignedLong_bool.fromFunction( + bool Function(int, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function(ffi.Pointer, + ffi.UnsignedLong, ffi.Pointer)>( + _ObjCBlock_bool_ffiUnsignedLong_bool_closureTrampoline, + false) + .cast(), + (int arg0, ffi.Pointer arg1) => fn(arg0, arg1))); + static ffi.Pointer? _dartFuncTrampoline; + + bool call(int arg0, ffi.Pointer arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer block, + ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() + .asFunction< + bool Function(ffi.Pointer, int, + ffi.Pointer)>()(pointer, arg0, arg1); +} + +late final _sel_indexPassingTest_ = objc.registerName("indexPassingTest:"); +final _objc_msgSend_126 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_indexWithOptions_passingTest_ = + objc.registerName("indexWithOptions:passingTest:"); +final _objc_msgSend_127 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_indexInRange_options_passingTest_ = + objc.registerName("indexInRange:options:passingTest:"); +final _objc_msgSend_128 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + int, + ffi.Pointer)>(); +late final _sel_indexesPassingTest_ = objc.registerName("indexesPassingTest:"); +final _objc_msgSend_129 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_indexesWithOptions_passingTest_ = + objc.registerName("indexesWithOptions:passingTest:"); +final _objc_msgSend_130 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_indexesInRange_options_passingTest_ = + objc.registerName("indexesInRange:options:passingTest:"); +final _objc_msgSend_131 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + int, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSRange_bool_fnPtrTrampoline( + ffi.Pointer block, + _NSRange arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(_NSRange arg0, ffi.Pointer arg1)>>() + .asFunction< + void Function(_NSRange, ffi.Pointer)>()(arg0, arg1); +void _ObjCBlock_ffiVoid_NSRange_bool_closureTrampoline( + ffi.Pointer block, + _NSRange arg0, + ffi.Pointer arg1) => + (objc.getBlockClosure(block) as void Function( + _NSRange, ffi.Pointer))(arg0, arg1); + +class ObjCBlock_ffiVoid_NSRange_bool extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSRange_bool._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSRange_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSRange_bool._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSRange_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(_NSRange arg0, ffi.Pointer arg1)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, _NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSRange_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSRange_bool.fromFunction( + void Function(_NSRange, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, _NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSRange_bool_closureTrampoline) + .cast(), + (_NSRange arg0, ffi.Pointer arg1) => fn(arg0, arg1))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSRange_bool.listener( + void Function(_NSRange, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, _NSRange, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSRange_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (_NSRange arg0, ffi.Pointer arg1) => fn(arg0, arg1))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, _NSRange, ffi.Pointer)>? + _dartFuncListenerTrampoline; + + void call(_NSRange arg0, ffi.Pointer arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + _NSRange arg0, ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer, _NSRange, + ffi.Pointer)>()(pointer, arg0, arg1); +} + +late final _sel_enumerateRangesUsingBlock_ = + objc.registerName("enumerateRangesUsingBlock:"); +final _objc_msgSend_132 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_enumerateRangesWithOptions_usingBlock_ = + objc.registerName("enumerateRangesWithOptions:usingBlock:"); +final _objc_msgSend_133 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_enumerateRangesInRange_options_usingBlock_ = + objc.registerName("enumerateRangesInRange:options:usingBlock:"); +final _objc_msgSend_134 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + int, + ffi.Pointer)>(); +late final _sel_objectsAtIndexes_ = objc.registerName("objectsAtIndexes:"); +final _objc_msgSend_135 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_objectAtIndexedSubscript_ = + objc.registerName("objectAtIndexedSubscript:"); +void _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer, int, + ffi.Pointer)>()(arg0, arg1, arg2); +void _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + (objc.getBlockClosure(block) as void Function(ffi.Pointer, + int, ffi.Pointer))(arg0, arg1, arg2); + +class ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool + extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool.fromFunction( + void Function(NSObject, int, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureTrampoline) + .cast(), + (ffi.Pointer arg0, int arg1, ffi.Pointer arg2) => + fn(NSObject.castFromPointer(arg0, retain: true, release: true), + arg1, arg2))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool.listener( + void Function(NSObject, int, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_objcObjCObject_ffiUnsignedLong_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (ffi.Pointer arg0, int arg1, + ffi.Pointer arg2) => + fn(NSObject.castFromPointer(arg0, retain: true, release: true), + arg1, arg2))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(NSObject arg0, int arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>()(pointer, arg0.pointer, arg1, arg2); +} + +late final _sel_enumerateObjectsUsingBlock_ = + objc.registerName("enumerateObjectsUsingBlock:"); +final _objc_msgSend_136 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_enumerateObjectsWithOptions_usingBlock_ = + objc.registerName("enumerateObjectsWithOptions:usingBlock:"); +final _objc_msgSend_137 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_enumerateObjectsAtIndexes_options_usingBlock_ = + objc.registerName("enumerateObjectsAtIndexes:options:usingBlock:"); +final _objc_msgSend_138 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +bool _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>>() + .asFunction< + bool Function(ffi.Pointer, int, + ffi.Pointer)>()(arg0, arg1, arg2); +bool _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) => + (objc.getBlockClosure(block) as bool Function(ffi.Pointer, + int, ffi.Pointer))(arg0, arg1, arg2); + +class ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool + extends objc.ObjCBlockBase { + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline, + false) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool.fromFunction( + bool Function(NSObject, int, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_ffiUnsignedLong_bool_closureTrampoline, + false) + .cast(), + (ffi.Pointer arg0, int arg1, + ffi.Pointer arg2) => + fn(NSObject.castFromPointer(arg0, retain: true, release: true), arg1, arg2))); + static ffi.Pointer? _dartFuncTrampoline; + + bool call(NSObject arg0, int arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1, + ffi.Pointer arg2)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>()(pointer, arg0.pointer, arg1, arg2); +} + +late final _sel_indexOfObjectPassingTest_ = + objc.registerName("indexOfObjectPassingTest:"); +final _objc_msgSend_139 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_indexOfObjectWithOptions_passingTest_ = + objc.registerName("indexOfObjectWithOptions:passingTest:"); +final _objc_msgSend_140 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_indexOfObjectAtIndexes_options_passingTest_ = + objc.registerName("indexOfObjectAtIndexes:options:passingTest:"); +final _objc_msgSend_141 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_indexesOfObjectsPassingTest_ = + objc.registerName("indexesOfObjectsPassingTest:"); +final _objc_msgSend_142 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_indexesOfObjectsWithOptions_passingTest_ = + objc.registerName("indexesOfObjectsWithOptions:passingTest:"); +final _objc_msgSend_143 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_indexesOfObjectsAtIndexes_options_passingTest_ = + objc.registerName("indexesOfObjectsAtIndexes:options:passingTest:"); +final _objc_msgSend_144 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +int _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +int _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + (objc.getBlockClosure(block) as int Function(ffi.Pointer, + ffi.Pointer))(arg0, arg1); + +class ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject + extends objc.ObjCBlockBase { + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject + castFromPointer(ffi.Pointer pointer, + {bool retain = false, bool release = false}) { + return ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_fnPtrTrampoline, + 0) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject.fromFunction( + int Function(NSObject, NSObject) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject_closureTrampoline, 0) + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + NSObject.castFromPointer(arg0, retain: true, release: true), + NSObject.castFromPointer(arg1, retain: true, release: true)))); + static ffi.Pointer? _dartFuncTrampoline; + + int call(NSObject arg0, NSObject arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0.pointer, arg1.pointer); +} + +late final _sel_sortedArrayUsingComparator_ = + objc.registerName("sortedArrayUsingComparator:"); +final _objc_msgSend_145 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSSortOptions { + static const int NSSortConcurrent = 1; + static const int NSSortStable = 16; +} + +late final _sel_sortedArrayWithOptions_usingComparator_ = + objc.registerName("sortedArrayWithOptions:usingComparator:"); +final _objc_msgSend_146 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); + +abstract class NSBinarySearchingOptions { + static const int NSBinarySearchingFirstEqual = 256; + static const int NSBinarySearchingLastEqual = 512; + static const int NSBinarySearchingInsertionIndex = 1024; +} + +late final _sel_indexOfObject_inSortedRange_options_usingComparator_ = + objc.registerName("indexOfObject:inSortedRange:options:usingComparator:"); +final _objc_msgSend_147 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + int, + ffi.Pointer)>(); +late final _sel_array = objc.registerName("array"); +late final _sel_arrayWithObject_ = objc.registerName("arrayWithObject:"); +final _objc_msgSend_148 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_arrayWithObjects_count_ = + objc.registerName("arrayWithObjects:count:"); +late final _sel_arrayWithObjects_ = objc.registerName("arrayWithObjects:"); +late final _sel_arrayWithArray_ = objc.registerName("arrayWithArray:"); +final _objc_msgSend_149 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithObjects_ = objc.registerName("initWithObjects:"); +late final _sel_initWithArray_ = objc.registerName("initWithArray:"); +late final _sel_initWithArray_copyItems_ = + objc.registerName("initWithArray:copyItems:"); +final _objc_msgSend_150 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_initWithContentsOfURL_error_ = + objc.registerName("initWithContentsOfURL:error:"); +final _objc_msgSend_151 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_arrayWithContentsOfURL_error_ = + objc.registerName("arrayWithContentsOfURL:error:"); + +abstract class NSOrderedCollectionDifferenceCalculationOptions { + static const int NSOrderedCollectionDifferenceCalculationOmitInsertedObjects = + 1; + static const int NSOrderedCollectionDifferenceCalculationOmitRemovedObjects = + 2; + static const int NSOrderedCollectionDifferenceCalculationInferMoves = 4; +} + +bool _ObjCBlock_bool_objcObjCObject_objcObjCObject_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +bool _ObjCBlock_bool_objcObjCObject_objcObjCObject_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + (objc.getBlockClosure(block) as bool Function(ffi.Pointer, + ffi.Pointer))(arg0, arg1); + +class ObjCBlock_bool_objcObjCObject_objcObjCObject extends objc.ObjCBlockBase { + ObjCBlock_bool_objcObjCObject_objcObjCObject._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_bool_objcObjCObject_objcObjCObject castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_bool_objcObjCObject_objcObjCObject._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_objcObjCObject.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_objcObjCObject_fnPtrTrampoline, + false) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_objcObjCObject.fromFunction( + bool Function(NSObject, NSObject) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_objcObjCObject_closureTrampoline, false) + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + NSObject.castFromPointer(arg0, retain: true, release: true), + NSObject.castFromPointer(arg1, retain: true, release: true)))); + static ffi.Pointer? _dartFuncTrampoline; + + bool call(NSObject arg0, NSObject arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0.pointer, arg1.pointer); +} + +late final _sel_differenceFromArray_withOptions_usingEquivalenceTest_ = + objc.registerName("differenceFromArray:withOptions:usingEquivalenceTest:"); +final _objc_msgSend_152 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_differenceFromArray_withOptions_ = + objc.registerName("differenceFromArray:withOptions:"); +final _objc_msgSend_153 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_differenceFromArray_ = + objc.registerName("differenceFromArray:"); +late final _sel_arrayByApplyingDifference_ = + objc.registerName("arrayByApplyingDifference:"); +final _objc_msgSend_154 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_getObjects_ = objc.registerName("getObjects:"); +final _objc_msgSend_155 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_arrayWithContentsOfFile_ = + objc.registerName("arrayWithContentsOfFile:"); +final _objc_msgSend_156 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_arrayWithContentsOfURL_ = + objc.registerName("arrayWithContentsOfURL:"); +final _objc_msgSend_157 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithContentsOfFile_ = + objc.registerName("initWithContentsOfFile:"); +late final _sel_initWithContentsOfURL_ = + objc.registerName("initWithContentsOfURL:"); +late final _sel_writeToURL_atomically_ = + objc.registerName("writeToURL:atomically:"); +final _objc_msgSend_158 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_resourceValuesForKeys_error_ = + objc.registerName("resourceValuesForKeys:error:"); +final _objc_msgSend_159 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_setResourceValue_forKey_error_ = + objc.registerName("setResourceValue:forKey:error:"); +final _objc_msgSend_160 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_setResourceValues_error_ = + objc.registerName("setResourceValues:error:"); +final _objc_msgSend_161 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_removeCachedResourceValueForKey_ = + objc.registerName("removeCachedResourceValueForKey:"); +final _objc_msgSend_162 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_removeAllCachedResourceValues = + objc.registerName("removeAllCachedResourceValues"); +late final _sel_setTemporaryResourceValue_forKey_ = + objc.registerName("setTemporaryResourceValue:forKey:"); +final _objc_msgSend_163 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +abstract class NSURLBookmarkCreationOptions { + static const int NSURLBookmarkCreationPreferFileIDResolution = 256; + static const int NSURLBookmarkCreationMinimalBookmark = 512; + static const int NSURLBookmarkCreationSuitableForBookmarkFile = 1024; + static const int NSURLBookmarkCreationWithSecurityScope = 2048; + static const int NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess = 4096; + static const int NSURLBookmarkCreationWithoutImplicitSecurityScope = + 536870912; +} + +late final _sel_bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_ = + objc.registerName( + "bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:"); +final _objc_msgSend_164 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + +abstract class NSURLBookmarkResolutionOptions { + static const int NSURLBookmarkResolutionWithoutUI = 256; + static const int NSURLBookmarkResolutionWithoutMounting = 512; + static const int NSURLBookmarkResolutionWithSecurityScope = 1024; + static const int NSURLBookmarkResolutionWithoutImplicitStartAccessing = 32768; +} + +late final _sel_initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_ = + objc.registerName( + "initByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:"); +final _objc_msgSend_165 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_ = + objc.registerName( + "URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:"); +late final _sel_resourceValuesForKeys_fromBookmarkData_ = + objc.registerName("resourceValuesForKeys:fromBookmarkData:"); +final _objc_msgSend_166 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_writeBookmarkData_toURL_options_error_ = + objc.registerName("writeBookmarkData:toURL:options:error:"); +final _objc_msgSend_167 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_bookmarkDataWithContentsOfURL_error_ = + objc.registerName("bookmarkDataWithContentsOfURL:error:"); +final _objc_msgSend_168 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_URLByResolvingAliasFileAtURL_options_error_ = + objc.registerName("URLByResolvingAliasFileAtURL:options:error:"); +final _objc_msgSend_169 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_startAccessingSecurityScopedResource = + objc.registerName("startAccessingSecurityScopedResource"); +late final _sel_stopAccessingSecurityScopedResource = + objc.registerName("stopAccessingSecurityScopedResource"); +late final _sel_getPromisedItemResourceValue_forKey_error_ = + objc.registerName("getPromisedItemResourceValue:forKey:error:"); + +class NSDictionary extends NSObject { + NSDictionary._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSDictionary] that points to the same underlying object as [other]. + NSDictionary.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSDictionary] that wraps the given raw object pointer. + NSDictionary.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSDictionary]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSDictionary); + } + + int get count { + return _objc_msgSend_12(this.pointer, _sel_count); + } + + NSObject? objectForKey_(NSObject aKey) { + final _ret = + _objc_msgSend_170(this.pointer, _sel_objectForKey_, aKey.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSEnumerator keyEnumerator() { + final _ret = _objc_msgSend_108(this.pointer, _sel_keyEnumerator); + return NSEnumerator.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSDictionary init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + NSDictionary initWithObjects_forKeys_count_( + ffi.Pointer> objects, + ffi.Pointer> keys, + int cnt) { + final _ret = _objc_msgSend_171( + this.pointer, _sel_initWithObjects_forKeys_count_, objects, keys, cnt); + return NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + NSDictionary? initWithCoder_(NSCoder coder) { + final _ret = + _objc_msgSend_14(this.pointer, _sel_initWithCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + NSArray get allKeys { + final _ret = _objc_msgSend_172(this.pointer, _sel_allKeys); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray allKeysForObject_(NSObject anObject) { + final _ret = _objc_msgSend_99( + this.pointer, _sel_allKeysForObject_, anObject.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray get allValues { + final _ret = _objc_msgSend_172(this.pointer, _sel_allValues); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSString get description { + final _ret = _objc_msgSend_32(this.pointer, _sel_description); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString get descriptionInStringsFileFormat { + final _ret = + _objc_msgSend_32(this.pointer, _sel_descriptionInStringsFileFormat); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString descriptionWithLocale_(NSObject? locale) { + final _ret = _objc_msgSend_93(this.pointer, _sel_descriptionWithLocale_, + locale?.pointer ?? ffi.nullptr); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString descriptionWithLocale_indent_(NSObject? locale, int level) { + final _ret = _objc_msgSend_102( + this.pointer, + _sel_descriptionWithLocale_indent_, + locale?.pointer ?? ffi.nullptr, + level); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + bool isEqualToDictionary_(NSDictionary otherDictionary) { + return _objc_msgSend_173( + this.pointer, _sel_isEqualToDictionary_, otherDictionary.pointer); + } + + NSEnumerator objectEnumerator() { + final _ret = _objc_msgSend_108(this.pointer, _sel_objectEnumerator); + return NSEnumerator.castFromPointer(_ret, retain: true, release: true); + } + + NSArray objectsForKeys_notFoundMarker_(NSArray keys, NSObject marker) { + final _ret = _objc_msgSend_174(this.pointer, + _sel_objectsForKeys_notFoundMarker_, keys.pointer, marker.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + bool writeToURL_error_( + NSURL url, ffi.Pointer> error) { + return _objc_msgSend_113( + this.pointer, _sel_writeToURL_error_, url.pointer, error); + } + + NSArray keysSortedByValueUsingSelector_( + ffi.Pointer comparator) { + final _ret = _objc_msgSend_111( + this.pointer, _sel_keysSortedByValueUsingSelector_, comparator); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + void getObjects_andKeys_count_( + ffi.Pointer> objects, + ffi.Pointer> keys, + int count) { + _objc_msgSend_175( + this.pointer, _sel_getObjects_andKeys_count_, objects, keys, count); + } + + NSObject? objectForKeyedSubscript_(NSObject key) { + final _ret = _objc_msgSend_170( + this.pointer, _sel_objectForKeyedSubscript_, key.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + void enumerateKeysAndObjectsUsingBlock_( + ObjCBlock_ffiVoid_objcObjCObject_objcObjCObject_bool block) { + _objc_msgSend_176( + this.pointer, _sel_enumerateKeysAndObjectsUsingBlock_, block.pointer); + } + + void enumerateKeysAndObjectsWithOptions_usingBlock_( + int opts, ObjCBlock_ffiVoid_objcObjCObject_objcObjCObject_bool block) { + _objc_msgSend_177( + this.pointer, + _sel_enumerateKeysAndObjectsWithOptions_usingBlock_, + opts, + block.pointer); + } + + NSArray keysSortedByValueUsingComparator_( + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + final _ret = _objc_msgSend_145( + this.pointer, _sel_keysSortedByValueUsingComparator_, cmptr.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray keysSortedByValueWithOptions_usingComparator_(int opts, + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + final _ret = _objc_msgSend_146( + this.pointer, + _sel_keysSortedByValueWithOptions_usingComparator_, + opts, + cmptr.pointer); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSObject keysOfEntriesPassingTest_( + ObjCBlock_bool_objcObjCObject_objcObjCObject_bool predicate) { + final _ret = _objc_msgSend_178( + this.pointer, _sel_keysOfEntriesPassingTest_, predicate.pointer); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSObject keysOfEntriesWithOptions_passingTest_( + int opts, ObjCBlock_bool_objcObjCObject_objcObjCObject_bool predicate) { + final _ret = _objc_msgSend_179(this.pointer, + _sel_keysOfEntriesWithOptions_passingTest_, opts, predicate.pointer); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + void getObjects_andKeys_(ffi.Pointer> objects, + ffi.Pointer> keys) { + _objc_msgSend_180(this.pointer, _sel_getObjects_andKeys_, objects, keys); + } + + static NSDictionary? dictionaryWithContentsOfFile_(NSString path) { + final _ret = _objc_msgSend_181( + _class_NSDictionary, _sel_dictionaryWithContentsOfFile_, path.pointer); + return _ret.address == 0 + ? null + : NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + static NSDictionary? dictionaryWithContentsOfURL_(NSURL url) { + final _ret = _objc_msgSend_182( + _class_NSDictionary, _sel_dictionaryWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + NSDictionary? initWithContentsOfFile_(NSString path) { + final _ret = _objc_msgSend_181( + this.pointer, _sel_initWithContentsOfFile_, path.pointer); + return _ret.address == 0 + ? null + : NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + NSDictionary? initWithContentsOfURL_(NSURL url) { + final _ret = _objc_msgSend_182( + this.pointer, _sel_initWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + bool writeToFile_atomically_(NSString path, bool useAuxiliaryFile) { + return _objc_msgSend_37(this.pointer, _sel_writeToFile_atomically_, + path.pointer, useAuxiliaryFile); + } + + bool writeToURL_atomically_(NSURL url, bool atomically) { + return _objc_msgSend_158( + this.pointer, _sel_writeToURL_atomically_, url.pointer, atomically); + } + + static NSDictionary dictionary() { + final _ret = _objc_msgSend_2(_class_NSDictionary, _sel_dictionary); + return NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + static NSDictionary dictionaryWithObject_forKey_( + NSObject object, NSObject key) { + final _ret = _objc_msgSend_183(_class_NSDictionary, + _sel_dictionaryWithObject_forKey_, object.pointer, key.pointer); + return NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + static NSDictionary dictionaryWithObjects_forKeys_count_( + ffi.Pointer> objects, + ffi.Pointer> keys, + int cnt) { + final _ret = _objc_msgSend_171(_class_NSDictionary, + _sel_dictionaryWithObjects_forKeys_count_, objects, keys, cnt); + return NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + static NSDictionary dictionaryWithObjectsAndKeys_(NSObject firstObject) { + final _ret = _objc_msgSend_148(_class_NSDictionary, + _sel_dictionaryWithObjectsAndKeys_, firstObject.pointer); + return NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + static NSDictionary dictionaryWithDictionary_(NSDictionary dict) { + final _ret = _objc_msgSend_184( + _class_NSDictionary, _sel_dictionaryWithDictionary_, dict.pointer); + return NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + static NSDictionary dictionaryWithObjects_forKeys_( + NSArray objects, NSArray keys) { + final _ret = _objc_msgSend_185(_class_NSDictionary, + _sel_dictionaryWithObjects_forKeys_, objects.pointer, keys.pointer); + return NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + NSDictionary initWithObjectsAndKeys_(NSObject firstObject) { + final _ret = _objc_msgSend_148( + this.pointer, _sel_initWithObjectsAndKeys_, firstObject.pointer); + return NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + NSDictionary initWithDictionary_(NSDictionary otherDictionary) { + final _ret = _objc_msgSend_184( + this.pointer, _sel_initWithDictionary_, otherDictionary.pointer); + return NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + NSDictionary initWithDictionary_copyItems_( + NSDictionary otherDictionary, bool flag) { + final _ret = _objc_msgSend_186(this.pointer, + _sel_initWithDictionary_copyItems_, otherDictionary.pointer, flag); + return NSDictionary.castFromPointer(_ret, retain: false, release: true); + } + + NSDictionary initWithObjects_forKeys_(NSArray objects, NSArray keys) { + final _ret = _objc_msgSend_185(this.pointer, _sel_initWithObjects_forKeys_, + objects.pointer, keys.pointer); + return NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + NSDictionary? initWithContentsOfURL_error_( + NSURL url, ffi.Pointer> error) { + final _ret = _objc_msgSend_187( + this.pointer, _sel_initWithContentsOfURL_error_, url.pointer, error); + return _ret.address == 0 + ? null + : NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + static NSDictionary? dictionaryWithContentsOfURL_error_( + NSURL url, ffi.Pointer> error) { + final _ret = _objc_msgSend_187(_class_NSDictionary, + _sel_dictionaryWithContentsOfURL_error_, url.pointer, error); + return _ret.address == 0 + ? null + : NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + static NSObject sharedKeySetForKeys_(NSArray keys) { + final _ret = _objc_msgSend_149( + _class_NSDictionary, _sel_sharedKeySetForKeys_, keys.pointer); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + int countByEnumeratingWithState_objects_count_( + ffi.Pointer state, + ffi.Pointer> buffer, + int len) { + return _objc_msgSend_188(this.pointer, + _sel_countByEnumeratingWithState_objects_count_, state, buffer, len); + } + + static NSDictionary new1() { + final _ret = _objc_msgSend_2(_class_NSDictionary, _sel_new); + return NSDictionary.castFromPointer(_ret, retain: false, release: true); + } + + static NSDictionary allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_3(_class_NSDictionary, _sel_allocWithZone_, zone); + return NSDictionary.castFromPointer(_ret, retain: false, release: true); + } + + static NSDictionary alloc() { + final _ret = _objc_msgSend_2(_class_NSDictionary, _sel_alloc); + return NSDictionary.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSDictionary = objc.getClass("NSDictionary"); +late final _sel_objectForKey_ = objc.registerName("objectForKey:"); +final _objc_msgSend_170 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_keyEnumerator = objc.registerName("keyEnumerator"); +late final _sel_initWithObjects_forKeys_count_ = + objc.registerName("initWithObjects:forKeys:count:"); +final _objc_msgSend_171 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>, + ffi.UnsignedLong)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>, + int)>(); +late final _sel_allKeys = objc.registerName("allKeys"); +final _objc_msgSend_172 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_allKeysForObject_ = objc.registerName("allKeysForObject:"); +late final _sel_allValues = objc.registerName("allValues"); +late final _sel_descriptionInStringsFileFormat = + objc.registerName("descriptionInStringsFileFormat"); +late final _sel_isEqualToDictionary_ = + objc.registerName("isEqualToDictionary:"); +final _objc_msgSend_173 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_objectsForKeys_notFoundMarker_ = + objc.registerName("objectsForKeys:notFoundMarker:"); +final _objc_msgSend_174 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_keysSortedByValueUsingSelector_ = + objc.registerName("keysSortedByValueUsingSelector:"); +late final _sel_getObjects_andKeys_count_ = + objc.registerName("getObjects:andKeys:count:"); +final _objc_msgSend_175 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>, + int)>(); +late final _sel_objectForKeyedSubscript_ = + objc.registerName("objectForKeyedSubscript:"); +void _ObjCBlock_ffiVoid_objcObjCObject_objcObjCObject_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()(arg0, arg1, arg2); +void _ObjCBlock_ffiVoid_objcObjCObject_objcObjCObject_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + (objc.getBlockClosure(block) as void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer))(arg0, arg1, arg2); + +class ObjCBlock_ffiVoid_objcObjCObject_objcObjCObject_bool + extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_objcObjCObject_objcObjCObject_bool._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_objcObjCObject_objcObjCObject_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_objcObjCObject_objcObjCObject_bool._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_objcObjCObject_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_objcObjCObject_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_objcObjCObject_bool.fromFunction( + void Function(NSObject, NSObject, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_objcObjCObject_bool_closureTrampoline) + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2) => + fn( + NSObject.castFromPointer(arg0, retain: true, release: true), + NSObject.castFromPointer(arg1, retain: true, release: true), + arg2))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_objcObjCObject_objcObjCObject_bool.listener( + void Function(NSObject, NSObject, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_objcObjCObject_objcObjCObject_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2) => + fn( + NSObject.castFromPointer(arg0, retain: true, release: true), + NSObject.castFromPointer(arg1, retain: true, release: true), + arg2))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(NSObject arg0, NSObject arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0.pointer, arg1.pointer, arg2); +} + +late final _sel_enumerateKeysAndObjectsUsingBlock_ = + objc.registerName("enumerateKeysAndObjectsUsingBlock:"); +final _objc_msgSend_176 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_enumerateKeysAndObjectsWithOptions_usingBlock_ = + objc.registerName("enumerateKeysAndObjectsWithOptions:usingBlock:"); +final _objc_msgSend_177 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_keysSortedByValueUsingComparator_ = + objc.registerName("keysSortedByValueUsingComparator:"); +late final _sel_keysSortedByValueWithOptions_usingComparator_ = + objc.registerName("keysSortedByValueWithOptions:usingComparator:"); +bool _ObjCBlock_bool_objcObjCObject_objcObjCObject_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()(arg0, arg1, arg2); +bool _ObjCBlock_bool_objcObjCObject_objcObjCObject_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + (objc.getBlockClosure(block) as bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer))(arg0, arg1, arg2); + +class ObjCBlock_bool_objcObjCObject_objcObjCObject_bool + extends objc.ObjCBlockBase { + ObjCBlock_bool_objcObjCObject_objcObjCObject_bool._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_bool_objcObjCObject_objcObjCObject_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_bool_objcObjCObject_objcObjCObject_bool._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_objcObjCObject_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_objcObjCObject_bool_fnPtrTrampoline, + false) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_objcObjCObject_bool.fromFunction( + bool Function(NSObject, NSObject, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_objcObjCObject_bool_closureTrampoline, false) + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2) => fn( + NSObject.castFromPointer(arg0, retain: true, release: true), + NSObject.castFromPointer(arg1, retain: true, release: true), + arg2))); + static ffi.Pointer? _dartFuncTrampoline; + + bool call(NSObject arg0, NSObject arg1, ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0.pointer, arg1.pointer, arg2); +} + +late final _sel_keysOfEntriesPassingTest_ = + objc.registerName("keysOfEntriesPassingTest:"); +final _objc_msgSend_178 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_keysOfEntriesWithOptions_passingTest_ = + objc.registerName("keysOfEntriesWithOptions:passingTest:"); +final _objc_msgSend_179 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_getObjects_andKeys_ = objc.registerName("getObjects:andKeys:"); +final _objc_msgSend_180 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); +late final _sel_dictionaryWithContentsOfFile_ = + objc.registerName("dictionaryWithContentsOfFile:"); +final _objc_msgSend_181 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dictionaryWithContentsOfURL_ = + objc.registerName("dictionaryWithContentsOfURL:"); +final _objc_msgSend_182 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dictionary = objc.registerName("dictionary"); +late final _sel_dictionaryWithObject_forKey_ = + objc.registerName("dictionaryWithObject:forKey:"); +final _objc_msgSend_183 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_dictionaryWithObjects_forKeys_count_ = + objc.registerName("dictionaryWithObjects:forKeys:count:"); +late final _sel_dictionaryWithObjectsAndKeys_ = + objc.registerName("dictionaryWithObjectsAndKeys:"); +late final _sel_dictionaryWithDictionary_ = + objc.registerName("dictionaryWithDictionary:"); +final _objc_msgSend_184 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dictionaryWithObjects_forKeys_ = + objc.registerName("dictionaryWithObjects:forKeys:"); +final _objc_msgSend_185 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithObjectsAndKeys_ = + objc.registerName("initWithObjectsAndKeys:"); +late final _sel_initWithDictionary_ = objc.registerName("initWithDictionary:"); +late final _sel_initWithDictionary_copyItems_ = + objc.registerName("initWithDictionary:copyItems:"); +final _objc_msgSend_186 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_initWithObjects_forKeys_ = + objc.registerName("initWithObjects:forKeys:"); +final _objc_msgSend_187 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_dictionaryWithContentsOfURL_error_ = + objc.registerName("dictionaryWithContentsOfURL:error:"); +late final _sel_sharedKeySetForKeys_ = + objc.registerName("sharedKeySetForKeys:"); + +final class NSFastEnumerationState extends ffi.Struct { + @ffi.UnsignedLong() + external int state; + + external ffi.Pointer> itemsPtr; + + external ffi.Pointer mutationsPtr; + + @ffi.Array.multi([5]) + external ffi.Array extra; +} + +late final _sel_countByEnumeratingWithState_objects_count_ = + objc.registerName("countByEnumeratingWithState:objects:count:"); +final _objc_msgSend_188 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.UnsignedLong)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + int)>(); +late final _sel_promisedItemResourceValuesForKeys_error_ = + objc.registerName("promisedItemResourceValuesForKeys:error:"); +final _objc_msgSend_189 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_checkPromisedItemIsReachableAndReturnError_ = + objc.registerName("checkPromisedItemIsReachableAndReturnError:"); +final _objc_msgSend_190 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_fileURLWithPathComponents_ = + objc.registerName("fileURLWithPathComponents:"); +final _objc_msgSend_191 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_pathComponents = objc.registerName("pathComponents"); +final _objc_msgSend_192 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_lastPathComponent = objc.registerName("lastPathComponent"); +late final _sel_pathExtension = objc.registerName("pathExtension"); +late final _sel_URLByAppendingPathComponent_ = + objc.registerName("URLByAppendingPathComponent:"); +final _objc_msgSend_193 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_URLByAppendingPathComponent_isDirectory_ = + objc.registerName("URLByAppendingPathComponent:isDirectory:"); +final _objc_msgSend_194 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_URLByDeletingLastPathComponent = + objc.registerName("URLByDeletingLastPathComponent"); +late final _sel_URLByAppendingPathExtension_ = + objc.registerName("URLByAppendingPathExtension:"); +late final _sel_URLByDeletingPathExtension = + objc.registerName("URLByDeletingPathExtension"); +late final _sel_checkResourceIsReachableAndReturnError_ = + objc.registerName("checkResourceIsReachableAndReturnError:"); +late final _sel_URLByStandardizingPath = + objc.registerName("URLByStandardizingPath"); +late final _sel_URLByResolvingSymlinksInPath = + objc.registerName("URLByResolvingSymlinksInPath"); +late final _sel_resourceDataUsingCache_ = + objc.registerName("resourceDataUsingCache:"); +final _objc_msgSend_195 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, bool)>(); +late final _sel_loadResourceDataNotifyingClient_usingCache_ = + objc.registerName("loadResourceDataNotifyingClient:usingCache:"); +final _objc_msgSend_196 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_propertyForKey_ = objc.registerName("propertyForKey:"); +late final _sel_setResourceData_ = objc.registerName("setResourceData:"); +late final _sel_setProperty_forKey_ = objc.registerName("setProperty:forKey:"); +final _objc_msgSend_197 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSURLHandle extends NSObject { + NSURLHandle._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSURLHandle] that points to the same underlying object as [other]. + NSURLHandle.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSURLHandle] that wraps the given raw object pointer. + NSURLHandle.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSURLHandle]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSURLHandle); + } + + static void registerURLHandleClass_(NSObject anURLHandleSubclass) { + _objc_msgSend_198(_class_NSURLHandle, _sel_registerURLHandleClass_, + anURLHandleSubclass.pointer); + } + + static NSObject URLHandleClassForURL_(NSURL anURL) { + final _ret = _objc_msgSend_199( + _class_NSURLHandle, _sel_URLHandleClassForURL_, anURL.pointer); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + int status() { + return _objc_msgSend_200(this.pointer, _sel_status); + } + + NSString failureReason() { + final _ret = _objc_msgSend_32(this.pointer, _sel_failureReason); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + void addClient_(NSObject client) { + _objc_msgSend_198(this.pointer, _sel_addClient_, client.pointer); + } + + void removeClient_(NSObject client) { + _objc_msgSend_198(this.pointer, _sel_removeClient_, client.pointer); + } + + void loadInBackground() { + _objc_msgSend_1(this.pointer, _sel_loadInBackground); + } + + void cancelLoadInBackground() { + _objc_msgSend_1(this.pointer, _sel_cancelLoadInBackground); + } + + NSData resourceData() { + final _ret = _objc_msgSend_54(this.pointer, _sel_resourceData); + return NSData.castFromPointer(_ret, retain: true, release: true); + } + + NSData availableResourceData() { + final _ret = _objc_msgSend_54(this.pointer, _sel_availableResourceData); + return NSData.castFromPointer(_ret, retain: true, release: true); + } + + int expectedResourceDataSize() { + return _objc_msgSend_87(this.pointer, _sel_expectedResourceDataSize); + } + + void flushCachedData() { + _objc_msgSend_1(this.pointer, _sel_flushCachedData); + } + + void backgroundLoadDidFailWithReason_(NSString reason) { + _objc_msgSend_162( + this.pointer, _sel_backgroundLoadDidFailWithReason_, reason.pointer); + } + + void didLoadBytes_loadComplete_(NSData newBytes, bool yorn) { + _objc_msgSend_201( + this.pointer, _sel_didLoadBytes_loadComplete_, newBytes.pointer, yorn); + } + + static bool canInitWithURL_(NSURL anURL) { + return _objc_msgSend_202( + _class_NSURLHandle, _sel_canInitWithURL_, anURL.pointer); + } + + static NSURLHandle cachedHandleForURL_(NSURL anURL) { + final _ret = _objc_msgSend_203( + _class_NSURLHandle, _sel_cachedHandleForURL_, anURL.pointer); + return NSURLHandle.castFromPointer(_ret, retain: true, release: true); + } + + NSObject initWithURL_cached_(NSURL anURL, bool willCache) { + final _ret = _objc_msgSend_204( + this.pointer, _sel_initWithURL_cached_, anURL.pointer, willCache); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSObject propertyForKey_(NSString propertyKey) { + final _ret = _objc_msgSend_42( + this.pointer, _sel_propertyForKey_, propertyKey.pointer); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSObject propertyForKeyIfAvailable_(NSString propertyKey) { + final _ret = _objc_msgSend_42( + this.pointer, _sel_propertyForKeyIfAvailable_, propertyKey.pointer); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + bool writeProperty_forKey_(NSObject propertyValue, NSString propertyKey) { + return _objc_msgSend_197(this.pointer, _sel_writeProperty_forKey_, + propertyValue.pointer, propertyKey.pointer); + } + + bool writeData_(NSData data) { + return _objc_msgSend_35(this.pointer, _sel_writeData_, data.pointer); + } + + NSData loadInForeground() { + final _ret = _objc_msgSend_54(this.pointer, _sel_loadInForeground); + return NSData.castFromPointer(_ret, retain: true, release: true); + } + + void beginLoadInBackground() { + _objc_msgSend_1(this.pointer, _sel_beginLoadInBackground); + } + + void endLoadInBackground() { + _objc_msgSend_1(this.pointer, _sel_endLoadInBackground); + } + + @override + NSURLHandle init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSURLHandle.castFromPointer(_ret, retain: true, release: true); + } + + static NSURLHandle new1() { + final _ret = _objc_msgSend_2(_class_NSURLHandle, _sel_new); + return NSURLHandle.castFromPointer(_ret, retain: false, release: true); + } + + static NSURLHandle allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_3(_class_NSURLHandle, _sel_allocWithZone_, zone); + return NSURLHandle.castFromPointer(_ret, retain: false, release: true); + } + + static NSURLHandle alloc() { + final _ret = _objc_msgSend_2(_class_NSURLHandle, _sel_alloc); + return NSURLHandle.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSURLHandle = objc.getClass("NSURLHandle"); +late final _sel_registerURLHandleClass_ = + objc.registerName("registerURLHandleClass:"); +final _objc_msgSend_198 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_URLHandleClassForURL_ = + objc.registerName("URLHandleClassForURL:"); +final _objc_msgSend_199 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +abstract class NSURLHandleStatus { + static const int NSURLHandleNotLoaded = 0; + static const int NSURLHandleLoadSucceeded = 1; + static const int NSURLHandleLoadInProgress = 2; + static const int NSURLHandleLoadFailed = 3; +} + +late final _sel_status = objc.registerName("status"); +final _objc_msgSend_200 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_failureReason = objc.registerName("failureReason"); +late final _sel_addClient_ = objc.registerName("addClient:"); +late final _sel_removeClient_ = objc.registerName("removeClient:"); +late final _sel_loadInBackground = objc.registerName("loadInBackground"); +late final _sel_cancelLoadInBackground = + objc.registerName("cancelLoadInBackground"); +late final _sel_resourceData = objc.registerName("resourceData"); +late final _sel_availableResourceData = + objc.registerName("availableResourceData"); +late final _sel_expectedResourceDataSize = + objc.registerName("expectedResourceDataSize"); +late final _sel_flushCachedData = objc.registerName("flushCachedData"); +late final _sel_backgroundLoadDidFailWithReason_ = + objc.registerName("backgroundLoadDidFailWithReason:"); +late final _sel_didLoadBytes_loadComplete_ = + objc.registerName("didLoadBytes:loadComplete:"); +final _objc_msgSend_201 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_canInitWithURL_ = objc.registerName("canInitWithURL:"); +final _objc_msgSend_202 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_cachedHandleForURL_ = objc.registerName("cachedHandleForURL:"); +final _objc_msgSend_203 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithURL_cached_ = objc.registerName("initWithURL:cached:"); +final _objc_msgSend_204 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_propertyForKeyIfAvailable_ = + objc.registerName("propertyForKeyIfAvailable:"); +late final _sel_writeProperty_forKey_ = + objc.registerName("writeProperty:forKey:"); +late final _sel_writeData_ = objc.registerName("writeData:"); +late final _sel_loadInForeground = objc.registerName("loadInForeground"); +late final _sel_beginLoadInBackground = + objc.registerName("beginLoadInBackground"); +late final _sel_endLoadInBackground = objc.registerName("endLoadInBackground"); +late final _sel_URLHandleUsingCache_ = + objc.registerName("URLHandleUsingCache:"); +final _objc_msgSend_205 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, bool)>(); + +abstract class NSDataWritingOptions { + static const int NSDataWritingAtomic = 1; + static const int NSDataWritingWithoutOverwriting = 2; + static const int NSDataWritingFileProtectionNone = 268435456; + static const int NSDataWritingFileProtectionComplete = 536870912; + static const int NSDataWritingFileProtectionCompleteUnlessOpen = 805306368; + static const int + NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication = + 1073741824; + static const int NSDataWritingFileProtectionCompleteWhenUserInactive = + 1342177280; + static const int NSDataWritingFileProtectionMask = 4026531840; + static const int NSAtomicWrite = 1; +} + +late final _sel_writeToFile_options_error_ = + objc.registerName("writeToFile:options:error:"); +final _objc_msgSend_206 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_writeToURL_options_error_ = + objc.registerName("writeToURL:options:error:"); +final _objc_msgSend_207 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + +abstract class NSDataSearchOptions { + static const int NSDataSearchBackwards = 1; + static const int NSDataSearchAnchored = 2; +} + +late final _sel_rangeOfData_options_range_ = + objc.registerName("rangeOfData:options:range:"); +final _objc_msgSend_208 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +final _objc_msgSend_208Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +void _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer, _NSRange, + ffi.Pointer)>()(arg0, arg1, arg2); +void _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) => + (objc.getBlockClosure(block) as void Function(ffi.Pointer, + _NSRange, ffi.Pointer))(arg0, arg1, arg2); + +class ObjCBlock_ffiVoid_ffiVoid_NSRange_bool extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_ffiVoid_NSRange_bool._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_ffiVoid_NSRange_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_ffiVoid_NSRange_bool._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_ffiVoid_NSRange_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_ffiVoid_NSRange_bool.fromFunction( + void Function(ffi.Pointer, _NSRange, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureTrampoline) + .cast(), + (ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2) => + fn(arg0, arg1, arg2))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_ffiVoid_NSRange_bool.listener( + void Function(ffi.Pointer, _NSRange, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2) => + fn(arg0, arg1, arg2))); + static ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + _NSRange, ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>()(pointer, arg0, arg1, arg2); +} + +late final _sel_enumerateByteRangesUsingBlock_ = + objc.registerName("enumerateByteRangesUsingBlock:"); +final _objc_msgSend_209 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_data = objc.registerName("data"); +late final _sel_dataWithBytes_length_ = + objc.registerName("dataWithBytes:length:"); +final _objc_msgSend_210 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); +late final _sel_dataWithBytesNoCopy_length_ = + objc.registerName("dataWithBytesNoCopy:length:"); +late final _sel_dataWithBytesNoCopy_length_freeWhenDone_ = + objc.registerName("dataWithBytesNoCopy:length:freeWhenDone:"); +final _objc_msgSend_211 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + bool)>(); + +abstract class NSDataReadingOptions { + static const int NSDataReadingMappedIfSafe = 1; + static const int NSDataReadingUncached = 2; + static const int NSDataReadingMappedAlways = 8; + static const int NSDataReadingMapped = 1; + static const int NSMappedRead = 1; + static const int NSUncachedRead = 2; +} + +late final _sel_dataWithContentsOfFile_options_error_ = + objc.registerName("dataWithContentsOfFile:options:error:"); +final _objc_msgSend_212 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_dataWithContentsOfURL_options_error_ = + objc.registerName("dataWithContentsOfURL:options:error:"); +final _objc_msgSend_213 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_dataWithContentsOfFile_ = + objc.registerName("dataWithContentsOfFile:"); +late final _sel_dataWithContentsOfURL_ = + objc.registerName("dataWithContentsOfURL:"); +final _objc_msgSend_214 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithBytes_length_ = + objc.registerName("initWithBytes:length:"); +late final _sel_initWithBytesNoCopy_length_ = + objc.registerName("initWithBytesNoCopy:length:"); +late final _sel_initWithBytesNoCopy_length_freeWhenDone_ = + objc.registerName("initWithBytesNoCopy:length:freeWhenDone:"); +void _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, ffi.UnsignedLong arg1)>>() + .asFunction, int)>()(arg0, arg1); +void _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1) => + (objc.getBlockClosure(block) as void Function(ffi.Pointer, int))( + arg0, arg1); + +class ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, ffi.UnsignedLong arg1)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>( + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong.fromFunction( + void Function(ffi.Pointer, int) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>( + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureTrampoline) + .cast(), + (ffi.Pointer arg0, int arg1) => fn(arg0, arg1))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong.listener( + void Function(ffi.Pointer, int) fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>.listener( + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (ffi.Pointer arg0, int arg1) => fn(arg0, arg1))); + static ffi.NativeCallable< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedLong)>? _dartFuncListenerTrampoline; + + void call(ffi.Pointer arg0, int arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer block, + ffi.Pointer arg0, ffi.UnsignedLong arg1)>>() + .asFunction< + void Function(ffi.Pointer, ffi.Pointer, + int)>()(pointer, arg0, arg1); +} + +late final _sel_initWithBytesNoCopy_length_deallocator_ = + objc.registerName("initWithBytesNoCopy:length:deallocator:"); +final _objc_msgSend_215 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_initWithContentsOfFile_options_error_ = + objc.registerName("initWithContentsOfFile:options:error:"); +late final _sel_initWithContentsOfURL_options_error_ = + objc.registerName("initWithContentsOfURL:options:error:"); +late final _sel_initWithData_ = objc.registerName("initWithData:"); +final _objc_msgSend_216 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dataWithData_ = objc.registerName("dataWithData:"); + +abstract class NSDataBase64DecodingOptions { + static const int NSDataBase64DecodingIgnoreUnknownCharacters = 1; +} + +late final _sel_initWithBase64EncodedString_options_ = + objc.registerName("initWithBase64EncodedString:options:"); +final _objc_msgSend_217 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); + +abstract class NSDataBase64EncodingOptions { + static const int NSDataBase64Encoding64CharacterLineLength = 1; + static const int NSDataBase64Encoding76CharacterLineLength = 2; + static const int NSDataBase64EncodingEndLineWithCarriageReturn = 16; + static const int NSDataBase64EncodingEndLineWithLineFeed = 32; +} + +late final _sel_base64EncodedStringWithOptions_ = + objc.registerName("base64EncodedStringWithOptions:"); +final _objc_msgSend_218 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_initWithBase64EncodedData_options_ = + objc.registerName("initWithBase64EncodedData:options:"); +final _objc_msgSend_219 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_base64EncodedDataWithOptions_ = + objc.registerName("base64EncodedDataWithOptions:"); +final _objc_msgSend_220 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); + +abstract class NSDataCompressionAlgorithm { + static const int NSDataCompressionAlgorithmLZFSE = 0; + static const int NSDataCompressionAlgorithmLZ4 = 1; + static const int NSDataCompressionAlgorithmLZMA = 2; + static const int NSDataCompressionAlgorithmZlib = 3; +} + +late final _sel_decompressedDataUsingAlgorithm_error_ = + objc.registerName("decompressedDataUsingAlgorithm:error:"); +final _objc_msgSend_221 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_compressedDataUsingAlgorithm_error_ = + objc.registerName("compressedDataUsingAlgorithm:error:"); +late final _sel_getBytes_ = objc.registerName("getBytes:"); +late final _sel_dataWithContentsOfMappedFile_ = + objc.registerName("dataWithContentsOfMappedFile:"); +late final _sel_initWithContentsOfMappedFile_ = + objc.registerName("initWithContentsOfMappedFile:"); +late final _sel_initWithBase64Encoding_ = + objc.registerName("initWithBase64Encoding:"); +late final _sel_base64Encoding = objc.registerName("base64Encoding"); +late final _sel_characterSetWithBitmapRepresentation_ = + objc.registerName("characterSetWithBitmapRepresentation:"); +final _objc_msgSend_222 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_characterSetWithContentsOfFile_ = + objc.registerName("characterSetWithContentsOfFile:"); +final _objc_msgSend_223 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_224 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_characterIsMember_ = objc.registerName("characterIsMember:"); +final _objc_msgSend_225 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedShort)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_bitmapRepresentation = + objc.registerName("bitmapRepresentation"); +late final _sel_invertedSet = objc.registerName("invertedSet"); +late final _sel_longCharacterIsMember_ = + objc.registerName("longCharacterIsMember:"); +final _objc_msgSend_226 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_isSupersetOfSet_ = objc.registerName("isSupersetOfSet:"); +final _objc_msgSend_227 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_hasMemberInPlane_ = objc.registerName("hasMemberInPlane:"); +final _objc_msgSend_228 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, + ffi.Pointer, ffi.Uint8)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_URLUserAllowedCharacterSet = + objc.registerName("URLUserAllowedCharacterSet"); +late final _sel_URLPasswordAllowedCharacterSet = + objc.registerName("URLPasswordAllowedCharacterSet"); +late final _sel_URLHostAllowedCharacterSet = + objc.registerName("URLHostAllowedCharacterSet"); +late final _sel_URLPathAllowedCharacterSet = + objc.registerName("URLPathAllowedCharacterSet"); +late final _sel_URLQueryAllowedCharacterSet = + objc.registerName("URLQueryAllowedCharacterSet"); +late final _sel_URLFragmentAllowedCharacterSet = + objc.registerName("URLFragmentAllowedCharacterSet"); +late final _sel_rangeOfCharacterFromSet_ = + objc.registerName("rangeOfCharacterFromSet:"); +final _objc_msgSend_229 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_229Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_rangeOfCharacterFromSet_options_ = + objc.registerName("rangeOfCharacterFromSet:options:"); +final _objc_msgSend_230 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +final _objc_msgSend_230Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_rangeOfCharacterFromSet_options_range_ = + objc.registerName("rangeOfCharacterFromSet:options:range:"); +final _objc_msgSend_231 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + _NSRange Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +final _objc_msgSend_231Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +late final _sel_rangeOfComposedCharacterSequenceAtIndex_ = + objc.registerName("rangeOfComposedCharacterSequenceAtIndex:"); +final _objc_msgSend_232 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, int)>(); +final _objc_msgSend_232Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_rangeOfComposedCharacterSequencesForRange_ = + objc.registerName("rangeOfComposedCharacterSequencesForRange:"); +final _objc_msgSend_233 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + _NSRange Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +final _objc_msgSend_233Stret = objc.msgSendStretPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_stringByAppendingString_ = + objc.registerName("stringByAppendingString:"); +late final _sel_stringByAppendingFormat_ = + objc.registerName("stringByAppendingFormat:"); +late final _sel_uppercaseString = objc.registerName("uppercaseString"); +late final _sel_lowercaseString = objc.registerName("lowercaseString"); +late final _sel_capitalizedString = objc.registerName("capitalizedString"); +late final _sel_localizedUppercaseString = + objc.registerName("localizedUppercaseString"); +late final _sel_localizedLowercaseString = + objc.registerName("localizedLowercaseString"); +late final _sel_localizedCapitalizedString = + objc.registerName("localizedCapitalizedString"); +late final _sel_uppercaseStringWithLocale_ = + objc.registerName("uppercaseStringWithLocale:"); +final _objc_msgSend_234 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_lowercaseStringWithLocale_ = + objc.registerName("lowercaseStringWithLocale:"); +late final _sel_capitalizedStringWithLocale_ = + objc.registerName("capitalizedStringWithLocale:"); +late final _sel_getLineStart_end_contentsEnd_forRange_ = + objc.registerName("getLineStart:end:contentsEnd:forRange:"); +final _objc_msgSend_235 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>(); +late final _sel_lineRangeForRange_ = objc.registerName("lineRangeForRange:"); +late final _sel_getParagraphStart_end_contentsEnd_forRange_ = + objc.registerName("getParagraphStart:end:contentsEnd:forRange:"); +late final _sel_paragraphRangeForRange_ = + objc.registerName("paragraphRangeForRange:"); + +abstract class NSStringEnumerationOptions { + static const int NSStringEnumerationByLines = 0; + static const int NSStringEnumerationByParagraphs = 1; + static const int NSStringEnumerationByComposedCharacterSequences = 2; + static const int NSStringEnumerationByWords = 3; + static const int NSStringEnumerationBySentences = 4; + static const int NSStringEnumerationByCaretPositions = 5; + static const int NSStringEnumerationByDeletionClusters = 6; + static const int NSStringEnumerationReverse = 256; + static const int NSStringEnumerationSubstringNotRequired = 512; + static const int NSStringEnumerationLocalized = 1024; +} + +void _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + _NSRange arg2, + ffi.Pointer arg3) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + _NSRange arg1, + _NSRange arg2, + ffi.Pointer arg3)>>() + .asFunction< + void Function(ffi.Pointer, _NSRange, _NSRange, + ffi.Pointer)>()(arg0, arg1, arg2, arg3); +void _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + _NSRange arg2, + ffi.Pointer arg3) => + (objc.getBlockClosure(block) as void Function(ffi.Pointer, + _NSRange, _NSRange, ffi.Pointer))(arg0, arg1, arg2, arg3); + +class ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool + extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + _NSRange arg1, + _NSRange arg2, + ffi.Pointer arg3)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + _NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool.fromFunction( + void Function(NSString?, _NSRange, _NSRange, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + _NSRange, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureTrampoline) + .cast(), + (ffi.Pointer arg0, _NSRange arg1, _NSRange arg2, + ffi.Pointer arg3) => + fn(arg0.address == 0 ? null : NSString.castFromPointer(arg0, retain: true, release: true), arg1, arg2, arg3))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool.listener( + void Function(NSString?, _NSRange, _NSRange, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + _NSRange, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (ffi.Pointer arg0, _NSRange arg1, _NSRange arg2, + ffi.Pointer arg3) => + fn(arg0.address == 0 ? null : NSString.castFromPointer(arg0, retain: true, release: true), arg1, arg2, arg3))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + _NSRange, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(NSString? arg0, _NSRange arg1, _NSRange arg2, + ffi.Pointer arg3) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + _NSRange arg1, + _NSRange arg2, + ffi.Pointer arg3)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + _NSRange, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1, arg2, arg3); +} + +late final _sel_enumerateSubstringsInRange_options_usingBlock_ = + objc.registerName("enumerateSubstringsInRange:options:usingBlock:"); +final _objc_msgSend_236 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + int, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSString_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +void _ObjCBlock_ffiVoid_NSString_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + (objc.getBlockClosure(block) as void Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); + +class ObjCBlock_ffiVoid_NSString_bool extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSString_bool._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSString_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSString_bool._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSString_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + objc + .newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSString_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSString_bool.fromFunction( + void Function(NSString, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSString_bool_closureTrampoline) + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1) => + fn(NSString.castFromPointer(arg0, retain: true, release: true), + arg1))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSString_bool.listener( + void Function(NSString, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSString_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1) => + fn(NSString.castFromPointer(arg0, retain: true, release: true), + arg1))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(NSString arg0, ffi.Pointer arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()(pointer, arg0.pointer, arg1); +} + +late final _sel_enumerateLinesUsingBlock_ = + objc.registerName("enumerateLinesUsingBlock:"); +final _objc_msgSend_237 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_UTF8String = objc.registerName("UTF8String"); +late final _sel_fastestEncoding = objc.registerName("fastestEncoding"); +late final _sel_smallestEncoding = objc.registerName("smallestEncoding"); +late final _sel_dataUsingEncoding_allowLossyConversion_ = + objc.registerName("dataUsingEncoding:allowLossyConversion:"); +final _objc_msgSend_238 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong, ffi.Bool)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, bool)>(); +late final _sel_dataUsingEncoding_ = objc.registerName("dataUsingEncoding:"); +final _objc_msgSend_239 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_canBeConvertedToEncoding_ = + objc.registerName("canBeConvertedToEncoding:"); +late final _sel_cStringUsingEncoding_ = + objc.registerName("cStringUsingEncoding:"); +final _objc_msgSend_240 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_getCString_maxLength_encoding_ = + objc.registerName("getCString:maxLength:encoding:"); +final _objc_msgSend_241 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, int)>(); + +abstract class NSStringEncodingConversionOptions { + static const int NSStringEncodingConversionAllowLossy = 1; + static const int NSStringEncodingConversionExternalRepresentation = 2; +} + +late final _sel_getBytes_maxLength_usedLength_encoding_options_range_remainingRange_ = + objc.registerName( + "getBytes:maxLength:usedLength:encoding:options:range:remainingRange:"); +final _objc_msgSend_242 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Int32, + _NSRange, + ffi.Pointer<_NSRange>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + int, + int, + _NSRange, + ffi.Pointer<_NSRange>)>(); +late final _sel_maximumLengthOfBytesUsingEncoding_ = + objc.registerName("maximumLengthOfBytesUsingEncoding:"); +late final _sel_lengthOfBytesUsingEncoding_ = + objc.registerName("lengthOfBytesUsingEncoding:"); +late final _sel_availableStringEncodings = + objc.registerName("availableStringEncodings"); +final _objc_msgSend_243 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_localizedNameOfStringEncoding_ = + objc.registerName("localizedNameOfStringEncoding:"); +late final _sel_defaultCStringEncoding = + objc.registerName("defaultCStringEncoding"); +late final _sel_decomposedStringWithCanonicalMapping = + objc.registerName("decomposedStringWithCanonicalMapping"); +late final _sel_precomposedStringWithCanonicalMapping = + objc.registerName("precomposedStringWithCanonicalMapping"); +late final _sel_decomposedStringWithCompatibilityMapping = + objc.registerName("decomposedStringWithCompatibilityMapping"); +late final _sel_precomposedStringWithCompatibilityMapping = + objc.registerName("precomposedStringWithCompatibilityMapping"); +late final _sel_componentsSeparatedByString_ = + objc.registerName("componentsSeparatedByString:"); +final _objc_msgSend_244 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_componentsSeparatedByCharactersInSet_ = + objc.registerName("componentsSeparatedByCharactersInSet:"); +final _objc_msgSend_245 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_stringByTrimmingCharactersInSet_ = + objc.registerName("stringByTrimmingCharactersInSet:"); +final _objc_msgSend_246 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_stringByPaddingToLength_withString_startingAtIndex_ = + objc.registerName("stringByPaddingToLength:withString:startingAtIndex:"); +final _objc_msgSend_247 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + int)>(); +late final _sel_stringByFoldingWithOptions_locale_ = + objc.registerName("stringByFoldingWithOptions:locale:"); +final _objc_msgSend_248 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_stringByReplacingOccurrencesOfString_withString_options_range_ = + objc.registerName( + "stringByReplacingOccurrencesOfString:withString:options:range:"); +final _objc_msgSend_249 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +late final _sel_stringByReplacingOccurrencesOfString_withString_ = + objc.registerName("stringByReplacingOccurrencesOfString:withString:"); +final _objc_msgSend_250 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_stringByReplacingCharactersInRange_withString_ = + objc.registerName("stringByReplacingCharactersInRange:withString:"); +final _objc_msgSend_251 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_stringByApplyingTransform_reverse_ = + objc.registerName("stringByApplyingTransform:reverse:"); +final _objc_msgSend_252 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); +late final _sel_writeToURL_atomically_encoding_error_ = + objc.registerName("writeToURL:atomically:encoding:error:"); +final _objc_msgSend_253 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.UnsignedLong, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + int, + ffi.Pointer>)>(); +late final _sel_writeToFile_atomically_encoding_error_ = + objc.registerName("writeToFile:atomically:encoding:error:"); +final _objc_msgSend_254 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.UnsignedLong, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + int, + ffi.Pointer>)>(); +late final _sel_initWithCharactersNoCopy_length_freeWhenDone_ = + objc.registerName("initWithCharactersNoCopy:length:freeWhenDone:"); +final _objc_msgSend_255 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + bool)>(); +void _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1)>>() + .asFunction, int)>()( + arg0, arg1); +void _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + int arg1) => + (objc.getBlockClosure(block) as void Function( + ffi.Pointer, int))(arg0, arg1); + +class ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong + extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong.fromFunctionPointer( + ffi + .Pointer< + ffi + .NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>( + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong.fromFunction( + void Function(ffi.Pointer, int) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>( + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureTrampoline) + .cast(), + (ffi.Pointer arg0, int arg1) => fn(arg0, arg1))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong.listener( + void Function(ffi.Pointer, int) fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>.listener( + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (ffi.Pointer arg0, int arg1) => fn(arg0, arg1))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>? _dartFuncListenerTrampoline; + + void call(ffi.Pointer arg0, int arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>()(pointer, arg0, arg1); +} + +late final _sel_initWithCharactersNoCopy_length_deallocator_ = + objc.registerName("initWithCharactersNoCopy:length:deallocator:"); +final _objc_msgSend_256 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_initWithCharacters_length_ = + objc.registerName("initWithCharacters:length:"); +final _objc_msgSend_257 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_initWithUTF8String_ = objc.registerName("initWithUTF8String:"); +final _objc_msgSend_258 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithFormat_ = objc.registerName("initWithFormat:"); + +final class __va_list_tag extends ffi.Struct { + @ffi.UnsignedInt() + external int gp_offset; + + @ffi.UnsignedInt() + external int fp_offset; + + external ffi.Pointer overflow_arg_area; + + external ffi.Pointer reg_save_area; +} + +late final _sel_initWithFormat_arguments_ = + objc.registerName("initWithFormat:arguments:"); +final _objc_msgSend_259 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>(); +late final _sel_initWithFormat_locale_ = + objc.registerName("initWithFormat:locale:"); +final _objc_msgSend_260 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithFormat_locale_arguments_ = + objc.registerName("initWithFormat:locale:arguments:"); +final _objc_msgSend_261 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>(); +late final _sel_initWithValidatedFormat_validFormatSpecifiers_error_ = + objc.registerName("initWithValidatedFormat:validFormatSpecifiers:error:"); +final _objc_msgSend_262 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_ = + objc.registerName( + "initWithValidatedFormat:validFormatSpecifiers:locale:error:"); +final _objc_msgSend_263 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_ = + objc.registerName( + "initWithValidatedFormat:validFormatSpecifiers:arguments:error:"); +final _objc_msgSend_264 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>, + ffi.Pointer>)>(); +late final _sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_ = + objc.registerName( + "initWithValidatedFormat:validFormatSpecifiers:locale:arguments:error:"); +final _objc_msgSend_265 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>, + ffi.Pointer>)>(); +late final _sel_initWithData_encoding_ = + objc.registerName("initWithData:encoding:"); +final _objc_msgSend_266 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_initWithBytes_length_encoding_ = + objc.registerName("initWithBytes:length:encoding:"); +final _objc_msgSend_267 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, int)>(); +late final _sel_initWithBytesNoCopy_length_encoding_freeWhenDone_ = + objc.registerName("initWithBytesNoCopy:length:encoding:freeWhenDone:"); +final _objc_msgSend_268 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + int, + bool)>(); +late final _sel_initWithBytesNoCopy_length_encoding_deallocator_ = + objc.registerName("initWithBytesNoCopy:length:encoding:deallocator:"); +final _objc_msgSend_269 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer)>(); +late final _sel_string = objc.registerName("string"); +late final _sel_stringWithString_ = objc.registerName("stringWithString:"); +late final _sel_stringWithCharacters_length_ = + objc.registerName("stringWithCharacters:length:"); +late final _sel_stringWithUTF8String_ = + objc.registerName("stringWithUTF8String:"); +late final _sel_stringWithFormat_ = objc.registerName("stringWithFormat:"); +late final _sel_localizedStringWithFormat_ = + objc.registerName("localizedStringWithFormat:"); +late final _sel_stringWithValidatedFormat_validFormatSpecifiers_error_ = + objc.registerName("stringWithValidatedFormat:validFormatSpecifiers:error:"); +late final _sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_ = + objc.registerName( + "localizedStringWithValidatedFormat:validFormatSpecifiers:error:"); +late final _sel_initWithCString_encoding_ = + objc.registerName("initWithCString:encoding:"); +final _objc_msgSend_270 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); +late final _sel_stringWithCString_encoding_ = + objc.registerName("stringWithCString:encoding:"); +late final _sel_initWithContentsOfURL_encoding_error_ = + objc.registerName("initWithContentsOfURL:encoding:error:"); +final _objc_msgSend_271 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_initWithContentsOfFile_encoding_error_ = + objc.registerName("initWithContentsOfFile:encoding:error:"); +final _objc_msgSend_272 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_stringWithContentsOfURL_encoding_error_ = + objc.registerName("stringWithContentsOfURL:encoding:error:"); +late final _sel_stringWithContentsOfFile_encoding_error_ = + objc.registerName("stringWithContentsOfFile:encoding:error:"); +late final _sel_initWithContentsOfURL_usedEncoding_error_ = + objc.registerName("initWithContentsOfURL:usedEncoding:error:"); +final _objc_msgSend_273 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_initWithContentsOfFile_usedEncoding_error_ = + objc.registerName("initWithContentsOfFile:usedEncoding:error:"); +final _objc_msgSend_274 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); +late final _sel_stringWithContentsOfURL_usedEncoding_error_ = + objc.registerName("stringWithContentsOfURL:usedEncoding:error:"); +late final _sel_stringWithContentsOfFile_usedEncoding_error_ = + objc.registerName("stringWithContentsOfFile:usedEncoding:error:"); +late final _sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_ = + objc.registerName( + "stringEncodingForData:encodingOptions:convertedString:usedLossyConversion:"); +final _objc_msgSend_275 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>(); +late final _sel_propertyList = objc.registerName("propertyList"); +late final _sel_propertyListFromStringsFileFormat = + objc.registerName("propertyListFromStringsFileFormat"); +final _objc_msgSend_276 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_cString = objc.registerName("cString"); +late final _sel_lossyCString = objc.registerName("lossyCString"); +late final _sel_cStringLength = objc.registerName("cStringLength"); +late final _sel_getCString_ = objc.registerName("getCString:"); +final _objc_msgSend_277 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_getCString_maxLength_ = + objc.registerName("getCString:maxLength:"); +final _objc_msgSend_278 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); +late final _sel_getCString_maxLength_range_remainingRange_ = + objc.registerName("getCString:maxLength:range:remainingRange:"); +final _objc_msgSend_279 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + _NSRange, + ffi.Pointer<_NSRange>)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange, + ffi.Pointer<_NSRange>)>(); +late final _sel_stringWithContentsOfFile_ = + objc.registerName("stringWithContentsOfFile:"); +late final _sel_stringWithContentsOfURL_ = + objc.registerName("stringWithContentsOfURL:"); +late final _sel_initWithCStringNoCopy_length_freeWhenDone_ = + objc.registerName("initWithCStringNoCopy:length:freeWhenDone:"); +final _objc_msgSend_280 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Bool)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + bool)>(); +late final _sel_initWithCString_length_ = + objc.registerName("initWithCString:length:"); +late final _sel_initWithCString_ = objc.registerName("initWithCString:"); +late final _sel_stringWithCString_length_ = + objc.registerName("stringWithCString:length:"); +late final _sel_stringWithCString_ = objc.registerName("stringWithCString:"); +late final _sel_getCharacters_ = objc.registerName("getCharacters:"); +final _objc_msgSend_281 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_stringByAddingPercentEncodingWithAllowedCharacters_ = + objc.registerName("stringByAddingPercentEncodingWithAllowedCharacters:"); +final _objc_msgSend_282 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_stringByRemovingPercentEncoding = + objc.registerName("stringByRemovingPercentEncoding"); +late final _sel_stringByAddingPercentEscapesUsingEncoding_ = + objc.registerName("stringByAddingPercentEscapesUsingEncoding:"); +final _objc_msgSend_283 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_stringByReplacingPercentEscapesUsingEncoding_ = + objc.registerName("stringByReplacingPercentEscapesUsingEncoding:"); +late final _sel_debugDescription = objc.registerName("debugDescription"); +late final _sel_version = objc.registerName("version"); +late final _sel_setVersion_ = objc.registerName("setVersion:"); +final _objc_msgSend_284 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_classForCoder = objc.registerName("classForCoder"); +late final _sel_replacementObjectForCoder_ = + objc.registerName("replacementObjectForCoder:"); +late final _sel_awakeAfterUsingCoder_ = + objc.registerName("awakeAfterUsingCoder:"); +late final _sel_poseAsClass_ = objc.registerName("poseAsClass:"); +late final _sel_autoContentAccessingProxy = + objc.registerName("autoContentAccessingProxy"); +late final _sel_URL_resourceDataDidBecomeAvailable_ = + objc.registerName("URL:resourceDataDidBecomeAvailable:"); +final _objc_msgSend_285 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_URLResourceDidFinishLoading_ = + objc.registerName("URLResourceDidFinishLoading:"); +final _objc_msgSend_286 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_URLResourceDidCancelLoading_ = + objc.registerName("URLResourceDidCancelLoading:"); +late final _sel_URL_resourceDidFailLoadingWithReason_ = + objc.registerName("URL:resourceDidFailLoadingWithReason:"); +final _objc_msgSend_287 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSMutableArray extends NSArray { + NSMutableArray._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSMutableArray] that points to the same underlying object as [other]. + NSMutableArray.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSMutableArray] that wraps the given raw object pointer. + NSMutableArray.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSMutableArray]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMutableArray); + } + + void addObject_(NSObject anObject) { + _objc_msgSend_198(this.pointer, _sel_addObject_, anObject.pointer); + } + + void insertObject_atIndex_(NSObject anObject, int index) { + _objc_msgSend_288( + this.pointer, _sel_insertObject_atIndex_, anObject.pointer, index); + } + + void removeLastObject() { + _objc_msgSend_1(this.pointer, _sel_removeLastObject); + } + + void removeObjectAtIndex_(int index) { + _objc_msgSend_289(this.pointer, _sel_removeObjectAtIndex_, index); + } + + void replaceObjectAtIndex_withObject_(int index, NSObject anObject) { + _objc_msgSend_290(this.pointer, _sel_replaceObjectAtIndex_withObject_, + index, anObject.pointer); + } + + @override + NSMutableArray init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + NSMutableArray initWithCapacity_(int numItems) { + final _ret = + _objc_msgSend_97(this.pointer, _sel_initWithCapacity_, numItems); + return NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableArray? initWithCoder_(NSCoder coder) { + final _ret = + _objc_msgSend_14(this.pointer, _sel_initWithCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + void addObjectsFromArray_(NSArray otherArray) { + _objc_msgSend_291( + this.pointer, _sel_addObjectsFromArray_, otherArray.pointer); + } + + void exchangeObjectAtIndex_withObjectAtIndex_(int idx1, int idx2) { + _objc_msgSend_292(this.pointer, + _sel_exchangeObjectAtIndex_withObjectAtIndex_, idx1, idx2); + } + + void removeAllObjects() { + _objc_msgSend_1(this.pointer, _sel_removeAllObjects); + } + + void removeObject_inRange_(NSObject anObject, _NSRange range) { + _objc_msgSend_293( + this.pointer, _sel_removeObject_inRange_, anObject.pointer, range); + } + + void removeObject_(NSObject anObject) { + _objc_msgSend_198(this.pointer, _sel_removeObject_, anObject.pointer); + } + + void removeObjectIdenticalTo_inRange_(NSObject anObject, _NSRange range) { + _objc_msgSend_293(this.pointer, _sel_removeObjectIdenticalTo_inRange_, + anObject.pointer, range); + } + + void removeObjectIdenticalTo_(NSObject anObject) { + _objc_msgSend_198( + this.pointer, _sel_removeObjectIdenticalTo_, anObject.pointer); + } + + void removeObjectsFromIndices_numIndices_( + ffi.Pointer indices, int cnt) { + _objc_msgSend_294( + this.pointer, _sel_removeObjectsFromIndices_numIndices_, indices, cnt); + } + + void removeObjectsInArray_(NSArray otherArray) { + _objc_msgSend_291( + this.pointer, _sel_removeObjectsInArray_, otherArray.pointer); + } + + void removeObjectsInRange_(_NSRange range) { + _objc_msgSend_295(this.pointer, _sel_removeObjectsInRange_, range); + } + + void replaceObjectsInRange_withObjectsFromArray_range_( + _NSRange range, NSArray otherArray, _NSRange otherRange) { + _objc_msgSend_296( + this.pointer, + _sel_replaceObjectsInRange_withObjectsFromArray_range_, + range, + otherArray.pointer, + otherRange); + } + + void replaceObjectsInRange_withObjectsFromArray_( + _NSRange range, NSArray otherArray) { + _objc_msgSend_297( + this.pointer, + _sel_replaceObjectsInRange_withObjectsFromArray_, + range, + otherArray.pointer); + } + + void setArray_(NSArray otherArray) { + _objc_msgSend_291(this.pointer, _sel_setArray_, otherArray.pointer); + } + + void sortUsingFunction_context_( + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>> + compare, + ffi.Pointer context) { + _objc_msgSend_298( + this.pointer, _sel_sortUsingFunction_context_, compare, context); + } + + void sortUsingSelector_(ffi.Pointer comparator) { + _objc_msgSend_7(this.pointer, _sel_sortUsingSelector_, comparator); + } + + void insertObjects_atIndexes_(NSArray objects, NSIndexSet indexes) { + _objc_msgSend_299(this.pointer, _sel_insertObjects_atIndexes_, + objects.pointer, indexes.pointer); + } + + void removeObjectsAtIndexes_(NSIndexSet indexes) { + _objc_msgSend_300( + this.pointer, _sel_removeObjectsAtIndexes_, indexes.pointer); + } + + void replaceObjectsAtIndexes_withObjects_( + NSIndexSet indexes, NSArray objects) { + _objc_msgSend_301(this.pointer, _sel_replaceObjectsAtIndexes_withObjects_, + indexes.pointer, objects.pointer); + } + + void setObject_atIndexedSubscript_(NSObject obj, int idx) { + _objc_msgSend_288( + this.pointer, _sel_setObject_atIndexedSubscript_, obj.pointer, idx); + } + + void sortUsingComparator_( + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + _objc_msgSend_302(this.pointer, _sel_sortUsingComparator_, cmptr.pointer); + } + + void sortWithOptions_usingComparator_(int opts, + ObjCBlock_NSComparisonResult_objcObjCObject_objcObjCObject cmptr) { + _objc_msgSend_303(this.pointer, _sel_sortWithOptions_usingComparator_, opts, + cmptr.pointer); + } + + static NSMutableArray arrayWithCapacity_(int numItems) { + final _ret = _objc_msgSend_97( + _class_NSMutableArray, _sel_arrayWithCapacity_, numItems); + return NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableArray? arrayWithContentsOfFile_(NSString path) { + final _ret = _objc_msgSend_304( + _class_NSMutableArray, _sel_arrayWithContentsOfFile_, path.pointer); + return _ret.address == 0 + ? null + : NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableArray? arrayWithContentsOfURL_(NSURL url) { + final _ret = _objc_msgSend_305( + _class_NSMutableArray, _sel_arrayWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + NSMutableArray? initWithContentsOfFile_(NSString path) { + final _ret = _objc_msgSend_304( + this.pointer, _sel_initWithContentsOfFile_, path.pointer); + return _ret.address == 0 + ? null + : NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + NSMutableArray? initWithContentsOfURL_(NSURL url) { + final _ret = _objc_msgSend_305( + this.pointer, _sel_initWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + void applyDifference_(NSObject difference) { + _objc_msgSend_198(this.pointer, _sel_applyDifference_, difference.pointer); + } + + @override + NSMutableArray initWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_98( + this.pointer, _sel_initWithObjects_count_, objects, cnt); + return NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableArray array() { + final _ret = _objc_msgSend_2(_class_NSMutableArray, _sel_array); + return NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableArray arrayWithObject_(NSObject anObject) { + final _ret = _objc_msgSend_148( + _class_NSMutableArray, _sel_arrayWithObject_, anObject.pointer); + return NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableArray arrayWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_98( + _class_NSMutableArray, _sel_arrayWithObjects_count_, objects, cnt); + return NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableArray arrayWithObjects_(NSObject firstObj) { + final _ret = _objc_msgSend_148( + _class_NSMutableArray, _sel_arrayWithObjects_, firstObj.pointer); + return NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableArray arrayWithArray_(NSArray array) { + final _ret = _objc_msgSend_149( + _class_NSMutableArray, _sel_arrayWithArray_, array.pointer); + return NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableArray initWithObjects_(NSObject firstObj) { + final _ret = _objc_msgSend_148( + this.pointer, _sel_initWithObjects_, firstObj.pointer); + return NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableArray initWithArray_(NSArray array) { + final _ret = + _objc_msgSend_149(this.pointer, _sel_initWithArray_, array.pointer); + return NSMutableArray.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableArray initWithArray_copyItems_(NSArray array, bool flag) { + final _ret = _objc_msgSend_150( + this.pointer, _sel_initWithArray_copyItems_, array.pointer, flag); + return NSMutableArray.castFromPointer(_ret, retain: false, release: true); + } + + static NSArray? arrayWithContentsOfURL_error_( + NSURL url, ffi.Pointer> error) { + final _ret = _objc_msgSend_151(_class_NSMutableArray, + _sel_arrayWithContentsOfURL_error_, url.pointer, error); + return _ret.address == 0 + ? null + : NSArray.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableArray new1() { + final _ret = _objc_msgSend_2(_class_NSMutableArray, _sel_new); + return NSMutableArray.castFromPointer(_ret, retain: false, release: true); + } + + static NSMutableArray allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_3(_class_NSMutableArray, _sel_allocWithZone_, zone); + return NSMutableArray.castFromPointer(_ret, retain: false, release: true); + } + + static NSMutableArray alloc() { + final _ret = _objc_msgSend_2(_class_NSMutableArray, _sel_alloc); + return NSMutableArray.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSMutableArray = objc.getClass("NSMutableArray"); +late final _sel_addObject_ = objc.registerName("addObject:"); +late final _sel_insertObject_atIndex_ = + objc.registerName("insertObject:atIndex:"); +final _objc_msgSend_288 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_removeLastObject = objc.registerName("removeLastObject"); +late final _sel_removeObjectAtIndex_ = + objc.registerName("removeObjectAtIndex:"); +final _objc_msgSend_289 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_replaceObjectAtIndex_withObject_ = + objc.registerName("replaceObjectAtIndex:withObject:"); +final _objc_msgSend_290 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_initWithCapacity_ = objc.registerName("initWithCapacity:"); +late final _sel_addObjectsFromArray_ = + objc.registerName("addObjectsFromArray:"); +final _objc_msgSend_291 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_exchangeObjectAtIndex_withObjectAtIndex_ = + objc.registerName("exchangeObjectAtIndex:withObjectAtIndex:"); +final _objc_msgSend_292 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int, int)>(); +late final _sel_removeAllObjects = objc.registerName("removeAllObjects"); +late final _sel_removeObject_inRange_ = + objc.registerName("removeObject:inRange:"); +final _objc_msgSend_293 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>(); +late final _sel_removeObject_ = objc.registerName("removeObject:"); +late final _sel_removeObjectIdenticalTo_inRange_ = + objc.registerName("removeObjectIdenticalTo:inRange:"); +late final _sel_removeObjectIdenticalTo_ = + objc.registerName("removeObjectIdenticalTo:"); +late final _sel_removeObjectsFromIndices_numIndices_ = + objc.registerName("removeObjectsFromIndices:numIndices:"); +final _objc_msgSend_294 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_removeObjectsInArray_ = + objc.registerName("removeObjectsInArray:"); +late final _sel_removeObjectsInRange_ = + objc.registerName("removeObjectsInRange:"); +final _objc_msgSend_295 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, _NSRange)>(); +late final _sel_replaceObjectsInRange_withObjectsFromArray_range_ = + objc.registerName("replaceObjectsInRange:withObjectsFromArray:range:"); +final _objc_msgSend_296 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + _NSRange)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + _NSRange)>(); +late final _sel_replaceObjectsInRange_withObjectsFromArray_ = + objc.registerName("replaceObjectsInRange:withObjectsFromArray:"); +final _objc_msgSend_297 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_setArray_ = objc.registerName("setArray:"); +late final _sel_sortUsingFunction_context_ = + objc.registerName("sortUsingFunction:context:"); +final _objc_msgSend_298 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>, + ffi.Pointer)>(); +late final _sel_sortUsingSelector_ = objc.registerName("sortUsingSelector:"); +late final _sel_insertObjects_atIndexes_ = + objc.registerName("insertObjects:atIndexes:"); +final _objc_msgSend_299 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_removeObjectsAtIndexes_ = + objc.registerName("removeObjectsAtIndexes:"); +final _objc_msgSend_300 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_replaceObjectsAtIndexes_withObjects_ = + objc.registerName("replaceObjectsAtIndexes:withObjects:"); +final _objc_msgSend_301 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_setObject_atIndexedSubscript_ = + objc.registerName("setObject:atIndexedSubscript:"); +late final _sel_sortUsingComparator_ = + objc.registerName("sortUsingComparator:"); +final _objc_msgSend_302 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_sortWithOptions_usingComparator_ = + objc.registerName("sortWithOptions:usingComparator:"); +final _objc_msgSend_303 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_arrayWithCapacity_ = objc.registerName("arrayWithCapacity:"); +final _objc_msgSend_304 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_305 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_applyDifference_ = objc.registerName("applyDifference:"); + +class NSMutableData extends NSData { + NSMutableData._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSMutableData] that points to the same underlying object as [other]. + NSMutableData.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSMutableData] that wraps the given raw object pointer. + NSMutableData.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSMutableData]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMutableData); + } + + ffi.Pointer get mutableBytes { + return _objc_msgSend_31(this.pointer, _sel_mutableBytes); + } + + @override + int get length { + return _objc_msgSend_12(this.pointer, _sel_length); + } + + set length(int value) { + return _objc_msgSend_306(this.pointer, _sel_setLength_, value); + } + + void appendBytes_length_(ffi.Pointer bytes, int length) { + _objc_msgSend_33(this.pointer, _sel_appendBytes_length_, bytes, length); + } + + void appendData_(NSData other) { + _objc_msgSend_307(this.pointer, _sel_appendData_, other.pointer); + } + + void increaseLengthBy_(int extraLength) { + _objc_msgSend_289(this.pointer, _sel_increaseLengthBy_, extraLength); + } + + void replaceBytesInRange_withBytes_( + _NSRange range, ffi.Pointer bytes) { + _objc_msgSend_308( + this.pointer, _sel_replaceBytesInRange_withBytes_, range, bytes); + } + + void resetBytesInRange_(_NSRange range) { + _objc_msgSend_295(this.pointer, _sel_resetBytesInRange_, range); + } + + void setData_(NSData data) { + _objc_msgSend_307(this.pointer, _sel_setData_, data.pointer); + } + + void replaceBytesInRange_withBytes_length_(_NSRange range, + ffi.Pointer replacementBytes, int replacementLength) { + _objc_msgSend_309(this.pointer, _sel_replaceBytesInRange_withBytes_length_, + range, replacementBytes, replacementLength); + } + + static NSMutableData? dataWithCapacity_(int aNumItems) { + final _ret = _objc_msgSend_310( + _class_NSMutableData, _sel_dataWithCapacity_, aNumItems); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableData? dataWithLength_(int length) { + final _ret = + _objc_msgSend_310(_class_NSMutableData, _sel_dataWithLength_, length); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + NSMutableData? initWithCapacity_(int capacity) { + final _ret = + _objc_msgSend_310(this.pointer, _sel_initWithCapacity_, capacity); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + NSMutableData? initWithLength_(int length) { + final _ret = _objc_msgSend_310(this.pointer, _sel_initWithLength_, length); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + bool decompressUsingAlgorithm_error_( + int algorithm, ffi.Pointer> error) { + return _objc_msgSend_311( + this.pointer, _sel_decompressUsingAlgorithm_error_, algorithm, error); + } + + bool compressUsingAlgorithm_error_( + int algorithm, ffi.Pointer> error) { + return _objc_msgSend_311( + this.pointer, _sel_compressUsingAlgorithm_error_, algorithm, error); + } + + static NSMutableData data() { + final _ret = _objc_msgSend_2(_class_NSMutableData, _sel_data); + return NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableData dataWithBytes_length_( + ffi.Pointer bytes, int length) { + final _ret = _objc_msgSend_210( + _class_NSMutableData, _sel_dataWithBytes_length_, bytes, length); + return NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableData dataWithBytesNoCopy_length_( + ffi.Pointer bytes, int length) { + final _ret = _objc_msgSend_210( + _class_NSMutableData, _sel_dataWithBytesNoCopy_length_, bytes, length); + return NSMutableData.castFromPointer(_ret, retain: false, release: true); + } + + static NSMutableData dataWithBytesNoCopy_length_freeWhenDone_( + ffi.Pointer bytes, int length, bool b) { + final _ret = _objc_msgSend_211(_class_NSMutableData, + _sel_dataWithBytesNoCopy_length_freeWhenDone_, bytes, length, b); + return NSMutableData.castFromPointer(_ret, retain: false, release: true); + } + + static NSMutableData? dataWithContentsOfFile_options_error_(NSString path, + int readOptionsMask, ffi.Pointer> errorPtr) { + final _ret = _objc_msgSend_212( + _class_NSMutableData, + _sel_dataWithContentsOfFile_options_error_, + path.pointer, + readOptionsMask, + errorPtr); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableData? dataWithContentsOfURL_options_error_(NSURL url, + int readOptionsMask, ffi.Pointer> errorPtr) { + final _ret = _objc_msgSend_213( + _class_NSMutableData, + _sel_dataWithContentsOfURL_options_error_, + url.pointer, + readOptionsMask, + errorPtr); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableData? dataWithContentsOfFile_(NSString path) { + final _ret = _objc_msgSend_49( + _class_NSMutableData, _sel_dataWithContentsOfFile_, path.pointer); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableData? dataWithContentsOfURL_(NSURL url) { + final _ret = _objc_msgSend_214( + _class_NSMutableData, _sel_dataWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableData initWithBytes_length_(ffi.Pointer bytes, int length) { + final _ret = _objc_msgSend_210( + this.pointer, _sel_initWithBytes_length_, bytes, length); + return NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableData initWithBytesNoCopy_length_( + ffi.Pointer bytes, int length) { + final _ret = _objc_msgSend_210( + this.pointer, _sel_initWithBytesNoCopy_length_, bytes, length); + return NSMutableData.castFromPointer(_ret, retain: false, release: true); + } + + @override + NSMutableData initWithBytesNoCopy_length_freeWhenDone_( + ffi.Pointer bytes, int length, bool b) { + final _ret = _objc_msgSend_211(this.pointer, + _sel_initWithBytesNoCopy_length_freeWhenDone_, bytes, length, b); + return NSMutableData.castFromPointer(_ret, retain: false, release: true); + } + + @override + NSMutableData initWithBytesNoCopy_length_deallocator_( + ffi.Pointer bytes, + int length, + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { + final _ret = _objc_msgSend_215( + this.pointer, + _sel_initWithBytesNoCopy_length_deallocator_, + bytes, + length, + deallocator?.pointer ?? ffi.nullptr); + return NSMutableData.castFromPointer(_ret, retain: false, release: true); + } + + @override + NSMutableData? initWithContentsOfFile_options_error_(NSString path, + int readOptionsMask, ffi.Pointer> errorPtr) { + final _ret = _objc_msgSend_212( + this.pointer, + _sel_initWithContentsOfFile_options_error_, + path.pointer, + readOptionsMask, + errorPtr); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableData? initWithContentsOfURL_options_error_(NSURL url, + int readOptionsMask, ffi.Pointer> errorPtr) { + final _ret = _objc_msgSend_213( + this.pointer, + _sel_initWithContentsOfURL_options_error_, + url.pointer, + readOptionsMask, + errorPtr); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableData? initWithContentsOfFile_(NSString path) { + final _ret = _objc_msgSend_49( + this.pointer, _sel_initWithContentsOfFile_, path.pointer); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableData? initWithContentsOfURL_(NSURL url) { + final _ret = _objc_msgSend_214( + this.pointer, _sel_initWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableData initWithData_(NSData data) { + final _ret = + _objc_msgSend_216(this.pointer, _sel_initWithData_, data.pointer); + return NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableData dataWithData_(NSData data) { + final _ret = _objc_msgSend_216( + _class_NSMutableData, _sel_dataWithData_, data.pointer); + return NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableData? initWithBase64EncodedString_options_( + NSString base64String, int options) { + final _ret = _objc_msgSend_217( + this.pointer, + _sel_initWithBase64EncodedString_options_, + base64String.pointer, + options); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableData? initWithBase64EncodedData_options_( + NSData base64Data, int options) { + final _ret = _objc_msgSend_219(this.pointer, + _sel_initWithBase64EncodedData_options_, base64Data.pointer, options); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableData? decompressedDataUsingAlgorithm_error_( + int algorithm, ffi.Pointer> error) { + final _ret = _objc_msgSend_221(this.pointer, + _sel_decompressedDataUsingAlgorithm_error_, algorithm, error); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableData? compressedDataUsingAlgorithm_error_( + int algorithm, ffi.Pointer> error) { + final _ret = _objc_msgSend_221(this.pointer, + _sel_compressedDataUsingAlgorithm_error_, algorithm, error); + return _ret.address == 0 + ? null + : NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + static NSObject? dataWithContentsOfMappedFile_(NSString path) { + final _ret = _objc_msgSend_49( + _class_NSMutableData, _sel_dataWithContentsOfMappedFile_, path.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableData init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSMutableData.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableData new1() { + final _ret = _objc_msgSend_2(_class_NSMutableData, _sel_new); + return NSMutableData.castFromPointer(_ret, retain: false, release: true); + } + + static NSMutableData allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_3(_class_NSMutableData, _sel_allocWithZone_, zone); + return NSMutableData.castFromPointer(_ret, retain: false, release: true); + } + + static NSMutableData alloc() { + final _ret = _objc_msgSend_2(_class_NSMutableData, _sel_alloc); + return NSMutableData.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSMutableData = objc.getClass("NSMutableData"); +late final _sel_mutableBytes = objc.registerName("mutableBytes"); +late final _sel_setLength_ = objc.registerName("setLength:"); +final _objc_msgSend_306 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_appendBytes_length_ = objc.registerName("appendBytes:length:"); +late final _sel_appendData_ = objc.registerName("appendData:"); +final _objc_msgSend_307 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_increaseLengthBy_ = objc.registerName("increaseLengthBy:"); +late final _sel_replaceBytesInRange_withBytes_ = + objc.registerName("replaceBytesInRange:withBytes:"); +final _objc_msgSend_308 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, _NSRange, ffi.Pointer)>(); +late final _sel_resetBytesInRange_ = objc.registerName("resetBytesInRange:"); +late final _sel_setData_ = objc.registerName("setData:"); +late final _sel_replaceBytesInRange_withBytes_length_ = + objc.registerName("replaceBytesInRange:withBytes:length:"); +final _objc_msgSend_309 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + int)>(); +late final _sel_dataWithCapacity_ = objc.registerName("dataWithCapacity:"); +final _objc_msgSend_310 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_dataWithLength_ = objc.registerName("dataWithLength:"); +late final _sel_initWithLength_ = objc.registerName("initWithLength:"); +late final _sel_decompressUsingAlgorithm_error_ = + objc.registerName("decompressUsingAlgorithm:error:"); +final _objc_msgSend_311 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); +late final _sel_compressUsingAlgorithm_error_ = + objc.registerName("compressUsingAlgorithm:error:"); + +class NSNotification extends NSObject { + NSNotification._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSNotification] that points to the same underlying object as [other]. + NSNotification.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSNotification] that wraps the given raw object pointer. + NSNotification.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSNotification]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSNotification); + } + + NSString get name { + final _ret = _objc_msgSend_32(this.pointer, _sel_name); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSObject? get object { + final _ret = _objc_msgSend_61(this.pointer, _sel_object); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSDictionary? get userInfo { + final _ret = _objc_msgSend_276(this.pointer, _sel_userInfo); + return _ret.address == 0 + ? null + : NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + NSNotification initWithName_object_userInfo_( + NSString name, NSObject? object, NSDictionary? userInfo) { + final _ret = _objc_msgSend_312( + this.pointer, + _sel_initWithName_object_userInfo_, + name.pointer, + object?.pointer ?? ffi.nullptr, + userInfo?.pointer ?? ffi.nullptr); + return NSNotification.castFromPointer(_ret, retain: true, release: true); + } + + NSNotification? initWithCoder_(NSCoder coder) { + final _ret = + _objc_msgSend_14(this.pointer, _sel_initWithCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSNotification.castFromPointer(_ret, retain: true, release: true); + } + + static NSNotification notificationWithName_object_( + NSString aName, NSObject? anObject) { + final _ret = _objc_msgSend_260( + _class_NSNotification, + _sel_notificationWithName_object_, + aName.pointer, + anObject?.pointer ?? ffi.nullptr); + return NSNotification.castFromPointer(_ret, retain: true, release: true); + } + + static NSNotification notificationWithName_object_userInfo_( + NSString aName, NSObject? anObject, NSDictionary? aUserInfo) { + final _ret = _objc_msgSend_312( + _class_NSNotification, + _sel_notificationWithName_object_userInfo_, + aName.pointer, + anObject?.pointer ?? ffi.nullptr, + aUserInfo?.pointer ?? ffi.nullptr); + return NSNotification.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSNotification init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSNotification.castFromPointer(_ret, retain: true, release: true); + } + + static NSNotification new1() { + final _ret = _objc_msgSend_2(_class_NSNotification, _sel_new); + return NSNotification.castFromPointer(_ret, retain: false, release: true); + } + + static NSNotification allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_3(_class_NSNotification, _sel_allocWithZone_, zone); + return NSNotification.castFromPointer(_ret, retain: false, release: true); + } + + static NSNotification alloc() { + final _ret = _objc_msgSend_2(_class_NSNotification, _sel_alloc); + return NSNotification.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSNotification = objc.getClass("NSNotification"); +late final _sel_name = objc.registerName("name"); +late final _sel_object = objc.registerName("object"); +late final _sel_userInfo = objc.registerName("userInfo"); +late final _sel_initWithName_object_userInfo_ = + objc.registerName("initWithName:object:userInfo:"); +final _objc_msgSend_312 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_notificationWithName_object_ = + objc.registerName("notificationWithName:object:"); +late final _sel_notificationWithName_object_userInfo_ = + objc.registerName("notificationWithName:object:userInfo:"); + +class NSDate extends NSObject { + NSDate._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSDate] that points to the same underlying object as [other]. + NSDate.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSDate] that wraps the given raw object pointer. + NSDate.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSDate]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSDate); + } + + double get timeIntervalSinceReferenceDate { + return objc.useMsgSendVariants + ? _objc_msgSend_90Fpret( + this.pointer, _sel_timeIntervalSinceReferenceDate) + : _objc_msgSend_90(this.pointer, _sel_timeIntervalSinceReferenceDate); + } + + @override + NSDate init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + NSDate initWithTimeIntervalSinceReferenceDate_(double ti) { + final _ret = _objc_msgSend_313( + this.pointer, _sel_initWithTimeIntervalSinceReferenceDate_, ti); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + NSDate? initWithCoder_(NSCoder coder) { + final _ret = + _objc_msgSend_14(this.pointer, _sel_initWithCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSDate.castFromPointer(_ret, retain: true, release: true); + } + + double timeIntervalSinceDate_(NSDate anotherDate) { + return objc.useMsgSendVariants + ? _objc_msgSend_314Fpret( + this.pointer, _sel_timeIntervalSinceDate_, anotherDate.pointer) + : _objc_msgSend_314( + this.pointer, _sel_timeIntervalSinceDate_, anotherDate.pointer); + } + + double get timeIntervalSinceNow { + return objc.useMsgSendVariants + ? _objc_msgSend_90Fpret(this.pointer, _sel_timeIntervalSinceNow) + : _objc_msgSend_90(this.pointer, _sel_timeIntervalSinceNow); + } + + double get timeIntervalSince1970 { + return objc.useMsgSendVariants + ? _objc_msgSend_90Fpret(this.pointer, _sel_timeIntervalSince1970) + : _objc_msgSend_90(this.pointer, _sel_timeIntervalSince1970); + } + + NSObject addTimeInterval_(double seconds) { + final _ret = + _objc_msgSend_313(this.pointer, _sel_addTimeInterval_, seconds); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSDate dateByAddingTimeInterval_(double ti) { + final _ret = + _objc_msgSend_313(this.pointer, _sel_dateByAddingTimeInterval_, ti); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + NSDate earlierDate_(NSDate anotherDate) { + final _ret = + _objc_msgSend_315(this.pointer, _sel_earlierDate_, anotherDate.pointer); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + NSDate laterDate_(NSDate anotherDate) { + final _ret = + _objc_msgSend_315(this.pointer, _sel_laterDate_, anotherDate.pointer); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + int compare_(NSDate other) { + return _objc_msgSend_316(this.pointer, _sel_compare_, other.pointer); + } + + bool isEqualToDate_(NSDate otherDate) { + return _objc_msgSend_317( + this.pointer, _sel_isEqualToDate_, otherDate.pointer); + } + + NSString get description { + final _ret = _objc_msgSend_32(this.pointer, _sel_description); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString descriptionWithLocale_(NSObject? locale) { + final _ret = _objc_msgSend_93(this.pointer, _sel_descriptionWithLocale_, + locale?.pointer ?? ffi.nullptr); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + static NSDate date() { + final _ret = _objc_msgSend_2(_class_NSDate, _sel_date); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + static NSDate dateWithTimeIntervalSinceNow_(double secs) { + final _ret = _objc_msgSend_313( + _class_NSDate, _sel_dateWithTimeIntervalSinceNow_, secs); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + static NSDate dateWithTimeIntervalSinceReferenceDate_(double ti) { + final _ret = _objc_msgSend_313( + _class_NSDate, _sel_dateWithTimeIntervalSinceReferenceDate_, ti); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + static NSDate dateWithTimeIntervalSince1970_(double secs) { + final _ret = _objc_msgSend_313( + _class_NSDate, _sel_dateWithTimeIntervalSince1970_, secs); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + static NSDate dateWithTimeInterval_sinceDate_( + double secsToBeAdded, NSDate date) { + final _ret = _objc_msgSend_318(_class_NSDate, + _sel_dateWithTimeInterval_sinceDate_, secsToBeAdded, date.pointer); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + static NSDate getDistantFuture() { + final _ret = _objc_msgSend_319(_class_NSDate, _sel_distantFuture); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + static NSDate getDistantPast() { + final _ret = _objc_msgSend_319(_class_NSDate, _sel_distantPast); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + static NSDate getNow() { + final _ret = _objc_msgSend_319(_class_NSDate, _sel_now); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + NSDate initWithTimeIntervalSinceNow_(double secs) { + final _ret = _objc_msgSend_313( + this.pointer, _sel_initWithTimeIntervalSinceNow_, secs); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + NSDate initWithTimeIntervalSince1970_(double secs) { + final _ret = _objc_msgSend_313( + this.pointer, _sel_initWithTimeIntervalSince1970_, secs); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + NSDate initWithTimeInterval_sinceDate_(double secsToBeAdded, NSDate date) { + final _ret = _objc_msgSend_318(this.pointer, + _sel_initWithTimeInterval_sinceDate_, secsToBeAdded, date.pointer); + return NSDate.castFromPointer(_ret, retain: true, release: true); + } + + static NSDate new1() { + final _ret = _objc_msgSend_2(_class_NSDate, _sel_new); + return NSDate.castFromPointer(_ret, retain: false, release: true); + } + + static NSDate allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_3(_class_NSDate, _sel_allocWithZone_, zone); + return NSDate.castFromPointer(_ret, retain: false, release: true); + } + + static NSDate alloc() { + final _ret = _objc_msgSend_2(_class_NSDate, _sel_alloc); + return NSDate.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSDate = objc.getClass("NSDate"); +late final _sel_timeIntervalSinceReferenceDate = + objc.registerName("timeIntervalSinceReferenceDate"); +late final _sel_initWithTimeIntervalSinceReferenceDate_ = + objc.registerName("initWithTimeIntervalSinceReferenceDate:"); +final _objc_msgSend_313 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Double)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, double)>(); +late final _sel_timeIntervalSinceDate_ = + objc.registerName("timeIntervalSinceDate:"); +final _objc_msgSend_314 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Double Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_314Fpret = objc.msgSendFpretPointer + .cast< + ffi.NativeFunction< + ffi.Double Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + double Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_timeIntervalSinceNow = + objc.registerName("timeIntervalSinceNow"); +late final _sel_timeIntervalSince1970 = + objc.registerName("timeIntervalSince1970"); +late final _sel_addTimeInterval_ = objc.registerName("addTimeInterval:"); +late final _sel_dateByAddingTimeInterval_ = + objc.registerName("dateByAddingTimeInterval:"); +late final _sel_earlierDate_ = objc.registerName("earlierDate:"); +final _objc_msgSend_315 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_laterDate_ = objc.registerName("laterDate:"); +final _objc_msgSend_316 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + int Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isEqualToDate_ = objc.registerName("isEqualToDate:"); +final _objc_msgSend_317 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_date = objc.registerName("date"); +late final _sel_dateWithTimeIntervalSinceNow_ = + objc.registerName("dateWithTimeIntervalSinceNow:"); +late final _sel_dateWithTimeIntervalSinceReferenceDate_ = + objc.registerName("dateWithTimeIntervalSinceReferenceDate:"); +late final _sel_dateWithTimeIntervalSince1970_ = + objc.registerName("dateWithTimeIntervalSince1970:"); +late final _sel_dateWithTimeInterval_sinceDate_ = + objc.registerName("dateWithTimeInterval:sinceDate:"); +final _objc_msgSend_318 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer)>(); +late final _sel_distantFuture = objc.registerName("distantFuture"); +final _objc_msgSend_319 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_distantPast = objc.registerName("distantPast"); +late final _sel_now = objc.registerName("now"); +late final _sel_initWithTimeIntervalSinceNow_ = + objc.registerName("initWithTimeIntervalSinceNow:"); +late final _sel_initWithTimeIntervalSince1970_ = + objc.registerName("initWithTimeIntervalSince1970:"); +late final _sel_initWithTimeInterval_sinceDate_ = + objc.registerName("initWithTimeInterval:sinceDate:"); + +class NSMutableDictionary extends NSDictionary { + NSMutableDictionary._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSMutableDictionary] that points to the same underlying object as [other]. + NSMutableDictionary.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSMutableDictionary] that wraps the given raw object pointer. + NSMutableDictionary.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSMutableDictionary]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMutableDictionary); + } + + void removeObjectForKey_(NSObject aKey) { + _objc_msgSend_198(this.pointer, _sel_removeObjectForKey_, aKey.pointer); + } + + void setObject_forKey_(NSObject anObject, NSObject aKey) { + _objc_msgSend_320( + this.pointer, _sel_setObject_forKey_, anObject.pointer, aKey.pointer); + } + + @override + NSMutableDictionary init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + NSMutableDictionary initWithCapacity_(int numItems) { + final _ret = + _objc_msgSend_97(this.pointer, _sel_initWithCapacity_, numItems); + return NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + @override + NSMutableDictionary? initWithCoder_(NSCoder coder) { + final _ret = + _objc_msgSend_14(this.pointer, _sel_initWithCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + void addEntriesFromDictionary_(NSDictionary otherDictionary) { + _objc_msgSend_321( + this.pointer, _sel_addEntriesFromDictionary_, otherDictionary.pointer); + } + + void removeAllObjects() { + _objc_msgSend_1(this.pointer, _sel_removeAllObjects); + } + + void removeObjectsForKeys_(NSArray keyArray) { + _objc_msgSend_291( + this.pointer, _sel_removeObjectsForKeys_, keyArray.pointer); + } + + void setDictionary_(NSDictionary otherDictionary) { + _objc_msgSend_321( + this.pointer, _sel_setDictionary_, otherDictionary.pointer); + } + + void setObject_forKeyedSubscript_(NSObject? obj, NSObject key) { + _objc_msgSend_322(this.pointer, _sel_setObject_forKeyedSubscript_, + obj?.pointer ?? ffi.nullptr, key.pointer); + } + + static NSMutableDictionary dictionaryWithCapacity_(int numItems) { + final _ret = _objc_msgSend_97( + _class_NSMutableDictionary, _sel_dictionaryWithCapacity_, numItems); + return NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + static NSMutableDictionary? dictionaryWithContentsOfFile_(NSString path) { + final _ret = _objc_msgSend_323(_class_NSMutableDictionary, + _sel_dictionaryWithContentsOfFile_, path.pointer); + return _ret.address == 0 + ? null + : NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + static NSMutableDictionary? dictionaryWithContentsOfURL_(NSURL url) { + final _ret = _objc_msgSend_324(_class_NSMutableDictionary, + _sel_dictionaryWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + NSMutableDictionary? initWithContentsOfFile_(NSString path) { + final _ret = _objc_msgSend_323( + this.pointer, _sel_initWithContentsOfFile_, path.pointer); + return _ret.address == 0 + ? null + : NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + NSMutableDictionary? initWithContentsOfURL_(NSURL url) { + final _ret = _objc_msgSend_324( + this.pointer, _sel_initWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + static NSMutableDictionary dictionaryWithSharedKeySet_(NSObject keyset) { + final _ret = _objc_msgSend_325(_class_NSMutableDictionary, + _sel_dictionaryWithSharedKeySet_, keyset.pointer); + return NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + @override + NSMutableDictionary initWithObjects_forKeys_count_( + ffi.Pointer> objects, + ffi.Pointer> keys, + int cnt) { + final _ret = _objc_msgSend_171( + this.pointer, _sel_initWithObjects_forKeys_count_, objects, keys, cnt); + return NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + static NSMutableDictionary dictionary() { + final _ret = _objc_msgSend_2(_class_NSMutableDictionary, _sel_dictionary); + return NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + static NSMutableDictionary dictionaryWithObject_forKey_( + NSObject object, NSObject key) { + final _ret = _objc_msgSend_183(_class_NSMutableDictionary, + _sel_dictionaryWithObject_forKey_, object.pointer, key.pointer); + return NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + static NSMutableDictionary dictionaryWithObjects_forKeys_count_( + ffi.Pointer> objects, + ffi.Pointer> keys, + int cnt) { + final _ret = _objc_msgSend_171(_class_NSMutableDictionary, + _sel_dictionaryWithObjects_forKeys_count_, objects, keys, cnt); + return NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + static NSMutableDictionary dictionaryWithObjectsAndKeys_( + NSObject firstObject) { + final _ret = _objc_msgSend_148(_class_NSMutableDictionary, + _sel_dictionaryWithObjectsAndKeys_, firstObject.pointer); + return NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + static NSMutableDictionary dictionaryWithDictionary_(NSDictionary dict) { + final _ret = _objc_msgSend_184(_class_NSMutableDictionary, + _sel_dictionaryWithDictionary_, dict.pointer); + return NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + static NSMutableDictionary dictionaryWithObjects_forKeys_( + NSArray objects, NSArray keys) { + final _ret = _objc_msgSend_185(_class_NSMutableDictionary, + _sel_dictionaryWithObjects_forKeys_, objects.pointer, keys.pointer); + return NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + @override + NSMutableDictionary initWithObjectsAndKeys_(NSObject firstObject) { + final _ret = _objc_msgSend_148( + this.pointer, _sel_initWithObjectsAndKeys_, firstObject.pointer); + return NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + @override + NSMutableDictionary initWithDictionary_(NSDictionary otherDictionary) { + final _ret = _objc_msgSend_184( + this.pointer, _sel_initWithDictionary_, otherDictionary.pointer); + return NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + @override + NSMutableDictionary initWithDictionary_copyItems_( + NSDictionary otherDictionary, bool flag) { + final _ret = _objc_msgSend_186(this.pointer, + _sel_initWithDictionary_copyItems_, otherDictionary.pointer, flag); + return NSMutableDictionary.castFromPointer(_ret, + retain: false, release: true); + } + + @override + NSMutableDictionary initWithObjects_forKeys_(NSArray objects, NSArray keys) { + final _ret = _objc_msgSend_185(this.pointer, _sel_initWithObjects_forKeys_, + objects.pointer, keys.pointer); + return NSMutableDictionary.castFromPointer(_ret, + retain: true, release: true); + } + + static NSDictionary? dictionaryWithContentsOfURL_error_( + NSURL url, ffi.Pointer> error) { + final _ret = _objc_msgSend_187(_class_NSMutableDictionary, + _sel_dictionaryWithContentsOfURL_error_, url.pointer, error); + return _ret.address == 0 + ? null + : NSDictionary.castFromPointer(_ret, retain: true, release: true); + } + + static NSObject sharedKeySetForKeys_(NSArray keys) { + final _ret = _objc_msgSend_149( + _class_NSMutableDictionary, _sel_sharedKeySetForKeys_, keys.pointer); + return NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableDictionary new1() { + final _ret = _objc_msgSend_2(_class_NSMutableDictionary, _sel_new); + return NSMutableDictionary.castFromPointer(_ret, + retain: false, release: true); + } + + static NSMutableDictionary allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_3(_class_NSMutableDictionary, _sel_allocWithZone_, zone); + return NSMutableDictionary.castFromPointer(_ret, + retain: false, release: true); + } + + static NSMutableDictionary alloc() { + final _ret = _objc_msgSend_2(_class_NSMutableDictionary, _sel_alloc); + return NSMutableDictionary.castFromPointer(_ret, + retain: false, release: true); + } +} + +late final _class_NSMutableDictionary = objc.getClass("NSMutableDictionary"); +late final _sel_removeObjectForKey_ = objc.registerName("removeObjectForKey:"); +late final _sel_setObject_forKey_ = objc.registerName("setObject:forKey:"); +final _objc_msgSend_320 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_addEntriesFromDictionary_ = + objc.registerName("addEntriesFromDictionary:"); +final _objc_msgSend_321 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_removeObjectsForKeys_ = + objc.registerName("removeObjectsForKeys:"); +late final _sel_setDictionary_ = objc.registerName("setDictionary:"); +late final _sel_setObject_forKeyedSubscript_ = + objc.registerName("setObject:forKeyedSubscript:"); +final _objc_msgSend_322 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_dictionaryWithCapacity_ = + objc.registerName("dictionaryWithCapacity:"); +final _objc_msgSend_323 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_324 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_dictionaryWithSharedKeySet_ = + objc.registerName("dictionaryWithSharedKeySet:"); +final _objc_msgSend_325 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + +class NSSet extends NSObject { + NSSet._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSSet] that points to the same underlying object as [other]. + NSSet.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSSet] that wraps the given raw object pointer. + NSSet.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSSet]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSSet); + } + + int get count { + return _objc_msgSend_12(this.pointer, _sel_count); + } + + NSObject? member_(NSObject object) { + final _ret = _objc_msgSend_170(this.pointer, _sel_member_, object.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + NSEnumerator objectEnumerator() { + final _ret = _objc_msgSend_108(this.pointer, _sel_objectEnumerator); + return NSEnumerator.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSSet init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + NSSet initWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_98( + this.pointer, _sel_initWithObjects_count_, objects, cnt); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + NSSet? initWithCoder_(NSCoder coder) { + final _ret = + _objc_msgSend_14(this.pointer, _sel_initWithCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSSet.castFromPointer(_ret, retain: true, release: true); + } + + NSArray get allObjects { + final _ret = _objc_msgSend_172(this.pointer, _sel_allObjects); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSObject? anyObject() { + final _ret = _objc_msgSend_61(this.pointer, _sel_anyObject); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + bool containsObject_(NSObject anObject) { + return _objc_msgSend_0( + this.pointer, _sel_containsObject_, anObject.pointer); + } + + NSString get description { + final _ret = _objc_msgSend_32(this.pointer, _sel_description); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + NSString descriptionWithLocale_(NSObject? locale) { + final _ret = _objc_msgSend_93(this.pointer, _sel_descriptionWithLocale_, + locale?.pointer ?? ffi.nullptr); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + bool intersectsSet_(NSSet otherSet) { + return _objc_msgSend_326( + this.pointer, _sel_intersectsSet_, otherSet.pointer); + } + + bool isEqualToSet_(NSSet otherSet) { + return _objc_msgSend_326( + this.pointer, _sel_isEqualToSet_, otherSet.pointer); + } + + bool isSubsetOfSet_(NSSet otherSet) { + return _objc_msgSend_326( + this.pointer, _sel_isSubsetOfSet_, otherSet.pointer); + } + + void makeObjectsPerformSelector_(ffi.Pointer aSelector) { + _objc_msgSend_7(this.pointer, _sel_makeObjectsPerformSelector_, aSelector); + } + + void makeObjectsPerformSelector_withObject_( + ffi.Pointer aSelector, NSObject? argument) { + _objc_msgSend_114(this.pointer, _sel_makeObjectsPerformSelector_withObject_, + aSelector, argument?.pointer ?? ffi.nullptr); + } + + NSSet setByAddingObject_(NSObject anObject) { + final _ret = _objc_msgSend_327( + this.pointer, _sel_setByAddingObject_, anObject.pointer); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + NSSet setByAddingObjectsFromSet_(NSSet other) { + final _ret = _objc_msgSend_328( + this.pointer, _sel_setByAddingObjectsFromSet_, other.pointer); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + NSSet setByAddingObjectsFromArray_(NSArray other) { + final _ret = _objc_msgSend_329( + this.pointer, _sel_setByAddingObjectsFromArray_, other.pointer); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + void enumerateObjectsUsingBlock_( + ObjCBlock_ffiVoid_objcObjCObject_bool block) { + _objc_msgSend_330( + this.pointer, _sel_enumerateObjectsUsingBlock_, block.pointer); + } + + void enumerateObjectsWithOptions_usingBlock_( + int opts, ObjCBlock_ffiVoid_objcObjCObject_bool block) { + _objc_msgSend_331(this.pointer, + _sel_enumerateObjectsWithOptions_usingBlock_, opts, block.pointer); + } + + NSSet objectsPassingTest_(ObjCBlock_bool_objcObjCObject_bool predicate) { + final _ret = _objc_msgSend_332( + this.pointer, _sel_objectsPassingTest_, predicate.pointer); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + NSSet objectsWithOptions_passingTest_( + int opts, ObjCBlock_bool_objcObjCObject_bool predicate) { + final _ret = _objc_msgSend_333(this.pointer, + _sel_objectsWithOptions_passingTest_, opts, predicate.pointer); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSSet set1() { + final _ret = _objc_msgSend_2(_class_NSSet, _sel_set); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSSet setWithObject_(NSObject object) { + final _ret = + _objc_msgSend_148(_class_NSSet, _sel_setWithObject_, object.pointer); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSSet setWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_98( + _class_NSSet, _sel_setWithObjects_count_, objects, cnt); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSSet setWithObjects_(NSObject firstObj) { + final _ret = + _objc_msgSend_148(_class_NSSet, _sel_setWithObjects_, firstObj.pointer); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSSet setWithSet_(NSSet set) { + final _ret = _objc_msgSend_334(_class_NSSet, _sel_setWithSet_, set.pointer); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSSet setWithArray_(NSArray array) { + final _ret = + _objc_msgSend_149(_class_NSSet, _sel_setWithArray_, array.pointer); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + NSSet initWithObjects_(NSObject firstObj) { + final _ret = _objc_msgSend_148( + this.pointer, _sel_initWithObjects_, firstObj.pointer); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + NSSet initWithSet_(NSSet set) { + final _ret = + _objc_msgSend_334(this.pointer, _sel_initWithSet_, set.pointer); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + NSSet initWithSet_copyItems_(NSSet set, bool flag) { + final _ret = _objc_msgSend_335( + this.pointer, _sel_initWithSet_copyItems_, set.pointer, flag); + return NSSet.castFromPointer(_ret, retain: false, release: true); + } + + NSSet initWithArray_(NSArray array) { + final _ret = + _objc_msgSend_149(this.pointer, _sel_initWithArray_, array.pointer); + return NSSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSSet new1() { + final _ret = _objc_msgSend_2(_class_NSSet, _sel_new); + return NSSet.castFromPointer(_ret, retain: false, release: true); + } + + static NSSet allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _objc_msgSend_3(_class_NSSet, _sel_allocWithZone_, zone); + return NSSet.castFromPointer(_ret, retain: false, release: true); + } + + static NSSet alloc() { + final _ret = _objc_msgSend_2(_class_NSSet, _sel_alloc); + return NSSet.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSSet = objc.getClass("NSSet"); +late final _sel_member_ = objc.registerName("member:"); +late final _sel_anyObject = objc.registerName("anyObject"); +late final _sel_intersectsSet_ = objc.registerName("intersectsSet:"); +final _objc_msgSend_326 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_isEqualToSet_ = objc.registerName("isEqualToSet:"); +late final _sel_isSubsetOfSet_ = objc.registerName("isSubsetOfSet:"); +late final _sel_setByAddingObject_ = objc.registerName("setByAddingObject:"); +final _objc_msgSend_327 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setByAddingObjectsFromSet_ = + objc.registerName("setByAddingObjectsFromSet:"); +final _objc_msgSend_328 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setByAddingObjectsFromArray_ = + objc.registerName("setByAddingObjectsFromArray:"); +final _objc_msgSend_329 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_objcObjCObject_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +void _ObjCBlock_ffiVoid_objcObjCObject_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + (objc.getBlockClosure(block) as void Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); + +class ObjCBlock_ffiVoid_objcObjCObject_bool extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_objcObjCObject_bool._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_objcObjCObject_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_objcObjCObject_bool._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_bool_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_bool.fromFunction( + void Function(NSObject, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_bool_closureTrampoline) + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1) => + fn(NSObject.castFromPointer(arg0, retain: true, release: true), + arg1))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_objcObjCObject_bool.listener( + void Function(NSObject, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_objcObjCObject_bool_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1) => + fn(NSObject.castFromPointer(arg0, retain: true, release: true), + arg1))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(NSObject arg0, ffi.Pointer arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()(pointer, arg0.pointer, arg1); +} + +final _objc_msgSend_330 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +final _objc_msgSend_331 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +bool _ObjCBlock_bool_objcObjCObject_bool_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +bool _ObjCBlock_bool_objcObjCObject_bool_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + (objc.getBlockClosure(block) as bool Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); + +class ObjCBlock_bool_objcObjCObject_bool extends objc.ObjCBlockBase { + ObjCBlock_bool_objcObjCObject_bool._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_bool_objcObjCObject_bool castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_bool_objcObjCObject_bool._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_bool.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_bool_fnPtrTrampoline, false) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_bool_objcObjCObject_bool.fromFunction( + bool Function(NSObject, ffi.Pointer) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_bool_objcObjCObject_bool_closureTrampoline, false) + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1) => + fn(NSObject.castFromPointer(arg0, retain: true, release: true), + arg1))); + static ffi.Pointer? _dartFuncTrampoline; + + bool call(NSObject arg0, ffi.Pointer arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()(pointer, arg0.pointer, arg1); +} + +late final _sel_objectsPassingTest_ = objc.registerName("objectsPassingTest:"); +final _objc_msgSend_332 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_objectsWithOptions_passingTest_ = + objc.registerName("objectsWithOptions:passingTest:"); +final _objc_msgSend_333 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_set = objc.registerName("set"); +late final _sel_setWithObject_ = objc.registerName("setWithObject:"); +late final _sel_setWithObjects_count_ = + objc.registerName("setWithObjects:count:"); +late final _sel_setWithObjects_ = objc.registerName("setWithObjects:"); +late final _sel_setWithSet_ = objc.registerName("setWithSet:"); +final _objc_msgSend_334 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setWithArray_ = objc.registerName("setWithArray:"); +late final _sel_initWithSet_ = objc.registerName("initWithSet:"); +late final _sel_initWithSet_copyItems_ = + objc.registerName("initWithSet:copyItems:"); +final _objc_msgSend_335 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); + +class NSMutableSet extends NSSet { + NSMutableSet._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSMutableSet] that points to the same underlying object as [other]. + NSMutableSet.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSMutableSet] that wraps the given raw object pointer. + NSMutableSet.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSMutableSet]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMutableSet); + } + + void addObject_(NSObject object) { + _objc_msgSend_198(this.pointer, _sel_addObject_, object.pointer); + } + + void removeObject_(NSObject object) { + _objc_msgSend_198(this.pointer, _sel_removeObject_, object.pointer); + } + + @override + NSMutableSet? initWithCoder_(NSCoder coder) { + final _ret = + _objc_msgSend_14(this.pointer, _sel_initWithCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSMutableSet.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableSet init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSMutableSet.castFromPointer(_ret, retain: true, release: true); + } + + NSMutableSet initWithCapacity_(int numItems) { + final _ret = + _objc_msgSend_97(this.pointer, _sel_initWithCapacity_, numItems); + return NSMutableSet.castFromPointer(_ret, retain: true, release: true); + } + + void addObjectsFromArray_(NSArray array) { + _objc_msgSend_291(this.pointer, _sel_addObjectsFromArray_, array.pointer); + } + + void intersectSet_(NSSet otherSet) { + _objc_msgSend_336(this.pointer, _sel_intersectSet_, otherSet.pointer); + } + + void minusSet_(NSSet otherSet) { + _objc_msgSend_336(this.pointer, _sel_minusSet_, otherSet.pointer); + } + + void removeAllObjects() { + _objc_msgSend_1(this.pointer, _sel_removeAllObjects); + } + + void unionSet_(NSSet otherSet) { + _objc_msgSend_336(this.pointer, _sel_unionSet_, otherSet.pointer); + } + + void setSet_(NSSet otherSet) { + _objc_msgSend_336(this.pointer, _sel_setSet_, otherSet.pointer); + } + + static NSMutableSet setWithCapacity_(int numItems) { + final _ret = + _objc_msgSend_97(_class_NSMutableSet, _sel_setWithCapacity_, numItems); + return NSMutableSet.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableSet initWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_98( + this.pointer, _sel_initWithObjects_count_, objects, cnt); + return NSMutableSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableSet set1() { + final _ret = _objc_msgSend_2(_class_NSMutableSet, _sel_set); + return NSMutableSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableSet setWithObject_(NSObject object) { + final _ret = _objc_msgSend_148( + _class_NSMutableSet, _sel_setWithObject_, object.pointer); + return NSMutableSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableSet setWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _objc_msgSend_98( + _class_NSMutableSet, _sel_setWithObjects_count_, objects, cnt); + return NSMutableSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableSet setWithObjects_(NSObject firstObj) { + final _ret = _objc_msgSend_148( + _class_NSMutableSet, _sel_setWithObjects_, firstObj.pointer); + return NSMutableSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableSet setWithSet_(NSSet set) { + final _ret = + _objc_msgSend_334(_class_NSMutableSet, _sel_setWithSet_, set.pointer); + return NSMutableSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableSet setWithArray_(NSArray array) { + final _ret = _objc_msgSend_149( + _class_NSMutableSet, _sel_setWithArray_, array.pointer); + return NSMutableSet.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableSet initWithObjects_(NSObject firstObj) { + final _ret = _objc_msgSend_148( + this.pointer, _sel_initWithObjects_, firstObj.pointer); + return NSMutableSet.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableSet initWithSet_(NSSet set) { + final _ret = + _objc_msgSend_334(this.pointer, _sel_initWithSet_, set.pointer); + return NSMutableSet.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableSet initWithSet_copyItems_(NSSet set, bool flag) { + final _ret = _objc_msgSend_335( + this.pointer, _sel_initWithSet_copyItems_, set.pointer, flag); + return NSMutableSet.castFromPointer(_ret, retain: false, release: true); + } + + @override + NSMutableSet initWithArray_(NSArray array) { + final _ret = + _objc_msgSend_149(this.pointer, _sel_initWithArray_, array.pointer); + return NSMutableSet.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableSet new1() { + final _ret = _objc_msgSend_2(_class_NSMutableSet, _sel_new); + return NSMutableSet.castFromPointer(_ret, retain: false, release: true); + } + + static NSMutableSet allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_3(_class_NSMutableSet, _sel_allocWithZone_, zone); + return NSMutableSet.castFromPointer(_ret, retain: false, release: true); + } + + static NSMutableSet alloc() { + final _ret = _objc_msgSend_2(_class_NSMutableSet, _sel_alloc); + return NSMutableSet.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSMutableSet = objc.getClass("NSMutableSet"); +late final _sel_intersectSet_ = objc.registerName("intersectSet:"); +final _objc_msgSend_336 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_minusSet_ = objc.registerName("minusSet:"); +late final _sel_unionSet_ = objc.registerName("unionSet:"); +late final _sel_setSet_ = objc.registerName("setSet:"); +late final _sel_setWithCapacity_ = objc.registerName("setWithCapacity:"); + +class NSItemProvider extends NSObject { + NSItemProvider._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSItemProvider] that points to the same underlying object as [other]. + NSItemProvider.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSItemProvider] that wraps the given raw object pointer. + NSItemProvider.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSItemProvider]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSItemProvider); + } + + @override + NSItemProvider init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSItemProvider.castFromPointer(_ret, retain: true, release: true); + } + + void registerDataRepresentationForTypeIdentifier_visibility_loadHandler_( + NSString typeIdentifier, + int visibility, + ObjCBlock_NSProgress_ffiVoidNSDataNSError loadHandler) { + _objc_msgSend_337( + this.pointer, + _sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_, + typeIdentifier.pointer, + visibility, + loadHandler.pointer); + } + + void + registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_( + NSString typeIdentifier, + int fileOptions, + int visibility, + ObjCBlock_NSProgress_ffiVoidNSURLboolNSError loadHandler) { + _objc_msgSend_338( + this.pointer, + _sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_, + typeIdentifier.pointer, + fileOptions, + visibility, + loadHandler.pointer); + } + + NSArray get registeredTypeIdentifiers { + final _ret = + _objc_msgSend_172(this.pointer, _sel_registeredTypeIdentifiers); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + NSArray registeredTypeIdentifiersWithFileOptions_(int fileOptions) { + final _ret = _objc_msgSend_339(this.pointer, + _sel_registeredTypeIdentifiersWithFileOptions_, fileOptions); + return NSArray.castFromPointer(_ret, retain: true, release: true); + } + + bool hasItemConformingToTypeIdentifier_(NSString typeIdentifier) { + return _objc_msgSend_22(this.pointer, + _sel_hasItemConformingToTypeIdentifier_, typeIdentifier.pointer); + } + + bool hasRepresentationConformingToTypeIdentifier_fileOptions_( + NSString typeIdentifier, int fileOptions) { + return _objc_msgSend_340( + this.pointer, + _sel_hasRepresentationConformingToTypeIdentifier_fileOptions_, + typeIdentifier.pointer, + fileOptions); + } + + NSProgress loadDataRepresentationForTypeIdentifier_completionHandler_( + NSString typeIdentifier, + ObjCBlock_ffiVoid_NSData_NSError completionHandler) { + final _ret = _objc_msgSend_341( + this.pointer, + _sel_loadDataRepresentationForTypeIdentifier_completionHandler_, + typeIdentifier.pointer, + completionHandler.pointer); + return NSProgress.castFromPointer(_ret, retain: true, release: true); + } + + NSProgress loadFileRepresentationForTypeIdentifier_completionHandler_( + NSString typeIdentifier, + ObjCBlock_ffiVoid_NSURL_NSError completionHandler) { + final _ret = _objc_msgSend_342( + this.pointer, + _sel_loadFileRepresentationForTypeIdentifier_completionHandler_, + typeIdentifier.pointer, + completionHandler.pointer); + return NSProgress.castFromPointer(_ret, retain: true, release: true); + } + + NSProgress loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_( + NSString typeIdentifier, + ObjCBlock_ffiVoid_NSURL_bool_NSError completionHandler) { + final _ret = _objc_msgSend_343( + this.pointer, + _sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_, + typeIdentifier.pointer, + completionHandler.pointer); + return NSProgress.castFromPointer(_ret, retain: true, release: true); + } + + NSString? get suggestedName { + final _ret = _objc_msgSend_55(this.pointer, _sel_suggestedName); + return _ret.address == 0 + ? null + : NSString.castFromPointer(_ret, retain: true, release: true); + } + + set suggestedName(NSString? value) { + return _objc_msgSend_344( + this.pointer, _sel_setSuggestedName_, value?.pointer ?? ffi.nullptr); + } + + NSItemProvider initWithObject_(NSObject object) { + final _ret = + _objc_msgSend_148(this.pointer, _sel_initWithObject_, object.pointer); + return NSItemProvider.castFromPointer(_ret, retain: true, release: true); + } + + void registerObject_visibility_(NSObject object, int visibility) { + _objc_msgSend_345(this.pointer, _sel_registerObject_visibility_, + object.pointer, visibility); + } + + void registerObjectOfClass_visibility_loadHandler_( + NSObject aClass, + int visibility, + ObjCBlock_NSProgress_ffiVoidobjcObjCObjectNSError loadHandler) { + _objc_msgSend_346( + this.pointer, + _sel_registerObjectOfClass_visibility_loadHandler_, + aClass.pointer, + visibility, + loadHandler.pointer); + } + + bool canLoadObjectOfClass_(NSObject aClass) { + return _objc_msgSend_0( + this.pointer, _sel_canLoadObjectOfClass_, aClass.pointer); + } + + NSProgress loadObjectOfClass_completionHandler_(NSObject aClass, + ObjCBlock_ffiVoid_objcObjCObject_NSError completionHandler) { + final _ret = _objc_msgSend_347( + this.pointer, + _sel_loadObjectOfClass_completionHandler_, + aClass.pointer, + completionHandler.pointer); + return NSProgress.castFromPointer(_ret, retain: true, release: true); + } + + NSItemProvider initWithItem_typeIdentifier_( + NSObject? item, NSString? typeIdentifier) { + final _ret = _objc_msgSend_348( + this.pointer, + _sel_initWithItem_typeIdentifier_, + item?.pointer ?? ffi.nullptr, + typeIdentifier?.pointer ?? ffi.nullptr); + return NSItemProvider.castFromPointer(_ret, retain: true, release: true); + } + + NSItemProvider? initWithContentsOfURL_(NSURL fileURL) { + final _ret = _objc_msgSend_214( + this.pointer, _sel_initWithContentsOfURL_, fileURL.pointer); + return _ret.address == 0 + ? null + : NSItemProvider.castFromPointer(_ret, retain: true, release: true); + } + + void registerItemForTypeIdentifier_loadHandler_( + NSString typeIdentifier, + ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary + loadHandler) { + _objc_msgSend_349( + this.pointer, + _sel_registerItemForTypeIdentifier_loadHandler_, + typeIdentifier.pointer, + loadHandler.pointer); + } + + void loadItemForTypeIdentifier_options_completionHandler_( + NSString typeIdentifier, + NSDictionary? options, + ObjCBlock_ffiVoid_objcObjCObject_NSError1? completionHandler) { + _objc_msgSend_350( + this.pointer, + _sel_loadItemForTypeIdentifier_options_completionHandler_, + typeIdentifier.pointer, + options?.pointer ?? ffi.nullptr, + completionHandler?.pointer ?? ffi.nullptr); + } + + ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary? + get previewImageHandler { + final _ret = _objc_msgSend_351(this.pointer, _sel_previewImageHandler); + return _ret.address == 0 + ? null + : ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary + .castFromPointer(_ret, retain: true, release: true); + } + + set previewImageHandler( + ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary? + value) { + return _objc_msgSend_352(this.pointer, _sel_setPreviewImageHandler_, + value?.pointer ?? ffi.nullptr); + } + + void loadPreviewImageWithOptions_completionHandler_(NSDictionary options, + ObjCBlock_ffiVoid_objcObjCObject_NSError1 completionHandler) { + _objc_msgSend_353( + this.pointer, + _sel_loadPreviewImageWithOptions_completionHandler_, + options.pointer, + completionHandler.pointer); + } + + static NSItemProvider new1() { + final _ret = _objc_msgSend_2(_class_NSItemProvider, _sel_new); + return NSItemProvider.castFromPointer(_ret, retain: false, release: true); + } + + static NSItemProvider allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_3(_class_NSItemProvider, _sel_allocWithZone_, zone); + return NSItemProvider.castFromPointer(_ret, retain: false, release: true); + } + + static NSItemProvider alloc() { + final _ret = _objc_msgSend_2(_class_NSItemProvider, _sel_alloc); + return NSItemProvider.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSItemProvider = objc.getClass("NSItemProvider"); + +abstract class NSItemProviderRepresentationVisibility { + static const int NSItemProviderRepresentationVisibilityAll = 0; + static const int NSItemProviderRepresentationVisibilityTeam = 1; + static const int NSItemProviderRepresentationVisibilityGroup = 2; + static const int NSItemProviderRepresentationVisibilityOwnProcess = 3; +} + +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0) => + block.ref.target + .cast< + ffi + .NativeFunction< + ffi.Pointer Function( + ffi.Pointer arg0)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer)>()(arg0); +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0) => + (objc.getBlockClosure(block) as ffi.Pointer Function( + ffi.Pointer))(arg0); + +class ObjCBlock_NSProgress_ffiVoidNSDataNSError extends objc.ObjCBlockBase { + ObjCBlock_NSProgress_ffiVoidNSDataNSError._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_NSProgress_ffiVoidNSDataNSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_NSProgress_ffiVoidNSDataNSError._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_NSProgress_ffiVoidNSDataNSError.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer arg0)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_NSProgress_ffiVoidNSDataNSError.fromFunction( + NSProgress? Function(ObjCBlock_ffiVoid_NSData_NSError) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>( + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureTrampoline) + .cast(), + (ffi.Pointer arg0) => + fn(ObjCBlock_ffiVoid_NSData_NSError.castFromPointer(arg0, + retain: true, release: true)) + ?.retainAndReturnPointer() ?? + ffi.nullptr)); + static ffi.Pointer? _dartFuncTrampoline; + + NSProgress? call(ObjCBlock_ffiVoid_NSData_NSError arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction Function(ffi.Pointer, ffi.Pointer)>() + (pointer, arg0.pointer) + .address == + 0 + ? null + : NSProgress.castFromPointer( + pointer.ref.invoke.cast Function(ffi.Pointer block, ffi.Pointer arg0)>>().asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>()(pointer, arg0.pointer), + retain: false, + release: true); +} + +class NSProgress extends objc.ObjCObjectBase { + NSProgress._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super(pointer, retain: retain, release: release); + + /// Constructs a [NSProgress] that points to the same underlying object as [other]. + NSProgress.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSProgress] that wraps the given raw object pointer. + NSProgress.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSProgress]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0(obj.pointer, _sel_isKindOfClass_, _class_NSProgress); + } +} + +late final _class_NSProgress = objc.getClass("NSProgress"); +void _ObjCBlock_ffiVoid_NSData_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +void _ObjCBlock_ffiVoid_NSData_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + (objc.getBlockClosure(block) as void Function(ffi.Pointer, + ffi.Pointer))(arg0, arg1); + +class ObjCBlock_ffiVoid_NSData_NSError extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSData_NSError._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSData_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSData_NSError._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSData_NSError.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSData_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSData_NSError.fromFunction(void Function(NSData?, NSError?) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSData_NSError_closureTrampoline) + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : NSData.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 + ? null + : NSError.castFromPointer(arg1, retain: true, release: true)))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSData_NSError.listener(void Function(NSData?, NSError?) fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSData_NSError_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : NSData.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 + ? null + : NSError.castFromPointer(arg1, retain: true, release: true)))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(NSData? arg0, NSError? arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1?.pointer ?? ffi.nullptr); +} + +late final _sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_ = + objc.registerName( + "registerDataRepresentationForTypeIdentifier:visibility:loadHandler:"); +final _objc_msgSend_337 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); + +abstract class NSItemProviderFileOptions { + static const int NSItemProviderFileOptionOpenInPlace = 1; +} + +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer arg0)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer)>()(arg0); +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0) => + (objc.getBlockClosure(block) as ffi.Pointer Function( + ffi.Pointer))(arg0); + +class ObjCBlock_NSProgress_ffiVoidNSURLboolNSError extends objc.ObjCBlockBase { + ObjCBlock_NSProgress_ffiVoidNSURLboolNSError._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_NSProgress_ffiVoidNSURLboolNSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_NSProgress_ffiVoidNSURLboolNSError._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_NSProgress_ffiVoidNSURLboolNSError.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer arg0)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_NSProgress_ffiVoidNSURLboolNSError.fromFunction( + NSProgress? Function(ObjCBlock_ffiVoid_NSURL_bool_NSError) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureTrampoline) + .cast(), + (ffi.Pointer arg0) => + fn(ObjCBlock_ffiVoid_NSURL_bool_NSError.castFromPointer(arg0, retain: true, release: true)) + ?.retainAndReturnPointer() ?? + ffi.nullptr)); + static ffi.Pointer? _dartFuncTrampoline; + + NSProgress? call(ObjCBlock_ffiVoid_NSURL_bool_NSError arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction Function(ffi.Pointer, ffi.Pointer)>() + (pointer, arg0.pointer) + .address == + 0 + ? null + : NSProgress.castFromPointer( + pointer.ref.invoke.cast Function(ffi.Pointer block, ffi.Pointer arg0)>>().asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>()(pointer, arg0.pointer), + retain: false, + release: true); +} + +void _ObjCBlock_ffiVoid_NSURL_bool_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Bool arg1, ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer, bool, + ffi.Pointer)>()(arg0, arg1, arg2); +void _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) => + (objc.getBlockClosure(block) as void Function(ffi.Pointer, + bool, ffi.Pointer))(arg0, arg1, arg2); + +class ObjCBlock_ffiVoid_NSURL_bool_NSError extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSURL_bool_NSError._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSURL_bool_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSURL_bool_NSError._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSURL_bool_NSError.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Bool arg1, ffi.Pointer arg2)>> + ptr) + : this._( + objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURL_bool_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSURL_bool_NSError.fromFunction(void Function(NSURL?, bool, NSError?) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureTrampoline) + .cast(), + (ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) => fn( + arg0.address == 0 + ? null + : NSURL.castFromPointer(arg0, retain: true, release: true), + arg1, + arg2.address == 0 ? null : NSError.castFromPointer(arg2, retain: true, release: true)))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSURL_bool_NSError.listener( + void Function(NSURL?, bool, NSError?) fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) => fn( + arg0.address == 0 ? null : NSURL.castFromPointer(arg0, retain: true, release: true), + arg1, + arg2.address == 0 ? null : NSError.castFromPointer(arg2, retain: true, release: true)))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(NSURL? arg0, bool arg1, NSError? arg2) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer)>()(pointer, + arg0?.pointer ?? ffi.nullptr, arg1, arg2?.pointer ?? ffi.nullptr); +} + +late final _sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_ = + objc.registerName( + "registerFileRepresentationForTypeIdentifier:fileOptions:visibility:loadHandler:"); +final _objc_msgSend_338 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer)>(); +late final _sel_registeredTypeIdentifiers = + objc.registerName("registeredTypeIdentifiers"); +late final _sel_registeredTypeIdentifiersWithFileOptions_ = + objc.registerName("registeredTypeIdentifiersWithFileOptions:"); +final _objc_msgSend_339 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_hasItemConformingToTypeIdentifier_ = + objc.registerName("hasItemConformingToTypeIdentifier:"); +late final _sel_hasRepresentationConformingToTypeIdentifier_fileOptions_ = objc + .registerName("hasRepresentationConformingToTypeIdentifier:fileOptions:"); +final _objc_msgSend_340 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_loadDataRepresentationForTypeIdentifier_completionHandler_ = + objc.registerName( + "loadDataRepresentationForTypeIdentifier:completionHandler:"); +final _objc_msgSend_341 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +void _ObjCBlock_ffiVoid_NSURL_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +void _ObjCBlock_ffiVoid_NSURL_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + (objc.getBlockClosure(block) as void Function(ffi.Pointer, + ffi.Pointer))(arg0, arg1); + +class ObjCBlock_ffiVoid_NSURL_NSError extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_NSURL_NSError._(ffi.Pointer pointer, + {bool retain = false, bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_NSURL_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_NSURL_NSError._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSURL_NSError.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURL_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_NSURL_NSError.fromFunction( + void Function(NSURL?, NSError?) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_NSURL_NSError_closureTrampoline) + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : NSURL.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : NSError.castFromPointer(arg1, retain: true, release: true)))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_NSURL_NSError.listener(void Function(NSURL?, NSError?) fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_NSURL_NSError_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : NSURL.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 + ? null + : NSError.castFromPointer(arg1, retain: true, release: true)))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(NSURL? arg0, NSError? arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1?.pointer ?? ffi.nullptr); +} + +late final _sel_loadFileRepresentationForTypeIdentifier_completionHandler_ = + objc.registerName( + "loadFileRepresentationForTypeIdentifier:completionHandler:"); +final _objc_msgSend_342 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_ = + objc.registerName( + "loadInPlaceFileRepresentationForTypeIdentifier:completionHandler:"); +final _objc_msgSend_343 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_suggestedName = objc.registerName("suggestedName"); +late final _sel_setSuggestedName_ = objc.registerName("setSuggestedName:"); +final _objc_msgSend_344 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_initWithObject_ = objc.registerName("initWithObject:"); +late final _sel_registerObject_visibility_ = + objc.registerName("registerObject:visibility:"); +final _objc_msgSend_345 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidobjcObjCObjectNSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer arg0)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer)>()(arg0); +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidobjcObjCObjectNSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0) => + (objc.getBlockClosure(block) as ffi.Pointer Function( + ffi.Pointer))(arg0); + +class ObjCBlock_NSProgress_ffiVoidobjcObjCObjectNSError + extends objc.ObjCBlockBase { + ObjCBlock_NSProgress_ffiVoidobjcObjCObjectNSError._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_NSProgress_ffiVoidobjcObjCObjectNSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_NSProgress_ffiVoidobjcObjCObjectNSError._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_NSProgress_ffiVoidobjcObjCObjectNSError.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer arg0)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_NSProgress_ffiVoidobjcObjCObjectNSError_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_NSProgress_ffiVoidobjcObjCObjectNSError.fromFunction( + NSProgress? Function(ObjCBlock_ffiVoid_objcObjCObject_NSError) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_NSProgress_ffiVoidobjcObjCObjectNSError_closureTrampoline) + .cast(), + (ffi.Pointer arg0) => + fn(ObjCBlock_ffiVoid_objcObjCObject_NSError.castFromPointer(arg0, retain: true, release: true)) + ?.retainAndReturnPointer() ?? + ffi.nullptr)); + static ffi.Pointer? _dartFuncTrampoline; + + NSProgress? call(ObjCBlock_ffiVoid_objcObjCObject_NSError arg0) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer block, + ffi.Pointer arg0)>>() + .asFunction Function(ffi.Pointer, ffi.Pointer)>() + (pointer, arg0.pointer) + .address == + 0 + ? null + : NSProgress.castFromPointer( + pointer.ref.invoke.cast Function(ffi.Pointer block, ffi.Pointer arg0)>>().asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>()(pointer, arg0.pointer), + retain: false, + release: true); +} + +void _ObjCBlock_ffiVoid_objcObjCObject_NSError_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +void _ObjCBlock_ffiVoid_objcObjCObject_NSError_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + (objc.getBlockClosure(block) as void Function(ffi.Pointer, + ffi.Pointer))(arg0, arg1); + +class ObjCBlock_ffiVoid_objcObjCObject_NSError extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_objcObjCObject_NSError._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_objcObjCObject_NSError castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_objcObjCObject_NSError._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_NSError.fromFunctionPointer( + ffi + .Pointer< + ffi + .NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_NSError_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_NSError.fromFunction( + void Function(NSObject?, NSError?) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_NSError_closureTrampoline) + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : NSObject.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : NSError.castFromPointer(arg1, retain: true, release: true)))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_objcObjCObject_NSError.listener(void Function(NSObject?, NSError?) fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_objcObjCObject_NSError_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : NSObject.castFromPointer(arg0, retain: true, release: true), + arg1.address == 0 ? null : NSError.castFromPointer(arg1, retain: true, release: true)))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(NSObject? arg0, NSError? arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1?.pointer ?? ffi.nullptr); +} + +late final _sel_registerObjectOfClass_visibility_loadHandler_ = + objc.registerName("registerObjectOfClass:visibility:loadHandler:"); +final _objc_msgSend_346 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); +late final _sel_canLoadObjectOfClass_ = + objc.registerName("canLoadObjectOfClass:"); +late final _sel_loadObjectOfClass_completionHandler_ = + objc.registerName("loadObjectOfClass:completionHandler:"); +final _objc_msgSend_347 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_initWithItem_typeIdentifier_ = + objc.registerName("initWithItem:typeIdentifier:"); +final _objc_msgSend_348 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +void + _ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()(arg0, arg1, arg2); +void + _ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + (objc.getBlockClosure(block) as void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer))(arg0, arg1, arg2); + +class ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary + extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary + castFromPointer(ffi.Pointer pointer, + {bool retain = false, bool release = false}) { + return ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary + ._(pointer, retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary.fromFunction(void Function(ObjCBlock_ffiVoid_objcObjCObject_NSError1, NSObject, NSDictionary) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary_closureTrampoline) + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2) => fn( + ObjCBlock_ffiVoid_objcObjCObject_NSError1.castFromPointer(arg0, retain: true, release: true), + NSObject.castFromPointer(arg1, retain: true, release: true), + NSDictionary.castFromPointer(arg2, retain: true, release: true)))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary.listener( + void Function(ObjCBlock_ffiVoid_objcObjCObject_NSError1, NSObject, NSDictionary) + fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= + ffi.NativeCallable, ffi.Pointer, ffi.Pointer, ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_ffiVoidobjcObjCObjectNSError_objcObjCObject_NSDictionary_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) => + fn( + ObjCBlock_ffiVoid_objcObjCObject_NSError1.castFromPointer(arg0, retain: true, release: true), + NSObject.castFromPointer(arg1, retain: true, release: true), + NSDictionary.castFromPointer(arg2, retain: true, release: true)))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(ObjCBlock_ffiVoid_objcObjCObject_NSError1 arg0, NSObject arg1, + NSDictionary arg2) => + pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0.pointer, arg1.pointer, arg2.pointer); +} + +void _ObjCBlock_ffiVoid_objcObjCObject_NSError1_fnPtrTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer)>()(arg0, arg1); +void _ObjCBlock_ffiVoid_objcObjCObject_NSError1_closureTrampoline( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1) => + (objc.getBlockClosure(block) as void Function(ffi.Pointer, + ffi.Pointer))(arg0, arg1); + +class ObjCBlock_ffiVoid_objcObjCObject_NSError1 extends objc.ObjCBlockBase { + ObjCBlock_ffiVoid_objcObjCObject_NSError1._( + ffi.Pointer pointer, + {bool retain = false, + bool release = true}) + : super(pointer, retain: retain, release: release); + + /// Returns a block that wraps the given raw block pointer. + static ObjCBlock_ffiVoid_objcObjCObject_NSError1 castFromPointer( + ffi.Pointer pointer, + {bool retain = false, + bool release = false}) { + return ObjCBlock_ffiVoid_objcObjCObject_NSError1._(pointer, + retain: retain, release: release); + } + + /// Creates a block from a C function pointer. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_NSError1.fromFunctionPointer( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._(objc.newPointerBlock( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_NSError1_fnPtrTrampoline) + .cast(), + ptr.cast())); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + /// + /// This block must be invoked by native code running on the same thread as + /// the isolate that registered it. Invoking the block on the wrong thread + /// will result in a crash. + ObjCBlock_ffiVoid_objcObjCObject_NSError1.fromFunction( + void Function(NSObject?, NSError) fn) + : this._(objc.newClosureBlock( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>( + _ObjCBlock_ffiVoid_objcObjCObject_NSError1_closureTrampoline) + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : NSObject.castFromPointer(arg0, retain: true, release: true), + NSError.castFromPointer(arg1, retain: true, release: true)))); + static ffi.Pointer? _dartFuncTrampoline; + + /// Creates a listener block from a Dart function. + /// + /// This is based on FFI's NativeCallable.listener, and has the same + /// capabilities and limitations. This block can be invoked from any thread, + /// but only supports void functions, and is not run synchronously. See + /// NativeCallable.listener for more details. + /// + /// Note that unlike the default behavior of NativeCallable.listener, listener + /// blocks do not keep the isolate alive. + ObjCBlock_ffiVoid_objcObjCObject_NSError1.listener(void Function(NSObject?, NSError) fn) + : this._(objc.newClosureBlock( + (_dartFuncListenerTrampoline ??= ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>.listener( + _ObjCBlock_ffiVoid_objcObjCObject_NSError1_closureTrampoline) + ..keepIsolateAlive = false) + .nativeFunction + .cast(), + (ffi.Pointer arg0, ffi.Pointer arg1) => fn( + arg0.address == 0 + ? null + : NSObject.castFromPointer(arg0, retain: true, release: true), + NSError.castFromPointer(arg1, retain: true, release: true)))); + static ffi.NativeCallable< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>? _dartFuncListenerTrampoline; + + void call(NSObject? arg0, NSError arg1) => pointer.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>()( + pointer, arg0?.pointer ?? ffi.nullptr, arg1.pointer); +} + +late final _sel_registerItemForTypeIdentifier_loadHandler_ = + objc.registerName("registerItemForTypeIdentifier:loadHandler:"); +final _objc_msgSend_349 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_loadItemForTypeIdentifier_options_completionHandler_ = + objc.registerName("loadItemForTypeIdentifier:options:completionHandler:"); +final _objc_msgSend_350 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); +late final _sel_previewImageHandler = objc.registerName("previewImageHandler"); +final _objc_msgSend_351 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); +late final _sel_setPreviewImageHandler_ = + objc.registerName("setPreviewImageHandler:"); +final _objc_msgSend_352 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>() + .asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); +late final _sel_loadPreviewImageWithOptions_completionHandler_ = + objc.registerName("loadPreviewImageWithOptions:completionHandler:"); +final _objc_msgSend_353 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + +class NSMutableString extends NSString { + NSMutableString._(ffi.Pointer pointer, + {bool retain = false, bool release = false}) + : super.castFromPointer(pointer, retain: retain, release: release); + + /// Constructs a [NSMutableString] that points to the same underlying object as [other]. + NSMutableString.castFrom(objc.ObjCObjectBase other) + : this._(other.pointer, retain: true, release: true); + + /// Constructs a [NSMutableString] that wraps the given raw object pointer. + NSMutableString.castFromPointer(ffi.Pointer other, + {bool retain = false, bool release = false}) + : this._(other, retain: retain, release: release); + + /// Returns whether [obj] is an instance of [NSMutableString]. + static bool isInstance(objc.ObjCObjectBase obj) { + return _objc_msgSend_0( + obj.pointer, _sel_isKindOfClass_, _class_NSMutableString); + } + + void replaceCharactersInRange_withString_(_NSRange range, NSString aString) { + _objc_msgSend_354(this.pointer, _sel_replaceCharactersInRange_withString_, + range, aString.pointer); + } + + void insertString_atIndex_(NSString aString, int loc) { + _objc_msgSend_355( + this.pointer, _sel_insertString_atIndex_, aString.pointer, loc); + } + + void deleteCharactersInRange_(_NSRange range) { + _objc_msgSend_295(this.pointer, _sel_deleteCharactersInRange_, range); + } + + void appendString_(NSString aString) { + _objc_msgSend_162(this.pointer, _sel_appendString_, aString.pointer); + } + + void appendFormat_(NSString format) { + _objc_msgSend_162(this.pointer, _sel_appendFormat_, format.pointer); + } + + void setString_(NSString aString) { + _objc_msgSend_162(this.pointer, _sel_setString_, aString.pointer); + } + + int replaceOccurrencesOfString_withString_options_range_(NSString target, + NSString replacement, int options, _NSRange searchRange) { + return _objc_msgSend_356( + this.pointer, + _sel_replaceOccurrencesOfString_withString_options_range_, + target.pointer, + replacement.pointer, + options, + searchRange); + } + + bool applyTransform_reverse_range_updatedRange_(NSString transform, + bool reverse, _NSRange range, ffi.Pointer<_NSRange> resultingRange) { + return _objc_msgSend_357( + this.pointer, + _sel_applyTransform_reverse_range_updatedRange_, + transform.pointer, + reverse, + range, + resultingRange); + } + + NSMutableString initWithCapacity_(int capacity) { + final _ret = + _objc_msgSend_358(this.pointer, _sel_initWithCapacity_, capacity); + return NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableString stringWithCapacity_(int capacity) { + final _ret = _objc_msgSend_358( + _class_NSMutableString, _sel_stringWithCapacity_, capacity); + return NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString init() { + final _ret = _objc_msgSend_2(this.pointer, _sel_init); + return NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString? initWithCoder_(NSCoder coder) { + final _ret = + _objc_msgSend_14(this.pointer, _sel_initWithCoder_, coder.pointer); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + static ffi.Pointer getAvailableStringEncodings() { + return _objc_msgSend_243( + _class_NSMutableString, _sel_availableStringEncodings); + } + + static NSString localizedNameOfStringEncoding_(int encoding) { + final _ret = _objc_msgSend_15( + _class_NSMutableString, _sel_localizedNameOfStringEncoding_, encoding); + return NSString.castFromPointer(_ret, retain: true, release: true); + } + + static int getDefaultCStringEncoding() { + return _objc_msgSend_12( + _class_NSMutableString, _sel_defaultCStringEncoding); + } + + @override + NSMutableString initWithCharactersNoCopy_length_freeWhenDone_( + ffi.Pointer characters, int length, bool freeBuffer) { + final _ret = _objc_msgSend_255( + this.pointer, + _sel_initWithCharactersNoCopy_length_freeWhenDone_, + characters, + length, + freeBuffer); + return NSMutableString.castFromPointer(_ret, retain: false, release: true); + } + + @override + NSMutableString initWithCharactersNoCopy_length_deallocator_( + ffi.Pointer chars, + int len, + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong? deallocator) { + final _ret = _objc_msgSend_256( + this.pointer, + _sel_initWithCharactersNoCopy_length_deallocator_, + chars, + len, + deallocator?.pointer ?? ffi.nullptr); + return NSMutableString.castFromPointer(_ret, retain: false, release: true); + } + + @override + NSMutableString initWithCharacters_length_( + ffi.Pointer characters, int length) { + final _ret = _objc_msgSend_257( + this.pointer, _sel_initWithCharacters_length_, characters, length); + return NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString? initWithUTF8String_( + ffi.Pointer nullTerminatedCString) { + final _ret = _objc_msgSend_258( + this.pointer, _sel_initWithUTF8String_, nullTerminatedCString); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString initWithString_(NSString aString) { + final _ret = + _objc_msgSend_42(this.pointer, _sel_initWithString_, aString.pointer); + return NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString initWithFormat_(NSString format) { + final _ret = + _objc_msgSend_42(this.pointer, _sel_initWithFormat_, format.pointer); + return NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString initWithFormat_arguments_( + NSString format, ffi.Pointer<__va_list_tag> argList) { + final _ret = _objc_msgSend_259( + this.pointer, _sel_initWithFormat_arguments_, format.pointer, argList); + return NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString initWithFormat_locale_(NSString format, NSObject? locale) { + final _ret = _objc_msgSend_260(this.pointer, _sel_initWithFormat_locale_, + format.pointer, locale?.pointer ?? ffi.nullptr); + return NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString initWithFormat_locale_arguments_( + NSString format, NSObject? locale, ffi.Pointer<__va_list_tag> argList) { + final _ret = _objc_msgSend_261( + this.pointer, + _sel_initWithFormat_locale_arguments_, + format.pointer, + locale?.pointer ?? ffi.nullptr, + argList); + return NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString? initWithValidatedFormat_validFormatSpecifiers_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _objc_msgSend_262( + this.pointer, + _sel_initWithValidatedFormat_validFormatSpecifiers_error_, + format.pointer, + validFormatSpecifiers.pointer, + error); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString? initWithValidatedFormat_validFormatSpecifiers_locale_error_( + NSString format, + NSString validFormatSpecifiers, + NSObject? locale, + ffi.Pointer> error) { + final _ret = _objc_msgSend_263( + this.pointer, + _sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_, + format.pointer, + validFormatSpecifiers.pointer, + locale?.pointer ?? ffi.nullptr, + error); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString? + initWithValidatedFormat_validFormatSpecifiers_arguments_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer<__va_list_tag> argList, + ffi.Pointer> error) { + final _ret = _objc_msgSend_264( + this.pointer, + _sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_, + format.pointer, + validFormatSpecifiers.pointer, + argList, + error); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString? + initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_( + NSString format, + NSString validFormatSpecifiers, + NSObject? locale, + ffi.Pointer<__va_list_tag> argList, + ffi.Pointer> error) { + final _ret = _objc_msgSend_265( + this.pointer, + _sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_, + format.pointer, + validFormatSpecifiers.pointer, + locale?.pointer ?? ffi.nullptr, + argList, + error); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString? initWithData_encoding_(NSData data, int encoding) { + final _ret = _objc_msgSend_266( + this.pointer, _sel_initWithData_encoding_, data.pointer, encoding); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString? initWithBytes_length_encoding_( + ffi.Pointer bytes, int len, int encoding) { + final _ret = _objc_msgSend_267(this.pointer, + _sel_initWithBytes_length_encoding_, bytes, len, encoding); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString? initWithBytesNoCopy_length_encoding_freeWhenDone_( + ffi.Pointer bytes, int len, int encoding, bool freeBuffer) { + final _ret = _objc_msgSend_268( + this.pointer, + _sel_initWithBytesNoCopy_length_encoding_freeWhenDone_, + bytes, + len, + encoding, + freeBuffer); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: false, release: true); + } + + @override + NSMutableString? initWithBytesNoCopy_length_encoding_deallocator_( + ffi.Pointer bytes, + int len, + int encoding, + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong? deallocator) { + final _ret = _objc_msgSend_269( + this.pointer, + _sel_initWithBytesNoCopy_length_encoding_deallocator_, + bytes, + len, + encoding, + deallocator?.pointer ?? ffi.nullptr); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: false, release: true); + } + + static NSMutableString string() { + final _ret = _objc_msgSend_2(_class_NSMutableString, _sel_string); + return NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableString stringWithString_(NSString string) { + final _ret = _objc_msgSend_42( + _class_NSMutableString, _sel_stringWithString_, string.pointer); + return NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableString stringWithCharacters_length_( + ffi.Pointer characters, int length) { + final _ret = _objc_msgSend_257(_class_NSMutableString, + _sel_stringWithCharacters_length_, characters, length); + return NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableString? stringWithUTF8String_( + ffi.Pointer nullTerminatedCString) { + final _ret = _objc_msgSend_258(_class_NSMutableString, + _sel_stringWithUTF8String_, nullTerminatedCString); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableString stringWithFormat_(NSString format) { + final _ret = _objc_msgSend_42( + _class_NSMutableString, _sel_stringWithFormat_, format.pointer); + return NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableString localizedStringWithFormat_(NSString format) { + final _ret = _objc_msgSend_42(_class_NSMutableString, + _sel_localizedStringWithFormat_, format.pointer); + return NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableString? + stringWithValidatedFormat_validFormatSpecifiers_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _objc_msgSend_262( + _class_NSMutableString, + _sel_stringWithValidatedFormat_validFormatSpecifiers_error_, + format.pointer, + validFormatSpecifiers.pointer, + error); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableString? + localizedStringWithValidatedFormat_validFormatSpecifiers_error_( + NSString format, + NSString validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _objc_msgSend_262( + _class_NSMutableString, + _sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_, + format.pointer, + validFormatSpecifiers.pointer, + error); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString? initWithCString_encoding_( + ffi.Pointer nullTerminatedCString, int encoding) { + final _ret = _objc_msgSend_270(this.pointer, _sel_initWithCString_encoding_, + nullTerminatedCString, encoding); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableString? stringWithCString_encoding_( + ffi.Pointer cString, int enc) { + final _ret = _objc_msgSend_270( + _class_NSMutableString, _sel_stringWithCString_encoding_, cString, enc); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString? initWithContentsOfURL_encoding_error_( + NSURL url, int enc, ffi.Pointer> error) { + final _ret = _objc_msgSend_271(this.pointer, + _sel_initWithContentsOfURL_encoding_error_, url.pointer, enc, error); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString? initWithContentsOfFile_encoding_error_( + NSString path, int enc, ffi.Pointer> error) { + final _ret = _objc_msgSend_272(this.pointer, + _sel_initWithContentsOfFile_encoding_error_, path.pointer, enc, error); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableString? stringWithContentsOfURL_encoding_error_( + NSURL url, int enc, ffi.Pointer> error) { + final _ret = _objc_msgSend_271(_class_NSMutableString, + _sel_stringWithContentsOfURL_encoding_error_, url.pointer, enc, error); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableString? stringWithContentsOfFile_encoding_error_( + NSString path, int enc, ffi.Pointer> error) { + final _ret = _objc_msgSend_272( + _class_NSMutableString, + _sel_stringWithContentsOfFile_encoding_error_, + path.pointer, + enc, + error); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString? initWithContentsOfURL_usedEncoding_error_( + NSURL url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _objc_msgSend_273( + this.pointer, + _sel_initWithContentsOfURL_usedEncoding_error_, + url.pointer, + enc, + error); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + @override + NSMutableString? initWithContentsOfFile_usedEncoding_error_( + NSString path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _objc_msgSend_274( + this.pointer, + _sel_initWithContentsOfFile_usedEncoding_error_, + path.pointer, + enc, + error); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableString? stringWithContentsOfURL_usedEncoding_error_( + NSURL url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _objc_msgSend_273( + _class_NSMutableString, + _sel_stringWithContentsOfURL_usedEncoding_error_, + url.pointer, + enc, + error); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableString? stringWithContentsOfFile_usedEncoding_error_( + NSString path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _objc_msgSend_274( + _class_NSMutableString, + _sel_stringWithContentsOfFile_usedEncoding_error_, + path.pointer, + enc, + error); + return _ret.address == 0 + ? null + : NSMutableString.castFromPointer(_ret, retain: true, release: true); + } + + static int + stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_( + NSData data, + NSDictionary? opts, + ffi.Pointer> string, + ffi.Pointer usedLossyConversion) { + return _objc_msgSend_275( + _class_NSMutableString, + _sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_, + data.pointer, + opts?.pointer ?? ffi.nullptr, + string, + usedLossyConversion); + } + + static NSObject? stringWithContentsOfFile_(NSString path) { + final _ret = _objc_msgSend_49( + _class_NSMutableString, _sel_stringWithContentsOfFile_, path.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static NSObject? stringWithContentsOfURL_(NSURL url) { + final _ret = _objc_msgSend_214( + _class_NSMutableString, _sel_stringWithContentsOfURL_, url.pointer); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static NSObject? stringWithCString_length_( + ffi.Pointer bytes, int length) { + final _ret = _objc_msgSend_270( + _class_NSMutableString, _sel_stringWithCString_length_, bytes, length); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static NSObject? stringWithCString_(ffi.Pointer bytes) { + final _ret = _objc_msgSend_258( + _class_NSMutableString, _sel_stringWithCString_, bytes); + return _ret.address == 0 + ? null + : NSObject.castFromPointer(_ret, retain: true, release: true); + } + + static NSMutableString new1() { + final _ret = _objc_msgSend_2(_class_NSMutableString, _sel_new); + return NSMutableString.castFromPointer(_ret, retain: false, release: true); + } + + static NSMutableString allocWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = + _objc_msgSend_3(_class_NSMutableString, _sel_allocWithZone_, zone); + return NSMutableString.castFromPointer(_ret, retain: false, release: true); + } + + static NSMutableString alloc() { + final _ret = _objc_msgSend_2(_class_NSMutableString, _sel_alloc); + return NSMutableString.castFromPointer(_ret, retain: false, release: true); + } +} + +late final _class_NSMutableString = objc.getClass("NSMutableString"); +late final _sel_replaceCharactersInRange_withString_ = + objc.registerName("replaceCharactersInRange:withString:"); +final _objc_msgSend_354 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>(); +late final _sel_insertString_atIndex_ = + objc.registerName("insertString:atIndex:"); +final _objc_msgSend_355 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>() + .asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); +late final _sel_deleteCharactersInRange_ = + objc.registerName("deleteCharactersInRange:"); +late final _sel_appendString_ = objc.registerName("appendString:"); +late final _sel_appendFormat_ = objc.registerName("appendFormat:"); +late final _sel_setString_ = objc.registerName("setString:"); +late final _sel_replaceOccurrencesOfString_withString_options_range_ = + objc.registerName("replaceOccurrencesOfString:withString:options:range:"); +final _objc_msgSend_356 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>() + .asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); +late final _sel_applyTransform_reverse_range_updatedRange_ = + objc.registerName("applyTransform:reverse:range:updatedRange:"); +final _objc_msgSend_357 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + _NSRange, + ffi.Pointer<_NSRange>)>>() + .asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + _NSRange, + ffi.Pointer<_NSRange>)>(); +final _objc_msgSend_358 = objc.msgSendPointer + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int)>(); +late final _sel_stringWithCapacity_ = objc.registerName("stringWithCapacity:"); diff --git a/pkgs/objective_c/macos/Classes/objective_c.c b/pkgs/objective_c/macos/Classes/objective_c.c new file mode 100644 index 000000000..83496a45f --- /dev/null +++ b/pkgs/objective_c/macos/Classes/objective_c.c @@ -0,0 +1,8 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// Relative import to be able to reuse the C sources. +// See the comment in ../{projectName}}.podspec for more information. +#include "../../src/objective_c.c" +#include "../../src/include/dart_api_dl.c" diff --git a/pkgs/objective_c/macos/objective_c.podspec b/pkgs/objective_c/macos/objective_c.podspec new file mode 100644 index 000000000..f3ae43b6b --- /dev/null +++ b/pkgs/objective_c/macos/objective_c.podspec @@ -0,0 +1,27 @@ +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint objective_c.podspec` to validate before publishing. +# +Pod::Spec.new do |s| + s.name = 'objective_c' + s.version = '0.0.1' + s.summary = 'A library to access Objective C from Flutter that acts as a support library for package:ffigen.' + s.description = <<-DESC +A library to access Objective C from Flutter that acts as a support library for package:ffigen. + DESC + s.homepage = 'http://example.com' + s.license = { :file => '../LICENSE' } + s.author = { 'Your Company' => 'email@example.com' } + + # This will ensure the source files in Classes/ are included in the native + # builds of apps using this FFI plugin. Podspec does not support relative + # paths, so Classes contains a forwarder C file that relatively imports + # `../src/*` so that the C sources can be shared among all target platforms. + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.dependency 'FlutterMacOS' + + s.platform = :osx, '10.11' + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } + s.swift_version = '5.0' +end diff --git a/pkgs/objective_c/pubspec.yaml b/pkgs/objective_c/pubspec.yaml new file mode 100644 index 000000000..5e2ab89d1 --- /dev/null +++ b/pkgs/objective_c/pubspec.yaml @@ -0,0 +1,44 @@ +# Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +# for details. All rights reserved. Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. + +name: objective_c +description: "A library to access Objective C from Flutter that acts as a support library for package:ffigen." +version: 0.0.1-wip +repository: https://github.com/dart-lang/native/tree/main/pkgs/objective_c + +topics: + - interop + - ffi + - objective_c + - codegen + +environment: + sdk: '>=3.3.0 <4.0.0' + flutter: '>=3.3.0' + +dependencies: + flutter: + sdk: flutter + ffi: ^2.1.0 + plugin_platform_interface: ^2.0.2 + yaml: ^3.1.0 + +dev_dependencies: + ffigen: ^11.0.0 + flutter_test: + sdk: flutter + flutter_lints: ^3.0.0 + test: ^1.21.1 + +dependency_overrides: + ffigen: + path: ../ffigen/ + +flutter: + plugin: + platforms: + ios: + ffiPlugin: true + macos: + ffiPlugin: true diff --git a/pkgs/objective_c/src/CMakeLists.txt b/pkgs/objective_c/src/CMakeLists.txt new file mode 100644 index 000000000..5988f69f1 --- /dev/null +++ b/pkgs/objective_c/src/CMakeLists.txt @@ -0,0 +1,20 @@ +# The Flutter tooling requires that developers have CMake 3.10 or later +# installed. You should not increase this version, as doing so will cause +# the plugin to fail to compile for some customers of the plugin. +cmake_minimum_required(VERSION 3.10) + +project(objective_c_library VERSION 0.0.1 LANGUAGES C) + +add_library(objective_c SHARED + "objective_c.c" + "include/dart_api_dl.c" +) + +target_link_options(objective_c PRIVATE "-undefined dynamic_lookup") + +set_target_properties(objective_c PROPERTIES + PUBLIC_HEADER objective_c.h + OUTPUT_NAME "objective_c" +) + +target_compile_definitions(objective_c PUBLIC DART_SHARED_LIB) diff --git a/pkgs/objective_c/src/foundation.h b/pkgs/objective_c/src/foundation.h new file mode 100644 index 000000000..05eb71f55 --- /dev/null +++ b/pkgs/objective_c/src/foundation.h @@ -0,0 +1,19 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#ifndef OBJECTIVE_C_SRC_FOUNDATION_H_ +#define OBJECTIVE_C_SRC_FOUNDATION_H_ + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#endif // OBJECTIVE_C_SRC_FOUNDATION_H_ diff --git a/pkgs/objective_c/src/include/BUILD.gn b/pkgs/objective_c/src/include/BUILD.gn new file mode 100644 index 000000000..2b10262f8 --- /dev/null +++ b/pkgs/objective_c/src/include/BUILD.gn @@ -0,0 +1,23 @@ +# Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file +# for details. All rights reserved. Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. + +import("../../sdk_args.gni") + +# This rule copies header files to include/ +copy("copy_headers") { + visibility = [ "../../sdk:copy_headers" ] + + sources = [ + "dart_api.h", + "dart_api_dl.c", + "dart_api_dl.h", + "dart_native_api.h", + "dart_tools_api.h", + "dart_version.h", + "internal/dart_api_dl_impl.h", + ] + + outputs = + [ "$root_out_dir/$dart_sdk_output/include/{{source_target_relative}}" ] +} diff --git a/pkgs/objective_c/src/include/analyze_snapshot_api.h b/pkgs/objective_c/src/include/analyze_snapshot_api.h new file mode 100644 index 000000000..38b58e0b3 --- /dev/null +++ b/pkgs/objective_c/src/include/analyze_snapshot_api.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file + * for details. All rights reserved. Use of this source code is governed by a + * BSD-style license that can be found in the LICENSE file. + */ + +#ifndef RUNTIME_INCLUDE_ANALYZE_SNAPSHOT_API_H_ +#define RUNTIME_INCLUDE_ANALYZE_SNAPSHOT_API_H_ + +#include +#include + +namespace dart { +namespace snapshot_analyzer { +typedef struct { + const uint8_t* vm_snapshot_data; + const uint8_t* vm_snapshot_instructions; + const uint8_t* vm_isolate_data; + const uint8_t* vm_isolate_instructions; +} Dart_SnapshotAnalyzerInformation; + +void Dart_DumpSnapshotInformationAsJson( + const Dart_SnapshotAnalyzerInformation& info, + char** buffer, + intptr_t* buffer_length); + +} // namespace snapshot_analyzer +} // namespace dart + +#endif // RUNTIME_INCLUDE_ANALYZE_SNAPSHOT_API_H_ diff --git a/pkgs/objective_c/src/include/bin/dart_io_api.h b/pkgs/objective_c/src/include/bin/dart_io_api.h new file mode 100644 index 000000000..e863d8b9f --- /dev/null +++ b/pkgs/objective_c/src/include/bin/dart_io_api.h @@ -0,0 +1,69 @@ +// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#ifndef RUNTIME_INCLUDE_BIN_DART_IO_API_H_ +#define RUNTIME_INCLUDE_BIN_DART_IO_API_H_ + +#include "../dart_tools_api.h" + +namespace dart { +namespace bin { + +// Bootstraps 'dart:io'. +void BootstrapDartIo(); + +// Cleans up 'dart:io'. +void CleanupDartIo(); + +// Lets dart:io know where the system temporary directory is located. +// Currently only wired up on Android. +void SetSystemTempDirectory(const char* system_temp); + +// Tells the system whether to capture Stdout events. +void SetCaptureStdout(bool value); + +// Tells the system whether to capture Stderr events. +void SetCaptureStderr(bool value); + +// Should Stdout events be captured? +bool ShouldCaptureStdout(); + +// Should Stderr events be captured? +bool ShouldCaptureStderr(); + +// Set the executable name used by Platform.executable. +void SetExecutableName(const char* executable_name); + +// Set the arguments used by Platform.executableArguments. +void SetExecutableArguments(int script_index, char** argv); + +// Set dart:io implementation specific fields of Dart_EmbedderInformation. +void GetIOEmbedderInformation(Dart_EmbedderInformation* info); + +// Appropriate to assign to Dart_InitializeParams.file_open/read/write/close. +void* OpenFile(const char* name, bool write); +void ReadFile(uint8_t** data, intptr_t* file_len, void* stream); +void WriteFile(const void* buffer, intptr_t num_bytes, void* stream); +void CloseFile(void* stream); + +// Generates 'length' random bytes into 'buffer'. Returns true on success +// and false on failure. This is appropriate to assign to +// Dart_InitializeParams.entropy_source. +bool GetEntropy(uint8_t* buffer, intptr_t length); + +// Performs a lookup of the I/O Dart_NativeFunction with a specified 'name' and +// 'argument_count'. Returns NULL if no I/O native function with a matching +// name and parameter count is found. +Dart_NativeFunction LookupIONative(Dart_Handle name, + int argument_count, + bool* auto_setup_scope); + +// Returns the symbol for I/O native function 'nf'. Returns NULL if 'nf' is not +// a valid I/O native function. +const uint8_t* LookupIONativeSymbol(Dart_NativeFunction nf); + +} // namespace bin +} // namespace dart + +#endif // RUNTIME_INCLUDE_BIN_DART_IO_API_H_ diff --git a/pkgs/objective_c/src/include/dart_api.h b/pkgs/objective_c/src/include/dart_api.h new file mode 100644 index 000000000..6abe8c35d --- /dev/null +++ b/pkgs/objective_c/src/include/dart_api.h @@ -0,0 +1,4097 @@ +/* + * Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file + * for details. All rights reserved. Use of this source code is governed by a + * BSD-style license that can be found in the LICENSE file. + */ + +#ifndef RUNTIME_INCLUDE_DART_API_H_ +#define RUNTIME_INCLUDE_DART_API_H_ + +/** \mainpage Dart Embedding API Reference + * + * This reference describes the Dart Embedding API, which is used to embed the + * Dart Virtual Machine within C/C++ applications. + * + * This reference is generated from the header include/dart_api.h. + */ + +/* __STDC_FORMAT_MACROS has to be defined before including to + * enable platform independent printf format specifiers. */ +#ifndef __STDC_FORMAT_MACROS +#define __STDC_FORMAT_MACROS +#endif + +#include +#include +#include + +#if defined(__Fuchsia__) +#include +#endif + +#ifdef __cplusplus +#define DART_EXTERN_C extern "C" +#else +#define DART_EXTERN_C extern +#endif + +#if defined(__CYGWIN__) +#error Tool chain and platform not supported. +#elif defined(_WIN32) +#if defined(DART_SHARED_LIB) +#define DART_EXPORT DART_EXTERN_C __declspec(dllexport) +#else +#define DART_EXPORT DART_EXTERN_C +#endif +#else +#if __GNUC__ >= 4 +#if defined(DART_SHARED_LIB) +#define DART_EXPORT \ + DART_EXTERN_C __attribute__((visibility("default"))) __attribute((used)) +#else +#define DART_EXPORT DART_EXTERN_C +#endif +#else +#error Tool chain not supported. +#endif +#endif + +#if __GNUC__ +#define DART_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#define DART_DEPRECATED(msg) __attribute__((deprecated(msg))) +#elif _MSC_VER +#define DART_WARN_UNUSED_RESULT _Check_return_ +#define DART_DEPRECATED(msg) __declspec(deprecated(msg)) +#else +#define DART_WARN_UNUSED_RESULT +#define DART_DEPRECATED(msg) +#endif + +/* + * ======= + * Handles + * ======= + */ + +/** + * An isolate is the unit of concurrency in Dart. Each isolate has + * its own memory and thread of control. No state is shared between + * isolates. Instead, isolates communicate by message passing. + * + * Each thread keeps track of its current isolate, which is the + * isolate which is ready to execute on the current thread. The + * current isolate may be NULL, in which case no isolate is ready to + * execute. Most of the Dart apis require there to be a current + * isolate in order to function without error. The current isolate is + * set by any call to Dart_CreateIsolateGroup or Dart_EnterIsolate. + */ +typedef struct _Dart_Isolate* Dart_Isolate; +typedef struct _Dart_IsolateGroup* Dart_IsolateGroup; + +/** + * An object reference managed by the Dart VM garbage collector. + * + * Because the garbage collector may move objects, it is unsafe to + * refer to objects directly. Instead, we refer to objects through + * handles, which are known to the garbage collector and updated + * automatically when the object is moved. Handles should be passed + * by value (except in cases like out-parameters) and should never be + * allocated on the heap. + * + * Most functions in the Dart Embedding API return a handle. When a + * function completes normally, this will be a valid handle to an + * object in the Dart VM heap. This handle may represent the result of + * the operation or it may be a special valid handle used merely to + * indicate successful completion. Note that a valid handle may in + * some cases refer to the null object. + * + * --- Error handles --- + * + * When a function encounters a problem that prevents it from + * completing normally, it returns an error handle (See Dart_IsError). + * An error handle has an associated error message that gives more + * details about the problem (See Dart_GetError). + * + * There are four kinds of error handles that can be produced, + * depending on what goes wrong: + * + * - Api error handles are produced when an api function is misused. + * This happens when a Dart embedding api function is called with + * invalid arguments or in an invalid context. + * + * - Unhandled exception error handles are produced when, during the + * execution of Dart code, an exception is thrown but not caught. + * Prototypically this would occur during a call to Dart_Invoke, but + * it can occur in any function which triggers the execution of Dart + * code (for example, Dart_ToString). + * + * An unhandled exception error provides access to an exception and + * stacktrace via the functions Dart_ErrorGetException and + * Dart_ErrorGetStackTrace. + * + * - Compilation error handles are produced when, during the execution + * of Dart code, a compile-time error occurs. As above, this can + * occur in any function which triggers the execution of Dart code. + * + * - Fatal error handles are produced when the system wants to shut + * down the current isolate. + * + * --- Propagating errors --- + * + * When an error handle is returned from the top level invocation of + * Dart code in a program, the embedder must handle the error as they + * see fit. Often, the embedder will print the error message produced + * by Dart_Error and exit the program. + * + * When an error is returned while in the body of a native function, + * it can be propagated up the call stack by calling + * Dart_PropagateError, Dart_SetReturnValue, or Dart_ThrowException. + * Errors should be propagated unless there is a specific reason not + * to. If an error is not propagated then it is ignored. For + * example, if an unhandled exception error is ignored, that + * effectively "catches" the unhandled exception. Fatal errors must + * always be propagated. + * + * When an error is propagated, any current scopes created by + * Dart_EnterScope will be exited. + * + * Using Dart_SetReturnValue to propagate an exception is somewhat + * more convenient than using Dart_PropagateError, and should be + * preferred for reasons discussed below. + * + * Dart_PropagateError and Dart_ThrowException do not return. Instead + * they transfer control non-locally using a setjmp-like mechanism. + * This can be inconvenient if you have resources that you need to + * clean up before propagating the error. + * + * When relying on Dart_PropagateError, we often return error handles + * rather than propagating them from helper functions. Consider the + * following contrived example: + * + * 1 Dart_Handle isLongStringHelper(Dart_Handle arg) { + * 2 intptr_t* length = 0; + * 3 result = Dart_StringLength(arg, &length); + * 4 if (Dart_IsError(result)) { + * 5 return result; + * 6 } + * 7 return Dart_NewBoolean(length > 100); + * 8 } + * 9 + * 10 void NativeFunction_isLongString(Dart_NativeArguments args) { + * 11 Dart_EnterScope(); + * 12 AllocateMyResource(); + * 13 Dart_Handle arg = Dart_GetNativeArgument(args, 0); + * 14 Dart_Handle result = isLongStringHelper(arg); + * 15 if (Dart_IsError(result)) { + * 16 FreeMyResource(); + * 17 Dart_PropagateError(result); + * 18 abort(); // will not reach here + * 19 } + * 20 Dart_SetReturnValue(result); + * 21 FreeMyResource(); + * 22 Dart_ExitScope(); + * 23 } + * + * In this example, we have a native function which calls a helper + * function to do its work. On line 5, the helper function could call + * Dart_PropagateError, but that would not give the native function a + * chance to call FreeMyResource(), causing a leak. Instead, the + * helper function returns the error handle to the caller, giving the + * caller a chance to clean up before propagating the error handle. + * + * When an error is propagated by calling Dart_SetReturnValue, the + * native function will be allowed to complete normally and then the + * exception will be propagated only once the native call + * returns. This can be convenient, as it allows the C code to clean + * up normally. + * + * The example can be written more simply using Dart_SetReturnValue to + * propagate the error. + * + * 1 Dart_Handle isLongStringHelper(Dart_Handle arg) { + * 2 intptr_t* length = 0; + * 3 result = Dart_StringLength(arg, &length); + * 4 if (Dart_IsError(result)) { + * 5 return result + * 6 } + * 7 return Dart_NewBoolean(length > 100); + * 8 } + * 9 + * 10 void NativeFunction_isLongString(Dart_NativeArguments args) { + * 11 Dart_EnterScope(); + * 12 AllocateMyResource(); + * 13 Dart_Handle arg = Dart_GetNativeArgument(args, 0); + * 14 Dart_SetReturnValue(isLongStringHelper(arg)); + * 15 FreeMyResource(); + * 16 Dart_ExitScope(); + * 17 } + * + * In this example, the call to Dart_SetReturnValue on line 14 will + * either return the normal return value or the error (potentially + * generated on line 3). The call to FreeMyResource on line 15 will + * execute in either case. + * + * --- Local and persistent handles --- + * + * Local handles are allocated within the current scope (see + * Dart_EnterScope) and go away when the current scope exits. Unless + * otherwise indicated, callers should assume that all functions in + * the Dart embedding api return local handles. + * + * Persistent handles are allocated within the current isolate. They + * can be used to store objects across scopes. Persistent handles have + * the lifetime of the current isolate unless they are explicitly + * deallocated (see Dart_DeletePersistentHandle). + * The type Dart_Handle represents a handle (both local and persistent). + * The type Dart_PersistentHandle is a Dart_Handle and it is used to + * document that a persistent handle is expected as a parameter to a call + * or the return value from a call is a persistent handle. + * + * FinalizableHandles are persistent handles which are auto deleted when + * the object is garbage collected. It is never safe to use these handles + * unless you know the object is still reachable. + * + * WeakPersistentHandles are persistent handles which are automatically set + * to point Dart_Null when the object is garbage collected. They are not auto + * deleted, so it is safe to use them after the object has become unreachable. + */ +typedef struct _Dart_Handle* Dart_Handle; +typedef Dart_Handle Dart_PersistentHandle; +typedef struct _Dart_WeakPersistentHandle* Dart_WeakPersistentHandle; +typedef struct _Dart_FinalizableHandle* Dart_FinalizableHandle; +// These structs are versioned by DART_API_DL_MAJOR_VERSION, bump the +// version when changing this struct. + +typedef void (*Dart_HandleFinalizer)(void* isolate_callback_data, void* peer); + +/** + * Is this an error handle? + * + * Requires there to be a current isolate. + */ +DART_EXPORT bool Dart_IsError(Dart_Handle handle); + +/** + * Is this an api error handle? + * + * Api error handles are produced when an api function is misused. + * This happens when a Dart embedding api function is called with + * invalid arguments or in an invalid context. + * + * Requires there to be a current isolate. + */ +DART_EXPORT bool Dart_IsApiError(Dart_Handle handle); + +/** + * Is this an unhandled exception error handle? + * + * Unhandled exception error handles are produced when, during the + * execution of Dart code, an exception is thrown but not caught. + * This can occur in any function which triggers the execution of Dart + * code. + * + * See Dart_ErrorGetException and Dart_ErrorGetStackTrace. + * + * Requires there to be a current isolate. + */ +DART_EXPORT bool Dart_IsUnhandledExceptionError(Dart_Handle handle); + +/** + * Is this a compilation error handle? + * + * Compilation error handles are produced when, during the execution + * of Dart code, a compile-time error occurs. This can occur in any + * function which triggers the execution of Dart code. + * + * Requires there to be a current isolate. + */ +DART_EXPORT bool Dart_IsCompilationError(Dart_Handle handle); + +/** + * Is this a fatal error handle? + * + * Fatal error handles are produced when the system wants to shut down + * the current isolate. + * + * Requires there to be a current isolate. + */ +DART_EXPORT bool Dart_IsFatalError(Dart_Handle handle); + +/** + * Gets the error message from an error handle. + * + * Requires there to be a current isolate. + * + * \return A C string containing an error message if the handle is + * error. An empty C string ("") if the handle is valid. This C + * String is scope allocated and is only valid until the next call + * to Dart_ExitScope. +*/ +DART_EXPORT const char* Dart_GetError(Dart_Handle handle); + +/** + * Is this an error handle for an unhandled exception? + */ +DART_EXPORT bool Dart_ErrorHasException(Dart_Handle handle); + +/** + * Gets the exception Object from an unhandled exception error handle. + */ +DART_EXPORT Dart_Handle Dart_ErrorGetException(Dart_Handle handle); + +/** + * Gets the stack trace Object from an unhandled exception error handle. + */ +DART_EXPORT Dart_Handle Dart_ErrorGetStackTrace(Dart_Handle handle); + +/** + * Produces an api error handle with the provided error message. + * + * Requires there to be a current isolate. + * + * \param error the error message. + */ +DART_EXPORT Dart_Handle Dart_NewApiError(const char* error); +DART_EXPORT Dart_Handle Dart_NewCompilationError(const char* error); + +/** + * Produces a new unhandled exception error handle. + * + * Requires there to be a current isolate. + * + * \param exception An instance of a Dart object to be thrown or + * an ApiError or CompilationError handle. + * When an ApiError or CompilationError handle is passed in + * a string object of the error message is created and it becomes + * the Dart object to be thrown. + */ +DART_EXPORT Dart_Handle Dart_NewUnhandledExceptionError(Dart_Handle exception); + +/** + * Propagates an error. + * + * If the provided handle is an unhandled exception error, this + * function will cause the unhandled exception to be rethrown. This + * will proceed in the standard way, walking up Dart frames until an + * appropriate 'catch' block is found, executing 'finally' blocks, + * etc. + * + * If the error is not an unhandled exception error, we will unwind + * the stack to the next C frame. Intervening Dart frames will be + * discarded; specifically, 'finally' blocks will not execute. This + * is the standard way that compilation errors (and the like) are + * handled by the Dart runtime. + * + * In either case, when an error is propagated any current scopes + * created by Dart_EnterScope will be exited. + * + * See the additional discussion under "Propagating Errors" at the + * beginning of this file. + * + * \param handle An error handle (See Dart_IsError) + * + * On success, this function does not return. On failure, the + * process is terminated. + */ +DART_EXPORT void Dart_PropagateError(Dart_Handle handle); + +/** + * Converts an object to a string. + * + * May generate an unhandled exception error. + * + * \return The converted string if no error occurs during + * the conversion. If an error does occur, an error handle is + * returned. + */ +DART_EXPORT Dart_Handle Dart_ToString(Dart_Handle object); + +/** + * Checks to see if two handles refer to identically equal objects. + * + * If both handles refer to instances, this is equivalent to using the top-level + * function identical() from dart:core. Otherwise, returns whether the two + * argument handles refer to the same object. + * + * \param obj1 An object to be compared. + * \param obj2 An object to be compared. + * + * \return True if the objects are identically equal. False otherwise. + */ +DART_EXPORT bool Dart_IdentityEquals(Dart_Handle obj1, Dart_Handle obj2); + +/** + * Allocates a handle in the current scope from a persistent handle. + */ +DART_EXPORT Dart_Handle Dart_HandleFromPersistent(Dart_PersistentHandle object); + +/** + * Allocates a handle in the current scope from a weak persistent handle. + * + * This will be a handle to Dart_Null if the object has been garbage collected. + */ +DART_EXPORT Dart_Handle +Dart_HandleFromWeakPersistent(Dart_WeakPersistentHandle object); + +/** + * Allocates a persistent handle for an object. + * + * This handle has the lifetime of the current isolate unless it is + * explicitly deallocated by calling Dart_DeletePersistentHandle. + * + * Requires there to be a current isolate. + */ +DART_EXPORT Dart_PersistentHandle Dart_NewPersistentHandle(Dart_Handle object); + +/** + * Assign value of local handle to a persistent handle. + * + * Requires there to be a current isolate. + * + * \param obj1 A persistent handle whose value needs to be set. + * \param obj2 An object whose value needs to be set to the persistent handle. + */ +DART_EXPORT void Dart_SetPersistentHandle(Dart_PersistentHandle obj1, + Dart_Handle obj2); + +/** + * Deallocates a persistent handle. + * + * Requires there to be a current isolate group. + */ +DART_EXPORT void Dart_DeletePersistentHandle(Dart_PersistentHandle object); + +/** + * Allocates a weak persistent handle for an object. + * + * This handle has the lifetime of the current isolate. The handle can also be + * explicitly deallocated by calling Dart_DeleteWeakPersistentHandle. + * + * If the object becomes unreachable the callback is invoked with the peer as + * argument. The callback can be executed on any thread, will have a current + * isolate group, but will not have a current isolate. The callback can only + * call Dart_DeletePersistentHandle or Dart_DeleteWeakPersistentHandle. This + * gives the embedder the ability to cleanup data associated with the object. + * The handle will point to the Dart_Null object after the finalizer has been + * run. It is illegal to call into the VM with any other Dart_* functions from + * the callback. If the handle is deleted before the object becomes + * unreachable, the callback is never invoked. + * + * Requires there to be a current isolate. + * + * \param object An object with identity. + * \param peer A pointer to a native object or NULL. This value is + * provided to callback when it is invoked. + * \param external_allocation_size The number of externally allocated + * bytes for peer. Used to inform the garbage collector. + * \param callback A function pointer that will be invoked sometime + * after the object is garbage collected, unless the handle has been deleted. + * A valid callback needs to be specified it cannot be NULL. + * + * \return The weak persistent handle or NULL. NULL is returned in case of bad + * parameters. + */ +DART_EXPORT Dart_WeakPersistentHandle +Dart_NewWeakPersistentHandle(Dart_Handle object, + void* peer, + intptr_t external_allocation_size, + Dart_HandleFinalizer callback); + +/** + * Deletes the given weak persistent [object] handle. + * + * Requires there to be a current isolate group. + */ +DART_EXPORT void Dart_DeleteWeakPersistentHandle( + Dart_WeakPersistentHandle object); + +/** + * Allocates a finalizable handle for an object. + * + * This handle has the lifetime of the current isolate group unless the object + * pointed to by the handle is garbage collected, in this case the VM + * automatically deletes the handle after invoking the callback associated + * with the handle. The handle can also be explicitly deallocated by + * calling Dart_DeleteFinalizableHandle. + * + * If the object becomes unreachable the callback is invoked with the + * the peer as argument. The callback can be executed on any thread, will have + * an isolate group, but will not have a current isolate. The callback can only + * call Dart_DeletePersistentHandle or Dart_DeleteWeakPersistentHandle. + * This gives the embedder the ability to cleanup data associated with the + * object and clear out any cached references to the handle. All references to + * this handle after the callback will be invalid. It is illegal to call into + * the VM with any other Dart_* functions from the callback. If the handle is + * deleted before the object becomes unreachable, the callback is never + * invoked. + * + * Requires there to be a current isolate. + * + * \param object An object with identity. + * \param peer A pointer to a native object or NULL. This value is + * provided to callback when it is invoked. + * \param external_allocation_size The number of externally allocated + * bytes for peer. Used to inform the garbage collector. + * \param callback A function pointer that will be invoked sometime + * after the object is garbage collected, unless the handle has been deleted. + * A valid callback needs to be specified it cannot be NULL. + * + * \return The finalizable handle or NULL. NULL is returned in case of bad + * parameters. + */ +DART_EXPORT Dart_FinalizableHandle +Dart_NewFinalizableHandle(Dart_Handle object, + void* peer, + intptr_t external_allocation_size, + Dart_HandleFinalizer callback); + +/** + * Deletes the given finalizable [object] handle. + * + * The caller has to provide the actual Dart object the handle was created from + * to prove the object (and therefore the finalizable handle) is still alive. + * + * Requires there to be a current isolate. + */ +DART_EXPORT void Dart_DeleteFinalizableHandle(Dart_FinalizableHandle object, + Dart_Handle strong_ref_to_object); + +/* + * ========================== + * Initialization and Globals + * ========================== + */ + +/** + * Gets the version string for the Dart VM. + * + * The version of the Dart VM can be accessed without initializing the VM. + * + * \return The version string for the embedded Dart VM. + */ +DART_EXPORT const char* Dart_VersionString(void); + +/** + * Isolate specific flags are set when creating a new isolate using the + * Dart_IsolateFlags structure. + * + * Current version of flags is encoded in a 32-bit integer with 16 bits used + * for each part. + */ + +#define DART_FLAGS_CURRENT_VERSION (0x0000000d) + +typedef struct { + int32_t version; + bool enable_asserts; + bool use_field_guards; + bool use_osr; + bool obfuscate; + bool load_vmservice_library; + bool null_safety; + bool is_system_isolate; + bool is_service_isolate; + bool is_kernel_isolate; + bool snapshot_is_dontneed_safe; + bool branch_coverage; +} Dart_IsolateFlags; + +/** + * Initialize Dart_IsolateFlags with correct version and default values. + */ +DART_EXPORT void Dart_IsolateFlagsInitialize(Dart_IsolateFlags* flags); + +/** + * An isolate creation and initialization callback function. + * + * This callback, provided by the embedder, is called when the VM + * needs to create an isolate. The callback should create an isolate + * by calling Dart_CreateIsolateGroup and load any scripts required for + * execution. + * + * This callback may be called on a different thread than the one + * running the parent isolate. + * + * When the function returns NULL, it is the responsibility of this + * function to ensure that Dart_ShutdownIsolate has been called if + * required (for example, if the isolate was created successfully by + * Dart_CreateIsolateGroup() but the root library fails to load + * successfully, then the function should call Dart_ShutdownIsolate + * before returning). + * + * When the function returns NULL, the function should set *error to + * a malloc-allocated buffer containing a useful error message. The + * caller of this function (the VM) will make sure that the buffer is + * freed. + * + * \param script_uri The uri of the main source file or snapshot to load. + * Either the URI of the parent isolate set in Dart_CreateIsolateGroup for + * Isolate.spawn, or the argument to Isolate.spawnUri canonicalized by the + * library tag handler of the parent isolate. + * The callback is responsible for loading the program by a call to + * Dart_LoadScriptFromKernel. + * \param main The name of the main entry point this isolate will + * eventually run. This is provided for advisory purposes only to + * improve debugging messages. The main function is not invoked by + * this function. + * \param package_root Ignored. + * \param package_config Uri of the package configuration file (either in format + * of .packages or .dart_tool/package_config.json) for this isolate + * to resolve package imports against. If this parameter is not passed the + * package resolution of the parent isolate should be used. + * \param flags Default flags for this isolate being spawned. Either inherited + * from the spawning isolate or passed as parameters when spawning the + * isolate from Dart code. + * \param isolate_data The isolate data which was passed to the + * parent isolate when it was created by calling Dart_CreateIsolateGroup(). + * \param error A structure into which the embedder can place a + * C string containing an error message in the case of failures. + * + * \return The embedder returns NULL if the creation and + * initialization was not successful and the isolate if successful. + */ +typedef Dart_Isolate (*Dart_IsolateGroupCreateCallback)( + const char* script_uri, + const char* main, + const char* package_root, + const char* package_config, + Dart_IsolateFlags* flags, + void* isolate_data, + char** error); + +/** + * An isolate initialization callback function. + * + * This callback, provided by the embedder, is called when the VM has created an + * isolate within an existing isolate group (i.e. from the same source as an + * existing isolate). + * + * The callback should setup native resolvers and might want to set a custom + * message handler via [Dart_SetMessageNotifyCallback] and mark the isolate as + * runnable. + * + * This callback may be called on a different thread than the one + * running the parent isolate. + * + * When the function returns `false`, it is the responsibility of this + * function to ensure that `Dart_ShutdownIsolate` has been called. + * + * When the function returns `false`, the function should set *error to + * a malloc-allocated buffer containing a useful error message. The + * caller of this function (the VM) will make sure that the buffer is + * freed. + * + * \param child_isolate_data The callback data to associate with the new + * child isolate. + * \param error A structure into which the embedder can place a + * C string containing an error message in the case the initialization fails. + * + * \return The embedder returns true if the initialization was successful and + * false otherwise (in which case the VM will terminate the isolate). + */ +typedef bool (*Dart_InitializeIsolateCallback)(void** child_isolate_data, + char** error); + +/** + * An isolate shutdown callback function. + * + * This callback, provided by the embedder, is called before the vm + * shuts down an isolate. The isolate being shutdown will be the current + * isolate. It is safe to run Dart code. + * + * This function should be used to dispose of native resources that + * are allocated to an isolate in order to avoid leaks. + * + * \param isolate_group_data The same callback data which was passed to the + * isolate group when it was created. + * \param isolate_data The same callback data which was passed to the isolate + * when it was created. + */ +typedef void (*Dart_IsolateShutdownCallback)(void* isolate_group_data, + void* isolate_data); + +/** + * An isolate cleanup callback function. + * + * This callback, provided by the embedder, is called after the vm + * shuts down an isolate. There will be no current isolate and it is *not* + * safe to run Dart code. + * + * This function should be used to dispose of native resources that + * are allocated to an isolate in order to avoid leaks. + * + * \param isolate_group_data The same callback data which was passed to the + * isolate group when it was created. + * \param isolate_data The same callback data which was passed to the isolate + * when it was created. + */ +typedef void (*Dart_IsolateCleanupCallback)(void* isolate_group_data, + void* isolate_data); + +/** + * An isolate group cleanup callback function. + * + * This callback, provided by the embedder, is called after the vm + * shuts down an isolate group. + * + * This function should be used to dispose of native resources that + * are allocated to an isolate in order to avoid leaks. + * + * \param isolate_group_data The same callback data which was passed to the + * isolate group when it was created. + * + */ +typedef void (*Dart_IsolateGroupCleanupCallback)(void* isolate_group_data); + +/** + * A thread start callback function. + * This callback, provided by the embedder, is called after a thread in the + * vm thread pool starts. + * This function could be used to adjust thread priority or attach native + * resources to the thread. + */ +typedef void (*Dart_ThreadStartCallback)(void); + +/** + * A thread death callback function. + * This callback, provided by the embedder, is called before a thread in the + * vm thread pool exits. + * This function could be used to dispose of native resources that + * are associated and attached to the thread, in order to avoid leaks. + */ +typedef void (*Dart_ThreadExitCallback)(void); + +/** + * Opens a file for reading or writing. + * + * Callback provided by the embedder for file operations. If the + * embedder does not allow file operations this callback can be + * NULL. + * + * \param name The name of the file to open. + * \param write A boolean variable which indicates if the file is to + * opened for writing. If there is an existing file it needs to truncated. + */ +typedef void* (*Dart_FileOpenCallback)(const char* name, bool write); + +/** + * Read contents of file. + * + * Callback provided by the embedder for file operations. If the + * embedder does not allow file operations this callback can be + * NULL. + * + * \param data Buffer allocated in the callback into which the contents + * of the file are read into. It is the responsibility of the caller to + * free this buffer. + * \param file_length A variable into which the length of the file is returned. + * In the case of an error this value would be -1. + * \param stream Handle to the opened file. + */ +typedef void (*Dart_FileReadCallback)(uint8_t** data, + intptr_t* file_length, + void* stream); + +/** + * Write data into file. + * + * Callback provided by the embedder for file operations. If the + * embedder does not allow file operations this callback can be + * NULL. + * + * \param data Buffer which needs to be written into the file. + * \param length Length of the buffer. + * \param stream Handle to the opened file. + */ +typedef void (*Dart_FileWriteCallback)(const void* data, + intptr_t length, + void* stream); + +/** + * Closes the opened file. + * + * Callback provided by the embedder for file operations. If the + * embedder does not allow file operations this callback can be + * NULL. + * + * \param stream Handle to the opened file. + */ +typedef void (*Dart_FileCloseCallback)(void* stream); + +typedef bool (*Dart_EntropySource)(uint8_t* buffer, intptr_t length); + +/** + * Callback provided by the embedder that is used by the vmservice isolate + * to request the asset archive. The asset archive must be an uncompressed tar + * archive that is stored in a Uint8List. + * + * If the embedder has no vmservice isolate assets, the callback can be NULL. + * + * \return The embedder must return a handle to a Uint8List containing an + * uncompressed tar archive or null. + */ +typedef Dart_Handle (*Dart_GetVMServiceAssetsArchive)(void); + +/** + * The current version of the Dart_InitializeFlags. Should be incremented every + * time Dart_InitializeFlags changes in a binary incompatible way. + */ +#define DART_INITIALIZE_PARAMS_CURRENT_VERSION (0x00000008) + +/** Forward declaration */ +struct Dart_CodeObserver; + +/** + * Callback provided by the embedder that is used by the VM to notify on code + * object creation, *before* it is invoked the first time. + * This is useful for embedders wanting to e.g. keep track of PCs beyond + * the lifetime of the garbage collected code objects. + * Note that an address range may be used by more than one code object over the + * lifecycle of a process. Clients of this function should record timestamps for + * these compilation events and when collecting PCs to disambiguate reused + * address ranges. + */ +typedef void (*Dart_OnNewCodeCallback)(struct Dart_CodeObserver* observer, + const char* name, + uintptr_t base, + uintptr_t size); + +typedef struct Dart_CodeObserver { + void* data; + + Dart_OnNewCodeCallback on_new_code; +} Dart_CodeObserver; + +/** + * Optional callback provided by the embedder that is used by the VM to + * implement registration of kernel blobs for the subsequent Isolate.spawnUri + * If no callback is provided, the registration of kernel blobs will throw + * an error. + * + * \param kernel_buffer A buffer which contains a kernel program. Callback + * should copy the contents of `kernel_buffer` as + * it may be freed immediately after registration. + * \param kernel_buffer_size The size of `kernel_buffer`. + * + * \return A C string representing URI which can be later used + * to spawn a new isolate. This C String should be scope allocated + * or owned by the embedder. + * Returns NULL if embedder runs out of memory. + */ +typedef const char* (*Dart_RegisterKernelBlobCallback)( + const uint8_t* kernel_buffer, + intptr_t kernel_buffer_size); + +/** + * Optional callback provided by the embedder that is used by the VM to + * unregister kernel blobs. + * If no callback is provided, the unregistration of kernel blobs will throw + * an error. + * + * \param kernel_blob_uri URI of the kernel blob to unregister. + */ +typedef void (*Dart_UnregisterKernelBlobCallback)(const char* kernel_blob_uri); + +/** + * Describes how to initialize the VM. Used with Dart_Initialize. + */ +typedef struct { + /** + * Identifies the version of the struct used by the client. + * should be initialized to DART_INITIALIZE_PARAMS_CURRENT_VERSION. + */ + int32_t version; + + /** + * A buffer containing snapshot data, or NULL if no snapshot is provided. + * + * If provided, the buffer must remain valid until Dart_Cleanup returns. + */ + const uint8_t* vm_snapshot_data; + + /** + * A buffer containing a snapshot of precompiled instructions, or NULL if + * no snapshot is provided. + * + * If provided, the buffer must remain valid until Dart_Cleanup returns. + */ + const uint8_t* vm_snapshot_instructions; + + /** + * A function to be called during isolate group creation. + * See Dart_IsolateGroupCreateCallback. + */ + Dart_IsolateGroupCreateCallback create_group; + + /** + * A function to be called during isolate + * initialization inside an existing isolate group. + * See Dart_InitializeIsolateCallback. + */ + Dart_InitializeIsolateCallback initialize_isolate; + + /** + * A function to be called right before an isolate is shutdown. + * See Dart_IsolateShutdownCallback. + */ + Dart_IsolateShutdownCallback shutdown_isolate; + + /** + * A function to be called after an isolate was shutdown. + * See Dart_IsolateCleanupCallback. + */ + Dart_IsolateCleanupCallback cleanup_isolate; + + /** + * A function to be called after an isolate group is + * shutdown. See Dart_IsolateGroupCleanupCallback. + */ + Dart_IsolateGroupCleanupCallback cleanup_group; + + Dart_ThreadStartCallback thread_start; + Dart_ThreadExitCallback thread_exit; + Dart_FileOpenCallback file_open; + Dart_FileReadCallback file_read; + Dart_FileWriteCallback file_write; + Dart_FileCloseCallback file_close; + Dart_EntropySource entropy_source; + + /** + * A function to be called by the service isolate when it requires the + * vmservice assets archive. See Dart_GetVMServiceAssetsArchive. + */ + Dart_GetVMServiceAssetsArchive get_service_assets; + + bool start_kernel_isolate; + + /** + * An external code observer callback function. The observer can be invoked + * as early as during the Dart_Initialize() call. + */ + Dart_CodeObserver* code_observer; + + /** + * Kernel blob registration callback function. See Dart_RegisterKernelBlobCallback. + */ + Dart_RegisterKernelBlobCallback register_kernel_blob; + + /** + * Kernel blob unregistration callback function. See Dart_UnregisterKernelBlobCallback. + */ + Dart_UnregisterKernelBlobCallback unregister_kernel_blob; + +#if defined(__Fuchsia__) + /** + * The resource needed to use zx_vmo_replace_as_executable. Can be + * ZX_HANDLE_INVALID if the process has ambient-replace-as-executable or if + * executable memory is not needed (e.g., this is an AOT runtime). + */ + zx_handle_t vmex_resource; +#endif +} Dart_InitializeParams; + +/** + * Initializes the VM. + * + * \param params A struct containing initialization information. The version + * field of the struct must be DART_INITIALIZE_PARAMS_CURRENT_VERSION. + * + * \return NULL if initialization is successful. Returns an error message + * otherwise. The caller is responsible for freeing the error message. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT char* Dart_Initialize( + Dart_InitializeParams* params); + +/** + * Cleanup state in the VM before process termination. + * + * \return NULL if cleanup is successful. Returns an error message otherwise. + * The caller is responsible for freeing the error message. + * + * NOTE: This function must not be called on a thread that was created by the VM + * itself. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT char* Dart_Cleanup(void); + +/** + * Sets command line flags. Should be called before Dart_Initialize. + * + * \param argc The length of the arguments array. + * \param argv An array of arguments. + * + * \return NULL if successful. Returns an error message otherwise. + * The caller is responsible for freeing the error message. + * + * NOTE: This call does not store references to the passed in c-strings. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT char* Dart_SetVMFlags(int argc, + const char** argv); + +/** + * Returns true if the named VM flag is of boolean type, specified, and set to + * true. + * + * \param flag_name The name of the flag without leading punctuation + * (example: "enable_asserts"). + */ +DART_EXPORT bool Dart_IsVMFlagSet(const char* flag_name); + +/* + * ======== + * Isolates + * ======== + */ + +/** + * Creates a new isolate. The new isolate becomes the current isolate. + * + * A snapshot can be used to restore the VM quickly to a saved state + * and is useful for fast startup. If snapshot data is provided, the + * isolate will be started using that snapshot data. Requires a core snapshot or + * an app snapshot created by Dart_CreateSnapshot or + * Dart_CreatePrecompiledSnapshot* from a VM with the same version. + * + * Requires there to be no current isolate. + * + * \param script_uri The main source file or snapshot this isolate will load. + * The VM will provide this URI to the Dart_IsolateGroupCreateCallback when a + * child isolate is created by Isolate.spawn. The embedder should use a URI + * that allows it to load the same program into such a child isolate. + * \param name A short name for the isolate to improve debugging messages. + * Typically of the format 'foo.dart:main()'. + * \param isolate_snapshot_data Buffer containing the snapshot data of the + * isolate or NULL if no snapshot is provided. If provided, the buffer must + * remain valid until the isolate shuts down. + * \param isolate_snapshot_instructions Buffer containing the snapshot + * instructions of the isolate or NULL if no snapshot is provided. If + * provided, the buffer must remain valid until the isolate shuts down. + * \param flags Pointer to VM specific flags or NULL for default flags. + * \param isolate_group_data Embedder group data. This data can be obtained + * by calling Dart_IsolateGroupData and will be passed to the + * Dart_IsolateShutdownCallback, Dart_IsolateCleanupCallback, and + * Dart_IsolateGroupCleanupCallback. + * \param isolate_data Embedder data. This data will be passed to + * the Dart_IsolateGroupCreateCallback when new isolates are spawned from + * this parent isolate. + * \param error Returns NULL if creation is successful, an error message + * otherwise. The caller is responsible for calling free() on the error + * message. + * + * \return The new isolate on success, or NULL if isolate creation failed. + */ +DART_EXPORT Dart_Isolate +Dart_CreateIsolateGroup(const char* script_uri, + const char* name, + const uint8_t* isolate_snapshot_data, + const uint8_t* isolate_snapshot_instructions, + Dart_IsolateFlags* flags, + void* isolate_group_data, + void* isolate_data, + char** error); +/** + * Creates a new isolate inside the isolate group of [group_member]. + * + * Requires there to be no current isolate. + * + * \param group_member An isolate from the same group into which the newly created + * isolate should be born into. Other threads may not have entered / enter this + * member isolate. + * \param name A short name for the isolate for debugging purposes. + * \param shutdown_callback A callback to be called when the isolate is being + * shutdown (may be NULL). + * \param cleanup_callback A callback to be called when the isolate is being + * cleaned up (may be NULL). + * \param child_isolate_data The embedder-specific data associated with this isolate. + * \param error Set to NULL if creation is successful, set to an error + * message otherwise. The caller is responsible for calling free() on the + * error message. + * + * \return The newly created isolate on success, or NULL if isolate creation + * failed. + * + * If successful, the newly created isolate will become the current isolate. + */ +DART_EXPORT Dart_Isolate +Dart_CreateIsolateInGroup(Dart_Isolate group_member, + const char* name, + Dart_IsolateShutdownCallback shutdown_callback, + Dart_IsolateCleanupCallback cleanup_callback, + void* child_isolate_data, + char** error); + +/* TODO(turnidge): Document behavior when there is already a current + * isolate. */ + +/** + * Creates a new isolate from a Dart Kernel file. The new isolate + * becomes the current isolate. + * + * Requires there to be no current isolate. + * + * \param script_uri The main source file or snapshot this isolate will load. + * The VM will provide this URI to the Dart_IsolateGroupCreateCallback when a + * child isolate is created by Isolate.spawn. The embedder should use a URI that + * allows it to load the same program into such a child isolate. + * \param name A short name for the isolate to improve debugging messages. + * Typically of the format 'foo.dart:main()'. + * \param kernel_buffer A buffer which contains a kernel/DIL program. Must + * remain valid until isolate shutdown. + * \param kernel_buffer_size The size of `kernel_buffer`. + * \param flags Pointer to VM specific flags or NULL for default flags. + * \param isolate_group_data Embedder group data. This data can be obtained + * by calling Dart_IsolateGroupData and will be passed to the + * Dart_IsolateShutdownCallback, Dart_IsolateCleanupCallback, and + * Dart_IsolateGroupCleanupCallback. + * \param isolate_data Embedder data. This data will be passed to + * the Dart_IsolateGroupCreateCallback when new isolates are spawned from + * this parent isolate. + * \param error Returns NULL if creation is successful, an error message + * otherwise. The caller is responsible for calling free() on the error + * message. + * + * \return The new isolate on success, or NULL if isolate creation failed. + */ +DART_EXPORT Dart_Isolate +Dart_CreateIsolateGroupFromKernel(const char* script_uri, + const char* name, + const uint8_t* kernel_buffer, + intptr_t kernel_buffer_size, + Dart_IsolateFlags* flags, + void* isolate_group_data, + void* isolate_data, + char** error); +/** + * Shuts down the current isolate. After this call, the current isolate is NULL. + * Any current scopes created by Dart_EnterScope will be exited. Invokes the + * shutdown callback and any callbacks of remaining weak persistent handles. + * + * Requires there to be a current isolate. + */ +DART_EXPORT void Dart_ShutdownIsolate(void); +/* TODO(turnidge): Document behavior when there is no current isolate. */ + +/** + * Returns the current isolate. Will return NULL if there is no + * current isolate. + */ +DART_EXPORT Dart_Isolate Dart_CurrentIsolate(void); + +/** + * Returns the callback data associated with the current isolate. This + * data was set when the isolate got created or initialized. + */ +DART_EXPORT void* Dart_CurrentIsolateData(void); + +/** + * Returns the callback data associated with the given isolate. This + * data was set when the isolate got created or initialized. + */ +DART_EXPORT void* Dart_IsolateData(Dart_Isolate isolate); + +/** + * Returns the current isolate group. Will return NULL if there is no + * current isolate group. + */ +DART_EXPORT Dart_IsolateGroup Dart_CurrentIsolateGroup(void); + +/** + * Returns the callback data associated with the current isolate group. This + * data was passed to the isolate group when it was created. + */ +DART_EXPORT void* Dart_CurrentIsolateGroupData(void); + +/** + * Gets an id that uniquely identifies current isolate group. + * + * It is the responsibility of the caller to free the returned ID. + */ +typedef int64_t Dart_IsolateGroupId; +DART_EXPORT Dart_IsolateGroupId Dart_CurrentIsolateGroupId(void); + +/** + * Returns the callback data associated with the specified isolate group. This + * data was passed to the isolate when it was created. + * The embedder is responsible for ensuring the consistency of this data + * with respect to the lifecycle of an isolate group. + */ +DART_EXPORT void* Dart_IsolateGroupData(Dart_Isolate isolate); + +/** + * Returns the debugging name for the current isolate. + * + * This name is unique to each isolate and should only be used to make + * debugging messages more comprehensible. + */ +DART_EXPORT Dart_Handle Dart_DebugName(void); + +/** + * Returns the debugging name for the current isolate. + * + * This name is unique to each isolate and should only be used to make + * debugging messages more comprehensible. + * + * The returned string is scope allocated and is only valid until the next call + * to Dart_ExitScope. + */ +DART_EXPORT const char* Dart_DebugNameToCString(void); + +/** + * Returns the ID for an isolate which is used to query the service protocol. + * + * It is the responsibility of the caller to free the returned ID. + */ +DART_EXPORT const char* Dart_IsolateServiceId(Dart_Isolate isolate); + +/** + * Enters an isolate. After calling this function, + * the current isolate will be set to the provided isolate. + * + * Requires there to be no current isolate. Multiple threads may not be in + * the same isolate at once. + */ +DART_EXPORT void Dart_EnterIsolate(Dart_Isolate isolate); + +/** + * Kills the given isolate. + * + * This function has the same effect as dart:isolate's + * Isolate.kill(priority:immediate). + * It can interrupt ordinary Dart code but not native code. If the isolate is + * in the middle of a long running native function, the isolate will not be + * killed until control returns to Dart. + * + * Does not require a current isolate. It is safe to kill the current isolate if + * there is one. + */ +DART_EXPORT void Dart_KillIsolate(Dart_Isolate isolate); + +/** + * Notifies the VM that the embedder expects to be idle until |deadline|. The VM + * may use this time to perform garbage collection or other tasks to avoid + * delays during execution of Dart code in the future. + * + * |deadline| is measured in microseconds against the system's monotonic time. + * This clock can be accessed via Dart_TimelineGetMicros(). + * + * Requires there to be a current isolate. + */ +DART_EXPORT void Dart_NotifyIdle(int64_t deadline); + +typedef void (*Dart_HeapSamplingReportCallback)(void* context, void* data); + +typedef void* (*Dart_HeapSamplingCreateCallback)( + Dart_Isolate isolate, + Dart_IsolateGroup isolate_group, + const char* cls_name, + intptr_t allocation_size); +typedef void (*Dart_HeapSamplingDeleteCallback)(void* data); + +/** + * Starts the heap sampling profiler for each thread in the VM. + */ +DART_EXPORT void Dart_EnableHeapSampling(void); + +/* + * Stops the heap sampling profiler for each thread in the VM. + */ +DART_EXPORT void Dart_DisableHeapSampling(void); + +/* Registers callbacks are invoked once per sampled allocation upon object + * allocation and garbage collection. + * + * |create_callback| can be used to associate additional data with the sampled + * allocation, such as a stack trace. This data pointer will be passed to + * |delete_callback| to allow for proper disposal when the object associated + * with the allocation sample is collected. + * + * The provided callbacks must not call into the VM and should do as little + * work as possible to avoid performance penalities during object allocation and + * garbage collection. + * + * NOTE: It is a fatal error to set either callback to null once they have been + * initialized. + */ +DART_EXPORT void Dart_RegisterHeapSamplingCallback( + Dart_HeapSamplingCreateCallback create_callback, + Dart_HeapSamplingDeleteCallback delete_callback); + +/* + * Reports the surviving allocation samples for all live isolate groups in the + * VM. + * + * When the callback is invoked: + * - |context| will be the context object provided when invoking + * |Dart_ReportSurvivingAllocations|. This can be safely set to null if not + * required. + * - |heap_size| will be equal to the size of the allocated object associated + * with the sample. + * - |cls_name| will be a C String representing + * the class name of the allocated object. This string is valid for the + * duration of the call to Dart_ReportSurvivingAllocations and can be + * freed by the VM at any point after the method returns. + * - |data| will be set to the data associated with the sample by + * |Dart_HeapSamplingCreateCallback|. + * + * If |force_gc| is true, a full GC will be performed before reporting the + * allocations. + */ +DART_EXPORT void Dart_ReportSurvivingAllocations( + Dart_HeapSamplingReportCallback callback, + void* context, + bool force_gc); + +/* + * Sets the average heap sampling rate based on a number of |bytes| for each + * thread. + * + * In other words, approximately every |bytes| allocated will create a sample. + * Defaults to 512 KiB. + */ +DART_EXPORT void Dart_SetHeapSamplingPeriod(intptr_t bytes); + +/** + * Notifies the VM that the embedder expects the application's working set has + * recently shrunk significantly and is not expected to rise in the near future. + * The VM may spend O(heap-size) time performing clean up work. + * + * Requires there to be a current isolate. + */ +DART_EXPORT void Dart_NotifyDestroyed(void); + +/** + * Notifies the VM that the system is running low on memory. + * + * Does not require a current isolate. Only valid after calling Dart_Initialize. + */ +DART_EXPORT void Dart_NotifyLowMemory(void); + +typedef enum { + /** + * Balanced + */ + Dart_PerformanceMode_Default, + /** + * Optimize for low latency, at the expense of throughput and memory overhead + * by performing work in smaller batches (requiring more overhead) or by + * delaying work (requiring more memory). An embedder should not remain in + * this mode indefinitely. + */ + Dart_PerformanceMode_Latency, + /** + * Optimize for high throughput, at the expense of latency and memory overhead + * by performing work in larger batches with more intervening growth. + */ + Dart_PerformanceMode_Throughput, + /** + * Optimize for low memory, at the expensive of throughput and latency by more + * frequently performing work. + */ + Dart_PerformanceMode_Memory, +} Dart_PerformanceMode; + +/** + * Set the desired performance trade-off. + * + * Requires a current isolate. + * + * Returns the previous performance mode. + */ +DART_EXPORT Dart_PerformanceMode +Dart_SetPerformanceMode(Dart_PerformanceMode mode); + +/** + * Starts the CPU sampling profiler. + */ +DART_EXPORT void Dart_StartProfiling(void); + +/** + * Stops the CPU sampling profiler. + * + * Note that some profile samples might still be taken after this function + * returns due to the asynchronous nature of the implementation on some + * platforms. + */ +DART_EXPORT void Dart_StopProfiling(void); + +/** + * Notifies the VM that the current thread should not be profiled until a + * matching call to Dart_ThreadEnableProfiling is made. + * + * NOTE: By default, if a thread has entered an isolate it will be profiled. + * This function should be used when an embedder knows a thread is about + * to make a blocking call and wants to avoid unnecessary interrupts by + * the profiler. + */ +DART_EXPORT void Dart_ThreadDisableProfiling(void); + +/** + * Notifies the VM that the current thread should be profiled. + * + * NOTE: It is only legal to call this function *after* calling + * Dart_ThreadDisableProfiling. + * + * NOTE: By default, if a thread has entered an isolate it will be profiled. + */ +DART_EXPORT void Dart_ThreadEnableProfiling(void); + +/** + * Register symbol information for the Dart VM's profiler and crash dumps. + * + * This consumes the output of //topaz/runtime/dart/profiler_symbols, which + * should be treated as opaque. + */ +DART_EXPORT void Dart_AddSymbols(const char* dso_name, + void* buffer, + intptr_t buffer_size); + +/** + * Exits an isolate. After this call, Dart_CurrentIsolate will + * return NULL. + * + * Requires there to be a current isolate. + */ +DART_EXPORT void Dart_ExitIsolate(void); +/* TODO(turnidge): We don't want users of the api to be able to exit a + * "pure" dart isolate. Implement and document. */ + +/** + * Creates a full snapshot of the current isolate heap. + * + * A full snapshot is a compact representation of the dart vm isolate heap + * and dart isolate heap states. These snapshots are used to initialize + * the vm isolate on startup and fast initialization of an isolate. + * A Snapshot of the heap is created before any dart code has executed. + * + * Requires there to be a current isolate. Not available in the precompiled + * runtime (check Dart_IsPrecompiledRuntime). + * + * \param vm_snapshot_data_buffer Returns a pointer to a buffer containing the + * vm snapshot. This buffer is scope allocated and is only valid + * until the next call to Dart_ExitScope. + * \param vm_snapshot_data_size Returns the size of vm_snapshot_data_buffer. + * \param isolate_snapshot_data_buffer Returns a pointer to a buffer containing + * the isolate snapshot. This buffer is scope allocated and is only valid + * until the next call to Dart_ExitScope. + * \param isolate_snapshot_data_size Returns the size of + * isolate_snapshot_data_buffer. + * \param is_core Create a snapshot containing core libraries. + * Such snapshot should be agnostic to null safety mode. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_CreateSnapshot(uint8_t** vm_snapshot_data_buffer, + intptr_t* vm_snapshot_data_size, + uint8_t** isolate_snapshot_data_buffer, + intptr_t* isolate_snapshot_data_size, + bool is_core); + +/** + * Returns whether the buffer contains a kernel file. + * + * \param buffer Pointer to a buffer that might contain a kernel binary. + * \param buffer_size Size of the buffer. + * + * \return Whether the buffer contains a kernel binary (full or partial). + */ +DART_EXPORT bool Dart_IsKernel(const uint8_t* buffer, intptr_t buffer_size); + +/** + * Make isolate runnable. + * + * When isolates are spawned, this function is used to indicate that + * the creation and initialization (including script loading) of the + * isolate is complete and the isolate can start. + * This function expects there to be no current isolate. + * + * \param isolate The isolate to be made runnable. + * + * \return NULL if successful. Returns an error message otherwise. The caller + * is responsible for freeing the error message. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT char* Dart_IsolateMakeRunnable( + Dart_Isolate isolate); + +/* + * ================== + * Messages and Ports + * ================== + */ + +/** + * A port is used to send or receive inter-isolate messages + */ +typedef int64_t Dart_Port; + +/** + * ILLEGAL_PORT is a port number guaranteed never to be associated with a valid + * port. + */ +#define ILLEGAL_PORT ((Dart_Port)0) + +/** + * A message notification callback. + * + * This callback allows the embedder to provide a custom wakeup mechanism for + * the delivery of inter-isolate messages. This function is called once per + * message on an arbitrary thread. It is the responsibility of the embedder to + * eventually call Dart_HandleMessage once per callback received with the + * destination isolate set as the current isolate to process the message. + */ +typedef void (*Dart_MessageNotifyCallback)(Dart_Isolate destination_isolate); + +/** + * Allows embedders to provide a custom wakeup mechanism for the delivery of + * inter-isolate messages. This setting only applies to the current isolate. + * + * This mechanism is optional: if not provided, the isolate will be scheduled on + * a VM-managed thread pool. An embedder should provide this callback if it + * wants to run an isolate on a specific thread or to interleave handling of + * inter-isolate messages with other event sources. + * + * Most embedders will only call this function once, before isolate + * execution begins. If this function is called after isolate + * execution begins, the embedder is responsible for threading issues. + */ +DART_EXPORT void Dart_SetMessageNotifyCallback( + Dart_MessageNotifyCallback message_notify_callback); +/* TODO(turnidge): Consider moving this to isolate creation so that it + * is impossible to mess up. */ + +/** + * Query the current message notify callback for the isolate. + * + * \return The current message notify callback for the isolate. + */ +DART_EXPORT Dart_MessageNotifyCallback Dart_GetMessageNotifyCallback(void); + +/** + * The VM's default message handler supports pausing an isolate before it + * processes the first message and right after the it processes the isolate's + * final message. This can be controlled for all isolates by two VM flags: + * + * `--pause-isolates-on-start` + * `--pause-isolates-on-exit` + * + * Additionally, Dart_SetShouldPauseOnStart and Dart_SetShouldPauseOnExit can be + * used to control this behaviour on a per-isolate basis. + * + * When an embedder is using a Dart_MessageNotifyCallback the embedder + * needs to cooperate with the VM so that the service protocol can report + * accurate information about isolates and so that tools such as debuggers + * work reliably. + * + * The following functions can be used to implement pausing on start and exit. + */ + +/** + * If the VM flag `--pause-isolates-on-start` was passed this will be true. + * + * \return A boolean value indicating if pause on start was requested. + */ +DART_EXPORT bool Dart_ShouldPauseOnStart(void); + +/** + * Override the VM flag `--pause-isolates-on-start` for the current isolate. + * + * \param should_pause Should the isolate be paused on start? + * + * NOTE: This must be called before Dart_IsolateMakeRunnable. + */ +DART_EXPORT void Dart_SetShouldPauseOnStart(bool should_pause); + +/** + * Is the current isolate paused on start? + * + * \return A boolean value indicating if the isolate is paused on start. + */ +DART_EXPORT bool Dart_IsPausedOnStart(void); + +/** + * Called when the embedder has paused the current isolate on start and when + * the embedder has resumed the isolate. + * + * \param paused Is the isolate paused on start? + */ +DART_EXPORT void Dart_SetPausedOnStart(bool paused); + +/** + * If the VM flag `--pause-isolates-on-exit` was passed this will be true. + * + * \return A boolean value indicating if pause on exit was requested. + */ +DART_EXPORT bool Dart_ShouldPauseOnExit(void); + +/** + * Override the VM flag `--pause-isolates-on-exit` for the current isolate. + * + * \param should_pause Should the isolate be paused on exit? + * + */ +DART_EXPORT void Dart_SetShouldPauseOnExit(bool should_pause); + +/** + * Is the current isolate paused on exit? + * + * \return A boolean value indicating if the isolate is paused on exit. + */ +DART_EXPORT bool Dart_IsPausedOnExit(void); + +/** + * Called when the embedder has paused the current isolate on exit and when + * the embedder has resumed the isolate. + * + * \param paused Is the isolate paused on exit? + */ +DART_EXPORT void Dart_SetPausedOnExit(bool paused); + +/** + * Called when the embedder has caught a top level unhandled exception error + * in the current isolate. + * + * NOTE: It is illegal to call this twice on the same isolate without first + * clearing the sticky error to null. + * + * \param error The unhandled exception error. + */ +DART_EXPORT void Dart_SetStickyError(Dart_Handle error); + +/** + * Does the current isolate have a sticky error? + */ +DART_EXPORT bool Dart_HasStickyError(void); + +/** + * Gets the sticky error for the current isolate. + * + * \return A handle to the sticky error object or null. + */ +DART_EXPORT Dart_Handle Dart_GetStickyError(void); + +/** + * Handles the next pending message for the current isolate. + * + * May generate an unhandled exception error. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle Dart_HandleMessage(void); + +/** + * Handles any pending messages for the vm service for the current + * isolate. + * + * This function may be used by an embedder at a breakpoint to avoid + * pausing the vm service. + * + * This function can indirectly cause the message notify callback to + * be called. + * + * \return true if the vm service requests the program resume + * execution, false otherwise + */ +DART_EXPORT bool Dart_HandleServiceMessages(void); + +/** + * Does the current isolate have pending service messages? + * + * \return true if the isolate has pending service messages, false otherwise. + */ +DART_EXPORT bool Dart_HasServiceMessages(void); + +/** + * Processes any incoming messages for the current isolate. + * + * This function may only be used when the embedder has not provided + * an alternate message delivery mechanism with + * Dart_SetMessageCallbacks. It is provided for convenience. + * + * This function waits for incoming messages for the current + * isolate. As new messages arrive, they are handled using + * Dart_HandleMessage. The routine exits when all ports to the + * current isolate are closed. + * + * \return A valid handle if the run loop exited successfully. If an + * exception or other error occurs while processing messages, an + * error handle is returned. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle Dart_RunLoop(void); + +/** + * Lets the VM run message processing for the isolate. + * + * This function expects there to a current isolate and the current isolate + * must not have an active api scope. The VM will take care of making the + * isolate runnable (if not already), handles its message loop and will take + * care of shutting the isolate down once it's done. + * + * \param errors_are_fatal Whether uncaught errors should be fatal. + * \param on_error_port A port to notify on uncaught errors (or ILLEGAL_PORT). + * \param on_exit_port A port to notify on exit (or ILLEGAL_PORT). + * \param error A non-NULL pointer which will hold an error message if the call + * fails. The error has to be free()ed by the caller. + * + * \return If successful the VM takes ownership of the isolate and takes care + * of its message loop. If not successful the caller retains ownership of the + * isolate. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT bool Dart_RunLoopAsync( + bool errors_are_fatal, + Dart_Port on_error_port, + Dart_Port on_exit_port, + char** error); + +/* TODO(turnidge): Should this be removed from the public api? */ + +/** + * Gets the main port id for the current isolate. + */ +DART_EXPORT Dart_Port Dart_GetMainPortId(void); + +/** + * Does the current isolate have live ReceivePorts? + * + * A ReceivePort is live when it has not been closed. + */ +DART_EXPORT bool Dart_HasLivePorts(void); + +/** + * Posts a message for some isolate. The message is a serialized + * object. + * + * Requires there to be a current isolate. + * + * For posting messages outside of an isolate see \ref Dart_PostCObject. + * + * \param port_id The destination port. + * \param object An object from the current isolate. + * + * \return True if the message was posted. + */ +DART_EXPORT bool Dart_Post(Dart_Port port_id, Dart_Handle object); + +/** + * Returns a new SendPort with the provided port id. + * + * \param port_id The destination port. + * + * \return A new SendPort if no errors occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewSendPort(Dart_Port port_id); + +/** + * Gets the SendPort id for the provided SendPort. + * \param port A SendPort object whose id is desired. + * \param port_id Returns the id of the SendPort. + * \return Success if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_SendPortGetId(Dart_Handle port, + Dart_Port* port_id); + +/* + * ====== + * Scopes + * ====== + */ + +/** + * Enters a new scope. + * + * All new local handles will be created in this scope. Additionally, + * some functions may return "scope allocated" memory which is only + * valid within this scope. + * + * Requires there to be a current isolate. + */ +DART_EXPORT void Dart_EnterScope(void); + +/** + * Exits a scope. + * + * The previous scope (if any) becomes the current scope. + * + * Requires there to be a current isolate. + */ +DART_EXPORT void Dart_ExitScope(void); + +/** + * The Dart VM uses "zone allocation" for temporary structures. Zones + * support very fast allocation of small chunks of memory. The chunks + * cannot be deallocated individually, but instead zones support + * deallocating all chunks in one fast operation. + * + * This function makes it possible for the embedder to allocate + * temporary data in the VMs zone allocator. + * + * Zone allocation is possible: + * 1. when inside a scope where local handles can be allocated + * 2. when processing a message from a native port in a native port + * handler + * + * All the memory allocated this way will be reclaimed either on the + * next call to Dart_ExitScope or when the native port handler exits. + * + * \param size Size of the memory to allocate. + * + * \return A pointer to the allocated memory. NULL if allocation + * failed. Failure might due to is no current VM zone. + */ +DART_EXPORT uint8_t* Dart_ScopeAllocate(intptr_t size); + +/* + * ======= + * Objects + * ======= + */ + +/** + * Returns the null object. + * + * \return A handle to the null object. + */ +DART_EXPORT Dart_Handle Dart_Null(void); + +/** + * Is this object null? + */ +DART_EXPORT bool Dart_IsNull(Dart_Handle object); + +/** + * Returns the empty string object. + * + * \return A handle to the empty string object. + */ +DART_EXPORT Dart_Handle Dart_EmptyString(void); + +/** + * Returns types that are not classes, and which therefore cannot be looked up + * as library members by Dart_GetType. + * + * \return A handle to the dynamic, void or Never type. + */ +DART_EXPORT Dart_Handle Dart_TypeDynamic(void); +DART_EXPORT Dart_Handle Dart_TypeVoid(void); +DART_EXPORT Dart_Handle Dart_TypeNever(void); + +/** + * Checks if the two objects are equal. + * + * The result of the comparison is returned through the 'equal' + * parameter. The return value itself is used to indicate success or + * failure, not equality. + * + * May generate an unhandled exception error. + * + * \param obj1 An object to be compared. + * \param obj2 An object to be compared. + * \param equal Returns the result of the equality comparison. + * + * \return A valid handle if no error occurs during the comparison. + */ +DART_EXPORT Dart_Handle Dart_ObjectEquals(Dart_Handle obj1, + Dart_Handle obj2, + bool* equal); + +/** + * Is this object an instance of some type? + * + * The result of the test is returned through the 'instanceof' parameter. + * The return value itself is used to indicate success or failure. + * + * \param object An object. + * \param type A type. + * \param instanceof Return true if 'object' is an instance of type 'type'. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_ObjectIsType(Dart_Handle object, + Dart_Handle type, + bool* instanceof); + +/** + * Query object type. + * + * \param object Some Object. + * + * \return true if Object is of the specified type. + */ +DART_EXPORT bool Dart_IsInstance(Dart_Handle object); +DART_EXPORT bool Dart_IsNumber(Dart_Handle object); +DART_EXPORT bool Dart_IsInteger(Dart_Handle object); +DART_EXPORT bool Dart_IsDouble(Dart_Handle object); +DART_EXPORT bool Dart_IsBoolean(Dart_Handle object); +DART_EXPORT bool Dart_IsString(Dart_Handle object); +DART_EXPORT bool Dart_IsStringLatin1(Dart_Handle object); /* (ISO-8859-1) */ +DART_EXPORT bool Dart_IsList(Dart_Handle object); +DART_EXPORT bool Dart_IsMap(Dart_Handle object); +DART_EXPORT bool Dart_IsLibrary(Dart_Handle object); +DART_EXPORT bool Dart_IsType(Dart_Handle handle); +DART_EXPORT bool Dart_IsFunction(Dart_Handle handle); +DART_EXPORT bool Dart_IsVariable(Dart_Handle handle); +DART_EXPORT bool Dart_IsTypeVariable(Dart_Handle handle); +DART_EXPORT bool Dart_IsClosure(Dart_Handle object); +DART_EXPORT bool Dart_IsTypedData(Dart_Handle object); +DART_EXPORT bool Dart_IsByteBuffer(Dart_Handle object); +DART_EXPORT bool Dart_IsFuture(Dart_Handle object); + +/* + * ========= + * Instances + * ========= + */ + +/* + * For the purposes of the embedding api, not all objects returned are + * Dart language objects. Within the api, we use the term 'Instance' + * to indicate handles which refer to true Dart language objects. + * + * TODO(turnidge): Reorganize the "Object" section above, pulling down + * any functions that more properly belong here. */ + +/** + * Gets the type of a Dart language object. + * + * \param instance Some Dart object. + * + * \return If no error occurs, the type is returned. Otherwise an + * error handle is returned. + */ +DART_EXPORT Dart_Handle Dart_InstanceGetType(Dart_Handle instance); + +/** + * Returns the name for the provided class type. + * + * \return A valid string handle if no error occurs during the + * operation. + */ +DART_EXPORT Dart_Handle Dart_ClassName(Dart_Handle cls_type); + +/** + * Returns the name for the provided function or method. + * + * \return A valid string handle if no error occurs during the + * operation. + */ +DART_EXPORT Dart_Handle Dart_FunctionName(Dart_Handle function); + +/** + * Returns a handle to the owner of a function. + * + * The owner of an instance method or a static method is its defining + * class. The owner of a top-level function is its defining + * library. The owner of the function of a non-implicit closure is the + * function of the method or closure that defines the non-implicit + * closure. + * + * \return A valid handle to the owner of the function, or an error + * handle if the argument is not a valid handle to a function. + */ +DART_EXPORT Dart_Handle Dart_FunctionOwner(Dart_Handle function); + +/** + * Determines whether a function handle refers to a static function + * of method. + * + * For the purposes of the embedding API, a top-level function is + * implicitly declared static. + * + * \param function A handle to a function or method declaration. + * \param is_static Returns whether the function or method is declared static. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_FunctionIsStatic(Dart_Handle function, + bool* is_static); + +/** + * Is this object a closure resulting from a tear-off (closurized method)? + * + * Returns true for closures produced when an ordinary method is accessed + * through a getter call. Returns false otherwise, in particular for closures + * produced from local function declarations. + * + * \param object Some Object. + * + * \return true if Object is a tear-off. + */ +DART_EXPORT bool Dart_IsTearOff(Dart_Handle object); + +/** + * Retrieves the function of a closure. + * + * \return A handle to the function of the closure, or an error handle if the + * argument is not a closure. + */ +DART_EXPORT Dart_Handle Dart_ClosureFunction(Dart_Handle closure); + +/** + * Returns a handle to the library which contains class. + * + * \return A valid handle to the library with owns class, null if the class + * has no library or an error handle if the argument is not a valid handle + * to a class type. + */ +DART_EXPORT Dart_Handle Dart_ClassLibrary(Dart_Handle cls_type); + +/* + * ============================= + * Numbers, Integers and Doubles + * ============================= + */ + +/** + * Does this Integer fit into a 64-bit signed integer? + * + * \param integer An integer. + * \param fits Returns true if the integer fits into a 64-bit signed integer. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_IntegerFitsIntoInt64(Dart_Handle integer, + bool* fits); + +/** + * Does this Integer fit into a 64-bit unsigned integer? + * + * \param integer An integer. + * \param fits Returns true if the integer fits into a 64-bit unsigned integer. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_IntegerFitsIntoUint64(Dart_Handle integer, + bool* fits); + +/** + * Returns an Integer with the provided value. + * + * \param value The value of the integer. + * + * \return The Integer object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewInteger(int64_t value); + +/** + * Returns an Integer with the provided value. + * + * \param value The unsigned value of the integer. + * + * \return The Integer object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewIntegerFromUint64(uint64_t value); + +/** + * Returns an Integer with the provided value. + * + * \param value The value of the integer represented as a C string + * containing a hexadecimal number. + * + * \return The Integer object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewIntegerFromHexCString(const char* value); + +/** + * Gets the value of an Integer. + * + * The integer must fit into a 64-bit signed integer, otherwise an error occurs. + * + * \param integer An Integer. + * \param value Returns the value of the Integer. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_IntegerToInt64(Dart_Handle integer, + int64_t* value); + +/** + * Gets the value of an Integer. + * + * The integer must fit into a 64-bit unsigned integer, otherwise an + * error occurs. + * + * \param integer An Integer. + * \param value Returns the value of the Integer. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_IntegerToUint64(Dart_Handle integer, + uint64_t* value); + +/** + * Gets the value of an integer as a hexadecimal C string. + * + * \param integer An Integer. + * \param value Returns the value of the Integer as a hexadecimal C + * string. This C string is scope allocated and is only valid until + * the next call to Dart_ExitScope. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_IntegerToHexCString(Dart_Handle integer, + const char** value); + +/** + * Returns a Double with the provided value. + * + * \param value A double. + * + * \return The Double object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewDouble(double value); + +/** + * Gets the value of a Double + * + * \param double_obj A Double + * \param value Returns the value of the Double. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_DoubleValue(Dart_Handle double_obj, double* value); + +/** + * Returns a closure of static function 'function_name' in the class 'class_name' + * in the exported namespace of specified 'library'. + * + * \param library Library object + * \param cls_type Type object representing a Class + * \param function_name Name of the static function in the class + * + * \return A valid Dart instance if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_GetStaticMethodClosure(Dart_Handle library, + Dart_Handle cls_type, + Dart_Handle function_name); + +/* + * ======== + * Booleans + * ======== + */ + +/** + * Returns the True object. + * + * Requires there to be a current isolate. + * + * \return A handle to the True object. + */ +DART_EXPORT Dart_Handle Dart_True(void); + +/** + * Returns the False object. + * + * Requires there to be a current isolate. + * + * \return A handle to the False object. + */ +DART_EXPORT Dart_Handle Dart_False(void); + +/** + * Returns a Boolean with the provided value. + * + * \param value true or false. + * + * \return The Boolean object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewBoolean(bool value); + +/** + * Gets the value of a Boolean + * + * \param boolean_obj A Boolean + * \param value Returns the value of the Boolean. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_BooleanValue(Dart_Handle boolean_obj, bool* value); + +/* + * ======= + * Strings + * ======= + */ + +/** + * Gets the length of a String. + * + * \param str A String. + * \param length Returns the length of the String. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_StringLength(Dart_Handle str, intptr_t* length); + +/** + * Gets the length of UTF-8 encoded representation for a string. + * + * \param str A String. + * \param length Returns the length of UTF-8 encoded representation for string. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_StringUTF8Length(Dart_Handle str, + intptr_t* length); + +/** + * Returns a String built from the provided C string + * (There is an implicit assumption that the C string passed in contains + * UTF-8 encoded characters and '\0' is considered as a termination + * character). + * + * \param str A C String + * + * \return The String object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewStringFromCString(const char* str); +/* TODO(turnidge): Document what happens when we run out of memory + * during this call. */ + +/** + * Returns a String built from an array of UTF-8 encoded characters. + * + * \param utf8_array An array of UTF-8 encoded characters. + * \param length The length of the codepoints array. + * + * \return The String object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewStringFromUTF8(const uint8_t* utf8_array, + intptr_t length); + +/** + * Returns a String built from an array of UTF-16 encoded characters. + * + * \param utf16_array An array of UTF-16 encoded characters. + * \param length The length of the codepoints array. + * + * \return The String object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewStringFromUTF16(const uint16_t* utf16_array, + intptr_t length); + +/** + * Returns a String built from an array of UTF-32 encoded characters. + * + * \param utf32_array An array of UTF-32 encoded characters. + * \param length The length of the codepoints array. + * + * \return The String object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewStringFromUTF32(const int32_t* utf32_array, + intptr_t length); + +/** + * Gets the C string representation of a String. + * (It is a sequence of UTF-8 encoded values with a '\0' termination.) + * + * \param str A string. + * \param cstr Returns the String represented as a C string. + * This C string is scope allocated and is only valid until + * the next call to Dart_ExitScope. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_StringToCString(Dart_Handle str, + const char** cstr); + +/** + * Gets a UTF-8 encoded representation of a String. + * + * Any unpaired surrogate code points in the string will be converted as + * replacement characters (U+FFFD, 0xEF 0xBF 0xBD in UTF-8). If you need + * to preserve unpaired surrogates, use the Dart_StringToUTF16 function. + * + * \param str A string. + * \param utf8_array Returns the String represented as UTF-8 code + * units. This UTF-8 array is scope allocated and is only valid + * until the next call to Dart_ExitScope. + * \param length Used to return the length of the array which was + * actually used. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_StringToUTF8(Dart_Handle str, + uint8_t** utf8_array, + intptr_t* length); + +/** + * Copies the UTF-8 encoded representation of a String into specified buffer. + * + * Any unpaired surrogate code points in the string will be converted as + * replacement characters (U+FFFD, 0xEF 0xBF 0xBD in UTF-8). + * + * \param str A string. + * \param utf8_array Buffer into which the UTF-8 encoded representation of + * the string is copied into. + * The buffer is allocated and managed by the caller. + * \param length Specifies the length of the buffer passed in. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_CopyUTF8EncodingOfString(Dart_Handle str, + uint8_t* utf8_array, + intptr_t length); + +/** + * Gets the data corresponding to the string object. This function returns + * the data only for Latin-1 (ISO-8859-1) string objects. For all other + * string objects it returns an error. + * + * \param str A string. + * \param latin1_array An array allocated by the caller, used to return + * the string data. + * \param length Used to pass in the length of the provided array. + * Used to return the length of the array which was actually used. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_StringToLatin1(Dart_Handle str, + uint8_t* latin1_array, + intptr_t* length); + +/** + * Gets the UTF-16 encoded representation of a string. + * + * \param str A string. + * \param utf16_array An array allocated by the caller, used to return + * the array of UTF-16 encoded characters. + * \param length Used to pass in the length of the provided array. + * Used to return the length of the array which was actually used. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_StringToUTF16(Dart_Handle str, + uint16_t* utf16_array, + intptr_t* length); + +/** + * Gets the storage size in bytes of a String. + * + * \param str A String. + * \param size Returns the storage size in bytes of the String. + * This is the size in bytes needed to store the String. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_StringStorageSize(Dart_Handle str, intptr_t* size); + +/** + * Retrieves some properties associated with a String. + * Properties retrieved are: + * - character size of the string (one or two byte) + * - length of the string + * - peer pointer of string if it is an external string. + * \param str A String. + * \param char_size Returns the character size of the String. + * \param str_len Returns the length of the String. + * \param peer Returns the peer pointer associated with the String or 0 if + * there is no peer pointer for it. + * \return Success if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_StringGetProperties(Dart_Handle str, + intptr_t* char_size, + intptr_t* str_len, + void** peer); + +/* + * ===== + * Lists + * ===== + */ + +/** + * Returns a List of the desired length. + * + * \param length The length of the list. + * + * \return The List object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewList(intptr_t length); + +typedef enum { + Dart_CoreType_Dynamic, + Dart_CoreType_Int, + Dart_CoreType_String, +} Dart_CoreType_Id; + +// TODO(bkonyi): convert this to use nullable types once NNBD is enabled. +/** + * Returns a List of the desired length with the desired legacy element type. + * + * \param element_type_id The type of elements of the list. + * \param length The length of the list. + * + * \return The List object if no error occurs. Otherwise returns an error + * handle. + */ +DART_EXPORT Dart_Handle Dart_NewListOf(Dart_CoreType_Id element_type_id, + intptr_t length); + +/** + * Returns a List of the desired length with the desired element type. + * + * \param element_type Handle to a nullable type object. E.g., from + * Dart_GetType or Dart_GetNullableType. + * + * \param length The length of the list. + * + * \return The List object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewListOfType(Dart_Handle element_type, + intptr_t length); + +/** + * Returns a List of the desired length with the desired element type, filled + * with the provided object. + * + * \param element_type Handle to a type object. E.g., from Dart_GetType. + * + * \param fill_object Handle to an object of type 'element_type' that will be + * used to populate the list. This parameter can only be Dart_Null() if the + * length of the list is 0 or 'element_type' is a nullable type. + * + * \param length The length of the list. + * + * \return The List object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewListOfTypeFilled(Dart_Handle element_type, + Dart_Handle fill_object, + intptr_t length); + +/** + * Gets the length of a List. + * + * May generate an unhandled exception error. + * + * \param list A List. + * \param length Returns the length of the List. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_ListLength(Dart_Handle list, intptr_t* length); + +/** + * Gets the Object at some index of a List. + * + * If the index is out of bounds, an error occurs. + * + * May generate an unhandled exception error. + * + * \param list A List. + * \param index A valid index into the List. + * + * \return The Object in the List at the specified index if no error + * occurs. Otherwise returns an error handle. + */ +DART_EXPORT Dart_Handle Dart_ListGetAt(Dart_Handle list, intptr_t index); + +/** +* Gets a range of Objects from a List. +* +* If any of the requested index values are out of bounds, an error occurs. +* +* May generate an unhandled exception error. +* +* \param list A List. +* \param offset The offset of the first item to get. +* \param length The number of items to get. +* \param result A pointer to fill with the objects. +* +* \return Success if no error occurs during the operation. +*/ +DART_EXPORT Dart_Handle Dart_ListGetRange(Dart_Handle list, + intptr_t offset, + intptr_t length, + Dart_Handle* result); + +/** + * Sets the Object at some index of a List. + * + * If the index is out of bounds, an error occurs. + * + * May generate an unhandled exception error. + * + * \param list A List. + * \param index A valid index into the List. + * \param value The Object to put in the List. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT Dart_Handle Dart_ListSetAt(Dart_Handle list, + intptr_t index, + Dart_Handle value); + +/** + * May generate an unhandled exception error. + */ +DART_EXPORT Dart_Handle Dart_ListGetAsBytes(Dart_Handle list, + intptr_t offset, + uint8_t* native_array, + intptr_t length); + +/** + * May generate an unhandled exception error. + */ +DART_EXPORT Dart_Handle Dart_ListSetAsBytes(Dart_Handle list, + intptr_t offset, + const uint8_t* native_array, + intptr_t length); + +/* + * ==== + * Maps + * ==== + */ + +/** + * Gets the Object at some key of a Map. + * + * May generate an unhandled exception error. + * + * \param map A Map. + * \param key An Object. + * + * \return The value in the map at the specified key, null if the map does not + * contain the key, or an error handle. + */ +DART_EXPORT Dart_Handle Dart_MapGetAt(Dart_Handle map, Dart_Handle key); + +/** + * Returns whether the Map contains a given key. + * + * May generate an unhandled exception error. + * + * \param map A Map. + * + * \return A handle on a boolean indicating whether map contains the key. + * Otherwise returns an error handle. + */ +DART_EXPORT Dart_Handle Dart_MapContainsKey(Dart_Handle map, Dart_Handle key); + +/** + * Gets the list of keys of a Map. + * + * May generate an unhandled exception error. + * + * \param map A Map. + * + * \return The list of key Objects if no error occurs. Otherwise returns an + * error handle. + */ +DART_EXPORT Dart_Handle Dart_MapKeys(Dart_Handle map); + +/* + * ========== + * Typed Data + * ========== + */ + +typedef enum { + Dart_TypedData_kByteData = 0, + Dart_TypedData_kInt8, + Dart_TypedData_kUint8, + Dart_TypedData_kUint8Clamped, + Dart_TypedData_kInt16, + Dart_TypedData_kUint16, + Dart_TypedData_kInt32, + Dart_TypedData_kUint32, + Dart_TypedData_kInt64, + Dart_TypedData_kUint64, + Dart_TypedData_kFloat32, + Dart_TypedData_kFloat64, + Dart_TypedData_kInt32x4, + Dart_TypedData_kFloat32x4, + Dart_TypedData_kFloat64x2, + Dart_TypedData_kInvalid +} Dart_TypedData_Type; + +/** + * Return type if this object is a TypedData object. + * + * \return kInvalid if the object is not a TypedData object or the appropriate + * Dart_TypedData_Type. + */ +DART_EXPORT Dart_TypedData_Type Dart_GetTypeOfTypedData(Dart_Handle object); + +/** + * Return type if this object is an external TypedData object. + * + * \return kInvalid if the object is not an external TypedData object or + * the appropriate Dart_TypedData_Type. + */ +DART_EXPORT Dart_TypedData_Type +Dart_GetTypeOfExternalTypedData(Dart_Handle object); + +/** + * Returns a TypedData object of the desired length and type. + * + * \param type The type of the TypedData object. + * \param length The length of the TypedData object (length in type units). + * + * \return The TypedData object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewTypedData(Dart_TypedData_Type type, + intptr_t length); + +/** + * Returns a TypedData object which references an external data array. + * + * \param type The type of the data array. + * \param data A data array. This array must not move. + * \param length The length of the data array (length in type units). + * + * \return The TypedData object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewExternalTypedData(Dart_TypedData_Type type, + void* data, + intptr_t length); + +/** + * Returns a TypedData object which references an external data array. + * + * \param type The type of the data array. + * \param data A data array. This array must not move. + * \param length The length of the data array (length in type units). + * \param peer A pointer to a native object or NULL. This value is + * provided to callback when it is invoked. + * \param external_allocation_size The number of externally allocated + * bytes for peer. Used to inform the garbage collector. + * \param callback A function pointer that will be invoked sometime + * after the object is garbage collected, unless the handle has been deleted. + * A valid callback needs to be specified it cannot be NULL. + * + * \return The TypedData object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle +Dart_NewExternalTypedDataWithFinalizer(Dart_TypedData_Type type, + void* data, + intptr_t length, + void* peer, + intptr_t external_allocation_size, + Dart_HandleFinalizer callback); +DART_EXPORT Dart_Handle Dart_NewUnmodifiableExternalTypedDataWithFinalizer( + Dart_TypedData_Type type, + const void* data, + intptr_t length, + void* peer, + intptr_t external_allocation_size, + Dart_HandleFinalizer callback); + +/** + * Returns a ByteBuffer object for the typed data. + * + * \param typed_data The TypedData object. + * + * \return The ByteBuffer object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewByteBuffer(Dart_Handle typed_data); + +/** + * Acquires access to the internal data address of a TypedData object. + * + * \param object The typed data object whose internal data address is to + * be accessed. + * \param type The type of the object is returned here. + * \param data The internal data address is returned here. + * \param len Size of the typed array is returned here. + * + * Notes: + * When the internal address of the object is acquired any calls to a + * Dart API function that could potentially allocate an object or run + * any Dart code will return an error. + * + * Any Dart API functions for accessing the data should not be called + * before the corresponding release. In particular, the object should + * not be acquired again before its release. This leads to undefined + * behavior. + * + * \return Success if the internal data address is acquired successfully. + * Otherwise, returns an error handle. + */ +DART_EXPORT Dart_Handle Dart_TypedDataAcquireData(Dart_Handle object, + Dart_TypedData_Type* type, + void** data, + intptr_t* len); + +/** + * Releases access to the internal data address that was acquired earlier using + * Dart_TypedDataAcquireData. + * + * \param object The typed data object whose internal data address is to be + * released. + * + * \return Success if the internal data address is released successfully. + * Otherwise, returns an error handle. + */ +DART_EXPORT Dart_Handle Dart_TypedDataReleaseData(Dart_Handle object); + +/** + * Returns the TypedData object associated with the ByteBuffer object. + * + * \param byte_buffer The ByteBuffer object. + * + * \return The TypedData object if no error occurs. Otherwise returns + * an error handle. + */ +DART_EXPORT Dart_Handle Dart_GetDataFromByteBuffer(Dart_Handle byte_buffer); + +/* + * ============================================================ + * Invoking Constructors, Methods, Closures and Field accessors + * ============================================================ + */ + +/** + * Invokes a constructor, creating a new object. + * + * This function allows hidden constructors (constructors with leading + * underscores) to be called. + * + * \param type Type of object to be constructed. + * \param constructor_name The name of the constructor to invoke. Use + * Dart_Null() or Dart_EmptyString() to invoke the unnamed constructor. + * This name should not include the name of the class. + * \param number_of_arguments Size of the arguments array. + * \param arguments An array of arguments to the constructor. + * + * \return If the constructor is called and completes successfully, + * then the new object. If an error occurs during execution, then an + * error handle is returned. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_New(Dart_Handle type, + Dart_Handle constructor_name, + int number_of_arguments, + Dart_Handle* arguments); + +/** + * Allocate a new object without invoking a constructor. + * + * \param type The type of an object to be allocated. + * + * \return The new object. If an error occurs during execution, then an + * error handle is returned. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle Dart_Allocate(Dart_Handle type); + +/** + * Allocate a new object without invoking a constructor, and sets specified + * native fields. + * + * \param type The type of an object to be allocated. + * \param num_native_fields The number of native fields to set. + * \param native_fields An array containing the value of native fields. + * + * \return The new object. If an error occurs during execution, then an + * error handle is returned. + */ +DART_EXPORT Dart_Handle +Dart_AllocateWithNativeFields(Dart_Handle type, + intptr_t num_native_fields, + const intptr_t* native_fields); + +/** + * Invokes a method or function. + * + * The 'target' parameter may be an object, type, or library. If + * 'target' is an object, then this function will invoke an instance + * method. If 'target' is a type, then this function will invoke a + * static method. If 'target' is a library, then this function will + * invoke a top-level function from that library. + * NOTE: This API call cannot be used to invoke methods of a type object. + * + * This function ignores visibility (leading underscores in names). + * + * May generate an unhandled exception error. + * + * \param target An object, type, or library. + * \param name The name of the function or method to invoke. + * \param number_of_arguments Size of the arguments array. + * \param arguments An array of arguments to the function. + * + * \return If the function or method is called and completes + * successfully, then the return value is returned. If an error + * occurs during execution, then an error handle is returned. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_Invoke(Dart_Handle target, + Dart_Handle name, + int number_of_arguments, + Dart_Handle* arguments); +/* TODO(turnidge): Document how to invoke operators. */ + +/** + * Invokes a Closure with the given arguments. + * + * May generate an unhandled exception error. + * + * \return If no error occurs during execution, then the result of + * invoking the closure is returned. If an error occurs during + * execution, then an error handle is returned. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_InvokeClosure(Dart_Handle closure, + int number_of_arguments, + Dart_Handle* arguments); + +/** + * Invokes a Generative Constructor on an object that was previously + * allocated using Dart_Allocate/Dart_AllocateWithNativeFields. + * + * The 'object' parameter must be an object. + * + * This function ignores visibility (leading underscores in names). + * + * May generate an unhandled exception error. + * + * \param object An object. + * \param name The name of the constructor to invoke. + * Use Dart_Null() or Dart_EmptyString() to invoke the unnamed constructor. + * \param number_of_arguments Size of the arguments array. + * \param arguments An array of arguments to the function. + * + * \return If the constructor is called and completes + * successfully, then the object is returned. If an error + * occurs during execution, then an error handle is returned. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_InvokeConstructor(Dart_Handle object, + Dart_Handle name, + int number_of_arguments, + Dart_Handle* arguments); + +/** + * Gets the value of a field. + * + * The 'container' parameter may be an object, type, or library. If + * 'container' is an object, then this function will access an + * instance field. If 'container' is a type, then this function will + * access a static field. If 'container' is a library, then this + * function will access a top-level variable. + * NOTE: This API call cannot be used to access fields of a type object. + * + * This function ignores field visibility (leading underscores in names). + * + * May generate an unhandled exception error. + * + * \param container An object, type, or library. + * \param name A field name. + * + * \return If no error occurs, then the value of the field is + * returned. Otherwise an error handle is returned. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_GetField(Dart_Handle container, Dart_Handle name); + +/** + * Sets the value of a field. + * + * The 'container' parameter may actually be an object, type, or + * library. If 'container' is an object, then this function will + * access an instance field. If 'container' is a type, then this + * function will access a static field. If 'container' is a library, + * then this function will access a top-level variable. + * NOTE: This API call cannot be used to access fields of a type object. + * + * This function ignores field visibility (leading underscores in names). + * + * May generate an unhandled exception error. + * + * \param container An object, type, or library. + * \param name A field name. + * \param value The new field value. + * + * \return A valid handle if no error occurs. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_SetField(Dart_Handle container, Dart_Handle name, Dart_Handle value); + +/* + * ========== + * Exceptions + * ========== + */ + +/* + * TODO(turnidge): Remove these functions from the api and replace all + * uses with Dart_NewUnhandledExceptionError. */ + +/** + * Throws an exception. + * + * This function causes a Dart language exception to be thrown. This + * will proceed in the standard way, walking up Dart frames until an + * appropriate 'catch' block is found, executing 'finally' blocks, + * etc. + * + * If an error handle is passed into this function, the error is + * propagated immediately. See Dart_PropagateError for a discussion + * of error propagation. + * + * If successful, this function does not return. Note that this means + * that the destructors of any stack-allocated C++ objects will not be + * called. If there are no Dart frames on the stack, an error occurs. + * + * \return An error handle if the exception was not thrown. + * Otherwise the function does not return. + */ +DART_EXPORT Dart_Handle Dart_ThrowException(Dart_Handle exception); + +/** + * Rethrows an exception. + * + * Rethrows an exception, unwinding all dart frames on the stack. If + * successful, this function does not return. Note that this means + * that the destructors of any stack-allocated C++ objects will not be + * called. If there are no Dart frames on the stack, an error occurs. + * + * \return An error handle if the exception was not thrown. + * Otherwise the function does not return. + */ +DART_EXPORT Dart_Handle Dart_ReThrowException(Dart_Handle exception, + Dart_Handle stacktrace); + +/* + * =========================== + * Native fields and functions + * =========================== + */ + +/** + * Gets the number of native instance fields in an object. + */ +DART_EXPORT Dart_Handle Dart_GetNativeInstanceFieldCount(Dart_Handle obj, + int* count); + +/** + * Gets the value of a native field. + * + * TODO(turnidge): Document. + */ +DART_EXPORT Dart_Handle Dart_GetNativeInstanceField(Dart_Handle obj, + int index, + intptr_t* value); + +/** + * Sets the value of a native field. + * + * TODO(turnidge): Document. + */ +DART_EXPORT Dart_Handle Dart_SetNativeInstanceField(Dart_Handle obj, + int index, + intptr_t value); + +/** + * The arguments to a native function. + * + * This object is passed to a native function to represent its + * arguments and return value. It allows access to the arguments to a + * native function by index. It also allows the return value of a + * native function to be set. + */ +typedef struct _Dart_NativeArguments* Dart_NativeArguments; + +/** + * Extracts current isolate group data from the native arguments structure. + */ +DART_EXPORT void* Dart_GetNativeIsolateGroupData(Dart_NativeArguments args); + +typedef enum { + Dart_NativeArgument_kBool = 0, + Dart_NativeArgument_kInt32, + Dart_NativeArgument_kUint32, + Dart_NativeArgument_kInt64, + Dart_NativeArgument_kUint64, + Dart_NativeArgument_kDouble, + Dart_NativeArgument_kString, + Dart_NativeArgument_kInstance, + Dart_NativeArgument_kNativeFields, +} Dart_NativeArgument_Type; + +typedef struct _Dart_NativeArgument_Descriptor { + uint8_t type; + uint8_t index; +} Dart_NativeArgument_Descriptor; + +typedef union _Dart_NativeArgument_Value { + bool as_bool; + int32_t as_int32; + uint32_t as_uint32; + int64_t as_int64; + uint64_t as_uint64; + double as_double; + struct { + Dart_Handle dart_str; + void* peer; + } as_string; + struct { + intptr_t num_fields; + intptr_t* values; + } as_native_fields; + Dart_Handle as_instance; +} Dart_NativeArgument_Value; + +enum { + kNativeArgNumberPos = 0, + kNativeArgNumberSize = 8, + kNativeArgTypePos = kNativeArgNumberPos + kNativeArgNumberSize, + kNativeArgTypeSize = 8, +}; + +#define BITMASK(size) ((1 << size) - 1) +#define DART_NATIVE_ARG_DESCRIPTOR(type, position) \ + (((type & BITMASK(kNativeArgTypeSize)) << kNativeArgTypePos) | \ + (position & BITMASK(kNativeArgNumberSize))) + +/** + * Gets the native arguments based on the types passed in and populates + * the passed arguments buffer with appropriate native values. + * + * \param args the Native arguments block passed into the native call. + * \param num_arguments length of argument descriptor array and argument + * values array passed in. + * \param arg_descriptors an array that describes the arguments that + * need to be retrieved. For each argument to be retrieved the descriptor + * contains the argument number (0, 1 etc.) and the argument type + * described using Dart_NativeArgument_Type, e.g: + * DART_NATIVE_ARG_DESCRIPTOR(Dart_NativeArgument_kBool, 1) indicates + * that the first argument is to be retrieved and it should be a boolean. + * \param arg_values array into which the native arguments need to be + * extracted into, the array is allocated by the caller (it could be + * stack allocated to avoid the malloc/free performance overhead). + * + * \return Success if all the arguments could be extracted correctly, + * returns an error handle if there were any errors while extracting the + * arguments (mismatched number of arguments, incorrect types, etc.). + */ +DART_EXPORT Dart_Handle +Dart_GetNativeArguments(Dart_NativeArguments args, + int num_arguments, + const Dart_NativeArgument_Descriptor* arg_descriptors, + Dart_NativeArgument_Value* arg_values); + +/** + * Gets the native argument at some index. + */ +DART_EXPORT Dart_Handle Dart_GetNativeArgument(Dart_NativeArguments args, + int index); +/* TODO(turnidge): Specify the behavior of an out-of-bounds access. */ + +/** + * Gets the number of native arguments. + */ +DART_EXPORT int Dart_GetNativeArgumentCount(Dart_NativeArguments args); + +/** + * Gets all the native fields of the native argument at some index. + * \param args Native arguments structure. + * \param arg_index Index of the desired argument in the structure above. + * \param num_fields size of the intptr_t array 'field_values' passed in. + * \param field_values intptr_t array in which native field values are returned. + * \return Success if the native fields where copied in successfully. Otherwise + * returns an error handle. On success the native field values are copied + * into the 'field_values' array, if the argument at 'arg_index' is a + * null object then 0 is copied as the native field values into the + * 'field_values' array. + */ +DART_EXPORT Dart_Handle +Dart_GetNativeFieldsOfArgument(Dart_NativeArguments args, + int arg_index, + int num_fields, + intptr_t* field_values); + +/** + * Gets the native field of the receiver. + */ +DART_EXPORT Dart_Handle Dart_GetNativeReceiver(Dart_NativeArguments args, + intptr_t* value); + +/** + * Gets a string native argument at some index. + * \param args Native arguments structure. + * \param arg_index Index of the desired argument in the structure above. + * \param peer Returns the peer pointer if the string argument has one. + * \return Success if the string argument has a peer, if it does not + * have a peer then the String object is returned. Otherwise returns + * an error handle (argument is not a String object). + */ +DART_EXPORT Dart_Handle Dart_GetNativeStringArgument(Dart_NativeArguments args, + int arg_index, + void** peer); + +/** + * Gets an integer native argument at some index. + * \param args Native arguments structure. + * \param index Index of the desired argument in the structure above. + * \param value Returns the integer value if the argument is an Integer. + * \return Success if no error occurs. Otherwise returns an error handle. + */ +DART_EXPORT Dart_Handle Dart_GetNativeIntegerArgument(Dart_NativeArguments args, + int index, + int64_t* value); + +/** + * Gets a boolean native argument at some index. + * \param args Native arguments structure. + * \param index Index of the desired argument in the structure above. + * \param value Returns the boolean value if the argument is a Boolean. + * \return Success if no error occurs. Otherwise returns an error handle. + */ +DART_EXPORT Dart_Handle Dart_GetNativeBooleanArgument(Dart_NativeArguments args, + int index, + bool* value); + +/** + * Gets a double native argument at some index. + * \param args Native arguments structure. + * \param index Index of the desired argument in the structure above. + * \param value Returns the double value if the argument is a double. + * \return Success if no error occurs. Otherwise returns an error handle. + */ +DART_EXPORT Dart_Handle Dart_GetNativeDoubleArgument(Dart_NativeArguments args, + int index, + double* value); + +/** + * Sets the return value for a native function. + * + * If retval is an Error handle, then error will be propagated once + * the native functions exits. See Dart_PropagateError for a + * discussion of how different types of errors are propagated. + */ +DART_EXPORT void Dart_SetReturnValue(Dart_NativeArguments args, + Dart_Handle retval); + +DART_EXPORT void Dart_SetWeakHandleReturnValue(Dart_NativeArguments args, + Dart_WeakPersistentHandle rval); + +DART_EXPORT void Dart_SetBooleanReturnValue(Dart_NativeArguments args, + bool retval); + +DART_EXPORT void Dart_SetIntegerReturnValue(Dart_NativeArguments args, + int64_t retval); + +DART_EXPORT void Dart_SetDoubleReturnValue(Dart_NativeArguments args, + double retval); + +/** + * A native function. + */ +typedef void (*Dart_NativeFunction)(Dart_NativeArguments arguments); + +/** + * Native entry resolution callback. + * + * For libraries and scripts which have native functions, the embedder + * can provide a native entry resolver. This callback is used to map a + * name/arity to a Dart_NativeFunction. If no function is found, the + * callback should return NULL. + * + * The parameters to the native resolver function are: + * \param name a Dart string which is the name of the native function. + * \param num_of_arguments is the number of arguments expected by the + * native function. + * \param auto_setup_scope is a boolean flag that can be set by the resolver + * to indicate if this function needs a Dart API scope (see Dart_EnterScope/ + * Dart_ExitScope) to be setup automatically by the VM before calling into + * the native function. By default most native functions would require this + * to be true but some light weight native functions which do not call back + * into the VM through the Dart API may not require a Dart scope to be + * setup automatically. + * + * \return A valid Dart_NativeFunction which resolves to a native entry point + * for the native function. + * + * See Dart_SetNativeResolver. + */ +typedef Dart_NativeFunction (*Dart_NativeEntryResolver)(Dart_Handle name, + int num_of_arguments, + bool* auto_setup_scope); +/* TODO(turnidge): Consider renaming to NativeFunctionResolver or + * NativeResolver. */ + +/** + * Native entry symbol lookup callback. + * + * For libraries and scripts which have native functions, the embedder + * can provide a callback for mapping a native entry to a symbol. This callback + * maps a native function entry PC to the native function name. If no native + * entry symbol can be found, the callback should return NULL. + * + * The parameters to the native reverse resolver function are: + * \param nf A Dart_NativeFunction. + * + * \return A const UTF-8 string containing the symbol name or NULL. + * + * See Dart_SetNativeResolver. + */ +typedef const uint8_t* (*Dart_NativeEntrySymbol)(Dart_NativeFunction nf); + +/** + * FFI Native C function pointer resolver callback. + * + * See Dart_SetFfiNativeResolver. + */ +typedef void* (*Dart_FfiNativeResolver)(const char* name, uintptr_t args_n); + +/* + * =========== + * Environment + * =========== + */ + +/** + * An environment lookup callback function. + * + * \param name The name of the value to lookup in the environment. + * + * \return A valid handle to a string if the name exists in the + * current environment or Dart_Null() if not. + */ +typedef Dart_Handle (*Dart_EnvironmentCallback)(Dart_Handle name); + +/** + * Sets the environment callback for the current isolate. This + * callback is used to lookup environment values by name in the + * current environment. This enables the embedder to supply values for + * the const constructors bool.fromEnvironment, int.fromEnvironment + * and String.fromEnvironment. + */ +DART_EXPORT Dart_Handle +Dart_SetEnvironmentCallback(Dart_EnvironmentCallback callback); + +/** + * Sets the callback used to resolve native functions for a library. + * + * \param library A library. + * \param resolver A native entry resolver. + * + * \return A valid handle if the native resolver was set successfully. + */ +DART_EXPORT Dart_Handle +Dart_SetNativeResolver(Dart_Handle library, + Dart_NativeEntryResolver resolver, + Dart_NativeEntrySymbol symbol); +/* TODO(turnidge): Rename to Dart_LibrarySetNativeResolver? */ + +/** + * Returns the callback used to resolve native functions for a library. + * + * \param library A library. + * \param resolver a pointer to a Dart_NativeEntryResolver + * + * \return A valid handle if the library was found. + */ +DART_EXPORT Dart_Handle +Dart_GetNativeResolver(Dart_Handle library, Dart_NativeEntryResolver* resolver); + +/** + * Returns the callback used to resolve native function symbols for a library. + * + * \param library A library. + * \param resolver a pointer to a Dart_NativeEntrySymbol. + * + * \return A valid handle if the library was found. + */ +DART_EXPORT Dart_Handle Dart_GetNativeSymbol(Dart_Handle library, + Dart_NativeEntrySymbol* resolver); + +/** + * Sets the callback used to resolve FFI native functions for a library. + * The resolved functions are expected to be a C function pointer of the + * correct signature (as specified in the `@Native()` function + * annotation in Dart code). + * + * NOTE: This is an experimental feature and might change in the future. + * + * \param library A library. + * \param resolver A native function resolver. + * + * \return A valid handle if the native resolver was set successfully. + */ +DART_EXPORT Dart_Handle +Dart_SetFfiNativeResolver(Dart_Handle library, Dart_FfiNativeResolver resolver); + +/* + * ===================== + * Scripts and Libraries + * ===================== + */ + +typedef enum { + Dart_kCanonicalizeUrl = 0, + Dart_kImportTag, + Dart_kKernelTag, +} Dart_LibraryTag; + +/** + * The library tag handler is a multi-purpose callback provided by the + * embedder to the Dart VM. The embedder implements the tag handler to + * provide the ability to load Dart scripts and imports. + * + * -- TAGS -- + * + * Dart_kCanonicalizeUrl + * + * This tag indicates that the embedder should canonicalize 'url' with + * respect to 'library'. For most embedders, the + * Dart_DefaultCanonicalizeUrl function is a sufficient implementation + * of this tag. The return value should be a string holding the + * canonicalized url. + * + * Dart_kImportTag + * + * This tag is used to load a library from IsolateMirror.loadUri. The embedder + * should call Dart_LoadLibraryFromKernel to provide the library to the VM. The + * return value should be an error or library (the result from + * Dart_LoadLibraryFromKernel). + * + * Dart_kKernelTag + * + * This tag is used to load the intermediate file (kernel) generated by + * the Dart front end. This tag is typically used when a 'hot-reload' + * of an application is needed and the VM is 'use dart front end' mode. + * The dart front end typically compiles all the scripts, imports and part + * files into one intermediate file hence we don't use the source/import or + * script tags. The return value should be an error or a TypedData containing + * the kernel bytes. + * + */ +typedef Dart_Handle (*Dart_LibraryTagHandler)( + Dart_LibraryTag tag, + Dart_Handle library_or_package_map_url, + Dart_Handle url); + +/** + * Sets library tag handler for the current isolate. This handler is + * used to handle the various tags encountered while loading libraries + * or scripts in the isolate. + * + * \param handler Handler code to be used for handling the various tags + * encountered while loading libraries or scripts in the isolate. + * + * \return If no error occurs, the handler is set for the isolate. + * Otherwise an error handle is returned. + * + * TODO(turnidge): Document. + */ +DART_EXPORT Dart_Handle +Dart_SetLibraryTagHandler(Dart_LibraryTagHandler handler); + +/** + * Handles deferred loading requests. When this handler is invoked, it should + * eventually load the deferred loading unit with the given id and call + * Dart_DeferredLoadComplete or Dart_DeferredLoadCompleteError. It is + * recommended that the loading occur asynchronously, but it is permitted to + * call Dart_DeferredLoadComplete or Dart_DeferredLoadCompleteError before the + * handler returns. + * + * If an error is returned, it will be propagated through + * `prefix.loadLibrary()`. This is useful for synchronous + * implementations, which must propagate any unwind errors from + * Dart_DeferredLoadComplete or Dart_DeferredLoadComplete. Otherwise the handler + * should return a non-error such as `Dart_Null()`. + */ +typedef Dart_Handle (*Dart_DeferredLoadHandler)(intptr_t loading_unit_id); + +/** + * Sets the deferred load handler for the current isolate. This handler is + * used to handle loading deferred imports in an AppJIT or AppAOT program. + */ +DART_EXPORT Dart_Handle +Dart_SetDeferredLoadHandler(Dart_DeferredLoadHandler handler); + +/** + * Notifies the VM that a deferred load completed successfully. This function + * will eventually cause the corresponding `prefix.loadLibrary()` futures to + * complete. + * + * Requires the current isolate to be the same current isolate during the + * invocation of the Dart_DeferredLoadHandler. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_DeferredLoadComplete(intptr_t loading_unit_id, + const uint8_t* snapshot_data, + const uint8_t* snapshot_instructions); + +/** + * Notifies the VM that a deferred load failed. This function + * will eventually cause the corresponding `prefix.loadLibrary()` futures to + * complete with an error. + * + * If `transient` is true, future invocations of `prefix.loadLibrary()` will + * trigger new load requests. If false, futures invocation will complete with + * the same error. + * + * Requires the current isolate to be the same current isolate during the + * invocation of the Dart_DeferredLoadHandler. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_DeferredLoadCompleteError(intptr_t loading_unit_id, + const char* error_message, + bool transient); + +/** + * Canonicalizes a url with respect to some library. + * + * The url is resolved with respect to the library's url and some url + * normalizations are performed. + * + * This canonicalization function should be sufficient for most + * embedders to implement the Dart_kCanonicalizeUrl tag. + * + * \param base_url The base url relative to which the url is + * being resolved. + * \param url The url being resolved and canonicalized. This + * parameter is a string handle. + * + * \return If no error occurs, a String object is returned. Otherwise + * an error handle is returned. + */ +DART_EXPORT Dart_Handle Dart_DefaultCanonicalizeUrl(Dart_Handle base_url, + Dart_Handle url); + +/** + * Loads the root library for the current isolate. + * + * Requires there to be no current root library. + * + * \param kernel_buffer A buffer which contains a kernel binary (see + * pkg/kernel/binary.md). Must remain valid until isolate group shutdown. + * \param kernel_size Length of the passed in buffer. + * + * \return A handle to the root library, or an error. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_LoadScriptFromKernel(const uint8_t* kernel_buffer, intptr_t kernel_size); + +/** + * Gets the library for the root script for the current isolate. + * + * If the root script has not yet been set for the current isolate, + * this function returns Dart_Null(). This function never returns an + * error handle. + * + * \return Returns the root Library for the current isolate or Dart_Null(). + */ +DART_EXPORT Dart_Handle Dart_RootLibrary(void); + +/** + * Sets the root library for the current isolate. + * + * \return Returns an error handle if `library` is not a library handle. + */ +DART_EXPORT Dart_Handle Dart_SetRootLibrary(Dart_Handle library); + +/** + * Lookup or instantiate a legacy type by name and type arguments from a + * Library. + * + * \param library The library containing the class or interface. + * \param class_name The class name for the type. + * \param number_of_type_arguments Number of type arguments. + * For non parametric types the number of type arguments would be 0. + * \param type_arguments Pointer to an array of type arguments. + * For non parametric types a NULL would be passed in for this argument. + * + * \return If no error occurs, the type is returned. + * Otherwise an error handle is returned. + */ +DART_EXPORT Dart_Handle Dart_GetType(Dart_Handle library, + Dart_Handle class_name, + intptr_t number_of_type_arguments, + Dart_Handle* type_arguments); + +/** + * Lookup or instantiate a nullable type by name and type arguments from + * Library. + * + * \param library The library containing the class or interface. + * \param class_name The class name for the type. + * \param number_of_type_arguments Number of type arguments. + * For non parametric types the number of type arguments would be 0. + * \param type_arguments Pointer to an array of type arguments. + * For non parametric types a NULL would be passed in for this argument. + * + * \return If no error occurs, the type is returned. + * Otherwise an error handle is returned. + */ +DART_EXPORT Dart_Handle Dart_GetNullableType(Dart_Handle library, + Dart_Handle class_name, + intptr_t number_of_type_arguments, + Dart_Handle* type_arguments); + +/** + * Lookup or instantiate a non-nullable type by name and type arguments from + * Library. + * + * \param library The library containing the class or interface. + * \param class_name The class name for the type. + * \param number_of_type_arguments Number of type arguments. + * For non parametric types the number of type arguments would be 0. + * \param type_arguments Pointer to an array of type arguments. + * For non parametric types a NULL would be passed in for this argument. + * + * \return If no error occurs, the type is returned. + * Otherwise an error handle is returned. + */ +DART_EXPORT Dart_Handle +Dart_GetNonNullableType(Dart_Handle library, + Dart_Handle class_name, + intptr_t number_of_type_arguments, + Dart_Handle* type_arguments); + +/** + * Creates a nullable version of the provided type. + * + * \param type The type to be converted to a nullable type. + * + * \return If no error occurs, a nullable type is returned. + * Otherwise an error handle is returned. + */ +DART_EXPORT Dart_Handle Dart_TypeToNullableType(Dart_Handle type); + +/** + * Creates a non-nullable version of the provided type. + * + * \param type The type to be converted to a non-nullable type. + * + * \return If no error occurs, a non-nullable type is returned. + * Otherwise an error handle is returned. + */ +DART_EXPORT Dart_Handle Dart_TypeToNonNullableType(Dart_Handle type); + +/** + * A type's nullability. + * + * \param type A Dart type. + * \param result An out parameter containing the result of the check. True if + * the type is of the specified nullability, false otherwise. + * + * \return Returns an error handle if type is not of type Type. + */ +DART_EXPORT Dart_Handle Dart_IsNullableType(Dart_Handle type, bool* result); +DART_EXPORT Dart_Handle Dart_IsNonNullableType(Dart_Handle type, bool* result); +DART_EXPORT Dart_Handle Dart_IsLegacyType(Dart_Handle type, bool* result); + +/** + * Lookup a class or interface by name from a Library. + * + * \param library The library containing the class or interface. + * \param class_name The name of the class or interface. + * + * \return If no error occurs, the class or interface is + * returned. Otherwise an error handle is returned. + */ +DART_EXPORT Dart_Handle Dart_GetClass(Dart_Handle library, + Dart_Handle class_name); +/* TODO(asiva): The above method needs to be removed once all uses + * of it are removed from the embedder code. */ + +/** + * Returns an import path to a Library, such as "file:///test.dart" or + * "dart:core". + */ +DART_EXPORT Dart_Handle Dart_LibraryUrl(Dart_Handle library); + +/** + * Returns a URL from which a Library was loaded. + */ +DART_EXPORT Dart_Handle Dart_LibraryResolvedUrl(Dart_Handle library); + +/** + * \return An array of libraries. + */ +DART_EXPORT Dart_Handle Dart_GetLoadedLibraries(void); + +DART_EXPORT Dart_Handle Dart_LookupLibrary(Dart_Handle url); +/* TODO(turnidge): Consider returning Dart_Null() when the library is + * not found to distinguish that from a true error case. */ + +/** + * Report an loading error for the library. + * + * \param library The library that failed to load. + * \param error The Dart error instance containing the load error. + * + * \return If the VM handles the error, the return value is + * a null handle. If it doesn't handle the error, the error + * object is returned. + */ +DART_EXPORT Dart_Handle Dart_LibraryHandleError(Dart_Handle library, + Dart_Handle error); + +/** + * Called by the embedder to load a partial program. Does not set the root + * library. + * + * \param kernel_buffer A buffer which contains a kernel binary (see + * pkg/kernel/binary.md). Must remain valid until isolate shutdown. + * \param kernel_buffer_size Length of the passed in buffer. + * + * \return A handle to the main library of the compilation unit, or an error. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_LoadLibraryFromKernel(const uint8_t* kernel_buffer, + intptr_t kernel_buffer_size); +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_LoadLibrary(Dart_Handle kernel_buffer); + +/** + * Indicates that all outstanding load requests have been satisfied. + * This finalizes all the new classes loaded and optionally completes + * deferred library futures. + * + * Requires there to be a current isolate. + * + * \param complete_futures Specify true if all deferred library + * futures should be completed, false otherwise. + * + * \return Success if all classes have been finalized and deferred library + * futures are completed. Otherwise, returns an error. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_FinalizeLoading(bool complete_futures); + +/* + * ===== + * Peers + * ===== + */ + +/** + * The peer field is a lazily allocated field intended for storage of + * an uncommonly used values. Most instances types can have a peer + * field allocated. The exceptions are subtypes of Null, num, and + * bool. + */ + +/** + * Returns the value of peer field of 'object' in 'peer'. + * + * \param object An object. + * \param peer An out parameter that returns the value of the peer + * field. + * + * \return Returns an error if 'object' is a subtype of Null, num, or + * bool. + */ +DART_EXPORT Dart_Handle Dart_GetPeer(Dart_Handle object, void** peer); + +/** + * Sets the value of the peer field of 'object' to the value of + * 'peer'. + * + * \param object An object. + * \param peer A value to store in the peer field. + * + * \return Returns an error if 'object' is a subtype of Null, num, or + * bool. + */ +DART_EXPORT Dart_Handle Dart_SetPeer(Dart_Handle object, void* peer); + +/* + * ====== + * Kernel + * ====== + */ + +/** + * Experimental support for Dart to Kernel parser isolate. + * + * TODO(hausner): Document finalized interface. + * + */ + +// TODO(33433): Remove kernel service from the embedding API. + +typedef enum { + Dart_KernelCompilationStatus_Unknown = -1, + Dart_KernelCompilationStatus_Ok = 0, + Dart_KernelCompilationStatus_Error = 1, + Dart_KernelCompilationStatus_Crash = 2, + Dart_KernelCompilationStatus_MsgFailed = 3, +} Dart_KernelCompilationStatus; + +typedef struct { + Dart_KernelCompilationStatus status; + char* error; + uint8_t* kernel; + intptr_t kernel_size; +} Dart_KernelCompilationResult; + +typedef enum { + Dart_KernelCompilationVerbosityLevel_Error = 0, + Dart_KernelCompilationVerbosityLevel_Warning, + Dart_KernelCompilationVerbosityLevel_Info, + Dart_KernelCompilationVerbosityLevel_All, +} Dart_KernelCompilationVerbosityLevel; + +DART_EXPORT bool Dart_IsKernelIsolate(Dart_Isolate isolate); +DART_EXPORT bool Dart_KernelIsolateIsRunning(void); +DART_EXPORT Dart_Port Dart_KernelPort(void); + +/** + * Compiles the given `script_uri` to a kernel file. + * + * \param platform_kernel A buffer containing the kernel of the platform (e.g. + * `vm_platform_strong.dill`). The VM does not take ownership of this memory. + * + * \param platform_kernel_size The length of the platform_kernel buffer. + * + * \param snapshot_compile Set to `true` when the compilation is for a snapshot. + * This is used by the frontend to determine if compilation related information + * should be printed to console (e.g., null safety mode). + * + * \param embed_sources Set to `true` when sources should be embedded in the + * kernel file. + * + * \param verbosity Specifies the logging behavior of the kernel compilation + * service. + * + * \return Returns the result of the compilation. + * + * On a successful compilation the returned [Dart_KernelCompilationResult] has + * a status of [Dart_KernelCompilationStatus_Ok] and the `kernel`/`kernel_size` + * fields are set. The caller takes ownership of the malloc()ed buffer. + * + * On a failed compilation the `error` might be set describing the reason for + * the failed compilation. The caller takes ownership of the malloc()ed + * error. + * + * Requires there to be a current isolate. + */ +DART_EXPORT Dart_KernelCompilationResult +Dart_CompileToKernel(const char* script_uri, + const uint8_t* platform_kernel, + const intptr_t platform_kernel_size, + bool incremental_compile, + bool snapshot_compile, + bool embed_sources, + const char* package_config, + Dart_KernelCompilationVerbosityLevel verbosity); + +typedef struct { + const char* uri; + const char* source; +} Dart_SourceFile; + +DART_EXPORT Dart_KernelCompilationResult Dart_KernelListDependencies(void); + +/** + * Sets the kernel buffer which will be used to load Dart SDK sources + * dynamically at runtime. + * + * \param platform_kernel A buffer containing kernel which has sources for the + * Dart SDK populated. Note: The VM does not take ownership of this memory. + * + * \param platform_kernel_size The length of the platform_kernel buffer. + */ +DART_EXPORT void Dart_SetDartLibrarySourcesKernel( + const uint8_t* platform_kernel, + const intptr_t platform_kernel_size); + +/** + * Always return true as the VM only supports strong null safety. + */ +DART_EXPORT bool Dart_DetectNullSafety(const char* script_uri, + const char* package_config, + const char* original_working_directory, + const uint8_t* snapshot_data, + const uint8_t* snapshot_instructions, + const uint8_t* kernel_buffer, + intptr_t kernel_buffer_size); + +#define DART_KERNEL_ISOLATE_NAME "kernel-service" + +/* + * ======= + * Service + * ======= + */ + +#define DART_VM_SERVICE_ISOLATE_NAME "vm-service" + +/** + * Returns true if isolate is the service isolate. + * + * \param isolate An isolate + * + * \return Returns true if 'isolate' is the service isolate. + */ +DART_EXPORT bool Dart_IsServiceIsolate(Dart_Isolate isolate); + +/** + * Writes the CPU profile to the timeline as a series of 'instant' events. + * + * Note that this is an expensive operation. + * + * \param main_port The main port of the Isolate whose profile samples to write. + * \param error An optional error, must be free()ed by caller. + * + * \return Returns true if the profile is successfully written and false + * otherwise. + */ +DART_EXPORT bool Dart_WriteProfileToTimeline(Dart_Port main_port, char** error); + +/* + * ============== + * Precompilation + * ============== + */ + +/** + * Compiles all functions reachable from entry points and marks + * the isolate to disallow future compilation. + * + * Entry points should be specified using `@pragma("vm:entry-point")` + * annotation. + * + * \return An error handle if a compilation error or runtime error running const + * constructors was encountered. + */ +DART_EXPORT Dart_Handle Dart_Precompile(void); + +typedef void (*Dart_CreateLoadingUnitCallback)( + void* callback_data, + intptr_t loading_unit_id, + void** write_callback_data, + void** write_debug_callback_data); +typedef void (*Dart_StreamingWriteCallback)(void* callback_data, + const uint8_t* buffer, + intptr_t size); +typedef void (*Dart_StreamingCloseCallback)(void* callback_data); + +DART_EXPORT Dart_Handle Dart_LoadingUnitLibraryUris(intptr_t loading_unit_id); + +// On Darwin systems, 'dlsym' adds an '_' to the beginning of the symbol name. +// Use the '...CSymbol' definitions for resolving through 'dlsym'. The actual +// symbol names in the objects are given by the '...AsmSymbol' definitions. +#if defined(__APPLE__) +#define kSnapshotBuildIdCSymbol "kDartSnapshotBuildId" +#define kVmSnapshotDataCSymbol "kDartVmSnapshotData" +#define kVmSnapshotInstructionsCSymbol "kDartVmSnapshotInstructions" +#define kVmSnapshotBssCSymbol "kDartVmSnapshotBss" +#define kIsolateSnapshotDataCSymbol "kDartIsolateSnapshotData" +#define kIsolateSnapshotInstructionsCSymbol "kDartIsolateSnapshotInstructions" +#define kIsolateSnapshotBssCSymbol "kDartIsolateSnapshotBss" +#else +#define kSnapshotBuildIdCSymbol "_kDartSnapshotBuildId" +#define kVmSnapshotDataCSymbol "_kDartVmSnapshotData" +#define kVmSnapshotInstructionsCSymbol "_kDartVmSnapshotInstructions" +#define kVmSnapshotBssCSymbol "_kDartVmSnapshotBss" +#define kIsolateSnapshotDataCSymbol "_kDartIsolateSnapshotData" +#define kIsolateSnapshotInstructionsCSymbol "_kDartIsolateSnapshotInstructions" +#define kIsolateSnapshotBssCSymbol "_kDartIsolateSnapshotBss" +#endif + +#define kSnapshotBuildIdAsmSymbol "_kDartSnapshotBuildId" +#define kVmSnapshotDataAsmSymbol "_kDartVmSnapshotData" +#define kVmSnapshotInstructionsAsmSymbol "_kDartVmSnapshotInstructions" +#define kVmSnapshotBssAsmSymbol "_kDartVmSnapshotBss" +#define kIsolateSnapshotDataAsmSymbol "_kDartIsolateSnapshotData" +#define kIsolateSnapshotInstructionsAsmSymbol \ + "_kDartIsolateSnapshotInstructions" +#define kIsolateSnapshotBssAsmSymbol "_kDartIsolateSnapshotBss" + +/** + * Creates a precompiled snapshot. + * - A root library must have been loaded. + * - Dart_Precompile must have been called. + * + * Outputs an assembly file defining the symbols listed in the definitions + * above. + * + * The assembly should be compiled as a static or shared library and linked or + * loaded by the embedder. Running this snapshot requires a VM compiled with + * DART_PRECOMPILED_SNAPSHOT. The kDartVmSnapshotData and + * kDartVmSnapshotInstructions should be passed to Dart_Initialize. The + * kDartIsolateSnapshotData and kDartIsolateSnapshotInstructions should be + * passed to Dart_CreateIsolateGroup. + * + * The callback will be invoked one or more times to provide the assembly code. + * + * If stripped is true, then the assembly code will not include DWARF + * debugging sections. + * + * If debug_callback_data is provided, debug_callback_data will be used with + * the callback to provide separate debugging information. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_CreateAppAOTSnapshotAsAssembly(Dart_StreamingWriteCallback callback, + void* callback_data, + bool stripped, + void* debug_callback_data); +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_CreateAppAOTSnapshotAsAssemblies( + Dart_CreateLoadingUnitCallback next_callback, + void* next_callback_data, + bool stripped, + Dart_StreamingWriteCallback write_callback, + Dart_StreamingCloseCallback close_callback); + +/** + * Creates a precompiled snapshot. + * - A root library must have been loaded. + * - Dart_Precompile must have been called. + * + * Outputs an ELF shared library defining the symbols + * - _kDartVmSnapshotData + * - _kDartVmSnapshotInstructions + * - _kDartIsolateSnapshotData + * - _kDartIsolateSnapshotInstructions + * + * The shared library should be dynamically loaded by the embedder. + * Running this snapshot requires a VM compiled with DART_PRECOMPILED_SNAPSHOT. + * The kDartVmSnapshotData and kDartVmSnapshotInstructions should be passed to + * Dart_Initialize. The kDartIsolateSnapshotData and + * kDartIsolateSnapshotInstructions should be passed to Dart_CreateIsolate. + * + * The callback will be invoked one or more times to provide the binary output. + * + * If stripped is true, then the binary output will not include DWARF + * debugging sections. + * + * If debug_callback_data is provided, debug_callback_data will be used with + * the callback to provide separate debugging information. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_CreateAppAOTSnapshotAsElf(Dart_StreamingWriteCallback callback, + void* callback_data, + bool stripped, + void* debug_callback_data); +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_CreateAppAOTSnapshotAsElfs(Dart_CreateLoadingUnitCallback next_callback, + void* next_callback_data, + bool stripped, + Dart_StreamingWriteCallback write_callback, + Dart_StreamingCloseCallback close_callback); + +/** + * Like Dart_CreateAppAOTSnapshotAsAssembly, but only includes + * kDartVmSnapshotData and kDartVmSnapshotInstructions. It also does + * not strip DWARF information from the generated assembly or allow for + * separate debug information. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_CreateVMAOTSnapshotAsAssembly(Dart_StreamingWriteCallback callback, + void* callback_data); + +/** + * Sorts the class-ids in depth first traversal order of the inheritance + * tree. This is a costly operation, but it can make method dispatch + * more efficient and is done before writing snapshots. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle Dart_SortClasses(void); + +/** + * Creates a snapshot that caches compiled code and type feedback for faster + * startup and quicker warmup in a subsequent process. + * + * Outputs a snapshot in two pieces. The pieces should be passed to + * Dart_CreateIsolateGroup in a VM using the same VM snapshot pieces used in the + * current VM. The instructions piece must be loaded with read and execute + * permissions; the data piece may be loaded as read-only. + * + * - Requires the VM to have not been started with --precompilation. + * - Not supported when targeting IA32. + * - The VM writing the snapshot and the VM reading the snapshot must be the + * same version, must be built in the same DEBUG/RELEASE/PRODUCT mode, must + * be targeting the same architecture, and must both be in checked mode or + * both in unchecked mode. + * + * The buffers are scope allocated and are only valid until the next call to + * Dart_ExitScope. + * + * \return A valid handle if no error occurs during the operation. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_CreateAppJITSnapshotAsBlobs(uint8_t** isolate_snapshot_data_buffer, + intptr_t* isolate_snapshot_data_size, + uint8_t** isolate_snapshot_instructions_buffer, + intptr_t* isolate_snapshot_instructions_size); + +/** + * Get obfuscation map for precompiled code. + * + * Obfuscation map is encoded as a JSON array of pairs (original name, + * obfuscated name). + * + * \return Returns an error handler if the VM was built in a mode that does not + * support obfuscation. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle +Dart_GetObfuscationMap(uint8_t** buffer, intptr_t* buffer_length); + +/** + * Returns whether the VM only supports running from precompiled snapshots and + * not from any other kind of snapshot or from source (that is, the VM was + * compiled with DART_PRECOMPILED_RUNTIME). + */ +DART_EXPORT bool Dart_IsPrecompiledRuntime(void); + +/** + * Print a native stack trace. Used for crash handling. + * + * If context is NULL, prints the current stack trace. Otherwise, context + * should be a CONTEXT* (Windows) or ucontext_t* (POSIX) from a signal handler + * running on the current thread. + */ +DART_EXPORT void Dart_DumpNativeStackTrace(void* context); + +/** + * Indicate that the process is about to abort, and the Dart VM should not + * attempt to cleanup resources. + */ +DART_EXPORT void Dart_PrepareToAbort(void); + +/** + * Callback provided by the embedder that is used by the VM to + * produce footnotes appended to DWARF stack traces. + * + * Whenever VM formats a stack trace as a string it would call this callback + * passing raw program counters for each frame in the stack trace. + * + * Embedder can then return a string which if not-null will be appended to the + * formatted stack trace. + * + * Returned string is expected to be `malloc()` allocated. VM takes ownership + * of the returned string and will `free()` it. + * + * \param addresses raw program counter addresses for each frame + * \param count number of elements in the addresses array + */ +typedef char* (*Dart_DwarfStackTraceFootnoteCallback)(void* addresses[], + intptr_t count); + +/** + * Configure DWARF stack trace footnote callback. + */ +DART_EXPORT void Dart_SetDwarfStackTraceFootnoteCallback( + Dart_DwarfStackTraceFootnoteCallback callback); + +#endif /* INCLUDE_DART_API_H_ */ /* NOLINT */ diff --git a/pkgs/objective_c/src/include/dart_api_dl.c b/pkgs/objective_c/src/include/dart_api_dl.c new file mode 100644 index 000000000..48fb54e7b --- /dev/null +++ b/pkgs/objective_c/src/include/dart_api_dl.c @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file + * for details. All rights reserved. Use of this source code is governed by a + * BSD-style license that can be found in the LICENSE file. + */ + +#include "dart_api_dl.h" /* NOLINT */ +#include "dart_version.h" /* NOLINT */ +#include "internal/dart_api_dl_impl.h" /* NOLINT */ + +#include +#include + +#define DART_API_DL_DEFINITIONS(name, R, A) name##_Type name##_DL = NULL; + +DART_API_ALL_DL_SYMBOLS(DART_API_DL_DEFINITIONS) +DART_API_DEPRECATED_DL_SYMBOLS(DART_API_DL_DEFINITIONS) + +#undef DART_API_DL_DEFINITIONS + +typedef void* DartApiEntry_function; + +DartApiEntry_function FindFunctionPointer(const DartApiEntry* entries, + const char* name) { + while (entries->name != NULL) { + if (strcmp(entries->name, name) == 0) return entries->function; + entries++; + } + return NULL; +} + +DART_EXPORT void Dart_UpdateExternalSize_Deprecated( + Dart_WeakPersistentHandle object, intptr_t external_size) { + printf("Dart_UpdateExternalSize is a nop, it has been deprecated\n"); +} + +DART_EXPORT void Dart_UpdateFinalizableExternalSize_Deprecated( + Dart_FinalizableHandle object, + Dart_Handle strong_ref_to_object, + intptr_t external_allocation_size) { + printf("Dart_UpdateFinalizableExternalSize is a nop, " + "it has been deprecated\n"); +} + +intptr_t Dart_InitializeApiDL(void* data) { + DartApi* dart_api_data = (DartApi*)data; + + if (dart_api_data->major != DART_API_DL_MAJOR_VERSION) { + // If the DartVM we're running on does not have the same version as this + // file was compiled against, refuse to initialize. The symbols are not + // compatible. + return -1; + } + // Minor versions are allowed to be different. + // If the DartVM has a higher minor version, it will provide more symbols + // than we initialize here. + // If the DartVM has a lower minor version, it will not provide all symbols. + // In that case, we leave the missing symbols un-initialized. Those symbols + // should not be used by the Dart and native code. The client is responsible + // for checking the minor version number himself based on which symbols it + // is using. + // (If we would error out on this case, recompiling native code against a + // newer SDK would break all uses on older SDKs, which is too strict.) + + const DartApiEntry* dart_api_function_pointers = dart_api_data->functions; + +#define DART_API_DL_INIT(name, R, A) \ + name##_DL = \ + (name##_Type)(FindFunctionPointer(dart_api_function_pointers, #name)); + DART_API_ALL_DL_SYMBOLS(DART_API_DL_INIT) +#undef DART_API_DL_INIT + +#define DART_API_DEPRECATED_DL_INIT(name, R, A) \ + name##_DL = name##_Deprecated; + DART_API_DEPRECATED_DL_SYMBOLS(DART_API_DEPRECATED_DL_INIT) +#undef DART_API_DEPRECATED_DL_INIT + + return 0; +} diff --git a/pkgs/objective_c/src/include/dart_api_dl.h b/pkgs/objective_c/src/include/dart_api_dl.h new file mode 100644 index 000000000..5088b4337 --- /dev/null +++ b/pkgs/objective_c/src/include/dart_api_dl.h @@ -0,0 +1,165 @@ +/* + * Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file + * for details. All rights reserved. Use of this source code is governed by a + * BSD-style license that can be found in the LICENSE file. + */ + +#ifndef RUNTIME_INCLUDE_DART_API_DL_H_ +#define RUNTIME_INCLUDE_DART_API_DL_H_ + +#include "dart_api.h" /* NOLINT */ +#include "dart_native_api.h" /* NOLINT */ + +/** \mainpage Dynamically Linked Dart API + * + * This exposes a subset of symbols from dart_api.h and dart_native_api.h + * available in every Dart embedder through dynamic linking. + * + * All symbols are postfixed with _DL to indicate that they are dynamically + * linked and to prevent conflicts with the original symbol. + * + * Link `dart_api_dl.c` file into your library and invoke + * `Dart_InitializeApiDL` with `NativeApi.initializeApiDLData`. + * + * Returns 0 on success. + */ + +DART_EXPORT intptr_t Dart_InitializeApiDL(void* data); + +// ============================================================================ +// IMPORTANT! Never update these signatures without properly updating +// DART_API_DL_MAJOR_VERSION and DART_API_DL_MINOR_VERSION. +// +// Verbatim copy of `dart_native_api.h` and `dart_api.h` symbol names and types +// to trigger compile-time errors if the symbols in those files are updated +// without updating these. +// +// Function return and argument types, and typedefs are carbon copied. Structs +// are typechecked nominally in C/C++, so they are not copied, instead a +// comment is added to their definition. +typedef int64_t Dart_Port_DL; + +typedef void (*Dart_NativeMessageHandler_DL)(Dart_Port_DL dest_port_id, + Dart_CObject* message); + +// dart_native_api.h symbols can be called on any thread. +#define DART_NATIVE_API_DL_SYMBOLS(F) \ + /***** dart_native_api.h *****/ \ + /* Dart_Port */ \ + F(Dart_PostCObject, bool, (Dart_Port_DL port_id, Dart_CObject * message)) \ + F(Dart_PostInteger, bool, (Dart_Port_DL port_id, int64_t message)) \ + F(Dart_NewNativePort, Dart_Port_DL, \ + (const char* name, Dart_NativeMessageHandler_DL handler, \ + bool handle_concurrently)) \ + F(Dart_CloseNativePort, bool, (Dart_Port_DL native_port_id)) + +// dart_api.h symbols can only be called on Dart threads. +#define DART_API_DL_SYMBOLS(F) \ + /***** dart_api.h *****/ \ + /* Errors */ \ + F(Dart_IsError, bool, (Dart_Handle handle)) \ + F(Dart_IsApiError, bool, (Dart_Handle handle)) \ + F(Dart_IsUnhandledExceptionError, bool, (Dart_Handle handle)) \ + F(Dart_IsCompilationError, bool, (Dart_Handle handle)) \ + F(Dart_IsFatalError, bool, (Dart_Handle handle)) \ + F(Dart_GetError, const char*, (Dart_Handle handle)) \ + F(Dart_ErrorHasException, bool, (Dart_Handle handle)) \ + F(Dart_ErrorGetException, Dart_Handle, (Dart_Handle handle)) \ + F(Dart_ErrorGetStackTrace, Dart_Handle, (Dart_Handle handle)) \ + F(Dart_NewApiError, Dart_Handle, (const char* error)) \ + F(Dart_NewCompilationError, Dart_Handle, (const char* error)) \ + F(Dart_NewUnhandledExceptionError, Dart_Handle, (Dart_Handle exception)) \ + F(Dart_PropagateError, void, (Dart_Handle handle)) \ + /* Dart_Handle, Dart_PersistentHandle, Dart_WeakPersistentHandle */ \ + F(Dart_HandleFromPersistent, Dart_Handle, (Dart_PersistentHandle object)) \ + F(Dart_HandleFromWeakPersistent, Dart_Handle, \ + (Dart_WeakPersistentHandle object)) \ + F(Dart_NewPersistentHandle, Dart_PersistentHandle, (Dart_Handle object)) \ + F(Dart_SetPersistentHandle, void, \ + (Dart_PersistentHandle obj1, Dart_Handle obj2)) \ + F(Dart_DeletePersistentHandle, void, (Dart_PersistentHandle object)) \ + F(Dart_NewWeakPersistentHandle, Dart_WeakPersistentHandle, \ + (Dart_Handle object, void* peer, intptr_t external_allocation_size, \ + Dart_HandleFinalizer callback)) \ + F(Dart_DeleteWeakPersistentHandle, void, (Dart_WeakPersistentHandle object)) \ + F(Dart_NewFinalizableHandle, Dart_FinalizableHandle, \ + (Dart_Handle object, void* peer, intptr_t external_allocation_size, \ + Dart_HandleFinalizer callback)) \ + F(Dart_DeleteFinalizableHandle, void, \ + (Dart_FinalizableHandle object, Dart_Handle strong_ref_to_object)) \ + /* Isolates */ \ + F(Dart_CurrentIsolate, Dart_Isolate, (void)) \ + F(Dart_ExitIsolate, void, (void)) \ + F(Dart_EnterIsolate, void, (Dart_Isolate)) \ + /* Dart_Port */ \ + F(Dart_Post, bool, (Dart_Port_DL port_id, Dart_Handle object)) \ + F(Dart_NewSendPort, Dart_Handle, (Dart_Port_DL port_id)) \ + F(Dart_SendPortGetId, Dart_Handle, \ + (Dart_Handle port, Dart_Port_DL * port_id)) \ + /* Scopes */ \ + F(Dart_EnterScope, void, (void)) \ + F(Dart_ExitScope, void, (void)) \ + /* Objects */ \ + F(Dart_IsNull, bool, (Dart_Handle)) \ + F(Dart_Null, Dart_Handle, (void)) + +// dart_api.h symbols that have been deprecated but are retained here +// until we can make a breaking change bumping the major version number +// (DART_API_DL_MAJOR_VERSION) +#define DART_API_DEPRECATED_DL_SYMBOLS(F) \ + F(Dart_UpdateExternalSize, void, \ + (Dart_WeakPersistentHandle object, intptr_t external_allocation_size)) \ + F(Dart_UpdateFinalizableExternalSize, void, \ + (Dart_FinalizableHandle object, Dart_Handle strong_ref_to_object, \ + intptr_t external_allocation_size)) + +#define DART_API_ALL_DL_SYMBOLS(F) \ + DART_NATIVE_API_DL_SYMBOLS(F) \ + DART_API_DL_SYMBOLS(F) +// IMPORTANT! Never update these signatures without properly updating +// DART_API_DL_MAJOR_VERSION and DART_API_DL_MINOR_VERSION. +// +// End of verbatim copy. +// ============================================================================ + +// Copy of definition of DART_EXPORT without 'used' attribute. +// +// The 'used' attribute cannot be used with DART_API_ALL_DL_SYMBOLS because +// they are not function declarations, but variable declarations with a +// function pointer type. +// +// The function pointer variables are initialized with the addresses of the +// functions in the VM. If we were to use function declarations instead, we +// would need to forward the call to the VM adding indirection. +#if defined(__CYGWIN__) +#error Tool chain and platform not supported. +#elif defined(_WIN32) +#if defined(DART_SHARED_LIB) +#define DART_EXPORT_DL DART_EXTERN_C __declspec(dllexport) +#else +#define DART_EXPORT_DL DART_EXTERN_C +#endif +#else +#if __GNUC__ >= 4 +#if defined(DART_SHARED_LIB) +#define DART_EXPORT_DL DART_EXTERN_C __attribute__((visibility("default"))) +#else +#define DART_EXPORT_DL DART_EXTERN_C +#endif +#else +#error Tool chain not supported. +#endif +#endif + +#define DART_API_DL_DECLARATIONS(name, R, A) \ + typedef R(*name##_Type) A; \ + DART_EXPORT_DL name##_Type name##_DL; + +DART_API_ALL_DL_SYMBOLS(DART_API_DL_DECLARATIONS) +DART_API_DEPRECATED_DL_SYMBOLS(DART_API_DL_DECLARATIONS) + +#undef DART_API_DL_DECLARATIONS + +#undef DART_EXPORT_DL + +#endif /* RUNTIME_INCLUDE_DART_API_DL_H_ */ /* NOLINT */ diff --git a/pkgs/objective_c/src/include/dart_embedder_api.h b/pkgs/objective_c/src/include/dart_embedder_api.h new file mode 100644 index 000000000..bc0377340 --- /dev/null +++ b/pkgs/objective_c/src/include/dart_embedder_api.h @@ -0,0 +1,105 @@ +// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#ifndef RUNTIME_INCLUDE_DART_EMBEDDER_API_H_ +#define RUNTIME_INCLUDE_DART_EMBEDDER_API_H_ + +#include "include/dart_api.h" +#include "include/dart_tools_api.h" + +namespace dart { +namespace embedder { + +// Initialize all subsystems of the embedder. +// +// Must be called before the `Dart_Initialize()` call to initialize the +// Dart VM. +// +// Returns true on success and false otherwise, in which case error would +// contain error message. +DART_WARN_UNUSED_RESULT bool InitOnce(char** error); + +// Cleans up all subsystems of the embedder. +// +// Must be called after the `Dart_Cleanup()` call to initialize the +// Dart VM. +void Cleanup(); + +// Common arguments that are passed to isolate creation callback and to +// API methods that create isolates. +struct IsolateCreationData { + // URI for the main script that will be running in the isolate. + const char* script_uri; + + // Advisory name of the main method that will be run by isolate. + // Only used for error messages. + const char* main; + + // Isolate creation flags. Might be absent. + Dart_IsolateFlags* flags; + + // Isolate group callback data. + void* isolate_group_data; + + // Isolate callback data. + void* isolate_data; +}; + +// Create and initialize kernel-service isolate. This method should be used +// when VM invokes isolate creation callback with DART_KERNEL_ISOLATE_NAME as +// script_uri. +// The isolate is created from the given snapshot (might be kernel data or +// app-jit snapshot). +DART_WARN_UNUSED_RESULT Dart_Isolate +CreateKernelServiceIsolate(const IsolateCreationData& data, + const uint8_t* buffer, + intptr_t buffer_size, + char** error); + +// Service isolate configuration. +struct VmServiceConfiguration { + enum { kBindHttpServerToAFreePort = 0, kDoNotAutoStartHttpServer = -1 }; + + // Address to which HTTP server will be bound. + const char* ip; + + // Default port. See enum above for special values. + int port; + + // If non-null, connection information for the VM service will be output to a + // file in JSON format at the location specified. + const char* write_service_info_filename; + + // TODO(vegorov) document these ones. + bool dev_mode; + bool deterministic; + bool disable_auth_codes; +}; + +// Create and initialize vm-service isolate from the given AOT snapshot, which +// is expected to contain all necessary 'vm-service' libraries. +// This method should be used when VM invokes isolate creation callback with +// DART_VM_SERVICE_ISOLATE_NAME as script_uri. +DART_WARN_UNUSED_RESULT Dart_Isolate +CreateVmServiceIsolate(const IsolateCreationData& data, + const VmServiceConfiguration& config, + const uint8_t* isolate_data, + const uint8_t* isolate_instr, + char** error); + +// Create and initialize vm-service isolate from the given kernel binary, which +// is expected to contain all necessary 'vm-service' libraries. +// This method should be used when VM invokes isolate creation callback with +// DART_VM_SERVICE_ISOLATE_NAME as script_uri. +DART_WARN_UNUSED_RESULT Dart_Isolate +CreateVmServiceIsolateFromKernel(const IsolateCreationData& data, + const VmServiceConfiguration& config, + const uint8_t* kernel_buffer, + intptr_t kernel_buffer_size, + char** error); + +} // namespace embedder +} // namespace dart + +#endif // RUNTIME_INCLUDE_DART_EMBEDDER_API_H_ diff --git a/pkgs/objective_c/src/include/dart_native_api.h b/pkgs/objective_c/src/include/dart_native_api.h new file mode 100644 index 000000000..79194e03b --- /dev/null +++ b/pkgs/objective_c/src/include/dart_native_api.h @@ -0,0 +1,207 @@ +/* + * Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file + * for details. All rights reserved. Use of this source code is governed by a + * BSD-style license that can be found in the LICENSE file. + */ + +#ifndef RUNTIME_INCLUDE_DART_NATIVE_API_H_ +#define RUNTIME_INCLUDE_DART_NATIVE_API_H_ + +#include "dart_api.h" /* NOLINT */ + +/* + * ========================================== + * Message sending/receiving from native code + * ========================================== + */ + +/** + * A Dart_CObject is used for representing Dart objects as native C + * data outside the Dart heap. These objects are totally detached from + * the Dart heap. Only a subset of the Dart objects have a + * representation as a Dart_CObject. + * + * The string encoding in the 'value.as_string' is UTF-8. + * + * All the different types from dart:typed_data are exposed as type + * kTypedData. The specific type from dart:typed_data is in the type + * field of the as_typed_data structure. The length in the + * as_typed_data structure is always in bytes. + * + * The data for kTypedData is copied on message send and ownership remains with + * the caller. The ownership of data for kExternalTyped is passed to the VM on + * message send and returned when the VM invokes the + * Dart_HandleFinalizer callback; a non-NULL callback must be provided. + * + * Note that Dart_CObject_kNativePointer is intended for internal use by + * dart:io implementation and has no connection to dart:ffi Pointer class. + * It represents a pointer to a native resource of a known type. + * The receiving side will only see this pointer as an integer and will not + * see the specified finalizer. + * The specified finalizer will only be invoked if the message is not delivered. + */ +typedef enum { + Dart_CObject_kNull = 0, + Dart_CObject_kBool, + Dart_CObject_kInt32, + Dart_CObject_kInt64, + Dart_CObject_kDouble, + Dart_CObject_kString, + Dart_CObject_kArray, + Dart_CObject_kTypedData, + Dart_CObject_kExternalTypedData, + Dart_CObject_kSendPort, + Dart_CObject_kCapability, + Dart_CObject_kNativePointer, + Dart_CObject_kUnsupported, + Dart_CObject_kUnmodifiableExternalTypedData, + Dart_CObject_kNumberOfTypes +} Dart_CObject_Type; +// This enum is versioned by DART_API_DL_MAJOR_VERSION, only add at the end +// and bump the DART_API_DL_MINOR_VERSION. + +typedef struct _Dart_CObject { + Dart_CObject_Type type; + union { + bool as_bool; + int32_t as_int32; + int64_t as_int64; + double as_double; + const char* as_string; + struct { + Dart_Port id; + Dart_Port origin_id; + } as_send_port; + struct { + int64_t id; + } as_capability; + struct { + intptr_t length; + struct _Dart_CObject** values; + } as_array; + struct { + Dart_TypedData_Type type; + intptr_t length; /* in elements, not bytes */ + const uint8_t* values; + } as_typed_data; + struct { + Dart_TypedData_Type type; + intptr_t length; /* in elements, not bytes */ + uint8_t* data; + void* peer; + Dart_HandleFinalizer callback; + } as_external_typed_data; + struct { + intptr_t ptr; + intptr_t size; + Dart_HandleFinalizer callback; + } as_native_pointer; + } value; +} Dart_CObject; +// This struct is versioned by DART_API_DL_MAJOR_VERSION, bump the version when +// changing this struct. + +/** + * Posts a message on some port. The message will contain the Dart_CObject + * object graph rooted in 'message'. + * + * While the message is being sent the state of the graph of Dart_CObject + * structures rooted in 'message' should not be accessed, as the message + * generation will make temporary modifications to the data. When the message + * has been sent the graph will be fully restored. + * + * If true is returned, the message was enqueued, and finalizers for external + * typed data will eventually run, even if the receiving isolate shuts down + * before processing the message. If false is returned, the message was not + * enqueued and ownership of external typed data in the message remains with the + * caller. + * + * This function may be called on any thread when the VM is running (that is, + * after Dart_Initialize has returned and before Dart_Cleanup has been called). + * + * \param port_id The destination port. + * \param message The message to send. + * + * \return True if the message was posted. + */ +DART_EXPORT bool Dart_PostCObject(Dart_Port port_id, Dart_CObject* message); + +/** + * Posts a message on some port. The message will contain the integer 'message'. + * + * \param port_id The destination port. + * \param message The message to send. + * + * \return True if the message was posted. + */ +DART_EXPORT bool Dart_PostInteger(Dart_Port port_id, int64_t message); + +/** + * A native message handler. + * + * This handler is associated with a native port by calling + * Dart_NewNativePort. + * + * The message received is decoded into the message structure. The + * lifetime of the message data is controlled by the caller. All the + * data references from the message are allocated by the caller and + * will be reclaimed when returning to it. + */ +typedef void (*Dart_NativeMessageHandler)(Dart_Port dest_port_id, + Dart_CObject* message); + +/** + * Creates a new native port. When messages are received on this + * native port, then they will be dispatched to the provided native + * message handler. + * + * \param name The name of this port in debugging messages. + * \param handler The C handler to run when messages arrive on the port. + * \param handle_concurrently Is it okay to process requests on this + * native port concurrently? + * + * \return If successful, returns the port id for the native port. In + * case of error, returns ILLEGAL_PORT. + */ +DART_EXPORT Dart_Port Dart_NewNativePort(const char* name, + Dart_NativeMessageHandler handler, + bool handle_concurrently); +/* TODO(turnidge): Currently handle_concurrently is ignored. */ + +/** + * Closes the native port with the given id. + * + * The port must have been allocated by a call to Dart_NewNativePort. + * + * \param native_port_id The id of the native port to close. + * + * \return Returns true if the port was closed successfully. + */ +DART_EXPORT bool Dart_CloseNativePort(Dart_Port native_port_id); + +/* + * ================== + * Verification Tools + * ================== + */ + +/** + * Forces all loaded classes and functions to be compiled eagerly in + * the current isolate.. + * + * TODO(turnidge): Document. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle Dart_CompileAll(void); + +/** + * Finalizes all classes. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle Dart_FinalizeAllClasses(void); + +/* This function is intentionally undocumented. + * + * It should not be used outside internal tests. + */ +DART_EXPORT void* Dart_ExecuteInternalCommand(const char* command, void* arg); + +#endif /* INCLUDE_DART_NATIVE_API_H_ */ /* NOLINT */ diff --git a/pkgs/objective_c/src/include/dart_tools_api.h b/pkgs/objective_c/src/include/dart_tools_api.h new file mode 100644 index 000000000..c118bc46d --- /dev/null +++ b/pkgs/objective_c/src/include/dart_tools_api.h @@ -0,0 +1,627 @@ +// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#ifndef RUNTIME_INCLUDE_DART_TOOLS_API_H_ +#define RUNTIME_INCLUDE_DART_TOOLS_API_H_ + +#include "dart_api.h" /* NOLINT */ + +/** \mainpage Dart Tools Embedding API Reference + * + * This reference describes the Dart embedding API for tools. Tools include + * a debugger, service protocol, and timeline. + * + * NOTE: The APIs described in this file are unstable and subject to change. + * + * This reference is generated from the header include/dart_tools_api.h. + */ + +/* + * ======== + * Debugger + * ======== + */ + +/** + * ILLEGAL_ISOLATE_ID is a number guaranteed never to be associated with a + * valid isolate. + */ +#define ILLEGAL_ISOLATE_ID ILLEGAL_PORT + +/** + * ILLEGAL_ISOLATE_GROUP_ID is a number guaranteed never to be associated with a + * valid isolate group. + */ +#define ILLEGAL_ISOLATE_GROUP_ID 0 + +/* + * ======= + * Service + * ======= + */ + +/** + * A service request callback function. + * + * These callbacks, registered by the embedder, are called when the VM receives + * a service request it can't handle and the service request command name + * matches one of the embedder registered handlers. + * + * The return value of the callback indicates whether the response + * should be used as a regular result or an error result. + * Specifically, if the callback returns true, a regular JSON-RPC + * response is built in the following way: + * + * { + * "jsonrpc": "2.0", + * "result": , + * "id": , + * } + * + * If the callback returns false, a JSON-RPC error is built like this: + * + * { + * "jsonrpc": "2.0", + * "error": , + * "id": , + * } + * + * \param method The rpc method name. + * \param param_keys Service requests can have key-value pair parameters. The + * keys and values are flattened and stored in arrays. + * \param param_values The values associated with the keys. + * \param num_params The length of the param_keys and param_values arrays. + * \param user_data The user_data pointer registered with this handler. + * \param result A C string containing a valid JSON object. The returned + * pointer will be freed by the VM by calling free. + * + * \return True if the result is a regular JSON-RPC response, false if the + * result is a JSON-RPC error. + */ +typedef bool (*Dart_ServiceRequestCallback)(const char* method, + const char** param_keys, + const char** param_values, + intptr_t num_params, + void* user_data, + const char** json_object); + +/** + * Register a Dart_ServiceRequestCallback to be called to handle + * requests for the named rpc on a specific isolate. The callback will + * be invoked with the current isolate set to the request target. + * + * \param method The name of the method that this callback is responsible for. + * \param callback The callback to invoke. + * \param user_data The user data passed to the callback. + * + * NOTE: If multiple callbacks with the same name are registered, only + * the last callback registered will be remembered. + */ +DART_EXPORT void Dart_RegisterIsolateServiceRequestCallback( + const char* method, + Dart_ServiceRequestCallback callback, + void* user_data); + +/** + * Register a Dart_ServiceRequestCallback to be called to handle + * requests for the named rpc. The callback will be invoked without a + * current isolate. + * + * \param method The name of the command that this callback is responsible for. + * \param callback The callback to invoke. + * \param user_data The user data passed to the callback. + * + * NOTE: If multiple callbacks with the same name are registered, only + * the last callback registered will be remembered. + */ +DART_EXPORT void Dart_RegisterRootServiceRequestCallback( + const char* method, + Dart_ServiceRequestCallback callback, + void* user_data); + +/** + * Embedder information which can be requested by the VM for internal or + * reporting purposes. + * + * The pointers in this structure are not going to be cached or freed by the VM. + */ + +#define DART_EMBEDDER_INFORMATION_CURRENT_VERSION (0x00000001) + +typedef struct { + int32_t version; + const char* name; // [optional] The name of the embedder + int64_t current_rss; // [optional] the current RSS of the embedder + int64_t max_rss; // [optional] the maximum RSS of the embedder +} Dart_EmbedderInformation; + +/** + * Callback provided by the embedder that is used by the VM to request + * information. + * + * \return Returns a pointer to a Dart_EmbedderInformation structure. + * The embedder keeps the ownership of the structure and any field in it. + * The embedder must ensure that the structure will remain valid until the + * next invocation of the callback. + */ +typedef void (*Dart_EmbedderInformationCallback)( + Dart_EmbedderInformation* info); + +/** + * Register a Dart_ServiceRequestCallback to be called to handle + * requests for the named rpc. The callback will be invoked without a + * current isolate. + * + * \param method The name of the command that this callback is responsible for. + * \param callback The callback to invoke. + * \param user_data The user data passed to the callback. + * + * NOTE: If multiple callbacks are registered, only the last callback registered + * will be remembered. + */ +DART_EXPORT void Dart_SetEmbedderInformationCallback( + Dart_EmbedderInformationCallback callback); + +/** + * Invoke a vm-service method and wait for its result. + * + * \param request_json The utf8-encoded json-rpc request. + * \param request_json_length The length of the json-rpc request. + * + * \param response_json The returned utf8-encoded json response, must be + * free()ed by caller. + * \param response_json_length The length of the returned json response. + * \param error An optional error, must be free()ed by caller. + * + * \return Whether the call was successfully performed. + * + * NOTE: This method does not need a current isolate and must not have the + * vm-isolate being the current isolate. It must be called after + * Dart_Initialize() and before Dart_Cleanup(). + */ +DART_EXPORT bool Dart_InvokeVMServiceMethod(uint8_t* request_json, + intptr_t request_json_length, + uint8_t** response_json, + intptr_t* response_json_length, + char** error); + +/* + * ======== + * Event Streams + * ======== + */ + +/** + * A callback invoked when the VM service gets a request to listen to + * some stream. + * + * \return Returns true iff the embedder supports the named stream id. + */ +typedef bool (*Dart_ServiceStreamListenCallback)(const char* stream_id); + +/** + * A callback invoked when the VM service gets a request to cancel + * some stream. + */ +typedef void (*Dart_ServiceStreamCancelCallback)(const char* stream_id); + +/** + * Adds VM service stream callbacks. + * + * \param listen_callback A function pointer to a listen callback function. + * A listen callback function should not be already set when this function + * is called. A NULL value removes the existing listen callback function + * if any. + * + * \param cancel_callback A function pointer to a cancel callback function. + * A cancel callback function should not be already set when this function + * is called. A NULL value removes the existing cancel callback function + * if any. + * + * \return Success if the callbacks were added. Otherwise, returns an + * error handle. + */ +DART_EXPORT char* Dart_SetServiceStreamCallbacks( + Dart_ServiceStreamListenCallback listen_callback, + Dart_ServiceStreamCancelCallback cancel_callback); + +/** + * Sends a data event to clients of the VM Service. + * + * A data event is used to pass an array of bytes to subscribed VM + * Service clients. For example, in the standalone embedder, this is + * function used to provide WriteEvents on the Stdout and Stderr + * streams. + * + * If the embedder passes in a stream id for which no client is + * subscribed, then the event is ignored. + * + * \param stream_id The id of the stream on which to post the event. + * + * \param event_kind A string identifying what kind of event this is. + * For example, 'WriteEvent'. + * + * \param bytes A pointer to an array of bytes. + * + * \param bytes_length The length of the byte array. + * + * \return NULL if the arguments are well formed. Otherwise, returns an + * error string. The caller is responsible for freeing the error message. + */ +DART_EXPORT char* Dart_ServiceSendDataEvent(const char* stream_id, + const char* event_kind, + const uint8_t* bytes, + intptr_t bytes_length); + +/* + * ======== + * Reload support + * ======== + * + * These functions are used to implement reloading in the Dart VM. + * This is an experimental feature, so embedders should be prepared + * for these functions to change. + */ + +/** + * A callback which determines whether the file at some url has been + * modified since some time. If the file cannot be found, true should + * be returned. + */ +typedef bool (*Dart_FileModifiedCallback)(const char* url, int64_t since); + +DART_EXPORT char* Dart_SetFileModifiedCallback( + Dart_FileModifiedCallback file_modified_callback); + +/** + * Returns true if isolate is currently reloading. + */ +DART_EXPORT bool Dart_IsReloading(); + +/* + * ======== + * Timeline + * ======== + */ + +/** + * Enable tracking of specified timeline category. This is operational + * only when systrace timeline functionality is turned on. + * + * \param categories A comma separated list of categories that need to + * be enabled, the categories are + * "all" : All categories + * "API" - Execution of Dart C API functions + * "Compiler" - Execution of Dart JIT compiler + * "CompilerVerbose" - More detailed Execution of Dart JIT compiler + * "Dart" - Execution of Dart code + * "Debugger" - Execution of Dart debugger + * "Embedder" - Execution of Dart embedder code + * "GC" - Execution of Dart Garbage Collector + * "Isolate" - Dart Isolate lifecycle execution + * "VM" - Execution in Dart VM runtime code + * "" - None + * + * When "all" is specified all the categories are enabled. + * When a comma separated list of categories is specified, the categories + * that are specified will be enabled and the rest will be disabled. + * When "" is specified all the categories are disabled. + * The category names are case sensitive. + * eg: Dart_EnableTimelineCategory("all"); + * Dart_EnableTimelineCategory("GC,API,Isolate"); + * Dart_EnableTimelineCategory("GC,Debugger,Dart"); + * + * \return True if the categories were successfully enabled, False otherwise. + */ +DART_EXPORT bool Dart_SetEnabledTimelineCategory(const char* categories); + +/** + * Returns a timestamp in microseconds. This timestamp is suitable for + * passing into the timeline system, and uses the same monotonic clock + * as dart:developer's Timeline.now. + * + * \return A timestamp that can be passed to the timeline system. + */ +DART_EXPORT int64_t Dart_TimelineGetMicros(); + +/** + * Returns a raw timestamp in from the monotonic clock. + * + * \return A raw timestamp from the monotonic clock. + */ +DART_EXPORT int64_t Dart_TimelineGetTicks(); + +/** + * Returns the frequency of the monotonic clock. + * + * \return The frequency of the monotonic clock. + */ +DART_EXPORT int64_t Dart_TimelineGetTicksFrequency(); + +typedef enum { + Dart_Timeline_Event_Begin, // Phase = 'B'. + Dart_Timeline_Event_End, // Phase = 'E'. + Dart_Timeline_Event_Instant, // Phase = 'i'. + Dart_Timeline_Event_Duration, // Phase = 'X'. + Dart_Timeline_Event_Async_Begin, // Phase = 'b'. + Dart_Timeline_Event_Async_End, // Phase = 'e'. + Dart_Timeline_Event_Async_Instant, // Phase = 'n'. + Dart_Timeline_Event_Counter, // Phase = 'C'. + Dart_Timeline_Event_Flow_Begin, // Phase = 's'. + Dart_Timeline_Event_Flow_Step, // Phase = 't'. + Dart_Timeline_Event_Flow_End, // Phase = 'f'. +} Dart_Timeline_Event_Type; + +/** + * Add a timeline event to the embedder stream. + * + * Note regarding flow events: events must be associated with flow IDs in two + * different ways to allow flow events to be serialized correctly in both + * Chrome's JSON trace event format and Perfetto's proto trace format. Events + * of type |Dart_Timeline_Event_Flow_Begin|, |Dart_Timeline_Event_Flow_Step|, + * and |Dart_Timeline_Event_Flow_End| must be reported to support serialization + * in Chrome's trace format. The |flow_ids| argument must be supplied when + * reporting events of type |Dart_Timeline_Event_Begin|, + * |Dart_Timeline_Event_Duration|, |Dart_Timeline_Event_Instant|, + * |Dart_Timeline_Event_Async_Begin|, and |Dart_Timeline_Event_Async_Instant| to + * support serialization in Perfetto's proto format. + * + * The Dart VM can use various underlying recorders depending on configuration + * and operating system. Many recorders do not support all event types; + * unsupported event types are siliently dropped. Some recorders do not accept + * timestamps as input, instead implicitly using the time the event is recorded. + * For maximum compatibility, record events with the Begin and End types as they + * occur instead of using the Duration type or buffering. + * + * \param label The name of the event. Its lifetime must extend at least until + * Dart_Cleanup. + * \param timestamp0 The first timestamp of the event. + * \param timestamp1_or_id When reporting an event of type + * |Dart_Timeline_Event_Duration|, the second (end) timestamp of the event + * should be passed through |timestamp1_or_id|. When reporting an event of + * type |Dart_Timeline_Event_Async_Begin|, |Dart_Timeline_Event_Async_End|, + * or |Dart_Timeline_Event_Async_Instant|, the async ID associated with the + * event should be passed through |timestamp1_or_id|. When reporting an + * event of type |Dart_Timeline_Event_Flow_Begin|, + * |Dart_Timeline_Event_Flow_Step|, or |Dart_Timeline_Event_Flow_End|, the + * flow ID associated with the event should be passed through + * |timestamp1_or_id|. When reporting an event of type + * |Dart_Timeline_Event_Begin| or |Dart_Timeline_Event_End|, the event ID + * associated with the event should be passed through |timestamp1_or_id|. + * Note that this event ID will only be used by the MacOS recorder. The + * argument to |timestamp1_or_id| will not be used when reporting events of + * other types. + * \param flow_id_count The number of flow IDs associated with this event. + * \param flow_ids An array of flow IDs associated with this event. The array + * may be reclaimed when this call returns. + * \param argument_count The number of argument names and values. + * \param argument_names An array of names of the arguments. The lifetime of the + * names must extend at least until Dart_Cleanup. The array may be reclaimed + * when this call returns. + * \param argument_values An array of values of the arguments. The values and + * the array may be reclaimed when this call returns. + */ +DART_EXPORT void Dart_RecordTimelineEvent(const char* label, + int64_t timestamp0, + int64_t timestamp1_or_id, + intptr_t flow_id_count, + const int64_t* flow_ids, + Dart_Timeline_Event_Type type, + intptr_t argument_count, + const char** argument_names, + const char** argument_values); + +/** + * Associates a name with the current thread. This name will be used to name + * threads in the timeline. Can only be called after a call to Dart_Initialize. + * + * \param name The name of the thread. + */ +DART_EXPORT void Dart_SetThreadName(const char* name); + +typedef struct { + const char* name; + const char* value; +} Dart_TimelineRecorderEvent_Argument; + +#define DART_TIMELINE_RECORDER_CURRENT_VERSION (0x00000002) + +typedef struct { + /* Set to DART_TIMELINE_RECORDER_CURRENT_VERSION */ + int32_t version; + + /* The event's type / phase. */ + Dart_Timeline_Event_Type type; + + /* The event's timestamp according to the same clock as + * Dart_TimelineGetMicros. For a duration event, this is the beginning time. + */ + int64_t timestamp0; + + /** + * For a duration event, this is the end time. For an async event, this is the + * async ID. For a flow event, this is the flow ID. For a begin or end event, + * this is the event ID (which is only referenced by the MacOS recorder). + */ + int64_t timestamp1_or_id; + + /* The current isolate of the event, as if by Dart_GetMainPortId, or + * ILLEGAL_PORT if the event had no current isolate. */ + Dart_Port isolate; + + /* The current isolate group of the event, as if by + * Dart_CurrentIsolateGroupId, or ILLEGAL_PORT if the event had no current + * isolate group. */ + Dart_IsolateGroupId isolate_group; + + /* The callback data associated with the isolate if any. */ + void* isolate_data; + + /* The callback data associated with the isolate group if any. */ + void* isolate_group_data; + + /* The name / label of the event. */ + const char* label; + + /* The stream / category of the event. */ + const char* stream; + + intptr_t argument_count; + Dart_TimelineRecorderEvent_Argument* arguments; +} Dart_TimelineRecorderEvent; + +/** + * Callback provided by the embedder to handle the completion of timeline + * events. + * + * \param event A timeline event that has just been completed. The VM keeps + * ownership of the event and any field in it (i.e., the embedder should copy + * any values it needs after the callback returns). + */ +typedef void (*Dart_TimelineRecorderCallback)( + Dart_TimelineRecorderEvent* event); + +/** + * Register a `Dart_TimelineRecorderCallback` to be called as timeline events + * are completed. + * + * The callback will be invoked without a current isolate. + * + * The callback will be invoked on the thread completing the event. Because + * `Dart_RecordTimelineEvent` may be called by any thread, the callback may be + * called on any thread. + * + * The callback may be invoked at any time after `Dart_Initialize` is called and + * before `Dart_Cleanup` returns. + * + * If multiple callbacks are registered, only the last callback registered + * will be remembered. Providing a NULL callback will clear the registration + * (i.e., a NULL callback produced a no-op instead of a crash). + * + * Setting a callback is insufficient to receive events through the callback. The + * VM flag `timeline_recorder` must also be set to `callback`. + */ +DART_EXPORT void Dart_SetTimelineRecorderCallback( + Dart_TimelineRecorderCallback callback); + +/* + * ======= + * Metrics + * ======= + */ + +/** + * Return metrics gathered for the VM and individual isolates. + */ +DART_EXPORT int64_t +Dart_IsolateGroupHeapOldUsedMetric(Dart_IsolateGroup group); // Byte +DART_EXPORT int64_t +Dart_IsolateGroupHeapOldCapacityMetric(Dart_IsolateGroup group); // Byte +DART_EXPORT int64_t +Dart_IsolateGroupHeapOldExternalMetric(Dart_IsolateGroup group); // Byte +DART_EXPORT int64_t +Dart_IsolateGroupHeapNewUsedMetric(Dart_IsolateGroup group); // Byte +DART_EXPORT int64_t +Dart_IsolateGroupHeapNewCapacityMetric(Dart_IsolateGroup group); // Byte +DART_EXPORT int64_t +Dart_IsolateGroupHeapNewExternalMetric(Dart_IsolateGroup group); // Byte + +/* + * ======== + * UserTags + * ======== + */ + +/* + * Gets the current isolate's currently set UserTag instance. + * + * \return The currently set UserTag instance. + */ +DART_EXPORT Dart_Handle Dart_GetCurrentUserTag(); + +/* + * Gets the current isolate's default UserTag instance. + * + * \return The default UserTag with label 'Default' + */ +DART_EXPORT Dart_Handle Dart_GetDefaultUserTag(); + +/* + * Creates a new UserTag instance. + * + * \param label The name of the new UserTag. + * + * \return The newly created UserTag instance or an error handle. + */ +DART_EXPORT Dart_Handle Dart_NewUserTag(const char* label); + +/* + * Updates the current isolate's UserTag to a new value. + * + * \param user_tag The UserTag to be set as the current UserTag. + * + * \return The previously set UserTag instance or an error handle. + */ +DART_EXPORT Dart_Handle Dart_SetCurrentUserTag(Dart_Handle user_tag); + +/* + * Returns the label of a given UserTag instance. + * + * \param user_tag The UserTag from which the label will be retrieved. + * + * \return The UserTag's label. NULL if the user_tag is invalid. The caller is + * responsible for freeing the returned label. + */ +DART_EXPORT DART_WARN_UNUSED_RESULT char* Dart_GetUserTagLabel( + Dart_Handle user_tag); + +/* + * ======= + * Heap Snapshot + * ======= + */ + +/** + * Callback provided by the caller of `Dart_WriteHeapSnapshot` which is + * used to write out chunks of the requested heap snapshot. + * + * \param context An opaque context which was passed to `Dart_WriteHeapSnapshot` + * together with this callback. + * + * \param buffer Pointer to the buffer containing a chunk of the snapshot. + * The callback owns the buffer and needs to `free` it. + * + * \param size Number of bytes in the `buffer` to be written. + * + * \param is_last Set to `true` for the last chunk. The callback will not + * be invoked again after it was invoked once with `is_last` set to `true`. + */ +typedef void (*Dart_HeapSnapshotWriteChunkCallback)(void* context, + uint8_t* buffer, + intptr_t size, + bool is_last); + +/** + * Generate heap snapshot of the current isolate group and stream it into the + * given `callback`. VM would produce snapshot in chunks and send these chunks + * one by one back to the embedder by invoking the provided `callback`. + * + * This API enables embedder to stream snapshot into a file or socket without + * allocating a buffer to hold the whole snapshot in memory. + * + * The isolate group will be paused for the duration of this operation. + * + * \param write Callback used to write chunks of the heap snapshot. + * + * \param context Opaque context which would be passed on each invocation of + * `write` callback. + * + * \returns `nullptr` if the operation is successful otherwise error message. + * Caller owns error message string and needs to `free` it. + */ +DART_EXPORT char* Dart_WriteHeapSnapshot( + Dart_HeapSnapshotWriteChunkCallback write, + void* context); + +#endif // RUNTIME_INCLUDE_DART_TOOLS_API_H_ diff --git a/pkgs/objective_c/src/include/dart_version.h b/pkgs/objective_c/src/include/dart_version.h new file mode 100644 index 000000000..cb343c0d3 --- /dev/null +++ b/pkgs/objective_c/src/include/dart_version.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file + * for details. All rights reserved. Use of this source code is governed by a + * BSD-style license that can be found in the LICENSE file. + */ + +#ifndef RUNTIME_INCLUDE_DART_VERSION_H_ +#define RUNTIME_INCLUDE_DART_VERSION_H_ + +// On breaking changes the major version is increased. +// On backwards compatible changes the minor version is increased. +// The versioning covers the symbols exposed in dart_api_dl.h +#define DART_API_DL_MAJOR_VERSION 2 +#define DART_API_DL_MINOR_VERSION 4 + +#endif /* RUNTIME_INCLUDE_DART_VERSION_H_ */ /* NOLINT */ diff --git a/pkgs/objective_c/src/include/internal/dart_api_dl_impl.h b/pkgs/objective_c/src/include/internal/dart_api_dl_impl.h new file mode 100644 index 000000000..e4a568931 --- /dev/null +++ b/pkgs/objective_c/src/include/internal/dart_api_dl_impl.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file + * for details. All rights reserved. Use of this source code is governed by a + * BSD-style license that can be found in the LICENSE file. + */ + +#ifndef RUNTIME_INCLUDE_INTERNAL_DART_API_DL_IMPL_H_ +#define RUNTIME_INCLUDE_INTERNAL_DART_API_DL_IMPL_H_ + +typedef struct { + const char* name; + void (*function)(void); +} DartApiEntry; + +typedef struct { + const int major; + const int minor; + const DartApiEntry* const functions; +} DartApi; + +#endif /* RUNTIME_INCLUDE_INTERNAL_DART_API_DL_IMPL_H_ */ /* NOLINT */ diff --git a/pkgs/objective_c/src/objective_c.c b/pkgs/objective_c/src/objective_c.c new file mode 100644 index 000000000..85bc0bc58 --- /dev/null +++ b/pkgs/objective_c/src/objective_c.c @@ -0,0 +1,13 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#include "include/dart_api_dl.h" +#include "objective_c.h" +#include "objective_c_runtime_types.h" + +// Dispose helper for ObjC blocks that wrap a Dart closure. For these blocks, +// the target is an int ID, and the dispose_port is listening for these IDs. +void disposeObjCBlockWithClosure(ObjCBlock* block) { + Dart_PostInteger_DL(block->dispose_port, (int64_t)block->target); +} diff --git a/pkgs/objective_c/src/objective_c.h b/pkgs/objective_c/src/objective_c.h new file mode 100644 index 000000000..cfa43a640 --- /dev/null +++ b/pkgs/objective_c/src/objective_c.h @@ -0,0 +1,13 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#ifndef OBJECTIVE_C_SRC_OBJECTIVE_C_H_ +#define OBJECTIVE_C_SRC_OBJECTIVE_C_H_ + +#include "objective_c_runtime_types.h" + +// Dispose helper for ObjC blocks that wrap a Dart closure. +void disposeObjCBlockWithClosure(ObjCBlock* block); + +#endif // OBJECTIVE_C_SRC_OBJECTIVE_C_H_ diff --git a/pkgs/objective_c/src/objective_c_runtime_functions.h b/pkgs/objective_c/src/objective_c_runtime_functions.h new file mode 100644 index 000000000..0df7ddfea --- /dev/null +++ b/pkgs/objective_c/src/objective_c_runtime_functions.h @@ -0,0 +1,31 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// This file exposes a subset of the Objective C runtime. Ideally we'd just run +// ffigen directly on the runtime headers that come with XCode, but those +// headers don't have everything we need (e.g. the ObjCBlock struct). + +#ifndef OBJECTIVE_C_SRC_OBJECTIVE_C_RUNTIME_FUNCTIONS_H_ +#define OBJECTIVE_C_SRC_OBJECTIVE_C_RUNTIME_FUNCTIONS_H_ + +#include "include/dart_api_dl.h" +#include "objective_c_runtime_types.h" + +ObjCSelector* sel_registerName(const char *name); +ObjCObject* objc_getClass(const char *name); +ObjCObject* objc_retain(ObjCObject* object); +void objc_release(ObjCObject* object); + +// The signature of this function is just a placeholder. This function is used by +// every method invocation, and is cast to every signature we need. +void objc_msgSend(); +void objc_msgSend_fpret(); +void objc_msgSend_stret(); + +extern void* const _NSConcreteGlobalBlock; + +ObjCBlock* _Block_copy(ObjCBlock* object); +void _Block_release(ObjCBlock* object); + +#endif // OBJECTIVE_C_SRC_OBJECTIVE_C_RUNTIME_FUNCTIONS_H_ diff --git a/pkgs/objective_c/src/objective_c_runtime_types.h b/pkgs/objective_c/src/objective_c_runtime_types.h new file mode 100644 index 000000000..0499da5e4 --- /dev/null +++ b/pkgs/objective_c/src/objective_c_runtime_types.h @@ -0,0 +1,38 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// This file exposes a subset of the Objective C runtime. Ideally we'd just run +// ffigen directly on the runtime headers that come with XCode, but those +// headers don't have everything we need (e.g. the ObjCBlock struct). + +#ifndef OBJECTIVE_C_SRC_OBJECTIVE_C_RUNTIME_TYPES_H_ +#define OBJECTIVE_C_SRC_OBJECTIVE_C_RUNTIME_TYPES_H_ + +#include "include/dart_api_dl.h" + +typedef struct _ObjCSelector ObjCSelector; +typedef struct _ObjCObject ObjCObject; + +// See https://clang.llvm.org/docs/Block-ABI-Apple.html +typedef struct _ObjCBlockDesc { + unsigned long int reserved; + unsigned long int size; // sizeof(_ObjCBlock) + void (*copy_helper)(void *dst, void *src); + void (*dispose_helper)(void *src); + const char *signature; +} ObjCBlockDesc; + +typedef struct _ObjCBlock { + void *isa; // _NSConcreteGlobalBlock + int flags; + int reserved; + void *invoke; // RET (*invoke)(ObjCBlock *, ARGS...); + ObjCBlockDesc *descriptor; + + // Captured variables follow. These are specific to our use case. + void* target; + Dart_Port dispose_port; +} ObjCBlock; + +#endif // OBJECTIVE_C_SRC_OBJECTIVE_C_RUNTIME_TYPES_H_ diff --git a/pkgs/objective_c/test/generate_code_test.dart b/pkgs/objective_c/test/generate_code_test.dart new file mode 100644 index 000000000..e899625ff --- /dev/null +++ b/pkgs/objective_c/test/generate_code_test.dart @@ -0,0 +1,37 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// Objective C support is only available on mac. +@TestOn('mac-os') + +import 'dart:io'; + +import 'package:test/test.dart'; + +import '../tool/generate_code.dart' as generate_code; + +void main() { + group('generate_code.dart', () { + test('Runs without exception', () async { + // As well as testing that this returns normally, this also generates + // coverage info for the parts of ffigen that are gated by + // generate-for-package-objective-c. + await expectLater(generate_code.run(), completes); + + // Sanity check the generated code. + final cBindings = + File('lib/src/c_bindings_generated.dart').readAsStringSync(); + expect(cBindings, contains('sel_registerName')); + expect(cBindings, contains('objc_msgSend')); + expect(cBindings, contains('_NSConcreteGlobalBlock')); + expect(cBindings, contains('_ObjCBlock')); + + final objcBindings = File('lib/src/objective_c_bindings_generated.dart') + .readAsStringSync(); + expect(objcBindings, contains('class NSObject')); + expect(objcBindings, contains('class NSString')); + expect(objcBindings, contains('factory NSString(String str)')); + }); + }); +} diff --git a/pkgs/objective_c/test/interface_lists_test.dart b/pkgs/objective_c/test/interface_lists_test.dart new file mode 100644 index 000000000..56f896f35 --- /dev/null +++ b/pkgs/objective_c/test/interface_lists_test.dart @@ -0,0 +1,53 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// Objective C support is only available on mac. +@TestOn('mac-os') + +import 'dart:io'; + +import 'package:ffigen/src/code_generator/objc_built_in_functions.dart'; +import 'package:test/test.dart'; +import 'package:yaml/yaml.dart'; + +void main() { + group('Verify interface lists', () { + late List yamlInterfaces; + setUpAll(() { + final yaml = loadYaml(File('ffigen_objc.yaml').readAsStringSync()); + yamlInterfaces = yaml['objc-interfaces']['include'] + .map((dynamic i) => i as String) + .toList() as List + ..sort(); + }); + + test('ObjCBuiltInFunctions.builtInInterfaces', () { + expect(ObjCBuiltInFunctions.builtInInterfaces, yamlInterfaces); + }); + + test('package:objective_c exports all the interfaces', () { + final exportFile = File('lib/objective_c.dart').readAsStringSync(); + for (final intf in yamlInterfaces) { + expect(exportFile, contains(intf)); + } + }); + + test('All code genned interfaces are included in the list', () { + final classNameRegExp = RegExp(r'^class (\w+) '); + final allClassNames = []; + for (final line in File('lib/src/objective_c_bindings_generated.dart') + .readAsLinesSync()) { + final match = classNameRegExp.firstMatch(line); + if (match != null) { + final className = match[1]!; + if (!className.startsWith('ObjCBlock')) { + allClassNames.add(className); + } + } + } + allClassNames.sort(); + expect(allClassNames, yamlInterfaces); + }); + }); +} diff --git a/pkgs/objective_c/test/nsdata_test.dart b/pkgs/objective_c/test/nsdata_test.dart new file mode 100644 index 000000000..c2b07c9ed --- /dev/null +++ b/pkgs/objective_c/test/nsdata_test.dart @@ -0,0 +1,93 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// Objective C support is only available on mac. +@TestOn('mac-os') + +import 'dart:ffi'; + +import 'package:ffi/ffi.dart'; +import 'package:objective_c/objective_c.dart'; +import 'package:test/test.dart'; + +void main() { + group('NSData', () { + setUpAll(() { + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('test/objective_c.dylib'); + }); + + group('toNSData', () { + test('empty', () { + final data = [].toNSData(); + expect(data.length, 0); + data.release(); // Make sure that dealloc succeeds. + }); + + test('non empty', () { + final data = [1, 2, 3].toNSData(); + expect(data.length, 3); + expect(data.bytes.cast()[0], 1); + expect(data.bytes.cast()[1], 2); + expect(data.bytes.cast()[2], 3); + data.release(); // Make sure that dealloc succeeds. + }); + + test('non-byte', () { + final data = [257].toNSData(); + expect(data.length, 1); + expect(data.bytes.cast().value, 1); + data.release(); // Make sure that dealloc succeeds. + }); + }); + + group('toList', () { + test('empty', () { + final data = NSData.data(); + expect(data.toList(), isEmpty); + }); + + test('non empty', () { + using((arena) { + final bytes = arena(3); + bytes[0] = 1; + bytes[1] = 2; + bytes[2] = 3; + + final data = NSData.dataWithBytes_length_(bytes.cast(), 3); + expect(data.toList(), [1, 2, 3]); + }); + }); + }); + + group('operator[]', () { + test('in bounds', () { + using((arena) { + final bytes = arena(3); + bytes[0] = 1; + bytes[1] = 2; + bytes[2] = 3; + + final data = NSData.dataWithBytes_length_(bytes.cast(), 3); + expect(data[0], 1); + expect(data[1], 2); + expect(data[2], 3); + }); + }); + + test('out of bounds', () { + using((arena) { + final bytes = arena(3); + bytes[0] = 1; + bytes[1] = 2; + bytes[2] = 3; + + final data = NSData.dataWithBytes_length_(bytes.cast(), 3); + expect(() => data[3], throwsRangeError); + expect(() => data[-1], throwsRangeError); + }); + }); + }); + }); +} diff --git a/pkgs/objective_c/test/nsstring_test.dart b/pkgs/objective_c/test/nsstring_test.dart new file mode 100644 index 000000000..78714b8ce --- /dev/null +++ b/pkgs/objective_c/test/nsstring_test.dart @@ -0,0 +1,34 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// Objective C support is only available on mac. +@TestOn('mac-os') + +import 'dart:ffi'; + +import 'package:objective_c/objective_c.dart'; +import 'package:test/test.dart'; + +void main() { + group('NSString', () { + setUpAll(() { + // TODO(https://github.com/dart-lang/native/issues/1068): Remove this. + DynamicLibrary.open('test/objective_c.dylib'); + }); + + for (final s in ['Hello', '🇵🇬', 'Embedded\u0000Null']) { + test('NSString to/from Dart string [$s]', () { + final ns1 = NSString(s); + expect(ns1.length, s.length); + expect(ns1.toString().length, s.length); + expect(ns1.toString(), s); + + final ns2 = s.toNSString(); + expect(ns2.length, s.length); + expect(ns2.toString().length, s.length); + expect(ns2.toString(), s); + }); + } + }); +} diff --git a/pkgs/objective_c/test/setup.dart b/pkgs/objective_c/test/setup.dart new file mode 100644 index 000000000..441dc7fb2 --- /dev/null +++ b/pkgs/objective_c/test/setup.dart @@ -0,0 +1,46 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// When users import package:objective_c as a plugin, Flutter builds our native +// code automatically. But we want to be able to run tests using `dart test`, so +// we can't use Flutter's build system. So this script builds a dylib containing +// all that native code. + +// ignore_for_file: avoid_print + +import 'dart:ffi'; +import 'dart:io'; + +const inputFiles = ['src/objective_c.c', 'src/include/dart_api_dl.c']; +const outputFile = 'test/objective_c.dylib'; + +void _buildLib(List inputs, String output) { + final args = [ + '-shared', + '-fpic', + ...inputs, + '-I', + 'src', + '-o', + output, + ]; + const exec = 'clang'; + print('Running: $exec ${args.join(" ")}'); + final proc = Process.runSync(exec, args); + if (proc.exitCode != 0) { + exitCode = proc.exitCode; + print(proc.stdout); + print(proc.stderr); + throw Exception('Command failed: $exec ${args.join(" ")}'); + } + print('Generated $output'); +} + +void main() { + Directory.current = Platform.script.resolve('..').path; + _buildLib(inputFiles, outputFile); + + // Sanity check that the dylib was created correctly. + DynamicLibrary.open(outputFile).lookup('disposeObjCBlockWithClosure'); +} diff --git a/pkgs/objective_c/tool/coverage.sh b/pkgs/objective_c/tool/coverage.sh new file mode 100755 index 000000000..b1e660628 --- /dev/null +++ b/pkgs/objective_c/tool/coverage.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +# for details. All rights reserved. Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. + +# Fast fail the script on failures. +set -e + +# Gather coverage. +dart pub global activate coverage +# Generate coverage report. +dart run --pause-isolates-on-exit --disable-service-auth-codes --enable-vm-service=3000 test & +dart pub global run coverage:collect_coverage --wait-paused --uri=http://127.0.0.1:3000/ -o coverage.json --resume-isolates --scope-output=ffigen --scope-output=objective_c +dart pub global run coverage:format_coverage --check-ignore --packages=.dart_tool/package_config.json --lcov -i coverage.json -o lcov.info diff --git a/pkgs/objective_c/tool/data/extra_methods.dart b/pkgs/objective_c/tool/data/extra_methods.dart new file mode 100644 index 000000000..f40c99a9f --- /dev/null +++ b/pkgs/objective_c/tool/data/extra_methods.dart @@ -0,0 +1,20 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// Extra methods inserted into NSString by tool/generate_code.dart. +class NSString extends NSObject { + factory NSString(String str) { + final cstr = str.toNativeUtf16(); + final nsstr = stringWithCharacters_length_(cstr.cast(), str.length); + pkg_ffi.calloc.free(cstr); + return nsstr; + } + + @override + String toString() { + final data = + dataUsingEncoding_(0x94000100 /* NSUTF16LittleEndianStringEncoding */); + return data!.bytes.cast().toDartString(length: length); + } +} diff --git a/pkgs/objective_c/tool/generate_code.dart b/pkgs/objective_c/tool/generate_code.dart new file mode 100644 index 000000000..6d322dcea --- /dev/null +++ b/pkgs/objective_c/tool/generate_code.dart @@ -0,0 +1,75 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// Runs the ffigen configs, then merges tool/data/extra_methods.dart into the +// Objective C bindings. + +// ignore_for_file: avoid_print + +import 'dart:io'; + +import 'package:ffigen/src/executables/ffigen.dart' as ffigen; + +const cConfig = 'ffigen_c.yaml'; +const objcConfig = 'ffigen_objc.yaml'; +const cBindings = 'lib/src/c_bindings_generated.dart'; +const objcBindings = 'lib/src/objective_c_bindings_generated.dart'; +const extraMethodsFile = 'tool/data/extra_methods.dart'; + +void dartCmd(List args) { + final exec = Platform.resolvedExecutable; + print('Running: $exec ${args.join(" ")}'); + final proc = Process.runSync(exec, args, runInShell: true); + if (proc.exitCode != 0) { + exitCode = proc.exitCode; + print(proc.stdout); + print(proc.stderr); + throw Exception('Command failed: $exec ${args.join(" ")}'); + } +} + +Map parseExtraMethods(String filename) { + final extraMethods = {}; + String? currentClass; + var methods = StringBuffer(); + for (final line in File(filename).readAsLinesSync()) { + if (currentClass == null) { + if (line.startsWith('class ')) { + currentClass = line; + methods = StringBuffer(); + } + } else { + if (line == '}') { + extraMethods[currentClass] = methods.toString(); + } else { + methods.writeln(line); + } + } + } + return extraMethods; +} + +void mergeExtraMethods(String filename, Map extraMethods) { + final out = StringBuffer(); + for (final line in File(filename).readAsLinesSync()) { + out.writeln(line); + final methods = extraMethods[line]; + if (methods != null) { + out.writeln(methods); + } + } + File(filename).writeAsStringSync(out.toString()); +} + +Future run() async { + await ffigen.main(['--no-format', '-v', 'severe', '--config', cConfig]); + await ffigen.main(['--no-format', '-v', 'severe', '--config', objcConfig]); + mergeExtraMethods(objcBindings, parseExtraMethods(extraMethodsFile)); + dartCmd(['format', cBindings, objcBindings]); +} + +Future main() async { + Directory.current = Platform.script.resolve('..').path; + await run(); +} From 987296c60c85d58ddc51f38e193df541b4ed94fb Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 2 May 2024 16:50:45 +0200 Subject: [PATCH 173/187] Fix analyzer issues --- .../lib/src/build_runner/build_runner.dart | 1 + .../test_data/complex_link/pubspec.yaml | 6 +++--- .../test_data/complex_link_helper/pubspec.yaml | 2 +- .../test_data/simple_link/pubspec.yaml | 2 +- .../test_data/treeshaking_native_assets/hook/link.dart | 4 ++-- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 5726c3c9f..9ed7b51c8 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -227,6 +227,7 @@ class NativeAssetsBuildRunner { resourceIdentifierUri: resourceIdentifiers, assets: buildResult!.assetsForLinking[package.name] ?? [], supportedAssetTypes: supportedAssetTypes, + linkModePreference: LinkModePreferenceImpl.preferStatic, ); } else { return BuildConfigImpl( diff --git a/pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml index aa80d72cd..d5cf1197e 100644 --- a/pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/complex_link/pubspec.yaml @@ -9,13 +9,13 @@ environment: dependencies: cli_config: ^0.2.0 + complex_link_helper: + path: ../complex_link_helper/ logging: ^1.1.1 native_assets_cli: path: ../../../native_assets_cli/ - complex_link_helper: - path: ../complex_link_helper/ dev_dependencies: lints: ^3.0.0 - test: ^1.23.1 path: ^1.9.0 + test: ^1.23.1 diff --git a/pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml b/pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml index 0d82d76f8..1521b53b1 100644 --- a/pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/complex_link_helper/pubspec.yaml @@ -15,5 +15,5 @@ dependencies: dev_dependencies: lints: ^3.0.0 - test: ^1.23.1 path: ^1.9.0 + test: ^1.23.1 diff --git a/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml index 3ac7a8c66..7bece8b09 100644 --- a/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/simple_link/pubspec.yaml @@ -15,5 +15,5 @@ dependencies: dev_dependencies: lints: ^3.0.0 - test: ^1.23.1 path: ^1.9.0 + test: ^1.23.1 diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart index ec99b275e..c1da09b1a 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart @@ -44,7 +44,7 @@ Future _treeshakeStaticLibrary( '--version-script=${symbolsUri.toFilePath()}', '--gc-sections', '--strip-debug', - ...['-o', (dynamicLibrary.file!.toFilePath())], + ...['-o', dynamicLibrary.file!.toFilePath()], staticLibrary.file!.toFilePath(), ]; await Process.run('ld', arguments); @@ -57,7 +57,7 @@ Future _writeLinkerScript(Iterable symbols) async { final linkerScript = File.fromUri(symbolsUri)..createSync(); final contents = '''{ global: -${symbols.map((symbol) => ' ' + symbol + ';').join('\n')} +${symbols.map((symbol) => ' $symbol;').join('\n')} local: *; }; From 49914d778a4dc9c0307cd6f0f333a2463274aa77 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 2 May 2024 17:07:59 +0200 Subject: [PATCH 174/187] Fix tests --- pkgs/native_assets_cli/lib/src/model/build_config.dart | 4 ---- pkgs/native_assets_cli/lib/src/model/hook_config.dart | 2 ++ pkgs/native_assets_cli/test/model/link_config_test.dart | 3 +++ 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/native_assets_cli/lib/src/model/build_config.dart b/pkgs/native_assets_cli/lib/src/model/build_config.dart index a0390ec71..bc052240c 100644 --- a/pkgs/native_assets_cli/lib/src/model/build_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/build_config.dart @@ -153,7 +153,6 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { @override Map toJson() => { ...hookToJson(), - LinkModePreferenceImpl.configKey: linkModePreference.toString(), if (!dryRun) ...{ if (_dependencyMetadata != null && _dependencyMetadata.isNotEmpty) dependencyMetadataConfigKey: _dependencyMetadata.map( @@ -171,9 +170,6 @@ final class BuildConfigImpl extends HookConfigImpl implements BuildConfig { if (other is! BuildConfigImpl) { return false; } - if (other.linkModePreference != linkModePreference) { - return false; - } if (!dryRun && !const DeepCollectionEquality() .equals(other._dependencyMetadata, _dependencyMetadata)) { diff --git a/pkgs/native_assets_cli/lib/src/model/hook_config.dart b/pkgs/native_assets_cli/lib/src/model/hook_config.dart index 3206e824b..84493b676 100644 --- a/pkgs/native_assets_cli/lib/src/model/hook_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/hook_config.dart @@ -156,6 +156,7 @@ abstract class HookConfigImpl implements HookConfig { if (cCompilerJson.isNotEmpty) CCompilerConfigImpl.configKey: cCompilerJson, }, + LinkModePreferenceImpl.configKey: linkModePreference.toString(), }.sortOnKey(); } @@ -380,6 +381,7 @@ can _only_ depend on OS.'''); if (other.packageRoot != packageRoot) return false; if (other.dryRun != dryRun) return false; if (other.targetOS != targetOS) return false; + if (other.linkModePreference != linkModePreference) return false; if (!const DeepCollectionEquality() .equals(other.supportedAssetTypes, supportedAssetTypes)) return false; if (!dryRun) { diff --git a/pkgs/native_assets_cli/test/model/link_config_test.dart b/pkgs/native_assets_cli/test/model/link_config_test.dart index e94fe93c7..1167ea2f4 100644 --- a/pkgs/native_assets_cli/test/model/link_config_test.dart +++ b/pkgs/native_assets_cli/test/model/link_config_test.dart @@ -247,6 +247,7 @@ void main() async { 'target_ios_sdk': 'iphoneos', 'target_os': 'ios', 'version': '${HookConfigImpl.latestVersion}', + 'link_mode_preference': 'prefer-static', }; expect(jsonObject, equals(expectedJson)); @@ -293,6 +294,7 @@ void main() async { 'target_android_ndk_api': 30, 'build_mode': BuildModeImpl.release.name, 'assets': 'astring', + 'link_mode_preference': LinkModePreferenceImpl.preferStatic.name, }), throwsA(predicate( (e) => @@ -312,6 +314,7 @@ void main() async { 'target_architecture': 'arm64', 'target_os': 'android', 'build_mode': BuildModeImpl.release.name, + 'link_mode_preference': LinkModePreferenceImpl.preferStatic.name, }), throwsA(predicate( (e) => From 3f5bd873bd15b0af39b0d6842eb8d6619d55f1ce Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 2 May 2024 17:25:30 +0200 Subject: [PATCH 175/187] Remove resources from protocol --- .../treeshaking_native_assets/hook/link.dart | 3 +- .../link/package_with_assets/hook/link.dart | 8 +--- .../lib/native_assets_cli.dart | 1 - .../lib/native_assets_cli_internal.dart | 1 - pkgs/native_assets_cli/lib/src/api/link.dart | 13 ++---- .../lib/src/api/link_config.dart | 17 +------ .../lib/src/api/resource.dart | 45 ------------------- .../lib/src/model/link_config.dart | 27 ++--------- .../test/api/resource_data.dart | 6 --- .../test/api/resource_test.dart | 14 ------ .../test/model/link_config_test.dart | 27 +---------- 11 files changed, 12 insertions(+), 150 deletions(-) delete mode 100644 pkgs/native_assets_cli/lib/src/api/resource.dart delete mode 100644 pkgs/native_assets_cli/test/api/resource_test.dart diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart index c1da09b1a..eeb2f3c14 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart @@ -10,8 +10,7 @@ const packageName = 'treeshaking_native_assets'; void main(List arguments) async { await link(arguments, (config, output) async { - final usedSymbols = config.treeshakingInformation - ?.map((resource) => resource.metadata.toString()); + final List? usedSymbols = []; final dynamicLibrary = config.assets.firstWhere((asset) => asset.id == 'package:$packageName/src/${packageName}_bindings.dart'); final staticLibrary = config.assets diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart index 216558347..a1f465c1c 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart @@ -6,11 +6,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { await link(args, (config, output) async { - final assetsWithResource = config.assets.whereType().where( - (asset) => - config.treeshakingInformation - ?.any((resource) => resource.metadata == asset.name) ?? - true); - output.addAssets(assetsWithResource); + final dataAssets = config.assets.whereType(); + output.addAssets(dataAssets); }); } diff --git a/pkgs/native_assets_cli/lib/native_assets_cli.dart b/pkgs/native_assets_cli/lib/native_assets_cli.dart index 6c109e09a..46a8a13d3 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli.dart @@ -28,4 +28,3 @@ export 'src/api/link.dart'; export 'src/api/link_config.dart' show LinkConfig; export 'src/api/link_mode_preference.dart' show LinkModePreference; export 'src/api/os.dart' show OS; -export 'src/api/resource.dart'; diff --git a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart index 90fb1bc15..80e764180 100644 --- a/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart +++ b/pkgs/native_assets_cli/lib/native_assets_cli_internal.dart @@ -36,7 +36,6 @@ export 'src/api/ios_sdk.dart' show IOSSdkImpl; export 'src/api/link_config.dart' show LinkConfigImpl; export 'src/api/link_mode_preference.dart' show LinkModePreferenceImpl; export 'src/api/os.dart' show OSImpl; -export 'src/api/resource.dart'; export 'src/model/dependencies.dart'; export 'src/model/hook.dart'; export 'src/model/metadata.dart'; diff --git a/pkgs/native_assets_cli/lib/src/api/link.dart b/pkgs/native_assets_cli/lib/src/api/link.dart index 816655b60..c86894a7b 100644 --- a/pkgs/native_assets_cli/lib/src/api/link.dart +++ b/pkgs/native_assets_cli/lib/src/api/link.dart @@ -15,22 +15,15 @@ import 'link_config.dart'; /// through [LinkConfig.assets]. They will only be bundled with the final /// application if included in the [LinkOutput]. /// -/// As the linking runs after kernel compilation, you can use treeshaking -/// information provided through [LinkConfig.treeshakingInformation] to decide -/// which assets to include. The resources are only collected in AOT mode, -/// therefore the field is null in JIT mode. -/// /// /// ```dart /// import 'package:native_assets_cli/native_assets_cli.dart'; /// /// void main(List args) async { /// await link(args, (config, output) async { -/// final assetsWithResource = config.assets -/// .whereType() -/// .where((asset) => config.resources -/// .any((resource) => resource.metadata == asset.name)); -/// output.addAssets(assetsWithResource); +/// final dataAssets = config.assets +/// .whereType(); +/// output.addAssets(dataAssets); /// }); /// } /// ``` diff --git a/pkgs/native_assets_cli/lib/src/api/link_config.dart b/pkgs/native_assets_cli/lib/src/api/link_config.dart index 4b071e51d..39fabc519 100644 --- a/pkgs/native_assets_cli/lib/src/api/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/api/link_config.dart @@ -10,7 +10,6 @@ import 'package:collection/collection.dart'; import 'package:pub_semver/pub_semver.dart'; import '../model/hook.dart'; -import '../model/resource_identifiers.dart'; import '../utils/map.dart'; import 'architecture.dart'; import 'asset.dart'; @@ -20,28 +19,18 @@ import 'hook_config.dart'; import 'ios_sdk.dart'; import 'link_mode_preference.dart'; import 'os.dart'; -import 'resource.dart'; part '../model/link_config.dart'; /// The configuration for a link hook (`hook/link.dart`) invocation. /// /// It consists of a subset of the fields from the [BuildConfig] already passed -/// to the build hook, the [assets] from the build step, and the -/// [treeshakingInformation] generated during the kernel compilation. +/// to the build hook and the [assets] from the build step. abstract class LinkConfig implements HookConfig { /// The list of assets to be linked. These are the assets generated by a /// `build.dart` script destined for this packages `link.dart`. Iterable get assets; - /// A collection of methods annotated with `@ResourceIdentifier`, which are - /// called in the tree-shaken Dart code. This information can be used to - /// dispose unused [assets]. - /// - /// This is `null` in JIT mode, where no resources are collected, or in a dry - /// run. - Iterable? get treeshakingInformation; - /// Generate the [LinkConfig] from the input arguments to the linking script. factory LinkConfig.fromArguments(List arguments) => LinkConfigImpl.fromArguments(arguments); @@ -58,14 +47,12 @@ abstract class LinkConfig implements HookConfig { List? supportedAssetTypes, int? targetAndroidNdkApi, required Iterable assets, - Uri? resourceIdentifierUri, required LinkModePreference linkModePreference, bool? dryRun, Version? version, }) => LinkConfigImpl( assets: assets.cast(), - resourceIdentifierUri: resourceIdentifierUri, outputDirectory: outputDirectory, packageName: packageName, packageRoot: packageRoot, @@ -88,13 +75,11 @@ abstract class LinkConfig implements HookConfig { required OS targetOS, List? supportedAssetTypes, required Iterable assets, - Uri? resourceIdentifierUri, required LinkModePreference linkModePreference, Version? version, }) => LinkConfigImpl.dryRun( assets: assets.cast(), - resourceIdentifierUri: resourceIdentifierUri, outputDirectory: outputDirectory, packageName: packageName, packageRoot: packageRoot, diff --git a/pkgs/native_assets_cli/lib/src/api/resource.dart b/pkgs/native_assets_cli/lib/src/api/resource.dart deleted file mode 100644 index 273a99450..000000000 --- a/pkgs/native_assets_cli/lib/src/api/resource.dart +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -/// Identifies a call site of a static method annotated with the -/// `ResourceIdentifier` annotation. It consists of the [name] of the -/// method, and the [metadata] used in the constructor of the annotation. -/// -/// Example: -/// ```dart -/// @ResourceAnnotation('add_func') -/// static external add(int i, int j); -/// ``` -/// will result in the `Resource` object: -/// ```dart -/// Resource(name: 'add', metadata: 'add_func') -/// ``` -/// -/// See also -/// https://pub.dev/documentation/meta/latest/meta/ResourceIdentifier-class.html -/// . -class Resource { - /// The name of the method which was called. - final String name; - - /// The metadata used in the annotation constructor on this method. - final Object? metadata; - - Resource({required this.name, required this.metadata}); - - @override - bool operator ==(Object other) { - if (identical(this, other)) return true; - - return other is Resource && - other.name == name && - other.metadata == metadata; - } - - @override - int get hashCode => name.hashCode ^ metadata.hashCode; - - @override - String toString() => 'Resource(name: $name, metadata: $metadata)'; -} diff --git a/pkgs/native_assets_cli/lib/src/model/link_config.dart b/pkgs/native_assets_cli/lib/src/model/link_config.dart index 00b021e43..20051fffa 100644 --- a/pkgs/native_assets_cli/lib/src/model/link_config.dart +++ b/pkgs/native_assets_cli/lib/src/model/link_config.dart @@ -4,16 +4,10 @@ part of '../api/link_config.dart'; -List? fromIdentifiers(ResourceIdentifiers resourceIdentifiers) => - resourceIdentifiers.identifiers - .map((e) => Resource(name: e.name, metadata: e.id)) - .toList(); - /// The input to the linking script. /// -/// It consists of the fields inherited from the [HookConfig], the [assets] from -/// the build step, and the [treeshakingInformation] generated during the kernel -/// compilation. +/// It consists of the fields inherited from the [HookConfig] and the [assets] +/// from the build step. class LinkConfigImpl extends HookConfigImpl implements LinkConfig { static const resourceIdentifierKey = 'resource_identifiers'; @@ -22,17 +16,8 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { @override final Iterable assets; - Iterable? _treeshakingInformation; - - @override - Iterable? get treeshakingInformation { - if (_resourceIdentifierUri != null && _treeshakingInformation == null) { - _treeshakingInformation = fromIdentifiers( - ResourceIdentifiers.fromFile(_resourceIdentifierUri.toFilePath())); - } - return _treeshakingInformation; - } - + // TODO: Placeholder for the resources.json file URL. We don't want to change + // native_assets_builder when implementing the parsing. final Uri? _resourceIdentifierUri; LinkConfigImpl({ @@ -69,10 +54,6 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig { required super.linkModePreference, required super.targetOS, }) : _resourceIdentifierUri = resourceIdentifierUri, - _treeshakingInformation = resourceIdentifierUri != null - ? fromIdentifiers(ResourceIdentifiers.fromFile( - resourceIdentifierUri.toFilePath())) - : null, super.dryRun( hook: Hook.link, version: version ?? HookConfigImpl.latestVersion, diff --git a/pkgs/native_assets_cli/test/api/resource_data.dart b/pkgs/native_assets_cli/test/api/resource_data.dart index 23d3076ad..b83351e19 100644 --- a/pkgs/native_assets_cli/test/api/resource_data.dart +++ b/pkgs/native_assets_cli/test/api/resource_data.dart @@ -2,14 +2,8 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:native_assets_cli/src/api/resource.dart'; import 'package:native_assets_cli/src/model/resource_identifiers.dart'; -final resourceList = [ - Resource(name: 'methodName1', metadata: 'someMetadata'), - Resource(name: 'methodName2', metadata: 'someOtherMetadata'), -]; - const resourceFile = '''{ "_comment": "Resources referenced by annotated resource identifiers", "AppTag": "TBD", diff --git a/pkgs/native_assets_cli/test/api/resource_test.dart b/pkgs/native_assets_cli/test/api/resource_test.dart deleted file mode 100644 index c06c08890..000000000 --- a/pkgs/native_assets_cli/test/api/resource_test.dart +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:native_assets_cli/src/api/link_config.dart'; -import 'package:test/test.dart'; - -import 'resource_data.dart'; - -void main() { - test('Parse resource identifiers', () { - expect(fromIdentifiers(resourceIdentifiers), resourceList); - }); -} diff --git a/pkgs/native_assets_cli/test/model/link_config_test.dart b/pkgs/native_assets_cli/test/model/link_config_test.dart index 1167ea2f4..e11b0e592 100644 --- a/pkgs/native_assets_cli/test/model/link_config_test.dart +++ b/pkgs/native_assets_cli/test/model/link_config_test.dart @@ -2,7 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'dart:convert'; import 'dart:io'; import 'package:native_assets_cli/native_assets_cli.dart'; @@ -10,8 +9,6 @@ import 'package:native_assets_cli/native_assets_cli_internal.dart'; import 'package:native_assets_cli/src/api/asset.dart'; import 'package:test/test.dart'; -import '../api/resource_data.dart'; - void main() async { late Uri tempUri; late Uri outDirUri; @@ -59,8 +56,7 @@ void main() async { fakeVcVars = tempUri.resolve('vcvarsall.bat'); await File.fromUri(fakeVcVars).create(); resources = tempUri.resolve('resources.json'); - final file = File.fromUri(resources)..createSync(); - file.writeAsStringSync(jsonEncode(resourceIdentifiers)); + File.fromUri(resources).createSync(); }); tearDown(() async { @@ -115,8 +111,6 @@ void main() async { true); expect(config1.cCompiler != config2.cCompiler, true); expect(config1.assets != config2.assets, true); - expect( - config1.treeshakingInformation != config2.treeshakingInformation, true); }); test('LinkConfig fromConfig', () { @@ -196,25 +190,6 @@ void main() async { final fromConfig = LinkConfigImpl.fromJson(configFile); expect(fromConfig, equals(buildConfig1)); }); - test('LinkConfig fetch treeshaking information', () { - final buildConfig1 = LinkConfigImpl( - outputDirectory: outDirUri, - packageName: packageName, - packageRoot: packageRootUri, - targetArchitecture: ArchitectureImpl.arm64, - targetOS: OSImpl.iOS, - targetIOSSdk: IOSSdkImpl.iPhoneOS, - cCompiler: CCompilerConfigImpl( - compiler: fakeClang, - linker: fakeLd, - ), - buildMode: BuildModeImpl.release, - assets: assets, - resourceIdentifierUri: resources, - linkModePreference: LinkModePreferenceImpl.preferStatic, - ); - expect(buildConfig1.treeshakingInformation, resourceList); - }); test('LinkConfig toJson fromJson', () { final outDir = outDirUri; From bf76046c7f2fd1d59b8b8d62e35ba415b025602a Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 3 May 2024 13:04:44 +0200 Subject: [PATCH 176/187] Add another example --- .../.gitignore | 2 +- .../test_data/drop_dylib_link/README.md | 1 + .../bin/drop_dylib_link.dart} | 4 +- .../test_data/drop_dylib_link/hook/build.dart | 48 ++++++++++++++ .../test_data/drop_dylib_link/hook/link.dart | 18 +++++ .../lib/drop_dylib_link.dart} | 2 +- .../lib/src/drop_dylib_link.dart} | 2 +- .../lib/src/drop_dylib_link_bindings.dart} | 6 +- .../pubspec.yaml | 4 +- .../src/native_add.c | 2 +- .../src/native_add.h | 0 .../src/native_multiply.c | 0 .../src/native_multiply.h | 0 .../treeshaking_native_assets/README.md | 2 - .../treeshaking_native_assets/hook/build.dart | 55 ---------------- .../treeshaking_native_assets/hook/link.dart | 66 ------------------- 16 files changed, 79 insertions(+), 133 deletions(-) rename pkgs/native_assets_builder/test_data/{treeshaking_native_assets => drop_dylib_link}/.gitignore (73%) create mode 100644 pkgs/native_assets_builder/test_data/drop_dylib_link/README.md rename pkgs/native_assets_builder/test_data/{treeshaking_native_assets/bin/treeshaking_native_assets.dart => drop_dylib_link/bin/drop_dylib_link.dart} (67%) create mode 100644 pkgs/native_assets_builder/test_data/drop_dylib_link/hook/build.dart create mode 100644 pkgs/native_assets_builder/test_data/drop_dylib_link/hook/link.dart rename pkgs/native_assets_builder/test_data/{treeshaking_native_assets/lib/treeshaking_native_assets.dart => drop_dylib_link/lib/drop_dylib_link.dart} (82%) rename pkgs/native_assets_builder/test_data/{treeshaking_native_assets/lib/src/treeshaking_native_assets.dart => drop_dylib_link/lib/src/drop_dylib_link.dart} (87%) rename pkgs/native_assets_builder/test_data/{treeshaking_native_assets/lib/src/treeshaking_native_assets_bindings.dart => drop_dylib_link/lib/src/drop_dylib_link_bindings.dart} (60%) rename pkgs/native_assets_builder/test_data/{treeshaking_native_assets => drop_dylib_link}/pubspec.yaml (76%) rename pkgs/native_assets_builder/test_data/{treeshaking_native_assets => drop_dylib_link}/src/native_add.c (84%) rename pkgs/native_assets_builder/test_data/{treeshaking_native_assets => drop_dylib_link}/src/native_add.h (100%) rename pkgs/native_assets_builder/test_data/{treeshaking_native_assets => drop_dylib_link}/src/native_multiply.c (100%) rename pkgs/native_assets_builder/test_data/{treeshaking_native_assets => drop_dylib_link}/src/native_multiply.h (100%) delete mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/README.md delete mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/build.dart delete mode 100644 pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/.gitignore b/pkgs/native_assets_builder/test_data/drop_dylib_link/.gitignore similarity index 73% rename from pkgs/native_assets_builder/test_data/treeshaking_native_assets/.gitignore rename to pkgs/native_assets_builder/test_data/drop_dylib_link/.gitignore index 5aa3aeb88..eb803bf91 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/.gitignore +++ b/pkgs/native_assets_builder/test_data/drop_dylib_link/.gitignore @@ -1,4 +1,4 @@ # https://dart.dev/guides/libraries/private-files # Created by `dart pub` .dart_tool/ -bin/treeshaking_native_assets/ +bin/drop_dylib_link/ diff --git a/pkgs/native_assets_builder/test_data/drop_dylib_link/README.md b/pkgs/native_assets_builder/test_data/drop_dylib_link/README.md new file mode 100644 index 000000000..11147bc19 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/drop_dylib_link/README.md @@ -0,0 +1 @@ +This sample builds a native library for adding and multiplying, but then only keeps the one for adding in the linking step. \ No newline at end of file diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/bin/treeshaking_native_assets.dart b/pkgs/native_assets_builder/test_data/drop_dylib_link/bin/drop_dylib_link.dart similarity index 67% rename from pkgs/native_assets_builder/test_data/treeshaking_native_assets/bin/treeshaking_native_assets.dart rename to pkgs/native_assets_builder/test_data/drop_dylib_link/bin/drop_dylib_link.dart index d4f8255f0..4e2058f60 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/bin/treeshaking_native_assets.dart +++ b/pkgs/native_assets_builder/test_data/drop_dylib_link/bin/drop_dylib_link.dart @@ -2,8 +2,8 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'package:treeshaking_native_assets/treeshaking_native_assets.dart'; +import 'package:drop_dylib_link/drop_dylib_link.dart'; void main(List arguments) { - print('Hello world: ${MyMath.multiply(3, 4)}!'); + print('Hello world: ${MyMath.add(3, 4)}!'); } diff --git a/pkgs/native_assets_builder/test_data/drop_dylib_link/hook/build.dart b/pkgs/native_assets_builder/test_data/drop_dylib_link/hook/build.dart new file mode 100644 index 000000000..b7e430c37 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/drop_dylib_link/hook/build.dart @@ -0,0 +1,48 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:logging/logging.dart'; +import 'package:native_assets_cli/native_assets_cli.dart'; +import 'package:native_toolchain_c/native_toolchain_c.dart'; + +const packageName = 'drop_dylib_link'; + +void main(List arguments) async { + await build(arguments, (config, output) async { + final logger = Logger('') + ..level = Level.ALL + ..onRecord.listen((record) { + print('${record.level.name}: ${record.time}: ${record.message}'); + }); + await CBuilder.library( + name: 'add', + assetName: 'dylib_add', + sources: [ + 'src/native_add.c', + ], + dartBuildFiles: ['hook/build.dart'], + linkModePreference: LinkModePreference.dynamic, + ).run( + buildConfig: config, + buildOutput: output, + logger: logger, + linkInPackage: packageName, + ); + + await CBuilder.library( + name: 'multiply', + assetName: 'dylib_multiply', + sources: [ + 'src/native_multiply.c', + ], + dartBuildFiles: ['hook/build.dart'], + linkModePreference: LinkModePreference.dynamic, + ).run( + buildConfig: config, + buildOutput: output, + logger: logger, + linkInPackage: packageName, + ); + }); +} diff --git a/pkgs/native_assets_builder/test_data/drop_dylib_link/hook/link.dart b/pkgs/native_assets_builder/test_data/drop_dylib_link/hook/link.dart new file mode 100644 index 000000000..b2f15c0d9 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/drop_dylib_link/hook/link.dart @@ -0,0 +1,18 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:native_assets_cli/native_assets_cli.dart'; + +void main(List arguments) async { + await link(arguments, (config, output) async { + print(''' +Received ${config.assets.length} assets: ${config.assets.map((e) => e.id)}. +'''); + output.addAssets(config.assets.where((asset) => asset.id.endsWith('add'))); + print(''' +Keeping only ${output.assets.map((e) => e.id)}. +'''); + output.addDependency(config.packageRoot.resolve('hook/link.dart')); + }); +} diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/treeshaking_native_assets.dart b/pkgs/native_assets_builder/test_data/drop_dylib_link/lib/drop_dylib_link.dart similarity index 82% rename from pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/treeshaking_native_assets.dart rename to pkgs/native_assets_builder/test_data/drop_dylib_link/lib/drop_dylib_link.dart index 6b7188f81..3e0c2b6b7 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/treeshaking_native_assets.dart +++ b/pkgs/native_assets_builder/test_data/drop_dylib_link/lib/drop_dylib_link.dart @@ -2,4 +2,4 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -export 'src/treeshaking_native_assets.dart'; +export 'src/drop_dylib_link.dart'; diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets.dart b/pkgs/native_assets_builder/test_data/drop_dylib_link/lib/src/drop_dylib_link.dart similarity index 87% rename from pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets.dart rename to pkgs/native_assets_builder/test_data/drop_dylib_link/lib/src/drop_dylib_link.dart index 6b4a24dbc..c71715c97 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets.dart +++ b/pkgs/native_assets_builder/test_data/drop_dylib_link/lib/src/drop_dylib_link.dart @@ -4,7 +4,7 @@ import 'package:meta/meta.dart'; -import 'treeshaking_native_assets_bindings.dart' as bindings; +import 'drop_dylib_link_bindings.dart' as bindings; class MyMath { @ResourceIdentifier('add') diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets_bindings.dart b/pkgs/native_assets_builder/test_data/drop_dylib_link/lib/src/drop_dylib_link_bindings.dart similarity index 60% rename from pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets_bindings.dart rename to pkgs/native_assets_builder/test_data/drop_dylib_link/lib/src/drop_dylib_link_bindings.dart index 9ee4e62eb..231a1a58e 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/lib/src/treeshaking_native_assets_bindings.dart +++ b/pkgs/native_assets_builder/test_data/drop_dylib_link/lib/src/drop_dylib_link_bindings.dart @@ -4,13 +4,15 @@ import 'dart:ffi' as ffi; -@ffi.Native() +@ffi.Native( + assetId: 'package:drop_dylib_link/dylib_add') external int add( int a, int b, ); -@ffi.Native() +@ffi.Native( + assetId: 'package:drop_dylib_link/dylib_multiply') external int multiply( int a, int b, diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/pubspec.yaml b/pkgs/native_assets_builder/test_data/drop_dylib_link/pubspec.yaml similarity index 76% rename from pkgs/native_assets_builder/test_data/treeshaking_native_assets/pubspec.yaml rename to pkgs/native_assets_builder/test_data/drop_dylib_link/pubspec.yaml index 90ea2611d..527e637de 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/drop_dylib_link/pubspec.yaml @@ -1,5 +1,5 @@ -name: treeshaking_native_assets -description: A sample on how to treeshake symbols using a build/link combo. +name: drop_dylib_link +description: Generate two dylibs, remove one in linking. version: 1.0.0 publish_to: none diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_add.c b/pkgs/native_assets_builder/test_data/drop_dylib_link/src/native_add.c similarity index 84% rename from pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_add.c rename to pkgs/native_assets_builder/test_data/drop_dylib_link/src/native_add.c index 3c47d5220..570e754fe 100644 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_add.c +++ b/pkgs/native_assets_builder/test_data/drop_dylib_link/src/native_add.c @@ -4,6 +4,6 @@ #include "native_add.h" -int32_t add(int32_t a, int32_t b) { +MYLIB_EXPORT int32_t add(int32_t a, int32_t b) { return a + b; } diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_add.h b/pkgs/native_assets_builder/test_data/drop_dylib_link/src/native_add.h similarity index 100% rename from pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_add.h rename to pkgs/native_assets_builder/test_data/drop_dylib_link/src/native_add.h diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_multiply.c b/pkgs/native_assets_builder/test_data/drop_dylib_link/src/native_multiply.c similarity index 100% rename from pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_multiply.c rename to pkgs/native_assets_builder/test_data/drop_dylib_link/src/native_multiply.c diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_multiply.h b/pkgs/native_assets_builder/test_data/drop_dylib_link/src/native_multiply.h similarity index 100% rename from pkgs/native_assets_builder/test_data/treeshaking_native_assets/src/native_multiply.h rename to pkgs/native_assets_builder/test_data/drop_dylib_link/src/native_multiply.h diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/README.md b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/README.md deleted file mode 100644 index 982b82826..000000000 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/README.md +++ /dev/null @@ -1,2 +0,0 @@ -This sample builds a native library for adding and multiplying, but as the Dart -code only uses multiplying, the add symbol is removed from the dynamic library. \ No newline at end of file diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/build.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/build.dart deleted file mode 100644 index 4fb9910ba..000000000 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/build.dart +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'dart:io'; - -import 'package:logging/logging.dart'; -import 'package:native_assets_cli/native_assets_cli.dart'; -import 'package:native_toolchain_c/native_toolchain_c.dart'; - -const packageName = 'treeshaking_native_assets'; - -void main(List arguments) async { - await build(arguments, (config, output) async { - final cbuilder = CBuilder.library( - name: packageName, - assetName: 'staticlib', - sources: [ - 'src/native_add.c', - 'src/native_multiply.c', - ], - dartBuildFiles: ['hook/build.dart'], - linkModePreference: LinkModePreference.static, - ); - await cbuilder.run( - buildConfig: config, - buildOutput: output, - logger: Logger('') - ..level = Level.ALL - ..onRecord.listen((record) { - print('${record.level.name}: ${record.time}: ${record.message}'); - }), - linkInPackage: packageName, - ); - _placeholderAsset(config, output); - }); -} - -// TODO: Currently, linking cannot add assets, so we add a placeholder here. -// See also https://github.com/dart-lang/native/issues/1084. -void _placeholderAsset(BuildConfig config, BuildOutput output) { - final uri = config.outputDirectory.resolve( - config.targetOS.libraryFileName(packageName, DynamicLoadingBundled())); - File.fromUri(uri).createSync(recursive: true); - output.addAsset( - NativeCodeAsset( - package: packageName, - name: 'src/${packageName}_bindings.dart', - linkMode: DynamicLoadingBundled(), - file: uri, - os: config.targetOS, - ), - linkInPackage: packageName, - ); -} diff --git a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart b/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart deleted file mode 100644 index eeb2f3c14..000000000 --- a/pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'dart:io'; - -import 'package:native_assets_cli/native_assets_cli.dart'; - -const packageName = 'treeshaking_native_assets'; - -void main(List arguments) async { - await link(arguments, (config, output) async { - final List? usedSymbols = []; - final dynamicLibrary = config.assets.firstWhere((asset) => - asset.id == 'package:$packageName/src/${packageName}_bindings.dart'); - final staticLibrary = config.assets - .firstWhere((asset) => asset.id == 'package:$packageName/staticlib'); - - if (usedSymbols != null) { - final linkerScript = await _writeLinkerScript(usedSymbols); - await _treeshakeStaticLibrary( - usedSymbols, - linkerScript, - dynamicLibrary, - staticLibrary, - ); - output.addAsset(dynamicLibrary); - output.addDependency(config.packageRoot.resolve('hook/link.dart')); - } - }); -} - -Future _treeshakeStaticLibrary( - Iterable symbols, - Uri symbolsUri, - Asset dynamicLibrary, - Asset staticLibrary, -) async { - final arguments = [ - '-fPIC', - '-shared', - ...symbols.map((symbol) => ['-u', symbol]).expand((e) => e), - '--version-script=${symbolsUri.toFilePath()}', - '--gc-sections', - '--strip-debug', - ...['-o', dynamicLibrary.file!.toFilePath()], - staticLibrary.file!.toFilePath(), - ]; - await Process.run('ld', arguments); -} - -Future _writeLinkerScript(Iterable symbols) async { - final tempDir = await Directory.systemTemp.createTemp(); - const symbolsFile = 'symbols.lds'; - final symbolsUri = tempDir.uri.resolve(symbolsFile); - final linkerScript = File.fromUri(symbolsUri)..createSync(); - final contents = '''{ - global: -${symbols.map((symbol) => ' $symbol;').join('\n')} - local: - *; -}; -'''; - linkerScript.writeAsStringSync(contents); - return symbolsUri; -} From 0950ec6c6f43d6b63916e9f850d030f496aed747 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 3 May 2024 13:12:43 +0200 Subject: [PATCH 177/187] Remove wrong example from CI --- .github/workflows/native.yaml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml index b91573b67..1b3897d92 100644 --- a/.github/workflows/native.yaml +++ b/.github/workflows/native.yaml @@ -89,7 +89,7 @@ jobs: - run: dart pub get -C test_data/complex_link_helper/ if: ${{ matrix.package == 'native_assets_builder' }} - - run: dart pub get -C test_data/treeshaking_native_assets/ + - run: dart pub get -C test_data/drop_dylib_link/ if: ${{ matrix.package == 'native_assets_builder' }} - run: dart pub get -C example/build/native_add_app/ @@ -140,15 +140,6 @@ jobs: working-directory: pkgs/${{ matrix.package }}/example/build/use_dart_api/ if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - # TODO: Enable this workflow after resolving https://github.com/dart-lang/sdk/issues/55369 - # - run: dart --enable-experiment=native-assets build bin/app_with_asset_treeshaking.dart - # working-directory: pkgs/${{ matrix.package }}/example/link/app_with_asset_treeshaking/ - # if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - - # - run: ./app_with_asset_treeshaking.exe - # working-directory: pkgs/${{ matrix.package }}/example/link/app_with_asset_treeshaking/bin/app_with_asset_treeshaking/ - # if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }} - - name: Install coverage run: dart pub global activate coverage if: ${{ matrix.sdk == 'stable' }} From 49ec442d3d6fd1a434e3ddf39b405579b3913265 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 3 May 2024 14:02:27 +0200 Subject: [PATCH 178/187] Add to manifest --- pkgs/native_assets_builder/test_data/manifest.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pkgs/native_assets_builder/test_data/manifest.yaml b/pkgs/native_assets_builder/test_data/manifest.yaml index 1568424fe..1eae8a99a 100644 --- a/pkgs/native_assets_builder/test_data/manifest.yaml +++ b/pkgs/native_assets_builder/test_data/manifest.yaml @@ -57,3 +57,14 @@ - complex_link_helper/assets/data_helper_1.json - complex_link_helper/assets/data_helper_2.json - complex_link_helper/assets/data_helper_3.json +- drop_dylib_link/pubspec.yaml +- drop_dylib_link/lib/drop_dylib_link.dart +- drop_dylib_link/lib/src/drop_dylib_link.dart +- drop_dylib_link/lib/src/drop_dylib_link_bindings.dart +- drop_dylib_link/src/native_add.h +- drop_dylib_link/src/native_multiply.h +- drop_dylib_link/src/native_add.c +- drop_dylib_link/src/native_multiply.c +- drop_dylib_link/hook/link.dart +- drop_dylib_link/hook/build.dart +- drop_dylib_link/bin/drop_dylib_link.dart From 884c50579f602531d873d1815248c74e473843e1 Mon Sep 17 00:00:00 2001 From: Moritz Date: Fri, 3 May 2024 16:17:49 +0200 Subject: [PATCH 179/187] Fix test --- pkgs/native_assets_cli/test/model/build_config_test.dart | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_cli/test/model/build_config_test.dart b/pkgs/native_assets_cli/test/model/build_config_test.dart index eb8b6c3a3..4d82529e0 100644 --- a/pkgs/native_assets_cli/test/model/build_config_test.dart +++ b/pkgs/native_assets_cli/test/model/build_config_test.dart @@ -427,8 +427,10 @@ version: 1.0.0'''; final configUri = tempUri.resolve('config.yaml'); final configFile = File.fromUri(configUri); await configFile.writeAsString(configFileContents); - final buildConfig2 = - BuildConfigImpl.fromArguments(['--config', configUri.toFilePath()]); + final buildConfig2 = BuildConfigImpl.fromArguments( + ['--config', configUri.toFilePath()], + environment: {}, // Don't inherit the test environment. + ); expect(buildConfig2, buildConfig); }); From 14a856c6d832c134b33b5ea3ba4bc9a547bae875 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 6 May 2024 17:33:00 +0200 Subject: [PATCH 180/187] Move resource test --- pkgs/native_assets_cli/test/{api => model}/resource_data.dart | 0 .../native_assets_cli/test/model/resource_identifiers_test.dart | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename pkgs/native_assets_cli/test/{api => model}/resource_data.dart (100%) diff --git a/pkgs/native_assets_cli/test/api/resource_data.dart b/pkgs/native_assets_cli/test/model/resource_data.dart similarity index 100% rename from pkgs/native_assets_cli/test/api/resource_data.dart rename to pkgs/native_assets_cli/test/model/resource_data.dart diff --git a/pkgs/native_assets_cli/test/model/resource_identifiers_test.dart b/pkgs/native_assets_cli/test/model/resource_identifiers_test.dart index 7a0dac543..acd207e56 100644 --- a/pkgs/native_assets_cli/test/model/resource_identifiers_test.dart +++ b/pkgs/native_assets_cli/test/model/resource_identifiers_test.dart @@ -7,7 +7,7 @@ import 'dart:convert'; import 'package:native_assets_cli/src/model/resource_identifiers.dart'; import 'package:test/test.dart'; -import '../api/resource_data.dart'; +import 'resource_data.dart'; void main() { test('empty resources parsing', () { From 9e556146865dcb428ff40afa2d8b383f0421ef12 Mon Sep 17 00:00:00 2001 From: Moritz Date: Mon, 6 May 2024 17:35:30 +0200 Subject: [PATCH 181/187] Add argument to drop dylib testcase --- .../test_data/drop_dylib_link/bin/drop_dylib_link.dart | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/native_assets_builder/test_data/drop_dylib_link/bin/drop_dylib_link.dart b/pkgs/native_assets_builder/test_data/drop_dylib_link/bin/drop_dylib_link.dart index 4e2058f60..be71a0d4f 100644 --- a/pkgs/native_assets_builder/test_data/drop_dylib_link/bin/drop_dylib_link.dart +++ b/pkgs/native_assets_builder/test_data/drop_dylib_link/bin/drop_dylib_link.dart @@ -5,5 +5,11 @@ import 'package:drop_dylib_link/drop_dylib_link.dart'; void main(List arguments) { - print('Hello world: ${MyMath.add(3, 4)}!'); + if (arguments.first == 'add') { + print('Hello world: ${MyMath.add(3, 4)}!'); + } else if (arguments.first == 'multiply') { + print('Hello world: ${MyMath.multiply(3, 4)}!'); + } else { + throw ArgumentError('Must pass either "add" or "multiply"'); + } } From 50ecb955bf4229fd4107d160957e428a494f2e58 Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 7 May 2024 10:25:52 +0200 Subject: [PATCH 182/187] Add test project adding assets in link --- .../test_data/add_dylib_link/.gitignore | 4 ++++ .../test_data/add_dylib_link/README.md | 1 + .../test_data/add_dylib_link/assets/test.txt | 1 + .../add_dylib_link/bin/add_dylib_link.dart | 9 +++++++++ .../test_data/add_dylib_link/hook/link.dart | 19 +++++++++++++++++++ .../test_data/add_dylib_link/pubspec.yaml | 19 +++++++++++++++++++ 6 files changed, 53 insertions(+) create mode 100644 pkgs/native_assets_builder/test_data/add_dylib_link/.gitignore create mode 100644 pkgs/native_assets_builder/test_data/add_dylib_link/README.md create mode 100644 pkgs/native_assets_builder/test_data/add_dylib_link/assets/test.txt create mode 100644 pkgs/native_assets_builder/test_data/add_dylib_link/bin/add_dylib_link.dart create mode 100644 pkgs/native_assets_builder/test_data/add_dylib_link/hook/link.dart create mode 100644 pkgs/native_assets_builder/test_data/add_dylib_link/pubspec.yaml diff --git a/pkgs/native_assets_builder/test_data/add_dylib_link/.gitignore b/pkgs/native_assets_builder/test_data/add_dylib_link/.gitignore new file mode 100644 index 000000000..6858c2ff6 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/add_dylib_link/.gitignore @@ -0,0 +1,4 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ +bin/add_dylib_link/ diff --git a/pkgs/native_assets_builder/test_data/add_dylib_link/README.md b/pkgs/native_assets_builder/test_data/add_dylib_link/README.md new file mode 100644 index 000000000..8b3ebd965 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/add_dylib_link/README.md @@ -0,0 +1 @@ +This sample adds a native library in the link step. \ No newline at end of file diff --git a/pkgs/native_assets_builder/test_data/add_dylib_link/assets/test.txt b/pkgs/native_assets_builder/test_data/add_dylib_link/assets/test.txt new file mode 100644 index 000000000..74158754f --- /dev/null +++ b/pkgs/native_assets_builder/test_data/add_dylib_link/assets/test.txt @@ -0,0 +1 @@ +My test text \ No newline at end of file diff --git a/pkgs/native_assets_builder/test_data/add_dylib_link/bin/add_dylib_link.dart b/pkgs/native_assets_builder/test_data/add_dylib_link/bin/add_dylib_link.dart new file mode 100644 index 000000000..a7b90cc9e --- /dev/null +++ b/pkgs/native_assets_builder/test_data/add_dylib_link/bin/add_dylib_link.dart @@ -0,0 +1,9 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:io'; + +void main(List arguments) { + print(File('assets/test.txt').readAsStringSync()); +} diff --git a/pkgs/native_assets_builder/test_data/add_dylib_link/hook/link.dart b/pkgs/native_assets_builder/test_data/add_dylib_link/hook/link.dart new file mode 100644 index 000000000..a43f5debe --- /dev/null +++ b/pkgs/native_assets_builder/test_data/add_dylib_link/hook/link.dart @@ -0,0 +1,19 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:native_assets_cli/native_assets_cli.dart'; + +void main(List arguments) async { + await link(arguments, (config, output) async { + output + ..addAsset( + DataAsset( + package: 'add_dylib_link', + name: 'test_text_file', + file: config.packageRoot.resolve('assets/test.txt'), + ), + ) + ..addDependency(config.packageRoot.resolve('hook/link.dart')); + }); +} diff --git a/pkgs/native_assets_builder/test_data/add_dylib_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/add_dylib_link/pubspec.yaml new file mode 100644 index 000000000..59e22d0fb --- /dev/null +++ b/pkgs/native_assets_builder/test_data/add_dylib_link/pubspec.yaml @@ -0,0 +1,19 @@ +name: add_dylib_link +description: Add a dylib in the link step. +version: 1.0.0 + +publish_to: none + +environment: + sdk: ^3.0.0 + +dependencies: + logging: ^1.1.1 + # native_assets_cli: ^0.5.0 + meta: ^1.12.0 + native_assets_cli: + path: ../../../native_assets_cli/ + +dev_dependencies: + lints: ^3.0.0 + test: ^1.24.0 From 4e7ba0e322aedc5cb4d177b5e44a7fab0a51d54d Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 7 May 2024 10:28:09 +0200 Subject: [PATCH 183/187] Add to manifest --- pkgs/native_assets_builder/test_data/manifest.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/native_assets_builder/test_data/manifest.yaml b/pkgs/native_assets_builder/test_data/manifest.yaml index 1eae8a99a..0bedc58d4 100644 --- a/pkgs/native_assets_builder/test_data/manifest.yaml +++ b/pkgs/native_assets_builder/test_data/manifest.yaml @@ -68,3 +68,8 @@ - drop_dylib_link/hook/link.dart - drop_dylib_link/hook/build.dart - drop_dylib_link/bin/drop_dylib_link.dart +- add_dylib_link/pubspec.yaml +- add_dylib_link/assets/test.txt +- add_dylib_link/README.md +- add_dylib_link/hook/link.dart +- add_dylib_link/bin/add_dylib_link.dart From 2532c8b477fe471cb1ca3cdb66e1bfa5a5c95109 Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 7 May 2024 10:29:37 +0200 Subject: [PATCH 184/187] Rename --- .github/workflows/native.yaml | 3 +++ .../{add_dylib_link => add_asset_link}/.gitignore | 2 +- .../{add_dylib_link => add_asset_link}/README.md | 0 .../{add_dylib_link => add_asset_link}/assets/test.txt | 0 .../bin/add_asset_link.dart} | 0 .../{add_dylib_link => add_asset_link}/hook/link.dart | 2 +- .../{add_dylib_link => add_asset_link}/pubspec.yaml | 2 +- pkgs/native_assets_builder/test_data/manifest.yaml | 10 +++++----- 8 files changed, 11 insertions(+), 8 deletions(-) rename pkgs/native_assets_builder/test_data/{add_dylib_link => add_asset_link}/.gitignore (81%) rename pkgs/native_assets_builder/test_data/{add_dylib_link => add_asset_link}/README.md (100%) rename pkgs/native_assets_builder/test_data/{add_dylib_link => add_asset_link}/assets/test.txt (100%) rename pkgs/native_assets_builder/test_data/{add_dylib_link/bin/add_dylib_link.dart => add_asset_link/bin/add_asset_link.dart} (100%) rename pkgs/native_assets_builder/test_data/{add_dylib_link => add_asset_link}/hook/link.dart (94%) rename pkgs/native_assets_builder/test_data/{add_dylib_link => add_asset_link}/pubspec.yaml (93%) diff --git a/.github/workflows/native.yaml b/.github/workflows/native.yaml index 1b3897d92..a56e01c04 100644 --- a/.github/workflows/native.yaml +++ b/.github/workflows/native.yaml @@ -92,6 +92,9 @@ jobs: - run: dart pub get -C test_data/drop_dylib_link/ if: ${{ matrix.package == 'native_assets_builder' }} + - run: dart pub get -C test_data/add_asset_link/ + if: ${{ matrix.package == 'native_assets_builder' }} + - run: dart pub get -C example/build/native_add_app/ if: ${{ matrix.package == 'native_assets_cli' }} diff --git a/pkgs/native_assets_builder/test_data/add_dylib_link/.gitignore b/pkgs/native_assets_builder/test_data/add_asset_link/.gitignore similarity index 81% rename from pkgs/native_assets_builder/test_data/add_dylib_link/.gitignore rename to pkgs/native_assets_builder/test_data/add_asset_link/.gitignore index 6858c2ff6..f7ad401ea 100644 --- a/pkgs/native_assets_builder/test_data/add_dylib_link/.gitignore +++ b/pkgs/native_assets_builder/test_data/add_asset_link/.gitignore @@ -1,4 +1,4 @@ # https://dart.dev/guides/libraries/private-files # Created by `dart pub` .dart_tool/ -bin/add_dylib_link/ +bin/add_asset_link/ diff --git a/pkgs/native_assets_builder/test_data/add_dylib_link/README.md b/pkgs/native_assets_builder/test_data/add_asset_link/README.md similarity index 100% rename from pkgs/native_assets_builder/test_data/add_dylib_link/README.md rename to pkgs/native_assets_builder/test_data/add_asset_link/README.md diff --git a/pkgs/native_assets_builder/test_data/add_dylib_link/assets/test.txt b/pkgs/native_assets_builder/test_data/add_asset_link/assets/test.txt similarity index 100% rename from pkgs/native_assets_builder/test_data/add_dylib_link/assets/test.txt rename to pkgs/native_assets_builder/test_data/add_asset_link/assets/test.txt diff --git a/pkgs/native_assets_builder/test_data/add_dylib_link/bin/add_dylib_link.dart b/pkgs/native_assets_builder/test_data/add_asset_link/bin/add_asset_link.dart similarity index 100% rename from pkgs/native_assets_builder/test_data/add_dylib_link/bin/add_dylib_link.dart rename to pkgs/native_assets_builder/test_data/add_asset_link/bin/add_asset_link.dart diff --git a/pkgs/native_assets_builder/test_data/add_dylib_link/hook/link.dart b/pkgs/native_assets_builder/test_data/add_asset_link/hook/link.dart similarity index 94% rename from pkgs/native_assets_builder/test_data/add_dylib_link/hook/link.dart rename to pkgs/native_assets_builder/test_data/add_asset_link/hook/link.dart index a43f5debe..84a3bbcf6 100644 --- a/pkgs/native_assets_builder/test_data/add_dylib_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/add_asset_link/hook/link.dart @@ -9,7 +9,7 @@ void main(List arguments) async { output ..addAsset( DataAsset( - package: 'add_dylib_link', + package: 'add_asset_link', name: 'test_text_file', file: config.packageRoot.resolve('assets/test.txt'), ), diff --git a/pkgs/native_assets_builder/test_data/add_dylib_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/add_asset_link/pubspec.yaml similarity index 93% rename from pkgs/native_assets_builder/test_data/add_dylib_link/pubspec.yaml rename to pkgs/native_assets_builder/test_data/add_asset_link/pubspec.yaml index 59e22d0fb..9ffc4e934 100644 --- a/pkgs/native_assets_builder/test_data/add_dylib_link/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/add_asset_link/pubspec.yaml @@ -1,4 +1,4 @@ -name: add_dylib_link +name: add_asset_link description: Add a dylib in the link step. version: 1.0.0 diff --git a/pkgs/native_assets_builder/test_data/manifest.yaml b/pkgs/native_assets_builder/test_data/manifest.yaml index 0bedc58d4..6ed7566be 100644 --- a/pkgs/native_assets_builder/test_data/manifest.yaml +++ b/pkgs/native_assets_builder/test_data/manifest.yaml @@ -68,8 +68,8 @@ - drop_dylib_link/hook/link.dart - drop_dylib_link/hook/build.dart - drop_dylib_link/bin/drop_dylib_link.dart -- add_dylib_link/pubspec.yaml -- add_dylib_link/assets/test.txt -- add_dylib_link/README.md -- add_dylib_link/hook/link.dart -- add_dylib_link/bin/add_dylib_link.dart +- add_asset_link/pubspec.yaml +- add_asset_link/assets/test.txt +- add_asset_link/README.md +- add_asset_link/hook/link.dart +- add_asset_link/bin/add_asset_link.dart From 12076be74c40303a28703b6f2a9574f339ae2d6b Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 7 May 2024 11:26:58 +0200 Subject: [PATCH 185/187] Add todo --- .../example/link/package_with_assets/hook/link.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart index a1f465c1c..7c81e64d1 100644 --- a/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart +++ b/pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart @@ -6,6 +6,7 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List args) async { await link(args, (config, output) async { + //TODO: Add tree shaking by reading the resources.json produced by the SDK. final dataAssets = config.assets.whereType(); output.addAssets(dataAssets); }); From 60604a2595c7ce11ddd258ae26f549ac722358f0 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 8 May 2024 10:21:58 +0200 Subject: [PATCH 186/187] Refactor add link asset test --- .../test_data/add_asset_link/assets/test.txt | 1 - .../add_asset_link/bin/add_asset_link.dart | 4 +-- .../test_data/add_asset_link/hook/build.dart | 31 +++++++++++++++++++ .../test_data/add_asset_link/hook/link.dart | 10 ++++-- .../add_asset_link/lib/add_asset_link.dart | 5 +++ .../lib/src/add_asset_link.dart | 9 ++++++ .../lib/src/add_asset_link_bindings.dart | 12 +++++++ .../test_data/add_asset_link/pubspec.yaml | 3 ++ .../test_data/add_asset_link/src/native_add.c | 9 ++++++ .../test_data/add_asset_link/src/native_add.h | 13 ++++++++ .../test_data/manifest.yaml | 8 +++-- 11 files changed, 97 insertions(+), 8 deletions(-) delete mode 100644 pkgs/native_assets_builder/test_data/add_asset_link/assets/test.txt create mode 100644 pkgs/native_assets_builder/test_data/add_asset_link/hook/build.dart create mode 100644 pkgs/native_assets_builder/test_data/add_asset_link/lib/add_asset_link.dart create mode 100644 pkgs/native_assets_builder/test_data/add_asset_link/lib/src/add_asset_link.dart create mode 100644 pkgs/native_assets_builder/test_data/add_asset_link/lib/src/add_asset_link_bindings.dart create mode 100644 pkgs/native_assets_builder/test_data/add_asset_link/src/native_add.c create mode 100644 pkgs/native_assets_builder/test_data/add_asset_link/src/native_add.h diff --git a/pkgs/native_assets_builder/test_data/add_asset_link/assets/test.txt b/pkgs/native_assets_builder/test_data/add_asset_link/assets/test.txt deleted file mode 100644 index 74158754f..000000000 --- a/pkgs/native_assets_builder/test_data/add_asset_link/assets/test.txt +++ /dev/null @@ -1 +0,0 @@ -My test text \ No newline at end of file diff --git a/pkgs/native_assets_builder/test_data/add_asset_link/bin/add_asset_link.dart b/pkgs/native_assets_builder/test_data/add_asset_link/bin/add_asset_link.dart index a7b90cc9e..c56edc742 100644 --- a/pkgs/native_assets_builder/test_data/add_asset_link/bin/add_asset_link.dart +++ b/pkgs/native_assets_builder/test_data/add_asset_link/bin/add_asset_link.dart @@ -2,8 +2,8 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'dart:io'; +import 'package:add_asset_link/add_asset_link.dart'; void main(List arguments) { - print(File('assets/test.txt').readAsStringSync()); + print('Hello world: ${MyMath.add(3, 4)}!'); } diff --git a/pkgs/native_assets_builder/test_data/add_asset_link/hook/build.dart b/pkgs/native_assets_builder/test_data/add_asset_link/hook/build.dart new file mode 100644 index 000000000..74908a340 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/add_asset_link/hook/build.dart @@ -0,0 +1,31 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:logging/logging.dart'; +import 'package:native_assets_cli/native_assets_cli.dart'; +import 'package:native_toolchain_c/native_toolchain_c.dart'; + +void main(List arguments) async { + await build(arguments, (config, output) async { + final logger = Logger('') + ..level = Level.ALL + ..onRecord.listen((record) { + print('${record.level.name}: ${record.time}: ${record.message}'); + }); + await CBuilder.library( + name: 'add', + assetName: 'dylib_add_build', + sources: [ + 'src/native_add.c', + ], + dartBuildFiles: ['hook/build.dart'], + linkModePreference: LinkModePreference.dynamic, + ).run( + buildConfig: config, + buildOutput: output, + logger: logger, + linkInPackage: 'add_asset_link', + ); + }); +} diff --git a/pkgs/native_assets_builder/test_data/add_asset_link/hook/link.dart b/pkgs/native_assets_builder/test_data/add_asset_link/hook/link.dart index 84a3bbcf6..c5999f9c9 100644 --- a/pkgs/native_assets_builder/test_data/add_asset_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/add_asset_link/hook/link.dart @@ -6,12 +6,16 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List arguments) async { await link(arguments, (config, output) async { + final built_dylib = config.assets.first as NativeCodeAsset; output ..addAsset( - DataAsset( + NativeCodeAsset( package: 'add_asset_link', - name: 'test_text_file', - file: config.packageRoot.resolve('assets/test.txt'), + name: 'dylib_add_link', + linkMode: built_dylib.linkMode, + os: built_dylib.os, + architecture: built_dylib.architecture, + file: built_dylib.file, ), ) ..addDependency(config.packageRoot.resolve('hook/link.dart')); diff --git a/pkgs/native_assets_builder/test_data/add_asset_link/lib/add_asset_link.dart b/pkgs/native_assets_builder/test_data/add_asset_link/lib/add_asset_link.dart new file mode 100644 index 000000000..8c0d3965a --- /dev/null +++ b/pkgs/native_assets_builder/test_data/add_asset_link/lib/add_asset_link.dart @@ -0,0 +1,5 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +export 'src/add_asset_link.dart'; diff --git a/pkgs/native_assets_builder/test_data/add_asset_link/lib/src/add_asset_link.dart b/pkgs/native_assets_builder/test_data/add_asset_link/lib/src/add_asset_link.dart new file mode 100644 index 000000000..71651a7b4 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/add_asset_link/lib/src/add_asset_link.dart @@ -0,0 +1,9 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'add_asset_link_bindings.dart' as bindings; + +class MyMath { + static int add(int a, int b) => bindings.add(a, b); +} diff --git a/pkgs/native_assets_builder/test_data/add_asset_link/lib/src/add_asset_link_bindings.dart b/pkgs/native_assets_builder/test_data/add_asset_link/lib/src/add_asset_link_bindings.dart new file mode 100644 index 000000000..1d1d71837 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/add_asset_link/lib/src/add_asset_link_bindings.dart @@ -0,0 +1,12 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:ffi' as ffi; + +@ffi.Native( + assetId: 'package:add_asset_link/dylib_add_link') +external int add( + int a, + int b, +); diff --git a/pkgs/native_assets_builder/test_data/add_asset_link/pubspec.yaml b/pkgs/native_assets_builder/test_data/add_asset_link/pubspec.yaml index 9ffc4e934..be1090386 100644 --- a/pkgs/native_assets_builder/test_data/add_asset_link/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/add_asset_link/pubspec.yaml @@ -13,6 +13,9 @@ dependencies: meta: ^1.12.0 native_assets_cli: path: ../../../native_assets_cli/ + # native_toolchain_c: ^0.4.0 + native_toolchain_c: + path: ../../../native_toolchain_c/ dev_dependencies: lints: ^3.0.0 diff --git a/pkgs/native_assets_builder/test_data/add_asset_link/src/native_add.c b/pkgs/native_assets_builder/test_data/add_asset_link/src/native_add.c new file mode 100644 index 000000000..570e754fe --- /dev/null +++ b/pkgs/native_assets_builder/test_data/add_asset_link/src/native_add.c @@ -0,0 +1,9 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#include "native_add.h" + +MYLIB_EXPORT int32_t add(int32_t a, int32_t b) { + return a + b; +} diff --git a/pkgs/native_assets_builder/test_data/add_asset_link/src/native_add.h b/pkgs/native_assets_builder/test_data/add_asset_link/src/native_add.h new file mode 100644 index 000000000..275878fe8 --- /dev/null +++ b/pkgs/native_assets_builder/test_data/add_asset_link/src/native_add.h @@ -0,0 +1,13 @@ +// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +#include + +#if _WIN32 +#define MYLIB_EXPORT __declspec(dllexport) +#else +#define MYLIB_EXPORT +#endif + +MYLIB_EXPORT int32_t add(int32_t a, int32_t b); diff --git a/pkgs/native_assets_builder/test_data/manifest.yaml b/pkgs/native_assets_builder/test_data/manifest.yaml index 6ed7566be..60b4a0d85 100644 --- a/pkgs/native_assets_builder/test_data/manifest.yaml +++ b/pkgs/native_assets_builder/test_data/manifest.yaml @@ -69,7 +69,11 @@ - drop_dylib_link/hook/build.dart - drop_dylib_link/bin/drop_dylib_link.dart - add_asset_link/pubspec.yaml -- add_asset_link/assets/test.txt -- add_asset_link/README.md - add_asset_link/hook/link.dart - add_asset_link/bin/add_asset_link.dart +- add_asset_link/lib/add_asset_link.dart +- add_asset_link/lib/src/add_asset_link.dart +- add_asset_link/lib/src/add_asset_link_bindings.dart +- add_asset_link/src/native_add.h +- add_asset_link/src/native_add.c +- add_asset_link/hook/build.dart \ No newline at end of file From e3d9b0ee0316150c982d47d706cb0868523b30f7 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 8 May 2024 10:28:50 +0200 Subject: [PATCH 187/187] Adapt casing --- .../test_data/add_asset_link/hook/link.dart | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/native_assets_builder/test_data/add_asset_link/hook/link.dart b/pkgs/native_assets_builder/test_data/add_asset_link/hook/link.dart index c5999f9c9..5cea3b1cd 100644 --- a/pkgs/native_assets_builder/test_data/add_asset_link/hook/link.dart +++ b/pkgs/native_assets_builder/test_data/add_asset_link/hook/link.dart @@ -6,16 +6,16 @@ import 'package:native_assets_cli/native_assets_cli.dart'; void main(List arguments) async { await link(arguments, (config, output) async { - final built_dylib = config.assets.first as NativeCodeAsset; + final builtDylib = config.assets.first as NativeCodeAsset; output ..addAsset( NativeCodeAsset( package: 'add_asset_link', name: 'dylib_add_link', - linkMode: built_dylib.linkMode, - os: built_dylib.os, - architecture: built_dylib.architecture, - file: built_dylib.file, + linkMode: builtDylib.linkMode, + os: builtDylib.os, + architecture: builtDylib.architecture, + file: builtDylib.file, ), ) ..addDependency(config.packageRoot.resolve('hook/link.dart'));

+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 %Vy?I&D>U&A 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%0D5e$Y~^6J6pOSfs}oAoUhe4bNDwO&$Ftl11wGiU< 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 %Vy?I&D>U&A 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%0D5e$Y~^6J6pOSfs}oAoUhe4bNDwO&$Ftl11wGiU< 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